@mlightcad/data-model 1.14.1 → 1.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data-model.cjs +15 -15
- package/lib/database/AcDbDatabase.d.ts +44 -0
- package/lib/database/AcDbDatabase.d.ts.map +1 -1
- package/lib/database/AcDbDatabase.js +89 -1
- package/lib/database/AcDbDatabase.js.map +1 -1
- package/lib/database/AcDbSysVarManager.d.ts.map +1 -1
- package/lib/database/AcDbSysVarManager.js +94 -1
- package/lib/database/AcDbSysVarManager.js.map +1 -1
- package/lib/database/AcDbSystemVariables.d.ts +39 -1
- package/lib/database/AcDbSystemVariables.d.ts.map +1 -1
- package/lib/database/AcDbSystemVariables.js +38 -0
- package/lib/database/AcDbSystemVariables.js.map +1 -1
- package/lib/dxf/AcDbDxfHeaderReader.d.ts.map +1 -1
- package/lib/dxf/AcDbDxfHeaderReader.js +25 -1
- package/lib/dxf/AcDbDxfHeaderReader.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/misc/AcDbConstants.d.ts +53 -0
- package/lib/misc/AcDbConstants.d.ts.map +1 -1
- package/lib/misc/AcDbConstants.js +71 -0
- package/lib/misc/AcDbConstants.js.map +1 -1
- package/lib/misc/index.d.ts +1 -1
- package/lib/misc/index.d.ts.map +1 -1
- package/lib/misc/index.js +1 -1
- package/lib/misc/index.js.map +1 -1
- package/package.json +4 -4
package/dist/data-model.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var fa=(i=>(i[i.Invalid=-9999]="Invalid",i[i.Start=0]="Start",i[i.Text=1]="Text",i[i.AttributeTag=2]="AttributeTag",i[i.BlockName=2]="BlockName",i[i.ShapeName=2]="ShapeName",i[i.SymbolTableName=2]="SymbolTableName",i[i.SymbolTableRecordName=2]="SymbolTableRecordName",i[i.MlineStyleName=2]="MlineStyleName",i[i.AttributePrompt=3]="AttributePrompt",i[i.Description=3]="Description",i[i.DimPostString=3]="DimPostString",i[i.DimStyleName=3]="DimStyleName",i[i.LinetypeProse=3]="LinetypeProse",i[i.TextFontFile=3]="TextFontFile",i[i.CLShapeName=4]="CLShapeName",i[i.DimensionAlternativePrefixSuffix=4]="DimensionAlternativePrefixSuffix",i[i.SymbolTableRecordComments=4]="SymbolTableRecordComments",i[i.TextBigFontFile=4]="TextBigFontFile",i[i.Handle=5]="Handle",i[i.DimensionBlock=5]="DimensionBlock",i[i.LinetypeName=6]="LinetypeName",i[i.DimBlk1=6]="DimBlk1",i[i.TextStyleName=7]="TextStyleName",i[i.DimBlk2=7]="DimBlk2",i[i.LayerName=8]="LayerName",i[i.CLShapeText=9]="CLShapeText",i[i.XCoordinate=10]="XCoordinate",i[i.YCoordinate=20]="YCoordinate",i[i.ZCoordinate=30]="ZCoordinate",i[i.Real=40]="Real",i[i.TxtSize=40]="TxtSize",i[i.ViewportHeight=40]="ViewportHeight",i[i.Angle=50]="Angle",i[i.ViewportSnapAngle=50]="ViewportSnapAngle",i[i.Visibility=60]="Visibility",i[i.Int16=70]="Int16",i[i.Int32=90]="Int32",i[i.Int64=160]="Int64",i[i.Int8=280]="Int8",i[i.Thickness=39]="Thickness",i[i.Elevation=38]="Elevation",i[i.LinetypeScale=48]="LinetypeScale",i[i.DashLength=49]="DashLength",i[i.MlineOffset=49]="MlineOffset",i[i.LinetypeElement=49]="LinetypeElement",i[i.NormalX=210]="NormalX",i[i.NormalY=220]="NormalY",i[i.NormalZ=230]="NormalZ",i[i.UcsOrg=110]="UcsOrg",i[i.UcsOrientationX=111]="UcsOrientationX",i[i.UcsOrientationY=112]="UcsOrientationY",i[i.ViewHeight=45]="ViewHeight",i[i.ViewWidth=41]="ViewWidth",i[i.ViewLensLength=42]="ViewLensLength",i[i.ViewFrontClip=43]="ViewFrontClip",i[i.ViewBackClip=44]="ViewBackClip",i[i.ViewBrightness=141]="ViewBrightness",i[i.ViewContrast=142]="ViewContrast",i[i.ViewMode=71]="ViewMode",i[i.ViewportActive=68]="ViewportActive",i[i.ViewportAspect=41]="ViewportAspect",i[i.ViewportGrid=76]="ViewportGrid",i[i.ViewportIcon=74]="ViewportIcon",i[i.ViewportNumber=69]="ViewportNumber",i[i.ViewportSnap=75]="ViewportSnap",i[i.ViewportSnapPair=78]="ViewportSnapPair",i[i.ViewportSnapStyle=77]="ViewportSnapStyle",i[i.ViewportTwist=51]="ViewportTwist",i[i.ViewportVisibility=67]="ViewportVisibility",i[i.ViewportZoom=73]="ViewportZoom",i[i.Color=62]="Color",i[i.ColorRgb=420]="ColorRgb",i[i.ColorName=430]="ColorName",i[i.LineWeight=370]="LineWeight",i[i.PlotStyleNameType=380]="PlotStyleNameType",i[i.PlotStyleNameId=390]="PlotStyleNameId",i[i.GradientObjType=450]="GradientObjType",i[i.GradientAngle=460]="GradientAngle",i[i.GradientName=470]="GradientName",i[i.GradientColCount=453]="GradientColCount",i[i.GradientPatType=451]="GradientPatType",i[i.GradientTintType=452]="GradientTintType",i[i.GradientShift=461]="GradientShift",i[i.GradientColVal=463]="GradientColVal",i[i.GradientTintVal=462]="GradientTintVal",i[i.SoftPointerId=330]="SoftPointerId",i[i.HardPointerId=340]="HardPointerId",i[i.SoftOwnershipId=350]="SoftOwnershipId",i[i.HardOwnershipId=360]="HardOwnershipId",i[i.ArbitraryHandle=320]="ArbitraryHandle",i[i.ExtendedDataAsciiString=1e3]="ExtendedDataAsciiString",i[i.ExtendedDataRegAppName=1001]="ExtendedDataRegAppName",i[i.ExtendedDataControlString=1002]="ExtendedDataControlString",i[i.ExtendedDataLayerName=1003]="ExtendedDataLayerName",i[i.ExtendedDataBinaryChunk=1004]="ExtendedDataBinaryChunk",i[i.ExtendedDataHandle=1005]="ExtendedDataHandle",i[i.ExtendedDataXCoordinate=1010]="ExtendedDataXCoordinate",i[i.ExtendedDataWorldXCoordinate=1011]="ExtendedDataWorldXCoordinate",i[i.ExtendedDataWorldXDisp=1012]="ExtendedDataWorldXDisp",i[i.ExtendedDataWorldXDir=1013]="ExtendedDataWorldXDir",i[i.ExtendedDataYCoordinate=1020]="ExtendedDataYCoordinate",i[i.ExtendedDataWorldYCoordinate=1021]="ExtendedDataWorldYCoordinate",i[i.ExtendedDataWorldYDisp=1022]="ExtendedDataWorldYDisp",i[i.ExtendedDataWorldYDir=1023]="ExtendedDataWorldYDir",i[i.ExtendedDataZCoordinate=1030]="ExtendedDataZCoordinate",i[i.ExtendedDataWorldZCoordinate=1031]="ExtendedDataWorldZCoordinate",i[i.ExtendedDataWorldZDisp=1032]="ExtendedDataWorldZDisp",i[i.ExtendedDataWorldZDir=1033]="ExtendedDataWorldZDir",i[i.ExtendedDataReal=1040]="ExtendedDataReal",i[i.ExtendedDataDist=1041]="ExtendedDataDist",i[i.ExtendedDataScale=1042]="ExtendedDataScale",i[i.ExtendedDataInteger16=1070]="ExtendedDataInteger16",i[i.ExtendedDataInteger32=1071]="ExtendedDataInteger32",i[i.XTextString=300]="XTextString",i[i.XReal=140]="XReal",i[i.XInt16=170]="XInt16",i[i.XXInt16=270]="XXInt16",i[i.Subclass=100]="Subclass",i[i.ControlString=102]="ControlString",i[i.EmbeddedObjectStart=101]="EmbeddedObjectStart",i[i.End=-1]="End",i[i.FirstEntityId=-2]="FirstEntityId",i[i.HeaderId=-2]="HeaderId",i[i.XDataStart=-3]="XDataStart",i[i.Operator=-4]="Operator",i[i.PReactors=-5]="PReactors",i[i.XDictionary=-6]="XDictionary",i))(fa||{});exports.AcCmColorMethod=void 0;(function(i){i[i.ByColor=1]="ByColor",i[i.ByACI=2]="ByACI",i[i.ByLayer=3]="ByLayer",i[i.ByBlock=4]="ByBlock",i[i.None=0]="None"})(exports.AcCmColorMethod||(exports.AcCmColorMethod={}));var Td=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Cd=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Bo={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},os=[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],ee=(function(){function i(){}return i.getColorByIndex=function(t){return os[t]},i.getIndexByColor=function(t){for(var e=os.length-1,n=1;n<e;++n)if(os[n]===t)return n},i.getColorByName=function(t){return Bo[t.toLowerCase()]},i.getNameByColor=function(t){var e,n;try{for(var r=Td(Object.entries(Bo)),s=r.next();!s.done;s=r.next()){var a=Cd(s.value,2),o=a[0],c=a[1];if(c===t)return o}}catch(l){e={error:l}}finally{try{s&&!s.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}},i.getNameByIndex=function(t){var e=this.getColorByIndex(t);return this.getNameByColor(e)},i})(),Md=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},j=(function(){function i(t,e){t===void 0&&(t=exports.AcCmColorMethod.ByLayer),this._colorMethod=t,this._colorMethod==exports.AcCmColorMethod.ByColor&&e==null?this._value=16777215:this._colorMethod==exports.AcCmColorMethod.ByACI?e==null?this._value=8:e===0?this._colorMethod=exports.AcCmColorMethod.ByBlock:e===256?this._colorMethod=exports.AcCmColorMethod.ByLayer:this._value=Math.max(0,Math.min(e,256)):this._value=e}return Object.defineProperty(i.prototype,"colorMethod",{get:function(){return this._colorMethod},set:function(t){this._colorMethod=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"red",{get:function(){var t=this.RGB;return t!=null?t>>16&255:void 0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"green",{get:function(){var t=this.RGB;return t!=null?t>>8&255:void 0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"blue",{get:function(){var t=this.RGB;return t!=null?t&255:void 0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"RGB",{get:function(){switch(this._colorMethod){case exports.AcCmColorMethod.ByColor:case exports.AcCmColorMethod.ByBlock:case exports.AcCmColorMethod.ByLayer:return this._value;case exports.AcCmColorMethod.ByACI:return this._value?ee.getColorByIndex(this._value):this._value;default:return}},enumerable:!1,configurable:!0}),i.prototype.setRGB=function(t,e,n){var r=Math.max(0,Math.min(255,Math.round(t))),s=Math.max(0,Math.min(255,Math.round(e))),a=Math.max(0,Math.min(255,Math.round(n)));return this._value=r<<16|s<<8|a,this._colorMethod=exports.AcCmColorMethod.ByColor,this},i.prototype.setRGBValue=function(t){return t==null||!Number.isFinite(t)?this:(this._value=t&16777215,this._colorMethod=exports.AcCmColorMethod.ByColor,this)},i.prototype.setRGBFromCss=function(t){if(!t)return this;var e=t.trim().toLowerCase();if(e.startsWith("#")){var n=0,r=0,s=0;if(e.length===7)n=parseInt(e.substr(1,2),16),r=parseInt(e.substr(3,2),16),s=parseInt(e.substr(5,2),16);else if(e.length===4)n=parseInt(e[1]+e[1],16),r=parseInt(e[2]+e[2],16),s=parseInt(e[3]+e[3],16);else return this;return this.setRGB(n,r,s)}var a=e.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(a){var n=parseInt(a[1],10),r=parseInt(a[2],10),s=parseInt(a[3],10);return this.setRGB(n,r,s)}var o=ee.getColorByName(t);return o!==void 0?this.setRGBValue(o):this},i.prototype.setScalar=function(t){return this.setRGB(t,t,t)},Object.defineProperty(i.prototype,"hexColor",{get:function(){var t=this.RGB;if(t!=null){var e=t.toString(16).padStart(6,"0").toUpperCase();return"0x"+e}},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"cssColor",{get:function(){var t=this.RGB;if(t!=null)return"rgb(".concat(t>>16&255,",").concat(t>>8&255,",").concat(t&255,")")},enumerable:!1,configurable:!0}),i.prototype.cssColorAlpha=function(t){var e=this.RGB;if(e!=null)return"rgba(".concat(e>>16&255,",").concat(e>>8&255,",").concat(e&255,",").concat(t,")")},Object.defineProperty(i.prototype,"colorIndex",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByACI?this._value:this._colorMethod===exports.AcCmColorMethod.ByLayer?256:this._colorMethod===exports.AcCmColorMethod.ByBlock?0:void 0},set:function(t){if(t!=null){var e=Math.max(0,Math.min(256,Math.round(t)));e===0?(this._colorMethod=exports.AcCmColorMethod.ByBlock,this._value=void 0):e===256?(this._colorMethod=exports.AcCmColorMethod.ByLayer,this._value=void 0):(this._colorMethod=exports.AcCmColorMethod.ByACI,this._value=e)}},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByColor",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByColor},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByACI",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByACI},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isForeground",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByACI&&this._value===7},enumerable:!1,configurable:!0}),i.prototype.setForeground=function(){return this._colorMethod=exports.AcCmColorMethod.ByACI,this._value=7,this},Object.defineProperty(i.prototype,"isByLayer",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByLayer},enumerable:!1,configurable:!0}),i.prototype.setByLayer=function(t){return this._colorMethod=exports.AcCmColorMethod.ByLayer,t==null?this._value=256:this._value=t,this},Object.defineProperty(i.prototype,"isByBlock",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByBlock},enumerable:!1,configurable:!0}),i.prototype.setByBlock=function(t){return this._colorMethod=exports.AcCmColorMethod.ByBlock,t==null?this._value=0:this._value=t,this},Object.defineProperty(i.prototype,"colorName",{get:function(){switch(this._colorMethod){case exports.AcCmColorMethod.ByLayer:return"ByLayer";case exports.AcCmColorMethod.ByBlock:return"ByBlock";case exports.AcCmColorMethod.ByColor:return this._value?ee.getNameByColor(this._value):"";case exports.AcCmColorMethod.ByACI:return this._value?ee.getNameByIndex(this._value):"";default:return}},set:function(t){if(t){var e=ee.getColorByName(t);e!==void 0&&(this._value=e,this._colorMethod=exports.AcCmColorMethod.ByColor)}},enumerable:!1,configurable:!0}),i.prototype.clone=function(){var t=new i;return t._colorMethod=this._colorMethod,t._value=this._value,t},i.prototype.copy=function(t){return this._colorMethod=t._colorMethod,this._value=t._value,this},i.prototype.equals=function(t){return this._colorMethod===t._colorMethod&&this._value===t._value},i.prototype.toString=function(){switch(this._colorMethod){case exports.AcCmColorMethod.None:return"None";case exports.AcCmColorMethod.ByLayer:return"ByLayer";case exports.AcCmColorMethod.ByBlock:return"ByBlock";case exports.AcCmColorMethod.ByACI:return this._value!==void 0?String(this._value):"";case exports.AcCmColorMethod.ByColor:return this._value?"RGB:".concat(this.red,",").concat(this.green,",").concat(this.blue):"";default:return""}},i.fromString=function(t){if(t){var e=t.trim();if(/^none$/i.test(e))return new i(exports.AcCmColorMethod.None);if(/^bylayer$/i.test(e))return new i(exports.AcCmColorMethod.ByLayer);if(/^byblock$/i.test(e))return new i(exports.AcCmColorMethod.ByBlock);var n=e.match(/^rgb\s*:\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})$/i);if(n){var r=Number(n[1]),s=Number(n[2]),a=Number(n[3]),o=new i(exports.AcCmColorMethod.ByColor);return o.setRGB(r,s,a),o}if(/^\d{1,3},\d{1,3},\d{1,3}$/.test(e)){var c=Md(e.split(",").map(Number),3),r=c[0],s=c[1],a=c[2],o=new i(exports.AcCmColorMethod.ByColor);return o.setRGB(r,s,a),o}if(/^\d+$/.test(e)){var l=parseInt(e,10);return new i(exports.AcCmColorMethod.ByACI,l)}if(/^book\$/i.test(e)){var h=e.substring(e.indexOf("$")+1),u=ee.getColorByName(h);return u!=null?new i(exports.AcCmColorMethod.ByColor,u):void 0}var d=ee.getColorByName(e);if(d!=null)return new i(exports.AcCmColorMethod.ByColor,d)}},i})(),Od=(function(){function i(t,e){t===void 0&&(t=exports.AcCmColorMethod.ByColor),e===void 0&&(e=0),this._colorMethod=t,this._value=e}return Object.defineProperty(i.prototype,"colorMethd",{get:function(){return this._colorMethod},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"red",{get:function(){return this._value>>16&255},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=this._value&65535|(t&255)<<16},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"green",{get:function(){return this._value>>8&255},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=this._value&16711935|(t&255)<<8},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"blue",{get:function(){return this._value&255},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=this._value&16776960|t&255},enumerable:!1,configurable:!0}),i.prototype.setRGB=function(t,e,n){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=(t&255)<<16|(e&255)<<8|n&255},Object.defineProperty(i.prototype,"colorIndex",{get:function(){return this._value},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByACI,this._value=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"layerIndex",{get:function(){return this._value},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByLayer,this._value=t},enumerable:!1,configurable:!0}),i.prototype.isByColor=function(){return this._colorMethod===exports.AcCmColorMethod.ByColor},i.prototype.isByLayer=function(){return this._colorMethod===exports.AcCmColorMethod.ByLayer},i.prototype.isByBlock=function(){return this._colorMethod===exports.AcCmColorMethod.ByBlock},i.prototype.isByACI=function(){return this._colorMethod===exports.AcCmColorMethod.ByACI},i.prototype.isNone=function(){return this._colorMethod===exports.AcCmColorMethod.None},Object.defineProperty(i.prototype,"rawValue",{get:function(){return this._value},set:function(t){this._value=t},enumerable:!1,configurable:!0}),i})(),Et={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")}},Nd=(function(){function i(){this._listeners={}}return i.prototype.addEventListener=function(t,e){this._listeners===void 0&&(this._listeners={});var n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)},i.prototype.hasEventListener=function(t,e){if(this._listeners===void 0)return!1;var n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1},i.prototype.removeEventListener=function(t,e){if(this._listeners!==void 0){var n=this._listeners,r=n[t];if(r!==void 0){var s=r.indexOf(e);s!==-1&&r.splice(s,1)}}},i.prototype.dispatchEvent=function(t){if(this._listeners!==void 0){var e=this._listeners,n=e[t.type];if(n!==void 0){t.target=this;for(var r=n.slice(0),s=0,a=r.length;s<a;s++)r[s].call(this,t)}}},i})(),Bd=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Rd=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Fd=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},lt=(function(){function i(){this.listeners=[]}return i.prototype.addEventListener=function(t){this.listeners.push(t)},i.prototype.removeEventListener=function(t){this.listeners=this.listeners.filter(function(e){return e!==t})},i.prototype.replaceEventListener=function(t){this.removeEventListener(t),this.addEventListener(t)},i.prototype.dispatch=function(t){for(var e,n,r=[],s=1;s<arguments.length;s++)r[s-1]=arguments[s];try{for(var a=Bd(this.listeners),o=a.next();!o.done;o=a.next()){var c=o.value,l=c;l.call.apply(l,Fd([null,t],Rd(r),!1))}}catch(h){e={error:h}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}},i})(),Rs=function(){return Rs=Object.assign||function(i){for(var t,e=1,n=arguments.length;e<n;e++){t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Rs.apply(this,arguments)},Dd=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Yd=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},Vc=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function Fn(i){return i===null||typeof i!="object"?i:Array.isArray(i)?Yd([],Dd(i),!1):Rs({},i)}function Fs(i){if(i===null||typeof i!="object")return i;if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i.source,i.flags);if(Array.isArray(i))return i.map(Fs);var t={};for(var e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=Fs(i[e]));return t}function Wt(i){for(var t,e,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];try{for(var s=Vc(n),a=s.next();!a.done;a=s.next()){var o=a.value;if(o)for(var c in o)Object.prototype.hasOwnProperty.call(o,c)&&i[c]===void 0&&(i[c]=o[c])}}catch(l){t={error:l}}finally{try{a&&!a.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}return i}function jc(i,t){return i!=null&&Object.prototype.hasOwnProperty.call(i,t)}function Gc(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 Ue(i,t){var e,n;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(var r=0;r<i.length;r++)if(!Ue(i[r],t[r]))return!1;return!0}var s=Object.keys(i),a=Object.keys(t);if(s.length!==a.length)return!1;try{for(var o=Vc(s),c=o.next();!c.done;c=o.next()){var l=c.value;if(!Object.prototype.hasOwnProperty.call(t,l)||!Ue(i[l],t[l]))return!1}}catch(h){e={error:h}}finally{try{c&&!c.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}return!0}function Xd(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Ui={exports:{}},zd=Ui.exports,Ro;function Vd(){return Ro||(Ro=1,(function(i){(function(t,e){i.exports?i.exports=e():t.log=e()})(zd,function(){var t=function(){},e="undefined",n=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"],s={},a=null;function o(p,m){var y=p[m];if(typeof y.bind=="function")return y.bind(p);try{return Function.prototype.bind.call(y,p)}catch{return function(){return Function.prototype.apply.apply(y,[p,arguments])}}}function c(){console.log&&(console.log.apply||Function.prototype.apply.apply(console.log,[console,arguments]))}function l(p){return p==="debug"&&(p="log"),typeof console===e?!1:p==="trace"&&n?c:console[p]!==void 0?o(console,p):console.log!==void 0?o(console,"log"):t}function h(){for(var p=this.getLevel(),m=0;m<r.length;m++){var y=r[m];this[y]=m<p?t:this.methodFactory(y,p,this.name)}if(this.log=this.debug,typeof console===e&&p<this.levels.SILENT)return"No console available for logging"}function u(p){return function(){typeof console!==e&&(h.call(this),this[p].apply(this,arguments))}}function d(p,m,y){return l(p)||u.apply(this,arguments)}function g(p,m){var y=this,_,v,w,A="loglevel";typeof p=="string"?A+=":"+p:typeof p=="symbol"&&(A=void 0);function I(X){var O=(r[X]||"silent").toUpperCase();if(!(typeof window===e||!A)){try{window.localStorage[A]=O;return}catch{}try{window.document.cookie=encodeURIComponent(A)+"="+O+";"}catch{}}}function S(){var X;if(!(typeof window===e||!A)){try{X=window.localStorage[A]}catch{}if(typeof X===e)try{var O=window.document.cookie,Z=encodeURIComponent(A),K=O.indexOf(Z+"=");K!==-1&&(X=/^([^;]+)/.exec(O.slice(K+Z.length+1))[1])}catch{}return y.levels[X]===void 0&&(X=void 0),X}}function M(){if(!(typeof window===e||!A)){try{window.localStorage.removeItem(A)}catch{}try{window.document.cookie=encodeURIComponent(A)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function C(X){var O=X;if(typeof O=="string"&&y.levels[O.toUpperCase()]!==void 0&&(O=y.levels[O.toUpperCase()]),typeof O=="number"&&O>=0&&O<=y.levels.SILENT)return O;throw new TypeError("log.setLevel() called with invalid level: "+X)}y.name=p,y.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},y.methodFactory=m||d,y.getLevel=function(){return w??v??_},y.setLevel=function(X,O){return w=C(X),O!==!1&&I(w),h.call(y)},y.setDefaultLevel=function(X){v=C(X),S()||y.setLevel(X,!1)},y.resetLevel=function(){w=null,M(),h.call(y)},y.enableAll=function(X){y.setLevel(y.levels.TRACE,X)},y.disableAll=function(X){y.setLevel(y.levels.SILENT,X)},y.rebuild=function(){if(a!==y&&(_=C(a.getLevel())),h.call(y),a===y)for(var X in s)s[X].rebuild()},_=C(a?a.getLevel():"WARN");var B=S();B!=null&&(w=C(B)),h.call(y)}a=new g,a.getLogger=function(m){if(typeof m!="symbol"&&typeof m!="string"||m==="")throw new TypeError("You must supply a name when creating a logger.");var y=s[m];return y||(y=s[m]=new g(m,a.methodFactory)),y};var f=typeof window!==e?window.log:void 0;return a.noConflict=function(){return typeof window!==e&&window.log===a&&(window.log=f),a},a.getLoggers=function(){return s},a.default=a,a})})(Ui)),Ui.exports}var jd=Vd();const Gd=Xd(jd);var Ud=!0,Yn=Gd;Yn.setLevel("debug");var Hd=function(i){try{Yn.setLevel(i)}catch(t){Yn.setLevel("error"),Yn.error(t)}},Ds=(function(){function i(t,e){this.events={attrChanged:new lt,modelChanged:new lt},this._changing=!1,this._previousAttributes={},this._pending=!1;var n=t||{};e&&Wt(n,e),this.attributes=n,this.changed={}}return i.prototype.get=function(t){return this.attributes[t]},i.prototype.set=function(t,e,n){if(t==null)return this;var r;typeof t=="object"?(r=t,n=e):(r={},r[t]=e),n||(n={});var s=n.unset,a=n.silent,o=[],c=this._changing;this._changing=!0,c||(this._previousAttributes=Fn(this.attributes),this.changed={});var l=this.attributes,h=this.changed,u=this._previousAttributes;for(var d in r)e=r[d],Ue(l[d],e)||o.push(d),Ue(u[d],e)?delete h[d]:h[d]=e,s?delete l[d]:l[d]=e;if(!a){o.length&&(this._pending=n);for(var g=0;g<o.length;g++)this.events.attrChanged.dispatch({object:this,attrName:o[g],attrValue:l[o[g]],options:n})}if(c)return this;if(!a)for(;this._pending;)n=this._pending,this._pending=!1,this.events.modelChanged.dispatch({object:this,options:n});return this._pending=!1,this._changing=!1,this},i.prototype.has=function(t){return this.get(t)!=null},i.prototype.hasChanged=function(t){return t==null?!Gc(this.changed):jc(this.changed,t)},i.prototype.changedAttributes=function(t){if(!t)return this.hasChanged()?Fn(this.changed):{};var e=this._changing?this._previousAttributes:this.attributes,n={};for(var r in t){var s=t[r];Ue(e[r],s)||(n[r]=s)}return n},i.prototype.previous=function(t){return t==null||!this._previousAttributes?null:this._previousAttributes[t]},i.prototype.previousAttributes=function(){return Fn(this._previousAttributes)},i.prototype.clone=function(){var t=Fn(this.attributes);return new i(t)},i})(),Wd=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},$d=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},pa=(function(){function i(){this.entries=new Map}return i.getInstance=function(){return i.instance||(i.instance=new i),i.instance},i.prototype.collect=function(t){this.entries.set(t.name,t)},i.prototype.printAll=function(){var t,e;try{for(var n=Wd(this.entries),r=n.next();!r.done;r=n.next())var s=$d(r.value,2),a=s[0],o=s[1]}catch(c){t={error:c}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}},i.prototype.clear=function(){this.entries.clear()},i.prototype.getAll=function(){return Array.from(this.entries.values())},i.prototype.getEntry=function(t){return this.entries.get(t)},i.prototype.remove=function(t){return this.entries.delete(t)},i})(),qd=(function(){function i(){}return i.formatBytes=function(t,e){if(e===void 0&&(e=2),t===0)return"0 B";var n=1024,r=Math.max(0,e),s=["B","KB","MB","GB","TB"],a=Math.floor(Math.log(t)/Math.log(n)),o=t/Math.pow(n,a);return"".concat(parseFloat(o.toFixed(r))," ").concat(s[a])},i})();exports.AcCmTransparencyMethod=void 0;(function(i){i[i.ByLayer=0]="ByLayer",i[i.ByBlock=1]="ByBlock",i[i.ByAlpha=2]="ByAlpha",i[i.ErrorValue=3]="ErrorValue"})(exports.AcCmTransparencyMethod||(exports.AcCmTransparencyMethod={}));var ht=(function(){function i(t){t!==void 0?(this._method=exports.AcCmTransparencyMethod.ByAlpha,this._alpha=i.clampAlpha(t)):(this._method=exports.AcCmTransparencyMethod.ByLayer,this._alpha=255)}return Object.defineProperty(i.prototype,"method",{get:function(){return this._method},set:function(t){this._method=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"alpha",{get:function(){return this._alpha},set:function(t){this._alpha=i.clampAlpha(t),this._method=exports.AcCmTransparencyMethod.ByAlpha},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"percentage",{get:function(){if(this._method===exports.AcCmTransparencyMethod.ByAlpha)return Math.round((1-this._alpha/255)*100)},set:function(t){var e=Math.max(0,Math.min(100,t)),n=Math.round(255*(1-e/100));this.alpha=n},enumerable:!1,configurable:!0}),i.clampAlpha=function(t){return Math.max(0,Math.min(255,Math.floor(t)))},Object.defineProperty(i.prototype,"isByAlpha",{get:function(){return this._method===exports.AcCmTransparencyMethod.ByAlpha},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByBlock",{get:function(){return this._method===exports.AcCmTransparencyMethod.ByBlock},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByLayer",{get:function(){return this._method===exports.AcCmTransparencyMethod.ByLayer},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isClear",{get:function(){return this.isByAlpha&&this._alpha===0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isSolid",{get:function(){return this.isByAlpha&&this._alpha===255},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isInvalid",{get:function(){return this._method===exports.AcCmTransparencyMethod.ErrorValue},enumerable:!1,configurable:!0}),i.prototype.serialize=function(){var t=this._method;return t<<24|this._alpha},i.prototype.clone=function(){var t=new i;return t._method=this._method,t._alpha=this._alpha,t},i.prototype.equals=function(t){return this._method===t._method&&this._alpha===t._alpha},i.prototype.toString=function(){return this.isByLayer?"ByLayer":this.isByBlock?"ByBlock":this._alpha.toString()},i.fromString=function(t){var e=t.trim(),n=e.toLowerCase();if(n===""||n==="."||n==="use current"||n==="bylayer"){var r=new i;return r._method=exports.AcCmTransparencyMethod.ByLayer,r}if(n==="byblock"){var s=new i;return s._method=exports.AcCmTransparencyMethod.ByBlock,s}var a=Number(e);if(Number.isInteger(a)&&a>=0&&a<=255){var o=new i;return a<=90?o.percentage=a:o.alpha=a,o}var c=new i;return c._method=exports.AcCmTransparencyMethod.ErrorValue,c},i.deserialize=function(t){var e=t>>>24&255,n=t&255,r=e>=exports.AcCmTransparencyMethod.ByLayer&&e<=exports.AcCmTransparencyMethod.ErrorValue?e:exports.AcCmTransparencyMethod.ErrorValue,s=new i;return s._method=r,s._alpha=i.clampAlpha(n),s},i})(),Kd=function(i,t,e,n){function r(s){return s instanceof e?s:new e(function(a){a(s)})}return new(e||(e=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(u){a(u)}}function c(h){try{l(n.throw(h))}catch(u){a(u)}}function l(h){h.done?s(h.value):r(h.value).then(o,c)}l((n=n.apply(i,t||[])).next())})},Zd=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},qn=50;function Ln(){return new Promise(function(i){typeof globalThis<"u"&&typeof globalThis.requestAnimationFrame=="function"?globalThis.requestAnimationFrame(function(){return i()}):setTimeout(i,0)})}function Uc(){return new Promise(function(i){if(typeof globalThis<"u"&&typeof globalThis.requestAnimationFrame=="function"){var t=globalThis.requestAnimationFrame;t(function(){return t(function(){return i()})})}else setTimeout(i,0)})}var Hr=(function(){function i(t){t===void 0&&(t=qn),this._budgetMs=t,this._lastYieldCompletedAt=i.now()}return Object.defineProperty(i.prototype,"budgetMs",{get:function(){return this._budgetMs},enumerable:!1,configurable:!0}),i.prototype.maybeYield=function(){return Kd(this,arguments,void 0,function(t){var e;return t===void 0&&(t=Ln),Zd(this,function(n){switch(n.label){case 0:return e=i.now(),e-this._lastYieldCompletedAt<this._budgetMs?[2,!1]:[4,t()];case 1:return n.sent(),this._lastYieldCompletedAt=i.now(),[2,!0]}})})},i.prototype.mark=function(){this._lastYieldCompletedAt=i.now()},i.now=function(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()},i})(),cs=function(i,t,e,n){function r(s){return s instanceof e?s:new e(function(a){a(s)})}return new(e||(e=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(u){a(u)}}function c(h){try{l(n.throw(h))}catch(u){a(u)}}function l(h){h.done?s(h.value):r(h.value).then(o,c)}l((n=n.apply(i,t||[])).next())})},Pi=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},Hc=(function(){function i(t){this.name=t}return i.prototype.run=function(t){throw new Error("run() must be implemented by subclass")},i})(),Wc=(function(){function i(){this.tasks=[],this.onProgress=function(){},this.onComplete=function(){},this.onError=function(){return!1}}return i.prototype.scheduleTask=function(t){return cs(this,void 0,void 0,function(){return Pi(this,function(e){switch(e.label){case 0:return[4,Ln()];case 1:return e.sent(),[2,t()]}})})},i.prototype.addTask=function(t){this.tasks.push(t)},i.prototype.setProgressCallback=function(t){this.onProgress=t},i.prototype.setCompleteCallback=function(t){this.onComplete=t},i.prototype.setErrorCallback=function(t){this.onError=t},i.prototype.run=function(t){return cs(this,void 0,void 0,function(){var e,n,r,s,a,o,c=this;return Pi(this,function(l){switch(l.label){case 0:e=this.tasks.length,n=t,r=function(h){var u,d,g;return Pi(this,function(f){switch(f.label){case 0:u=s.tasks[h],f.label=1;case 1:return f.trys.push([1,3,,4]),[4,s.scheduleTask(function(){return cs(c,void 0,void 0,function(){var p;return Pi(this,function(m){switch(m.label){case 0:return[4,u.run(n)];case 1:return p=m.sent(),this.onProgress((h+1)/e,u),[2,p]}})})})];case 2:return n=f.sent(),[3,4];case 3:return d=f.sent(),g=s.onError({error:d,taskIndex:h,task:u}),g?[2,{value:Promise.reject(d)}]:[3,4];case 4:return[2]}})},s=this,a=0,l.label=1;case 1:return a<e?[5,r(a)]:[3,4];case 2:if(o=l.sent(),typeof o=="object")return[2,o.value];l.label=3;case 3:return a++,[3,1];case 4:return this.onComplete(n),[2]}})})},i})(),$c=(function(){function i(t,e,n){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=n}return i.prototype.itemStart=function(t){this.itemsTotal++,this.isLoading===!1&&this.onStart!==void 0&&this.onStart(t,this.itemsLoaded,this.itemsTotal),this.isLoading=!0},i.prototype.itemEnd=function(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())},i.prototype.itemError=function(t){this.onError!==void 0&&this.onError(t)},i.prototype.resolveURL=function(t){return this.urlModifier?this.urlModifier(t):t},i.prototype.setURLModifier=function(t){return this.urlModifier=t,this},i.prototype.addHandler=function(t,e){return this.handlers.push(t,e),this},i.prototype.removeHandler=function(t){var e=this.handlers.indexOf(t);return e!==-1&&this.handlers.splice(e,2),this},i.prototype.getHandler=function(t){for(var e=0,n=this.handlers.length;e<n;e+=2){var r=this.handlers[e],s=this.handlers[e+1];if(r.global&&(r.lastIndex=0),r.test(t))return s}return null},i})(),qc=new $c,Qd=(function(){function i(t){this.manager=t!==void 0?t:qc,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}return i.prototype.loadAsync=function(t,e){var n=this;return new Promise(function(r,s){n.load(t,r,e,s)})},i.prototype.parse=function(t){},i.prototype.setCrossOrigin=function(t){return this.crossOrigin=t,this},i.prototype.setWithCredentials=function(t){return this.withCredentials=t,this},i.prototype.setPath=function(t){return this.path=t,this},i.prototype.setResourcePath=function(t){return this.resourcePath=t,this},i.prototype.setRequestHeader=function(t){return this.requestHeader=t,this},i})(),kt=["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"],Fo=1234567,ma=Math.PI/180,ya=180/Math.PI;function Kc(){var i=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,n=Math.random()*4294967295|0,r=kt[i&255]+kt[i>>8&255]+kt[i>>16&255]+kt[i>>24&255]+"-"+kt[t&255]+kt[t>>8&255]+"-"+kt[t>>16&15|64]+kt[t>>24&255]+"-"+kt[e&63|128]+kt[e>>8&255]+"-"+kt[e>>16&255]+kt[e>>24&255]+kt[n&255]+kt[n>>8&255]+kt[n>>16&255]+kt[n>>24&255];return r.toLowerCase()}function fe(i,t,e){return Math.max(t,Math.min(e,i))}function ba(i,t){return(i%t+t)%t}function Zc(i,t,e,n,r){return n+(i-t)*(r-n)/(e-t)}function Qc(i,t,e){return i!==t?(e-i)/(t-i):0}function _a(i,t,e){return(1-e)*i+e*t}function Jc(i,t,e,n){return _a(i,t,1-Math.exp(-e*n))}function tl(i,t){return t===void 0&&(t=1),t-Math.abs(ba(i,t*2)-t)}function el(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*(3-2*i))}function nl(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*i*(i*(i*6-15)+10))}function il(i,t){return i+Math.floor(Math.random()*(t-i+1))}function rl(i,t){return i+Math.random()*(t-i)}function sl(i){return i*(.5-Math.random())}function al(i){i!==void 0&&(Fo=i);var 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 ol(i){return i*ma}function cl(i){return i*ya}function ll(i){return(i&i-1)===0&&i!==0}function hl(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function ul(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function He(i){var t=Math.PI*2;return(i%t+t)%t}function dl(i,t,e){return i>t&&i<e||i>e&&i<t}function gl(i,t,e,n){return n===void 0&&(n=!1),i=He(i),t=He(t),e=He(e),n?t>e?i<=t&&i>=e:i<=t||i>=e:t<e?i>=t&&i<=e:i>=t||i<=e}function fl(i,t,e){var n=He(e-i),r=He(t-i);return r<=n+1e-7}function xa(i){return i=Math.abs(i),i<1?0:Math.ceil(Math.log10(Math.abs(i)+1))}function pl(i,t){t===void 0&&(t=1e-7);var e=xa(i);return Math.max(Math.pow(10,e)*t,t)}var T={DEG2RAD:ma,RAD2DEG:ya,generateUUID:Kc,clamp:fe,euclideanModulo:ba,mapLinear:Zc,inverseLerp:Qc,lerp:_a,damp:Jc,pingpong:tl,smoothstep:el,smootherstep:nl,randInt:il,randFloat:rl,randFloatSpread:sl,seededRandom:al,degToRad:ol,radToDeg:cl,isPowerOfTwo:ll,ceilPowerOfTwo:hl,floorPowerOfTwo:ul,normalizeAngle:He,isBetween:dl,isBetweenAngle:gl,isAngleOnCcwSweep:fl,intPartLength:xa,relativeEps:pl},Jd=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},at=(function(){function i(t,e){this.x=0,this.y=0;var n=+(t!==void 0)+ +(e!==void 0);if(n!==0){if(n===1&&t instanceof Array){this.x=t[0],this.y=t[1];return}if(n===1){var r=t,s=r.x,a=r.y;this.x=s,this.y=a;return}if(n===2){this.x=t,this.y=e;return}throw Et.ILLEGAL_PARAMETERS}}return Object.defineProperty(i.prototype,"width",{get:function(){return this.x},set:function(t){this.x=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){return this.y},set:function(t){this.y=t},enumerable:!1,configurable:!0}),i.prototype.set=function(t,e){return this.x=t,this.y=e,this},i.prototype.setScalar=function(t){return this.x=t,this.y=t,this},i.prototype.setX=function(t){return this.x=t,this},i.prototype.setY=function(t){return this.y=t,this},i.prototype.setComponent=function(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},i.prototype.getComponent=function(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}},i.prototype.clone=function(){return new i(this.x,this.y)},i.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},i.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},i.prototype.addScalar=function(t){return this.x+=t,this.y+=t,this},i.prototype.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},i.prototype.addScaledVector=function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this},i.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},i.prototype.subScalar=function(t){return this.x-=t,this.y-=t,this},i.prototype.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},i.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this},i.prototype.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},i.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this},i.prototype.divideScalar=function(t){return this.multiplyScalar(1/t)},i.prototype.applyMatrix2d=function(t){var e=this.x,n=this.y,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6],this.y=r[1]*e+r[4]*n+r[7],this},i.prototype.min=function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this},i.prototype.max=function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this},i.prototype.clamp=function(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},i.prototype.clampScalar=function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this},i.prototype.clampLength=function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},i.prototype.floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},i.prototype.ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},i.prototype.round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},i.prototype.roundToZero=function(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this},i.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},i.prototype.dot=function(t){return this.x*t.x+this.y*t.y},i.prototype.cross=function(t){return this.x*t.y-this.y*t.x},i.prototype.lengthSq=function(){return this.x*this.x+this.y*this.y},i.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},i.prototype.manhattanLength=function(){return Math.abs(this.x)+Math.abs(this.y)},i.prototype.normalize=function(){return this.divideScalar(this.length()||1)},i.prototype.angle=function(){var t=Math.atan2(-this.y,-this.x)+Math.PI;return t},i.prototype.angleTo=function(t){var e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;var n=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,n)))},i.prototype.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},i.prototype.distanceToSquared=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},i.prototype.manhattanDistanceTo=function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)},i.prototype.setLength=function(t){return this.normalize().multiplyScalar(t)},i.prototype.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},i.prototype.lerpVectors=function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this},i.prototype.equals=function(t){return t.x===this.x&&t.y===this.y},i.prototype.fromArray=function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t},i.prototype.rotateAround=function(t,e){var n=Math.cos(e),r=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*n-a*r+t.x,this.y=s*r+a*n+t.y,this},i.prototype.random=function(){return this.x=Math.random(),this.y=Math.random(),this},i.prototype.relativeEps=function(t){return t===void 0&&(t=1e-7),Math.min(T.relativeEps(this.x,t),T.relativeEps(this.y,t))},i.prototype[Symbol.iterator]=function(){return Jd(this,function(t){switch(t.label){case 0:return[4,this.x];case 1:return t.sent(),[4,this.y];case 2:return t.sent(),[2]}})},i.EMPTY=Object.freeze(new i(0,0)),i})(),mi=(function(){function i(t,e,n,r,s,a,o,c,l){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&e!=null&&n!=null&&r!=null&&s!=null&&a!=null&&o!=null&&c!=null&&l!=null&&this.set(t,e,n,r,s,a,o,c,l)}return i.prototype.set=function(t,e,n,r,s,a,o,c,l){var h=this.elements;return h[0]=t,h[1]=r,h[2]=o,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=a,h[8]=l,this},i.prototype.identity=function(){return this.set(1,0,0,0,1,0,0,0,1),this},i.prototype.copy=function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this},i.prototype.extractBasis=function(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this},i.prototype.setFromMatrix4=function(t){var 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},i.prototype.multiply=function(t){return this.multiplyMatrices(this,t)},i.prototype.premultiply=function(t){return this.multiplyMatrices(t,this)},i.prototype.multiplyMatrices=function(t,e){var n=t.elements,r=e.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],h=n[4],u=n[7],d=n[2],g=n[5],f=n[8],p=r[0],m=r[3],y=r[6],_=r[1],v=r[4],w=r[7],A=r[2],I=r[5],S=r[8];return s[0]=a*p+o*_+c*A,s[3]=a*m+o*v+c*I,s[6]=a*y+o*w+c*S,s[1]=l*p+h*_+u*A,s[4]=l*m+h*v+u*I,s[7]=l*y+h*w+u*S,s[2]=d*p+g*_+f*A,s[5]=d*m+g*v+f*I,s[8]=d*y+g*w+f*S,this},i.prototype.multiplyScalar=function(t){var 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},i.prototype.determinant=function(){var t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8];return e*a*h-e*o*l-n*s*h+n*o*c+r*s*l-r*a*c},i.prototype.invert=function(){var t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],u=h*a-o*l,d=o*c-h*s,g=l*s-a*c,f=e*u+n*d+r*g;if(f===0)return this.set(0,0,0,0,0,0,0,0,0);var p=1/f;return t[0]=u*p,t[1]=(r*l-h*n)*p,t[2]=(o*n-r*a)*p,t[3]=d*p,t[4]=(h*e-r*c)*p,t[5]=(r*s-o*e)*p,t[6]=g*p,t[7]=(n*c-l*e)*p,t[8]=(a*e-n*s)*p,this},i.prototype.transpose=function(){var t,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},i.prototype.getNormalMatrix=function(t){return this.setFromMatrix4(t).invert().transpose()},i.prototype.transposeIntoArray=function(t){var 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},i.prototype.setUvTransform=function(t,e,n,r,s,a,o){var c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+t,-r*l,r*c,-r*(-l*a+c*o)+o+e,0,0,1),this},i.prototype.scale=function(t,e){return this.premultiply(ls.makeScale(t,e)),this},i.prototype.rotate=function(t){return this.premultiply(ls.makeRotation(-t)),this},i.prototype.translate=function(t,e){return this.premultiply(ls.makeTranslation(t,e)),this},i.prototype.makeTranslation=function(t,e){return t instanceof at?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},i.prototype.makeRotation=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this},i.prototype.makeScale=function(t,e){return this.set(t,0,0,0,e,0,0,0,1),this},i.prototype.equals=function(t){for(var e=this.elements,n=t.elements,r=0;r<9;r++)if(e[r]!==n[r])return!1;return!0},i.prototype.fromArray=function(t,e){e===void 0&&(e=0);for(var n=0;n<9;n++)this.elements[n]=t[n+e];return this},i.prototype.toArray=function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);var n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t},i.prototype.clone=function(){return new i().fromArray(this.elements)},i.IDENTITY=Object.freeze(new i),i})(),ls=new mi,ut=1e-6,V=2*Math.PI,tg={x:0,y:0},wa={x:0,y:0,z:0},Y=(function(){function i(){this.equalPointTol=ut,this.equalVectorTol=ut}return i.prototype.clone=function(){var t=new i;return t.equalPointTol=this.equalPointTol,t.equalVectorTol=this.equalVectorTol,t},i.prototype.equalPoint2d=function(t,e){return new at(t).sub(e).length()<this.equalPointTol},i.prototype.equalPoint3d=function(t,e){return new x(t).sub(e).length()<this.equalPointTol},i.equalToZero=function(t,e){return e===void 0&&(e=ut),t<e&&t>-e},i.equal=function(t,e,n){return n===void 0&&(n=ut),Math.abs(t-e)<n},i.great=function(t,e,n){return n===void 0&&(n=ut),t-e>n},i.less=function(t,e,n){return n===void 0&&(n=ut),t-e<n},i.isPositive=function(t,e){return e===void 0&&(e=ut),t>e},i.isNonPositive=function(t,e){return e===void 0&&(e=ut),t<=e},i})(),yi=new Y,eg=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},_n=(function(){function i(t,e,n,r){t===void 0&&(t=0),e===void 0&&(e=0),n===void 0&&(n=0),r===void 0&&(r=1),this._x=t,this._y=e,this._z=n,this._w=r}return i.slerpFlat=function(t,e,n,r,s,a,o){var c=n[r+0],l=n[r+1],h=n[r+2],u=n[r+3],d=s[a+0],g=s[a+1],f=s[a+2],p=s[a+3];if(o===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=u;return}if(o===1){t[e+0]=d,t[e+1]=g,t[e+2]=f,t[e+3]=p;return}if(u!==p||c!==d||l!==g||h!==f){var m=1-o,y=c*d+l*g+h*f+u*p,_=y>=0?1:-1,v=1-y*y;if(v>Number.EPSILON){var w=Math.sqrt(v),A=Math.atan2(w,y*_);m=Math.sin(m*A)/w,o=Math.sin(o*A)/w}var I=o*_;if(c=c*m+d*I,l=l*m+g*I,h=h*m+f*I,u=u*m+p*I,m===1-o){var S=1/Math.sqrt(c*c+l*l+h*h+u*u);c*=S,l*=S,h*=S,u*=S}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=u},i.multiplyQuaternionsFlat=function(t,e,n,r,s,a){var o=n[r],c=n[r+1],l=n[r+2],h=n[r+3],u=s[a],d=s[a+1],g=s[a+2],f=s[a+3];return t[e]=o*f+h*u+c*g-l*d,t[e+1]=c*f+h*d+l*u-o*g,t[e+2]=l*f+h*g+o*d-c*u,t[e+3]=h*f-o*u-c*d-l*g,t},Object.defineProperty(i.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"z",{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"w",{get:function(){return this._w},set:function(t){this._w=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),i.prototype.set=function(t,e,n,r){return this._x=t,this._y=e,this._z=n,this._w=r,this._onChangeCallback(),this},i.prototype.clone=function(){return new i(this._x,this._y,this._z,this._w)},i.prototype.copy=function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this},i.prototype.setFromEuler=function(t,e){e===void 0&&(e=!0);var n=t.x,r=t.y,s=t.z,a=t.order,o=Math.cos,c=Math.sin,l=o(n/2),h=o(r/2),u=o(s/2),d=c(n/2),g=c(r/2),f=c(s/2);switch(a){case"XYZ":this._x=d*h*u+l*g*f,this._y=l*g*u-d*h*f,this._z=l*h*f+d*g*u,this._w=l*h*u-d*g*f;break;case"YXZ":this._x=d*h*u+l*g*f,this._y=l*g*u-d*h*f,this._z=l*h*f-d*g*u,this._w=l*h*u+d*g*f;break;case"ZXY":this._x=d*h*u-l*g*f,this._y=l*g*u+d*h*f,this._z=l*h*f+d*g*u,this._w=l*h*u-d*g*f;break;case"ZYX":this._x=d*h*u-l*g*f,this._y=l*g*u+d*h*f,this._z=l*h*f-d*g*u,this._w=l*h*u+d*g*f;break;case"YZX":this._x=d*h*u+l*g*f,this._y=l*g*u+d*h*f,this._z=l*h*f-d*g*u,this._w=l*h*u-d*g*f;break;case"XZY":this._x=d*h*u-l*g*f,this._y=l*g*u-d*h*f,this._z=l*h*f+d*g*u,this._w=l*h*u+d*g*f;break;default:}return e===!0&&this._onChangeCallback(),this},i.prototype.setFromAxisAngle=function(t,e){var n=e/2,r=Math.sin(n);return this._x=t.x*r,this._y=t.y*r,this._z=t.z*r,this._w=Math.cos(n),this._onChangeCallback(),this},i.prototype.setFromRotationMatrix=function(t){var e=t.elements,n=e[0],r=e[4],s=e[8],a=e[1],o=e[5],c=e[9],l=e[2],h=e[6],u=e[10],d=n+o+u;if(d>0){var g=.5/Math.sqrt(d+1);this._w=.25/g,this._x=(h-c)*g,this._y=(s-l)*g,this._z=(a-r)*g}else if(n>o&&n>u){var g=2*Math.sqrt(1+n-o-u);this._w=(h-c)/g,this._x=.25*g,this._y=(r+a)/g,this._z=(s+l)/g}else if(o>u){var g=2*Math.sqrt(1+o-n-u);this._w=(s-l)/g,this._x=(r+a)/g,this._y=.25*g,this._z=(c+h)/g}else{var g=2*Math.sqrt(1+u-n-o);this._w=(a-r)/g,this._x=(s+l)/g,this._y=(c+h)/g,this._z=.25*g}return this._onChangeCallback(),this},i.prototype.setFromUnitVectors=function(t,e){var n=t.dot(e)+1;return n<Number.EPSILON?(n=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(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=n),this.normalize()},i.prototype.angleTo=function(t){return 2*Math.acos(Math.abs(fe(this.dot(t),-1,1)))},i.prototype.rotateTowards=function(t,e){var n=this.angleTo(t);if(n===0)return this;var r=Math.min(1,e/n);return this.slerp(t,r),this},i.prototype.identity=function(){return this.set(0,0,0,1)},i.prototype.invert=function(){return this.conjugate()},i.prototype.conjugate=function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},i.prototype.dot=function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w},i.prototype.lengthSq=function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},i.prototype.length=function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},i.prototype.normalize=function(){var 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},i.prototype.multiply=function(t){return this.multiplyQuaternions(this,t)},i.prototype.premultiply=function(t){return this.multiplyQuaternions(t,this)},i.prototype.multiplyQuaternions=function(t,e){var n=t._x,r=t._y,s=t._z,a=t._w,o=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+a*o+r*l-s*c,this._y=r*h+a*c+s*o-n*l,this._z=s*h+a*l+n*c-r*o,this._w=a*h-n*o-r*c-s*l,this._onChangeCallback(),this},i.prototype.slerp=function(t,e){if(e===0)return this;if(e===1)return this.copy(t);var n=this._x,r=this._y,s=this._z,a=this._w,o=a*t._w+n*t._x+r*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=r,this._z=s,this;var c=1-o*o;if(c<=Number.EPSILON){var l=1-e;return this._w=l*a+e*this._w,this._x=l*n+e*this._x,this._y=l*r+e*this._y,this._z=l*s+e*this._z,this.normalize(),this}var h=Math.sqrt(c),u=Math.atan2(h,o),d=Math.sin((1-e)*u)/h,g=Math.sin(e*u)/h;return this._w=a*d+this._w*g,this._x=n*d+this._x*g,this._y=r*d+this._y*g,this._z=s*d+this._z*g,this._onChangeCallback(),this},i.prototype.slerpQuaternions=function(t,e,n){return this.copy(t).slerp(e,n)},i.prototype.random=function(){var t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(r*Math.sin(t),r*Math.cos(t),s*Math.sin(e),s*Math.cos(e))},i.prototype.equals=function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w},i.prototype.fromArray=function(t,e){return e===void 0&&(e=0),this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t},i.prototype.toJSON=function(){return this.toArray()},i.prototype._onChange=function(t){return this._onChangeCallback=t,this},i.prototype._onChangeCallback=function(){},i.prototype[Symbol.iterator]=function(){return eg(this,function(t){switch(t.label){case 0:return[4,this._x];case 1:return t.sent(),[4,this._y];case 2:return t.sent(),[4,this._z];case 3:return t.sent(),[4,this._w];case 4:return t.sent(),[2]}})},i})(),ng=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},x=(function(){function i(t,e,n){this.x=0,this.y=0,this.z=0;var r=+(t!==void 0)+ +(e!==void 0)+ +(n!==void 0);if(r!==0){if(r===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(r===1){var s=t,a=s.x,o=s.y,c=s.z;this.x=a,this.y=o,this.z=c||0;return}if(r===3){this.x=t,this.y=e,this.z=n;return}throw Et.ILLEGAL_PARAMETERS}}return i.prototype.set=function(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this},i.prototype.setScalar=function(t){return this.x=t,this.y=t,this.z=t,this},i.prototype.setX=function(t){return this.x=t,this},i.prototype.setY=function(t){return this.y=t,this},i.prototype.setZ=function(t){return this.z=t,this},i.prototype.setComponent=function(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},i.prototype.getComponent=function(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)}},i.prototype.clone=function(){return new i(this.x,this.y,this.z)},i.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this.z=t.z||0,this},i.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z||0,this},i.prototype.addScalar=function(t){return this.x+=t,this.y+=t,this.z+=t,this},i.prototype.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},i.prototype.addScaledVector=function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},i.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this},i.prototype.subScalar=function(t){return this.x-=t,this.y-=t,this.z-=t,this},i.prototype.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},i.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this},i.prototype.multiplyScalar=function(t){return this.x*=t,this.y*=t,this.z*=t,this},i.prototype.multiplyVectors=function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},i.prototype.applyEuler=function(t){return this.applyQuaternion(Do.setFromEuler(t))},i.prototype.applyAxisAngle=function(t,e){return this.applyQuaternion(Do.setFromAxisAngle(t,e))},i.prototype.applyMatrix3=function(t){var e=this.x,n=this.y,r=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*r,this.y=s[1]*e+s[4]*n+s[7]*r,this.z=s[2]*e+s[5]*n+s[8]*r,this},i.prototype.applyNormalMatrix=function(t){return this.applyMatrix3(t).normalize()},i.prototype.applyMatrix4=function(t){var e=this.x,n=this.y,r=this.z,s=t.elements,a=1/(s[3]*e+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*r+s[12])*a,this.y=(s[1]*e+s[5]*n+s[9]*r+s[13])*a,this.z=(s[2]*e+s[6]*n+s[10]*r+s[14])*a,this},i.prototype.applyQuaternion=function(t){var e=this.x,n=this.y,r=this.z,s=t.x,a=t.y,o=t.z,c=t.w,l=2*(a*r-o*n),h=2*(o*e-s*r),u=2*(s*n-a*e);return this.x=e+c*l+a*u-o*h,this.y=n+c*h+o*l-s*u,this.z=r+c*u+s*h-a*l,this},i.prototype.transformDirection=function(t){var e=this.x,n=this.y,r=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*r,this.y=s[1]*e+s[5]*n+s[9]*r,this.z=s[2]*e+s[6]*n+s[10]*r,this.normalize()},i.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},i.prototype.divideScalar=function(t){return this.multiplyScalar(1/t)},i.prototype.min=function(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},i.prototype.max=function(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},i.prototype.clamp=function(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},i.prototype.clampScalar=function(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},i.prototype.clampLength=function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},i.prototype.floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},i.prototype.ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},i.prototype.round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},i.prototype.roundToZero=function(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this},i.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},i.prototype.dot=function(t){return this.x*t.x+this.y*t.y+this.z*t.z},i.prototype.isParallelTo=function(t){var e=this.dot(t),n=this.length(),r=t.length();return Math.abs(e)===n*r},i.prototype.lengthSq=function(){return this.x*this.x+this.y*this.y+this.z*this.z},i.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},i.prototype.manhattanLength=function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},i.prototype.normalize=function(){return this.divideScalar(this.length()||1)},i.prototype.setLength=function(t){return this.normalize().multiplyScalar(t)},i.prototype.lerp=function(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},i.prototype.lerpVectors=function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this},i.prototype.cross=function(t){return this.crossVectors(this,t)},i.prototype.crossVectors=function(t,e){var n=t.x,r=t.y,s=t.z,a=e.x,o=e.y,c=e.z;return this.x=r*c-s*o,this.y=s*a-n*c,this.z=n*o-r*a,this},i.prototype.projectOnVector=function(t){var e=t.lengthSq();if(e===0)return this.set(0,0,0);var n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)},i.prototype.projectOnPlane=function(t){return hs.copy(this).projectOnVector(t),this.sub(hs)},i.prototype.reflect=function(t){return this.sub(hs.copy(t).multiplyScalar(2*this.dot(t)))},i.prototype.angleTo=function(t){var e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;var n=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,n)))},i.prototype.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},i.prototype.distanceToSquared=function(t){var e=this.x-t.x,n=this.y-t.y,r=this.z-t.z;return e*e+n*n+r*r},i.prototype.manhattanDistanceTo=function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)},i.prototype.setFromMatrixPosition=function(t){var e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this},i.prototype.setFromMatrixScale=function(t){var e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),r=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=r,this},i.prototype.setFromMatrixColumn=function(t,e){return this.fromArray(t.elements,e*4)},i.prototype.setFromMatrix3Column=function(t,e){return this.fromArray(t.elements,e*3)},i.prototype.equals=function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},i.prototype.fromArray=function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},i.prototype.random=function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this},i.prototype.randomDirection=function(){var t=Math.random()*Math.PI*2,e=Math.random()*2-1,n=Math.sqrt(1-e*e);return this.x=n*Math.cos(t),this.y=e,this.z=n*Math.sin(t),this},i.prototype[Symbol.iterator]=function(){return ng(this,function(t){switch(t.label){case 0:return[4,this.x];case 1:return t.sent(),[4,this.y];case 2:return t.sent(),[4,this.z];case 3:return t.sent(),[2]}})},i.ORIGIN=Object.freeze(new i(0,0,0)),i.X_AXIS=Object.freeze(new i(1,0,0)),i.NEGATIVE_X_AXIS=Object.freeze(new i(-1,0,0)),i.Y_AXIS=Object.freeze(new i(0,1,0)),i.NEGATIVE_Y_AXIS=Object.freeze(new i(0,-1,0)),i.Z_AXIS=Object.freeze(new i(0,0,1)),i.NEGATIVE_Z_AXIS=Object.freeze(new i(0,0,-1)),i})(),hs=new x,Do=new _n,F=(function(){function i(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&e!=null&&n!=null&&r!=null&&s!=null&&a!=null&&o!=null&&c!=null&&l!=null&&h!=null&&u!=null&&d!=null&&g!=null&&f!=null&&p!=null&&m!=null&&this.set(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m)}return i.makeTranslation=function(t,e,n){return new i().makeTranslation(t,e,n)},i.prototype.set=function(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m){var y=this.elements;return y[0]=t,y[4]=e,y[8]=n,y[12]=r,y[1]=s,y[5]=a,y[9]=o,y[13]=c,y[2]=l,y[6]=h,y[10]=u,y[14]=d,y[3]=g,y[7]=f,y[11]=p,y[15]=m,this},i.prototype.identity=function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},i.prototype.clone=function(){return new i().fromArray(this.elements)},i.prototype.copy=function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this},i.prototype.copyPosition=function(t){var e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this},i.prototype.setFromMatrix3=function(t){var 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},i.prototype.setFromExtrusionDirection=function(t){var e=Math.hypot(t.x,t.y,t.z);if(!Number.isFinite(e)||e<1e-12)return this.identity(),this;var n=Math.abs(e-1)>1e-6?t.clone().multiplyScalar(1/e):t;if(yi.equalPoint3d(n,x.Z_AXIS))this.identity();else{var r=new x(1,0,0);Math.abs(n.x)<1/64&&Math.abs(n.y)<1/64?r.crossVectors(x.Y_AXIS,n).normalize():r.crossVectors(x.Z_AXIS,n).normalize();var s=n.clone().cross(r).normalize();this.makeBasis(r,s,n)}return this},i.prototype.extractBasis=function(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},i.prototype.makeBasis=function(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this},i.prototype.extractRotation=function(t){var e=this.elements,n=t.elements,r=1/Qe.setFromMatrixColumn(t,0).length(),s=1/Qe.setFromMatrixColumn(t,1).length(),a=1/Qe.setFromMatrixColumn(t,2).length();return e[0]=n[0]*r,e[1]=n[1]*r,e[2]=n[2]*r,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},i.prototype.makeRotationFromQuaternion=function(t){return this.compose(ig,t,rg)},i.prototype.lookAt=function(t,e,n){var r=this.elements;return Mt.subVectors(t,e),Mt.lengthSq()===0&&(Mt.z=1),Mt.normalize(),Se.crossVectors(n,Mt),Se.lengthSq()===0&&(Math.abs(n.z)===1?Mt.x+=1e-4:Mt.z+=1e-4,Mt.normalize(),Se.crossVectors(n,Mt)),Se.normalize(),Si.crossVectors(Mt,Se),r[0]=Se.x,r[4]=Si.x,r[8]=Mt.x,r[1]=Se.y,r[5]=Si.y,r[9]=Mt.y,r[2]=Se.z,r[6]=Si.z,r[10]=Mt.z,this},i.prototype.multiply=function(t){return this.multiplyMatrices(this,t)},i.prototype.premultiply=function(t){return this.multiplyMatrices(t,this)},i.prototype.multiplyMatrices=function(t,e){var n=t.elements,r=e.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],h=n[1],u=n[5],d=n[9],g=n[13],f=n[2],p=n[6],m=n[10],y=n[14],_=n[3],v=n[7],w=n[11],A=n[15],I=r[0],S=r[4],M=r[8],C=r[12],B=r[1],X=r[5],O=r[9],Z=r[13],K=r[2],G=r[6],J=r[10],P=r[14],H=r[3],ct=r[7],N=r[11],It=r[15];return s[0]=a*I+o*B+c*K+l*H,s[4]=a*S+o*X+c*G+l*ct,s[8]=a*M+o*O+c*J+l*N,s[12]=a*C+o*Z+c*P+l*It,s[1]=h*I+u*B+d*K+g*H,s[5]=h*S+u*X+d*G+g*ct,s[9]=h*M+u*O+d*J+g*N,s[13]=h*C+u*Z+d*P+g*It,s[2]=f*I+p*B+m*K+y*H,s[6]=f*S+p*X+m*G+y*ct,s[10]=f*M+p*O+m*J+y*N,s[14]=f*C+p*Z+m*P+y*It,s[3]=_*I+v*B+w*K+A*H,s[7]=_*S+v*X+w*G+A*ct,s[11]=_*M+v*O+w*J+A*N,s[15]=_*C+v*Z+w*P+A*It,this},i.prototype.multiplyScalar=function(t){var 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},i.prototype.determinant=function(){var t=this.elements,e=t[0],n=t[4],r=t[8],s=t[12],a=t[1],o=t[5],c=t[9],l=t[13],h=t[2],u=t[6],d=t[10],g=t[14],f=t[3],p=t[7],m=t[11],y=t[15];return f*(+s*c*u-r*l*u-s*o*d+n*l*d+r*o*g-n*c*g)+p*(+e*c*g-e*l*d+s*a*d-r*a*g+r*l*h-s*c*h)+m*(+e*l*u-e*o*g-s*a*u+n*a*g+s*o*h-n*l*h)+y*(-r*o*h-e*c*u+e*o*d+r*a*u-n*a*d+n*c*h)},i.prototype.transpose=function(){var t=this.elements,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},i.prototype.setPosition=function(t,e,n){var r=this.elements;return t instanceof x?(r[12]=t.x,r[13]=t.y,r[14]=t.z):(r[12]=t,r[13]=e,r[14]=n),this},i.prototype.invert=function(){var t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],u=t[9],d=t[10],g=t[11],f=t[12],p=t[13],m=t[14],y=t[15],_=u*m*l-p*d*l+p*c*g-o*m*g-u*c*y+o*d*y,v=f*d*l-h*m*l-f*c*g+a*m*g+h*c*y-a*d*y,w=h*p*l-f*u*l+f*o*g-a*p*g-h*o*y+a*u*y,A=f*u*c-h*p*c-f*o*d+a*p*d+h*o*m-a*u*m,I=e*_+n*v+r*w+s*A;if(I===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);var S=1/I;return t[0]=_*S,t[1]=(p*d*s-u*m*s-p*r*g+n*m*g+u*r*y-n*d*y)*S,t[2]=(o*m*s-p*c*s+p*r*l-n*m*l-o*r*y+n*c*y)*S,t[3]=(u*c*s-o*d*s-u*r*l+n*d*l+o*r*g-n*c*g)*S,t[4]=v*S,t[5]=(h*m*s-f*d*s+f*r*g-e*m*g-h*r*y+e*d*y)*S,t[6]=(f*c*s-a*m*s-f*r*l+e*m*l+a*r*y-e*c*y)*S,t[7]=(a*d*s-h*c*s+h*r*l-e*d*l-a*r*g+e*c*g)*S,t[8]=w*S,t[9]=(f*u*s-h*p*s-f*n*g+e*p*g+h*n*y-e*u*y)*S,t[10]=(a*p*s-f*o*s+f*n*l-e*p*l-a*n*y+e*o*y)*S,t[11]=(h*o*s-a*u*s-h*n*l+e*u*l+a*n*g-e*o*g)*S,t[12]=A*S,t[13]=(h*p*r-f*u*r+f*n*d-e*p*d-h*n*m+e*u*m)*S,t[14]=(f*o*r-a*p*r-f*n*c+e*p*c+a*n*m-e*o*m)*S,t[15]=(a*u*r-h*o*r+h*n*c-e*u*c-a*n*d+e*o*d)*S,this},i.prototype.scale=function(t){var e=this.elements,n=t.x,r=t.y,s=t.z;return e[0]*=n,e[4]*=r,e[8]*=s,e[1]*=n,e[5]*=r,e[9]*=s,e[2]*=n,e[6]*=r,e[10]*=s,e[3]*=n,e[7]*=r,e[11]*=s,this},i.prototype.getMaxScaleOnAxis=function(){var t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],r=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,r))},i.prototype.makeTranslation=function(t,e,n){var r;return typeof t=="object"?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,(r=t.z)!==null&&r!==void 0?r:0,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this},i.prototype.makeRotationX=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this},i.prototype.makeRotationY=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this},i.prototype.makeRotationZ=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this},i.prototype.makeRotationAxis=function(t,e){var n=Math.cos(e),r=Math.sin(e),s=1-n,a=t.x,o=t.y,c=t.z,l=s*a,h=s*o;return this.set(l*a+n,l*o-r*c,l*c+r*o,0,l*o+r*c,h*o+n,h*c-r*a,0,l*c-r*o,h*c+r*a,s*c*c+n,0,0,0,0,1),this},i.prototype.makeScale=function(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this},i.prototype.makeShear=function(t,e,n,r,s,a){return this.set(1,n,s,0,t,1,a,0,e,r,1,0,0,0,0,1),this},i.prototype.compose=function(t,e,n){var r=this.elements,s=e.x,a=e.y,o=e.z,c=e.w,l=s+s,h=a+a,u=o+o,d=s*l,g=s*h,f=s*u,p=a*h,m=a*u,y=o*u,_=c*l,v=c*h,w=c*u,A=n.x,I=n.y,S=n.z;return r[0]=(1-(p+y))*A,r[1]=(g+w)*A,r[2]=(f-v)*A,r[3]=0,r[4]=(g-w)*I,r[5]=(1-(d+y))*I,r[6]=(m+_)*I,r[7]=0,r[8]=(f+v)*S,r[9]=(m-_)*S,r[10]=(1-(d+p))*S,r[11]=0,r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=1,this},i.prototype.decompose=function(t,e,n){var r=this.elements,s=Qe.set(r[0],r[1],r[2]).length(),a=Qe.set(r[4],r[5],r[6]).length(),o=Qe.set(r[8],r[9],r[10]).length(),c=this.determinant();c<0&&(s=-s),t.x=r[12],t.y=r[13],t.z=r[14],qt.copy(this);var l=1/s,h=1/a,u=1/o;return qt.elements[0]*=l,qt.elements[1]*=l,qt.elements[2]*=l,qt.elements[4]*=h,qt.elements[5]*=h,qt.elements[6]*=h,qt.elements[8]*=u,qt.elements[9]*=u,qt.elements[10]*=u,e.setFromRotationMatrix(qt),n.x=s,n.y=a,n.z=o,this},i.prototype.equals=function(t){for(var e=this.elements,n=t.elements,r=0;r<16;r++)if(e[r]!==n[r])return!1;return!0},i.prototype.fromArray=function(t,e){e===void 0&&(e=0);for(var n=0;n<16;n++)this.elements[n]=t[n+e];return this},i.prototype.toArray=function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);var n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t},i.IDENTITY=Object.freeze(new i),i})(),Qe=new x,qt=new F,ig=new x(0,0,0),rg=new x(1,1,1),Se=new x,Si=new x,Mt=new x,z=(function(){function i(t,e){t===void 0&&(t=void 0),e===void 0&&(e=void 0),this.min=t==null?new x(1/0,1/0,1/0):new x(t.x,t.y,t.z),this.max=e==null?new x(-1/0,-1/0,-1/0):new x(e.x,e.y,e.z)}return i.prototype.set=function(t,e){return this.min.copy(t),this.max.copy(e),this},i.prototype.setFromArray=function(t){this.makeEmpty();for(var e=0,n=t.length;e<n;e+=3)this.expandByPoint(us.fromArray(t,e));return this},i.prototype.setFromPoints=function(t){this.makeEmpty();for(var e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this},i.prototype.setFromCenterAndSize=function(t,e){var n=us.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this},i.prototype.clone=function(){return new i().copy(this)},i.prototype.copy=function(t){return this.min.copy(t.min),this.max.copy(t.max),this},i.prototype.makeEmpty=function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this},i.prototype.isEmpty=function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z},i.prototype.getCenter=function(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)},i.prototype.getSize=function(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)},Object.defineProperty(i.prototype,"center",{get:function(){return this.isEmpty()?new x(0,0,0):new x(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"size",{get:function(){return this.isEmpty()?new x(0,0,0):new x(0,0,0).subVectors(this.max,this.min)},enumerable:!1,configurable:!0}),i.prototype.expandByPoint=function(t){return this.min.min(t),this.max.max(t),this},i.prototype.expandByVector=function(t){return this.min.sub(t),this.max.add(t),this},i.prototype.expandByScalar=function(t){return this.min.addScalar(-t),this.max.addScalar(t),this},i.prototype.containsPoint=function(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)},i.prototype.containsBox=function(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},i.prototype.getParameter=function(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))},i.prototype.intersectsBox=function(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)},i.prototype.intersectsPlane=function(t){var e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant},i.prototype.clampPoint=function(t,e){return e.copy(t).clamp(this.min,this.max)},i.prototype.distanceToPoint=function(t){return this.clampPoint(t,us).distanceTo(t)},i.prototype.intersect=function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},i.prototype.union=function(t){return this.min.min(t.min),this.max.max(t.max),this},i.prototype.applyMatrix4=function(t){return this.isEmpty()?this:(ge[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),ge[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),ge[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),ge[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),ge[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),ge[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),ge[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),ge[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(ge),this)},i.prototype.translate=function(t){return this.min.add(t),this.max.add(t),this},i.prototype.equals=function(t){return t.min.equals(this.min)&&t.max.equals(this.max)},i})(),ge=[new x,new x,new x,new x,new x,new x,new x,new x],us=new x,Yo=new at,wt=(function(){function i(t,e){t===void 0&&(t=void 0),e===void 0&&(e=void 0),this.min=t==null?new at(1/0,1/0):new at(t.x,t.y),this.max=e==null?new at(-1/0,-1/0):new at(e.x,e.y)}return i.prototype.set=function(t,e){return this.min.copy(t),this.max.copy(e),this},i.prototype.setFromPoints=function(t){this.makeEmpty();for(var e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this},i.prototype.setFromCenterAndSize=function(t,e){var n=Yo.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this},i.prototype.clone=function(){return new i().copy(this)},i.prototype.copy=function(t){return this.min.copy(t.min),this.max.copy(t.max),this},i.prototype.makeEmpty=function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this},i.prototype.isEmpty=function(){return this.max.x<this.min.x||this.max.y<this.min.y},i.prototype.getCenter=function(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)},i.prototype.getSize=function(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)},Object.defineProperty(i.prototype,"center",{get:function(){return this.isEmpty()?new at(0,0):new at(0,0).addVectors(this.min,this.max).multiplyScalar(.5)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"size",{get:function(){return this.isEmpty()?new at(0,0):new at(0,0).subVectors(this.max,this.min)},enumerable:!1,configurable:!0}),i.prototype.expandByPoint=function(t){return this.min.min(t),this.max.max(t),this},i.prototype.expandByVector=function(t){return this.min.sub(t),this.max.add(t),this},i.prototype.expandByScalar=function(t){return this.min.addScalar(-t),this.max.addScalar(t),this},i.prototype.containsPoint=function(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y)},i.prototype.containsBox=function(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},i.prototype.getParameter=function(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))},i.prototype.intersectsBox=function(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)},i.prototype.clampPoint=function(t,e){return e.copy(t).clamp(this.min,this.max)},i.prototype.distanceToPoint=function(t){return this.clampPoint(t,Yo).distanceTo(t)},i.prototype.intersect=function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},i.prototype.union=function(t){return this.min.min(t.min),this.max.max(t.max),this},i.prototype.translate=function(t){return this.min.add(t),this.max.add(t),this},i.prototype.equals=function(t){return t.min.equals(this.min)&&t.max.equals(this.max)},i})(),Xo=new x,sg=new x,ag=new mi,Wr=(function(){function i(t,e){t===void 0&&(t=new x(1,0,0)),e===void 0&&(e=0),this.normal=t,this.constant=e}return i.prototype.set=function(t,e){return this.normal.copy(t),this.constant=e,this},i.prototype.setComponents=function(t,e,n,r){return this.normal.set(t,e,n),this.constant=r,this},i.prototype.setFromNormalAndCoplanarPoint=function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},i.prototype.setFromCoplanarPoints=function(t,e,n){var r=Xo.subVectors(n,e).cross(sg.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(r,t),this},i.prototype.copy=function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},i.prototype.normalize=function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},i.prototype.negate=function(){return this.constant*=-1,this.normal.negate(),this},i.prototype.distanceToPoint=function(t){return this.normal.dot(t)+this.constant},i.prototype.projectPoint=function(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))},i.prototype.intersectsBox=function(t){return t.intersectsPlane(this)},i.prototype.coplanarPoint=function(t){return t.copy(this.normal).multiplyScalar(-this.constant)},i.prototype.applyMatrix4=function(t,e){var n=e||ag.getNormalMatrix(t),r=this.coplanarPoint(Xo).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this},i.prototype.translate=function(t){return this.constant-=t.dot(this.normal),this},i.prototype.equals=function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},i.prototype.clone=function(){return new i().copy(this)},i})(),og=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),L=(function(i){og(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.clone=function(){return new t(this.x,this.y)},t.pointArrayToNumberArray=function(e){var n=new Array(e.length*2);return e.forEach(function(r,s){r.toArray(n,s*2)}),n},t})(at),cg=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),b=(function(i){cg(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.clone=function(){return new t(this.x,this.y,this.z)},t.pointArrayToNumberArray=function(e,n){n===void 0&&(n=!0);var r=n?3:2,s=new Array(e.length*r);return e.forEach(function(a,o){a.toArray(s,o*r)}),s},t})(x),lg=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},zo=new F,Vo=new _n,hg=(function(){function i(t,e,n,r){t===void 0&&(t=0),e===void 0&&(e=0),n===void 0&&(n=0),r===void 0&&(r=i.DEFAULT_ORDER),this._x=t,this._y=e,this._z=n,this._order=r}return Object.defineProperty(i.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"z",{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"order",{get:function(){return this._order},set:function(t){this._order=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),i.prototype.set=function(t,e,n,r){return r===void 0&&(r=this._order),this._x=t,this._y=e,this._z=n,this._order=r,this._onChangeCallback(),this},i.prototype.clone=function(){return new i(this._x,this._y,this._z,this._order)},i.prototype.copy=function(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this},i.prototype.setFromRotationMatrix=function(t,e,n){e===void 0&&(e=this._order),n===void 0&&(n=!0);var r=t.elements,s=r[0],a=r[4],o=r[8],c=r[1],l=r[5],h=r[9],u=r[2],d=r[6],g=r[10];switch(e){case"XYZ":this._y=Math.asin(fe(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,g),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-fe(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,g),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(fe(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,g),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-fe(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,g),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(fe(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(o,g));break;case"XZY":this._z=Math.asin(-fe(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,g),this._y=0);break;default:}return this._order=e,n===!0&&this._onChangeCallback(),this},i.prototype.setFromQuaternion=function(t,e,n){return n===void 0&&(n=!0),zo.makeRotationFromQuaternion(t),this.setFromRotationMatrix(zo,e,n)},i.prototype.setFromVector3=function(t,e){return e===void 0&&(e=this._order),this.set(t.x,t.y,t.z,e)},i.prototype.reorder=function(t){return Vo.setFromEuler(this),this.setFromQuaternion(Vo,t)},i.prototype.equals=function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order},i.prototype.fromArray=function(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},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t},i.prototype._onChange=function(t){return this._onChangeCallback=t,this},i.prototype._onChangeCallback=function(){},i.prototype[Symbol.iterator]=function(){return lg(this,function(t){switch(t.label){case 0:return[4,this._x];case 1:return t.sent(),[4,this._y];case 2:return t.sent(),[4,this._z];case 3:return t.sent(),[4,this._order];case 4:return t.sent(),[2]}})},i.DEFAULT_ORDER="XYZ",i})();function ug(i){var t,e=i;return{x:i.x,y:i.y,z:(t=e.z)!==null&&t!==void 0?t:0}}function dg(i,t){var e,n;i.x+=t.x,i.y+=t.y,i.z=((e=i.z)!==null&&e!==void 0?e:0)+((n=t.z)!==null&&n!==void 0?n:0)}function gg(i,t,e){e===void 0&&(e=!1);for(var n=i.x,r=i.y,s=!1,a=t.length,o=0,c=a-1;o<a;c=o++){var l=t[o].x,h=t[o].y,u=t[c].x,d=t[c].y,g=h>r!=d>r;e&&(g=h>=r!=d>=r);var f=g&&n<(u-l)*(r-h)/(d-h)+l;f&&(s=!s)}return s}function fg(i,t){if(i.length===0||t.length===0)return!1;var e=new wt().setFromPoints(i),n=new wt().setFromPoints(t);if(!e.intersectsBox(n))return!1;for(var r=0;r<i.length;){if(Pt.isPointInPolygon(i[r],t,!0))return!0;r<i.length-1&&yi.equalPoint2d(i[r+1],i[r])&&++r,++r}return!1}var Pt={applyOffsetToPoint3d:dg,isPointInPolygon:gg,isPolygonIntersect:fg,point2dToPoint3d:ug},Ii=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Ei=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))};function pg(i,t){for(var e=[],n=t-1,r=i,s=0;s<=r;s++)e.push(0);for(var s=1;s<=n-r;s++)e.push(s);for(var s=0;s<=r;s++)e.push(n-r+1);return e}function mg(i,t){for(var e=t.length-1,n=i,r=[0],s=0,a=1;a<=e;a++){var o=t[a][0]-t[a-1][0],c=t[a][1]-t[a-1][1],l=t[a][2]-t[a-1][2],h=Math.sqrt(o*o+c*c+l*l);s+=h,r.push(s)}for(var u=[],a=0;a<=n;a++)u.push(0);for(var a=1;a<=e-n;a++){var d=r[a]/s;u.push(d*(e-n+1))}for(var a=0;a<=n;a++)u.push(e-n+1);return u}function ml(i,t){t===void 0&&(t="Uniform");var e=i.length;if(e===0)return[];if(e===1)return[0];var n=e-1;if(t==="Uniform")return new Array(e).fill(0).map(function(d,g){return g/n});for(var r=[0],s=0,a=1;a<=n;a++){var o=i[a][0]-i[a-1][0],c=i[a][1]-i[a-1][1],l=i[a][2]-i[a-1][2],h=Math.sqrt(o*o+c*c+l*l),u=t==="SqrtChord"?Math.sqrt(h):h;s+=u,r.push(s)}return s<1e-12?new Array(e).fill(0).map(function(d,g){return g/n}):r.map(function(d){return d/s})}function yl(i,t){for(var e=t.length-1,n=i,r=e+n+1,s=new Array(r+1).fill(0),a=t[t.length-1],o=r-n;o<=r;o++)s[o]=a;for(var c=1;c<=e-n;c++){for(var l=0,o=c;o<c+n;o++)l+=t[o];s[c+n]=l/n}return s}function yg(i,t){for(var e=t.length-1,n=i,r=[0],s=0,a=1;a<=e;a++){var o=t[a][0]-t[a-1][0],c=t[a][1]-t[a-1][1],l=t[a][2]-t[a-1][2],h=Math.sqrt(o*o+c*c+l*l),u=Math.sqrt(h);s+=u,r.push(s)}for(var d=[],a=0;a<=n;a++)d.push(0);for(var a=1;a<=e-n;a++){var g=r[a]/s;d.push(g*(e-n+1))}for(var a=0;a<=n;a++)d.push(e-n+1);return d}function ds(i,t){for(var e=i.length,n=i.map(function(m){return m.slice()}),r=t.slice(),s=0;s<e;s++){for(var a=s,o=Math.abs(n[s][s]),c=s+1;c<e;c++){var l=Math.abs(n[c][s]);l>o&&(o=l,a=c)}if(o<1e-12)throw new Error("Interpolation matrix is singular.");if(a!==s){var h=n[s];n[s]=n[a],n[a]=h;var u=r[s];r[s]=r[a],r[a]=u}for(var c=s+1;c<e;c++){var d=n[c][s]/n[s][s];if(!(Math.abs(d)<1e-14)){for(var g=s;g<e;g++)n[c][g]-=d*n[s][g];r[c]-=d*r[s]}}}for(var f=new Array(e).fill(0),c=e-1;c>=0;c--){for(var p=r[c],g=c+1;g<e;g++)p-=n[c][g]*f[g];f[c]=p/n[c][c]}return f}function va(i,t,e,n,r){var s,a,o,c,l,h;if(e===void 0&&(e="Uniform"),i.length===0)return{controlPoints:[],knots:[],weights:[]};var u=i.map(function(N){var It;return[N[0],N[1],(It=N[2])!==null&&It!==void 0?It:0]}),d=!!n,g=!!r,f=(d?1:0)+(g?1:0),p=u.length-1,m=p+f;if(m<t)throw new Error("Not enough points to interpolate a curve of this degree.");var y=ml(u,e),_=y.slice();d&&_.unshift(y[0]),g&&_.push(y[y.length-1]);var v=yl(t,_),w=m+1,A=new Array(w),I=new Array(w),S=new Array(w),M=new Array(w),C=0;A[C]=new Array(w).fill(0),A[C][0]=1,I[C]=u[0][0],S[C]=u[0][1],M[C]=u[0][2],C++;for(var B=1;B<=p-1;B++){var X=y[B];A[C]=new Array(w).fill(0);for(var O=0;O<=m;O++)A[C][O]=Re(O,t,X,v);I[C]=u[B][0],S[C]=u[B][1],M[C]=u[B][2],C++}if(A[C]=new Array(w).fill(0),A[C][m]=1,I[C]=u[p][0],S[C]=u[p][1],M[C]=u[p][2],C++,d){var Z=v[t+1]-v[0],K=Z!==0?t/Z:0;A[C]=new Array(w).fill(0),A[C][0]=-K,A[C][1]=K,I[C]=(s=n==null?void 0:n[0])!==null&&s!==void 0?s:0,S[C]=(a=n==null?void 0:n[1])!==null&&a!==void 0?a:0,M[C]=(o=n==null?void 0:n[2])!==null&&o!==void 0?o:0,C++}if(g){var Z=v[m+t+1]-v[m],K=Z!==0?t/Z:0;A[C]=new Array(w).fill(0),A[C][m-1]=-K,A[C][m]=K,I[C]=(c=r==null?void 0:r[0])!==null&&c!==void 0?c:0,S[C]=(l=r==null?void 0:r[1])!==null&&l!==void 0?l:0,M[C]=(h=r==null?void 0:r[2])!==null&&h!==void 0?h:0,C++}for(var G=ds(A,I),J=ds(A,S),P=ds(A,M),H=new Array(w),B=0;B<w;B++)H[B]=[G[B],J[B],P[B]];var ct=new Array(w).fill(1);return{controlPoints:H,knots:v,weights:ct}}function Re(i,t,e,n){if(t===0)return e>=n[i]&&e<n[i+1]?1:0;var r=n[i+t]-n[i],s=n[i+t+1]-n[i+1],a=r>1e-10?(e-n[i])/r:0,o=s>1e-10?(n[i+t+1]-e)/s:0;return a*Re(i,t-1,e,n)+o*Re(i+1,t-1,e,n)}function Xn(i,t,e,n,r){var s=n.length-1,a=t;if(i=Math.max(e[a],Math.min(e[s+1],i)),Math.abs(i-e[s+1])<1e-8)return Ei([],Ii(n[s]),!1);if(Math.abs(i-e[a])<1e-8)return Ei([],Ii(n[0]),!1);for(var o=[0,0,0],c=0,l=0;l<=s;l++){var h=Re(l,a,i,e),u=r[l]*h;o[0]+=n[l][0]*u,o[1]+=n[l][1]*u,o[2]+=n[l][2]*u,c+=u}if(Math.abs(c)<1e-10){var d=e[e.length-a-1];if(Math.abs(i-d)<1e-8)return Ei([],Ii(n[s]),!1);if(Math.abs(i-e[a])<1e-8)return Ei([],Ii(n[0]),!1)}return Math.abs(c)>=1e-10&&(o[0]/=c,o[1]/=c,o[2]/=c),o}function Ys(i,t,e,n){if(t===0)return 0;var r=n[i+t]-n[i],s=n[i+t+1]-n[i+1],a=0;return r>1e-10&&(a+=t/r*Re(i,t-1,e,n)),s>1e-10&&(a-=t/s*Re(i+1,t-1,e,n)),a}function bg(i,t,e,n){if(t<=1)return 0;var r=n[i+t]-n[i],s=n[i+t+1]-n[i+1],a=0;return r>1e-10&&(a+=t/r*Ys(i,t-1,e,n)),s>1e-10&&(a-=t/s*Ys(i+1,t-1,e,n)),a}function _g(i,t,e,n,r){var s=n.length-1,a=t,o=e[a],c=e[s+1];i=Math.max(o,Math.min(c,i));for(var l=[0,0,0],h=[0,0,0],u=[0,0,0],d=0,g=0,f=0,p=0;p<=s;p++){var m=Re(p,a,i,e),y=Ys(p,a,i,e),_=bg(p,a,i,e),v=r[p],w=v*m,A=v*y,I=v*_,S=n[p];l[0]+=w*S[0],l[1]+=w*S[1],l[2]+=w*S[2],h[0]+=A*S[0],h[1]+=A*S[1],h[2]+=A*S[2],u[0]+=I*S[0],u[1]+=I*S[1],u[2]+=I*S[2],d+=w,g+=A,f+=I}if(Math.abs(d)<1e-10){var M=Xn(i,t,e,n,r);return{point:M,deriv1:[0,0,0],deriv2:[0,0,0]}}var C=d*d,B=[l[0]/d,l[1]/d,l[2]/d],X=[(h[0]*d-l[0]*g)/C,(h[1]*d-l[1]*g)/C,(h[2]*d-l[2]*g)/C],O=u[0]*d-l[0]*f,Z=u[1]*d-l[1]*f,K=u[2]*d-l[2]*f,G=[O/C-2*g*X[0]/d,Z/C-2*g*X[1]/d,K/C-2*g*X[2]/d];return{point:B,deriv1:X,deriv2:G}}function xg(i,t){var e=i[0],n=i[1],r=t[0],s=t[1],a=e*e+n*n;return a<1e-20?0:(e*s-n*r)/Math.pow(a,1.5)}function bl(i,t,e,n){for(var r=i,s=t[r],a=t[t.length-r-1],o=0,c=1e3,l=(a-s)/c,h=Xn(s,i,t,e,n),u=1;u<=c;u++){var d=s+u*l,g=Xn(d,i,t,e,n),f=g[0]-h[0],p=g[1]-h[1],m=g[2]-h[2];o+=Math.sqrt(f*f+p*p+m*m),h=g}var y=Xn(a,i,t,e,n),_=y[0]-h[0],v=y[1]-h[1],w=y[2]-h[2];return o+=Math.sqrt(_*_+v*v+w*w),o}function wg(i,t,e,n,r){return t===void 0&&(t=3),e===void 0&&(e="Uniform"),i.length===0?[]:va(i,t,e,n,r).controlPoints}var jo=new F,Go=new x,vg=new x,Ag=new x,gs=new b;function _l(i){return new F().setFromExtrusionDirection(new x(i.x,i.y,i.z))}function Fe(i){return jo.setFromExtrusionDirection(new x(i.x,i.y,i.z)),jo.extractBasis(Go,vg,Ag),Go.clone()}function _t(i,t){var e;return new b(i.x,i.y,(e=i.z)!==null&&e!==void 0?e:0).applyMatrix4(_l(t))}function Bt(i,t){var e;return new b(i.x,i.y,(e=i.z)!==null&&e!==void 0?e:0).applyMatrix4(_l(t).invert())}function ye(i,t,e){var n,r,s=Bt(i,e),a=Bt(t,e);return gs.set(a.x-s.x,a.y-s.y,((n=a.z)!==null&&n!==void 0?n:0)-((r=s.z)!==null&&r!==void 0?r:0)),T.normalizeAngle(Math.atan2(gs.y,gs.x))}function xl(i){var t=i.length;if(t<3)return 0;for(var e=0,n=0,r=t-1;n<t;r=n++){var s=i[r],a=i[n];e+=s.x*a.y-a.x*s.y}return e*.5}function kg(i){return Math.abs(xl(i))}function Pg(i){var t,e,n=i.length;if(n<3)return 0;for(var r=0,s=0,a=0,o=0,c=n-1;o<n;c=o++){var l=i[c],h=i[o],u=l.x,d=l.y,g=(t=l.z)!==null&&t!==void 0?t:0,f=h.x,p=h.y,m=(e=h.z)!==null&&e!==void 0?e:0;r+=(g+m)*(d-p),s+=(u+f)*(g-m),a+=(d+p)*(u-f)}return .5*Math.hypot(r,s,a)}function Sg(i){return i.length<3?0:kg(i)}function wl(i){return i.length<3?0:Pg(i)}function Aa(i,t,e){var n=i.x,r=i.y,s=t.x,a=t.y,o=e.x,c=e.y,l=2*(n*(a-c)+s*(c-r)+o*(r-a));if(Y.equalToZero(l))return null;var h=((n*n+r*r)*(a-c)+(s*s+a*a)*(c-r)+(o*o+c*c)*(r-a))/l,u=((n*n+r*r)*(o-s)+(s*s+a*a)*(n-o)+(o*o+c*c)*(s-n))/l,d=Math.hypot(h-n,u-r);return!Number.isFinite(d)||Y.isNonPositive(d)?null:{center:new L(h,u),radius:d}}function Uo(i,t,e){var n,r,s,a=i.x,o=i.y,c=(n=i.z)!==null&&n!==void 0?n:0,l=new x(t.x-a,t.y-o,((r=t.z)!==null&&r!==void 0?r:0)-c),h=new x(e.x-a,e.y-o,((s=e.z)!==null&&s!==void 0?s:0)-c),u=new x().crossVectors(l,h),d=u.lengthSq();if(d<ut*ut)return null;var g=l.lengthSq(),f=h.lengthSq(),p=new x().crossVectors(u,l).multiplyScalar(f).add(new x().crossVectors(h,u).multiplyScalar(g)).multiplyScalar(1/(2*d)),m=new b(a+p.x,o+p.y,c+p.z),y=Math.hypot(m.x-a,m.y-o,m.z-c);return!Number.isFinite(y)||Y.isNonPositive(y)?null:{center:m,radius:y}}function Ce(i,t){return Math.atan2(t.y-i.y,t.x-i.x)}function le(i,t){return Math.hypot(t.x-i.x,t.y-i.y)}function vl(i,t,e){if(Y.isNonPositive(t))return null;var n=e.x-i.x,r=e.y-i.y,s=Math.hypot(n,r);if(Y.isNonPositive(s))return null;var a=t/s;return new L(i.x+n*a,i.y+r*a)}var Ig=1e-8;function Al(i,t,e,n){var r=Math.abs(le(i,t)-e);return r<=(n??Math.max(ut,e*1e-5))}function kl(i,t,e,n,r){return r===void 0&&(r=Ig),Math.abs(i.x-e.x)<=r&&Math.abs(i.y-e.y)<=r&&Math.abs(t-n)<=r}function Pl(i,t,e,n){var r=Math.max(1e-18,Math.abs(e)*1e-9);return i<e-r?!0:i>e+r?!1:t>n}function Ho(i,t,e,n){n===void 0&&(n=!1);var r=Aa(i,t,e);if(!r)return null;var s=Ce(r.center,i),a=Ce(r.center,t),o=Ce(r.center,e),c=!T.isAngleOnCcwSweep(s,a,o);return n&&(c=!c),it.fromMathAngles(r.center,r.radius,s,o,c)}function ka(i,t){return!Number.isFinite(t)||Y.isNonPositive(t)?null:new it(i,t,0,V,!1)}function Eg(i,t){var e=le(i,t);return Y.isNonPositive(e)?null:ka({x:(i.x+t.x)/2,y:(i.y+t.y)/2},e/2)}function Lg(i,t,e){var n=Aa(i,t,e);return n?ka(n.center,n.radius):null}function Tg(i,t,e){var n=le(e,i);if(Y.isNonPositive(n))return null;var r=Ce(e,i),s=Ce(e,t),a=T.normalizeAngle(s-r);return it.fromMathAngles(e,n,r,s,a>Math.PI)}function bi(i,t,e,n){var r=le(i,t),s=le(i,e);if(Y.isNonPositive(r)||Y.isNonPositive(s))return null;var a=Math.max(ut,r*ut);return Math.abs(r-s)>a?null:it.fromMathAngles(i,r,Ce(i,t),Ce(i,e),n)}function Cg(i,t,e,n){var r=le(i,t);if(Y.isNonPositive(r))return null;var s=vl(i,r,e);return s?bi(i,t,s,n):null}function Sl(i,t,e){var n=le(i,t),r=Math.abs(e);if(Y.isNonPositive(n)||Y.isNonPositive(r)||!Y.great(V-r,0))return null;var s=e<0,a=Ce(i,t),o=s?a-r:a+r;return it.fromMathAngles(i,n,a,o,s)}function Mg(i,t,e){var n=le(i,t),r=Math.abs(e);if(Y.isNonPositive(n)||Y.isNonPositive(r)||Y.great(r,2*n))return null;var s=Math.max(-1,Math.min(1,r/(2*n))),a=2*Math.asin(s);return Sl(i,t,e>=0?a:-a)}function Og(i,t,e){var n=le(i,t),r=Math.abs(e);if(Y.isNonPositive(n)||Y.isNonPositive(r)||!Y.great(V-r,0))return null;var s=Math.sin(r/2);if(Y.equalToZero(s))return null;var a=n/(2*s),o=a*a-n*n/4;if(Y.less(o,0))return null;var c=Math.sqrt(Math.max(0,o)),l=(i.x+t.x)/2,h=(i.y+t.y)/2,u=t.x-i.x,d=t.y-i.y,g=-d/n,f=u/n,p=e>=0,m=p&&r<=Math.PI||!p&&r>Math.PI,y=m?1:-1,_={x:l+g*c*y,y:h+f*c*y};return bi(_,i,t,!p)}function Ng(i,t,e){var n=Math.cos(e),r=Math.sin(e),s=t.x-i.x,a=t.y-i.y,o=-r,c=n,l=2*(s*o+a*c);if(Y.equalToZero(l))return null;var h=(s*s+a*a)/l;if(!Number.isFinite(h))return null;var u={x:i.x+o*h,y:i.y+c*h},d=i.x-u.x,g=i.y-u.y,f=d*r-g*n;return Y.equalToZero(f)?null:bi(u,i,t,f<0)}function Bg(i,t,e){var n=Math.abs(e),r=le(i,t);if(Y.isNonPositive(n)||Y.isNonPositive(r)||Y.great(r,2*n))return null;var s=(i.x+t.x)/2,a=(i.y+t.y)/2,o=t.x-i.x,c=t.y-i.y,l=-c/r,h=o/r,u=Math.sqrt(Math.max(0,n*n-r*r/4)),d=e>=0?1:-1,g={x:s+l*u*d,y:a+h*u*d};return bi(g,i,t,e<0)}var Il=(function(){function i(){this._boundingBoxNeedsUpdate=!1}return Object.defineProperty(i.prototype,"boundingBoxNeedUpdate",{get:function(){return this._boundingBoxNeedsUpdate},enumerable:!1,configurable:!0}),i})(),Rg=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Pa=(function(i){Rg(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.translate=function(e){return this.transform(new mi().makeTranslation(e.x,e.y))},Object.defineProperty(t.prototype,"box",{get:function(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box},enumerable:!1,configurable:!0}),t})(Il),Fg=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Tn=(function(i){Fg(t,i);function t(){var e=i.call(this)||this;return e.arcLengthDivisions=100,e}return Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPoint(0)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPoint(1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this.getLength()},enumerable:!1,configurable:!0}),t.prototype.getPoint=function(e){throw new Error("AcGeCurve2d: .getPoint() not implemented.")},t.prototype.getPointAt=function(e){var n=this.getUtoTmapping(e);return this.getPoint(n)},t.prototype.getPoints=function(e){e===void 0&&(e=5);for(var n=[],r=0;r<=e;r++)n.push(this.getPoint(r/e));return n},t.prototype.getSpacedPoints=function(e){e===void 0&&(e=5);for(var n=[],r=0;r<=e;r++)n.push(this.getPointAt(r/e));return n},t.prototype.getLength=function(){var e=this.getLengths();return e[e.length-1]},t.prototype.getLengths=function(e){e===void 0&&(e=this.arcLengthDivisions);var n=[],r,s=this.getPoint(0),a=0;n.push(0);for(var o=1;o<=e;o++)r=this.getPoint(o/e),a+=r.distanceTo(s),n.push(a),s=r;return n},t.prototype.getUtoTmapping=function(e,n){var r=this.getLengths(),s=0,a=r.length,o;n?o=n:o=e*r[a-1];for(var c=0,l=a-1,h;c<=l;)if(s=Math.floor(c+(l-c)/2),h=r[s]-o,h<0)c=s+1;else if(h>0)l=s-1;else{l=s;break}if(s=l,r[s]===o)return s/(a-1);var u=r[s],d=r[s+1],g=d-u,f=(o-u)/g,p=(s+f)/(a-1);return p},t.prototype.getTangent=function(e){var n=1e-4,r=e-n,s=e+n;r<0&&(r=0),s>1&&(s=1);var a=this.getPoint(r),o=this.getPoint(s),c=new L;return c.copy(o).sub(a).normalize(),c},t.prototype.getTangentAt=function(e){var n=this.getUtoTmapping(e);return this.getTangent(n)},t})(Pa),Dg=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Li=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ti=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Ci=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},it=(function(i){Dg(t,i);function t(e,n,r,s,a){var o=i.call(this)||this,c=+(e!==void 0)+ +(n!==void 0)+ +(r!==void 0)+ +(s!==void 0)+ +(a!==void 0);if(c==3)typeof e=="object"&&typeof n=="object"&&typeof r=="object"?o.createByThreePoints(e,n,r):o.createByStartEndPointsAndBulge(e,n,r);else if(c==5){var l=e;o.center=new L(l.x,l.y),o.radius=n,o._clockwise=a,o._startAngle=o._clockwise?o._mirrorAngle(T.normalizeAngle(r)):T.normalizeAngle(r),o._endAngle=o._clockwise?o._mirrorAngle(T.normalizeAngle(s)):T.normalizeAngle(s)}else throw Et.ILLEGAL_PARAMETERS;return o}return t.fromMathAngles=function(e,n,r,s,a){var o=new t(e,n,T.normalizeAngle(r),T.normalizeAngle(s),!1);return o._clockwise=a,o._boundingBoxNeedsUpdate=!0,o},t.computeCircumcircle=function(e,n,r){return Aa(e,n,r)},t.projectPoint=function(e,n,r){return vl(e,n,r)},t.pointLiesOnCircle=function(e,n,r,s){return Al(e,n,r,s)},t.sameCircle=function(e,n,r,s,a){return kl(e,n,r,s,a)},t.isBetterDistanceAlign=function(e,n,r,s){return Pl(e,n,r,s)},t.tryCreateByThreePoints=function(e,n,r,s){return s===void 0&&(s=!1),Ho(e,n,r,s)},t.tryCreateCircle=function(e,n){return ka(e,n)},t.tryCreateCircleByDiameter=function(e,n){return Eg(e,n)},t.tryCreateCircleByThreePoints=function(e,n,r){return Lg(e,n,r)},t.tryCreateShorterArc=function(e,n,r){return Tg(e,n,r)},t.tryCreateByCenterStartEnd=function(e,n,r,s){return bi(e,n,r,s)},t.tryCreateByCenterStartProjectedEnd=function(e,n,r,s){return Cg(e,n,r,s)},t.tryCreateByCenterStartSweep=function(e,n,r){return Sl(e,n,r)},t.tryCreateByCenterStartChord=function(e,n,r){return Mg(e,n,r)},t.tryCreateByStartEndAngle=function(e,n,r){return Og(e,n,r)},t.tryCreateByStartEndDirection=function(e,n,r){return Ng(e,n,r)},t.tryCreateByStartEndRadius=function(e,n,r){return Bg(e,n,r)},t.prototype.createByThreePoints=function(e,n,r){var s=Ho(e,n,r);if(!s)throw Et.ILLEGAL_PARAMETERS;this.center=s.center,this.radius=s.radius,this._clockwise=s._clockwise,this._startAngle=s._startAngle,this._endAngle=s._endAngle,this._boundingBoxNeedsUpdate=!0},t.prototype.createByStartEndPointsAndBulge=function(e,n,r){var s,a,o;r<0?(s=Math.atan(-r)*4,a=new at(e),o=new at(n)):(s=Math.atan(r)*4,a=new at(n),o=new at(e));var c=new at().subVectors(o,a),l=c.length(),h=new at().addVectors(a,c.multiplyScalar(.5)),u=Math.abs(l/2/Math.tan(s/2)),d=c.normalize(),g=r<0?-Math.PI/2:Math.PI/2,f=new at(d.x*Math.cos(g)-d.y*Math.sin(g),d.y*Math.cos(g)+d.x*Math.sin(g)),p;s<Math.PI?r<0?p=h.add(f.multiplyScalar(u)):p=h.add(f.multiplyScalar(-u)):r<0?p=h.add(f.multiplyScalar(-u)):p=h.add(f.multiplyScalar(u)),r<0?(this._startAngle=Math.atan2(a.y-p.y,a.x-p.x),this._endAngle=Math.atan2(o.y-p.y,o.x-p.x)):(this._startAngle=Math.atan2(o.y-p.y,o.x-p.x),this._endAngle=Math.atan2(a.y-p.y,a.x-p.x)),this._clockwise=r<0,this.center=p,this.radius=o.sub(p).length()},Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new L(e.x,e.y),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"radius",{get:function(){return this._radius},set:function(e){this._radius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle},set:function(e){this._startAngle=this._clockwise?this._mirrorAngle(T.normalizeAngle(e)):T.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle},set:function(e){var n=this.startAngle==0&&e==V?e:T.normalizeAngle(e);this._endAngle=this._clockwise?this._mirrorAngle(n):n,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),t.prototype._mirrorAngle=function(e){var n=e*180/Math.PI,r=(360-n)%360;return r*Math.PI/180},t.prototype._getInternalAngle=function(e){return this._clockwise?this._mirrorAngle(e):e},Object.defineProperty(t.prototype,"deltaAngle",{get:function(){var e=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return this.clockwise?T.normalizeAngle(e-n):T.normalizeAngle(n-e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this._clockwise},set:function(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPointAtAngle(this.startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPointAtAngle(this.endAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){var e=this._getInternalAngle(this.startAngle),n=this._clockwise?T.normalizeAngle(e-this.deltaAngle/2):T.normalizeAngle(e+this.deltaAngle/2),r=this._clockwise?this._mirrorAngle(n):n;return this.getPointAtAngle(r)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"closed",{get:function(){var e=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return Math.abs(n-e)/Math.PI%2==0},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e,n,r=[this.startPoint,this.endPoint],s=[0,Math.PI/2,Math.PI,3*Math.PI/2];try{for(var a=Li(s),o=a.next();!o.done;o=a.next()){var c=o.value,l=this._getInternalAngle(c);T.isBetweenAngle(l,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&r.push(this.getPointAtAngle(c))}}catch(d){e={error:d}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}var h=r.map(function(d){return d.x}),u=r.map(function(d){return d.y});return new wt(new L(Math.min.apply(Math,Ci([],Ti(h),!1)),Math.min.apply(Math,Ci([],Ti(u),!1))),new L(Math.max.apply(Math,Ci([],Ti(h),!1)),Math.max.apply(Math,Ci([],Ti(u),!1))))},Object.defineProperty(t.prototype,"length",{get:function(){return Math.abs(this.deltaAngle*this.radius)},enumerable:!1,configurable:!0}),t.prototype.transform=function(e){var n=this,r=e,s=this.center.clone().applyMatrix2d(r),a=this.startPoint.clone().applyMatrix2d(r);if(this.closed)return this.center=s,this.radius=s.distanceTo(a),this._startAngle=Math.atan2(a.y-s.y,a.x-s.x),this._endAngle=this._startAngle,this._clockwise=r.determinant()<0?!this._clockwise:this._clockwise,this._boundingBoxNeedsUpdate=!0,this;var o=this.midPoint.clone().applyMatrix2d(r),c=this.endPoint.clone().applyMatrix2d(r),l=new t(a,o,c),h=r.determinant()<0?!this.clockwise:this.clockwise,u=function(d){var g=T.normalizeAngle(d);return h?n._mirrorAngle(g):g};return this.center=l.center,this.radius=l.radius,this.clockwise=h,this.startAngle=u(Math.atan2(a.y-l.center.y,a.x-l.center.x)),this.endAngle=u(Math.atan2(c.y-l.center.y,c.x-l.center.x)),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)},t.prototype.getPointAtAngle=function(e){var n=this._getInternalAngle(e),r=this.center.x+this.radius*Math.cos(n),s=this.center.y+this.radius*Math.sin(n);return new L(r,s)},t.prototype.getQuadrantPoints=function(){var e,n,r=[],s=this._getInternalAngle(this.startAngle),a=this._getInternalAngle(this.endAngle),o=[0,Math.PI/2,Math.PI,3*Math.PI/2];try{for(var c=Li(o),l=c.next();!l.done;l=c.next()){var h=l.value,u=this._getInternalAngle(h);T.isBetweenAngle(u,s,a,this.clockwise)&&r.push(this.getPointAtAngle(h))}}catch(d){e={error:d}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}return r},t.prototype.nearestPoint=function(e){var n=new L(e.x,e.y),r=n.x-this.center.x,s=n.y-this.center.y,a=Math.hypot(r,s);if(a<1e-12)return this.startPoint.clone();var o=Math.atan2(s,r),c=this.clockwise?this._mirrorAngle(T.normalizeAngle(o)):T.normalizeAngle(o),l=this._getInternalAngle(c),h=this._getInternalAngle(this.startAngle),u=this._getInternalAngle(this.endAngle);if(T.isBetweenAngle(l,h,u,this.clockwise))return this.getPointAtAngle(c);var d=n.distanceToSquared(this.startPoint),g=n.distanceToSquared(this.endPoint);return d<=g?this.startPoint.clone():this.endPoint.clone()},t.prototype.inwardAlignment=function(e,n){var r=n.x-e.x,s=n.y-e.y;if(r*r+s*s<1e-24)return 0;var a=this.radius>0?this.radius:1,o=Math.max(1e-16,1e-12*a*a),c=this.startPoint.distanceToSquared(e)<=o,l=this.endPoint.distanceToSquared(e)<=o;if(!c&&!l)return 0;var h=this.getPoints(8);if(h.length<3)return 0;var u=c&&!l?h[1]:h[h.length-2],d=u.x-e.x,g=u.y-e.y,f=Math.hypot(d,g);return f>1e-18?(r*d+s*g)/f:0},t.prototype.perpendicularPoints=function(e){var n,r,s=new L(e.x,e.y),a=s.x-this.center.x,o=s.y-this.center.y,c=Math.hypot(a,o);if(c<1e-12)return[];var l=a/c,h=o/c,u=[new L(this.center.x+l*this.radius,this.center.y+h*this.radius),new L(this.center.x-l*this.radius,this.center.y-h*this.radius)],d=[],g=this._getInternalAngle(this.startAngle),f=this._getInternalAngle(this.endAngle);try{for(var p=Li(u),m=p.next();!m.done;m=p.next()){var y=m.value,_=Math.atan2(y.y-this.center.y,y.x-this.center.x),v=this.clockwise?this._mirrorAngle(T.normalizeAngle(_)):T.normalizeAngle(_),w=this._getInternalAngle(v);(this.closed||T.isBetweenAngle(w,g,f,this.clockwise))&&d.push(y)}}catch(A){n={error:A}}finally{try{m&&!m.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}return d},t.prototype.tangentPoints=function(e){var n,r,s=[],a=e.x-this.center.x,o=e.y-this.center.y,c=Math.hypot(a,o),l=this.radius;if(c<l)return s;var h=Math.acos(l/c),u=Math.atan2(o,a),d=[u+h,u-h],g=this._getInternalAngle(this.startAngle),f=this._getInternalAngle(this.endAngle);try{for(var p=Li(d),m=p.next();!m.done;m=p.next()){var y=m.value,_=this.clockwise?this._mirrorAngle(T.normalizeAngle(y)):T.normalizeAngle(y),v=this._getInternalAngle(_);(this.closed||T.isBetweenAngle(v,g,f,this.clockwise))&&s.push(this.getPointAtAngle(_))}}catch(w){n={error:w}}finally{try{m&&!m.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}return s},t.prototype.getPoints=function(e){e===void 0&&(e=100);var n=[],r=this.deltaAngle,s=this._getInternalAngle(this.startAngle);if(this.closed&&(r=V,s=0),this.clockwise)for(var a=0;a<=e;a++){var o=s-r*(a/e),c=this._clockwise?this._mirrorAngle(o):o,l=this.getPointAtAngle(c);n.push(new L(l.x,l.y))}else for(var a=0;a<=e;a++){var o=s+r*(a/e),c=this._clockwise?this._mirrorAngle(o):o,l=this.getPointAtAngle(c);n.push(new L(l.x,l.y))}return n},t})(Tn),Xs=function(){return Xs=Object.assign||function(i){for(var t,e=1,n=arguments.length;e<n;e++){t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Xs.apply(this,arguments)},Yg=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Mi=1e-6;function El(i,t){if(cf(i)){var e=zg(i,t);return e?[e]:[]}var n=Ml(i),r=n.numberOfVertices;if(r<2)return[];var s=hf(n,t);return s?[s]:[]}function Xg(i){return Ml(i)}function zg(i,t){var e,n,r=Vg(i);if(r.length===0)return null;var s=[];try{for(var a=Yg(r),o=a.next();!o.done;o=a.next()){var c=o.value,l=Gg(c,t);if(!l)return null;s.push(l)}}catch(g){e={error:g}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}var h=jg(i),u=$g(s,h,i.closed,t);if(u.length<2)return null;var d=new Q;return u.forEach(function(g,f){d.addVertexAt(f,{x:g.x,y:g.y})}),d.closed=i.closed,d}function Vg(i){for(var t,e=[],n=i.numberOfVertices,r=i.closed?n:n-1,s=0;s<r;s++){var a=i.vertices[s],o=i.vertices[(s+1)%n];Y.isPositive(Math.abs((t=a.bulge)!==null&&t!==void 0?t:0))?e.push({kind:"arc",arc:new it(a,o,a.bulge)}):e.push({kind:"line",start:new L(a.x,a.y),end:new L(o.x,o.y)})}return e}function jg(i){for(var t=[],e=0;e<i.numberOfVertices;e++)t.push(i.getPointAt(e));return t}function Gg(i,t){if(i.kind==="line"){var e=Wg(i.start,i.end,t);return e?Xs({kind:"line"},e):null}var n=Ug(i.arc,i.arc.startPoint,i.arc.endPoint,t);return n?{kind:"arc",arc:n}:null}function Ug(i,t,e,n){var r=Hg(i,t,e,n),s=i.radius+r;return Y.isNonPositive(s)?null:new it(i.center,s,i.startAngle,i.endAngle,i.clockwise)}function Hg(i,t,e,n){var r=e.x-t.x,s=e.y-t.y,a=Math.hypot(r,s);if(Y.isNonPositive(a))return i.clockwise?-n:n;var o=-s/a,c=r/a,l=i.center.x-(t.x+e.x)/2,h=i.center.y-(t.y+e.y)/2,u=l*o+h*c>0;return u?-n:n}function Wg(i,t,e){var n=t.x-i.x,r=t.y-i.y,s=Math.hypot(n,r);if(Y.isNonPositive(s))return null;var a=-r/s*e,o=n/s*e;return{start:new L(i.x+a,i.y+o),end:new L(t.x+a,t.y+o),dx:n,dy:r}}function $g(i,t,e,n){var r,s,a,o=i.length;if(o===0)return[];for(var c=qg(i,t,e,n),l=[(s=(r=c[0].nextSegmentStart)===null||r===void 0?void 0:r.clone())!==null&&s!==void 0?s:c[0].point.clone()],h=0;h<o;h++){var u=i[h],d=h===o-1&&!e?{point:tf(u)}:c[(h+1)%o];if(h>0&&c[h].filletPoints&&c[h].filletPoints.forEach(function(y){return l.push(y.clone())}),u.kind==="arc")for(var g=(a=c[h].nextSegmentStart)!==null&&a!==void 0?a:c[h].point,f=d.point,p=Kg(u.arc,g,f,Math.max(16,32)),m=1;m<p.length;m++)l.push(p[m]);else l.push(d.point.clone())}return Ol(l)}function qg(i,t,e,n){for(var r=i.length,s=[],a=0;a<r;a++)a===0?s.push(e?Wo(i[r-1],i[0],t[0],n):{point:Jg(i[0])}):s.push(Wo(i[a-1],i[a],t[a],n));return s}function Kg(i,t,e,n){for(var r=i.nearestPoint(t),s=i.nearestPoint(e),a=zs(i,r),o=zs(i,s),c=Qg(i,a,o),l=[],h=0;h<=n;h++){var u=h/n,d=i.clockwise?a-c*u:a+c*u;l.push(i.getPointAtAngle(Zg(i,d)))}return l}function zs(i,t){return Math.atan2(t.y-i.center.y,t.x-i.center.x)}function Zg(i,t){var e=T.normalizeAngle(t);return i.clockwise?Vs(e):e}function Vs(i){var t=i*180/Math.PI;return(360-t)%360*(Math.PI/180)}function Qg(i,t,e){if(i.clockwise){var n=t-e;return Y.isNonPositive(n)&&(n+=V),n}var r=e-t;return Y.isNonPositive(r)&&(r+=V),r}function Jg(i){return i.kind==="line"?i.start.clone():i.arc.startPoint.clone()}function tf(i){return i.kind==="line"?i.end.clone():i.arc.endPoint.clone()}function Wo(i,t,e,n){return i.kind==="line"&&t.kind==="line"?{point:js({start:i.start,end:i.end,dx:i.dx,dy:i.dy},{start:t.start,end:t.end,dx:t.dx,dy:t.dy})}:i.kind==="line"&&t.kind==="arc"?$o(i,t.arc,e,n,!0):i.kind==="arc"&&t.kind==="line"?$o(t,i.arc,e,n,!1):i.kind==="arc"&&t.kind==="arc"?ef(i.arc,t.arc,e,n):{point:e.clone()}}function ef(i,t,e,n){var r=Cl(i.endPoint,t.startPoint),s=of(i,t),a=s.filter(function(h){return qi(i,h)&&qi(t,h)});if(a.length>0)return{point:Tl(a,r)};var o=i.endPoint.clone(),c=t.startPoint.clone(),l=Ll(e,Math.abs(n),o,c);return{point:o,filletPoints:l,nextSegmentStart:c}}function $o(i,t,e,n,r){var s=Cl(r?i.end:i.start,r?t.startPoint:t.endPoint),a=af(i,t,s);if(rf(i,a)&&qi(t,a))return{point:a};var o=nf(i,e,n),c=r?t.startPoint.clone():t.endPoint.clone(),l=Ll(e,Math.abs(n),r?o:c,r?c:o);return r?{point:o,filletPoints:l,nextSegmentStart:c}:{point:c,filletPoints:l,nextSegmentStart:o}}function nf(i,t,e){var n=Math.hypot(i.dx,i.dy),r=-i.dy/n*e,s=i.dx/n*e;return new L(t.x+r,t.y+s)}function rf(i,t){var e=Math.hypot(i.dx,i.dy);if(Y.isNonPositive(e))return!1;var n=i.dx/e,r=i.dy/e,s=t.x-i.start.x,a=t.y-i.start.y,o=Math.abs(s*r-a*n);return Y.equalToZero(o)}function Ll(i,t,e,n){var r=Math.atan2(e.y-i.y,e.x-i.x),s=Math.atan2(n.y-i.y,n.x-i.x),a=sf(r,s);if(Y.equalToZero(Math.abs(a)))return[];for(var o=[],c=Math.max(2,Math.ceil(Math.abs(a)/Math.PI*16)),l=1;l<c;l++){var h=l/c,u=r+a*h;o.push(new L(i.x+t*Math.cos(u),i.y+t*Math.sin(u)))}return o}function sf(i,t){for(var e=t-i;e>Math.PI;)e-=V;for(;e<=-Math.PI;)e+=V;return e}function af(i,t,e){var n=Math.hypot(i.dx,i.dy);if(Y.isNonPositive(n))return e.clone();var r=i.dx/n,s=i.dy/n,a=i.start.x-t.center.x,o=i.start.y-t.center.y,c=2*(a*r+o*s),l=a*a+o*o-t.radius*t.radius,h=c*c-4*l;if(h<0)return e.clone();var u=Math.sqrt(h),d=[(-c-u)/2,(-c+u)/2].map(function(f){return new L(i.start.x+r*f,i.start.y+s*f)}),g=d.filter(function(f){return qi(t,f)});return Tl(g.length>0?g:d,e)}function qi(i,t){var e=Math.abs(Math.hypot(t.x-i.center.x,t.y-i.center.y)-i.radius);if(Y.isPositive(e))return!1;var n=zs(i,t),r=i.clockwise?Vs(T.normalizeAngle(i.startAngle)):T.normalizeAngle(i.startAngle),s=i.clockwise?Vs(T.normalizeAngle(i.endAngle)):T.normalizeAngle(i.endAngle);return T.isBetweenAngle(n,r,s,i.clockwise)}function of(i,t){var e=t.center.x-i.center.x,n=t.center.y-i.center.y,r=Math.hypot(e,n);if(Y.isNonPositive(r))return[];var s=i.radius+t.radius,a=Math.abs(i.radius-t.radius);if(r>s+Mi)return[];if(r<a-Mi)return[];var o=(i.radius*i.radius-t.radius*t.radius+r*r)/(2*r),c=i.radius*i.radius-o*o;if(c<-Mi)return[];var l=i.center.x+o*e/r,h=i.center.y+o*n/r;if(c<=Mi)return[new L(l,h)];var u=Math.sqrt(c),d=-n*u/r,g=e*u/r;return[new L(l+d,h+g),new L(l-d,h-g)]}function Tl(i,t){for(var e=i[0],n=e.distanceToSquared(t),r=1;r<i.length;r++){var s=i[r].distanceToSquared(t);s<n&&(e=i[r],n=s)}return e.clone()}function Cl(i,t){return new L((i.x+t.x)/2,(i.y+t.y)/2)}function cf(i){for(var t,e=i.numberOfVertices,n=i.closed?e:e-1,r=0;r<n;r++){var s=i.vertices[r];if(Y.isPositive(Math.abs((t=s.bulge)!==null&&t!==void 0?t:0)))return!0}return!1}function Ml(i){var t=lf(i.vertices.map(function(e){return new L(e.x,e.y)}),i.closed);return t.length===i.numberOfVertices?i:new Q(t.map(function(e){return{x:e.x,y:e.y}}),i.closed)}function lf(i,t){var e=Ol(i);if(!t||e.length<2)return e;var n=e[0],r=e[e.length-1];return Y.isNonPositive(Math.hypot(n.x-r.x,n.y-r.y))&&e.pop(),e}function Ol(i){var t=[];return i.forEach(function(e){var n=t[t.length-1];(!n||Y.isPositive(Math.hypot(n.x-e.x,n.y-e.y)))&&t.push(new L(e.x,e.y))}),t}function hf(i,t){for(var e=[],n=0;n<i.numberOfVertices;n++)e.push(i.getPointAt(n));var r=uf(e,i.closed,t);if(r.length===0)return null;var s=[];if(i.closed){if(r.length<2)return null;for(var a=r.length,n=0;n<a;n++){var o=r[(n-1+a)%a],c=r[n];s.push(js(o,c))}}else{s.push(r[0].start);for(var n=1;n<r.length;n++)s.push(js(r[n-1],r[n]));s.push(r[r.length-1].end)}var l=new Q;return s.forEach(function(h,u){l.addVertexAt(u,{x:h.x,y:h.y})}),l.closed=i.closed,l}function uf(i,t,e){for(var n=[],r=t?i.length:i.length-1,s=0;s<r;s++){var a=i[s],o=i[t?(s+1)%i.length:s+1],c=o.x-a.x,l=o.y-a.y,h=Math.hypot(c,l);if(!Y.isNonPositive(h)){var u=-l/h*e,d=c/h*e;n.push({start:new L(a.x+u,a.y+d),end:new L(o.x+u,o.y+d),dx:c,dy:l})}}return n}function js(i,t){var e=i.dx*t.dy-i.dy*t.dx;if(Y.equalToZero(e))return new L((i.end.x+t.start.x)/2,(i.end.y+t.start.y)/2);var n=t.start.x-i.start.x,r=t.start.y-i.start.y,s=(n*t.dy-r*t.dx)/e;return new L(i.start.x+s*i.dx,i.start.y+s*i.dy)}var df=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Gs=function(){return Gs=Object.assign||function(i){for(var t,e=1,n=arguments.length;e<n;e++){t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Gs.apply(this,arguments)},Q=(function(i){df(t,i);function t(e,n){e===void 0&&(e=null),n===void 0&&(n=!1);var r=i.call(this)||this;return r._vertices=e||new Array,r._closed=n,r}return Object.defineProperty(t.prototype,"vertices",{get:function(){return this._vertices},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"numberOfVertices",{get:function(){return this._vertices.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"closed",{get:function(){return this._closed},set:function(e){this._closed=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){if(this.numberOfVertices>0){var e=this._vertices[0];return new L(e.x,e.y)}throw new Error("Start point does not exist in an empty polyline.")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){var e=this.numberOfVertices;if(e>0)if(this.closed){var n=this._vertices[0];return new L(n.x,n.y)}else{var n=this._vertices[e-1];return new L(n.x,n.y)}throw new Error("End point does not exist in an empty polyline.")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){for(var e=0,n=this._vertices.length,r=0;r<n;++r){var s=this._vertices[r],a=null;if(r<n-1?a=this._vertices[r+1]:r==n-1&&this.closed&&(a=this._vertices[0]),a)if(s.bulge){var o=new it(s,a,s.bulge);e+=o.length}else e+=new L(s.x,s.y).distanceTo(a)}return e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){if(!this._closed||this._vertices.length<3)return 0;var e=this.getPoints(128);return Sg(e)},enumerable:!1,configurable:!0}),t.prototype.addVertexAt=function(e,n){e<=0?this._vertices.unshift(n):this._vertices.splice(e,0,n),this._boundingBoxNeedsUpdate=!0},t.prototype.removeVertexAt=function(e){if(e<0||e>=this._vertices.length)throw new Error("Index ".concat(e," is out of bounds. Valid range is 0 to ").concat(this._vertices.length-1,"."));this._vertices.splice(e,1),this._boundingBoxNeedsUpdate=!0},t.prototype.reset=function(e,n){e?n!==void 0&&n>=0&&n<this._vertices.length&&(this._vertices=this._vertices.slice(0,n),this._boundingBoxNeedsUpdate=!0):(this._vertices=new Array,this._boundingBoxNeedsUpdate=!0)},t.prototype.getPointAt=function(e){var n=this._vertices[e];return new L(n.x,n.y)},t.prototype.calculateBoundingBox=function(){var e=this.getPoints(100);return new wt().setFromPoints(e)},t.prototype.transform=function(e){var n=e.determinant()<0;return this._vertices.forEach(function(r){var s=new L(r).applyMatrix2d(e);r.x=s.x,r.y=s.y,n&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._vertices.map(function(e){return Gs({},e)}),this._closed)},t.prototype.getPoints3d=function(e,n){var r=[],s=this.getPoints(e);return s.forEach(function(a){return r.push(new b().set(a.x,a.y,n))}),r},t.prototype.getPoints=function(e){for(var n=[],r=this._vertices.length,s=0;s<r;++s){var a=this._vertices[s];if(a.bulge){var o=null;if(s<r-1?o=this._vertices[s+1]:s==r-1&&this.closed&&(o=this._vertices[0]),o)for(var c=new it(a,o,a.bulge),l=c.getPoints(e),h=l.length,u=0;u<h;++u){var d=l[u];n.push(new L(d.x,d.y))}}else n.push(new L(a.x,a.y)),s==r-1&&this.closed&&n.push(n[0])}return n},t.prototype.offset=function(e){return El(this,e)},t})(Tn);function Nl(i,t,e){var n=Math.hypot(t.x,t.y);if(Y.isNonPositive(n))return null;var r=-t.y/n*e,s=t.x/n*e;return new b(i.x+r,i.y+s,i.z)}function gf(i,t,e){var n;if(i.length<2)return null;var r=Xg(new Q(i.map(function(a){return{x:a.x,y:a.y}}),t)),s=El(r,e);return(n=s[0])!==null&&n!==void 0?n:null}var Ki=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},fn=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))};function ff(i,t,e,n){if(i.length<2||Y.equalToZero(e))return null;var r=Rl(i,n),s=r.points,a=r.tangents;if(s.length<2)return null;var o=a??pf(s,t),c=mf(s,o,e),l=t?bf(c):yf(c);if(l.length<2)return null;var h=new Q;return l.forEach(function(u,d){h.addVertexAt(d,{x:u.x,y:u.y})}),h.closed=t,h}function pf(i,t){for(var e=i.length,n=new Array(e),r=0;r<e;r++){var s=0,a=0;if(t){var o=i[(r-1+e)%e],c=i[(r+1)%e];s=c.x-o.x,a=c.y-o.y}else r===0?(s=i[1].x-i[0].x,a=i[1].y-i[0].y):r===e-1?(s=i[e-1].x-i[e-2].x,a=i[e-1].y-i[e-2].y):(s=i[r+1].x-i[r-1].x,a=i[r+1].y-i[r-1].y);var l=Math.hypot(s,a);Y.isNonPositive(l)?n[r]=new L(1,0):n[r]=new L(s/l,a/l)}return n}function mf(i,t,e){return i.map(function(n,r){var s=t[r],a=-s.y*e,o=s.x*e;return new L(n.x+a,n.y+o)})}function yf(i){var t=Zi(i);if(t.length<3)return t;for(;;){var e=Bl(t,!1);if(!e||(t=Zi(fn(fn(fn([],Ki(t.slice(0,e.segmentA+1)),!1),[e.point],!1),Ki(t.slice(e.segmentB+1)),!1)),t.length<2))break}return t}function bf(i){var t=Zi(i);if(t.length<4)return t;for(;;){var e=Bl(t,!0);if(!e||(t=Zi(fn(fn(fn([],Ki(t.slice(0,e.segmentA+1)),!1),[e.point],!1),Ki(t.slice(e.segmentB+1)),!1)),t.length<3))break}return t}function Bl(i,t){var e=t?i.length:i.length-1;if(e<2)return null;for(var n=0;n<e;n++)for(var r=i[n],s=i[(n+1)%i.length],a=n+1;a<e;a++)if(!_f(n,a,e,t)){var o=i[a],c=i[(a+1)%i.length],l=xf(r,s,o,c);if(l)return{point:l,segmentA:n,segmentB:a}}return null}function _f(i,t,e,n){return!!(t===i||t===i+1||n&&i===0&&t===e-1)}function xf(i,t,e,n){var r=t.x-i.x,s=t.y-i.y,a=n.x-e.x,o=n.y-e.y,c=r*o-s*a;if(Y.equalToZero(c))return null;var l=e.x-i.x,h=e.y-i.y,u=(l*o-h*a)/c,d=(l*s-h*r)/c,g=yi.equalPointTol;return u<-g||u>1+g||d<-g||d>1+g?null:new L(i.x+u*r,i.y+u*s)}function Rl(i,t){var e=[],n=[],r=t!=null&&t.length===i.length;return i.forEach(function(s,a){var o=e[e.length-1];if((!o||Y.isPositive(Math.hypot(o.x-s.x,o.y-s.y)))&&(e.push(new L(s.x,s.y)),r)){var c=t[a];n.push(new L(c.x,c.y))}}),{points:e,tangents:r?n:void 0}}function Zi(i){return Rl(i).points}var wf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Kt=(function(i){wf(t,i);function t(){var e=i.call(this)||this;return e._loops=[],e}return t.prototype.add=function(e){this._loops.push(e),this._boundingBoxNeedsUpdate=!0},Object.defineProperty(t.prototype,"loops",{get:function(){return this._loops},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"outter",{get:function(){if(this._loops.length>0)return this._loops[0]},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e=this.outter;return e?e.box:new wt},t.prototype.transform=function(e){return this._loops.forEach(function(n){n.transform(e)}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){var e=new t;return this._loops.forEach(function(n){e.add(n.clone())}),e},t.prototype.getPoints=function(e){for(var n=[],r=0;r<this.loops.length;++r){var s=this.loops[r],a=s.getPoints(e);n.push(a)}return n},t.prototype.buildHierarchy=function(){for(var e,n=this.getPoints(100),r=this.calculateBoundaryBoxes(n),s=this.sortBoundaryBoxesByAreas(r),a=new Map,o=s.length,c=0;c<o;c++)a.set(s[c],{index:s[c],children:[]});for(var l={index:-1,children:[]},c=0;c<o;c++){for(var h=s[c],u=n[h],d=r[h],g=c+1;g<o;g++){var f=s[g],p=n[f],m=r[f];if(m.containsBox(d)&&Pt.isPointInPolygon(u[T.randInt(0,u.length-1)],p)){(e=a.get(f))===null||e===void 0||e.children.push(a.get(h));break}}g===o&&l.children.push(a.get(h))}return l},Object.defineProperty(t.prototype,"area",{get:function(){if(this._loops.length===0)return 0;for(var e=0,n=0;n<this._loops.length;n++){var r=this._loops[n],s=r.getPoints(128),a=xl(s);n===0?e+=Math.abs(a):e-=Math.abs(a)}return e},enumerable:!1,configurable:!0}),t.prototype.calculateBoundaryBoxes=function(e){var n=[];return e.forEach(function(r){n.push(new wt().setFromPoints(r))}),n},t.prototype.sortBoundaryBoxesByAreas=function(e){var n=[];e.forEach(function(s,a){var o=s.size,c=o.width*o.height;n.push({area:c,index:a})}),n.sort(function(s,a){return s.area-a.area});var r=[];return n.forEach(function(s){r.push(s.index)}),r},t})(Pa),vf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Af=(function(i){vf(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.translate=function(e){return this.transform(new F().makeTranslation(e.x,e.y,e.z))},Object.defineProperty(t.prototype,"box",{get:function(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box},enumerable:!1,configurable:!0}),t})(Il),kf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),_i=(function(i){kf(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t})(Af),Pf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),fs=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},St=(function(i){Pf(t,i);function t(e,n,r,s,a,o){o===void 0&&(o=x.X_AXIS);var c=i.call(this)||this;return c.center=e,c.radius=n,c.startAngle=r,c.endAngle=s,c.normal=a,c.refVec=o,(s-r)%V==0?(c.startAngle=0,c.endAngle=V):(c.startAngle=r,c.endAngle=s),c}return t.computeCenterPoint=function(e,n,r){var s,a;return(a=(s=Uo(e,r,n))===null||s===void 0?void 0:s.center)!==null&&a!==void 0?a:null},t.tryCreateByThreePoints=function(e,n,r){var s,a,o,c=Uo(e,r,n);if(!c)return null;var l=c.center,h=c.radius,u=new x(e.x-l.x,e.y-l.y,((s=e.z)!==null&&s!==void 0?s:0)-l.z),d=new x(r.x-l.x,r.y-l.y,((a=r.z)!==null&&a!==void 0?a:0)-l.z),g=new x(n.x-l.x,n.y-l.y,((o=n.z)!==null&&o!==void 0?o:0)-l.z);if(u.lengthSq()===0||g.lengthSq()===0)return null;var f=new x().crossVectors(u,g);if(f.lengthSq()===0&&(f.crossVectors(u,d),f.lengthSq()===0))return null;f.normalize();var p=u.clone().normalize(),m=new x().crossVectors(f,p),y=function(v){return T.normalizeAngle(Math.atan2(v.dot(m),v.dot(p)))};T.isAngleOnCcwSweep(0,y(d),y(g))||(f.negate(),m.negate());var _=y(g);return Y.equalToZero(_)&&(_=V),new t(l,h,0,_,f,p)},t.createByThreePoints=function(e,n,r){return t.tryCreateByThreePoints(e,n,r)},Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new b(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"radius",{get:function(){return this._radius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._radius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._startAngle},set:function(e){this._startAngle=T.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._endAngle},set:function(e){this._endAngle=this.startAngle==0&&e==V?e:T.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"deltaAngle",{get:function(){return T.normalizeAngle(this.endAngle-this.startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isLargeArc",{get:function(){return Math.abs(this.deltaAngle)>Math.PI?1:0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this.deltaAngle<=0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"normal",{get:function(){return this._normal},set:function(e){this._normal=new x(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"refVec",{get:function(){return this._refVec},set:function(e){this._refVec=new x(e.x,e.y,e.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPointAtAngle(this._startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPointAtAngle(this._endAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){var e=this.startAngle,n=this.deltaAngle;this.closed&&(e=0,n=V);var r=e+n*.5;return this.getPointAtAngle(r)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){return this.closed?Math.PI*this.radius*this.radius:0},enumerable:!1,configurable:!0}),t.prototype.nearestPoint=function(e){var n=new x(e.x,e.y,e.z||0),r=this.center,s=this.normal,a=n.clone().sub(r),o=a.dot(s),c=n.clone().sub(s.clone().multiplyScalar(o)),l=c.clone().sub(r);if(l.lengthSq()===0)return this.startPoint.clone();l.normalize().multiplyScalar(this.radius);var h=r.clone().add(l),u=this.getAngle(h.clone()),d=this.startAngle,g=this.deltaAngle,f=T.normalizeAngle(u-d);f<0&&(f=0),f>g&&(f=g);var p=this.getPointAtAngle(d+f),m=p.distanceTo(n),y=this.startPoint.distanceTo(n),_=this.endPoint.distanceTo(n);return y<m&&y<=_?this.startPoint.clone():_<m&&_<y?this.endPoint.clone():p},t.prototype.tangentPoints=function(e){var n,r,s=[],a=new x(e.x,e.y,e.z||0),o=this.center,c=this.normal,l=this.radius,h=a.clone().sub(o),u=h.dot(c),d=a.clone().sub(c.clone().multiplyScalar(u)),g=o.clone(),f=d.clone().sub(g),p=f.length();if(p<l)return s;var m=Math.acos(l/p),y=this.getAngle(d.clone()),_=[y+m,y-m];try{for(var v=fs(_),w=v.next();!w.done;w=v.next()){var A=w.value,I=T.normalizeAngle(A-this.startAngle);I>=0&&I<=this.deltaAngle&&s.push(this.getPointAtAngle(this.startAngle+I))}}catch(S){n={error:S}}finally{try{w&&!w.done&&(r=v.return)&&r.call(v)}finally{if(n)throw n.error}}return s},t.prototype.perpendicularPoints=function(e){var n,r,s=[],a=new x(e.x,e.y,e.z||0),o=this.center,c=this.normal,l=this.radius,h=a.clone().sub(o),u=h.dot(c),d=a.clone().sub(c.clone().multiplyScalar(u)),g=d.clone().sub(o);if(g.lengthSq()<1e-24)return s;g.normalize();var f=[o.clone().add(g.clone().multiplyScalar(l)),o.clone().sub(g.clone().multiplyScalar(l))];try{for(var p=fs(f),m=p.next();!m.done;m=p.next()){var y=m.value,_=this.getAngle(y.clone()),v=T.normalizeAngle(_-this.startAngle);v>=0&&v<=this.deltaAngle&&s.push(new b(y.x,y.y,y.z||0))}}catch(w){n={error:w}}finally{try{m&&!m.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}return s},t.prototype.nearestTangentPoint=function(e){var n=this.tangentPoints(e);if(n.length===0)return null;var r=new b(e.x,e.y,e.z||0);return n.length===1||n[0].distanceTo(r)<n[1].distanceTo(r)?n[0]:n[1]},t.prototype.calculateBoundingBox=function(){for(var e,n,r=[this.startAngle,this.endAngle],s=0;s<2*Math.PI;s+=Math.PI/2)T.isBetweenAngle(s,this.startAngle,this.endAngle)&&r.push(s);var a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0;try{for(var d=fs(r),g=d.next();!g.done;g=d.next()){var f=g.value,p=this.getPointAtAngle(f);p.x<a&&(a=p.x),p.y<o&&(o=p.y),p.z<c&&(c=p.z),p.x>l&&(l=p.x),p.y>h&&(h=p.y),p.z>u&&(u=p.z)}}catch(m){e={error:m}}finally{try{g&&!g.done&&(n=d.return)&&n.call(d)}finally{if(e)throw e.error}}return new z({x:a,y:o,z:c},{x:l,y:h,z:u})},Object.defineProperty(t.prototype,"closed",{get:function(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(e){var n=[],r=this.deltaAngle,s=this.startAngle;this.closed&&(r=V,s=0);for(var a=0;a<=e;a++){var o=s+r*(a/e),c=this.getPointAtAngle(o);n.push(c)}return n},t.prototype.transform=function(e){var n=this.center.clone().applyMatrix4(e),r=this.startPoint.clone().applyMatrix4(e),s=this.endPoint.clone().applyMatrix4(e),a=this.getPointAtAngle(this.closed?Math.PI/2:this.startAngle+this.deltaAngle/2).clone().applyMatrix4(e),o=new x(r).sub(n).normalize(),c=n.distanceTo(r),l=new x().crossVectors(new x(r).sub(n),new x(a).sub(n)).normalize();l.lengthSq()===0&&(l=this.normal.clone().transformDirection(e));var h=function(u){var d=new x(u).sub(n);return Math.atan2(d.dot(qo.crossVectors(l,o)),d.dot(o))};return this.center=n,this.radius=c,this.normal=l,this.refVec=o,this.startAngle=0,this.endAngle=this.closed?V:h(s),this._boundingBoxNeedsUpdate=!0,this},t.prototype.copy=function(e){return this.center=e.center,this.radius=e.radius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.normal=e.normal,this.refVec=e.refVec,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)},t.prototype.getAngle=function(e){return e.sub(this.center),Math.atan2(e.dot(qo.crossVectors(this.refVec,this.normal)),e.dot(this.refVec))},t.prototype.getPointAtAngle=function(e){var n=this.normal,r=this.refVec,s={x:n.y*r.z-n.z*r.y,y:n.z*r.x-n.x*r.z,z:n.x*r.y-n.y*r.x},a=this.center,o=this.radius;return new b(a.x+o*(r.x*Math.cos(e)+s.x*Math.sin(e)),a.y+o*(r.y*Math.cos(e)+s.y*Math.sin(e)),a.z+o*(r.z*Math.cos(e)+s.z*Math.sin(e)))},Object.defineProperty(t.prototype,"plane",{get:function(){var e=new x(this.center).distanceTo(wa);return new Wr(this.normal,e)},enumerable:!1,configurable:!0}),t.prototype.offset=function(e){var n=this.radius+e;return n<=0?null:new t(this.center,n,this.startAngle,this.endAngle,this.normal,this.refVec)},t})(_i),qo=new x,Sf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),pe=(function(i){Sf(t,i);function t(e,n,r,s,a,o,c){s===void 0&&(s=0),a===void 0&&(a=V),o===void 0&&(o=!1),c===void 0&&(c=0);var l=i.call(this)||this;return l.center=e,l.majorAxisRadius=n,l.minorAxisRadius=r,(a-s)%V==0?(l.startAngle=0,l.endAngle=V):(l.startAngle=s,l.endAngle=a),l.clockwise=o,l.rotation=c,l}return Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new b(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"majorAxisRadius",{get:function(){return this._majorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minorAxisRadius",{get:function(){return this._minorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._startAngle},set:function(e){this._startAngle=T.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._endAngle},set:function(e){this._endAngle=this.startAngle==0&&e==V?e:T.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this._clockwise},set:function(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rotation",{get:function(){return this._rotation},set:function(e){this._rotation=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"deltaAngle",{get:function(){return T.normalizeAngle(this.endAngle-this.startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isLargeArc",{get:function(){return Math.abs(this.deltaAngle)>Math.PI?1:0},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){for(var e=100,n=1/0,r=1/0,s=-1/0,a=-1/0,o=0;o<=e;o++){var c=this.getPoint(o/e);n=Math.min(n,c.x),r=Math.min(r,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}return new wt({x:n,y:r},{x:s,y:a})},Object.defineProperty(t.prototype,"closed",{get:function(){return this.deltaAngle==0},enumerable:!1,configurable:!0}),t.prototype.getPoint=function(e){for(var n=Math.PI*2,r=this.endAngle-this.startAngle,s=Math.abs(r)<Number.EPSILON;r<0;)r+=n;for(;r>n;)r-=n;r<Number.EPSILON&&(s?r=0:r=n),this.clockwise===!0&&!s&&(r===n?r=-n:r=r-n);var a=this.startAngle+e*r,o=this.center.x+this.majorAxisRadius*Math.cos(a),c=this.center.y+this.minorAxisRadius*Math.sin(a);if(this.rotation!==0){var l=Math.cos(this.rotation),h=Math.sin(this.rotation),u=o-this.center.x,d=c-this.center.y;o=u*l-d*h+this.center.x,c=u*h+d*l+this.center.y}return new L(o,c)},t.prototype.transform=function(e){var n=e,r=new L(this.center).applyMatrix2d(n),s=new b(r.x,r.y,this.center.z),a=this.getPointAtAngle(0).clone().applyMatrix2d(n),o=this.getPointAtAngle(Math.PI/2).clone().applyMatrix2d(n),c=new L(a).sub(r),l=new L(o).sub(r),h=c.length(),u=l.length(),d=Math.atan2(c.y,c.x),g=c.clone().normalize(),f=l.clone().normalize(),p=function(_){var v=new L(_).sub(r),w=v.dot(g),A=v.dot(f);return T.normalizeAngle(Math.atan2(A/u,w/h))},m=n.determinant()<0?!this.clockwise:this.clockwise,y=this.closed?new t(s,h,u,0,V,m,d):new t(s,h,u,p(this.startPoint.clone().applyMatrix2d(n)),p(this.endPoint.clone().applyMatrix2d(n)),m,d);return this.center=y.center,this.majorAxisRadius=y.majorAxisRadius,this.minorAxisRadius=y.minorAxisRadius,this._startAngle=y._startAngle,this._endAngle=y._endAngle,this._clockwise=y._clockwise,this.rotation=y.rotation,this._boundingBoxNeedsUpdate=!0,this},t.prototype.getPointAtAngle=function(e){return this.getPoint(this.closed?e/V:T.normalizeAngle(e-this.startAngle)/this.deltaAngle)},t.prototype.copy=function(e){return this.center=e.center,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.clockwise=e.clockwise,this.rotation=e.rotation,this},t.prototype.clone=function(){return new t(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)},t.prototype.getFocusPoints=function(){var e=Math.max(this.majorAxisRadius,this.minorAxisRadius),n=Math.min(this.majorAxisRadius,this.minorAxisRadius);if(e-n<1e-9)return[];var r=Math.sqrt(e*e-n*n),s=Math.cos(this.rotation),a=Math.sin(this.rotation),o=this.majorAxisRadius>=this.minorAxisRadius,c=o?s:-a,l=o?a:s;return[new L(this.center.x-r*c,this.center.y-r*l),new L(this.center.x+r*c,this.center.y+r*l)]},t.prototype.getQuadrantPoints=function(){return this.closed?[this.getPoint(0),this.getPoint(.25),this.getPoint(.5),this.getPoint(.75)]:[]},t.prototype.nearestPoint=function(e){for(var n=new L(e.x,e.y),r=this.getPoint(0),s=n.distanceToSquared(r),a=72,o=1;o<=a;o++){var c=this.getPoint(o/a),l=n.distanceToSquared(c);l<s&&(s=l,r=c)}return r},t.prototype.tangentPoints=function(e){var n=this,r=this._projectPointToLocal(e),s=this._findSnapAngles(r,function(a,o,c,l){var h=-n.majorAxisRadius*l,u=n.minorAxisRadius*c;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype.perpendicularPoints=function(e){var n=this,r=this._projectPointToLocal(e),s=this._findSnapAngles(r,function(a,o,c,l){var h=n.minorAxisRadius*c,u=n.majorAxisRadius*l;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype._projectPointToLocal=function(e){var n=e.x-this.center.x,r=e.y-this.center.y,s=Math.cos(-this.rotation),a=Math.sin(-this.rotation);return{x:n*s-r*a,y:n*a+r*s}},t.prototype._findSnapAngles=function(e,n,r){r===void 0&&(r=144);for(var s=this.majorAxisRadius,a=this.minorAxisRadius,o=this.startAngle,c=this.deltaAngle,l=[],h=function(w){var A=Math.cos(w),I=Math.sin(w);return n(s*A,a*I,A,I)},u=o,d=h(u),g=1;g<=r;g++){var f=o+c*g/r,p=h(f);if(Math.abs(d)<1e-10&&l.push(u),d*p<0){for(var m=u,y=f,_=0;_<32;_++){var v=(m+y)/2;h(m)*h(v)<=0?y=v:m=v}l.push((m+y)/2)}u=f,d=p}return l},t})(Tn),If=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Ef=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},he=(function(i){If(t,i);function t(e,n,r,s,a,o,c){o===void 0&&(o=0),c===void 0&&(c=V);var l=i.call(this)||this;l.center=e,l.normal=n,l.majorAxis=r,l.majorAxisRadius=s,l.minorAxisRadius=a;var h=Math.abs(c-o);return Math.abs(h-V)<1e-10||Math.abs(h-2*V)<1e-10?(l.startAngle=0,l.endAngle=V):(l.startAngle=o,l.endAngle=c),l}return Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new b(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"majorAxisRadius",{get:function(){return this._majorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minorAxisRadius",{get:function(){return this._minorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._startAngle},set:function(e){this._startAngle=T.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._endAngle},set:function(e){this._endAngle=this.startAngle==0&&e==V?e:T.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"deltaAngle",{get:function(){var e=this.endAngle-this.startAngle;return Math.abs(e-V)<1e-10?V:T.normalizeAngle(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isLargeArc",{get:function(){return Math.abs(this.deltaAngle)>Math.PI?1:0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this.deltaAngle<=0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"normal",{get:function(){return this._normal},set:function(e){this._normal=new x(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"majorAxis",{get:function(){return this._majorAxis},set:function(e){this._majorAxis=new x(e.x,e.y,e.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minorAxis",{get:function(){return new x().crossVectors(this.normal,this.majorAxis).normalize()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPointAtAngle(this._startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPointAtAngle(this._endAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){var e=this.startAngle,n=this.deltaAngle;(this.closed||Math.abs(n-V)<1e-10)&&(e=0,n=V);var r=e+n/2;return this.getPointAtAngle(r)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isCircular",{get:function(){return Y.equal(this.majorAxisRadius,this.minorAxisRadius)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);for(var e=1e3,n=this.deltaAngle/e,r=0,s=this.getPointAtAngle(this.startAngle),a=1;a<=e;a++){var o=this.startAngle+a*n,c=this.getPointAtAngle(o),l=c.x-s.x,h=c.y-s.y,u=c.z-s.z;r+=Math.sqrt(l*l+h*h+u*u),s=c}return r},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){return Math.abs(this.deltaAngle-V)>=1e-10?0:Math.PI*this.majorAxisRadius*this.minorAxisRadius},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e,n;if(this.majorAxis.equals(x.X_AXIS)||this.majorAxis.equals(x.Y_AXIS)||this.majorAxis.isParallelTo(x.X_AXIS)||this.majorAxis.isParallelTo(x.Y_AXIS)){for(var r=[this.startAngle,this.endAngle],s=0;s<2*Math.PI;s+=Math.PI/2)T.isBetweenAngle(s,this.startAngle,this.endAngle)&&r.push(s);var a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0;try{for(var d=Ef(r),g=d.next();!g.done;g=d.next()){var f=g.value,p=this.getPointAtAngle(f);p.x<a&&(a=p.x),p.y<o&&(o=p.y),p.z<c&&(c=p.z),p.x>l&&(l=p.x),p.y>h&&(h=p.y),p.z>u&&(u=p.z)}}catch(y){e={error:y}}finally{try{g&&!g.done&&(n=d.return)&&n.call(d)}finally{if(e)throw e.error}}return new z({x:a,y:o,z:c},{x:l,y:h,z:u})}else{for(var m=100,a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0,s=0;s<=m;s++){var f=this.startAngle+this.deltaAngle*(s/m),p=this.getPointAtAngle(f);a=Math.min(a,p.x),o=Math.min(o,p.y),c=Math.min(c,p.z),l=Math.max(l,p.x),h=Math.max(h,p.y),u=Math.max(u,p.z)}return new z({x:a,y:o,z:c},{x:l,y:h,z:u})}},Object.defineProperty(t.prototype,"closed",{get:function(){return this.deltaAngle==0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(e){e===void 0&&(e=100);var n=[],r=this.deltaAngle,s=this.startAngle;this.closed&&(r=V,s=0);for(var a=0;a<=e;a++){var o=s+r*(a/e),c=this.getPointAtAngle(o);n.push(c)}return n},t.prototype.getPointAtAngle=function(e){var n=Math.cos(e),r=Math.sin(e),s=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(r),a=this.majorAxis.clone().multiplyScalar(n*this.majorAxisRadius).add(s);return new b(this.center.x+a.x,this.center.y+a.y,this.center.z+a.z)},t.prototype.nearestPoint=function(e,n){n===void 0&&(n=72);for(var r=new b(e.x,e.y,e.z||0),s=this.getPointAtAngle(this.startAngle),a=r.distanceToSquared(s),o=1;o<=n;o++){var c=this.startAngle+this.deltaAngle*o/n,l=this.getPointAtAngle(c),h=r.distanceToSquared(l);h<a&&(a=h,s=l)}var u=r.distanceToSquared(this.startPoint),d=r.distanceToSquared(this.endPoint);return u<a&&u<=d?this.startPoint.clone():d<a&&d<u?this.endPoint.clone():s.clone()},t.prototype.tangentPoints=function(e){var n=this,r=this._projectPointToLocalPlane(e),s=this._findSnapParameterAngles(function(a,o,c,l){var h=-n.majorAxisRadius*l,u=n.minorAxisRadius*c;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype.perpendicularPoints=function(e){var n=this,r=this._projectPointToLocalPlane(e),s=this._findSnapParameterAngles(function(a,o,c,l){var h=n.minorAxisRadius*c,u=n.majorAxisRadius*l;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype._projectPointToLocalPlane=function(e){var n=new b(e.x,e.y,e.z||0),r=new x(n).sub(this.center),s=r.dot(this.normal);return r.sub(this.normal.clone().multiplyScalar(s)),{x:r.dot(this.majorAxis),y:r.dot(this.minorAxis)}},t.prototype._findSnapParameterAngles=function(e,n){n===void 0&&(n=144);for(var r=this.majorAxisRadius,s=this.minorAxisRadius,a=this.startAngle,o=this.deltaAngle,c=[],l=function(v){var w=Math.cos(v),A=Math.sin(v);return e(r*w,s*A,w,A)},h=a,u=l(h),d=1;d<=n;d++){var g=a+o*d/n,f=l(g);if(Math.abs(u)<1e-10&&c.push(h),u*f<0){for(var p=h,m=g,y=0;y<32;y++){var _=(p+m)/2;l(p)*l(_)<=0?m=_:p=_}c.push((p+m)/2)}h=g,u=f}return c},t.prototype.contains=function(e){var n=new x(e).sub(this.center),r=n.dot(this.majorAxis),s=n.dot(this.minorAxis),a=r/this.majorAxisRadius,o=s/this.minorAxisRadius;return a*a+o*o<=1},t.prototype.transform=function(e){var n=e,r=this.center.clone().applyMatrix4(n),s=this.getPointAtAngle(0).clone().applyMatrix4(n),a=this.getPointAtAngle(Math.PI/2).clone().applyMatrix4(n),o=new x(s).sub(r),c=new x(a).sub(r),l=o.length(),h=c.length(),u=o.clone().normalize(),d=new x().crossVectors(o,c).normalize(),g=new x().crossVectors(d,u).normalize();g.dot(c)<0&&(d.negate(),g=new x().crossVectors(d,u).normalize());var f=function(m){var y=new x(m).sub(r),_=y.dot(u),v=y.dot(g);return T.normalizeAngle(Math.atan2(v/h,_/l))},p=this.closed?new t(r,d,u,l,h,0,V):new t(r,d,u,l,h,f(this.startPoint.clone().applyMatrix4(n)),f(this.endPoint.clone().applyMatrix4(n)));return this.center=p.center,this.normal=p.normal,this.majorAxis=p.majorAxis,this.majorAxisRadius=p.majorAxisRadius,this.minorAxisRadius=p.minorAxisRadius,this._startAngle=p._startAngle,this._endAngle=p._endAngle,this._boundingBoxNeedsUpdate=!0,this},t.prototype.copy=function(e){return this.center=e.center,this.normal=e.normal,this.majorAxis=e.majorAxis,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)},Object.defineProperty(t.prototype,"plane",{get:function(){var e=new x(this.center).distanceTo(wa);return new Wr(this.normal,e)},enumerable:!1,configurable:!0}),t.prototype.offset=function(e){var n=this.majorAxisRadius+e,r=this.minorAxisRadius+e;return n<=0||r<=0?null:new t(this.center,this.normal,this.majorAxis,n,r,this.startAngle,this.endAngle)},t})(_i),Lf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Gt=(function(i){Lf(t,i);function t(e,n){var r=i.call(this)||this;return r._start=new L(e),r._end=new L(n),r}return Object.defineProperty(t.prototype,"startPoint",{get:function(){return this._start},set:function(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this._end},set:function(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(){return[this.startPoint,this.endPoint]},Object.defineProperty(t.prototype,"length",{get:function(){return this.startPoint.distanceTo(this.endPoint)},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e=new L(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),n=new L(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new wt(e,n)},t.prototype.transform=function(e){return this._start.applyMatrix2d(e),this._end.applyMatrix2d(e),this._boundingBoxNeedsUpdate=!0,this},Object.defineProperty(t.prototype,"closed",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.copy=function(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._start.clone(),this._end.clone())},t.prototype.project=function(e){var n=this._end.x-this._start.x,r=this._end.y-this._start.y,s=n*n+r*r;if(s<1e-18)return this._start.clone();var a=((e.x-this._start.x)*n+(e.y-this._start.y)*r)/s;return a=Math.max(0,Math.min(1,a)),new L(this._start.x+a*n,this._start.y+a*r)},t.prototype.nearestPoint=function(e){return this.project(e)},t})(Tn),Tf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Ct=(function(i){Tf(t,i);function t(e,n){var r=i.call(this)||this;return r._start=new b(e),r._end=new b(n),r}return Object.defineProperty(t.prototype,"startPoint",{get:function(){return this._start},set:function(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this._end},set:function(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"direction",{get:function(){return new x().subVectors(this.endPoint,this.startPoint).normalize()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){return new b((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)},enumerable:!1,configurable:!0}),t.prototype.nearestPoint=function(e){return this.project(e)},Object.defineProperty(t.prototype,"length",{get:function(){return this.startPoint.distanceTo(this.endPoint)},enumerable:!1,configurable:!0}),t.prototype.isPointOnLine=function(e){var n=this.project(e),r=1e-6;return n.distanceTo(e)<r},t.prototype.at=function(e,n){return this.delta(n).multiplyScalar(e).add(this._start)},t.prototype.atLength=function(e,n){if(n===void 0&&(n=!1),n){var r=this.delta(Ye).normalize();return new b(this._start).addScaledVector(r,e)}else{var r=this.delta(Ye).normalize();return new b(this._end).addScaledVector(r,e)}},t.prototype.extend=function(e,n){if(n===void 0&&(n=!1),n){var r=Ye.subVectors(this._start,this._end).normalize();this._start=new b(this._start).addScaledVector(r,e)}else{var r=this.delta(Ye).normalize();this._end=new b(this._end).addScaledVector(r,e)}return this._boundingBoxNeedsUpdate=!0,this},t.prototype.closestPointToPointParameter=function(e,n){Ko.subVectors(e,this._start),Oi.subVectors(this.endPoint,this.startPoint);var r=Oi.dot(Oi),s=Oi.dot(Ko),a=s/r;return n&&(a=T.clamp(a,0,1)),a},t.prototype.closestPointToPoint=function(e,n,r){var s=this.closestPointToPointParameter(e,n);return this.delta(r).multiplyScalar(s).add(this._start)},t.prototype.delta=function(e){return e.subVectors(this._end,this._start)},t.prototype.distanceSq=function(){return this._start.distanceToSquared(this._end)},t.prototype.distance=function(){return this._start.distanceTo(this._end)},t.prototype.project=function(e){var n=this.direction,r=Ye.subVectors(e,this.startPoint),s=r.dot(n);return new b().copy(n).multiplyScalar(s).add(this.startPoint)},t.prototype.perpPoint=function(e){var n=this.direction,r=this.startPoint,s=Ye.subVectors(e,r),a=s.dot(n),o=Ye.copy(n).multiplyScalar(a);return new b().addVectors(r,o)},t.prototype.calculateBoundingBox=function(){var e=new b(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),n=new b(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 z(e,n)},t.prototype.transform=function(e){return this._start.applyMatrix4(e),this._end.applyMatrix4(e),this._boundingBoxNeedsUpdate=!0,this},Object.defineProperty(t.prototype,"closed",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.copy=function(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._start.clone(),this._end.clone())},t.prototype.offset=function(e){var n=this.startPoint,r=this.endPoint,s=Math.hypot(r.x-n.x,r.y-n.y);if(s===0)return this.clone();var a=new x(r.x-n.x,r.y-n.y,0).normalize(),o=new x(-a.y,a.x,0);return new t(new b(n.x+o.x*e,n.y+o.y*e,n.z),new b(r.x+o.x*e,r.y+o.y*e,r.z))},t})(_i),Ye=new x,Ko=new x,Oi=new x,Cf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),ps=(function(){function i(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}return i.prototype.init=function(t,e,n,r){this.c0=t,this.c1=n,this.c2=-3*t+3*e-2*n-r,this.c3=2*t-2*e+n+r},i.prototype.initCatmullRom=function(t,e,n,r,s){this.init(e,n,s*(n-t),s*(r-e))},i.prototype.initNonuniformCatmullRom=function(t,e,n,r,s,a,o){var c=(e-t)/s-(n-t)/(s+a)+(n-e)/a,l=(n-e)/a-(r-e)/(a+o)+(r-n)/o;c*=a,l*=a,this.init(e,n,c,l)},i.prototype.calc=function(t){var e=t*t,n=e*t;return this.c0+this.c1*t+this.c2*e+this.c3*n},i})(),Fl=(function(i){Cf(t,i);function t(e,n,r,s){e===void 0&&(e=[]),n===void 0&&(n=!1),r===void 0&&(r="centripetal"),s===void 0&&(s=.5);var a=i.call(this)||this;return a.isCatmullRomCurve3d=!0,a.type="CatmullRomCurve3d",a._tmp=new x,a._px=new ps,a._py=new ps,a._pz=new ps,a._points=e.map(function(o){return new b(o)}),a._closed=n,a._curveType=r,a._tension=s,a}return Object.defineProperty(t.prototype,"points",{get:function(){return this._points},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"closed",{get:function(){return this._closed},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"curveType",{get:function(){return this._curveType},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tension",{get:function(){return this._tension},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this._points.length>0?this._points[0]:new b},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this._points.length>0?this._points[this._points.length-1]:new b},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){if(this._points.length<2)return 0;for(var e=0,n=1;n<this._points.length;n++)e+=this._points[n-1].distanceTo(this._points[n]);return this._closed&&this._points.length>2&&(e+=this._points[this._points.length-1].distanceTo(this._points[0])),e},enumerable:!1,configurable:!0}),t.prototype.getPoint=function(e,n){n===void 0&&(n=new b);var r=n,s=this._points,a=s.length;if(a===0)return r.set(0,0,0);if(a===1)return r.copy(s[0]);var o=(a-(this._closed?0:1))*e,c=Math.floor(o),l=o-c;this._closed?c+=c>0?0:(Math.floor(Math.abs(c)/a)+1)*a:l===0&&c===a-1&&(c=a-2,l=1);var h,u;this._closed||c>0?h=s[(c-1)%a]:(this._tmp.subVectors(s[0],s[1]).add(s[0]),h=new b(this._tmp.x,this._tmp.y,this._tmp.z));var d=s[c%a],g=s[(c+1)%a];if(this._closed||c+2<a?u=s[(c+2)%a]:(this._tmp.subVectors(s[a-1],s[a-2]).add(s[a-1]),u=new b(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){var f=this._curveType==="chordal"?.5:.25,p=Math.pow(h.distanceToSquared(d),f),m=Math.pow(d.distanceToSquared(g),f),y=Math.pow(g.distanceToSquared(u),f);m<1e-4&&(m=1),p<1e-4&&(p=m),y<1e-4&&(y=m),this._px.initNonuniformCatmullRom(h.x,d.x,g.x,u.x,p,m,y),this._py.initNonuniformCatmullRom(h.y,d.y,g.y,u.y,p,m,y),this._pz.initNonuniformCatmullRom(h.z,d.z,g.z,u.z,p,m,y)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(h.x,d.x,g.x,u.x,this._tension),this._py.initCatmullRom(h.y,d.y,g.y,u.y,this._tension),this._pz.initCatmullRom(h.z,d.z,g.z,u.z,this._tension));return r.set(this._px.calc(l),this._py.calc(l),this._pz.calc(l)),r},t.prototype.getPoints=function(e){for(var n=[],r=0;r<=e;r++)n.push(this.getPoint(r/e));return n},t.prototype.setPoints=function(e){this._points=e.map(function(n){return new b(n)}),this._boundingBoxNeedsUpdate=!0},t.prototype.setClosed=function(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0)},t.prototype.setCurveType=function(e){this._curveType=e},t.prototype.setTension=function(e){this._tension=e},t.prototype.clone=function(){return new t(this._points.map(function(e){return e.clone()}),this._closed,this._curveType,this._tension)},t.prototype.transform=function(e){return this._points=this._points.map(function(n){var r=new b;return r.copy(n),r.applyMatrix4(e),r}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.calculateBoundingBox=function(){if(this._points.length===0)return new z;var e=new z;return this._points.forEach(function(n){e.expandByPoint(n)}),e},t})(_i),sn=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},an=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))};function Zo(i,t){var e,n,r=i.x-t[0],s=i.y-t[1],a=((e=i.z)!==null&&e!==void 0?e:0)-((n=t[2])!==null&&n!==void 0?n:0);return r*r+s*s+a*a}var Yt=(function(){function i(t,e,n,r){this._degree=t,this._knots=an([],sn(e),!1),this._controlPoints=n.map(function(s){return{x:s.x,y:s.y,z:s.z}}),this._weights=r?an([],sn(r),!1):new Array(n.length).fill(1)}return i.prototype.degree=function(){return this._degree},i.prototype.knots=function(){return an([],sn(this._knots),!1)},i.prototype.controlPoints=function(){return this._controlPoints.map(function(t){return{x:t.x,y:t.y,z:t.z}})},i.prototype.weights=function(){return an([],sn(this._weights),!1)},i.prototype.clone=function(){return new i(this._degree,this._knots,this._controlPoints,this._weights)},i.prototype.point=function(t){return this.evaluate(t).point},i.prototype.evaluate=function(t){var e=this._controlPoints.map(function(n){return[n.x,n.y,n.z]});return _g(t,this._degree,this._knots,e,this._weights)},i.prototype.signedPlanarCurvatureAt=function(t){var e=this.evaluate(t);return xg(e.deriv1,e.deriv2)},i.prototype.getOffsetSamplePath2d=function(t,e){var n=this;e===void 0&&(e=512);for(var r=Math.abs(t),s=this.getParameterRange(),a=s.start,o=s.end,c=this.length(),l=Math.max(64,Math.ceil(c/Math.max(r*.2,1e-6))),h=Mf(a,o,Math.min(l,e)),u=0;u<8&&h.length<e;u++){for(var d=[],g=0;g<h.length-1;g++){var f=h[g],p=h[g+1],m=(f+p)/2,y=Math.max(Math.abs(this.signedPlanarCurvatureAt(f)),Math.abs(this.signedPlanarCurvatureAt(p)),Math.abs(this.signedPlanarCurvatureAt(m)));r*y>.85&&d.push(m)}if(d.length===0)break;if(h=Of(h,d),h.length>e){h=h.slice(0,e);break}}var _=[],v=[];return h.forEach(function(w){var A=n.evaluate(w);_.push(new L(A.point[0],A.point[1]));var I=A.deriv1[0],S=A.deriv1[1],M=Math.hypot(I,S);v.push(M>1e-10?new L(I/M,S/M):new L(1,0))}),{points:_,tangents:v}},i.prototype.length=function(){var t=this._controlPoints.map(function(e){return[e.x,e.y,e.z]});return bl(this._degree,this._knots,t,this._weights)},i.byKnotsControlPointsWeights=function(t,e,n,r){return new i(t,e,n,r)},i.byPoints=function(t,e,n,r,s){n===void 0&&(n="Uniform");var a=va(t,e,n,r,s),o=a.controlPoints.map(function(c){return{x:c[0],y:c[1],z:c[2]}});return new i(e,a.knots,o,a.weights)},i.prototype.getParameterRange=function(){var t=this._knots[this._degree],e=this._knots[this._knots.length-this._degree-1];return{start:t,end:e}},i.prototype.getPoints=function(t){for(var e=[],n=this.getParameterRange(),r=n.start,s=n.end,a=0;a<=t;a++){var o=r+(s-r)*(a/t);e.push(this.point(o))}return e},i.prototype.isClosed=function(t){t===void 0&&(t=1e-6);var e=this.getParameterRange(),n=e.start,r=e.end,s=this.point(n),a=this.point(r),o=s[0]-a[0],c=s[1]-a[1],l=s[2]-a[2];return Math.sqrt(o*o+c*c+l*l)<t},i.createFitPointsForClosedCurve=function(t){if(t.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");var e=new Fl(t,!0,"centripetal"),n=Math.max(50,t.length*2);return e.getPoints(n)},i.prototype.nearestPoint=function(t,e){var n;e===void 0&&(e=64);for(var r=this.getParameterRange(),s=r.start,a=r.end,o=this.point(s),c=Zo(t,o),l=0;l<=e;l++){var h=s+(a-s)*l/e,u=this.point(h),d=Zo(t,u);d<c&&(c=d,o=u)}return{x:o[0],y:o[1],z:(n=o[2])!==null&&n!==void 0?n:0}},i.createClosedCurve=function(t,e,n){n===void 0&&(n="Chord");var r=this.createFitPointsForClosedCurve(t),s=r.map(function(a){return[a.x,a.y,a.z]});return i.byPoints(s,e,n)},i})();function Mf(i,t,e){if(e<2)return[i,t];for(var n=[],r=0;r<e;r++)n.push(r===e-1?t:i+(t-i)*r/(e-1));return n}function Of(i,t){var e=an(an([],sn(i),!1),sn(t),!1).sort(function(r,s){return r-s}),n=[];return e.forEach(function(r){var s=n[n.length-1];(s===void 0||Math.abs(s-r)>1e-10)&&n.push(r)}),n}function Qo(i){var t,e,n;if(!i)return!1;var r=(t=i.x)!==null&&t!==void 0?t:0,s=(e=i.y)!==null&&e!==void 0?e:0,a=(n=i.z)!==null&&n!==void 0?n:0;return r*r+s*s+a*a>1e-20}function Nf(i,t,e){var n=i??0;return n<1&&e>0&&t>0&&(n=e-t-1),n<1&&(n=3),n=Math.min(n,t-1),Math.max(1,n)}function Bf(i,t,e){var n=i??0;n<1&&(n=3);var r=t+e-1;return n=Math.min(n,r),Math.max(1,n)}function Rf(i,t){if(!(!i||i.length!==t))return i}var Ff=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Jo=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},tc=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},ec=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ut=(function(i){Ff(t,i);function t(e,n,r,s,a,o){var c=i.call(this)||this,l=arguments.length;if(c._degree=3,c._closed=!1,Array.isArray(n)){if(l<2||l>5)throw Et.ILLEGAL_PARAMETERS;c._controlPoints=e;var g=void 0,f=3,p=!1;if(l>=3&&(Array.isArray(r)?(g=r,l>=4&&(f=s||3),l>=5&&(p=a)):r!==void 0&&(f=r||3,l>=4&&(p=s))),r===void 0&&l>=4&&(f=s||3,l>=5&&(p=a)),c._degree=f,c._closed=p,c._controlPoints.length<c._degree+1)throw Et.ILLEGAL_PARAMETERS;c._nurbsCurve=Yt.byKnotsControlPointsWeights(c._degree,n,c._controlPoints,g)}else{if(l<2||l>6)throw Et.ILLEGAL_PARAMETERS;c._fitPoints=e,c._knotParameterization=n,l>=3&&(c._degree=r||3);var h=typeof s=="boolean";l>=4&&h&&(c._closed=s),h?(l>=5&&(c._startTangent=a),l>=6&&(c._endTangent=o)):(l>=4&&(c._startTangent=s),l>=5&&(c._endTangent=a)),c._closed&&(c._startTangent=void 0,c._endTangent=void 0);var u=(c._startTangent?1:0)+(c._endTangent?1:0);if(c._fitPoints.length+u<c._degree+1)throw Et.ILLEGAL_PARAMETERS;if(c._closed)c._nurbsCurve=Yt.createClosedCurve(c._fitPoints,c._degree,c._knotParameterization);else{var d=c.toNurbsPoints(c._fitPoints);c._nurbsCurve=Yt.byPoints(d,c._degree,c._knotParameterization,c._startTangent?c.toNurbsPoint(c._startTangent):void 0,c._endTangent?c.toNurbsPoint(c._endTangent):void 0)}c._controlPoints=c.toGePoints(c._nurbsCurve.controlPoints().map(function(m){return[m.x,m.y,m.z||0]}))}return c}return t.prototype.buildCurve=function(){if(this._fitPoints&&this._knotParameterization){if(this._closed){var e=Yt.createFitPointsForClosedCurve(this._fitPoints),n=this.toNurbsPoints(e);this._nurbsCurve=Yt.byPoints(n,this._degree,this._knotParameterization)}else{var n=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Yt.byPoints(n,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(function(a){return[a.x,a.y,a.z||0]}))}else if(this._controlPoints)if(this._closed){var e=Yt.createFitPointsForClosedCurve(this._controlPoints),n=this.toNurbsPoints(e);this._nurbsCurve=Yt.byPoints(n,this._degree,this._knotParameterization),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(function(c){return[c.x,c.y,c.z||0]}))}else{var r=this._nurbsCurve.knots(),s=this._nurbsCurve.weights();this._nurbsCurve=Yt.byKnotsControlPointsWeights(this._degree,r,this._controlPoints,s)}},t.prototype.setClosed=function(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0,this.buildCurve())},Object.defineProperty(t.prototype,"degree",{get:function(){return this._degree},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"knotParameterization",{get:function(){return this._knotParameterization},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"controlPoints",{get:function(){return this._controlPoints.map(Pt.point2dToPoint3d)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"fitPoints",{get:function(){var e;return(e=this._fitPoints)===null||e===void 0?void 0:e.map(Pt.point2dToPoint3d)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"knots",{get:function(){return tc([],Jo(this._nurbsCurve.knots()),!1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"weights",{get:function(){return tc([],Jo(this._nurbsCurve.weights()),!1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){var e=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),r=e[n],s=this._nurbsCurve.point(r);return new b(s[0],s[1],s[2])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){var e=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),r=e[e.length-n-1],s=this._nurbsCurve.point(r);return new b(s[0],s[1],s[2])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this._nurbsCurve.length()},enumerable:!1,configurable:!0}),t.prototype.nearestPoint=function(e,n){n===void 0&&(n=64);var r=this._nurbsCurve.nearestPoint(e,n);return new b(r.x,r.y,r.z||0)},t.prototype.evaluateAt=function(e){var n=this._nurbsCurve.point(e);return new b(n[0],n[1],n[2])},t.prototype.getFitPointAt=function(e){if(!this._fitPoints)throw new Error("No fit points in this spline");var n=this._fitPoints.length,r=e<0||e>=n?n-1:e,s=this._fitPoints[r];return Pt.point2dToPoint3d(s)},t.prototype.getControlPointAt=function(e){var n=this._controlPoints.length,r=e<0||e>=n?n-1:e;return this._controlPoints[r]},Object.defineProperty(t.prototype,"isFitPointSpline",{get:function(){return!!(this._fitPoints&&this._fitPoints.length>0&&this._knotParameterization)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isControlPointSpline",{get:function(){return!this.isFitPointSpline},enumerable:!1,configurable:!0}),t.prototype.getGripPoints=function(){return this.isFitPointSpline?this._fitPoints.map(function(e){var n;return new b(e.x,e.y,(n=e.z)!==null&&n!==void 0?n:0)}):this._controlPoints.map(function(e){var n;return new b(e.x,e.y,(n=e.z)!==null&&n!==void 0?n:0)})},t.prototype.moveGripPointsAt=function(e,n){return this.isFitPointSpline?(this.moveFitPointsAt(e,n),this):(this.moveControlPointsAt(e,n),this)},t.prototype.moveFitPointsAt=function(e,n){var r,s;if(this._fitPoints){try{for(var a=ec(e),o=a.next();!o.done;o=a.next()){var c=o.value;if(!(!Number.isInteger(c)||c<0)){var l=this._fitPoints[c];l&&Pt.applyOffsetToPoint3d(l,n)}}}catch(h){r={error:h}}finally{try{o&&!o.done&&(s=a.return)&&s.call(a)}finally{if(r)throw r.error}}this._boundingBoxNeedsUpdate=!0,this.buildCurve()}},t.prototype.moveControlPointsAt=function(e,n){var r,s;try{for(var a=ec(e),o=a.next();!o.done;o=a.next()){var c=o.value;if(!(!Number.isInteger(c)||c<0)){var l=this.getControlPointAt(c);l&&Pt.applyOffsetToPoint3d(l,n)}}}catch(h){r={error:h}}finally{try{o&&!o.done&&(s=a.return)&&s.call(a)}finally{if(r)throw r.error}}this.rebuildAfterControlPointMutation()},t.prototype.rebuildAfterControlPointMutation=function(){var e=this._nurbsCurve.knots(),n=this._nurbsCurve.weights();this.isFitPointSpline&&(this._fitPoints=void 0,this._knotParameterization=void 0,this._startTangent=void 0,this._endTangent=void 0),this._nurbsCurve=Yt.byKnotsControlPointsWeights(this._degree,e,this._controlPoints,n.length>0?n:void 0),this._boundingBoxNeedsUpdate=!0},t.prototype.getOffsetSamplePath2d=function(e){return this._nurbsCurve.getOffsetSamplePath2d(e)},t.prototype.getPoints=function(e){e===void 0&&(e=100);for(var n=this._nurbsCurve,r=[],s=n.knots(),a=this._nurbsCurve.degree(),o=s[a],c=s[s.length-a-1],l=(c-o)/(e-1),h=0;h<e;h++){var u=h===e-1?c:o+h*l,d=n.point(u);r.push(new b(d[0],d[1],d[2]))}return r},t.prototype.getCurvePoints=function(e,n){for(var r=[],s=e.knots(),a=e.degree(),o=s[a],c=s[s.length-a-1],l=(c-o)/(n-1),h=0;h<n;h++){var u=o+h*l;r.push(e.point(u))}return r},t.prototype.calculateBoundingBox=function(){var e=this.getPoints(100);return new z().setFromPoints(e)},Object.defineProperty(t.prototype,"closed",{get:function(){return this._closed},set:function(e){this.setClosed(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){if(!this._closed)return 0;var e=this.getPoints(128);return wl(e)},enumerable:!1,configurable:!0}),t.prototype.transform=function(e){if(this._fitPoints&&this._knotParameterization)this._fitPoints=this._fitPoints.map(function(s){return new b(s).applyMatrix4(e)}),this._startTangent&&(this._startTangent=new b(this._startTangent).transformDirection(e)),this._endTangent&&(this._endTangent=new b(this._endTangent).transformDirection(e)),this.buildCurve();else{var n=this._nurbsCurve.knots(),r=this._nurbsCurve.weights();this._controlPoints=this._controlPoints.map(function(s){return new b(s).applyMatrix4(e)}),this._nurbsCurve=Yt.byKnotsControlPointsWeights(this._degree,n,this._controlPoints,r.length>0?r:void 0)}return this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return this._fitPoints&&this._knotParameterization?new t(this._fitPoints.map(Pt.point2dToPoint3d),this._knotParameterization,this._degree,this._closed,this._startTangent?Pt.point2dToPoint3d(this._startTangent):void 0,this._endTangent?Pt.point2dToPoint3d(this._endTangent):void 0):new t(this._controlPoints.map(Pt.point2dToPoint3d),this._nurbsCurve.knots(),this._nurbsCurve.weights(),this._degree,this._closed)},t.prototype.toNurbsPoints=function(e){var n=new Array(e.length);return e.forEach(function(r,s){n[s]=[r.x,r.y,r.z||0]}),n},t.prototype.toGePoints=function(e){var n=new Array(e.length);return e.forEach(function(r,s){n[s]={x:r[0],y:r[1],z:r[2]}}),n},t.prototype.toNurbsPoint=function(e){return[e.x,e.y,e.z||0]},t.createClosedSpline=function(e,n,r){if(n===void 0&&(n="Uniform"),r===void 0&&(r=3),e.length<r+1)throw new Error("At least ".concat(r+1," points are required for a degree ").concat(r," closed spline"));return new t(e,n,r,!0)},t.fromControlPoints=function(e,n,r,s,a){if(e.length<2||n.length<2)return null;var o=Nf(s,e.length,n.length);if(e.length<o+1)return null;try{return new t(e,n,Rf(r,e.length),o,a)}catch{return null}},t.fromFitPoints=function(e,n,r,s,a,o){if(e.length<2)return null;var c=Qo(a),l=Qo(o),h=(c?1:0)+(l?1:0),u=Bf(r,e.length,h);if(e.length+h<u+1)return null;try{return c||l?new t(e,n,u,s,c?a:void 0,l?o:void 0):new t(e,n,u,s)}catch{return null}},t.fromDwgSplineEdge=function(e){if(e.numberOfControlPoints>0&&e.numberOfKnots>0){var n=e.controlPoints.map(Pt.point2dToPoint3d),r=!0,s=e.controlPoints.map(function(o){return o.weight==null&&(r=!1),o.weight||1});return t.fromControlPoints(n,e.knots,r?s:void 0,e.degree,!1)}if(e.numberOfFitData>0){var a=e.fitDatum.map(Pt.point2dToPoint3d);return t.fromFitPoints(a,"Uniform",e.degree,!1,e.startTangent?Pt.point2dToPoint3d(e.startTangent):void 0,e.endTangent?Pt.point2dToPoint3d(e.endTangent):void 0)}return null},t})(_i),Df=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),ms=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},ys=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},pn=(function(i){Df(t,i);function t(e){e===void 0&&(e=[]);var n=i.call(this)||this;return n._curves=e,n}return Object.defineProperty(t.prototype,"curves",{get:function(){return this._curves},enumerable:!1,configurable:!0}),t.buildFromEdges=function(e,n){if(n===void 0&&(n=.001),e.length===0)return[];for(var r=ys([],ms(e),!1),s=[],a=n*n,o=function(f,p){var m=f.x-p.x,y=f.y-p.y;return m*m+y*y<=a};r.length>0;){var c=[],l=r.shift();c.push(l);var h=t.getEdgeStartPoint(l),u=t.getEdgeEndPoint(l);if(!o(h,u))for(;r.length>0;){var d=t.findConnectingEdge(r,u,a);if(d.index<0)break;var g=r.splice(d.index,1)[0];if(d.reverse&&(g=t.reverseEdge(g)),c.push(g),u=t.getEdgeEndPoint(g),o(u,h))break}s.push(new t(c))}return s},t.prototype.add=function(e){this._curves.push(e),this._boundingBoxNeedsUpdate=!0},Object.defineProperty(t.prototype,"numberOfEdges",{get:function(){return this._curves.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){if(this._curves.length>0){var e=this._curves[0].startPoint;return new L(e.x,e.y)}throw new Error("Start point does not exist in an empty loop.")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.startPoint},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){var e=0;return this._curves.forEach(function(n){e+=n.length}),e},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e=this.getPoints(100),n=new wt;return n.setFromPoints(e),n},t.prototype.transform=function(e){var n=new F().set(e.elements[0],e.elements[3],0,e.elements[6],e.elements[1],e.elements[4],0,e.elements[7],0,0,1,0,0,0,0,1);return this._curves.forEach(function(r){r instanceof Ut?r.transform(n):r.transform(e)}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._curves.map(function(e){return e.clone()}))},Object.defineProperty(t.prototype,"closed",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(e){var n=[];return this.curves.forEach(function(r){r.getPoints(e).forEach(function(s){n.push(new L(s.x,s.y))})}),n},t.findConnectingEdge=function(e,n,r){for(var s=-1,a=!1,o=Number.POSITIVE_INFINITY,c=0;c<e.length;c++){var l=e[c],h=t.getEdgeStartPoint(l),u=t.getEdgeEndPoint(l),d=n.x-h.x,g=n.y-h.y,f=d*d+g*g;f<o&&(o=f,s=c,a=!1);var p=n.x-u.x,m=n.y-u.y,y=p*p+m*m;y<o&&(o=y,s=c,a=!0)}return o>r?{index:-1,reverse:!1}:{index:s,reverse:a}},t.getEdgeStartPoint=function(e){var n=e.startPoint;return new L(n.x,n.y)},t.getEdgeEndPoint=function(e){var n=e.endPoint;return new L(n.x,n.y)},t.reverseEdge=function(e){return e instanceof Gt?new Gt(e.endPoint,e.startPoint):e instanceof it?t.reverseCircArcEdge(e):e instanceof pe?new pe(e.center,e.majorAxisRadius,e.minorAxisRadius,e.endAngle,e.startAngle,!e.clockwise,e.rotation):e instanceof Ut?t.reverseSplineEdge(e):e},t.reverseCircArcEdge=function(e){var n=e.startPoint,r=e.endPoint,s=!e.clockwise,a=Math.atan2(r.y-e.center.y,r.x-e.center.x),o=Math.atan2(n.y-e.center.y,n.x-e.center.x),c=function(l){var h=T.normalizeAngle(l);return s?T.normalizeAngle(-h):h};return new it(e.center,e.radius,c(a),c(o),s)},t.reverseSplineEdge=function(e){var n=ys([],ms(e.controlPoints),!1).reverse(),r=e.knots,s=r[0],a=r[r.length-1],o=r.map(function(h){return s+a-h}).reverse(),c=e.weights,l=c.length>0?ys([],ms(c),!1).reverse():void 0;return new Ut(n,o,l,e.degree,e.closed)},t})(Tn),Rt=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Kn=128,Qi=96,D=yi.equalPointTol,Sa=D*8;function Yf(i,t,e,n,r){var s,a,o,c;e===void 0&&(e=!1),n===void 0&&(n=!1);var l=nc(i,e,r),h=nc(t,n,r),u=[];try{for(var d=Rt(l),g=d.next();!g.done;g=d.next()){var f=g.value;try{for(var p=(o=void 0,Rt(h)),m=p.next();!m.done;m=p.next()){var y=m.value;Ia(f,y)&&Ma(u,Xl(f,y))}}catch(_){o={error:_}}finally{try{m&&!m.done&&(c=p.return)&&c.call(p)}finally{if(o)throw o.error}}}}catch(_){s={error:_}}finally{try{g&&!g.done&&(a=d.return)&&a.call(d)}finally{if(s)throw s.error}}return rp(u)}function Xf(i,t){var e=zf(i);switch(e.kind){case"line":return e.line.transform(t),e;case"circArc":return e.arc.transform(t),e;case"ellipseArc":return e.arc.transform(t),e;case"spline":return e.spline.transform(t),e}}function zf(i){switch(i.kind){case"line":return{kind:"line",line:i.line.clone(),extent:i.extent,extendable:i.extendable};case"circArc":return{kind:"circArc",arc:i.arc.clone(),extendable:i.extendable};case"ellipseArc":return{kind:"ellipseArc",arc:i.arc.clone(),extendable:i.extendable};case"spline":return{kind:"spline",spline:i.spline.clone(),extendable:i.extendable}}}function nc(i,t,e){var n,r,s=[];try{for(var a=Rt(i),o=a.next();!o.done;o=a.next()){var c=o.value,l=t&&c.extendable!==!1;switch(c.kind){case"line":{var h=Uf(c.line,e);if(!h)break;var u=l?"unbounded":c.extent;s.push(Cn(h.start,h.end,u));break}case"circArc":{var d=jf(c.arc,l);if(e&&!Zn(d.normal,e.normal)){var g=Wf(d,e);(g==null?void 0:g.kind)==="circArc"?s.push(ic(g.arc,se(g.arc))):(g==null?void 0:g.kind)==="ellipseArc"?s.push(rc(g.arc,_e(g.arc))):bs(s,Dl(d,se(d)),se(d),e)}else{var g=Hf(d,e);g&&s.push(ic(g,se(g)))}break}case"ellipseArc":{var d=Gf(c.arc,l);if(e&&!Zn(d.normal,e.normal))bs(s,Yl(d,_e(d)),_e(d),e);else{var g=$f(d,e);g&&s.push(rc(g,_e(g)))}break}case"spline":{e?bs(s,c.spline.getPoints(Kn),c.spline.closed,e):s.push(Vf(c.spline));break}}}}catch(f){n={error:f}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return s}function Cn(i,t,e){var n=new x().subVectors(t,i);return{kind:"line",start:i,dir:n,extent:e,box:e==="bounded"?new z().setFromPoints([i,t]):void 0}}function ic(i,t){return{kind:"circArc",arc:i,full:t||se(i),box:i.box}}function rc(i,t){return{kind:"ellipseArc",arc:i,full:t||_e(i),box:i.box}}function Vf(i){var t,e,n=[],r=i.getPoints(Kn);if(r.length>=2)for(var s=i.closed?r.length:r.length-1,a=0;a<s;a++){var o=r[a],c=r[(a+1)%r.length];o.distanceToSquared(c)<D*D||n.push(Cn(o.clone(),c.clone(),"bounded"))}var l=new z;try{for(var h=Rt(n),u=h.next();!u.done;u=h.next()){var d=u.value;d.box&&l.union(d.box)}}catch(g){t={error:g}}finally{try{u&&!u.done&&(e=h.return)&&e.call(h)}finally{if(t)throw t.error}}return{kind:"spline",spline:i,samples:n,box:n.length>0?l:void 0}}function jf(i,t){return!t||se(i)?i:new St(i.center,i.radius,0,V,i.normal,i.refVec)}function Gf(i,t){return!t||_e(i)?i:new he(i.center,i.normal,i.majorAxis,i.majorAxisRadius,i.minorAxisRadius,0,V)}function Uf(i,t){if(!t)return{start:i.startPoint.clone(),end:i.endPoint.clone()};var e=be(i.startPoint,t),n=be(i.endPoint,t);return e.distanceToSquared(n)<D*D?null:{start:e,end:n}}function Hf(i,t){if(!t)return i;var e=be(i.center,t);return new St(e,i.radius,i.startAngle,i.endAngle,t.normal.clone(),La(i.refVec,t.normal))}function Wf(i,t){var e=be(i.center,t),n=i.normal.clone();if(n.lengthSq()<D*D)return null;n.normalize();var r=t.normal.clone();if(r.lengthSq()<D*D)return null;r.normalize();var s=n.dot(r),a=Math.abs(s);if(a>1-1e-8)return{kind:"circArc",arc:new St(e,i.radius,i.startAngle,i.endAngle,r,La(i.refVec,r))};if(a<1e-8)return null;var o=new x().crossVectors(n,r);if(o.lengthSq()<D*D)return null;o.normalize();var c=new he(e,r,o,i.radius,i.radius*a,0,V);if(se(i))return{kind:"ellipseArc",arc:c};var l=be(i.startPoint,t),h=be(i.endPoint,t),u=be(i.midPoint,t),d=mn(c,l),g=mn(c,h),f=mn(c,u),p=T.normalizeAngle(f-d),m=T.normalizeAngle(g-d),y=p<=m||m<1e-8?d+m:d+m+V;return{kind:"ellipseArc",arc:new he(e,r,o,i.radius,i.radius*a,d,y)}}function $f(i,t){if(!t)return i;var e=be(i.center,t),n=La(i.majorAxis,t.normal);return n.lengthSq()<D*D?null:new he(e,t.normal.clone(),n,i.majorAxisRadius,i.minorAxisRadius,i.startAngle,i.endAngle)}function bs(i,t,e,n){if(!(t.length<2))for(var r=n?t.map(function(l){return be(l,n)}):t,s=e?r.length:r.length-1,a=0;a<s;a++){var o=r[a],c=r[(a+1)%r.length];o.distanceToSquared(c)<D*D||i.push(Cn(o.clone(),c.clone(),"bounded"))}}function Dl(i,t){return t||se(i)?new St(i.center,i.radius,0,V,i.normal,i.refVec).getPoints(Qi):i.getPoints(Qi)}function Yl(i,t){return t||_e(i)?new he(i.center,i.normal,i.majorAxis,i.majorAxisRadius,i.minorAxisRadius,0,V).getPoints(Qi):i.getPoints(Qi)}function Ia(i,t){return!i.box||!t.box?!0:i.box.intersectsBox(t.box)}function Xl(i,t){return i.kind==="spline"&&t.kind==="spline"?qf(i,t):i.kind==="spline"?sc(i,t):t.kind==="spline"?sc(t,i):i.kind==="line"&&t.kind==="line"?zl(i,t):i.kind==="line"&&t.kind==="circArc"?Ji(i,t.arc,t.full):t.kind==="line"&&i.kind==="circArc"?Ji(t,i.arc,i.full):i.kind==="line"&&t.kind==="ellipseArc"?Us(i,t.arc,t.full):t.kind==="line"&&i.kind==="ellipseArc"?Us(t,i.arc,i.full):i.kind==="circArc"&&t.kind==="circArc"?tp(i.arc,i.full,t.arc,t.full):i.kind==="circArc"&&t.kind==="ellipseArc"?ac(i.arc,i.full,t.arc,t.full):i.kind==="ellipseArc"&&t.kind==="circArc"?ac(t.arc,t.full,i.arc,i.full):i.kind==="ellipseArc"&&t.kind==="ellipseArc"?np(i.arc,i.full,t.arc,t.full):[]}function sc(i,t){var e,n,r=[];try{for(var s=Rt(i.samples),a=s.next();!a.done;a=s.next()){var o=a.value;Ia(o,t)&&Ma(r,Xl(o,t))}}catch(c){e={error:c}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(e)throw e.error}}return Kf(i.spline,r,t)}function qf(i,t){var e,n,r,s,a,o,c=[];try{for(var l=Rt(i.samples),h=l.next();!h.done;h=l.next()){var u=h.value;try{for(var d=(r=void 0,Rt(t.samples)),g=d.next();!g.done;g=d.next()){var f=g.value;Ia(u,f)&&Ma(c,zl(u,f))}}catch(A){r={error:A}}finally{try{g&&!g.done&&(s=d.return)&&s.call(d)}finally{if(r)throw r.error}}}}catch(A){e={error:A}}finally{try{h&&!h.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}var p=[];try{for(var m=Rt(c),y=m.next();!y.done;y=m.next()){var _=y.value,v=i.spline.nearestPoint(_,Kn),w=t.spline.nearestPoint(_,Kn);v.distanceTo(w)<=Sa&&p.push(v)}}catch(A){a={error:A}}finally{try{y&&!y.done&&(o=m.return)&&o.call(m)}finally{if(a)throw a.error}}return p}function Kf(i,t,e){var n,r,s=[];try{for(var a=Rt(t),o=a.next();!o.done;o=a.next()){var c=o.value,l=i.nearestPoint(c,Kn);Zf(e,l)<=Sa&&s.push(l)}}catch(h){n={error:h}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return s}function Zf(i,t){if(i.kind==="line"){var e=i.dir.lengthSq();if(e<D*D)return Number.POSITIVE_INFINITY;var n=new x().subVectors(t,i.start).dot(i.dir)/e;return xn(n,i.extent)?wn(i.start,i.dir,n).distanceTo(t):Number.POSITIVE_INFINITY}if(i.kind==="circArc"){if(!Ca(t,i.arc)){var r=Ht(i.arc.normal,i.arc.center),s=Math.abs(r.distanceToPoint(t)),a=Math.abs(t.distanceTo(i.arc.center)-i.arc.radius),o=Math.hypot(s,a);if(o>Sa)return o}return $e(i.arc,We(i.arc,t),i.full)?0:Number.POSITIVE_INFINITY}return i.kind==="ellipseArc"?vn(t,i.arc,i.full)?0:Math.abs($r(i.arc,t)):Number.POSITIVE_INFINITY}function zl(i,t){var e=i.dir,n=t.dir,r=e.lengthSq(),s=n.lengthSq();if(r<D*D||s<D*D)return[];var a=new x().subVectors(i.start,t.start),o=e.dot(e),c=e.dot(n),l=n.dot(n),h=e.dot(a),u=n.dot(a),d=o*l-c*c;if(Math.abs(d)<ut*ut*o*l)return[];var g=(c*u-l*h)/d,f=(o*u-c*h)/d;if(!xn(g,i.extent)||!xn(f,t.extent))return[];var p=wn(i.start,e,g),m=wn(t.start,n,f);return p.distanceTo(m)>D?[]:[p]}function Ji(i,t,e){var n=Ht(t.normal,t.center),r=jl(i,n);return r==="coplanar"?Qf(i,t,e):r?Ca(r,t)?$e(t,We(t,r),e)?[r]:[]:[]:[]}function Qf(i,t,e){var n,r,s=new x().subVectors(i.start,t.center),a=i.dir.dot(i.dir);if(a<D*D)return[];var o=2*i.dir.dot(s),c=s.dot(s)-t.radius*t.radius,l=[];try{for(var h=Rt(Ul(a,o,c)),u=h.next();!u.done;u=h.next()){var d=u.value;if(xn(d,i.extent)){var g=wn(i.start,i.dir,d);$e(t,We(t,g),e)&&l.push(g)}}}catch(f){n={error:f}}finally{try{u&&!u.done&&(r=h.return)&&r.call(h)}finally{if(n)throw n.error}}return l}function Us(i,t,e){var n=Ht(t.normal,t.center),r=jl(i,n);return r==="coplanar"?Jf(i,t,e):r?vn(r,t,e)?[r]:[]:[]}function Jf(i,t,e){var n,r,s=t.majorAxis,a=t.minorAxis,o=t.majorAxisRadius,c=t.minorAxisRadius;if(o<D||c<D)return[];var l=new x().subVectors(i.start,t.center),h=l.dot(s),u=l.dot(a),d=i.dir.dot(s),g=i.dir.dot(a),f=d*d/(o*o)+g*g/(c*c),p=2*h*d/(o*o)+2*u*g/(c*c),m=h*h/(o*o)+u*u/(c*c)-1,y=[];try{for(var _=Rt(Ul(f,p,m)),v=_.next();!v.done;v=_.next()){var w=v.value;if(xn(w,i.extent)){var A=wn(i.start,i.dir,w);Ta(t,mn(t,A),e)&&y.push(A)}}}catch(I){n={error:I}}finally{try{v&&!v.done&&(r=_.return)&&r.call(_)}finally{if(n)throw n.error}}return y}function tp(i,t,e,n){if(Zn(i.normal,e.normal)){var r=Ht(i.normal,i.center);return Math.abs(r.distanceToPoint(e.center))>D?[]:ip(ep(i,e),i,t,e,n)}var s=Ea(Ht(i.normal,i.center),Ht(e.normal,e.center));if(!s)return[];var a=Cn(s.point.clone(),new b().addVectors(s.point,s.dir),"unbounded"),o=Ji(a,i,t);return o.filter(function(c){return Ca(c,e)?$e(e,We(e,c),n):!1})}function ep(i,t){var e=new x().subVectors(t.center,i.center),n=e.length(),r=i.radius,s=t.radius;if(n<D&&Y.equal(r,s,D))return[];if(n>r+s+D)return[];if(n+Math.min(r,s)+D<Math.max(r,s))return[];var a=n<D?Gl(i.normal):e.clone().normalize(),o=(r*r-s*s+n*n)/(2*Math.max(n,D)),c=r*r-o*o,l=new b().copy(i.center).addScaledVector(a,o);if(c<-D*D)return[];if(c<D*D)return[l];var h=Math.sqrt(Math.max(0,c)),u=new x().crossVectors(i.normal,a).normalize();return[new b().copy(l).addScaledVector(u,h),new b().copy(l).addScaledVector(u,-h)]}function ac(i,t,e,n){if(!Zn(i.normal,e.normal)){var r=Ea(Ht(i.normal,i.center),Ht(e.normal,e.center));if(!r)return[];var s=Cn(r.point.clone(),new b().addVectors(r.point,r.dir),"unbounded");return Ji(s,i,t).filter(function(a){return vn(a,e,n)})}return Vl(Dl(i,t),se(i)||t,function(a){return $r(e,a)},function(a){return $e(i,We(i,a),t)&&vn(a,e,n)})}function np(i,t,e,n){if(!Zn(i.normal,e.normal)){var r=Ea(Ht(i.normal,i.center),Ht(e.normal,e.center));if(!r)return[];var s=Cn(r.point.clone(),new b().addVectors(r.point,r.dir),"unbounded");return Us(s,i,t).filter(function(a){return vn(a,e,n)})}return Vl(Yl(i,t),_e(i)||t,function(a){return $r(e,a)},function(a){return Ta(i,mn(i,a),t)&&vn(a,e,n)})}function Vl(i,t,e,n){for(var r=[],s=t?i.length:i.length-1,a=0;a<s;a++){var o=i[a],c=i[(a+1)%i.length],l=e(o),h=e(c);if(Math.abs(l)<=D){n(o)&&r.push(o.clone());continue}if(!(l*h>0)){for(var u=0,d=1,g=l,f=0;f<40;f++){var p=(u+d)/2,m=new b().lerpVectors(o,c,p),y=e(m);g*y<=0?d=p:(u=p,g=y)}var _=new b().lerpVectors(o,c,(u+d)/2);n(_)&&r.push(_)}}return r}function jl(i,t){var e=t.normal.dot(i.dir),n=t.distanceToPoint(i.start);if(Y.equalToZero(e,D*Math.max(1,i.dir.length())))return Y.equalToZero(n,D)?"coplanar":null;var r=-n/e;return xn(r,i.extent)?wn(i.start,i.dir,r):null}function Ea(i,t){var e=new x().crossVectors(i.normal,t.normal);if(e.lengthSq()<D*D)return null;e.normalize();var n=i.normal,r=t.normal,s=n.dot(n)*r.dot(r)-Math.pow(n.dot(r),2);if(Math.abs(s)<ut)return null;var a=-i.constant,o=-t.constant,c=(r.dot(r)*a-n.dot(r)*o)/s,l=(n.dot(n)*o-n.dot(r)*a)/s,h=new b().addScaledVector(n,c).addScaledVector(r,l);return{point:h,dir:e}}function xn(i,t){return t==="unbounded"?!0:t==="ray"?i>=-D:i>=-D&&i<=1+D}function wn(i,t,e){return new b().copy(i).addScaledVector(t,e)}function be(i,t){var e=new b;return t.projectPoint(i,e),e}function La(i,t){var e=i.clone().addScaledVector(t,-i.dot(t));return e.lengthSq()<D*D?Gl(t):e.normalize()}function Ht(i,t){return new Wr().setFromNormalAndCoplanarPoint(i,t)}function Zn(i,t){return new x().crossVectors(i,t).lengthSq()<D*D}function We(i,t){var e=new x().subVectors(t,i.center),n=new x().crossVectors(i.normal,i.refVec);return Math.atan2(e.dot(n),e.dot(i.refVec))}function mn(i,t){var e=new x().subVectors(t,i.center),n=e.dot(i.majorAxis)/i.majorAxisRadius,r=e.dot(i.minorAxis)/i.minorAxisRadius;return Math.atan2(r,n)}function se(i){return i.closed||Math.abs(i.deltaAngle-V)<1e-10}function _e(i){return i.closed||Math.abs(i.endAngle-i.startAngle)<1e-10||Math.abs(i.deltaAngle-V)<1e-10}function $e(i,t,e){if(e||se(i))return!0;var n=T.normalizeAngle(t-i.startAngle);return n<=i.deltaAngle+1e-8}function Ta(i,t,e){if(e||_e(i))return!0;var n=T.normalizeAngle(t-i.startAngle);return n<=i.deltaAngle+1e-8}function Ca(i,t){var e=Ht(t.normal,t.center);return Math.abs(e.distanceToPoint(i))>D?!1:Math.abs(i.distanceTo(t.center)-t.radius)<=D}function $r(i,t){var e=new x().subVectors(t,i.center),n=e.dot(i.majorAxis)/i.majorAxisRadius,r=e.dot(i.minorAxis)/i.minorAxisRadius;return n*n+r*r-1}function vn(i,t,e){var n=Ht(t.normal,t.center);return Math.abs(n.distanceToPoint(i))>D||Math.abs($r(t,i))>1e-4?!1:Ta(t,mn(t,i),e)}function ip(i,t,e,n,r){return i.filter(function(s){return $e(t,We(t,s),e)&&$e(n,We(n,s),r)})}function Gl(i){var t=Math.abs(i.x)<.9?x.X_AXIS:x.Y_AXIS,e=new x().crossVectors(i,t);return e.lengthSq()<D*D&&e.crossVectors(i,x.Z_AXIS),e.normalize()}function Ul(i,t,e){if(Math.abs(i)<ut)return Math.abs(t)<ut?[]:[-e/t];var n=t*t-4*i*e;if(n<-D)return[];if(n<D)return[-t/(2*i)];var r=Math.sqrt(Math.max(0,n));return[(-t-r)/(2*i),(-t+r)/(2*i)]}function Ma(i,t){var e,n;try{for(var r=Rt(t),s=r.next();!s.done;s=r.next()){var a=s.value;i.push(a)}}catch(o){e={error:o}}finally{try{s&&!s.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}}function rp(i){var t,e,n=[],r=function(c){if(n.some(function(l){return l.distanceTo(c)<=D}))return"continue";n.push(c)};try{for(var s=Rt(i),a=s.next();!a.done;a=s.next()){var o=a.value;r(o)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}return n}const oc=[{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:"AC1018",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 xt{constructor(t){if(typeof t=="string"){const e=oc.find(n=>n.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=oc.find(n=>n.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")}get capabilities(){return xt.capabilitiesFor(this.value)}static get latest(){return new xt("AC1032")}static capabilitiesFor(t){const e=t>=19;return{supportsHandles:e,supportsSubclassMarkers:e,supportsClassesSection:e,supportsObjectsSection:e,supportsBlockRecordTable:e,supportsLwPolyline:e,supportsLineWeight:t>=23,supportsTrueColor:t>=25,supportsTransparency:t>=25,supportsUtf8CodePage:t>=27}}}function xi(i){return i===999?"comment":i===5?"handle":i<=9||i===100||i===102?"string":i===105?"handle":i>=101&&i<=109?"string":i<=59?"double":i<=79?"int":i<=89?"string":i<=99?"int":i<=149?"double":i<=159?"string":i<=169?"long":i<=179?"int":i<=209?"string":i<=239?"double":i<=269?"long":i<=289?"int":i<=299?"bool":i<=309?"string":i<=319?"binary":i<=369?"handle":i<=389?"int":i<=399?"handle":i<=409?"int":i<=419?"string":i<=429?"int":i<=439?"string":i<=449||i<=459?"int":i<=469?"double":i<=479?"string":i===480||i===481?"handle":i===1004?"binary":i===1005?"handle":i>=1e3&&i<=1009?"string":i>=1010&&i<=1059?"double":i>=1060&&i<=1070||i===1071?"int":"string"}function Hl(i){return i>=90&&i<=99||i>=420&&i<=429||i>=440&&i<=449||i>=450&&i<=459||i===1071}var Oa=(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))(Oa||{});const sp=["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"],Wl=i=>sp[i],_s=(()=>{const i=`AutoCAD Binary DXF\r
|
|
2
|
-
`,t=new Uint8Array(22);for(let e=0;e<i.length;e++)t[e]=i.charCodeAt(e);return t[20]=26,t[21]=0,t})(),
|
|
3
|
-
`,t=new Uint8Array(22);for(let e=0;e<i.length;e++)t[e]=i.charCodeAt(e);return t[20]=26,t[21]=0,t})();class
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Ea=(i=>(i[i.Invalid=-9999]="Invalid",i[i.Start=0]="Start",i[i.Text=1]="Text",i[i.AttributeTag=2]="AttributeTag",i[i.BlockName=2]="BlockName",i[i.ShapeName=2]="ShapeName",i[i.SymbolTableName=2]="SymbolTableName",i[i.SymbolTableRecordName=2]="SymbolTableRecordName",i[i.MlineStyleName=2]="MlineStyleName",i[i.AttributePrompt=3]="AttributePrompt",i[i.Description=3]="Description",i[i.DimPostString=3]="DimPostString",i[i.DimStyleName=3]="DimStyleName",i[i.LinetypeProse=3]="LinetypeProse",i[i.TextFontFile=3]="TextFontFile",i[i.CLShapeName=4]="CLShapeName",i[i.DimensionAlternativePrefixSuffix=4]="DimensionAlternativePrefixSuffix",i[i.SymbolTableRecordComments=4]="SymbolTableRecordComments",i[i.TextBigFontFile=4]="TextBigFontFile",i[i.Handle=5]="Handle",i[i.DimensionBlock=5]="DimensionBlock",i[i.LinetypeName=6]="LinetypeName",i[i.DimBlk1=6]="DimBlk1",i[i.TextStyleName=7]="TextStyleName",i[i.DimBlk2=7]="DimBlk2",i[i.LayerName=8]="LayerName",i[i.CLShapeText=9]="CLShapeText",i[i.XCoordinate=10]="XCoordinate",i[i.YCoordinate=20]="YCoordinate",i[i.ZCoordinate=30]="ZCoordinate",i[i.Real=40]="Real",i[i.TxtSize=40]="TxtSize",i[i.ViewportHeight=40]="ViewportHeight",i[i.Angle=50]="Angle",i[i.ViewportSnapAngle=50]="ViewportSnapAngle",i[i.Visibility=60]="Visibility",i[i.Int16=70]="Int16",i[i.Int32=90]="Int32",i[i.Int64=160]="Int64",i[i.Int8=280]="Int8",i[i.Thickness=39]="Thickness",i[i.Elevation=38]="Elevation",i[i.LinetypeScale=48]="LinetypeScale",i[i.DashLength=49]="DashLength",i[i.MlineOffset=49]="MlineOffset",i[i.LinetypeElement=49]="LinetypeElement",i[i.NormalX=210]="NormalX",i[i.NormalY=220]="NormalY",i[i.NormalZ=230]="NormalZ",i[i.UcsOrg=110]="UcsOrg",i[i.UcsOrientationX=111]="UcsOrientationX",i[i.UcsOrientationY=112]="UcsOrientationY",i[i.ViewHeight=45]="ViewHeight",i[i.ViewWidth=41]="ViewWidth",i[i.ViewLensLength=42]="ViewLensLength",i[i.ViewFrontClip=43]="ViewFrontClip",i[i.ViewBackClip=44]="ViewBackClip",i[i.ViewBrightness=141]="ViewBrightness",i[i.ViewContrast=142]="ViewContrast",i[i.ViewMode=71]="ViewMode",i[i.ViewportActive=68]="ViewportActive",i[i.ViewportAspect=41]="ViewportAspect",i[i.ViewportGrid=76]="ViewportGrid",i[i.ViewportIcon=74]="ViewportIcon",i[i.ViewportNumber=69]="ViewportNumber",i[i.ViewportSnap=75]="ViewportSnap",i[i.ViewportSnapPair=78]="ViewportSnapPair",i[i.ViewportSnapStyle=77]="ViewportSnapStyle",i[i.ViewportTwist=51]="ViewportTwist",i[i.ViewportVisibility=67]="ViewportVisibility",i[i.ViewportZoom=73]="ViewportZoom",i[i.Color=62]="Color",i[i.ColorRgb=420]="ColorRgb",i[i.ColorName=430]="ColorName",i[i.LineWeight=370]="LineWeight",i[i.PlotStyleNameType=380]="PlotStyleNameType",i[i.PlotStyleNameId=390]="PlotStyleNameId",i[i.GradientObjType=450]="GradientObjType",i[i.GradientAngle=460]="GradientAngle",i[i.GradientName=470]="GradientName",i[i.GradientColCount=453]="GradientColCount",i[i.GradientPatType=451]="GradientPatType",i[i.GradientTintType=452]="GradientTintType",i[i.GradientShift=461]="GradientShift",i[i.GradientColVal=463]="GradientColVal",i[i.GradientTintVal=462]="GradientTintVal",i[i.SoftPointerId=330]="SoftPointerId",i[i.HardPointerId=340]="HardPointerId",i[i.SoftOwnershipId=350]="SoftOwnershipId",i[i.HardOwnershipId=360]="HardOwnershipId",i[i.ArbitraryHandle=320]="ArbitraryHandle",i[i.ExtendedDataAsciiString=1e3]="ExtendedDataAsciiString",i[i.ExtendedDataRegAppName=1001]="ExtendedDataRegAppName",i[i.ExtendedDataControlString=1002]="ExtendedDataControlString",i[i.ExtendedDataLayerName=1003]="ExtendedDataLayerName",i[i.ExtendedDataBinaryChunk=1004]="ExtendedDataBinaryChunk",i[i.ExtendedDataHandle=1005]="ExtendedDataHandle",i[i.ExtendedDataXCoordinate=1010]="ExtendedDataXCoordinate",i[i.ExtendedDataWorldXCoordinate=1011]="ExtendedDataWorldXCoordinate",i[i.ExtendedDataWorldXDisp=1012]="ExtendedDataWorldXDisp",i[i.ExtendedDataWorldXDir=1013]="ExtendedDataWorldXDir",i[i.ExtendedDataYCoordinate=1020]="ExtendedDataYCoordinate",i[i.ExtendedDataWorldYCoordinate=1021]="ExtendedDataWorldYCoordinate",i[i.ExtendedDataWorldYDisp=1022]="ExtendedDataWorldYDisp",i[i.ExtendedDataWorldYDir=1023]="ExtendedDataWorldYDir",i[i.ExtendedDataZCoordinate=1030]="ExtendedDataZCoordinate",i[i.ExtendedDataWorldZCoordinate=1031]="ExtendedDataWorldZCoordinate",i[i.ExtendedDataWorldZDisp=1032]="ExtendedDataWorldZDisp",i[i.ExtendedDataWorldZDir=1033]="ExtendedDataWorldZDir",i[i.ExtendedDataReal=1040]="ExtendedDataReal",i[i.ExtendedDataDist=1041]="ExtendedDataDist",i[i.ExtendedDataScale=1042]="ExtendedDataScale",i[i.ExtendedDataInteger16=1070]="ExtendedDataInteger16",i[i.ExtendedDataInteger32=1071]="ExtendedDataInteger32",i[i.XTextString=300]="XTextString",i[i.XReal=140]="XReal",i[i.XInt16=170]="XInt16",i[i.XXInt16=270]="XXInt16",i[i.Subclass=100]="Subclass",i[i.ControlString=102]="ControlString",i[i.EmbeddedObjectStart=101]="EmbeddedObjectStart",i[i.End=-1]="End",i[i.FirstEntityId=-2]="FirstEntityId",i[i.HeaderId=-2]="HeaderId",i[i.XDataStart=-3]="XDataStart",i[i.Operator=-4]="Operator",i[i.PReactors=-5]="PReactors",i[i.XDictionary=-6]="XDictionary",i))(Ea||{});exports.AcCmColorMethod=void 0;(function(i){i[i.ByColor=1]="ByColor",i[i.ByACI=2]="ByACI",i[i.ByLayer=3]="ByLayer",i[i.ByBlock=4]="ByBlock",i[i.None=0]="None"})(exports.AcCmColorMethod||(exports.AcCmColorMethod={}));var tg=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},eg=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},qo={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},ws=[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],ee=(function(){function i(){}return i.getColorByIndex=function(t){return ws[t]},i.getIndexByColor=function(t){for(var e=ws.length-1,n=1;n<e;++n)if(ws[n]===t)return n},i.getColorByName=function(t){return qo[t.toLowerCase()]},i.getNameByColor=function(t){var e,n;try{for(var r=tg(Object.entries(qo)),s=r.next();!s.done;s=r.next()){var a=eg(s.value,2),o=a[0],c=a[1];if(c===t)return o}}catch(l){e={error:l}}finally{try{s&&!s.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}},i.getNameByIndex=function(t){var e=this.getColorByIndex(t);return this.getNameByColor(e)},i})(),ng=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},j=(function(){function i(t,e){t===void 0&&(t=exports.AcCmColorMethod.ByLayer),this._colorMethod=t,this._colorMethod==exports.AcCmColorMethod.ByColor&&e==null?this._value=16777215:this._colorMethod==exports.AcCmColorMethod.ByACI?e==null?this._value=8:e===0?this._colorMethod=exports.AcCmColorMethod.ByBlock:e===256?this._colorMethod=exports.AcCmColorMethod.ByLayer:this._value=Math.max(0,Math.min(e,256)):this._value=e}return Object.defineProperty(i.prototype,"colorMethod",{get:function(){return this._colorMethod},set:function(t){this._colorMethod=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"red",{get:function(){var t=this.RGB;return t!=null?t>>16&255:void 0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"green",{get:function(){var t=this.RGB;return t!=null?t>>8&255:void 0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"blue",{get:function(){var t=this.RGB;return t!=null?t&255:void 0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"RGB",{get:function(){switch(this._colorMethod){case exports.AcCmColorMethod.ByColor:case exports.AcCmColorMethod.ByBlock:case exports.AcCmColorMethod.ByLayer:return this._value;case exports.AcCmColorMethod.ByACI:return this._value?ee.getColorByIndex(this._value):this._value;default:return}},enumerable:!1,configurable:!0}),i.prototype.setRGB=function(t,e,n){var r=Math.max(0,Math.min(255,Math.round(t))),s=Math.max(0,Math.min(255,Math.round(e))),a=Math.max(0,Math.min(255,Math.round(n)));return this._value=r<<16|s<<8|a,this._colorMethod=exports.AcCmColorMethod.ByColor,this},i.prototype.setRGBValue=function(t){return t==null||!Number.isFinite(t)?this:(this._value=t&16777215,this._colorMethod=exports.AcCmColorMethod.ByColor,this)},i.prototype.setRGBFromCss=function(t){if(!t)return this;var e=t.trim().toLowerCase();if(e.startsWith("#")){var n=0,r=0,s=0;if(e.length===7)n=parseInt(e.substr(1,2),16),r=parseInt(e.substr(3,2),16),s=parseInt(e.substr(5,2),16);else if(e.length===4)n=parseInt(e[1]+e[1],16),r=parseInt(e[2]+e[2],16),s=parseInt(e[3]+e[3],16);else return this;return this.setRGB(n,r,s)}var a=e.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(a){var n=parseInt(a[1],10),r=parseInt(a[2],10),s=parseInt(a[3],10);return this.setRGB(n,r,s)}var o=ee.getColorByName(t);return o!==void 0?this.setRGBValue(o):this},i.prototype.setScalar=function(t){return this.setRGB(t,t,t)},Object.defineProperty(i.prototype,"hexColor",{get:function(){var t=this.RGB;if(t!=null){var e=t.toString(16).padStart(6,"0").toUpperCase();return"0x"+e}},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"cssColor",{get:function(){var t=this.RGB;if(t!=null)return"rgb(".concat(t>>16&255,",").concat(t>>8&255,",").concat(t&255,")")},enumerable:!1,configurable:!0}),i.prototype.cssColorAlpha=function(t){var e=this.RGB;if(e!=null)return"rgba(".concat(e>>16&255,",").concat(e>>8&255,",").concat(e&255,",").concat(t,")")},Object.defineProperty(i.prototype,"colorIndex",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByACI?this._value:this._colorMethod===exports.AcCmColorMethod.ByLayer?256:this._colorMethod===exports.AcCmColorMethod.ByBlock?0:void 0},set:function(t){if(t!=null){var e=Math.max(0,Math.min(256,Math.round(t)));e===0?(this._colorMethod=exports.AcCmColorMethod.ByBlock,this._value=void 0):e===256?(this._colorMethod=exports.AcCmColorMethod.ByLayer,this._value=void 0):(this._colorMethod=exports.AcCmColorMethod.ByACI,this._value=e)}},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByColor",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByColor},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByACI",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByACI},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isForeground",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByACI&&this._value===7},enumerable:!1,configurable:!0}),i.prototype.setForeground=function(){return this._colorMethod=exports.AcCmColorMethod.ByACI,this._value=7,this},Object.defineProperty(i.prototype,"isByLayer",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByLayer},enumerable:!1,configurable:!0}),i.prototype.setByLayer=function(t){return this._colorMethod=exports.AcCmColorMethod.ByLayer,t==null?this._value=256:this._value=t,this},Object.defineProperty(i.prototype,"isByBlock",{get:function(){return this._colorMethod===exports.AcCmColorMethod.ByBlock},enumerable:!1,configurable:!0}),i.prototype.setByBlock=function(t){return this._colorMethod=exports.AcCmColorMethod.ByBlock,t==null?this._value=0:this._value=t,this},Object.defineProperty(i.prototype,"colorName",{get:function(){switch(this._colorMethod){case exports.AcCmColorMethod.ByLayer:return"ByLayer";case exports.AcCmColorMethod.ByBlock:return"ByBlock";case exports.AcCmColorMethod.ByColor:return this._value?ee.getNameByColor(this._value):"";case exports.AcCmColorMethod.ByACI:return this._value?ee.getNameByIndex(this._value):"";default:return}},set:function(t){if(t){var e=ee.getColorByName(t);e!==void 0&&(this._value=e,this._colorMethod=exports.AcCmColorMethod.ByColor)}},enumerable:!1,configurable:!0}),i.prototype.clone=function(){var t=new i;return t._colorMethod=this._colorMethod,t._value=this._value,t},i.prototype.copy=function(t){return this._colorMethod=t._colorMethod,this._value=t._value,this},i.prototype.equals=function(t){return this._colorMethod===t._colorMethod&&this._value===t._value},i.prototype.toString=function(){switch(this._colorMethod){case exports.AcCmColorMethod.None:return"None";case exports.AcCmColorMethod.ByLayer:return"ByLayer";case exports.AcCmColorMethod.ByBlock:return"ByBlock";case exports.AcCmColorMethod.ByACI:return this._value!==void 0?String(this._value):"";case exports.AcCmColorMethod.ByColor:return this._value?"RGB:".concat(this.red,",").concat(this.green,",").concat(this.blue):"";default:return""}},i.fromString=function(t){if(t){var e=t.trim();if(/^none$/i.test(e))return new i(exports.AcCmColorMethod.None);if(/^bylayer$/i.test(e))return new i(exports.AcCmColorMethod.ByLayer);if(/^byblock$/i.test(e))return new i(exports.AcCmColorMethod.ByBlock);var n=e.match(/^rgb\s*:\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})$/i);if(n){var r=Number(n[1]),s=Number(n[2]),a=Number(n[3]),o=new i(exports.AcCmColorMethod.ByColor);return o.setRGB(r,s,a),o}if(/^\d{1,3},\d{1,3},\d{1,3}$/.test(e)){var c=ng(e.split(",").map(Number),3),r=c[0],s=c[1],a=c[2],o=new i(exports.AcCmColorMethod.ByColor);return o.setRGB(r,s,a),o}if(/^\d+$/.test(e)){var l=parseInt(e,10);return new i(exports.AcCmColorMethod.ByACI,l)}if(/^book\$/i.test(e)){var h=e.substring(e.indexOf("$")+1),u=ee.getColorByName(h);return u!=null?new i(exports.AcCmColorMethod.ByColor,u):void 0}var d=ee.getColorByName(e);if(d!=null)return new i(exports.AcCmColorMethod.ByColor,d)}},i})(),ig=(function(){function i(t,e){t===void 0&&(t=exports.AcCmColorMethod.ByColor),e===void 0&&(e=0),this._colorMethod=t,this._value=e}return Object.defineProperty(i.prototype,"colorMethd",{get:function(){return this._colorMethod},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"red",{get:function(){return this._value>>16&255},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=this._value&65535|(t&255)<<16},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"green",{get:function(){return this._value>>8&255},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=this._value&16711935|(t&255)<<8},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"blue",{get:function(){return this._value&255},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=this._value&16776960|t&255},enumerable:!1,configurable:!0}),i.prototype.setRGB=function(t,e,n){this._colorMethod=exports.AcCmColorMethod.ByColor,this._value=(t&255)<<16|(e&255)<<8|n&255},Object.defineProperty(i.prototype,"colorIndex",{get:function(){return this._value},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByACI,this._value=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"layerIndex",{get:function(){return this._value},set:function(t){this._colorMethod=exports.AcCmColorMethod.ByLayer,this._value=t},enumerable:!1,configurable:!0}),i.prototype.isByColor=function(){return this._colorMethod===exports.AcCmColorMethod.ByColor},i.prototype.isByLayer=function(){return this._colorMethod===exports.AcCmColorMethod.ByLayer},i.prototype.isByBlock=function(){return this._colorMethod===exports.AcCmColorMethod.ByBlock},i.prototype.isByACI=function(){return this._colorMethod===exports.AcCmColorMethod.ByACI},i.prototype.isNone=function(){return this._colorMethod===exports.AcCmColorMethod.None},Object.defineProperty(i.prototype,"rawValue",{get:function(){return this._value},set:function(t){this._value=t},enumerable:!1,configurable:!0}),i})(),Et={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")}},rg=(function(){function i(){this._listeners={}}return i.prototype.addEventListener=function(t,e){this._listeners===void 0&&(this._listeners={});var n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)},i.prototype.hasEventListener=function(t,e){if(this._listeners===void 0)return!1;var n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1},i.prototype.removeEventListener=function(t,e){if(this._listeners!==void 0){var n=this._listeners,r=n[t];if(r!==void 0){var s=r.indexOf(e);s!==-1&&r.splice(s,1)}}},i.prototype.dispatchEvent=function(t){if(this._listeners!==void 0){var e=this._listeners,n=e[t.type];if(n!==void 0){t.target=this;for(var r=n.slice(0),s=0,a=r.length;s<a;s++)r[s].call(this,t)}}},i})(),sg=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},ag=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},og=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},lt=(function(){function i(){this.listeners=[]}return i.prototype.addEventListener=function(t){this.listeners.push(t)},i.prototype.removeEventListener=function(t){this.listeners=this.listeners.filter(function(e){return e!==t})},i.prototype.replaceEventListener=function(t){this.removeEventListener(t),this.addEventListener(t)},i.prototype.dispatch=function(t){for(var e,n,r=[],s=1;s<arguments.length;s++)r[s-1]=arguments[s];try{for(var a=sg(this.listeners),o=a.next();!o.done;o=a.next()){var c=o.value,l=c;l.call.apply(l,og([null,t],ag(r),!1))}}catch(h){e={error:h}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}},i})(),Ks=function(){return Ks=Object.assign||function(i){for(var t,e=1,n=arguments.length;e<n;e++){t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Ks.apply(this,arguments)},cg=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},lg=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},nl=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function Fn(i){return i===null||typeof i!="object"?i:Array.isArray(i)?lg([],cg(i),!1):Ks({},i)}function Zs(i){if(i===null||typeof i!="object")return i;if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i.source,i.flags);if(Array.isArray(i))return i.map(Zs);var t={};for(var e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=Zs(i[e]));return t}function Wt(i){for(var t,e,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];try{for(var s=nl(n),a=s.next();!a.done;a=s.next()){var o=a.value;if(o)for(var c in o)Object.prototype.hasOwnProperty.call(o,c)&&i[c]===void 0&&(i[c]=o[c])}}catch(l){t={error:l}}finally{try{a&&!a.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}return i}function il(i,t){return i!=null&&Object.prototype.hasOwnProperty.call(i,t)}function rl(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 He(i,t){var e,n;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(var r=0;r<i.length;r++)if(!He(i[r],t[r]))return!1;return!0}var s=Object.keys(i),a=Object.keys(t);if(s.length!==a.length)return!1;try{for(var o=nl(s),c=o.next();!c.done;c=o.next()){var l=c.value;if(!Object.prototype.hasOwnProperty.call(t,l)||!He(i[l],t[l]))return!1}}catch(h){e={error:h}}finally{try{c&&!c.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}return!0}function hg(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Wi={exports:{}},ug=Wi.exports,Ko;function dg(){return Ko||(Ko=1,(function(i){(function(t,e){i.exports?i.exports=e():t.log=e()})(ug,function(){var t=function(){},e="undefined",n=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"],s={},a=null;function o(p,m){var y=p[m];if(typeof y.bind=="function")return y.bind(p);try{return Function.prototype.bind.call(y,p)}catch{return function(){return Function.prototype.apply.apply(y,[p,arguments])}}}function c(){console.log&&(console.log.apply||Function.prototype.apply.apply(console.log,[console,arguments]))}function l(p){return p==="debug"&&(p="log"),typeof console===e?!1:p==="trace"&&n?c:console[p]!==void 0?o(console,p):console.log!==void 0?o(console,"log"):t}function h(){for(var p=this.getLevel(),m=0;m<r.length;m++){var y=r[m];this[y]=m<p?t:this.methodFactory(y,p,this.name)}if(this.log=this.debug,typeof console===e&&p<this.levels.SILENT)return"No console available for logging"}function u(p){return function(){typeof console!==e&&(h.call(this),this[p].apply(this,arguments))}}function d(p,m,y){return l(p)||u.apply(this,arguments)}function g(p,m){var y=this,_,v,w,A="loglevel";typeof p=="string"?A+=":"+p:typeof p=="symbol"&&(A=void 0);function E(Y){var O=(r[Y]||"silent").toUpperCase();if(!(typeof window===e||!A)){try{window.localStorage[A]=O;return}catch{}try{window.document.cookie=encodeURIComponent(A)+"="+O+";"}catch{}}}function I(){var Y;if(!(typeof window===e||!A)){try{Y=window.localStorage[A]}catch{}if(typeof Y===e)try{var O=window.document.cookie,Z=encodeURIComponent(A),K=O.indexOf(Z+"=");K!==-1&&(Y=/^([^;]+)/.exec(O.slice(K+Z.length+1))[1])}catch{}return y.levels[Y]===void 0&&(Y=void 0),Y}}function M(){if(!(typeof window===e||!A)){try{window.localStorage.removeItem(A)}catch{}try{window.document.cookie=encodeURIComponent(A)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function T(Y){var O=Y;if(typeof O=="string"&&y.levels[O.toUpperCase()]!==void 0&&(O=y.levels[O.toUpperCase()]),typeof O=="number"&&O>=0&&O<=y.levels.SILENT)return O;throw new TypeError("log.setLevel() called with invalid level: "+Y)}y.name=p,y.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},y.methodFactory=m||d,y.getLevel=function(){return w??v??_},y.setLevel=function(Y,O){return w=T(Y),O!==!1&&E(w),h.call(y)},y.setDefaultLevel=function(Y){v=T(Y),I()||y.setLevel(Y,!1)},y.resetLevel=function(){w=null,M(),h.call(y)},y.enableAll=function(Y){y.setLevel(y.levels.TRACE,Y)},y.disableAll=function(Y){y.setLevel(y.levels.SILENT,Y)},y.rebuild=function(){if(a!==y&&(_=T(a.getLevel())),h.call(y),a===y)for(var Y in s)s[Y].rebuild()},_=T(a?a.getLevel():"WARN");var R=I();R!=null&&(w=T(R)),h.call(y)}a=new g,a.getLogger=function(m){if(typeof m!="symbol"&&typeof m!="string"||m==="")throw new TypeError("You must supply a name when creating a logger.");var y=s[m];return y||(y=s[m]=new g(m,a.methodFactory)),y};var f=typeof window!==e?window.log:void 0;return a.noConflict=function(){return typeof window!==e&&window.log===a&&(window.log=f),a},a.getLoggers=function(){return s},a.default=a,a})})(Wi)),Wi.exports}var gg=dg();const fg=hg(gg);var pg=!0,zn=fg;zn.setLevel("debug");var mg=function(i){try{zn.setLevel(i)}catch(t){zn.setLevel("error"),zn.error(t)}},Qs=(function(){function i(t,e){this.events={attrChanged:new lt,modelChanged:new lt},this._changing=!1,this._previousAttributes={},this._pending=!1;var n=t||{};e&&Wt(n,e),this.attributes=n,this.changed={}}return i.prototype.get=function(t){return this.attributes[t]},i.prototype.set=function(t,e,n){if(t==null)return this;var r;typeof t=="object"?(r=t,n=e):(r={},r[t]=e),n||(n={});var s=n.unset,a=n.silent,o=[],c=this._changing;this._changing=!0,c||(this._previousAttributes=Fn(this.attributes),this.changed={});var l=this.attributes,h=this.changed,u=this._previousAttributes;for(var d in r)e=r[d],He(l[d],e)||o.push(d),He(u[d],e)?delete h[d]:h[d]=e,s?delete l[d]:l[d]=e;if(!a){o.length&&(this._pending=n);for(var g=0;g<o.length;g++)this.events.attrChanged.dispatch({object:this,attrName:o[g],attrValue:l[o[g]],options:n})}if(c)return this;if(!a)for(;this._pending;)n=this._pending,this._pending=!1,this.events.modelChanged.dispatch({object:this,options:n});return this._pending=!1,this._changing=!1,this},i.prototype.has=function(t){return this.get(t)!=null},i.prototype.hasChanged=function(t){return t==null?!rl(this.changed):il(this.changed,t)},i.prototype.changedAttributes=function(t){if(!t)return this.hasChanged()?Fn(this.changed):{};var e=this._changing?this._previousAttributes:this.attributes,n={};for(var r in t){var s=t[r];He(e[r],s)||(n[r]=s)}return n},i.prototype.previous=function(t){return t==null||!this._previousAttributes?null:this._previousAttributes[t]},i.prototype.previousAttributes=function(){return Fn(this._previousAttributes)},i.prototype.clone=function(){var t=Fn(this.attributes);return new i(t)},i})(),yg=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},bg=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},La=(function(){function i(){this.entries=new Map}return i.getInstance=function(){return i.instance||(i.instance=new i),i.instance},i.prototype.collect=function(t){this.entries.set(t.name,t)},i.prototype.printAll=function(){var t,e;try{for(var n=yg(this.entries),r=n.next();!r.done;r=n.next())var s=bg(r.value,2),a=s[0],o=s[1]}catch(c){t={error:c}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}},i.prototype.clear=function(){this.entries.clear()},i.prototype.getAll=function(){return Array.from(this.entries.values())},i.prototype.getEntry=function(t){return this.entries.get(t)},i.prototype.remove=function(t){return this.entries.delete(t)},i})(),_g=(function(){function i(){}return i.formatBytes=function(t,e){if(e===void 0&&(e=2),t===0)return"0 B";var n=1024,r=Math.max(0,e),s=["B","KB","MB","GB","TB"],a=Math.floor(Math.log(t)/Math.log(n)),o=t/Math.pow(n,a);return"".concat(parseFloat(o.toFixed(r))," ").concat(s[a])},i})();exports.AcCmTransparencyMethod=void 0;(function(i){i[i.ByLayer=0]="ByLayer",i[i.ByBlock=1]="ByBlock",i[i.ByAlpha=2]="ByAlpha",i[i.ErrorValue=3]="ErrorValue"})(exports.AcCmTransparencyMethod||(exports.AcCmTransparencyMethod={}));var ht=(function(){function i(t){t!==void 0?(this._method=exports.AcCmTransparencyMethod.ByAlpha,this._alpha=i.clampAlpha(t)):(this._method=exports.AcCmTransparencyMethod.ByLayer,this._alpha=255)}return Object.defineProperty(i.prototype,"method",{get:function(){return this._method},set:function(t){this._method=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"alpha",{get:function(){return this._alpha},set:function(t){this._alpha=i.clampAlpha(t),this._method=exports.AcCmTransparencyMethod.ByAlpha},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"percentage",{get:function(){if(this._method===exports.AcCmTransparencyMethod.ByAlpha)return Math.round((1-this._alpha/255)*100)},set:function(t){var e=Math.max(0,Math.min(100,t)),n=Math.round(255*(1-e/100));this.alpha=n},enumerable:!1,configurable:!0}),i.clampAlpha=function(t){return Math.max(0,Math.min(255,Math.floor(t)))},Object.defineProperty(i.prototype,"isByAlpha",{get:function(){return this._method===exports.AcCmTransparencyMethod.ByAlpha},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByBlock",{get:function(){return this._method===exports.AcCmTransparencyMethod.ByBlock},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isByLayer",{get:function(){return this._method===exports.AcCmTransparencyMethod.ByLayer},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isClear",{get:function(){return this.isByAlpha&&this._alpha===0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isSolid",{get:function(){return this.isByAlpha&&this._alpha===255},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"isInvalid",{get:function(){return this._method===exports.AcCmTransparencyMethod.ErrorValue},enumerable:!1,configurable:!0}),i.prototype.serialize=function(){var t=this._method;return t<<24|this._alpha},i.prototype.clone=function(){var t=new i;return t._method=this._method,t._alpha=this._alpha,t},i.prototype.equals=function(t){return this._method===t._method&&this._alpha===t._alpha},i.prototype.toString=function(){return this.isByLayer?"ByLayer":this.isByBlock?"ByBlock":this._alpha.toString()},i.fromString=function(t){var e=t.trim(),n=e.toLowerCase();if(n===""||n==="."||n==="use current"||n==="bylayer"){var r=new i;return r._method=exports.AcCmTransparencyMethod.ByLayer,r}if(n==="byblock"){var s=new i;return s._method=exports.AcCmTransparencyMethod.ByBlock,s}var a=Number(e);if(Number.isInteger(a)&&a>=0&&a<=255){var o=new i;return a<=90?o.percentage=a:o.alpha=a,o}var c=new i;return c._method=exports.AcCmTransparencyMethod.ErrorValue,c},i.deserialize=function(t){var e=t>>>24&255,n=t&255,r=e>=exports.AcCmTransparencyMethod.ByLayer&&e<=exports.AcCmTransparencyMethod.ErrorValue?e:exports.AcCmTransparencyMethod.ErrorValue,s=new i;return s._method=r,s._alpha=i.clampAlpha(n),s},i})(),xg=function(i,t,e,n){function r(s){return s instanceof e?s:new e(function(a){a(s)})}return new(e||(e=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(u){a(u)}}function c(h){try{l(n.throw(h))}catch(u){a(u)}}function l(h){h.done?s(h.value):r(h.value).then(o,c)}l((n=n.apply(i,t||[])).next())})},wg=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},Zn=50;function Cn(){return new Promise(function(i){typeof globalThis<"u"&&typeof globalThis.requestAnimationFrame=="function"?globalThis.requestAnimationFrame(function(){return i()}):setTimeout(i,0)})}function sl(){return new Promise(function(i){if(typeof globalThis<"u"&&typeof globalThis.requestAnimationFrame=="function"){var t=globalThis.requestAnimationFrame;t(function(){return t(function(){return i()})})}else setTimeout(i,0)})}var Qr=(function(){function i(t){t===void 0&&(t=Zn),this._budgetMs=t,this._lastYieldCompletedAt=i.now()}return Object.defineProperty(i.prototype,"budgetMs",{get:function(){return this._budgetMs},enumerable:!1,configurable:!0}),i.prototype.maybeYield=function(){return xg(this,arguments,void 0,function(t){var e;return t===void 0&&(t=Cn),wg(this,function(n){switch(n.label){case 0:return e=i.now(),e-this._lastYieldCompletedAt<this._budgetMs?[2,!1]:[4,t()];case 1:return n.sent(),this._lastYieldCompletedAt=i.now(),[2,!0]}})})},i.prototype.mark=function(){this._lastYieldCompletedAt=i.now()},i.now=function(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()},i})(),vs=function(i,t,e,n){function r(s){return s instanceof e?s:new e(function(a){a(s)})}return new(e||(e=Promise))(function(s,a){function o(h){try{l(n.next(h))}catch(u){a(u)}}function c(h){try{l(n.throw(h))}catch(u){a(u)}}function l(h){h.done?s(h.value):r(h.value).then(o,c)}l((n=n.apply(i,t||[])).next())})},Ii=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},al=(function(){function i(t){this.name=t}return i.prototype.run=function(t){throw new Error("run() must be implemented by subclass")},i})(),ol=(function(){function i(){this.tasks=[],this.onProgress=function(){},this.onComplete=function(){},this.onError=function(){return!1}}return i.prototype.scheduleTask=function(t){return vs(this,void 0,void 0,function(){return Ii(this,function(e){switch(e.label){case 0:return[4,Cn()];case 1:return e.sent(),[2,t()]}})})},i.prototype.addTask=function(t){this.tasks.push(t)},i.prototype.setProgressCallback=function(t){this.onProgress=t},i.prototype.setCompleteCallback=function(t){this.onComplete=t},i.prototype.setErrorCallback=function(t){this.onError=t},i.prototype.run=function(t){return vs(this,void 0,void 0,function(){var e,n,r,s,a,o,c=this;return Ii(this,function(l){switch(l.label){case 0:e=this.tasks.length,n=t,r=function(h){var u,d,g;return Ii(this,function(f){switch(f.label){case 0:u=s.tasks[h],f.label=1;case 1:return f.trys.push([1,3,,4]),[4,s.scheduleTask(function(){return vs(c,void 0,void 0,function(){var p;return Ii(this,function(m){switch(m.label){case 0:return[4,u.run(n)];case 1:return p=m.sent(),this.onProgress((h+1)/e,u),[2,p]}})})})];case 2:return n=f.sent(),[3,4];case 3:return d=f.sent(),g=s.onError({error:d,taskIndex:h,task:u}),g?[2,{value:Promise.reject(d)}]:[3,4];case 4:return[2]}})},s=this,a=0,l.label=1;case 1:return a<e?[5,r(a)]:[3,4];case 2:if(o=l.sent(),typeof o=="object")return[2,o.value];l.label=3;case 3:return a++,[3,1];case 4:return this.onComplete(n),[2]}})})},i})(),cl=(function(){function i(t,e,n){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=n}return i.prototype.itemStart=function(t){this.itemsTotal++,this.isLoading===!1&&this.onStart!==void 0&&this.onStart(t,this.itemsLoaded,this.itemsTotal),this.isLoading=!0},i.prototype.itemEnd=function(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())},i.prototype.itemError=function(t){this.onError!==void 0&&this.onError(t)},i.prototype.resolveURL=function(t){return this.urlModifier?this.urlModifier(t):t},i.prototype.setURLModifier=function(t){return this.urlModifier=t,this},i.prototype.addHandler=function(t,e){return this.handlers.push(t,e),this},i.prototype.removeHandler=function(t){var e=this.handlers.indexOf(t);return e!==-1&&this.handlers.splice(e,2),this},i.prototype.getHandler=function(t){for(var e=0,n=this.handlers.length;e<n;e+=2){var r=this.handlers[e],s=this.handlers[e+1];if(r.global&&(r.lastIndex=0),r.test(t))return s}return null},i})(),ll=new cl,vg=(function(){function i(t){this.manager=t!==void 0?t:ll,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}return i.prototype.loadAsync=function(t,e){var n=this;return new Promise(function(r,s){n.load(t,r,e,s)})},i.prototype.parse=function(t){},i.prototype.setCrossOrigin=function(t){return this.crossOrigin=t,this},i.prototype.setWithCredentials=function(t){return this.withCredentials=t,this},i.prototype.setPath=function(t){return this.path=t,this},i.prototype.setResourcePath=function(t){return this.resourcePath=t,this},i.prototype.setRequestHeader=function(t){return this.requestHeader=t,this},i})(),Pt=["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"],Zo=1234567,Ca=Math.PI/180,Ta=180/Math.PI;function hl(){var i=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,n=Math.random()*4294967295|0,r=Pt[i&255]+Pt[i>>8&255]+Pt[i>>16&255]+Pt[i>>24&255]+"-"+Pt[t&255]+Pt[t>>8&255]+"-"+Pt[t>>16&15|64]+Pt[t>>24&255]+"-"+Pt[e&63|128]+Pt[e>>8&255]+"-"+Pt[e>>16&255]+Pt[e>>24&255]+Pt[n&255]+Pt[n>>8&255]+Pt[n>>16&255]+Pt[n>>24&255];return r.toLowerCase()}function pe(i,t,e){return Math.max(t,Math.min(e,i))}function Ma(i,t){return(i%t+t)%t}function ul(i,t,e,n,r){return n+(i-t)*(r-n)/(e-t)}function dl(i,t,e){return i!==t?(e-i)/(t-i):0}function Oa(i,t,e){return(1-e)*i+e*t}function gl(i,t,e,n){return Oa(i,t,1-Math.exp(-e*n))}function fl(i,t){return t===void 0&&(t=1),t-Math.abs(Ma(i,t*2)-t)}function pl(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*(3-2*i))}function ml(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*i*(i*(i*6-15)+10))}function yl(i,t){return i+Math.floor(Math.random()*(t-i+1))}function bl(i,t){return i+Math.random()*(t-i)}function _l(i){return i*(.5-Math.random())}function xl(i){i!==void 0&&(Zo=i);var t=Zo+=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 wl(i){return i*Ca}function vl(i){return i*Ta}function Al(i){return(i&i-1)===0&&i!==0}function Pl(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function kl(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function We(i){var t=Math.PI*2;return(i%t+t)%t}function Sl(i,t,e){return i>t&&i<e||i>e&&i<t}function Il(i,t,e,n){return n===void 0&&(n=!1),i=We(i),t=We(t),e=We(e),n?t>e?i<=t&&i>=e:i<=t||i>=e:t<e?i>=t&&i<=e:i>=t||i<=e}function El(i,t,e){var n=We(e-i),r=We(t-i);return r<=n+1e-7}function Na(i){return i=Math.abs(i),i<1?0:Math.ceil(Math.log10(Math.abs(i)+1))}function Ll(i,t){t===void 0&&(t=1e-7);var e=Na(i);return Math.max(Math.pow(10,e)*t,t)}var C={DEG2RAD:Ca,RAD2DEG:Ta,generateUUID:hl,clamp:pe,euclideanModulo:Ma,mapLinear:ul,inverseLerp:dl,lerp:Oa,damp:gl,pingpong:fl,smoothstep:pl,smootherstep:ml,randInt:yl,randFloat:bl,randFloatSpread:_l,seededRandom:xl,degToRad:wl,radToDeg:vl,isPowerOfTwo:Al,ceilPowerOfTwo:Pl,floorPowerOfTwo:kl,normalizeAngle:We,isBetween:Sl,isBetweenAngle:Il,isAngleOnCcwSweep:El,intPartLength:Na,relativeEps:Ll},Ag=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},at=(function(){function i(t,e){this.x=0,this.y=0;var n=+(t!==void 0)+ +(e!==void 0);if(n!==0){if(n===1&&t instanceof Array){this.x=t[0],this.y=t[1];return}if(n===1){var r=t,s=r.x,a=r.y;this.x=s,this.y=a;return}if(n===2){this.x=t,this.y=e;return}throw Et.ILLEGAL_PARAMETERS}}return Object.defineProperty(i.prototype,"width",{get:function(){return this.x},set:function(t){this.x=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){return this.y},set:function(t){this.y=t},enumerable:!1,configurable:!0}),i.prototype.set=function(t,e){return this.x=t,this.y=e,this},i.prototype.setScalar=function(t){return this.x=t,this.y=t,this},i.prototype.setX=function(t){return this.x=t,this},i.prototype.setY=function(t){return this.y=t,this},i.prototype.setComponent=function(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},i.prototype.getComponent=function(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}},i.prototype.clone=function(){return new i(this.x,this.y)},i.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},i.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},i.prototype.addScalar=function(t){return this.x+=t,this.y+=t,this},i.prototype.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},i.prototype.addScaledVector=function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this},i.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},i.prototype.subScalar=function(t){return this.x-=t,this.y-=t,this},i.prototype.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},i.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this},i.prototype.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},i.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this},i.prototype.divideScalar=function(t){return this.multiplyScalar(1/t)},i.prototype.applyMatrix2d=function(t){var e=this.x,n=this.y,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6],this.y=r[1]*e+r[4]*n+r[7],this},i.prototype.min=function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this},i.prototype.max=function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this},i.prototype.clamp=function(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},i.prototype.clampScalar=function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this},i.prototype.clampLength=function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},i.prototype.floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},i.prototype.ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},i.prototype.round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},i.prototype.roundToZero=function(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this},i.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},i.prototype.dot=function(t){return this.x*t.x+this.y*t.y},i.prototype.cross=function(t){return this.x*t.y-this.y*t.x},i.prototype.lengthSq=function(){return this.x*this.x+this.y*this.y},i.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},i.prototype.manhattanLength=function(){return Math.abs(this.x)+Math.abs(this.y)},i.prototype.normalize=function(){return this.divideScalar(this.length()||1)},i.prototype.angle=function(){var t=Math.atan2(-this.y,-this.x)+Math.PI;return t},i.prototype.angleTo=function(t){var e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;var n=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,n)))},i.prototype.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},i.prototype.distanceToSquared=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},i.prototype.manhattanDistanceTo=function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)},i.prototype.setLength=function(t){return this.normalize().multiplyScalar(t)},i.prototype.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},i.prototype.lerpVectors=function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this},i.prototype.equals=function(t){return t.x===this.x&&t.y===this.y},i.prototype.fromArray=function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t},i.prototype.rotateAround=function(t,e){var n=Math.cos(e),r=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*n-a*r+t.x,this.y=s*r+a*n+t.y,this},i.prototype.random=function(){return this.x=Math.random(),this.y=Math.random(),this},i.prototype.relativeEps=function(t){return t===void 0&&(t=1e-7),Math.min(C.relativeEps(this.x,t),C.relativeEps(this.y,t))},i.prototype[Symbol.iterator]=function(){return Ag(this,function(t){switch(t.label){case 0:return[4,this.x];case 1:return t.sent(),[4,this.y];case 2:return t.sent(),[2]}})},i.EMPTY=Object.freeze(new i(0,0)),i})(),bi=(function(){function i(t,e,n,r,s,a,o,c,l){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&e!=null&&n!=null&&r!=null&&s!=null&&a!=null&&o!=null&&c!=null&&l!=null&&this.set(t,e,n,r,s,a,o,c,l)}return i.prototype.set=function(t,e,n,r,s,a,o,c,l){var h=this.elements;return h[0]=t,h[1]=r,h[2]=o,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=a,h[8]=l,this},i.prototype.identity=function(){return this.set(1,0,0,0,1,0,0,0,1),this},i.prototype.copy=function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this},i.prototype.extractBasis=function(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this},i.prototype.setFromMatrix4=function(t){var 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},i.prototype.multiply=function(t){return this.multiplyMatrices(this,t)},i.prototype.premultiply=function(t){return this.multiplyMatrices(t,this)},i.prototype.multiplyMatrices=function(t,e){var n=t.elements,r=e.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],h=n[4],u=n[7],d=n[2],g=n[5],f=n[8],p=r[0],m=r[3],y=r[6],_=r[1],v=r[4],w=r[7],A=r[2],E=r[5],I=r[8];return s[0]=a*p+o*_+c*A,s[3]=a*m+o*v+c*E,s[6]=a*y+o*w+c*I,s[1]=l*p+h*_+u*A,s[4]=l*m+h*v+u*E,s[7]=l*y+h*w+u*I,s[2]=d*p+g*_+f*A,s[5]=d*m+g*v+f*E,s[8]=d*y+g*w+f*I,this},i.prototype.multiplyScalar=function(t){var 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},i.prototype.determinant=function(){var t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8];return e*a*h-e*o*l-n*s*h+n*o*c+r*s*l-r*a*c},i.prototype.invert=function(){var t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],u=h*a-o*l,d=o*c-h*s,g=l*s-a*c,f=e*u+n*d+r*g;if(f===0)return this.set(0,0,0,0,0,0,0,0,0);var p=1/f;return t[0]=u*p,t[1]=(r*l-h*n)*p,t[2]=(o*n-r*a)*p,t[3]=d*p,t[4]=(h*e-r*c)*p,t[5]=(r*s-o*e)*p,t[6]=g*p,t[7]=(n*c-l*e)*p,t[8]=(a*e-n*s)*p,this},i.prototype.transpose=function(){var t,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},i.prototype.getNormalMatrix=function(t){return this.setFromMatrix4(t).invert().transpose()},i.prototype.transposeIntoArray=function(t){var 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},i.prototype.setUvTransform=function(t,e,n,r,s,a,o){var c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+t,-r*l,r*c,-r*(-l*a+c*o)+o+e,0,0,1),this},i.prototype.scale=function(t,e){return this.premultiply(As.makeScale(t,e)),this},i.prototype.rotate=function(t){return this.premultiply(As.makeRotation(-t)),this},i.prototype.translate=function(t,e){return this.premultiply(As.makeTranslation(t,e)),this},i.prototype.makeTranslation=function(t,e){return t instanceof at?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},i.prototype.makeRotation=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this},i.prototype.makeScale=function(t,e){return this.set(t,0,0,0,e,0,0,0,1),this},i.prototype.equals=function(t){for(var e=this.elements,n=t.elements,r=0;r<9;r++)if(e[r]!==n[r])return!1;return!0},i.prototype.fromArray=function(t,e){e===void 0&&(e=0);for(var n=0;n<9;n++)this.elements[n]=t[n+e];return this},i.prototype.toArray=function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);var n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t},i.prototype.clone=function(){return new i().fromArray(this.elements)},i.IDENTITY=Object.freeze(new i),i})(),As=new bi,ut=1e-6,V=2*Math.PI,Pg={x:0,y:0},Ra={x:0,y:0,z:0},X=(function(){function i(){this.equalPointTol=ut,this.equalVectorTol=ut}return i.prototype.clone=function(){var t=new i;return t.equalPointTol=this.equalPointTol,t.equalVectorTol=this.equalVectorTol,t},i.prototype.equalPoint2d=function(t,e){return new at(t).sub(e).length()<this.equalPointTol},i.prototype.equalPoint3d=function(t,e){return new x(t).sub(e).length()<this.equalPointTol},i.equalToZero=function(t,e){return e===void 0&&(e=ut),t<e&&t>-e},i.equal=function(t,e,n){return n===void 0&&(n=ut),Math.abs(t-e)<n},i.great=function(t,e,n){return n===void 0&&(n=ut),t-e>n},i.less=function(t,e,n){return n===void 0&&(n=ut),t-e<n},i.isPositive=function(t,e){return e===void 0&&(e=ut),t>e},i.isNonPositive=function(t,e){return e===void 0&&(e=ut),t<=e},i})(),_i=new X,kg=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},xn=(function(){function i(t,e,n,r){t===void 0&&(t=0),e===void 0&&(e=0),n===void 0&&(n=0),r===void 0&&(r=1),this._x=t,this._y=e,this._z=n,this._w=r}return i.slerpFlat=function(t,e,n,r,s,a,o){var c=n[r+0],l=n[r+1],h=n[r+2],u=n[r+3],d=s[a+0],g=s[a+1],f=s[a+2],p=s[a+3];if(o===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=u;return}if(o===1){t[e+0]=d,t[e+1]=g,t[e+2]=f,t[e+3]=p;return}if(u!==p||c!==d||l!==g||h!==f){var m=1-o,y=c*d+l*g+h*f+u*p,_=y>=0?1:-1,v=1-y*y;if(v>Number.EPSILON){var w=Math.sqrt(v),A=Math.atan2(w,y*_);m=Math.sin(m*A)/w,o=Math.sin(o*A)/w}var E=o*_;if(c=c*m+d*E,l=l*m+g*E,h=h*m+f*E,u=u*m+p*E,m===1-o){var I=1/Math.sqrt(c*c+l*l+h*h+u*u);c*=I,l*=I,h*=I,u*=I}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=u},i.multiplyQuaternionsFlat=function(t,e,n,r,s,a){var o=n[r],c=n[r+1],l=n[r+2],h=n[r+3],u=s[a],d=s[a+1],g=s[a+2],f=s[a+3];return t[e]=o*f+h*u+c*g-l*d,t[e+1]=c*f+h*d+l*u-o*g,t[e+2]=l*f+h*g+o*d-c*u,t[e+3]=h*f-o*u-c*d-l*g,t},Object.defineProperty(i.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"z",{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"w",{get:function(){return this._w},set:function(t){this._w=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),i.prototype.set=function(t,e,n,r){return this._x=t,this._y=e,this._z=n,this._w=r,this._onChangeCallback(),this},i.prototype.clone=function(){return new i(this._x,this._y,this._z,this._w)},i.prototype.copy=function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this},i.prototype.setFromEuler=function(t,e){e===void 0&&(e=!0);var n=t.x,r=t.y,s=t.z,a=t.order,o=Math.cos,c=Math.sin,l=o(n/2),h=o(r/2),u=o(s/2),d=c(n/2),g=c(r/2),f=c(s/2);switch(a){case"XYZ":this._x=d*h*u+l*g*f,this._y=l*g*u-d*h*f,this._z=l*h*f+d*g*u,this._w=l*h*u-d*g*f;break;case"YXZ":this._x=d*h*u+l*g*f,this._y=l*g*u-d*h*f,this._z=l*h*f-d*g*u,this._w=l*h*u+d*g*f;break;case"ZXY":this._x=d*h*u-l*g*f,this._y=l*g*u+d*h*f,this._z=l*h*f+d*g*u,this._w=l*h*u-d*g*f;break;case"ZYX":this._x=d*h*u-l*g*f,this._y=l*g*u+d*h*f,this._z=l*h*f-d*g*u,this._w=l*h*u+d*g*f;break;case"YZX":this._x=d*h*u+l*g*f,this._y=l*g*u+d*h*f,this._z=l*h*f-d*g*u,this._w=l*h*u-d*g*f;break;case"XZY":this._x=d*h*u-l*g*f,this._y=l*g*u-d*h*f,this._z=l*h*f+d*g*u,this._w=l*h*u+d*g*f;break;default:}return e===!0&&this._onChangeCallback(),this},i.prototype.setFromAxisAngle=function(t,e){var n=e/2,r=Math.sin(n);return this._x=t.x*r,this._y=t.y*r,this._z=t.z*r,this._w=Math.cos(n),this._onChangeCallback(),this},i.prototype.setFromRotationMatrix=function(t){var e=t.elements,n=e[0],r=e[4],s=e[8],a=e[1],o=e[5],c=e[9],l=e[2],h=e[6],u=e[10],d=n+o+u;if(d>0){var g=.5/Math.sqrt(d+1);this._w=.25/g,this._x=(h-c)*g,this._y=(s-l)*g,this._z=(a-r)*g}else if(n>o&&n>u){var g=2*Math.sqrt(1+n-o-u);this._w=(h-c)/g,this._x=.25*g,this._y=(r+a)/g,this._z=(s+l)/g}else if(o>u){var g=2*Math.sqrt(1+o-n-u);this._w=(s-l)/g,this._x=(r+a)/g,this._y=.25*g,this._z=(c+h)/g}else{var g=2*Math.sqrt(1+u-n-o);this._w=(a-r)/g,this._x=(s+l)/g,this._y=(c+h)/g,this._z=.25*g}return this._onChangeCallback(),this},i.prototype.setFromUnitVectors=function(t,e){var n=t.dot(e)+1;return n<Number.EPSILON?(n=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(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=n),this.normalize()},i.prototype.angleTo=function(t){return 2*Math.acos(Math.abs(pe(this.dot(t),-1,1)))},i.prototype.rotateTowards=function(t,e){var n=this.angleTo(t);if(n===0)return this;var r=Math.min(1,e/n);return this.slerp(t,r),this},i.prototype.identity=function(){return this.set(0,0,0,1)},i.prototype.invert=function(){return this.conjugate()},i.prototype.conjugate=function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},i.prototype.dot=function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w},i.prototype.lengthSq=function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},i.prototype.length=function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},i.prototype.normalize=function(){var 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},i.prototype.multiply=function(t){return this.multiplyQuaternions(this,t)},i.prototype.premultiply=function(t){return this.multiplyQuaternions(t,this)},i.prototype.multiplyQuaternions=function(t,e){var n=t._x,r=t._y,s=t._z,a=t._w,o=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+a*o+r*l-s*c,this._y=r*h+a*c+s*o-n*l,this._z=s*h+a*l+n*c-r*o,this._w=a*h-n*o-r*c-s*l,this._onChangeCallback(),this},i.prototype.slerp=function(t,e){if(e===0)return this;if(e===1)return this.copy(t);var n=this._x,r=this._y,s=this._z,a=this._w,o=a*t._w+n*t._x+r*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=r,this._z=s,this;var c=1-o*o;if(c<=Number.EPSILON){var l=1-e;return this._w=l*a+e*this._w,this._x=l*n+e*this._x,this._y=l*r+e*this._y,this._z=l*s+e*this._z,this.normalize(),this}var h=Math.sqrt(c),u=Math.atan2(h,o),d=Math.sin((1-e)*u)/h,g=Math.sin(e*u)/h;return this._w=a*d+this._w*g,this._x=n*d+this._x*g,this._y=r*d+this._y*g,this._z=s*d+this._z*g,this._onChangeCallback(),this},i.prototype.slerpQuaternions=function(t,e,n){return this.copy(t).slerp(e,n)},i.prototype.random=function(){var t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(r*Math.sin(t),r*Math.cos(t),s*Math.sin(e),s*Math.cos(e))},i.prototype.equals=function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w},i.prototype.fromArray=function(t,e){return e===void 0&&(e=0),this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t},i.prototype.toJSON=function(){return this.toArray()},i.prototype._onChange=function(t){return this._onChangeCallback=t,this},i.prototype._onChangeCallback=function(){},i.prototype[Symbol.iterator]=function(){return kg(this,function(t){switch(t.label){case 0:return[4,this._x];case 1:return t.sent(),[4,this._y];case 2:return t.sent(),[4,this._z];case 3:return t.sent(),[4,this._w];case 4:return t.sent(),[2]}})},i})(),Sg=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},x=(function(){function i(t,e,n){this.x=0,this.y=0,this.z=0;var r=+(t!==void 0)+ +(e!==void 0)+ +(n!==void 0);if(r!==0){if(r===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(r===1){var s=t,a=s.x,o=s.y,c=s.z;this.x=a,this.y=o,this.z=c||0;return}if(r===3){this.x=t,this.y=e,this.z=n;return}throw Et.ILLEGAL_PARAMETERS}}return i.prototype.set=function(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this},i.prototype.setScalar=function(t){return this.x=t,this.y=t,this.z=t,this},i.prototype.setX=function(t){return this.x=t,this},i.prototype.setY=function(t){return this.y=t,this},i.prototype.setZ=function(t){return this.z=t,this},i.prototype.setComponent=function(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},i.prototype.getComponent=function(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)}},i.prototype.clone=function(){return new i(this.x,this.y,this.z)},i.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this.z=t.z||0,this},i.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z||0,this},i.prototype.addScalar=function(t){return this.x+=t,this.y+=t,this.z+=t,this},i.prototype.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},i.prototype.addScaledVector=function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},i.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this},i.prototype.subScalar=function(t){return this.x-=t,this.y-=t,this.z-=t,this},i.prototype.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},i.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this},i.prototype.multiplyScalar=function(t){return this.x*=t,this.y*=t,this.z*=t,this},i.prototype.multiplyVectors=function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},i.prototype.applyEuler=function(t){return this.applyQuaternion(Qo.setFromEuler(t))},i.prototype.applyAxisAngle=function(t,e){return this.applyQuaternion(Qo.setFromAxisAngle(t,e))},i.prototype.applyMatrix3=function(t){var e=this.x,n=this.y,r=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*r,this.y=s[1]*e+s[4]*n+s[7]*r,this.z=s[2]*e+s[5]*n+s[8]*r,this},i.prototype.applyNormalMatrix=function(t){return this.applyMatrix3(t).normalize()},i.prototype.applyMatrix4=function(t){var e=this.x,n=this.y,r=this.z,s=t.elements,a=1/(s[3]*e+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*r+s[12])*a,this.y=(s[1]*e+s[5]*n+s[9]*r+s[13])*a,this.z=(s[2]*e+s[6]*n+s[10]*r+s[14])*a,this},i.prototype.applyQuaternion=function(t){var e=this.x,n=this.y,r=this.z,s=t.x,a=t.y,o=t.z,c=t.w,l=2*(a*r-o*n),h=2*(o*e-s*r),u=2*(s*n-a*e);return this.x=e+c*l+a*u-o*h,this.y=n+c*h+o*l-s*u,this.z=r+c*u+s*h-a*l,this},i.prototype.transformDirection=function(t){var e=this.x,n=this.y,r=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*r,this.y=s[1]*e+s[5]*n+s[9]*r,this.z=s[2]*e+s[6]*n+s[10]*r,this.normalize()},i.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},i.prototype.divideScalar=function(t){return this.multiplyScalar(1/t)},i.prototype.min=function(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},i.prototype.max=function(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},i.prototype.clamp=function(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},i.prototype.clampScalar=function(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},i.prototype.clampLength=function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},i.prototype.floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},i.prototype.ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},i.prototype.round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},i.prototype.roundToZero=function(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this},i.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},i.prototype.dot=function(t){return this.x*t.x+this.y*t.y+this.z*t.z},i.prototype.isParallelTo=function(t){var e=this.dot(t),n=this.length(),r=t.length();return Math.abs(e)===n*r},i.prototype.lengthSq=function(){return this.x*this.x+this.y*this.y+this.z*this.z},i.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},i.prototype.manhattanLength=function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},i.prototype.normalize=function(){return this.divideScalar(this.length()||1)},i.prototype.setLength=function(t){return this.normalize().multiplyScalar(t)},i.prototype.lerp=function(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},i.prototype.lerpVectors=function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this},i.prototype.cross=function(t){return this.crossVectors(this,t)},i.prototype.crossVectors=function(t,e){var n=t.x,r=t.y,s=t.z,a=e.x,o=e.y,c=e.z;return this.x=r*c-s*o,this.y=s*a-n*c,this.z=n*o-r*a,this},i.prototype.projectOnVector=function(t){var e=t.lengthSq();if(e===0)return this.set(0,0,0);var n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)},i.prototype.projectOnPlane=function(t){return Ps.copy(this).projectOnVector(t),this.sub(Ps)},i.prototype.reflect=function(t){return this.sub(Ps.copy(t).multiplyScalar(2*this.dot(t)))},i.prototype.angleTo=function(t){var e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;var n=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,n)))},i.prototype.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},i.prototype.distanceToSquared=function(t){var e=this.x-t.x,n=this.y-t.y,r=this.z-t.z;return e*e+n*n+r*r},i.prototype.manhattanDistanceTo=function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)},i.prototype.setFromMatrixPosition=function(t){var e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this},i.prototype.setFromMatrixScale=function(t){var e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),r=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=r,this},i.prototype.setFromMatrixColumn=function(t,e){return this.fromArray(t.elements,e*4)},i.prototype.setFromMatrix3Column=function(t,e){return this.fromArray(t.elements,e*3)},i.prototype.equals=function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},i.prototype.fromArray=function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},i.prototype.random=function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this},i.prototype.randomDirection=function(){var t=Math.random()*Math.PI*2,e=Math.random()*2-1,n=Math.sqrt(1-e*e);return this.x=n*Math.cos(t),this.y=e,this.z=n*Math.sin(t),this},i.prototype[Symbol.iterator]=function(){return Sg(this,function(t){switch(t.label){case 0:return[4,this.x];case 1:return t.sent(),[4,this.y];case 2:return t.sent(),[4,this.z];case 3:return t.sent(),[2]}})},i.ORIGIN=Object.freeze(new i(0,0,0)),i.X_AXIS=Object.freeze(new i(1,0,0)),i.NEGATIVE_X_AXIS=Object.freeze(new i(-1,0,0)),i.Y_AXIS=Object.freeze(new i(0,1,0)),i.NEGATIVE_Y_AXIS=Object.freeze(new i(0,-1,0)),i.Z_AXIS=Object.freeze(new i(0,0,1)),i.NEGATIVE_Z_AXIS=Object.freeze(new i(0,0,-1)),i})(),Ps=new x,Qo=new xn,D=(function(){function i(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&e!=null&&n!=null&&r!=null&&s!=null&&a!=null&&o!=null&&c!=null&&l!=null&&h!=null&&u!=null&&d!=null&&g!=null&&f!=null&&p!=null&&m!=null&&this.set(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m)}return i.makeTranslation=function(t,e,n){return new i().makeTranslation(t,e,n)},i.prototype.set=function(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m){var y=this.elements;return y[0]=t,y[4]=e,y[8]=n,y[12]=r,y[1]=s,y[5]=a,y[9]=o,y[13]=c,y[2]=l,y[6]=h,y[10]=u,y[14]=d,y[3]=g,y[7]=f,y[11]=p,y[15]=m,this},i.prototype.identity=function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},i.prototype.clone=function(){return new i().fromArray(this.elements)},i.prototype.copy=function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this},i.prototype.copyPosition=function(t){var e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this},i.prototype.setFromMatrix3=function(t){var 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},i.prototype.setFromExtrusionDirection=function(t){var e=Math.hypot(t.x,t.y,t.z);if(!Number.isFinite(e)||e<1e-12)return this.identity(),this;var n=Math.abs(e-1)>1e-6?t.clone().multiplyScalar(1/e):t;if(_i.equalPoint3d(n,x.Z_AXIS))this.identity();else{var r=new x(1,0,0);Math.abs(n.x)<1/64&&Math.abs(n.y)<1/64?r.crossVectors(x.Y_AXIS,n).normalize():r.crossVectors(x.Z_AXIS,n).normalize();var s=n.clone().cross(r).normalize();this.makeBasis(r,s,n)}return this},i.prototype.extractBasis=function(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},i.prototype.makeBasis=function(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this},i.prototype.extractRotation=function(t){var e=this.elements,n=t.elements,r=1/Je.setFromMatrixColumn(t,0).length(),s=1/Je.setFromMatrixColumn(t,1).length(),a=1/Je.setFromMatrixColumn(t,2).length();return e[0]=n[0]*r,e[1]=n[1]*r,e[2]=n[2]*r,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},i.prototype.makeRotationFromQuaternion=function(t){return this.compose(Ig,t,Eg)},i.prototype.lookAt=function(t,e,n){var r=this.elements;return Mt.subVectors(t,e),Mt.lengthSq()===0&&(Mt.z=1),Mt.normalize(),Ie.crossVectors(n,Mt),Ie.lengthSq()===0&&(Math.abs(n.z)===1?Mt.x+=1e-4:Mt.z+=1e-4,Mt.normalize(),Ie.crossVectors(n,Mt)),Ie.normalize(),Ei.crossVectors(Mt,Ie),r[0]=Ie.x,r[4]=Ei.x,r[8]=Mt.x,r[1]=Ie.y,r[5]=Ei.y,r[9]=Mt.y,r[2]=Ie.z,r[6]=Ei.z,r[10]=Mt.z,this},i.prototype.multiply=function(t){return this.multiplyMatrices(this,t)},i.prototype.premultiply=function(t){return this.multiplyMatrices(t,this)},i.prototype.multiplyMatrices=function(t,e){var n=t.elements,r=e.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],h=n[1],u=n[5],d=n[9],g=n[13],f=n[2],p=n[6],m=n[10],y=n[14],_=n[3],v=n[7],w=n[11],A=n[15],E=r[0],I=r[4],M=r[8],T=r[12],R=r[1],Y=r[5],O=r[9],Z=r[13],K=r[2],G=r[6],J=r[10],S=r[14],H=r[3],ct=r[7],N=r[11],It=r[15];return s[0]=a*E+o*R+c*K+l*H,s[4]=a*I+o*Y+c*G+l*ct,s[8]=a*M+o*O+c*J+l*N,s[12]=a*T+o*Z+c*S+l*It,s[1]=h*E+u*R+d*K+g*H,s[5]=h*I+u*Y+d*G+g*ct,s[9]=h*M+u*O+d*J+g*N,s[13]=h*T+u*Z+d*S+g*It,s[2]=f*E+p*R+m*K+y*H,s[6]=f*I+p*Y+m*G+y*ct,s[10]=f*M+p*O+m*J+y*N,s[14]=f*T+p*Z+m*S+y*It,s[3]=_*E+v*R+w*K+A*H,s[7]=_*I+v*Y+w*G+A*ct,s[11]=_*M+v*O+w*J+A*N,s[15]=_*T+v*Z+w*S+A*It,this},i.prototype.multiplyScalar=function(t){var 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},i.prototype.determinant=function(){var t=this.elements,e=t[0],n=t[4],r=t[8],s=t[12],a=t[1],o=t[5],c=t[9],l=t[13],h=t[2],u=t[6],d=t[10],g=t[14],f=t[3],p=t[7],m=t[11],y=t[15];return f*(+s*c*u-r*l*u-s*o*d+n*l*d+r*o*g-n*c*g)+p*(+e*c*g-e*l*d+s*a*d-r*a*g+r*l*h-s*c*h)+m*(+e*l*u-e*o*g-s*a*u+n*a*g+s*o*h-n*l*h)+y*(-r*o*h-e*c*u+e*o*d+r*a*u-n*a*d+n*c*h)},i.prototype.transpose=function(){var t=this.elements,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},i.prototype.setPosition=function(t,e,n){var r=this.elements;return t instanceof x?(r[12]=t.x,r[13]=t.y,r[14]=t.z):(r[12]=t,r[13]=e,r[14]=n),this},i.prototype.invert=function(){var t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],u=t[9],d=t[10],g=t[11],f=t[12],p=t[13],m=t[14],y=t[15],_=u*m*l-p*d*l+p*c*g-o*m*g-u*c*y+o*d*y,v=f*d*l-h*m*l-f*c*g+a*m*g+h*c*y-a*d*y,w=h*p*l-f*u*l+f*o*g-a*p*g-h*o*y+a*u*y,A=f*u*c-h*p*c-f*o*d+a*p*d+h*o*m-a*u*m,E=e*_+n*v+r*w+s*A;if(E===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);var I=1/E;return t[0]=_*I,t[1]=(p*d*s-u*m*s-p*r*g+n*m*g+u*r*y-n*d*y)*I,t[2]=(o*m*s-p*c*s+p*r*l-n*m*l-o*r*y+n*c*y)*I,t[3]=(u*c*s-o*d*s-u*r*l+n*d*l+o*r*g-n*c*g)*I,t[4]=v*I,t[5]=(h*m*s-f*d*s+f*r*g-e*m*g-h*r*y+e*d*y)*I,t[6]=(f*c*s-a*m*s-f*r*l+e*m*l+a*r*y-e*c*y)*I,t[7]=(a*d*s-h*c*s+h*r*l-e*d*l-a*r*g+e*c*g)*I,t[8]=w*I,t[9]=(f*u*s-h*p*s-f*n*g+e*p*g+h*n*y-e*u*y)*I,t[10]=(a*p*s-f*o*s+f*n*l-e*p*l-a*n*y+e*o*y)*I,t[11]=(h*o*s-a*u*s-h*n*l+e*u*l+a*n*g-e*o*g)*I,t[12]=A*I,t[13]=(h*p*r-f*u*r+f*n*d-e*p*d-h*n*m+e*u*m)*I,t[14]=(f*o*r-a*p*r-f*n*c+e*p*c+a*n*m-e*o*m)*I,t[15]=(a*u*r-h*o*r+h*n*c-e*u*c-a*n*d+e*o*d)*I,this},i.prototype.scale=function(t){var e=this.elements,n=t.x,r=t.y,s=t.z;return e[0]*=n,e[4]*=r,e[8]*=s,e[1]*=n,e[5]*=r,e[9]*=s,e[2]*=n,e[6]*=r,e[10]*=s,e[3]*=n,e[7]*=r,e[11]*=s,this},i.prototype.getMaxScaleOnAxis=function(){var t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],r=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,r))},i.prototype.makeTranslation=function(t,e,n){var r;return typeof t=="object"?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,(r=t.z)!==null&&r!==void 0?r:0,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this},i.prototype.makeRotationX=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this},i.prototype.makeRotationY=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this},i.prototype.makeRotationZ=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this},i.prototype.makeRotationAxis=function(t,e){var n=Math.cos(e),r=Math.sin(e),s=1-n,a=t.x,o=t.y,c=t.z,l=s*a,h=s*o;return this.set(l*a+n,l*o-r*c,l*c+r*o,0,l*o+r*c,h*o+n,h*c-r*a,0,l*c-r*o,h*c+r*a,s*c*c+n,0,0,0,0,1),this},i.prototype.makeScale=function(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this},i.prototype.makeShear=function(t,e,n,r,s,a){return this.set(1,n,s,0,t,1,a,0,e,r,1,0,0,0,0,1),this},i.prototype.compose=function(t,e,n){var r=this.elements,s=e.x,a=e.y,o=e.z,c=e.w,l=s+s,h=a+a,u=o+o,d=s*l,g=s*h,f=s*u,p=a*h,m=a*u,y=o*u,_=c*l,v=c*h,w=c*u,A=n.x,E=n.y,I=n.z;return r[0]=(1-(p+y))*A,r[1]=(g+w)*A,r[2]=(f-v)*A,r[3]=0,r[4]=(g-w)*E,r[5]=(1-(d+y))*E,r[6]=(m+_)*E,r[7]=0,r[8]=(f+v)*I,r[9]=(m-_)*I,r[10]=(1-(d+p))*I,r[11]=0,r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=1,this},i.prototype.decompose=function(t,e,n){var r=this.elements,s=Je.set(r[0],r[1],r[2]).length(),a=Je.set(r[4],r[5],r[6]).length(),o=Je.set(r[8],r[9],r[10]).length(),c=this.determinant();c<0&&(s=-s),t.x=r[12],t.y=r[13],t.z=r[14],qt.copy(this);var l=1/s,h=1/a,u=1/o;return qt.elements[0]*=l,qt.elements[1]*=l,qt.elements[2]*=l,qt.elements[4]*=h,qt.elements[5]*=h,qt.elements[6]*=h,qt.elements[8]*=u,qt.elements[9]*=u,qt.elements[10]*=u,e.setFromRotationMatrix(qt),n.x=s,n.y=a,n.z=o,this},i.prototype.equals=function(t){for(var e=this.elements,n=t.elements,r=0;r<16;r++)if(e[r]!==n[r])return!1;return!0},i.prototype.fromArray=function(t,e){e===void 0&&(e=0);for(var n=0;n<16;n++)this.elements[n]=t[n+e];return this},i.prototype.toArray=function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);var n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t},i.IDENTITY=Object.freeze(new i),i})(),Je=new x,qt=new D,Ig=new x(0,0,0),Eg=new x(1,1,1),Ie=new x,Ei=new x,Mt=new x,z=(function(){function i(t,e){t===void 0&&(t=void 0),e===void 0&&(e=void 0),this.min=t==null?new x(1/0,1/0,1/0):new x(t.x,t.y,t.z),this.max=e==null?new x(-1/0,-1/0,-1/0):new x(e.x,e.y,e.z)}return i.prototype.set=function(t,e){return this.min.copy(t),this.max.copy(e),this},i.prototype.setFromArray=function(t){this.makeEmpty();for(var e=0,n=t.length;e<n;e+=3)this.expandByPoint(ks.fromArray(t,e));return this},i.prototype.setFromPoints=function(t){this.makeEmpty();for(var e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this},i.prototype.setFromCenterAndSize=function(t,e){var n=ks.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this},i.prototype.clone=function(){return new i().copy(this)},i.prototype.copy=function(t){return this.min.copy(t.min),this.max.copy(t.max),this},i.prototype.makeEmpty=function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this},i.prototype.isEmpty=function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z},i.prototype.getCenter=function(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)},i.prototype.getSize=function(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)},Object.defineProperty(i.prototype,"center",{get:function(){return this.isEmpty()?new x(0,0,0):new x(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"size",{get:function(){return this.isEmpty()?new x(0,0,0):new x(0,0,0).subVectors(this.max,this.min)},enumerable:!1,configurable:!0}),i.prototype.expandByPoint=function(t){return this.min.min(t),this.max.max(t),this},i.prototype.expandByVector=function(t){return this.min.sub(t),this.max.add(t),this},i.prototype.expandByScalar=function(t){return this.min.addScalar(-t),this.max.addScalar(t),this},i.prototype.containsPoint=function(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)},i.prototype.containsBox=function(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},i.prototype.getParameter=function(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))},i.prototype.intersectsBox=function(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)},i.prototype.intersectsPlane=function(t){var e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant},i.prototype.clampPoint=function(t,e){return e.copy(t).clamp(this.min,this.max)},i.prototype.distanceToPoint=function(t){return this.clampPoint(t,ks).distanceTo(t)},i.prototype.intersect=function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},i.prototype.union=function(t){return this.min.min(t.min),this.max.max(t.max),this},i.prototype.applyMatrix4=function(t){return this.isEmpty()?this:(fe[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),fe[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),fe[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),fe[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),fe[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),fe[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),fe[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),fe[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(fe),this)},i.prototype.translate=function(t){return this.min.add(t),this.max.add(t),this},i.prototype.equals=function(t){return t.min.equals(this.min)&&t.max.equals(this.max)},i})(),fe=[new x,new x,new x,new x,new x,new x,new x,new x],ks=new x,Jo=new at,wt=(function(){function i(t,e){t===void 0&&(t=void 0),e===void 0&&(e=void 0),this.min=t==null?new at(1/0,1/0):new at(t.x,t.y),this.max=e==null?new at(-1/0,-1/0):new at(e.x,e.y)}return i.prototype.set=function(t,e){return this.min.copy(t),this.max.copy(e),this},i.prototype.setFromPoints=function(t){this.makeEmpty();for(var e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this},i.prototype.setFromCenterAndSize=function(t,e){var n=Jo.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this},i.prototype.clone=function(){return new i().copy(this)},i.prototype.copy=function(t){return this.min.copy(t.min),this.max.copy(t.max),this},i.prototype.makeEmpty=function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this},i.prototype.isEmpty=function(){return this.max.x<this.min.x||this.max.y<this.min.y},i.prototype.getCenter=function(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)},i.prototype.getSize=function(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)},Object.defineProperty(i.prototype,"center",{get:function(){return this.isEmpty()?new at(0,0):new at(0,0).addVectors(this.min,this.max).multiplyScalar(.5)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"size",{get:function(){return this.isEmpty()?new at(0,0):new at(0,0).subVectors(this.max,this.min)},enumerable:!1,configurable:!0}),i.prototype.expandByPoint=function(t){return this.min.min(t),this.max.max(t),this},i.prototype.expandByVector=function(t){return this.min.sub(t),this.max.add(t),this},i.prototype.expandByScalar=function(t){return this.min.addScalar(-t),this.max.addScalar(t),this},i.prototype.containsPoint=function(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y)},i.prototype.containsBox=function(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},i.prototype.getParameter=function(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))},i.prototype.intersectsBox=function(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)},i.prototype.clampPoint=function(t,e){return e.copy(t).clamp(this.min,this.max)},i.prototype.distanceToPoint=function(t){return this.clampPoint(t,Jo).distanceTo(t)},i.prototype.intersect=function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},i.prototype.union=function(t){return this.min.min(t.min),this.max.max(t.max),this},i.prototype.translate=function(t){return this.min.add(t),this.max.add(t),this},i.prototype.equals=function(t){return t.min.equals(this.min)&&t.max.equals(this.max)},i})(),tc=new x,Lg=new x,Cg=new bi,Jr=(function(){function i(t,e){t===void 0&&(t=new x(1,0,0)),e===void 0&&(e=0),this.normal=t,this.constant=e}return i.prototype.set=function(t,e){return this.normal.copy(t),this.constant=e,this},i.prototype.setComponents=function(t,e,n,r){return this.normal.set(t,e,n),this.constant=r,this},i.prototype.setFromNormalAndCoplanarPoint=function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},i.prototype.setFromCoplanarPoints=function(t,e,n){var r=tc.subVectors(n,e).cross(Lg.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(r,t),this},i.prototype.copy=function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},i.prototype.normalize=function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},i.prototype.negate=function(){return this.constant*=-1,this.normal.negate(),this},i.prototype.distanceToPoint=function(t){return this.normal.dot(t)+this.constant},i.prototype.projectPoint=function(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))},i.prototype.intersectsBox=function(t){return t.intersectsPlane(this)},i.prototype.coplanarPoint=function(t){return t.copy(this.normal).multiplyScalar(-this.constant)},i.prototype.applyMatrix4=function(t,e){var n=e||Cg.getNormalMatrix(t),r=this.coplanarPoint(tc).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this},i.prototype.translate=function(t){return this.constant-=t.dot(this.normal),this},i.prototype.equals=function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},i.prototype.clone=function(){return new i().copy(this)},i})(),Tg=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),L=(function(i){Tg(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.clone=function(){return new t(this.x,this.y)},t.pointArrayToNumberArray=function(e){var n=new Array(e.length*2);return e.forEach(function(r,s){r.toArray(n,s*2)}),n},t})(at),Mg=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),b=(function(i){Mg(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.clone=function(){return new t(this.x,this.y,this.z)},t.pointArrayToNumberArray=function(e,n){n===void 0&&(n=!0);var r=n?3:2,s=new Array(e.length*r);return e.forEach(function(a,o){a.toArray(s,o*r)}),s},t})(x),Og=function(i,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(h){return c([l,h])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(e=0)),e;)try{if(n=1,r&&(s=l[0]&2?r.return:l[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,l[1])).done)return s;switch(r=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,r=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=t.call(i,e)}catch(h){l=[6,h],r=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},ec=new D,nc=new xn,Ng=(function(){function i(t,e,n,r){t===void 0&&(t=0),e===void 0&&(e=0),n===void 0&&(n=0),r===void 0&&(r=i.DEFAULT_ORDER),this._x=t,this._y=e,this._z=n,this._order=r}return Object.defineProperty(i.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"z",{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"order",{get:function(){return this._order},set:function(t){this._order=t,this._onChangeCallback()},enumerable:!1,configurable:!0}),i.prototype.set=function(t,e,n,r){return r===void 0&&(r=this._order),this._x=t,this._y=e,this._z=n,this._order=r,this._onChangeCallback(),this},i.prototype.clone=function(){return new i(this._x,this._y,this._z,this._order)},i.prototype.copy=function(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this},i.prototype.setFromRotationMatrix=function(t,e,n){e===void 0&&(e=this._order),n===void 0&&(n=!0);var r=t.elements,s=r[0],a=r[4],o=r[8],c=r[1],l=r[5],h=r[9],u=r[2],d=r[6],g=r[10];switch(e){case"XYZ":this._y=Math.asin(pe(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,g),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-pe(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,g),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(pe(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,g),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-pe(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,g),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(pe(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(o,g));break;case"XZY":this._z=Math.asin(-pe(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,g),this._y=0);break;default:}return this._order=e,n===!0&&this._onChangeCallback(),this},i.prototype.setFromQuaternion=function(t,e,n){return n===void 0&&(n=!0),ec.makeRotationFromQuaternion(t),this.setFromRotationMatrix(ec,e,n)},i.prototype.setFromVector3=function(t,e){return e===void 0&&(e=this._order),this.set(t.x,t.y,t.z,e)},i.prototype.reorder=function(t){return nc.setFromEuler(this),this.setFromQuaternion(nc,t)},i.prototype.equals=function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order},i.prototype.fromArray=function(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},i.prototype.toArray=function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t},i.prototype._onChange=function(t){return this._onChangeCallback=t,this},i.prototype._onChangeCallback=function(){},i.prototype[Symbol.iterator]=function(){return Og(this,function(t){switch(t.label){case 0:return[4,this._x];case 1:return t.sent(),[4,this._y];case 2:return t.sent(),[4,this._z];case 3:return t.sent(),[4,this._order];case 4:return t.sent(),[2]}})},i.DEFAULT_ORDER="XYZ",i})();function Rg(i){var t,e=i;return{x:i.x,y:i.y,z:(t=e.z)!==null&&t!==void 0?t:0}}function Bg(i,t){var e,n;i.x+=t.x,i.y+=t.y,i.z=((e=i.z)!==null&&e!==void 0?e:0)+((n=t.z)!==null&&n!==void 0?n:0)}function Dg(i,t,e){e===void 0&&(e=!1);for(var n=i.x,r=i.y,s=!1,a=t.length,o=0,c=a-1;o<a;c=o++){var l=t[o].x,h=t[o].y,u=t[c].x,d=t[c].y,g=h>r!=d>r;e&&(g=h>=r!=d>=r);var f=g&&n<(u-l)*(r-h)/(d-h)+l;f&&(s=!s)}return s}function Fg(i,t){if(i.length===0||t.length===0)return!1;var e=new wt().setFromPoints(i),n=new wt().setFromPoints(t);if(!e.intersectsBox(n))return!1;for(var r=0;r<i.length;){if(kt.isPointInPolygon(i[r],t,!0))return!0;r<i.length-1&&_i.equalPoint2d(i[r+1],i[r])&&++r,++r}return!1}var kt={applyOffsetToPoint3d:Bg,isPointInPolygon:Dg,isPolygonIntersect:Fg,point2dToPoint3d:Rg},Li=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Ci=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))};function Xg(i,t){for(var e=[],n=t-1,r=i,s=0;s<=r;s++)e.push(0);for(var s=1;s<=n-r;s++)e.push(s);for(var s=0;s<=r;s++)e.push(n-r+1);return e}function Yg(i,t){for(var e=t.length-1,n=i,r=[0],s=0,a=1;a<=e;a++){var o=t[a][0]-t[a-1][0],c=t[a][1]-t[a-1][1],l=t[a][2]-t[a-1][2],h=Math.sqrt(o*o+c*c+l*l);s+=h,r.push(s)}for(var u=[],a=0;a<=n;a++)u.push(0);for(var a=1;a<=e-n;a++){var d=r[a]/s;u.push(d*(e-n+1))}for(var a=0;a<=n;a++)u.push(e-n+1);return u}function Cl(i,t){t===void 0&&(t="Uniform");var e=i.length;if(e===0)return[];if(e===1)return[0];var n=e-1;if(t==="Uniform")return new Array(e).fill(0).map(function(d,g){return g/n});for(var r=[0],s=0,a=1;a<=n;a++){var o=i[a][0]-i[a-1][0],c=i[a][1]-i[a-1][1],l=i[a][2]-i[a-1][2],h=Math.sqrt(o*o+c*c+l*l),u=t==="SqrtChord"?Math.sqrt(h):h;s+=u,r.push(s)}return s<1e-12?new Array(e).fill(0).map(function(d,g){return g/n}):r.map(function(d){return d/s})}function Tl(i,t){for(var e=t.length-1,n=i,r=e+n+1,s=new Array(r+1).fill(0),a=t[t.length-1],o=r-n;o<=r;o++)s[o]=a;for(var c=1;c<=e-n;c++){for(var l=0,o=c;o<c+n;o++)l+=t[o];s[c+n]=l/n}return s}function zg(i,t){for(var e=t.length-1,n=i,r=[0],s=0,a=1;a<=e;a++){var o=t[a][0]-t[a-1][0],c=t[a][1]-t[a-1][1],l=t[a][2]-t[a-1][2],h=Math.sqrt(o*o+c*c+l*l),u=Math.sqrt(h);s+=u,r.push(s)}for(var d=[],a=0;a<=n;a++)d.push(0);for(var a=1;a<=e-n;a++){var g=r[a]/s;d.push(g*(e-n+1))}for(var a=0;a<=n;a++)d.push(e-n+1);return d}function Ss(i,t){for(var e=i.length,n=i.map(function(m){return m.slice()}),r=t.slice(),s=0;s<e;s++){for(var a=s,o=Math.abs(n[s][s]),c=s+1;c<e;c++){var l=Math.abs(n[c][s]);l>o&&(o=l,a=c)}if(o<1e-12)throw new Error("Interpolation matrix is singular.");if(a!==s){var h=n[s];n[s]=n[a],n[a]=h;var u=r[s];r[s]=r[a],r[a]=u}for(var c=s+1;c<e;c++){var d=n[c][s]/n[s][s];if(!(Math.abs(d)<1e-14)){for(var g=s;g<e;g++)n[c][g]-=d*n[s][g];r[c]-=d*r[s]}}}for(var f=new Array(e).fill(0),c=e-1;c>=0;c--){for(var p=r[c],g=c+1;g<e;g++)p-=n[c][g]*f[g];f[c]=p/n[c][c]}return f}function Ba(i,t,e,n,r){var s,a,o,c,l,h;if(e===void 0&&(e="Uniform"),i.length===0)return{controlPoints:[],knots:[],weights:[]};var u=i.map(function(N){var It;return[N[0],N[1],(It=N[2])!==null&&It!==void 0?It:0]}),d=!!n,g=!!r,f=(d?1:0)+(g?1:0),p=u.length-1,m=p+f;if(m<t)throw new Error("Not enough points to interpolate a curve of this degree.");var y=Cl(u,e),_=y.slice();d&&_.unshift(y[0]),g&&_.push(y[y.length-1]);var v=Tl(t,_),w=m+1,A=new Array(w),E=new Array(w),I=new Array(w),M=new Array(w),T=0;A[T]=new Array(w).fill(0),A[T][0]=1,E[T]=u[0][0],I[T]=u[0][1],M[T]=u[0][2],T++;for(var R=1;R<=p-1;R++){var Y=y[R];A[T]=new Array(w).fill(0);for(var O=0;O<=m;O++)A[T][O]=De(O,t,Y,v);E[T]=u[R][0],I[T]=u[R][1],M[T]=u[R][2],T++}if(A[T]=new Array(w).fill(0),A[T][m]=1,E[T]=u[p][0],I[T]=u[p][1],M[T]=u[p][2],T++,d){var Z=v[t+1]-v[0],K=Z!==0?t/Z:0;A[T]=new Array(w).fill(0),A[T][0]=-K,A[T][1]=K,E[T]=(s=n==null?void 0:n[0])!==null&&s!==void 0?s:0,I[T]=(a=n==null?void 0:n[1])!==null&&a!==void 0?a:0,M[T]=(o=n==null?void 0:n[2])!==null&&o!==void 0?o:0,T++}if(g){var Z=v[m+t+1]-v[m],K=Z!==0?t/Z:0;A[T]=new Array(w).fill(0),A[T][m-1]=-K,A[T][m]=K,E[T]=(c=r==null?void 0:r[0])!==null&&c!==void 0?c:0,I[T]=(l=r==null?void 0:r[1])!==null&&l!==void 0?l:0,M[T]=(h=r==null?void 0:r[2])!==null&&h!==void 0?h:0,T++}for(var G=Ss(A,E),J=Ss(A,I),S=Ss(A,M),H=new Array(w),R=0;R<w;R++)H[R]=[G[R],J[R],S[R]];var ct=new Array(w).fill(1);return{controlPoints:H,knots:v,weights:ct}}function De(i,t,e,n){if(t===0)return e>=n[i]&&e<n[i+1]?1:0;var r=n[i+t]-n[i],s=n[i+t+1]-n[i+1],a=r>1e-10?(e-n[i])/r:0,o=s>1e-10?(n[i+t+1]-e)/s:0;return a*De(i,t-1,e,n)+o*De(i+1,t-1,e,n)}function Vn(i,t,e,n,r){var s=n.length-1,a=t;if(i=Math.max(e[a],Math.min(e[s+1],i)),Math.abs(i-e[s+1])<1e-8)return Ci([],Li(n[s]),!1);if(Math.abs(i-e[a])<1e-8)return Ci([],Li(n[0]),!1);for(var o=[0,0,0],c=0,l=0;l<=s;l++){var h=De(l,a,i,e),u=r[l]*h;o[0]+=n[l][0]*u,o[1]+=n[l][1]*u,o[2]+=n[l][2]*u,c+=u}if(Math.abs(c)<1e-10){var d=e[e.length-a-1];if(Math.abs(i-d)<1e-8)return Ci([],Li(n[s]),!1);if(Math.abs(i-e[a])<1e-8)return Ci([],Li(n[0]),!1)}return Math.abs(c)>=1e-10&&(o[0]/=c,o[1]/=c,o[2]/=c),o}function Js(i,t,e,n){if(t===0)return 0;var r=n[i+t]-n[i],s=n[i+t+1]-n[i+1],a=0;return r>1e-10&&(a+=t/r*De(i,t-1,e,n)),s>1e-10&&(a-=t/s*De(i+1,t-1,e,n)),a}function Vg(i,t,e,n){if(t<=1)return 0;var r=n[i+t]-n[i],s=n[i+t+1]-n[i+1],a=0;return r>1e-10&&(a+=t/r*Js(i,t-1,e,n)),s>1e-10&&(a-=t/s*Js(i+1,t-1,e,n)),a}function jg(i,t,e,n,r){var s=n.length-1,a=t,o=e[a],c=e[s+1];i=Math.max(o,Math.min(c,i));for(var l=[0,0,0],h=[0,0,0],u=[0,0,0],d=0,g=0,f=0,p=0;p<=s;p++){var m=De(p,a,i,e),y=Js(p,a,i,e),_=Vg(p,a,i,e),v=r[p],w=v*m,A=v*y,E=v*_,I=n[p];l[0]+=w*I[0],l[1]+=w*I[1],l[2]+=w*I[2],h[0]+=A*I[0],h[1]+=A*I[1],h[2]+=A*I[2],u[0]+=E*I[0],u[1]+=E*I[1],u[2]+=E*I[2],d+=w,g+=A,f+=E}if(Math.abs(d)<1e-10){var M=Vn(i,t,e,n,r);return{point:M,deriv1:[0,0,0],deriv2:[0,0,0]}}var T=d*d,R=[l[0]/d,l[1]/d,l[2]/d],Y=[(h[0]*d-l[0]*g)/T,(h[1]*d-l[1]*g)/T,(h[2]*d-l[2]*g)/T],O=u[0]*d-l[0]*f,Z=u[1]*d-l[1]*f,K=u[2]*d-l[2]*f,G=[O/T-2*g*Y[0]/d,Z/T-2*g*Y[1]/d,K/T-2*g*Y[2]/d];return{point:R,deriv1:Y,deriv2:G}}function Gg(i,t){var e=i[0],n=i[1],r=t[0],s=t[1],a=e*e+n*n;return a<1e-20?0:(e*s-n*r)/Math.pow(a,1.5)}function Ml(i,t,e,n){for(var r=i,s=t[r],a=t[t.length-r-1],o=0,c=1e3,l=(a-s)/c,h=Vn(s,i,t,e,n),u=1;u<=c;u++){var d=s+u*l,g=Vn(d,i,t,e,n),f=g[0]-h[0],p=g[1]-h[1],m=g[2]-h[2];o+=Math.sqrt(f*f+p*p+m*m),h=g}var y=Vn(a,i,t,e,n),_=y[0]-h[0],v=y[1]-h[1],w=y[2]-h[2];return o+=Math.sqrt(_*_+v*v+w*w),o}function Ug(i,t,e,n,r){return t===void 0&&(t=3),e===void 0&&(e="Uniform"),i.length===0?[]:Ba(i,t,e,n,r).controlPoints}var ic=new D,rc=new x,Hg=new x,Wg=new x,Is=new b;function Ol(i){return new D().setFromExtrusionDirection(new x(i.x,i.y,i.z))}function Fe(i){return ic.setFromExtrusionDirection(new x(i.x,i.y,i.z)),ic.extractBasis(rc,Hg,Wg),rc.clone()}function _t(i,t){var e;return new b(i.x,i.y,(e=i.z)!==null&&e!==void 0?e:0).applyMatrix4(Ol(t))}function Rt(i,t){var e;return new b(i.x,i.y,(e=i.z)!==null&&e!==void 0?e:0).applyMatrix4(Ol(t).invert())}function be(i,t,e){var n,r,s=Rt(i,e),a=Rt(t,e);return Is.set(a.x-s.x,a.y-s.y,((n=a.z)!==null&&n!==void 0?n:0)-((r=s.z)!==null&&r!==void 0?r:0)),C.normalizeAngle(Math.atan2(Is.y,Is.x))}function Nl(i){var t=i.length;if(t<3)return 0;for(var e=0,n=0,r=t-1;n<t;r=n++){var s=i[r],a=i[n];e+=s.x*a.y-a.x*s.y}return e*.5}function $g(i){return Math.abs(Nl(i))}function qg(i){var t,e,n=i.length;if(n<3)return 0;for(var r=0,s=0,a=0,o=0,c=n-1;o<n;c=o++){var l=i[c],h=i[o],u=l.x,d=l.y,g=(t=l.z)!==null&&t!==void 0?t:0,f=h.x,p=h.y,m=(e=h.z)!==null&&e!==void 0?e:0;r+=(g+m)*(d-p),s+=(u+f)*(g-m),a+=(d+p)*(u-f)}return .5*Math.hypot(r,s,a)}function Kg(i){return i.length<3?0:$g(i)}function Rl(i){return i.length<3?0:qg(i)}function Da(i,t,e){var n=i.x,r=i.y,s=t.x,a=t.y,o=e.x,c=e.y,l=2*(n*(a-c)+s*(c-r)+o*(r-a));if(X.equalToZero(l))return null;var h=((n*n+r*r)*(a-c)+(s*s+a*a)*(c-r)+(o*o+c*c)*(r-a))/l,u=((n*n+r*r)*(o-s)+(s*s+a*a)*(n-o)+(o*o+c*c)*(s-n))/l,d=Math.hypot(h-n,u-r);return!Number.isFinite(d)||X.isNonPositive(d)?null:{center:new L(h,u),radius:d}}function sc(i,t,e){var n,r,s,a=i.x,o=i.y,c=(n=i.z)!==null&&n!==void 0?n:0,l=new x(t.x-a,t.y-o,((r=t.z)!==null&&r!==void 0?r:0)-c),h=new x(e.x-a,e.y-o,((s=e.z)!==null&&s!==void 0?s:0)-c),u=new x().crossVectors(l,h),d=u.lengthSq();if(d<ut*ut)return null;var g=l.lengthSq(),f=h.lengthSq(),p=new x().crossVectors(u,l).multiplyScalar(f).add(new x().crossVectors(h,u).multiplyScalar(g)).multiplyScalar(1/(2*d)),m=new b(a+p.x,o+p.y,c+p.z),y=Math.hypot(m.x-a,m.y-o,m.z-c);return!Number.isFinite(y)||X.isNonPositive(y)?null:{center:m,radius:y}}function Me(i,t){return Math.atan2(t.y-i.y,t.x-i.x)}function he(i,t){return Math.hypot(t.x-i.x,t.y-i.y)}function Bl(i,t,e){if(X.isNonPositive(t))return null;var n=e.x-i.x,r=e.y-i.y,s=Math.hypot(n,r);if(X.isNonPositive(s))return null;var a=t/s;return new L(i.x+n*a,i.y+r*a)}var Zg=1e-8;function Dl(i,t,e,n){var r=Math.abs(he(i,t)-e);return r<=(n??Math.max(ut,e*1e-5))}function Fl(i,t,e,n,r){return r===void 0&&(r=Zg),Math.abs(i.x-e.x)<=r&&Math.abs(i.y-e.y)<=r&&Math.abs(t-n)<=r}function Xl(i,t,e,n){var r=Math.max(1e-18,Math.abs(e)*1e-9);return i<e-r?!0:i>e+r?!1:t>n}function ac(i,t,e,n){n===void 0&&(n=!1);var r=Da(i,t,e);if(!r)return null;var s=Me(r.center,i),a=Me(r.center,t),o=Me(r.center,e),c=!C.isAngleOnCcwSweep(s,a,o);return n&&(c=!c),rt.fromMathAngles(r.center,r.radius,s,o,c)}function Fa(i,t){return!Number.isFinite(t)||X.isNonPositive(t)?null:new rt(i,t,0,V,!1)}function Qg(i,t){var e=he(i,t);return X.isNonPositive(e)?null:Fa({x:(i.x+t.x)/2,y:(i.y+t.y)/2},e/2)}function Jg(i,t,e){var n=Da(i,t,e);return n?Fa(n.center,n.radius):null}function tf(i,t,e){var n=he(e,i);if(X.isNonPositive(n))return null;var r=Me(e,i),s=Me(e,t),a=C.normalizeAngle(s-r);return rt.fromMathAngles(e,n,r,s,a>Math.PI)}function xi(i,t,e,n){var r=he(i,t),s=he(i,e);if(X.isNonPositive(r)||X.isNonPositive(s))return null;var a=Math.max(ut,r*ut);return Math.abs(r-s)>a?null:rt.fromMathAngles(i,r,Me(i,t),Me(i,e),n)}function ef(i,t,e,n){var r=he(i,t);if(X.isNonPositive(r))return null;var s=Bl(i,r,e);return s?xi(i,t,s,n):null}function Yl(i,t,e){var n=he(i,t),r=Math.abs(e);if(X.isNonPositive(n)||X.isNonPositive(r)||!X.great(V-r,0))return null;var s=e<0,a=Me(i,t),o=s?a-r:a+r;return rt.fromMathAngles(i,n,a,o,s)}function nf(i,t,e){var n=he(i,t),r=Math.abs(e);if(X.isNonPositive(n)||X.isNonPositive(r)||X.great(r,2*n))return null;var s=Math.max(-1,Math.min(1,r/(2*n))),a=2*Math.asin(s);return Yl(i,t,e>=0?a:-a)}function rf(i,t,e){var n=he(i,t),r=Math.abs(e);if(X.isNonPositive(n)||X.isNonPositive(r)||!X.great(V-r,0))return null;var s=Math.sin(r/2);if(X.equalToZero(s))return null;var a=n/(2*s),o=a*a-n*n/4;if(X.less(o,0))return null;var c=Math.sqrt(Math.max(0,o)),l=(i.x+t.x)/2,h=(i.y+t.y)/2,u=t.x-i.x,d=t.y-i.y,g=-d/n,f=u/n,p=e>=0,m=p&&r<=Math.PI||!p&&r>Math.PI,y=m?1:-1,_={x:l+g*c*y,y:h+f*c*y};return xi(_,i,t,!p)}function sf(i,t,e){var n=Math.cos(e),r=Math.sin(e),s=t.x-i.x,a=t.y-i.y,o=-r,c=n,l=2*(s*o+a*c);if(X.equalToZero(l))return null;var h=(s*s+a*a)/l;if(!Number.isFinite(h))return null;var u={x:i.x+o*h,y:i.y+c*h},d=i.x-u.x,g=i.y-u.y,f=d*r-g*n;return X.equalToZero(f)?null:xi(u,i,t,f<0)}function af(i,t,e){var n=Math.abs(e),r=he(i,t);if(X.isNonPositive(n)||X.isNonPositive(r)||X.great(r,2*n))return null;var s=(i.x+t.x)/2,a=(i.y+t.y)/2,o=t.x-i.x,c=t.y-i.y,l=-c/r,h=o/r,u=Math.sqrt(Math.max(0,n*n-r*r/4)),d=e>=0?1:-1,g={x:s+l*u*d,y:a+h*u*d};return xi(g,i,t,e<0)}var zl=(function(){function i(){this._boundingBoxNeedsUpdate=!1}return Object.defineProperty(i.prototype,"boundingBoxNeedUpdate",{get:function(){return this._boundingBoxNeedsUpdate},enumerable:!1,configurable:!0}),i})(),of=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Xa=(function(i){of(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.translate=function(e){return this.transform(new bi().makeTranslation(e.x,e.y))},Object.defineProperty(t.prototype,"box",{get:function(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box},enumerable:!1,configurable:!0}),t})(zl),cf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Tn=(function(i){cf(t,i);function t(){var e=i.call(this)||this;return e.arcLengthDivisions=100,e}return Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPoint(0)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPoint(1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this.getLength()},enumerable:!1,configurable:!0}),t.prototype.getPoint=function(e){throw new Error("AcGeCurve2d: .getPoint() not implemented.")},t.prototype.getPointAt=function(e){var n=this.getUtoTmapping(e);return this.getPoint(n)},t.prototype.getPoints=function(e){e===void 0&&(e=5);for(var n=[],r=0;r<=e;r++)n.push(this.getPoint(r/e));return n},t.prototype.getSpacedPoints=function(e){e===void 0&&(e=5);for(var n=[],r=0;r<=e;r++)n.push(this.getPointAt(r/e));return n},t.prototype.getLength=function(){var e=this.getLengths();return e[e.length-1]},t.prototype.getLengths=function(e){e===void 0&&(e=this.arcLengthDivisions);var n=[],r,s=this.getPoint(0),a=0;n.push(0);for(var o=1;o<=e;o++)r=this.getPoint(o/e),a+=r.distanceTo(s),n.push(a),s=r;return n},t.prototype.getUtoTmapping=function(e,n){var r=this.getLengths(),s=0,a=r.length,o;n?o=n:o=e*r[a-1];for(var c=0,l=a-1,h;c<=l;)if(s=Math.floor(c+(l-c)/2),h=r[s]-o,h<0)c=s+1;else if(h>0)l=s-1;else{l=s;break}if(s=l,r[s]===o)return s/(a-1);var u=r[s],d=r[s+1],g=d-u,f=(o-u)/g,p=(s+f)/(a-1);return p},t.prototype.getTangent=function(e){var n=1e-4,r=e-n,s=e+n;r<0&&(r=0),s>1&&(s=1);var a=this.getPoint(r),o=this.getPoint(s),c=new L;return c.copy(o).sub(a).normalize(),c},t.prototype.getTangentAt=function(e){var n=this.getUtoTmapping(e);return this.getTangent(n)},t})(Xa),lf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Ti=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Mi=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Oi=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},rt=(function(i){lf(t,i);function t(e,n,r,s,a){var o=i.call(this)||this,c=+(e!==void 0)+ +(n!==void 0)+ +(r!==void 0)+ +(s!==void 0)+ +(a!==void 0);if(c==3)typeof e=="object"&&typeof n=="object"&&typeof r=="object"?o.createByThreePoints(e,n,r):o.createByStartEndPointsAndBulge(e,n,r);else if(c==5){var l=e;o.center=new L(l.x,l.y),o.radius=n,o._clockwise=a,o._startAngle=o._clockwise?o._mirrorAngle(C.normalizeAngle(r)):C.normalizeAngle(r),o._endAngle=o._clockwise?o._mirrorAngle(C.normalizeAngle(s)):C.normalizeAngle(s)}else throw Et.ILLEGAL_PARAMETERS;return o}return t.fromMathAngles=function(e,n,r,s,a){var o=new t(e,n,C.normalizeAngle(r),C.normalizeAngle(s),!1);return o._clockwise=a,o._boundingBoxNeedsUpdate=!0,o},t.computeCircumcircle=function(e,n,r){return Da(e,n,r)},t.projectPoint=function(e,n,r){return Bl(e,n,r)},t.pointLiesOnCircle=function(e,n,r,s){return Dl(e,n,r,s)},t.sameCircle=function(e,n,r,s,a){return Fl(e,n,r,s,a)},t.isBetterDistanceAlign=function(e,n,r,s){return Xl(e,n,r,s)},t.tryCreateByThreePoints=function(e,n,r,s){return s===void 0&&(s=!1),ac(e,n,r,s)},t.tryCreateCircle=function(e,n){return Fa(e,n)},t.tryCreateCircleByDiameter=function(e,n){return Qg(e,n)},t.tryCreateCircleByThreePoints=function(e,n,r){return Jg(e,n,r)},t.tryCreateShorterArc=function(e,n,r){return tf(e,n,r)},t.tryCreateByCenterStartEnd=function(e,n,r,s){return xi(e,n,r,s)},t.tryCreateByCenterStartProjectedEnd=function(e,n,r,s){return ef(e,n,r,s)},t.tryCreateByCenterStartSweep=function(e,n,r){return Yl(e,n,r)},t.tryCreateByCenterStartChord=function(e,n,r){return nf(e,n,r)},t.tryCreateByStartEndAngle=function(e,n,r){return rf(e,n,r)},t.tryCreateByStartEndDirection=function(e,n,r){return sf(e,n,r)},t.tryCreateByStartEndRadius=function(e,n,r){return af(e,n,r)},t.prototype.createByThreePoints=function(e,n,r){var s=ac(e,n,r);if(!s)throw Et.ILLEGAL_PARAMETERS;this.center=s.center,this.radius=s.radius,this._clockwise=s._clockwise,this._startAngle=s._startAngle,this._endAngle=s._endAngle,this._boundingBoxNeedsUpdate=!0},t.prototype.createByStartEndPointsAndBulge=function(e,n,r){var s,a,o;r<0?(s=Math.atan(-r)*4,a=new at(e),o=new at(n)):(s=Math.atan(r)*4,a=new at(n),o=new at(e));var c=new at().subVectors(o,a),l=c.length(),h=new at().addVectors(a,c.multiplyScalar(.5)),u=Math.abs(l/2/Math.tan(s/2)),d=c.normalize(),g=r<0?-Math.PI/2:Math.PI/2,f=new at(d.x*Math.cos(g)-d.y*Math.sin(g),d.y*Math.cos(g)+d.x*Math.sin(g)),p;s<Math.PI?r<0?p=h.add(f.multiplyScalar(u)):p=h.add(f.multiplyScalar(-u)):r<0?p=h.add(f.multiplyScalar(-u)):p=h.add(f.multiplyScalar(u)),r<0?(this._startAngle=Math.atan2(a.y-p.y,a.x-p.x),this._endAngle=Math.atan2(o.y-p.y,o.x-p.x)):(this._startAngle=Math.atan2(o.y-p.y,o.x-p.x),this._endAngle=Math.atan2(a.y-p.y,a.x-p.x)),this._clockwise=r<0,this.center=p,this.radius=o.sub(p).length()},Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new L(e.x,e.y),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"radius",{get:function(){return this._radius},set:function(e){this._radius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle},set:function(e){this._startAngle=this._clockwise?this._mirrorAngle(C.normalizeAngle(e)):C.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle},set:function(e){var n=this.startAngle==0&&e==V?e:C.normalizeAngle(e);this._endAngle=this._clockwise?this._mirrorAngle(n):n,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),t.prototype._mirrorAngle=function(e){var n=e*180/Math.PI,r=(360-n)%360;return r*Math.PI/180},t.prototype._getInternalAngle=function(e){return this._clockwise?this._mirrorAngle(e):e},Object.defineProperty(t.prototype,"deltaAngle",{get:function(){var e=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return this.clockwise?C.normalizeAngle(e-n):C.normalizeAngle(n-e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this._clockwise},set:function(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPointAtAngle(this.startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPointAtAngle(this.endAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){var e=this._getInternalAngle(this.startAngle),n=this._clockwise?C.normalizeAngle(e-this.deltaAngle/2):C.normalizeAngle(e+this.deltaAngle/2),r=this._clockwise?this._mirrorAngle(n):n;return this.getPointAtAngle(r)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"closed",{get:function(){var e=this._getInternalAngle(this.startAngle),n=this._getInternalAngle(this.endAngle);return Math.abs(n-e)/Math.PI%2==0},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e,n,r=[this.startPoint,this.endPoint],s=[0,Math.PI/2,Math.PI,3*Math.PI/2];try{for(var a=Ti(s),o=a.next();!o.done;o=a.next()){var c=o.value,l=this._getInternalAngle(c);C.isBetweenAngle(l,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&r.push(this.getPointAtAngle(c))}}catch(d){e={error:d}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}var h=r.map(function(d){return d.x}),u=r.map(function(d){return d.y});return new wt(new L(Math.min.apply(Math,Oi([],Mi(h),!1)),Math.min.apply(Math,Oi([],Mi(u),!1))),new L(Math.max.apply(Math,Oi([],Mi(h),!1)),Math.max.apply(Math,Oi([],Mi(u),!1))))},Object.defineProperty(t.prototype,"length",{get:function(){return Math.abs(this.deltaAngle*this.radius)},enumerable:!1,configurable:!0}),t.prototype.transform=function(e){var n=this,r=e,s=this.center.clone().applyMatrix2d(r),a=this.startPoint.clone().applyMatrix2d(r);if(this.closed)return this.center=s,this.radius=s.distanceTo(a),this._startAngle=Math.atan2(a.y-s.y,a.x-s.x),this._endAngle=this._startAngle,this._clockwise=r.determinant()<0?!this._clockwise:this._clockwise,this._boundingBoxNeedsUpdate=!0,this;var o=this.midPoint.clone().applyMatrix2d(r),c=this.endPoint.clone().applyMatrix2d(r),l=new t(a,o,c),h=r.determinant()<0?!this.clockwise:this.clockwise,u=function(d){var g=C.normalizeAngle(d);return h?n._mirrorAngle(g):g};return this.center=l.center,this.radius=l.radius,this.clockwise=h,this.startAngle=u(Math.atan2(a.y-l.center.y,a.x-l.center.x)),this.endAngle=u(Math.atan2(c.y-l.center.y,c.x-l.center.x)),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)},t.prototype.getPointAtAngle=function(e){var n=this._getInternalAngle(e),r=this.center.x+this.radius*Math.cos(n),s=this.center.y+this.radius*Math.sin(n);return new L(r,s)},t.prototype.getQuadrantPoints=function(){var e,n,r=[],s=this._getInternalAngle(this.startAngle),a=this._getInternalAngle(this.endAngle),o=[0,Math.PI/2,Math.PI,3*Math.PI/2];try{for(var c=Ti(o),l=c.next();!l.done;l=c.next()){var h=l.value,u=this._getInternalAngle(h);C.isBetweenAngle(u,s,a,this.clockwise)&&r.push(this.getPointAtAngle(h))}}catch(d){e={error:d}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}return r},t.prototype.nearestPoint=function(e){var n=new L(e.x,e.y),r=n.x-this.center.x,s=n.y-this.center.y,a=Math.hypot(r,s);if(a<1e-12)return this.startPoint.clone();var o=Math.atan2(s,r),c=this.clockwise?this._mirrorAngle(C.normalizeAngle(o)):C.normalizeAngle(o),l=this._getInternalAngle(c),h=this._getInternalAngle(this.startAngle),u=this._getInternalAngle(this.endAngle);if(C.isBetweenAngle(l,h,u,this.clockwise))return this.getPointAtAngle(c);var d=n.distanceToSquared(this.startPoint),g=n.distanceToSquared(this.endPoint);return d<=g?this.startPoint.clone():this.endPoint.clone()},t.prototype.inwardAlignment=function(e,n){var r=n.x-e.x,s=n.y-e.y;if(r*r+s*s<1e-24)return 0;var a=this.radius>0?this.radius:1,o=Math.max(1e-16,1e-12*a*a),c=this.startPoint.distanceToSquared(e)<=o,l=this.endPoint.distanceToSquared(e)<=o;if(!c&&!l)return 0;var h=this.getPoints(8);if(h.length<3)return 0;var u=c&&!l?h[1]:h[h.length-2],d=u.x-e.x,g=u.y-e.y,f=Math.hypot(d,g);return f>1e-18?(r*d+s*g)/f:0},t.prototype.perpendicularPoints=function(e){var n,r,s=new L(e.x,e.y),a=s.x-this.center.x,o=s.y-this.center.y,c=Math.hypot(a,o);if(c<1e-12)return[];var l=a/c,h=o/c,u=[new L(this.center.x+l*this.radius,this.center.y+h*this.radius),new L(this.center.x-l*this.radius,this.center.y-h*this.radius)],d=[],g=this._getInternalAngle(this.startAngle),f=this._getInternalAngle(this.endAngle);try{for(var p=Ti(u),m=p.next();!m.done;m=p.next()){var y=m.value,_=Math.atan2(y.y-this.center.y,y.x-this.center.x),v=this.clockwise?this._mirrorAngle(C.normalizeAngle(_)):C.normalizeAngle(_),w=this._getInternalAngle(v);(this.closed||C.isBetweenAngle(w,g,f,this.clockwise))&&d.push(y)}}catch(A){n={error:A}}finally{try{m&&!m.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}return d},t.prototype.tangentPoints=function(e){var n,r,s=[],a=e.x-this.center.x,o=e.y-this.center.y,c=Math.hypot(a,o),l=this.radius;if(c<l)return s;var h=Math.acos(l/c),u=Math.atan2(o,a),d=[u+h,u-h],g=this._getInternalAngle(this.startAngle),f=this._getInternalAngle(this.endAngle);try{for(var p=Ti(d),m=p.next();!m.done;m=p.next()){var y=m.value,_=this.clockwise?this._mirrorAngle(C.normalizeAngle(y)):C.normalizeAngle(y),v=this._getInternalAngle(_);(this.closed||C.isBetweenAngle(v,g,f,this.clockwise))&&s.push(this.getPointAtAngle(_))}}catch(w){n={error:w}}finally{try{m&&!m.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}return s},t.prototype.getPoints=function(e){e===void 0&&(e=100);var n=[],r=this.deltaAngle,s=this._getInternalAngle(this.startAngle);if(this.closed&&(r=V,s=0),this.clockwise)for(var a=0;a<=e;a++){var o=s-r*(a/e),c=this._clockwise?this._mirrorAngle(o):o,l=this.getPointAtAngle(c);n.push(new L(l.x,l.y))}else for(var a=0;a<=e;a++){var o=s+r*(a/e),c=this._clockwise?this._mirrorAngle(o):o,l=this.getPointAtAngle(c);n.push(new L(l.x,l.y))}return n},t})(Tn),ta=function(){return ta=Object.assign||function(i){for(var t,e=1,n=arguments.length;e<n;e++){t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},ta.apply(this,arguments)},hf=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ni=1e-6;function Vl(i,t){if(Mf(i)){var e=df(i,t);return e?[e]:[]}var n=Hl(i),r=n.numberOfVertices;if(r<2)return[];var s=Nf(n,t);return s?[s]:[]}function uf(i){return Hl(i)}function df(i,t){var e,n,r=gf(i);if(r.length===0)return null;var s=[];try{for(var a=hf(r),o=a.next();!o.done;o=a.next()){var c=o.value,l=pf(c,t);if(!l)return null;s.push(l)}}catch(g){e={error:g}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}var h=ff(i),u=_f(s,h,i.closed,t);if(u.length<2)return null;var d=new Q;return u.forEach(function(g,f){d.addVertexAt(f,{x:g.x,y:g.y})}),d.closed=i.closed,d}function gf(i){for(var t,e=[],n=i.numberOfVertices,r=i.closed?n:n-1,s=0;s<r;s++){var a=i.vertices[s],o=i.vertices[(s+1)%n];X.isPositive(Math.abs((t=a.bulge)!==null&&t!==void 0?t:0))?e.push({kind:"arc",arc:new rt(a,o,a.bulge)}):e.push({kind:"line",start:new L(a.x,a.y),end:new L(o.x,o.y)})}return e}function ff(i){for(var t=[],e=0;e<i.numberOfVertices;e++)t.push(i.getPointAt(e));return t}function pf(i,t){if(i.kind==="line"){var e=bf(i.start,i.end,t);return e?ta({kind:"line"},e):null}var n=mf(i.arc,i.arc.startPoint,i.arc.endPoint,t);return n?{kind:"arc",arc:n}:null}function mf(i,t,e,n){var r=yf(i,t,e,n),s=i.radius+r;return X.isNonPositive(s)?null:new rt(i.center,s,i.startAngle,i.endAngle,i.clockwise)}function yf(i,t,e,n){var r=e.x-t.x,s=e.y-t.y,a=Math.hypot(r,s);if(X.isNonPositive(a))return i.clockwise?-n:n;var o=-s/a,c=r/a,l=i.center.x-(t.x+e.x)/2,h=i.center.y-(t.y+e.y)/2,u=l*o+h*c>0;return u?-n:n}function bf(i,t,e){var n=t.x-i.x,r=t.y-i.y,s=Math.hypot(n,r);if(X.isNonPositive(s))return null;var a=-r/s*e,o=n/s*e;return{start:new L(i.x+a,i.y+o),end:new L(t.x+a,t.y+o),dx:n,dy:r}}function _f(i,t,e,n){var r,s,a,o=i.length;if(o===0)return[];for(var c=xf(i,t,e,n),l=[(s=(r=c[0].nextSegmentStart)===null||r===void 0?void 0:r.clone())!==null&&s!==void 0?s:c[0].point.clone()],h=0;h<o;h++){var u=i[h],d=h===o-1&&!e?{point:kf(u)}:c[(h+1)%o];if(h>0&&c[h].filletPoints&&c[h].filletPoints.forEach(function(y){return l.push(y.clone())}),u.kind==="arc")for(var g=(a=c[h].nextSegmentStart)!==null&&a!==void 0?a:c[h].point,f=d.point,p=wf(u.arc,g,f,Math.max(16,32)),m=1;m<p.length;m++)l.push(p[m]);else l.push(d.point.clone())}return Wl(l)}function xf(i,t,e,n){for(var r=i.length,s=[],a=0;a<r;a++)a===0?s.push(e?oc(i[r-1],i[0],t[0],n):{point:Pf(i[0])}):s.push(oc(i[a-1],i[a],t[a],n));return s}function wf(i,t,e,n){for(var r=i.nearestPoint(t),s=i.nearestPoint(e),a=ea(i,r),o=ea(i,s),c=Af(i,a,o),l=[],h=0;h<=n;h++){var u=h/n,d=i.clockwise?a-c*u:a+c*u;l.push(i.getPointAtAngle(vf(i,d)))}return l}function ea(i,t){return Math.atan2(t.y-i.center.y,t.x-i.center.x)}function vf(i,t){var e=C.normalizeAngle(t);return i.clockwise?na(e):e}function na(i){var t=i*180/Math.PI;return(360-t)%360*(Math.PI/180)}function Af(i,t,e){if(i.clockwise){var n=t-e;return X.isNonPositive(n)&&(n+=V),n}var r=e-t;return X.isNonPositive(r)&&(r+=V),r}function Pf(i){return i.kind==="line"?i.start.clone():i.arc.startPoint.clone()}function kf(i){return i.kind==="line"?i.end.clone():i.arc.endPoint.clone()}function oc(i,t,e,n){return i.kind==="line"&&t.kind==="line"?{point:ia({start:i.start,end:i.end,dx:i.dx,dy:i.dy},{start:t.start,end:t.end,dx:t.dx,dy:t.dy})}:i.kind==="line"&&t.kind==="arc"?cc(i,t.arc,e,n,!0):i.kind==="arc"&&t.kind==="line"?cc(t,i.arc,e,n,!1):i.kind==="arc"&&t.kind==="arc"?Sf(i.arc,t.arc,e,n):{point:e.clone()}}function Sf(i,t,e,n){var r=Ul(i.endPoint,t.startPoint),s=Tf(i,t),a=s.filter(function(h){return Zi(i,h)&&Zi(t,h)});if(a.length>0)return{point:Gl(a,r)};var o=i.endPoint.clone(),c=t.startPoint.clone(),l=jl(e,Math.abs(n),o,c);return{point:o,filletPoints:l,nextSegmentStart:c}}function cc(i,t,e,n,r){var s=Ul(r?i.end:i.start,r?t.startPoint:t.endPoint),a=Cf(i,t,s);if(Ef(i,a)&&Zi(t,a))return{point:a};var o=If(i,e,n),c=r?t.startPoint.clone():t.endPoint.clone(),l=jl(e,Math.abs(n),r?o:c,r?c:o);return r?{point:o,filletPoints:l,nextSegmentStart:c}:{point:c,filletPoints:l,nextSegmentStart:o}}function If(i,t,e){var n=Math.hypot(i.dx,i.dy),r=-i.dy/n*e,s=i.dx/n*e;return new L(t.x+r,t.y+s)}function Ef(i,t){var e=Math.hypot(i.dx,i.dy);if(X.isNonPositive(e))return!1;var n=i.dx/e,r=i.dy/e,s=t.x-i.start.x,a=t.y-i.start.y,o=Math.abs(s*r-a*n);return X.equalToZero(o)}function jl(i,t,e,n){var r=Math.atan2(e.y-i.y,e.x-i.x),s=Math.atan2(n.y-i.y,n.x-i.x),a=Lf(r,s);if(X.equalToZero(Math.abs(a)))return[];for(var o=[],c=Math.max(2,Math.ceil(Math.abs(a)/Math.PI*16)),l=1;l<c;l++){var h=l/c,u=r+a*h;o.push(new L(i.x+t*Math.cos(u),i.y+t*Math.sin(u)))}return o}function Lf(i,t){for(var e=t-i;e>Math.PI;)e-=V;for(;e<=-Math.PI;)e+=V;return e}function Cf(i,t,e){var n=Math.hypot(i.dx,i.dy);if(X.isNonPositive(n))return e.clone();var r=i.dx/n,s=i.dy/n,a=i.start.x-t.center.x,o=i.start.y-t.center.y,c=2*(a*r+o*s),l=a*a+o*o-t.radius*t.radius,h=c*c-4*l;if(h<0)return e.clone();var u=Math.sqrt(h),d=[(-c-u)/2,(-c+u)/2].map(function(f){return new L(i.start.x+r*f,i.start.y+s*f)}),g=d.filter(function(f){return Zi(t,f)});return Gl(g.length>0?g:d,e)}function Zi(i,t){var e=Math.abs(Math.hypot(t.x-i.center.x,t.y-i.center.y)-i.radius);if(X.isPositive(e))return!1;var n=ea(i,t),r=i.clockwise?na(C.normalizeAngle(i.startAngle)):C.normalizeAngle(i.startAngle),s=i.clockwise?na(C.normalizeAngle(i.endAngle)):C.normalizeAngle(i.endAngle);return C.isBetweenAngle(n,r,s,i.clockwise)}function Tf(i,t){var e=t.center.x-i.center.x,n=t.center.y-i.center.y,r=Math.hypot(e,n);if(X.isNonPositive(r))return[];var s=i.radius+t.radius,a=Math.abs(i.radius-t.radius);if(r>s+Ni)return[];if(r<a-Ni)return[];var o=(i.radius*i.radius-t.radius*t.radius+r*r)/(2*r),c=i.radius*i.radius-o*o;if(c<-Ni)return[];var l=i.center.x+o*e/r,h=i.center.y+o*n/r;if(c<=Ni)return[new L(l,h)];var u=Math.sqrt(c),d=-n*u/r,g=e*u/r;return[new L(l+d,h+g),new L(l-d,h-g)]}function Gl(i,t){for(var e=i[0],n=e.distanceToSquared(t),r=1;r<i.length;r++){var s=i[r].distanceToSquared(t);s<n&&(e=i[r],n=s)}return e.clone()}function Ul(i,t){return new L((i.x+t.x)/2,(i.y+t.y)/2)}function Mf(i){for(var t,e=i.numberOfVertices,n=i.closed?e:e-1,r=0;r<n;r++){var s=i.vertices[r];if(X.isPositive(Math.abs((t=s.bulge)!==null&&t!==void 0?t:0)))return!0}return!1}function Hl(i){var t=Of(i.vertices.map(function(e){return new L(e.x,e.y)}),i.closed);return t.length===i.numberOfVertices?i:new Q(t.map(function(e){return{x:e.x,y:e.y}}),i.closed)}function Of(i,t){var e=Wl(i);if(!t||e.length<2)return e;var n=e[0],r=e[e.length-1];return X.isNonPositive(Math.hypot(n.x-r.x,n.y-r.y))&&e.pop(),e}function Wl(i){var t=[];return i.forEach(function(e){var n=t[t.length-1];(!n||X.isPositive(Math.hypot(n.x-e.x,n.y-e.y)))&&t.push(new L(e.x,e.y))}),t}function Nf(i,t){for(var e=[],n=0;n<i.numberOfVertices;n++)e.push(i.getPointAt(n));var r=Rf(e,i.closed,t);if(r.length===0)return null;var s=[];if(i.closed){if(r.length<2)return null;for(var a=r.length,n=0;n<a;n++){var o=r[(n-1+a)%a],c=r[n];s.push(ia(o,c))}}else{s.push(r[0].start);for(var n=1;n<r.length;n++)s.push(ia(r[n-1],r[n]));s.push(r[r.length-1].end)}var l=new Q;return s.forEach(function(h,u){l.addVertexAt(u,{x:h.x,y:h.y})}),l.closed=i.closed,l}function Rf(i,t,e){for(var n=[],r=t?i.length:i.length-1,s=0;s<r;s++){var a=i[s],o=i[t?(s+1)%i.length:s+1],c=o.x-a.x,l=o.y-a.y,h=Math.hypot(c,l);if(!X.isNonPositive(h)){var u=-l/h*e,d=c/h*e;n.push({start:new L(a.x+u,a.y+d),end:new L(o.x+u,o.y+d),dx:c,dy:l})}}return n}function ia(i,t){var e=i.dx*t.dy-i.dy*t.dx;if(X.equalToZero(e))return new L((i.end.x+t.start.x)/2,(i.end.y+t.start.y)/2);var n=t.start.x-i.start.x,r=t.start.y-i.start.y,s=(n*t.dy-r*t.dx)/e;return new L(i.start.x+s*i.dx,i.start.y+s*i.dy)}var Bf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),ra=function(){return ra=Object.assign||function(i){for(var t,e=1,n=arguments.length;e<n;e++){t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},ra.apply(this,arguments)},Q=(function(i){Bf(t,i);function t(e,n){e===void 0&&(e=null),n===void 0&&(n=!1);var r=i.call(this)||this;return r._vertices=e||new Array,r._closed=n,r}return Object.defineProperty(t.prototype,"vertices",{get:function(){return this._vertices},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"numberOfVertices",{get:function(){return this._vertices.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"closed",{get:function(){return this._closed},set:function(e){this._closed=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){if(this.numberOfVertices>0){var e=this._vertices[0];return new L(e.x,e.y)}throw new Error("Start point does not exist in an empty polyline.")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){var e=this.numberOfVertices;if(e>0)if(this.closed){var n=this._vertices[0];return new L(n.x,n.y)}else{var n=this._vertices[e-1];return new L(n.x,n.y)}throw new Error("End point does not exist in an empty polyline.")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){for(var e=0,n=this._vertices.length,r=0;r<n;++r){var s=this._vertices[r],a=null;if(r<n-1?a=this._vertices[r+1]:r==n-1&&this.closed&&(a=this._vertices[0]),a)if(s.bulge){var o=new rt(s,a,s.bulge);e+=o.length}else e+=new L(s.x,s.y).distanceTo(a)}return e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){if(!this._closed||this._vertices.length<3)return 0;var e=this.getPoints(128);return Kg(e)},enumerable:!1,configurable:!0}),t.prototype.addVertexAt=function(e,n){e<=0?this._vertices.unshift(n):this._vertices.splice(e,0,n),this._boundingBoxNeedsUpdate=!0},t.prototype.removeVertexAt=function(e){if(e<0||e>=this._vertices.length)throw new Error("Index ".concat(e," is out of bounds. Valid range is 0 to ").concat(this._vertices.length-1,"."));this._vertices.splice(e,1),this._boundingBoxNeedsUpdate=!0},t.prototype.reset=function(e,n){e?n!==void 0&&n>=0&&n<this._vertices.length&&(this._vertices=this._vertices.slice(0,n),this._boundingBoxNeedsUpdate=!0):(this._vertices=new Array,this._boundingBoxNeedsUpdate=!0)},t.prototype.getPointAt=function(e){var n=this._vertices[e];return new L(n.x,n.y)},t.prototype.calculateBoundingBox=function(){var e=this.getPoints(100);return new wt().setFromPoints(e)},t.prototype.transform=function(e){var n=e.determinant()<0;return this._vertices.forEach(function(r){var s=new L(r).applyMatrix2d(e);r.x=s.x,r.y=s.y,n&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._vertices.map(function(e){return ra({},e)}),this._closed)},t.prototype.getPoints3d=function(e,n){var r=[],s=this.getPoints(e);return s.forEach(function(a){return r.push(new b().set(a.x,a.y,n))}),r},t.prototype.getPoints=function(e){for(var n=[],r=this._vertices.length,s=0;s<r;++s){var a=this._vertices[s];if(a.bulge){var o=null;if(s<r-1?o=this._vertices[s+1]:s==r-1&&this.closed&&(o=this._vertices[0]),o)for(var c=new rt(a,o,a.bulge),l=c.getPoints(e),h=l.length,u=0;u<h;++u){var d=l[u];n.push(new L(d.x,d.y))}}else n.push(new L(a.x,a.y)),s==r-1&&this.closed&&n.push(n[0])}return n},t.prototype.offset=function(e){return Vl(this,e)},t})(Tn);function $l(i,t,e){var n=Math.hypot(t.x,t.y);if(X.isNonPositive(n))return null;var r=-t.y/n*e,s=t.x/n*e;return new b(i.x+r,i.y+s,i.z)}function Df(i,t,e){var n;if(i.length<2)return null;var r=uf(new Q(i.map(function(a){return{x:a.x,y:a.y}}),t)),s=Vl(r,e);return(n=s[0])!==null&&n!==void 0?n:null}var Qi=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},pn=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))};function Ff(i,t,e,n){if(i.length<2||X.equalToZero(e))return null;var r=Kl(i,n),s=r.points,a=r.tangents;if(s.length<2)return null;var o=a??Xf(s,t),c=Yf(s,o,e),l=t?Vf(c):zf(c);if(l.length<2)return null;var h=new Q;return l.forEach(function(u,d){h.addVertexAt(d,{x:u.x,y:u.y})}),h.closed=t,h}function Xf(i,t){for(var e=i.length,n=new Array(e),r=0;r<e;r++){var s=0,a=0;if(t){var o=i[(r-1+e)%e],c=i[(r+1)%e];s=c.x-o.x,a=c.y-o.y}else r===0?(s=i[1].x-i[0].x,a=i[1].y-i[0].y):r===e-1?(s=i[e-1].x-i[e-2].x,a=i[e-1].y-i[e-2].y):(s=i[r+1].x-i[r-1].x,a=i[r+1].y-i[r-1].y);var l=Math.hypot(s,a);X.isNonPositive(l)?n[r]=new L(1,0):n[r]=new L(s/l,a/l)}return n}function Yf(i,t,e){return i.map(function(n,r){var s=t[r],a=-s.y*e,o=s.x*e;return new L(n.x+a,n.y+o)})}function zf(i){var t=Ji(i);if(t.length<3)return t;for(;;){var e=ql(t,!1);if(!e||(t=Ji(pn(pn(pn([],Qi(t.slice(0,e.segmentA+1)),!1),[e.point],!1),Qi(t.slice(e.segmentB+1)),!1)),t.length<2))break}return t}function Vf(i){var t=Ji(i);if(t.length<4)return t;for(;;){var e=ql(t,!0);if(!e||(t=Ji(pn(pn(pn([],Qi(t.slice(0,e.segmentA+1)),!1),[e.point],!1),Qi(t.slice(e.segmentB+1)),!1)),t.length<3))break}return t}function ql(i,t){var e=t?i.length:i.length-1;if(e<2)return null;for(var n=0;n<e;n++)for(var r=i[n],s=i[(n+1)%i.length],a=n+1;a<e;a++)if(!jf(n,a,e,t)){var o=i[a],c=i[(a+1)%i.length],l=Gf(r,s,o,c);if(l)return{point:l,segmentA:n,segmentB:a}}return null}function jf(i,t,e,n){return!!(t===i||t===i+1||n&&i===0&&t===e-1)}function Gf(i,t,e,n){var r=t.x-i.x,s=t.y-i.y,a=n.x-e.x,o=n.y-e.y,c=r*o-s*a;if(X.equalToZero(c))return null;var l=e.x-i.x,h=e.y-i.y,u=(l*o-h*a)/c,d=(l*s-h*r)/c,g=_i.equalPointTol;return u<-g||u>1+g||d<-g||d>1+g?null:new L(i.x+u*r,i.y+u*s)}function Kl(i,t){var e=[],n=[],r=t!=null&&t.length===i.length;return i.forEach(function(s,a){var o=e[e.length-1];if((!o||X.isPositive(Math.hypot(o.x-s.x,o.y-s.y)))&&(e.push(new L(s.x,s.y)),r)){var c=t[a];n.push(new L(c.x,c.y))}}),{points:e,tangents:r?n:void 0}}function Ji(i){return Kl(i).points}var Uf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Kt=(function(i){Uf(t,i);function t(){var e=i.call(this)||this;return e._loops=[],e}return t.prototype.add=function(e){this._loops.push(e),this._boundingBoxNeedsUpdate=!0},Object.defineProperty(t.prototype,"loops",{get:function(){return this._loops},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"outter",{get:function(){if(this._loops.length>0)return this._loops[0]},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e=this.outter;return e?e.box:new wt},t.prototype.transform=function(e){return this._loops.forEach(function(n){n.transform(e)}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){var e=new t;return this._loops.forEach(function(n){e.add(n.clone())}),e},t.prototype.getPoints=function(e){for(var n=[],r=0;r<this.loops.length;++r){var s=this.loops[r],a=s.getPoints(e);n.push(a)}return n},t.prototype.buildHierarchy=function(){for(var e,n=this.getPoints(100),r=this.calculateBoundaryBoxes(n),s=this.sortBoundaryBoxesByAreas(r),a=new Map,o=s.length,c=0;c<o;c++)a.set(s[c],{index:s[c],children:[]});for(var l={index:-1,children:[]},c=0;c<o;c++){for(var h=s[c],u=n[h],d=r[h],g=c+1;g<o;g++){var f=s[g],p=n[f],m=r[f];if(m.containsBox(d)&&kt.isPointInPolygon(u[C.randInt(0,u.length-1)],p)){(e=a.get(f))===null||e===void 0||e.children.push(a.get(h));break}}g===o&&l.children.push(a.get(h))}return l},Object.defineProperty(t.prototype,"area",{get:function(){if(this._loops.length===0)return 0;for(var e=0,n=0;n<this._loops.length;n++){var r=this._loops[n],s=r.getPoints(128),a=Nl(s);n===0?e+=Math.abs(a):e-=Math.abs(a)}return e},enumerable:!1,configurable:!0}),t.prototype.calculateBoundaryBoxes=function(e){var n=[];return e.forEach(function(r){n.push(new wt().setFromPoints(r))}),n},t.prototype.sortBoundaryBoxesByAreas=function(e){var n=[];e.forEach(function(s,a){var o=s.size,c=o.width*o.height;n.push({area:c,index:a})}),n.sort(function(s,a){return s.area-a.area});var r=[];return n.forEach(function(s){r.push(s.index)}),r},t})(Xa),Hf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Wf=(function(i){Hf(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.translate=function(e){return this.transform(new D().makeTranslation(e.x,e.y,e.z))},Object.defineProperty(t.prototype,"box",{get:function(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box},enumerable:!1,configurable:!0}),t})(zl),$f=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),wi=(function(i){$f(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t})(Wf),qf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Es=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},St=(function(i){qf(t,i);function t(e,n,r,s,a,o){o===void 0&&(o=x.X_AXIS);var c=i.call(this)||this;return c.center=e,c.radius=n,c.startAngle=r,c.endAngle=s,c.normal=a,c.refVec=o,(s-r)%V==0?(c.startAngle=0,c.endAngle=V):(c.startAngle=r,c.endAngle=s),c}return t.computeCenterPoint=function(e,n,r){var s,a;return(a=(s=sc(e,r,n))===null||s===void 0?void 0:s.center)!==null&&a!==void 0?a:null},t.tryCreateByThreePoints=function(e,n,r){var s,a,o,c=sc(e,r,n);if(!c)return null;var l=c.center,h=c.radius,u=new x(e.x-l.x,e.y-l.y,((s=e.z)!==null&&s!==void 0?s:0)-l.z),d=new x(r.x-l.x,r.y-l.y,((a=r.z)!==null&&a!==void 0?a:0)-l.z),g=new x(n.x-l.x,n.y-l.y,((o=n.z)!==null&&o!==void 0?o:0)-l.z);if(u.lengthSq()===0||g.lengthSq()===0)return null;var f=new x().crossVectors(u,g);if(f.lengthSq()===0&&(f.crossVectors(u,d),f.lengthSq()===0))return null;f.normalize();var p=u.clone().normalize(),m=new x().crossVectors(f,p),y=function(v){return C.normalizeAngle(Math.atan2(v.dot(m),v.dot(p)))};C.isAngleOnCcwSweep(0,y(d),y(g))||(f.negate(),m.negate());var _=y(g);return X.equalToZero(_)&&(_=V),new t(l,h,0,_,f,p)},t.createByThreePoints=function(e,n,r){return t.tryCreateByThreePoints(e,n,r)},Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new b(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"radius",{get:function(){return this._radius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._radius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._startAngle},set:function(e){this._startAngle=C.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._endAngle},set:function(e){this._endAngle=this.startAngle==0&&e==V?e:C.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"deltaAngle",{get:function(){return C.normalizeAngle(this.endAngle-this.startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isLargeArc",{get:function(){return Math.abs(this.deltaAngle)>Math.PI?1:0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this.deltaAngle<=0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"normal",{get:function(){return this._normal},set:function(e){this._normal=new x(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"refVec",{get:function(){return this._refVec},set:function(e){this._refVec=new x(e.x,e.y,e.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPointAtAngle(this._startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPointAtAngle(this._endAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){var e=this.startAngle,n=this.deltaAngle;this.closed&&(e=0,n=V);var r=e+n*.5;return this.getPointAtAngle(r)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){return this.closed?Math.PI*this.radius*this.radius:0},enumerable:!1,configurable:!0}),t.prototype.nearestPoint=function(e){var n=new x(e.x,e.y,e.z||0),r=this.center,s=this.normal,a=n.clone().sub(r),o=a.dot(s),c=n.clone().sub(s.clone().multiplyScalar(o)),l=c.clone().sub(r);if(l.lengthSq()===0)return this.startPoint.clone();l.normalize().multiplyScalar(this.radius);var h=r.clone().add(l),u=this.getAngle(h.clone()),d=this.startAngle,g=this.deltaAngle,f=C.normalizeAngle(u-d);f<0&&(f=0),f>g&&(f=g);var p=this.getPointAtAngle(d+f),m=p.distanceTo(n),y=this.startPoint.distanceTo(n),_=this.endPoint.distanceTo(n);return y<m&&y<=_?this.startPoint.clone():_<m&&_<y?this.endPoint.clone():p},t.prototype.tangentPoints=function(e){var n,r,s=[],a=new x(e.x,e.y,e.z||0),o=this.center,c=this.normal,l=this.radius,h=a.clone().sub(o),u=h.dot(c),d=a.clone().sub(c.clone().multiplyScalar(u)),g=o.clone(),f=d.clone().sub(g),p=f.length();if(p<l)return s;var m=Math.acos(l/p),y=this.getAngle(d.clone()),_=[y+m,y-m];try{for(var v=Es(_),w=v.next();!w.done;w=v.next()){var A=w.value,E=C.normalizeAngle(A-this.startAngle);E>=0&&E<=this.deltaAngle&&s.push(this.getPointAtAngle(this.startAngle+E))}}catch(I){n={error:I}}finally{try{w&&!w.done&&(r=v.return)&&r.call(v)}finally{if(n)throw n.error}}return s},t.prototype.perpendicularPoints=function(e){var n,r,s=[],a=new x(e.x,e.y,e.z||0),o=this.center,c=this.normal,l=this.radius,h=a.clone().sub(o),u=h.dot(c),d=a.clone().sub(c.clone().multiplyScalar(u)),g=d.clone().sub(o);if(g.lengthSq()<1e-24)return s;g.normalize();var f=[o.clone().add(g.clone().multiplyScalar(l)),o.clone().sub(g.clone().multiplyScalar(l))];try{for(var p=Es(f),m=p.next();!m.done;m=p.next()){var y=m.value,_=this.getAngle(y.clone()),v=C.normalizeAngle(_-this.startAngle);v>=0&&v<=this.deltaAngle&&s.push(new b(y.x,y.y,y.z||0))}}catch(w){n={error:w}}finally{try{m&&!m.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}return s},t.prototype.nearestTangentPoint=function(e){var n=this.tangentPoints(e);if(n.length===0)return null;var r=new b(e.x,e.y,e.z||0);return n.length===1||n[0].distanceTo(r)<n[1].distanceTo(r)?n[0]:n[1]},t.prototype.calculateBoundingBox=function(){for(var e,n,r=[this.startAngle,this.endAngle],s=0;s<2*Math.PI;s+=Math.PI/2)C.isBetweenAngle(s,this.startAngle,this.endAngle)&&r.push(s);var a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0;try{for(var d=Es(r),g=d.next();!g.done;g=d.next()){var f=g.value,p=this.getPointAtAngle(f);p.x<a&&(a=p.x),p.y<o&&(o=p.y),p.z<c&&(c=p.z),p.x>l&&(l=p.x),p.y>h&&(h=p.y),p.z>u&&(u=p.z)}}catch(m){e={error:m}}finally{try{g&&!g.done&&(n=d.return)&&n.call(d)}finally{if(e)throw e.error}}return new z({x:a,y:o,z:c},{x:l,y:h,z:u})},Object.defineProperty(t.prototype,"closed",{get:function(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(e){var n=[],r=this.deltaAngle,s=this.startAngle;this.closed&&(r=V,s=0);for(var a=0;a<=e;a++){var o=s+r*(a/e),c=this.getPointAtAngle(o);n.push(c)}return n},t.prototype.transform=function(e){var n=this.center.clone().applyMatrix4(e),r=this.startPoint.clone().applyMatrix4(e),s=this.endPoint.clone().applyMatrix4(e),a=this.getPointAtAngle(this.closed?Math.PI/2:this.startAngle+this.deltaAngle/2).clone().applyMatrix4(e),o=new x(r).sub(n).normalize(),c=n.distanceTo(r),l=new x().crossVectors(new x(r).sub(n),new x(a).sub(n)).normalize();l.lengthSq()===0&&(l=this.normal.clone().transformDirection(e));var h=function(u){var d=new x(u).sub(n);return Math.atan2(d.dot(lc.crossVectors(l,o)),d.dot(o))};return this.center=n,this.radius=c,this.normal=l,this.refVec=o,this.startAngle=0,this.endAngle=this.closed?V:h(s),this._boundingBoxNeedsUpdate=!0,this},t.prototype.copy=function(e){return this.center=e.center,this.radius=e.radius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.normal=e.normal,this.refVec=e.refVec,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)},t.prototype.getAngle=function(e){return e.sub(this.center),Math.atan2(e.dot(lc.crossVectors(this.refVec,this.normal)),e.dot(this.refVec))},t.prototype.getPointAtAngle=function(e){var n=this.normal,r=this.refVec,s={x:n.y*r.z-n.z*r.y,y:n.z*r.x-n.x*r.z,z:n.x*r.y-n.y*r.x},a=this.center,o=this.radius;return new b(a.x+o*(r.x*Math.cos(e)+s.x*Math.sin(e)),a.y+o*(r.y*Math.cos(e)+s.y*Math.sin(e)),a.z+o*(r.z*Math.cos(e)+s.z*Math.sin(e)))},Object.defineProperty(t.prototype,"plane",{get:function(){var e=new x(this.center).distanceTo(Ra);return new Jr(this.normal,e)},enumerable:!1,configurable:!0}),t.prototype.offset=function(e){var n=this.radius+e;return n<=0?null:new t(this.center,n,this.startAngle,this.endAngle,this.normal,this.refVec)},t})(wi),lc=new x,Kf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),me=(function(i){Kf(t,i);function t(e,n,r,s,a,o,c){s===void 0&&(s=0),a===void 0&&(a=V),o===void 0&&(o=!1),c===void 0&&(c=0);var l=i.call(this)||this;return l.center=e,l.majorAxisRadius=n,l.minorAxisRadius=r,(a-s)%V==0?(l.startAngle=0,l.endAngle=V):(l.startAngle=s,l.endAngle=a),l.clockwise=o,l.rotation=c,l}return Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new b(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"majorAxisRadius",{get:function(){return this._majorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minorAxisRadius",{get:function(){return this._minorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._startAngle},set:function(e){this._startAngle=C.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._endAngle},set:function(e){this._endAngle=this.startAngle==0&&e==V?e:C.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this._clockwise},set:function(e){this._clockwise=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rotation",{get:function(){return this._rotation},set:function(e){this._rotation=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"deltaAngle",{get:function(){return C.normalizeAngle(this.endAngle-this.startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isLargeArc",{get:function(){return Math.abs(this.deltaAngle)>Math.PI?1:0},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){for(var e=100,n=1/0,r=1/0,s=-1/0,a=-1/0,o=0;o<=e;o++){var c=this.getPoint(o/e);n=Math.min(n,c.x),r=Math.min(r,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}return new wt({x:n,y:r},{x:s,y:a})},Object.defineProperty(t.prototype,"closed",{get:function(){return this.deltaAngle==0},enumerable:!1,configurable:!0}),t.prototype.getPoint=function(e){for(var n=Math.PI*2,r=this.endAngle-this.startAngle,s=Math.abs(r)<Number.EPSILON;r<0;)r+=n;for(;r>n;)r-=n;r<Number.EPSILON&&(s?r=0:r=n),this.clockwise===!0&&!s&&(r===n?r=-n:r=r-n);var a=this.startAngle+e*r,o=this.center.x+this.majorAxisRadius*Math.cos(a),c=this.center.y+this.minorAxisRadius*Math.sin(a);if(this.rotation!==0){var l=Math.cos(this.rotation),h=Math.sin(this.rotation),u=o-this.center.x,d=c-this.center.y;o=u*l-d*h+this.center.x,c=u*h+d*l+this.center.y}return new L(o,c)},t.prototype.transform=function(e){var n=e,r=new L(this.center).applyMatrix2d(n),s=new b(r.x,r.y,this.center.z),a=this.getPointAtAngle(0).clone().applyMatrix2d(n),o=this.getPointAtAngle(Math.PI/2).clone().applyMatrix2d(n),c=new L(a).sub(r),l=new L(o).sub(r),h=c.length(),u=l.length(),d=Math.atan2(c.y,c.x),g=c.clone().normalize(),f=l.clone().normalize(),p=function(_){var v=new L(_).sub(r),w=v.dot(g),A=v.dot(f);return C.normalizeAngle(Math.atan2(A/u,w/h))},m=n.determinant()<0?!this.clockwise:this.clockwise,y=this.closed?new t(s,h,u,0,V,m,d):new t(s,h,u,p(this.startPoint.clone().applyMatrix2d(n)),p(this.endPoint.clone().applyMatrix2d(n)),m,d);return this.center=y.center,this.majorAxisRadius=y.majorAxisRadius,this.minorAxisRadius=y.minorAxisRadius,this._startAngle=y._startAngle,this._endAngle=y._endAngle,this._clockwise=y._clockwise,this.rotation=y.rotation,this._boundingBoxNeedsUpdate=!0,this},t.prototype.getPointAtAngle=function(e){return this.getPoint(this.closed?e/V:C.normalizeAngle(e-this.startAngle)/this.deltaAngle)},t.prototype.copy=function(e){return this.center=e.center,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this.clockwise=e.clockwise,this.rotation=e.rotation,this},t.prototype.clone=function(){return new t(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)},t.prototype.getFocusPoints=function(){var e=Math.max(this.majorAxisRadius,this.minorAxisRadius),n=Math.min(this.majorAxisRadius,this.minorAxisRadius);if(e-n<1e-9)return[];var r=Math.sqrt(e*e-n*n),s=Math.cos(this.rotation),a=Math.sin(this.rotation),o=this.majorAxisRadius>=this.minorAxisRadius,c=o?s:-a,l=o?a:s;return[new L(this.center.x-r*c,this.center.y-r*l),new L(this.center.x+r*c,this.center.y+r*l)]},t.prototype.getQuadrantPoints=function(){return this.closed?[this.getPoint(0),this.getPoint(.25),this.getPoint(.5),this.getPoint(.75)]:[]},t.prototype.nearestPoint=function(e){for(var n=new L(e.x,e.y),r=this.getPoint(0),s=n.distanceToSquared(r),a=72,o=1;o<=a;o++){var c=this.getPoint(o/a),l=n.distanceToSquared(c);l<s&&(s=l,r=c)}return r},t.prototype.tangentPoints=function(e){var n=this,r=this._projectPointToLocal(e),s=this._findSnapAngles(r,function(a,o,c,l){var h=-n.majorAxisRadius*l,u=n.minorAxisRadius*c;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype.perpendicularPoints=function(e){var n=this,r=this._projectPointToLocal(e),s=this._findSnapAngles(r,function(a,o,c,l){var h=n.minorAxisRadius*c,u=n.majorAxisRadius*l;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype._projectPointToLocal=function(e){var n=e.x-this.center.x,r=e.y-this.center.y,s=Math.cos(-this.rotation),a=Math.sin(-this.rotation);return{x:n*s-r*a,y:n*a+r*s}},t.prototype._findSnapAngles=function(e,n,r){r===void 0&&(r=144);for(var s=this.majorAxisRadius,a=this.minorAxisRadius,o=this.startAngle,c=this.deltaAngle,l=[],h=function(w){var A=Math.cos(w),E=Math.sin(w);return n(s*A,a*E,A,E)},u=o,d=h(u),g=1;g<=r;g++){var f=o+c*g/r,p=h(f);if(Math.abs(d)<1e-10&&l.push(u),d*p<0){for(var m=u,y=f,_=0;_<32;_++){var v=(m+y)/2;h(m)*h(v)<=0?y=v:m=v}l.push((m+y)/2)}u=f,d=p}return l},t})(Tn),Zf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Qf=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},ue=(function(i){Zf(t,i);function t(e,n,r,s,a,o,c){o===void 0&&(o=0),c===void 0&&(c=V);var l=i.call(this)||this;l.center=e,l.normal=n,l.majorAxis=r,l.majorAxisRadius=s,l.minorAxisRadius=a;var h=Math.abs(c-o);return Math.abs(h-V)<1e-10||Math.abs(h-2*V)<1e-10?(l.startAngle=0,l.endAngle=V):(l.startAngle=o,l.endAngle=c),l}return Object.defineProperty(t.prototype,"center",{get:function(){return this._center},set:function(e){this._center=new b(e.x,e.y,e.z||0),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"majorAxisRadius",{get:function(){return this._majorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._majorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minorAxisRadius",{get:function(){return this._minorAxisRadius},set:function(e){if(e<0)throw Et.ILLEGAL_PARAMETERS;this._minorAxisRadius=e,this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startAngle",{get:function(){return this._startAngle},set:function(e){this._startAngle=C.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this._endAngle},set:function(e){this._endAngle=this.startAngle==0&&e==V?e:C.normalizeAngle(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"deltaAngle",{get:function(){var e=this.endAngle-this.startAngle;return Math.abs(e-V)<1e-10?V:C.normalizeAngle(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isLargeArc",{get:function(){return Math.abs(this.deltaAngle)>Math.PI?1:0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"clockwise",{get:function(){return this.deltaAngle<=0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"normal",{get:function(){return this._normal},set:function(e){this._normal=new x(e.x,e.y,e.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"majorAxis",{get:function(){return this._majorAxis},set:function(e){this._majorAxis=new x(e.x,e.y,e.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"minorAxis",{get:function(){return new x().crossVectors(this.normal,this.majorAxis).normalize()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this.getPointAtAngle(this._startAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.getPointAtAngle(this._endAngle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){var e=this.startAngle,n=this.deltaAngle;(this.closed||Math.abs(n-V)<1e-10)&&(e=0,n=V);var r=e+n/2;return this.getPointAtAngle(r)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isCircular",{get:function(){return X.equal(this.majorAxisRadius,this.minorAxisRadius)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);for(var e=1e3,n=this.deltaAngle/e,r=0,s=this.getPointAtAngle(this.startAngle),a=1;a<=e;a++){var o=this.startAngle+a*n,c=this.getPointAtAngle(o),l=c.x-s.x,h=c.y-s.y,u=c.z-s.z;r+=Math.sqrt(l*l+h*h+u*u),s=c}return r},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){return Math.abs(this.deltaAngle-V)>=1e-10?0:Math.PI*this.majorAxisRadius*this.minorAxisRadius},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e,n;if(this.majorAxis.equals(x.X_AXIS)||this.majorAxis.equals(x.Y_AXIS)||this.majorAxis.isParallelTo(x.X_AXIS)||this.majorAxis.isParallelTo(x.Y_AXIS)){for(var r=[this.startAngle,this.endAngle],s=0;s<2*Math.PI;s+=Math.PI/2)C.isBetweenAngle(s,this.startAngle,this.endAngle)&&r.push(s);var a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0;try{for(var d=Qf(r),g=d.next();!g.done;g=d.next()){var f=g.value,p=this.getPointAtAngle(f);p.x<a&&(a=p.x),p.y<o&&(o=p.y),p.z<c&&(c=p.z),p.x>l&&(l=p.x),p.y>h&&(h=p.y),p.z>u&&(u=p.z)}}catch(y){e={error:y}}finally{try{g&&!g.done&&(n=d.return)&&n.call(d)}finally{if(e)throw e.error}}return new z({x:a,y:o,z:c},{x:l,y:h,z:u})}else{for(var m=100,a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0,s=0;s<=m;s++){var f=this.startAngle+this.deltaAngle*(s/m),p=this.getPointAtAngle(f);a=Math.min(a,p.x),o=Math.min(o,p.y),c=Math.min(c,p.z),l=Math.max(l,p.x),h=Math.max(h,p.y),u=Math.max(u,p.z)}return new z({x:a,y:o,z:c},{x:l,y:h,z:u})}},Object.defineProperty(t.prototype,"closed",{get:function(){return this.deltaAngle==0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(e){e===void 0&&(e=100);var n=[],r=this.deltaAngle,s=this.startAngle;this.closed&&(r=V,s=0);for(var a=0;a<=e;a++){var o=s+r*(a/e),c=this.getPointAtAngle(o);n.push(c)}return n},t.prototype.getPointAtAngle=function(e){var n=Math.cos(e),r=Math.sin(e),s=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(r),a=this.majorAxis.clone().multiplyScalar(n*this.majorAxisRadius).add(s);return new b(this.center.x+a.x,this.center.y+a.y,this.center.z+a.z)},t.prototype.nearestPoint=function(e,n){n===void 0&&(n=72);for(var r=new b(e.x,e.y,e.z||0),s=this.getPointAtAngle(this.startAngle),a=r.distanceToSquared(s),o=1;o<=n;o++){var c=this.startAngle+this.deltaAngle*o/n,l=this.getPointAtAngle(c),h=r.distanceToSquared(l);h<a&&(a=h,s=l)}var u=r.distanceToSquared(this.startPoint),d=r.distanceToSquared(this.endPoint);return u<a&&u<=d?this.startPoint.clone():d<a&&d<u?this.endPoint.clone():s.clone()},t.prototype.tangentPoints=function(e){var n=this,r=this._projectPointToLocalPlane(e),s=this._findSnapParameterAngles(function(a,o,c,l){var h=-n.majorAxisRadius*l,u=n.minorAxisRadius*c;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype.perpendicularPoints=function(e){var n=this,r=this._projectPointToLocalPlane(e),s=this._findSnapParameterAngles(function(a,o,c,l){var h=n.minorAxisRadius*c,u=n.majorAxisRadius*l;return(a-r.x)*u-(o-r.y)*h});return s.map(function(a){return n.getPointAtAngle(a)})},t.prototype._projectPointToLocalPlane=function(e){var n=new b(e.x,e.y,e.z||0),r=new x(n).sub(this.center),s=r.dot(this.normal);return r.sub(this.normal.clone().multiplyScalar(s)),{x:r.dot(this.majorAxis),y:r.dot(this.minorAxis)}},t.prototype._findSnapParameterAngles=function(e,n){n===void 0&&(n=144);for(var r=this.majorAxisRadius,s=this.minorAxisRadius,a=this.startAngle,o=this.deltaAngle,c=[],l=function(v){var w=Math.cos(v),A=Math.sin(v);return e(r*w,s*A,w,A)},h=a,u=l(h),d=1;d<=n;d++){var g=a+o*d/n,f=l(g);if(Math.abs(u)<1e-10&&c.push(h),u*f<0){for(var p=h,m=g,y=0;y<32;y++){var _=(p+m)/2;l(p)*l(_)<=0?m=_:p=_}c.push((p+m)/2)}h=g,u=f}return c},t.prototype.contains=function(e){var n=new x(e).sub(this.center),r=n.dot(this.majorAxis),s=n.dot(this.minorAxis),a=r/this.majorAxisRadius,o=s/this.minorAxisRadius;return a*a+o*o<=1},t.prototype.transform=function(e){var n=e,r=this.center.clone().applyMatrix4(n),s=this.getPointAtAngle(0).clone().applyMatrix4(n),a=this.getPointAtAngle(Math.PI/2).clone().applyMatrix4(n),o=new x(s).sub(r),c=new x(a).sub(r),l=o.length(),h=c.length(),u=o.clone().normalize(),d=new x().crossVectors(o,c).normalize(),g=new x().crossVectors(d,u).normalize();g.dot(c)<0&&(d.negate(),g=new x().crossVectors(d,u).normalize());var f=function(m){var y=new x(m).sub(r),_=y.dot(u),v=y.dot(g);return C.normalizeAngle(Math.atan2(v/h,_/l))},p=this.closed?new t(r,d,u,l,h,0,V):new t(r,d,u,l,h,f(this.startPoint.clone().applyMatrix4(n)),f(this.endPoint.clone().applyMatrix4(n)));return this.center=p.center,this.normal=p.normal,this.majorAxis=p.majorAxis,this.majorAxisRadius=p.majorAxisRadius,this.minorAxisRadius=p.minorAxisRadius,this._startAngle=p._startAngle,this._endAngle=p._endAngle,this._boundingBoxNeedsUpdate=!0,this},t.prototype.copy=function(e){return this.center=e.center,this.normal=e.normal,this.majorAxis=e.majorAxis,this.majorAxisRadius=e.majorAxisRadius,this.minorAxisRadius=e.minorAxisRadius,this.startAngle=e.startAngle,this.endAngle=e.endAngle,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)},Object.defineProperty(t.prototype,"plane",{get:function(){var e=new x(this.center).distanceTo(Ra);return new Jr(this.normal,e)},enumerable:!1,configurable:!0}),t.prototype.offset=function(e){var n=this.majorAxisRadius+e,r=this.minorAxisRadius+e;return n<=0||r<=0?null:new t(this.center,this.normal,this.majorAxis,n,r,this.startAngle,this.endAngle)},t})(wi),Jf=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Gt=(function(i){Jf(t,i);function t(e,n){var r=i.call(this)||this;return r._start=new L(e),r._end=new L(n),r}return Object.defineProperty(t.prototype,"startPoint",{get:function(){return this._start},set:function(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this._end},set:function(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(){return[this.startPoint,this.endPoint]},Object.defineProperty(t.prototype,"length",{get:function(){return this.startPoint.distanceTo(this.endPoint)},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e=new L(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),n=new L(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new wt(e,n)},t.prototype.transform=function(e){return this._start.applyMatrix2d(e),this._end.applyMatrix2d(e),this._boundingBoxNeedsUpdate=!0,this},Object.defineProperty(t.prototype,"closed",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.copy=function(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._start.clone(),this._end.clone())},t.prototype.project=function(e){var n=this._end.x-this._start.x,r=this._end.y-this._start.y,s=n*n+r*r;if(s<1e-18)return this._start.clone();var a=((e.x-this._start.x)*n+(e.y-this._start.y)*r)/s;return a=Math.max(0,Math.min(1,a)),new L(this._start.x+a*n,this._start.y+a*r)},t.prototype.nearestPoint=function(e){return this.project(e)},t})(Tn),tp=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Tt=(function(i){tp(t,i);function t(e,n){var r=i.call(this)||this;return r._start=new b(e),r._end=new b(n),r}return Object.defineProperty(t.prototype,"startPoint",{get:function(){return this._start},set:function(e){this._start.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this._end},set:function(e){this._end.copy(e),this._boundingBoxNeedsUpdate=!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"direction",{get:function(){return new x().subVectors(this.endPoint,this.startPoint).normalize()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"midPoint",{get:function(){return new b((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)},enumerable:!1,configurable:!0}),t.prototype.nearestPoint=function(e){return this.project(e)},Object.defineProperty(t.prototype,"length",{get:function(){return this.startPoint.distanceTo(this.endPoint)},enumerable:!1,configurable:!0}),t.prototype.isPointOnLine=function(e){var n=this.project(e),r=1e-6;return n.distanceTo(e)<r},t.prototype.at=function(e,n){return this.delta(n).multiplyScalar(e).add(this._start)},t.prototype.atLength=function(e,n){if(n===void 0&&(n=!1),n){var r=this.delta(Ye).normalize();return new b(this._start).addScaledVector(r,e)}else{var r=this.delta(Ye).normalize();return new b(this._end).addScaledVector(r,e)}},t.prototype.extend=function(e,n){if(n===void 0&&(n=!1),n){var r=Ye.subVectors(this._start,this._end).normalize();this._start=new b(this._start).addScaledVector(r,e)}else{var r=this.delta(Ye).normalize();this._end=new b(this._end).addScaledVector(r,e)}return this._boundingBoxNeedsUpdate=!0,this},t.prototype.closestPointToPointParameter=function(e,n){hc.subVectors(e,this._start),Ri.subVectors(this.endPoint,this.startPoint);var r=Ri.dot(Ri),s=Ri.dot(hc),a=s/r;return n&&(a=C.clamp(a,0,1)),a},t.prototype.closestPointToPoint=function(e,n,r){var s=this.closestPointToPointParameter(e,n);return this.delta(r).multiplyScalar(s).add(this._start)},t.prototype.delta=function(e){return e.subVectors(this._end,this._start)},t.prototype.distanceSq=function(){return this._start.distanceToSquared(this._end)},t.prototype.distance=function(){return this._start.distanceTo(this._end)},t.prototype.project=function(e){var n=this.direction,r=Ye.subVectors(e,this.startPoint),s=r.dot(n);return new b().copy(n).multiplyScalar(s).add(this.startPoint)},t.prototype.perpPoint=function(e){var n=this.direction,r=this.startPoint,s=Ye.subVectors(e,r),a=s.dot(n),o=Ye.copy(n).multiplyScalar(a);return new b().addVectors(r,o)},t.prototype.calculateBoundingBox=function(){var e=new b(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),n=new b(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 z(e,n)},t.prototype.transform=function(e){return this._start.applyMatrix4(e),this._end.applyMatrix4(e),this._boundingBoxNeedsUpdate=!0,this},Object.defineProperty(t.prototype,"closed",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.copy=function(e){return this.startPoint=e.startPoint,this.endPoint=e.endPoint,this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._start.clone(),this._end.clone())},t.prototype.offset=function(e){var n=this.startPoint,r=this.endPoint,s=Math.hypot(r.x-n.x,r.y-n.y);if(s===0)return this.clone();var a=new x(r.x-n.x,r.y-n.y,0).normalize(),o=new x(-a.y,a.x,0);return new t(new b(n.x+o.x*e,n.y+o.y*e,n.z),new b(r.x+o.x*e,r.y+o.y*e,r.z))},t})(wi),Ye=new x,hc=new x,Ri=new x,ep=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Ls=(function(){function i(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}return i.prototype.init=function(t,e,n,r){this.c0=t,this.c1=n,this.c2=-3*t+3*e-2*n-r,this.c3=2*t-2*e+n+r},i.prototype.initCatmullRom=function(t,e,n,r,s){this.init(e,n,s*(n-t),s*(r-e))},i.prototype.initNonuniformCatmullRom=function(t,e,n,r,s,a,o){var c=(e-t)/s-(n-t)/(s+a)+(n-e)/a,l=(n-e)/a-(r-e)/(a+o)+(r-n)/o;c*=a,l*=a,this.init(e,n,c,l)},i.prototype.calc=function(t){var e=t*t,n=e*t;return this.c0+this.c1*t+this.c2*e+this.c3*n},i})(),Zl=(function(i){ep(t,i);function t(e,n,r,s){e===void 0&&(e=[]),n===void 0&&(n=!1),r===void 0&&(r="centripetal"),s===void 0&&(s=.5);var a=i.call(this)||this;return a.isCatmullRomCurve3d=!0,a.type="CatmullRomCurve3d",a._tmp=new x,a._px=new Ls,a._py=new Ls,a._pz=new Ls,a._points=e.map(function(o){return new b(o)}),a._closed=n,a._curveType=r,a._tension=s,a}return Object.defineProperty(t.prototype,"points",{get:function(){return this._points},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"closed",{get:function(){return this._closed},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"curveType",{get:function(){return this._curveType},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tension",{get:function(){return this._tension},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){return this._points.length>0?this._points[0]:new b},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this._points.length>0?this._points[this._points.length-1]:new b},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){if(this._points.length<2)return 0;for(var e=0,n=1;n<this._points.length;n++)e+=this._points[n-1].distanceTo(this._points[n]);return this._closed&&this._points.length>2&&(e+=this._points[this._points.length-1].distanceTo(this._points[0])),e},enumerable:!1,configurable:!0}),t.prototype.getPoint=function(e,n){n===void 0&&(n=new b);var r=n,s=this._points,a=s.length;if(a===0)return r.set(0,0,0);if(a===1)return r.copy(s[0]);var o=(a-(this._closed?0:1))*e,c=Math.floor(o),l=o-c;this._closed?c+=c>0?0:(Math.floor(Math.abs(c)/a)+1)*a:l===0&&c===a-1&&(c=a-2,l=1);var h,u;this._closed||c>0?h=s[(c-1)%a]:(this._tmp.subVectors(s[0],s[1]).add(s[0]),h=new b(this._tmp.x,this._tmp.y,this._tmp.z));var d=s[c%a],g=s[(c+1)%a];if(this._closed||c+2<a?u=s[(c+2)%a]:(this._tmp.subVectors(s[a-1],s[a-2]).add(s[a-1]),u=new b(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){var f=this._curveType==="chordal"?.5:.25,p=Math.pow(h.distanceToSquared(d),f),m=Math.pow(d.distanceToSquared(g),f),y=Math.pow(g.distanceToSquared(u),f);m<1e-4&&(m=1),p<1e-4&&(p=m),y<1e-4&&(y=m),this._px.initNonuniformCatmullRom(h.x,d.x,g.x,u.x,p,m,y),this._py.initNonuniformCatmullRom(h.y,d.y,g.y,u.y,p,m,y),this._pz.initNonuniformCatmullRom(h.z,d.z,g.z,u.z,p,m,y)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(h.x,d.x,g.x,u.x,this._tension),this._py.initCatmullRom(h.y,d.y,g.y,u.y,this._tension),this._pz.initCatmullRom(h.z,d.z,g.z,u.z,this._tension));return r.set(this._px.calc(l),this._py.calc(l),this._pz.calc(l)),r},t.prototype.getPoints=function(e){for(var n=[],r=0;r<=e;r++)n.push(this.getPoint(r/e));return n},t.prototype.setPoints=function(e){this._points=e.map(function(n){return new b(n)}),this._boundingBoxNeedsUpdate=!0},t.prototype.setClosed=function(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0)},t.prototype.setCurveType=function(e){this._curveType=e},t.prototype.setTension=function(e){this._tension=e},t.prototype.clone=function(){return new t(this._points.map(function(e){return e.clone()}),this._closed,this._curveType,this._tension)},t.prototype.transform=function(e){return this._points=this._points.map(function(n){var r=new b;return r.copy(n),r.applyMatrix4(e),r}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.calculateBoundingBox=function(){if(this._points.length===0)return new z;var e=new z;return this._points.forEach(function(n){e.expandByPoint(n)}),e},t})(wi),an=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},on=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))};function uc(i,t){var e,n,r=i.x-t[0],s=i.y-t[1],a=((e=i.z)!==null&&e!==void 0?e:0)-((n=t[2])!==null&&n!==void 0?n:0);return r*r+s*s+a*a}var Xt=(function(){function i(t,e,n,r){this._degree=t,this._knots=on([],an(e),!1),this._controlPoints=n.map(function(s){return{x:s.x,y:s.y,z:s.z}}),this._weights=r?on([],an(r),!1):new Array(n.length).fill(1)}return i.prototype.degree=function(){return this._degree},i.prototype.knots=function(){return on([],an(this._knots),!1)},i.prototype.controlPoints=function(){return this._controlPoints.map(function(t){return{x:t.x,y:t.y,z:t.z}})},i.prototype.weights=function(){return on([],an(this._weights),!1)},i.prototype.clone=function(){return new i(this._degree,this._knots,this._controlPoints,this._weights)},i.prototype.point=function(t){return this.evaluate(t).point},i.prototype.evaluate=function(t){var e=this._controlPoints.map(function(n){return[n.x,n.y,n.z]});return jg(t,this._degree,this._knots,e,this._weights)},i.prototype.signedPlanarCurvatureAt=function(t){var e=this.evaluate(t);return Gg(e.deriv1,e.deriv2)},i.prototype.getOffsetSamplePath2d=function(t,e){var n=this;e===void 0&&(e=512);for(var r=Math.abs(t),s=this.getParameterRange(),a=s.start,o=s.end,c=this.length(),l=Math.max(64,Math.ceil(c/Math.max(r*.2,1e-6))),h=np(a,o,Math.min(l,e)),u=0;u<8&&h.length<e;u++){for(var d=[],g=0;g<h.length-1;g++){var f=h[g],p=h[g+1],m=(f+p)/2,y=Math.max(Math.abs(this.signedPlanarCurvatureAt(f)),Math.abs(this.signedPlanarCurvatureAt(p)),Math.abs(this.signedPlanarCurvatureAt(m)));r*y>.85&&d.push(m)}if(d.length===0)break;if(h=ip(h,d),h.length>e){h=h.slice(0,e);break}}var _=[],v=[];return h.forEach(function(w){var A=n.evaluate(w);_.push(new L(A.point[0],A.point[1]));var E=A.deriv1[0],I=A.deriv1[1],M=Math.hypot(E,I);v.push(M>1e-10?new L(E/M,I/M):new L(1,0))}),{points:_,tangents:v}},i.prototype.length=function(){var t=this._controlPoints.map(function(e){return[e.x,e.y,e.z]});return Ml(this._degree,this._knots,t,this._weights)},i.byKnotsControlPointsWeights=function(t,e,n,r){return new i(t,e,n,r)},i.byPoints=function(t,e,n,r,s){n===void 0&&(n="Uniform");var a=Ba(t,e,n,r,s),o=a.controlPoints.map(function(c){return{x:c[0],y:c[1],z:c[2]}});return new i(e,a.knots,o,a.weights)},i.prototype.getParameterRange=function(){var t=this._knots[this._degree],e=this._knots[this._knots.length-this._degree-1];return{start:t,end:e}},i.prototype.getPoints=function(t){for(var e=[],n=this.getParameterRange(),r=n.start,s=n.end,a=0;a<=t;a++){var o=r+(s-r)*(a/t);e.push(this.point(o))}return e},i.prototype.isClosed=function(t){t===void 0&&(t=1e-6);var e=this.getParameterRange(),n=e.start,r=e.end,s=this.point(n),a=this.point(r),o=s[0]-a[0],c=s[1]-a[1],l=s[2]-a[2];return Math.sqrt(o*o+c*c+l*l)<t},i.createFitPointsForClosedCurve=function(t){if(t.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");var e=new Zl(t,!0,"centripetal"),n=Math.max(50,t.length*2);return e.getPoints(n)},i.prototype.nearestPoint=function(t,e){var n;e===void 0&&(e=64);for(var r=this.getParameterRange(),s=r.start,a=r.end,o=this.point(s),c=uc(t,o),l=0;l<=e;l++){var h=s+(a-s)*l/e,u=this.point(h),d=uc(t,u);d<c&&(c=d,o=u)}return{x:o[0],y:o[1],z:(n=o[2])!==null&&n!==void 0?n:0}},i.createClosedCurve=function(t,e,n){n===void 0&&(n="Chord");var r=this.createFitPointsForClosedCurve(t),s=r.map(function(a){return[a.x,a.y,a.z]});return i.byPoints(s,e,n)},i})();function np(i,t,e){if(e<2)return[i,t];for(var n=[],r=0;r<e;r++)n.push(r===e-1?t:i+(t-i)*r/(e-1));return n}function ip(i,t){var e=on(on([],an(i),!1),an(t),!1).sort(function(r,s){return r-s}),n=[];return e.forEach(function(r){var s=n[n.length-1];(s===void 0||Math.abs(s-r)>1e-10)&&n.push(r)}),n}function dc(i){var t,e,n;if(!i)return!1;var r=(t=i.x)!==null&&t!==void 0?t:0,s=(e=i.y)!==null&&e!==void 0?e:0,a=(n=i.z)!==null&&n!==void 0?n:0;return r*r+s*s+a*a>1e-20}function rp(i,t,e){var n=i??0;return n<1&&e>0&&t>0&&(n=e-t-1),n<1&&(n=3),n=Math.min(n,t-1),Math.max(1,n)}function sp(i,t,e){var n=i??0;n<1&&(n=3);var r=t+e-1;return n=Math.min(n,r),Math.max(1,n)}function ap(i,t){if(!(!i||i.length!==t))return i}var op=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),gc=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},fc=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},pc=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ut=(function(i){op(t,i);function t(e,n,r,s,a,o){var c=i.call(this)||this,l=arguments.length;if(c._degree=3,c._closed=!1,Array.isArray(n)){if(l<2||l>5)throw Et.ILLEGAL_PARAMETERS;c._controlPoints=e;var g=void 0,f=3,p=!1;if(l>=3&&(Array.isArray(r)?(g=r,l>=4&&(f=s||3),l>=5&&(p=a)):r!==void 0&&(f=r||3,l>=4&&(p=s))),r===void 0&&l>=4&&(f=s||3,l>=5&&(p=a)),c._degree=f,c._closed=p,c._controlPoints.length<c._degree+1)throw Et.ILLEGAL_PARAMETERS;c._nurbsCurve=Xt.byKnotsControlPointsWeights(c._degree,n,c._controlPoints,g)}else{if(l<2||l>6)throw Et.ILLEGAL_PARAMETERS;c._fitPoints=e,c._knotParameterization=n,l>=3&&(c._degree=r||3);var h=typeof s=="boolean";l>=4&&h&&(c._closed=s),h?(l>=5&&(c._startTangent=a),l>=6&&(c._endTangent=o)):(l>=4&&(c._startTangent=s),l>=5&&(c._endTangent=a)),c._closed&&(c._startTangent=void 0,c._endTangent=void 0);var u=(c._startTangent?1:0)+(c._endTangent?1:0);if(c._fitPoints.length+u<c._degree+1)throw Et.ILLEGAL_PARAMETERS;if(c._closed)c._nurbsCurve=Xt.createClosedCurve(c._fitPoints,c._degree,c._knotParameterization);else{var d=c.toNurbsPoints(c._fitPoints);c._nurbsCurve=Xt.byPoints(d,c._degree,c._knotParameterization,c._startTangent?c.toNurbsPoint(c._startTangent):void 0,c._endTangent?c.toNurbsPoint(c._endTangent):void 0)}c._controlPoints=c.toGePoints(c._nurbsCurve.controlPoints().map(function(m){return[m.x,m.y,m.z||0]}))}return c}return t.prototype.buildCurve=function(){if(this._fitPoints&&this._knotParameterization){if(this._closed){var e=Xt.createFitPointsForClosedCurve(this._fitPoints),n=this.toNurbsPoints(e);this._nurbsCurve=Xt.byPoints(n,this._degree,this._knotParameterization)}else{var n=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Xt.byPoints(n,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(function(a){return[a.x,a.y,a.z||0]}))}else if(this._controlPoints)if(this._closed){var e=Xt.createFitPointsForClosedCurve(this._controlPoints),n=this.toNurbsPoints(e);this._nurbsCurve=Xt.byPoints(n,this._degree,this._knotParameterization),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(function(c){return[c.x,c.y,c.z||0]}))}else{var r=this._nurbsCurve.knots(),s=this._nurbsCurve.weights();this._nurbsCurve=Xt.byKnotsControlPointsWeights(this._degree,r,this._controlPoints,s)}},t.prototype.setClosed=function(e){this._closed!==e&&(this._closed=e,this._boundingBoxNeedsUpdate=!0,this.buildCurve())},Object.defineProperty(t.prototype,"degree",{get:function(){return this._degree},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"knotParameterization",{get:function(){return this._knotParameterization},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"controlPoints",{get:function(){return this._controlPoints.map(kt.point2dToPoint3d)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"fitPoints",{get:function(){var e;return(e=this._fitPoints)===null||e===void 0?void 0:e.map(kt.point2dToPoint3d)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"knots",{get:function(){return fc([],gc(this._nurbsCurve.knots()),!1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"weights",{get:function(){return fc([],gc(this._nurbsCurve.weights()),!1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){var e=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),r=e[n],s=this._nurbsCurve.point(r);return new b(s[0],s[1],s[2])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){var e=this._nurbsCurve.knots(),n=this._nurbsCurve.degree(),r=e[e.length-n-1],s=this._nurbsCurve.point(r);return new b(s[0],s[1],s[2])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this._nurbsCurve.length()},enumerable:!1,configurable:!0}),t.prototype.nearestPoint=function(e,n){n===void 0&&(n=64);var r=this._nurbsCurve.nearestPoint(e,n);return new b(r.x,r.y,r.z||0)},t.prototype.evaluateAt=function(e){var n=this._nurbsCurve.point(e);return new b(n[0],n[1],n[2])},t.prototype.getFitPointAt=function(e){if(!this._fitPoints)throw new Error("No fit points in this spline");var n=this._fitPoints.length,r=e<0||e>=n?n-1:e,s=this._fitPoints[r];return kt.point2dToPoint3d(s)},t.prototype.getControlPointAt=function(e){var n=this._controlPoints.length,r=e<0||e>=n?n-1:e;return this._controlPoints[r]},Object.defineProperty(t.prototype,"isFitPointSpline",{get:function(){return!!(this._fitPoints&&this._fitPoints.length>0&&this._knotParameterization)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isControlPointSpline",{get:function(){return!this.isFitPointSpline},enumerable:!1,configurable:!0}),t.prototype.getGripPoints=function(){return this.isFitPointSpline?this._fitPoints.map(function(e){var n;return new b(e.x,e.y,(n=e.z)!==null&&n!==void 0?n:0)}):this._controlPoints.map(function(e){var n;return new b(e.x,e.y,(n=e.z)!==null&&n!==void 0?n:0)})},t.prototype.moveGripPointsAt=function(e,n){return this.isFitPointSpline?(this.moveFitPointsAt(e,n),this):(this.moveControlPointsAt(e,n),this)},t.prototype.moveFitPointsAt=function(e,n){var r,s;if(this._fitPoints){try{for(var a=pc(e),o=a.next();!o.done;o=a.next()){var c=o.value;if(!(!Number.isInteger(c)||c<0)){var l=this._fitPoints[c];l&&kt.applyOffsetToPoint3d(l,n)}}}catch(h){r={error:h}}finally{try{o&&!o.done&&(s=a.return)&&s.call(a)}finally{if(r)throw r.error}}this._boundingBoxNeedsUpdate=!0,this.buildCurve()}},t.prototype.moveControlPointsAt=function(e,n){var r,s;try{for(var a=pc(e),o=a.next();!o.done;o=a.next()){var c=o.value;if(!(!Number.isInteger(c)||c<0)){var l=this.getControlPointAt(c);l&&kt.applyOffsetToPoint3d(l,n)}}}catch(h){r={error:h}}finally{try{o&&!o.done&&(s=a.return)&&s.call(a)}finally{if(r)throw r.error}}this.rebuildAfterControlPointMutation()},t.prototype.rebuildAfterControlPointMutation=function(){var e=this._nurbsCurve.knots(),n=this._nurbsCurve.weights();this.isFitPointSpline&&(this._fitPoints=void 0,this._knotParameterization=void 0,this._startTangent=void 0,this._endTangent=void 0),this._nurbsCurve=Xt.byKnotsControlPointsWeights(this._degree,e,this._controlPoints,n.length>0?n:void 0),this._boundingBoxNeedsUpdate=!0},t.prototype.getOffsetSamplePath2d=function(e){return this._nurbsCurve.getOffsetSamplePath2d(e)},t.prototype.getPoints=function(e){e===void 0&&(e=100);for(var n=this._nurbsCurve,r=[],s=n.knots(),a=this._nurbsCurve.degree(),o=s[a],c=s[s.length-a-1],l=(c-o)/(e-1),h=0;h<e;h++){var u=h===e-1?c:o+h*l,d=n.point(u);r.push(new b(d[0],d[1],d[2]))}return r},t.prototype.getCurvePoints=function(e,n){for(var r=[],s=e.knots(),a=e.degree(),o=s[a],c=s[s.length-a-1],l=(c-o)/(n-1),h=0;h<n;h++){var u=o+h*l;r.push(e.point(u))}return r},t.prototype.calculateBoundingBox=function(){var e=this.getPoints(100);return new z().setFromPoints(e)},Object.defineProperty(t.prototype,"closed",{get:function(){return this._closed},set:function(e){this.setClosed(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){if(!this._closed)return 0;var e=this.getPoints(128);return Rl(e)},enumerable:!1,configurable:!0}),t.prototype.transform=function(e){if(this._fitPoints&&this._knotParameterization)this._fitPoints=this._fitPoints.map(function(s){return new b(s).applyMatrix4(e)}),this._startTangent&&(this._startTangent=new b(this._startTangent).transformDirection(e)),this._endTangent&&(this._endTangent=new b(this._endTangent).transformDirection(e)),this.buildCurve();else{var n=this._nurbsCurve.knots(),r=this._nurbsCurve.weights();this._controlPoints=this._controlPoints.map(function(s){return new b(s).applyMatrix4(e)}),this._nurbsCurve=Xt.byKnotsControlPointsWeights(this._degree,n,this._controlPoints,r.length>0?r:void 0)}return this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return this._fitPoints&&this._knotParameterization?new t(this._fitPoints.map(kt.point2dToPoint3d),this._knotParameterization,this._degree,this._closed,this._startTangent?kt.point2dToPoint3d(this._startTangent):void 0,this._endTangent?kt.point2dToPoint3d(this._endTangent):void 0):new t(this._controlPoints.map(kt.point2dToPoint3d),this._nurbsCurve.knots(),this._nurbsCurve.weights(),this._degree,this._closed)},t.prototype.toNurbsPoints=function(e){var n=new Array(e.length);return e.forEach(function(r,s){n[s]=[r.x,r.y,r.z||0]}),n},t.prototype.toGePoints=function(e){var n=new Array(e.length);return e.forEach(function(r,s){n[s]={x:r[0],y:r[1],z:r[2]}}),n},t.prototype.toNurbsPoint=function(e){return[e.x,e.y,e.z||0]},t.createClosedSpline=function(e,n,r){if(n===void 0&&(n="Uniform"),r===void 0&&(r=3),e.length<r+1)throw new Error("At least ".concat(r+1," points are required for a degree ").concat(r," closed spline"));return new t(e,n,r,!0)},t.fromControlPoints=function(e,n,r,s,a){if(e.length<2||n.length<2)return null;var o=rp(s,e.length,n.length);if(e.length<o+1)return null;try{return new t(e,n,ap(r,e.length),o,a)}catch{return null}},t.fromFitPoints=function(e,n,r,s,a,o){if(e.length<2)return null;var c=dc(a),l=dc(o),h=(c?1:0)+(l?1:0),u=sp(r,e.length,h);if(e.length+h<u+1)return null;try{return c||l?new t(e,n,u,s,c?a:void 0,l?o:void 0):new t(e,n,u,s)}catch{return null}},t.fromDwgSplineEdge=function(e){if(e.numberOfControlPoints>0&&e.numberOfKnots>0){var n=e.controlPoints.map(kt.point2dToPoint3d),r=!0,s=e.controlPoints.map(function(o){return o.weight==null&&(r=!1),o.weight||1});return t.fromControlPoints(n,e.knots,r?s:void 0,e.degree,!1)}if(e.numberOfFitData>0){var a=e.fitDatum.map(kt.point2dToPoint3d);return t.fromFitPoints(a,"Uniform",e.degree,!1,e.startTangent?kt.point2dToPoint3d(e.startTangent):void 0,e.endTangent?kt.point2dToPoint3d(e.endTangent):void 0)}return null},t})(wi),cp=(function(){var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},i(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");i(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}})(),Cs=function(i,t){var e=typeof Symbol=="function"&&i[Symbol.iterator];if(!e)return i;var n=e.call(i),r,s=[],a;try{for(;(t===void 0||t-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return s},Ts=function(i,t,e){if(e||arguments.length===2)for(var n=0,r=t.length,s;n<r;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return i.concat(s||Array.prototype.slice.call(t))},mn=(function(i){cp(t,i);function t(e){e===void 0&&(e=[]);var n=i.call(this)||this;return n._curves=e,n}return Object.defineProperty(t.prototype,"curves",{get:function(){return this._curves},enumerable:!1,configurable:!0}),t.buildFromEdges=function(e,n){if(n===void 0&&(n=.001),e.length===0)return[];for(var r=Ts([],Cs(e),!1),s=[],a=n*n,o=function(f,p){var m=f.x-p.x,y=f.y-p.y;return m*m+y*y<=a};r.length>0;){var c=[],l=r.shift();c.push(l);var h=t.getEdgeStartPoint(l),u=t.getEdgeEndPoint(l);if(!o(h,u))for(;r.length>0;){var d=t.findConnectingEdge(r,u,a);if(d.index<0)break;var g=r.splice(d.index,1)[0];if(d.reverse&&(g=t.reverseEdge(g)),c.push(g),u=t.getEdgeEndPoint(g),o(u,h))break}s.push(new t(c))}return s},t.prototype.add=function(e){this._curves.push(e),this._boundingBoxNeedsUpdate=!0},Object.defineProperty(t.prototype,"numberOfEdges",{get:function(){return this._curves.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startPoint",{get:function(){if(this._curves.length>0){var e=this._curves[0].startPoint;return new L(e.x,e.y)}throw new Error("Start point does not exist in an empty loop.")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endPoint",{get:function(){return this.startPoint},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){var e=0;return this._curves.forEach(function(n){e+=n.length}),e},enumerable:!1,configurable:!0}),t.prototype.calculateBoundingBox=function(){var e=this.getPoints(100),n=new wt;return n.setFromPoints(e),n},t.prototype.transform=function(e){var n=new D().set(e.elements[0],e.elements[3],0,e.elements[6],e.elements[1],e.elements[4],0,e.elements[7],0,0,1,0,0,0,0,1);return this._curves.forEach(function(r){r instanceof Ut?r.transform(n):r.transform(e)}),this._boundingBoxNeedsUpdate=!0,this},t.prototype.clone=function(){return new t(this._curves.map(function(e){return e.clone()}))},Object.defineProperty(t.prototype,"closed",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.getPoints=function(e){var n=[];return this.curves.forEach(function(r){r.getPoints(e).forEach(function(s){n.push(new L(s.x,s.y))})}),n},t.findConnectingEdge=function(e,n,r){for(var s=-1,a=!1,o=Number.POSITIVE_INFINITY,c=0;c<e.length;c++){var l=e[c],h=t.getEdgeStartPoint(l),u=t.getEdgeEndPoint(l),d=n.x-h.x,g=n.y-h.y,f=d*d+g*g;f<o&&(o=f,s=c,a=!1);var p=n.x-u.x,m=n.y-u.y,y=p*p+m*m;y<o&&(o=y,s=c,a=!0)}return o>r?{index:-1,reverse:!1}:{index:s,reverse:a}},t.getEdgeStartPoint=function(e){var n=e.startPoint;return new L(n.x,n.y)},t.getEdgeEndPoint=function(e){var n=e.endPoint;return new L(n.x,n.y)},t.reverseEdge=function(e){return e instanceof Gt?new Gt(e.endPoint,e.startPoint):e instanceof rt?t.reverseCircArcEdge(e):e instanceof me?new me(e.center,e.majorAxisRadius,e.minorAxisRadius,e.endAngle,e.startAngle,!e.clockwise,e.rotation):e instanceof Ut?t.reverseSplineEdge(e):e},t.reverseCircArcEdge=function(e){var n=e.startPoint,r=e.endPoint,s=!e.clockwise,a=Math.atan2(r.y-e.center.y,r.x-e.center.x),o=Math.atan2(n.y-e.center.y,n.x-e.center.x),c=function(l){var h=C.normalizeAngle(l);return s?C.normalizeAngle(-h):h};return new rt(e.center,e.radius,c(a),c(o),s)},t.reverseSplineEdge=function(e){var n=Ts([],Cs(e.controlPoints),!1).reverse(),r=e.knots,s=r[0],a=r[r.length-1],o=r.map(function(h){return s+a-h}).reverse(),c=e.weights,l=c.length>0?Ts([],Cs(c),!1).reverse():void 0;return new Ut(n,o,l,e.degree,e.closed)},t})(Tn),Bt=function(i){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&i[t],n=0;if(e)return e.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Qn=128,tr=96,F=_i.equalPointTol,Ya=F*8;function lp(i,t,e,n,r){var s,a,o,c;e===void 0&&(e=!1),n===void 0&&(n=!1);var l=mc(i,e,r),h=mc(t,n,r),u=[];try{for(var d=Bt(l),g=d.next();!g.done;g=d.next()){var f=g.value;try{for(var p=(o=void 0,Bt(h)),m=p.next();!m.done;m=p.next()){var y=m.value;za(f,y)&&Ha(u,th(f,y))}}catch(_){o={error:_}}finally{try{m&&!m.done&&(c=p.return)&&c.call(p)}finally{if(o)throw o.error}}}}catch(_){s={error:_}}finally{try{g&&!g.done&&(a=d.return)&&a.call(d)}finally{if(s)throw s.error}}return Ep(u)}function hp(i,t){var e=up(i);switch(e.kind){case"line":return e.line.transform(t),e;case"circArc":return e.arc.transform(t),e;case"ellipseArc":return e.arc.transform(t),e;case"spline":return e.spline.transform(t),e}}function up(i){switch(i.kind){case"line":return{kind:"line",line:i.line.clone(),extent:i.extent,extendable:i.extendable};case"circArc":return{kind:"circArc",arc:i.arc.clone(),extendable:i.extendable};case"ellipseArc":return{kind:"ellipseArc",arc:i.arc.clone(),extendable:i.extendable};case"spline":return{kind:"spline",spline:i.spline.clone(),extendable:i.extendable}}}function mc(i,t,e){var n,r,s=[];try{for(var a=Bt(i),o=a.next();!o.done;o=a.next()){var c=o.value,l=t&&c.extendable!==!1;switch(c.kind){case"line":{var h=pp(c.line,e);if(!h)break;var u=l?"unbounded":c.extent;s.push(Mn(h.start,h.end,u));break}case"circArc":{var d=gp(c.arc,l);if(e&&!Jn(d.normal,e.normal)){var g=yp(d,e);(g==null?void 0:g.kind)==="circArc"?s.push(yc(g.arc,ae(g.arc))):(g==null?void 0:g.kind)==="ellipseArc"?s.push(bc(g.arc,xe(g.arc))):Ms(s,Ql(d,ae(d)),ae(d),e)}else{var g=mp(d,e);g&&s.push(yc(g,ae(g)))}break}case"ellipseArc":{var d=fp(c.arc,l);if(e&&!Jn(d.normal,e.normal))Ms(s,Jl(d,xe(d)),xe(d),e);else{var g=bp(d,e);g&&s.push(bc(g,xe(g)))}break}case"spline":{e?Ms(s,c.spline.getPoints(Qn),c.spline.closed,e):s.push(dp(c.spline));break}}}}catch(f){n={error:f}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return s}function Mn(i,t,e){var n=new x().subVectors(t,i);return{kind:"line",start:i,dir:n,extent:e,box:e==="bounded"?new z().setFromPoints([i,t]):void 0}}function yc(i,t){return{kind:"circArc",arc:i,full:t||ae(i),box:i.box}}function bc(i,t){return{kind:"ellipseArc",arc:i,full:t||xe(i),box:i.box}}function dp(i){var t,e,n=[],r=i.getPoints(Qn);if(r.length>=2)for(var s=i.closed?r.length:r.length-1,a=0;a<s;a++){var o=r[a],c=r[(a+1)%r.length];o.distanceToSquared(c)<F*F||n.push(Mn(o.clone(),c.clone(),"bounded"))}var l=new z;try{for(var h=Bt(n),u=h.next();!u.done;u=h.next()){var d=u.value;d.box&&l.union(d.box)}}catch(g){t={error:g}}finally{try{u&&!u.done&&(e=h.return)&&e.call(h)}finally{if(t)throw t.error}}return{kind:"spline",spline:i,samples:n,box:n.length>0?l:void 0}}function gp(i,t){return!t||ae(i)?i:new St(i.center,i.radius,0,V,i.normal,i.refVec)}function fp(i,t){return!t||xe(i)?i:new ue(i.center,i.normal,i.majorAxis,i.majorAxisRadius,i.minorAxisRadius,0,V)}function pp(i,t){if(!t)return{start:i.startPoint.clone(),end:i.endPoint.clone()};var e=_e(i.startPoint,t),n=_e(i.endPoint,t);return e.distanceToSquared(n)<F*F?null:{start:e,end:n}}function mp(i,t){if(!t)return i;var e=_e(i.center,t);return new St(e,i.radius,i.startAngle,i.endAngle,t.normal.clone(),ja(i.refVec,t.normal))}function yp(i,t){var e=_e(i.center,t),n=i.normal.clone();if(n.lengthSq()<F*F)return null;n.normalize();var r=t.normal.clone();if(r.lengthSq()<F*F)return null;r.normalize();var s=n.dot(r),a=Math.abs(s);if(a>1-1e-8)return{kind:"circArc",arc:new St(e,i.radius,i.startAngle,i.endAngle,r,ja(i.refVec,r))};if(a<1e-8)return null;var o=new x().crossVectors(n,r);if(o.lengthSq()<F*F)return null;o.normalize();var c=new ue(e,r,o,i.radius,i.radius*a,0,V);if(ae(i))return{kind:"ellipseArc",arc:c};var l=_e(i.startPoint,t),h=_e(i.endPoint,t),u=_e(i.midPoint,t),d=yn(c,l),g=yn(c,h),f=yn(c,u),p=C.normalizeAngle(f-d),m=C.normalizeAngle(g-d),y=p<=m||m<1e-8?d+m:d+m+V;return{kind:"ellipseArc",arc:new ue(e,r,o,i.radius,i.radius*a,d,y)}}function bp(i,t){if(!t)return i;var e=_e(i.center,t),n=ja(i.majorAxis,t.normal);return n.lengthSq()<F*F?null:new ue(e,t.normal.clone(),n,i.majorAxisRadius,i.minorAxisRadius,i.startAngle,i.endAngle)}function Ms(i,t,e,n){if(!(t.length<2))for(var r=n?t.map(function(l){return _e(l,n)}):t,s=e?r.length:r.length-1,a=0;a<s;a++){var o=r[a],c=r[(a+1)%r.length];o.distanceToSquared(c)<F*F||i.push(Mn(o.clone(),c.clone(),"bounded"))}}function Ql(i,t){return t||ae(i)?new St(i.center,i.radius,0,V,i.normal,i.refVec).getPoints(tr):i.getPoints(tr)}function Jl(i,t){return t||xe(i)?new ue(i.center,i.normal,i.majorAxis,i.majorAxisRadius,i.minorAxisRadius,0,V).getPoints(tr):i.getPoints(tr)}function za(i,t){return!i.box||!t.box?!0:i.box.intersectsBox(t.box)}function th(i,t){return i.kind==="spline"&&t.kind==="spline"?_p(i,t):i.kind==="spline"?_c(i,t):t.kind==="spline"?_c(t,i):i.kind==="line"&&t.kind==="line"?eh(i,t):i.kind==="line"&&t.kind==="circArc"?er(i,t.arc,t.full):t.kind==="line"&&i.kind==="circArc"?er(t,i.arc,i.full):i.kind==="line"&&t.kind==="ellipseArc"?sa(i,t.arc,t.full):t.kind==="line"&&i.kind==="ellipseArc"?sa(t,i.arc,i.full):i.kind==="circArc"&&t.kind==="circArc"?Pp(i.arc,i.full,t.arc,t.full):i.kind==="circArc"&&t.kind==="ellipseArc"?xc(i.arc,i.full,t.arc,t.full):i.kind==="ellipseArc"&&t.kind==="circArc"?xc(t.arc,t.full,i.arc,i.full):i.kind==="ellipseArc"&&t.kind==="ellipseArc"?Sp(i.arc,i.full,t.arc,t.full):[]}function _c(i,t){var e,n,r=[];try{for(var s=Bt(i.samples),a=s.next();!a.done;a=s.next()){var o=a.value;za(o,t)&&Ha(r,th(o,t))}}catch(c){e={error:c}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(e)throw e.error}}return xp(i.spline,r,t)}function _p(i,t){var e,n,r,s,a,o,c=[];try{for(var l=Bt(i.samples),h=l.next();!h.done;h=l.next()){var u=h.value;try{for(var d=(r=void 0,Bt(t.samples)),g=d.next();!g.done;g=d.next()){var f=g.value;za(u,f)&&Ha(c,eh(u,f))}}catch(A){r={error:A}}finally{try{g&&!g.done&&(s=d.return)&&s.call(d)}finally{if(r)throw r.error}}}}catch(A){e={error:A}}finally{try{h&&!h.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}var p=[];try{for(var m=Bt(c),y=m.next();!y.done;y=m.next()){var _=y.value,v=i.spline.nearestPoint(_,Qn),w=t.spline.nearestPoint(_,Qn);v.distanceTo(w)<=Ya&&p.push(v)}}catch(A){a={error:A}}finally{try{y&&!y.done&&(o=m.return)&&o.call(m)}finally{if(a)throw a.error}}return p}function xp(i,t,e){var n,r,s=[];try{for(var a=Bt(t),o=a.next();!o.done;o=a.next()){var c=o.value,l=i.nearestPoint(c,Qn);wp(e,l)<=Ya&&s.push(l)}}catch(h){n={error:h}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return s}function wp(i,t){if(i.kind==="line"){var e=i.dir.lengthSq();if(e<F*F)return Number.POSITIVE_INFINITY;var n=new x().subVectors(t,i.start).dot(i.dir)/e;return wn(n,i.extent)?vn(i.start,i.dir,n).distanceTo(t):Number.POSITIVE_INFINITY}if(i.kind==="circArc"){if(!Ua(t,i.arc)){var r=Ht(i.arc.normal,i.arc.center),s=Math.abs(r.distanceToPoint(t)),a=Math.abs(t.distanceTo(i.arc.center)-i.arc.radius),o=Math.hypot(s,a);if(o>Ya)return o}return qe(i.arc,$e(i.arc,t),i.full)?0:Number.POSITIVE_INFINITY}return i.kind==="ellipseArc"?An(t,i.arc,i.full)?0:Math.abs(ts(i.arc,t)):Number.POSITIVE_INFINITY}function eh(i,t){var e=i.dir,n=t.dir,r=e.lengthSq(),s=n.lengthSq();if(r<F*F||s<F*F)return[];var a=new x().subVectors(i.start,t.start),o=e.dot(e),c=e.dot(n),l=n.dot(n),h=e.dot(a),u=n.dot(a),d=o*l-c*c;if(Math.abs(d)<ut*ut*o*l)return[];var g=(c*u-l*h)/d,f=(o*u-c*h)/d;if(!wn(g,i.extent)||!wn(f,t.extent))return[];var p=vn(i.start,e,g),m=vn(t.start,n,f);return p.distanceTo(m)>F?[]:[p]}function er(i,t,e){var n=Ht(t.normal,t.center),r=ih(i,n);return r==="coplanar"?vp(i,t,e):r?Ua(r,t)?qe(t,$e(t,r),e)?[r]:[]:[]:[]}function vp(i,t,e){var n,r,s=new x().subVectors(i.start,t.center),a=i.dir.dot(i.dir);if(a<F*F)return[];var o=2*i.dir.dot(s),c=s.dot(s)-t.radius*t.radius,l=[];try{for(var h=Bt(sh(a,o,c)),u=h.next();!u.done;u=h.next()){var d=u.value;if(wn(d,i.extent)){var g=vn(i.start,i.dir,d);qe(t,$e(t,g),e)&&l.push(g)}}}catch(f){n={error:f}}finally{try{u&&!u.done&&(r=h.return)&&r.call(h)}finally{if(n)throw n.error}}return l}function sa(i,t,e){var n=Ht(t.normal,t.center),r=ih(i,n);return r==="coplanar"?Ap(i,t,e):r?An(r,t,e)?[r]:[]:[]}function Ap(i,t,e){var n,r,s=t.majorAxis,a=t.minorAxis,o=t.majorAxisRadius,c=t.minorAxisRadius;if(o<F||c<F)return[];var l=new x().subVectors(i.start,t.center),h=l.dot(s),u=l.dot(a),d=i.dir.dot(s),g=i.dir.dot(a),f=d*d/(o*o)+g*g/(c*c),p=2*h*d/(o*o)+2*u*g/(c*c),m=h*h/(o*o)+u*u/(c*c)-1,y=[];try{for(var _=Bt(sh(f,p,m)),v=_.next();!v.done;v=_.next()){var w=v.value;if(wn(w,i.extent)){var A=vn(i.start,i.dir,w);Ga(t,yn(t,A),e)&&y.push(A)}}}catch(E){n={error:E}}finally{try{v&&!v.done&&(r=_.return)&&r.call(_)}finally{if(n)throw n.error}}return y}function Pp(i,t,e,n){if(Jn(i.normal,e.normal)){var r=Ht(i.normal,i.center);return Math.abs(r.distanceToPoint(e.center))>F?[]:Ip(kp(i,e),i,t,e,n)}var s=Va(Ht(i.normal,i.center),Ht(e.normal,e.center));if(!s)return[];var a=Mn(s.point.clone(),new b().addVectors(s.point,s.dir),"unbounded"),o=er(a,i,t);return o.filter(function(c){return Ua(c,e)?qe(e,$e(e,c),n):!1})}function kp(i,t){var e=new x().subVectors(t.center,i.center),n=e.length(),r=i.radius,s=t.radius;if(n<F&&X.equal(r,s,F))return[];if(n>r+s+F)return[];if(n+Math.min(r,s)+F<Math.max(r,s))return[];var a=n<F?rh(i.normal):e.clone().normalize(),o=(r*r-s*s+n*n)/(2*Math.max(n,F)),c=r*r-o*o,l=new b().copy(i.center).addScaledVector(a,o);if(c<-F*F)return[];if(c<F*F)return[l];var h=Math.sqrt(Math.max(0,c)),u=new x().crossVectors(i.normal,a).normalize();return[new b().copy(l).addScaledVector(u,h),new b().copy(l).addScaledVector(u,-h)]}function xc(i,t,e,n){if(!Jn(i.normal,e.normal)){var r=Va(Ht(i.normal,i.center),Ht(e.normal,e.center));if(!r)return[];var s=Mn(r.point.clone(),new b().addVectors(r.point,r.dir),"unbounded");return er(s,i,t).filter(function(a){return An(a,e,n)})}return nh(Ql(i,t),ae(i)||t,function(a){return ts(e,a)},function(a){return qe(i,$e(i,a),t)&&An(a,e,n)})}function Sp(i,t,e,n){if(!Jn(i.normal,e.normal)){var r=Va(Ht(i.normal,i.center),Ht(e.normal,e.center));if(!r)return[];var s=Mn(r.point.clone(),new b().addVectors(r.point,r.dir),"unbounded");return sa(s,i,t).filter(function(a){return An(a,e,n)})}return nh(Jl(i,t),xe(i)||t,function(a){return ts(e,a)},function(a){return Ga(i,yn(i,a),t)&&An(a,e,n)})}function nh(i,t,e,n){for(var r=[],s=t?i.length:i.length-1,a=0;a<s;a++){var o=i[a],c=i[(a+1)%i.length],l=e(o),h=e(c);if(Math.abs(l)<=F){n(o)&&r.push(o.clone());continue}if(!(l*h>0)){for(var u=0,d=1,g=l,f=0;f<40;f++){var p=(u+d)/2,m=new b().lerpVectors(o,c,p),y=e(m);g*y<=0?d=p:(u=p,g=y)}var _=new b().lerpVectors(o,c,(u+d)/2);n(_)&&r.push(_)}}return r}function ih(i,t){var e=t.normal.dot(i.dir),n=t.distanceToPoint(i.start);if(X.equalToZero(e,F*Math.max(1,i.dir.length())))return X.equalToZero(n,F)?"coplanar":null;var r=-n/e;return wn(r,i.extent)?vn(i.start,i.dir,r):null}function Va(i,t){var e=new x().crossVectors(i.normal,t.normal);if(e.lengthSq()<F*F)return null;e.normalize();var n=i.normal,r=t.normal,s=n.dot(n)*r.dot(r)-Math.pow(n.dot(r),2);if(Math.abs(s)<ut)return null;var a=-i.constant,o=-t.constant,c=(r.dot(r)*a-n.dot(r)*o)/s,l=(n.dot(n)*o-n.dot(r)*a)/s,h=new b().addScaledVector(n,c).addScaledVector(r,l);return{point:h,dir:e}}function wn(i,t){return t==="unbounded"?!0:t==="ray"?i>=-F:i>=-F&&i<=1+F}function vn(i,t,e){return new b().copy(i).addScaledVector(t,e)}function _e(i,t){var e=new b;return t.projectPoint(i,e),e}function ja(i,t){var e=i.clone().addScaledVector(t,-i.dot(t));return e.lengthSq()<F*F?rh(t):e.normalize()}function Ht(i,t){return new Jr().setFromNormalAndCoplanarPoint(i,t)}function Jn(i,t){return new x().crossVectors(i,t).lengthSq()<F*F}function $e(i,t){var e=new x().subVectors(t,i.center),n=new x().crossVectors(i.normal,i.refVec);return Math.atan2(e.dot(n),e.dot(i.refVec))}function yn(i,t){var e=new x().subVectors(t,i.center),n=e.dot(i.majorAxis)/i.majorAxisRadius,r=e.dot(i.minorAxis)/i.minorAxisRadius;return Math.atan2(r,n)}function ae(i){return i.closed||Math.abs(i.deltaAngle-V)<1e-10}function xe(i){return i.closed||Math.abs(i.endAngle-i.startAngle)<1e-10||Math.abs(i.deltaAngle-V)<1e-10}function qe(i,t,e){if(e||ae(i))return!0;var n=C.normalizeAngle(t-i.startAngle);return n<=i.deltaAngle+1e-8}function Ga(i,t,e){if(e||xe(i))return!0;var n=C.normalizeAngle(t-i.startAngle);return n<=i.deltaAngle+1e-8}function Ua(i,t){var e=Ht(t.normal,t.center);return Math.abs(e.distanceToPoint(i))>F?!1:Math.abs(i.distanceTo(t.center)-t.radius)<=F}function ts(i,t){var e=new x().subVectors(t,i.center),n=e.dot(i.majorAxis)/i.majorAxisRadius,r=e.dot(i.minorAxis)/i.minorAxisRadius;return n*n+r*r-1}function An(i,t,e){var n=Ht(t.normal,t.center);return Math.abs(n.distanceToPoint(i))>F||Math.abs(ts(t,i))>1e-4?!1:Ga(t,yn(t,i),e)}function Ip(i,t,e,n,r){return i.filter(function(s){return qe(t,$e(t,s),e)&&qe(n,$e(n,s),r)})}function rh(i){var t=Math.abs(i.x)<.9?x.X_AXIS:x.Y_AXIS,e=new x().crossVectors(i,t);return e.lengthSq()<F*F&&e.crossVectors(i,x.Z_AXIS),e.normalize()}function sh(i,t,e){if(Math.abs(i)<ut)return Math.abs(t)<ut?[]:[-e/t];var n=t*t-4*i*e;if(n<-F)return[];if(n<F)return[-t/(2*i)];var r=Math.sqrt(Math.max(0,n));return[(-t-r)/(2*i),(-t+r)/(2*i)]}function Ha(i,t){var e,n;try{for(var r=Bt(t),s=r.next();!s.done;s=r.next()){var a=s.value;i.push(a)}}catch(o){e={error:o}}finally{try{s&&!s.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}}function Ep(i){var t,e,n=[],r=function(c){if(n.some(function(l){return l.distanceTo(c)<=F}))return"continue";n.push(c)};try{for(var s=Bt(i),a=s.next();!a.done;a=s.next()){var o=a.value;r(o)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}return n}const wc=[{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:"AC1018",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 xt{constructor(t){if(typeof t=="string"){const e=wc.find(n=>n.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=wc.find(n=>n.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")}get capabilities(){return xt.capabilitiesFor(this.value)}static get latest(){return new xt("AC1032")}static capabilitiesFor(t){const e=t>=19;return{supportsHandles:e,supportsSubclassMarkers:e,supportsClassesSection:e,supportsObjectsSection:e,supportsBlockRecordTable:e,supportsLwPolyline:e,supportsLineWeight:t>=23,supportsTrueColor:t>=25,supportsTransparency:t>=25,supportsUtf8CodePage:t>=27}}}function vi(i){return i===999?"comment":i===5?"handle":i<=9||i===100||i===102?"string":i===105?"handle":i>=101&&i<=109?"string":i<=59?"double":i<=79?"int":i<=89?"string":i<=99?"int":i<=149?"double":i<=159?"string":i<=169?"long":i<=179?"int":i<=209?"string":i<=239?"double":i<=269?"long":i<=289?"int":i<=299?"bool":i<=309?"string":i<=319?"binary":i<=369?"handle":i<=389?"int":i<=399?"handle":i<=409?"int":i<=419?"string":i<=429?"int":i<=439?"string":i<=449||i<=459?"int":i<=469?"double":i<=479?"string":i===480||i===481?"handle":i===1004?"binary":i===1005?"handle":i>=1e3&&i<=1009?"string":i>=1010&&i<=1059?"double":i>=1060&&i<=1070||i===1071?"int":"string"}function ah(i){return i>=90&&i<=99||i>=420&&i<=429||i>=440&&i<=449||i>=450&&i<=459||i===1071}var Wa=(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))(Wa||{});const Lp=["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"],oh=i=>Lp[i],Os=(()=>{const i=`AutoCAD Binary DXF\r
|
|
2
|
+
`,t=new Uint8Array(22);for(let e=0;e<i.length;e++)t[e]=i.charCodeAt(e);return t[20]=26,t[21]=0,t})(),vc=(()=>{const i=new Int8Array(128);for(let t=0;t<10;t++)i[48+t]=t;for(let t=0;t<6;t++)i[65+t]=10+t,i[97+t]=10+t;return i})();function ch(i){if(i.length<Os.length)return!1;for(let t=0;t<Os.length;t++)if(i[t]!==Os[t])return!1;return!0}function lh(i){var c,l,h;const e=new TextDecoder("utf-8");let n=0,r="",s=null,a=null,o=!1;for(;n<i.byteLength;){const u=Math.min(n+65536,i.byteLength),d=i.slice(n,u);n=u;const f=(r+e.decode(d,{stream:!0})).split(/\r?\n/);r=f.pop()??"";for(let p=0;p<f.length;p++){const m=f[p].trim();if(m==="SECTION"&&((c=f[p+2])==null?void 0:c.trim())==="HEADER")o=!0;else if(m==="ENDSEC"&&o)return{version:s,encoding:a};if(o&&m==="$ACADVER"){const y=(l=f[p+2])==null?void 0:l.trim();y&&(s=new xt(y))}else if(o&&m==="$DWGCODEPAGE"){const y=(h=f[p+2])==null?void 0:h.trim();if(y){const _=Wa[y];a=oh(_)}}if(s&&a)return{version:s,encoding:a}}}return{version:s,encoding:a}}function Cp(i){const t=i.trim(),e=t.length>>>1,n=new Uint8Array(e);for(let r=0;r<e;r++){const s=vc[t.charCodeAt(r*2)&127],a=vc[t.charCodeAt(r*2+1)&127];n[r]=s<<4|a}return n}function hh(i,t){const e=vi(i);if(e==="comment")return null;switch(e){case"string":return{code:i,type:e,value:t};case"int":{const n=parseInt(t.trim(),10);return{code:i,type:e,value:Number.isFinite(n)?n:0}}case"long":{const n=t.trim(),r=Number(n);if(Number.isSafeInteger(r))return{code:i,type:e,value:r};try{return{code:i,type:e,value:BigInt(n)}}catch{return{code:i,type:e,value:0}}}case"double":{const n=Number(t.trim());return{code:i,type:e,value:Number.isFinite(n)?n:0}}case"bool":{const n=t.trim();return{code:i,type:e,value:n!=="0"&&n!==""}}case"handle":return{code:i,type:e,value:t.trim()};case"binary":return{code:i,type:e,value:Cp(t)};default:return null}}function $a(i){let t=0,e=1,n,r=!1;function s(){if(t>=i.length)return;let o=t;for(;o<i.length;){const l=i.charCodeAt(o);if(l===10||l===13)break;o++}const c=i.slice(t,o);return o<i.length&&i.charCodeAt(o)===13&&o++,o<i.length&&i.charCodeAt(o)===10&&o++,t=o,e++,c}function a(){for(;;){const o=s();if(o===void 0)return;const c=o.trim();if(c==="")continue;const l=s();if(l===void 0)return;const h=Number(c);if(!Number.isFinite(h)||h===999)continue;const u=hh(h,l);if(u)return u}}return{kind:"ascii",next(){if(r){const o=n;return n=void 0,r=!1,o}return a()},peek(){return r||(n=a(),r=!0),n},position(){return{line:e,byteOffset:t}}}}function Tp(i){const t=i.toLowerCase().replace(/_/g,"-");return t==="utf-8"||t==="utf8"||t==="unicode-1-1-utf-8"}const Mp=64*1024;function uh(i){const t=i.length>=3&&i[0]===239&&i[1]===187&&i[2]===191?3:0;let e=1,n,r=!1;const s=new TextDecoder("utf-8");let a=t,o=t,c="",l=0;function h(){if(o>=i.length)return!1;a=o;let g=Math.min(a+Mp,i.length);for(;g<i.length&&i[g]!==10&&i[g]!==13;)g++;return g<i.length&&i[g]===13&&g++,g<i.length&&i[g]===10&&g++,o=g,c=s.decode(i.subarray(a,o)),l=0,!0}function u(){for(;l>=c.length;)if(!h())return;let g=l;for(;g<c.length;){const p=c.charCodeAt(g);if(p===10||p===13)break;g++}const f=c.slice(l,g);return g<c.length&&c.charCodeAt(g)===13&&g++,g<c.length&&c.charCodeAt(g)===10&&g++,l=g,e++,f}function d(){for(;;){const g=u();if(g===void 0)return;const f=g.trim();if(f==="")continue;const p=u();if(p===void 0)return;const m=Number(f);if(!Number.isFinite(m)||m===999)continue;const y=hh(m,p);if(y)return y}}return{kind:"ascii",next(){if(r){const g=n;return n=void 0,r=!1,g}return d()},peek(){return r||(n=d(),r=!0),n},position(){const g=o-a,f=g>0&&c.length>0?a+Math.round(l/c.length*g):o;return{line:e,byteOffset:f}}}}function Op(i){const t=BigInt(Number.MAX_SAFE_INTEGER),e=-t;return i>=e&&i<=t?Number(i):i}function dh(i,t={}){const e=t.encoding??"utf-8",n=t.legacyR12??!1,r=22,s=new DataView(i.buffer,i.byteOffset,i.byteLength);let a=i.length>=r?r:i.length,o,c=!1;function l(){if(a>=i.length)return;if(n){const v=i[a];if(v===void 0)return;if(v===255){if(a+3>i.length)return;a+=1;const w=i[a],A=i[a+1];return a+=2,A<<8|w}return a+=1,v}if(a+2>i.length)return;const _=s.getUint16(a,!0);return a+=2,_}function h(){const _=a;for(;a<i.length&&i[a]!==0;)a+=1;if(a>=i.length)return;const v=i.subarray(_,a);return a+=1,new TextDecoder(e).decode(v)}function u(){if(a+2>i.length)return;const _=s.getInt16(a,!0);return a+=2,_}function d(){if(a+4>i.length)return;const _=s.getInt32(a,!0);return a+=4,_}function g(){if(a+8>i.length)return;const _=s.getBigInt64(a,!0);return a+=8,Op(_)}function f(){if(a+8>i.length)return;const _=s.getFloat64(a,!0);return a+=8,_}function p(){if(a>=i.length)return;const _=i[a];if(_!==void 0)return a+=1,_!==0}function m(){if(a>=i.length)return;const _=i[a];if(_===void 0||(a+=1,a+_>i.length))return;const v=i.slice(a,a+_);return a+=_,v}function y(){for(;a<i.length;){const _=l();if(_===void 0)return;if(_===999){if(h()===void 0)return;continue}switch(vi(_)){case"string":{const w=h();return w===void 0?void 0:{code:_,type:"string",value:w}}case"int":{const w=ah(_)?d():u();return w===void 0?void 0:{code:_,type:"int",value:w}}case"long":{const w=g();return w===void 0?void 0:{code:_,type:"long",value:w}}case"double":{const w=f();return w===void 0?void 0:{code:_,type:"double",value:w}}case"bool":{const w=p();return w===void 0?void 0:{code:_,type:"bool",value:w}}case"handle":{const w=h();return w===void 0?void 0:{code:_,type:"handle",value:w}}case"binary":{const w=m();return w===void 0?void 0:{code:_,type:"binary",value:w}}case"comment":continue;default:h();continue}}}return{kind:"binary",next(){if(c){const _=o;return o=void 0,c=!1,_}return y()},peek(){return c||(o=y(),c=!0),o},position(){return{byteOffset:a}}}}function gh(i,t={}){const e=i instanceof Uint8Array?i:new Uint8Array(i);if(ch(e)){let a=t.encoding,o=t.legacyR12;if((a==null||o==null)&&(a=a??"utf-8",o==null)){const l=e[22],h=e[23],u=e[24];l===0&&h===83?o=!0:o=!1}return dh(e,{encoding:a,legacyR12:o})}const n=e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);let r=t.encoding;if(r==null){const a=lh(n);a.version&&!a.version.capabilities.supportsUtf8CodePage&&a.encoding?r=a.encoding:r="utf-8"}if(Tp(r))return uh(e);const s=new TextDecoder(r).decode(e);return $a(s)}const Xn=250,fh=255,ph=127;function mh(i){const t=i??"";if(t.length<=Xn)return[{code:1,value:t}];const e=[];let n=0;for(;t.length-n>Xn;)e.push({code:3,value:t.slice(n,n+Xn)}),n+=Xn;return e.push({code:1,value:t.slice(n)}),e}function yh(i,t){if(t<=0)return[i??""];const e=i??"";if(e.length===0)return[""];const n=new TextEncoder,r=[];let s="",a=0;for(const o of e){const c=n.encode(o).byteLength;if(c>t){s.length>0&&(r.push(s),s="",a=0),r.push(o);continue}a+c>t&&s.length>0?(r.push(s),s=o,a=c):(s+=o,a+=c)}return s.length>0&&r.push(s),r}function bh(i,t){if(t<=0)return[i];if(i.byteLength===0)return[i];const e=[];for(let n=0;n<i.byteLength;n+=t)e.push(i.subarray(n,n+t));return e}var _h=(i=>(i[i.Ok=0]="Ok",i[i.EndOfFile=1]="EndOfFile",i[i.EndOfObject=2]="EndOfObject",i[i.InvalidDxfCode=3]="InvalidDxfCode",i[i.BadDxfSequence=4]="BadDxfSequence",i[i.NotThatKindOfClass=5]="NotThatKindOfClass",i[i.WrongMode=6]="WrongMode",i))(_h||{});const Np=(()=>{const i=`AutoCAD Binary DXF\r
|
|
3
|
+
`,t=new Uint8Array(22);for(let e=0;e<i.length;e++)t[e]=i.charCodeAt(e);return t[20]=26,t[21]=0,t})();class Oe{constructor(t={}){this._binaryLength=0,this._pushed=[],this._status=0,this._errorMessage="",this._database=t.database,this._precision=Math.max(0,Math.min(16,t.precision??16)),this._version=t.version instanceof xt?t.version:t.version!=null?new xt(t.version):void 0,this._outputFormat=t.outputFormat??"ascii",this._lines=[],this._binaryChunks=[],this._handleMap=new Map,this._nextHandle=1,this._mode=t.reader?"read":"write",this._reader=t.reader,this._mode==="write"&&this._outputFormat==="binary"&&this.appendBinary(Np)}static forReading(t,e={}){return new Oe({...e,reader:t})}static fromBuffer(t,e={}){return Oe.forReading(gh(t),e)}static fromString(t,e={}){return Oe.forReading($a(t),e)}get mode(){return this._mode}get database(){return this._database}set database(t){this._database=t}get precision(){return this._precision}setPrecision(t){return this._precision=Math.max(0,Math.min(16,t)),this}get version(){return this._version}get nextHandle(){return this._nextHandle}get filerStatus(){return this._status}get errorMessage(){return this._errorMessage}setVersion(t){return this._version=t instanceof xt?t:new xt(t),this}setError(t,e=""){return this._status=t,this._errorMessage=e,this}resetStatus(){return this._status=0,this._errorMessage="",this}toString(){if(this.assertWriteMode(),this._outputFormat==="binary")throw new Error("Use toBinary() for binary DXF output");return this._lines.join(`
|
|
4
4
|
`)+`
|
|
5
|
-
`}toBinary(){if(this.assertWriteMode(),this._outputFormat!=="binary")throw new Error("Filer is not in binary output mode");const t=new Uint8Array(this._binaryLength);let e=0;for(const n of this._binaryChunks)t.set(n,e),e+=n.length;return t}registerHandle(t){return this._handleMap.has(t)||(/^[0-9A-F]+$/i.test(t)?this._handleMap.set(t,t.toUpperCase()):(this._handleMap.set(t,this._nextHandle.toString(16).toUpperCase()),this._nextHandle+=1)),this._handleMap.get(t)}resolveHandle(t){if(t)return this.registerHandle(t)}get atEof(){var t;return this._mode!=="read"||this._pushed.length>0?!1:((t=this._reader)==null?void 0:t.peek())===void 0}position(){return this._mode!=="read"||!this._reader?{byteOffset:0}:this._reader.position()}get atEndOfObject(){if(this._mode!=="read")return!0;const t=this.peekPair();return t===void 0||t.code===0}get atExtendedData(){if(this._mode!=="read")return!1;const t=this.peekPair();return t?t.code===1001||t.code===1e3||t.code===1002:!1}atSubclassData(t){if(this._mode!=="read")return!1;const e=this.peekPair();return!e||e.code!==100||typeof e.value!="string"||e.value!==t?!1:(this.readPair(),!0)}peekItem(){const t=this.peekPair();return t?this.pairToTypedValue(t):void 0}readItem(){const t=this.readPair();if(!t){this._status=1;return}return this._status=0,this.pairToTypedValue(t)}pushBackItem(t){if(t&&"type"in t){this._pushed.push(t);return}if(t){this._pushed.push(this.typedValueToPair(t));return}this._lastRead&&this._pushed.push(this._lastRead)}skipToEndOfObject(){for(;!this.atEndOfObject&&!this.atEof;)this.readPair()}readString(t){const e=this.readPair();if(e){if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}return e.type==="string"||e.type==="handle"?e.value:String(e.value)}}readInt16(t){return this.readNumber(t)}readInt32(t){return this.readNumber(t)}readInt64(t){const e=this.readPair();if(!e)return;if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}if(e.type==="long"||e.type==="int"||e.type==="double")return e.value;if(e.type==="bool")return e.value?1:0;const n=Number(e.value);return Number.isFinite(n)?n:0}readDouble(t){return this.readNumber(t)}readBoolean(t){const e=this.readPair();if(e){if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}return e.type==="bool"?e.value:typeof e.value=="number"?e.value!==0:typeof e.value=="string"?e.value!=="0"&&e.value!=="":!!e.value}}readHandle(t){const e=this.readPair();if(e){if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}return e.type==="handle"||e.type==="string"?e.value:String(e.value)}}readObjectId(t){return this.readHandle(t)}readPoint2d(t){const e=this.readDouble(t);if(e===void 0)return;const n=this.peekPair();let r=0;return n&&n.code===t+10&&(r=this.readNumber()??0),new L(e,r)}readPoint3d(t){const e=this.readDouble(t);if(e===void 0)return;let n=0,r=0;const s=this.peekPair();s&&s.code===t+10&&(n=this.readNumber()??0);const a=this.peekPair();return a&&a.code===t+20&&(r=this.readNumber()??0),new b(e,n,r)}readVector3d(t){const e=this.readPoint3d(t);return e?new x(e.x,e.y,e.z):void 0}readCmColorInto(t,e=62,n=420){const r=this.peekPair();if(!r)return!1;if(r.code===e){const s=this.readNumber();return s!=null&&(t.colorIndex=s),!0}if(r.code===n){const s=this.readNumber();return s!=null&&t.setRGBValue(s),!0}return!1}writeGroup(t,e){if(this.assertWriteMode(),e==null)return this;if(this._outputFormat==="binary")return this.writeBinaryGroup(t,e);this._lines.push(String(Math.trunc(t)));const n=this.formatValue(e);return this._lines.push(n===""?"0":n),this}writeStart(t){return this.writeString(0,t)}get capabilities(){return(this._version??xt.latest).capabilities}writeSubclassMarker(t){return this.capabilities.supportsSubclassMarkers?this.writeString(100,t):this}writeString(t,e){return!e&&e!==""?this:this.writeGroup(t,e)}writeMTextContents(t){for(const e of nh(t??""))this.writeString(e.code,e.value);return this}writeInt8(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt16(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt32(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt64(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeUInt16(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeUInt32(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeBoolean(t,e){return e==null?this:this.writeGroup(t,e?1:0)}writeBool(t,e){return this.writeBoolean(t,e)}writeDouble(t,e){return e==null||!Number.isFinite(e)?this:this.writeGroup(t,e)}writeAngle(t,e){return e==null||!Number.isFinite(e)?this:this.writeDouble(t,e*180/Math.PI)}writeHandle(t,e){if(!this.capabilities.supportsHandles)return this;const n=this.resolveHandle(e);return n?this.writeString(t,n):this}writeObjectId(t,e){return this.writeHandle(t,e)}writeLineWeight(t,e){return e==null||!this.capabilities.supportsLineWeight?this:this.writeInt16(t,e)}writePoint2d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this):this}writePoint3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeVector3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeCmColor(t,e=62,n=420){if(!t)return this;const r=t.colorIndex;r!=null&&this.writeInt16(e,r);const s=t.RGB;return s!=null&&t.colorIndex==null&&(this.capabilities.supportsTrueColor?this.writeInt32(n,s):this.writeInt16(e,7)),this}writeTransparency(t,e=440){return!t||t.method===exports.AcCmTransparencyMethod.ErrorValue||!this.capabilities.supportsTransparency?this:this.writeInt32(e,t.serialize())}writeResultBuffer(t){if(!t)return this;for(const e of t){const n=Number(e.code);if(n===1e3&&typeof e.value=="string"){for(const r of ih(e.value,th))this.writeGroup(1e3,r);continue}if(n===1004){const r=e.value instanceof Uint8Array?e.value:typeof e.value=="string"?up(e.value):void 0;if(r){for(const s of rh(r,eh))this._outputFormat==="binary"?this.writeGroup(1004,s):this.writeGroup(1004,lc(s));continue}}this.writeGroup(e.code,e.value)}return this}startSection(t){return this.writeStart("SECTION"),this.writeString(2,t),this}endSection(){return this.writeStart("ENDSEC"),this}startTable(t){return this.writeStart("TABLE"),this.writeString(2,t),this}endTable(){return this.writeStart("ENDTAB"),this}assertWriteMode(){if(this._mode!=="write")throw new Error("AcDbDxfFiler is in read mode")}appendBinary(t){this._binaryChunks.push(t),this._binaryLength+=t.length}writeBinaryCode(t){const e=Math.trunc(t)&65535;if(!this.capabilities.supportsSubclassMarkers){e<=255?this.appendBinary(Uint8Array.of(e)):this.appendBinary(Uint8Array.of(255,e&255,e>>8&255));return}const r=new Uint8Array(2);new DataView(r.buffer).setUint16(0,e,!0),this.appendBinary(r)}writeBinaryGroup(t,e){const n=xi(Math.trunc(t));switch(this.writeBinaryCode(Math.trunc(t)),n){case"string":case"handle":{const r=typeof e=="string"?this.sanitizeStringForDxfLine(e):this.formatValue(e),s=new TextEncoder().encode(r===""?"0":r),a=new Uint8Array(s.length+1);a.set(s),a[s.length]=0,this.appendBinary(a);break}case"int":{const r=Math.trunc(Number(e))||0;if(Hl(Math.trunc(t))){const s=new Uint8Array(4);new DataView(s.buffer).setInt32(0,r,!0),this.appendBinary(s)}else{const s=new Uint8Array(2);new DataView(s.buffer).setInt16(0,r,!0),this.appendBinary(s)}break}case"long":{const r=new Uint8Array(8),s=new DataView(r.buffer);typeof e=="bigint"?s.setBigInt64(0,e,!0):s.setBigInt64(0,BigInt(Math.trunc(Number(e))||0),!0),this.appendBinary(r);break}case"double":{const r=new Uint8Array(8),s=Number(e);new DataView(r.buffer).setFloat64(0,Number.isFinite(s)?s:0,!0),this.appendBinary(r);break}case"bool":{const r=typeof e=="boolean"?e:Number(e)!==0&&e!==""&&e!=null;this.appendBinary(Uint8Array.of(r?1:0));break}case"binary":{const r=e instanceof Uint8Array?e:new Uint8Array(0),s=Math.min(255,r.length),a=new Uint8Array(1+s);a[0]=s,a.set(r.subarray(0,s),1),this.appendBinary(a);break}default:{const r=this.formatValue(e),s=new TextEncoder().encode(r===""?"0":r),a=new Uint8Array(s.length+1);a.set(s),a[s.length]=0,this.appendBinary(a);break}}return this}assertReadMode(){if(this._mode!=="read"||!this._reader)throw new Error("AcDbDxfFiler is not in read mode")}peekPair(){return this.assertReadMode(),this._pushed.length>0?this._pushed[this._pushed.length-1]:this._reader.peek()}readPair(){if(this.assertReadMode(),this._pushed.length>0){const e=this._pushed.pop();return this._lastRead=e,e}const t=this._reader.next();return this._lastRead=t,t}pushBackPair(t){this._pushed.push(t)}readNumber(t){const e=this.readPair();if(!e)return;if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}if(e.type==="double"||e.type==="int"||e.type==="long"){const r=e.value;return typeof r=="bigint"?Number(r):r}if(e.type==="bool")return e.value?1:0;const n=Number(e.value);return Number.isFinite(n)?n:0}pairToTypedValue(t){return{code:t.code,value:t.value}}typedValueToPair(t){const e=Number(t.code),n=t.value;return typeof n=="boolean"?{code:e,type:"bool",value:n}:typeof n=="number"?Number.isInteger(n)?{code:e,type:"int",value:n}:{code:e,type:"double",value:n}:typeof n=="bigint"?{code:e,type:"long",value:n}:n instanceof Uint8Array?{code:e,type:"binary",value:n}:{code:e,type:"string",value:String(n??"")}}formatValue(t){if(typeof t=="string")return this.sanitizeStringForDxfLine(t);if(typeof t=="boolean")return t?"1":"0";if(typeof t=="number"){if(!Number.isFinite(t))return"0";if(Number.isInteger(t))return String(t);const n=t.toFixed(this._precision).replace(/\.?0+$/,"");return n===""||n==="-"?"0":n}return t instanceof Uint8Array?lc(t):String(t)}sanitizeStringForDxfLine(t){return t.replace(/\r\n|\r|\n/g," ").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"")}}function lc(i){let t="";for(let e=0;e<i.length;e++)t+=(i[e]??0).toString(16).padStart(2,"0").toUpperCase();return t}function up(i){const t=i.replace(/\s+/g,""),e=t.length>>>1,n=new Uint8Array(e);for(let r=0;r<e;r++)n[r]=Number.parseInt(t.slice(r*2,r*2+2),16)||0;return n}var je=256,ah=[],hc=256,Ni;for(;je--;)ah[je]=(je+256).toString(16).substring(1);function dp(i){var t=0,e=11;if(!Ni||je+e>hc*2)for(Ni="",je=0;t<hc;t++)Ni+=ah[Math.random()*256|0];return Ni.substring(je,je+++e)}class qe{constructor(t){if(this._values=[],t)for(const e of t)this._values.push({...e})}get length(){return this._values.length}at(t){return this._values[t]}add(t){this._values.push(t)}addRange(t){for(const e of t)this._values.push(e)}clear(){this._values.length=0}toArray(){return this._values.map(t=>({...t}))}clone(){return new qe(this._values)}[Symbol.iterator](){return this._values[Symbol.iterator]()}}const Le="TEMP_";let Ke;function oh(i){Ke=i}function ch(i){Ke&&(Ke().workingDatabase=i)}function lh(){if(Ke)return Ke().workingDatabase;throw new Error("The current working database must be set before using it!")}const te=class te{constructor(t,e){t=t||{},this._attrs=new Ds(t,e),this._xDataMap=new Map,this._attrs.get("objectId")||(this._database?this._attrs.set("objectId",this._database.generateHandle()):this._attrs.set("objectId",this.generateTemporaryHandle()))}generateTemporaryHandle(){return Le+dp()}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),t&&!t.startsWith(Le)&&this._database&&this._database.updateMaxHandle(t)}get isTemp(){const t=this.getAttrWithoutException("objectId");return!!t&&t.startsWith(Le)}get ownerId(){return this.getAttr("ownerId")}set ownerId(t){this._attrs.set("ownerId",t)}get extensionDictionary(){return this.getAttrWithoutException("extensionDictionary")}set extensionDictionary(t){this._attrs.set("extensionDictionary",t)}get database(){if(this._database)return this._database;if(Ke)return Ke().workingDatabase;throw new Error("The current working database must be set before using it!")}set database(t){this.assignDatabase(t)}assignDatabase(t){this._database=t}getXData(t){return this._xDataMap.get(t)}setXData(t){for(const e of t)e.code===fa.ExtendedDataRegAppName&&this._xDataMap.set(e.value,t)}removeXData(t){this._xDataMap.delete(t)}createExtensionDictionary(){}close(){}getOwnSnapshotKeys(){return Reflect.ownKeys(this).filter(t=>typeof t=="string"&&!te.SNAPSHOT_EXCLUDED_KEYS.has(t))}cloneAttrs(t){const e=this.cloneValue(t.attributes);return new Ds(e)}restoreAttrsFrom(t){const e=this.cloneValue(t.attributes),n=this._attrs.attributes;for(const r of Object.keys(n))r in e||this._attrs.set(r,void 0,{unset:!0,silent:!0});this._attrs.set(e,{silent:!0})}restoreXDataMapFrom(t){this._xDataMap.clear();for(const[e,n]of t.entries())this._xDataMap.set(e,this.cloneValue(n))}copySnapshotStateTo(t){t._attrs=this.cloneAttrs(this._attrs),t._xDataMap=this.cloneValue(this._xDataMap);const e=this,n=t;for(const r of this.getOwnSnapshotKeys())te.SNAPSHOT_INTERNAL_KEYS.has(r)||(n[r]=this.cloneValue(e[r]))}clone(){const t=Object.create(Object.getPrototypeOf(this));return this.copySnapshotStateTo(t),t.objectId=this.generateTemporaryHandle(),t}clonePreservingIdentity(){const t=this.clone(),e=this.getAttrWithoutException("objectId");e&&t._attrs.set("objectId",e);const n=this.getAttrWithoutException("ownerId");return n!==void 0&&t._attrs.set("ownerId",n),this._database&&(t._database=this._database),t}restoreFrom(t){const e=this.objectId,n=this._database;this.restoreAttrsFrom(t._attrs),this.restoreXDataMapFrom(t._xDataMap);const r=t,s=this,a=new Set(t.getOwnSnapshotKeys());for(const o of a)te.SNAPSHOT_INTERNAL_KEYS.has(o)||te.SNAPSHOT_EXCLUDED_KEYS.has(o)||(s[o]=this.cloneValue(r[o]));for(const o of this.getOwnSnapshotKeys())te.SNAPSHOT_INTERNAL_KEYS.has(o)||te.SNAPSHOT_EXCLUDED_KEYS.has(o)||a.has(o)||delete s[o];this.objectId=e,n&&(this.database=n)}cloneValue(t){if(t==null||typeof t!="object")return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(Array.isArray(t))return t.map(r=>this.cloneValue(r));if(t instanceof Map){const r=new Map;for(const[s,a]of t.entries())r.set(this.cloneValue(s),this.cloneValue(a));return r}if(t instanceof Set){const r=new Set;for(const s of t.values())r.add(this.cloneValue(s));return r}if(ArrayBuffer.isView(t)){if(t instanceof DataView)return new DataView(t.buffer.slice(0));const r=t.constructor;return new r(t)}if(t instanceof ArrayBuffer)return t.slice(0);if(t&&typeof t=="object"&&"tables"in t&&"transactionManager"in t)return t;if("clone"in t&&typeof t.clone=="function")return t.clone();const e=Object.create(Object.getPrototypeOf(t)),n=t;for(const r of Object.keys(n))e[r]=this.cloneValue(n[r]);return e}dxfOut(...t){const[e,n=!1]=t;return e.writeHandle(5,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),n&&this.dxfOutXData(e),this}dxfOutXData(t){for(const e of this._xDataMap.values())t.writeResultBuffer(e)}dxfOutFields(t){return this}dxfIn(t){for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===5||n===105)this.objectId=String(e.value);else if(n===330)this.ownerId=String(e.value);else if(n===360)this.extensionDictionary=String(e.value);else if(n===102)this.dxfInControlString(t,String(e.value));else if(n===100){t.pushBackItem(e);break}else{t.pushBackItem(e);break}}return this.dxfInFields(t),t.atExtendedData&&this.dxfInXData(t),this}dxfInControlString(t,e){const n=e==="{ACAD_XDICTIONARY"||e==="ACAD_XDICTIONARY";for(;!t.atEndOfObject&&!t.atEof;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===102){const a=String(r.value);if(a==="}"||a==="")break;this.dxfInControlString(t,a);continue}n&&s===360&&!this.extensionDictionary&&(this.extensionDictionary=String(r.value))}}dxfInFields(t){return this}dxfInXData(t){let e;const n=()=>{e&&e.length>0&&this.setXData(e),e=void 0};for(;!t.atEndOfObject&&!t.atEof;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===1001)n(),e=new qe([{code:r.code,value:r.value}]);else if(s>=1e3&&s<=1071)e||(e=new qe),e.add({code:r.code,value:r.value});else{t.pushBackItem(r);break}}n()}};te.SNAPSHOT_EXCLUDED_KEYS=new Set(["_database","transactionManager"]),te.SNAPSHOT_INTERNAL_KEYS=new Set(["_attrs","_xDataMap"]);let vt=te;exports.AcGiArrowType=void 0;(function(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"})(exports.AcGiArrowType||(exports.AcGiArrowType={}));exports.AcGiLineWeight=void 0;(function(i){i[i.ByBlock=-2]="ByBlock",i[i.ByDIPs=-4]="ByDIPs",i[i.ByLayer=-1]="ByLayer",i[i.ByLineWeightDefault=-3]="ByLineWeightDefault",i[i.LineWeight000=0]="LineWeight000",i[i.LineWeight005=5]="LineWeight005",i[i.LineWeight009=9]="LineWeight009",i[i.LineWeight013=13]="LineWeight013",i[i.LineWeight015=15]="LineWeight015",i[i.LineWeight018=18]="LineWeight018",i[i.LineWeight020=20]="LineWeight020",i[i.LineWeight025=25]="LineWeight025",i[i.LineWeight030=30]="LineWeight030",i[i.LineWeight035=35]="LineWeight035",i[i.LineWeight040=40]="LineWeight040",i[i.LineWeight050=50]="LineWeight050",i[i.LineWeight053=53]="LineWeight053",i[i.LineWeight060=60]="LineWeight060",i[i.LineWeight070=70]="LineWeight070",i[i.LineWeight080=80]="LineWeight080",i[i.LineWeight090=90]="LineWeight090",i[i.LineWeight100=100]="LineWeight100",i[i.LineWeight106=106]="LineWeight106",i[i.LineWeight120=120]="LineWeight120",i[i.LineWeight140=140]="LineWeight140",i[i.LineWeight158=158]="LineWeight158",i[i.LineWeight200=200]="LineWeight200",i[i.LineWeight211=211]="LineWeight211"})(exports.AcGiLineWeight||(exports.AcGiLineWeight={}));var qr=(function(){function i(t){t===void 0&&(t={});var e,n,r,s;this.database=t.database,this.foregroundOnDark=(e=t.foregroundOnDark)!==null&&e!==void 0?e:Qn,this.foregroundOnLight=(n=t.foregroundOnLight)!==null&&n!==void 0?n:Jn,this.backgroundIsDark=(r=t.backgroundIsDark)!==null&&r!==void 0?r:!0,this.fallbackRgb=(s=t.fallbackRgb)!==null&&s!==void 0?s:16777215}return i.prototype.resolveSubEntityTraitsRgb=function(t){var e,n,r,s=t.color;return s.isForeground?this.backgroundIsDark?this.foregroundOnDark:this.foregroundOnLight:s.isByLayer||s.isByBlock?(e=this.fallbackRgb)!==null&&e!==void 0?e:16777215:(r=(n=s.RGB)!==null&&n!==void 0?n:this.fallbackRgb)!==null&&r!==void 0?r:16777215},i.fromBackgroundColor=function(t,e){return t===void 0&&(t=hh),new i({database:e,foregroundOnDark:Qn,foregroundOnLight:Jn,backgroundIsDark:!uh(t),fallbackRgb:16777215})},i})(),hh=0,Qn=16777215,Jn=0,gp=16777215,fp=128,pp=new qr({database:void 0,foregroundOnDark:Qn,foregroundOnLight:Jn,backgroundIsDark:!0,fallbackRgb:16777215});function uh(i){var t=i>>16&255,e=i>>8&255,n=i&255;return .299*t+.587*e+.114*n>fp}function mp(i){var t=qr.fromBackgroundColor(i);return t.backgroundIsDark?t.foregroundOnDark:t.foregroundOnLight}function yp(i){return i?Jn:Qn}function bp(i,t){return qr.fromBackgroundColor(t).resolveSubEntityTraitsRgb(i)}exports.AcGiMTextFlowDirection=void 0;(function(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"})(exports.AcGiMTextFlowDirection||(exports.AcGiMTextFlowDirection={}));exports.AcGiMTextAttachmentPoint=void 0;(function(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[i.BaselineLeft=10]="BaselineLeft",i[i.BaselineCenter=11]="BaselineCenter",i[i.BaselineRight=12]="BaselineRight"})(exports.AcGiMTextAttachmentPoint||(exports.AcGiMTextAttachmentPoint={}));exports.AcGiRenderMode=void 0;(function(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"})(exports.AcGiRenderMode||(exports.AcGiRenderMode={}));exports.AcGiOrthographicType=void 0;(function(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"})(exports.AcGiOrthographicType||(exports.AcGiOrthographicType={}));exports.AcGiDefaultLightingType=void 0;(function(i){i[i.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",i[i.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS"})(exports.AcGiDefaultLightingType||(exports.AcGiDefaultLightingType={}));var dh=(function(){function i(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new b,this._height=0,this._width=0,this._viewCenter=new b,this._viewTarget=new b,this._viewTwistAngle=0,this._viewHeight=0}return Object.defineProperty(i.prototype,"number",{get:function(){return this._number},set:function(t){this._number=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"id",{get:function(){return this._id},set:function(t){this._id=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"groupId",{get:function(){return this._groupId},set:function(t){this._groupId=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"centerPoint",{get:function(){return this._centerPoint},set:function(t){this._centerPoint.copy(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){return this._height},set:function(t){this._height=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"width",{get:function(){return this._width},set:function(t){this._width=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"box",{get:function(){var t=new wt;return t.setFromCenterAndSize(this.centerPoint,{x:this.width,y:this.height}),t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewCenter",{get:function(){return this._viewCenter},set:function(t){this._viewCenter.copy(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewTarget",{get:function(){return this._viewTarget},set:function(t){this._viewTarget.copy(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewTwistAngle",{get:function(){return this._viewTwistAngle},set:function(t){this._viewTwistAngle=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewHeight",{get:function(){return this._viewHeight},set:function(t){this._viewHeight=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewWidth",{get:function(){return this.viewHeight*(this.width/this.height)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewBox",{get:function(){var t=i.dcsCenterToWcs(this.viewCenter,this.viewTarget,this.viewTwistAngle),e=new wt;return e.setFromCenterAndSize(t,{x:this.viewWidth,y:this.viewHeight}),e},enumerable:!1,configurable:!0}),i.dcsCenterToWcs=function(t,e,n){var r=t.x,s=t.y;if(Number.isFinite(n)&&n!==0){var a=Math.cos(n),o=Math.sin(n);r=t.x*a-t.y*o,s=t.x*o+t.y*a}return e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&(r+=e.x,s+=e.y),new b(r,s,0)},i.prototype.clone=function(){var t=new i;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.viewTarget.copy(this.viewTarget),t.viewTwistAngle=this.viewTwistAngle,t.viewHeight=this.viewHeight,t},i.prototype.copy=function(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.viewTarget.copy(t.viewTarget),this.viewTwistAngle=t.viewTwistAngle,this.viewHeight=t.viewHeight,this},i})();const Oe="Continuous",st="Standard",xe="Standard",we="Standard",_p="ANSI31",gh="ANGLE",Ge="SOLID",fh="USER",ph="LINEAR",dt="ByLayer",ae="ByBlock",An="*Active",Hs="mlightcad",Ws="ACAD",xp=Object.freeze({x:0,y:0}),wp=Object.freeze({x:0,y:0}),vp=Object.freeze({x:1,y:1}),Ap=Object.freeze({x:0,y:0,z:1}),kp=Object.freeze({x:0,y:0,z:0}),mh=150,$s=1,qs=255,yh=12,Ks=1,Zs=255,Pp=0,Sp=32767,Ip=0,Ep=2,bh=5,Qs=1,Js=255;var ze=(i=>(i[i.OnBothOperands=0]="OnBothOperands",i[i.ExtendThis=1]="ExtendThis",i[i.ExtendArg=2]="ExtendArg",i[i.ExtendBoth=3]="ExtendBoth",i))(ze||{});const Za=class Za extends vt{constructor(){super(...arguments),this._visibility=!0,this._transparency=new ht,this._transparencySet=!1,this._dxfPaperSpace=!1}get type(){return this.constructor.typeName}get layer(){return this._layer==null&&(this._layer=this.database.clayer??"0"),this._layer}set layer(t){this._layer=t}get color(){return this.getEntityColor()}set color(t){this.setEntityColor(t)}get resolvedColor(){return this.resolveStandardColor()}resolveStandardColor(){let t=this.color;if(t.isByLayer){const e=this.getLayerColor();e&&e.RGB!=null&&(t=e)}else t.isByBlock&&(t=new j().setForeground());return t}get lineType(){var t;return this._lineType==null&&(this._lineType=((t=this.database)==null?void 0:t.celtype)??dt),this._lineType}set lineType(t){t?t.toUpperCase()==="BYLAYER"?this._lineType=dt:t.toUpperCase()==="BYBLOCK"?this._lineType=ae:this._lineType=t:this._lineType=dt}get lineWeight(){return this._lineWeight==null&&(this._lineWeight=this.database.celweight??exports.AcGiLineWeight.ByLayer),this._lineWeight}set lineWeight(t){this._lineWeight=t}get linetypeScale(){return this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),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.clone(),this._transparencySet=!0}hasExplicitLayer(){return this._layer!=null}hasExplicitColor(){return this._color!=null}getEntityColor(){return this._color==null&&(this._color=new j,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._color}setEntityColor(t){this._color==null&&(this._color=new j),this._color.copy(t)}shouldResolveColorFromCecolor(){return!0}hasExplicitTransparency(){return this._transparencySet}dxfOutFields(t){t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency);const e=this.database.tables.blockTable.getIdAt(this.ownerId);return e!=null&&e.isPaperSapce&&t.writeInt16(67,1),this}dxfInFields(t){if(super.dxfInFields(t),!t.atSubclassData("AcDbEntity")){const e=t.peekItem();if(e&&Number(e.code)===100)return this}for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 8:this.layer=String(e.value);break;case 6:this.lineType=String(e.value);break;case 48:this.linetypeScale=Number(e.value);break;case 60:this.visibility=Number(e.value)===0;break;case 62:this.color.colorIndex=Number(e.value);break;case 420:this.color.setRGBValue(Number(e.value));break;case 370:this.lineWeight=Number(e.value);break;case 440:this.transparency=ht.deserialize(Number(e.value));break;case 67:this._dxfPaperSpace=Number(e.value)!==0;break}}return this.hasExplicitColor()||this.setEntityColor(new j().setByLayer()),this}get dxfPaperSpace(){return this._dxfPaperSpace}resolveEffectiveProperties(){this._layer==null&&(this._layer=this.database.clayer??"0"),this._color==null&&this.shouldResolveColorFromCecolor()&&(this._color=new j,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._lineType==null&&(this._lineType=this.database.celtype??dt),this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),this._lineWeight==null&&(this._lineWeight=this.database.celweight??exports.AcGiLineWeight.ByLayer)}get properties(){return{type:this.type,groups:[this.getGeneralProperties()]}}subGetGripPoints(){return new Array}subMoveGripPointsAt(t,e){return this}subGetOsnapPoints(t,e,n,r,s,a){}intersectWith(t,e=ze.OnBothOperands,n){const r=this.subGetIntersectCurves(),s=t.subGetIntersectCurves();if(r.length===0||s.length===0)return[];const a=e===ze.ExtendThis||e===ze.ExtendBoth,o=e===ze.ExtendArg||e===ze.ExtendBoth;return Yf(r,s,a,o,n)}subGetIntersectCurves(){return[]}transformBy(t){return this}erase(){return this.database.tables.blockTable.removeEntity(this.objectId)}get directBatchPrimitive(){return null}worldDraw(t,e){if(!this.database.isLayerDrawable(this.layer))return;const n=t.subEntityTraits;n.color=this.resolvedColor,n.lineType=this.lineStyle,n.lineTypeScale=this.linetypeScale,n.lineWeight=this.lineWeight,n.transparency=this.transparency,n.layer=this.layer,n.drawOrder=0,"thickness"in this&&(n.thickness=this.thickness),t.context.database=this.database;const r=this.subWorldDraw(t,e);return this.attachEntityInfo(r),r}getGeneralProperties(){return{groupName:"general",properties:[{name:"handle",type:"int",editable:!1,accessor:{get:()=>this.objectId}},{name:"color",type:"color",editable:!0,accessor:{get:()=>this.color,set:t=>{this.color=t}}},{name:"layer",type:"string",editable:!0,accessor:{get:()=>this.layer,set:t=>{this.layer=t}}},{name:"linetype",type:"linetype",editable:!0,accessor:{get:()=>this.lineType,set:t=>{this.lineType=t}}},{name:"linetypeScale",type:"float",editable:!0,accessor:{get:()=>this.linetypeScale,set:t=>{this.linetypeScale=t}}},{name:"lineWeight",type:"lineweight",editable:!0,accessor:{get:()=>this.lineWeight,set:t=>{this.lineWeight=t}}},{name:"transparency",type:"transparency",editable:!0,accessor:{get:()=>this.transparency,set:t=>{this.transparency=t}}}]}}get lineStyle(){var r;const{type:t,name:e}=this.getLineType(),n=(r=this.database)==null?void 0:r.tables.linetypeTable.getAt(e);return n?{type:t,...n.linetype}:{type:t,name:e,standardFlag:0,description:"",totalPatternLength:0}}getLineType(){if(this.lineType==dt){const t=this.database.tables.layerTable.getAt(this.layer);if(t&&t.linetype)return{type:"ByLayer",name:t.linetype}}else return this.lineType==ae?{type:"ByBlock",name:Oe}:{type:"UserSpecified",name:this.lineType};return{type:"UserSpecified",name:Oe}}getLayerColor(){const t=this.database.tables.layerTable.getAt(this.layer);return t!=null?t.color:null}attachEntityInfo(t){t&&(t.objectId=this.objectId,this.attrs.has("ownerId")&&(t.ownerId=this.ownerId),t.layerName=this.layer,t.visible=this.visibility)}};Za.typeName="Entity";let q=Za;class kn{constructor(t){this.i=0,t instanceof Map?(this._records=t,this._array=null,this._keys=Array.from(t.keys())):(this._records=null,this._array=t,this._keys=[])}get count(){var t;return((t=this._records)==null?void 0:t.size)??this._array.length}toArray(){return this._records?Array.from(this._records.values()):[...this._array]}[Symbol.iterator](){return this}next(){if(this._array){if(this.i<this._array.length){const t=this._array[this.i];return this.i+=1,{value:t,done:!1}}return{value:null,done:!0}}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}}}class Te extends Error{constructor(t="Unexpected end of buffer."){super(t),this.name="AcDbProxyGraphicEndOfBufferError"}}function _h(i){return i instanceof ArrayBuffer?new Uint8Array(i):i}class Xt{constructor(t,e=4){this._index=0,this._buffer=_h(t),this._align=e}get index(){return this._index}get hasData(){return this._index<this._buffer.length}alignIndex(t){const e=t%this._align;return e?t+this._align-e:t}readStruct(t){if(!this.hasData)throw new Te;const e=[];let n=0;for(const r of t){const s=new DataView(this._buffer.buffer,this._buffer.byteOffset+this._index+n,r);if(r===8)e.push(s.getFloat64(0,!0));else if(r===4)e.push(s.getUint32(0,!0));else throw new Error(`Unsupported struct size: ${r}`);n+=r}return this._index=this.alignIndex(this._index+n),e}readFloat(){return this.readStruct([8])[0]}readLong(){return this.readStruct([4])[0]}readSignedLong(){if(!this.hasData)throw new Te;const e=new DataView(this._buffer.buffer,this._buffer.byteOffset+this._index,4).getInt32(0,!0);return this._index=this.alignIndex(this._index+4),e}readVertex(){return this.readStruct([8,8,8])}readPaddedString(t="utf-8"){const e=this._buffer;for(let n=this._index;n<e.length;n++)if(e[n]===0){const r=this._index;this._index=this.alignIndex(n+1);const s=e.subarray(r,n);return new TextDecoder(t).decode(s)}throw new Te("Did not detect terminating zero byte.")}readPaddedUnicodeString(){const t=this._buffer;for(let e=this._index;e<t.length;e+=2)if(e+1<t.length&&t[e]===0&&t[e+1]===0){const n=this._index;this._index=this.alignIndex(e+2);const r=t.subarray(n,e);return new TextDecoder("utf-16le").decode(r)}throw new Te("Did not detect terminating zero bytes.")}}class xh{constructor(t,e="AC1015",n="cp1252"){this._bitIndex=0,this._buffer=_h(t),this.dxfversion=e,this.encoding=n}get hasData(){return this._bitIndex>>3<this._buffer.length}readBit(){const t=this._bitIndex;this._bitIndex+=1;const e=t>>3;if(e>=this._buffer.length)throw new Te;return this._buffer[e]&128>>(t&7)?1:0}readBits(t){const e=this._bitIndex,n=e+t;if(n-1>>3>=this._buffer.length)throw new Te;this._bitIndex=n;let r=128>>(e&7),s=e>>3,a=0,o=this._buffer[s];for(;t>0;)a<<=1,o&r&&(a|=1),t-=1,r>>=1,!r&&t&&(r=128,s+=1,o=this._buffer[s]);return a}readUnsignedByte(){return this.readBits(8)}readSignedByte(){const t=this.readBits(8);return t&128?-((~t&255)+1):t}readAlignedBytes(t){const e=this._bitIndex>>3,n=e+t;if(n>this._buffer.length)throw new Te;return this._bitIndex+=t<<3,this._buffer.subarray(e,n)}readUnsignedShort(){if(this._bitIndex&7){const e=this.readBits(8);return(this.readBits(8)<<8)+e}const t=this.readAlignedBytes(2);return t[1]<<8|t[0]}readSignedShort(){const t=this.readUnsignedShort();return t&32768?-((~t&65535)+1):t}readUnsignedLong(){if(this._bitIndex&7){const e=this.readBits(8),n=this.readBits(8),r=this.readBits(8);return(this.readBits(8)<<24)+(r<<16)+(n<<8)+e}const t=this.readAlignedBytes(4);return(t[3]<<24)+(t[2]<<16)+(t[1]<<8)+t[0]}readSignedLong(){const t=this.readUnsignedLong();return t&2147483648?-((~t&4294967295)+1):t}readFloat(){if(this._bitIndex&7){const n=new Uint8Array(8);for(let r=0;r<8;r++)n[r]=this.readBits(8);return new DataView(n.buffer).getFloat64(0,!0)}const t=this.readAlignedBytes(8),e=new Uint8Array(t);return new DataView(e.buffer).getFloat64(0,!0)}readRawDouble(t=1){return t===1?this.readFloat():Array.from({length:t},()=>this.readFloat())}readBitShort(t=1){const e=()=>{const n=this.readBits(2);return n===0?this.readSignedShort():n===1?this.readUnsignedByte():n===2?0:256};return t===1?e():Array.from({length:t},()=>e())}readBitLong(t=1){const e=()=>{const n=this.readBits(2);return n===0?this.readSignedLong():n===1?this.readUnsignedByte():n===2?0:256};return t===1?e():Array.from({length:t},()=>e())}readBitDouble(t=1){const e=()=>{const n=this.readBits(2);return n===0?this.readFloat():n===1?1:0};return t===1?e():Array.from({length:t},()=>e())}readBitDoubleDefault(t=1,e=0){const n=new Uint8Array(8);new DataView(n.buffer).setFloat64(0,e,!0);const r=()=>{const s=this.readBits(2);if(s===0)return e;if(s===1){const a=new Uint8Array(n);return a[0]=this.readUnsignedByte(),a[1]=this.readUnsignedByte(),a[2]=this.readUnsignedByte(),a[3]=this.readUnsignedByte(),new DataView(a.buffer).getFloat64(0,!0)}if(s===2){const a=new Uint8Array(n);return a[4]=this.readUnsignedByte(),a[5]=this.readUnsignedByte(),a[0]=this.readUnsignedByte(),a[1]=this.readUnsignedByte(),a[2]=this.readUnsignedByte(),a[3]=this.readUnsignedByte(),new DataView(a.buffer).getFloat64(0,!0)}return this.readFloat()};return t===1?r():Array.from({length:t},()=>r())}}function Kr(i){return Array.from(i,t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}function Ba(i){const t=i.reduce((r,s)=>r+Math.floor(s.length/2),0),e=new Uint8Array(t);let n=0;for(const r of i)for(let s=0;s<r.length;s+=2)e[n++]=parseInt(r.slice(s,s+2),16);return e}function wi(i){if(i.length===0)return new Uint8Array;const t=[];for(const s of i)s instanceof Uint8Array?t.push(s):t.push(Ba([String(s)]));const e=t.reduce((s,a)=>s+a.length,0),n=new Uint8Array(e);let r=0;for(const s of t)n.set(s,r),r+=s.length;return n}class Pe extends vt{constructor(t,e){t=t||{},Wt(t,{name:""}),super(t,e)}get name(){return this.getAttr("name")}set name(t){this.setAttr("name",t)}setAttr(t,e){this.assertOpenForWrite(),super.setAttr(t,e)}assertOpenForWrite(){if(this.isTemp)return;const t=this.database;if(!t)return;const e=t.transactionManager;if(!e.isApplyingUndoRedo()){if(e.strictMode&&!e.isRecording())throw new Error("Cannot modify symbol table records outside an active transaction.");if(e.isRecording()&&!e.isOpenedForWriteInTransaction(this.objectId))throw new Error(`Symbol table record "${this.name||this.objectId}" is not open for write. Use openObjectForWrite().`)}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTableRecord"),this}}var wh=(i=>(i[i.Any=0]="Any",i[i.Uniform=1]="Uniform",i))(wh||{}),zn=(i=>(i[i.None=0]="None",i[i.Anonymous=1]="Anonymous",i[i.HasNonConstantAttributes=2]="HasNonConstantAttributes",i[i.Xref=4]="Xref",i[i.XrefOverlay=8]="XrefOverlay",i[i.ExternallyDependent=16]="ExternallyDependent",i[i.Resolved=32]="Resolved",i[i.Referenced=64]="Referenced",i))(zn||{});const Ie=class Ie extends Pe{static isModelSapceName(t){return t.toLowerCase()==Ie.MODEL_SPACE_NAME.toLowerCase()}static isPaperSapceName(t){return t.toLowerCase().startsWith(Ie.PAPER_SPACE_NAME_PREFIX.toLowerCase())}static sanitizeImportedFlags(t){return t&-97}constructor(t,e){t=t||{},Wt(t,{origin:new b,layoutId:"",flags:0,pathName:"",blockInsertUnits:0,explodability:1,blockScaling:1,previewIcon:void 0}),super(t,e),this._entities=[]}get isModelSapce(){return Ie.isModelSapceName(this.name)}get isPaperSapce(){return Ie.isPaperSapceName(this.name)}get origin(){return this.getAttr("origin")}set origin(t){this.getAttr("origin").copy(t)}get layoutId(){return this.getAttr("layoutId")}set layoutId(t){this.setAttr("layoutId",t)}get flags(){return this.getAttr("flags")}set flags(t){this.setAttr("flags",t)}get pathName(){return this.getAttr("pathName")}set pathName(t){this.setAttr("pathName",t)}get isXref(){return(this.flags&12)!==0}get isOverlayReference(){return(this.flags&8)!==0}get isUnresolvedXref(){return!this.isXref||(this.flags&32)!==0?!1:this._entities.length===0}get blockInsertUnits(){return this.getAttr("blockInsertUnits")}set blockInsertUnits(t){this.setAttr("blockInsertUnits",t)}get explodability(){return this.getAttr("explodability")}set explodability(t){this.setAttr("explodability",t)}get blockScaling(){return this.getAttr("blockScaling")}set blockScaling(t){this.setAttr("blockScaling",t)}get previewIcon(){return this.getAttrWithoutException("previewIcon")}set previewIcon(t){if(!t||t.length===0){this.setAttr("previewIcon",void 0);return}this.setAttr("previewIcon",t)}appendEntity(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot append entities outside an active transaction.");const n=s=>{s.database=this.database,s.ownerId=this.objectId,this.database.ensureEntityStyleDefaults(s),this.database.commitObjectHandle(s,a=>this.hasEntityId(a)),s.resolveEffectiveProperties(),this._entities.push(s),s.dxfTypeName==="INSERT"&&"syncAttributeDatabases"in s&&typeof s.syncAttributeDatabases=="function"&&s.syncAttributeDatabases()},r=Array.isArray(t)?t:[t];for(const s of r)n(s);if(e.isRecording())for(const s of r)e.recordAppend({type:"blockTableRecord",ownerId:this.objectId},s);(this.isModelSapce||this.isPaperSapce)&&!e.isRecording()&&!e.isApplyingUndoRedo()&&this.database.notifyEntityAppended(t)}removeEntity(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot remove entities outside an active transaction.");const n=Array.isArray(t)?t:[t];if(n.length===0)return!1;const r=new Set(n),s=[];let a=0;for(const o of this._entities)r.has(o.objectId)?(e.isRecording()&&e.recordRemove({type:"blockTableRecord",ownerId:this.objectId},o),s.push(o),this.database.releaseObjectHandle(o)):this._entities[a++]=o;return this._entities.length=a,s.length>0&&!e.isRecording()&&!e.isApplyingUndoRedo()&&this.database.notifyEntityErased(s),s.length>0}newIterator(){return new kn(this._entities)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!(e instanceof q)||e.getAttrWithoutException("ownerId")!==this.objectId))return e}hasEntityId(t){return this.getIdAt(t)!==void 0}dxfOutBlockRecord(t){return t.writeStart("BLOCK_RECORD"),this.dxfOut(t),this}dxfOutBlockBegin(t){return t.writeStart("BLOCK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,"0"),t.writeSubclassMarker("AcDbBlockBegin"),t.writeString(2,this.name),t.writeInt16(70,this.flags),t.writePoint3d(10,this.origin),t.writeString(3,this.name),this.pathName&&t.writeString(1,this.pathName),this}dxfOutBlockEnd(t){return t.writeStart("ENDBLK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbBlockEnd"),this}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.blockInsertUnits),t.writeInt16(280,this.explodability),t.writeInt16(281,this.blockScaling),(this.isModelSapce||this.isPaperSapce)&&t.writeObjectId(340,this.layoutId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbBlockTableRecord");const e=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}switch(r){case 2:this.name=String(n.value);break;case 70:this.blockInsertUnits=Number(n.value);break;case 280:this.explodability=Number(n.value);break;case 281:this.blockScaling=Number(n.value);break;case 340:this.layoutId=String(n.value);break;case 310:{const s=String(n.value).replace(/\s+/g,"");s&&e.push(s);break}}}return e.length>0&&(this.previewIcon=Ba(e)),this}};Ie.MODEL_SPACE_NAME="*Model_Space",Ie.PAPER_SPACE_NAME_PREFIX="*Paper_Space";let nt=Ie;var vh=(i=>(i[i.kInches=0]="kInches",i[i.kMillimeters=1]="kMillimeters",i[i.kPixels=2]="kPixels",i))(vh||{}),Ah=(i=>(i[i.k0degrees=0]="k0degrees",i[i.k90degrees=1]="k90degrees",i[i.k180degrees=2]="k180degrees",i[i.k270degrees=3]="k270degrees",i))(Ah||{}),kh=(i=>(i[i.kDisplay=0]="kDisplay",i[i.kExtents=1]="kExtents",i[i.kLimits=2]="kLimits",i[i.kView=3]="kView",i[i.kWindow=4]="kWindow",i[i.kLayout=5]="kLayout",i))(kh||{}),Ph=(i=>(i[i.kDraft=0]="kDraft",i[i.kPreview=1]="kPreview",i[i.kNormal=2]="kNormal",i[i.kPresentation=3]="kPresentation",i[i.kMaximum=4]="kMaximum",i[i.kCustom=5]="kCustom",i))(Ph||{}),Sh=(i=>(i[i.kAsDisplayed=0]="kAsDisplayed",i[i.kWireframe=1]="kWireframe",i[i.kHidden=2]="kHidden",i[i.kRendered=3]="kRendered",i[i.kVisualStyle=4]="kVisualStyle",i[i.kRenderPreset=5]="kRenderPreset",i))(Sh||{}),Ih=(i=>(i[i.kScaleToFit=0]="kScaleToFit",i[i.k1_128in_1ft=1]="k1_128in_1ft",i[i.k1_64in_1ft=2]="k1_64in_1ft",i[i.k1_32in_1ft=3]="k1_32in_1ft",i[i.k1_16in_1ft=4]="k1_16in_1ft",i[i.k3_32in_1ft=5]="k3_32in_1ft",i[i.k1_8in_1ft=6]="k1_8in_1ft",i[i.k3_16in_1ft=7]="k3_16in_1ft",i[i.k1_4in_1ft=8]="k1_4in_1ft",i[i.k3_8in_1ft=9]="k3_8in_1ft",i[i.k1_2in_1ft=10]="k1_2in_1ft",i[i.k3_4in_1ft=11]="k3_4in_1ft",i[i.k1in_1ft=12]="k1in_1ft",i[i.k3in_1ft=13]="k3in_1ft",i[i.k6in_1ft=14]="k6in_1ft",i[i.k1ft_1ft=15]="k1ft_1ft",i[i.k1_1=16]="k1_1",i[i.k1_2=17]="k1_2",i[i.k1_4=18]="k1_4",i[i.k1_5=19]="k1_5",i[i.k1_8=20]="k1_8",i[i.k1_10=21]="k1_10",i[i.k1_16=22]="k1_16",i[i.k1_20=23]="k1_20",i[i.k1_30=24]="k1_30",i[i.k1_40=25]="k1_40",i[i.k1_50=26]="k1_50",i[i.k1_100=27]="k1_100",i[i.k2_1=28]="k2_1",i[i.k4_1=29]="k4_1",i[i.k8_1=30]="k8_1",i[i.k10_1=31]="k10_1",i[i.k100_1=32]="k100_1",i[i.k1000_1=33]="k1000_1",i[i.k1and1_2in_1ft=34]="k1and1_2in_1ft",i))(Ih||{});const Lp={0:0,1:1/1536,2:1/768,3:1/384,4:1/192,5:1/128,6:1/96,7:1/64,8:1/48,9:1/32,10:1/24,11:1/16,12:1/12,13:1/4,14:1/2,15:1,16:1,17:1/2,18:1/4,19:1/5,20:1/8,21:1/10,22:1/16,23:1/20,24:1/30,25:1/40,26:1/50,27:1/100,28:2,29:4,30:8,31:10,32:100,33:1e3,34:1/8};class Eh extends vt{constructor(t=!1){super(),this._plotSettingsName="",this._plotCfgName="",this._canonicalMediaName="",this._currentStyleSheet="",this._plotOrigin=new L,this._customPrintScale={numerator:1,denominator:1},this._plotPaperSize=new L,this._plotPaperMargins={left:0,right:0,top:0,bottom:0},this._plotViewName="",this._paperImageOrigin=new L,this._plotWindowArea=new wt,this._modelType=t,this._plotCentered=!1,this._plotHidden=!1,this._plotPaperUnits=1,this._plotPlotStyles=!0,this._plotRotation=0,this._plotType=5,this._plotViewportBorders=!1,this._printLineweights=!0,this._scaleLineweights=!1,this._drawViewportsFirst=!1,this._showPlotStyles=!0,this._shadePlotType=0,this._shadePlotResLevel=2,this._shadePlotCustomDpi=300,this._shadePlotId=void 0,this._stdScaleType=0,this._useStandardScale=!0}get plotSettingsName(){return this._plotSettingsName}set plotSettingsName(t){this._plotSettingsName=t}getPlotSettingsName(){return this._plotSettingsName}setPlotSettingsName(t){this._plotSettingsName=t}get plotCfgName(){return this._plotCfgName}set plotCfgName(t){this._plotCfgName=t}getPlotCfgName(){return this._plotCfgName}get canonicalMediaName(){return this._canonicalMediaName}set canonicalMediaName(t){this._canonicalMediaName=t}getCanonicalMediaName(){return this._canonicalMediaName}get currentStyleSheet(){return this._currentStyleSheet}set currentStyleSheet(t){this._currentStyleSheet=t}getCurrentStyleSheet(){return this._currentStyleSheet}get plotOrigin(){return this._plotOrigin}set plotOrigin(t){this._plotOrigin=t}getPlotOrigin(){return this._plotOrigin}get customPrintScale(){return this._customPrintScale}set customPrintScale(t){this._customPrintScale=t}getCustomPrintScale(){return this._customPrintScale}get plotPaperSize(){return this._plotPaperSize}set plotPaperSize(t){this._plotPaperSize=t}getPlotPaperSize(){return this._plotPaperSize}get plotPaperMargins(){return this._plotPaperMargins}set plotPaperMargins(t){this._plotPaperMargins=t}getPlotPaperMargins(){return this._plotPaperMargins}get plotViewName(){return this._plotViewName}set plotViewName(t){this._plotViewName=t}getPlotViewName(){return this._plotViewName}get paperImageOrigin(){return this._paperImageOrigin}set paperImageOrigin(t){this._paperImageOrigin=t}get plotWindowArea(){return this._plotWindowArea}set plotWindowArea(t){this._plotWindowArea=t}getPlotWindowArea(){return this._plotWindowArea}get modelType(){return this._modelType}set modelType(t){this._modelType=t}getModelType(){return this._modelType}setModelType(t){this._modelType=t}get drawViewportsFirst(){return this._drawViewportsFirst}set drawViewportsFirst(t){this._drawViewportsFirst=t}setDrawViewportsFirst(t){this._drawViewportsFirst=t}get plotCentered(){return this._plotCentered}set plotCentered(t){this._plotCentered=t}setPlotCentered(t){this._plotCentered=t}get plotHidden(){return this._plotHidden}set plotHidden(t){this._plotHidden=t}setPlotHidden(t){this._plotHidden=t}get plotPaperUnits(){return this._plotPaperUnits}set plotPaperUnits(t){this._plotPaperUnits=t}get plotPlotStyles(){return this._plotPlotStyles}set plotPlotStyles(t){this._plotPlotStyles=t}setPlotPlotStyles(t){this._plotPlotStyles=t}get plotRotation(){return this._plotRotation}set plotRotation(t){this._plotRotation=t}get plotType(){return this._plotType}set plotType(t){this._plotType=t}get plotViewportBorders(){return this._plotViewportBorders}set plotViewportBorders(t){this._plotViewportBorders=t}setPlotViewportBorders(t){this._plotViewportBorders=t}get printLineweights(){return this._printLineweights}set printLineweights(t){this._printLineweights=t}setPrintLineweights(t){this._printLineweights=t}get scaleLineweights(){return this._scaleLineweights}set scaleLineweights(t){this._scaleLineweights=t}setScaleLineweights(t){this._scaleLineweights=t}get showPlotStyles(){return this._showPlotStyles}set showPlotStyles(t){this._showPlotStyles=t}setShowPlotStyles(t){this._showPlotStyles=t}get shadePlot(){return this._shadePlotType}set shadePlot(t){this._shadePlotType=t}setShadePlot(t){this._shadePlotType=t}get shadePlotResLevel(){return this._shadePlotResLevel}set shadePlotResLevel(t){this._shadePlotResLevel=t}setShadePlotResLevel(t){this._shadePlotResLevel=t}get shadePlotCustomDPI(){return this._shadePlotCustomDpi}set shadePlotCustomDPI(t){this._shadePlotCustomDpi=t}setShadePlotCustomDPI(t){this._shadePlotCustomDpi=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get plotWireframe(){return this._shadePlotType===1}get plotAsRaster(){return this._shadePlotType===3||this._shadePlotType===4||this._shadePlotType===5}get stdScaleType(){return this._stdScaleType}set stdScaleType(t){this._stdScaleType=t}get stdScale(){return Lp[this._stdScaleType]??1}get useStandardScale(){return this._useStandardScale}set useStandardScale(t){this._useStandardScale=t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPlotSettings"),t.writeString(1,this.plotSettingsName),t.writeString(2,this.plotCfgName),t.writeString(4,this.canonicalMediaName),t.writeString(6,this.plotViewName),t.writeDouble(40,this.plotPaperMargins.left),t.writeDouble(41,this.plotPaperMargins.bottom),t.writeDouble(42,this.plotPaperMargins.right),t.writeDouble(43,this.plotPaperMargins.top),t.writeDouble(44,this.plotPaperSize.x),t.writeDouble(45,this.plotPaperSize.y),t.writeDouble(46,this.plotOrigin.x),t.writeDouble(47,this.plotOrigin.y),t.writeDouble(48,this.plotWindowArea.min.x),t.writeDouble(49,this.plotWindowArea.min.y),t.writeDouble(140,this.plotWindowArea.max.x),t.writeDouble(141,this.plotWindowArea.max.y),t.writeDouble(142,this.customPrintScale.numerator),t.writeDouble(143,this.customPrintScale.denominator);let e=0;return this.plotViewportBorders&&(e|=1),this.showPlotStyles&&(e|=2),this.plotCentered&&(e|=4),this.plotHidden&&(e|=8),this.useStandardScale&&(e|=16),this.plotPlotStyles&&(e|=32),this.scaleLineweights&&(e|=64),this.printLineweights&&(e|=128),this.drawViewportsFirst&&(e|=512),this.modelType&&(e|=1024),t.writeInt16(70,e),t.writeInt16(72,this.plotPaperUnits),t.writeInt16(73,this.plotRotation),t.writeInt16(74,this.plotType),t.writeString(7,this.currentStyleSheet),t.writeInt16(75,this.stdScaleType),t.writeInt16(76,this.shadePlot),t.writeInt16(77,this.shadePlotResLevel),t.writeInt16(78,this.shadePlotCustomDPI),t.writeDouble(147,this.stdScale),t.writeDouble(148,this.paperImageOrigin.x),t.writeDouble(149,this.paperImageOrigin.y),t.writeObjectId(333,this.shadePlotId),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbPlotSettings");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.plotSettingsName=String(e.value);break;case 2:this.plotCfgName=String(e.value);break;case 4:this.canonicalMediaName=String(e.value);break;case 6:this.plotViewName=String(e.value);break;case 7:this.currentStyleSheet=String(e.value);break;case 40:this.plotPaperMargins.left=r;break;case 41:this.plotPaperMargins.bottom=r;break;case 42:this.plotPaperMargins.right=r;break;case 43:this.plotPaperMargins.top=r;break;case 44:this.plotPaperSize.x=r;break;case 45:this.plotPaperSize.y=r;break;case 46:this.plotOrigin.x=r;break;case 47:this.plotOrigin.y=r;break;case 48:this.plotWindowArea.min.x=r;break;case 49:this.plotWindowArea.min.y=r;break;case 140:this.plotWindowArea.max.x=r;break;case 141:this.plotWindowArea.max.y=r;break;case 142:this.customPrintScale.numerator=r;break;case 143:this.customPrintScale.denominator=r;break;case 70:{const s=r;this.plotViewportBorders=(s&1)!==0,this.showPlotStyles=(s&2)!==0,this.plotCentered=(s&4)!==0,this.plotHidden=(s&8)!==0,this.useStandardScale=(s&16)!==0,this.plotPlotStyles=(s&32)!==0,this.scaleLineweights=(s&64)!==0,this.printLineweights=(s&128)!==0,this.drawViewportsFirst=(s&512)!==0,this.modelType=(s&1024)!==0;break}case 72:this.plotPaperUnits=r;break;case 73:this.plotRotation=r;break;case 74:this.plotType=r;break;case 75:this.stdScaleType=r;break;case 76:this.shadePlot=r;break;case 77:this.shadePlotResLevel=r;break;case 78:this.shadePlotCustomDPI=r;break;case 147:break;case 148:this.paperImageOrigin.x=r;break;case 149:this.paperImageOrigin.y=r;break;case 333:this.shadePlotId=String(e.value);break;case 100:return t.pushBackItem(e),this}}return this}}class vi extends Eh{constructor(){super(),this._insertionPoint=new b,this._ucsOrigin=new b,this._ucsXAxis=new x(1,0,0),this._ucsYAxis=new x(0,1,0),this._elevation=0,this._orthographicType=0,this._tabOrder=-1,this._tabSelected=!1,this._blockTableRecordId="",this._layoutName="",this._limits=new wt,this._extents=new z,this._viewportArray=[]}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)}get viewportArray(){return this._viewportArray}set viewportArray(t){this._viewportArray=t.slice()}get namedUcsId(){return this._namedUcsId}set namedUcsId(t){this._namedUcsId=t}get orthographicUcsId(){return this._orthographicUcsId}set orthographicUcsId(t){this._orthographicUcsId=t}get insertionPoint(){return this._insertionPoint}set insertionPoint(t){this._insertionPoint.copy(t)}get ucsOrigin(){return this._ucsOrigin}set ucsOrigin(t){this._ucsOrigin.copy(t)}get ucsXAxis(){return this._ucsXAxis}set ucsXAxis(t){this._ucsXAxis.copy(t)}get ucsYAxis(){return this._ucsYAxis}set ucsYAxis(t){this._ucsYAxis.copy(t)}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get orthographicType(){return this._orthographicType}set orthographicType(t){this._orthographicType=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayout"),t.writeString(1,this.layoutName),t.writeInt16(70,this.tabSelected?1:0),t.writeInt16(71,this.tabOrder),t.writeObjectId(330,this.blockTableRecordId),t.writeObjectId(331,this._viewportArray.length>0?this._viewportArray[0]:"0"),t.writePoint2d(10,this.limits.min),t.writePoint2d(11,this.limits.max),t.writePoint3d(14,this.extents.min),t.writePoint3d(15,this.extents.max),t.writePoint3d(12,this.insertionPoint),t.writePoint3d(13,this.ucsOrigin),t.writeVector3d(16,this.ucsXAxis),t.writeVector3d(17,this.ucsYAxis),t.writeDouble(146,this.elevation),t.writeInt16(76,this.orthographicType),t.writeObjectId(345,this._namedUcsId),t.writeObjectId(346,this._orthographicUcsId),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbLayout");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.layoutName=String(e.value);break;case 70:this.tabSelected=r!==0;break;case 71:this.tabOrder=r;break;case 330:this.blockTableRecordId=String(e.value);break;case 331:{const s=String(e.value);s&&s!=="0"&&(this.viewportArray=[s]);break}case 10:this.limits.min.x=r;break;case 20:this.limits.min.y=r;break;case 11:this.limits.max.x=r;break;case 21:this.limits.max.y=r;break;case 14:this.extents.min.x=r;break;case 24:this.extents.min.y=r;break;case 34:this.extents.min.z=r;break;case 15:this.extents.max.x=r;break;case 25:this.extents.max.y=r;break;case 35:this.extents.max.z=r;break;case 345:this.namedUcsId=String(e.value);break;case 346:this.orthographicUcsId=String(e.value);break;case 12:this.insertionPoint.x=r;break;case 22:this.insertionPoint.y=r;break;case 32:this.insertionPoint.z=r;break;case 13:this.ucsOrigin.x=r;break;case 23:this.ucsOrigin.y=r;break;case 33:this.ucsOrigin.z=r;break;case 16:this.ucsXAxis.x=r;break;case 26:this.ucsXAxis.y=r;break;case 36:this.ucsXAxis.z=r;break;case 17:this.ucsYAxis.x=r;break;case 27:this.ucsYAxis.y=r;break;case 37:this.ucsYAxis.z=r;break;case 76:this.orthographicType=r;break;case 146:this.elevation=r;break;case 100:return t.pushBackItem(e),this}}return this}}class Lh{constructor(){this.events={layoutCreated:new lt,layoutRemoved:new lt,layoutRenamed:new lt,layoutSwitched:new lt}}countLayouts(t){return this.getWorkingDatabase(t).objects.layout.numEntries}findLayoutNamed(t,e){return this.getWorkingDatabase(e).objects.layout.getAt(t)}findActiveLayout(){const t=this.getActiveLayout();return t?t.layoutName:"Model"}setCurrentLayoutId(t,e){const n=this.getWorkingDatabase(e),r=n.objects.layout.getIdAt(t);return this.setCurrentLayoutInternal(r,n)}setCurrentLayoutBtrId(t,e){const n=this.getWorkingDatabase(e),r=n.objects.layout.getBtrIdAt(t);return this.setCurrentLayoutInternal(r,n)}setCurrentLayout(t,e){const n=this.getWorkingDatabase(e),r=n.objects.layout.getAt(t);return this.setCurrentLayoutInternal(r,n)}renameLayout(t,e,n){const s=this.getWorkingDatabase(n).objects.layout.getAt(t);return s?(s.layoutName=e,this.events.layoutRenamed.dispatch({layout:s,oldName:t,newName:e}),!0):!1}layoutExists(t,e){return this.getWorkingDatabase(e).objects.layout.has(t)}deleteLayout(t,e){const n=this.getWorkingDatabase(e).objects.layout,r=n.getAt(t);let s=!1;return r&&(s=n.remove(t),s&&this.events.layoutRemoved.dispatch({layout:r})),s}createLayout(t,e){const n=this.getWorkingDatabase(e),r=new vi;r.layoutName=t,r.tabOrder=n.objects.layout.maxTabOrder;const s=new nt;return s.name=`*Paper_Space${r.tabOrder}`,n.tables.blockTable.add(s),n.objects.layout.setAt(t,r),this.events.layoutCreated.dispatch({layout:r}),{layout:r,btr:s}}getActiveLayout(t){const e=this.getWorkingDatabase(t);return e.objects.layout.getBtrIdAt(e.currentSpaceId)}getWorkingDatabase(t){return t||lh()}setCurrentLayoutInternal(t,e){return t?(this.events.layoutSwitched.dispatch({layout:t}),e.currentSpaceId=t.blockTableRecordId,!0):!1}}let Hi;function Tp(i){Hi=i}function Th(){return tr.instance}const Rr=class Rr{constructor(){this._workingDatabase=null}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||(Hi||(Hi=()=>new Lh),this._layoutManager=Hi()),this._layoutManager}};Rr.instance=new Rr;let tr=Rr;oh(Th);var Pn=(i=>(i.kForRead="kForRead",i.kForWrite="kForWrite",i))(Pn||{});function Cp(i){let t="";for(let e=0;e<i.length;e++){const n=i.charCodeAt(e);t+=n<=32?i[e]:String.fromCharCode(159-n)}return t}function Mp(i){const t=i.trimStart();return!(!t||/^\d/.test(t)||/^ACIS/i.test(t)||/^ASM/i.test(t)||/^(body|point|plane|cone|cylinder|sphere|torus|lump|shell|face|edge|wire|transform)\b/i.test(t)||/\b(body|point|straight-curve|ellipse-curve)\s+\$/.test(t))}function Op(i){return!i||!Mp(i)?i:Cp(i)}function Np(i){return i.length===0?"":i.map(t=>Op(t)).join(`
|
|
6
|
-
`)}function uc(i,t,e){if(t===1){i.push(e);return}if(i.length===0){i.push(e);return}i[i.length-1]+=e}const Bp=["ACIS BinaryFile","ASM BinaryFile4"],Ch=new Set(["End-of-ACIS-data","End-of-ASM-data","End-of-ACIS-History-data"]),U={Int:4,Double:6,Str:7,BoolTrue:10,BoolFalse:11,Pointer:12,EntityType:13,EntityTypeEx:14,SubtypeStart:15,SubtypeEnd:16,RecordEnd:17,LiteralStr:18,LocationVec:19,DirectionVec:20,Enum:21,Unknown0x17:23};class Rp{constructor(t){this.data=t,this.index=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}get hasData(){return this.index<this.data.length}require(t){if(this.index+t>this.data.length)throw new RangeError(`SAB: read past end of data (need ${String(t)} at ${String(this.index)})`)}readByte(){return this.require(1),this.data[this.index++]??0}readInt(){this.require(4);const t=this.view.getInt32(this.index,!0);return this.index+=4,t}readFloat(){this.require(8);const t=this.view.getFloat64(this.index,!0);return this.index+=8,t}readStr(t){this.require(t);const e=Fp.decode(this.data.subarray(this.index,this.index+t));return this.index+=t,e}}const Fp=new TextDecoder("latin1");function Dp(i,t){let e="";for(const g of Bp)if(zp(t,g)){e=g,i.index=g.length;break}if(e==="")throw new RangeError("SAB: not a SAB stream (missing signature)");const n=i.readInt(),r=i.readInt(),s=i.readInt(),a=i.readInt(),o=xs(i),c=xs(i),l=xs(i),h=ws(i),u=ws(i),d=ws(i);return{signature:e,version:n,numRecords:r,numEntities:s,flags:a,productId:o,acisVersion:c,creationDate:l,unitsInMm:h,resTol:u,norTol:d}}function xs(i){if(i.readByte()!==U.Str)throw new RangeError("SAB: expected string tag (0x07)");return i.readStr(i.readByte())}function ws(i){if(i.readByte()!==U.Double)throw new RangeError("SAB: expected double tag (0x06)");return i.readFloat()}function Yp(i){const t=[],e=[];let n="",r=0;for(;;){if(!i.hasData){if(Ch.has(n))return{type:n,tokens:t};throw new RangeError("SAB: premature end of data")}const s=i.readByte();switch(s){case U.Int:t.push({tag:s,value:i.readInt()});break;case U.Double:t.push({tag:s,value:i.readFloat()});break;case U.Str:t.push({tag:s,value:i.readStr(i.readByte())});break;case U.Pointer:t.push({tag:s,value:i.readInt()});break;case U.BoolTrue:t.push({tag:s,value:!0});break;case U.BoolFalse:t.push({tag:s,value:!1});break;case U.LiteralStr:t.push({tag:s,value:i.readStr(i.readInt())});break;case U.EntityTypeEx:e.push(i.readStr(i.readByte()));break;case U.EntityType:{e.push(i.readStr(i.readByte()));const a=e.join("-");e.length=0,n===""&&(n=a),t.push({tag:s,value:a});break}case U.LocationVec:t.push({tag:s,value:dc(i)});break;case U.DirectionVec:t.push({tag:s,value:dc(i)});break;case U.Enum:t.push({tag:s,value:i.readInt()});break;case U.Unknown0x17:t.push({tag:s,value:i.readFloat()});break;case U.SubtypeStart:r++,t.push({tag:s,value:r});break;case U.SubtypeEnd:t.push({tag:s,value:r}),r--;break;case U.RecordEnd:return{type:n,tokens:t};default:throw new RangeError(`SAB: unknown tag 0x${s.toString(16)} (${String(s)}) in record '${n}'`)}}}function dc(i){return[i.readFloat(),i.readFloat(),i.readFloat()]}function Xp(i){const t=new Rp(i),e=Dp(t,i),n=[];for(;t.hasData;){const r=Yp(t);if(n.push(r),Ch.has(r.type))break}return{header:e,records:n}}function zp(i,t){if(i.length<t.length)return!1;for(let e=0;e<t.length;e++)if(i[e]!==t.charCodeAt(e))return!1;return!0}const Vp=new Set(["End-of-ACIS-data","End-of-ASM-data","End-of-ACIS-History-data"]);function jp(i){const e=i.records.map((a,o)=>({index:o,type:a.type,record:a,refs:[]}));for(const a of e)for(const o of a.record.tokens){if(o.tag!==U.Pointer)continue;const c=o.value;a.refs.push(c>=0&&c<e.length?e[c]:null)}const n=e,r=new Map,s=new Map;for(const a of n){if(Vp.has(a.type))continue;let o=r.get(a.type);o===void 0&&(o=[],r.set(a.type,o)),o.push(a),s.set(a.type,(s.get(a.type)??0)+1)}return{header:i.header,nodes:n,bodies:r.get("body")??[],typeCounts:s,nodesOfType:a=>r.get(a)??[],pointLocations(){const a=[];for(const o of r.get("point")??[]){const c=o.record.tokens.find(l=>l.tag===U.LocationVec);c!==void 0&&a.push(c.value)}return a}}}const Gp=["ACIS BinaryFile","ASM BinaryFile","ASM BinaryFile4"];function Up(i,t){if(t.length===0||i.length<t.length)return-1;const e=t.charCodeAt(0);for(let n=0;n<=i.length-t.length;n++){if(i[n]!==e)continue;let r=!0;for(let s=1;s<t.length;s++)if(i[n+s]!==t.charCodeAt(s)){r=!1;break}if(r)return n}return-1}function Hp(i){for(const t of Gp){const e=Up(i,t);if(e>=0)return e}return-1}function Wp(i){if(i.length===0)return null;const t=Hp(i);if(t<0)return null;try{return jp(Xp(i.subarray(t)))}catch{return null}}const er={xAxis:[1,0,0],yAxis:[0,1,0],zAxis:[0,0,1],translation:[0,0,0],scale:1},$p=1e-12,qp=new Set([U.LocationVec,U.DirectionVec]),Wi=(i,t)=>Math.abs(i-t)<=$p,Bi=(i,t)=>Wi(i[0],t[0])&&Wi(i[1],t[1])&&Wi(i[2],t[2]);function Ra(){return er}function Mh(i,t){return Wi(i.scale,t.scale)&&Bi(i.xAxis,t.xAxis)&&Bi(i.yAxis,t.yAxis)&&Bi(i.zAxis,t.zAxis)&&Bi(i.translation,t.translation)}function Kp(i){const t=[];let e;for(const n of i.record.tokens){if(qp.has(n.tag)){t.push(n.value);continue}n.tag===U.Double&&t.length>=4&&e===void 0&&(e=n.value)}return t.length<4?null:{xAxis:t[0],yAxis:t[1],zAxis:t[2],translation:t[3],scale:e??1}}function Zp(i){const t=i.refs.find(e=>(e==null?void 0:e.type)==="transform");return t==null?er:Kp(t)??er}function Vn(i){return Mh(i,er)}function oe(i,t){const e=t.scale,[n,r,s]=i,{xAxis:a,yAxis:o,zAxis:c,translation:l}=t;return[e*(a[0]*n+o[0]*r+c[0]*s)+l[0],e*(a[1]*n+o[1]*r+c[1]*s)+l[1],e*(a[2]*n+o[2]*r+c[2]*s)+l[2]]}function ne(i,t){const e=t.scale,[n,r,s]=i,{xAxis:a,yAxis:o,zAxis:c}=t;return[e*(a[0]*n+o[0]*r+c[0]*s),e*(a[1]*n+o[1]*r+c[1]*s),e*(a[2]*n+o[2]*r+c[2]*s)]}function Oh(i){const t=new Map,e=(n,r,s)=>{if(!(n==null||s.has(n.index))&&!n.type.includes("attrib")){s.add(n.index),t.has(n.index)||t.set(n.index,r);for(const a of n.refs)e(a,r,s)}};for(const n of i.bodies)e(n,Zp(n),new Set);return t}function Qp(i,t){if(Vn(t)||i.length<3)return i;const e=new Float32Array(i.length);for(let n=0;n+2<i.length;n+=3){const[r,s,a]=oe([i[n],i[n+1],i[n+2]],t);e[n]=r,e[n+1]=s,e[n+2]=a}return e}class Nh{constructor(t){this.tokens=t,this.i=0}next(...t){for(;this.i<this.tokens.length;){const e=this.tokens[this.i++];if(e!==void 0&&t.includes(e.tag))return e}}nextVec(){var t;return(t=this.next(U.LocationVec,U.DirectionVec))==null?void 0:t.value}nextDouble(){var t;return(t=this.next(U.Double))==null?void 0:t.value}}const on=(i,t)=>i.refs.find(e=>e!==null&&(e.type===t||e.type.endsWith(t)))??null,Bh=(i,t)=>i.refs.filter(e=>e!==null&&e.type===t);function vs(i){if(i===null)return null;const t=on(i,"point");if(t===null)return null;const e=t.record.tokens.find(n=>n.tag===U.LocationVec);return e?e.value:null}function Jp(i){const t=new Nh(i.record.tokens);if(i.type==="straight-curve"){const e=t.nextVec(),n=t.nextVec();if(e&&n)return{kind:"straight",origin:e,direction:n}}else if(i.type==="ellipse-curve"){const e=t.nextVec(),n=t.nextVec(),r=t.nextVec(),s=t.nextDouble();if(e&&n&&r&&s!==void 0)return{kind:"ellipse",center:e,normal:n,majorAxis:r,ratio:s}}else if(i.type==="intcurve-curve")return{kind:"intcurve",controlPoints:t0(i.record.tokens)};return{kind:"unknown"}}function t0(i){var a,o,c;const t=i.findIndex(l=>l.tag===U.EntityType&&(l.value==="nubs"||l.value==="nurbs"));if(t<0)return[];let e=t+1,n=-1;for(;e<i.length;e++){const l=i[e];if(l===void 0||l.tag===U.Double)break;if(l.tag===U.Int&&(n=l.value),l.tag===U.EntityType||l.tag===U.SubtypeEnd)return[]}if(n<0)return[];for(let l=0;l<n;l++){if(((a=i[e])==null?void 0:a.tag)!==U.Double)return[];e+=1,((o=i[e])==null?void 0:o.tag)===U.Int&&(e+=1)}const r=[];for(;((c=i[e])==null?void 0:c.tag)===U.Double;){const l=i[e];if(l===void 0)break;r.push(l.value),e+=1}const s=[];for(let l=0;l+3<=r.length;l+=3){const h=r[l],u=r[l+1],d=r[l+2];if(h===void 0||u===void 0||d===void 0)break;s.push([h,u,d])}return s}function Rh(i){const t=new Nh(i.record.tokens);if(i.type==="plane-surface"){const e=t.nextVec(),n=t.nextVec(),r=t.nextVec();if(e&&n)return r?{kind:"plane",origin:e,normal:n,uDir:r}:{kind:"plane",origin:e,normal:n}}else if(i.type==="cone-surface"){const e=t.nextVec(),n=t.nextVec(),r=t.nextVec(),s=t.nextDouble(),a=t.nextDouble(),o=t.nextDouble();if(e&&n&&r&&s!==void 0&&a!==void 0&&o!==void 0)return{kind:"cone",origin:e,axis:n,majorAxis:r,ratio:s,sineAngle:a,cosineAngle:o}}else if(i.type==="torus-surface"){const e=t.nextVec(),n=t.nextVec(),r=t.nextDouble(),s=t.nextDouble();if(e&&n&&r!==void 0&&s!==void 0)return{kind:"torus",center:e,axis:n,majorRadius:r,minorRadius:s}}else if(i.type==="sphere-surface"){const e=t.nextVec(),n=t.nextDouble(),r=t.nextVec(),s=t.nextVec();if(e&&n!==void 0&&r&&s)return{kind:"sphere",center:e,radius:n,uDir:r,poleAxis:s}}return{kind:"unknown"}}function e0(i){return Rh(i)}const n0={"plane-surface":"plane","cone-surface":"cone","torus-surface":"torus","sphere-surface":"sphere","spline-surface":"spline"},i0={"straight-curve":"straight","ellipse-curve":"ellipse","intcurve-curve":"intcurve"};function r0(i){const t=on(i,"coedge");if(t===null)return 0;const e=new Set;let n=t;for(;n!==null&&!e.has(n.index);)e.add(n.index),n=Bh(n,"coedge")[0]??null;return e.size}function s0(i,t){return i.kind==="straight"?{kind:"straight",origin:oe(i.origin,t),direction:ne(i.direction,t)}:i.kind==="ellipse"?{kind:"ellipse",center:oe(i.center,t),normal:ne(i.normal,t),majorAxis:ne(i.majorAxis,t),ratio:i.ratio}:i.kind==="intcurve"?{kind:"intcurve",controlPoints:i.controlPoints.map(e=>oe(e,t))}:i}function a0(i,t){return i.kind==="plane"?{kind:"plane",origin:oe(i.origin,t),normal:ne(i.normal,t),...i.uDir?{uDir:ne(i.uDir,t)}:{}}:i.kind==="cone"?{kind:"cone",origin:oe(i.origin,t),axis:ne(i.axis,t),majorAxis:ne(i.majorAxis,t),ratio:i.ratio,sineAngle:i.sineAngle,cosineAngle:i.cosineAngle}:i.kind==="torus"?{kind:"torus",center:oe(i.center,t),axis:ne(i.axis,t),majorRadius:i.majorRadius*t.scale,minorRadius:i.minorRadius*t.scale}:i.kind==="sphere"?{kind:"sphere",center:oe(i.center,t),radius:i.radius*t.scale,uDir:ne(i.uDir,t),poleAxis:ne(i.poleAxis,t)}:i}function o0(i){const t=[],e=Oh(i),n=Ra(),r=y=>e.get(y)??n,s=(y,_)=>{if(y===null)return null;const v=r(_);return Vn(v)?y:oe(y,v)};let a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0;const d=y=>{y[0]<a&&(a=y[0]),y[0]>l&&(l=y[0]),y[1]<o&&(o=y[1]),y[1]>h&&(h=y[1]),y[2]<c&&(c=y[2]),y[2]>u&&(u=y[2])},g=i.nodesOfType("vertex").map(y=>{const _=s(vs(y),y.index);return _===null?t.push(`vertex#${String(y.index)}: no resolvable point`):d(_),{nodeIndex:y.index,point:_}}),f=i.nodesOfType("edge").map(y=>{const _=Bh(y,"vertex"),v=s(vs(_[0]??null),y.index),w=s(vs(_[1]??null),y.index),A=on(y,"-curve"),I=A?i0[A.type]??"unknown":"unknown";let S=A?Jp(A):void 0;const M=r(y.index);return S!==void 0&&S.kind!=="unknown"&&!Vn(M)&&(S=s0(S,M)),v!==null&&w!==null&&v[0]===w[0]&&v[1]===w[1]&&v[2]===w[2]&&t.push(`edge#${String(y.index)}: degenerate (coincident endpoints)`),S===void 0||S.kind==="unknown"?{nodeIndex:y.index,start:v,end:w,curveType:I}:{nodeIndex:y.index,start:v,end:w,curveType:I,curve:S}}),p=i.nodesOfType("face").map(y=>{const _=on(y,"-surface"),v=_?n0[_.type]??"unknown":"unknown";let w=_?Rh(_):void 0;const A=r(y.index);w!==void 0&&w.kind!=="unknown"&&!Vn(A)&&(w=a0(w,A));const I=[],S=new Set;let M=on(y,"loop");for(;M!==null&&!S.has(M.index);)S.add(M.index),I.push({nodeIndex:M.index,coedgeCount:r0(M)}),M=on(M,"loop");return _===null&&t.push(`face#${String(y.index)}: no surface`),w===void 0||w.kind==="unknown"?{nodeIndex:y.index,surfaceType:v,loops:I}:{nodeIndex:y.index,surfaceType:v,surface:w,loops:I}});return{vertices:g,edges:f,faces:p,bbox:a===1/0?null:{min:[a,o,c],max:[l,h,u]},diagnostics:t}}const Ve=(i,t)=>[i[0]+t[0],i[1]+t[1],i[2]+t[2]],Ee=(i,t)=>[i[0]*t,i[1]*t,i[2]*t],c0=i=>Math.hypot(i[0],i[1],i[2]),$i=(i,t)=>[i[1]*t[2]-i[2]*t[1],i[2]*t[0]-i[0]*t[2],i[0]*t[1]-i[1]*t[0]],nn=i=>{const t=Math.hypot(i[0],i[1],i[2]);return t>0?[i[0]/t,i[1]/t,i[2]/t]:[0,0,0]};function l0(i){const t=[];for(const r of i.record.tokens)if(r.tag===U.Double&&(t.push(r.value),t.length===2))break;const e=t[0],n=t[1];return e===void 0||n===void 0?null:[e,n]}function Fh(i,t,e,n){const r=Ee($i(nn(i.normal),i.majorAxis),i.ratio),s=Math.max(1,n),a=[];for(let o=0;o<=s;o++){const c=t+(e-t)*o/s;a.push(Ve(i.center,Ve(Ee(i.majorAxis,Math.cos(c)),Ee(r,Math.sin(c)))))}return a}function h0(i,t=16){const e=nn(i.poleAxis);let n=nn(i.uDir),r=$i(e,n);c0(r)<1e-9?(n=Math.abs(e[0])<.9?[1,0,0]:[0,1,0],r=nn($i(e,n))):r=nn(r),n=nn($i(r,e));const s=[],a=(o,c)=>{const l=[],h=Math.max(8,t);for(let u=0;u<=h;u++){const d=Math.PI*2*u/h;l.push(Ve(i.center,Ve(Ee(o,i.radius*Math.cos(d)),Ee(c,i.radius*Math.sin(d)))))}s.push(l)};a(n,r),a(n,e),a(r,e);for(const o of[-.5,.5]){const c=Ee(e,i.radius*o),l=Ve(i.center,c),h=i.radius*Math.sqrt(Math.max(0,1-o*o));if(h>1e-6){const u=[],d=Math.max(8,t);for(let g=0;g<=d;g++){const f=Math.PI*2*g/d;u.push(Ve(l,Ve(Ee(n,h*Math.cos(f)),Ee(r,h*Math.sin(f)))))}s.push(u)}}return s}const u0=16,d0=(i,t)=>i.refs.find(e=>e!==null&&(e.type===t||e.type.endsWith(t)))??null;function Dh(i,t,e){i.push(t[0],t[1],t[2],e[0],e[1],e[2])}function nr(i,t){for(let e=0;e+1<t.length;e++){const n=t[e],r=t[e+1];n&&r&&Dh(i,n,r)}}function g0(i){const t=[],e=Oh(i),n=Ra();for(const r of i.nodesOfType("face")){const s=d0(r,"-surface");if((s==null?void 0:s.type)!=="sphere-surface")continue;const a=e0(s);if(a.kind!=="sphere")continue;const o=e.get(r.index)??n;for(const c of h0(a)){if(Vn(o)){nr(t,c);continue}nr(t,c.map(l=>oe(l,o)))}}return new Float32Array(t)}function f0(i,t){var n,r;const e=[];for(const s of i.edges){const a=t==null?void 0:t.nodes[s.nodeIndex];if(((n=s.curve)==null?void 0:n.kind)==="ellipse"){const o=a!==void 0?l0(a):null,c=(o==null?void 0:o[0])??0,l=(o==null?void 0:o[1])??Math.PI*2;nr(e,Fh(s.curve,c,l,u0));continue}if(((r=s.curve)==null?void 0:r.kind)==="intcurve"&&s.curve.controlPoints.length>0){nr(e,s.curve.controlPoints);continue}s.start&&s.end&&Dh(e,s.start,s.end)}return new Float32Array(e)}function p0(i){const t=Wp(i);if(t===null)return null;const e=o0(t),n=f0(e,t);if(n.length>0)return n;const r=g0(t);return r.length>0?r:null}const m0=16;function Fa(i,t=!0){const e=i.split(/\s+/),n=[];let r=!t;for(const s of e){if(!r&&/^-?\d+$/.test(s)){r=!0;continue}if(s.startsWith("$")||s==="I"||s==="F"||s==="#")continue;const a=Number.parseFloat(s);Number.isFinite(a)&&n.push(a)}return n}function gc(i,t,e){i.push(t[0],t[1],t[2],e[0],e[1],e[2])}function Yh(i){return i.split("#").map(t=>t.trim()).filter(t=>t.length>0)}function y0(i){const t=[];return i.forEach((e,n)=>{const r=/^-(\d+)\b/.exec(e),s=r?Number(r[1]):n;t[s]=e}),t}function fc(i){if(!/(?:^|\s)transform\b/.test(i))return null;const t=Fa(i);return t.length<13?null:{xAxis:[t[0],t[1],t[2]],yAxis:[t[3],t[4],t[5]],zAxis:[t[6],t[7],t[8]],translation:[t[9],t[10],t[11]],scale:t[12]}}function b0(i){const t=Ra(),e=y0(Yh(i)),n=[];for(const s of e){if(s==null||!/(?:^|\s)body\b/.test(s))continue;const a=[...s.matchAll(/\$(-?\d+)/g)].map(o=>Number(o[1]));for(const o of a){if(o<0)continue;const c=e[o];if(c==null)continue;const l=fc(c);if(l!=null){n.push(l);break}}}if(n.length===0){const s=[];for(const a of e){if(a==null)continue;const o=fc(a);o!=null&&s.push(o)}return s.length===1?s[0]:t}const r=n[0];for(let s=1;s<n.length;s++)if(!Mh(n[s],r))return t;return r}function _0(i){if(!i.includes("straight-curve"))return null;const t=Fa(i);if(t.length<6)return null;const e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5];return[[e,n,r],[e+s,n+a,r+o]]}function x0(i){if(!i.includes("ellipse-curve"))return null;const t=Fa(i);return t.length<10?null:{kind:"ellipse",center:[t[0],t[1],t[2]],normal:[t[3],t[4],t[5]],majorAxis:[t[6],t[7],t[8]],ratio:t[9]}}function w0(i){const t=[];if(!i||i.trim().length===0)return new Float32Array(0);for(const e of Yh(i)){const n=_0(e);if(n!==null){gc(t,n[0],n[1]);continue}const r=x0(e);if(r!==null){const s=Fh(r,0,Math.PI*2,m0);for(let a=1;a<s.length;a++)gc(t,s[a-1],s[a])}}return t.length===0?new Float32Array(0):Qp(new Float32Array(t),b0(i))}const v0=/\bpoint\s+(?:\$-?\d+\s+){1,4}([-\d.eE+]+)\s+([-\d.eE+]+)\s+([-\d.eE+]+)/g;function A0(i){return i.split("#").map(t=>t.trim()).filter(t=>t.length>0)}function k0(i,t=1){const e=i.split(/\s+/),n=[];for(let r=t;r<e.length;r++){const s=e[r];if(s.startsWith("$")||s==="I"||s==="F")continue;const a=Number.parseFloat(s);Number.isFinite(a)&&n.push(a)}return n}function P0(i){const t=[];for(const e of i.matchAll(v0)){const n=Number.parseFloat(e[1]),r=Number.parseFloat(e[2]),s=Number.parseFloat(e[3]);Number.isFinite(n)&&Number.isFinite(r)&&Number.isFinite(s)&&t.push(new b(n,r,s))}if(t.length>0)return t;for(const e of A0(i)){if(!e.startsWith("point "))continue;const n=k0(e);if(n.length>=3){const r=n[n.length-3],s=n[n.length-2],a=n[n.length-1];t.push(new b(r,s,a))}}return t}function S0(i){const t=[];for(let e=0;e<i.length;e+=3){const n=i[e],r=i[e+1],s=i[e+2];t.push(new b(n,r,s))}return t}function I0(i,t){return typeof i=="string"?{satText:i,version:t}:{sabBytes:i.sabBytes,satText:i.satText??i.acisData??"",version:i.version??t}}const Qa=class Qa extends q{constructor(t,e){super(),this._points=[],this._wireframe=new Float32Array(0);const n=I0(t,e);this._acisData=n.satText,this._sabBytes=n.sabBytes,this._version=n.version,this.rebuildGeometryCaches()}get dxfTypeName(){return"3DSOLID"}get acisData(){return this._acisData}get version(){return this._version}get historyObjectSoftId(){return this._historyObjectSoftId}set historyObjectSoftId(t){this._historyObjectSoftId=t}get guid(){return this._guid}set guid(t){this._guid=t}get satCache(){return this._satCache}set satCache(t){this._satCache=t}setAcisData(t,e){this._acisData=t??"",e!=null&&(this._version=e),this.rebuildGeometryCaches()}setSabBytes(t){this._sabBytes=t&&t.length>0?t:void 0,this.rebuildGeometryCaches()}get sabBytes(){return this._sabBytes}rebuildGeometryCaches(){let t=new Float32Array(0);this._sabBytes&&this._sabBytes.length>0&&(t=p0(this._sabBytes)??new Float32Array(0)),t.length===0&&this._acisData&&(t=w0(this._acisData)),this._wireframe=t,this._points=t.length>0?S0(t):P0(this._acisData)}get hasRenderableGeometry(){return this._wireframe.length>0||this._points.length>0}get geometricExtents(){return this._points.length===0?new z(new b(0,0,0),new b(0,0,0)):new z().setFromPoints(this._points)}subGetIntersectCurves(){const t=[];for(let e=0;e+5<this._wireframe.length;e+=6)t.push({kind:"line",line:new Ct({x:this._wireframe[e],y:this._wireframe[e+1],z:this._wireframe[e+2]},{x:this._wireframe[e+3],y:this._wireframe[e+4],z:this._wireframe[e+5]}),extent:"bounded",extendable:!1});return t}transformBy(t){if(this._points.forEach(e=>e.applyMatrix4(t)),this._wireframe.length>0){const e=new Float32Array(this._wireframe.length);for(let n=0;n<this._wireframe.length;n+=3){const r=new b(this._wireframe[n],this._wireframe[n+1],this._wireframe[n+2]);r.applyMatrix4(t),e[n]=r.x,e[n+1]=r.y,e[n+2]=r.z}this._wireframe=e}return this}subWorldDraw(t){if(this._wireframe.length>=6){const c=this._wireframe.length/3,l=new Uint16Array(c);for(let h=0;h<c;h++)l[h]=h;return t.lineSegments(this._wireframe,3,l)}if(this._points.length===0)return;const e=this.geometricExtents,n=e.min,r=e.max,s=[new b(n.x,n.y,n.z),new b(r.x,n.y,n.z),new b(r.x,r.y,n.z),new b(n.x,r.y,n.z),new b(n.x,n.y,r.z),new b(r.x,n.y,r.z),new b(r.x,r.y,r.z),new b(n.x,r.y,r.z)],a=new Float32Array(s.length*3);s.forEach((c,l)=>{a[l*3]=c.x,a[l*3+1]=c.y,a[l*3+2]=c.z});const o=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);return t.lineSegments(a,3,o)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb3dSolid"),this._version!=null&&t.writeInt16(70,this._version),this._guid!=null&&t.writeString(2,this._guid),this._satCache!=null&&t.writeInt16(290,this._satCache?1:0);const e=255,n=this._acisData.split(`
|
|
7
|
-
`);for(let r=0;r<n.length;r++){const s=r===n.length-1;let a=n[r];for(;a.length>e;)t.writeString(3,a.slice(0,e)),a=a.slice(e);t.writeString(s?1:3,a)}return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbModelerGeometry");const e=[];let n=this._version;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.peekItem();if(!r)break;const s=Number(r.code);if(s===100){if(t.readItem(),String(r.value)==="AcDb3dSolid")continue;t.pushBackItem(r);break}t.readItem();const a=Number(r.value);switch(s){case 1:
|
|
8
|
-
`).replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,"")}function
|
|
9
|
-
`).replace(N0,"").replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,"").trim()}function R0(i,t,e=1){const n=i.trim();if(!n||t<=0)return 0;const r=B0(n),s=O0.test(n);return r?Math.max(t,Ai(r,t,e)):s?t:0}function Ai(i,t,e=1){if(!i||t<=0)return 0;const n=Da(i),r=Math.max(...n.split(/\r\n|\r|\n/g).map(s=>s.length),0);return r===0?0:Math.max(t,r*t*M0*e)}function Xh(i){const t=Da(i);return Math.max(t.split(/\r\n|\r|\n/g).length,1)}function zh(i,t,e){if(t<=0||i<=0)return 0;if(i===1)return t;const n=Math.max(e,0)*(5/3);return t+(i-1)*t*n}function Ya(i,t,e){switch(e){case exports.AcGiMTextAttachmentPoint.TopCenter:return{minX:-i/2,minY:-t,maxX:i/2,maxY:0};case exports.AcGiMTextAttachmentPoint.TopRight:return{minX:-i,minY:-t,maxX:0,maxY:0};case exports.AcGiMTextAttachmentPoint.MiddleLeft:return{minX:0,minY:-t/2,maxX:i,maxY:t/2};case exports.AcGiMTextAttachmentPoint.MiddleCenter:return{minX:-i/2,minY:-t/2,maxX:i/2,maxY:t/2};case exports.AcGiMTextAttachmentPoint.MiddleRight:return{minX:-i,minY:-t/2,maxX:0,maxY:t/2};case exports.AcGiMTextAttachmentPoint.BottomLeft:case exports.AcGiMTextAttachmentPoint.BaselineLeft:return{minX:0,minY:0,maxX:i,maxY:t};case exports.AcGiMTextAttachmentPoint.BottomCenter:case exports.AcGiMTextAttachmentPoint.BaselineCenter:return{minX:-i/2,minY:0,maxX:i/2,maxY:t};case exports.AcGiMTextAttachmentPoint.BottomRight:case exports.AcGiMTextAttachmentPoint.BaselineRight:return{minX:-i,minY:0,maxX:0,maxY:t};case exports.AcGiMTextAttachmentPoint.TopLeft:default:return{minX:0,minY:-t,maxX:i,maxY:0}}}function Xa(i,t){let e;t&&t.lengthSq()>0?e=t.clone().normalize():e=new x(Math.cos(i),Math.sin(i),0);const n=new x(-e.y,e.x,e.z);return n.lengthSq()===0?n.set(0,1,0):n.normalize(),{xAxis:e,yAxis:n}}function Vh(i,t,e,n,r,s=0,a){if(e<=0&&n<=0)return i.expandByPoint(t),i;const o=Ya(e,n,r),{xAxis:c,yAxis:l}=Xa(s,a?new x(a.x,a.y,a.z||0):void 0),h=[[o.minX,o.minY],[o.maxX,o.minY],[o.maxX,o.maxY],[o.minX,o.maxY]];for(const[u,d]of h)i.expandByPoint(new b(t.x+c.x*u+l.x*d,t.y+c.y*u+l.y*d,t.z+c.z*u+l.z*d));return i}function F0(i){const t=i.extentsWidth>0?i.extentsWidth:i.width>0?i.width:Ai(i.contents,i.height),e=zh(Xh(i.contents),i.height,i.lineSpacingFactor);return{width:t,height:e,attachment:i.attachmentPoint,rotation:i.rotation,direction:i.direction.lengthSq()>0?i.direction.clone():void 0,location:new b(i.location.x,i.location.y,i.location.z??0)}}function D0(i,t){const{xAxis:e,yAxis:n}=Xa(t.rotation,t.direction),r=i.x-t.location.x,s=i.y-t.location.y,a=(i.z??0)-t.location.z;return{x:r*e.x+s*e.y+a*e.z,y:r*n.x+s*n.y+a*n.z}}function Y0(i){const t=Ya(i.width,i.height,i.attachment),{xAxis:e,yAxis:n}=Xa(i.rotation,i.direction);return[[t.minX,t.minY],[t.maxX,t.minY],[t.maxX,t.maxY],[t.minX,t.maxY]].map(([s,a])=>new b(i.location.x+e.x*s+n.x*a,i.location.y+e.y*s+n.y*a,i.location.z+e.z*s+n.z*a))}function X0(i,t,e){const n=Ya(t.width,t.height,t.attachment),{x:r,y:s}=D0(i,t),a=n.minX-e.padX,o=n.maxX+e.padX,c=n.minY-e.padYBelow,l=n.maxY+e.padYAbove;if(r<a||r>o||s<c||s>l)return null;const h=r<n.minX?n.minX-r:r>n.maxX?n.maxX-r:0,u=s<n.minY?n.minY-s:s>n.maxY?s-n.maxY:0;return h+u}var jh=(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))(jh||{}),Gh=(i=>(i[i.BASELINE=0]="BASELINE",i[i.BOTTOM=1]="BOTTOM",i[i.MIDDLE=2]="MIDDLE",i[i.TOP=3]="TOP",i))(Gh||{});const to=class to extends q{constructor(){super(),this._generationFlag=0,this._normal=new x(0,0,1),this._textString="",this._height=0,this._thickness=1,this._position=new b,this._alignmentPoint=new b,this._rotation=0,this._oblique=0,this._horizontalMode=0,this._verticalModel=2,this._styleName="",this._widthFactor=1}get dxfTypeName(){return"TEXT"}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 alignmentPoint(){return this._alignmentPoint}set alignmentPoint(t){this._alignmentPoint.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 generationFlag(){return this._generationFlag}set generationFlag(t){this._generationFlag=t}get isBackward(){return(this._generationFlag&2)!==0}set isBackward(t){this._generationFlag=t?this._generationFlag|2:this._generationFlag&-3}get isUpsideDown(){return(this._generationFlag&4)!==0}set isUpsideDown(t){this._generationFlag=t?this._generationFlag|4:this._generationFlag&-5}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get geometricExtents(){const t=new z,{anchor:e,attachmentPoint:n}=this.resolveTextAnchor(),r=Ai(this.textString,this.height,this.widthFactor);return Vh(t,e,r,this.height,n,this.rotation)}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return ue(t,e,this._position),this._alignmentPoint.add(e),this}subGetOsnapPoints(t,e,n,r){k.Insertion===t&&r.push(this._position)}transformBy(t){const e=this._position.clone(),n=this._position.clone().add(new x(Math.cos(this._rotation),Math.sin(this._rotation),0)),r=this._position.clone().add(new x(-Math.sin(this._rotation),Math.cos(this._rotation),0)),s=this._position.clone().add(new x(0,0,1));e.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const a=new x(n).sub(e),o=new x(r).sub(e),c=new x(s).sub(e),l=o.length(),h=a.length(),u=c.length();this._position.copy(e),h>0&&(this._rotation=Math.atan2(a.y,a.x)),l>0&&(this._height*=l,h>0&&(this._widthFactor*=h/l)),u>0&&(this._thickness*=u);const d=this._alignmentPoint.clone();return d.applyMatrix4(t),this._alignmentPoint.copy(d),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}subWorldDraw(t,e){const{anchor:n,attachmentPoint:r}=this.resolveTextAnchor(),s={text:this.textString,height:this.height,width:1/0,widthFactor:this.widthFactor,position:n,rotation:this.rotation,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:r};return t.mtext(s,this.getTextStyle(),e)}resolveTextAnchor(){const t=this.resolveAttachmentPoint();if(t===exports.AcGiMTextAttachmentPoint.BaselineLeft)return{anchor:this._position,attachmentPoint:t};const e=this._alignmentPoint;return e.x===0&&e.y===0&&e.z===0||e.x===this._position.x&&e.y===this._position.y&&e.z===this._position.z?{anchor:this._position,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft}:{anchor:e,attachmentPoint:t}}resolveAttachmentPoint(){const t=this._horizontalMode,e=this._verticalModel;if(t===4)return exports.AcGiMTextAttachmentPoint.MiddleCenter;if(t===3||t===5)return exports.AcGiMTextAttachmentPoint.BaselineLeft;switch(e){case 3:return t===1?exports.AcGiMTextAttachmentPoint.TopCenter:t===2?exports.AcGiMTextAttachmentPoint.TopRight:exports.AcGiMTextAttachmentPoint.TopLeft;case 2:return t===1?exports.AcGiMTextAttachmentPoint.MiddleCenter:t===2?exports.AcGiMTextAttachmentPoint.MiddleRight:exports.AcGiMTextAttachmentPoint.MiddleLeft;case 1:return t===1?exports.AcGiMTextAttachmentPoint.BottomCenter:t===2?exports.AcGiMTextAttachmentPoint.BottomRight:exports.AcGiMTextAttachmentPoint.BottomLeft;case 0:default:return t===1?exports.AcGiMTextAttachmentPoint.BaselineCenter:t===2?exports.AcGiMTextAttachmentPoint.BaselineRight:exports.AcGiMTextAttachmentPoint.BaselineLeft}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbText"),t.writePoint3d(10,this.position),t.writeDouble(39,this.thickness),t.writeDouble(40,this.height),t.writeString(1,this.textString),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeString(7,this.styleName),this.generationFlag!==0&&t.writeInt16(71,this.generationFlag),t.writeInt16(72,this.horizontalMode),t.writeInt16(73,this.verticalMode),t.writePoint3d(11,this.alignmentPoint),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbText");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.alignmentPoint.x,a=this.alignmentPoint.y,o=this.alignmentPoint.z,c=!1,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:n=f;break;case 30:r=f;break;case 11:s=f,c=!0;break;case 21:a=f,c=!0;break;case 31:o=f,c=!0;break;case 1:this.textString=String(d.value);break;case 7:this.styleName=String(d.value);break;case 39:this.thickness=f;break;case 40:this.height=f;break;case 41:this.widthFactor=f;break;case 50:this.rotation=T.degToRad(f);break;case 51:this.oblique=T.degToRad(f);break;case 71:this.generationFlag=f;break;case 72:this.horizontalMode=f;break;case 73:this.verticalMode=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break;case 100:{if(String(d.value)==="AcDbText")break;return t.pushBackItem(d),this.finishTextDxfIn(e,n,r,s,a,o,c,l,h,u),this}}}return this.finishTextDxfIn(e,n,r,s,a,o,c,l,h,u),this}finishTextDxfIn(t,e,n,r,s,a,o,c,l,h){this.position=new b(t,e,n),o&&!(r===0&&s===0&&a===0)?this.alignmentPoint=new b(r,s,a):this.alignmentPoint=new b(t,e,n);const u=new x(c,l,h);u.lengthSq()>0&&this.normal.copy(u.normalize())}};to.typeName="Text";let Sn=to;var mt=(i=>(i[i.Invisible=1]="Invisible",i[i.Const=2]="Const",i[i.Verifiable=4]="Verifiable",i[i.Preset=8]="Preset",i))(mt||{}),Jt=(i=>(i[i.MultiLine=2]="MultiLine",i[i.ConstMultiLine=4]="ConstMultiLine",i))(Jt||{});const eo=class eo extends Sn{get dxfTypeName(){return"ATTDEF"}constructor(){super(),this._flags=0,this._prompt="",this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&1)!==0}set isInvisible(t){t?this._flags|=1:this._flags&=-2}get prompt(){return this._prompt}set prompt(t){this._prompt=t}get isConst(){return(this._flags&2)!==0}set isConst(t){t?this._flags|=2:this._flags&=-3}get isVerifiable(){return(this._flags&4)!==0}set isVerifiable(t){t?this._flags|=4:this._flags&=-5}get isPreset(){return(this._flags&8)!==0}set isPreset(t){t?this._flags|=8:this._flags&=-9}get isMTextAttribute(){return(this._mtextFlag&2)!==0}set isMTextAttribute(t){t?this._mtextFlag|=2:this._mtextFlag&=-3}get isConstMTextAttribute(){return(this._mtextFlag&4)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=4:this._mtextFlag&=-5}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}isLooseInDrawingSpace(){const t=this.database;if(!t||!this.ownerId)return!0;const e=t.tables.blockTable.getIdAt(this.ownerId);return e?e.isModelSapce||e.isPaperSapce:!0}resolveDisplayText(){if(!this.isInvisible)return this.isLooseInDrawingSpace()?this.tag||this.textString:this.textString}subWorldDraw(t,e){const n=this.resolveDisplayText();if(n===void 0)return;if(n===this.textString)return super.subWorldDraw(t,e);const r=this.textString;this.textString=n;try{return super.subWorldDraw(t,e)}finally{this.textString=r}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttributeDefinition"),t.writeString(3,this.prompt),t.writeString(2,this.tag),t.writeInt16(70,this._flags),t.writeInt16(73,this.fieldLength),t.writeInt16(74,this.lockPositionInBlock?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttributeDefinition");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 2:this.tag=String(e.value);break;case 3:this.prompt=String(e.value);break;case 70:this.isInvisible=(r&1)!==0,this.isConst=(r&2)!==0,this.isVerifiable=(r&4)!==0,this.isPreset=(r&8)!==0;break;case 71:this.isMTextAttribute=(r&2)!==0,this.isConstMTextAttribute=(r&4)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};eo.typeName="AttDef";let rr=eo;function z0(i){return i!=null&&typeof i=="object"&&"blockTableRecord"in i}const no=class no extends Sn{get dxfTypeName(){return"ATTRIB"}get resolvedColor(){var t;if(this.color.isByBlock){const e=(t=this.database)==null?void 0:t.tables.blockTable.getEntityById(this.ownerId);if(z0(e))return e.resolvedColor}return this.resolveStandardColor()}constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&mt.Invisible)!==0}set isInvisible(t){t?this._flags|=mt.Invisible:this._flags&=~mt.Invisible}get isConst(){return(this._flags&mt.Const)!==0}set isConst(t){t?this._flags|=mt.Const:this._flags&=~mt.Const}get isVerifiable(){return(this._flags&mt.Verifiable)!==0}set isVerifiable(t){t?this._flags|=mt.Verifiable:this._flags&=~mt.Verifiable}get isPreset(){return(this._flags&mt.Preset)!==0}set isPreset(t){t?this._flags|=mt.Preset:this._flags&=~mt.Preset}get isMTextAttribute(){return(this._mtextFlag&Jt.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=Jt.MultiLine:this._mtextFlag&=~Jt.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&Jt.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=Jt.ConstMultiLine:this._mtextFlag&=~Jt.ConstMultiLine}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttribute"),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeString(2,this.tag),t.writeInt16(74,this.isReallyLocked?1:0),this.mtext&&t.writeInt16(71,this.isMTextAttribute?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttribute");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 2:this.tag=String(e.value);break;case 70:this.isInvisible=(r&mt.Invisible)!==0,this.isConst=(r&mt.Const)!==0,this.isVerifiable=(r&mt.Verifiable)!==0,this.isPreset=(r&mt.Preset)!==0;break;case 71:this.isMTextAttribute=(r&Jt.MultiLine)!==0,this.isConstMTextAttribute=(r&Jt.ConstMultiLine)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};no.typeName="Attrib";let ni=no;const V0=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0}),mc=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0,topLevel:V0(),blockMisses:[]}),yt=class yt{static get profileStats(){return this._profileStats}static resetProfile(){this._profileStats=mc(),this._drawDepth=0}static get instance(){return this._instance||(this._instance=new yt),this._instance}constructor(){this._blocks=new Map}createKey(t,e){let n=e.toString();return!n&&e.isByColor&&(n=`RGB:${e.red},${e.green},${e.blue}`),`${t}_${n}`}createCacheKey(t,e,n){return n?this.createKey(t,e):t}set(t,e){return this._blocks.set(t,e),e}get(t){const e=this._blocks.get(t);if(e){if(yt.profiling){const n=performance.now();if(this.maybeCompactTemplate(e,!0)){const c=performance.now()-n;yt._profileStats.missCompactMs+=c,yt._drawDepth===1&&(yt._profileStats.topLevel.missCompactMs+=c)}const s=performance.now(),a=e.fastDeepClone(),o=performance.now()-s;return yt._profileStats.cloneMs+=o,yt._drawDepth===1&&(yt._profileStats.topLevel.cloneMs+=o),a}return this.maybeCompactTemplate(e,!0),e.fastDeepClone()}}has(t){return this._blocks.has(t)}clear(){this._blocks.forEach(t=>{var e;(e=t.dispose)==null||e.call(t)}),this._blocks.clear()}async prebuildAll(t,e,n){const r=[];for(const l of e)!l||!l.name||this.shouldSkipPrebuild(l)||r.push(l);const s=r.length;let a=0;const o=new j().setForeground(),c=new Hr;for(const l of r){const h=this.createCacheKey(l.name,o,!1);this.has(h)||this.draw(t,l,o,[],!0),a++,n&&await n(a,s,l.name),await c.maybeYield(Ln)}}draw(t,e,n,r=[],s=!0,a,o){const c=yt.profiling;c&&yt._drawDepth++;const l=c&&yt._drawDepth===1,h=yt._profileStats,u=[];try{if(e!=null){const d=n.RGB??0,g=e.name;let f;if(g&&this.has(g))f=g;else if(g){const y=this.createKey(g,n);this.has(y)&&(f=y)}let p;if(f!==void 0){const y=c?performance.now():0;if(p=this.get(f),c){const _=performance.now()-y;h.hits++,h.hitMs+=_,l&&(h.topLevel.hits++,h.topLevel.hitMs+=_)}}else{const y=c?performance.now():0;let _=!1;const v=e.newIterator();for(const M of v)if(M.visibility)if(M.color.isByBlock){_=!0;const C=K0(M.color);try{n.isForeground?M.color.setForeground():M.color.setRGBValue(d),this.addEntity(M,u,t)}finally{M.color.copy(C),Z0(C)}}else this.addEntity(M,u,t);p=t.group(u);let w=0;c&&(w=performance.now()-y,h.missBuildMs+=w,l&&(h.topLevel.missBuildMs+=w));let A=0;const I=!!s&&!!g&&!g.startsWith("*U");if(p&&I){const M=c?performance.now():0,C=this.maybeCompactTemplate(p,!1);c&&C&&(A=performance.now()-M,h.missCompactMs+=A,l&&(h.topLevel.missCompactMs+=A))}f=this.createCacheKey(g,n,_);const S=c?h.setCloneMs:0;if(p&&I)if(q0(p),this.set(f,p),c){const M=performance.now();p=p.fastDeepClone();const C=performance.now()-M;h.setCloneMs+=C,l&&(h.topLevel.setCloneMs+=C)}else p=p.fastDeepClone();c&&(h.misses++,l&&h.topLevel.misses++,h.blockMisses.push({blockName:g||"(unnamed)",buildMs:w,compactMs:A,setCloneMs:h.setCloneMs-S}))}const m=c?performance.now():0;if(p&&a&&(Ri.copy(a),p.applyMatrix(Ri),o&&(o.x!=0||o.y!=0||o.z!=1)&&(As.setFromExtrusionDirection(o),p.applyMatrix(As),Ri.premultiply(As))),p&&r&&r.length>0){const y=a!=null?j0.copy(Ri).invert():void 0;r.forEach(_=>{y&&_.applyMatrix(y),p.addChild(_)})}if(c){const y=performance.now()-m;h.applyMs+=y,l&&(h.topLevel.applyMs+=y)}return p}else return t.group(u)}finally{c&&yt._drawDepth--}}shouldSkipPrebuild(t){const e=t.name;if(nt.isModelSapceName(e)||nt.isPaperSapceName(e)||e.startsWith("*U")||this.blockHasByBlockColor(t))return!0;for(const n of t.newIterator())if(n.visibility)return!1;return!0}blockHasByBlockColor(t){for(const e of t.newIterator())if(e.visibility&&e.color.isByBlock)return!0;return!1}addEntity(t,e,n){if(!t.visibility)return;const r=t.worldDraw(n);r&&(this.attachEntityInfo(r,t),e.push(r))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}maybeCompactTemplate(t,e){return!t.compactForInstancing||W0(t)||!$0(t,e)?!1:(t.compactForInstancing(),!0)}};yt.profiling=!1,yt._profileStats=mc(),yt._drawDepth=0;let De=yt;const Ri=new F,As=new F,j0=new F,G0=8,U0=32,Uh=[];function H0(i){const t=i.childCount;return typeof t=="number"?t:Number.POSITIVE_INFINITY}function W0(i){return i.isCompacted===!0}function $0(i,t){const e=H0(i);return e<G0?!1:e>=U0?!0:t}function q0(i){const t=i.prepareCacheTemplate;typeof t=="function"&&t.call(i)}function K0(i){const t=Uh.pop()??new j;return t.copy(i),t}function Z0(i){Uh.push(i)}const Q0=1e-10;function Dt(i,t,e){const n=t?i.length:i.length-1;if(n<1||i.length<2)return[];const r=[];for(let s=0;s<n;s++){const a=i[s],o=i[(s+1)%i.length];if(Qr(a,o))continue;const c=!t&&(s===0||s===n-1);r.push({kind:"line",line:new Ct(a,o),extent:"bounded",extendable:e??c})}return r}function za(i,t,e,n){const r=t?i.length:i.length-1;if(r<1||i.length<2)return[];const s=[];for(let a=0;a<r;a++){const o=i[a],c=i[(a+1)%i.length],h=!t&&(a===0||a===r-1),u=o.bulge??0;if(Math.abs(u)>Q0){const f=Wh(new it(o,c,u),e,n,h);f&&s.push(f);continue}const d=ve(o.x,o.y,e,n),g=ve(c.x,c.y,e,n);Qr(d,g)||s.push({kind:"line",line:new Ct(d,g),extent:"bounded",extendable:h})}return s}function J0(i,t,e){const n=[];for(const r of i){if(r instanceof Q){n.push(...za(r.vertices,r.closed,t,e));continue}if(r instanceof pn)for(const s of r.curves){const a=tm(s,t,e);a&&n.push(...a)}}return n}function Hh(i,t){return i.map(e=>Xf(e,t))}function tm(i,t,e){if(i instanceof Gt){const n=ve(i.startPoint.x,i.startPoint.y,t,e),r=ve(i.endPoint.x,i.endPoint.y,t,e);return Qr(n,r)?[]:[{kind:"line",line:new Ct(n,r),extent:"bounded",extendable:!1}]}if(i instanceof it){const n=Wh(i,t,e,!1);return n?[n]:[]}if(i instanceof pe){const n=em(i,t,e,!1);return n?[n]:[]}if(i instanceof Ut){const n=i.clone(),r=nm(t,e);return r&&n.transform(r),[{kind:"spline",spline:n,extendable:!1}]}return[]}function Wh(i,t,e,n){if(i.closed||Math.abs(i.deltaAngle-V)<1e-10){const c=ve(i.center.x,i.center.y,t,e);return{kind:"circArc",arc:new St(c,i.radius,0,V,e,Fe(e)),extendable:!1}}const r=ve(i.startPoint.x,i.startPoint.y,t,e),s=ve(i.endPoint.x,i.endPoint.y,t,e),a=ve(i.midPoint.x,i.midPoint.y,t,e),o=St.tryCreateByThreePoints(r,s,a);return o?{kind:"circArc",arc:o,extendable:n&&!o.closed}:Qr(r,s)?null:{kind:"line",line:new Ct(r,s),extent:"bounded",extendable:n}}function em(i,t,e,n){const r=ve(i.center.x,i.center.y,t,e),s=new F().setFromExtrusionDirection(new x(e.x,e.y,e.z)),a=new x(Math.cos(i.rotation),Math.sin(i.rotation),0).transformDirection(s);if(a.lengthSq()===0)return null;const o=i.clockwise?i.endAngle:i.startAngle,c=i.clockwise?i.startAngle:i.endAngle,l=new he(r,e,a,i.majorAxisRadius,i.minorAxisRadius,o,c);return{kind:"ellipseArc",arc:l,extendable:n&&!l.closed&&Math.abs(l.deltaAngle-V)>1e-10}}function ve(i,t,e,n){return _t({x:i,y:t,z:e},n)}function nm(i,t){if(Math.abs(t.x)<1e-10&&Math.abs(t.y)<1e-10&&Math.abs(t.z-1)<1e-10&&Math.abs(i)<1e-10)return null;const n=new F().setFromExtrusionDirection(new x(t.x,t.y,t.z));return Math.abs(i)<1e-10?n:n.multiply(new F().makeTranslation(0,0,i))}function Qr(i,t){const e=i.x-t.x,n=i.y-t.y,r=(i.z??0)-(t.z??0);return e*e+n*n+r*r<1e-20}const hn=class hn extends q{constructor(t){super(),this._columnCount=1,this._rowCount=1,this._columnSpacing=0,this._rowSpacing=0,this._blockName=t??"",this._position=new b,this._rotation=0,this._normal=new x(0,0,1),this._scaleFactors=new b(1,1,1),this._attribs=new Map}get dxfTypeName(){return"INSERT"}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 blockName(){return this._blockName}set blockName(t){this._blockName=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=Math.max(1,Math.floor(t)||1)}get rowCount(){return this._rowCount}set rowCount(t){this._rowCount=Math.max(1,Math.floor(t)||1)}get columnSpacing(){return this._columnSpacing}set columnSpacing(t){this._columnSpacing=t}get rowSpacing(){return this._rowSpacing}set rowSpacing(t){this._rowSpacing=t}get blockTableRecord(){if(this._blockName)return this.database.tables.blockTable.getAt(this._blockName)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId,this.syncAttributeDatabases()}syncAttributeDatabases(){try{const t=this.database,e=new Map;this._attribs.forEach(n=>{n.database=t,n.ownerId=this.objectId,t.commitObjectHandle(n),e.set(n.objectId,n)}),this._attribs=e}catch{}}attributeIterator(){return new kn(this._attribs)}get blockTransform(){const t=this.blockTableRecord,e=(t==null?void 0:t.origin)??b.ORIGIN,n=new F().makeTranslation(-e.x,-e.y,-e.z),r=new F().makeScale(this._scaleFactors.x,this._scaleFactors.y,this._scaleFactors.z),s=new _n().setFromAxisAngle(x.Z_AXIS,this._rotation),a=new F().makeRotationFromQuaternion(s),o=new F().makeTranslation(this._position.x,this._position.y,this._position.z);return new F().multiplyMatrices(o,a).multiply(r).multiply(n)}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return ue(t,e,this._position),this}subGetOsnapPoints(t,e,n,r,s,a){const o=a??new F;k.Insertion===t?r.push(this.getInsertionPoint(o)):s?this.subEntityGetOsnapPoints(t,e,n,r,s,o):this.collectBlockOsnapPoints(t,e,n,r,o)}transformBy(t){const e=new F().setFromExtrusionDirection(this._normal),n=new F().makeRotationZ(this._rotation),r=new F().multiplyMatrices(e,n),s=this._position.clone(),a=new b(this._scaleFactors.x,0,0).applyMatrix4(r).add(s),o=new b(0,this._scaleFactors.y,0).applyMatrix4(r).add(s),c=new b(0,0,this._scaleFactors.z).applyMatrix4(r).add(s);s.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x(a).sub(s),h=new x(o).sub(s),u=new x(c).sub(s);let d=new x().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new F().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f);return this._position.copy(s),this._normal.copy(d),this._rotation=Math.atan2(p.y,p.x),this._scaleFactors.set(l.length(),h.length(),u.length()),this._attribs.forEach(m=>m.transformBy(t)),this}get properties(){const t={type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"blockName",type:"float",editable:!1,accessor:{get:()=>this._blockName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:e=>{this.position.x=e}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:e=>{this.position.y=e}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:e=>{this.position.z=e}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:e=>{this.rotation=e}}},{name:"scaleFactorsX",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.x,set:e=>{this.scaleFactors.x=e}}},{name:"scaleFactorsY",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.y,set:e=>{this.scaleFactors.y=e}}},{name:"scaleFactorsZ",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.z,set:e=>{this.scaleFactors.z=e}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:e=>{this.normal.x=e}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:e=>{this.normal.y=e}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:e=>{this.normal.z=e}}}]}]};if(this._attribs.size>0){const e={groupName:"attribute",properties:[]};t.groups.push(e),this._attribs.forEach(n=>{e.properties.push({name:n.tag,type:"string",editable:!n.isConst,skipTranslation:!0,accessor:{get:()=>n.textString,set:r=>{n.textString=r}}})})}return t}get geometricExtents(){const t=new z,e=this.blockTableRecord;if(e!=null){const r=e.newIterator();for(const s of r)t.union(s.geometricExtents)}const n=this.blockTransform;return t.applyMatrix4(n),t}subGetIntersectCurves(){const t=this.blockTableRecord;if(t==null)return[];const e=[],n=Math.max(1,this.columnCount),r=Math.max(1,this.rowCount);for(let s=0;s<r;s++)for(let a=0;a<n;a++){const o=new F().makeTranslation(a*this.columnSpacing,s*this.rowSpacing,0),c=new F().multiplyMatrices(this.getFullInsertionTransform(),o);for(const l of t.newIterator())e.push(...Hh(l.subGetIntersectCurves(),c))}return e}subWorldDraw(t){const e=this.blockTableRecord;if(e!=null){const n=[];this._attribs.forEach(o=>{if(!o.isInvisible){const c=o.worldDraw(t);c&&n.push(c)}});const r=Math.max(1,this.columnCount),s=Math.max(1,this.rowCount);if(r===1&&s===1)return De.instance.draw(t,e,this.resolvedColor,n,!0,this.blockTransform,this._normal);const a=[];for(let o=0;o<s;o++)for(let c=0;c<r;c++){const l=new F().makeTranslation(c*this.columnSpacing,o*this.rowSpacing,0),h=new F().multiplyMatrices(this.blockTransform,l),u=De.instance.draw(t,e,this.resolvedColor,c===0&&o===0?n:[],!0,h,this._normal);u&&a.push(u)}return t.group(a)}else return t.group([])}dxfOut(t,e=!1){super.dxfOut(t,e);let n=!1;for(const r of this.attributeIterator())n=!0,t.writeStart("ATTRIB"),r.dxfOut(t,e);return n&&(t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity")),this}collectBlockOsnapPoints(t,e,n,r,s){const a=this.blockTableRecord;if(!a)return;const o=new F().multiplyMatrices(s,this.getFullInsertionTransform()),c=o.clone().invert(),l=new b(e).applyMatrix4(c),h=new b(n).applyMatrix4(c),u=[];for(const d of a.newIterator()){const g=[];if(d instanceof hn){d.subGetOsnapPoints(t,e,n,g,void 0,o),u.push(...g);continue}d.subGetOsnapPoints(t,l,h,g,void 0,o),g.forEach(f=>u.push(new b(f).applyMatrix4(o)))}if(u.length!==0)if(t===k.Nearest||t===k.Perpendicular||t===k.Tangent){const d=$t(e,u);d&&r.push(d)}else r.push(...u)}subEntityGetOsnapPoints(t,e,n,r,s,a,o=new Set){if(s===this.objectId||o.has(this.objectId))return!1;o.add(this.objectId);try{const c=this.blockTableRecord;if(c==null)return!1;const l=new F().multiplyMatrices(a,this.getFullInsertionTransform());for(const h of c.newIterator()){if(h.objectId===s){const u=new b(e).applyMatrix4(l.clone().invert()),d=new b(n).applyMatrix4(l.clone().invert()),g=[];return h.subGetOsnapPoints(t,u,d,g,s,l),h instanceof hn?g.forEach(f=>{r.push(f.clone())}):g.forEach(f=>{r.push(new b(f).applyMatrix4(l))}),!0}if(h instanceof hn&&h.subEntityGetOsnapPoints(t,e,n,r,s,l,o))return!0}return!1}finally{o.delete(this.objectId)}}getInsertionPoint(t){var r;const e=((r=this.blockTableRecord)==null?void 0:r.origin)??b.ORIGIN,n=new F().multiplyMatrices(t,this.getFullInsertionTransform());return new b(e).applyMatrix4(n)}getFullInsertionTransform(){const t=new F().setFromExtrusionDirection(this._normal);return new F().multiplyMatrices(t,this.blockTransform)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockReference"),t.writePoint3d(10,this.position),t.writeString(2,this.blockName),t.writeDouble(41,this.scaleFactors.x),t.writeDouble(42,this.scaleFactors.y),t.writeDouble(43,this.scaleFactors.z),t.writeAngle(50,this.rotation),this.columnCount>1&&t.writeInt16(70,this.columnCount),this.rowCount>1&&t.writeInt16(71,this.rowCount),this.columnSpacing!==0&&t.writeDouble(44,this.columnSpacing),this.rowSpacing!==0&&t.writeDouble(45,this.rowSpacing),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbBlockReference");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.scaleFactors.x,a=this.scaleFactors.y,o=this.scaleFactors.z,c=T.radToDeg(this.rotation),l=this.normal.x,h=this.normal.y,u=this.normal.z,d=this.columnCount,g=this.rowCount,f=this.columnSpacing,p=this.rowSpacing;const m=()=>{this.position=new b(e,n,r),this.scaleFactors=new b(s,a,o),this.rotation=T.degToRad(c),this.normal.copy(new x(l,h,u)),this.columnCount=d>0?d:1,this.rowCount=g>0?g:1,this.columnSpacing=f,this.rowSpacing=p};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const _=Number(y.code),v=Number(y.value);switch(_){case 10:e=v;break;case 20:n=v;break;case 30:r=v;break;case 2:this.blockName=String(y.value);break;case 41:s=v;break;case 42:a=v;break;case 43:o=v;break;case 44:f=v;break;case 45:p=v;break;case 50:c=v;break;case 66:break;case 70:d=v;break;case 71:g=v;break;case 210:l=v;break;case 220:h=v;break;case 230:u=v;break;case 100:return t.pushBackItem(y),m(),this}}return m(),this}};hn.typeName="BlockReference";let ce=hn;const yc=[0,Math.PI/2,Math.PI,Math.PI/2*3],Dr=class Dr extends At{constructor(t,e,n=x.Z_AXIS){super(),this._thickness=0;const r=Fe(n);this._geo=new St(t,e,0,V,n,r)}get dxfTypeName(){return"CIRCLE"}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 thickness(){return this._thickness}set thickness(t){this._thickness=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"circArc",arc:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}subGetOsnapPoints(t,e,n,r){switch(t){case k.Center:case k.Centroid:r.push(this._geo.center);break;case k.Quadrant:r.push(this._geo.getPointAtAngle(0)),r.push(this._geo.getPointAtAngle(Math.PI/2)),r.push(this._geo.getPointAtAngle(Math.PI)),r.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case k.Nearest:{const s=this._geo.nearestPoint(e);r.push(s)}break;case k.Tangent:{const s=this._geo.tangentPoints(e);r.push(...s);break}case k.Perpendicular:{const s=this._geo.perpendicularPoints(e),a=$t(e,s);a&&r.push(a);break}}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"diameter",type:"float",editable:!1,accessor:{get:()=>this._geo.radius*2}},{name:"perimeter",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){const t=new Array;t.push(this.center);for(const e of yc)t.push(this._geo.getPointAtAngle(e));return t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGripAt(n,e)}),this}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t);const e=Bt(this.center,this.normal);return t.writeSubclassMarker("AcDbCircle"),t.writePoint3d(10,e),t.writeDouble(40,this.radius),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbCircle");let e=0,n=0,r=0,s=this.radius,a=this.normal.x,o=this.normal.y,c=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const l=t.readItem();if(!l)break;const h=Number(l.code),u=Number(l.value);switch(h){case 10:e=u;break;case 20:n=u;break;case 30:r=u;break;case 40:s=u;break;case 39:this.thickness=u;break;case 210:a=u;break;case 220:o=u;break;case 230:c=u;break}}return this.applyDxfInGeometry(e,n,r,s,a,o,c),this}applyDxfInGeometry(t,e,n,r,s,a,o){const c=new x(s,a,o);this._geo.normal=c,this._geo.refVec=Fe(this._geo.normal),this.center=_t({x:t,y:e,z:n},this.normal),this.radius=r}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,n=this.radius;return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)>=n?1:-1}createOffsetCurve(t){const e=this._geo.offset(t);return e?new Dr(e.center,e.radius,e.normal):null}moveGripAt(t,e){switch(t){case 0:this.transformBy(F.makeTranslation(e));break;case 1:case 2:case 3:case 4:{const n=yc[t-1],r=this._geo.getPointAtAngle(n),a=new b(r.x+e.x,r.y+e.y,(r.z??0)+(e.z??0)).distanceTo(this.center);a>0&&(this.radius=a);break}}}};Dr.typeName="Circle";let sr=Dr;const Rn=[0,Math.PI/2,Math.PI,Math.PI/2*3],Yr=class Yr extends At{get dxfTypeName(){return"ELLIPSE"}constructor(t,e,n,r,s,a,o){super(),this._geo=new he(t,e,n,r,s,a,o)}get center(){return this._geo.center}set center(t){this._geo.center=t}get majorAxis(){return this._geo.majorAxis}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 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 normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"ellipseArc",arc:this._geo.clone(),extendable:!this.closed}]}get closed(){return this._geo.closed||Math.abs(this._geo.deltaAngle-V)<1e-10}get area(){return this._geo.area}subGetGripPoints(){const t=new Array;if(t.push(this._geo.center),this.closed)for(const e of Rn)t.push(this._geo.getPointAtAngle(e));else t.push(this._geo.startPoint),t.push(this._geo.endPoint);return t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGripAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){switch(t){case k.EndPoint:this.closed||(r.push(this._geo.startPoint),r.push(this._geo.endPoint));break;case k.MidPoint:this.closed||r.push(this._geo.midPoint);break;case k.Center:case k.Centroid:r.push(this._geo.center);break;case k.Quadrant:if(this.closed)for(const s of Rn)r.push(this._geo.getPointAtAngle(s));break;case k.Nearest:r.push(this._geo.nearestPoint(e));break;case k.Tangent:r.push(...this._geo.tangentPoints(e));break;case k.Perpendicular:{const s=this._geo.perpendicularPoints(e),a=$t(e,s);a&&r.push(a);break}}}transformBy(t){return this._geo.transform(t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"majorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.majorAxisRadius,set:t=>{this.center.x=t}}},{name:"minorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.minorAxisRadius,set:t=>{this.minorAxisRadius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.ellipticalArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbEllipse"),t.writePoint3d(10,this.center);const e=this._geo.majorAxis,n=this.majorAxisRadius;return t.writePoint3d(11,{x:e.x*n,y:e.y*n,z:e.z*n}),t.writeVector3d(210,this.normal),t.writeDouble(40,this.minorAxisRadius/this.majorAxisRadius),t.writeDouble(41,this.startAngle),t.writeDouble(42,this.endAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbEllipse");let e=this.center.x,n=this.center.y,r=this.center.z,s=this.majorAxis.x*this.majorAxisRadius,a=this.majorAxis.y*this.majorAxisRadius,o=this.majorAxis.z*this.majorAxisRadius,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=this.majorAxisRadius>0?this.minorAxisRadius/this.majorAxisRadius:1,d=this.startAngle,g=this.endAngle;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const f=t.readItem();if(!f)break;const p=Number(f.code),m=Number(f.value);switch(p){case 10:e=m;break;case 20:n=m;break;case 30:r=m;break;case 11:s=m;break;case 21:a=m;break;case 31:o=m;break;case 210:c=m;break;case 220:l=m;break;case 230:h=m;break;case 40:u=m;break;case 41:d=m;break;case 42:g=m;break}}return this.applyDxfInGeometry(e,n,r,s,a,o,c,l,h,u,d,g),this}applyDxfInGeometry(t,e,n,r,s,a,o,c,l,h,u,d){const g=Math.hypot(r,s,a)||1;this._geo=new he({x:t,y:e,z:n},{x:o,y:c,z:l},{x:r,y:s,z:a},g,g*h,u,d)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,n=t.x-e.x,r=t.y-e.y,s=this.majorAxis,a=Math.hypot(s.x,s.y)||1,o=this.minorAxisRadius/this.majorAxisRadius*a||1,c=s.x/a,l=s.y/a,h=-l,u=c,d=n*c+r*l,g=n*h+r*u;return(d/a)**2+(g/o)**2>=1?1:-1}moveGripAt(t,e){switch(t){case 0:this.transformBy(F.makeTranslation(e));break;case 1:if(this.closed)this.moveQuadrantGripAt(Rn[0],e);else{const n=this._geo.startPoint;this._geo.startAngle=ye(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal)}break;case 2:if(this.closed)this.moveQuadrantGripAt(Rn[1],e);else{const n=this._geo.endPoint;this._geo.endAngle=ye(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal)}break;case 3:case 4:this.closed&&this.moveQuadrantGripAt(Rn[t-1],e);break}}moveQuadrantGripAt(t,e){const n=this._geo.getPointAtAngle(t),r=new b(n.x+e.x,n.y+e.y,(n.z??0)+(e.z??0)),s=this._geo.center,a=r.x-s.x,o=r.y-s.y,c=(r.z??0)-(s.z??0),l=t===0||t===Math.PI?this._geo.majorAxis:this._geo.minorAxis,h=a*l.x+o*l.y+c*l.z,u=Math.abs(h);u<=0||(t===0||t===Math.PI?this.majorAxisRadius=u:this.minorAxisRadius=u)}createOffsetCurve(t){const e=this._geo.offset(t);return e?new Yr(e.center,e.normal,e.majorAxis,e.majorAxisRadius,e.minorAxisRadius,e.startAngle,e.endAngle):null}};Yr.typeName="Ellipse";let ar=Yr;const io=class io extends q{get dxfTypeName(){return"3DFACE"}constructor(){super(),this._vertices=[new b,new b,new b],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 b),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 z().setFromPoints(this._vertices)}subGetIntersectCurves(){return Dt(this._vertices,!0)}get area(){const t=[this.getVertexAt(0),this.getVertexAt(1),this.getVertexAt(2)],e=this.getVertexAt(3);return(e.x!==t[2].x||e.y!==t[2].y||e.z!==t[2].z)&&t.push(e),wl(t)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return Mn(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){Zr(this._vertices,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this}get directBatchPrimitive(){return"lineSegments"}subWorldDraw(t){const e=this._vertices.length,n=new Float32Array(e*3),r=new Uint16Array(e*2);for(let s=0;s<e;s++)n[s*3]=this._vertices[s].x,n[s*3+1]=this._vertices[s].y,n[s*3+2]=this._vertices[s].z,this.isEdgeVisibleAt(s)&&(r[s*2]=s,r[s*2+1]=(s+1)%4);return t.lineSegments(n,3,r)}dxfOutFields(t){super.dxfOutFields(t);const e=this.getVertexAt(0),n=this.getVertexAt(1),r=this.getVertexAt(2),s=this.getVertexAt(3);t.writeSubclassMarker("AcDbFace"),t.writePoint3d(10,e),t.writePoint3d(11,n),t.writePoint3d(12,r),t.writePoint3d(13,s);let a=0;for(let o=0;o<4;++o)this.isEdgeVisibleAt(o)||(a|=1<<o);return t.writeInt16(70,a),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFace");const e=[0,1,2,3].map(r=>{const s=this._vertices[r];return s?{x:s.x,y:s.y,z:s.z}:{x:0,y:0,z:0}});let n=this._edgeInvisibilities;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),a=Number(r.value);switch(s){case 10:case 11:case 12:case 13:e[s-10].x=a;break;case 20:case 21:case 22:case 23:e[s-20].y=a;break;case 30:case 31:case 32:case 33:e[s-30].z=a;break;case 70:n=a;break}}return e.forEach((r,s)=>this.setVertexAt(s,r)),this._edgeInvisibilities=n,this}};io.typeName="Face";let or=io;var Tt=(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))(Tt||{}),ot=(i=>(i[i.Scientific=1]="Scientific",i[i.Decimal=2]="Decimal",i[i.Engineering=3]="Engineering",i[i.Architectural=4]="Architectural",i[i.Fractional=5]="Fractional",i[i.WindowsDesktop=6]="WindowsDesktop",i))(ot||{}),et=(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))(et||{});function im(i){return i==4||i==5||i==6||i==7||i==12||i==13||i==14||i==15||i==16||i==17}function rm(i){return i==1||i==2||i==3||i==8||i==9||i==10||i==21}const E={ACADVER:"ACADVER",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",AUPREC:"AUPREC",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELTYPE:"CELTYPE",CELWEIGHT:"CELWEIGHT",CETRANSPARENCY:"CETRANSPARENCY",CLAYER:"CLAYER",CMLEADERSTYLE:"CMLEADERSTYLE",CMLSCALE:"CMLSCALE",CMLSTYLE:"CMLSTYLE",COLORTHEME:"COLORTHEME",DYNMODE:"DYNMODE",DYNPROMPT:"DYNPROMPT",DWGNAME:"DWGNAME",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",GRIPCOLOR:"GRIPCOLOR",GRIPHOT:"GRIPHOT",GRIPOBJLIMIT:"GRIPOBJLIMIT",GRIPS:"GRIPS",GRIPSIZE:"GRIPSIZE",HPANG:"HPANG",HPASSOC:"HPASSOC",HPBACKGROUNDCOLOR:"HPBACKGROUNDCOLOR",HPCOLOR:"HPCOLOR",HPDOUBLE:"HPDOUBLE",HPISLANDDETECTION:"HPISLANDDETECTION",HPLAYER:"HPLAYER",HPNAME:"HPNAME",HPSCALE:"HPSCALE",HPSEPARATE:"HPSEPARATE",HPTRANSPARENCY:"HPTRANSPARENCY",INSUNITS:"INSUNITS",LOGINNAME:"LOGINNAME",LTSCALE:"LTSCALE",LUNITS:"LUNITS",LUPREC:"LUPREC",LWDISPLAY:"LWDISPLAY",MEASUREMENT:"MEASUREMENT",MEASUREMENTCOLOR:"MEASUREMENTCOLOR",MODELBKCOLOR:"MODELBKCOLOR",OSMODE:"OSMODE",ORTHOMODE:"ORTHOMODE",OPENPROF:"OPENPROF",PAPERBKCOLOR:"PAPERBKCOLOR",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",POLARADDANG:"POLARADDANG",POLARMODE:"POLARMODE",POLARANG:"POLARANG",SHORTCUTMENU:"SHORTCUTMENU",TEXTSTYLE:"TEXTSTYLE",DIMSTYLE:"DIMSTYLE",UNITMODE:"UNITMODE"},sm=Object.freeze(Object.values(E));function am(){try{const i=typeof process<"u"&&process.env?process.env:void 0;if(!i)return"";const t=i.USERNAME||i.USER||i.LOGNAME||"";return typeof t=="string"?t.trim():""}catch{return""}}const Xr=class Xr{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new lt},this.registerVar({name:E.ANGBASE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:E.ANGDIR,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:E.AUNITS,type:"number",isDbVar:!0,defaultValue:Tt.DecimalDegrees}),this.registerVar({name:E.AUPREC,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:E.CECOLOR,type:"color",isDbVar:!0,defaultValue:new j(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:E.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:E.CELTYPE,type:"string",isDbVar:!0,defaultValue:dt}),this.registerVar({name:E.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:exports.AcGiLineWeight.ByLayer}),this.registerVar({name:E.CETRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new ht}),this.registerVar({name:E.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:E.CMLEADERSTYLE,type:"string",isDbVar:!0,defaultValue:we}),this.registerVar({name:E.CMLSCALE,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:E.CMLSTYLE,type:"string",isDbVar:!0,defaultValue:xe}),this.registerVar({name:E.COLORTHEME,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:E.DYNMODE,type:"number",isDbVar:!1,defaultValue:3}),this.registerVar({name:E.DYNPROMPT,type:"boolean",isDbVar:!1,defaultValue:!0}),this.registerVar({name:E.DWGNAME,type:"string",isDbVar:!0,readOnly:!0,defaultValue:"Drawing1.dwg"}),this.registerVar({name:E.GRIPCOLOR,type:"number",isDbVar:!1,defaultValue:mh}),this.registerVar({name:E.GRIPHOT,type:"number",isDbVar:!1,defaultValue:yh}),this.registerVar({name:E.GRIPOBJLIMIT,type:"number",isDbVar:!1,defaultValue:100}),this.registerVar({name:E.GRIPS,type:"number",isDbVar:!1,defaultValue:2}),this.registerVar({name:E.GRIPSIZE,type:"number",isDbVar:!1,defaultValue:bh}),this.registerVar({name:E.HPANG,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:E.HPASSOC,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:E.HPBACKGROUNDCOLOR,type:"color",isDbVar:!0,defaultValue:new j(exports.AcCmColorMethod.None)}),this.registerVar({name:E.HPCOLOR,type:"color",isDbVar:!0,defaultValue:new j(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:E.HPDOUBLE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:E.HPISLANDDETECTION,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:E.HPLAYER,type:"string",isDbVar:!0,defaultValue:"."}),this.registerVar({name:E.HPNAME,type:"string",isDbVar:!1,defaultValue:gh}),this.registerVar({name:E.HPSCALE,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:E.HPSEPARATE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:E.HPTRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new ht}),this.registerVar({name:E.INSUNITS,type:"number",isDbVar:!0,defaultValue:et.Millimeters}),this.registerVar({name:E.LOGINNAME,type:"string",isDbVar:!1,readOnly:!0,defaultValue:am()}),this.registerVar({name:E.LUNITS,type:"number",isDbVar:!0,defaultValue:ot.Decimal}),this.registerVar({name:E.LUPREC,type:"number",isDbVar:!0,defaultValue:4}),this.registerVar({name:E.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:E.MEASUREMENT,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:E.MEASUREMENTCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new j(exports.AcCmColorMethod.ByColor);return t.setRGB(96,165,250),t})()}),this.registerVar({name:E.MODELBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new j(exports.AcCmColorMethod.ByColor);return t.setRGB(0,0,0),t})()}),this.registerVar({name:E.OSMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:E.ORTHOMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:E.OPENPROF,type:"boolean",isDbVar:!1,defaultValue:!1}),this.registerVar({name:E.PAPERBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new j(exports.AcCmColorMethod.ByColor);return t.setRGB(255,255,255),t})()}),this.registerVar({name:E.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:E.POLARADDANG,type:"string",isDbVar:!1,defaultValue:""}),this.registerVar({name:E.POLARMODE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:E.POLARANG,type:"number",isDbVar:!1,defaultValue:90}),this.registerVar({name:E.SHORTCUTMENU,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:E.TEXTSTYLE,type:"string",isDbVar:!0,defaultValue:st}),this.registerVar({name:E.UNITMODE,type:"number",isDbVar:!0,defaultValue:0})}static instance(){return this._instance||(this._instance=new Xr),this._instance}registerVar(t){const e=this.normalizeName(t.name);this.registry.set(e,{...t,name:e}),t.isDbVar||this.cache.set(e,t.defaultValue)}registerMany(t){t.forEach(e=>this.registerVar(e))}setLoginName(t){const e=this.normalizeName(E.LOGINNAME);this.cache.set(e,t.trim())}getVar(t,e){t=this.normalizeName(t);const n=this.getDescriptor(t);if(!n)throw new Error(`System variable ${t} not found!`);if(n.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}getDefaultValue(t){t=this.normalizeName(t);const e=this.getDescriptor(t);if(!e)throw new Error(`System variable ${t} not found!`);return e.defaultValue}applyVarMutation(t,e,n,r,s){const a=this.normalizeName(t);if(this.hasValueChanged(e,n)){if(r.transactionManager.isRecording())r.transactionManager.recordSysvar(a,e);else if(r.transactionManager.strictMode&&!r.transactionManager.isApplyingUndoRedo())throw new Error(`Cannot change system variable ${a} outside an active transaction.`);s(),!r.transactionManager.isApplyingUndoRedo()&&!r.transactionManager.isRecording()&&this.events.sysVarChanged.dispatch({database:r,name:a,newVal:n,oldVal:e})}}setVar(t,e,n){t=this.normalizeName(t);const r=this.getDescriptor(t);if(r){if(r.readOnly)throw new Error(`System variable ${t} is read-only!`);const s=this.getVar(t,n);if(r.type==="transparency"){const a=this.parseTransparency(e);if(a==null||a.isInvalid)throw new Error("Invalid transparency value!");e=a}else if(r.type!=="string"&&(typeof e=="string"||e instanceof String)){if(r.type==="number"){const a=Number(e);if(Number.isNaN(a))throw new Error("Invalid number input!");e=a}else if(r.type==="boolean")e=this.parseBoolean(e);else if(r.type==="color"){const a=this.parseColorSysVar(t,e,n);if(a==null)throw new Error("Invalid color value!");e=a}}if(t===E.GRIPCOLOR.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<$s||a>qs)throw new Error(`Invalid GRIPCOLOR value! Valid range is ${$s} to ${qs}.`);e=a}if(t===E.GRIPHOT.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<Ks||a>Zs)throw new Error(`Invalid GRIPHOT value! Valid range is ${Ks} to ${Zs}.`);e=a}if(t===E.GRIPOBJLIMIT.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<0||a>32767)throw new Error("Invalid GRIPOBJLIMIT value! Valid range is 0 to 32767.");e=a}if(t===E.GRIPS.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<0||a>2)throw new Error("Invalid GRIPS value! Valid range is 0 to 2.");e=a}if(t===E.GRIPSIZE.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<Qs||a>Js)throw new Error(`Invalid GRIPSIZE value! Valid range is ${Qs} to ${Js}.`);e=a}r.isDbVar?this.applyVarMutation(t,s,e,n,()=>{n[t.toLowerCase()]=e}):this.applyVarMutation(t,s,e,n,()=>{this.cache.set(t,e)})}else throw new Error(`System variable ${t} not found!`)}getDescriptor(t){return this.registry.get(this.normalizeName(t))}getAllDescriptors(){return[...this.registry.values()]}parseBoolean(t){if(t==null)return!1;const e=String(t).trim().toLowerCase(),n=new Set(["true","t","1","yes","y"]),r=new Set(["false","f","0","no","n"]);return n.has(e)?!0:(r.has(e),!1)}parseColorSysVar(t,e,n){const r=e.trim().toLowerCase();return t===E.HPCOLOR.toLowerCase()&&(r==="."||r==="use current")?n.cecolor.clone():t===E.HPBACKGROUNDCOLOR.toLowerCase()&&(r===""||r==="."||r==="none")?new j(exports.AcCmColorMethod.None):j.fromString(e)}parseTransparency(t){if(t instanceof ht)return t;if(typeof t=="number")return ht.deserialize(t);if(!(typeof t!="string"&&!(t instanceof String)))return ht.fromString(String(t))}hasValueChanged(t,e){return t instanceof j&&e instanceof j||t instanceof ht&&e instanceof ht?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Xr._instance=null;let bt=Xr;const $h="Load Database",bc=3e4,om=12e4,cm=1024*1024;class Ot extends Hc{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=pa.getInstance().getEntry($h),n=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const r=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",r?r.data:null),this.data.progress.value+=this.data.step,this.data.progress.value>100&&(this.data.progress.value=100)),e&&(e.data[this.name]=Date.now()-n),r}}class Va{constructor(t={}){this.config={useWorker:t.useWorker??!0,...t}}async read(t,e,n={}){const{minimumChunkSize:r=10,progress:s,timeout:a,sysVars:o}=n,c={name:$h,data:{total:0},format(){let d="";return Object.keys(this.data).forEach(g=>{g!=="total"&&(d+=`- ${g}: ${this.data[g]} ms
|
|
10
|
-
`)}),d+=`- total: ${this.data.total} ms`,d}};pa.getInstance().collect(c),this.progress=s;const l={value:0},h=new Wc;h.setCompleteCallback(()=>this.onFinished()),h.setErrorCallback(d=>this.onError(d)),h.addTask(new Ot({stage:"START",step:1,progress:l,task:async d=>d},s)),h.addTask(new Ot({stage:"PARSE",step:5,progress:l,task:async d=>await this.parse(d,a)},s)),h.addTask(new Ot({stage:"LTYPE",step:1,progress:l,task:async d=>(this.processLineTypes(d.model,e),d)},s)),h.addTask(new Ot({stage:"STYLE",step:1,progress:l,task:async d=>(this.processTextStyles(d.model,e),d)},s)),h.addTask(new Ot({stage:"DIMSTYLE",step:1,progress:l,task:async d=>(this.processDimStyles(d.model,e),d)},s)),h.addTask(new Ot({stage:"LAYER",step:1,progress:l,task:async d=>(this.processLayers(d.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),d)},s)),h.addTask(new Ot({stage:"VPORT",step:1,progress:l,task:async d=>(this.processViewports(d.model,e),d)},s)),h.addTask(new Ot({stage:"HEADER",step:1,progress:l,task:async d=>{if(this.processClasses(d.model,e),this.processHeader(d.model,e),o){const g=bt.instance();for(const[f,p]of Object.entries(o))g.setVar(f,p,e)}return d}},s)),h.addTask(new Ot({stage:"BLOCK_RECORD",step:5,progress:l,task:async d=>(this.processBlockTables(d.model,e),d)},s)),h.addTask(new Ot({stage:"OBJECT",step:5,progress:l,task:async d=>(this.processObjects(d.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),d)},s)),h.addTask(new Ot({stage:"BLOCK",step:5,progress:l,task:async d=>(await this.processBlocks(d.model,e),d)},s)),h.addTask(new Ot({stage:"ENTITY",step:100,progress:l,task:async d=>(await this.processEntities(d.model,e,r,l,s),d)},s)),h.addTask(new Ot({stage:"END",step:0,progress:l,task:async d=>d},s));const u=Date.now();await h.run(t),c.data.total=Date.now()-u}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&(this.progress(100,"END","END"),De.instance.clear())}getParserWorkerTimeout(t,e){const n=e??this.config.timeout;if(n!=null)return n;const r=Math.ceil(t.byteLength/cm),s=bc+r*1e3;return Math.min(om,Math.max(bc,s))}async parse(t,e){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!")}processClasses(t,e){}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,n,r,s){throw new Error("Not impelemented yet!")}}class qh{constructor(t,e,n){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=n,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)}async scheduleTask(t){await Ln(),await t()}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let n=0;const r=async()=>{const s=n,a=Math.min(n+this._chunkSize,this._count);await t(s,a),n=a,n<this._count&&await this.scheduleTask(r)};await r(),await(e==null?void 0:e())}}class Kh extends Va{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}async processEntities(t,e,n,r,s){let a=t.tables.blockTable.modelSpace.newIterator().toArray();const o=a.length,c=new qh(o,100-r.value,n);this.config.convertByEntityType&&(a=this.groupAndFlattenByType(a));const l=e.tables.blockTable.modelSpace;await c.processChunk(async(h,u)=>{let d=[],g=h<u?a[h].type:"";for(let f=h;f<u;f++){const p=a[f];this.config.convertByEntityType&&p.type!==g&&(this.triggerEvents(l,d),d=[],g=p.type),d.push(p)}if(this.triggerEvents(l,d),s){let f=r.value+u/o*(100-r.value);f>100&&(f=100),await s(f,"ENTITY","IN-PROGRESS")}})}processBlocks(){const t=this._database.tables.blockTable.newIterator();for(const e of t){const n=e.newIterator().toArray();this.triggerEvents(e,n)}}processHeader(){}processClasses(){}processBlockTables(){}processObjects(){const t=this._database.objects.layout.newIterator();for(const a of t)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.layoutName});const e=this._database.objects.imageDefinition.newIterator();for(const a of e)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const n=this._database.objects.mleaderStyle.newIterator();for(const a of n)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const r=this._database.objects.layerFilter.newIterator();for(const a of r)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const s=this._database.objects.layerIndex.newIterator();for(const a of s)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId})}processViewports(){}processLayers(){this._database.tables.layerTable.newIterator().toArray().forEach(e=>{this._database.events.layerAppended.dispatch({database:this._database,layer:e})})}processLineTypes(){}processTextStyles(){}processDimStyles(){}groupAndFlattenByType(t){const e={},n=[];for(const r of t)e[r.type]||(e[r.type]=[],n.push(r.type)),e[r.type].push(r);return n.flatMap(r=>e[r])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}var Zh=(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))(Zh||{}),ja=(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))(ja||{}),Qh=(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))(Qh||{}),Jh=(i=>(i[i.None=0]="None",i[i.Leading=1]="Leading",i[i.Trailing=2]="Trailing",i[i.LeadingAndTrailing=3]="LeadingAndTrailing",i))(Jh||{}),tu=(i=>(i[i.Bottom=0]="Bottom",i[i.Middle=1]="Middle",i[i.Top=2]="Top",i))(tu||{});const zr=class zr extends Pe{constructor(t,e){t=t||{},Wt(t,zr.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)}dxfOut(...t){const[e,n=!1]=t;return e.writeHandle(105,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),n&&this.dxfOutXData(e),this}dxfOutFields(t){super.dxfOutFields(t);const e=this.database.tables.textStyleTable.getAt(this.dimtxsty),n=this.database.tables.blockTable.getAt(this.dimldrblk),r=this.database.tables.blockTable.getAt(this.dimblk),s=this.database.tables.blockTable.getAt(this.dimblk1),a=this.database.tables.blockTable.getAt(this.dimblk2);return t.writeSubclassMarker("AcDbDimStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),t.writeString(3,this.dimpost),t.writeString(4,this.dimapost),t.writeDouble(40,this.dimscale),t.writeDouble(41,this.dimasz),t.writeDouble(42,this.dimexo),t.writeDouble(43,this.dimdli),t.writeDouble(44,this.dimexe),t.writeDouble(140,this.dimtxt),t.writeDouble(147,this.dimgap),t.writeInt16(170,this.dimalt),t.writeInt16(171,this.dimtol),t.writeInt16(172,this.dimlim),t.writeInt16(173,this.dimtih),t.writeInt16(174,this.dimtoh),t.writeObjectId(340,e==null?void 0:e.objectId),t.writeObjectId(341,n==null?void 0:n.objectId),t.writeObjectId(342,r==null?void 0:r.objectId),t.writeObjectId(343,s==null?void 0:s.objectId),t.writeObjectId(344,a==null?void 0:a.objectId),t.writeInt16(371,this.dimlwd),t.writeInt16(372,this.dimlwe),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbDimStyleTableRecord");const e=n=>n===0?0:1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}const s=Number(n.value);switch(r){case 2:this.name=String(n.value);break;case 70:break;case 3:this.dimpost=String(n.value);break;case 4:this.dimapost=String(n.value);break;case 5:this.dimblk=String(n.value);break;case 6:this.dimblk1=String(n.value);break;case 7:this.dimblk2=String(n.value);break;case 40:this.dimscale=s;break;case 41:this.dimasz=s;break;case 42:this.dimexo=s;break;case 43:this.dimdli=s;break;case 44:this.dimexe=s;break;case 45:this.dimrnd=s;break;case 46:this.dimdle=s;break;case 47:this.dimtp=s;break;case 48:this.dimtm=s;break;case 140:this.dimtxt=s;break;case 141:this.dimcen=s;break;case 142:this.dimtsz=s;break;case 143:this.dimaltf=s;break;case 144:this.dimlfac=s;break;case 145:this.dimtvp=s;break;case 146:this.dimtfac=s;break;case 147:this.dimgap=s;break;case 148:this.dimaltrnd=s;break;case 71:this.dimtol=e(s);break;case 72:this.dimlim=e(s);break;case 73:this.dimtih=e(s);break;case 74:this.dimtoh=e(s);break;case 75:this.dimse1=e(s);break;case 76:this.dimse2=e(s);break;case 77:this.dimtad=s;break;case 78:this.dimzin=s;break;case 79:this.dimazin=s;break;case 170:this.dimalt=e(s);break;case 171:this.dimaltd=s;break;case 172:this.dimtofl=e(s);break;case 173:this.dimsah=e(s);break;case 174:this.dimtix=e(s);break;case 175:this.dimsoxd=e(s);break;case 176:this.dimclrd=s;break;case 177:this.dimclre=s;break;case 178:this.dimclrt=s;break;case 179:this.dimadec=s;break;case 270:this.dimunit=s;break;case 271:this.dimdec=s;break;case 272:this.dimtdec=s;break;case 273:this.dimaltu=s;break;case 274:this.dimalttd=s;break;case 275:this.dimaunit=s;break;case 276:this.dimfrac=s;break;case 277:this.dimlunit=s;break;case 278:this.dimdsep=typeof n.value=="string"?n.value:String.fromCharCode(s||46);break;case 279:this.dimtmove=s;break;case 280:this.dimjust=s;break;case 281:this.dimsd1=e(s);break;case 282:this.dimsd2=e(s);break;case 283:this.dimtolj=s;break;case 284:this.dimtzin=s;break;case 285:this.dimaltz=s;break;case 286:this.dimalttz=s;break;case 287:this.dimfit=s;break;case 288:this.dimupt=e(s);break;case 289:this.dimatfit=s;break;case 340:this.dimtxsty=String(n.value);break;case 341:this.dimldrblk=String(n.value);break;case 342:this.dimblk=String(n.value);break;case 343:this.dimblk1=String(n.value);break;case 344:this.dimblk2=String(n.value);break;case 371:this.dimlwd=s;break;case 372:this.dimlwe=s;break}}return this}};zr.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:st,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Ft=zr;function eu(){return{color:new j,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new ht,linetype:"",lineWeight:1,materialId:-1}}const lm=["name",...Object.keys(eu())];class ki extends Pe{constructor(t,e){t=t||{},Wt(t,eu()),super(t,e)}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.clone())}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineStyle(){var e;const t=(e=this.database)==null?void 0:e.tables.linetypeTable.getAt(this.linetype);if(t)return{type:"UserSpecified",...t.linetype}}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)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeCmColor(this.color),t.writeString(6,this.linetype),t.writeInt16(290,this.isPlottable?1:0),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency),this.description&&t.writeString(4,this.description),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLayerTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=Number(e.value);break;case 62:{const r=Number(e.value);this.isOff=r<0,this.color.colorIndex=Math.abs(r);break}case 420:this.color.setRGBValue(Number(e.value));break;case 6:this.linetype=String(e.value);break;case 290:this.isPlottable=Number(e.value)!==0;break;case 370:this.lineWeight=Number(e.value);break;case 440:this.transparency=ht.deserialize(Number(e.value));break;case 4:this.description=String(e.value);break}}return this}}class Ne extends Pe{constructor(t,e){t=t||{},Wt(t,{standardFlag:0,description:"",totalPatternLength:0}),super(t,e)}get numDashes(){const t=this.getAttrWithoutException("pattern");return t?t.length:0}get patternLength(){return this.getAttr("totalPatternLength")}get comments(){return this.getAttr("description")}get linetype(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),description:this.getAttr("description"),totalPatternLength:this.getAttr("totalPatternLength"),pattern:this.getAttrWithoutException("pattern")}}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.getAttr("pattern")[t].elementLength}toPreviewSvgString(t){const e=Math.max((t==null?void 0:t.width)??220,1),n=Math.max((t==null?void 0:t.height)??36,1),r=Math.min(Math.max((t==null?void 0:t.padding)??8,0),Math.floor(e/2)),s=Math.max((t==null?void 0:t.strokeWidth)??2,.5),a=this.escapeSvgAttribute((t==null?void 0:t.stroke)??"currentColor"),o=Math.max((t==null?void 0:t.repeats)??4,1),c=n/2,l=r,h=Math.max(e-r,l+1),u=h-l,d=this.getAttrWithoutException("pattern")??[];if(d.length===0||this.patternLength<=0||!d.some(v=>v.elementLength!==0))return this.buildSvgString({width:e,height:n,stroke:a,strokeWidth:s,lineSegments:[[l,h]],dots:[],y:c});const g=[],f=[],p=u/(this.patternLength*o),m=.5,y=Math.max(s*2,2);let _=l;for(;_<h;)for(const v of d){if(_>=h)break;const w=v.elementLength;if(w===0){f.push(_),_=Math.min(_+y,h);continue}const A=Math.max(Math.abs(w)*p,m),I=Math.min(_+A,h);w>0&&I>_&&g.push([_,I]),_=I}return this.buildSvgString({width:e,height:n,stroke:a,strokeWidth:s,lineSegments:g,dots:f,y:c})}buildSvgString(t){const{width:e,height:n,stroke:r,strokeWidth:s,lineSegments:a,dots:o,y:c}=t,l=a.map(([u,d])=>`<line x1="${u.toFixed(2)}" y1="${c.toFixed(2)}" x2="${d.toFixed(2)}" y2="${c.toFixed(2)}" stroke="${r}" stroke-width="${s.toFixed(2)}" stroke-linecap="round" />`).join(""),h=o.map(u=>`<circle cx="${u.toFixed(2)}" cy="${c.toFixed(2)}" r="${(s/2).toFixed(2)}" fill="${r}" />`).join("");return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${n}" viewBox="0 0 ${e} ${n}" role="img" aria-label="${this.escapeSvgAttribute(this.name)} linetype preview">${l}${h}</svg>`}escapeSvgAttribute(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLinetypeTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeString(3,this.comments),t.writeInt16(72,65),t.writeInt16(73,this.numDashes),t.writeDouble(40,this.patternLength);for(const e of this.getAttrWithoutException("pattern")??[])t.writeDouble(49,e.elementLength),t.writeInt16(74,e.elementTypeFlag);return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLinetypeTableRecord");const e=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}switch(r){case 2:this.name=String(n.value);break;case 70:this.setAttr("standardFlag",Number(n.value));break;case 3:this.setAttr("description",String(n.value));break;case 72:break;case 73:break;case 40:this.setAttr("totalPatternLength",Number(n.value));break;case 49:e.push({elementLength:Number(n.value),elementTypeFlag:0});break;case 74:e.length>0&&(e[e.length-1].elementTypeFlag=Number(n.value));break}}return this.setAttr("pattern",e),this}}class cr extends Pe{constructor(t){typeof t=="string"&&(t={name:t}),super(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRegAppTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbRegAppTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break}}return this}}class Jr extends Pe{constructor(t,e){t=t||{},Wt(t,{standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"",bigFont:""}),super(t,e),this.setAttr("font",this.getFileNameWithoutExtension(this.getAttr("font")||this.getAttrWithoutException("extendedFont")||this.name))}get obliquingAngle(){return this.getAttr("obliqueAngle")}set obliquingAngle(t){this.setAttr("obliqueAngle",t)}get priorSize(){return this.getAttr("lastHeight")}set priorSize(t){this.setAttr("lastHeight",t)}get textSize(){return this.getAttr("fixedTextHeight")}set textSize(t){this.setAttr("fixedTextHeight",t)}get xScale(){return this.getAttr("widthFactor")}set xScale(t){this.setAttr("widthFactor",t)}get isVertical(){return(this.getAttr("standardFlag")&4)===4}set isVertical(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|4:e&-5)}get isShapeFile(){return(this.getAttr("standardFlag")&1)===1}set isShapeFile(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|1:e&-2)}get fileName(){return this.getAttr("font")}set fileName(t){this.setAttr("font",t)}get bigFontFileName(){return this.getAttr("bigFont")}set bigFontFileName(t){this.setAttr("bigFont",t)}get textStyle(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),fixedTextHeight:this.getAttr("fixedTextHeight"),widthFactor:this.getAttr("widthFactor"),obliqueAngle:this.getAttr("obliqueAngle"),textGenerationFlag:this.getAttr("textGenerationFlag"),lastHeight:this.getAttr("lastHeight"),font:this.getAttr("font"),bigFont:this.getAttr("bigFont"),extendedFont:this.getAttrWithoutException("extendedFont")}}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const n=e.lastIndexOf(".");return n===-1?e:e.substring(0,n)}return t}get dxfFontFileName(){var e;const t=((e=this.fileName)==null?void 0:e.trim())??"";return!t||!this.isShapeFile||/\.[^./\\]+$/i.test(t)?t:`${t}.shx`}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTextStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeDouble(40,this.textSize),t.writeDouble(41,this.xScale),t.writeAngle(50,this.obliquingAngle),t.writeInt16(71,this.getAttr("textGenerationFlag")),t.writeDouble(42,this.priorSize),t.writeString(3,this.dxfFontFileName),t.writeString(4,this.bigFontFileName),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbTextStyleTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.setAttr("standardFlag",Number(e.value));break;case 40:this.textSize=Number(e.value);break;case 41:this.xScale=Number(e.value);break;case 50:this.obliquingAngle=Number(e.value);break;case 71:this.setAttr("textGenerationFlag",Number(e.value));break;case 42:this.priorSize=Number(e.value);break;case 3:this.fileName=this.getFileNameWithoutExtension(String(e.value));break;case 4:this.bigFontFileName=String(e.value);break}}return this}dxfInXData(t){super.dxfInXData(t),this.applyExtendedFontFromXData()}applyExtendedFontFromXData(){const t=this.getXData("ACAD");if(t){for(const n of t)if(Number(n.code)===1e3&&n.value!=null){const r=String(n.value).trim();if(r){this.setAttr("extendedFont",r);break}}}if(!(this.getAttr("font")??"").trim()){const n=this.getAttrWithoutException("extendedFont")||this.name||"";n&&(this.fileName=this.getFileNameWithoutExtension(n))}}}class nu extends Pe{constructor(t,e){t=t||{},Wt(t,{standardFlags:0,origin:new b(0,0,0),xAxis:new b(1,0,0),yAxis:new b(0,1,0),isOrthographic:!1,elevation:0}),super(t,e)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get origin(){return this.getAttr("origin")}set origin(t){this.setAttr("origin",t.clone())}get xAxis(){return this.getAttr("xAxis")}set xAxis(t){this.setAttr("xAxis",t.clone())}get yAxis(){return this.getAttr("yAxis")}set yAxis(t){this.setAttr("yAxis",t.clone())}get isOrthographic(){return this.getAttr("isOrthographic")}set isOrthographic(t){this.setAttr("isOrthographic",t)}get elevation(){return this.getAttr("elevation")}set elevation(t){this.setAttr("elevation",t)}get baseUcsId(){return this.getAttrWithoutException("baseUcsId")}set baseUcsId(t){this.setAttr("baseUcsId",t)}get orthographicType(){return this.getAttrWithoutException("orthographicType")}set orthographicType(t){this.setAttr("orthographicType",t)}get orthographicOrigin(){return this.getAttrWithoutException("orthographicOrigin")}set orthographicOrigin(t){this.setAttr("orthographicOrigin",t==null?void 0:t.clone())}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbUCSTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writePoint3d(10,this.origin),t.writePoint3d(11,this.xAxis),t.writePoint3d(12,this.yAxis),t.writeDouble(146,this.elevation),t.writeInt16(79,this.isOrthographic?1:0),this.isOrthographic&&t.writeObjectId(346,this.baseUcsId),this.orthographicType!=null&&this.orthographicOrigin&&(t.writeInt16(71,this.orthographicType),t.writePoint3d(13,this.orthographicOrigin)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbUCSTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 10:this.origin.x=r;break;case 20:this.origin.y=r;break;case 30:this.origin.z=r;break;case 11:this.xAxis.x=r;break;case 21:this.xAxis.y=r;break;case 31:this.xAxis.z=r;break;case 12:this.yAxis.x=r;break;case 22:this.yAxis.y=r;break;case 32:this.yAxis.z=r;break;case 79:this.isOrthographic=r!==0;break;case 146:this.elevation=r;break;case 346:this.baseUcsId=String(e.value);break;case 71:this.orthographicType=r;break;case 13:this.orthographicOrigin=this.orthographicOrigin??new b,this.orthographicOrigin.x=r;break;case 23:this.orthographicOrigin&&(this.orthographicOrigin.y=r);break;case 33:this.orthographicOrigin&&(this.orthographicOrigin.z=r);break}}return this}}const hm=()=>({center:new L,viewDirectionFromTarget:new b(0,0,1),viewTarget:new b(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:exports.AcGiRenderMode.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new b(0,0,0),ucsXAxis:new b(1,0,0),ucsYAxis:new b(0,1,0),orthographicType:exports.AcGiOrthographicType.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:exports.AcGiDefaultLightingType.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0,aspectRatio:void 0});class Ga extends Pe{constructor(t,e){t=t||{},Wt(t,{gsView:hm()}),super(t,e)}get gsView(){return this.getAttr("gsView")}get centerPoint(){return this.gsView.center}set centerPoint(t){this.gsView.center.copy(t)}get viewDirectionFromTarget(){return this.gsView.viewDirectionFromTarget}set viewDirectionFromTarget(t){this.gsView.viewDirectionFromTarget.copy(t)}get viewTarget(){return this.gsView.viewTarget}set viewTarget(t){this.gsView.viewTarget.copy(t)}get viewHeight(){return this.gsView.viewHeight}set viewHeight(t){this.gsView.viewHeight=t}get viewTwistAngle(){return this.gsView.viewTwistAngle}set viewTwistAngle(t){this.gsView.viewTwistAngle=t}get lensLength(){return this.gsView.lensLength}set lensLength(t){this.gsView.lensLength=t}get frontClippingPlane(){return this.gsView.frontClippingPlane}set frontClippingPlane(t){this.gsView.frontClippingPlane=t}get backClippingPlane(){return this.gsView.backClippingPlane}set backClippingPlane(t){this.gsView.backClippingPlane=t}get renderMode(){return this.gsView.renderMode}set renderMode(t){this.gsView.renderMode=t}get viewMode(){return this.gsView.viewMode}set viewMode(t){this.gsView.viewMode=t}get ucsIconSetting(){return this.gsView.ucsIconSetting}set ucsIconSetting(t){this.gsView.ucsIconSetting=t}get ucsOrigin(){return this.gsView.ucsOrigin}set ucsOrigin(t){this.gsView.ucsOrigin.copy(t)}get ucsXAxis(){return this.gsView.ucsXAxis}set ucsXAxis(t){this.gsView.ucsXAxis.copy(t)}get ucsYAxis(){return this.gsView.ucsYAxis}set ucsYAxis(t){this.gsView.ucsYAxis.copy(t)}get orthographicType(){return this.gsView.orthographicType}set orthographicType(t){this.gsView.orthographicType=t}get shadePlotSetting(){return this.gsView.shadePlotSetting}set shadePlotSetting(t){this.gsView.shadePlotSetting=t}get shadePlotObjectId(){return this.gsView.shadePlotObjectId}set shadePlotObjectId(t){this.gsView.shadePlotObjectId=t}get visualStyleObjectId(){return this.gsView.visualStyleObjectId}set visualStyleObjectId(t){this.gsView.visualStyleObjectId=t}get isDefaultLightingOn(){return this.gsView.isDefaultLightingOn}set isDefaultLightingOn(t){this.gsView.isDefaultLightingOn=t}get defaultLightingType(){return this.gsView.defaultLightingType}set defaultLightingType(t){this.gsView.defaultLightingType=t}get brightness(){return this.gsView.brightness}set brightness(t){this.gsView.brightness=t}get contrast(){return this.gsView.contrast}set contrast(t){this.gsView.contrast=t}get ambientColor(){return this.gsView.ambientColor}set ambientColor(t){this.gsView.ambientColor=t}get aspectRatio(){return this.gsView.aspectRatio}set aspectRatio(t){this.gsView.aspectRatio=t}}const _c=2,um=.45,dm=1e5;function gm(i){var n;const t=i,e=t.aspectRatio??((n=t.gsView)==null?void 0:n.aspectRatio);return Number.isFinite(e)?e:void 0}function fm(i,t){if(Number.isFinite(t)&&t>0)return t;const e=gm(i);return e!=null&&e>0?e:1}function pm(i,t){const e=Math.max(i.min.x,t.min.x),n=Math.max(i.min.y,t.min.y),r=Math.min(i.max.x,t.max.x),s=Math.min(i.max.y,t.max.y);return e>=r||n>=s?0:(r-e)*(s-n)}function xc(i){return{x:(i.min.x+i.max.x)/2,y:(i.min.y+i.max.y)/2}}function mm(i){if(!i||i.isEmpty())return!1;const t=i.max.x-i.min.x,e=i.max.y-i.min.y;return t>0&&e>0}class Be extends Ga{static isActiveVportName(t){return t.toLowerCase()===An.toLowerCase()}constructor(t,e){t=t||{},Wt(t,{circleSides:100,lowerLeftCorner:new L(0,0),upperRightCorner:new L(1,1),snapBase:new L(0,0),snapAngle:0,snapSpacing:new L(0,0),standardFlag:0,gridSpacing:new L,gridMajor:10,ucsElevation:0}),super(t,e)}get circleSides(){return this.getAttr("circleSides")}set circleSides(t){this.setAttr("circleSides",t)}get center(){return this.centerPoint}set center(t){this.centerPoint=t}get lowerLeftCorner(){return this.getAttr("lowerLeftCorner")}set lowerLeftCorner(t){this.getAttr("lowerLeftCorner").copy(t)}get upperRightCorner(){return this.getAttr("upperRightCorner")}set upperRightCorner(t){this.getAttr("upperRightCorner").copy(t)}get snapBase(){return this.getAttr("snapBase")}set snapBase(t){this.getAttr("snapBase").copy(t)}get snapAngle(){return this.getAttr("snapAngle")}set snapAngle(t){this.setAttr("snapAngle",t)}get snapIncrements(){return this.getAttr("snapSpacing")}set snapIncrements(t){this.getAttr("snapSpacing").copy(t)}get gridMajor(){return this.getAttr("gridMajor")}set gridMajor(t){this.setAttr("gridMajor",t)}get gridIncrements(){return this.getAttr("gridSpacing")}set gridIncrements(t){this.getAttr("gridSpacing").copy(t)}get standardFlag(){return this.getAttr("standardFlag")}set standardFlag(t){this.setAttr("standardFlag",t)}get snapEnabled(){return!!(this.standardFlag&256)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}modelViewBox(t){const e=this.centerPoint,n=this.viewHeight;if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(n)||n<=0)return;const r=this.viewTwistAngle;let s=e.x,a=e.y;if(Number.isFinite(r)&&r!==0){const d=Math.cos(r),g=Math.sin(r);s=e.x*d-e.y*g,a=e.x*g+e.y*d}const o=this.viewTarget;o&&Number.isFinite(o.x)&&Number.isFinite(o.y)&&(s+=o.x,a+=o.y);const c=fm(this,t),l=n*c,h=n/2,u=l/2;return new wt().expandByPoint({x:s-u,y:a-h}).expandByPoint({x:s+u,y:a+h})}static isModelViewBoxUsable(t,e){if(t.isEmpty()||e.isEmpty())return!1;const n=t.max.x-t.min.x,r=t.max.y-t.min.y,s=e.max.x-e.min.x,a=e.max.y-e.min.y;if(n<=0||r<=0||s<=0||a<=0||n>s*_c||r>a*_c)return!1;const o=Math.max(s,a)*um,c=xc(t),l=xc(e);if(Math.hypot(c.x-l.x,c.y-l.y)>o)return!1;const u=n*r,d=pm(t,e);return!(d<=0||d/u<.25)}resolveModelViewBox(t,e){const n=this.modelViewBox(t);if(!(!n||!Be.isModelViewBoxStructurallyValid(n))){if(mm(e)){if(!Be.isModelViewBoxUsable(n,e))return}else if(!Be.isModelViewBoxPlausibleWithoutExtents(n))return;return n}}static isModelViewBoxStructurallyValid(t){if(t.isEmpty())return!1;const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Number.isFinite(e)&&Number.isFinite(n)&&e>0&&n>0}static isModelViewBoxPlausibleWithoutExtents(t){const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Math.max(e,n)<=dm}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewportTableRecord"),t.writeString(2,this.name),t.writeDouble(40,this.gsView.viewHeight),this.gsView.aspectRatio!=null&&Number.isFinite(this.gsView.aspectRatio)&&t.writeDouble(41,this.gsView.aspectRatio),t.writeDouble(45,this.gsView.viewHeight),t.writePoint2d(10,this.lowerLeftCorner),t.writePoint2d(11,this.upperRightCorner),t.writePoint2d(12,this.center),t.writePoint2d(13,this.snapBase),t.writePoint2d(14,this.snapIncrements),t.writePoint2d(15,this.gridIncrements),t.writeInt16(70,this.standardFlag),t.writeInt16(71,this.circleSides),t.writeDouble(42,this.gsView.lensLength),t.writePoint3d(16,this.gsView.viewDirectionFromTarget),t.writePoint3d(17,this.gsView.viewTarget),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.gsView.viewTwistAngle),t.writeInt16(61,this.gridMajor),t.writeDouble(146,this.ucsElevation),t.writeInt16(170,this.shadePlotSetting),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLightingOn?1:0),t.writeInt16(281,this.backgroundObjectId?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(333,this.shadePlotObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewportTableRecord");const e=[...this.gsView.frozenLayers??[]];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}const s=Number(n.value);switch(r){case 2:this.name=String(n.value);break;case 1:this.gsView.styleSheet=String(n.value);break;case 10:this.lowerLeftCorner.x=s;break;case 20:this.lowerLeftCorner.y=s;break;case 11:this.upperRightCorner.x=s;break;case 21:this.upperRightCorner.y=s;break;case 12:this.center.x=s,this.gsView.center.x=s;break;case 22:this.center.y=s,this.gsView.center.y=s;break;case 13:this.snapBase.x=s;break;case 23:this.snapBase.y=s;break;case 14:this.snapIncrements.x=s;break;case 24:this.snapIncrements.y=s;break;case 15:this.gridIncrements.x=s;break;case 25:this.gridIncrements.y=s;break;case 16:this.gsView.viewDirectionFromTarget.x=s;break;case 26:this.gsView.viewDirectionFromTarget.y=s;break;case 36:this.gsView.viewDirectionFromTarget.z=s;break;case 17:this.gsView.viewTarget.x=s;break;case 27:this.gsView.viewTarget.y=s;break;case 37:this.gsView.viewTarget.z=s;break;case 40:case 45:this.gsView.viewHeight=s;break;case 41:Number.isFinite(s)&&s>0&&(this.gsView.aspectRatio=s);break;case 42:this.gsView.lensLength=s;break;case 43:this.gsView.frontClippingPlane=s;break;case 44:this.gsView.backClippingPlane=s;break;case 50:this.snapAngle=s;break;case 51:this.gsView.viewTwistAngle=s;break;case 61:this.gridMajor=s;break;case 70:this.standardFlag=s;break;case 71:s>=1&&s<=2e4&&(this.circleSides=s),this.gsView.viewMode=s;break;case 72:this.circleSides=s;break;case 74:this.gsView.ucsIconSetting=s;break;case 110:this.gsView.ucsOrigin.x=s;break;case 120:this.gsView.ucsOrigin.y=s;break;case 130:this.gsView.ucsOrigin.z=s;break;case 111:this.gsView.ucsXAxis.x=s;break;case 121:this.gsView.ucsXAxis.y=s;break;case 131:this.gsView.ucsXAxis.z=s;break;case 112:this.gsView.ucsYAxis.x=s;break;case 122:this.gsView.ucsYAxis.y=s;break;case 132:this.gsView.ucsYAxis.z=s;break;case 79:this.gsView.orthographicType=s;break;case 281:this.gsView.renderMode=s;break;case 331:case 441:e.push(String(n.value));break;case 332:this.backgroundObjectId=String(n.value);break;case 146:this.ucsElevation=s;break;case 170:this.shadePlotSetting=s;break;case 282:this.defaultLightingType=s;break;case 292:this.isDefaultLightingOn=s!==0;break;case 333:this.shadePlotObjectId=String(n.value);break;case 348:this.gsView.visualStyleObjectId=String(n.value);break}}return this.gsView.frozenLayers=e,this}}class iu extends Ga{constructor(t,e){t=t||{};const n=t.viewWidth!==void 0;Wt(t,{standardFlags:0,ucsAssociated:!1,cameraPlottable:!1,ucsElevation:0}),super(t,e),n||(this.viewWidth=this.viewHeight)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get viewWidth(){return this.getAttr("viewWidth")}set viewWidth(t){this.setAttr("viewWidth",t)}get ucsAssociated(){return this.getAttr("ucsAssociated")}set ucsAssociated(t){this.setAttr("ucsAssociated",t)}get cameraPlottable(){return this.getAttr("cameraPlottable")}set cameraPlottable(t){this.setAttr("cameraPlottable",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}get ucsObjectId(){return this.getAttrWithoutException("ucsObjectId")}set ucsObjectId(t){this.setAttr("ucsObjectId",t)}get ucsBaseObjectId(){return this.getAttrWithoutException("ucsBaseObjectId")}set ucsBaseObjectId(t){this.setAttr("ucsBaseObjectId",t)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get liveSectionObjectId(){return this.getAttrWithoutException("liveSectionObjectId")}set liveSectionObjectId(t){this.setAttr("liveSectionObjectId",t)}get sunObjectId(){return this.getAttrWithoutException("sunObjectId")}set sunObjectId(t){this.setAttr("sunObjectId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeDouble(40,this.gsView.viewHeight),t.writePoint2d(10,this.centerPoint),t.writeDouble(41,this.viewWidth),t.writePoint3d(11,this.gsView.viewDirectionFromTarget),t.writePoint3d(12,this.gsView.viewTarget),t.writeDouble(42,this.gsView.lensLength),t.writeDouble(43,this.gsView.frontClippingPlane),t.writeDouble(44,this.gsView.backClippingPlane),t.writeAngle(50,this.gsView.viewTwistAngle),t.writeInt16(71,this.gsView.viewMode),t.writeInt16(281,this.gsView.renderMode),t.writeInt16(72,this.ucsAssociated?1:0),t.writeInt16(73,this.cameraPlottable?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(334,this.liveSectionObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),t.writeObjectId(361,this.sunObjectId),this.ucsAssociated&&(t.writePoint3d(110,this.gsView.ucsOrigin),t.writePoint3d(111,this.gsView.ucsXAxis),t.writePoint3d(112,this.gsView.ucsYAxis),t.writeInt16(79,this.gsView.orthographicType),t.writeDouble(146,this.ucsElevation),t.writeObjectId(345,this.ucsObjectId),t.writeObjectId(346,this.ucsBaseObjectId)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 40:this.gsView.viewHeight=r;break;case 10:this.centerPoint.x=r;break;case 20:this.centerPoint.y=r;break;case 41:this.viewWidth=r;break;case 11:this.gsView.viewDirectionFromTarget.x=r;break;case 21:this.gsView.viewDirectionFromTarget.y=r;break;case 31:this.gsView.viewDirectionFromTarget.z=r;break;case 12:this.gsView.viewTarget.x=r;break;case 22:this.gsView.viewTarget.y=r;break;case 32:this.gsView.viewTarget.z=r;break;case 42:this.gsView.lensLength=r;break;case 43:this.gsView.frontClippingPlane=r;break;case 44:this.gsView.backClippingPlane=r;break;case 50:this.gsView.viewTwistAngle=r*Math.PI/180;break;case 71:this.gsView.viewMode=r;break;case 281:this.gsView.renderMode=r;break;case 72:this.ucsAssociated=r!==0;break;case 73:this.cameraPlottable=r!==0;break;case 332:this.backgroundObjectId=String(e.value);break;case 334:this.liveSectionObjectId=String(e.value);break;case 348:this.gsView.visualStyleObjectId=String(e.value);break;case 361:this.sunObjectId=String(e.value);break;case 110:this.gsView.ucsOrigin.x=r;break;case 120:this.gsView.ucsOrigin.y=r;break;case 130:this.gsView.ucsOrigin.z=r;break;case 111:this.gsView.ucsXAxis.x=r;break;case 121:this.gsView.ucsXAxis.y=r;break;case 131:this.gsView.ucsXAxis.z=r;break;case 112:this.gsView.ucsYAxis.x=r;break;case 122:this.gsView.ucsYAxis.y=r;break;case 132:this.gsView.ucsYAxis.z=r;break;case 79:this.gsView.orthographicType=r;break;case 146:this.ucsElevation=r;break;case 345:this.ucsObjectId=String(e.value);break;case 346:this.ucsBaseObjectId=String(e.value);break}}return this}}const ts=192,ii=193,es=194,ns=195,ru=200;function ks(i){if(i.isByBlock)return ii<<24>>0;if(i.isByLayer)return ts<<24>>0;const t=i.colorIndex;if(t!=null&&t>0&&t<256)return(ns<<24|t&255)>>0;const e=i.RGB;return e!=null?(es<<24|e&16777215)>>0:ii<<24>>0}function re(i){const t=new j(exports.AcCmColorMethod.ByBlock);switch(i>>>24&255){case ts:t.setByLayer();break;case ii:case ru:t.setByBlock();break;case ns:t.colorIndex=i&255;break;case es:t.setRGBValue(i&16777215);break;default:i===256?t.setByLayer():i===0?t.setByBlock():i>0&&i<256&&(t.colorIndex=i);break}return t}const ym=127;var su=(i=>(i[i.Extents=1]="Extents",i[i.Circle=2]="Circle",i[i.Circle3P=3]="Circle3P",i[i.CircularArc=4]="CircularArc",i[i.CircularArc3P=5]="CircularArc3P",i[i.Polyline=6]="Polyline",i[i.Polygon=7]="Polygon",i[i.Mesh=8]="Mesh",i[i.Shell=9]="Shell",i[i.Text=10]="Text",i[i.Text2=11]="Text2",i[i.Xline=12]="Xline",i[i.Ray=13]="Ray",i[i.AttributeColor=14]="AttributeColor",i[i.AttributeLayer=16]="AttributeLayer",i[i.AttributeLinetype=18]="AttributeLinetype",i[i.AttributeMarker=19]="AttributeMarker",i[i.AttributeFill=20]="AttributeFill",i[i.AttributeTrueColor=22]="AttributeTrueColor",i[i.AttributeLineweight=23]="AttributeLineweight",i[i.AttributeLtscale=24]="AttributeLtscale",i[i.AttributeThickness=25]="AttributeThickness",i[i.PushMatrix=29]="PushMatrix",i[i.PopMatrix=31]="PopMatrix",i[i.PolylineWithNormals=32]="PolylineWithNormals",i[i.LwPolyline=33]="LwPolyline",i[i.UnicodeText=36]="UnicodeText",i[i.UnicodeText2=38]="UnicodeText2",i[i.EllipticArc=44]="EllipticArc",i))(su||{});const Xe=x.Z_AXIS,bm=529;function _m(i){const t=i>>24&255;return t===es?{rgb:i&16777215}:t===ts?{colorIndex:256}:t===ii?{colorIndex:0}:t===ns?{colorIndex:i&255}:{colorIndex:i&255}}function Ps(i){return new x(i.x,i.y,i.z??0)}function Ss(i){return new b(i.x,i.y,i.z??0)}function wc(i){return{x:i[0],y:i[1],z:i[2]}}class ta{constructor(t,e={}){this._index=8,this._colorIndex=256,this._layer="0",this._linetype=dt,this._lineweight=exports.AcGiLineWeight.ByLineWeightDefault,this._ltscale=1,this._thickness=0,this._fill=!1,this._layers=[],this._linetypes=[],this._matrices=[],this._buffer=t,this._database=e.database,this._dxfversion=e.dxfversion??"AC1015",this._encoding=e.encoding??(this._dxfversion<"AC1024"?"windows-1252":"utf-8"),this._layer=e.defaultLayer??"0",this._database&&(this._database.tables.layerTable.newIterator().toArray().forEach(n=>this._layers.push(n.name)),this._database.tables.linetypeTable.newIterator().toArray().forEach(n=>this._linetypes.push(n.name)))}get extents(){return this._extents}scanExtents(){var n;const t=this._buffer;let e=this._index;for(;e<t.length;){const r=new DataView(t.buffer,t.byteOffset+e,8),s=r.getUint32(0,!0),a=r.getUint32(4,!0);if(s<8)break;if(a===1){const o=t.subarray(e+8,e+s);return this.readExtents(o),((n=this._extents)==null?void 0:n.length)===2?[this._extents[0],this._extents[1]]:void 0}e+=s}}worldDraw(t){const e=[],n=t.subEntityTraits,r={color:n.color.clone(),lineType:n.lineType,lineTypeScale:n.lineTypeScale,lineWeight:n.lineWeight,layer:n.layer,thickness:n.thickness},s=this._buffer;let a=this._index;for(;a<s.length;){const o=new DataView(s.buffer,s.byteOffset+a,8),c=o.getUint32(0,!0),l=o.getUint32(4,!0);if(c<8)break;const h=s.subarray(a+8,a+c);this.dispatchChunk(t,e,l,h),l!==20&&(this._fill=!1),a+=c}if(n.color=r.color,n.lineType=r.lineType,n.lineTypeScale=r.lineTypeScale,n.lineWeight=r.lineWeight,n.layer=r.layer,n.thickness=r.thickness,e.length!==0)return t.group(e)}dispatchChunk(t,e,n,r){switch(n){case 1:this.readExtents(r);break;case 2:this.drawCircle(t,e,r);break;case 3:this.drawCircle3P(t,e,r);break;case 4:this.drawCircularArc(t,e,r);break;case 5:this.drawCircularArc3P(t,e,r);break;case 44:this.drawEllipticArc(t,e,r);break;case 6:this.drawPolyline(t,e,r,!1);break;case 32:this.drawPolyline(t,e,r,!0);break;case 7:this.drawPolygon(t,e,r);break;case 33:this.drawLwPolyline(t,e,r);break;case 9:this.drawShell(t,e,r);break;case 10:this.drawText(t,e,r,!1);break;case 36:this.drawText(t,e,r,!0);break;case 11:this.drawText2(t,e,r,!1);break;case 38:this.drawText2(t,e,r,!0);break;case 12:this.drawXline(t,e,r,!1);break;case 13:this.drawXline(t,e,r,!0);break;case 14:this.readAttributeColor(r);break;case 16:this.readAttributeLayer(r);break;case 18:this.readAttributeLinetype(r);break;case 20:this.readAttributeFill(r);break;case 22:this.readAttributeTrueColor(r);break;case 23:this.readAttributeLineweight(r);break;case 24:this.readAttributeLtscale(r);break;case 25:this.readAttributeThickness(r);break;case 29:this.pushMatrix(r);break;case 31:this.popMatrix();break}}applyTraits(t){const e=t.subEntityTraits;e.layer=this._layer,e.lineTypeScale=this._ltscale,e.thickness=this._thickness,e.lineWeight=this._lineweight,this._rgbColor!=null?e.color=new j(exports.AcCmColorMethod.ByColor,this._rgbColor):this._colorIndex===256?e.color=new j(exports.AcCmColorMethod.ByLayer):this._colorIndex===0?e.color=new j(exports.AcCmColorMethod.ByBlock):this._colorIndex===7?e.color=new j(exports.AcCmColorMethod.ByACI,7):e.color=new j(exports.AcCmColorMethod.ByACI,this._colorIndex),e.lineType={name:this._linetype,type:this.resolveLineStyleType(),standardFlag:0,description:"",totalPatternLength:0}}resolveLineStyleType(){return this._linetype===dt?"ByLayer":this._linetype===ae?"ByBlock":"UserSpecified"}transformPoint(t){const e=Array.isArray(t)?wc(t):t,n=Ss(e);return this._matrices.length>0&&n.applyMatrix4(this._matrices[this._matrices.length-1]),n}transformVector(t){const e=Array.isArray(t)?wc(t):t,n=Ps(e);return this._matrices.length>0&&n.transformDirection(this._matrices[this._matrices.length-1]),!Number.isFinite(n.lengthSq())||n.lengthSq()<1e-24?Xe.clone():n.normalize()}pushEntity(t,e){e&&t.push(e)}readExtents(t){const e=new Xt(t),n=e.readVertex(),r=e.readVertex();this._extents=[new b(n[0],n[1],n[2]),new b(r[0],r[1],r[2])]}readAttributeColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);this._rgbColor=void 0,this._colorIndex=e>256||e<0?256:e}readAttributeLayer(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e<this._layers.length&&(this._layer=this._layers[e])}readAttributeLinetype(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e+2<this._linetypes.length?this._linetype=this._linetypes[e+2]:e===32766?this._linetype=ae:this._linetype=dt}readAttributeFill(t){this._fill=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0)!==0}readAttributeTrueColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0),n=_m(e);this._rgbColor=n.rgb,n.colorIndex!=null&&(this._colorIndex=n.colorIndex)}readAttributeLineweight(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e>bm?this._lineweight=e-4294967296:this._lineweight=e}readAttributeLtscale(t){this._ltscale=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}readAttributeThickness(t){this._thickness=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}pushMatrix(t){const e=new Float64Array(t.buffer,t.byteOffset,16),n=new F().fromArray(Array.from(e));n.transpose(),this._matrices.push(n)}popMatrix(){this._matrices.length>0&&this._matrices.pop()}loadVertices(t,e){const n=new Xt(t);let r=n.readLong();e&&(r+=1);const s=[];for(;r>0;){const[o,c,l]=n.readVertex();s.push(this.transformPoint({x:o,y:c,z:l})),r-=1}let a=Xe;return e&&s.length>0&&(a=Ps(s.pop())),{vertices:s,normal:a}}drawCircle(t,e,n){const r=new Xt(n),s=r.readVertex(),a=r.readFloat(),o=this.transformVector(r.readVertex());let c=Ss({x:s[0],y:s[1],z:s[2]});o.equals(Xe)||(c=Bt(c,o)),c=this.transformPoint(c);const l=Fe(o),h=new St(_t(c,o),a,0,V,o,l);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircle3P(t,e,n){const r=new Xt(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=St.computeCenterPoint(s,a,o);if(!c)return;const l=c.distanceTo(s),h=new St(c,l,0,V,Xe);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircularArc(t,e,n){const r=new Xt(n),s=r.readVertex(),a=r.readFloat(),o=r.readVertex(),c=r.readVertex(),l=r.readFloat(),h=this.transformVector(o),u=Ss({x:s[0],y:s[1],z:s[2]}),d=Ps({x:c[0],y:c[1],z:c[2]});this._matrices.length>0&&d.transformDirection(this._matrices[this._matrices.length-1]);const g=Number.isFinite(d.lengthSq())&&d.lengthSq()>=1e-24?d.normalize():Fe(h),f=0,p=l,m=new St(this.transformPoint(u),a,f,p,h,g);this.applyTraits(t),this.pushEntity(e,t.circularArc(m))}drawCircularArc3P(t,e,n){const r=new Xt(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=St.computeCenterPoint(s,o,a);if(!c)return;const l=c.distanceTo(s),h=ye(c,s,Xe),u=ye(c,o,Xe),d=new St(c,l,h,u,Xe);this.applyTraits(t),this.pushEntity(e,t.circularArc(d))}drawEllipticArc(t,e,n){const r=new Xt(n),s=this.transformPoint(r.readVertex()),a=this.transformVector(r.readVertex()),o=r.readFloat(),c=r.readFloat(),l=r.readFloat(),h=r.readFloat(),u=r.readFloat(),d=_t({x:Math.cos(u)*o,y:Math.sin(u)*o,z:0},a),g=new he(s,a,d,o,c,l,h);this.applyTraits(t),this.pushEntity(e,t.ellipticalArc(g))}drawPolyline(t,e,n,r){var a,o;const{vertices:s}=this.loadVertices(n,r);if(s.length!==0){if(s.length===1){this.applyTraits(t);const c=((a=this._database)==null?void 0:a.pdmode)??0,l=((o=this._database)==null?void 0:o.pdsize)??0;this.pushEntity(e,t.point(s[0],{displayMode:c,displaySize:l}));return}this.applyTraits(t),this.pushEntity(e,t.lines(s))}}drawPolygon(t,e,n){const{vertices:r}=this.loadVertices(n,!1);if(r.length<2)return;if(this._fill){const a=new Q(r.map(l=>({x:l.x,y:l.y})),!0),o=new Kt;o.add(a);const c=t.subEntityTraits;c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},c.drawOrder=-1,this.applyTraits(t),this.pushEntity(e,t.area(o));return}const s=[...r,r[0]];this.applyTraits(t),this.pushEntity(e,t.lines(s))}drawLwPolyline(t,e,n){const r=new xh(n,this._dxfversion,this._encoding);let s=0,a=!1;r.readUnsignedLong();const o=r.readBitShort();o&8&&(s=r.readBitDouble()),o&512&&(a=!0);const c=r.readBitLong();if(c<=0)return;const l=o&16?r.readBitLong():0;this._dxfversion>="AC1024"&&(o&1024&&r.readBitLong(),o&32&&r.readBitLong());const h=r.readRawDouble(2),u=[this.transformPoint({x:h[0],y:h[1],z:s})];let d=h;for(let g=1;g<c;g++){const f=r.readBitDoubleDefault(1,d[0]),p=r.readBitDoubleDefault(1,d[1]);d=[f,p],u.push(this.transformPoint({x:f,y:p,z:s}))}for(let g=0;g<l;g++)r.readBitDouble();a&&u.length>1&&u.push(u[0].clone()),this.applyTraits(t),this.pushEntity(e,t.lines(u))}drawShell(t,e,n){const r=new Xt(n),s=r.readLong(),a=[];for(let h=0;h<s;h++){const[u,d,g]=r.readVertex();a.push(this.transformPoint({x:u,y:d,z:g}))}const o=r.readLong(),c=[];let l=0;for(;l<o;){const h=Math.abs(r.readSignedLong());l+=1+h;const u=[];for(let g=0;g<h;g++)u.push(r.readLong());const d=u.map(g=>a[g]).filter(Boolean);if(d.length>=3)for(let g=0;g<d.length;g++)c.push(d[g]),c.push(d[(g+1)%d.length])}c.length!==0&&(this.applyTraits(t),this.pushEntity(e,t.lines(c)))}drawText(t,e,n,r){const s=new Xt(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),[l,h,u]=s.readStruct([8,8,8]),d=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:d,height:l,widthFactor:h,obliqueAngle:u})}drawText2(t,e,n,r){const s=new Xt(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),l=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);s.readSignedLong(),s.readSignedLong();const[h,u,d]=s.readStruct([8,8,8]);s.readFloat(),this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:l,height:h,widthFactor:u,obliqueAngle:d})}drawTextPrimitive(t,e,n){const r=Math.atan2(n.textDirection.y,n.textDirection.x),s={text:n.text,height:n.height,width:1/0,widthFactor:n.widthFactor,position:n.insert,rotation:r*180/Math.PI,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft},a={name:st,standardFlag:0,fixedTextHeight:0,widthFactor:n.widthFactor,obliqueAngle:n.obliqueAngle*180/Math.PI,textGenerationFlag:0,lastHeight:n.height,font:"txt",bigFont:""};this.applyTraits(t),this.pushEntity(e,t.mtext(s,a))}drawXline(t,e,n,r){const s=new Xt(n),a=this.transformPoint(s.readVertex()),o=this.transformPoint(s.readVertex()),c=new x().subVectors(o,a);if(c.lengthSq()===0)return;const l=1e6,h=r?a.clone().add(c.normalize().multiplyScalar(l)):a.clone().sub(c.normalize().multiplyScalar(l)),u=o.clone().add(c.normalize().multiplyScalar(l));this.applyTraits(t),this.pushEntity(e,t.lines([h,u]))}}function xm(i,t){if(!(t!=null&&t.length))return;const e=wi(t);return i!=null&&i>0&&e.length>=i?e.subarray(0,i):e}const wm="ASM_Data";function ea(i){return String(i).trim().toUpperCase()}function vm(i){let t,e;const n={};for(;!i.atEndOfObject&&!i.atEof;){const r=i.readItem();if(!r)break;switch(Number(r.code)){case 320:t=ea(String(r.value));break;case 2:e=String(r.value),n[e]??(n[e]=[]);break;case 310:e&&(r.value instanceof Uint8Array?n[e].push(r.value):n[e].push(String(r.value)));break}}return{ownerHandle:t,hexChunks:n[wm]??[]}}function Am(i){const t={};for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)!==0){i.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"||n==="EOF"){i.readItem();break}if(i.readItem(),n==="ACDSRECORD"){const r=vm(i);if(r.ownerHandle&&r.hexChunks.length>0){const s=wi(r.hexChunks);s.length>0&&(t[r.ownerHandle]=s)}}else i.skipToEndOfObject()}return{byOwnerHandle:t}}function au(i,t){for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)===0){if(String(e.value).toUpperCase()==="ENDSEC"){i.readItem();break}break}if(i.readItem(),Number(e.code)!==9)continue;const n=String(e.value).toUpperCase();km(i,t,n)}}function km(i,t,e){switch(e){case"$ACADVER":{const n=Zt(i);n&&(t.version=n);break}case"$CECOLOR":{const n=rt(i);t.cecolor.colorIndex=n??256;break}case"$ANGBASE":t.angbase=rt(i)??0;break;case"$ANGDIR":t.angdir=rt(i)??0;break;case"$AUNITS":{const n=rt(i);n!=null&&(t.aunits=n);break}case"$AUPREC":{const n=rt(i);n!=null&&(t.auprec=n);break}case"$LUNITS":{const n=rt(i);n!=null&&(t.lunits=n);break}case"$LUPREC":{const n=rt(i);n!=null&&(t.luprec=n);break}case"$UNITMODE":{const n=rt(i);n!=null&&(t.unitmode=n);break}case"$MEASUREMENT":{const n=rt(i);n!=null&&(t.measurement=n);break}case"$CELTYPE":t.celtype=Zt(i)||dt;break;case"$CETRANSPARENCY":{const n=Zt(i)||"ByLayer";bt.instance().setVar(E.CETRANSPARENCY,n,t);break}case"$CELTSCALE":t.celtscale=rt(i)??1;break;case"$CELWEIGHT":{const n=rt(i);n!=null&&(t.celweight=n);break}case"$LWDISPLAY":t.lwdisplay=(rt(i)??0)!==0;break;case"$TILEMODE":t.tilemode=(rt(i)??1)!==0;break;case"$PSLTSCALE":t.psltscale=(rt(i)??1)!==0;break;case"$CMLSTYLE":case"CMLSTYLE":t.cmlstyle=Zt(i)||xe;break;case"$CMLSCALE":case"CMLSCALE":{const n=rt(i);n!=null&&Number.isFinite(n)&&(t.cmlscale=n);break}case"$CMLEADERSTYLE":case"CMLEADERSTYLE":t.cmleaderstyle=Zt(i)||we;break;case"$HPLAYER":case"HPLAYER":t.hplayer=Zt(i)||".";break;case"$LTSCALE":t.ltscale=rt(i)??1;break;case"$EXTMAX":{const n=vc(i);n&&(t.extmax=n);break}case"$EXTMIN":{const n=vc(i);n&&(t.extmin=n);break}case"$INSUNITS":{const n=rt(i);n!=null&&(t.insunits=n);break}case"$OSMODE":t.osmode=rt(i)??0;break;case"$ORTHOMODE":t.orthomode=rt(i)??0;break;case"$PDMODE":t.pdmode=rt(i)??0;break;case"$PDSIZE":t.pdsize=rt(i)??0;break;case"$TEXTSTYLE":t.textstyle=Zt(i)||st;break;case"$DIMSTYLE":t.dimstyle=Zt(i)||st;break;case"$CLAYER":t.clayer=Zt(i)||"0";break;case"$HANDSEED":{const n=Zt(i);n&&t.initializeHandleSeed(n);break}default:Pm(i);break}}function Zt(i){const t=i.readItem();if(t){if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}return String(t.value)}}function rt(i){const t=i.readItem();if(!t)return;if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}const e=Number(t.value);return Number.isFinite(e)?e:void 0}function vc(i){let t=0,e=0,n=0,r=!1;for(;!i.atEof;){const s=i.peekItem();if(!s)break;const a=Number(s.code);if(a===9||a===0)break;i.readItem();const o=Number(s.value);a===10?(t=o,r=!0):a===20?(e=o,r=!0):a===30&&(n=o,r=!0)}return r?new b(t,e,n):void 0}function Pm(i){for(;!i.atEof;){const t=i.peekItem();if(!t)break;const e=Number(t.code);if(e===9||e===0)break;i.readItem()}}class ou{constructor(t){this._expression=t}get expression(){return this._expression}}var cu=(i=>(i[i.Cancel=0]="Cancel",i[i.Ok=1]="Ok",i))(cu||{});class is{constructor(){this._name="",this._filterExpression="",this._nestedFilters=[],this._parent=null,this._allowDelete=!0,this._allowRename=!0,this._dynamicallyGenerated=!1,this._isProxy=!1}get name(){return this._name}setName(t){return!this.allowRename()&&this._name.length>0?!1:(this._name=t,!0)}set name(t){this.setName(t)}get filterExpression(){return this._filterExpression}setFilterExpression(t){return this.isIdFilter()?!1:(this._filterExpression=t??"",!0)}set filterExpression(t){this.setFilterExpression(t)}filterExpressionTree(){return this.isIdFilter()||!this._filterExpression?null:new ou(this._filterExpression)}getNestedFilters(){return this._nestedFilters}get nestedFilters(){return this._nestedFilters}parent(){return this._parent}isIdFilter(){return!1}allowNested(){return!0}allowDelete(){return this._allowDelete}setAllowDelete(t){this._allowDelete=t}allowRename(){return this._allowRename}setAllowRename(t){this._allowRename=t}dynamicallyGenerated(){return this._dynamicallyGenerated}setDynamicallyGenerated(t){this._dynamicallyGenerated=t}isProxy(){return this._isProxy}setIsProxy(t){this._isProxy=t}addNested(t){return!t||t===this||!this.allowNested()||!(this._parent==null)&&!this.isIdFilter()&&t.isIdFilter()||this._nestedFilters.includes(t)?!1:(t._parent&&t._parent.removeNested(t),t._parent=this,this._nestedFilters.push(t),!0)}removeNested(t){const e=this._nestedFilters.indexOf(t);return e<0?!1:(this._nestedFilters.splice(e,1),t._parent===this&&(t._parent=null),!0)}generateNested(){return!1}compareTo(t){return t?this.isIdFilter()===t.isIdFilter()&&this._name===t._name&&this._filterExpression===t._filterExpression:!1}filter(t){return t?this._filterExpression?Sm(this._filterExpression,t):!0:!1}showEditor(){return 0}}function Sm(i,t){const e=i.trim();return e?Ac(e,"OR").some(r=>Ac(r,"AND").every(a=>Im(a,t))):!0}function Ac(i,t){const e=new RegExp(`\\s+${t}\\s+`,"i");return i.split(e).map(n=>n.trim()).filter(n=>n.length>0)}function Im(i,t){var a;const e=i.trim().match(/^([A-Za-z_]+)\s*(==|=)\s*"?(.*?)"?\s*$/);if(!e)return!1;const n=e[1].toUpperCase(),r=e[3],s=Lm(r);switch(n){case"NAME":return Em(t.name,r);case"LOCKED":return s!=null?t.isLocked===s:!1;case"FROZEN":return s!=null?t.isFrozen===s:!1;case"OFF":return s!=null?t.isOff===s:!1;case"PLOT":return s!=null?t.isPlottable===s:!1;case"COLOR":{const o=(a=t.color)==null?void 0:a.colorIndex;return o!=null&&String(o)===r}case"LINETYPE":return t.linetype.localeCompare(r,void 0,{sensitivity:"accent"})===0;default:return!1}}function Em(i,t){return/[*?]/.test(t)?new RegExp(`^${t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".")}$`,"i").test(i):i.localeCompare(t,void 0,{sensitivity:"accent"})===0}function Lm(i){const t=i.trim().toLowerCase();return t==="true"||t==="1"?!0:t==="false"||t==="0"?!1:null}class Ae{constructor(t,e){this._root=t??Ae.createDefaultRoot(),this._current=e===void 0?this._root:e}static createDefaultRoot(){const t=new is;return t.setName("All"),t.setAllowDelete(!1),t.setAllowRename(!1),t.setFilterExpression(""),t}get root(){return this._root}get current(){return this._current}set current(t){this._current=t}clone(){return new Ae(this._root,this._current)}}class lu extends is{constructor(){super(),this._layerIds=[]}isIdFilter(){return!0}layerIds(){return this._layerIds}get layerIdList(){return this._layerIds}addLayerId(t){return!t||this._layerIds.includes(t)?!1:(this._layerIds.push(t),!0)}removeLayerId(t){const e=this._layerIds.indexOf(t);return e<0?!1:(this._layerIds.splice(e,1),!0)}filter(t){return t?this._layerIds.includes(t.objectId):!1}setFilterExpression(t){return!1}}const rs="ACAD_LAYERFILTERS",In="ACLYDICTIONARY";function hu(i){const t=Ae.createDefaultRoot(),e=new Ae(t,t),n=kc(i,In),r=kc(i,rs);if(n){for(const[s,a]of Object.entries(n.entries)){const o=na(i,a,s);o&&t.addNested(o)}return e}if(r)for(const[s,a]of Object.entries(r.entries)){const o=na(i,a,s);o&&t.addNested(o)}return e}function uu(i){const t=[];for(const e of i.root.getNestedFilters())t.push(fu(e));return{nodes:t}}function du(i){const t=new qe;for(const e of i)t.add({code:e.code,value:e.value});return t}function Tm(i){return i?i.toArray().map(t=>({code:Number(t.code),value:t.value})):[]}function kc(i,t){let e;for(const n of i.dictionaries.values()){const r=n.entries[t];if(!r)continue;const s=i.dictionaries.get(me(r));if(!s)continue;if(!(n.ownerObjectId?i.xrecords.has(me(n.ownerObjectId)):!1))return s;e=s}return e}function na(i,t,e){const n=i.xrecords.get(me(t));if(!n)return;const r=gu(n.data,e),s=r.isIdFilter?new lu:new is;if(s.setAllowRename(!0),s.setName(r.name||e),!r.isIdFilter)s.setFilterExpression(r.filterExpression);else{const a=s;for(const o of r.layerIds)a.addLayerId(o)}for(const a of Cm(i,n)){const o=na(i,a.handle,a.key);o&&s.addNested(o)}return s}function Cm(i,t){const e=[],n=new Set,r=me(t.handle),s=t.extensionDictionaryId?me(t.extensionDictionaryId):void 0,a=(o,c)=>{const l=me(c);n.has(l)||(n.add(l),e.push({key:o,handle:c}))};for(const o of i.dictionaries.values()){const c=o.ownerObjectId?me(o.ownerObjectId):void 0;if(!c||!(c===r||c===s))continue;const h=o.entries[In];if(h){const u=i.dictionaries.get(me(h));if(u){for(const[d,g]of Object.entries(u.entries))a(d,g);continue}}for(const[u,d]of Object.entries(o.entries))u===In||u===rs||a(u,d)}return e}function gu(i,t=""){const e=[],n=[];let r=0,s,a,o;for(const f of i){const p=Number(f.code),m=f.value;p===1&&typeof m=="string"?e.push(m):p===300&&typeof m=="string"?a=m:p===301&&typeof m=="string"?o=m:p===70||p===90?r=Number(m)||0:p===290||p===280?s=Number(m)===1:(p===330||p===340||p===350||p===360)&&m!=null&&String(m).length>0&&n.push(me(String(m)))}const c=e[0],h=a||(c==="AcLyLayerFilter"||c==="AcLyLayerGroup"?void 0:c)||t,u=e[1]??"";let d=o??u;!o&&d&&d!=="*"&&!/==/.test(d)&&(d=`NAME=="${d}"`);const g=o!=null&&o.length>0?!1:s===!0&&n.length>0?!0:n.length>0&&(d.length===0||d==="*");return{name:h,filterExpression:g?"":d,flags:r,layerIds:n,isIdFilter:g}}function fu(i){const t=i.isIdFilter(),e=pu(i),n=i.getNestedFilters().map(s=>fu(s));return{key:i.name||(t?"Group":"Filter"),isIdFilter:t,data:e,children:n}}function pu(i){const t=[];if(t.push({code:1,value:i.name}),i.isIdFilter()){t.push({code:1,value:""}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:1});const e=i;for(const n of e.layerIds())t.push({code:330,value:n})}else t.push({code:1,value:i.filterExpression||"*"}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:0});return t}function me(i){return i.trim().toUpperCase()}class mu extends vt{constructor(){super(...arguments),this._name="",this._unnamed=!1,this._selectable=!0,this._entityIds=[]}get name(){return this._name}set name(t){this._name=t}get unnamed(){return this._unnamed}set unnamed(t){this._unnamed=t}get selectable(){return this._selectable}set selectable(t){this._selectable=t}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbGroup"),this.name&&t.writeString(300,this.name),t.writeInt16(70,this.unnamed?1:0),t.writeInt16(71,this.selectable?1:0);for(const e of this._entityIds)t.writeObjectId(340,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbGroup"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 300:this._name=String(e.value);break;case 70:this._unnamed=Number(e.value)!==0;break;case 71:this._selectable=Number(e.value)!==0;break;case 340:this._entityIds.push(String(e.value));break}}return this}}class yu extends vt{constructor(){super(),this._boundaryVertices=[],this._clipBoundaryDisplayEnabled=!1,this._frontClippingEnabled=!1,this._backClippingEnabled=!1}get boundaryVertices(){return this._boundaryVertices}set boundaryVertices(t){this._boundaryVertices=t.map(e=>e.clone())}get clipBoundaryNormal(){return this._clipBoundaryNormal}set clipBoundaryNormal(t){this._clipBoundaryNormal=t==null?void 0:t.clone()}get clipBoundaryOrigin(){return this._clipBoundaryOrigin}set clipBoundaryOrigin(t){this._clipBoundaryOrigin=t==null?void 0:t.clone()}get clipBoundaryDisplayEnabled(){return this._clipBoundaryDisplayEnabled}set clipBoundaryDisplayEnabled(t){this._clipBoundaryDisplayEnabled=t}get frontClippingEnabled(){return this._frontClippingEnabled}set frontClippingEnabled(t){this._frontClippingEnabled=t}get frontClippingDistance(){return this._frontClippingDistance}set frontClippingDistance(t){this._frontClippingDistance=t}get backClippingEnabled(){return this._backClippingEnabled}set backClippingEnabled(t){this._backClippingEnabled=t}get backClippingDistance(){return this._backClippingDistance}set backClippingDistance(t){this._backClippingDistance=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFilter"),this._boundaryVertices.length>0&&(t.writeInt16(70,this._boundaryVertices.length),this._boundaryVertices.forEach(e=>t.writePoint2d(10,e)),t.writeVector3d(210,this._clipBoundaryNormal),t.writePoint3d(11,this._clipBoundaryOrigin),t.writeInt16(71,this._clipBoundaryDisplayEnabled?1:0),t.writeInt16(72,this._frontClippingEnabled?1:0),this._frontClippingEnabled&&this._frontClippingDistance!=null&&t.writeDouble(40,this._frontClippingDistance),t.writeInt16(73,this._backClippingEnabled?1:0),this._backClippingEnabled&&this._backClippingDistance!=null&&t.writeDouble(41,this._backClippingDistance)),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFilter");let e=null,n=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===100){t.pushBackItem(r);break}const a=Number(r.value);switch(s){case 70:break;case 10:e&&this._boundaryVertices.push(new L(e.x,e.y)),e={x:a,y:0};break;case 20:e&&(e.y=a);break;case 210:this._clipBoundaryNormal=this._clipBoundaryNormal??new b,this._clipBoundaryNormal.x=a;break;case 220:this._clipBoundaryNormal&&(this._clipBoundaryNormal.y=a);break;case 230:this._clipBoundaryNormal&&(this._clipBoundaryNormal.z=a);break;case 11:this._clipBoundaryOrigin=this._clipBoundaryOrigin??new b,this._clipBoundaryOrigin.x=a;break;case 21:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.y=a);break;case 31:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.z=a);break;case 71:this._clipBoundaryDisplayEnabled=a!==0;break;case 72:this._frontClippingEnabled=a!==0;break;case 73:this._backClippingEnabled=a!==0;break;case 40:n||(this._frontClippingDistance=a,n=!0);break;case 41:this._backClippingDistance=a;break}}return e&&this._boundaryVertices.push(new L(e.x,e.y)),this}}class bu extends yu{constructor(){super(),this._layerNames=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}add(t){const e=t==null?void 0:t.trim();return!e||this._layerNames.includes(e)?!1:(this._layerNames.push(e),!0)}getAt(t){if(t<0||t>=this._layerNames.length)throw new Error("The layer index is out of range!");return this._layerNames[t]}remove(t){const e=this._layerNames.indexOf(t);return e<0?!1:(this._layerNames.splice(e,1),!0)}layerCount(){return this._layerNames.length}indexClass(){return"AcDbLayerIndex"}isValid(){return this._layerNames.some(t=>t.length>0)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerFilter");for(const e of this._layerNames)t.writeString(8,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbLayerFilter");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 8:this.add(String(e.value));break;case 100:return t.pushBackItem(e),this}}return this}}class _u extends vt{constructor(){super(),this._lastUpdatedAt=0,this._lastUpdatedAtU=0,this._isUptoDate=!1,this._objectBeingIndexedId=""}get lastUpdatedAt(){return this._lastUpdatedAt}set lastUpdatedAt(t){this._lastUpdatedAt=t}get lastUpdatedAtU(){return this._lastUpdatedAtU}set lastUpdatedAtU(t){this._lastUpdatedAtU=t}get isUptoDate(){return this._isUptoDate}set isUptoDate(t){this._isUptoDate=t}objectBeingIndexedId(){return this._objectBeingIndexedId}setObjectBeingIndexedId(t){this._objectBeingIndexedId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbIndex"),t.writeDouble(40,this.lastUpdatedAt),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbIndex");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 40:this.lastUpdatedAt=Number(e.value),this.lastUpdatedAtU=this.lastUpdatedAt;break;case 100:return t.pushBackItem(e),this}}return this}}class xu extends _u{constructor(){super(),this._layerNames=[],this._idBufferIds=[],this._idBufferEntryCounts=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}get idBufferIds(){return this._idBufferIds}set idBufferIds(t){this._idBufferIds=[...t]}get idBufferEntryCounts(){return this._idBufferEntryCounts}set idBufferEntryCounts(t){this._idBufferEntryCounts=[...t]}get entries(){const t=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length),e=[];for(let n=0;n<t;n++)e.push({layerName:this._layerNames[n]??"",idBufferId:this._idBufferIds[n]??"",idBufferEntryCount:this._idBufferEntryCounts[n]??0});return e}set entries(t){this._layerNames=t.map(e=>e.layerName),this._idBufferIds=t.map(e=>e.idBufferId),this._idBufferEntryCounts=t.map(e=>e.idBufferEntryCount)}compute(t,e){if(e&&this.setObjectBeingIndexedId(e.objectId),t){this._layerNames=[];for(const n of t.newIterator())this._layerNames.push(n.name)}return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}newIterator(t){return null}rebuildFull(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}rebuildModified(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerIndex");const e=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length);for(let n=0;n<e;n++)this._layerNames[n]!=null&&t.writeString(8,this._layerNames[n]),this._idBufferIds[n]&&t.writeHandle(360,this._idBufferIds[n]),this._idBufferEntryCounts[n]!=null&&t.writeInt32(90,this._idBufferEntryCounts[n]);return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLayerIndex");const e=[],n=[],r=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;switch(Number(s.code)){case 8:e.push(String(s.value));break;case 360:n.push(String(s.value));break;case 90:r.push(Number(s.value));break;case 100:return t.pushBackItem(s),this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}return this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}class ss extends vt{constructor(){super(),this._contentType=2,this._drawMLeaderOrderType=1,this._drawLeaderOrderType=0,this._bitFlags=0,this._maxLeaderSegmentsPoints=-1,this._firstSegmentAngleConstraint=0,this._secondSegmentAngleConstraint=0,this._leaderLineType=1,this._leaderLineColor=new j(exports.AcCmColorMethod.ByLayer),this._leaderLineWeight=-2,this._enableLanding=!0,this._landingGap=2,this._enableDogleg=!0,this._doglegLength=8,this._description="",this._arrowSize=4,this._defaultMTextContents="",this._textLeftAttachmentType=1,this._textAngleType=1,this._textAlignmentType=0,this._textRightAttachmentType=1,this._textColor=new j(exports.AcCmColorMethod.ByLayer),this._textHeight=4,this._enableFrameText=!1,this._textAlignAlwaysLeft=!1,this._alignSpace=0,this._blockColor=new j(exports.AcCmColorMethod.ByBlock),this._blockScale=new x(1,1,1),this._enableBlockScale=!0,this._blockRotation=0,this._enableBlockRotation=!1,this._blockConnectionType=0,this._scale=1,this._overwritePropChanged=!1,this._annotative=!1,this._breakSize=0,this._textAttachmentDirection=0,this._bottomTextAttachmentType=9,this._topTextAttachmentType=9,this._extendLeaderToText=!1}get unknown1(){return this._unknown1}set unknown1(t){this._unknown1=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get drawMLeaderOrderType(){return this._drawMLeaderOrderType}set drawMLeaderOrderType(t){this._drawMLeaderOrderType=t}get drawLeaderOrderType(){return this._drawLeaderOrderType}set drawLeaderOrderType(t){this._drawLeaderOrderType=t}get bitFlags(){return this._bitFlags}set bitFlags(t){this._bitFlags=t}get maxLeaderSegmentsPoints(){return this._maxLeaderSegmentsPoints}set maxLeaderSegmentsPoints(t){this._maxLeaderSegmentsPoints=t}get maxLeaderSegmentPoints(){return this.maxLeaderSegmentsPoints}set maxLeaderSegmentPoints(t){this.maxLeaderSegmentsPoints=t}get firstSegmentAngleConstraint(){return this._firstSegmentAngleConstraint}set firstSegmentAngleConstraint(t){this._firstSegmentAngleConstraint=t}get secondSegmentAngleConstraint(){return this._secondSegmentAngleConstraint}set secondSegmentAngleConstraint(t){this._secondSegmentAngleConstraint=t}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor.copy(t)}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get enableLanding(){return this._enableLanding}set enableLanding(t){this._enableLanding=t}get landingEnabled(){return this.enableLanding}set landingEnabled(t){this.enableLanding=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get enableDogleg(){return this._enableDogleg}set enableDogleg(t){this._enableDogleg=t}get doglegEnabled(){return this.enableDogleg}set doglegEnabled(t){this.enableDogleg=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get description(){return this._description}set description(t){this._description=t}get arrowSymbolId(){return this._arrowSymbolId}set arrowSymbolId(t){this._arrowSymbolId=t}get arrowheadId(){return this.arrowSymbolId}set arrowheadId(t){this.arrowSymbolId=t}get arrowSize(){return this._arrowSize}set arrowSize(t){this._arrowSize=t}get arrowheadSize(){return this.arrowSize}set arrowheadSize(t){this.arrowSize=t}get defaultMTextContents(){return this._defaultMTextContents}set defaultMTextContents(t){this._defaultMTextContents=t}get defaultMText(){return this.defaultMTextContents}set defaultMText(t){this.defaultMTextContents=t}get textString(){return this.defaultMTextContents}set textString(t){this.defaultMTextContents=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textStyle(){return this.textStyleId}set textStyle(t){this.textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor.copy(t)}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get enableFrameText(){return this._enableFrameText}set enableFrameText(t){this._enableFrameText=t}get textFrameEnabled(){return this.enableFrameText}set textFrameEnabled(t){this.enableFrameText=t}get textAlignAlwaysLeft(){return this._textAlignAlwaysLeft}set textAlignAlwaysLeft(t){this._textAlignAlwaysLeft=t}get alignSpace(){return this._alignSpace}set alignSpace(t){this._alignSpace=t}get blockId(){return this._blockId}set blockId(t){this._blockId=t}get blockContentId(){return this.blockId}set blockContentId(t){this.blockId=t}get blockColor(){return this._blockColor}set blockColor(t){this._blockColor.copy(t)}get blockContentColor(){return this.blockColor}set blockContentColor(t){this.blockColor=t}get blockScale(){return this._blockScale.clone()}set blockScale(t){this._blockScale.copy(t)}get blockContentScale(){return this.blockScale}set blockContentScale(t){this.blockScale=t}get enableBlockScale(){return this._enableBlockScale}set enableBlockScale(t){this._enableBlockScale=t}get blockContentScaleEnabled(){return this.enableBlockScale}set blockContentScaleEnabled(t){this.enableBlockScale=t}get blockRotation(){return this._blockRotation}set blockRotation(t){this._blockRotation=t}get blockContentRotation(){return this.blockRotation}set blockContentRotation(t){this.blockRotation=t}get enableBlockRotation(){return this._enableBlockRotation}set enableBlockRotation(t){this._enableBlockRotation=t}get blockContentRotationEnabled(){return this.enableBlockRotation}set blockContentRotationEnabled(t){this.enableBlockRotation=t}get blockConnectionType(){return this._blockConnectionType}set blockConnectionType(t){this._blockConnectionType=t}get blockContentConnectionType(){return this.blockConnectionType}set blockContentConnectionType(t){this.blockConnectionType=t}get scale(){return this._scale}set scale(t){this._scale=t}get scaleFactor(){return this.scale}set scaleFactor(t){this.scale=t}get overwritePropChanged(){return this._overwritePropChanged}set overwritePropChanged(t){this._overwritePropChanged=t}get overwritePropertyValue(){return this.overwritePropChanged}set overwritePropertyValue(t){this.overwritePropChanged=t}get annotative(){return this._annotative}set annotative(t){this._annotative=t}get breakSize(){return this._breakSize}set breakSize(t){this._breakSize=t}get breakGapSize(){return this.breakSize}set breakGapSize(t){this.breakSize=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get bottomTextAttachmentType(){return this._bottomTextAttachmentType}set bottomTextAttachmentType(t){this._bottomTextAttachmentType=t}get bottomTextAttachmentDirection(){return this.bottomTextAttachmentType}set bottomTextAttachmentDirection(t){this.bottomTextAttachmentType=t}get topTextAttachmentType(){return this._topTextAttachmentType}set topTextAttachmentType(t){this._topTextAttachmentType=t}get topTextAttachmentDirection(){return this.topTextAttachmentType}set topTextAttachmentDirection(t){this.topTextAttachmentType=t}get extendLeaderToText(){return this._extendLeaderToText}set extendLeaderToText(t){this._extendLeaderToText=t}get unknown2(){return this._unknown2}set unknown2(t){this._unknown2=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeaderStyle"),t.writeInt16(179,this.unknown1),t.writeInt16(170,this.contentType),t.writeInt16(171,this.drawMLeaderOrderType),t.writeInt16(172,this.drawLeaderOrderType),t.writeInt32(90,this.maxLeaderSegmentsPoints),t.writeDouble(40,this.firstSegmentAngleConstraint),t.writeDouble(41,this.secondSegmentAngleConstraint),t.writeInt16(173,this.leaderLineType),t.writeInt32(91,ks(this.leaderLineColor)),t.writeHandle(340,this.leaderLineTypeId),t.writeInt32(92,this.leaderLineWeight),t.writeBoolean(290,this.enableLanding),t.writeDouble(42,this.landingGap),t.writeBoolean(291,this.enableDogleg),t.writeDouble(43,this.doglegLength),t.writeString(3,this.description),t.writeHandle(341,this.arrowSymbolId),t.writeDouble(44,this.arrowSize),t.writeString(300,this.defaultMTextContents),t.writeHandle(342,this.textStyleId),t.writeInt16(174,this.textLeftAttachmentType),t.writeInt16(175,this.textAngleType),t.writeInt16(176,this.textAlignmentType),t.writeInt16(178,this.textRightAttachmentType),t.writeInt32(93,ks(this.textColor)),t.writeDouble(45,this.textHeight),t.writeBoolean(292,this.enableFrameText),t.writeBoolean(297,this.textAlignAlwaysLeft),t.writeDouble(46,this.alignSpace),t.writeHandle(343,this.blockId),t.writeInt32(94,ks(this.blockColor)),t.writeDouble(47,this._blockScale.x),t.writeDouble(49,this._blockScale.y),t.writeDouble(140,this._blockScale.z),t.writeBoolean(293,this.enableBlockScale),t.writeDouble(141,this.blockRotation),t.writeBoolean(294,this.enableBlockRotation),t.writeInt16(177,this.blockConnectionType),t.writeDouble(142,this.scale),t.writeBoolean(295,this.overwritePropChanged),t.writeBoolean(296,this.annotative),t.writeDouble(143,this.breakSize),t.writeInt16(271,this.textAttachmentDirection),t.writeInt16(272,this.bottomTextAttachmentType),t.writeInt16(273,this.topTextAttachmentType),t.writeBoolean(298,this.unknown2),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbMLeaderStyle");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 179:this.unknown1=r;break;case 170:this.contentType=r;break;case 171:this.drawMLeaderOrderType=r;break;case 172:this.drawLeaderOrderType=r;break;case 90:this.maxLeaderSegmentsPoints=r;break;case 40:this.firstSegmentAngleConstraint=r;break;case 41:this.secondSegmentAngleConstraint=r;break;case 173:this.leaderLineType=r;break;case 91:this.leaderLineColor=re(r);break;case 340:this.leaderLineTypeId=String(e.value);break;case 92:this.leaderLineWeight=r;break;case 290:this.enableLanding=r!==0;break;case 42:this.landingGap=r;break;case 291:this.enableDogleg=r!==0;break;case 43:this.doglegLength=r;break;case 3:this.description=String(e.value);break;case 341:this.arrowSymbolId=String(e.value);break;case 44:this.arrowSize=r;break;case 300:this.defaultMTextContents=String(e.value);break;case 342:this.textStyleId=String(e.value);break;case 174:this.textLeftAttachmentType=r;break;case 175:this.textAngleType=r;break;case 176:this.textAlignmentType=r;break;case 178:this.textRightAttachmentType=r;break;case 93:this.textColor=re(r);break;case 45:this.textHeight=r;break;case 292:this.enableFrameText=r!==0;break;case 297:this.textAlignAlwaysLeft=r!==0;break;case 46:this.alignSpace=r;break;case 343:this.blockId=String(e.value);break;case 94:this.blockColor=re(r);break;case 47:this._blockScale.x=r;break;case 49:this._blockScale.y=r;break;case 140:this._blockScale.z=r;break;case 293:this.enableBlockScale=r!==0;break;case 141:this.blockRotation=r;break;case 294:this.enableBlockRotation=r!==0;break;case 177:this.blockConnectionType=r;break;case 142:this.scale=r;break;case 295:this.overwritePropChanged=r!==0;break;case 296:this.annotative=r!==0;break;case 143:this.breakSize=r;break;case 271:this.textAttachmentDirection=r;break;case 272:this.bottomTextAttachmentType=r;break;case 273:this.topTextAttachmentType=r;break;case 298:this.unknown2=r!==0;break;case 100:return t.pushBackItem(e),this}}return this}}class Ua extends vt{constructor(){super(),this._styleName="STANDARD",this._flags=0,this._description="",this._fillColor=new j,this._startAngle=90,this._endAngle=90,this._elements=[]}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get flags(){return this._flags}set flags(t){this._flags=t}get description(){return this._description}set description(t){this._description=t}get fillColor(){return this._fillColor}set fillColor(t){this._fillColor.copy(t)}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=t}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=t}get elementCount(){return this._elements.length}get elements(){return this._elements.map(t=>({offset:t.offset,color:t.color.clone(),lineType:t.lineType}))}set elements(t){this._elements=t.map(e=>({offset:e.offset,color:e.color.clone(),lineType:e.lineType}))}addElement(t){this._elements.push({offset:t.offset,color:t.color.clone(),lineType:t.lineType})}removeElementAt(t){if(t<0||t>=this._elements.length)throw new Error("The element index is out of range!");this._elements.splice(t,1)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMlineStyle"),t.writeString(2,this.styleName),t.writeInt16(70,this.flags),t.writeString(3,this.description),t.writeCmColor(this.fillColor),t.writeDouble(51,this.startAngle),t.writeDouble(52,this.endAngle),t.writeInt16(71,this.elementCount),this._elements.forEach(e=>{t.writeDouble(49,e.offset),t.writeCmColor(e.color),t.writeString(6,e.lineType)}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMlineStyle");const e=[];let n,r=0;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 2:this.styleName=String(s.value);break;case 70:this.flags=o;break;case 3:this.description=String(s.value);break;case 51:this.startAngle=o;break;case 52:this.endAngle=o;break;case 71:r=o;break;case 49:{n={offset:o,color:new j,lineType:"BYLAYER"},n.color.colorIndex=256,e.push(n);break}case 62:n?n.color.colorIndex=o:this.fillColor.colorIndex=o;break;case 420:n?n.color.setRGBValue(o):this.fillColor.setRGBValue(o);break;case 6:n&&(n.lineType=String(s.value));break;case 100:return t.pushBackItem(s),this.finishMlineElements(e,r),this}}return this.finishMlineElements(e,r),this}finishMlineElements(t,e){const n=Math.max(e,t.length);if(n<=0){this.elements=[];return}this.elements=Array.from({length:n},(r,s)=>{const a=t[s];if(a)return a;const o=new j;return o.colorIndex=256,{offset:0,color:o,lineType:"BYLAYER"}})}}class wu extends vt{constructor(){super(),this._isLoaded=!0,this._resolutionUnits=0,this._sourceFileName="",this._classVersion=0,this._imageSize=new L,this._pixelSize=new L(1,1)}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize.copy(t)}get isLoaded(){return this._isLoaded}set isLoaded(t){this._isLoaded=t}get resolutionUnits(){return this._resolutionUnits}set resolutionUnits(t){this._resolutionUnits=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImageDef"),t.writeInt32(90,this.classVersion),t.writeString(1,this.sourceFileName),t.writePoint2d(10,this.imageSize),t.writeDouble(11,this.pixelSize.x),t.writeDouble(12,this.pixelSize.y),t.writeInt16(280,this.isLoaded?1:0),t.writeInt16(281,this.resolutionUnits),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbRasterImageDef");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.sourceFileName=String(e.value);break;case 90:this.classVersion=r;break;case 10:this.imageSize.x=r;break;case 20:this.imageSize.y=r;break;case 11:this.pixelSize.x=r;break;case 12:this.pixelSize.y=r;break;case 280:this.isLoaded=r!==0;break;case 281:this.resolutionUnits=r;break;case 100:return t.pushBackItem(e),this}}return this}}class vu extends vt{constructor(){super(...arguments),this._entityIds=[]}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbSortentsTable");for(const e of this._entityIds)t.writeObjectId(331,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSortentsTable"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 331:this._entityIds.push(String(e.value));break}}return this}}var Au=(i=>(i[i.NotApplicable=0]="NotApplicable",i[i.Ignore=1]="Ignore",i[i.Replace=2]="Replace",i[i.XrefMangleName=3]="XrefMangleName",i[i.MangleName=4]="MangleName",i))(Au||{});class Ha extends vt{constructor(){super(...arguments),this._data=null}get data(){return this._data}set data(t){this._data=t}clear(){var t;(t=this._data)==null||t.clear()}clone(){return super.clone()}getDuplicateRecordCloning(){return this._cloningFlag??0}setDuplicateRecordCloning(t){this._cloningFlag=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXrecord"),t.writeInt16(280,this._cloningFlag??1),t.writeResultBuffer(this.data),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXrecord");const e=new qe;for(;!t.atEndOfObject&&!t.atEof;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===1001||r>=1e3&&r<=1071){t.pushBackItem(n);break}if(r===100){t.pushBackItem(n);break}switch(r){case 280:this._cloningFlag=Number(n.value);break;default:e.add({code:n.code,value:n.value});break}}return this._data=e.length>0?e:null,this}}const Nt=i=>i?i.trim().toUpperCase():"";class ku{constructor(t){this._db=t,this._dictionaries=new Map,this._xrecords=new Map,this._unknownObjectCount=0}get unknownObjectCount(){return this._unknownObjectCount}read(t){for(this._unknownObjectCount=0;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}t.readItem(),this.readObject(t,n)}this.finishNamedObjectDictionaries(),this.finishLayerFilterTree(),this.linkLayoutsToBlockTableRecords(),this._db.objects.layout.numEntries===0&&this._db.createDefaultData({layout:!0})}readObject(t,e){switch(e){case"LAYOUT":{const n=new vi;n.dxfIn(t),n.layoutName&&this._db.objects.layout.setAt(n.layoutName,n);break}case"IMAGEDEF":{const n=new wu;n.dxfIn(t),this._db.objects.imageDefinition.setAt(n.objectId,n);break}case"LAYER_FILTER":{const n=new bu;n.dxfIn(t),this._db.objects.layerFilter.setAt(n.objectId,n);break}case"LAYER_INDEX":{const n=new xu;n.dxfIn(t),this._db.objects.layerIndex.setAt(n.objectId,n);break}case"MLEADERSTYLE":{const n=new ss;n.dxfIn(t),this._db.objects.mleaderStyle.setAt(n.objectId,n);break}case"MLINESTYLE":{const n=new Ua;n.dxfIn(t),this._db.objects.mlineStyle.setAt(n.styleName||n.objectId,n);break}case"GROUP":{const n=new mu;n.dxfIn(t);const r=n.name||n.objectId;this._db.objects.group.setAt(r,n);break}case"SORTENTSTABLE":{const n=new vu;n.dxfIn(t),this._db.objects.sortentsTable.setAt(n.objectId,n);break}case"DICTIONARY":{const n=this.readPersistDictionary(t);n.handle&&this._dictionaries.set(Nt(n.handle),n);break}case"XRECORD":{const n=new Ha;n.dxfIn(t);const r=Nt(n.objectId);if(r){this._db.objects.xrecord.setAt(r,n);const s={handle:r,ownerObjectId:Nt(n.ownerId),data:n.data?n.data.toArray().map(a=>({code:Number(a.code),value:a.value})):[]};n.extensionDictionary&&(s.extensionDictionaryId=Nt(n.extensionDictionary)),this._xrecords.set(r,s)}break}default:this._unknownObjectCount+=1,t.skipToEndOfObject();break}}finishNamedObjectDictionaries(){if(this._dictionaries.size===0)return;let t;for(const s of this._dictionaries.values())if(!s.ownerObjectId||s.ownerObjectId==="0"){t=s;break}if(!(t!=null&&t.handle))return;const e=this._db.objects.dictionary;e.objectId=t.handle,e.ownerId="0";const n={ACAD_LAYOUT:this._db.objects.layout,ACAD_GROUP:this._db.objects.group,ACAD_SORTENTS:this._db.objects.sortentsTable,ACAD_MLEADERSTYLE:this._db.objects.mleaderStyle,ACAD_MLINESTYLE:this._db.objects.mlineStyle,ISM_RASTER_IMAGE_DICT:this._db.objects.imageDefinition,MLIGHT_XRECORD:this._db.objects.xrecord},r=this.collectLoadedObjectsByHandle();for(const[s,a]of Object.entries(t.entries)){const o=n[s.toUpperCase()];if(!o)continue;o.objectId=a,o.ownerId=t.handle,e.setAt(s,o);const c=this._dictionaries.get(Nt(a));if(c)for(const[l,h]of Object.entries(c.entries)){const u=r.get(Nt(h));u&&(o.getAt(l)||o.setAt(l,u))}}}collectLoadedObjectsByHandle(){const t=new Map,e=n=>{const r=Nt(n.objectId);r&&t.set(r,n)};for(const[,n]of this._db.objects.layout.entries())e(n);for(const[,n]of this._db.objects.group.entries())e(n);for(const[,n]of this._db.objects.sortentsTable.entries())e(n);for(const[,n]of this._db.objects.imageDefinition.entries())e(n);for(const[,n]of this._db.objects.mleaderStyle.entries())e(n);for(const[,n]of this._db.objects.mlineStyle.entries())e(n);for(const[,n]of this._db.objects.layerFilter.entries())e(n);for(const[,n]of this._db.objects.layerIndex.entries())e(n);for(const[,n]of this._db.objects.xrecord.entries())e(n);return t}readPersistDictionary(t){const e={handle:"",ownerObjectId:"",entries:{}};let n;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);switch(s){case 5:e.handle=String(r.value);break;case 330:e.ownerObjectId=String(r.value);break;case 100:case 280:case 281:break;case 3:n=String(r.value);break;case 350:case 340:case 360:{const a=Nt(String(r.value));n?(e.entries[n]=a,n=void 0):s===360&&!e.extensionDictionaryId&&(e.extensionDictionaryId=a);break}}}return e.handle=Nt(e.handle),e.ownerObjectId=Nt(e.ownerObjectId),e.extensionDictionaryId&&(e.extensionDictionaryId=Nt(e.extensionDictionaryId)),e}finishLayerFilterTree(){if(this._dictionaries.size===0&&this._xrecords.size===0)return;const t=hu({dictionaries:this._dictionaries,xrecords:this._xrecords});t.root.getNestedFilters().length>0&&(this._db.layerFilters=t),this._dictionaries.clear(),this._xrecords.clear()}linkLayoutsToBlockTableRecords(){const t=this._db.tables.blockTable,e=nt.MODEL_SPACE_NAME.toUpperCase();for(const[,n]of this._db.objects.layout.entries()){if(n.layoutName==="Model"){const a=t.modelSpace;n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;continue}const r=Nt(n.objectId);let s=!1;for(const a of t.newIterator())if(Nt(a.layoutId)===r){n.blockTableRecordId=a.objectId,s=!0;break}if(!s&&n.blockTableRecordId){const a=t.getIdAt(n.blockTableRecordId);a&&(a.layoutId=n.objectId)}else if(!s){for(const a of t.newIterator())if(a.isPaperSapce&&a.name.toUpperCase()!==e&&!a.layoutId){n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;break}}}}}class Pu{constructor(t,e={}){this._db=t,this._options=e,this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap=new Map,this._yieldGate=new Hr(this._options.yieldBudgetMs??qn)}get unknownEntityCount(){return this._unknownEntityCount}get unknownObjectCount(){return this._unknownObjectCount}async read(t){for(this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap.clear(),t.database=this._db;!t.atEof;){const e=t.readItem();if(!e)break;if(Number(e.code)!==0)continue;const n=String(e.value).toUpperCase();if(n==="EOF")break;if(n==="SECTION"){const r=this.readSectionName(t);await this.readSection(t,r);continue}}return this.flushRemainingAttributes(),{unknownEntityCount:this._unknownEntityCount,unknownObjectCount:this._unknownObjectCount}}readSectionName(t){const e=t.readItem();return e&&Number(e.code)===2?String(e.value).toUpperCase():(e&&t.pushBackItem(e),"")}async readSection(t,e){switch(e){case"HEADER":au(t,this._db),await this.reportParseProgress(t);break;case"CLASSES":this.readClassesSection(t),await this.reportParseProgress(t);break;case"TABLES":this.readTablesSection(t),await this.reportParseProgress(t);break;case"BLOCKS":await this.readBlocksSection(t),await this.reportParseProgress(t);break;case"ENTITIES":await this.readEntitiesSection(t),await this.reportParseProgress(t);break;case"OBJECTS":{const n=new ku(this._db);n.read(t),this._unknownObjectCount+=n.unknownObjectCount}await this.reportParseProgress(t);break;case"ACDSDATA":this.applyAcdsDataToSolids(Am(t)),await this.reportParseProgress(t);break;case"THUMBNAILIMAGE":this.readThumbnailImageSection(t),await this.reportParseProgress(t);break;default:this.skipUntilEndSec(t),await this.reportParseProgress(t);break}}applyAcdsDataToSolids(t){const e=Object.keys(t.byOwnerHandle);if(e.length===0)return;const n=new Map;for(const r of this._db.tables.blockTable.newIterator())for(const s of r.newIterator())s instanceof ti&&n.set(ea(s.objectId),s);for(const r of e){const s=t.byOwnerHandle[r];if(!s)continue;const a=n.get(ea(r));a&&a.setSabBytes(s)}}readThumbnailImageSection(t){let e=0;const n=[];for(;!t.atEof;){const s=t.readItem();if(!s)break;if(Number(s.code)===0){if(String(s.value).toUpperCase()==="ENDSEC")break;t.pushBackItem(s);break}Number(s.code)===90?e=Number(s.value)||0:Number(s.code)===310&&(s.value instanceof Uint8Array?n.push(s.value):n.push(String(s.value)))}if(n.length===0)return;const r=wi(n);!r||r.length===0||(this._db.thumbnailImage=e>0&&r.length>e?r.subarray(0,e):r)}readClassesSection(t){const e=[];for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDSEC"){t.readItem();break}if(r==="CLASS"){t.readItem();const s=this.readClassRecord(t);(s.name||s.cppClassName)&&e.push(s);continue}t.readItem(),t.skipToEndOfObject()}e.length>0&&(this._db.classes=e)}readClassRecord(t){const e={name:"",cppClassName:"",appName:"",proxyFlag:0,instanceCount:0,wasProxy:!1,isEntity:!1};for(;!t.atEndOfObject&&!t.atEof;){const n=t.readItem();if(!n)break;switch(Number(n.code)){case 1:e.name=String(n.value);break;case 2:e.cppClassName=String(n.value);break;case 3:e.appName=String(n.value);break;case 90:e.proxyFlag=Number(n.value);break;case 91:e.instanceCount=Number(n.value);break;case 280:e.wasProxy=Number(n.value)!==0;break;case 281:e.isEntity=Number(n.value)!==0;break}}return e}readTablesSection(t){for(;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}if(n==="TABLE"){t.readItem();const r=this.readTableName(t);this.readTable(t,r);continue}t.readItem(),t.skipToEndOfObject()}this._db.ensureTextStyleDefaults()}readTableName(t){for(;!t.atEof;){const e=t.peekItem();if(!e)return"";const n=Number(e.code);if(n===0)return"";if(t.readItem(),n===2)return String(e.value).toUpperCase()}return""}readTable(t,e){switch(e){case"LAYER":this.readNamedTable(t,"LAYER",()=>new ki,n=>{n.name&&this._db.tables.layerTable.add(n)});break;case"LTYPE":this.readNamedTable(t,"LTYPE",()=>new Ne,n=>{n.name&&this._db.tables.linetypeTable.add(n)});break;case"STYLE":this.readNamedTable(t,"STYLE",()=>new Jr,n=>{this._db.tables.textStyleTable.add(n)});break;case"DIMSTYLE":this.readNamedTable(t,"DIMSTYLE",()=>new Ft,n=>{n.name&&this._db.tables.dimStyleTable.add(n)});break;case"VPORT":this.readNamedTable(t,"VPORT",()=>new Be,n=>{n.name&&this._db.tables.viewportTable.add(n)});break;case"APPID":this.readNamedTable(t,"APPID",()=>new cr,n=>{n.name&&this._db.tables.appIdTable.add(n)});break;case"VIEW":this.readNamedTable(t,"VIEW",()=>new iu,n=>{n.name&&this._db.tables.viewTable.add(n)});break;case"UCS":this.readNamedTable(t,"UCS",()=>new nu,n=>{n.name&&this._db.tables.ucsTable.add(n)});break;case"BLOCK_RECORD":this.readBlockRecordTable(t);break;default:this.skipUntilEndTab(t);break}}readNamedTable(t,e,n,r){for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDTAB"){t.readItem();break}if(a==="ENDSEC")break;if(a===e){t.readItem();const o=n();o.dxfIn(t),r(o);continue}t.readItem(),t.skipToEndOfObject()}}readBlockRecordTable(t){let e=!1;for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDTAB"){t.readItem();break}if(r==="ENDSEC")break;if(r==="BLOCK_RECORD"){t.readItem(),e||(this._db.tables.blockTable.removeAll(),e=!0);const s=new nt;s.dxfIn(t),s.name&&this._db.tables.blockTable.add(s);continue}t.readItem(),t.skipToEndOfObject()}}skipUntilEndTab(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDTAB")break}}async readBlocksSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;for(;!t.atEof;){const r=t.peekItem();if(!r)break;if(Number(r.code)!==0){t.readItem();continue}const s=String(r.value).toUpperCase();if(s==="ENDSEC"){t.readItem();break}if(s==="BLOCK"){t.readItem(),n=await this.readBlockDefinition(t,e,n);continue}t.readItem(),t.skipToEndOfObject()}}async readBlockDefinition(t,e,n){const r=this.readBlockBeginFields(t),s=this.ensureBlockTableRecord(r);for(;!t.atEof;){const a=t.peekItem();if(!a)break;if(Number(a.code)!==0){t.readItem();continue}const o=String(a.value).toUpperCase();if(o==="ENDBLK"){t.readItem(),t.skipToEndOfObject();break}if(o==="ENDSEC")break;if(t.readItem(),this.consumeSeqend(t,o)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const c=ua(t,o);c?this.shouldAcceptBlockEntity(s)&&this.acceptEntity(c,s):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}return n}shouldAcceptBlockEntity(t){return!t.isModelSapce&&!t.isPaperSapce}consumeSeqend(t,e){return e!=="SEQEND"?!1:(t.skipToEndOfObject(),!0)}readBlockBeginFields(t){const e=new b;let n="",r=0,s="",a,o;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code);if(l===100)continue;const h=Number(c.value);switch(l){case 5:a=String(c.value);break;case 330:o=String(c.value);break;case 2:case 3:n||(n=String(c.value));break;case 70:r=h;break;case 10:e.x=h;break;case 20:e.y=h;break;case 30:e.z=h;break;case 1:s=String(c.value);break}}return{name:n,flags:r,origin:e,pathName:s,objectId:a,ownerId:o}}ensureBlockTableRecord(t){let e=t.name?this._db.tables.blockTable.getAt(t.name):void 0;e||(e=new nt,e.name=t.name||"*UNKNOWN",t.objectId&&(e.objectId=t.objectId),this._db.tables.blockTable.add(e)),e.origin.copy(t.origin);let n=nt.sanitizeImportedFlags(t.flags);return t.pathName&&(e.pathName=t.pathName,(n&(zn.Xref|zn.XrefOverlay))===0&&(n=n|zn.Xref)),e.flags=n,e}async readEntitiesSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;const r=this._db.tables.blockTable.modelSpace;for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDSEC"){t.readItem();break}if(t.readItem(),this.consumeSeqend(t,a)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const o=ua(t,a);o?this.acceptEntity(o,this.resolveEntityOwner(o,r)):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}}resolveEntityOwner(t,e){const n=t.getAttrWithoutException("ownerId");if(n){const r=this._db.tables.blockTable.getIdAt(n);if(r&&(r.isModelSapce||r.isPaperSapce))return r}if(t.dxfPaperSpace){const r=this._db.tables.blockTable.getAt(nt.PAPER_SPACE_NAME_PREFIX);if(r)return r}return e}acceptEntity(t,e){if(t instanceof ni){this.linkOrDeferAttribute(t,e);return}if(e.appendEntity(t),t instanceof ce){const n=this._attributeMap.get(t.objectId);if(n&&n.length>0){for(const r of n)t.appendAttributes(r);this._attributeMap.delete(t.objectId)}}}linkOrDeferAttribute(t,e){const n=t.getAttrWithoutException("ownerId");if(!n||n==="0")return;const r=e.getIdAt(n)??this._db.tables.blockTable.getEntityById(n);if(r instanceof ce){r.appendAttributes(t);return}let s=this._attributeMap.get(n);s||(s=[],this._attributeMap.set(n,s)),s.push(t)}flushRemainingAttributes(){for(const[t,e]of this._attributeMap){const n=this._db.tables.blockTable.getEntityById(t);if(n instanceof ce)for(const r of e)n.appendAttributes(r)}this._attributeMap.clear()}skipUntilEndSec(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDSEC")break}}async reportParseProgress(t){const{onProgress:e,totalBytes:n}=this._options;if(!e||!n||n<=0)return;const r=Math.min(1,Math.max(0,t.position().byteOffset/n));await e(r)}async yieldAndReportProgress(t){await this.reportParseProgress(t),await this._yieldGate.maybeYield(Ln)}}const Fi=1,Is=18,Di=20,Yi=98;class Su extends Va{constructor(t={}){super({useWorker:!1,...t})}async read(t,e,n={}){const{minimumChunkSize:r=10,progress:s}=n;this.progress=s;const a=async(c,l,h,u)=>{s&&await s(c,l,h,u)};await a(0,"START","START"),await a(Fi,"PARSE","START"),await Uc(),e.beginEventBatch();let o=!0;try{const c=Me.fromBuffer(t,{database:e}),l=t.byteLength;let h=Fi;const d=await new Pu(e,{entityBatchSize:Math.max(1,r||200),yieldBudgetMs:qn,totalBytes:l,onProgress:async m=>{const y=Math.min(Is-1,Fi+Math.floor(m*(Is-Fi)));y<=h||(h=y,await a(y,"PARSE","IN-PROGRESS"))}}).read(c);await a(Is,"PARSE","END",{unknownEntityCount:d.unknownEntityCount}),await a(Di,"ENTITY","START");const g=Math.max(1,r||200);let f=Di;const p=new Hr(qn);await e.endEventBatchChunked(g,async(m,y)=>{const _=y<=0?Yi:Math.min(Yi,Di+Math.floor(m/y*(Yi-Di)));_>f&&(f=_,await a(_,"ENTITY","IN-PROGRESS")),await p.maybeYield()}),o=!1,await a(Yi,"ENTITY","END"),await a(100,"END","END")}catch(c){throw o&&e.endEventBatch(),c}}async parse(t){return{model:null,data:{unknownEntityCount:0}}}}var Gn=(i=>(i.DXF="dxf",i.DWG="dwg",i))(Gn||{});class ie{constructor(){this.events={registered:new lt,unregistered:new lt},this._converters=new Map,this.register("dxf",new Su)}static createInstance(){return ie._instance==null&&(ie._instance=new ie),this._instance}static get instance(){return ie._instance||(ie._instance=new ie),ie._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}))}}const un=class un extends At{constructor(){super(),this._thickness=0,this._normal=new x(0,0,1),this._elevation=0,this._geo=new Q}get dxfTypeName(){return"LWPOLYLINE"}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}addVertexAt(t,e,n=0,r=-1,s=-1){const a=r<0?void 0:r,o=s<0?void 0:s,c={x:e.x,y:e.y,bulge:n,startWidth:a,endWidth:o};this._geo.addVertexAt(t,c)}removeVertexAt(t){this._geo.removeVertexAt(t)}reset(t,e){this._geo.reset(t,e)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return new b(e.x,e.y,this._elevation)}get geometricExtents(){const t=this._geo.box;return new z({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}subGetIntersectCurves(){return za(this._geo.vertices,this.closed,this._elevation,this._normal)}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return this.shouldIncludeSegmentMidpointGrips()&&this.appendSegmentMidpointGrips(t),t}subMoveGripPointsAt(t,e){const n=this.numberOfVertices,r=this.shouldIncludeSegmentMidpointGrips(),s=r?this.getSegmentCount():0;return ft(t,a=>{if(a<n){jn(this._geo.vertices,a,e);return}if(!r||a>=n+s)return;const o=a-n;jn(this._geo.vertices,o,e),jn(this._geo.vertices,(o+1)%n,e)}),this}shouldIncludeSegmentMidpointGrips(){return this.getGripsMode()>=2}getGripsMode(){try{const t=bt.instance().getVar(E.GRIPS,this.database);return typeof t=="number"?t:2}catch{return 2}}getSegmentCount(){const t=this.numberOfVertices;return t<2?0:this.closed?t:t-1}appendSegmentMidpointGrips(t){var a;const e=this._geo,n=this._elevation,r=this.getSegmentCount(),s=e.numberOfVertices;for(let o=0;o<r;o++){const c=[];ei(e.getPointAt(o),e.getPointAt((o+1)%s),(a=e.vertices[o])==null?void 0:a.bulge,n,k.MidPoint,{x:0,y:0,z:0},c),t.push(...c)}}subGetOsnapPoints(t,e,n,r){var c;const s=this._geo,a=this._elevation,o=s.numberOfVertices;if(o!==0)switch(t){case k.EndPoint:for(let l=0;l<o;l++){const h=s.getPointAt(l);r.push(new b(h.x,h.y,a))}break;case k.MidPoint:case k.Nearest:case k.Perpendicular:case k.Tangent:{const l=this.closed?o:o-1,h=[];for(let u=0;u<l;u++){const d=[];ei(s.getPointAt(u),s.getPointAt((u+1)%o),(c=s.vertices[u])==null?void 0:c.bulge,a,t,e,d),h.push(...d)}if(t===k.MidPoint)r.push(...h);else{const u=$t(e,h);u&&r.push(u)}break}}}transformBy(t){const e=t.determinant()<0;let n=this._elevation;return this._geo.vertices.forEach(r=>{const s=new b(r.x,r.y,this._elevation).applyMatrix4(t);r.x=s.x,r.y=s.y,n=s.z,e&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._elevation=n,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return this.hasRenderableWidth()?"area":"lineStrip"}subWorldDraw(t){const e=this._geo.getPoints(100),n=this.createWidthProfile();if(n!=null){const s=Om(n,this.closed);if(s!=null){const a=t.subEntityTraits;return a.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(s)}}const r=[];return e.forEach(s=>r.push(new b().set(s.x,s.y,this.elevation))),t.lines(r)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyline"),t.writeInt32(90,this.numberOfVertices),t.writeInt16(70,this.closed?1:0);const e=this.resolveConstantWidth();e!=null&&t.writeDouble(43,e),t.writeDouble(38,this.elevation),this.thickness!==0&&t.writeDouble(39,this.thickness);const n=this._geo.vertices;for(let r=0;r<n.length;++r){const s=n[r];t.writePoint2d(10,this.getPoint2dAt(r)),e==null&&(s.startWidth!=null&&t.writeDouble(40,s.startWidth),s.endWidth!=null&&t.writeDouble(41,s.endWidth));const a=s.bulge??0;a!==0&&t.writeDouble(42,a),s.identifier!=null&&t.writeInt32(91,s.identifier)}return t.writeVector3d(210,this.normal),this}dxfOutAs2dPolyline(t,e=!1){var r,s,a;t.writeHandle(5,this.objectId),t.writeObjectId(330,this.ownerId),t.writeObjectId(360,this.extensionDictionary),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency);const n=(r=this.database)==null?void 0:r.tables.blockTable.getIdAt(this.ownerId);n!=null&&n.isPaperSapce&&t.writeInt16(67,1),t.writeSubclassMarker("AcDb2dPolyline"),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,this.closed?1:0),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation);for(let o=0;o<this.numberOfVertices;++o){const c=this._geo.vertices[o];t.writeStart("VERTEX"),t.writeHandle(5,(s=this.database)==null?void 0:s.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPoint2dAt(o).x,y:this.getPoint2dAt(o).y,z:this.elevation});const l=(c==null?void 0:c.bulge)??0;l!==0&&t.writeDouble(42,l),t.writeInt16(70,0)}return t.writeStart("SEQEND"),t.writeHandle(5,(a=this.database)==null?void 0:a.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPolyline"),this.reset(!1);let e=!1,n=this.elevation,r=this.thickness,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=-1,l=0,h=0,u=!1,d=0,g=-1,f=-1,p,m=0;const y=()=>{if(!u)return;const v=g<0?c:g,w=f<0?c:f;if(this.addVertexAt(m++,new L(l,h),d,v,w),p!=null){const A=this._geo.vertices[m-1];A&&(A.identifier=p)}u=!1,d=0,g=-1,f=-1,p=void 0};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const v=t.readItem();if(!v)break;const w=Number(v.code),A=Number(v.value);switch(w){case 90:break;case 70:e=(A&1)!==0;break;case 43:c=A;break;case 38:n=A;break;case 39:r=A;break;case 10:y(),l=A,h=0,u=!0;break;case 20:h=A;break;case 40:g=A;break;case 41:f=A;break;case 42:d=A;break;case 91:p=A;break;case 210:s=A;break;case 220:a=A;break;case 230:o=A;break}}y(),this.closed=e,this.elevation=n,this.thickness=r;const _=new x(s,a,o);return _.lengthSq()>0&&this.normal.copy(_.normalize()),this}resolveConstantWidth(){const t=this._geo.vertices;if(t.length===0)return;let e;for(const n of t){const r=n.startWidth,s=n.endWidth;if(r==null&&s==null){if(e!=null&&e!==0)return;e=e??0;continue}const a=r??0;if(a!==(s??0))return;if(e==null)e=a;else if(e!==a)return}return e!=null&&e!==0?e:void 0}hasRenderableWidth(){const t=this._geo.vertices;for(let e=0;e<t.length;e++){const n=Math.max(0,t[e].startWidth??0),r=Math.max(0,t[e].endWidth??0);if(n>gt||r>gt)return!0}return!1}createWidthProfile(){const t=this._geo.vertices,e=t.length;if(e<2)return null;const n=this.closed?e:e-1,r=[];let s=!1;for(let a=0;a<n;a++){const o=t[a],c=t[(a+1)%e],l=Math.max(0,o.startWidth??0),h=Math.max(0,o.endWidth??0);(l>gt||h>gt)&&(s=!0);const u=this.sampleSegment(o,c),d=u.length-1;for(let g=0;g<=d;g++){if(g===0&&r.length>0||this.closed&&a===n-1&&g===d)continue;const f=d>0?g/d:0;r.push({x:u[g].x,y:u[g].y,width:Vm(l,h,f)})}}return s&&r.length>=2?r:null}sampleSegment(t,e){if(t.bulge&&Math.abs(t.bulge)>gt){const r=new it(t,e,t.bulge).getPoints(32);if(r.length>1)return r.map(s=>new L(s.x,s.y))}return[new L(t.x,t.y),new L(e.x,e.y)]}static from2dPoints(t,e){const n=new un;return t.forEach((r,s)=>n.addVertexAt(s,r)),n.closed=e,n}static fromGePolyline(t){const e=new un;return t.vertices.forEach((n,r)=>{e.addVertexAt(r,new L(n.x,n.y),n.bulge??0)}),e.closed=t.closed,e}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.numberOfVertices;let n=1/0,r=1;const s=this.closed?e:e-1;for(let a=0;a<s;a++){const o=this.getPoint2dAt(a),c=this.getPoint2dAt((a+1)%e),l=c.x-o.x,h=c.y-o.y,u=l*l+h*h;if(u===0)continue;const d=Math.max(0,Math.min(1,((t.x-o.x)*l+(t.y-o.y)*h)/u)),g=(t.x-o.x-d*l)**2+(t.y-o.y-d*h)**2;g<n&&(n=g,r=l*(t.y-o.y)-h*(t.x-o.x)>=0?1:-1)}return r}createOffsetCurve(t){const e=this._geo.offset(t);return e.length===0?null:un.fromGePolyline(e[0])}};un.typeName="Polyline";let Lt=un;function as(i,t,e){const n=gf(i,t,e);return n?Lt.fromGePolyline(n):null}const gt=1e-6,Pc=4,Mm=.75;function Om(i,t){if(i.length<2)return null;if(t)return Es(i,!0);const e=Nm(i);if(e.length===1)return Es(e[0],!1);const n=new Kt;let r=!1;for(const s of e){const a=Es(s,!1);if(a!=null){for(const o of a.loops)n.add(o);r=!0}}return r?n:null}function Es(i,t){const e=Xm(i,t);if(e.length<2)return null;const{left:n,right:r}=Iu(e,t);if(Ic(n)<2||Ic(r)<2)return null;const s=new Kt;if(t){const a=lr(n),o=lr(r);if(!si(a)||!si(o))return null;const c=Math.abs(ri(a)),l=Math.abs(ri(o)),[h,u]=c>=l?[a,o]:[o,a];return s.add(new Q(h,!0)),s.add(new Q(u,!0)),s}return Rm(e)&&Fm(s,e)||Ym(s,n,r)?s:null}function Nm(i){if(i.length<2)return[i];const t=[];let e=0;const n=new Map;for(let s=0;s<i.length;s++){const a=Sc(i[s]),o=n.get(a);if(o!=null&&s-o>1){const c=i.slice(e,s+1);c.length>=2&&t.push(c),e=o,n.clear();for(let l=e;l<=s;l++)n.set(Sc(i[l]),l);continue}n.set(a,s)}const r=i.slice(e);return r.length>=2&&t.push(r),t.length>0?t:[i]}function Sc(i){return`${i.x.toFixed(4)}:${i.y.toFixed(4)}`}function Bm(i,t){const e=Math.max(i,t),n=Math.min(i,t);return e<=gt||e-n<=gt?!1:n/e<=Mm}function Rm(i){const t=i[0],e=i[i.length-1],n=Math.hypot(e.x-t.x,e.y-t.y);if(n<=gt)return!0;const r=Math.max(...i.map(s=>s.width));return r<=gt?!1:n<=r*4}function Fm(i,t){const{left:e,right:n}=Iu(t,!0),r=lr(e),s=lr(n);if(!si(r)||!si(s))return!1;const a=Math.abs(ri(r)),o=Math.abs(ri(s));if(!Bm(a,o))return!1;const[c,l]=a>=o?[r,s]:[s,r];return i.add(new Q(c,!0)),i.add(new Q(l,!0)),!0}function Iu(i,t){const e=new Array(i.length),n=new Array(i.length);for(let r=0;r<i.length;r++){const s=i[r],a=Math.max(0,s.width)/2;if(a<=gt){e[r]=null,n[r]=null;continue}const o=zm(i,r,t);if(o==null){e[r]=null,n[r]=null;continue}e[r]={x:s.x+o.x*a,y:s.y+o.y*a},n[r]={x:s.x-o.x*a,y:s.y-o.y*a}}return{left:e,right:n}}function Dm(i,t,e,n,r){const s=[t,e,n,r];return si(s)?(i.add(new Q(s,!0)),!0):!1}function Ym(i,t,e){let n=!1;for(let r=0;r<t.length-1;r++){const s=t[r],a=t[r+1],o=e[r],c=e[r+1];s==null||a==null||o==null||c==null||Dm(i,s,a,c,o)&&(n=!0)}return n}function Ic(i){return i.reduce((t,e)=>e==null?t:t+1,0)}function lr(i){return i.filter(t=>t!=null)}function Xm(i,t){const e=[];if(i.forEach(n=>{const r=e[e.length-1];(!r||Math.abs(r.x-n.x)>gt||Math.abs(r.y-n.y)>gt||Math.abs(r.width-n.width)>gt)&&e.push(n)}),t&&e.length>1){const n=e[0],r=e[e.length-1];Math.abs(n.x-r.x)<=gt&&Math.abs(n.y-r.y)<=gt&&e.pop()}return e}function zm(i,t,e){const n=i.length,r=i[t],s=i[(t-1+n)%n],a=i[(t+1)%n];let o=Ec(r.x-s.x,r.y-s.y),c=Ec(a.x-r.x,a.y-r.y);if(e||(t===0&&(o=c),t===n-1&&(c=o)),o==null&&c==null)return null;if(o==null)return Xi(c);if(c==null)return Xi(o);const l=Xi(o),h=Xi(c),u=l.x+h.x,d=l.y+h.y,g=Math.hypot(u,d);if(g<=gt)return h;const f={x:u/g,y:d/g},p=Math.abs(f.x*h.x+f.y*h.y),m=p<=gt?Pc:Math.min(1/p,Pc);return{x:f.x*m,y:f.y*m}}function Ec(i,t){const e=Math.hypot(i,t);return e<=gt?null:{x:i/e,y:t/e}}function Xi(i){return{x:-i.y,y:i.x}}function ri(i){let t=0;const e=i.length;for(let n=0;n<e;n++){const r=i[n],s=i[(n+1)%e];t+=r.x*s.y-s.x*r.y}return t/2}function si(i){return i.length>=3&&Math.abs(ri(i))>gt}function Vm(i,t,e){return i+(t-i)*e}const jm={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:23},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:24}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:26}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:28},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:29}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:31},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:32}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:34},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:35},{angle:45,originX:.353553391,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:36},{angle:45,originX:.530330086,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:37}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:39},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.3125,-.0625,0,-.0625],sourceLine:40}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:.21875,deltaY:.125,dashes:[.3125,-.0625,0,-.0625],sourceLine:42}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:45}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:47},{angle:135,originX:0,originY:0,deltaX:.25,deltaY:.125,dashes:[.3125,-.1875],sourceLine:48}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:54},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[8,-8],sourceLine:55}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:57},{angle:0,originX:-8,originY:.375,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:58},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:59},{angle:90,originX:-.375,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:60}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:62},{angle:90,originX:0,originY:0,deltaX:8,deltaY:4,dashes:[8,-8],sourceLine:63}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:65},{angle:0,originX:0,originY:2.25,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:66},{angle:0,originX:2,originY:2.667,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:67},{angle:0,originX:2,originY:4.917,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:68},{angle:90,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:69},{angle:90,originX:-.375,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:70},{angle:90,originX:2,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:71},{angle:90,originX:1.625,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:72}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:2.667,dashes:[],sourceLine:74},{angle:90,originX:0,originY:0,deltaX:2.667,deltaY:4,dashes:[2.667,-2.667],sourceLine:75}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:77},{angle:355,originX:0,originY:0,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:78},{angle:100.45144446,originX:.59771681,originY:-.05229344,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.63740192,-7.01142112],sourceLine:79},{angle:46.1842,originX:0,originY:2,deltaX:6.19462554,deltaY:-8.84684596,dashes:[1.125,-12.375],sourceLine:80},{angle:96.63563549,originX:.88936745,originY:1.86206693,deltaX:8.59588239,deltaY:-10.40964966,dashes:[.95610342,-10.5171376],sourceLine:81},{angle:351.18416399,originX:0,originY:2,deltaX:7.74327494,deltaY:11.05855746,dashes:[.9,-9.90000001],sourceLine:82},{angle:21,originX:1,originY:1.5,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:83},{angle:326,originX:1,originY:1.5,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:84},{angle:71.45144474,originX:1.49742254,originY:1.16448426,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.6374019,-7.01142112],sourceLine:85},{angle:37.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-6.52,0,-6.7,0,-6.625],sourceLine:86},{angle:7.5,originX:0,originY:0,deltaX:3.123,deltaY:3.567,dashes:[0,-3.82,0,-6.37,0,-2.525],sourceLine:87},{angle:-32.5,originX:-2.23,originY:0,deltaX:4.6234,deltaY:2.678,dashes:[0,-2.5,0,-7.8,0,-10.35],sourceLine:88},{angle:-42.5,originX:-3.23,originY:0,deltaX:3.6234,deltaY:4.678,dashes:[0,-3.25,0,-5.18,0,-7.35],sourceLine:89}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:4,deltaY:4,dashes:[12,-4],sourceLine:91},{angle:135,originX:2.828427125,originY:2.828427125,deltaX:4,deltaY:-4,dashes:[12,-4],sourceLine:92}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:94},{angle:90,originX:2,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:95},{angle:90,originX:4,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:96},{angle:90,originX:6,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:97},{angle:90,originX:8,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:98},{angle:90,originX:10,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:99},{angle:90,originX:12,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:100},{angle:0,originX:0,originY:12,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:101},{angle:0,originX:0,originY:14,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:102},{angle:0,originX:0,originY:16,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:103},{angle:0,originX:0,originY:18,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:104},{angle:0,originX:0,originY:20,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:105},{angle:0,originX:0,originY:22,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:106},{angle:0,originX:0,originY:24,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:107}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:2.2,deltaY:1,dashes:[15,-2,5,-1],sourceLine:109},{angle:0,originX:1.33,originY:.5,deltaX:-1,deltaY:1.33,dashes:[3,-.33,6,-.75],sourceLine:110},{angle:0,originX:.5,originY:.85,deltaX:5.2,deltaY:.67,dashes:[8,-1.4,4,-1],sourceLine:111}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:25.5,deltaY:12,dashes:[6,-5,7,-3,9,-4],sourceLine:113},{angle:0,originX:6,originY:.5,deltaX:25.5,deltaY:12,dashes:[5,-19,4,-6],sourceLine:114},{angle:0,originX:18,originY:-.75,deltaX:25.5,deltaY:12,dashes:[3,-31],sourceLine:115},{angle:90,originX:0,originY:0,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:116},{angle:90,originX:6,originY:0,deltaX:12,deltaY:8.5,dashes:[11.25,-36.75],sourceLine:117},{angle:90,originX:11,originY:0,deltaX:12,deltaY:8.5,dashes:[10.5,-37.5],sourceLine:118},{angle:90,originX:18,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:119},{angle:90,originX:21,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:120},{angle:90,originX:30,originY:0,deltaX:12,deltaY:8.5,dashes:[11,-37],sourceLine:121}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:1.123,deltaY:1.567,dashes:[0,-1.52,0,-1.7,0,-1.625],sourceLine:123},{angle:7.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-.82,0,-1.37,0,-.525],sourceLine:124},{angle:-32.5,originX:-1.23,originY:0,deltaX:2.6234,deltaY:1.678,dashes:[0,-.5,0,-1.8,0,-2.35],sourceLine:125},{angle:-42.5,originX:-1.23,originY:0,deltaX:1.6234,deltaY:2.678,dashes:[0,-.25,0,-1.18,0,-1.35],sourceLine:126}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:128},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:129},{angle:0,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:130},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:131},{angle:0,originX:0,originY:.5,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:132},{angle:0,originX:0,originY:.75,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:133},{angle:90,originX:.5,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:134},{angle:90,originX:.75,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:135}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:137},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:138}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:140},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.5,dashes:[.25,-.25],sourceLine:141},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:.5,dashes:[-.25,.25],sourceLine:142}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.33,dashes:[],sourceLine:144},{angle:90,originX:.9,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:145},{angle:90,originX:.8,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:146},{angle:0,originX:.9,originY:.055,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:147},{angle:0,originX:.9,originY:.11,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:148},{angle:0,originX:.9,originY:.165,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:149},{angle:0,originX:.9,originY:.22,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:150},{angle:0,originX:.9,originY:.275,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:151}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.1875,dashes:[],sourceLine:153},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.1875,dashes:[],sourceLine:154},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.1875,dashes:[],sourceLine:155},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.1875,dashes:[.1875,-.125],sourceLine:156}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:158},{angle:135,originX:.0625,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:159},{angle:135,originX:.09375,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:160},{angle:135,originX:.125,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:161}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:163},{angle:90,originX:.0625,originY:-.0625,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:164}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:166}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:168},{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[.3535533905932738,-.7071067811865476],sourceLine:169}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.03125,deltaY:.0625,dashes:[0,-.0625],sourceLine:171}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:173},{angle:0,originX:0,originY:.09375,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:174},{angle:0,originX:0,originY:.1875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:175},{angle:90,originX:.03125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:176},{angle:90,originX:.125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:177},{angle:90,originX:.21875,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:178}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:180},{angle:180,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:181},{angle:300,originX:0,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:182},{angle:60,originX:.1,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:183},{angle:300,originX:.1,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:184},{angle:60,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:185},{angle:180,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:186},{angle:300,originX:-.05,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:187},{angle:180,originX:-.05,originY:-.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:188},{angle:60,originX:-.4,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:189},{angle:300,originX:-.4,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:190},{angle:60,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:191},{angle:180,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:192},{angle:300,originX:.2,originY:.346410161,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:193},{angle:180,originX:.2,originY:.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:194},{angle:0,originX:.2,originY:.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:195},{angle:0,originX:.2,originY:-.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:196},{angle:120,originX:.05,originY:.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:197},{angle:120,originX:-.25,originY:.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:198},{angle:240,originX:-.25,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:199},{angle:240,originX:.05,originY:-.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:200}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[.25,-.25],sourceLine:202},{angle:45,originX:.25,originY:0,deltaX:.176776695296,deltaY:.176776695296,dashes:[.0625,-.2285533906,.0625,-.353553390593],sourceLine:203}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:205},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:206},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:207}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:209},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:210},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:211}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:213},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:214},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:215}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:.707106781,deltaY:.707106781,dashes:[.1875,-1.226713563],sourceLine:217},{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:218},{angle:135,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:219}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.03125,dashes:[],sourceLine:221},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:222}]},{name:"GRAVEL",description:"",lines:[{angle:228.012787504,originX:.72,originY:1,deltaX:12.0413651692039,deltaY:.0743294146632,dashes:[.134536,-13.3190880470737],sourceLine:224},{angle:184.969740728,originX:.63,originY:.9,deltaX:-12.0415166747131,deltaY:.0433148081592,dashes:[.230868,-22.85592476123],sourceLine:225},{angle:132.510447078,originX:.4,originY:.88,deltaX:-14.8659418273816,deltaY:.061429511683,dashes:[.162788,-16.1160325960997],sourceLine:226},{angle:267.273689006,originX:.01,originY:.63,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:227},{angle:292.833654178,originX:0,originY:.42,deltaX:-12.9999095019474,deltaY:.048507125026,dashes:[.206155,-20.4093731280883],sourceLine:228},{angle:357.273689006,originX:.08,originY:.23,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:229},{angle:37.6942404667,originX:.29,originY:.22,deltaX:-16.4011800288558,deltaY:.0359675000664,dashes:[.278029,-27.524848548916],sourceLine:230},{angle:72.2553283749,originX:.51,originY:.39,deltaX:23.0867613281116,deltaY:.0380969659053,dashes:[.262488,-25.9863214968134],sourceLine:231},{angle:121.429565615,originX:.59,originY:.64,deltaX:15.2642639131074,deltaY:.047404546271,dashes:[.21095,-20.884073109729],sourceLine:232},{angle:175.236358309,originX:.48,originY:.82,deltaX:-11.0450488205478,deltaY:.083045479801,dashes:[.240832,-11.8007625787923],sourceLine:233},{angle:222.397437798,originX:.24,originY:.84,deltaX:16.2787889313724,deltaY:.0321080648114,dashes:[.311448,-30.8333750047949],sourceLine:234},{angle:138.814074834,originX:1,originY:.62,deltaX:9.2190645101588,deltaY:.0940720868851,dashes:[.106301,-10.5238448127347],sourceLine:235},{angle:171.46923439,originX:.92,originY:.69,deltaX:-13.1528534931484,deltaY:.0494468176315,dashes:[.202237,-20.021511416157],sourceLine:236},{angle:225,originX:.72,originY:.72,deltaX:.7071067811865,deltaY:.7071067811865,dashes:[.141421,-1.2727925623731],sourceLine:237},{angle:203.198590514,originX:.65,originY:.84,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.076158,-7.5396151058639],sourceLine:238},{angle:291.801409486,originX:.58,originY:.81,deltaX:-3.156820749011,deltaY:.185695338158,dashes:[.107703,-5.2774618071345],sourceLine:239},{angle:30.9637565321,originX:.62,originY:.71,deltaX:3.6014702879928,deltaY:.1714985851408,dashes:[.174929,-5.6560228948453],sourceLine:240},{angle:161.565051177,originX:.77,originY:.8,deltaX:-2.2135943621183,deltaY:.3162277660138,dashes:[.126491,-3.0357866601684],sourceLine:241},{angle:16.389540334,originX:0,originY:.81,deltaX:10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.5428451466694],sourceLine:242},{angle:70.3461759419,originX:.17,originY:.86,deltaX:-11.7045066155395,deltaY:.0672672793901,dashes:[.148661,-14.717407747319],sourceLine:243},{angle:293.198590514,originX:.77,originY:1,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.152315,-7.4634581058639],sourceLine:244},{angle:343.610459666,originX:.83,originY:.86,deltaX:-10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.542845146669],sourceLine:245},{angle:339.44395478,originX:0,originY:.19,deltaX:-5.3838927710229,deltaY:.117041147157,dashes:[.17088,-8.3731237453175],sourceLine:246},{angle:294.775140569,originX:.16,originY:.13,deltaX:-12.0828441168135,deltaY:.0698430296124,dashes:[.143178,-14.174643063276],sourceLine:247},{angle:66.8014094864,originX:.78,originY:0,deltaX:5.3835637472487,deltaY:.1313064328552,dashes:[.152315,-7.4634581058639],sourceLine:248},{angle:17.3540246363,originX:.84,originY:.14,deltaX:-13.6013396869991,deltaY:.0596549986364,dashes:[.167631,-16.59542361424],sourceLine:249},{angle:69.4439547804,originX:.29,originY:0,deltaX:-5.383892771022,deltaY:.1170411471946,dashes:[.08544,-8.4585637453175],sourceLine:250},{angle:101.309932474,originX:.72,originY:0,deltaX:4.1184388379018,deltaY:.1961161351396,dashes:[.05099,-5.0480295135928],sourceLine:251},{angle:165.963756532,originX:.71,originY:.05,deltaX:-3.1529631254726,deltaY:.2425356250323,dashes:[.206155,-3.9169506256177],sourceLine:252},{angle:186.009005957,originX:.51,originY:.1,deltaX:-10.0497393137326,deltaY:.0523423921723,dashes:[.19105,-18.9139231745428],sourceLine:253},{angle:303.690067526,originX:.62,originY:.62,deltaX:-2.2188007849008,deltaY:.2773500981134,dashes:[.144222,-3.461329275464],sourceLine:254},{angle:353.157226587,originX:.7,originY:.5,deltaX:17.1171966955143,deltaY:.0397150736497,dashes:[.251794,-24.9275626240283],sourceLine:255},{angle:60.9453959009,originX:.95,originY:.47,deltaX:-8.0616726575653,deltaY:.0971285862325,dashes:[.102956,-10.192674140987],sourceLine:256},{angle:90,originX:1,originY:.56,deltaX:1,deltaY:1,dashes:[.06,-.94],sourceLine:257},{angle:120.256437164,originX:.49,originY:.13,deltaX:-8.0619364083848,deltaY:.0719815751411,dashes:[.138924,-13.7535199894498],sourceLine:258},{angle:48.0127875042,originX:.42,originY:.25,deltaX:12.0413651692041,deltaY:.0743294146212,dashes:[.269072,-13.1845520470737],sourceLine:259},{angle:0,originX:.6,originY:.45,deltaX:1,deltaY:1,dashes:[.26,-.74],sourceLine:260},{angle:325.304846469,originX:.86,originY:.45,deltaX:12.2063917682497,deltaY:-.063245553253,dashes:[.158114,-15.653274300842],sourceLine:261},{angle:254.054604099,originX:.99,originY:.36,deltaX:4.1208169184605,deltaY:.1373605639542,dashes:[.145602,-7.1345078892805],sourceLine:262},{angle:207.645975364,originX:.95,originY:.22,deltaX:21.4708691170287,deltaY:.0421824539631,dashes:[.237065,-23.4694741822594],sourceLine:263},{angle:175.42607874,originX:.74,originY:.11,deltaX:13.0383438432524,deltaY:.039872611164,dashes:[.250799,-24.8290734079689],sourceLine:264}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:266},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:267},{angle:60,originX:.125,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:268}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:270},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:271},{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[-.25,.125],sourceLine:272}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.0625,dashes:[1,-.5],sourceLine:274},{angle:90,originX:0,originY:0,deltaX:-.25,deltaY:.0625,dashes:[1,-.5],sourceLine:275}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:277},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:278},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:279}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:292}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:294}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:296}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:298}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:300},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:301}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:303}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:305}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:307}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:309}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:311}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:313}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:315},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:316}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:318},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:319}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:321},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:322}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:327}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.25,dashes:[.25,-.25,0,-.25,0,-.25],sourceLine:329}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:331},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:332}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:334},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:335},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:336}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:338},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:339},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:340}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:342},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:343},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:344},{angle:0,originX:0,originY:.15625,deltaX:0,deltaY:.25,dashes:[],sourceLine:345}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.09375,dashes:[],sourceLine:347},{angle:45,originX:.066291261,originY:0,deltaX:0,deltaY:.09375,dashes:[0,-.09375],sourceLine:348}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:350},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:351}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:353},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:354},{angle:120,originX:.0625,originY:.108253176,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:355}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:357},{angle:45,originX:0,originY:.0625,deltaX:0,deltaY:.125,dashes:[],sourceLine:358}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.125,-.875],sourceLine:360},{angle:90,originX:.0625,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.0625,-1.669550806],sourceLine:361},{angle:90,originX:.078125,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:362},{angle:90,originX:.046875,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:363},{angle:60,originX:.09375,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:364},{angle:120,originX:.03125,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:365}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:367},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.125],sourceLine:368}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:370},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:371},{angle:0,originX:-.09375,originY:.162379763,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:372}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:374},{angle:90,originX:.125,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:375}]}],issues:[]},Eu={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:20},{angle:90,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:21}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:23}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:25},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:26}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:28},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:29}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:31},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:32},{angle:45,originX:8.98026,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:33},{angle:45,originX:13.4704,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:34}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:36},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:37}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:5.55625,deltaY:3.175,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:39}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:41},{angle:135,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:42}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:6.35,deltaY:3.175,dashes:[7.9375,-4.7625],sourceLine:45}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:47},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[203.2,-203.2],sourceLine:48}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:50},{angle:0,originX:-203.2,originY:9.525,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:51},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:52},{angle:90,originX:-9.525,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:53}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:55},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:101.6,dashes:[203.2,-203.2],sourceLine:56}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:58},{angle:0,originX:0,originY:57.15,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:59},{angle:0,originX:50.8,originY:67.7418,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:60},{angle:0,originX:50.8,originY:124.892,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:61},{angle:90,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:62},{angle:90,originX:-9.525,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:63},{angle:90,originX:50.8,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:64},{angle:90,originX:41.275,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:65}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:67.7418,dashes:[],sourceLine:67},{angle:90,originX:0,originY:0,deltaX:67.7418,deltaY:101.6,dashes:[67.7418,-67.7418],sourceLine:68}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:104.896,deltaY:-149.807,dashes:[19.05,-209.55],sourceLine:70},{angle:355,originX:0,originY:0,deltaX:-51.76101082,deltaY:187.25814969,dashes:[15.24,-167.64058417],sourceLine:71},{angle:100.4514447,originX:15.182007,originY:-1.3282535,deltaX:145.5569059,deltaY:-176.270089,dashes:[16.1900088,-178.0902446],sourceLine:72},{angle:46.1842,originX:0,originY:50.8,deltaX:157.343,deltaY:-224.71,dashes:[28.575,-314.325],sourceLine:73},{angle:96.63555761,originX:22.5899,originY:47.2965,deltaX:218.33577212,deltaY:-264.40480444,dashes:[24.28502314,-267.13560816],sourceLine:74},{angle:351.18415117,originX:0,originY:50.8,deltaX:196.67912063,deltaY:280.88740361,dashes:[22.85996707,-251.45973192],sourceLine:75},{angle:21,originX:25.4,originY:38.1,deltaX:104.89565868,deltaY:-149.80652586,dashes:[19.05,-209.55],sourceLine:76},{angle:326,originX:25.4,originY:38.1,deltaX:-51.7604,deltaY:187.258,dashes:[15.24,-167.64],sourceLine:77},{angle:71.451445,originX:38.0345326,originY:29.5779001,deltaX:145.5567546,deltaY:-176.2700748,dashes:[16.1900088,-178.0899376],sourceLine:78},{angle:37.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-165.608,0,-170.18,0,-168.275],sourceLine:79},{angle:7.5,originX:0,originY:0,deltaX:79.3242,deltaY:90.6018,dashes:[0,-97.028,0,-161.798,0,-64.135],sourceLine:80},{angle:-32.5,originX:-56.642,originY:0,deltaX:117.434,deltaY:68.0212,dashes:[0,-63.5,0,-198.12,0,-262.89],sourceLine:81},{angle:-42.5,originX:-82.042,originY:0,deltaX:92.0344,deltaY:118.821,dashes:[0,-82.55,0,-131.572,0,-186.69],sourceLine:82}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:101.6,deltaY:101.6,dashes:[304.8,-101.6],sourceLine:84},{angle:135,originX:71.842,originY:71.842,deltaX:101.6,deltaY:-101.6,dashes:[304.8,-101.6],sourceLine:85}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:87},{angle:90,originX:50.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:88},{angle:90,originX:101.6,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:89},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:90},{angle:90,originX:203.2,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:91},{angle:90,originX:254,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:92},{angle:90,originX:304.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:93},{angle:0,originX:0,originY:304.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:94},{angle:0,originX:0,originY:355.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:95},{angle:0,originX:0,originY:406.4,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:96},{angle:0,originX:0,originY:457.2,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:97},{angle:0,originX:0,originY:508,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:98},{angle:0,originX:0,originY:558.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:99},{angle:0,originX:0,originY:609.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:100}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:55.88,deltaY:25.4,dashes:[381,-50.8,127,-25.4],sourceLine:102},{angle:0,originX:33.782,originY:12.7,deltaX:-25.4,deltaY:33.782,dashes:[76.2,-8.382,152.4,-19.05],sourceLine:103},{angle:0,originX:12.7,originY:21.59,deltaX:132.08,deltaY:17.018,dashes:[203.2,-35.56,101.6,-25.4],sourceLine:104}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:647.7,deltaY:304.8,dashes:[152.4,-127,177.8,-76.2,228.6,-101.6],sourceLine:106},{angle:0,originX:152.4,originY:12.7,deltaX:647.7,deltaY:304.8,dashes:[127,-482.6,101.6,-152.4],sourceLine:107},{angle:0,originX:457.2,originY:-19.05,deltaX:647.7,deltaY:304.8,dashes:[76.2,-787.4],sourceLine:108},{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:109},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[285.75,-933.45],sourceLine:110},{angle:90,originX:279.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[266.7,-952.5],sourceLine:111},{angle:90,originX:457.2,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:112},{angle:90,originX:533.4,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:113},{angle:90,originX:762,originY:0,deltaX:304.8,deltaY:215.9,dashes:[279.4,-939.8],sourceLine:114}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:28.5242,deltaY:39.8018,dashes:[0,-38.608,0,-43.18,0,-41.275],sourceLine:116},{angle:7.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-20.828,0,-34.798,0,-13.335],sourceLine:117},{angle:-32.5,originX:-31.242,originY:0,deltaX:66.6344,deltaY:42.6212,dashes:[0,-12.7,0,-45.72,0,-59.69],sourceLine:118},{angle:-42.5,originX:-31.242,originY:0,deltaX:41.2344,deltaY:68.0212,dashes:[0,-6.35,0,-29.972,0,-34.29],sourceLine:119}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:121},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:122},{angle:0,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:123},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:124},{angle:0,originX:0,originY:12.7,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:125},{angle:0,originX:0,originY:19.05,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:126},{angle:90,originX:12.7,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:127},{angle:90,originX:19.05,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:128}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:130},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:131}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:133},{angle:90,originX:0,originY:0,deltaX:0,deltaY:12.7,dashes:[6.35,-6.35],sourceLine:134},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:12.7,dashes:[-6.35,6.35],sourceLine:135}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8.382,dashes:[],sourceLine:137},{angle:90,originX:22.86,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:138},{angle:90,originX:20.32,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:139},{angle:0,originX:22.86,originY:1.397,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:140},{angle:0,originX:22.86,originY:2.794,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:141},{angle:0,originX:22.86,originY:4.191,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:142},{angle:0,originX:22.86,originY:5.588,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:143},{angle:0,originX:22.86,originY:6.985,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:144}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:146},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:147},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:148},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:4.7625,dashes:[4.7625,-3.175],sourceLine:149}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:151},{angle:135,originX:1.5875,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:152},{angle:135,originX:2.38125,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:153},{angle:135,originX:3.175,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:154}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:156},{angle:90,originX:1.5875,originY:-1.5875,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:157}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:159}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:161},{angle:45,originX:0,originY:0,deltaX:0,deltaY:17.9605,dashes:[8.980256121069154,-17.960512242138307],sourceLine:162}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.79375,deltaY:1.5875,dashes:[0,-1.5875],sourceLine:164}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:166},{angle:0,originX:0,originY:2.38125,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:167},{angle:0,originX:0,originY:4.7625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:168},{angle:90,originX:.79375,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:169},{angle:90,originX:3.175,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:170},{angle:90,originX:5.55625,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:171}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:173},{angle:180,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:174},{angle:300,originX:0,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:175},{angle:60,originX:2.54,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:176},{angle:300,originX:2.54,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:177},{angle:60,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:178},{angle:180,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:179},{angle:300,originX:-1.27,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:180},{angle:180,originX:-1.27,originY:-2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:181},{angle:60,originX:-10.16,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:182},{angle:300,originX:-10.16,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:183},{angle:60,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:184},{angle:180,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:185},{angle:300,originX:5.08,originY:8.7988180894,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:186},{angle:180,originX:5.08,originY:8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:187},{angle:0,originX:5.08,originY:4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:188},{angle:0,originX:5.08,originY:-4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:189},{angle:120,originX:1.27,originY:6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:190},{angle:120,originX:-6.35,originY:2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:191},{angle:240,originX:-6.35,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:192},{angle:240,originX:1.27,originY:-6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:193}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:195},{angle:45,originX:6.35,originY:0,deltaX:4.490128053,deltaY:4.490128053,dashes:[1.5875,-5.8052561314,1.5875,-8.9802561314],sourceLine:196}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:198},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:199},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:200}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:202},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:203},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:204}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:206},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:207},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:208}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:17.96051224,deltaY:17.96051224,dashes:[4.7625,-31.15852448],sourceLine:210},{angle:45,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:211},{angle:135,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:212}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.79375,dashes:[],sourceLine:214},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:215}]},{name:"GRAVEL",description:"",lines:[{angle:228.0127875,originX:18.288,originY:25.4,deltaX:305.85067529778,deltaY:1.88796713245,dashes:[3.4172144,-338.30483639565],sourceLine:217},{angle:184.969741,originX:16.002,originY:22.86,deltaX:-305.8545235377,deltaY:1.10019612724,dashes:[5.8640472,-580.54048893524],sourceLine:218},{angle:132.5104471,originX:10.16,originY:22.352,deltaX:-377.59492241548,deltaY:1.56030959675,dashes:[4.1348152,-409.347227941],sourceLine:219},{angle:267.273689,originX:.254,originY:16.002,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:220},{angle:292.83365418,originX:0,originY:10.668,deltaX:-330.19770134945,deltaY:1.23208097566,dashes:[5.236337,-518.39807745344],sourceLine:221},{angle:357.273689,originX:2.032,originY:5.842,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:222},{angle:37.69424047,originX:7.366,originY:5.588,deltaX:-416.58997273292,deltaY:.91357450169,dashes:[7.0619366,-699.13115314247],sourceLine:223},{angle:72.25532837,originX:12.954,originY:9.906,deltaX:586.40373773403,deltaY:.96766293399,dashes:[6.6671952,-660.05256601905],sourceLine:224},{angle:121.42956562,originX:14.986,originY:16.256,deltaX:387.71230339293,deltaY:1.2040754753,dashes:[5.35813,-530.45545698712],sourceLine:225},{angle:175.2363583,originX:12.192,originY:20.828,deltaX:-280.5442400419,deltaY:2.10935518695,dashes:[6.1171328,-299.7393695],sourceLine:226},{angle:222.3974378,originX:6.096,originY:21.336,deltaX:413.48123885686,deltaY:.81554484621,dashes:[7.9107792,-783.16772512177],sourceLine:227},{angle:138.81407483,originX:25.4,originY:15.748,deltaX:234.164238558,deltaY:2.38943100688,dashes:[2.7000454,-267.30565824344],sourceLine:228},{angle:171.4692344,originX:23.368,originY:17.526,deltaX:-334.082478726,deltaY:1.25594916784,dashes:[5.1368198,-508.5463899704],sourceLine:229},{angle:225,originX:18.288,originY:18.288,deltaX:17.96051224214,deltaY:17.96051224214,dashes:[3.5920934,-32.32893108428],sourceLine:230},{angle:203.19859051,originX:16.51,originY:21.336,deltaX:-136.74251918,deltaY:3.33518339548,dashes:[1.9344132,-191.50622368894],sourceLine:231},{angle:291.80140949,originX:14.732,originY:20.574,deltaX:-80.18324702488,deltaY:4.71666158921,dashes:[2.7356562,-134.0475299],sourceLine:232},{angle:30.96375653,originX:15.748,originY:18.034,deltaX:91.47734531502,deltaY:4.35606406258,dashes:[4.4431966,-143.6629815291],sourceLine:233},{angle:161.56505118,originX:19.558,originY:20.32,deltaX:-56.2252967978,deltaY:8.03218525675,dashes:[3.2128714,-77.10898116828],sourceLine:234},{angle:16.389540334,originX:0,originY:20.574,deltaX:265.17991128726,deltaY:1.43340492604,dashes:[4.50088,-445.58826672539],sourceLine:235},{angle:70.34617594,originX:4.318,originY:21.844,deltaX:-297.29446803469,deltaY:1.70858889651,dashes:[3.7759894,-373.822156782],sourceLine:236},{angle:293.19859051,originX:19.558,originY:25.4,deltaX:-136.7425191801,deltaY:3.33518339548,dashes:[3.868801,-189.57183588894],sourceLine:237},{angle:343.61045967,originX:21.082,originY:21.844,deltaX:-265.17991128725,deltaY:1.433404926,dashes:[4.50088,-445.5882667254],sourceLine:238},{angle:339.44395478,originX:0,originY:4.826,deltaX:-136.75087638398,deltaY:2.97284513779,dashes:[4.340352,-212.67734313106],sourceLine:239},{angle:294.7751406,originX:4.064,originY:3.302,deltaX:-306.90424056705,deltaY:1.77401295215,dashes:[3.6367212,-360.0359338072],sourceLine:240},{angle:66.80140949,originX:19.812,originY:0,deltaX:136.74251918012,deltaY:3.33518339452,dashes:[3.868801,-189.57183588894],sourceLine:241},{angle:17.35402464,originX:21.336,originY:3.556,deltaX:-345.47402804977,deltaY:1.51523696536,dashes:[4.2578274,-421.523759802],sourceLine:242},{angle:69.44395478,originX:7.366,originY:0,deltaX:-136.75087638396,deltaY:2.97284513874,dashes:[2.170176,-214.84751913106],sourceLine:243},{angle:101.309932474,originX:18.288,originY:0,deltaX:104.60834648271,deltaY:4.98134983255,dashes:[1.295146,-128.21994964526],sourceLine:244},{angle:165.963756532,originX:18.034,originY:1.27,deltaX:-80.085263387,deltaY:6.16040487582,dashes:[5.236337,-99.49054589069],sourceLine:245},{angle:186.00900596,originX:12.954,originY:2.54,deltaX:-255.26337856879,deltaY:1.32949676118,dashes:[4.85267,-480.41364863337],sourceLine:246},{angle:303.69006753,originX:15.748,originY:15.748,deltaX:-56.35753993648,deltaY:7.0446924921,dashes:[3.6632388,-87.9177635968],sourceLine:247},{angle:353.15722659,originX:17.78,originY:12.7,deltaX:434.77679606606,deltaY:1.0087628707,dashes:[6.3955676,-633.16009065031],sourceLine:248},{angle:60.9453959,originX:24.13,originY:11.938,deltaX:-204.76648550216,deltaY:2.46706609031,dashes:[2.6150824,-258.8939231811],sourceLine:249},{angle:90,originX:25.4,originY:14.224,deltaX:25.4,deltaY:25.4,dashes:[1.524,-23.876],sourceLine:250},{angle:120.25643716,originX:12.446,originY:3.302,deltaX:-204.77318477297,deltaY:1.8283320086,dashes:[3.5286696,-349.339407732],sourceLine:251},{angle:48.0127875,originX:10.668,originY:6.35,deltaX:305.85067529778,deltaY:1.88796713138,dashes:[6.8344288,-334.88762199565],sourceLine:252},{angle:0,originX:15.24,originY:11.43,deltaX:25.4,deltaY:25.4,dashes:[6.604,-18.796],sourceLine:253},{angle:325.3048465,originX:21.844,originY:11.43,deltaX:310.04235091354,deltaY:-1.6064370526,dashes:[4.0160956,-397.5931672414],sourceLine:254},{angle:254.0546041,originX:25.146,originY:9.144,deltaX:104.6687497289,deltaY:3.48895832444,dashes:[3.6982908,-181.21650038772],sourceLine:255},{angle:207.64597536,originX:24.13,originY:5.588,deltaX:545.36007557253,deltaY:1.07143433066,dashes:[6.021451,-596.12464422938],sourceLine:256},{angle:175.42607874,originX:18.796,originY:2.794,deltaX:331.1739336186,deltaY:1.01276432357,dashes:[6.3702946,-630.6584645624],sourceLine:257}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:259},{angle:120,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:260},{angle:60,originX:3.175,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:261}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:263},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:264},{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[-6.35,3.175],sourceLine:265}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:267},{angle:90,originX:0,originY:0,deltaX:-6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:268}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:270},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:271},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:272}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:285}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:287}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:289}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:291}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:293},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:294}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:296}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:298}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:300}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:302}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:304}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:306}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:308},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:309}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:311},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:312}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:314},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:315}]},{name:"JIS_LC_20",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:322},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:323}]},{name:"JIS_LC_20A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:325},{angle:45,originX:1,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:326}]},{name:"JIS_LC_8",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:328},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:329}]},{name:"JIS_LC_8A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:331},{angle:45,originX:1,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:332}]},{name:"JIS_RC_10",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:334},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:335},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:336}]},{name:"JIS_RC_15",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:338},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:339},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:340}]},{name:"JIS_RC_18",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:342},{angle:45,originX:1,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:343},{angle:45,originX:2,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:344}]},{name:"JIS_RC_30",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:346},{angle:45,originX:1,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:347},{angle:45,originX:2,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:348}]},{name:"JIS_STN_1E",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:350},{angle:45,originX:.705,originY:0,deltaX:0,deltaY:1,dashes:[1,-.5],sourceLine:351}]},{name:"JIS_STN_2.5",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.5,dashes:[],sourceLine:353},{angle:45,originX:1.765,originY:0,deltaX:0,deltaY:2.5,dashes:[1.2,-.5],sourceLine:354}]},{name:"JIS_WOOD",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[],sourceLine:356}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:359}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:6.35,dashes:[6.35,-6.35,0,-6.35,0,-6.35],sourceLine:361}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:363},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:364}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:366},{angle:60,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:367},{angle:120,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:368}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:370},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:371},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:372}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:374},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:375},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:376},{angle:0,originX:0,originY:3.96875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:377}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.38125,dashes:[],sourceLine:379},{angle:45,originX:1.6838,originY:0,deltaX:0,deltaY:2.38125,dashes:[0,-2.38125],sourceLine:380}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:382},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:383}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:385},{angle:60,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:386},{angle:120,originX:1.5875,originY:2.7496306704,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:387}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:389},{angle:45,originX:0,originY:1.5875,deltaX:0,deltaY:3.175,dashes:[],sourceLine:390}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[3.175,-22.225],sourceLine:392},{angle:90,originX:1.5875,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.5875,-42.4065904724],sourceLine:393},{angle:90,originX:1.984375,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:394},{angle:90,originX:1.190625,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:395},{angle:60,originX:2.38125,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:396},{angle:120,originX:.79375,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:397}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:399},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-3.175],sourceLine:400}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:402},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:403},{angle:0,originX:-2.38125,originY:4.1244459802,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:404}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:406},{angle:90,originX:3.175,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:407}]}],issues:[]};var Un=(i=>(i[i.UserDefined=0]="UserDefined",i[i.Predefined=1]="Predefined",i[i.Custom=2]="Custom",i))(Un||{}),Lu=(i=>(i[i.Normal=0]="Normal",i[i.Outer=1]="Outer",i[i.Ignore=2]="Ignore",i))(Lu||{}),Tu=(i=>(i[i.HatchObject=0]="HatchObject",i[i.GradientObject=1]="GradientObject",i))(Tu||{}),Cu=(i=>(i[i.PreDefinedGradient=0]="PreDefinedGradient",i[i.UserDefinedGradient=1]="UserDefinedGradient",i))(Cu||{});const ro=class ro extends q{constructor(){super(),this._areasFromLoopsCache=null,this._normal=new x(0,0,1),this._gradientAngle=0,this._elevation=0,this._geo=new Kt,this._isSolidFill=!1,this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1,this._patternName="",this._patternNameSet=!1,this._patternType=1,this._patternAngle=0,this._patternAngleSet=!1,this._patternScale=1,this._patternScaleSet=!1,this._associative=!1,this._associativeSet=!1,this._backgroundColor=void 0,this._backgroundColorSet=!1,this._patternDouble=!1,this._patternDoubleSet=!1,this._hatchStyle=0,this._hatchStyleSet=!1,this._hatchObjectType=0,this._gradientAngle=0,this._gradientShift=0,this._shadeTintValue=0,this._gradientStartColor=void 0,this._gradientEndColor=void 0,this._pixelSize=void 0,this._gradientType=0,this._gradientName="",this._gradientOneColorMode=!1}get dxfTypeName(){return"HATCH"}get isGradient(){return this._hatchObjectType===1}get isHatch(){return this._hatchObjectType===0}get isSolidFill(){return this._isSolidFill||this.getEffectivePatternName().trim().toUpperCase()===Ge}set isSolidFill(t){this._isSolidFill=t}get color(){if(this.hasExplicitColor())return this.getEntityColor();const t=this.database,e=bt.instance().getVar(E.HPCOLOR,t);return e instanceof j&&e.colorMethod!==exports.AcCmColorMethod.None?e.clone():t.cecolor.clone()}set color(t){this.setEntityColor(t)}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t??"",this._isSolidFill=this._patternName.trim().toUpperCase()===Ge,this._patternNameSet=!0,this.updatePredefinedPatternDefinitionLines()}get patternType(){return this._patternType}set patternType(t){this._patternType=t,t!==1&&this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1),this.updatePredefinedPatternDefinitionLines()}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t,this._patternAngleSet=!0}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}get associative(){return this._associative}set associative(t){this._associative=!!t,this._associativeSet=!0}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t==null?void 0:t.clone(),this._backgroundColorSet=!0}get patternDouble(){return this._patternDouble}set patternDouble(t){this._patternDouble=!!t,this._patternDoubleSet=!0}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t,this._hatchStyleSet=!0}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t),this._normal.lengthSq()>0&&this._normal.normalize()}get hatchObjectType(){return this._hatchObjectType}set hatchObjectType(t){this._hatchObjectType=t}get gradientAngle(){return this._gradientAngle}set gradientAngle(t){this._gradientAngle=t}get gradientShift(){return this._gradientShift}set gradientShift(t){this._gradientShift=t}get gradientType(){return this._gradientType}set gradientType(t){this._gradientType=t}get gradientName(){return this.isGradient&&this._gradientName.trim()===""?ph:this._gradientName}set gradientName(t){this._gradientName=t??""}get gradientOneColorMode(){return this._gradientOneColorMode}set gradientOneColorMode(t){this._gradientOneColorMode=t}get shadeTintValue(){return this._shadeTintValue}set shadeTintValue(t){this._shadeTintValue=t}get gradientStartColor(){return this._gradientStartColor}set gradientStartColor(t){this._gradientStartColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get gradientEndColor(){return this._gradientEndColor}set gradientEndColor(t){this._gradientEndColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize=t}applyPatternDefaultsFromSysVars(t){const e=bt.instance();if(!this.hasExplicitLayer()){const n=e.getVar(E.HPLAYER,t);this.shouldUseSysVarOverride(n)&&(this.layer=n)}if(!this.hasExplicitTransparency()){const n=this.parseHpTransparency(e.getVar(E.HPTRANSPARENCY,t));n&&(this.transparency=n)}if(this._backgroundColorSet||(this._backgroundColor=this.parseHpBackgroundColor(e.getVar(E.HPBACKGROUNDCOLOR,t)),this._backgroundColorSet=!0),!this._patternNameSet){const n=e.getVar(E.HPNAME,t);this._patternName=typeof n=="string"?n:"",this._patternNameSet=!0}if(!this._patternAngleSet){const n=e.getVar(E.HPANG,t);this._patternAngle=typeof n=="number"&&Number.isFinite(n)?n:0,this._patternAngleSet=!0}if(this._patternScaleSet||(this._patternScale=this.normalizePatternScale(e.getVar(E.HPSCALE,t)),this._patternScaleSet=!0),!this._associativeSet){const n=e.getVar(E.HPASSOC,t);this._associative=typeof n=="number"?n!==0:!1,this._associativeSet=!0}if(this._hatchStyleSet||(this._hatchStyle=this.normalizeHatchStyle(e.getVar(E.HPISLANDDETECTION,t)),this._hatchStyleSet=!0),!this._patternDoubleSet){const n=e.getVar(E.HPDOUBLE,t);this._patternDouble=typeof n=="number"?n!==0:!1,this._patternDoubleSet=!0}this.updatePredefinedPatternDefinitionLines()}getEffectivePatternName(){if(this._patternNameSet)return this._patternName;const t=this.database,e=bt.instance().getVar(E.HPNAME,t);return typeof e=="string"?e:this._patternName}shouldResolveColorFromCecolor(){return!1}getEffectivePatternAngle(){if(this._patternAngleSet)return this._patternAngle;const t=this.database,e=bt.instance().getVar(E.HPANG,t);return typeof e=="number"&&Number.isFinite(e)?e:this._patternAngle}getRenderablePatternAngle(){return!this._definitionLinesAutoGenerated&&this._definitionLines.length>0?0:this.getEffectivePatternAngle()}getEffectivePatternScale(){if(this._patternScaleSet)return this._patternScale;const t=this.database;return this.normalizePatternScale(bt.instance().getVar(E.HPSCALE,t))}getEffectiveAssociative(){if(this._associativeSet)return this._associative;const t=this.database,e=bt.instance().getVar(E.HPASSOC,t);return typeof e=="number"?e!==0:this._associative}normalizePatternScale(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:1}normalizeHatchStyle(t){return typeof t!="number"||!Number.isFinite(t)?1:t===0?0:t===2?2:1}shouldUseSysVarOverride(t){if(typeof t!="string")return!1;const e=t.trim().toLowerCase();return e!==""&&e!=="."&&e!=="use current"}parseHpBackgroundColor(t){if(t instanceof j)return t.colorMethod===exports.AcCmColorMethod.None?void 0:t.clone();if(typeof t!="string")return;const e=t.trim().toLowerCase();if(!(!e||e==="."||e==="none"))return j.fromString(t)}parseHpTransparency(t){if(t instanceof ht)return t.clone();if(!this.shouldUseSysVarOverride(t))return;const e=t.trim();if(/^bylayer$/i.test(e)||/^byblock$/i.test(e))return ht.fromString(e);const n=Number(e);if(Number.isInteger(n)&&n>=0&&n<=90){const r=new ht;return r.percentage=n,r}}updatePredefinedPatternDefinitionLines(t=this.getEffectivePatternName(),e=this.getEffectivePatternScale()){if(this.patternType!==1||!(this._definitionLinesAutoGenerated||this._definitionLines.length===0))return;const r=t.trim().toUpperCase();if(!r||r===Ge){this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1;return}const s=this.normalizePatternScale(e);if(this._definitionLinesAutoGenerated&&this._definitionLinesPatternName===r&&this._definitionLinesPatternScale===s)return;const a=Eu.patterns.find(o=>o.name.trim().toUpperCase()===r);if(!a){this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1);return}this._definitionLines=a.lines.map(o=>({angle:o.angle*Math.PI/180,base:{x:o.originX*s,y:o.originY*s},offset:{x:o.deltaX*s,y:o.deltaY*s},dashLengths:o.dashes.map(c=>c*s)})),this._definitionLinesAutoGenerated=!0,this._definitionLinesPatternName=r,this._definitionLinesPatternScale=s}add(t){this._geo.add(t),this.invalidateAreasFromLoopsCache()}invalidateAreasFromLoopsCache(){this._areasFromLoopsCache=null}buildAreasFromLoops(){if(this._areasFromLoopsCache!=null)return this._areasFromLoopsCache;const t=this._geo.loops;if(t.length===0)return this._areasFromLoopsCache=[],this._areasFromLoopsCache;if(t.length===1)return this._areasFromLoopsCache=[this._geo],this._areasFromLoopsCache;const e=this._geo.buildHierarchy(),n=[],r=(s,a)=>{if(s.index>=0&&a%2===0){const o=new Kt;o.add(t[s.index]),s.children.forEach(c=>{c.index>=0&&o.add(t[c.index])}),n.push(o)}s.children.forEach(o=>r(o,a+1))};return e.children.forEach(s=>r(s,0)),this._areasFromLoopsCache=n.length>0?n:[this._geo],this._areasFromLoopsCache}getCalculatedAreaValue(){const t=this.buildAreasFromLoops();return t.length===0?0:t.reduce((e,n)=>e+n.area,0)}get area(){return this.getCalculatedAreaValue()}get geometricExtents(){const t=this.buildAreasFromLoops();if(t.length===0)return new z;const e=new z;return t.forEach(n=>{const r=n.box;e.union(new z().setFromPoints([_t({x:r.min.x,y:r.min.y,z:this._elevation},this._normal),_t({x:r.max.x,y:r.min.y,z:this._elevation},this._normal),_t({x:r.max.x,y:r.max.y,z:this._elevation},this._normal),_t({x:r.min.x,y:r.max.y,z:this._elevation},this._normal)]))}),e}subGetIntersectCurves(){return J0(this._geo.loops,this._elevation,this._normal)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:Un[0],value:0},{label:Un[1],value:1},{label:Un[2],value:2}],accessor:{get:()=>this.patternType,set:t=>{this.patternType=t}}},{name:"patternName",type:"string",editable:!0,accessor:{get:()=>this.patternName,set:t=>{this.patternName=t}}},{name:"patternAngle",type:"float",editable:!0,accessor:{get:()=>this.patternAngle,set:t=>{this.patternAngle=t}}},{name:"patternScale",type:"float",editable:!0,accessor:{get:()=>this.patternScale,set:t=>{this.patternScale=t}}},{name:"associative",type:"boolean",editable:!0,accessor:{get:()=>this.associative,set:t=>{this.associative=t}}},{name:"backgroundColor",type:"color",editable:!0,accessor:{get:()=>this.backgroundColor,set:t=>{this.backgroundColor=t}}},{name:"patternDouble",type:"boolean",editable:!0,accessor:{get:()=>this.patternDouble,set:t=>{this.patternDouble=t}}}]},{groupName:"geometry",properties:[{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){return this.associative?[]:this.collectBoundaryGripPoints()}subMoveGripPointsAt(t,e){return this.associative?this:(ft(t,n=>{this.moveBoundaryGripPointAt(n,e)}),this.invalidateAreasFromLoopsCache(),this)}collectBoundaryGripPoints(){const t=new Array,e=this._elevation,n=new Set,r=s=>{const a=`${s.x},${s.y},${s.z??0}`;n.has(a)||(n.add(a),t.push(new b(s.x,s.y,s.z??e)))};return this._geo.loops.forEach(s=>{if(s instanceof Q){const a=s.numberOfVertices;for(let o=0;o<a;o++){const c=s.getPointAt(o);r({x:c.x,y:c.y,z:e})}return}s.curves.forEach(a=>{if(a instanceof Gt)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});else if(a instanceof it)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e}),r({x:a.midPoint.x,y:a.midPoint.y,z:e});else if(a instanceof pe){r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});const o=a.getPoint(.5);r({x:o.x,y:o.y,z:e})}})}),t}moveBoundaryGripPointAt(t,e){let n=0;const r=this._elevation,s=new Set,a=(o,c)=>{const l=`${o.x},${o.y},${o.z??0}`;s.has(l)||(s.add(l),n===t&&c(),n++)};this._geo.loops.forEach(o=>{if(o instanceof Q){const c=o.numberOfVertices;for(let l=0;l<c;l++){const h=o.vertices[l];h&&a({x:h.x,y:h.y,z:r},()=>{jn(o.vertices,l,e)})}return}o.curves.forEach(c=>{if(c instanceof Gt)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>{c.startPoint.x+=e.x,c.startPoint.y+=e.y}),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>{c.endPoint.x+=e.x,c.endPoint.y+=e.y});else if(c instanceof it)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"end",e)),a({x:c.midPoint.x,y:c.midPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"mid",e));else if(c instanceof pe){a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"end",e));const l=c.getPoint(.5);a({x:l.x,y:l.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"mid",e))}})})}moveCircArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.midPoint,a=new it(t.startPoint,{x:s.x+n.x,y:s.y+n.y},t.endPoint);t.center=a.center,t.radius=a.radius,t.startAngle=a.startAngle,t.endAngle=a.endAngle,t.clockwise=a.clockwise;break}}}moveEllipseArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.getPoint(.5),a=s.x+n.x-t.center.x,o=s.y+n.y-t.center.y,c=Math.hypot(s.x-t.center.x,s.y-t.center.y),l=Math.hypot(a,o);if(c>0&&l>0){const h=l/c;t.majorAxisRadius*=h,t.minorAxisRadius*=h}break}}}subGetOsnapPoints(t,e,n,r){const s=this._elevation,a=[];if(this._geo.loops.forEach(o=>{var c;if(o instanceof Q){const l=o,h=l.numberOfVertices;if(h===0)return;switch(t){case k.EndPoint:for(let u=0;u<h;u++){const d=l.getPointAt(u);r.push(new b(d.x,d.y,s))}break;case k.MidPoint:case k.Nearest:case k.Perpendicular:case k.Tangent:{const u=o.closed?h:h-1;for(let d=0;d<u;d++){const g=[];ei(l.getPointAt(d),l.getPointAt((d+1)%h),(c=l.vertices[d])==null?void 0:c.bulge,s,t,e,g),t===k.MidPoint?r.push(...g):a.push(...g)}break}}return}o.curves.forEach(l=>{if(l instanceof Gt){const h=[];ei(l.startPoint,l.endPoint,void 0,s,t,e,h),t===k.MidPoint?r.push(...h):t===k.Nearest||t===k.Perpendicular||t===k.Tangent?a.push(...h):r.push(...h)}else if(l instanceof it)switch(t){case k.EndPoint:r.push(new b(l.startPoint.x,l.startPoint.y,s),new b(l.endPoint.x,l.endPoint.y,s));break;case k.MidPoint:r.push(new b(l.midPoint.x,l.midPoint.y,s));break;case k.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new b(h.x,h.y,s));break}case k.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}case k.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}}else if(l instanceof pe)switch(t){case k.EndPoint:r.push(new b(l.startPoint.x,l.startPoint.y,s),new b(l.endPoint.x,l.endPoint.y,s));break;case k.MidPoint:{const h=l.getPoint(.5);r.push(new b(h.x,h.y,s));break}case k.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new b(h.x,h.y,s));break}case k.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}case k.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}}})}),(t===k.Nearest||t===k.Perpendicular||t===k.Tangent)&&a.length>0){const o=$t(e,a);r.length=0,o&&r.push(o)}}get directBatchPrimitive(){return!this.isSolidFill||this.isGradient||this.buildAreasFromLoops().length>1?null:"area"}subWorldDraw(t){var s;this.updatePredefinedPatternDefinitionLines();const e=t.subEntityTraits;e.fillType={solidFill:this.isSolidFill,patternAngle:this.getRenderablePatternAngle(),definitionLines:this.definitionLines,backgroundColor:(s=this.backgroundColor)==null?void 0:s.clone(),gradient:this.isGradient?{name:this.gradientName,angle:this.gradientAngle,shift:this.gradientShift,oneColorMode:this.gradientOneColorMode,shadeTintValue:this.shadeTintValue,startColor:this.gradientStartColor,endColor:this.gradientEndColor}:void 0},e.drawOrder=-1;const n=this.buildAreasFromLoops();if(n.length===0)return t.area(this._geo);if(n.length===1)return t.area(n[0]);const r=n.map(a=>t.area(a));return t.group(r)}transformBy(t){const e=t.elements,n=new mi(e[0],e[4],e[12],e[1],e[5],e[13],0,0,1);this._geo.transform(n),this.invalidateAreasFromLoopsCache(),this._elevation=new b(0,0,this._elevation).applyMatrix4(t).z,this._normal.transformDirection(t),this._normal.lengthSq()>0&&this._normal.normalize();const r=new b(1,0,0).applyMatrix4(t),s=new b().applyMatrix4(t),a=new b(r).sub(s);if(a.length()>0){const o=Math.atan2(a.y,a.x);this._patternAngle=this.getEffectivePatternAngle()+o,this._gradientAngle+=o,this._patternScale=this.getEffectivePatternScale()*a.length(),this._patternAngleSet=!0,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}return this}dxfOutFields(t){super.dxfOutFields(t);const e=this._geo.loops,n=this.getEffectivePatternName(),r=this.getEffectivePatternAngle(),s=this.getEffectivePatternScale();if(this.updatePredefinedPatternDefinitionLines(n,s),t.writeSubclassMarker("AcDbHatch"),t.writePoint3d(10,{x:0,y:0,z:this.elevation}),t.writeVector3d(210,this.normal),t.writeString(2,n||(this.isSolidFill?Ge:fh)),t.writeInt16(70,this.isSolidFill?1:0),t.writeInt16(71,this.getEffectiveAssociative()?1:0),t.writeInt16(91,e.length),e.forEach((a,o)=>{const c=o===0;if(a instanceof Q){const l=a.vertices,h=l.some(d=>(d.bulge??0)!==0);t.writeInt16(92,2),t.writeInt16(72,h?1:0),t.writeInt16(73,a.closed?1:0),t.writeInt16(93,l.length);for(const d of l)t.writePoint2d(10,d),h&&t.writeDouble(42,d.bulge??0);t.writeInt16(97,0);return}if(a instanceof pn){const l=c?1:0;t.writeInt16(92,l),t.writeInt16(93,a.numberOfEdges);for(const h of a.curves){if(h instanceof Gt){t.writeInt16(72,1),t.writePoint2d(10,h.startPoint),t.writePoint2d(11,h.endPoint);continue}if(h instanceof it){t.writeInt16(72,2),t.writePoint2d(10,h.center),t.writeDouble(40,h.radius),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof pe){t.writeInt16(72,3),t.writePoint2d(10,h.center);const u=new L(h.majorAxisRadius*Math.cos(h.rotation),h.majorAxisRadius*Math.sin(h.rotation));t.writePoint2d(11,u);const d=h.majorAxisRadius===0?0:h.minorAxisRadius/h.majorAxisRadius;t.writeDouble(40,d),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Ut){const u=h.knots,d=h.controlPoints,g=h.weights,f=h.fitPoints,p=g.some(m=>m!==1);t.writeInt16(72,4),t.writeInt16(94,h.degree),t.writeInt16(73,p?1:0),t.writeInt16(74,h.closed?1:0),t.writeInt16(95,u.length),t.writeInt16(96,d.length),u.forEach(m=>t.writeDouble(40,m)),d.forEach((m,y)=>{t.writePoint2d(10,m),p&&t.writeDouble(42,g[y]??1)}),t.writeInt16(97,(f==null?void 0:f.length)??0),f==null||f.forEach(m=>t.writePoint2d(11,m))}}t.writeInt16(97,0)}}),t.writeInt16(75,this.hatchStyle),t.writeInt16(76,this.patternType),t.writeAngle(52,r),t.writeDouble(41,s),t.writeInt16(77,0),t.writeInt16(78,this.definitionLines.length),this.definitionLines.forEach(a=>{t.writeAngle(53,a.angle),t.writeDouble(43,a.base.x),t.writeDouble(44,a.base.y),t.writeDouble(45,a.offset.x),t.writeDouble(46,a.offset.y),t.writeInt16(79,a.dashLengths.length),a.dashLengths.forEach(o=>t.writeDouble(49,o))}),this._pixelSize!=null&&t.writeDouble(47,this._pixelSize),this.isGradient){t.writeInt16(450,this._hatchObjectType),t.writeInt16(451,0),t.writeDouble(460,this._gradientAngle),t.writeDouble(461,this._gradientShift),t.writeInt16(452,this._gradientOneColorMode?1:0),t.writeDouble(462,this._shadeTintValue);const a=this._gradientStartColor,o=this._gradientEndColor,c=a!=null&&o!=null?2:a!=null||o!=null?1:0;t.writeInt16(453,c);const l=(h,u)=>{t.writeDouble(463,h);const d=ee.getIndexByColor(u);d!=null&&t.writeInt16(63,d),t.writeInt32(421,u)};a!=null&&l(0,a),o!=null&&l(1,o),t.writeString(470,this.gradientName)}return t.writeInt16(98,0),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbHatch"),this.definitionLines.length=0;let e=this.elevation,n=this.normal.x,r=this.normal.y,s=this.normal.z,a=this.patternAngle*180/Math.PI,o=0,c=!1,l=!1,h=!1,u=[],d=null,g=[],f=null,p="type",m=0,y=!1,_=null,v=!1,w=0,A;const I=G=>{w===0?this.gradientStartColor=G:this.gradientEndColor=G,w++,A=void 0},S=()=>{if(A==null)return;const G=ee.getColorByIndex(A);G!=null?I(G):A=void 0},M=()=>{d&&(u.push(d),d=null)},C=()=>{if(M(),u.length===0)return;const G=new Q;G.closed=h,u.forEach((J,P)=>{G.addVertexAt(P,{x:J.x,y:J.y,bulge:J.bulge??0})}),this.add(G),u=[]},B=()=>{if(g.length===0)return;const G=[];for(const P of g)if(P.kind==="line")G.push(new Gt({x:P.sx,y:P.sy},{x:P.ex,y:P.ey}));else if(P.kind==="arc")G.push(new it({x:P.cx,y:P.cy},P.radius,P.startDeg*Math.PI/180,P.endDeg*Math.PI/180,!P.isCcw));else if(P.kind==="ellipse"){const H=Math.hypot(P.mx,P.my),ct=H*P.ratio;let N=P.startDeg*Math.PI/180,It=P.endDeg*Math.PI/180;const tt=Math.atan2(P.my,P.mx);P.isCcw||(N=Math.PI*2-N,It=Math.PI*2-It),G.push(new pe({x:P.cx,y:P.cy,z:0},H,ct,N,It,!P.isCcw,tt))}else{const H=Ut.fromDwgSplineEdge({degree:P.degree,numberOfControlPoints:P.controlPoints.length,numberOfKnots:P.knots.length,numberOfFitData:P.fitPoints.length,knots:P.knots,controlPoints:P.controlPoints.map(ct=>({x:ct.x,y:ct.y,z:0,weight:P.rational?ct.weight??1:void 0})),fitDatum:P.fitPoints.map(ct=>({x:ct.x,y:ct.y,z:0})),startTangent:null,endTangent:null});H&&G.push(H)}const J=pn.buildFromEdges(G);J.length===0&&G.length>0?this.add(new pn(G)):J.forEach(P=>this.add(P)),g=[],f=null},X=()=>{c?C():B()},O=()=>{f&&(g.push(f),f=null)},Z=()=>{O(),X(),m=Math.max(0,m-1),m===0&&(v=!0)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const G=t.readItem();if(!G)break;const J=Number(G.code),P=Number(G.value);if(y||v){switch(J){case 75:this.hatchStyle=P,v=!0;break;case 76:this.patternType=P;break;case 52:a=P;break;case 41:this.patternScale=P;break;case 77:break;case 78:y=!0;break;case 53:_&&this.definitionLines.push(_),_={angle:P*Math.PI/180,base:{x:0,y:0},offset:{x:0,y:0},dashLengths:[]};break;case 43:_&&(_.base.x=P);break;case 44:_&&(_.base.y=P);break;case 45:_&&(_.offset.x=P);break;case 46:_&&(_.offset.y=P);break;case 79:break;case 49:_&&_.dashLengths.push(P);break;case 47:this.pixelSize=P;break;case 99:break;case 450:this.hatchObjectType=P,this.gradientStartColor=void 0,this.gradientEndColor=void 0,w=0,A=void 0;break;case 451:break;case 452:this.gradientOneColorMode=P!==0;break;case 453:break;case 460:this.gradientAngle=P;break;case 461:this.gradientShift=P;break;case 462:this.shadeTintValue=P;break;case 463:S();break;case 63:A=P;break;case 421:I(P);break;case 470:S(),this.gradientName=String(G.value);break}continue}switch(J){case 10:c||f&&f.kind!=="line"&&f.kind!=="arc"&&f.kind!=="ellipse"&&f.kind,m>0&&c?(M(),d={x:P,y:0}):(f==null?void 0:f.kind)==="line"&&p==="type"?f.sx=P:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cx=P:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.push({x:P,y:0});break;case 20:m>0&&c&&d?d.y=P:(f==null?void 0:f.kind)==="line"&&p==="type"?f.sy=P:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cy=P:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].y=P);break;case 30:m<=0&&!v&&(e=P);break;case 2:this.patternName=String(G.value);break;case 70:this.isSolidFill=P!==0;break;case 71:this.associative=P!==0;break;case 91:m=P;break;case 92:m>0&&(u.length>0||g.length>0||f)&&(O(),X()),o=P,c=(o&2)!==0,l=!1,h=!1,u=[],g=[],f=null,p="type";break;case 72:c?l=P!==0:(O(),P===1?(f={kind:"line",sx:0,sy:0,ex:0,ey:0},p="type"):P===2?f={kind:"arc",cx:0,cy:0,radius:0,startDeg:0,endDeg:0,isCcw:!0}:P===3?f={kind:"ellipse",cx:0,cy:0,mx:0,my:0,ratio:1,startDeg:0,endDeg:0,isCcw:!0}:P===4?f={kind:"spline",degree:3,rational:!1,closed:!1,knots:[],controlPoints:[],fitPoints:[],expectedKnots:0,expectedControls:0,expectedFits:0,fitCountSeen:!1}:f=null);break;case 73:c?h=P!==0:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.isCcw=P!==0:(f==null?void 0:f.kind)==="spline"&&(f.rational=P!==0);break;case 74:(f==null?void 0:f.kind)==="spline"&&(f.closed=P!==0);break;case 93:break;case 42:c&&l&&d?d.bulge=P:(f==null?void 0:f.kind)==="spline"&&f.rational&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].weight=P);break;case 11:(f==null?void 0:f.kind)==="line"?(f.ex=P,p="line-end"):(f==null?void 0:f.kind)==="ellipse"?f.mx=P:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.push({x:P,y:0});break;case 21:(f==null?void 0:f.kind)==="line"?f.ey=P:(f==null?void 0:f.kind)==="ellipse"?f.my=P:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.length>0&&(f.fitPoints[f.fitPoints.length-1].y=P);break;case 40:(f==null?void 0:f.kind)==="arc"?f.radius=P:(f==null?void 0:f.kind)==="ellipse"?f.ratio=P:(f==null?void 0:f.kind)==="spline"&&f.knots.push(P);break;case 50:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.startDeg=P);break;case 51:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.endDeg=P);break;case 94:(f==null?void 0:f.kind)==="spline"&&(f.degree=P);break;case 95:(f==null?void 0:f.kind)==="spline"&&(f.expectedKnots=P);break;case 96:(f==null?void 0:f.kind)==="spline"&&(f.expectedControls=P);break;case 97:if((f==null?void 0:f.kind)==="spline"&&!f.fitCountSeen&&(f.controlPoints.length>0||f.knots.length>0)){f.expectedFits=P,f.fitCountSeen=!0;break}Z();break;case 75:O(),X(),m=0,v=!0,this.hatchStyle=P;break;case 210:n=P;break;case 220:r=P;break;case 230:s=P;break}}f&&(g.push(f),f=null),X(),_&&this.definitionLines.push(_),S(),this.elevation=e;const K=new x(n,r,s);return K.lengthSq()>0&&(this.normal=K),this.patternAngle=a*Math.PI/180,this}};ro.typeName="Hatch";let ai=ro;class Mu{constructor(t){this.db=t}createDefaultLayer(){const t=new j;return t.colorIndex=7,this.db.tables.layerTable.add(new ki({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new Ne({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new Ne({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new Ne({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new Jr({name:st,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new Ft({name:st,dimtxsty:st}))}createDefaultLayout(){const t=new vi;t.layoutName="Model",t.tabOrder=0,t.blockTableRecordId=this.db.tables.blockTable.modelSpace.objectId,t.limits.min.copy({x:0,y:0}),t.limits.max.copy({x:1e6,y:1e6}),t.extents.min.copy({x:0,y:0,z:0}),t.extents.max.copy({x:1e6,y:1e6,z:0}),this.db.objects.layout.setAt(t.layoutName,t),this.db.tables.blockTable.modelSpace.layoutId=t.objectId}createArrowBlock(){if(!this.db.tables.blockTable.getAt("_CAXARROW")){const e=new ai;e.patternName=Ge;const n=new pn;n.add(new Gt({x:0,y:0},{x:-1,y:.125})),n.add(new Gt({x:-1,y:.125},{x:-1,y:-.125})),n.add(new Gt({x:-1,y:-.125},{x:0,y:0})),e.add(n);const r=new nt;r.name="_CAXARROW",r.appendEntity(e),this.db.tables.blockTable.add(r)}}}const ia=Math.PI/200;class Ou{constructor(t){this.database=t}formatLength(t,e){const n=this.createContext(e);return Je(t,n)}formatPoint2d(t,e){const n=this.createContext(e);return`${Je(t.x,n)}, ${Je(t.y,n)}`}formatPoint3d(t,e){const n=this.createContext(e);return`${Je(t.x,n)}, ${Je(t.y,n)}, ${Je(t.z,n)}`}formatAngle(t,e){const n=this.createContext(e),s=(e==null?void 0:e.applyAngbaseAngdir)??!0?Um(t,this.database.angbase,this.database.angdir):T.normalizeAngle(t);return Gm(s,n)}createContext(t){return{lunits:this.database.lunits,luprec:oi(this.database.luprec),insunits:this.database.insunits,unitmode:this.database.unitmode,measurement:this.database.measurement,aunits:this.database.aunits,auprec:oi(this.database.auprec),showUnits:(t==null?void 0:t.showUnits)??!1,showApproximate:(t==null?void 0:t.showApproximate)??!1}}}function Je(i,t){let e;switch(t.lunits){case ot.Scientific:e=Ls(ty(i,t.luprec),t);break;case ot.Engineering:e=ey(i,t);break;case ot.Architectural:e=ny(i,t);break;case ot.Fractional:e=Ls(iy(i,t),t);break;case ot.WindowsDesktop:case ot.Decimal:default:e=Ls(Bn(i,t.luprec),t)}return Nu(e,Hm(i,t),t)}function Gm(i,t){let e;switch(t.aunits){case Tt.DegreesMinutesSeconds:e=Fu(i,t);break;case Tt.Gradians:e=ay(i,t);break;case Tt.Radians:e=sy(i,t);break;case Tt.SurveyorsUnits:e=oy(i,t);break;case Tt.DecimalDegrees:default:e=ry(i,t)}return Nu(e,Wm(i,t),t)}function Um(i,t,e){let n=i-t;return e===1&&(n=-n),T.normalizeAngle(n)}function Wa(i){const t=i.showUnits?'"':"";return i.unitmode===1?{feetInchSeparator:"",fractionSeparator:"-",inchSuffix:t}:{feetInchSeparator:"-",fractionSeparator:" ",inchSuffix:t}}function oi(i,t=0,e=8){return Number.isFinite(i)?Math.max(t,Math.min(e,Math.round(i))):t}function Nn(i){return Object.is(i,-0)?0:i}function Nu(i,t,e){return!e.showApproximate||!t?i:`~ ${i}`}function Hm(i,t){if(!Number.isFinite(i))return!1;const e=qm(i,t);return $a(i,e)}function Wm(i,t){if(!Number.isFinite(i))return!1;if(t.aunits===Tt.SurveyorsUnits)return $m(i,t.auprec);const e=Km(i,t);return $a(i,e)}function $m(i,t){const n=((90-T.radToDeg(i))%360+360)%360,r=Du(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),a=T.degToRad(s),o=Bu(a,t);return $a(a,o)}function qm(i,t){const e=Nn(i);switch(t.lunits){case ot.Scientific:return Zm(e,t.luprec);case ot.Engineering:case ot.Architectural:case ot.Fractional:return Qm(e,t);case ot.WindowsDesktop:case ot.Decimal:default:return yn(e,t.luprec)}}function Km(i,t){const e=Nn(i);switch(t.aunits){case Tt.DegreesMinutesSeconds:return Bu(e,t.auprec);case Tt.Gradians:return yn(e/ia,t.auprec)*ia;case Tt.Radians:return yn(e,t.auprec);case Tt.DecimalDegrees:default:return T.degToRad(yn(T.radToDeg(e),t.auprec))}}function yn(i,t){if(!Number.isFinite(i))return 0;const e=10**t;return Math.round(Nn(i)*e)/e}function Zm(i,t){if(!Number.isFinite(i))return 0;const e=Nn(i);if(e===0)return 0;const n=e.toExponential(t);return Number(n)}function Qm(i,t){if(!Number.isFinite(i))return 0;const e=i<0?-1:1,n=Math.abs(i),r=Math.floor(n/12),s=n-r*12;if(t.lunits===ot.Architectural||t.lunits===ot.Fractional){const a=1<<oi(t.luprec,0,8),o=Jm(s,a);return e*(r*12+o)}return e*(r*12+yn(s,t.luprec))}function Jm(i,t){const e=Math.floor(i),n=i-e,r=Math.round(n*t);return r>=t?e+1:e+r/t}function Bu(i,t){const e=T.radToDeg(i),n=e<0?-1:1,r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=yn((a-o)*60,t),l=s+o/60+c/3600;return T.degToRad(n*l)}function $a(i,t){if(i===t)return!1;const e=Math.max(Math.abs(i),Math.abs(t),1);return Math.abs(i-t)>e*Number.EPSILON*8}function Bn(i,t){if(!Number.isFinite(i))return"0";const e=Nn(i);if(Number.isInteger(e)&&t===0)return String(e);const r=e.toFixed(t).replace(/\.?0+$/,"");return r===""||r==="-"?"0":r}function ty(i,t){if(!Number.isFinite(i))return"0";const e=Nn(i);if(e===0)return"0";const n=e.toExponential(t).match(/^(.+)e([+-])(\d+)$/i);if(!n)return"0";const[,r,s,a]=n,o=a.length<2?a.padStart(2,"0"):a;return`${r}E${s}${o}`.toUpperCase()}function ey(i,t){if(!Number.isFinite(i))return"0";const e=Wa(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=Bn(a,t.luprec);return s===0?`${n}${o}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${o}${e.inchSuffix}`}function ny(i,t){if(!Number.isFinite(i))return"0";const e=Wa(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=1<<oi(t.luprec,0,8),c=Ru(a,o,e.fractionSeparator);return s===0?`${n}${c}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${c}${e.inchSuffix}`}function iy(i,t){if(!Number.isFinite(i))return"0";const e=Wa(t),n=i<0?"-":"",r=Math.abs(i),s=1<<oi(t.luprec,0,8);return`${n}${Ru(r,s,e.fractionSeparator)}`}function Ru(i,t,e){const n=Math.floor(i),r=i-n;let s=Math.round(r*t);if(s>=t)return String(n+1);if(s===0)return String(n);const a=uy(s,t);s/=a;const o=t/a,c=`${s}/${o}`;return n===0?c:`${n}${e}${c}`}function ry(i,t){const e=T.radToDeg(i);return`${Bn(e,t.auprec)}${t.showUnits?"°":""}`}function sy(i,t){return`${Bn(i,t.auprec)}${t.showUnits?" rad":""}`}function ay(i,t){const e=i/ia;return`${Bn(e,t.auprec)}${t.showUnits?"g":""}`}function Fu(i,t){const e=T.radToDeg(i),n=e<0?"-":"",r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=(a-o)*60,l=Bn(c,t.auprec),h=t.showUnits?'"':"";return`${n}${s}d${o}'${l}${h}`}function oy(i,t){const n=((90-T.radToDeg(i))%360+360)%360,r=Du(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),o=Fu(T.degToRad(s),t).replace(/^-/,"");return`${r.prefix} ${o} ${r.suffix}`.trim()}function Du(i){return i<90?{prefix:"N",suffix:"E",base:0}:i<180?{prefix:"S",suffix:"E",base:90}:i<270?{prefix:"S",suffix:"W",base:180}:{prefix:"N",suffix:"W",base:270}}function Ls(i,t){if(!t.showUnits||t.lunits===ot.Engineering||t.lunits===ot.Architectural)return i;const e=cy(t.insunits,t.measurement);return e?`${i}${e}`:i}function cy(i,t){return i===et.Undefined?t===0?'"':" mm":im(i)?ly(i):rm(i)?hy(i):""}function ly(i){switch(i){case et.Millimeters:return" mm";case et.Centimeters:return" cm";case et.Meters:return" m";case et.Kilometers:return" km";case et.Decimeters:return" dm";case et.Microns:return" µm";case et.Nanometers:return" nm";default:return""}}function hy(i){switch(i){case et.Inches:case et.Microinches:case et.Mils:case et.USSurveyInch:return'"';case et.Feet:case et.USSurveyFeet:return"'";case et.Miles:case et.USSurveyMile:return" mi";case et.Yards:case et.USSurveyYard:return" yd";default:return""}}function uy(i,t){let e=Math.abs(i),n=Math.abs(t);for(;n!==0;){const r=n;n=e%n,e=r}return e||1}class Vt extends vt{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this._recordsByName=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){const n=this.database.transactionManager;if(n.strictMode&&!n.isRecording()&&!n.isApplyingUndoRedo())throw new Error("Cannot modify dictionary entries outside an active transaction.");const r=this.getAt(t);r&&(n.isRecording()&&n.recordRemove({type:"dictionary",dictionaryId:this.objectId,key:t},r),this.database.releaseObjectHandle(r)),e.database=this.database,e.ownerId=this.objectId,this.database.commitObjectHandle(e,s=>this.hasId(s)),this._recordsByName.set(t,e),n.isRecording()&&n.recordAppend({type:"dictionary",dictionaryId:this.objectId,key:t},e),!n.isRecording()&&!n.isApplyingUndoRedo()&&this.database.notifyDictObjectSet(e,t)}remove(t){const e=this.getAt(t);return e?(this.removeStoredObject(e,t),!0):!1}removeId(t){const e=this.getIdAt(t);if(e){let n="";return this._recordsByName.forEach((r,s)=>{r===e&&(n=s)}),this.removeStoredObject(e,n),!0}return!1}removeStoredObject(t,e){const n=this.database.transactionManager;if(n.strictMode&&!n.isRecording()&&!n.isApplyingUndoRedo())throw new Error("Cannot remove dictionary entries outside an active transaction.");n.isRecording()&&n.recordRemove({type:"dictionary",dictionaryId:this.objectId,key:e},t),this._recordsByName.forEach((r,s)=>{r===t&&this._recordsByName.delete(s)}),this.database.releaseObjectHandle(t),e&&!n.isRecording()&&!n.isApplyingUndoRedo()&&this.database.notifyDictObjectErased(t,e)}removeAll(){this._recordsByName.forEach((t,e)=>{this.database.releaseObjectHandle(t),this.database.events.dictObjectErased.dispatch({database:this.database,object:t,key:e})}),this._recordsByName.clear()}has(t){return this._recordsByName.has(t.toUpperCase())}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){return this._recordsByName.get(t)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}newIterator(){return new kn(this._recordsByName)}entries(){return this._recordsByName.entries()}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const[e,n]of this._recordsByName)t.writeString(3,e),t.writeObjectId(350,n.objectId);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbDictionary");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;if(Number(e.code)===100){t.pushBackItem(e);break}}return this}}class de extends vt{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this.ownerId=t.objectId,this._recordsByName=new Map,this._unnamedRecords=[]}get numEntries(){return this._recordsByName.size}get totalRecordCount(){return this._recordsByName.size+this._unnamedRecords.length}add(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot add symbol table records outside an active transaction.");const n=e.resolveSymbolTableName(this);t.database=this.database,t.ownerId=this.objectId,this.database.commitObjectHandle(t,s=>this.hasId(s));const r=this.normalizeName(t.name);r?this._recordsByName.set(r,t):this._unnamedRecords.push(t),e.isRecording()&&e.recordAppend({type:"symbolTable",tableName:n},t)}remove(t){const e=this.normalizeName(t),n=this._recordsByName.get(e);return n?(this.removeRecord(n),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this.removeRecord(e),!0):!1}removeRecord(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot remove symbol table records outside an active transaction.");if(e.isRecording()){const n=e.resolveSymbolTableName(this);e.recordRemove({type:"symbolTable",tableName:n},t)}this.removeFromMembership(t),this.database.releaseObjectHandle(t)}removeAll(){for(const t of this._recordsByName.values())this.database.releaseObjectHandle(t);for(const t of this._unnamedRecords)this.database.releaseObjectHandle(t);this._recordsByName.clear(),this._unnamedRecords.length=0}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}getOwnerIdAt(t){return this.getIdAt(t)}newIterator(t=!1){return t?new kn([...this._recordsByName.values(),...this._unnamedRecords]):new kn(this._recordsByName)}normalizeName(t){return(t??"").trim().toUpperCase()}get dxfEntryCount(){return this.numEntries}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTable"),t.writeInt16(70,this.dxfEntryCount),this}removeFromMembership(t){const e=this.normalizeName(t.name);if(e){this._recordsByName.delete(e);return}const n=this._unnamedRecords.indexOf(t);n>=0&&this._unnamedRecords.splice(n,1)}}class Yu extends de{constructor(t){super(t)}get modelSpace(){let t=this.getAt(nt.MODEL_SPACE_NAME);return t||(t=new nt,t.name=nt.MODEL_SPACE_NAME,this.add(t)),t}getEntityById(t){const e=this.database.getObjectById(t);if(e instanceof q)return e}removeEntity(t){let e=!1;for(const n of this.database.tables.blockTable.newIterator())if(n.removeEntity(t)){e=!0;break}return e}getXrefs(){const t=[];for(const e of this.newIterator())e.isXref&&t.push(e);return t}getUnresolvedXrefs(){return this.getXrefs().filter(t=>t.isUnresolvedXref)}normalizeName(t){const e=(t??"").trim();if(!e)return"";if(nt.isModelSapceName(e))return nt.MODEL_SPACE_NAME;if(nt.isPaperSapceName(e)){const n=nt.PAPER_SPACE_NAME_PREFIX,r=e.substring(n.length);return n+r}return super.normalizeName(e)}}const jt=class jt extends Error{constructor(t,e,n){super(t),this.name="AcDbOpenDatabaseError",this.code=e,this.stage=n==null?void 0:n.stage}static isWorkerOutOfMemoryMessage(t){const e=t.toLowerCase();return jt.WORKER_OOM_PATTERNS.some(n=>e.includes(n))}static classifyWorkerErrorMessage(t){return jt.isWorkerOutOfMemoryMessage(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error"}static from(t,e){if(t instanceof jt)return t;const n=t instanceof Error?t.message:String(t),r=jt.classifyWorkerErrorMessage(n);return new jt(n,r,{stage:e,cause:t})}static fromTask(t){const e=t.task.name;return jt.from(t.error,e)}static throwOnWorkerParseFailure(t,e="PARSE"){if(t.success)return;const n=t.error!=null?`Failed to parse drawing due to error: '${t.error}'`:"Failed to parse drawing due to an unknown worker error",r=jt.mapWorkerResultCode(t.errorCode,t.error);throw new jt(n,r,{stage:e})}static mapWorkerResultCode(t,e){switch(t){case"worker_oom":return"worker_oom";case"worker_timeout":return"worker_timeout";case"worker_error":return"worker_error";default:return jt.classifyWorkerErrorMessage(e??"")}}};jt.WORKER_OOM_PATTERNS=["out of memory","data cannot be cloned","allocation failed","memory access out of bounds"];let ci=jt;class Xu extends de{constructor(t){super(t)}}class zu extends de{constructor(t){super(t)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class Vu extends de{constructor(t){super(t)}}class li extends de{constructor(t){super(t)}static normalizeFontFileName(t){if(!t)return;const e=t.lastIndexOf(".");return e>=0?t.substring(0,e).toLowerCase():t.toLowerCase()}get dxfEntryCount(){return this.totalRecordCount}resolveAt(t){this.database.ensureTextStyleDefaults();const e=[],n=r=>{const s=r==null?void 0:r.trim();s&&!e.includes(s)&&e.push(s)};n(t),n(this.database.textstyle),n(st),n("STANDARD");for(const r of e){const s=this.getAt(r);if(s)return s;const a=r.toUpperCase();for(const o of this.newIterator())if(o.name.toUpperCase()===a)return o}return this.newIterator().next().value??void 0}get shapeFiles(){return this.newIterator(!0).toArray().filter(t=>t.isShapeFile)}get fonts(){const t=new Set;for(const e of this.newIterator()){const n=li.normalizeFontFileName(e.fileName);n&&t.add(n);const r=li.normalizeFontFileName(e.bigFontFileName);r&&t.add(r)}return Array.from(t)}}class ju extends de{constructor(t){super(t)}}class Gu extends de{constructor(t){super(t)}}class Uu extends de{constructor(t){super(t)}normalizeName(t){const e=(t??"").trim();return e?Be.isActiveVportName(e)?An:super.normalizeName(e):""}getActiveVport(){return this.getAt(An)}getActiveVportBox(t,e){const n=this.getActiveVport();return n==null?void 0:n.resolveModelViewBox(t,e)}}class Hu extends de{constructor(t){super(t)}}class Wu extends Vt{getBtrIdAt(t){for(const[e,n]of this._recordsByName)if(n.blockTableRecordId==t)return n}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class $u{constructor(t){this.database=t}applyForward(t){for(const e of t)this.applyChange(e,!0)}applyInverse(t){for(let e=t.length-1;e>=0;e--)this.applyChange(t[e],!1)}applyChange(t,e){switch(t.kind){case"modify":this.applyModify(t,e);break;case"append":e?this.applyAppend(t.container,t.object):this.applyRemove(t.container,t.object);break;case"remove":e?this.applyRemove(t.container,t.object):this.applyAppend(t.container,t.object);break;case"sysvar":this.applySysvar(t,e);break}}applyModify(t,e){const n=this.database.getObjectById(t.objectId);if(!n)return;const r=e?t.after:t.before;r&&n.restoreFrom(r)}applySysvar(t,e){const n=e?t.after:t.before;n!==void 0&&bt.instance().setVar(t.name,n,this.database)}applyAppend(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.appendEntity(e);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.add(e);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.setAt(t.key,e);break}}}applyRemove(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.removeEntity(e.objectId);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.removeId(e.objectId);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.removeId(e.objectId);break}}}getSymbolTable(t){const e=this.database.tables;switch(t){case"appIdTable":return e.appIdTable;case"blockTable":return e.blockTable;case"dimStyleTable":return e.dimStyleTable;case"linetypeTable":return e.linetypeTable;case"textStyleTable":return e.textStyleTable;case"viewTable":return e.viewTable;case"layerTable":return e.layerTable;case"viewportTable":return e.viewportTable;default:return}}}function ra(i,t){const e=[],n=[],r=[];for(const s of t)if(s.kind==="modify"){const a=i.getObjectById(s.objectId);a instanceof q&&e.push(a)}else if(s.kind==="append"){if(s.container.type==="blockTableRecord"){const a=i.tables.blockTable.getEntityById(s.object.objectId)??(s.object instanceof q?s.object:void 0);a&&n.push(a)}}else s.kind==="remove"&&s.container.type==="blockTableRecord"&&s.object instanceof q&&r.push(s.object);return{modified:e,appended:n,erased:r}}function Lc(i,t){const e=[],n=[];for(const r of t){if(r.kind!=="append"&&r.kind!=="remove"||r.container.type!=="dictionary")continue;const s=r.container.key;if(r.kind==="append"){const a=i.getObjectById(r.object.objectId)??r.object;e.push({object:a,key:s})}else r.kind==="remove"&&n.push({object:r.object,key:s})}return{set:e,erased:n}}function Tc(i,t){const e={};for(const n of lm){const r=i.getAttrWithoutException(n),s=t.getAttrWithoutException(n);Ue(r,s)||(e[n]=s)}return e}function Cc(i,t,e=!1){const n=[];for(const r of t){if(r.kind!=="modify")continue;const s=i.getObjectById(r.objectId);if(!(s instanceof ki))continue;const a=r.before,o=r.after;if(!a||!o)continue;const c=e?Tc(o,a):Tc(a,o);Object.keys(c).length!==0&&n.push({database:i,layer:s,changes:c})}return n}function dy(i,t){if(i.type!==t.type)return!1;switch(i.type){case"blockTableRecord":return t.type==="blockTableRecord"&&i.ownerId===t.ownerId;case"symbolTable":return t.type==="symbolTable"&&i.tableName===t.tableName;case"dictionary":return t.type==="dictionary"&&i.dictionaryId===t.dictionaryId&&i.key===t.key}}class qu{constructor(){this.changes=[]}getChanges(){return this.changes}clear(){this.changes.length=0}mergeFrom(t){for(const e of t.getChanges())this.mergeChange(e)}recordModify(t){const e=t.objectId;this.changes.find(r=>r.kind==="modify"&&r.objectId===e)||this.changes.push({kind:"modify",objectId:e,before:t.clonePreservingIdentity()})}hasModify(t){return this.changes.some(e=>e.kind==="modify"&&e.objectId===t)}recordAppend(t,e){this.recordStructuralChange({kind:"append",container:t,object:e.clonePreservingIdentity()})}recordRemove(t,e){this.recordStructuralChange({kind:"remove",container:t,object:e.clonePreservingIdentity()})}recordSysvar(t,e){const n=t.toLowerCase();this.changes.find(s=>s.kind==="sysvar"&&s.name===n)||this.changes.push({kind:"sysvar",name:n,before:e})}finalize(t){for(const e of this.changes)if(e.kind==="modify"){const n=t.getObjectById(e.objectId);n&&(e.after=n.clonePreservingIdentity())}else e.kind==="sysvar"&&(e.after=this.getSysvarValue(t,e.name))}recordStructuralChange(t){const e=t.kind==="append"?"remove":"append",n=this.findStructuralChangeIndex(e,t.container,t.object.objectId);if(n>=0){this.changes.splice(n,1);return}this.changes.push(t)}mergeChange(t){if(t.kind==="modify"){this.changes.find(n=>n.kind==="modify"&&n.objectId===t.objectId)||this.changes.push(t);return}if(t.kind==="sysvar"){this.changes.find(n=>n.kind==="sysvar"&&n.name===t.name)||this.changes.push(t);return}this.recordStructuralChange(t)}findStructuralChangeIndex(t,e,n){return this.changes.findIndex(r=>r.kind===t&&r.object.objectId===n&&dy(r.container,e))}getSysvarValue(t,e){return bt.instance().getVar(e,t)}}class qa{constructor(){this.openedObjects=new Map,this.originalStates=new Map,this.recorder=new qu}getObject(t,e,n=!1){const r=this.openedObjects.get(t);if(r){if(e===Pn.kForWrite&&!this.originalStates.has(t)){const a=r.clonePreservingIdentity();this.originalStates.set(t,a),this.recorder.recordModify(r)}return r}const s=this.lookupObject(t,n);if(this.openedObjects.set(t,s),e===Pn.kForWrite){const a=s.clonePreservingIdentity();this.originalStates.set(s.objectId,a),this.recorder.recordModify(s)}return s}commit(){this.originalStates.clear(),this.openedObjects.clear()}abort(){for(const[t,e]of this.originalStates){const n=this.openedObjects.get(t);n&&n.restoreFrom(e)}this.originalStates.clear(),this.openedObjects.clear(),this.recorder.clear()}lookupObject(t,e){throw new Error(`lookupObject(${t}) not implemented`)}}class Ku extends qa{constructor(t){super(),this.database=t}lookupObject(t,e){const n=this.database.getObjectById(t,e);if(!n)throw new Error(`lookupObject(${t}) not found`);return n}}class Zu{constructor(){this.undoRecords=[],this.redoRecords=[],this.maxDepth=100}push(t){this.undoRecords.push(t),this.redoRecords.length=0,this.undoRecords.length>this.maxDepth&&this.undoRecords.shift()}popUndo(){return this.undoRecords.pop()}pushRedo(t){this.redoRecords.push(t)}popRedo(){return this.redoRecords.pop()}canUndo(){return this.undoRecords.length>0}canRedo(){return this.redoRecords.length>0}clear(){this.undoRecords.length=0,this.redoRecords.length=0}}class Qu{constructor(t){this.database=t,this.transactionStack=[],this.undoStack=new Zu,this.undoMarkStack=[],this._applyingUndoRedo=!1,this._pendingEntityModified=new Set,this._pendingLayerModified=new Map,this.strictMode=!1,this.changeApplier=new $u(t)}startTransaction(){const t=new Ku(this.database);return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}hasTransaction(){return this.transactionStack.length>0}isRecording(){return this.hasTransaction()&&!this._applyingUndoRedo}isApplyingUndoRedo(){return this._applyingUndoRedo}isOpenedForWriteInTransaction(t){for(const e of this.transactionStack)if(e.recorder.hasModify(t))return!0;return!1}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");if(this.transactionStack.length>0){this.transactionStack[this.transactionStack.length-1].recorder.mergeFrom(t.recorder),t.commit();return}t.recorder.finalize(this.database);const e=t.recorder.getChanges();t.commit(),e.length>0&&(this.dispatchCommitEvents(e),this.enqueueUndoChanges(e))}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");const e=[...t.recorder.getChanges()];this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{t.abort(),e.length>0&&this.changeApplier.applyInverse(e)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}}startUndoMark(t){this.undoMarkStack.push({label:t,pendingChanges:[]})}endUndoMark(){const t=this.undoMarkStack.pop();if(!t)throw new Error("No active undo mark to end.");t.pendingChanges.length!==0&&this.undoStack.push({label:t.label,changes:t.pendingChanges})}cancelUndoMark(){this.undoMarkStack.length>0&&this.undoMarkStack.pop()}undo(){const t=this.undoStack.popUndo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyInverse(t.changes),this.dispatchUndoRedoEvents(t.changes,!0)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.pushRedo(t),!0}redo(){const t=this.undoStack.popRedo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyForward(t.changes),this.dispatchUndoRedoEvents(t.changes,!1)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.push(t),!0}canUndo(){return this.undoStack.canUndo()}canRedo(){return this.undoStack.canRedo()}clearUndoStack(){this.undoStack.clear()}recordAppend(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordAppend(t,e))}recordRemove(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordRemove(t,e))}recordSysvar(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordSysvar(t,e))}resolveSymbolTableName(t){const e=this.database.tables;return t===e.appIdTable?"appIdTable":t===e.blockTable?"blockTable":t===e.dimStyleTable?"dimStyleTable":t===e.linetypeTable?"linetypeTable":t===e.textStyleTable?"textStyleTable":t===e.viewTable?"viewTable":t===e.layerTable?"layerTable":t===e.viewportTable?"viewportTable":t.objectId}runUndoable(t,e){this.startUndoMark(t),this.startTransaction();try{const n=e(this.currentTransaction());return this.commitTransaction(),this.endUndoMark(),n}catch(n){throw this.hasTransaction()&&this.abortTransaction(),this.cancelUndoMark(),n}}enqueueUndoChanges(t){const e=this.undoMarkStack[this.undoMarkStack.length-1];if(e)for(const n of t)e.pendingChanges.push(n)}dispatchCommitEvents(t){const{modified:e,appended:n,erased:r}=ra(this.database,t);for(const o of e)this.dispatchEntityModified(o);n.length>0&&this.database.notifyEntityAppended(n),r.length>0&&this.database.notifyEntityErased(r);const{set:s,erased:a}=Lc(this.database,t);for(const{object:o,key:c}of s)this.database.notifyDictObjectSet(o,c);for(const{object:o,key:c}of a)this.database.notifyDictObjectErased(o,c);for(const o of t)o.kind==="sysvar"&&o.after!==void 0&&bt.instance().events.sysVarChanged.dispatch({database:this.database,name:o.name,oldVal:o.before,newVal:o.after});for(const o of Cc(this.database,t))this.dispatchLayerModified(o)}dispatchUndoRedoEvents(t,e){const{modified:n,appended:r,erased:s}=ra(this.database,t),{set:a,erased:o}=Lc(this.database,t);if(e){for(const c of n)this.dispatchEntityModified(c);s.length>0&&this.database.notifyEntityAppended(s),r.length>0&&this.database.notifyEntityErased(r);for(const{object:c,key:l}of o)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of a)this.database.notifyDictObjectErased(c,l)}else{for(const c of n)this.dispatchEntityModified(c);r.length>0&&this.database.notifyEntityAppended(r),s.length>0&&this.database.notifyEntityErased(s);for(const{object:c,key:l}of a)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of o)this.database.notifyDictObjectErased(c,l)}for(const c of t)if(c.kind==="sysvar"){const l=e?c.after:c.before,h=e?c.before:c.after;h!==void 0&&bt.instance().events.sysVarChanged.dispatch({database:this.database,name:c.name,oldVal:l,newVal:h})}for(const c of Cc(this.database,t,e))this.dispatchLayerModified(c)}dispatchLayerModified(t){if(this.database.isEventBatched()){const e=this._pendingLayerModified.get(t.layer.objectId);if(e){e.changes={...e.changes,...t.changes};return}this._pendingLayerModified.set(t.layer.objectId,{database:t.database,layer:t.layer,changes:{...t.changes}});return}this.database.events.layerModified.dispatch(t)}dispatchEntityModified(t){if(this.database.isEventBatched()){this._pendingEntityModified.add(t);return}this.database.events.entityModified.dispatch({database:this.database,entity:t})}flushPendingLayerModifiedEvents(){if(this._pendingLayerModified.size===0)return;const t=[...this._pendingLayerModified.values()];this._pendingLayerModified.clear();for(const e of t)this.database.events.layerModified.dispatch(e)}flushPendingEntityModifiedEvents(){if(this._pendingEntityModified.size===0)return;const t=[...this._pendingEntityModified];this._pendingEntityModified.clear();for(const e of t)this.database.events.entityModified.dispatch({database:this.database,entity:e})}}const $n=class $n extends vt{constructor(){super({objectId:"0"}),this._classes=[],this._handleRegistry=new Map,this._drawNoPlotLayers=!0,this._eventBatchDepth=0,this._pendingEntityAppended=[],this._pendingEntityErased=[],this._pendingDictObjectSet=[],this._pendingDictObjectErased=[],this._lastOpenError=null,this.events={dictObjetSet:new lt,dictObjectErased:new lt,entityAppended:new lt,entityModified:new lt,entityErased:new lt,layerAppended:new lt,layerModified:new lt,layerErased:new lt,openProgress:new lt,openFailed:new lt},$n._unsavedDrawingSequence+=1,this._dwgname=`Drawing${$n._unsavedDrawingSequence}.dwg`,this._version=new xt("AC1014"),this._angbase=0,this._angdir=0,this._aunits=Tt.DecimalDegrees,this._auprec=0,this._lunits=ot.Decimal,this._luprec=4,this._celtscale=1,this._cecolor=new j,this._celtype=dt,this._celweight=exports.AcGiLineWeight.ByLayer,this._cetransparency=new ht,this._clayer="0",this._cmlstyle=xe,this._cmlscale=1,this._cmleaderstyle=we,this._hpbackgroundcolor=new j(exports.AcCmColorMethod.None),this._hpcolor=this._cecolor.clone(),this._hplayer=".",this._hptransparency=new ht,this._textstyle=st,this._dimstyle=st,this._extents=new z,this._insunits=et.Millimeters,this._unitmode=0,this._measurement=1,this._ltscale=1,this._lwdisplay=!1,this._tilemode=!0,this._psltscale=!0,this._pdmode=0,this._pdsize=0,this._osmode=0,this._orthomode=0,this._maxHandle=0,this._tables={appIdTable:new Hu(this),blockTable:new Yu(this),dimStyleTable:new Xu(this),linetypeTable:new Vu(this),textStyleTable:new li(this),ucsTable:new ju(this),viewTable:new Gu(this),layerTable:new zu(this),viewportTable:new Uu(this)},this._objects={dictionary:new Vt(this),group:new Vt(this),imageDefinition:new Vt(this),layerFilter:new Vt(this),layerIndex:new Vt(this),layout:new Wu(this),mleaderStyle:new Vt(this),mlineStyle:new Vt(this),sortentsTable:new Vt(this),xrecord:new Vt(this)},this._layerFilters=new Ae,this.transactionManager=new Qu(this),this.registerBootstrapHandles()}get tables(){return this._tables}get classes(){return this._classes}set classes(t){this._classes=t.map(e=>({...e}))}get objects(){return this._objects}get layerFilters(){return this._layerFilters}set layerFilters(t){this._layerFilters=t??new Ae}getObjectById(t,e=!1){return t===this.objectId?this:this._handleRegistry.get(t)}isUndoRecording(){return this.transactionManager.isRecording()}openObject(t,e){const n=this.transactionManager.currentTransaction();if(n){const r=n.getObject(t,e);if(r)return r}return this.getObjectById(t)}openObjectForRead(t){return this.openObject(t,Pn.kForRead)}openObjectForWrite(t){return this.openObject(t,Pn.kForWrite)}openEntityForRead(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForRead(e)}openEntityForWrite(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForWrite(e)}runDatabaseEdit(t,e){if(this.isUndoRecording()){e();return}this.transactionManager.runUndoable(t,e)}getRootDictionaries(){return[this.objects.dictionary,this.objects.group,this.objects.imageDefinition,this.objects.layerFilter,this.objects.layerIndex,this.objects.layout,this.objects.mleaderStyle,this.objects.mlineStyle,this.objects.sortentsTable,this.objects.xrecord]}beginEventBatch(){this._eventBatchDepth++}endEventBatch(){this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth===0&&(this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents(),this.flushEventBatch()))}async endEventBatchChunked(t,e){if(this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth!==0))return;this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents();const n=this._pendingEntityAppended;this._pendingEntityAppended=[];const r=n.length,s=Math.max(1,t);if(r===0){this.flushEventBatchRemainder();return}let a=0;try{for(let o=0;o<r;o+=s){const c=Math.min(o+s,r),l=n.slice(o,c);this.events.entityAppended.dispatch({database:this,entity:l}),a=c,e&&await e(c,r)}}finally{a<r&&this.events.entityAppended.dispatch({database:this,entity:n.slice(a)}),this.flushEventBatchRemainder()}}isEventBatched(){return this._eventBatchDepth>0}notifyEntityAppended(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityAppended.push(...e);return}this.events.entityAppended.dispatch({database:this,entity:t})}notifyEntityErased(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityErased.push(...e);return}this.events.entityErased.dispatch({database:this,entity:t})}notifyDictObjectSet(t,e){if(this.isEventBatched()){this._pendingDictObjectSet.push({object:t,key:e});return}this.events.dictObjetSet.dispatch({database:this,object:t,key:e})}notifyDictObjectErased(t,e){if(this.isEventBatched()){this._pendingDictObjectErased.push({object:t,key:e});return}this.events.dictObjectErased.dispatch({database:this,object:t,key:e})}flushEventBatch(){if(this._pendingEntityAppended.length>0){const t=this._pendingEntityAppended;this._pendingEntityAppended=[],this.events.entityAppended.dispatch({database:this,entity:t})}this.flushEventBatchRemainder()}flushEventBatchRemainder(){if(this._pendingEntityErased.length>0){const t=this._pendingEntityErased;this._pendingEntityErased=[],this.events.entityErased.dispatch({database:this,entity:t})}if(this._pendingDictObjectSet.length>0){const t=this._pendingDictObjectSet;this._pendingDictObjectSet=[];for(const{object:e,key:n}of t)this.events.dictObjetSet.dispatch({database:this,object:e,key:n})}if(this._pendingDictObjectErased.length>0){const t=this._pendingDictObjectErased;this._pendingDictObjectErased=[];for(const{object:e,key:n}of t)this.events.dictObjectErased.dispatch({database:this,object:e,key:n})}}get formatter(){return this._formatter??(this._formatter=new Ou(this))}generateHandle(){return this._maxHandle++,this._maxHandle.toString(16).toUpperCase()}generateUniqueHandle(){let t=this.generateHandle();for(;this.isHandleTaken(t);)t=this.generateHandle();return t}initializeHandleSeed(t){const e=parseInt(t,16);if(!isNaN(e)&&e>0){const n=e-1;n>this._maxHandle&&(this._maxHandle=n)}}adoptExternalHandle(t,e){return this.releaseObjectHandle(t),e&&!e.startsWith(Le)&&!this.isHandleTaken(e)?(t.objectId=e,this.registerObjectHandle(t),this.updateMaxHandle(e),e):this.assignGeneratedHandle(t)}registerObjectHandle(t){const e=t.objectId;!e||e.startsWith(Le)||this._handleRegistry.set(e,t)}releaseObjectHandle(t){const e=t.objectId;!e||e.startsWith(Le)||this._handleRegistry.get(e)===t&&this._handleRegistry.delete(e)}isHandleTaken(t,e){if(!t||t.startsWith(Le))return!1;const n=this._handleRegistry.get(t);return n!==void 0&&n!==e}registerBootstrapHandles(){this._handleRegistry.clear(),this.registerObjectHandle(this);for(const t of[this._tables.blockTable,this._tables.dimStyleTable,this._tables.layerTable,this._tables.linetypeTable,this._tables.appIdTable,this._tables.textStyleTable,this._tables.ucsTable,this._tables.viewTable,this._tables.viewportTable])this.registerObjectHandle(t);for(const t of[this._objects.dictionary,this._objects.group,this._objects.imageDefinition,this._objects.layerFilter,this._objects.layerIndex,this._objects.layout,this._objects.mleaderStyle,this._objects.mlineStyle,this._objects.sortentsTable,this._objects.xrecord])this.registerObjectHandle(t)}assignGeneratedHandle(t){const e=t.objectId;this.releaseObjectHandle(t);const n=this.generateUniqueHandle();return t.objectId=n,this.registerObjectHandle(t),e&&e!==n&&this.updateMaxHandle(n),n}updateMaxHandle(t){const e=parseInt(t,16);!isNaN(e)&&e>this._maxHandle&&(this._maxHandle=e)}commitObjectHandle(t,e){const n=t.getAttrWithoutException("objectId"),r=e!=null&&n!=null&&e(n);if(!n||t.isTemp||r){this.assignGeneratedHandle(t);return}const a=this._handleRegistry.get(n);if(a&&a!==t)if(this.shouldPreserveIncomingHandle(t))this.assignGeneratedHandle(a);else{this.assignGeneratedHandle(t);return}this.registerObjectHandle(t),this.updateMaxHandle(n)}shouldPreserveIncomingHandle(t){return!t.isTemp}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.updateSysVar(E.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get auprec(){return this._auprec}set auprec(t){this.updateSysVar(E.AUPREC,this._auprec,t??0,e=>{this._auprec=e})}get lunits(){return this._lunits}set lunits(t){this.updateSysVar(E.LUNITS,this._lunits,t??ot.Decimal,e=>{this._lunits=e})}get luprec(){return this._luprec}set luprec(t){this.updateSysVar(E.LUPREC,this._luprec,t??4,e=>{this._luprec=e})}get version(){return this._version}set version(t){this.updateSysVar(E.ACADVER,this._version,new xt(t),e=>{this._version=e})}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(E.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get unitmode(){return this._unitmode}set unitmode(t){this.updateSysVar(E.UNITMODE,this._unitmode,t??0,e=>{this._unitmode=e})}get measurement(){return this._measurement}set measurement(t){this.updateSysVar(E.MEASUREMENT,this._measurement,t??1,e=>{this._measurement=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(E.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get lwdisplay(){return this._lwdisplay}get drawNoPlotLayers(){return this._drawNoPlotLayers}get dwgname(){return this._dwgname}setDwgName(t){const e=t.trim();e&&this.updateSysVar(E.DWGNAME,this._dwgname,e,n=>{this._dwgname=n})}get thumbnailImage(){return this._thumbnailImage}set thumbnailImage(t){if(!t||t.length===0){this._thumbnailImage=void 0;return}this._thumbnailImage=t}isLayerDrawable(t){if(this._drawNoPlotLayers)return!0;const e=this.tables.layerTable.getAt(t);return e==null||e.isPlottable}set lwdisplay(t){this.updateSysVar(E.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get tilemode(){return this._tilemode}set tilemode(t){this._tilemode=t}get psltscale(){return this._psltscale}set psltscale(t){this._psltscale=t}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(E.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(E.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celtype(){return this._celtype}set celtype(t){const e=this.normalizeLinetypeName(t??dt);this.updateSysVar(E.CELTYPE,this._celtype,e,n=>{this._celtype=n})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(E.CELWEIGHT,this._celweight,t??exports.AcGiLineWeight.ByLayer,e=>{this._celweight=e})}get cetransparency(){return this._cetransparency}set cetransparency(t){this.updateSysVar(E.CETRANSPARENCY,this._cetransparency,t??new ht,e=>{this._cetransparency=e.clone()})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(E.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get cmlstyle(){return this._cmlstyle}set cmlstyle(t){this.updateSysVar(E.CMLSTYLE,this._cmlstyle,t??xe,e=>{this._cmlstyle=e})}get cmlscale(){return this._cmlscale}set cmlscale(t){this.updateSysVar(E.CMLSCALE,this._cmlscale,t??1,e=>{this._cmlscale=e})}get cmleaderstyle(){return this._cmleaderstyle}set cmleaderstyle(t){this.updateSysVar(E.CMLEADERSTYLE,this._cmleaderstyle,t??we,e=>{this._cmleaderstyle=e})}get hpbackgroundcolor(){return this._hpbackgroundcolor}set hpbackgroundcolor(t){this.updateSysVar(E.HPBACKGROUNDCOLOR,this._hpbackgroundcolor,t??new j(exports.AcCmColorMethod.None),e=>{this._hpbackgroundcolor=e.clone()})}get hpcolor(){return this._hpcolor}set hpcolor(t){this.updateSysVar(E.HPCOLOR,this._hpcolor,t??this._cecolor,e=>{this._hpcolor=e.clone()})}get hplayer(){return this._hplayer}set hplayer(t){this.updateSysVar(E.HPLAYER,this._hplayer,t??".",e=>{this._hplayer=e})}get hptransparency(){return this._hptransparency}set hptransparency(t){this.updateSysVar(E.HPTRANSPARENCY,this._hptransparency,t??new ht,e=>{this._hptransparency=e.clone()})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(E.TEXTSTYLE,this._textstyle,t??st,e=>{this._textstyle=e})}get dimstyle(){return this._dimstyle}set dimstyle(t){this.updateSysVar(E.DIMSTYLE,this._dimstyle,t??st,e=>{this._dimstyle=e})}get angbase(){return this._angbase}set angbase(t){this.updateSysVar(E.ANGBASE,this._angbase,t??0,e=>{this._angbase=e})}get angdir(){return this._angdir}set angdir(t){this.updateSysVar(E.ANGDIR,this._angdir,t??0,e=>{this._angdir=e})}get extmax(){return this._extents.max}set extmax(t){if(t){const e=this._extents.max.clone();this._extents.expandByPoint(t),this._extents.max.equals(e)||this.triggerSysVarChangedEvent(E.EXTMAX,e,this._extents.max)}}get extmin(){return this._extents.min}set extmin(t){if(t){const e=this._extents.min.clone();this._extents.expandByPoint(t),this._extents.min.equals(e)||this.triggerSysVarChangedEvent(E.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(E.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(E.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(E.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}get orthomode(){return this._orthomode}set orthomode(t){this.updateSysVar(E.ORTHOMODE,this._orthomode,t??0,e=>{this._orthomode=e})}get lastOpenError(){return this._lastOpenError}async read(t,e,n=Gn.DXF){const r=ie.instance.get(n);if(r==null)throw new Error(`Database converter for file type '${n}' isn't registered and can can't read this file!`);this.clear(),this._lastOpenError=null,this._drawNoPlotLayers=(e==null?void 0:e.drawNoPlotLayers)??!0,e!=null&&e.fileName&&this.setDwgName(e.fileName),ch(this);try{await r.read(t,this,{minimumChunkSize:e&&e.minimumChunkSize||10,progress:this.createConversionProgressHandler(),timeout:e==null?void 0:e.timeout,sysVars:e==null?void 0:e.sysVars})}catch(s){const a=ci.from(s);throw this._lastOpenError=a,this.events.openFailed.dispatch({database:this,error:a}),a}this._lastOpenError=null,this.ensureDatabaseDefaults()}createConversionProgressHandler(){return async(t,e,n,r,s)=>{let a=r;if(n==="ERROR"&&s){const o=ci.fromTask(s);this._lastOpenError=o,a={code:o.code,message:o.message,stage:o.stage??e}}this.events.openProgress.dispatch({database:this,percentage:t,stage:"CONVERSION",subStage:e,subStageStatus:n,data:a})}}async openUri(t,e){var g;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const n=await fetch(t);if(!n.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 '${n.status}'!`);const r=n.headers.get("content-length"),s=r?parseInt(r,10):null;let a=0;const o=(g=n.body)==null?void 0:g.getReader();if(!o)throw new Error("Failed to get response reader");const c=[];for(;;){const{done:f,value:p}=await o.read();if(f)break;if(c.push(p),a+=p.length,s!==null){const m=Math.round(a/s*100);this.events.openProgress.dispatch({database:this,percentage:m,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const l=new Uint8Array(a);let h=0;for(const f of c)l.set(f,h),h+=f.length;const u=this.getFileNameFromUri(t);u&&this.setDwgName(u);const d=u.toLowerCase().split(".").pop();d==="dwg"?await this.read(l.buffer,e,Gn.DWG):d==="dxf"?await this.read(l.buffer,e,Gn.DXF):await this.read(l.buffer,e,d),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}dxfOut(t,e=16,n=this.version.name,r=!1){this.ensureDatabaseDefaults(),this._layerFilters.root.getNestedFilters().length>0&&!this.tables.layerTable.extensionDictionary&&(this.tables.layerTable.extensionDictionary=this.generateHandle());const s=typeof r=="boolean"?{saveThumbnailImage:r,format:"ascii"}:{saveThumbnailImage:r.saveThumbnailImage??!1,format:r.format??"ascii"},a=n instanceof xt?n:new xt(n),o=new Me({database:this,precision:e,version:a,outputFormat:s.format});return this.writeDxfHeaderSection(o),this.writeDxfClassesSection(o),this.writeDxfTablesSection(o,a),this.writeDxfBlocksSection(o),this.writeDxfEntitiesSection(o),this.writeDxfObjectsSection(o),this.writeDxfThumbnailImageSection(o,s.saveThumbnailImage),o.writeStart("EOF"),s.format==="binary"?o.toBinary():o.toString()}async regen(){await new Kh(this).read(null,this,{minimumChunkSize:500,progress:this.createConversionProgressHandler()})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new Mu(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}ensureEntityStyleDefaults(t){var e;if(t.dxfTypeName==="MLINE"){this.ensureMLineStyle(this._cmlstyle||xe);return}if(t.dxfTypeName==="MULTILEADER"){this.ensureMLeaderStyle(this._cmleaderstyle||we);return}if(t.dxfTypeName==="HATCH"){const n=t;(e=n.applyPatternDefaultsFromSysVars)==null||e.call(n,this)}}ensureTextStyleDefaults(){this.hasDefaultTextStyle()||this.tables.textStyleTable.add(new Jr({name:st,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}hasDefaultTextStyle(){const t=[st,"STANDARD"];for(const e of t)if(this.tables.textStyleTable.has(e))return!0;for(const e of this.tables.textStyleTable.newIterator())if(e.name.toUpperCase()===st.toUpperCase())return!0;return!1}ensureDatabaseDefaults(){if(!this.tables.layerTable.has("0")){const e=new j;e.colorIndex=7,this.tables.layerTable.add(new ki({name:"0",standardFlags:0,linetype:Oe,lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(this.tables.linetypeTable.has(ae)||this.tables.linetypeTable.add(new Ne({name:ae,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(dt)||this.tables.linetypeTable.add(new Ne({name:dt,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(Oe)||this.tables.linetypeTable.add(new Ne({name:Oe,standardFlag:0,description:"Solid line",totalPatternLength:0})),this.ensureTextStyleDefaults(),this.tables.dimStyleTable.has(st)||this.tables.dimStyleTable.add(new Ft({name:st,dimtxsty:st})),!this.tables.viewportTable.has(An)){const e=new Be;e.name=An,this.tables.viewportTable.add(e)}this.ensureMLineStyle(this._cmlstyle||xe),this.ensureMLeaderStyle(this._cmleaderstyle||we);const t=this.tables.blockTable.modelSpace;if(!this.objects.layout.getAt("Model")){const e=new vi;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.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.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId}this.tables.appIdTable.has(Ws)||this.tables.appIdTable.add(new cr(Ws)),this.tables.appIdTable.has(Hs)||this.tables.appIdTable.add(new cr(Hs))}ensureMLineStyle(t){const e=this.objects.mlineStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[s,a]of e.entries())if(s.toUpperCase()===n.toUpperCase()||a.styleName.toUpperCase()===n.toUpperCase())return;const r=new Ua;r.styleName=n,r.elements=[{offset:.5,color:new j().setByLayer(),lineType:dt},{offset:-.5,color:new j().setByLayer(),lineType:dt}],e.setAt(n,r)}ensureMLeaderStyle(t){const e=this.objects.mleaderStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[o]of e.entries())if(o.toUpperCase()===n.toUpperCase())return;const r=new ss;r.unknown1=2,r.maxLeaderSegmentsPoints=2,r.leaderLineColor=new j().setByBlock(),r.textColor=new j().setByBlock(),r.blockColor=new j().setByBlock(),r.alignSpace=4,r.breakSize=3.75,r.enableBlockRotation=!0,r.unknown2=!1;const s=this.tables.linetypeTable.getAt(ae);r.leaderLineTypeId=s==null?void 0:s.objectId;const a=this.tables.textStyleTable.getAt(st);r.textStyleId=a==null?void 0:a.objectId,e.setAt(n,r)}writeDxfHeaderSection(t){var e;t.startSection("HEADER"),t.writeString(9,"$ACADVER"),t.writeString(1,((e=t.version)==null?void 0:e.name)??this.version.name),t.writeString(9,"$HANDSEED"),t.writeString(5,t.nextHandle.toString(16).toUpperCase()),t.capabilities.supportsUtf8CodePage&&(t.writeString(9,"$DWGCODEPAGE"),t.writeString(3,"UTF-8")),t.writeString(9,"$INSUNITS"),t.writeInt16(70,this.insunits),t.writeString(9,"$LUNITS"),t.writeInt16(70,this.lunits),t.writeString(9,"$LUPREC"),t.writeInt16(70,this.luprec),t.writeString(9,"$UNITMODE"),t.writeInt16(70,this.unitmode),t.writeString(9,"$MEASUREMENT"),t.writeInt16(70,this.measurement),t.writeString(9,"$LTSCALE"),t.writeDouble(40,this.ltscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$LWDISPLAY"),t.writeInt16(70,this.lwdisplay?1:0)),t.writeString(9,"$CELTSCALE"),t.writeDouble(40,this.celtscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$CELWEIGHT"),t.writeLineWeight(370,this.celweight)),t.writeString(9,"$CECOLOR"),t.writeCmColor(this.cecolor),t.writeString(9,"$TILEMODE"),t.writeInt16(70,this.tilemode?1:0),t.writeString(9,"$PSLTSCALE"),t.writeInt16(70,this.psltscale?1:0),t.writeString(9,"$CLAYER"),t.writeString(8,this.clayer),t.writeString(9,"$CELTYPE"),t.writeString(6,this.celtype),t.capabilities.supportsTransparency&&!this.cetransparency.isInvalid&&(t.writeString(9,"$CETRANSPARENCY"),t.writeTransparency(this.cetransparency)),t.writeString(9,"$CMLSTYLE"),t.writeString(2,this.cmlstyle),t.writeString(9,"$CMLSCALE"),t.writeDouble(40,this.cmlscale),t.writeString(9,"$CMLEADERSTYLE"),t.writeString(2,this.cmleaderstyle),this.hpcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPCOLOR"),t.writeCmColor(this.hpcolor,2)),this.hpbackgroundcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPBACKGROUNDCOLOR"),t.writeCmColor(this.hpbackgroundcolor,2)),t.writeString(9,"$HPLAYER"),t.writeString(8,this.hplayer),t.capabilities.supportsTransparency&&!this.hptransparency.isInvalid&&(t.writeString(9,"$HPTRANSPARENCY"),t.writeTransparency(this.hptransparency)),t.writeString(9,"$TEXTSTYLE"),t.writeString(7,this.textstyle),t.writeString(9,"$DIMSTYLE"),t.writeString(2,this.dimstyle),t.writeString(9,"$ANGBASE"),t.writeAngle(50,this.angbase),t.writeString(9,"$ANGDIR"),t.writeInt16(70,this.angdir),t.writeString(9,"$AUNITS"),t.writeInt16(70,this.aunits),t.writeString(9,"$AUPREC"),t.writeInt16(70,this.auprec),t.writeString(9,"$EXTMIN"),t.writePoint3d(10,this.extmin),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,this.extmax),t.writeString(9,"$PDMODE"),t.writeInt32(70,this.pdmode),t.writeString(9,"$PDSIZE"),t.writeDouble(40,this.pdsize),t.writeString(9,"$OSMODE"),t.writeInt32(70,this.osmode),t.writeString(9,"$ORTHOMODE"),t.writeInt16(70,this.orthomode),t.endSection()}writeDxfClassesSection(t){if(!(!t.capabilities.supportsClassesSection||this._classes.length===0)){t.startSection("CLASSES");for(const e of this._classes)t.writeStart("CLASS"),t.writeString(1,e.name),t.writeString(2,e.cppClassName),t.writeString(3,e.appName),t.writeInt32(90,e.proxyFlag),t.writeInt32(91,e.instanceCount),t.writeInt8(280,e.wasProxy?1:0),t.writeInt8(281,e.isEntity?1:0);t.endSection()}}writeDxfTablesSection(t,e){t.startSection("TABLES"),this.writeDxfTable(t,"VPORT",this.tables.viewportTable,this.tables.viewportTable.newIterator(),"VPORT"),this.writeDxfTable(t,"VIEW",this.tables.viewTable,this.tables.viewTable.newIterator(),"VIEW"),this.writeDxfTable(t,"UCS",this.tables.ucsTable,this.tables.ucsTable.newIterator(),"UCS"),this.writeDxfTable(t,"LTYPE",this.tables.linetypeTable,this.tables.linetypeTable.newIterator(),"LTYPE"),this.writeDxfTable(t,"LAYER",this.tables.layerTable,this.tables.layerTable.newIterator(),"LAYER"),this.writeDxfTable(t,"STYLE",this.tables.textStyleTable,this.tables.textStyleTable.newIterator(!0),"STYLE"),this.writeDxfTable(t,"APPID",this.tables.appIdTable,this.tables.appIdTable.newIterator(),"APPID"),this.writeDxfTable(t,"DIMSTYLE",this.tables.dimStyleTable,this.tables.dimStyleTable.newIterator(),"DIMSTYLE"),e.capabilities.supportsBlockRecordTable&&this.writeDxfTable(t,"BLOCK_RECORD",this.tables.blockTable,this.tables.blockTable.newIterator(),"BLOCK_RECORD"),t.endSection()}writeDxfBlocksSection(t){t.startSection("BLOCKS");for(const e of this.tables.blockTable.newIterator()){if(e.dxfOutBlockBegin(t),!e.isModelSapce&&!e.isPaperSapce)for(const n of e.newIterator())this.writeDxfEntity(t,n);e.dxfOutBlockEnd(t)}t.endSection()}writeDxfEntitiesSection(t){t.startSection("ENTITIES");for(const e of this.tables.blockTable.newIterator())if(!(!e.isModelSapce&&!e.isPaperSapce))for(const n of e.newIterator())this.writeDxfEntity(t,n);t.endSection()}writeDxfObjectsSection(t){if(!t.capabilities.supportsObjectsSection)return;t.startSection("OBJECTS");const e=this.objects.dictionary;e.ownerId="0";const n=a=>{t.writeStart("DICTIONARY"),a.dxfOut(t,!0)},r=(a,o)=>{e.getAt(a)!==o&&e.setAt(a,o)},s=a=>{e.getAt(a)&&e.remove(a)};r("ACAD_LAYOUT",this.objects.layout),this.objects.group.numEntries>0?r("ACAD_GROUP",this.objects.group):s("ACAD_GROUP"),this.objects.sortentsTable.numEntries>0?r("ACAD_SORTENTS",this.objects.sortentsTable):s("ACAD_SORTENTS"),this.objects.mleaderStyle.numEntries>0?r("ACAD_MLEADERSTYLE",this.objects.mleaderStyle):s("ACAD_MLEADERSTYLE"),this.objects.mlineStyle.numEntries>0?r("ACAD_MLINESTYLE",this.objects.mlineStyle):s("ACAD_MLINESTYLE"),this.objects.imageDefinition.numEntries>0?r("ISM_RASTER_IMAGE_DICT",this.objects.imageDefinition):s("ISM_RASTER_IMAGE_DICT"),this.objects.xrecord.numEntries>0?r("MLIGHT_XRECORD",this.objects.xrecord):s("MLIGHT_XRECORD"),n(e),n(this.objects.layout),this.objects.group.numEntries>0&&n(this.objects.group),this.objects.sortentsTable.numEntries>0&&n(this.objects.sortentsTable),this.objects.mleaderStyle.numEntries>0&&n(this.objects.mleaderStyle),this.objects.mlineStyle.numEntries>0&&n(this.objects.mlineStyle),this.objects.imageDefinition.numEntries>0&&n(this.objects.imageDefinition),this.objects.xrecord.numEntries>0&&n(this.objects.xrecord);for(const[a,o]of this.objects.layout.entries())t.writeStart("LAYOUT"),o.dxfOut(t,!0);for(const[a,o]of this.objects.group.entries())o.name||(o.name=a),t.writeStart("GROUP"),o.dxfOut(t,!0);for(const[a,o]of this.objects.sortentsTable.entries())t.writeStart("SORTENTSTABLE"),o.dxfOut(t,!0);for(const[a,o]of this.objects.imageDefinition.entries())t.writeStart("IMAGEDEF"),o.dxfOut(t,!0);for(const[a,o]of this.objects.layerFilter.entries())t.writeStart("LAYER_FILTER"),o.dxfOut(t,!0);for(const[a,o]of this.objects.layerIndex.entries())t.writeStart("LAYER_INDEX"),o.dxfOut(t,!0);for(const[a,o]of this.objects.mleaderStyle.entries())t.writeStart("MLEADERSTYLE"),o.dxfOut(t,!0);for(const[a,o]of this.objects.mlineStyle.entries())t.writeStart("MLINESTYLE"),o.dxfOut(t,!0);for(const[a,o]of this.objects.xrecord.entries())t.writeStart("XRECORD"),o.dxfOut(t,!0);this.writeAcLyLayerFilterObjects(t),t.endSection()}writeAcLyLayerFilterObjects(t){const e=uu(this._layerFilters);if(e.nodes.length===0)return;const n=[],r=[],s=this.tables.layerTable,a=s.extensionDictionary??this.generateHandle();s.extensionDictionary=a;const o=this.generateHandle(),c=this.generateHandle(),l=[],h=[],u=(f,p,m)=>{const y=this.generateHandle();let _;if(f.children.length>0){const v=this.generateHandle(),w=this.generateHandle(),A=[];for(const I of f.children)A.push({name:I.key,id:u(I,w,!1)});n.push({handle:v,ownerId:y,entries:[{name:In,id:w}]}),n.push({handle:w,ownerId:v,entries:A}),_=v}return r.push({handle:y,ownerId:p,extensionDictionaryId:_,data:f.data}),m&&h.push({name:f.key,id:y}),y};for(const f of e.nodes)l.push({name:f.key,id:u(f,o,!0)});const d=new Map,g=this.getObjectById(a);if(g instanceof Vt)for(const[f,p]of g.entries())d.set(f,p.objectId);d.set(In,o),d.set(rs,c),n.unshift({handle:a,ownerId:s.objectId,entries:Array.from(d,([f,p])=>({name:f,id:p}))},{handle:o,ownerId:a,entries:l},{handle:c,ownerId:a,entries:h});for(const f of n){t.writeStart("DICTIONARY"),t.writeHandle(5,f.handle),t.writeObjectId(330,f.ownerId),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const p of f.entries)t.writeString(3,p.name),t.writeObjectId(350,p.id)}for(const f of r){const p=new Ha;p.objectId=f.handle,p.ownerId=f.ownerId,f.extensionDictionaryId&&(p.extensionDictionary=f.extensionDictionaryId),p.data=du(f.data),t.writeStart("XRECORD"),p.dxfOut(t)}}writeDxfTable(t,e,n,r,s){const a=[...r];t.startTable(e),n.dxfOut(t);for(const o of a){if(s==="BLOCK_RECORD"&&o instanceof nt){o.dxfOutBlockRecord(t);continue}t.writeStart(s),o.dxfOut(t,!0)}t.endTable()}writeDxfEntity(t,e){if(e instanceof Lt&&!t.capabilities.supportsLwPolyline){t.writeStart("POLYLINE"),e.dxfOutAs2dPolyline(t,!0);return}t.writeStart(e.dxfTypeName),e.dxfOut(t,!0)}writeDxfThumbnailImageSection(t,e=!1){const n=this._thumbnailImage;if(!e||!n||n.length===0||!t.capabilities.supportsObjectsSection)return;const r=127;t.startSection("THUMBNAILIMAGE"),t.writeInt32(90,n.length);for(let s=0;s<n.length;s+=r){const a=n.subarray(s,s+r);t.writeString(310,Kr(a))}t.endSection()}clear(){this.transactionManager.clearUndoStack(),this._classes=[],this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.ucsTable.removeAll(),this._tables.viewTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._tables.appIdTable.removeAll(),this._objects.layout.removeAll(),this._objects.group.removeAll(),this._objects.imageDefinition.removeAll(),this._objects.layerFilter.removeAll(),this._objects.layerIndex.removeAll(),this._objects.mleaderStyle.removeAll(),this._objects.mlineStyle.removeAll(),this._objects.sortentsTable.removeAll(),this._objects.xrecord.removeAll(),this._layerFilters=new Ae,this._currentSpace=void 0,this._extents.makeEmpty(),this.registerBootstrapHandles()}updateSysVar(t,e,n,r){bt.instance().applyVarMutation(t,e,n,this,()=>r(n))}normalizeLinetypeName(t){const e=t.trim();return e.toUpperCase()==="BYLAYER"?dt:e.toUpperCase()==="BYBLOCK"?ae:e}triggerSysVarChangedEvent(t,e,n){const r=bt.instance(),s=t.toLowerCase();r.getDescriptor(s)!=null&&r.events.sysVarChanged.dispatch({database:this,name:s,oldVal:e,newVal:n})}getFileNameFromUri(t){try{const n=new URL(t).pathname.split("/");return n[n.length-1]||""}catch{return""}}};$n._unsavedDrawingSequence=0;let sa=$n;class gy{constructor(){this.transactionStack=[]}startTransaction(){const t=new qa;return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");t.commit()}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");t.abort()}hasTransaction(){return this.transactionStack.length>0}}const Ts=6,so=class so extends q{get dxfTypeName(){return"TOLERANCE"}constructor(){super(),this._location=new b,this._text="",this._dimensionStyle="",this._normal=new x(0,0,1),this._direction=new x(1,0,0)}get location(){return this._location}set location(t){this._location.set(t.x,t.y,t.z??0)}get text(){return this._text}set text(t){this._text=t}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get normal(){return this._normal}set normal(t){this._normal.set(t.x,t.y,t.z??0),this._normal.lengthSq()>0&&this._normal.normalize()}get direction(){return this._direction}set direction(t){this._direction.set(t.x,t.y,t.z??0),this._direction.lengthSq()>0&&this._direction.normalize()}setOrientation(t,e){return this.normal=t,this.direction=e,this}getBoundingPoints(){return this.getBoundingPolyline().slice(0,4)}getBoundingPolyline(){const{width:t,rowHeight:e,rowCount:n}=this.resolveFrameLayout(),r=e/2,s=r-e*n;return[new b(0,r,0),new b(t,r,0),new b(t,s,0),new b(0,s,0),new b(0,r,0)].map(o=>this.toFrameWcs(o.x,o.y))}get geometricExtents(){const t=new z;for(const e of this.getBoundingPoints())t.expandByPoint(e);return t.isEmpty()&&t.expandByPoint(this._location),t}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return ue(t,e,this._location),this}subGetOsnapPoints(t,e,n,r){t===k.Insertion&&r.push(this._location)}transformBy(t){const e=this.resolveLocalBasis(),n=this._location.clone(),r=n.clone().add(e.xAxis),s=n.clone().add(e.yAxis);n.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const a=new x(r).sub(n),o=new x(s).sub(n);let c=new x().crossVectors(a,o);c.lengthSq()===0?c=this._normal.clone().transformDirection(t):c.normalize();let l=a.clone();return l.lengthSq()===0?l=this._direction.clone().transformDirection(t):l.normalize(),this._location.copy(n),this._normal.copy(c),this._direction.copy(l),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"tolerance",properties:[{name:"text",type:"string",editable:!0,accessor:{get:()=>this.text,set:t=>{this.text=t}}},{name:"dimensionStyle",type:"string",editable:!0,accessor:{get:()=>this.dimensionStyle,set:t=>{this.dimensionStyle=t}}},{name:"textHeight",type:"float",editable:!1,accessor:{get:()=>this.textHeight}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}subWorldDraw(t,e){const r=this.collectFrameLineSegments().map(([a,o])=>t.lines([a,o])),s=this.drawToleranceText(t,e);return r.length>0&&s?t.group([...r,s]):r.length===1?r[0]:r.length>1?t.group(r):s}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFcf"),this._dimensionStyle&&t.writeString(3,this._dimensionStyle),t.writePoint3d(10,this._location),t.writeString(1,this._text),this._normal.equals(x.Z_AXIS)||t.writeVector3d(210,this._normal),this._direction.equals(x.X_AXIS)||t.writeVector3d(11,this._direction),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFcf");let e=this.location.x,n=this.location.y,r=this.location.z,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=this.direction.x,l=this.direction.y,h=this.direction.z,u=!1,d=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 1:this.text=String(g.value);break;case 3:this.dimensionStyle=String(g.value);break;case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:c=p,d=!0;break;case 21:l=p,d=!0;break;case 31:h=p,d=!0;break;case 210:s=p,u=!0;break;case 220:a=p,u=!0;break;case 230:o=p,u=!0;break}}return this.location={x:e,y:n,z:r},u&&(this.normal={x:s,y:a,z:o}),d&&(this.direction={x:c,y:l,z:h}),this}get textHeight(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxt)??Ft.DEFAULT_DIM_VALUES.dimtxt,n=(t==null?void 0:t.dimscale)??Ft.DEFAULT_DIM_VALUES.dimscale;return e*n}drawToleranceText(t,e){const n=this.parseToleranceFrame(this._text);if(n.length===0)return;const r=this.resolveFrameLayout(n),s=this.getTextStyle(),a=[];for(let o=0;o<n.length;o++){const c=n[o];let l=r.cellPadding;const h=-r.rowHeight*o;for(let u=0;u<c.cells.length;u++){const d=c.cells[u],g=r.columnWidths[u]??this.textHeight;if(d.trim()){const f=this.toFrameWcs(l+g/2,h),p={text:d,height:this.textHeight,width:1/0,position:f,directionVector:this._direction,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,drawingDirection:exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT};a.push(t.mtext(p,s,e))}l+=g+r.columnGap}}if(a.length!==0)return a.length===1?a[0]:t.group(a)}collectFrameLineSegments(){const t=this.parseToleranceFrame(this._text),e=this.resolveFrameLayout(t),{width:n,rowHeight:r,rowCount:s,columnDivisions:a}=e;if(n<=0||r<=0||s<=0)return[];const o=r/2,c=o-r*s,l=[],h=(u,d)=>{l.push([u,d])};h(this.toFrameWcs(0,o),this.toFrameWcs(n,o)),h(this.toFrameWcs(n,o),this.toFrameWcs(n,c)),h(this.toFrameWcs(n,c),this.toFrameWcs(0,c)),h(this.toFrameWcs(0,c),this.toFrameWcs(0,o));for(const u of a)h(this.toFrameWcs(u,o),this.toFrameWcs(u,c));for(let u=1;u<t.length;u++){const d=o-r*u;h(this.toFrameWcs(0,d),this.toFrameWcs(n,d))}return l}toFrameWcs(t,e){const n=this.resolveLocalBasis();return this._location.clone().addScaledVector(n.xAxis,t).addScaledVector(n.yAxis,e)}resolveFrameLayout(t){const e=t??this.parseToleranceFrame(this._text),n=this.textHeight,r=n*2,s=n/2,a=n;if(n<=0||e.length===0)return{width:0,totalHeight:0,rowHeight:0,columnWidths:[],columnDivisions:[],rowCount:0,cellPadding:0,columnGap:0};const o=Math.max(...e.map(d=>d.cells.length),0),c=[];for(let d=0;d<o;d++){let g=n;for(const f of e){const p=f.cells[d]??"";if(!p.trim())continue;const m=R0(p,n);g=Math.max(g,m)}c.push(g)}const l=[0];let h=s;for(let d=0;d<c.length;d++)h+=c[d],h+=a,l.push(h-s);return{width:l[l.length-1]??0,totalHeight:r*e.length,rowHeight:r,columnWidths:c,columnDivisions:l,rowCount:e.length,cellPadding:s,columnGap:a}}parseToleranceFrame(t){if(!t)return[];const e=this.splitToleranceRows(t);if(e.length===0)return[];if(!t.includes("%%v"))return e.map(s=>({cells:this.parsePipeSeparatedCells(s)}));const n=e.map(s=>{const o=this.splitToleranceTokens(s,"%%v").slice(0,Ts);for(;o.length<Ts;)o.push("");return o}),r=[0,1];n.some(s=>{var a;return(a=s[2])==null?void 0:a.trim()})&&r.push(2);for(let s=3;s<Ts;s++)n.some(a=>{var o;return(o=a[s])==null?void 0:o.trim()})&&r.push(s);return n.map(s=>({cells:r.map(a=>s[a]??"")}))}splitToleranceRows(t){return t.replace(/\^J/g,`
|
|
11
|
-
`).split(/\r\n|\r|\n|\\P/i).map(n=>n.trim()).filter(n=>n.length>0)}splitToleranceTokens(t,e){if(!t)return[];const n=[];let r="",s=0;for(let a=0;a<t.length;){if(t.startsWith(e,a)&&s===0){n.push(r),r="",a+=e.length;continue}const o=t[a];o==="{"?s++:o==="}"&&(s=Math.max(0,s-1)),r+=o,a++}return n.push(r),n}parsePipeSeparatedCells(t){return t?this.splitToleranceTokens(t,"|").filter(n=>n.length>0):[]}resolveLocalBasis(){const t=this._normal.clone();t.lengthSq()===0?t.set(0,0,1):t.normalize();let e=this._direction.clone();e.lengthSq()===0?e.set(1,0,0):e.normalize();let n=new x().crossVectors(t,e);return n.lengthSq()===0&&(e=x.X_AXIS.clone(),n=new x().crossVectors(t,e)),n.normalize(),e=new x().crossVectors(n,t).normalize(),{xAxis:e,yAxis:n,zAxis:t}}resolveDimensionStyle(){const t=this._dimensionStyle.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}tryGetDatabase(){try{return this.database}catch{return}}getTextStyle(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxsty)??Ft.DEFAULT_DIM_VALUES.dimtxsty??"Standard",n=this.database.tables.textStyleTable.resolveAt(e);if(!n)throw new Error("No valid text style found in text style table.");return n.textStyle}};so.typeName="Fcf";let hr=so;const ao=class ao extends q{constructor(){super(),this._normal=new x(0,0,1),this._annotationHeight=0,this._columnType=0,this._columnCount=0,this._columnFlowReversed=!1,this._columnAutoHeight=!1,this._columnWidth=0,this._columnGutter=0,this._contents="",this._height=0,this._width=0,this._extentsWidth=0,this._lineSpacingFactor=1,this._lineSpacingStyle=0,this._backgroundFill=!1,this._backgroundFillColor=13158600,this._backgroundFillTransparency=1,this._backgroundScaleFactor=1,this._rotation=0,this._styleName="",this._location=new b,this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._direction=new x(1,0,0),this._drawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT}get dxfTypeName(){return"MTEXT"}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 extentsWidth(){return this._extentsWidth}set extentsWidth(t){this._extentsWidth=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 normal(){return this._normal}set normal(t){this._normal.copy(t)}get annotationHeight(){return this._annotationHeight}set annotationHeight(t){this._annotationHeight=t}get columnType(){return this._columnType}set columnType(t){this._columnType=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=t}get columnFlowReversed(){return this._columnFlowReversed}set columnFlowReversed(t){this._columnFlowReversed=t}get columnAutoHeight(){return this._columnAutoHeight}set columnAutoHeight(t){this._columnAutoHeight=t}get columnWidth(){return this._columnWidth}set columnWidth(t){this._columnWidth=t}get columnGutter(){return this._columnGutter}set columnGutter(t){this._columnGutter=t}get geometricExtents(){const t=new z,e=this.extentsWidth>0?this.extentsWidth:this.width>0?this.width:Ai(this.contents,this.height),n=Xh(this.contents),r=zh(n,this.height,this.lineSpacingFactor);return Vh(t,this._location,e,r,this.attachmentPoint,this.rotation,this.direction)}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return ue(t,e,this._location),this}subGetOsnapPoints(t,e,n,r){k.Insertion===t&&r.push(this._location)}transformBy(t){const e=this._location.clone(),n=this._direction.lengthSq()>0?this._direction.clone().normalize():new x(Math.cos(this._rotation),Math.sin(this._rotation),0),r=new x(-n.y,n.x,n.z);r.lengthSq()===0&&r.set(0,1,0),r.normalize();const s=e.clone().add(n),a=e.clone().add(r);e.applyMatrix4(t),s.applyMatrix4(t),a.applyMatrix4(t);const o=new x(s).sub(e),c=new x(a).sub(e),l=o.length(),h=c.length();return this._location.copy(e),l>0&&(this._direction.copy(o).normalize(),this._rotation=Math.atan2(this._direction.y,this._direction.x),this._width*=l,this._extentsWidth>0&&(this._extentsWidth*=l)),h>0&&(this._height*=h),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"attachmentPoint",type:"enum",editable:!0,options:[{label:exports.AcGiMTextAttachmentPoint[1],value:1},{label:exports.AcGiMTextAttachmentPoint[2],value:2},{label:exports.AcGiMTextAttachmentPoint[3],value:3},{label:exports.AcGiMTextAttachmentPoint[4],value:4},{label:exports.AcGiMTextAttachmentPoint[5],value:5},{label:exports.AcGiMTextAttachmentPoint[6],value:6},{label:exports.AcGiMTextAttachmentPoint[7],value:7},{label:exports.AcGiMTextAttachmentPoint[8],value:8},{label:exports.AcGiMTextAttachmentPoint[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:exports.AcGiMTextFlowDirection[1],value:1},{label:exports.AcGiMTextFlowDirection[2],value:2},{label:exports.AcGiMTextFlowDirection[3],value:3},{label:exports.AcGiMTextFlowDirection[4],value:4},{label:exports.AcGiMTextFlowDirection[5],value:5}],accessor:{get:()=>this.drawingDirection,set:t=>{this.drawingDirection=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"lineSpacingFactor",type:"float",editable:!0,accessor:{get:()=>this.lineSpacingFactor,set:t=>{this.lineSpacingFactor=t}}},{name:"definedWidth",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"directionX",type:"float",editable:!0,accessor:{get:()=>this.direction.x,set:t=>{this.direction.x=t}}},{name:"directionY",type:"float",editable:!0,accessor:{get:()=>this.direction.y,set:t=>{this.direction.y=t}}},{name:"directionZ",type:"float",editable:!0,accessor:{get:()=>this.direction.z,set:t=>{this.direction.z=t}}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}subWorldDraw(t,e){const n={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};return t.mtext(n,this.getTextStyle(),e)}encodeMTextContentsForDxf(t){return(t??"").replace(/\r\n|\r|\n/g,"\\P")}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMText"),t.writePoint3d(10,this.location),t.writeDouble(40,this.height),t.writeDouble(41,this.width),this.extentsWidth>0&&t.writeDouble(42,this.extentsWidth),t.writeMTextContents(this.encodeMTextContentsForDxf(this.contents??"")),t.writeString(7,this.styleName),t.writeAngle(50,this.rotation),t.writeVector3d(11,this.direction),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.drawingDirection),t.writeInt16(73,this.lineSpacingStyle),t.writeDouble(44,this.lineSpacingFactor),this.backgroundFill&&(t.writeInt16(90,1),t.writeInt32(63,this.backgroundFillColor),t.writeInt32(441,this.backgroundFillTransparency),t.writeDouble(45,this.backgroundScaleFactor)),this.annotationHeight!==0&&t.writeDouble(46,this.annotationHeight),this.columnType!==0&&(t.writeInt16(75,this.columnType),t.writeInt16(76,this.columnCount),t.writeInt16(78,this.columnFlowReversed?1:0),t.writeInt16(79,this.columnAutoHeight?1:0),t.writeDouble(48,this.columnWidth),t.writeDouble(49,this.columnGutter)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMText");let e=this.location.x,n=this.location.y,r=this.location.z,s=this.direction.x,a=this.direction.y,o=this.direction.z,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=!1;const d=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:s=p,u=!0;break;case 21:a=p,u=!0;break;case 31:o=p,u=!0;break;case 1:case 3:d.push(String(g.value));break;case 7:this.styleName=String(g.value);break;case 40:this.height=p;break;case 41:this.width=p;break;case 42:p>0&&(this.extentsWidth=p);break;case 43:break;case 44:this.lineSpacingFactor=p;break;case 45:this.backgroundScaleFactor=p;break;case 46:this.annotationHeight=p;break;case 48:this.columnWidth=p;break;case 49:this.columnGutter=p;break;case 50:this.rotation=T.degToRad(p);break;case 71:this.attachmentPoint=p;break;case 72:this.drawingDirection=p;break;case 73:this.lineSpacingStyle=p;break;case 75:this.columnType=p;break;case 76:this.columnCount=p;break;case 78:this.columnFlowReversed=p!==0;break;case 79:this.columnAutoHeight=p!==0;break;case 90:this.backgroundFill=p!==0;break;case 63:this.backgroundFillColor=p;break;case 441:this.backgroundFillTransparency=p;break;case 101:for(;!t.atEndOfObject&&!t.atEof&&t.readItem(););break;case 210:c=p;break;case 220:l=p;break;case 230:h=p;break;case 100:return t.pushBackItem(g),this.finishMTextDxfIn(d,e,n,r,s,a,o,u,c,l,h),this}}return this.finishMTextDxfIn(d,e,n,r,s,a,o,u,c,l,h),this}finishMTextDxfIn(t,e,n,r,s,a,o,c,l,h,u){t.length>0&&(this.contents=t.join("")),this.location={x:e,y:n,z:r},c&&(this.direction={x:s,y:a,z:o});const d=new x(l,h,u);d.lengthSq()>0&&this.normal.copy(d.normalize())}};ao.typeName="MText";let Ze=ao;var Ju=(i=>(i[i.MText=0]="MText",i[i.Fcf=1]="Fcf",i[i.BlockReference=2]="BlockReference",i[i.NoAnnotation=3]="NoAnnotation",i))(Ju||{});const oo=class oo extends At{get dxfTypeName(){return"LEADER"}constructor(){super(),this._isSplined=!1,this._updated=!1,this._hasArrowHead=!1,this._vertices=[],this._dimensionStyle="",this._hasHookLine=!1,this._isHookLineSameDirection=!1,this._annoType=3,this._textHeight=0,this._textWidth=0,this._associatedAnnotation="",this._normal=new x(0,0,1),this._horizontalDirection=new x(1,0,0)}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 isHookLineSameDirection(){return this._isHookLineSameDirection}set isHookLineSameDirection(t){this._isHookLineSameDirection=t}get numVertices(){return this._vertices.length}get vertices(){return this._vertices.map(t=>t.clone())}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get annoType(){return this._annoType}set annoType(t){this._annoType=t}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get byBlockColor(){return this._byBlockColor}set byBlockColor(t){this._byBlockColor=t}get associatedAnnotation(){return this._associatedAnnotation}set associatedAnnotation(t){this._associatedAnnotation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get horizontalDirection(){return this._horizontalDirection}set horizontalDirection(t){this._horizontalDirection.copy(t)}get offsetFromBlock(){var t;return(t=this._offsetFromBlock)==null?void 0:t.clone()}set offsetFromBlock(t){this._offsetFromBlock=t?new x(t):void 0}get offsetFromAnnotation(){var t;return(t=this._offsetFromAnnotation)==null?void 0:t.clone()}set offsetFromAnnotation(t){this._offsetFromAnnotation=t?new x(t):void 0}appendVertex(t){this._vertices.push(new b().copy(t)),this._updated=!0}setVertexAt(t,e){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].copy(e),this._updated=!0,this}vertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].clone()}subGetGripPoints(){return this._vertices.map(t=>t.clone())}subMoveGripPointsAt(t,e){return Mn(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){if(this.numVertices===0)return;if(this.isSplined&&this.splineGeo){switch(t){case k.EndPoint:r.push(this._vertices[0]),r.push(this._vertices[this.numVertices-1]);break;case k.Nearest:r.push(this.splineGeo.nearestPoint(e));break}return}const s=this._vertices;switch(t){case k.EndPoint:r.push(...s);break;case k.MidPoint:case k.Nearest:case k.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];On(s[o],s[o+1],t,e,c),a.push(...c)}if(t===k.MidPoint)r.push(...a);else{const o=$t(e,a);o&&r.push(o)}break}}}get geometricExtents(){return this._isSplined&&this.splineGeo?this.splineGeo.calculateBoundingBox():new z().setFromPoints(this.collectDrawPoints())}subGetIntersectCurves(){return this.isSplined&&this.splineGeo?[{kind:"spline",spline:this.splineGeo.clone(),extendable:!1}]:Dt(this._vertices,!1)}get closed(){return!1}set closed(t){}get area(){return 0}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this.transformVector(this._normal,t),this.transformVector(this._horizontalDirection,t),this._offsetFromBlock&&this.transformVector(this._offsetFromBlock,t),this._offsetFromAnnotation&&this.transformVector(this._offsetFromAnnotation,t),this._splineGeo?(this._splineGeo.transform(t),this._updated=!1):this._updated=!0,this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.lines(this.collectDrawPoints())}collectDrawPoints(){if(this.isSplined&&this.splineGeo)return this.splineGeo.getPoints(100);const t=this._vertices.map(e=>e.clone());if(t.length>0&&!this._isSplined){const e=t[t.length-1];if(this.shouldDrawHookLine(e)){const n=this.computeHookLineEndPoint(e);n&&t.push(n)}}return t}shouldDrawHookLine(t){if(this.resolveHookLineLength(t)<=0)return!1;if(this._hasHookLine)return!0;const e=this.resolveAssociatedMText();if(e&&this.resolveHookSpanFromMText(e,t)>0)return!0;if(this._annoType!==0)return!1;const n=this.resolveDimensionStyle();return((n==null?void 0:n.dimtad)??Ft.DEFAULT_DIM_VALUES.dimtad)!==ja.Center}computeHookLineEndPoint(t){const e=this.resolveHookLineLength(t);if(e<=0)return null;const n=this.resolveHookAxis();return t.clone().addScaledVector(n,e)}resolveHookLineLength(t){const e=this.resolveDimensionStyle(),n=((e==null?void 0:e.dimgap)??Ft.DEFAULT_DIM_VALUES.dimgap)*((e==null?void 0:e.dimscale)??Ft.DEFAULT_DIM_VALUES.dimscale);let r=this._textWidth+n;const s=this.resolveAssociatedMText();if(s){const a=this.resolveHookSpanFromMText(s,t);if(a>0)r=Math.max(r,a);else{const o=this.resolveAnnotationWidth(s);o>0&&(r=Math.max(r,o))}}return r}resolveHookAxis(){const t=this._horizontalDirection.clone();t.lengthSq()===0?t.set(1,0,0):t.normalize();const e=this._isHookLineSameDirection?1:-1;return t.multiplyScalar(e),t}resolveHookSpanFromMText(t,e){const n=this.resolveHookAxis(),r=this.resolveMTextLayoutMetrics(t);let s=0;for(const a of Y0(r)){const o=(a.x-e.x)*n.x+(a.y-e.y)*n.y+(a.z-e.z)*n.z;o>s&&(s=o)}return s}resolveAnnotationWidth(t){if(t.extentsWidth>0)return t.extentsWidth;const e=Da(t.contents).split(`
|
|
12
|
-
`);return Math.max(...e.map(n=>Ai(n.trim(),t.height)),0)}resolveMTextLayoutMetrics(t){return F0({contents:t.contents,height:t.height,width:t.width,extentsWidth:t.extentsWidth,lineSpacingFactor:t.lineSpacingFactor,attachmentPoint:t.attachmentPoint,rotation:t.rotation,direction:t.direction,location:t.location})}scoreMTextAssociation(t,e){const n=this.resolveMTextLayoutMetrics(t),r=Math.max(t.height*2,1),s=Math.max(t.height,1),a=Math.max(n.height,t.height*4,10);return X0(e,n,{padX:r,padYAbove:s,padYBelow:a})}resolveDimensionStyle(){var n;const t=(n=this._dimensionStyle)==null?void 0:n.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}resolveAssociatedMText(){const t=this.tryGetDatabase();if(!t)return;if(this._associatedAnnotation){const o=t.getObjectById(this._associatedAnnotation);if(o instanceof Ze)return o}if(this._vertices.length===0)return;const e=this.getAttrWithoutException("ownerId");if(!e)return;const n=t.getObjectById(e);if(!(n instanceof nt))return;const r=this._vertices[this._vertices.length-1];let s,a=Number.POSITIVE_INFINITY;for(const o of n.newIterator()){if(!(o instanceof Ze))continue;const c=this.scoreMTextAssociation(o,r);c==null||c>=a||(a=c,s=o)}return s}tryGetDatabase(){try{return this.database}catch{return}}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Ut(this._vertices,"Uniform"),this._updated=!1)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLeader"),t.writeString(3,this.dimensionStyle),t.writeInt16(71,this.hasArrowHead?1:0),t.writeInt16(72,this.isSplined?1:0),t.writeInt16(73,this.annoType),t.writeInt16(74,this.isHookLineSameDirection?1:0),t.writeInt16(75,this.hasHookLine?1:0),t.writeInt16(76,this.numVertices),this.textHeight!==0&&t.writeDouble(40,this.textHeight),this.textWidth!==0&&t.writeDouble(41,this.textWidth),this.byBlockColor!=null&&t.writeInt16(77,this.byBlockColor),this.associatedAnnotation&&t.writeHandle(340,this.associatedAnnotation);for(const e of this.vertices)t.writePoint3d(10,e);return t.writeVector3d(210,this.normal),t.writeVector3d(211,this.horizontalDirection),this._offsetFromBlock&&t.writeVector3d(212,this._offsetFromBlock),this._offsetFromAnnotation&&t.writeVector3d(213,this._offsetFromAnnotation),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLeader"),this._vertices.length=0;let e=null,n=this.normal.x,r=this.normal.y,s=this.normal.z,a=this.horizontalDirection.x,o=this.horizontalDirection.y,c=this.horizontalDirection.z,l=0,h=0,u=0,d=0,g=0,f=0,p=!1,m=!1;const y=()=>{e&&(this.appendVertex(e),e=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const _=t.readItem();if(!_)break;const v=Number(_.code),w=Number(_.value);switch(v){case 3:this.dimensionStyle=String(_.value);break;case 10:y(),e={x:w,y:0,z:0};break;case 20:e&&(e.y=w);break;case 30:e&&(e.z=w);break;case 40:this.textHeight=w;break;case 41:this.textWidth=w;break;case 71:this.hasArrowHead=w!==0;break;case 72:this.isSplined=w!==0;break;case 73:this.annoType=w;break;case 74:this.isHookLineSameDirection=w!==0;break;case 75:this.hasHookLine=w!==0;break;case 76:break;case 77:this.byBlockColor=w;break;case 210:n=w;break;case 220:r=w;break;case 230:s=w;break;case 211:a=w;break;case 221:o=w;break;case 231:c=w;break;case 212:l=w,p=!0;break;case 222:h=w,p=!0;break;case 232:u=w,p=!0;break;case 213:d=w,m=!0;break;case 223:g=w,m=!0;break;case 233:f=w,m=!0;break;case 340:this.associatedAnnotation=String(_.value);break}}return y(),this.normal={x:n,y:r,z:s},this.horizontalDirection={x:a,y:o,z:c},p&&(this.offsetFromBlock={x:l,y:h,z:u}),m&&(this.offsetFromAnnotation={x:d,y:g,z:f}),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Lt.from2dPoints(e,!1).getOffsetSideAtPoint(t)}createOffsetCurve(t){return as(this.collectPath2d(),!1,t)}collectPath2d(){return this.isSplined&&this.splineGeo?this.splineGeo.getPoints(64).map(t=>new L(t.x,t.y)):this._vertices.map(t=>new L(t.x,t.y))}transformVector(t,e){const n=new b,r=new b(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}};oo.typeName="Leader";let ur=oo;const Vr=class Vr extends At{constructor(t,e){super(),this._normal=new x(0,0,1),this._thickness=0,this._geo=new Ct(t,e)}get dxfTypeName(){return"LINE"}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 thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"line",line:this._geo.clone(),extent:"bounded"}]}get closed(){return!1}get area(){return 0}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subMoveGripPointsAt(t,e){return ft(t,n=>{switch(n){case 0:this.transformBy(F.makeTranslation(e));break;case 1:this.startPoint.add(e);break;case 2:this.endPoint.add(e);break}}),this}subGetOsnapPoints(t,e,n,r){const s=this.startPoint,a=this.endPoint;switch(t){case k.EndPoint:r.push(s),r.push(a);break;case k.MidPoint:r.push(this.midPoint);break;case k.Nearest:{const o=this._geo.project(e);r.push(o)}break;case k.Perpendicular:{const o=this._geo.perpPoint(e);r.push(o)}break;case k.Tangent:break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this.startPoint,n=this.endPoint,r=[new b(e.x,e.y,0),new b(n.x,n.y,0)];return t.lines(r)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),this.thickness!==0&&t.writeDouble(39,this.thickness);const e=Bt(this.startPoint,this.normal),n=Bt(this.endPoint,this.normal);return t.writePoint3d(10,e),t.writePoint3d(11,n),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLine");let e=this.startPoint.x,n=this.startPoint.y,r=this.startPoint.z,s=this.endPoint.x,a=this.endPoint.y,o=this.endPoint.z,c=this.thickness,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:s=p;break;case 21:a=p;break;case 31:o=p;break;case 39:c=p;break;case 210:l=p;break;case 220:h=p;break;case 230:u=p;break}}const d=new x(l,h,u);return d.lengthSq()>0&&this.normal.copy(d.normalize()),this.thickness=c,this.startPoint=_t({x:e,y:n,z:r},this.normal),this.endPoint=_t({x:s,y:a,z:o},this.normal),this}getOffsetCurves(t){const e=this._geo.offset(t);return[new Vr(e.startPoint,e.endPoint)]}getOffsetSideAtPoint(t){const e=this.startPoint,n=this.endPoint;return(n.x-e.x)*(t.y-e.y)-(n.y-e.y)*(t.x-e.x)>=0?1:-1}};Vr.typeName="Line";let hi=Vr;var Hn=(i=>(i[i.InvisibleLeader=0]="InvisibleLeader",i[i.StraightLeader=1]="StraightLeader",i[i.SplineLeader=2]="SplineLeader",i))(Hn||{}),cn=(i=>(i[i.NoneContent=0]="NoneContent",i[i.BlockContent=1]="BlockContent",i[i.MTextContent=2]="MTextContent",i[i.ToleranceContent=3]="ToleranceContent",i))(cn||{}),td=(i=>(i[i.Horizontal=0]="Horizontal",i[i.Vertical=1]="Vertical",i))(td||{}),ed=(i=>(i[i.Unknown=0]="Unknown",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Top=3]="Top",i[i.Bottom=4]="Bottom",i))(ed||{});const fy=1,py=2,my=4,yy=8,by=64,_y=128,xy=32768,co=class co extends q{get dxfTypeName(){return"MULTILEADER"}constructor(){super(),this._leaders=[],this._leaderLineType=1,this._contentType=0,this._doglegEnabled=!1,this._doglegLength=0,this._doglegVector=new x(1,0,0),this._normal=new x(0,0,1),this._mleaderStyleId="",this._textHeight=2.5,this._textWidth=0,this._textRotation=0,this._textDirection=new x(1,0,0),this._textStyleName="",this._textAttachmentPoint=exports.AcGiMTextAttachmentPoint.MiddleLeft,this._textDrawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT,this._textLineSpacingFactor=1,this._textAttachmentDirection=0,this._arrowheadOverrides=[],this._blockAttributes=[]}get leaders(){return this._leaders.map(t=>this.cloneLeader(t))}get numberOfLeaders(){return this._leaders.length}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get doglegEnabled(){return this._doglegEnabled}set doglegEnabled(t){this._doglegEnabled=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get doglegVector(){return this._doglegVector}set doglegVector(t){this._doglegVector.copy(t)}get landingPoint(){return this._landingPoint}set landingPoint(t){this._landingPoint=t?this.createPoint(t):void 0}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get mleaderStyleId(){return this._mleaderStyleId}set mleaderStyleId(t){this._mleaderStyleId=t}get version(){return this._version}set version(t){this._version=t}get leaderStyleId(){return this._leaderStyleId}set leaderStyleId(t){this._leaderStyleId=t}get propertyOverrideFlag(){return this._propertyOverrideFlag}set propertyOverrideFlag(t){this._propertyOverrideFlag=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor=t==null?void 0:t.clone()}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get landingEnabled(){return this._landingEnabled}set landingEnabled(t){this._landingEnabled=t}get arrowheadId(){return this._arrowheadId}set arrowheadId(t){this._arrowheadId=t}get arrowheadSize(){return this._arrowheadSize}set arrowheadSize(t){this._arrowheadSize=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor=t==null?void 0:t.clone()}get textFrameEnabled(){return this._textFrameEnabled}set textFrameEnabled(t){this._textFrameEnabled=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get textAttachment(){return this._textAttachment}set textAttachment(t){this._textAttachment=t}get textFlowDirection(){return this._textFlowDirection}set textFlowDirection(t){this._textFlowDirection=t}get blockContentId(){return this._blockContentId}set blockContentId(t){this._blockContentId=t}get blockContentColor(){return this._blockContentColor}set blockContentColor(t){this._blockContentColor=t==null?void 0:t.clone()}get blockContentScale(){return this._blockContentScale}set blockContentScale(t){this._blockContentScale=t}get blockContentRotation(){return this._blockContentRotation}set blockContentRotation(t){this._blockContentRotation=t}get blockContentConnectionType(){return this._blockContentConnectionType}set blockContentConnectionType(t){this._blockContentConnectionType=t}get annotativeScaleEnabled(){return this._annotativeScaleEnabled}set annotativeScaleEnabled(t){this._annotativeScaleEnabled=t}get arrowheadOverrides(){return this._arrowheadOverrides}set arrowheadOverrides(t){this._arrowheadOverrides=t}get blockAttributes(){return this._blockAttributes}set blockAttributes(t){this._blockAttributes=t}get textDirectionNegative(){return this._textDirectionNegative}set textDirectionNegative(t){this._textDirectionNegative=t}get textAlignInIPE(){return this._textAlignInIPE}set textAlignInIPE(t){this._textAlignInIPE=t}get bottomTextAttachmentDirection(){return this._bottomTextAttachmentDirection}set bottomTextAttachmentDirection(t){this._bottomTextAttachmentDirection=t}get topTextAttachmentDirection(){return this._topTextAttachmentDirection}set topTextAttachmentDirection(t){this._topTextAttachmentDirection=t}get contentScale(){return this._contentScale}set contentScale(t){this._contentScale=t}get contentBasePosition(){return this._contentBasePosition}set contentBasePosition(t){this._contentBasePosition=t}get textAnchor(){return this._textAnchor}set textAnchor(t){this._textAnchor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textBackgroundColor(){return this._textBackgroundColor}set textBackgroundColor(t){this._textBackgroundColor=t==null?void 0:t.clone()}get textBackgroundScaleFactor(){return this._textBackgroundScaleFactor}set textBackgroundScaleFactor(t){this._textBackgroundScaleFactor=t}get textBackgroundTransparency(){return this._textBackgroundTransparency}set textBackgroundTransparency(t){this._textBackgroundTransparency=t}get textBackgroundColorOn(){return this._textBackgroundColorOn}set textBackgroundColorOn(t){this._textBackgroundColorOn=t}get textFillOn(){return this._textFillOn}set textFillOn(t){this._textFillOn=t}get textColumnType(){return this._textColumnType}set textColumnType(t){this._textColumnType=t}get textUseAutoHeight(){return this._textUseAutoHeight}set textUseAutoHeight(t){this._textUseAutoHeight=t}get textColumnWidth(){return this._textColumnWidth}set textColumnWidth(t){this._textColumnWidth=t}get textColumnGutterWidth(){return this._textColumnGutterWidth}set textColumnGutterWidth(t){this._textColumnGutterWidth=t}get textColumnFlowReversed(){return this._textColumnFlowReversed}set textColumnFlowReversed(t){this._textColumnFlowReversed=t}get textColumnHeight(){return this._textColumnHeight}set textColumnHeight(t){this._textColumnHeight=t}get textUseWordBreak(){return this._textUseWordBreak}set textUseWordBreak(t){this._textUseWordBreak=t}get hasMText(){return this._hasMText}set hasMText(t){this._hasMText=t}get hasBlock(){return this._hasBlock}set hasBlock(t){this._hasBlock=t}get planeOrigin(){return this._planeOrigin}set planeOrigin(t){this._planeOrigin=t}get planeXAxisDirection(){return this._planeXAxisDirection}set planeXAxisDirection(t){this._planeXAxisDirection=t}get planeYAxisDirection(){return this._planeYAxisDirection}set planeYAxisDirection(t){this._planeYAxisDirection=t}get planeNormalReversed(){return this._planeNormalReversed}set planeNormalReversed(t){this._planeNormalReversed=t}get leaderSections(){return this.leaders}get blockContentData(){return this.blockContent}get mtextContent(){return this._mtextContent?{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint.clone()}:void 0}set mtextContent(t){if(!t){this._mtextContent=void 0,this._contentType===2&&(this._contentType=0);return}this._mtextContent={text:t.text,anchorPoint:this.createPoint(t.anchorPoint)},this._contentType=2}get contents(){var t;return((t=this._mtextContent)==null?void 0:t.text)??""}set contents(t){this._mtextContent?this._mtextContent.text=t:this._mtextContent={text:t,anchorPoint:new b},this._contentType=2}get textLocation(){var t;return(t=this._mtextContent)==null?void 0:t.anchorPoint}set textLocation(t){if(!t){this._mtextContent=void 0;return}this._mtextContent?this._mtextContent.anchorPoint.copy(t):this._mtextContent={text:"",anchorPoint:this.createPoint(t)},this._contentType=2}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}get textDirection(){return this._textDirection}set textDirection(t){this._textDirection.copy(t)}get textStyleName(){return this._textStyleName}set textStyleName(t){this._textStyleName=t}get textAttachmentPoint(){return this._textAttachmentPoint}set textAttachmentPoint(t){this._textAttachmentPoint=t}get textDrawingDirection(){return this._textDrawingDirection}set textDrawingDirection(t){this._textDrawingDirection=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get blockContent(){var t,e,n;return this._blockContent?{blockContentId:this._blockContent.blockContentId,blockHandle:this._blockContent.blockHandle,normal:(t=this._blockContent.normal)==null?void 0:t.clone(),position:(e=this._blockContent.position)==null?void 0:e.clone(),scale:this._blockContent.scale.clone(),rotation:this._blockContent.rotation,color:(n=this._blockContent.color)==null?void 0:n.clone(),transformationMatrix:[...this._blockContent.transformationMatrix]}:void 0}set blockContent(t){var e;if(!t){this._blockContent=void 0,this._contentType===1&&(this._contentType=0);return}this._blockContent={blockContentId:t.blockContentId??t.blockHandle,blockHandle:t.blockHandle,normal:t.normal?new x(t.normal):void 0,position:t.position?this.createPoint(t.position):void 0,scale:new x(t.scale??{x:1,y:1,z:1}),rotation:t.rotation??0,color:(e=t.color)==null?void 0:e.clone(),transformationMatrix:t.transformationMatrix?[...t.transformationMatrix]:[]},this.blockContentId=this._blockContent.blockContentId,this._contentType=1}addLeader(t={}){var n,r;const e={lastLeaderLinePoint:t.lastLeaderLinePoint?this.createPoint(t.lastLeaderLinePoint):void 0,lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:t.landingPoint?this.createPoint(t.landingPoint):void 0,doglegVector:t.doglegVector?new x(t.doglegVector):void 0,doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:((n=t.breaks)==null?void 0:n.map(s=>({index:s.index,start:this.createPoint(s.start),end:this.createPoint(s.end)})))??[],leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:[]};return(r=t.leaderLines)==null||r.forEach(s=>{e.leaderLines.push(this.createLeaderLine(s))}),this._leaders.push(e),this._leaders.length-1}removeLeader(t){return this.checkLeaderIndex(t),this._leaders.splice(t,1),this}addLeaderLine(t,e=[]){return this.checkLeaderIndex(t),this._leaders[t].leaderLines.push(this.createLeaderLine({vertices:e})),this._leaders[t].leaderLines.length-1}appendVertex(t,e,n){return this.getMutableLeaderLine(t,e).vertices.push(this.createPoint(n)),this}setLeaderLineVertices(t,e,n){return this.getMutableLeaderLine(t,e).vertices=n.map(r=>this.createPoint(r)),this}getLeaderLineVertices(t,e){return this.getMutableLeaderLine(t,e).vertices.map(n=>n.clone())}addBreak(t,e,n,r){return this.getMutableLeaderLine(t,e).breaks.push({start:this.createPoint(n),end:this.createPoint(r)}),this}setLandingPoint(t,e){return this.checkLeaderIndex(t),this._leaders[t].landingPoint=e?this.createPoint(e):void 0,this}setDoglegDirection(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegVector=new x(e),this}setDoglegLength(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegLength=e,this}get geometricExtents(){const t=this.collectGeometryPoints();return t.length>0?new z().setFromPoints(t):new z}subGetIntersectCurves(){const t=[];return this._leaders.forEach(e=>{e.leaderLines.forEach(n=>{t.push(...Dt(n.vertices,!1))})}),t}subGetGripPoints(){return this.collectGeometryPoints().map(t=>t.clone())}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGeometryGripPointAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){var s;if(t===k.Insertion){this.contentBasePosition?r.push(this.contentBasePosition):this._mtextContent?r.push(this._mtextContent.anchorPoint):(s=this._blockContent)!=null&&s.position&&r.push(this._blockContent.position);return}this._leaders.forEach(a=>{a.leaderLines.forEach(o=>{const c=this.getLeaderLineDrawPoints(a,o);if(c.length!==0)switch(t){case k.EndPoint:r.push(...c);break;case k.MidPoint:case k.Nearest:case k.Perpendicular:{const l=[];for(let h=0;h<c.length-1;h++){const u=[];On(c[h],c[h+1],t,e,u),l.push(...u)}if(t===k.MidPoint)r.push(...l);else{const h=$t(e,l);h&&r.push(h)}break}}})})}transformBy(t){var e,n,r,s,a,o,c,l;return this._leaders.forEach(h=>{var u,d;(u=h.lastLeaderLinePoint)==null||u.applyMatrix4(t),(d=h.landingPoint)==null||d.applyMatrix4(t),h.doglegVector&&this.transformVector(h.doglegVector,t),h.breaks.forEach(g=>{g.start.applyMatrix4(t),g.end.applyMatrix4(t)}),h.leaderLines.forEach(g=>{g.vertices.forEach(f=>f.applyMatrix4(t)),g.breaks.forEach(f=>{f.start.applyMatrix4(t),f.end.applyMatrix4(t)})})}),(e=this._landingPoint)==null||e.applyMatrix4(t),(n=this.contentBasePosition)==null||n.applyMatrix4(t),this.transformVector(this._doglegVector,t),this.transformVector(this._normal,t),(r=this.textAnchor)==null||r.applyMatrix4(t),(s=this._mtextContent)==null||s.anchorPoint.applyMatrix4(t),this.transformVector(this._textDirection,t),(o=(a=this._blockContent)==null?void 0:a.position)==null||o.applyMatrix4(t),(c=this._blockContent)!=null&&c.normal&&this.transformVector(this._blockContent.normal,t),this.blockContentScale&&this.transformVector(this.blockContentScale,t),(l=this.planeOrigin)==null||l.applyMatrix4(t),this.planeXAxisDirection&&this.transformVector(this.planeXAxisDirection,t),this.planeYAxisDirection&&this.transformVector(this.planeYAxisDirection,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"leader",properties:[{name:"contentType",type:"enum",editable:!0,options:[{label:cn[0],value:0},{label:cn[1],value:1},{label:cn[2],value:2},{label:cn[3],value:3}],accessor:{get:()=>this.contentType,set:t=>{this.contentType=t}}},{name:"leaderLineType",type:"enum",editable:!0,options:[{label:Hn[0],value:0},{label:Hn[1],value:1},{label:Hn[2],value:2}],accessor:{get:()=>this.leaderLineType,set:t=>{this.leaderLineType=t}}},{name:"doglegEnabled",type:"boolean",editable:!0,accessor:{get:()=>this.doglegEnabled,set:t=>{this.doglegEnabled=t}}},{name:"doglegLength",type:"float",editable:!0,accessor:{get:()=>this.doglegLength,set:t=>{this.doglegLength=t}}},{name:"leaderCount",type:"int",editable:!1,accessor:{get:()=>this.numberOfLeaders}}]},{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.textHeight,set:t=>{this.textHeight=t}}},{name:"textWidth",type:"float",editable:!0,accessor:{get:()=>this.textWidth,set:t=>{this.textWidth=t}}},{name:"textStyleName",type:"string",editable:!0,accessor:{get:()=>this.textStyleName,set:t=>{this.textStyleName=t}}}]}]}}resolveEffectiveProperties(){if(super.resolveEffectiveProperties(),this._mleaderStyleId)return;const t=this.getDefaultMLeaderStyle();t&&(this._mleaderStyleId=t.objectId)}subWorldDraw(t,e){const n=[],r=t.subEntityTraits,s=r.color,a=r.lineType,o=r.lineWeight,c=this.getResolvedLeaderLineColor(),l=this.getResolvedLeaderLineStyle(),h=this.getResolvedLeaderLineWeight(),u=this.getResolvedTextColor();this.getResolvedLeaderLineType()!==0&&(this.applyColorTraits(r,c,s),this.applyLineTraits(r,l,h),this._leaders.forEach(f=>{f.leaderLines.forEach(m=>{const y=this.getLeaderLineDrawPoints(f,m);if(y.length>0){const _=this.drawLeaderLine(t,y);_&&n.push(_)}});const p=this.getDoglegPoints(f);p&&n.push(t.lines(p))}));const d=this.getRenderableMTextContent();if(!!d&&(this.contentType===2||this.contentType===0||this.hasMText===!0)&&d){this.applyColorTraits(r,u,s);const f=this.getResolvedTextHeight(),p={text:d.text,height:f,width:this.getMTextRenderWidth(d.text,f),position:d.anchorPoint,rotation:this.textRotation,directionVector:this.textDirection,attachmentPoint:this.textAttachmentPoint,drawingDirection:this.textDrawingDirection,lineSpaceFactor:this.textLineSpacingFactor};n.push(t.mtext(p,this.getTextStyle(),e))}if(r.color=s,r.lineType=a,r.lineWeight=o,n.length!==0)return n.length===1?n[0]:t.group(n)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeader"),t.writeInt16(170,this.leaderLineType),t.writeBoolean(290,this.doglegEnabled),t.writeDouble(41,this.doglegLength),t.writeInt16(172,this.contentType),t.writeVector3d(210,this.normal),t.writeHandle(340,this.mleaderStyleId),this._landingPoint&&t.writePoint3d(10,this._landingPoint),t.writeVector3d(11,this.doglegVector),this._mtextContent&&(t.writeString(1,this._mtextContent.text),t.writePoint3d(12,this._mtextContent.anchorPoint),t.writeDouble(40,this.textHeight),t.writeDouble(42,this.textWidth),t.writeAngle(50,this.textRotation),t.writeString(7,this.textStyleName)),this._blockContent&&(t.writeHandle(341,this._blockContent.blockContentId??""),this._blockContent.position&&t.writePoint3d(15,this._blockContent.position),t.writeVector3d(16,this._blockContent.scale),t.writeAngle(52,this._blockContent.rotation)),this._leaders.forEach(e=>{e.landingPoint&&t.writePoint3d(110,e.landingPoint),e.doglegVector&&t.writeVector3d(111,e.doglegVector),t.writeDouble(140,e.doglegLength),t.writeInt16(171,e.leaderLines.length),e.leaderLines.forEach(n=>{t.writeInt16(90,n.vertices.length),n.vertices.forEach(r=>t.writePoint3d(10,r))})}),this}dxfInFields(t){var S,M,C,B,X,O,Z,K,G,J,P,H,ct,N,It;super.dxfInFields(t),t.atSubclassData("AcDbMLeader"),this._leaders.length=0;let e=(S=this._mtextContent)==null?void 0:S.text,n=(C=(M=this._mtextContent)==null?void 0:M.anchorPoint)==null?void 0:C.clone(),r=!!this._mtextContent,s=(B=this._blockContent)==null?void 0:B.blockContentId,a=(O=(X=this._blockContent)==null?void 0:X.position)==null?void 0:O.clone(),o=(K=(Z=this._blockContent)==null?void 0:Z.scale)==null?void 0:K.clone(),c=(G=this._blockContent)==null?void 0:G.rotation,l=(P=(J=this._blockContent)==null?void 0:J.normal)==null?void 0:P.clone(),h=(ct=(H=this._blockContent)==null?void 0:H.color)==null?void 0:ct.clone(),u=(N=this._blockContent)!=null&&N.transformationMatrix?[...this._blockContent.transformationMatrix]:[],d=!!this._blockContent,g=!1,f=!1,p=(It=this._landingPoint)==null?void 0:It.clone(),m=this._doglegVector.clone(),y=null,_=null,v=!1,w;const A=()=>{_&&y&&y.leaderLines.push(_),_=null},I=()=>{A(),y&&this.addLeader(y),y=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const tt=t.readItem();if(!tt)break;const Ld=Number(tt.code),$=Number(tt.value),pt=String(tt.value??"");switch(Ld){case 100:return t.pushBackItem(tt),I(),this.finishMLeaderDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,p,m,w),this;case 300:if(pt==="CONTEXT_DATA{"){f=!0;const R=this.dxfInContextData(t);R.textContent!=null&&(e=R.textContent,r=!0),R.textAnchor&&(n=R.textAnchor,r=!0),R.hasMText!=null&&(this.hasMText=R.hasMText),R.hasBlock!=null&&(this.hasBlock=R.hasBlock),R.blockContentId&&(s=R.blockContentId,d=this.isValidMLeaderHandle(R.blockContentId)),R.blockPosition&&(a=R.blockPosition,d=!0),R.blockScale&&(o=R.blockScale,d=!0),R.blockRotation!=null&&(c=R.blockRotation,d=!0),R.blockNormal&&(l=R.blockNormal,d=!0),R.blockColor&&(h=R.blockColor,d=!0),R.blockMatrix.length>0&&(u=R.blockMatrix,d=!0),r&&!g&&(this.contentType=2,g=!0)}break;case 270:f=!0,this.version=$;break;case 340:this.leaderStyleId=pt,this.mleaderStyleId=pt;break;case 90:v?(A(),_={vertices:[],breakPointIndexes:[],breaks:[]}):this.propertyOverrideFlag=$;break;case 170:this.leaderLineType=$;break;case 91:this.leaderLineColor=re($);break;case 341:f?this.leaderLineTypeId=pt:this.isValidMLeaderHandle(pt)?(s=pt,d=!0):this.leaderLineTypeId=pt;break;case 171:v||(this.leaderLineWeight=$);break;case 290:f?this.landingEnabled=this.readDxfBoolean(tt):this.doglegEnabled=this.readDxfBoolean(tt);break;case 291:this.doglegEnabled=this.readDxfBoolean(tt);break;case 40:f?this.doglegLength=$:this.textHeight=$;break;case 41:this.doglegLength=$;break;case 342:this.arrowheadId=pt;break;case 42:f?this.arrowheadSize=$:this.textWidth=$;break;case 172:this.contentType=$,g=!0;break;case 343:this.textStyleId=pt;break;case 173:this.textLeftAttachmentType=$;break;case 95:this.textRightAttachmentType=$;break;case 174:this.textAngleType=$;break;case 175:this.textAlignmentType=$;break;case 92:this.textColor=re($);break;case 292:this.textFrameEnabled=this.readDxfBoolean(tt);break;case 344:this.isValidMLeaderHandle(pt)&&(s=pt,this.blockContentId=pt,d=!0);break;case 93:this.blockContentColor=re($);break;case 10:if(v){t.pushBackItem(tt);const R=t.readPoint3d(10);R&&_&&_.vertices.push(R)}else{t.pushBackItem(tt);const R=t.readPoint3d(10);if(!R)break;f?(this.blockContentScale=new x(R),o=new x(R),d=!0):p=R}break;case 43:this.blockContentRotation=$,c=$,d=!0;break;case 176:this.blockContentConnectionType=$;break;case 293:this.annotativeScaleEnabled=this.readDxfBoolean(tt);break;case 94:{this.arrowheadOverrides.push({index:$});break}case 345:{const R=this.arrowheadOverrides[this.arrowheadOverrides.length-1];R?R.handle=pt:this.arrowheadOverrides.push({index:0,handle:pt});break}case 330:this.blockAttributes.push({id:pt});break;case 177:{const R=this.blockAttributes[this.blockAttributes.length-1];R&&(R.index=$);break}case 44:{const R=this.blockAttributes[this.blockAttributes.length-1];R&&(R.width=$);break}case 302:{const R=this.blockAttributes[this.blockAttributes.length-1];R&&(R.text=pt);break}case 294:this.textDirectionNegative=this.readDxfBoolean(tt);break;case 178:this.textAlignInIPE=$;break;case 179:$!==0&&(this.textAttachmentPoint=$);break;case 271:this.textAttachmentDirection=$;break;case 272:this.bottomTextAttachmentDirection=$;break;case 273:this.topTextAttachmentDirection=$;break;case 210:t.pushBackItem(tt);{const R=t.readVector3d(210);R&&(this.normal=R)}break;case 110:I(),v=!0,t.pushBackItem(tt),y={landingPoint:t.readPoint3d(110),doglegVector:new x(1,0,0),doglegLength:0,breaks:[],leaderLines:[]};break;case 111:if(y){t.pushBackItem(tt);const R=t.readVector3d(111);R&&(y.doglegVector=R)}break;case 140:y?y.doglegLength=$:this.arrowheadSize=$;break;case 1:e=pt,r=!0;break;case 12:t.pushBackItem(tt);{const R=t.readPoint3d(12);R&&(n=R,r=!0)}break;case 7:this.textStyleName=pt;break;case 50:w=$;break;case 15:t.pushBackItem(tt);{const R=t.readPoint3d(15);R&&(a=R,d=!0)}break;case 16:t.pushBackItem(tt);{const R=t.readVector3d(16);R&&(o=R,d=!0)}break;case 52:c=$*Math.PI/180,d=!0;break;case 11:if(!v&&!f){t.pushBackItem(tt);const R=t.readVector3d(11);R&&(m=R)}break}}return I(),this.finishMLeaderDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,p,m,w),this}finishMLeaderDxfIn(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p){if(g&&(this.landingPoint=g),this.doglegVector=f,p!=null&&(this.textRotation=p*Math.PI/180),!this.textStyleName&&this.textStyleId){const y=this.database.tables.textStyleTable.getIdAt(this.textStyleId);y!=null&&y.name&&(this.textStyleName=y.name)}const m=e??this.textAnchor??this.contentBasePosition??g;(n||this.hasMText)&&t!=null&&m?(this.mtextContent={text:t,anchorPoint:m.clone()},this.textAnchor||(this.textAnchor=m.clone()),d||(this.contentType=2)):(n||this.hasMText)&&t!=null&&!m&&(d||(this.contentType=2)),u&&this.isValidMLeaderHandle(r)&&this.contentType!==2&&!this.mtextContent&&(this.blockContent={blockContentId:r,position:s,scale:a??new x(1,1,1),rotation:o??0,normal:c,color:l,transformationMatrix:h},!d&&this.contentType===0&&(this.contentType=1))}dxfInContextData(t){const e={blockMatrix:[]};for(;!t.atEof;){const n=t.readItem();if(!n)break;const r=Number(n.code),s=Number(n.value),a=String(n.value??"");if(r===301)break;if(r===0){t.pushBackItem(n);break}switch(r){case 10:t.pushBackItem(n),this.contentBasePosition=t.readPoint3d(10);break;case 11:t.pushBackItem(n);{const o=t.readVector3d(11);o&&(this.normal=o)}break;case 12:t.pushBackItem(n);{const o=t.readPoint3d(12);o&&(e.textAnchor=o,this.textAnchor=o.clone())}break;case 13:t.pushBackItem(n);{const o=t.readVector3d(13);o&&(this.textDirection=o)}break;case 14:t.pushBackItem(n),e.blockNormal=t.readVector3d(14);break;case 15:t.pushBackItem(n),e.blockPosition=t.readPoint3d(15);break;case 16:t.pushBackItem(n),e.blockScale=t.readVector3d(16);break;case 40:this.contentScale=s;break;case 41:s>0&&(this.textHeight=s);break;case 42:this.textRotation=s;break;case 43:s>0&&(this.textWidth=s);break;case 44:s>0&&(this.textHeight=s);break;case 45:this.textLineSpacingFactor=s;break;case 46:e.blockRotation=s;break;case 47:e.blockMatrix.push(s);break;case 90:this.textColor=re(s);break;case 91:this.textBackgroundColor=re(s);break;case 92:this.textBackgroundTransparency=s;break;case 93:e.blockColor=re(s);break;case 110:t.pushBackItem(n),this.planeOrigin=t.readPoint3d(110);break;case 111:t.pushBackItem(n),this.planeXAxisDirection=t.readVector3d(111);break;case 112:t.pushBackItem(n),this.planeYAxisDirection=t.readVector3d(112);break;case 140:this.arrowheadSize=s;break;case 141:this.textBackgroundScaleFactor=s;break;case 142:this.textColumnWidth=s;break;case 143:this.textColumnGutterWidth=s;break;case 144:this.textColumnHeight=s;break;case 145:this.landingGap=s;break;case 170:this.textLineSpacingStyle=s;break;case 171:this.textAttachment=s;break;case 172:this.textFlowDirection=s;break;case 173:this.textColumnType=s;break;case 290:e.hasMText=this.readDxfBoolean(n),this.hasMText=e.hasMText;break;case 291:this.textBackgroundColorOn=this.readDxfBoolean(n);break;case 292:this.textFillOn=this.readDxfBoolean(n);break;case 293:this.textUseAutoHeight=this.readDxfBoolean(n);break;case 294:this.textColumnFlowReversed=this.readDxfBoolean(n);break;case 295:this.textUseWordBreak=this.readDxfBoolean(n);break;case 296:e.hasBlock=this.readDxfBoolean(n),this.hasBlock=e.hasBlock;break;case 297:this.planeNormalReversed=this.readDxfBoolean(n);break;case 302:if(a==="LEADER{"){const o=this.dxfInLeaderSection(t);this.addLeader(o)}break;case 304:a!=="LEADER_LINE{"&&(e.textContent=a,this.hasMText=!0);break;case 340:this.textStyleId=a;break;case 341:e.blockContentId=a,this.isValidMLeaderHandle(a)&&(this.blockContentId=a);break}}return e}dxfInLeaderSection(t){const e={breaks:[],leaderLines:[]};let n;const r=()=>{n&&(e.breaks.push(n),n=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value),c=String(s.value??"");if(a===303){r();break}if(a===0||a===301){t.pushBackItem(s),r();break}switch(a){case 290:e.lastLeaderLinePointSet=this.readDxfBoolean(s);break;case 291:e.doglegVectorSet=this.readDxfBoolean(s);break;case 10:t.pushBackItem(s),e.lastLeaderLinePoint=t.readPoint3d(10);break;case 11:t.pushBackItem(s),e.doglegVector=t.readVector3d(11);break;case 12:t.pushBackItem(s);{const l=t.readPoint3d(12);l&&(n={start:l,end:l.clone()})}break;case 13:t.pushBackItem(s);{const l=t.readPoint3d(13);n&&l&&(n.end=l,r())}break;case 90:e.leaderBranchIndex=o;break;case 40:e.doglegLength=o;break;case 304:c==="LEADER_LINE{"&&e.leaderLines.push(this.dxfInLeaderLine(t));break}}return e}dxfInLeaderLine(t){const e={vertices:[],breakPointIndexes:[],breaks:[]};let n;const r=()=>{n&&(e.breaks.push(n),n=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);if(a===305){r();break}if(a===0||a===303||a===301){t.pushBackItem(s),r();break}switch(a){case 10:t.pushBackItem(s);{const c=t.readPoint3d(10);c&&e.vertices.push(c)}break;case 11:t.pushBackItem(s);{const c=t.readPoint3d(11);c&&(n={index:n==null?void 0:n.index,start:c,end:c.clone()})}break;case 12:t.pushBackItem(s);{const c=t.readPoint3d(12);n&&c&&(n.end=c,r())}break;case 90:e.breakPointIndexes.push(o),n={index:o,start:(n==null?void 0:n.start)??new b,end:(n==null?void 0:n.end)??new b};break;case 91:e.leaderLineIndex=o;break}}return e}readDxfBoolean(t){if(typeof t.value=="boolean")return t.value;const e=Number(t.value);if(Number.isFinite(e))return e!==0;const n=String(t.value??"");return n!==""&&n!=="0"}isValidMLeaderHandle(t){return t!=null&&t!==""&&t!=="0"}createPoint(t){return new b().copy(t)}createLeaderLine(t){var e,n;return{vertices:((e=t.vertices)==null?void 0:e.map(r=>this.createPoint(r)))??[],breakPointIndexes:t.breakPointIndexes?[...t.breakPointIndexes]:[],leaderLineIndex:t.leaderLineIndex,breaks:((n=t.breaks)==null?void 0:n.map(r=>({index:r.index,start:this.createPoint(r.start),end:this.createPoint(r.end)})))??[]}}cloneLeader(t){var e,n,r;return{lastLeaderLinePoint:(e=t.lastLeaderLinePoint)==null?void 0:e.clone(),lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:(n=t.landingPoint)==null?void 0:n.clone(),doglegVector:(r=t.doglegVector)==null?void 0:r.clone(),doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:t.breaks.map(s=>({index:s.index,start:s.start.clone(),end:s.end.clone()})),leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:t.leaderLines.map(s=>({vertices:s.vertices.map(a=>a.clone()),breakPointIndexes:[...s.breakPointIndexes],leaderLineIndex:s.leaderLineIndex,breaks:s.breaks.map(a=>({index:a.index,start:a.start.clone(),end:a.end.clone()}))}))}}checkLeaderIndex(t){if(t<0||t>=this._leaders.length)throw new Error("The leader index is out of range!")}getMutableLeaderLine(t,e){this.checkLeaderIndex(t);const n=this._leaders[t].leaderLines[e];if(!n)throw new Error("The leader line index is out of range!");return n}collectGeometryPoints(){var e;const t=[];return this._leaders.forEach(n=>{n.lastLeaderLinePoint&&t.push(n.lastLeaderLinePoint),n.landingPoint&&t.push(n.landingPoint),n.breaks.forEach(s=>t.push(s.start,s.end)),n.leaderLines.forEach(s=>{t.push(...s.vertices),s.breaks.forEach(a=>t.push(a.start,a.end))});const r=this.getDoglegPoints(n);r&&t.push(...r),n.leaderLines.forEach(s=>{const a=this.getArrowheadPoints(this.getLeaderLineDrawPoints(n,s));a&&t.push(...a)})}),this._landingPoint&&t.push(this._landingPoint),this.contentBasePosition&&t.push(this.contentBasePosition),this.textAnchor&&t.push(this.textAnchor),this._mtextContent&&t.push(this._mtextContent.anchorPoint),(e=this._blockContent)!=null&&e.position&&t.push(this._blockContent.position),this.planeOrigin&&t.push(this.planeOrigin),t}moveGeometryGripPointAt(t,e){var s;let n=0;const r=(a,o)=>{if(a){n===t&&a.add(e),n++;return}o&&(n===t&&o(),n++)};this._leaders.forEach(a=>{r(a.lastLeaderLinePoint),r(a.landingPoint),a.breaks.forEach(c=>{r(c.start),r(c.end)}),a.leaderLines.forEach(c=>{c.vertices.forEach(l=>r(l)),c.breaks.forEach(l=>{r(l.start),r(l.end)})});const o=this.getDoglegPoints(a);o&&(r(o[0]),r(void 0,()=>{const c=o[0],l=o[1];if(!c||!l)return;const h=c.distanceTo({x:l.x+e.x,y:l.y+e.y,z:(l.z??0)+(e.z??0)});a.doglegLength!=null||a.doglegVectorSet?a.doglegLength=h:this._doglegLength=h})),a.leaderLines.forEach(c=>{const l=this.getLeaderLineDrawPoints(a,c),h=this.getArrowheadPoints(l);h&&h.forEach((u,d)=>{d===0||d===h.length-1?r(l[0]):r(void 0)})})}),r(this._landingPoint),r(this.contentBasePosition),r(this.textAnchor),this._mtextContent&&r(this._mtextContent.anchorPoint),(s=this._blockContent)!=null&&s.position&&r(this._blockContent.position),r(this.planeOrigin)}getLeaderLineDrawPoints(t,e){if(e.vertices.length>=2)return e.vertices;if(e.vertices.length===0)return[];const n=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint??this.contentBasePosition;return!n||e.vertices[0].equals(n)?e.vertices:[e.vertices[0],n]}getDoglegPoints(t){if(!this.getResolvedDoglegEnabled())return;const e=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint,n=t.doglegVector??this._doglegVector,r=t.doglegLength??this.getResolvedDoglegLength();if(!e||r==null||r===0||n.lengthSq()===0)return;const s=e.clone().add(n.clone().normalize().multiplyScalar(r));return[e,s]}getArrowheadPoints(t){if(!this.isArrowheadVisible()||t.length<2)return;const e=this.getArrowheadFrame(t);if(!e)return;const n=this.getResolvedArrowheadSize(),{tip:r,unit:s}=e,a=r.clone().add(s.clone().multiplyScalar(n)),o=n/6,c=new x(-s.y,s.x,0),l=a.clone().add(c.clone().multiplyScalar(o)),h=a.clone().add(c.clone().multiplyScalar(-o));return[r,l,h,r]}isArrowheadVisible(){const t=this.getResolvedArrowheadId();return(t==null?void 0:t.toUpperCase())==="_NONE"?!1:this.getResolvedArrowheadSize()>0}drawLeaderLine(t,e){const n=[],r=this.getLeaderLinePointsForDraw(e);r.length>=2&&n.push(t.lines(r));const s=this.drawArrowhead(t,e);if(s&&n.push(s),n.length!==0)return n.length===1?n[0]:t.group(n)}getLeaderLinePointsForDraw(t){const e=this.getArrowheadLeaderLineTrimDistance();return e<=0?t:this.trimPolylineStart(t,e)}getArrowheadLeaderLineTrimDistance(){if(!this.isArrowheadVisible())return 0;const t=this.getResolvedArrowheadBlockTableRecord();if(!t)return 0;const e=this.getResolvedArrowheadSize();if(e<=0)return 0;const n=t.origin??b.ORIGIN;let r=n.x;for(const s of t.newIterator()){const a=s.geometricExtents;a.isEmpty()||a.max.x>r&&(r=a.max.x)}return Math.max(0,(r-n.x)*e)}trimPolylineStart(t,e){if(t.length<2||e<=0)return t;let n=e;for(let r=0;r<t.length-1;r++){const s=t[r],a=t[r+1],o=a.distanceTo(s);if(!(o<=0)){if(n<o){const c=new x().subVectors(a,s);return[s.clone().add(c.multiplyScalar(n/o)),...t.slice(r+1)]}n-=o}}return[t[t.length-1]]}drawArrowhead(t,e){if(!this.isArrowheadVisible())return;const n=this.drawArrowheadBlock(t,e);if(n)return n;const r=this.getArrowheadPoints(e);if(!r)return;const s=new Kt;s.add(new Q(r,!0));const a=t.subEntityTraits,o=a.fillType;a.fillType={solidFill:!0,patternAngle:0,definitionLines:[]};const c=t.area(s);return a.fillType=o,c}drawArrowheadBlock(t,e){const n=this.getResolvedArrowheadBlockTableRecord();if(!n)return;const r=this.getArrowheadFrame(e);if(!r)return;const{tip:s,unit:a}=r,o=this.getResolvedArrowheadSize(),c=Math.atan2(a.y,a.x),l=n.origin??b.ORIGIN,h=new F().makeTranslation(-l.x,-l.y,-l.z),u=new F().makeScale(o,o,o),d=new F().makeRotationZ(c),g=new F().makeTranslation(s.x,s.y,s.z),f=new F().multiplyMatrices(g,d).multiply(u).multiply(h);return De.instance.draw(t,n,this.resolvedColor,[],!0,f,new x(this.normal))}getArrowheadFrame(t){if(t.length<2)return;const e=t[0],n=t.find(s=>!s.equals(e));if(!n)return;const r=new x().subVectors(n,e);if(r.lengthSq()!==0)return{tip:e,unit:r.normalize()}}getResolvedArrowheadId(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.arrowSymbolId;return this.arrowheadId??t}getResolvedArrowheadBlockTableRecord(){const t=this.getResolvedArrowheadId();if(t)return this.database.tables.blockTable.getIdAt(t)}getResolvedArrowheadSize(){const t=this.getMLeaderStyle(),e=(t==null?void 0:t.arrowSize)??(t==null?void 0:t.scale);return this.arrowheadSize??this.contentScale??e??this.getResolvedTextHeight()}getResolvedTextHeight(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.textHeight;return this.textHeight>0?this.textHeight:t!=null&&t>0?t:2.5}getRenderableMTextContent(){var n;if(this._mtextContent)return{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint};const t=(n=this.getMLeaderStyle())==null?void 0:n.defaultMTextContents,e=this.textAnchor??this.contentBasePosition??this._landingPoint;if(!(!t||!e))return{text:t,anchorPoint:e}}getMTextRenderWidth(t,e){if(this._textWidth>0)return this._textWidth;if(!t)return this._textWidth;const n=t.replace(/\\[PpNn]/g,`
|
|
13
|
-
`).replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,""),r=Math.max(...n.split(/\r\n|\r|\n/g).map(s=>s.length),1);return Math.max(e,r*e)}transformVector(t,e){const n=new b,r=new b(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}getMLeaderStyle(){var n,r;const t=this.database.objects.mleaderStyle,e=(n=this.mleaderStyleId||this.leaderStyleId)==null?void 0:n.trim();if(e){const s=t.getIdAt(e);if(s)return s;const a=e.toUpperCase();for(const[,c]of t.entries())if(((r=c.objectId)==null?void 0:r.toUpperCase())===a)return c;const o=this.database.getObjectById(e);if(o instanceof ss)return o}return this.getDefaultMLeaderStyle()}getDefaultMLeaderStyle(){const t=this.resolveMLeaderStyleByName(this.getDefaultMLeaderStyleName());return t||this.database.objects.mleaderStyle.newIterator().toArray()[0]}resolveMLeaderStyleByName(t){const e=t==null?void 0:t.trim();if(!e)return;const n=this.database.objects.mleaderStyle,r=n.getAt(e);if(r)return r;const s=n.getIdAt(e);if(s)return s;const a=e.toUpperCase();for(const[o,c]of n.entries())if(o.toUpperCase()===a)return c}getDefaultMLeaderStyleName(){try{return this.database.cmleaderstyle||we}catch{return we}}getResolvedTextStyleName(){var s,a,o;const t=this.database.tables.textStyleTable,e=(s=this.getMLeaderStyle())==null?void 0:s.textStyleId,n=e?(a=t.getIdAt(e))==null?void 0:a.name:void 0,r=this.textStyleId?(o=t.getIdAt(this.textStyleId))==null?void 0:o.name:void 0;if(this.textStyleName){const c=t.getAt(this.textStyleName);if(c!=null&&c.name)return c.name;const l=t.getIdAt(this.textStyleName);if(l!=null&&l.name)return l.name}return r||n}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.getResolvedTextStyleName());if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}getResolvedLeaderLineColor(){var t;return this.getResolvedComponentColor(this.leaderLineColor,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineColor,py)}getResolvedLeaderLineType(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.leaderLineType;return this.getResolvedStyleDrivenValue(this.leaderLineType,t,fy)}getResolvedLeaderLineTypeId(){var t;return this.getResolvedStyleDrivenValue(this.leaderLineTypeId,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineTypeId,my)}getResolvedLeaderLineStyle(){const t=this.getResolvedLeaderLineTypeId();if(!t)return;const e=this.database.tables.linetypeTable.getIdAt(t);if(e)return{type:"UserSpecified",...e.linetype}}getResolvedLeaderLineWeight(){var n;const t=(n=this.getMLeaderStyle())==null?void 0:n.leaderLineWeight,e=this.getResolvedStyleDrivenValue(this.leaderLineWeight,t,yy);if(e!=null)return e}getResolvedDoglegEnabled(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegEnabled;return this.getResolvedStyleDrivenValue(this.doglegEnabled,t,by)}getResolvedDoglegLength(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegLength;return this.getResolvedStyleDrivenValue(this.doglegLength,t,_y)}getResolvedTextColor(){var t;return this.getResolvedComponentColor(this.textColor,(t=this.getMLeaderStyle())==null?void 0:t.textColor,xy)}getResolvedComponentColor(t,e,n){if(!t)return e;if(!t.isByBlock&&!t.isByLayer)return t;const r=this.isPropertyOverrideEnabled(n);return r===!0?t:e??t}getResolvedStyleDrivenValue(t,e,n){const r=this.isPropertyOverrideEnabled(n);return r===!0?t??e:e??t}isPropertyOverrideEnabled(t){if(this.propertyOverrideFlag!=null)return(this.propertyOverrideFlag&t)!==0}applyColorTraits(t,e,n){t.color=n,e&&(t.color=e)}applyLineTraits(t,e,n){e&&(t.lineType=e),n!=null&&(t.lineWeight=n)}};co.typeName="MLeader";let dr=co;var nd=(i=>(i[i.Top=0]="Top",i[i.Zero=1]="Zero",i[i.Bottom=2]="Bottom",i))(nd||{}),id=(i=>(i[i.HasVertex=1]="HasVertex",i[i.Closed=2]="Closed",i[i.SuppressStartCaps=4]="SuppressStartCaps",i[i.SuppressEndCaps=8]="SuppressEndCaps",i))(id||{});const lo=class lo extends q{get dxfTypeName(){return"MLINE"}constructor(){super(),this._styleName="",this._styleObjectHandle="",this._scale=1,this._justification=1,this._flags=0,this._styleCount=0,this._startPosition=new b,this._normal=new x(0,0,1),this._segments=[]}get styleName(){return this._styleName||this.getDefaultStyleName()}set styleName(t){this._styleName=t}get styleObjectHandle(){return this._styleObjectHandle}set styleObjectHandle(t){this._styleObjectHandle=t}get scale(){return this._scale}set scale(t){this._scale=t}get justification(){return this._justification}set justification(t){this._justification=t}get flags(){return this._flags}set flags(t){this._flags=t}get styleCount(){return this._styleCount}set styleCount(t){this._styleCount=Math.max(0,t)}get startPosition(){return this._startPosition}set startPosition(t){this._startPosition.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get segments(){return this._segments.map(t=>this.cloneSegment(t))}set segments(t){this._segments=t.map(e=>this.createSegment(e)),this.updateHasVertexFlag()}get vertexCount(){return this._segments.length}get closed(){return(this._flags&2)!==0}set closed(t){this.setFlag(2,t)}get suppressStartCaps(){return(this._flags&4)!==0}set suppressStartCaps(t){this.setFlag(4,t)}get suppressEndCaps(){return(this._flags&8)!==0}set suppressEndCaps(t){this.setFlag(8,t)}appendSegment(t){this._segments.push(this.createSegment(t)),this.updateHasVertexFlag()}clearSegments(){this._segments=[],this.updateHasVertexFlag()}get geometricExtents(){const t=this.collectGeometryPoints();return new z().setFromPoints(t)}subGetIntersectCurves(){const t=[],e=this.getMLineStyle(),n=this.getRenderableElementCount(e);if(n<=0)return Dt(this.getReferencePath(),this.closed);for(let r=0;r<n;r++)t.push(...Dt(this.getElementPath(r,e),this.closed));return t}transformBy(t){return this._startPosition.applyMatrix4(t),this._segments.forEach(e=>{e.position.applyMatrix4(t),this.transformVector(e.direction,t),this.transformVector(e.miterDirection,t)}),this.transformVector(this._normal,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"mline",properties:[{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"scale",type:"float",editable:!0,accessor:{get:()=>this.scale,set:t=>{this.scale=t}}},{name:"justification",type:"int",editable:!0,accessor:{get:()=>this.justification,set:t=>{this.justification=t}}},{name:"closed",type:"boolean",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}},{name:"vertexCount",type:"int",editable:!1,accessor:{get:()=>this.vertexCount}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this._startPosition.clone()),this._segments.forEach(e=>t.push(e.position.clone())),t}subMoveGripPointsAt(t,e){const n=[this._startPosition,...this._segments.map(r=>r.position)];return Mn(t,e,n),ft(t,r=>{this.updateReferencePathDirectionsAfterGripMove(r)}),this}subGetOsnapPoints(t,e,n,r){const s=[this._startPosition,...this._segments.map(a=>a.position)];if(s.length!==0)switch(t){case k.EndPoint:r.push(...s);break;case k.MidPoint:case k.Nearest:case k.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];On(s[o],s[o+1],t,e,c),a.push(...c)}if(t===k.MidPoint)r.push(...a);else{const o=$t(e,a);o&&r.push(o)}break}}}subWorldDraw(t){if(this._segments.length===0)return;const e=[],n=this.getMLineStyle(),r=this.getRenderableElementCount(n),s=t.subEntityTraits,a=s.color,o=s.lineType,c=s.fillType,l=s.drawOrder,h=this.createFillArea(n,r);if(h&&(s.color=a,this.applyFillTraits(n,s),s.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},s.drawOrder=-1,e.push(t.area(h)),s.fillType=c,s.drawOrder=l),r<=0){const u=this.getReferencePath();u.length>=2&&e.push(t.lines(u))}else{for(let u=0;u<r;u++){s.color=a,s.lineType=o,this.applyStyleElementTraits(n,u,s);const d=this.getElementPath(u,n);d.length>=2&&e.push(t.lines(d))}this.appendStyleDrivenJointAndCapEntities(t,e,n,r,a,o)}if(s.color=a,s.lineType=o,s.fillType=c,s.drawOrder=l,e.length!==0)return e.length===1?e[0]:t.group(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMline"),t.writeString(2,this.styleName),t.writeHandle(340,this._styleObjectHandle),t.writeDouble(40,this._scale),t.writeInt16(70,this._justification),t.writeInt16(71,this._flags),t.writeInt16(72,this.vertexCount),t.writeInt16(73,this._styleCount),t.writePoint3d(10,this._startPosition),t.writeVector3d(210,this._normal),this._segments.forEach(e=>{t.writePoint3d(11,e.position),t.writeVector3d(12,e.direction),t.writeVector3d(13,e.miterDirection),e.elements.forEach(n=>{t.writeInt16(74,n.parameterCount),n.parameters.forEach(r=>t.writeDouble(41,r)),t.writeInt16(75,n.fillCount),n.fillParameters.forEach(r=>t.writeDouble(42,r))})}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMline");let e=this._startPosition.x,n=this._startPosition.y,r=this._startPosition.z,s=this._normal.x,a=this._normal.y,o=this._normal.z;const c=[];let l=null,h=null,u=!1,d=!1,g=0,f=0;const p=()=>{h&&l&&l.elements.push(h),h=null,u=!1,d=!1,g=0,f=0},m=()=>{p(),l&&c.push(l),l=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const _=Number(y.code),v=Number(y.value);switch(_){case 2:this.styleName=String(y.value);break;case 340:this.styleObjectHandle=String(y.value);break;case 40:this.scale=v;break;case 70:this.justification=v;break;case 71:this.flags=v;break;case 72:break;case 73:this.styleCount=v;break;case 10:e=v;break;case 20:n=v;break;case 30:r=v;break;case 210:s=v;break;case 220:a=v;break;case 230:o=v;break;case 11:m(),l={position:new b(v,0,0),direction:new x(1,0,0),miterDirection:new x(0,1,0),elements:[]};break;case 21:l&&(l.position.y=v);break;case 31:l&&(l.position.z=v);break;case 12:l&&(l.direction.x=v);break;case 22:l&&(l.direction.y=v);break;case 32:l&&(l.direction.z=v);break;case 13:l&&(l.miterDirection.x=v);break;case 23:l&&(l.miterDirection.y=v);break;case 33:l&&(l.miterDirection.z=v);break;case 74:p(),g=v,u=!0,d=!1,h={parameterCount:v,parameters:[],fillCount:0,fillParameters:[]};break;case 41:h&&u&&(h.parameters.push(v),g>0&&h.parameters.length>=g&&(u=!1));break;case 75:h&&(f=v,h.fillCount=v,d=!0,u=!1);break;case 42:h&&d&&(h.fillParameters.push(v),f>0&&h.fillParameters.length>=f&&(d=!1));break}}return m(),this.startPosition=new b(e,n,r),this.normal=new x(s,a,o),this.segments=c,this}setFlag(t,e){e?this._flags|=t:this._flags&=~t}updateHasVertexFlag(){this.setFlag(1,this._segments.length>0)}updateReferencePathDirectionsAfterGripMove(t){const e=r=>{const s=this._segments[r];if(!s)return;const a=r===0?this._startPosition:this._segments[r-1].position,o=new x().subVectors(s.position,a);o.lengthSq()>0&&s.direction.copy(o.normalize())};if(t===0){this._segments.length>0&&e(0);return}const n=t-1;n<0||n>=this._segments.length||(e(n),n+1<this._segments.length&&e(n+1))}createSegment(t){var e;return{position:new b().copy(t.position),direction:new x().copy(t.direction),miterDirection:new x().copy(t.miterDirection),elements:((e=t.elements)==null?void 0:e.map(n=>this.createElement(n)))??[]}}createElement(t){const e=t.parameters?[...t.parameters]:[],n=t.fillParameters?[...t.fillParameters]:[];return{parameterCount:t.parameterCount??e.length,parameters:e,fillCount:t.fillCount??n.length,fillParameters:n}}cloneSegment(t){return{position:t.position.clone(),direction:t.direction.clone(),miterDirection:t.miterDirection.clone(),elements:t.elements.map(e=>({parameterCount:e.parameterCount,parameters:[...e.parameters],fillCount:e.fillCount,fillParameters:[...e.fillParameters]}))}}collectGeometryPoints(){const t=[this._startPosition];if(this._segments.length===0)return t;const e=this.getMLineStyle(),n=this.getRenderableElementCount(e);if(n<=0)return this._segments.forEach(r=>t.push(r.position)),t;for(let r=0;r<n;r++)t.push(...this.getElementPath(r,e));return t}getRenderableElementCount(t){const e=(t==null?void 0:t.elementCount)??0;return Math.max(this._styleCount,e,...this._segments.map(n=>n.elements.length),0)}getReferencePath(){const t=[this._startPosition.clone(),...this._segments.map(e=>e.position.clone())];return this.closePathIfNeeded(t)}getElementPath(t,e){const n=[],r=this._segments[0];return n.push(this.getElementBoundaryPoint("start",r,t,e)),this._segments.forEach(s=>{n.push(this.offsetPoint(s.position,s.miterDirection,this.getElementMiterOffset(s,t,e)))}),n[n.length-1]=this.getElementBoundaryPoint("end",this._segments[this._segments.length-1],t,e),this.closePathIfNeeded(n)}getElementMiterOffset(t,e,n){var s;const r=t.elements[e];return(s=r==null?void 0:r.parameters)!=null&&s.length?r.parameters[0]:this.getStyleElementOffset(e,n)}getElementBoundaryPoint(t,e,n,r){const s=this.getElementMiterOffset(e,n,r),a=t==="start"?this._startPosition:e.position,o=this.offsetPoint(a,e.miterDirection,s);if(!this.shouldApplyCapCutAtSide(t,r))return o;const c=t==="start"?r==null?void 0:r.startAngle:r==null?void 0:r.endAngle,l=this.computeCapCutDistance(s,c,t);if(l===0)return o;const h=t==="start"?this.getStartSegmentDirection():this.getEndSegmentDirection();return h.lengthSq()===0?o:o.add(h.multiplyScalar(l))}shouldApplyCapCutAtSide(t,e){return!e||this.closed?!1:t==="start"?this.suppressStartCaps?!1:(e.flags&112)!==0:this.suppressEndCaps?!1:(e.flags&1792)!==0}computeCapCutDistance(t,e,n){const r=this.normalizeCapAngle(e),s=Math.tan(r);if(Math.abs(s)<1e-6)return 0;const a=t/s;return a}normalizeCapAngle(t){if(t==null||!Number.isFinite(t))return Math.PI/2;let e=t%180;return e<0&&(e+=180),(e<1||e>179)&&(e=90),e*Math.PI/180}getStartSegmentDirection(){const t=this._segments[0],e=new x;return t&&(e.subVectors(t.position,this._startPosition),e.lengthSq()===0&&e.copy(t.direction)),e.lengthSq()>0&&e.normalize(),e}getEndSegmentDirection(){const t=this._segments[this._segments.length-1];if(!t)return new x;const e=new x,n=this._segments.length>1?this._segments[this._segments.length-2].position:this._startPosition;return e.subVectors(t.position,n),e.lengthSq()===0&&e.copy(t.direction),e.lengthSq()>0&&e.normalize(),e}createFillArea(t,e){if(!t||(t.flags&1)===0||e<2)return;const n=this.getFillBoundaryElementIndices(e,t);if(!n)return;const r=this.getElementPath(n.outerIndex,t),s=this.getElementPath(n.innerIndex,t),a=this.stripClosingPoint(r),o=this.stripClosingPoint(s);if(a.length<2||o.length<2)return;const c=new Kt;if(this.closed){if(a.length<3||o.length<3)return;c.add(new Q(a.map(l=>({x:l.x,y:l.y})),!0)),c.add(new Q(o.map(l=>({x:l.x,y:l.y})),!0))}else{const l=[...a,...o.slice().reverse()].map(h=>({x:h.x,y:h.y}));if(l.length<3)return;c.add(new Q(l,!0))}return c}getFillBoundaryElementIndices(t,e){let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=-1,a=-1;for(let o=0;o<t;o++){const c=this.getElementReferenceOffset(o,e);c<n&&(n=c,s=o),c>r&&(r=c,a=o)}if(!(s<0||a<0||s===a))return{outerIndex:a,innerIndex:s}}getElementReferenceOffset(t,e){var r;const n=this._segments[0];if(n){const s=n.elements[t];if((r=s==null?void 0:s.parameters)!=null&&r.length)return s.parameters[0]}return this.getStyleElementOffset(t,e)}getStyleElementOffset(t,e){const n=e==null?void 0:e.elements[t];if(!n)return 0;const r=this.getStyleJustificationShift(e);return(n.offset+r)*this._scale}getStyleJustificationShift(t){const e=(t==null?void 0:t.elements)??[];if(e.length<=0)return 0;let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const s of e){const a=s.offset;a<n&&(n=a),a>r&&(r=a)}return this._justification===0?-r:this._justification===2?-n:0}stripClosingPoint(t){if(t.length<2)return t;const e=t[0],n=t[t.length-1],r=1e-9;return Math.abs(e.x-n.x)<=r&&Math.abs(e.y-n.y)<=r&&Math.abs(e.z-n.z)<=r?t.slice(0,-1):t}offsetPoint(t,e,n){if(n===0||e.lengthSq()===0)return t.clone();const r=e.clone().normalize().multiplyScalar(n);return t.clone().add(r)}closePathIfNeeded(t){if(!this.closed||t.length<2)return t;const e=t[0],n=t[t.length-1],r=1e-9;return Math.abs(e.x-n.x)<=r&&Math.abs(e.y-n.y)<=r&&Math.abs(e.z-n.z)<=r||t.push(e.clone()),t}appendStyleDrivenJointAndCapEntities(t,e,n,r,s,a){!n||r<2||(e.push(...this.drawMiterJointEntities(t,n,r,s,a)),e.push(...this.drawCapEntities(t,n,r,s,a)))}drawMiterJointEntities(t,e,n,r,s){if(this.closed||this._segments.length<2||(e.flags&2)===0)return[];const a=[],o=t.subEntityTraits;for(let c=0;c<this._segments.length-1;c++){const l=this._segments[c],h=Array.from({length:n},(u,d)=>{const g=this.getElementMiterOffset(l,d,e);return{elementIndex:d,offset:g,point:this.offsetPoint(l.position,l.miterDirection,g)}}).sort((u,d)=>d.offset-u.offset);for(let u=0;u<h.length-1;u++)this.applyElementDrawTraits(o,r,s,e,h[u].elementIndex),a.push(t.lines([h[u].point,h[u+1].point]))}return a}drawCapEntities(t,e,n,r,s){if(this.closed||this._segments.length<=0)return[];const a=[];return a.push(...this.drawCapEntitiesForSide(t,"start",e,n,r,s)),a.push(...this.drawCapEntitiesForSide(t,"end",e,n,r,s)),a}drawCapEntitiesForSide(t,e,n,r,s,a){if(e==="start"&&this.suppressStartCaps)return[];if(e==="end"&&this.suppressEndCaps)return[];const o=n.flags,c=e==="start",l=c?(o&16)!==0:(o&256)!==0,h=c?(o&64)!==0:(o&1024)!==0,u=c?(o&32)!==0:(o&512)!==0;if(!l&&!h&&!u)return[];const d=this.getCapElementPoints(e,r,n);if(d.length<2)return[];const g=[],f=t.subEntityTraits;if(l)for(let m=0;m<d.length-1;m++)this.applyElementDrawTraits(f,s,a,n,d[m].elementIndex),g.push(t.lines([d[m].point,d[m+1].point]));const p=c?this.getStartSegmentDirection().multiplyScalar(-1):this.getEndSegmentDirection().clone();if(h){const m=this.drawCapArcBetweenElements(t,e,d[0],d[d.length-1],p,f,s,a,n);m&&g.push(m)}if(u)for(let m=1;m<Math.floor(d.length/2);m++){const y=d[m],_=d[d.length-1-m];if(!y||!_||y===_)continue;const v=this.drawCapArcBetweenElements(t,e,y,_,p,f,s,a,n);v&&g.push(v)}return g}getCapElementPoints(t,e,n){const r=t==="start"?this._segments[0]:this._segments[this._segments.length-1];return r?Array.from({length:e},(s,a)=>({elementIndex:a,offset:this.getElementMiterOffset(r,a,n),point:this.getElementBoundaryPoint(t,r,a,n)})).sort((s,a)=>a.offset-s.offset):[]}drawCapArcBetweenElements(t,e,n,r,s,a,o,c,l){const h=e==="end"?r.point:n.point,u=e==="end"?n.point:r.point,d=h.distanceTo(u);if(d<=1e-9||s.lengthSq()===0)return;const f=h.clone().add(new x().subVectors(u,h).multiplyScalar(.5)).add(s.clone().normalize().multiplyScalar(d/2)),p=St.createByThreePoints(h,u,f);if(p)return this.applyElementDrawTraits(a,o,c,l,e==="end"?r.elementIndex:n.elementIndex),t.circularArc(p)}applyElementDrawTraits(t,e,n,r,s){t.color=e,t.lineType=n,this.applyStyleElementTraits(r,s,t)}transformVector(t,e){const n=new b,r=new b(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}getMLineStyle(){var s;const t=this.database.objects.mlineStyle,e=this.styleObjectHandle?t.getIdAt(this.styleObjectHandle):void 0;if(e)return e;const n=this.styleName?t.getAt(this.styleName):void 0;if(n)return n;const r=(s=this.styleName)==null?void 0:s.toUpperCase();if(r)for(const[a,o]of t.entries()){const c=(o.styleName||a).toUpperCase();if(a.toUpperCase()===r||c===r)return o}}applyStyleElementTraits(t,e,n){const r=t==null?void 0:t.elements[e];if(!r)return;const s=this.resolveStyleElementLineType(r.lineType);s&&(n.lineType=s),!(r.color.isByBlock||r.color.isByLayer)&&(n.color=r.color.clone())}applyFillTraits(t,e){const n=t==null?void 0:t.fillColor;!n||n.isByBlock||n.isByLayer||(e.color=n.clone())}resolveStyleElementLineType(t){var l;const e=t==null?void 0:t.trim();if(!e)return;const n=e.toUpperCase(),r=dt.toUpperCase(),s=ae.toUpperCase();let a="UserSpecified",o=e;if(n===r){a="ByLayer";const h=(l=this.database.tables.layerTable.getAt(this.layer))==null?void 0:l.linetype;o=h&&h.toUpperCase()!==r&&h.toUpperCase()!==s?h:Oe}else n===s&&(a="ByBlock",o=Oe);const c=this.database.tables.linetypeTable.getAt(o);return c?{type:a,...c.linetype}:{type:a,name:o,standardFlag:0,description:"",totalPatternLength:0}}resolveEffectiveProperties(){super.resolveEffectiveProperties(),this._styleName||(this._styleName=this.getDefaultStyleName())}getDefaultStyleName(){try{return this.database.cmlstyle||xe}catch{return xe}}};lo.typeName="MLine";let gr=lo;function rd(i,t){if(t.length<3)return;const e=i.subEntityTraits,n=e.fillType,r=e.transparency;e.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},e.transparency=new ht(0);const s=new Kt;s.add(new Q(t,!0));const a=i.area(s);e.fillType=n,e.transparency=r;const o=i.lines(t);return a?o?i.group([a,o]):a:o}const Mc=[208,207,17,224,161,177,26,225],Oc=128,aa=8,Cs=3*aa,zi=2;function wy(i){if(!i||i.length<Oc)return;for(let l=0;l<Mc.length;l++)if(i[Oc+l]!==Mc[l])return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=l=>{const h=t.getFloat64(l,!0),u=t.getFloat64(l+aa,!0),d=t.getFloat64(l+2*aa,!0);if([h,u,d].every(Number.isFinite))return{x:h,y:u,z:d}},n=e(zi),r=e(zi+Cs),s=e(zi+2*Cs),a=e(zi+3*Cs);if(!n||!r||!s||!a)return;const o=Math.abs(s.x-n.x),c=Math.abs(n.y-s.y);if(!(o<=0||c<=0))return{upperLeft:n,upperRight:r,lowerRight:s,lowerLeft:a}}const oa=[208,207,17,224,161,177,26,225],vy=2,Ay=8,Ms=128,ky=64*1024*1024;function Py(i){if(!(i!=null&&i.length))return;const t=Sy(i);return t||bn(i)}function Sy(i){const t=ui(i,oa);if(t<0)return;const e=i.subarray(t);let n;try{n=Ny(e)}catch{return}const r=["CONTENTS","Package","Ole10Native","Ole10Native"];for(const s of r){const a=n.readStream(s);if(!(a!=null&&a.length))continue;const o=bn(a);if(o)return o}for(const s of n.entries()){if(s.type!=="stream"||!/olepres/i.test(s.name)&&!s.name.includes("OlePres"))continue;const a=n.readStream(s.name);if(!(a!=null&&a.length))continue;const o=Iy(a);if(o)return o;const c=bn(a);if(c)return c}for(const s of n.entries()){if(s.type!=="stream")continue;const a=n.readStream(s.name);if(!(a!=null&&a.length))continue;const o=bn(a);if(o)return o}}function Iy(i){if(i.length<28)return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;const n=t.getUint32(e,!0);e+=4;let r=0;if(n===4294967295)r=t.getUint32(e,!0),e+=4;else{if(n===4294967294)return;if(n>0&&n<65535)e+=n;else return}if(e+4>i.length)return;const s=t.getUint32(e,!0);if(e+=4,s>4&&(e+=s-4),e+=24,e+4>i.length)return;const a=t.getUint32(e,!0);if(e+=4,a<=0||e+a>i.length)return;const o=i.subarray(e,e+a);return r===Ay?ad(o):bn(o)}function bn(i){const t=Ey(i);if(t)return t;const e=Ly(i);if(e)return e;const n=Ty(i);if(n)return n;const r=Cy(i);if(r)return r;const s=My(i);if(s)return s}function Ey(i){for(let t=0;t<i.length-14;t++){if(i[t]!==66||i[t+1]!==77)continue;const e=new DataView(i.buffer,i.byteOffset+t,i.length-t),n=e.getUint32(2,!0);if(n<14||n>i.length-t)continue;const r=e.getUint32(10,!0);if(!(r<14||r>=n))return new Blob([i.subarray(t,t+n)],{type:"image/bmp"})}}function Ly(i){const e=ui(i,[137,80,78,71,13,10,26,10]);if(!(e<0)){for(let n=e+8;n+12<=i.length;n++)if(i[n+4]===73&&i[n+5]===69&&i[n+6]===78&&i[n+7]===68){const r=n+12;return new Blob([i.subarray(e,r)],{type:"image/png"})}return new Blob([i.subarray(e)],{type:"image/png"})}}function Ty(i){const t=ui(i,[255,216,255]);if(!(t<0)){for(let e=t+3;e+1<i.length;e++)if(i[e]===255&&i[e+1]===217)return new Blob([i.subarray(t,e+2)],{type:"image/jpeg"})}}function Cy(i){const t=ui(i,[71,73,70,56,55,97]),e=ui(i,[71,73,70,56,57,97]),n=t>=0?t:e;if(!(n<0)){for(let r=n+6;r<i.length;r++)if(i[r]===59)return new Blob([i.subarray(n,r+1)],{type:"image/gif"});return new Blob([i.subarray(n)],{type:"image/gif"})}}function My(i){for(let t=0;t+40<=i.length;t++){const e=new DataView(i.buffer,i.byteOffset+t,i.length-t),n=e.getUint32(0,!0);if(n!==40)continue;const r=e.getInt32(4,!0),s=e.getInt32(8,!0),a=e.getUint16(12,!0),o=e.getUint16(14,!0),c=e.getUint32(16,!0),l=e.getUint32(20,!0),h=e.getUint32(32,!0);if(r<=0||r>65536||s===0||Math.abs(s)>65536||a!==1||![1,4,8,16,24,32].includes(o)||c!==0&&c!==3)continue;const u=sd(n,o,c,h),d=Math.abs(s),g=r*o+31>>5<<2,f=l>0?l:g*d,p=u+f;if(!(p<=40||t+p>i.length))return ad(i.subarray(t,t+p))}}function sd(i,t,e,n){let r=0;return t>8&&e===3&&(r+=12),n>0?r+=n*4:t<=8&&(r+=(1<<t)*4),i+r}function ad(i){if(i.length<40)return;const e=new DataView(i.buffer,i.byteOffset,i.byteLength).getUint32(0,!0);if(e!==40&&e!==12)return;const n=14+i.length,r=new Uint8Array(14),s=new DataView(r.buffer);r[0]=66,r[1]=77,s.setUint32(2,n,!0),s.setUint32(10,14+Oy(i),!0);const a=new Uint8Array(n);return a.set(r,0),a.set(i,14),new Blob([a],{type:"image/bmp"})}function Oy(i){const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=t.getUint32(0,!0);if(e===12){const a=t.getUint16(10,!0),o=a<=8?1<<a:0;return e+o*3}const n=t.getUint16(14,!0),r=t.getUint32(16,!0),s=t.getUint32(32,!0);return sd(e,n,r,s)}function ui(i,t){t:for(let e=0;e<=i.length-t.length;e++){for(let n=0;n<t.length;n++)if(i[e+n]!==t[n])continue t;return e}return-1}function Ny(i){if(i.length<512)throw new Error("CFB too small");for(let I=0;I<oa.length;I++)if(i[I]!==oa[I])throw new Error("Not a CFB document");const t=new DataView(i.buffer,i.byteOffset,i.byteLength),n=1<<t.getUint16(30,!0);if(n!==512&&n!==4096)throw new Error("Unsupported CFB sector size");const r=t.getUint32(44,!0),s=t.getUint32(48,!0),a=t.getUint32(56,!0),o=t.getUint32(60,!0),c=t.getUint32(64,!0),l=t.getUint32(68,!0),h=t.getUint32(72,!0),u=[];for(let I=0;I<109;I++){const S=t.getUint32(76+I*4,!0);S<=4294967290&&u.push(S)}let d=l;for(let I=0;I<h&&d<=4294967290;I++){const S=(d+1)*n;if(S+n>i.length)break;const M=n/4-1;for(let C=0;C<M;C++){const B=t.getUint32(S+C*4,!0);B<=4294967290&&u.push(B)}d=t.getUint32(S+M*4,!0)}const g=[];for(let I=0;I<Math.min(r,u.length);I++){const M=(u[I]+1)*n;if(M+n>i.length)break;const C=n/4;for(let B=0;B<C;B++)g.push(t.getUint32(M+B*4,!0))}const f=Vi(g,s,4096),p=ji(i,f,n),m=[],y=Math.floor(p.length/Ms);for(let I=0;I<y;I++){const S=I*Ms,M=new DataView(p.buffer,p.byteOffset+S,Ms),C=M.getUint16(64,!0);if(C<2||C>64)continue;const B=Math.floor((C-2)/2);let X="";for(let H=0;H<B;H++)X+=String.fromCharCode(M.getUint16(H*2,!0));const O=M.getUint8(66),Z=M.getUint32(116,!0),K=M.getUint32(120,!0),G=M.getUint32(124,!0),J=G===0?K:K+G*4294967296;let P="unknown";O===5?P="root":O===1?P="storage":O===2&&(P="stream"),m.push({name:X,type:P,size:J,startSector:Z})}const _=m.find(I=>I.type==="root"),v=[];if(c>0&&o<=4294967290){const I=Vi(g,o,c),S=ji(i,I,n),M=new DataView(S.buffer,S.byteOffset,S.byteLength);for(let C=0;C+4<=S.length;C+=4)v.push(M.getUint32(C,!0))}let w;if(_&&_.size>0){const I=Vi(g,_.startSector,65536);w=ji(i,I,n).subarray(0,_.size)}return{entries:()=>m,readStream:I=>{const S=m.find(C=>C.type==="stream"&&(C.name===I||C.name.toLowerCase()===I.toLowerCase()));if(!S||S.size<=0||S.size>ky)return;if(S.size<a&&w&&v.length>0){const B=od(v,S.startSector,65536),X=new Uint8Array(S.size);let O=0;for(const Z of B){if(O>=S.size)break;const K=Z*64,G=Math.min(K+64,w.length);if(K>=w.length)break;const J=w.subarray(K,G);X.set(J.subarray(0,Math.min(J.length,S.size-O)),O),O+=J.length}return X.subarray(0,Math.min(O,S.size))}const M=Vi(g,S.startSector,65536);return ji(i,M,n).subarray(0,S.size)}}}function Vi(i,t,e){return od(i,t,e)}function od(i,t,e){const n=[];let r=t;const s=new Set;for(;r<=4294967290&&n.length<e&&!(s.has(r)||(s.add(r),n.push(r),r>=i.length));)r=i[r];return n}function ji(i,t,e){const n=new Uint8Array(t.length*e);let r=0;for(const s of t){const a=(s+1)*e,o=Math.min(a+e,i.length);if(a>=i.length)break;n.set(i.subarray(a,o),r),r+=e}return n}const ho=class ho extends q{};ho.typeName="Frame";let fr=ho;const uo=class uo extends fr{constructor(){super(),this._oleVersion=0}get dxfTypeName(){return"OLEFRAME"}get oleVersion(){return this._oleVersion}set oleVersion(t){this._oleVersion=t}getOleObject(){return this._oleObject?new Uint8Array(this._oleObject):void 0}setOleObject(t){t==null?this._oleObject=void 0:this._oleObject=t instanceof ArrayBuffer?new Uint8Array(t.slice(0)):new Uint8Array(t),this.onOleObjectChanged()}loadOleObjectFromDxf(t,e){e!=null&&e.length?t!=null&&t>0&&t<e.length?this._oleObject=e.subarray(0,t):this._oleObject=new Uint8Array(e):this._oleObject=void 0,this.onOleObjectChanged()}get oleObjectData(){return this._oleObject}onOleObjectChanged(){}get geometricExtents(){return new z}subWorldDraw(t){}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbOleFrame"),t.writeInt16(70,this._oleVersion),(e=this._oleObject)!=null&&e.length){t.writeInt32(90,this._oleObject.length);let n=0;for(;n<this._oleObject.length;){const r=this._oleObject.subarray(n,n+127);t.writeString(310,Kr(r)),n+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbOleFrame");const e=[];let n;const r=()=>{e.length>0&&this.loadOleObjectFromDxf(n,wi(e))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 1:break;case 70:this.oleVersion=o;break;case 90:n=o;break;case 310:s.value instanceof Uint8Array?e.push(s.value):e.push(String(s.value));break}}return r(),this}};uo.typeName="OleFrame";let di=uo;var cd=(i=>(i[i.Link=1]="Link",i[i.Embedded=2]="Embedded",i[i.Static=3]="Static",i))(cd||{}),ld=(i=>(i[i.ModelSpace=0]="ModelSpace",i[i.PaperSpace=1]="PaperSpace",i))(ld||{});const go=class go extends di{constructor(){super(),this._upperLeft=new b,this._lowerRight=new b,this._rotation=0,this._scaleWidth=1,this._scaleHeight=1,this._lockAspect=!1,this._outputQuality=0,this._autoOutputQuality=0,this._oleObjectType=2,this._tileMode=0,this._userType="",this._linkName="",this._linkPath="",this._oleClientItem=null,this._imageResolved=!1}get dxfTypeName(){return"OLE2FRAME"}get upperLeftCorner(){return this._upperLeft}set upperLeftCorner(t){this._upperLeft.copy(t)}get lowerRightCorner(){return this._lowerRight}set lowerRightCorner(t){this._lowerRight.copy(t)}getLocation(t){return t?t.copy(this._upperLeft):this._upperLeft.clone()}setLocation(t){const e=t.x-this._upperLeft.x,n=t.y-this._upperLeft.y,r=(t.z??0)-this._upperLeft.z;this._upperLeft.copy(t),this._lowerRight.x+=e,this._lowerRight.y+=n,this._lowerRight.z+=r}position(){return{upperLeft:this._upperLeft.clone(),upperRight:this.cornerUpperRight(),lowerLeft:this.cornerLowerLeft(),lowerRight:this._lowerRight.clone()}}setPosition(t){this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight)}wcsWidth(){return Math.abs(this._lowerRight.x-this._upperLeft.x)}setWcsWidth(t){const e=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+e*Math.abs(t),this._lockAspect&&this.syncHeightFromAspect()}wcsHeight(){return Math.abs(this._upperLeft.y-this._lowerRight.y)}setWcsHeight(t){const e=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-e*Math.abs(t),this._lockAspect&&this.syncWidthFromAspect()}scaleWidth(){return this._scaleWidth}setScaleWidth(t){this._scaleWidth=t}scaleHeight(){return this._scaleHeight}setScaleHeight(t){this._scaleHeight=t}rotation(){return this._rotation}setRotation(t){this._rotation=t}lockAspect(){return this._lockAspect}setLockAspect(t){this._lockAspect=!!t}outputQuality(){return this._outputQuality}setOutputQuality(t){this._outputQuality=t&255}autoOutputQuality(){return this._autoOutputQuality}setAutoOutputQuality(t){this._autoOutputQuality=t&255}getType(){return this._oleObjectType}setType(t){this._oleObjectType=t}get oleObjectType(){return this._oleObjectType}set oleObjectType(t){this._oleObjectType=t}get tileMode(){return this._tileMode}set tileMode(t){this._tileMode=t}getUserType(){return this._userType}setUserType(t){this._userType=t}get userType(){return this._userType}set userType(t){this._userType=t}getLinkName(){return this._linkName}setLinkName(t){this._linkName=t}getLinkPath(){return this._linkPath}setLinkPath(t){this._linkPath=t}getOleClientItem(){return this._oleClientItem}setOleClientItem(t){this._oleClientItem=t??null}get geometricExtents(){return new z().setFromPoints(this.boundaryPath())}subGetIntersectCurves(){return Dt(this.boundaryPath().slice(0,4),!0)}subGetGripPoints(){return this.boundaryPath().slice(0,4)}subMoveGripPointsAt(t,e){const n=this.boundaryPath().slice(0,4);return Mn(t,e,n),ft(t,r=>{r===0?this._upperLeft.copy(n[0]):r===2?this._lowerRight.copy(n[2]):r===1?(this._upperLeft.y=n[1].y,this._lowerRight.x=n[1].x,this._upperLeft.z=n[1].z,this._lowerRight.z=n[1].z):r===3&&(this._upperLeft.x=n[3].x,this._lowerRight.y=n[3].y,this._upperLeft.z=n[3].z,this._lowerRight.z=n[3].z)}),this}subGetOsnapPoints(t,e,n,r){if(t===k.Insertion){r.push(this._upperLeft.clone());return}const s=this.boundaryPath().slice(0,4);if(t===k.EndPoint){r.push(...s);return}Zr(s,!0,t,e,r)}transformBy(t){const e=this._lowerRight.x-this._upperLeft.x,n=this._upperLeft.y-this._lowerRight.y,r=Math.cos(this._rotation),s=Math.sin(this._rotation),a=this._upperLeft.clone(),o=a.clone().add(new x(e*r,e*s,0)),c=a.clone().add(new x(n*s,-n*r,0));a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x().subVectors(o,a),h=new x().subVectors(c,a);return this._upperLeft.copy(a),this._rotation=Math.atan2(l.y,l.x),this._lowerRight.set(a.x+l.length(),a.y-h.length(),a.z),this}get image(){return this.resolveImage()}subWorldDraw(t){const e=this.resolveImage(),n=this.imageBoundaryPath();return e?t.image(e,{boundary:n,roation:this._rotation}):rd(t,this.boundaryPath())}onOleObjectChanged(){this._image=void 0,this._imageResolved=!1,this.applyGeometryFromOleObjectData()}applyGeometryFromOleObjectData(){const t=wy(this.oleObjectData);t&&(this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight))}resolveImage(){return this._imageResolved?this._image:(this._imageResolved=!0,this._image=Py(this.oleObjectData),this._image)}imageBoundaryPath(){const t=this.boundaryPath(),e=[t[3],t[2],t[1],t[0]];return e.push(e[0].clone()),e}dxfOutFields(t){q.prototype.dxfOutFields.call(this,t),t.writeSubclassMarker("AcDbOle2Frame"),t.writeInt16(70,this.oleVersion),this._userType&&t.writeString(3,this._userType),t.writePoint3d(10,this._upperLeft),t.writePoint3d(11,this._lowerRight),t.writeInt16(71,this._oleObjectType),t.writeInt16(72,this._tileMode),this._outputQuality&&t.writeInt16(73,this._outputQuality);const e=this.getOleObject();if(e!=null&&e.length){t.writeInt32(90,e.length);let n=0;for(;n<e.length;){const r=e.subarray(n,n+127);t.writeString(310,Kr(r)),n+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){q.prototype.dxfInFields.call(this,t),t.atSubclassData("AcDbOle2Frame");let e=this._upperLeft.x,n=this._upperLeft.y,r=this._upperLeft.z,s=this._lowerRight.x,a=this._lowerRight.y,o=this._lowerRight.z;const c=[];let l;const h=()=>{this.upperLeftCorner=new b(e,n,r),this.lowerRightCorner=new b(s,a,o),c.length>0&&this.loadOleObjectFromDxf(l,wi(c))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 1:break;case 3:this.userType=String(u.value);break;case 10:e=g;break;case 20:n=g;break;case 30:r=g;break;case 11:s=g;break;case 21:a=g;break;case 31:o=g;break;case 70:this.oleVersion=g;break;case 71:this.oleObjectType=g;break;case 72:this.tileMode=g;break;case 73:this.setOutputQuality(g);break;case 90:l=g;break;case 310:u.value instanceof Uint8Array?c.push(u.value):c.push(String(u.value));break}}return h(),this}cornerUpperRight(){return new b(this._lowerRight.x,this._upperLeft.y,this._upperLeft.z)}cornerLowerLeft(){return new b(this._upperLeft.x,this._lowerRight.y,this._lowerRight.z)}boundaryPath(){const t=[this._upperLeft.clone(),this.cornerUpperRight(),this._lowerRight.clone(),this.cornerLowerLeft()];if(this._rotation!==0){const e=this._upperLeft;for(let n=1;n<t.length;n++)t[n].sub(e).applyMatrix4(new F().makeRotationZ(this._rotation)),t[n].add(e)}return t.push(t[0].clone()),t}syncHeightFromAspect(){const t=this.wcsWidth();if(t===0||this._scaleWidth===0)return;const e=this._scaleHeight/this._scaleWidth,n=t*e,r=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-r*Math.abs(n)}syncWidthFromAspect(){const t=this.wcsHeight();if(t===0||this._scaleHeight===0)return;const e=this._scaleWidth/this._scaleHeight,n=t*e,r=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+r*Math.abs(n)}};go.typeName="Ole2Frame";let pr=go;const fo=class fo extends q{constructor(){super(),this._thickness=0,this._normal=new x(0,0,1),this._ecsRotation=0,this._geo=new b}get dxfTypeName(){return"POINT"}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get ecsRotation(){return this._ecsRotation}set ecsRotation(t){this._ecsRotation=t}get geometricExtents(){return new z().expandByPoint(this._geo)}subGetGripPoints(){return[this._geo]}subMoveGripPointsAt(t,e){return ue(t,e,this._geo),this}subGetOsnapPoints(t,e,n,r){t===k.Node&&r.push(this._geo)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}transformBy(t){return this._geo.applyMatrix4(t),this}get directBatchPrimitive(){var e;return(((e=this.database)==null?void 0:e.pdmode)??0)===0?"point":null}subWorldDraw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbPoint"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,Bt(this.position,this.normal)),this.ecsRotation!==0&&t.writeAngle(50,this.ecsRotation),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPoint");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.thickness,a=this.ecsRotation*180/Math.PI,o=this.normal.x,c=this.normal.y,l=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 10:e=g;break;case 20:n=g;break;case 30:r=g;break;case 39:s=g;break;case 50:a=g;break;case 210:o=g;break;case 220:c=g;break;case 230:l=g;break}}const h=new x(o,c,l);return h.lengthSq()>0&&this.normal.copy(h.normalize()),this.thickness=s,this.ecsRotation=a*Math.PI/180,this.position=_t({x:e,y:n,z:r},this.normal),this}};fo.typeName="Point";let mr=fo;const po=class po extends q{constructor(){super(...arguments),this._originalDxfName="",this._originalClassName="",this._applicationName="",this._proxyEntityClassId=498,this._applicationEntityClassId=0,this._objectDrawingFormat=0,this._originalDataFormat=0,this._entityOrigins=[],this._worldTransform=new F}get dxfTypeName(){return"ACAD_PROXY_ENTITY"}get originalDxfName(){return this._originalDxfName}set originalDxfName(t){this._originalDxfName=t}get originalClassName(){return this._originalClassName}set originalClassName(t){this._originalClassName=t}get applicationName(){return this._applicationName}set applicationName(t){this._applicationName=t}get proxyEntityClassId(){return this._proxyEntityClassId}set proxyEntityClassId(t){this._proxyEntityClassId=t}get applicationEntityClassId(){return this._applicationEntityClassId}set applicationEntityClassId(t){this._applicationEntityClassId=t}get objectDrawingFormat(){return this._objectDrawingFormat}set objectDrawingFormat(t){this._objectDrawingFormat=t}get graphicsMetafileType(){return this._objectDrawingFormat}set graphicsMetafileType(t){this._objectDrawingFormat=t}get originalDataFormat(){return this._originalDataFormat}set originalDataFormat(t){this._originalDataFormat=t}get proxyGraphic(){return this._proxyGraphic}setProxyGraphic(t){this._proxyGraphic=t?new Uint8Array(t):void 0}get entityOrigins(){return this._entityOrigins}setEntityOrigins(t){this._entityOrigins=t.map(e=>new b(e.x,e.y,e.z))}get geometricExtents(){const t=this._proxyGraphic;if(!(t!=null&&t.length))return new z;const n=new ta(t,{database:this.database,defaultLayer:this.layer}).scanExtents();if(n){const r=new z().setFromPoints(n);return this._worldTransform.equals(new F)||r.applyMatrix4(this._worldTransform),r}return new z}subGetGripPoints(){if(this._entityOrigins.length>0)return[...this._entityOrigins];const t=this.geometricExtents;return t.isEmpty()?[]:[new b(t.min.x,t.min.y,t.min.z),new b(t.max.x,t.max.y,t.max.z)]}subMoveGripPointsAt(t,e){return this._entityOrigins.length>0?(Mn(t,e,this._entityOrigins),this):this.geometricExtents.isEmpty()?this:(ft(t,r=>{r===0&&this.transformBy(F.makeTranslation(e))}),this)}transformBy(t){return this._entityOrigins.forEach(e=>e.applyMatrix4(t)),this._worldTransform.premultiply(t),this}subWorldDraw(t){const e=this._proxyGraphic;if(!(e!=null&&e.length))return;const r=new ta(e,{database:this.database,defaultLayer:this.layer}).worldDraw(t);return r&&!this._worldTransform.equals(new F)&&r.applyMatrix(this._worldTransform),r}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbProxyEntity"),this._originalDxfName&&t.writeString(1,this._originalDxfName),this._originalClassName&&t.writeString(3,this._originalClassName),t.writeInt32(90,this._proxyEntityClassId||498),this._applicationEntityClassId&&t.writeInt32(91,this._applicationEntityClassId),this._objectDrawingFormat&&t.writeInt32(95,this._objectDrawingFormat),t.writeInt16(70,this._originalDataFormat),(e=this._proxyGraphic)!=null&&e.length){t.writeInt32(160,this._proxyGraphic.length);let n=0;for(;n<this._proxyGraphic.length;){const r=this._proxyGraphic.subarray(n,n+127);t.writeString(310,Kr(r)),n+=127}}return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbProxyEntity");const e=[];let n;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),a=Number(r.value);switch(s){case 1:this.originalDxfName=String(r.value);break;case 3:this.originalClassName=String(r.value);break;case 70:this.originalDataFormat=a;break;case 90:this.proxyEntityClassId=a;break;case 91:this.applicationEntityClassId=a;break;case 95:this.objectDrawingFormat=a;break;case 160:n=a;break;case 310:r.value instanceof Uint8Array?e.push(r.value):e.push(String(r.value));break}}return e.length>0&&this.loadProxyGraphicFromDxf(n,e),this}loadProxyGraphicFromDxf(t,e){const n=xm(t,e);n&&this.setProxyGraphic(n)}};po.typeName="ProxyEntity";let yr=po;var hd=(i=>(i[i.Invalid=0]="Invalid",i[i.Rect=1]="Rect",i[i.Poly=2]="Poly",i))(hd||{}),ud=(i=>(i[i.Show=1]="Show",i[i.ShowUnAligned=2]="ShowUnAligned",i[i.Clip=4]="Clip",i[i.Transparent=8]="Transparent",i))(ud||{});const mo=class mo extends q{constructor(){super(),this._classVersion=0,this._clipMode=0,this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new b,this._scale=new at(1,1),this._rotation=0,this._imageSize=new L,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get dxfTypeName(){return"IMAGE"}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 imageSize(){return this._imageSize}set imageSize(t){this._imageSize.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 classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get clipMode(){return this._clipMode}set clipMode(t){this._clipMode=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.objects.imageDefinition.getIdAt(this._imageDefId);if(t)return t.sourceFileName}return""}get geometricExtents(){const t=new z;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetIntersectCurves(){return Dt(this.boundaryPath(),!0)}subGetGripPoints(){return this.boundaryPath()}subMoveGripPointsAt(t,e){return ft(t,n=>{this.isClipped&&this._clipBoundary.length>3?this.moveClippedBoundaryGripAt(n,e):this.moveUnclippedGripAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){if(t===k.Insertion){r.push(this._position);return}const s=this.boundaryPath();if(s.length===0)return;let a=s;if(s.length>1){const o=s[0],c=s[s.length-1];o.x===c.x&&o.y===c.y&&(o.z||0)===(c.z||0)&&(a=s.slice(0,-1))}if(t===k.EndPoint){r.push(...a);return}Zr(a,!0,t,e,r)}subWorldDraw(t){const e=this.boundaryPath();return this._image&&this.isImageShown?t.image(this._image,{boundary:e,roation:this._rotation}):rd(t,e)}transformBy(t){const e=this._width*this._scale.x,n=this._height*this._scale.y,r=new x(e*Math.cos(this._rotation),e*Math.sin(this._rotation),0),s=new x(-n*Math.sin(this._rotation),n*Math.cos(this._rotation),0),a=this._position.clone(),o=this._position.clone().add(r),c=this._position.clone().add(s);a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x(o).sub(a),h=new x(c).sub(a);return this._position.copy(a),this._rotation=Math.atan2(l.y,l.x),this._width=l.length(),this._height=h.length(),this._scale.set(1,1),this}moveUnclippedGripAt(t,e){const n=this._position.x,r=this._position.y,s=this._width,a=this._height;switch(t){case 0:this._position.add(e);break;case 1:{const o=n,c=r+a,l=n+s+e.x,h=r+e.y;this._position.x=o,this._position.y=h,this._width=l-o,this._height=c-h;break}case 2:{const o=n+s+e.x,c=r+a+e.y;this._width=o-n,this._height=c-r;break}case 3:{const o=n+s,c=r,l=n+e.x,h=r+a+e.y;this._position.x=l,this._position.y=c,this._width=o-l,this._height=h-c;break}}}moveClippedBoundaryGripAt(t,e){if(t<0||t>=this._clipBoundary.length)return;const n=this._width,r=this._height,s=new wt;s.setFromPoints(this._clipBoundary);const a=new L;a.setX(this._position.x-s.min.x*n),a.setY(this._position.y-s.min.y*r);const o=this._clipBoundary[t],c=o.x*n+a.x+e.x,l=o.y*r+a.y+e.y;o.x=(c-a.x)/n,o.y=(l-a.y)/r}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,n=this._height,r=new wt;r.setFromPoints(this._clipBoundary);const s=new L;s.setX(this._position.x-r.min.x*e),s.setY(this._position.y-r.min.y*n),this._clipBoundary.forEach(a=>{const o=a.x*e+s.x,c=a.y*n+s.y;t.push(new b(o,c,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){Nc.copy(t[1]);for(let e=1;e<4;e++)Gi.copy(t[e]),Gi.rotateAround(Nc,this._rotation),t[e].setX(Gi.x),t[e].setY(Gi.y)}t.push(t[0])}return t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImage"),t.writeInt32(90,this.classVersion),t.writePoint3d(10,this.position);const e=this.width*this.scale.x,n=this.height*this.scale.y,r=this._imageSize.x>0&&this._imageSize.y>0?this._imageSize:{x:e,y:n},s=r.x>0?e/r.x:e,a=r.y>0?n/r.y:n,o=Math.cos(this._rotation),c=Math.sin(this._rotation);t.writePoint3d(11,{x:s*o,y:s*c,z:0}),t.writePoint3d(12,{x:-a*c,y:a*o,z:0}),t.writePoint2d(13,r),t.writeObjectId(340,this.imageDefId);const l=(this.isImageShown?1:0)|(this.isShownClipped?4:0)|(this.isImageTransparent?8:0);if(t.writeInt16(70,l),t.writeInt16(280,this.isClipped?1:0),t.writeInt16(281,this.brightness),t.writeInt16(282,this.contrast),t.writeInt16(283,this.fade),t.writeInt16(71,this.clipBoundaryType),this.isClipped){t.writeInt16(91,this.clipBoundary.length);for(const h of this.clipBoundary)t.writePoint2d(14,h)}return t.writeInt16(290,this.clipMode),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRasterImage");let e=this.position.x,n=this.position.y,r=this.position.z,s=1,a=0,o=0,c=0,l=1,h=0,u=this.imageSize.x,d=this.imageSize.y;const g=[];let f=null;const p=()=>{f&&(g.push(new L(f.x,f.y)),f=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const m=t.readItem();if(!m)break;const y=Number(m.code),_=Number(m.value);switch(y){case 10:e=_;break;case 20:n=_;break;case 30:r=_;break;case 11:s=_;break;case 21:a=_;break;case 31:o=_;break;case 12:c=_;break;case 22:l=_;break;case 32:h=_;break;case 13:u=_;break;case 23:d=_;break;case 14:p(),f={x:_,y:0};break;case 24:f&&(f.y=_);break;case 70:{this.isImageShown=(_&3)!==0,this.isShownClipped=(_&4)!==0,this.isImageTransparent=(_&8)!==0;break}case 71:this.clipBoundaryType=_;break;case 90:this.classVersion=_;break;case 91:break;case 280:this.isClipped=_!==0;break;case 281:this.brightness=_;break;case 282:this.contrast=_;break;case 283:this.fade=_;break;case 290:this.clipMode=_;break;case 340:this.imageDefId=String(m.value);break}}return p(),this.applyRasterImageDxfIn(e,n,r,s,a,o,c,l,h,u,d,g),this}applyRasterImageDxfIn(t,e,n,r,s,a,o,c,l,h,u,d){this.position.copy({x:t,y:e,z:n}),this.imageSize.copy({x:h,y:u});const g=Math.hypot(r,s,a),f=Math.hypot(o,c,l);this.width=g*(h||1),this.height=f*(u||1),this.rotation=Math.atan2(s,r),d.length>0&&(this.clipBoundary=d)}};mo.typeName="RasterImage";let gi=mo;const Nc=new L,Gi=new L,jr=class jr extends At{get dxfTypeName(){return"RAY"}constructor(){super(),this._basePoint=new b,this._unitDir=new x}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 area(){return 0}get geometricExtents(){const t=new z;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Ct(this._basePoint,t),extent:"ray"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return ue(t,e,this.basePoint),this}subGetOsnapPoints(t,e,n,r){const s=this.basePoint;if(t===k.EndPoint){r.push(s);return}const a=this.unitDir.clone();if(a.lengthSq()===0)return;a.normalize();const o=new Ct(s,s.clone().add(a));switch(t){case k.Nearest:{const c=o.project(e),h=new x(c).sub(s).dot(a);r.push(h<0?s:c);break}case k.Perpendicular:r.push(o.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRay"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRay");let e=this.basePoint.x,n=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,a=this.unitDir.y,o=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 11:s=h;break;case 21:a=h;break;case 31:o=h;break}}return this.basePoint=new b(e,n,r),this.unitDir=new x(s,a,o),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,n=this.unitDir,r=Math.hypot(n.x,n.y);return r<=1e-9||(n.x*(t.y-e.y)-n.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=Nl(this.basePoint,this.unitDir,t);if(!e)return null;const n=new jr;return n.basePoint=e,n.unitDir=this.unitDir.clone(),n}};jr.typeName="Ray";let br=jr;const yo=class yo extends q{get dxfTypeName(){return"SHAPE"}constructor(){super(),this._position=new b,this._size=1,this._name="",this._rotation=0,this._widthFactor=1,this._oblique=0,this._thickness=0,this._normal=new x(0,0,1),this._shapeNumber=0,this._styleName=""}get position(){return this._position}set position(t){this._position.copy(t)}get size(){return this._size}set size(t){this._size=t}get name(){return this._name}set name(t){this._name=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get shapeNumber(){return this._shapeNumber}set shapeNumber(t){this._shapeNumber=t}get styleId(){var e,n,r;const t=(r=(n=(e=this.database)==null?void 0:e.tables)==null?void 0:n.textStyleTable)==null?void 0:r.resolveAt(this._styleName);return(t==null?void 0:t.objectId)??""}set styleId(t){var n,r,s;const e=(s=(r=(n=this.database)==null?void 0:n.tables)==null?void 0:r.textStyleTable)==null?void 0:s.getIdAt(t);e&&(this._styleName=e.name)}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get isPlanar(){return!0}get geometricExtents(){const t=Math.abs(this._size)/2,e=new z;return e.expandByPoint(this._position),t>0&&(e.expandByPoint(new b(this._position.x-t,this._position.y-t,this._position.z)),e.expandByPoint(new b(this._position.x+t,this._position.y+t,this._position.z))),e}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return ue(t,e,this._position),this}subGetOsnapPoints(t,e,n,r){t===k.Insertion&&r.push(this._position)}transformBy(t){const e=new F().setFromExtrusionDirection(this._normal),n=new F().makeRotationZ(this._rotation),r=new F().multiplyMatrices(e,n),s=this._position.clone(),a=new b(this._widthFactor,0,0).applyMatrix4(r).add(s),o=new b(0,1,0).applyMatrix4(r).add(s),c=new b(0,0,1).applyMatrix4(r).add(s);s.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x(a).sub(s),h=new x(o).sub(s),u=new x(c).sub(s);let d=new x().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new F().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f),m=h.length(),y=l.length();this._position.copy(s),this._normal.copy(d),y>0&&(this._rotation=Math.atan2(p.y,p.x)),m>0&&(this._size*=m,y>0&&(this._widthFactor*=y/m));const _=u.length();return _>0&&(this._thickness*=_),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"shape",properties:[{name:"name",type:"string",editable:!0,accessor:{get:()=>this.name,set:t=>{this.name=t}}},{name:"size",type:"float",editable:!0,accessor:{get:()=>this.size,set:t=>{this.size=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}},{name:"shapeNumber",type:"int",editable:!0,accessor:{get:()=>this.shapeNumber,set:t=>{this.shapeNumber=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t,e){const n=this.getTextStyle(),r=n?{...n,widthFactor:this.widthFactor,obliqueAngle:this.oblique*180/Math.PI}:void 0,s={...this.renderGlyphIdentity(),size:this.size,position:this._position,rotation:this._rotation,directionVector:this._normal,widthFactor:this.widthFactor};return t.shape(s,r,e)}renderGlyphIdentity(){const t=this._name.trim(),e=Number(t);return t!==""&&Number.isInteger(e)&&e!==0&&String(e)===t?{shapeNumber:e}:{name:t||void 0,shapeNumber:this._shapeNumber!==0?this._shapeNumber:void 0}}getTextStyle(){const t=this.styleName.trim();if(!t)return;const e=this.database.tables.textStyleTable.resolveAt(t);return e==null?void 0:e.textStyle}get dxfShapeIdentity(){const t=this._name.trim();return t||(this._shapeNumber!==0?String(this._shapeNumber):"")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbShape"),t.writePoint3d(10,this.position),t.writeDouble(40,this.size);const e=this.dxfShapeIdentity;return e&&t.writeString(2,e),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeDouble(39,this.thickness),this._styleName&&t.writeString(3,this._styleName),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbShape");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.normal.x,a=this.normal.y,o=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 2:{const u=String(c.value).trim(),d=Number(u);u!==""&&Number.isInteger(d)&&d!==0&&String(d)===u?(this.shapeNumber=d,this.name=""):this.name=u;break}case 3:this.styleName=String(c.value);break;case 39:this.thickness=h;break;case 40:this.size=h;break;case 41:this.widthFactor=h;break;case 50:this.rotation=T.degToRad(h);break;case 51:this.oblique=T.degToRad(h);break;case 210:s=h;break;case 220:a=h;break;case 230:o=h;break}}return this.position={x:e,y:n,z:r},this.normal={x:s,y:a,z:o},this}};yo.typeName="Shape";let _r=yo;const dn=class dn extends At{constructor(){super(),this._normal=new x(0,0,1),this._elevation=0,this._thickness=0,this._vertices=[new b,new b,new b,new b]}get dxfTypeName(){return"TRACE"}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get area(){return new Q(dn.boundaryPointsFromVertices(this._vertices),!0).area}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(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 z().setFromPoints(this._vertices)}subGetIntersectCurves(){const t=this._vertices[0],e=this._vertices[1],n=this._vertices[2],r=this._vertices[3];return Dt([t,e,r,n],!0)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return Mn(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){const s=[this._vertices[0],this._vertices[1],this._vertices[3],this._vertices[2]];Zr(s,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._elevation=this._vertices[0].z,this}get directBatchPrimitive(){return"area"}subWorldDraw(t){const e=new Q(dn.boundaryPointsFromVertices(this._vertices),!0),n=new Kt;n.add(e);const r=t.subEntityTraits;return r.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(n)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTrace"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,Bt(this.getPointAt(0),this.normal)),t.writePoint3d(11,Bt(this.getPointAt(1),this.normal)),t.writePoint3d(12,Bt(this.getPointAt(2),this.normal)),t.writePoint3d(13,Bt(this.getPointAt(3),this.normal)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbTrace");const e=[{x:this.getPointAt(0).x,y:this.getPointAt(0).y,z:this.getPointAt(0).z},{x:this.getPointAt(1).x,y:this.getPointAt(1).y,z:this.getPointAt(1).z},{x:this.getPointAt(2).x,y:this.getPointAt(2).y,z:this.getPointAt(2).z},{x:this.getPointAt(3).x,y:this.getPointAt(3).y,z:this.getPointAt(3).z}];let n=this.normal.x,r=this.normal.y,s=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const o=t.readItem();if(!o)break;const c=Number(o.code),l=Number(o.value);switch(c){case 10:case 11:case 12:case 13:e[c-10].x=l;break;case 20:case 21:case 22:case 23:e[c-20].y=l;break;case 30:case 31:case 32:case 33:e[c-30].z=l;break;case 39:this.thickness=l;break;case 210:n=l;break;case 220:r=l;break;case 230:s=l;break}}const a=new x(n,r,s);return a.lengthSq()>0&&this.normal.copy(a.normalize()),e.forEach((o,c)=>this.setPointAt(c,_t(o,this.normal))),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectBoundary2d();return e.length<2?1:Lt.from2dPoints(e,!0).getOffsetSideAtPoint(t)}createOffsetCurve(t){return as(this.collectBoundary2d(),!0,t)}collectBoundary2d(){return dn.boundaryPointsFromVertices(this._vertices)}static boundaryPointsFromVertices(t){const e=t[0],n=t[1],r=t[2],s=t[3];return[new L(e.x,e.y),new L(n.x,n.y),new L(s.x,s.y),new L(r.x,r.y)]}};dn.typeName="Trace";let fi=dn;const bo=class bo extends fi{get dxfTypeName(){return"SOLID"}};bo.typeName="Solid";let xr=bo;function By(i){return i&2048?"SqrtChord":i&1024?"Chord":"Uniform"}function Bc(i,t){try{return new pi(i.controlPoints,i.knots,Ry(i.weights,i.controlPoints.length),i.degree,t)}catch{return null}}function Ry(i,t){if(!(!i||i.length!==t))return i}const gn=class gn extends At{constructor(t,e,n,r,s){super(),this._knotTolerance=1e-6,this._controlTolerance=1e-6,this._fitTolerance=1e-9,this._normal=new x(0,0,1),this.rebuild(t,e,n,r,s)}get dxfTypeName(){return"SPLINE"}static fromControlPoints(t,e,n,r,s){const a=Ut.fromControlPoints(t,e,n,r,s);return a?Bc(a,s):null}static fromFitPoints(t,e,n,r,s,a){const o=Ut.fromFitPoints(t,e,n,r,s,a);return o?Bc(o,r):null}static fromDwgSpline(t){const e=!!(t.flag&1),n=By(t.flag);if(t.numberOfControlPoints>0&&t.numberOfKnots>0){const r=gn.fromControlPoints(t.controlPoints,t.knots,t.weights,t.degree,e);if(r)return r}return t.numberOfFitPoints>0?gn.fromFitPoints(t.fitPoints,n,t.degree,e,t.startTangent,t.endTangent):null}rebuild(t,e,n,r,s){const a=+(t!==void 0)+ +(e!==void 0)+ +(n!==void 0)+ +(r!==void 0)+ +(s!==void 0);if(a<2||a>5)throw Et.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Ut(t,e,n,r):this._geo=new Ut(t,e,n,r,s)}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"spline",spline:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}get knotTolerance(){return this._knotTolerance}set knotTolerance(t){this._knotTolerance=t}get controlTolerance(){return this._controlTolerance}set controlTolerance(t){this._controlTolerance=t}get fitTolerance(){return this._fitTolerance}set fitTolerance(t){this._fitTolerance=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}subGetGripPoints(){return this._geo.getGripPoints()}subMoveGripPointsAt(t,e){return this._geo.moveGripPointsAt(t,e),this}subGetOsnapPoints(t,e,n,r){switch(t){case k.EndPoint:r.push(this._geo.startPoint),r.push(this._geo.endPoint);break;case k.Node:{const s=new Set;for(const a of this._geo.knots)s.has(a)||(s.add(a),r.push(this._geo.evaluateAt(a)));break}case k.Nearest:r.push(this._geo.nearestPoint(e));break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this._geo.getPoints(100);return t.lines(e)}dxfOutFields(t){var n;const e=this._geo;super.dxfOutFields(t),t.writeSubclassMarker("AcDbSpline"),t.writeInt16(70,this.closed?1:0),t.writeInt16(71,e.degree),t.writeInt16(72,e.knots.length),t.writeInt16(73,e.controlPoints.length),t.writeInt16(74,((n=e.fitPoints)==null?void 0:n.length)??0),t.writeDouble(42,this.knotTolerance),t.writeDouble(43,this.controlTolerance),t.writeDouble(44,this.fitTolerance);for(const r of e.knots)t.writeDouble(40,r);for(const r of e.weights)t.writeDouble(41,r);for(const r of e.controlPoints)t.writePoint3d(10,r);for(const r of e.fitPoints??[])t.writePoint3d(11,r);return t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSpline");let e=this.closed?1:0,n=3,r=0,s=0,a=0;const o=[],c=[],l=[],h=[];let u=null,d=null,g=this.knotTolerance,f=this.controlTolerance,p=this.fitTolerance,m=this.normal.x,y=this.normal.y,_=this.normal.z,v=null,w=null,A=null,I=null;const S=()=>{v&&(l.push(v),v=null)},M=()=>{w&&(h.push(w),w=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const B=t.readItem();if(!B)break;const X=Number(B.code),O=Number(B.value);switch(X){case 70:e=O;break;case 71:n=O;break;case 72:r=O;break;case 73:s=O;break;case 74:a=O;break;case 42:g=O;break;case 43:f=O;break;case 44:p=O;break;case 40:o.push(O);break;case 41:c.push(O);break;case 10:S(),v={x:O,y:0,z:0};break;case 20:v&&(v.y=O);break;case 30:v&&(v.z=O);break;case 11:M(),w={x:O,y:0,z:0};break;case 21:w&&(w.y=O);break;case 31:w&&(w.z=O);break;case 12:A={x:O,y:0,z:0};break;case 22:A&&(A.y=O);break;case 32:A&&(A.z=O,u=A,A=null);break;case 13:I={x:O,y:0,z:0};break;case 23:I&&(I.y=O);break;case 33:I&&(I.z=O,d=I,I=null);break;case 210:m=O;break;case 220:y=O;break;case 230:_=O;break}}S(),M(),this.knotTolerance=g,this.controlTolerance=f,this.fitTolerance=p;const C=new x(m,y,_);return C.lengthSq()>0&&this.normal.copy(C.normalize()),this.applyDxfInSpline({flag:e,degree:n,numberOfControlPoints:s||l.length,numberOfKnots:r||o.length,numberOfFitPoints:a||h.length,controlPoints:l,knots:o,weights:c.length>0?c:void 0,fitPoints:h,startTangent:u,endTangent:d}),this}applyDxfInSpline(t){const e=gn.fromDwgSpline(t);e&&(this._geo=e._geo,this.closed=e.closed)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d(1);return e.length<2?1:Lt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const{points:e,tangents:n}=this._geo.getOffsetSamplePath2d(t),r=ff(e,this.closed,t,n);return r?Lt.fromGePolyline(r):null}collectPath2d(t){return this._geo.getOffsetSamplePath2d(t).points}};gn.typeName="Spline";let pi=gn;function Fy(i){return i==null?xt.latest.capabilities:typeof i=="object"&&"supportsHandles"in i?i:i instanceof xt?i.capabilities:new xt(i).capabilities}const Dy=new x,_o=class _o extends ce{get dxfTypeName(){return"ACAD_TABLE"}constructor(t,e,n){super(t??""),this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._numColumns=n,this._numRows=e,this._columnWidth=new Array(n),this._rowHeight=new Array(e),this._cells=new Array(e*n)}get blockTableRecord(){const t=this.blockName;if(t){const n=this.database.tables.blockTable.getAt(t);if(n)return n}const e=this.owningBlockRecordId;if(e)return this.database.tables.blockTable.getIdAt(e)}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}resizeGrid(t,e){const n=Math.max(0,t),r=Math.max(0,e);this._numRows=n,this._numColumns=r,this._rowHeight=new Array(n).fill(0),this._columnWidth=new Array(r).fill(0),this._cells=new Array(n*r)}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,n){var s;const r=t*this._numColumns+e;return(s=this._cells[r])==null?void 0:s.text}setTextString(t,e,n){const r=t*this._numColumns+e;if(!this._cells[r]){this._cells[r]={text:n,attachmentPoint:this._attachmentPoint,cellType:1,textHeight:0};return}this._cells[r].text=n}isEmpty(t,e){var r;const n=t*this._numColumns+e;return!((r=this._cells[n])!=null&&r.text)}get geometricExtents(){let t;try{t=this.blockTableRecord}catch{t=void 0}if(t&&t.newIterator().count>0){const o=new z;for(const c of t.newIterator())o.union(c.geometricExtents);return o.applyMatrix4(this.blockTransform),o}const e=this._columnWidth.reduce((o,c)=>o+c,0),n=this._rowHeight.reduce((o,c)=>o+c,0),r=new z;if(e===0&&n===0)return r.expandByPoint(this.position),r;const s=new _n;s.setFromAxisAngle(x.Z_AXIS,this.rotation),tn.compose(this.position,s,this.scaleFactors);const a=[new b(0,0,0),new b(e,0,0),new b(e,-n,0),new b(0,-n,0)];for(const o of a)r.expandByPoint(o.applyMatrix4(tn));return r}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"table",properties:[{name:"numRows",type:"string",editable:!0,accessor:{get:()=>this.numRows,set:t=>{this.numRows=t}}},{name:"numColumns",type:"float",editable:!0,accessor:{get:()=>this.numColumns,set:t=>{this.numColumns=t}}},{name:"tableWidth",type:"float",editable:!1,accessor:{get:()=>this._columnWidth.reduce((t,e)=>t+e,0)}},{name:"tableHeight",type:"float",editable:!1,accessor:{get:()=>this._rowHeight.reduce((t,e)=>t+e,0)}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t){const e=this.blockTableRecord;if(e&&e.newIterator().count>0){const g=this.drawAnonymousTableBlock(t,e);if(g)return g}let n=0,r=0;const s=new Uint16Array(this.numColumns*this.numRows*8),a=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let o=0;for(let g=0;g<=this.numRows;g++){n-=g>0?this.rowHeight(g-1):0,r=0;for(let f=0;f<=this.numColumns;f++)r+=f>0?this.columnWidth(f-1):0,a[o++]=r,a[o++]=n,a[o++]=0}const c=[],l=new Array(this.numRows*this.numColumns).fill(!1);r=0,o=0;let h=0;for(let g=0;g<this.numColumns;g++){r+=g>0?this.columnWidth(g-1):0,n=0;for(let f=0;f<this.numRows;f++){n+=f>0?this.rowHeight(f-1):0;const p=this.cell(f*this.numColumns+g);if(h=f*this.numColumns+g,p&&!l[h]){const m=p.borderWidth??1,y=p.borderHeight??1;this.fillVisited(l,h,this.numColumns,m,y),s[o++]=g+f*(this.numColumns+1),s[o++]=g+f*(this.numColumns+1)+m;const _=a[s[o-1]*3]-r,v=g+(f+y)*(this.numColumns+1)+m;g+m==this.numColumns&&(s[o++]=g+f*(this.numColumns+1)+m,s[o++]=v);const w=-a[v*3+1]-n;if(f+y==this.numRows&&(s[o++]=g+(f+y)*(this.numColumns+1)+y,s[o++]=g+(f+y)*(this.numColumns+1)),s[o++]=g+(f+y)*(this.numColumns+1),s[o++]=g+f*(this.numColumns+1),p.text){const A=p.attachmentPoint||this.attachmentPoint||exports.AcGiMTextAttachmentPoint.MiddleCenter,I=this.getTableTextOffset(A,_,w),S={text:p.text,height:this.getCellTextHeight(p,w),width:_,position:Dy.set(r,-n,0).clone().add(I),rotation:this.rotation,attachmentPoint:A},M=this.getTextStyle(p);c.push(t.mtext(S,M))}}}}c.push(t.lineSegments(a,3,s));const u=t.group(c),d=new _n;return d.setFromAxisAngle(x.Z_AXIS,this.rotation),tn.compose(this.position,d,this.scaleFactors),u.applyMatrix(tn),u}drawAnonymousTableBlock(t,e){const n=[],r=e.newIterator();for(const o of r){let c;if(o.color.isByBlock){Rc.copy(o.color);const l=this.resolvedColor;l.isForeground?o.color.setForeground():l.RGB!=null&&o.color.setRGBValue(l.RGB),c=o.worldDraw(t),o.color.copy(Rc)}else c=o.worldDraw(t);c&&(c.objectId=this.objectId,c.ownerId=this.ownerId,c.layerName=this.layer,c.visible=this.visibility&&o.visibility,n.push(c))}const s=t.group(n);s.applyMatrix(this.blockTransform);const a=this.normal;return a&&(a.x!==0||a.y!==0||a.z!==1)&&(tn.setFromExtrusionDirection(a),s.applyMatrix(tn)),s}fillVisited(t,e,n,r,s){if(s==1&&r==1)t[e]=!0;else for(let a=0;a<r;++a)for(let o=0;o<s;++o)t[e+a+o*n]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable.resolveAt(t.textStyle);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}getTableTextOffset(t,e,n){const r=new x;switch(t){case 1:break;case 2:r.setX(e/2);break;case 3:r.setX(e);break;case 4:r.setY(-n/2);break;case 5:r.set(e/2,-n/2,0);break;case 6:r.set(e,-n/2,0);break;case 7:r.setY(-n);break;case 8:r.set(e/2,-n,0);break;case 9:r.set(e,-n,0);break}return r}getCellTextHeight(t,e){return t.textHeight&&t.textHeight>0?t.textHeight:Math.max(e/2,1)}dxfOutFields(t){var s,a,o,c,l,h,u;super.dxfOutFields(t),t.writeSubclassMarker("AcDbTable");const e=t.version??((s=t.database)==null?void 0:s.version)??((a=this.database)==null?void 0:a.version),n=Fy(e).supportsUtf8CodePage;t.writeInt16(280,this.tableDataVersion),t.writeObjectId(342,this.tableStyleId),t.writeObjectId(343,this.owningBlockRecordId),t.writeVector3d(11,this.horizontalDirection),t.writeUInt32(90,this.tableValueFlag),t.writeUInt32(93,this.tableOverrideFlag),t.writeUInt32(94,this.borderColorOverrideFlag),t.writeUInt32(95,this.borderLineweightOverrideFlag),t.writeUInt32(96,this.borderVisibilityOverrideFlag),t.writeInt16(71,this.attachmentPoint),t.writeInt32(91,this.numRows),t.writeInt32(92,this.numColumns);for(let d=0;d<this.numRows;++d)t.writeDouble(141,this.rowHeight(d));for(let d=0;d<this.numColumns;++d)t.writeDouble(142,this.columnWidth(d));const r=this._cells.length>0?this._cells.length:this.numRows*this.numColumns;for(let d=0;d<r;d++){const g=this._cells[d],f=(g==null?void 0:g.cellType)??(g!=null&&g.blockTableRecordId?2:1);if(t.writeInt16(171,f),t.writeInt16(172,(g==null?void 0:g.flagValue)??0),t.writeInt16(173,(g==null?void 0:g.mergedValue)??0),t.writeBoolean(174,g==null?void 0:g.autoFit),t.writeInt16(175,g==null?void 0:g.borderWidth),t.writeInt16(176,g==null?void 0:g.borderHeight),(g==null?void 0:g.overrideFlag)!=null&&(n?t.writeInt32(91,g.overrideFlag):t.writeInt16(177,g.overrideFlag)),t.writeInt16(178,g==null?void 0:g.virtualEdgeFlag),t.writeAngle(145,g==null?void 0:g.rotation),n&&t.writeInt16(92,g==null?void 0:g.extendedCellFlags),f===1)g!=null&&g.fieldObjetId?t.writeObjectId(344,g.fieldObjetId):this.writeCellText(t,(g==null?void 0:g.text)??"",n,g==null?void 0:g.cellValueBlockBegin);else if(f===2){if(t.writeObjectId(340,g==null?void 0:g.blockTableRecordId),t.writeDouble(144,g==null?void 0:g.blockScale),t.writeInt16(179,g==null?void 0:g.blockAttrNum),(o=g==null?void 0:g.attrDefineId)!=null&&o.length)for(const p of g.attrDefineId)t.writeObjectId(331,p);if((g==null?void 0:g.attrText)!=null)if(Array.isArray(g.attrText))for(const p of g.attrText)t.writeString(300,p);else t.writeString(300,g.attrText)}g!=null&&g.textStyle&&t.writeString(7,g.textStyle),(g==null?void 0:g.textHeight)!=null&&t.writeDouble(140,g.textHeight),(g==null?void 0:g.attachmentPoint)!=null&&t.writeInt16(170,g.attachmentPoint),(g==null?void 0:g.topBorderVisibility)!=null&&t.writeInt16(289,g.topBorderVisibility?1:0),(g==null?void 0:g.rightBorderVisibility)!=null&&t.writeInt16(285,g.rightBorderVisibility?1:0),(g==null?void 0:g.bottomBorderVisibility)!=null&&t.writeInt16(286,g.bottomBorderVisibility?1:0),(g==null?void 0:g.leftBorderVisibility)!=null&&t.writeInt16(288,g.leftBorderVisibility?1:0)}if(t.writeInt16(70,this.flowDirection),t.writeDouble(40,this.horizontalCellMargin),t.writeDouble(41,this.verticalCellMargin),this.suppressTitle!=null&&t.writeInt16(280,this.suppressTitle?1:0),this.suppressHeader!=null&&t.writeInt16(281,this.suppressHeader?1:0),(c=this.cellTypeOverrides)!=null&&c.length)for(const d of this.cellTypeOverrides){t.writeString(7,d.textStyle),t.writeDouble(140,d.textHeight),t.writeInt16(170,d.alignment),t.writeInt16(63,d.backgroundColor),t.writeInt16(64,d.contentColor),d.backgroundColorEnabled!=null&&t.writeInt16(283,d.backgroundColorEnabled?1:0);const g=d.borderLineweights;g&&(t.writeInt16(274,g.top),t.writeInt16(275,g.right),t.writeInt16(276,g.bottom),t.writeInt16(277,g.left),t.writeInt16(278,g.insideHorizontal),t.writeInt16(279,g.insideVertical));const f=d.borderVisibility;f&&(t.writeInt16(284,f.top?1:0),t.writeInt16(285,f.right?1:0),t.writeInt16(286,f.bottom?1:0),t.writeInt16(287,f.left?1:0),t.writeInt16(288,f.insideHorizontal?1:0),t.writeInt16(289,f.insideVertical?1:0))}if(this.tableBorderColors&&(t.writeInt16(63,this.tableBorderColors.left),t.writeInt16(64,this.tableBorderColors.top),t.writeInt16(65,this.tableBorderColors.insideHorizontal),t.writeInt16(66,this.tableBorderColors.bottom),t.writeInt16(68,this.tableBorderColors.insideVertical),t.writeInt16(69,this.tableBorderColors.right)),(l=this.rowDataTypes)!=null&&l.length)for(const d of this.rowDataTypes)t.writeInt16(97,d);if((h=this.rowUnitTypes)!=null&&h.length)for(const d of this.rowUnitTypes)t.writeInt16(98,d);if((u=this.rowFormats)!=null&&u.length)for(const d of this.rowFormats)t.writeString(4,d);return this}dxfInFields(t){var p,m,y;super.dxfInFields(t),t.atSubclassData("AcDbTable");let e=this._numRows,n=this._numColumns,r=!1;const s=[],a=[];let o=0,c=null,l=[],h=((p=this.horizontalDirection)==null?void 0:p.x)??1,u=((m=this.horizontalDirection)==null?void 0:m.y)??0,d=((y=this.horizontalDirection)==null?void 0:y.z)??0;const g=()=>{e>0&&n>0&&(!r||this._numRows!==e||this._numColumns!==n)&&(this.resizeGrid(e,n),r=!0)},f=()=>{c&&(l.length>0&&(c.text=l.join(""),l=[]),g(),o<this._cells.length&&this.setCell(o,c),o+=1,c=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const _=t.readItem();if(!_)break;const v=Number(_.code),w=Number(_.value);switch(v){case 280:c||(this.tableDataVersion=w);break;case 342:this.tableStyleId=String(_.value);break;case 343:this.owningBlockRecordId=String(_.value);break;case 11:h=w;break;case 21:u=w;break;case 31:d=w;break;case 90:c||(this.tableValueFlag=w);break;case 93:c||(this.tableOverrideFlag=w);break;case 94:c||(this.borderColorOverrideFlag=w);break;case 95:c||(this.borderLineweightOverrideFlag=w);break;case 96:c||(this.borderVisibilityOverrideFlag=w);break;case 71:this.attachmentPoint=w;break;case 170:c?c.attachmentPoint=w:this.attachmentPoint=w;break;case 91:c?c&&(c.overrideFlag=w):(e=w,g());break;case 92:c?c&&(c.extendedCellFlags=w):(n=w,g());break;case 141:s.push(w);break;case 142:a.push(w);break;case 171:f(),c={text:"",attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,cellType:w,textHeight:0};break;case 172:c&&(c.flagValue=w);break;case 173:c&&(c.mergedValue=w);break;case 174:c&&(c.autoFit=!!_.value||w!==0);break;case 175:c&&(c.borderWidth=w);break;case 176:c&&(c.borderHeight=w);break;case 177:c&&(c.overrideFlag=w);break;case 178:c&&(c.virtualEdgeFlag=w);break;case 145:c&&(c.rotation=w*Math.PI/180);break;case 1:case 2:case 302:case 303:l.push(String(_.value));break;case 300:if(c){const A=c.attrText;Array.isArray(A)?A.push(String(_.value)):A!=null&&A!==""?c.attrText=[String(A),String(_.value)]:c.attrText=String(_.value)}break;case 301:c&&(c.cellValueBlockBegin=String(_.value));break;case 304:break;case 7:c&&(c.textStyle=String(_.value));break;case 140:c&&(c.textHeight=w);break;case 340:c&&(c.blockTableRecordId=String(_.value));break;case 344:case 345:c&&(c.fieldObjetId=String(_.value));break;case 144:case 146:c&&(c.blockScale=w);break;case 179:c&&(c.blockAttrNum=w);break;case 70:this.flowDirection=w;break;case 40:this.horizontalCellMargin=w;break;case 41:this.verticalCellMargin=w;break;case 281:this.suppressHeader=w!==0;break}}return f(),this.horizontalDirection=new x(h,u,d),s.forEach((_,v)=>this.setRowHeight(v,_)),a.forEach((_,v)=>this.setColumnWidth(v,_)),this}writeCellText(t,e,n,r){if(!n){if(e.length<=250){t.writeString(1,e);return}const o=Math.ceil(e.length/250);for(let c=0;c<o;c++){const l=c*250,h=l+250,u=e.slice(l,h);c===o-1?t.writeString(1,u):t.writeString(2,u)}return}if(t.writeString(301,r??"CELL_VALUE"),e.length<=250){t.writeString(302,e),t.writeString(304,"ACVALUE_END");return}const a=Math.ceil(e.length/250);for(let o=0;o<a;o++){const c=o*250,l=c+250,h=e.slice(c,l);o===a-1?t.writeString(302,h):t.writeString(303,h)}t.writeString(304,"ACVALUE_END")}};_o.typeName="Table";let wr=_o;const tn=new F,Rc=new j,xo=class xo extends q{constructor(){super(),this._snapBase=new b,this._snapSpacing=new b(1,1,0),this._gridSpacing=new b(1,1,0),this._perspectiveLensLength=50,this._frontClipZ=0,this._backClipZ=0,this._snapAngle=0,this._status=0,this._ucsPerViewport=0,this._circleZoomPercent=1e3,this._statusBitFlags=0,this._ucsOrigin=new b,this._ucsXAxis=new x(1,0,0),this._ucsYAxis=new x(0,1,0),this._elevation=0,this._frozenLayerIds=[],this._sheetName="",this._iconFlag=0,this._orthographicType=0,this._majorGridFrequency=0,this._ambientLightColorIndex=0,this._brightness=0,this._contrast=0,this._shadePlotMode=0,this._renderMode=0,this._defaultLightingType=0,this._isDefaultLighting=!1,this._clippingBoundaryId="",this._backgroundId="",this._shadePlotId="",this._ucsId="",this._ucsBaseId="",this._visualStyleId="",this._sunId="",this._ambientLightColorInstance=0,this._ambientLightColorName="",this._softPointers=[],this._centerPoint=new b,this._height=0,this._width=0,this._viewCenter=new b,this._viewTarget=new b,this._viewDirection=new x(0,0,1),this._viewTwistAngle=0,this._viewHeight=0,this._number=-1}get dxfTypeName(){return"VIEWPORT"}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 viewTarget(){return this._viewTarget}set viewTarget(t){this._viewTarget=t}get viewDirection(){return this._viewDirection}set viewDirection(t){this._viewDirection.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapSpacing(){return this._snapSpacing}set snapSpacing(t){this._snapSpacing.copy(t)}get gridSpacing(){return this._gridSpacing}set gridSpacing(t){this._gridSpacing.copy(t)}get perspectiveLensLength(){return this._perspectiveLensLength}set perspectiveLensLength(t){this._perspectiveLensLength=t}get frontClipZ(){return this._frontClipZ}set frontClipZ(t){this._frontClipZ=t}get backClipZ(){return this._backClipZ}set backClipZ(t){this._backClipZ=t}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get status(){return this._status}set status(t){this._status=t}get ucsPerViewport(){return this._ucsPerViewport}set ucsPerViewport(t){this._ucsPerViewport=t}get circleZoomPercent(){return this._circleZoomPercent}set circleZoomPercent(t){this._circleZoomPercent=t}get statusBitFlags(){return this._statusBitFlags}set statusBitFlags(t){this._statusBitFlags=t}get ucsOrigin(){return this._ucsOrigin}set ucsOrigin(t){this._ucsOrigin.copy(t)}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get frozenLayerIds(){return this._frozenLayerIds}set frozenLayerIds(t){this._frozenLayerIds=[...t]}get ucsXAxis(){return this._ucsXAxis}set ucsXAxis(t){this._ucsXAxis.copy(t)}get ucsYAxis(){return this._ucsYAxis}set ucsYAxis(t){this._ucsYAxis.copy(t)}get sheetName(){return this._sheetName}set sheetName(t){this._sheetName=t}get iconFlag(){return this._iconFlag}set iconFlag(t){this._iconFlag=t}get orthographicType(){return this._orthographicType}set orthographicType(t){this._orthographicType=t}get majorGridFrequency(){return this._majorGridFrequency}set majorGridFrequency(t){this._majorGridFrequency=t}get ambientLightColorIndex(){return this._ambientLightColorIndex}set ambientLightColorIndex(t){this._ambientLightColorIndex=t}get viewportBrightness(){return this._brightness}set viewportBrightness(t){this._brightness=t}get viewportContrast(){return this._contrast}set viewportContrast(t){this._contrast=t}get shadePlotMode(){return this._shadePlotMode}set shadePlotMode(t){this._shadePlotMode=t}get renderMode(){return this._renderMode}set renderMode(t){this._renderMode=t}get defaultLightingType(){return this._defaultLightingType}set defaultLightingType(t){this._defaultLightingType=t}get isDefaultLighting(){return this._isDefaultLighting}set isDefaultLighting(t){this._isDefaultLighting=t}get clippingBoundaryId(){return this._clippingBoundaryId}set clippingBoundaryId(t){this._clippingBoundaryId=t}get backgroundId(){return this._backgroundId}set backgroundId(t){this._backgroundId=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get ucsId(){return this._ucsId}set ucsId(t){this._ucsId=t}get ucsBaseId(){return this._ucsBaseId}set ucsBaseId(t){this._ucsBaseId=t}get visualStyleId(){return this._visualStyleId}set visualStyleId(t){this._visualStyleId=t}get sunId(){return this._sunId}set sunId(t){this._sunId=t}get ambientLightColorInstance(){return this._ambientLightColorInstance}set ambientLightColorInstance(t){this._ambientLightColorInstance=t}get ambientLightColorName(){return this._ambientLightColorName}set ambientLightColorName(t){this._ambientLightColorName=t}get softPointers(){return this._softPointers}set softPointers(t){this._softPointers=[...t]}get viewTwistAngle(){return this._viewTwistAngle}set viewTwistAngle(t){this._viewTwistAngle=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){const t=this._width/2,e=this._height/2,n=new z;return n.expandByPoint(new b(this._centerPoint.x-t,this._centerPoint.y-e,this._centerPoint.z)),n.expandByPoint(new b(this._centerPoint.x+t,this._centerPoint.y+e,this._centerPoint.z)),n}subGetIntersectCurves(){const t=this._width/2,e=this._height/2,n=this._centerPoint.z,r=[new b(this._centerPoint.x-t,this._centerPoint.y-e,n),new b(this._centerPoint.x+t,this._centerPoint.y-e,n),new b(this._centerPoint.x+t,this._centerPoint.y+e,n),new b(this._centerPoint.x-t,this._centerPoint.y+e,n)];return Dt(r,!0)}subGetGripPoints(){const t=new Array,e=this._width/2,n=this._height/2,r=this._centerPoint.z;return t.push(this._centerPoint),(e>0||n>0)&&t.push(new b(this._centerPoint.x-e,this._centerPoint.y-n,r),new b(this._centerPoint.x+e,this._centerPoint.y-n,r),new b(this._centerPoint.x+e,this._centerPoint.y+n,r),new b(this._centerPoint.x-e,this._centerPoint.y+n,r)),t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGripAt(n,e)}),this}transformBy(t){const e=this._centerPoint.clone(),n=this._centerPoint.clone().add(new x(this._width,0,0)),r=this._centerPoint.clone().add(new x(0,this._height,0));e.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t);const s=new x(n).sub(e),a=new x(r).sub(e),o=this._height!==0?a.length()/this._height:1;return this._centerPoint.copy(e),this._width=s.length(),this._height=a.length(),this._viewHeight*=o,this}subWorldDraw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport();return t.group(this.createViewportRect(e,t))}}toGiViewport(){const t=new dh;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.viewTarget=this.viewTarget,t.viewTwistAngle=this.viewTwistAngle,t}createViewportRect(t,e){const n=[];return n.push(e.lines([new b(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new b(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),n.push(e.lines([new b(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new b(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),n.push(e.lines([new b(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new b(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),n.push(e.lines([new b(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new b(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),n}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewport"),t.writePoint3d(10,this.centerPoint),t.writeDouble(40,this.height),t.writeDouble(41,this.width),t.writePoint3d(12,this.viewCenter),t.writePoint3d(13,this.snapBase),t.writePoint3d(14,this.snapSpacing),t.writePoint3d(15,this.gridSpacing),t.writeVector3d(16,this.viewDirection),t.writePoint3d(17,this.viewTarget),t.writeDouble(42,this.perspectiveLensLength),t.writeDouble(43,this.frontClipZ),t.writeDouble(44,this.backClipZ),t.writeDouble(45,this.viewHeight),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.viewTwistAngle),t.writeInt16(68,this.status),t.writeInt32(69,this.number),t.writeInt16(71,this.ucsPerViewport),t.writeInt16(72,this.circleZoomPercent),t.writeInt32(90,this.statusBitFlags);for(const e of this.frozenLayerIds)t.writeObjectId(331,e);t.writePoint3d(110,this.ucsOrigin),t.writeVector3d(111,this.ucsXAxis),t.writeVector3d(112,this.ucsYAxis),t.writeDouble(146,this.elevation),this.sheetName&&t.writeString(1,this.sheetName),t.writeInt16(61,this.majorGridFrequency),t.writeInt16(63,this.ambientLightColorIndex),t.writeInt16(74,this.iconFlag),t.writeInt16(79,this.orthographicType);for(const e of this.softPointers)t.writeObjectId(91,e);return t.writeDouble(141,this.viewportBrightness),t.writeDouble(142,this.viewportContrast),t.writeInt16(170,this.shadePlotMode),t.writeInt16(281,this.renderMode),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLighting?1:0),this.clippingBoundaryId&&t.writeObjectId(340,this.clippingBoundaryId),this.backgroundId&&t.writeObjectId(332,this.backgroundId),this.shadePlotId&&t.writeObjectId(333,this.shadePlotId),this.ucsId&&t.writeObjectId(345,this.ucsId),this.ucsBaseId&&t.writeObjectId(346,this.ucsBaseId),this.visualStyleId&&t.writeObjectId(348,this.visualStyleId),this.sunId&&t.writeObjectId(361,this.sunId),this.ambientLightColorInstance&&t.writeInt32(421,this.ambientLightColorInstance),this.ambientLightColorName&&t.writeString(431,this.ambientLightColorName),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbViewport");let e=this.centerPoint.x,n=this.centerPoint.y,r=this.centerPoint.z,s=this.viewCenter.x,a=this.viewCenter.y,o=this.viewCenter.z,c=this.viewTarget.x,l=this.viewTarget.y,h=this.viewTarget.z,u=this.viewDirection.x,d=this.viewDirection.y,g=this.viewDirection.z,f=this.snapBase.x,p=this.snapBase.y,m=this.snapBase.z,y=this.snapSpacing.x,_=this.snapSpacing.y,v=this.snapSpacing.z,w=this.gridSpacing.x,A=this.gridSpacing.y,I=this.gridSpacing.z,S=this.ucsOrigin.x,M=this.ucsOrigin.y,C=this.ucsOrigin.z,B=this.ucsXAxis.x,X=this.ucsXAxis.y,O=this.ucsXAxis.z,Z=this.ucsYAxis.x,K=this.ucsYAxis.y,G=this.ucsYAxis.z;const J=[],P=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const H=t.readItem();if(!H)break;const ct=Number(H.code),N=Number(H.value);switch(ct){case 1:this.sheetName=String(H.value);break;case 10:e=N;break;case 20:n=N;break;case 30:r=N;break;case 12:s=N;break;case 22:a=N;break;case 32:o=N;break;case 13:f=N;break;case 23:p=N;break;case 33:m=N;break;case 14:y=N;break;case 24:_=N;break;case 34:v=N;break;case 15:w=N;break;case 25:A=N;break;case 35:I=N;break;case 16:u=N;break;case 26:d=N;break;case 36:g=N;break;case 17:c=N;break;case 27:l=N;break;case 37:h=N;break;case 40:this.height=N;break;case 41:this.width=N;break;case 42:this.perspectiveLensLength=N;break;case 43:this.frontClipZ=N;break;case 44:this.backClipZ=N;break;case 45:this.viewHeight=N;break;case 50:this.snapAngle=T.degToRad(N);break;case 51:this.viewTwistAngle=T.degToRad(N);break;case 61:this.majorGridFrequency=N;break;case 63:this.ambientLightColorIndex=N;break;case 68:this.status=N;break;case 69:this.number=N;break;case 71:this.ucsPerViewport=N;break;case 72:this.circleZoomPercent=N;break;case 74:this.iconFlag=N;break;case 79:this.orthographicType=N;break;case 90:this.statusBitFlags=N;break;case 91:case 335:case 343:case 344:P.push(String(H.value));break;case 110:S=N;break;case 120:M=N;break;case 130:C=N;break;case 111:B=N;break;case 121:X=N;break;case 131:O=N;break;case 112:Z=N;break;case 122:K=N;break;case 132:G=N;break;case 141:this.viewportBrightness=N;break;case 142:this.viewportContrast=N;break;case 146:this.elevation=N;break;case 170:this.shadePlotMode=N;break;case 281:this.renderMode=N;break;case 282:this.defaultLightingType=N;break;case 292:this.isDefaultLighting=N!==0;break;case 331:J.push(String(H.value));break;case 332:this.backgroundId=String(H.value);break;case 333:this.shadePlotId=String(H.value);break;case 340:this.clippingBoundaryId=String(H.value);break;case 345:this.ucsId=String(H.value);break;case 346:this.ucsBaseId=String(H.value);break;case 348:this.visualStyleId=String(H.value);break;case 361:this.sunId=String(H.value);break;case 421:this.ambientLightColorInstance=N;break;case 431:this.ambientLightColorName=String(H.value);break}}return this.applyViewportDxfIn(e,n,r,s,a,o,c,l,h),this._viewDirection.copy({x:u,y:d,z:g}),this._snapBase.copy({x:f,y:p,z:m}),this._snapSpacing.copy({x:y,y:_,z:v}),this._gridSpacing.copy({x:w,y:A,z:I}),this._ucsOrigin.copy({x:S,y:M,z:C}),this._ucsXAxis.copy({x:B,y:X,z:O}),this._ucsYAxis.copy({x:Z,y:K,z:G}),this.frozenLayerIds=J,this.softPointers=P,this}applyViewportDxfIn(t,e,n,r,s,a,o,c,l){this.centerPoint.copy({x:t,y:e,z:n}),this.viewCenter.copy({x:r,y:s,z:a}),this.viewTarget.copy({x:o,y:c,z:l});const h=1e-6,u=Math.abs(t)<h&&Math.abs(e)<h,d=Math.abs(o)<h&&Math.abs(c)<h,g=Number.isFinite(this.height)&&Number.isFinite(this.viewHeight)&&Math.abs(this.viewHeight-this.height)<h;u&&d&&g&&this.centerPoint.copy(this.viewCenter)}moveGripAt(t,e){switch(t){case 0:this._centerPoint.add(e);break;case 1:case 2:case 3:case 4:{const n=this.width/2,r=this.height/2,s=this._centerPoint.x,a=this._centerPoint.y,o={1:{x:s-n,y:a-r},2:{x:s+n,y:a-r},3:{x:s+n,y:a+r},4:{x:s-n,y:a+r}},c=t===1?3:t===2?4:t===3?1:2,l=o[t],h=o[c];l.x+=e.x,l.y+=e.y,this._centerPoint.x=(l.x+h.x)/2,this._centerPoint.y=(l.y+h.y)/2,this._centerPoint.z=(this._centerPoint.z??0)+(e.z??0),this.width=Math.abs(h.x-l.x),this.height=Math.abs(h.y-l.y);break}}}};xo.typeName="Viewport";let vr=xo;const wo=class wo extends gi{get dxfTypeName(){return"WIPEOUT"}subWorldDraw(t){const e=this.boundaryPath(),n=new Kt;return n.add(new Q(e)),t.area(n)}dxfOutFields(t){return super.dxfOutFields(t),this}};wo.typeName="Wipeout";let Ar=wo;const Gr=class Gr extends At{get dxfTypeName(){return"XLINE"}constructor(){super(),this._basePoint=new b,this._unitDir=new x}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 area(){return 0}get geometricExtents(){const t=new z;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Ct(this._basePoint,t),extent:"unbounded"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return ue(t,e,this.basePoint),this}subGetOsnapPoints(t,e,n,r){const s=this.basePoint;if(t===k.EndPoint){r.push(s);return}const a=this.unitDir.clone();if(a.lengthSq()===0)return;a.normalize();const o=new Ct(s,s.clone().add(a));switch(t){case k.Nearest:r.push(o.project(e));break;case k.Perpendicular:r.push(o.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(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)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXline"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXline");let e=this.basePoint.x,n=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,a=this.unitDir.y,o=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 11:s=h;break;case 21:a=h;break;case 31:o=h;break}}return this.basePoint=new b(e,n,r),this.unitDir=new x(s,a,o),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,n=this.unitDir,r=Math.hypot(n.x,n.y);return r<=1e-9||(n.x*(t.y-e.y)-n.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=Nl(this.basePoint,this.unitDir,t);if(!e)return null;const n=new Gr;return n.basePoint=e,n.unitDir=this.unitDir.clone(),n}};Gr.typeName="Xline";let kr=Gr;var dd=(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))(dd||{});const en=48,Fc=8,Yy=48,gd=80,fd=32,Os=80,Ns=24,ca=40,Xy=8,zy=4,Dc=64,Vy=64,jy=new Set(["_version","_angbase","_angdir","_aunits","_auprec","_lunits","_luprec","_celtscale","_cecolor","_celtype","_celweight","_cetransparency","_clayer","_cmlstyle","_cmlscale","_cmleaderstyle","_hpbackgroundcolor","_hpcolor","_hplayer","_hptransparency","_textstyle","_dimstyle","_dimstyle","_dimstyle","_extents","_insunits","_unitmode","_measurement","_ltscale","_lwdisplay","_pdmode","_pdsize","_osmode","_orthomode","_maxHandle","_drawNoPlotLayers","_dwgname","_currentSpace","_formatter","_eventBatchDepth","_pendingEntityAppended","_pendingEntityErased","_pendingDictObjectSet","_pendingDictObjectErased","_lastOpenError"]),pd=new Set(["constructor","prototype","__proto__","caller","callee","arguments"]);function Qt(i,t){let e=i.get(t);return e||(e={bytes:0,count:0},i.set(t,e)),e}function zt(i,t,e,n=0){if(e<=0&&n===0)return;const r=Qt(i.byCategory,t);r.bytes+=e,r.count+=n}function Gy(i){const t=Object.getPrototypeOf(i);return t===Object.prototype||t===null}function Uy(i){return ArrayBuffer.isView(i)}function Hy(i){return typeof i.addEventListener=="function"&&typeof i.dispatch=="function"&&"listeners"in i}function Wy(i,t,e){return pd.has(t)?!0:!i.includeEventManagers&&(t==="events"||e==="events")?t==="events":!i.includeTransactionManager&&(t==="transactionManager"||e==="transaction")?t==="transactionManager":!1}function Yc(i,t,e){return t==="_xDataMap"||i==="xdata"?"xdata":t==="_tables"||i==="tables"?e instanceof q?"entities":"tables":t==="_entities"||i==="entities"?"entities":t==="_objects"||i==="objects"?"objects":t==="_handleRegistry"||i==="handleRegistry"?"handleRegistry":t==="transactionManager"||i==="transaction"?"transaction":t==="events"||i==="events"?"events":i==="sysvars"||jy.has(t)?"sysvars":e instanceof q?"entities":i==="other"?"other":i}function $y(i){const t=new Set;let e=i;for(;e&&e!==Object.prototype;){for(const n of Object.getOwnPropertyNames(e)){if(pd.has(n))continue;const r=Object.getOwnPropertyDescriptor(e,n);r&&typeof r.value=="function"||r&&(r.get||r.set)&&r.value===void 0||t.add(n)}if(e=Object.getPrototypeOf(e),e===Object.prototype||e===null||e===Array.prototype||e===Map.prototype||e===Set.prototype)break}return[...t]}function md(i){if(i==null)return 0;switch(typeof i){case"number":return Xy;case"boolean":return zy;case"string":return ca+i.length*2;case"bigint":return 16;case"symbol":return ca+String(i.description??"").length*2;default:return 0}}function qy(i,t){if(i.visited.has(t))return 0;i.visited.add(t),i.objectCount+=1;let e=gd+t.size*fd;for(const n of t.keys())e+=md(n);return zt(i,"handleRegistry",e,1),e}function rn(i,t,e,n){if(t==null)return 0;const r=typeof t;if(r==="function")return 0;if(r!=="object"){const h=md(t);if(zt(i,e,h),n){const u=Qt(i.byEntityType,n);u.bytes+=h}return h}const s=t;if(typeof s.nodeType=="number"||i.visited.has(s))return 0;if(i.visited.add(s),i.objectCount+=1,!i.includeEventManagers&&Hy(s))return zt(i,e,en,1),en;let a=n,o=e;if(s instanceof q){o="entities",a=s.type,i.entityCount+=1;const h=Qt(i.byEntityType,a);h.count+=1}if(typeof s.then=="function")return zt(i,o,en,1),en;if(s instanceof ArrayBuffer){const h=Dc+s.byteLength;return zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h),h}if(Uy(s)){const h=Dc+s.byteLength;return s.buffer&&!i.visited.has(s.buffer)&&i.visited.add(s.buffer),zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h),h}if(typeof Blob<"u"&&s instanceof Blob){const h=Vy+s.size;return zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h),h}if(s instanceof Date){const h=en+8;return zt(i,o,h,1),h}if(s instanceof Map){const h=o==="handleRegistry",u=gd+s.size*fd;let d=u;zt(i,o,u,1),a&&(Qt(i.byEntityType,a).bytes+=u);for(const[g,f]of s)d+=rn(i,g,o,a),h||(d+=rn(i,f,o,a));return d}if(s instanceof Set){let h=Os+s.size*Ns;for(const u of s)h+=rn(i,u,o,a);return zt(i,o,Os+s.size*Ns,1),a&&(Qt(i.byEntityType,a).bytes+=Os+s.size*Ns),h}if(Array.isArray(s)){let h=Yy+s.length*Fc;zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h);for(let u=0;u<s.length;u++){const d=s[u],g=Yc(o,String(u),d);h+=rn(i,d,g,a)}return h}let c=en;const l=Gy(s)?Object.getOwnPropertyNames(s):$y(s);for(const h of l)c+=Fc,c+=Math.min(ca+h.length*2,64);zt(i,o,c,1),a&&(Qt(i.byEntityType,a).bytes+=c);for(const h of l){if(Wy(i,h,o)||h==="_database"||h==="database")continue;let u;try{u=s[h]}catch{continue}if(typeof u=="function")continue;if(h==="_handleRegistry"&&u instanceof Map){c+=qy(i,u);continue}const d=Yc(o,h,u);!i.includeTransactionManager&&d==="transaction"||!i.includeEventManagers&&d==="events"||(c+=rn(i,u,d,a))}return c}function Ky(i,t){const e={visited:new WeakSet,objectCount:0,entityCount:0,byCategory:new Map,byEntityType:new Map,includeTransactionManager:(t==null?void 0:t.includeTransactionManager)===!0,includeEventManagers:(t==null?void 0:t.includeEventManagers)===!0};rn(e,i,"sysvars",null);let n=0;const r={};for(const[a,o]of e.byCategory)r[a]={bytes:o.bytes,count:o.count},n+=o.bytes;const s={};for(const[a,o]of e.byEntityType)s[a]={bytes:o.bytes,count:o.count};return{totalBytes:n,objectCount:e.objectCount,entityCount:e.entityCount,byCategory:r,byEntityType:s}}function Bs(i){return i<1024?`${i} B`:i<1024*1024?`${(i/1024).toFixed(2)} KiB`:`${(i/(1024*1024)).toFixed(2)} MiB`}function Zy(i){const t=[`AcDbDatabase memory estimate: ${Bs(i.totalBytes)} (${i.totalBytes} bytes)`,`Objects: ${i.objectCount}, Entities: ${i.entityCount}`,"By category:"],e=Object.entries(i.byCategory).sort((r,s)=>s[1].bytes-r[1].bytes);for(const[r,s]of e)t.push(` ${r}: ${Bs(s.bytes)} (${s.bytes} bytes), count=${s.count}`);const n=Object.entries(i.byEntityType).sort((r,s)=>s[1].bytes-r[1].bytes);if(n.length>0){t.push("By entity type:");for(const[r,s]of n)t.push(` ${r}: ${Bs(s.bytes)} (${s.bytes} bytes), count=${s.count}`)}return t.join(`
|
|
14
|
-
`)}class
|
|
15
|
-
`),r=[],s=[];let a=null;return n.forEach((o,c)=>{const l=c+1,h=this.stripInlineComment(o).trim();if(!h)return;if(h.startsWith("*")){this.flushCurrentPattern(a,r,s);const d=this.parseHeader(h.slice(1));if(!d){s.push({line:l,message:"Invalid pattern header.",source:o}),a=null;return}a={pattern:{name:d.name,description:d.description,lines:[]},headerLine:l};return}if(!a){s.push({line:l,message:"Line descriptor appears before any pattern header.",source:o});return}const u=this.parseLineDescriptor(h,l);if(!u){s.push({line:l,message:"Invalid line descriptor. Expect: angle,x-origin,y-origin,delta-x,delta-y[,dash-1,...].",source:o});return}a.pattern.lines.push(u)}),this.flushCurrentPattern(a,r,s),{patterns:r,issues:s}}static parse(t){return new
|
|
5
|
+
`}toBinary(){if(this.assertWriteMode(),this._outputFormat!=="binary")throw new Error("Filer is not in binary output mode");const t=new Uint8Array(this._binaryLength);let e=0;for(const n of this._binaryChunks)t.set(n,e),e+=n.length;return t}registerHandle(t){return this._handleMap.has(t)||(/^[0-9A-F]+$/i.test(t)?this._handleMap.set(t,t.toUpperCase()):(this._handleMap.set(t,this._nextHandle.toString(16).toUpperCase()),this._nextHandle+=1)),this._handleMap.get(t)}resolveHandle(t){if(t)return this.registerHandle(t)}get atEof(){var t;return this._mode!=="read"||this._pushed.length>0?!1:((t=this._reader)==null?void 0:t.peek())===void 0}position(){return this._mode!=="read"||!this._reader?{byteOffset:0}:this._reader.position()}get atEndOfObject(){if(this._mode!=="read")return!0;const t=this.peekPair();return t===void 0||t.code===0}get atExtendedData(){if(this._mode!=="read")return!1;const t=this.peekPair();return t?t.code===1001||t.code===1e3||t.code===1002:!1}atSubclassData(t){if(this._mode!=="read")return!1;const e=this.peekPair();return!e||e.code!==100||typeof e.value!="string"||e.value!==t?!1:(this.readPair(),!0)}peekItem(){const t=this.peekPair();return t?this.pairToTypedValue(t):void 0}readItem(){const t=this.readPair();if(!t){this._status=1;return}return this._status=0,this.pairToTypedValue(t)}pushBackItem(t){if(t&&"type"in t){this._pushed.push(t);return}if(t){this._pushed.push(this.typedValueToPair(t));return}this._lastRead&&this._pushed.push(this._lastRead)}skipToEndOfObject(){for(;!this.atEndOfObject&&!this.atEof;)this.readPair()}readString(t){const e=this.readPair();if(e){if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}return e.type==="string"||e.type==="handle"?e.value:String(e.value)}}readInt16(t){return this.readNumber(t)}readInt32(t){return this.readNumber(t)}readInt64(t){const e=this.readPair();if(!e)return;if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}if(e.type==="long"||e.type==="int"||e.type==="double")return e.value;if(e.type==="bool")return e.value?1:0;const n=Number(e.value);return Number.isFinite(n)?n:0}readDouble(t){return this.readNumber(t)}readBoolean(t){const e=this.readPair();if(e){if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}return e.type==="bool"?e.value:typeof e.value=="number"?e.value!==0:typeof e.value=="string"?e.value!=="0"&&e.value!=="":!!e.value}}readHandle(t){const e=this.readPair();if(e){if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}return e.type==="handle"||e.type==="string"?e.value:String(e.value)}}readObjectId(t){return this.readHandle(t)}readPoint2d(t){const e=this.readDouble(t);if(e===void 0)return;const n=this.peekPair();let r=0;return n&&n.code===t+10&&(r=this.readNumber()??0),new L(e,r)}readPoint3d(t){const e=this.readDouble(t);if(e===void 0)return;let n=0,r=0;const s=this.peekPair();s&&s.code===t+10&&(n=this.readNumber()??0);const a=this.peekPair();return a&&a.code===t+20&&(r=this.readNumber()??0),new b(e,n,r)}readVector3d(t){const e=this.readPoint3d(t);return e?new x(e.x,e.y,e.z):void 0}readCmColorInto(t,e=62,n=420){const r=this.peekPair();if(!r)return!1;if(r.code===e){const s=this.readNumber();return s!=null&&(t.colorIndex=s),!0}if(r.code===n){const s=this.readNumber();return s!=null&&t.setRGBValue(s),!0}return!1}writeGroup(t,e){if(this.assertWriteMode(),e==null)return this;if(this._outputFormat==="binary")return this.writeBinaryGroup(t,e);this._lines.push(String(Math.trunc(t)));const n=this.formatValue(e);return this._lines.push(n===""?"0":n),this}writeStart(t){return this.writeString(0,t)}get capabilities(){return(this._version??xt.latest).capabilities}writeSubclassMarker(t){return this.capabilities.supportsSubclassMarkers?this.writeString(100,t):this}writeString(t,e){return!e&&e!==""?this:this.writeGroup(t,e)}writeMTextContents(t){for(const e of mh(t??""))this.writeString(e.code,e.value);return this}writeInt8(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt16(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt32(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt64(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeUInt16(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeUInt32(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeBoolean(t,e){return e==null?this:this.writeGroup(t,e?1:0)}writeBool(t,e){return this.writeBoolean(t,e)}writeDouble(t,e){return e==null||!Number.isFinite(e)?this:this.writeGroup(t,e)}writeAngle(t,e){return e==null||!Number.isFinite(e)?this:this.writeDouble(t,e*180/Math.PI)}writeHandle(t,e){if(!this.capabilities.supportsHandles)return this;const n=this.resolveHandle(e);return n?this.writeString(t,n):this}writeObjectId(t,e){return this.writeHandle(t,e)}writeLineWeight(t,e){return e==null||!this.capabilities.supportsLineWeight?this:this.writeInt16(t,e)}writePoint2d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this):this}writePoint3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeVector3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeCmColor(t,e=62,n=420){if(!t)return this;const r=t.colorIndex;r!=null&&this.writeInt16(e,r);const s=t.RGB;return s!=null&&t.colorIndex==null&&(this.capabilities.supportsTrueColor?this.writeInt32(n,s):this.writeInt16(e,7)),this}writeTransparency(t,e=440){return!t||t.method===exports.AcCmTransparencyMethod.ErrorValue||!this.capabilities.supportsTransparency?this:this.writeInt32(e,t.serialize())}writeResultBuffer(t){if(!t)return this;for(const e of t){const n=Number(e.code);if(n===1e3&&typeof e.value=="string"){for(const r of yh(e.value,fh))this.writeGroup(1e3,r);continue}if(n===1004){const r=e.value instanceof Uint8Array?e.value:typeof e.value=="string"?Rp(e.value):void 0;if(r){for(const s of bh(r,ph))this._outputFormat==="binary"?this.writeGroup(1004,s):this.writeGroup(1004,Ac(s));continue}}this.writeGroup(e.code,e.value)}return this}startSection(t){return this.writeStart("SECTION"),this.writeString(2,t),this}endSection(){return this.writeStart("ENDSEC"),this}startTable(t){return this.writeStart("TABLE"),this.writeString(2,t),this}endTable(){return this.writeStart("ENDTAB"),this}assertWriteMode(){if(this._mode!=="write")throw new Error("AcDbDxfFiler is in read mode")}appendBinary(t){this._binaryChunks.push(t),this._binaryLength+=t.length}writeBinaryCode(t){const e=Math.trunc(t)&65535;if(!this.capabilities.supportsSubclassMarkers){e<=255?this.appendBinary(Uint8Array.of(e)):this.appendBinary(Uint8Array.of(255,e&255,e>>8&255));return}const r=new Uint8Array(2);new DataView(r.buffer).setUint16(0,e,!0),this.appendBinary(r)}writeBinaryGroup(t,e){const n=vi(Math.trunc(t));switch(this.writeBinaryCode(Math.trunc(t)),n){case"string":case"handle":{const r=typeof e=="string"?this.sanitizeStringForDxfLine(e):this.formatValue(e),s=new TextEncoder().encode(r===""?"0":r),a=new Uint8Array(s.length+1);a.set(s),a[s.length]=0,this.appendBinary(a);break}case"int":{const r=Math.trunc(Number(e))||0;if(ah(Math.trunc(t))){const s=new Uint8Array(4);new DataView(s.buffer).setInt32(0,r,!0),this.appendBinary(s)}else{const s=new Uint8Array(2);new DataView(s.buffer).setInt16(0,r,!0),this.appendBinary(s)}break}case"long":{const r=new Uint8Array(8),s=new DataView(r.buffer);typeof e=="bigint"?s.setBigInt64(0,e,!0):s.setBigInt64(0,BigInt(Math.trunc(Number(e))||0),!0),this.appendBinary(r);break}case"double":{const r=new Uint8Array(8),s=Number(e);new DataView(r.buffer).setFloat64(0,Number.isFinite(s)?s:0,!0),this.appendBinary(r);break}case"bool":{const r=typeof e=="boolean"?e:Number(e)!==0&&e!==""&&e!=null;this.appendBinary(Uint8Array.of(r?1:0));break}case"binary":{const r=e instanceof Uint8Array?e:new Uint8Array(0),s=Math.min(255,r.length),a=new Uint8Array(1+s);a[0]=s,a.set(r.subarray(0,s),1),this.appendBinary(a);break}default:{const r=this.formatValue(e),s=new TextEncoder().encode(r===""?"0":r),a=new Uint8Array(s.length+1);a.set(s),a[s.length]=0,this.appendBinary(a);break}}return this}assertReadMode(){if(this._mode!=="read"||!this._reader)throw new Error("AcDbDxfFiler is not in read mode")}peekPair(){return this.assertReadMode(),this._pushed.length>0?this._pushed[this._pushed.length-1]:this._reader.peek()}readPair(){if(this.assertReadMode(),this._pushed.length>0){const e=this._pushed.pop();return this._lastRead=e,e}const t=this._reader.next();return this._lastRead=t,t}pushBackPair(t){this._pushed.push(t)}readNumber(t){const e=this.readPair();if(!e)return;if(t!=null&&e.code!==t){this.pushBackPair(e),this.setError(3,`Expected group code ${t}, got ${e.code}`);return}if(e.type==="double"||e.type==="int"||e.type==="long"){const r=e.value;return typeof r=="bigint"?Number(r):r}if(e.type==="bool")return e.value?1:0;const n=Number(e.value);return Number.isFinite(n)?n:0}pairToTypedValue(t){return{code:t.code,value:t.value}}typedValueToPair(t){const e=Number(t.code),n=t.value;return typeof n=="boolean"?{code:e,type:"bool",value:n}:typeof n=="number"?Number.isInteger(n)?{code:e,type:"int",value:n}:{code:e,type:"double",value:n}:typeof n=="bigint"?{code:e,type:"long",value:n}:n instanceof Uint8Array?{code:e,type:"binary",value:n}:{code:e,type:"string",value:String(n??"")}}formatValue(t){if(typeof t=="string")return this.sanitizeStringForDxfLine(t);if(typeof t=="boolean")return t?"1":"0";if(typeof t=="number"){if(!Number.isFinite(t))return"0";if(Number.isInteger(t))return String(t);const n=t.toFixed(this._precision).replace(/\.?0+$/,"");return n===""||n==="-"?"0":n}return t instanceof Uint8Array?Ac(t):String(t)}sanitizeStringForDxfLine(t){return t.replace(/\r\n|\r|\n/g," ").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"")}}function Ac(i){let t="";for(let e=0;e<i.length;e++)t+=(i[e]??0).toString(16).padStart(2,"0").toUpperCase();return t}function Rp(i){const t=i.replace(/\s+/g,""),e=t.length>>>1,n=new Uint8Array(e);for(let r=0;r<e;r++)n[r]=Number.parseInt(t.slice(r*2,r*2+2),16)||0;return n}var Ge=256,xh=[],Pc=256,Bi;for(;Ge--;)xh[Ge]=(Ge+256).toString(16).substring(1);function Bp(i){var t=0,e=11;if(!Bi||Ge+e>Pc*2)for(Bi="",Ge=0;t<Pc;t++)Bi+=xh[Math.random()*256|0];return Bi.substring(Ge,Ge+++e)}class Ke{constructor(t){if(this._values=[],t)for(const e of t)this._values.push({...e})}get length(){return this._values.length}at(t){return this._values[t]}add(t){this._values.push(t)}addRange(t){for(const e of t)this._values.push(e)}clear(){this._values.length=0}toArray(){return this._values.map(t=>({...t}))}clone(){return new Ke(this._values)}[Symbol.iterator](){return this._values[Symbol.iterator]()}}const Ce="TEMP_";let Ze;function wh(i){Ze=i}function vh(i){Ze&&(Ze().workingDatabase=i)}function Ah(){if(Ze)return Ze().workingDatabase;throw new Error("The current working database must be set before using it!")}const te=class te{constructor(t,e){t=t||{},this._attrs=new Qs(t,e),this._xDataMap=new Map,this._attrs.get("objectId")||(this._database?this._attrs.set("objectId",this._database.generateHandle()):this._attrs.set("objectId",this.generateTemporaryHandle()))}generateTemporaryHandle(){return Ce+Bp()}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),t&&!t.startsWith(Ce)&&this._database&&this._database.updateMaxHandle(t)}get isTemp(){const t=this.getAttrWithoutException("objectId");return!!t&&t.startsWith(Ce)}get ownerId(){return this.getAttr("ownerId")}set ownerId(t){this._attrs.set("ownerId",t)}get extensionDictionary(){return this.getAttrWithoutException("extensionDictionary")}set extensionDictionary(t){this._attrs.set("extensionDictionary",t)}get database(){if(this._database)return this._database;if(Ze)return Ze().workingDatabase;throw new Error("The current working database must be set before using it!")}set database(t){this.assignDatabase(t)}assignDatabase(t){this._database=t}getXData(t){return this._xDataMap.get(t)}setXData(t){for(const e of t)e.code===Ea.ExtendedDataRegAppName&&this._xDataMap.set(e.value,t)}removeXData(t){this._xDataMap.delete(t)}createExtensionDictionary(){}close(){}getOwnSnapshotKeys(){return Reflect.ownKeys(this).filter(t=>typeof t=="string"&&!te.SNAPSHOT_EXCLUDED_KEYS.has(t))}cloneAttrs(t){const e=this.cloneValue(t.attributes);return new Qs(e)}restoreAttrsFrom(t){const e=this.cloneValue(t.attributes),n=this._attrs.attributes;for(const r of Object.keys(n))r in e||this._attrs.set(r,void 0,{unset:!0,silent:!0});this._attrs.set(e,{silent:!0})}restoreXDataMapFrom(t){this._xDataMap.clear();for(const[e,n]of t.entries())this._xDataMap.set(e,this.cloneValue(n))}copySnapshotStateTo(t){t._attrs=this.cloneAttrs(this._attrs),t._xDataMap=this.cloneValue(this._xDataMap);const e=this,n=t;for(const r of this.getOwnSnapshotKeys())te.SNAPSHOT_INTERNAL_KEYS.has(r)||(n[r]=this.cloneValue(e[r]))}clone(){const t=Object.create(Object.getPrototypeOf(this));return this.copySnapshotStateTo(t),t.objectId=this.generateTemporaryHandle(),t}clonePreservingIdentity(){const t=this.clone(),e=this.getAttrWithoutException("objectId");e&&t._attrs.set("objectId",e);const n=this.getAttrWithoutException("ownerId");return n!==void 0&&t._attrs.set("ownerId",n),this._database&&(t._database=this._database),t}restoreFrom(t){const e=this.objectId,n=this._database;this.restoreAttrsFrom(t._attrs),this.restoreXDataMapFrom(t._xDataMap);const r=t,s=this,a=new Set(t.getOwnSnapshotKeys());for(const o of a)te.SNAPSHOT_INTERNAL_KEYS.has(o)||te.SNAPSHOT_EXCLUDED_KEYS.has(o)||(s[o]=this.cloneValue(r[o]));for(const o of this.getOwnSnapshotKeys())te.SNAPSHOT_INTERNAL_KEYS.has(o)||te.SNAPSHOT_EXCLUDED_KEYS.has(o)||a.has(o)||delete s[o];this.objectId=e,n&&(this.database=n)}cloneValue(t){if(t==null||typeof t!="object")return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(Array.isArray(t))return t.map(r=>this.cloneValue(r));if(t instanceof Map){const r=new Map;for(const[s,a]of t.entries())r.set(this.cloneValue(s),this.cloneValue(a));return r}if(t instanceof Set){const r=new Set;for(const s of t.values())r.add(this.cloneValue(s));return r}if(ArrayBuffer.isView(t)){if(t instanceof DataView)return new DataView(t.buffer.slice(0));const r=t.constructor;return new r(t)}if(t instanceof ArrayBuffer)return t.slice(0);if(t&&typeof t=="object"&&"tables"in t&&"transactionManager"in t)return t;if("clone"in t&&typeof t.clone=="function")return t.clone();const e=Object.create(Object.getPrototypeOf(t)),n=t;for(const r of Object.keys(n))e[r]=this.cloneValue(n[r]);return e}dxfOut(...t){const[e,n=!1]=t;return e.writeHandle(5,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),n&&this.dxfOutXData(e),this}dxfOutXData(t){for(const e of this._xDataMap.values())t.writeResultBuffer(e)}dxfOutFields(t){return this}dxfIn(t){for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===5||n===105)this.objectId=String(e.value);else if(n===330)this.ownerId=String(e.value);else if(n===360)this.extensionDictionary=String(e.value);else if(n===102)this.dxfInControlString(t,String(e.value));else if(n===100){t.pushBackItem(e);break}else{t.pushBackItem(e);break}}return this.dxfInFields(t),t.atExtendedData&&this.dxfInXData(t),this}dxfInControlString(t,e){const n=e==="{ACAD_XDICTIONARY"||e==="ACAD_XDICTIONARY";for(;!t.atEndOfObject&&!t.atEof;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===102){const a=String(r.value);if(a==="}"||a==="")break;this.dxfInControlString(t,a);continue}n&&s===360&&!this.extensionDictionary&&(this.extensionDictionary=String(r.value))}}dxfInFields(t){return this}dxfInXData(t){let e;const n=()=>{e&&e.length>0&&this.setXData(e),e=void 0};for(;!t.atEndOfObject&&!t.atEof;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===1001)n(),e=new Ke([{code:r.code,value:r.value}]);else if(s>=1e3&&s<=1071)e||(e=new Ke),e.add({code:r.code,value:r.value});else{t.pushBackItem(r);break}}n()}};te.SNAPSHOT_EXCLUDED_KEYS=new Set(["_database","transactionManager"]),te.SNAPSHOT_INTERNAL_KEYS=new Set(["_attrs","_xDataMap"]);let vt=te;exports.AcGiArrowType=void 0;(function(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"})(exports.AcGiArrowType||(exports.AcGiArrowType={}));exports.AcGiLineWeight=void 0;(function(i){i[i.ByBlock=-2]="ByBlock",i[i.ByDIPs=-4]="ByDIPs",i[i.ByLayer=-1]="ByLayer",i[i.ByLineWeightDefault=-3]="ByLineWeightDefault",i[i.LineWeight000=0]="LineWeight000",i[i.LineWeight005=5]="LineWeight005",i[i.LineWeight009=9]="LineWeight009",i[i.LineWeight013=13]="LineWeight013",i[i.LineWeight015=15]="LineWeight015",i[i.LineWeight018=18]="LineWeight018",i[i.LineWeight020=20]="LineWeight020",i[i.LineWeight025=25]="LineWeight025",i[i.LineWeight030=30]="LineWeight030",i[i.LineWeight035=35]="LineWeight035",i[i.LineWeight040=40]="LineWeight040",i[i.LineWeight050=50]="LineWeight050",i[i.LineWeight053=53]="LineWeight053",i[i.LineWeight060=60]="LineWeight060",i[i.LineWeight070=70]="LineWeight070",i[i.LineWeight080=80]="LineWeight080",i[i.LineWeight090=90]="LineWeight090",i[i.LineWeight100=100]="LineWeight100",i[i.LineWeight106=106]="LineWeight106",i[i.LineWeight120=120]="LineWeight120",i[i.LineWeight140=140]="LineWeight140",i[i.LineWeight158=158]="LineWeight158",i[i.LineWeight200=200]="LineWeight200",i[i.LineWeight211=211]="LineWeight211"})(exports.AcGiLineWeight||(exports.AcGiLineWeight={}));var es=(function(){function i(t){t===void 0&&(t={});var e,n,r,s;this.database=t.database,this.foregroundOnDark=(e=t.foregroundOnDark)!==null&&e!==void 0?e:ti,this.foregroundOnLight=(n=t.foregroundOnLight)!==null&&n!==void 0?n:ei,this.backgroundIsDark=(r=t.backgroundIsDark)!==null&&r!==void 0?r:!0,this.fallbackRgb=(s=t.fallbackRgb)!==null&&s!==void 0?s:16777215}return i.prototype.resolveSubEntityTraitsRgb=function(t){var e,n,r,s=t.color;return s.isForeground?this.backgroundIsDark?this.foregroundOnDark:this.foregroundOnLight:s.isByLayer||s.isByBlock?(e=this.fallbackRgb)!==null&&e!==void 0?e:16777215:(r=(n=s.RGB)!==null&&n!==void 0?n:this.fallbackRgb)!==null&&r!==void 0?r:16777215},i.fromBackgroundColor=function(t,e){return t===void 0&&(t=Ph),new i({database:e,foregroundOnDark:ti,foregroundOnLight:ei,backgroundIsDark:!kh(t),fallbackRgb:16777215})},i})(),Ph=0,ti=16777215,ei=0,Dp=16777215,Fp=128,Xp=new es({database:void 0,foregroundOnDark:ti,foregroundOnLight:ei,backgroundIsDark:!0,fallbackRgb:16777215});function kh(i){var t=i>>16&255,e=i>>8&255,n=i&255;return .299*t+.587*e+.114*n>Fp}function Yp(i){var t=es.fromBackgroundColor(i);return t.backgroundIsDark?t.foregroundOnDark:t.foregroundOnLight}function zp(i){return i?ei:ti}function Vp(i,t){return es.fromBackgroundColor(t).resolveSubEntityTraitsRgb(i)}exports.AcGiMTextFlowDirection=void 0;(function(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"})(exports.AcGiMTextFlowDirection||(exports.AcGiMTextFlowDirection={}));exports.AcGiMTextAttachmentPoint=void 0;(function(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[i.BaselineLeft=10]="BaselineLeft",i[i.BaselineCenter=11]="BaselineCenter",i[i.BaselineRight=12]="BaselineRight"})(exports.AcGiMTextAttachmentPoint||(exports.AcGiMTextAttachmentPoint={}));exports.AcGiRenderMode=void 0;(function(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"})(exports.AcGiRenderMode||(exports.AcGiRenderMode={}));exports.AcGiOrthographicType=void 0;(function(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"})(exports.AcGiOrthographicType||(exports.AcGiOrthographicType={}));exports.AcGiDefaultLightingType=void 0;(function(i){i[i.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",i[i.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS"})(exports.AcGiDefaultLightingType||(exports.AcGiDefaultLightingType={}));var Sh=(function(){function i(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new b,this._height=0,this._width=0,this._viewCenter=new b,this._viewTarget=new b,this._viewTwistAngle=0,this._viewHeight=0}return Object.defineProperty(i.prototype,"number",{get:function(){return this._number},set:function(t){this._number=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"id",{get:function(){return this._id},set:function(t){this._id=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"groupId",{get:function(){return this._groupId},set:function(t){this._groupId=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"centerPoint",{get:function(){return this._centerPoint},set:function(t){this._centerPoint.copy(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){return this._height},set:function(t){this._height=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"width",{get:function(){return this._width},set:function(t){this._width=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"box",{get:function(){var t=new wt;return t.setFromCenterAndSize(this.centerPoint,{x:this.width,y:this.height}),t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewCenter",{get:function(){return this._viewCenter},set:function(t){this._viewCenter.copy(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewTarget",{get:function(){return this._viewTarget},set:function(t){this._viewTarget.copy(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewTwistAngle",{get:function(){return this._viewTwistAngle},set:function(t){this._viewTwistAngle=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewHeight",{get:function(){return this._viewHeight},set:function(t){this._viewHeight=t},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewWidth",{get:function(){return this.viewHeight*(this.width/this.height)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"viewBox",{get:function(){var t=i.dcsCenterToWcs(this.viewCenter,this.viewTarget,this.viewTwistAngle),e=new wt;return e.setFromCenterAndSize(t,{x:this.viewWidth,y:this.viewHeight}),e},enumerable:!1,configurable:!0}),i.dcsCenterToWcs=function(t,e,n){var r=t.x,s=t.y;if(Number.isFinite(n)&&n!==0){var a=Math.cos(n),o=Math.sin(n);r=t.x*a-t.y*o,s=t.x*o+t.y*a}return e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&(r+=e.x,s+=e.y),new b(r,s,0)},i.prototype.clone=function(){var t=new i;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.viewTarget.copy(this.viewTarget),t.viewTwistAngle=this.viewTwistAngle,t.viewHeight=this.viewHeight,t},i.prototype.copy=function(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.viewTarget.copy(t.viewTarget),this.viewTwistAngle=t.viewTwistAngle,this.viewHeight=t.viewHeight,this},i})();const Ne="Continuous",st="Standard",we="Standard",ve="Standard",jp="ANSI31",Ih="ANGLE",Ue="SOLID",Eh="USER",Lh="LINEAR",dt="ByLayer",oe="ByBlock",Pn="*Active",aa="mlightcad",oa="ACAD",Gp=Object.freeze({x:0,y:0}),Up=Object.freeze({x:0,y:0}),Hp=Object.freeze({x:1,y:1}),Wp=Object.freeze({x:0,y:0,z:1}),$p=Object.freeze({x:0,y:0,z:0}),Ch=150,ca=1,la=255,Th=12,ha=1,ua=255,qp=0,Kp=32767,Zp=0,Qp=2,Mh=5,da=1,ga=255,Oh=1,Nh=2,Rh=4,Bh=8,Dh=16,Fh=32,Xh=64,Yh=0,zh=0,Vh=Oh|Nh|Rh|Bh|Dh|Fh|Xh,nr=0,ns=0,is=1,ir=5,rs=1,ss=25,rr=1,as=0,os=1,sr=6,cs=0,ls=14;function se(i,t,e,n){const r=Math.trunc(t);if(!Number.isFinite(r)||r<e||r>n)throw new Error(`Invalid ${i} value! Valid range is ${e} to ${n}.`);return r}function Yn(i,t,e){const n=Math.trunc(i);if(!(!Number.isFinite(n)||n<t||n>e))return n}var Ve=(i=>(i[i.OnBothOperands=0]="OnBothOperands",i[i.ExtendThis=1]="ExtendThis",i[i.ExtendArg=2]="ExtendArg",i[i.ExtendBoth=3]="ExtendBoth",i))(Ve||{});const uo=class uo extends vt{constructor(){super(...arguments),this._visibility=!0,this._transparency=new ht,this._transparencySet=!1,this._dxfPaperSpace=!1}get type(){return this.constructor.typeName}get layer(){return this._layer==null&&(this._layer=this.database.clayer??"0"),this._layer}set layer(t){this._layer=t}get color(){return this.getEntityColor()}set color(t){this.setEntityColor(t)}get resolvedColor(){return this.resolveStandardColor()}resolveStandardColor(){let t=this.color;if(t.isByLayer){const e=this.getLayerColor();e&&e.RGB!=null&&(t=e)}else t.isByBlock&&(t=new j().setForeground());return t}get lineType(){var t;return this._lineType==null&&(this._lineType=((t=this.database)==null?void 0:t.celtype)??dt),this._lineType}set lineType(t){t?t.toUpperCase()==="BYLAYER"?this._lineType=dt:t.toUpperCase()==="BYBLOCK"?this._lineType=oe:this._lineType=t:this._lineType=dt}get lineWeight(){return this._lineWeight==null&&(this._lineWeight=this.database.celweight??exports.AcGiLineWeight.ByLayer),this._lineWeight}set lineWeight(t){this._lineWeight=t}get linetypeScale(){return this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),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.clone(),this._transparencySet=!0}hasExplicitLayer(){return this._layer!=null}hasExplicitColor(){return this._color!=null}getEntityColor(){return this._color==null&&(this._color=new j,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._color}setEntityColor(t){this._color==null&&(this._color=new j),this._color.copy(t)}shouldResolveColorFromCecolor(){return!0}hasExplicitTransparency(){return this._transparencySet}dxfOutFields(t){t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency);const e=this.database.tables.blockTable.getIdAt(this.ownerId);return e!=null&&e.isPaperSapce&&t.writeInt16(67,1),this}dxfInFields(t){if(super.dxfInFields(t),!t.atSubclassData("AcDbEntity")){const e=t.peekItem();if(e&&Number(e.code)===100)return this}for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 8:this.layer=String(e.value);break;case 6:this.lineType=String(e.value);break;case 48:this.linetypeScale=Number(e.value);break;case 60:this.visibility=Number(e.value)===0;break;case 62:this.color.colorIndex=Number(e.value);break;case 420:this.color.setRGBValue(Number(e.value));break;case 370:this.lineWeight=Number(e.value);break;case 440:this.transparency=ht.deserialize(Number(e.value));break;case 67:this._dxfPaperSpace=Number(e.value)!==0;break}}return this.hasExplicitColor()||this.setEntityColor(new j().setByLayer()),this}get dxfPaperSpace(){return this._dxfPaperSpace}resolveEffectiveProperties(){this._layer==null&&(this._layer=this.database.clayer??"0"),this._color==null&&this.shouldResolveColorFromCecolor()&&(this._color=new j,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._lineType==null&&(this._lineType=this.database.celtype??dt),this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),this._lineWeight==null&&(this._lineWeight=this.database.celweight??exports.AcGiLineWeight.ByLayer)}get properties(){return{type:this.type,groups:[this.getGeneralProperties()]}}subGetGripPoints(){return new Array}subMoveGripPointsAt(t,e){return this}subGetOsnapPoints(t,e,n,r,s,a){}intersectWith(t,e=Ve.OnBothOperands,n){const r=this.subGetIntersectCurves(),s=t.subGetIntersectCurves();if(r.length===0||s.length===0)return[];const a=e===Ve.ExtendThis||e===Ve.ExtendBoth,o=e===Ve.ExtendArg||e===Ve.ExtendBoth;return lp(r,s,a,o,n)}subGetIntersectCurves(){return[]}transformBy(t){return this}erase(){return this.database.tables.blockTable.removeEntity(this.objectId)}get directBatchPrimitive(){return null}worldDraw(t,e){if(!this.database.isLayerDrawable(this.layer))return;const n=t.subEntityTraits;n.color=this.resolvedColor,n.lineType=this.lineStyle,n.lineTypeScale=this.linetypeScale,n.lineWeight=this.lineWeight,n.transparency=this.transparency,n.layer=this.layer,n.drawOrder=0,"thickness"in this&&(n.thickness=this.thickness),t.context.database=this.database;const r=this.subWorldDraw(t,e);return this.attachEntityInfo(r),r}getGeneralProperties(){return{groupName:"general",properties:[{name:"handle",type:"int",editable:!1,accessor:{get:()=>this.objectId}},{name:"color",type:"color",editable:!0,accessor:{get:()=>this.color,set:t=>{this.color=t}}},{name:"layer",type:"string",editable:!0,accessor:{get:()=>this.layer,set:t=>{this.layer=t}}},{name:"linetype",type:"linetype",editable:!0,accessor:{get:()=>this.lineType,set:t=>{this.lineType=t}}},{name:"linetypeScale",type:"float",editable:!0,accessor:{get:()=>this.linetypeScale,set:t=>{this.linetypeScale=t}}},{name:"lineWeight",type:"lineweight",editable:!0,accessor:{get:()=>this.lineWeight,set:t=>{this.lineWeight=t}}},{name:"transparency",type:"transparency",editable:!0,accessor:{get:()=>this.transparency,set:t=>{this.transparency=t}}}]}}get lineStyle(){var r;const{type:t,name:e}=this.getLineType(),n=(r=this.database)==null?void 0:r.tables.linetypeTable.getAt(e);return n?{type:t,...n.linetype}:{type:t,name:e,standardFlag:0,description:"",totalPatternLength:0}}getLineType(){if(this.lineType==dt){const t=this.database.tables.layerTable.getAt(this.layer);if(t&&t.linetype)return{type:"ByLayer",name:t.linetype}}else return this.lineType==oe?{type:"ByBlock",name:Ne}:{type:"UserSpecified",name:this.lineType};return{type:"UserSpecified",name:Ne}}getLayerColor(){const t=this.database.tables.layerTable.getAt(this.layer);return t!=null?t.color:null}attachEntityInfo(t){t&&(t.objectId=this.objectId,this.attrs.has("ownerId")&&(t.ownerId=this.ownerId),t.layerName=this.layer,t.visible=this.visibility)}};uo.typeName="Entity";let q=uo;class kn{constructor(t){this.i=0,t instanceof Map?(this._records=t,this._array=null,this._keys=Array.from(t.keys())):(this._records=null,this._array=t,this._keys=[])}get count(){var t;return((t=this._records)==null?void 0:t.size)??this._array.length}toArray(){return this._records?Array.from(this._records.values()):[...this._array]}[Symbol.iterator](){return this}next(){if(this._array){if(this.i<this._array.length){const t=this._array[this.i];return this.i+=1,{value:t,done:!1}}return{value:null,done:!0}}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}}}class Te extends Error{constructor(t="Unexpected end of buffer."){super(t),this.name="AcDbProxyGraphicEndOfBufferError"}}function jh(i){return i instanceof ArrayBuffer?new Uint8Array(i):i}class Yt{constructor(t,e=4){this._index=0,this._buffer=jh(t),this._align=e}get index(){return this._index}get hasData(){return this._index<this._buffer.length}alignIndex(t){const e=t%this._align;return e?t+this._align-e:t}readStruct(t){if(!this.hasData)throw new Te;const e=[];let n=0;for(const r of t){const s=new DataView(this._buffer.buffer,this._buffer.byteOffset+this._index+n,r);if(r===8)e.push(s.getFloat64(0,!0));else if(r===4)e.push(s.getUint32(0,!0));else throw new Error(`Unsupported struct size: ${r}`);n+=r}return this._index=this.alignIndex(this._index+n),e}readFloat(){return this.readStruct([8])[0]}readLong(){return this.readStruct([4])[0]}readSignedLong(){if(!this.hasData)throw new Te;const e=new DataView(this._buffer.buffer,this._buffer.byteOffset+this._index,4).getInt32(0,!0);return this._index=this.alignIndex(this._index+4),e}readVertex(){return this.readStruct([8,8,8])}readPaddedString(t="utf-8"){const e=this._buffer;for(let n=this._index;n<e.length;n++)if(e[n]===0){const r=this._index;this._index=this.alignIndex(n+1);const s=e.subarray(r,n);return new TextDecoder(t).decode(s)}throw new Te("Did not detect terminating zero byte.")}readPaddedUnicodeString(){const t=this._buffer;for(let e=this._index;e<t.length;e+=2)if(e+1<t.length&&t[e]===0&&t[e+1]===0){const n=this._index;this._index=this.alignIndex(e+2);const r=t.subarray(n,e);return new TextDecoder("utf-16le").decode(r)}throw new Te("Did not detect terminating zero bytes.")}}class Gh{constructor(t,e="AC1015",n="cp1252"){this._bitIndex=0,this._buffer=jh(t),this.dxfversion=e,this.encoding=n}get hasData(){return this._bitIndex>>3<this._buffer.length}readBit(){const t=this._bitIndex;this._bitIndex+=1;const e=t>>3;if(e>=this._buffer.length)throw new Te;return this._buffer[e]&128>>(t&7)?1:0}readBits(t){const e=this._bitIndex,n=e+t;if(n-1>>3>=this._buffer.length)throw new Te;this._bitIndex=n;let r=128>>(e&7),s=e>>3,a=0,o=this._buffer[s];for(;t>0;)a<<=1,o&r&&(a|=1),t-=1,r>>=1,!r&&t&&(r=128,s+=1,o=this._buffer[s]);return a}readUnsignedByte(){return this.readBits(8)}readSignedByte(){const t=this.readBits(8);return t&128?-((~t&255)+1):t}readAlignedBytes(t){const e=this._bitIndex>>3,n=e+t;if(n>this._buffer.length)throw new Te;return this._bitIndex+=t<<3,this._buffer.subarray(e,n)}readUnsignedShort(){if(this._bitIndex&7){const e=this.readBits(8);return(this.readBits(8)<<8)+e}const t=this.readAlignedBytes(2);return t[1]<<8|t[0]}readSignedShort(){const t=this.readUnsignedShort();return t&32768?-((~t&65535)+1):t}readUnsignedLong(){if(this._bitIndex&7){const e=this.readBits(8),n=this.readBits(8),r=this.readBits(8);return(this.readBits(8)<<24)+(r<<16)+(n<<8)+e}const t=this.readAlignedBytes(4);return(t[3]<<24)+(t[2]<<16)+(t[1]<<8)+t[0]}readSignedLong(){const t=this.readUnsignedLong();return t&2147483648?-((~t&4294967295)+1):t}readFloat(){if(this._bitIndex&7){const n=new Uint8Array(8);for(let r=0;r<8;r++)n[r]=this.readBits(8);return new DataView(n.buffer).getFloat64(0,!0)}const t=this.readAlignedBytes(8),e=new Uint8Array(t);return new DataView(e.buffer).getFloat64(0,!0)}readRawDouble(t=1){return t===1?this.readFloat():Array.from({length:t},()=>this.readFloat())}readBitShort(t=1){const e=()=>{const n=this.readBits(2);return n===0?this.readSignedShort():n===1?this.readUnsignedByte():n===2?0:256};return t===1?e():Array.from({length:t},()=>e())}readBitLong(t=1){const e=()=>{const n=this.readBits(2);return n===0?this.readSignedLong():n===1?this.readUnsignedByte():n===2?0:256};return t===1?e():Array.from({length:t},()=>e())}readBitDouble(t=1){const e=()=>{const n=this.readBits(2);return n===0?this.readFloat():n===1?1:0};return t===1?e():Array.from({length:t},()=>e())}readBitDoubleDefault(t=1,e=0){const n=new Uint8Array(8);new DataView(n.buffer).setFloat64(0,e,!0);const r=()=>{const s=this.readBits(2);if(s===0)return e;if(s===1){const a=new Uint8Array(n);return a[0]=this.readUnsignedByte(),a[1]=this.readUnsignedByte(),a[2]=this.readUnsignedByte(),a[3]=this.readUnsignedByte(),new DataView(a.buffer).getFloat64(0,!0)}if(s===2){const a=new Uint8Array(n);return a[4]=this.readUnsignedByte(),a[5]=this.readUnsignedByte(),a[0]=this.readUnsignedByte(),a[1]=this.readUnsignedByte(),a[2]=this.readUnsignedByte(),a[3]=this.readUnsignedByte(),new DataView(a.buffer).getFloat64(0,!0)}return this.readFloat()};return t===1?r():Array.from({length:t},()=>r())}}function hs(i){return Array.from(i,t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}function qa(i){const t=i.reduce((r,s)=>r+Math.floor(s.length/2),0),e=new Uint8Array(t);let n=0;for(const r of i)for(let s=0;s<r.length;s+=2)e[n++]=parseInt(r.slice(s,s+2),16);return e}function Ai(i){if(i.length===0)return new Uint8Array;const t=[];for(const s of i)s instanceof Uint8Array?t.push(s):t.push(qa([String(s)]));const e=t.reduce((s,a)=>s+a.length,0),n=new Uint8Array(e);let r=0;for(const s of t)n.set(s,r),r+=s.length;return n}class Se extends vt{constructor(t,e){t=t||{},Wt(t,{name:""}),super(t,e)}get name(){return this.getAttr("name")}set name(t){this.setAttr("name",t)}setAttr(t,e){this.assertOpenForWrite(),super.setAttr(t,e)}assertOpenForWrite(){if(this.isTemp)return;const t=this.database;if(!t)return;const e=t.transactionManager;if(!e.isApplyingUndoRedo()){if(e.strictMode&&!e.isRecording())throw new Error("Cannot modify symbol table records outside an active transaction.");if(e.isRecording()&&!e.isOpenedForWriteInTransaction(this.objectId))throw new Error(`Symbol table record "${this.name||this.objectId}" is not open for write. Use openObjectForWrite().`)}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTableRecord"),this}}var Uh=(i=>(i[i.Any=0]="Any",i[i.Uniform=1]="Uniform",i))(Uh||{}),jn=(i=>(i[i.None=0]="None",i[i.Anonymous=1]="Anonymous",i[i.HasNonConstantAttributes=2]="HasNonConstantAttributes",i[i.Xref=4]="Xref",i[i.XrefOverlay=8]="XrefOverlay",i[i.ExternallyDependent=16]="ExternallyDependent",i[i.Resolved=32]="Resolved",i[i.Referenced=64]="Referenced",i))(jn||{});const Ee=class Ee extends Se{static isModelSapceName(t){return t.toLowerCase()==Ee.MODEL_SPACE_NAME.toLowerCase()}static isPaperSapceName(t){return t.toLowerCase().startsWith(Ee.PAPER_SPACE_NAME_PREFIX.toLowerCase())}static sanitizeImportedFlags(t){return t&-97}constructor(t,e){t=t||{},Wt(t,{origin:new b,layoutId:"",flags:0,pathName:"",blockInsertUnits:0,explodability:1,blockScaling:1,previewIcon:void 0}),super(t,e),this._entities=[]}get isModelSapce(){return Ee.isModelSapceName(this.name)}get isPaperSapce(){return Ee.isPaperSapceName(this.name)}get origin(){return this.getAttr("origin")}set origin(t){this.getAttr("origin").copy(t)}get layoutId(){return this.getAttr("layoutId")}set layoutId(t){this.setAttr("layoutId",t)}get flags(){return this.getAttr("flags")}set flags(t){this.setAttr("flags",t)}get pathName(){return this.getAttr("pathName")}set pathName(t){this.setAttr("pathName",t)}get isXref(){return(this.flags&12)!==0}get isOverlayReference(){return(this.flags&8)!==0}get isUnresolvedXref(){return!this.isXref||(this.flags&32)!==0?!1:this._entities.length===0}get blockInsertUnits(){return this.getAttr("blockInsertUnits")}set blockInsertUnits(t){this.setAttr("blockInsertUnits",t)}get explodability(){return this.getAttr("explodability")}set explodability(t){this.setAttr("explodability",t)}get blockScaling(){return this.getAttr("blockScaling")}set blockScaling(t){this.setAttr("blockScaling",t)}get previewIcon(){return this.getAttrWithoutException("previewIcon")}set previewIcon(t){if(!t||t.length===0){this.setAttr("previewIcon",void 0);return}this.setAttr("previewIcon",t)}appendEntity(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot append entities outside an active transaction.");const n=s=>{s.database=this.database,s.ownerId=this.objectId,this.database.ensureEntityStyleDefaults(s),this.database.commitObjectHandle(s,a=>this.hasEntityId(a)),s.resolveEffectiveProperties(),this._entities.push(s),s.dxfTypeName==="INSERT"&&"syncAttributeDatabases"in s&&typeof s.syncAttributeDatabases=="function"&&s.syncAttributeDatabases()},r=Array.isArray(t)?t:[t];for(const s of r)n(s);if(e.isRecording())for(const s of r)e.recordAppend({type:"blockTableRecord",ownerId:this.objectId},s);(this.isModelSapce||this.isPaperSapce)&&!e.isRecording()&&!e.isApplyingUndoRedo()&&this.database.notifyEntityAppended(t)}removeEntity(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot remove entities outside an active transaction.");const n=Array.isArray(t)?t:[t];if(n.length===0)return!1;const r=new Set(n),s=[];let a=0;for(const o of this._entities)r.has(o.objectId)?(e.isRecording()&&e.recordRemove({type:"blockTableRecord",ownerId:this.objectId},o),s.push(o),this.database.releaseObjectHandle(o)):this._entities[a++]=o;return this._entities.length=a,s.length>0&&!e.isRecording()&&!e.isApplyingUndoRedo()&&this.database.notifyEntityErased(s),s.length>0}newIterator(){return new kn(this._entities)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!(e instanceof q)||e.getAttrWithoutException("ownerId")!==this.objectId))return e}hasEntityId(t){return this.getIdAt(t)!==void 0}dxfOutBlockRecord(t){return t.writeStart("BLOCK_RECORD"),this.dxfOut(t),this}dxfOutBlockBegin(t){return t.writeStart("BLOCK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,"0"),t.writeSubclassMarker("AcDbBlockBegin"),t.writeString(2,this.name),t.writeInt16(70,this.flags),t.writePoint3d(10,this.origin),t.writeString(3,this.name),this.pathName&&t.writeString(1,this.pathName),this}dxfOutBlockEnd(t){return t.writeStart("ENDBLK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbBlockEnd"),this}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.blockInsertUnits),t.writeInt16(280,this.explodability),t.writeInt16(281,this.blockScaling),(this.isModelSapce||this.isPaperSapce)&&t.writeObjectId(340,this.layoutId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbBlockTableRecord");const e=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}switch(r){case 2:this.name=String(n.value);break;case 70:this.blockInsertUnits=Number(n.value);break;case 280:this.explodability=Number(n.value);break;case 281:this.blockScaling=Number(n.value);break;case 340:this.layoutId=String(n.value);break;case 310:{const s=String(n.value).replace(/\s+/g,"");s&&e.push(s);break}}}return e.length>0&&(this.previewIcon=qa(e)),this}};Ee.MODEL_SPACE_NAME="*Model_Space",Ee.PAPER_SPACE_NAME_PREFIX="*Paper_Space";let it=Ee;var Hh=(i=>(i[i.kInches=0]="kInches",i[i.kMillimeters=1]="kMillimeters",i[i.kPixels=2]="kPixels",i))(Hh||{}),Wh=(i=>(i[i.k0degrees=0]="k0degrees",i[i.k90degrees=1]="k90degrees",i[i.k180degrees=2]="k180degrees",i[i.k270degrees=3]="k270degrees",i))(Wh||{}),$h=(i=>(i[i.kDisplay=0]="kDisplay",i[i.kExtents=1]="kExtents",i[i.kLimits=2]="kLimits",i[i.kView=3]="kView",i[i.kWindow=4]="kWindow",i[i.kLayout=5]="kLayout",i))($h||{}),qh=(i=>(i[i.kDraft=0]="kDraft",i[i.kPreview=1]="kPreview",i[i.kNormal=2]="kNormal",i[i.kPresentation=3]="kPresentation",i[i.kMaximum=4]="kMaximum",i[i.kCustom=5]="kCustom",i))(qh||{}),Kh=(i=>(i[i.kAsDisplayed=0]="kAsDisplayed",i[i.kWireframe=1]="kWireframe",i[i.kHidden=2]="kHidden",i[i.kRendered=3]="kRendered",i[i.kVisualStyle=4]="kVisualStyle",i[i.kRenderPreset=5]="kRenderPreset",i))(Kh||{}),Zh=(i=>(i[i.kScaleToFit=0]="kScaleToFit",i[i.k1_128in_1ft=1]="k1_128in_1ft",i[i.k1_64in_1ft=2]="k1_64in_1ft",i[i.k1_32in_1ft=3]="k1_32in_1ft",i[i.k1_16in_1ft=4]="k1_16in_1ft",i[i.k3_32in_1ft=5]="k3_32in_1ft",i[i.k1_8in_1ft=6]="k1_8in_1ft",i[i.k3_16in_1ft=7]="k3_16in_1ft",i[i.k1_4in_1ft=8]="k1_4in_1ft",i[i.k3_8in_1ft=9]="k3_8in_1ft",i[i.k1_2in_1ft=10]="k1_2in_1ft",i[i.k3_4in_1ft=11]="k3_4in_1ft",i[i.k1in_1ft=12]="k1in_1ft",i[i.k3in_1ft=13]="k3in_1ft",i[i.k6in_1ft=14]="k6in_1ft",i[i.k1ft_1ft=15]="k1ft_1ft",i[i.k1_1=16]="k1_1",i[i.k1_2=17]="k1_2",i[i.k1_4=18]="k1_4",i[i.k1_5=19]="k1_5",i[i.k1_8=20]="k1_8",i[i.k1_10=21]="k1_10",i[i.k1_16=22]="k1_16",i[i.k1_20=23]="k1_20",i[i.k1_30=24]="k1_30",i[i.k1_40=25]="k1_40",i[i.k1_50=26]="k1_50",i[i.k1_100=27]="k1_100",i[i.k2_1=28]="k2_1",i[i.k4_1=29]="k4_1",i[i.k8_1=30]="k8_1",i[i.k10_1=31]="k10_1",i[i.k100_1=32]="k100_1",i[i.k1000_1=33]="k1000_1",i[i.k1and1_2in_1ft=34]="k1and1_2in_1ft",i))(Zh||{});const Jp={0:0,1:1/1536,2:1/768,3:1/384,4:1/192,5:1/128,6:1/96,7:1/64,8:1/48,9:1/32,10:1/24,11:1/16,12:1/12,13:1/4,14:1/2,15:1,16:1,17:1/2,18:1/4,19:1/5,20:1/8,21:1/10,22:1/16,23:1/20,24:1/30,25:1/40,26:1/50,27:1/100,28:2,29:4,30:8,31:10,32:100,33:1e3,34:1/8};class Qh extends vt{constructor(t=!1){super(),this._plotSettingsName="",this._plotCfgName="",this._canonicalMediaName="",this._currentStyleSheet="",this._plotOrigin=new L,this._customPrintScale={numerator:1,denominator:1},this._plotPaperSize=new L,this._plotPaperMargins={left:0,right:0,top:0,bottom:0},this._plotViewName="",this._paperImageOrigin=new L,this._plotWindowArea=new wt,this._modelType=t,this._plotCentered=!1,this._plotHidden=!1,this._plotPaperUnits=1,this._plotPlotStyles=!0,this._plotRotation=0,this._plotType=5,this._plotViewportBorders=!1,this._printLineweights=!0,this._scaleLineweights=!1,this._drawViewportsFirst=!1,this._showPlotStyles=!0,this._shadePlotType=0,this._shadePlotResLevel=2,this._shadePlotCustomDpi=300,this._shadePlotId=void 0,this._stdScaleType=0,this._useStandardScale=!0}get plotSettingsName(){return this._plotSettingsName}set plotSettingsName(t){this._plotSettingsName=t}getPlotSettingsName(){return this._plotSettingsName}setPlotSettingsName(t){this._plotSettingsName=t}get plotCfgName(){return this._plotCfgName}set plotCfgName(t){this._plotCfgName=t}getPlotCfgName(){return this._plotCfgName}get canonicalMediaName(){return this._canonicalMediaName}set canonicalMediaName(t){this._canonicalMediaName=t}getCanonicalMediaName(){return this._canonicalMediaName}get currentStyleSheet(){return this._currentStyleSheet}set currentStyleSheet(t){this._currentStyleSheet=t}getCurrentStyleSheet(){return this._currentStyleSheet}get plotOrigin(){return this._plotOrigin}set plotOrigin(t){this._plotOrigin=t}getPlotOrigin(){return this._plotOrigin}get customPrintScale(){return this._customPrintScale}set customPrintScale(t){this._customPrintScale=t}getCustomPrintScale(){return this._customPrintScale}get plotPaperSize(){return this._plotPaperSize}set plotPaperSize(t){this._plotPaperSize=t}getPlotPaperSize(){return this._plotPaperSize}get plotPaperMargins(){return this._plotPaperMargins}set plotPaperMargins(t){this._plotPaperMargins=t}getPlotPaperMargins(){return this._plotPaperMargins}get plotViewName(){return this._plotViewName}set plotViewName(t){this._plotViewName=t}getPlotViewName(){return this._plotViewName}get paperImageOrigin(){return this._paperImageOrigin}set paperImageOrigin(t){this._paperImageOrigin=t}get plotWindowArea(){return this._plotWindowArea}set plotWindowArea(t){this._plotWindowArea=t}getPlotWindowArea(){return this._plotWindowArea}get modelType(){return this._modelType}set modelType(t){this._modelType=t}getModelType(){return this._modelType}setModelType(t){this._modelType=t}get drawViewportsFirst(){return this._drawViewportsFirst}set drawViewportsFirst(t){this._drawViewportsFirst=t}setDrawViewportsFirst(t){this._drawViewportsFirst=t}get plotCentered(){return this._plotCentered}set plotCentered(t){this._plotCentered=t}setPlotCentered(t){this._plotCentered=t}get plotHidden(){return this._plotHidden}set plotHidden(t){this._plotHidden=t}setPlotHidden(t){this._plotHidden=t}get plotPaperUnits(){return this._plotPaperUnits}set plotPaperUnits(t){this._plotPaperUnits=t}get plotPlotStyles(){return this._plotPlotStyles}set plotPlotStyles(t){this._plotPlotStyles=t}setPlotPlotStyles(t){this._plotPlotStyles=t}get plotRotation(){return this._plotRotation}set plotRotation(t){this._plotRotation=t}get plotType(){return this._plotType}set plotType(t){this._plotType=t}get plotViewportBorders(){return this._plotViewportBorders}set plotViewportBorders(t){this._plotViewportBorders=t}setPlotViewportBorders(t){this._plotViewportBorders=t}get printLineweights(){return this._printLineweights}set printLineweights(t){this._printLineweights=t}setPrintLineweights(t){this._printLineweights=t}get scaleLineweights(){return this._scaleLineweights}set scaleLineweights(t){this._scaleLineweights=t}setScaleLineweights(t){this._scaleLineweights=t}get showPlotStyles(){return this._showPlotStyles}set showPlotStyles(t){this._showPlotStyles=t}setShowPlotStyles(t){this._showPlotStyles=t}get shadePlot(){return this._shadePlotType}set shadePlot(t){this._shadePlotType=t}setShadePlot(t){this._shadePlotType=t}get shadePlotResLevel(){return this._shadePlotResLevel}set shadePlotResLevel(t){this._shadePlotResLevel=t}setShadePlotResLevel(t){this._shadePlotResLevel=t}get shadePlotCustomDPI(){return this._shadePlotCustomDpi}set shadePlotCustomDPI(t){this._shadePlotCustomDpi=t}setShadePlotCustomDPI(t){this._shadePlotCustomDpi=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get plotWireframe(){return this._shadePlotType===1}get plotAsRaster(){return this._shadePlotType===3||this._shadePlotType===4||this._shadePlotType===5}get stdScaleType(){return this._stdScaleType}set stdScaleType(t){this._stdScaleType=t}get stdScale(){return Jp[this._stdScaleType]??1}get useStandardScale(){return this._useStandardScale}set useStandardScale(t){this._useStandardScale=t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPlotSettings"),t.writeString(1,this.plotSettingsName),t.writeString(2,this.plotCfgName),t.writeString(4,this.canonicalMediaName),t.writeString(6,this.plotViewName),t.writeDouble(40,this.plotPaperMargins.left),t.writeDouble(41,this.plotPaperMargins.bottom),t.writeDouble(42,this.plotPaperMargins.right),t.writeDouble(43,this.plotPaperMargins.top),t.writeDouble(44,this.plotPaperSize.x),t.writeDouble(45,this.plotPaperSize.y),t.writeDouble(46,this.plotOrigin.x),t.writeDouble(47,this.plotOrigin.y),t.writeDouble(48,this.plotWindowArea.min.x),t.writeDouble(49,this.plotWindowArea.min.y),t.writeDouble(140,this.plotWindowArea.max.x),t.writeDouble(141,this.plotWindowArea.max.y),t.writeDouble(142,this.customPrintScale.numerator),t.writeDouble(143,this.customPrintScale.denominator);let e=0;return this.plotViewportBorders&&(e|=1),this.showPlotStyles&&(e|=2),this.plotCentered&&(e|=4),this.plotHidden&&(e|=8),this.useStandardScale&&(e|=16),this.plotPlotStyles&&(e|=32),this.scaleLineweights&&(e|=64),this.printLineweights&&(e|=128),this.drawViewportsFirst&&(e|=512),this.modelType&&(e|=1024),t.writeInt16(70,e),t.writeInt16(72,this.plotPaperUnits),t.writeInt16(73,this.plotRotation),t.writeInt16(74,this.plotType),t.writeString(7,this.currentStyleSheet),t.writeInt16(75,this.stdScaleType),t.writeInt16(76,this.shadePlot),t.writeInt16(77,this.shadePlotResLevel),t.writeInt16(78,this.shadePlotCustomDPI),t.writeDouble(147,this.stdScale),t.writeDouble(148,this.paperImageOrigin.x),t.writeDouble(149,this.paperImageOrigin.y),t.writeObjectId(333,this.shadePlotId),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbPlotSettings");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.plotSettingsName=String(e.value);break;case 2:this.plotCfgName=String(e.value);break;case 4:this.canonicalMediaName=String(e.value);break;case 6:this.plotViewName=String(e.value);break;case 7:this.currentStyleSheet=String(e.value);break;case 40:this.plotPaperMargins.left=r;break;case 41:this.plotPaperMargins.bottom=r;break;case 42:this.plotPaperMargins.right=r;break;case 43:this.plotPaperMargins.top=r;break;case 44:this.plotPaperSize.x=r;break;case 45:this.plotPaperSize.y=r;break;case 46:this.plotOrigin.x=r;break;case 47:this.plotOrigin.y=r;break;case 48:this.plotWindowArea.min.x=r;break;case 49:this.plotWindowArea.min.y=r;break;case 140:this.plotWindowArea.max.x=r;break;case 141:this.plotWindowArea.max.y=r;break;case 142:this.customPrintScale.numerator=r;break;case 143:this.customPrintScale.denominator=r;break;case 70:{const s=r;this.plotViewportBorders=(s&1)!==0,this.showPlotStyles=(s&2)!==0,this.plotCentered=(s&4)!==0,this.plotHidden=(s&8)!==0,this.useStandardScale=(s&16)!==0,this.plotPlotStyles=(s&32)!==0,this.scaleLineweights=(s&64)!==0,this.printLineweights=(s&128)!==0,this.drawViewportsFirst=(s&512)!==0,this.modelType=(s&1024)!==0;break}case 72:this.plotPaperUnits=r;break;case 73:this.plotRotation=r;break;case 74:this.plotType=r;break;case 75:this.stdScaleType=r;break;case 76:this.shadePlot=r;break;case 77:this.shadePlotResLevel=r;break;case 78:this.shadePlotCustomDPI=r;break;case 147:break;case 148:this.paperImageOrigin.x=r;break;case 149:this.paperImageOrigin.y=r;break;case 333:this.shadePlotId=String(e.value);break;case 100:return t.pushBackItem(e),this}}return this}}class Pi extends Qh{constructor(){super(),this._insertionPoint=new b,this._ucsOrigin=new b,this._ucsXAxis=new x(1,0,0),this._ucsYAxis=new x(0,1,0),this._elevation=0,this._orthographicType=0,this._tabOrder=-1,this._tabSelected=!1,this._blockTableRecordId="",this._layoutName="",this._limits=new wt,this._extents=new z,this._viewportArray=[]}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)}get viewportArray(){return this._viewportArray}set viewportArray(t){this._viewportArray=t.slice()}get namedUcsId(){return this._namedUcsId}set namedUcsId(t){this._namedUcsId=t}get orthographicUcsId(){return this._orthographicUcsId}set orthographicUcsId(t){this._orthographicUcsId=t}get insertionPoint(){return this._insertionPoint}set insertionPoint(t){this._insertionPoint.copy(t)}get ucsOrigin(){return this._ucsOrigin}set ucsOrigin(t){this._ucsOrigin.copy(t)}get ucsXAxis(){return this._ucsXAxis}set ucsXAxis(t){this._ucsXAxis.copy(t)}get ucsYAxis(){return this._ucsYAxis}set ucsYAxis(t){this._ucsYAxis.copy(t)}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get orthographicType(){return this._orthographicType}set orthographicType(t){this._orthographicType=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayout"),t.writeString(1,this.layoutName),t.writeInt16(70,this.tabSelected?1:0),t.writeInt16(71,this.tabOrder),t.writeObjectId(330,this.blockTableRecordId),t.writeObjectId(331,this._viewportArray.length>0?this._viewportArray[0]:"0"),t.writePoint2d(10,this.limits.min),t.writePoint2d(11,this.limits.max),t.writePoint3d(14,this.extents.min),t.writePoint3d(15,this.extents.max),t.writePoint3d(12,this.insertionPoint),t.writePoint3d(13,this.ucsOrigin),t.writeVector3d(16,this.ucsXAxis),t.writeVector3d(17,this.ucsYAxis),t.writeDouble(146,this.elevation),t.writeInt16(76,this.orthographicType),t.writeObjectId(345,this._namedUcsId),t.writeObjectId(346,this._orthographicUcsId),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbLayout");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.layoutName=String(e.value);break;case 70:this.tabSelected=r!==0;break;case 71:this.tabOrder=r;break;case 330:this.blockTableRecordId=String(e.value);break;case 331:{const s=String(e.value);s&&s!=="0"&&(this.viewportArray=[s]);break}case 10:this.limits.min.x=r;break;case 20:this.limits.min.y=r;break;case 11:this.limits.max.x=r;break;case 21:this.limits.max.y=r;break;case 14:this.extents.min.x=r;break;case 24:this.extents.min.y=r;break;case 34:this.extents.min.z=r;break;case 15:this.extents.max.x=r;break;case 25:this.extents.max.y=r;break;case 35:this.extents.max.z=r;break;case 345:this.namedUcsId=String(e.value);break;case 346:this.orthographicUcsId=String(e.value);break;case 12:this.insertionPoint.x=r;break;case 22:this.insertionPoint.y=r;break;case 32:this.insertionPoint.z=r;break;case 13:this.ucsOrigin.x=r;break;case 23:this.ucsOrigin.y=r;break;case 33:this.ucsOrigin.z=r;break;case 16:this.ucsXAxis.x=r;break;case 26:this.ucsXAxis.y=r;break;case 36:this.ucsXAxis.z=r;break;case 17:this.ucsYAxis.x=r;break;case 27:this.ucsYAxis.y=r;break;case 37:this.ucsYAxis.z=r;break;case 76:this.orthographicType=r;break;case 146:this.elevation=r;break;case 100:return t.pushBackItem(e),this}}return this}}class Jh{constructor(){this.events={layoutCreated:new lt,layoutRemoved:new lt,layoutRenamed:new lt,layoutSwitched:new lt}}countLayouts(t){return this.getWorkingDatabase(t).objects.layout.numEntries}findLayoutNamed(t,e){return this.getWorkingDatabase(e).objects.layout.getAt(t)}findActiveLayout(){const t=this.getActiveLayout();return t?t.layoutName:"Model"}setCurrentLayoutId(t,e){const n=this.getWorkingDatabase(e),r=n.objects.layout.getIdAt(t);return this.setCurrentLayoutInternal(r,n)}setCurrentLayoutBtrId(t,e){const n=this.getWorkingDatabase(e),r=n.objects.layout.getBtrIdAt(t);return this.setCurrentLayoutInternal(r,n)}setCurrentLayout(t,e){const n=this.getWorkingDatabase(e),r=n.objects.layout.getAt(t);return this.setCurrentLayoutInternal(r,n)}renameLayout(t,e,n){const s=this.getWorkingDatabase(n).objects.layout.getAt(t);return s?(s.layoutName=e,this.events.layoutRenamed.dispatch({layout:s,oldName:t,newName:e}),!0):!1}layoutExists(t,e){return this.getWorkingDatabase(e).objects.layout.has(t)}deleteLayout(t,e){const n=this.getWorkingDatabase(e).objects.layout,r=n.getAt(t);let s=!1;return r&&(s=n.remove(t),s&&this.events.layoutRemoved.dispatch({layout:r})),s}createLayout(t,e){const n=this.getWorkingDatabase(e),r=new Pi;r.layoutName=t,r.tabOrder=n.objects.layout.maxTabOrder;const s=new it;return s.name=`*Paper_Space${r.tabOrder}`,n.tables.blockTable.add(s),n.objects.layout.setAt(t,r),this.events.layoutCreated.dispatch({layout:r}),{layout:r,btr:s}}getActiveLayout(t){const e=this.getWorkingDatabase(t);return e.objects.layout.getBtrIdAt(e.currentSpaceId)}getWorkingDatabase(t){return t||Ah()}setCurrentLayoutInternal(t,e){return t?(this.events.layoutSwitched.dispatch({layout:t}),e.currentSpaceId=t.blockTableRecordId,!0):!1}}let $i;function t0(i){$i=i}function tu(){return ar.instance}const Vr=class Vr{constructor(){this._workingDatabase=null}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||($i||($i=()=>new Jh),this._layoutManager=$i()),this._layoutManager}};Vr.instance=new Vr;let ar=Vr;wh(tu);var Sn=(i=>(i.kForRead="kForRead",i.kForWrite="kForWrite",i))(Sn||{});function e0(i){let t="";for(let e=0;e<i.length;e++){const n=i.charCodeAt(e);t+=n<=32?i[e]:String.fromCharCode(159-n)}return t}function n0(i){const t=i.trimStart();return!(!t||/^\d/.test(t)||/^ACIS/i.test(t)||/^ASM/i.test(t)||/^(body|point|plane|cone|cylinder|sphere|torus|lump|shell|face|edge|wire|transform)\b/i.test(t)||/\b(body|point|straight-curve|ellipse-curve)\s+\$/.test(t))}function i0(i){return!i||!n0(i)?i:e0(i)}function r0(i){return i.length===0?"":i.map(t=>i0(t)).join(`
|
|
6
|
+
`)}function kc(i,t,e){if(t===1){i.push(e);return}if(i.length===0){i.push(e);return}i[i.length-1]+=e}const s0=["ACIS BinaryFile","ASM BinaryFile4"],eu=new Set(["End-of-ACIS-data","End-of-ASM-data","End-of-ACIS-History-data"]),U={Int:4,Double:6,Str:7,BoolTrue:10,BoolFalse:11,Pointer:12,EntityType:13,EntityTypeEx:14,SubtypeStart:15,SubtypeEnd:16,RecordEnd:17,LiteralStr:18,LocationVec:19,DirectionVec:20,Enum:21,Unknown0x17:23};class a0{constructor(t){this.data=t,this.index=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}get hasData(){return this.index<this.data.length}require(t){if(this.index+t>this.data.length)throw new RangeError(`SAB: read past end of data (need ${String(t)} at ${String(this.index)})`)}readByte(){return this.require(1),this.data[this.index++]??0}readInt(){this.require(4);const t=this.view.getInt32(this.index,!0);return this.index+=4,t}readFloat(){this.require(8);const t=this.view.getFloat64(this.index,!0);return this.index+=8,t}readStr(t){this.require(t);const e=o0.decode(this.data.subarray(this.index,this.index+t));return this.index+=t,e}}const o0=new TextDecoder("latin1");function c0(i,t){let e="";for(const g of s0)if(u0(t,g)){e=g,i.index=g.length;break}if(e==="")throw new RangeError("SAB: not a SAB stream (missing signature)");const n=i.readInt(),r=i.readInt(),s=i.readInt(),a=i.readInt(),o=Ns(i),c=Ns(i),l=Ns(i),h=Rs(i),u=Rs(i),d=Rs(i);return{signature:e,version:n,numRecords:r,numEntities:s,flags:a,productId:o,acisVersion:c,creationDate:l,unitsInMm:h,resTol:u,norTol:d}}function Ns(i){if(i.readByte()!==U.Str)throw new RangeError("SAB: expected string tag (0x07)");return i.readStr(i.readByte())}function Rs(i){if(i.readByte()!==U.Double)throw new RangeError("SAB: expected double tag (0x06)");return i.readFloat()}function l0(i){const t=[],e=[];let n="",r=0;for(;;){if(!i.hasData){if(eu.has(n))return{type:n,tokens:t};throw new RangeError("SAB: premature end of data")}const s=i.readByte();switch(s){case U.Int:t.push({tag:s,value:i.readInt()});break;case U.Double:t.push({tag:s,value:i.readFloat()});break;case U.Str:t.push({tag:s,value:i.readStr(i.readByte())});break;case U.Pointer:t.push({tag:s,value:i.readInt()});break;case U.BoolTrue:t.push({tag:s,value:!0});break;case U.BoolFalse:t.push({tag:s,value:!1});break;case U.LiteralStr:t.push({tag:s,value:i.readStr(i.readInt())});break;case U.EntityTypeEx:e.push(i.readStr(i.readByte()));break;case U.EntityType:{e.push(i.readStr(i.readByte()));const a=e.join("-");e.length=0,n===""&&(n=a),t.push({tag:s,value:a});break}case U.LocationVec:t.push({tag:s,value:Sc(i)});break;case U.DirectionVec:t.push({tag:s,value:Sc(i)});break;case U.Enum:t.push({tag:s,value:i.readInt()});break;case U.Unknown0x17:t.push({tag:s,value:i.readFloat()});break;case U.SubtypeStart:r++,t.push({tag:s,value:r});break;case U.SubtypeEnd:t.push({tag:s,value:r}),r--;break;case U.RecordEnd:return{type:n,tokens:t};default:throw new RangeError(`SAB: unknown tag 0x${s.toString(16)} (${String(s)}) in record '${n}'`)}}}function Sc(i){return[i.readFloat(),i.readFloat(),i.readFloat()]}function h0(i){const t=new a0(i),e=c0(t,i),n=[];for(;t.hasData;){const r=l0(t);if(n.push(r),eu.has(r.type))break}return{header:e,records:n}}function u0(i,t){if(i.length<t.length)return!1;for(let e=0;e<t.length;e++)if(i[e]!==t.charCodeAt(e))return!1;return!0}const d0=new Set(["End-of-ACIS-data","End-of-ASM-data","End-of-ACIS-History-data"]);function g0(i){const e=i.records.map((a,o)=>({index:o,type:a.type,record:a,refs:[]}));for(const a of e)for(const o of a.record.tokens){if(o.tag!==U.Pointer)continue;const c=o.value;a.refs.push(c>=0&&c<e.length?e[c]:null)}const n=e,r=new Map,s=new Map;for(const a of n){if(d0.has(a.type))continue;let o=r.get(a.type);o===void 0&&(o=[],r.set(a.type,o)),o.push(a),s.set(a.type,(s.get(a.type)??0)+1)}return{header:i.header,nodes:n,bodies:r.get("body")??[],typeCounts:s,nodesOfType:a=>r.get(a)??[],pointLocations(){const a=[];for(const o of r.get("point")??[]){const c=o.record.tokens.find(l=>l.tag===U.LocationVec);c!==void 0&&a.push(c.value)}return a}}}const f0=["ACIS BinaryFile","ASM BinaryFile","ASM BinaryFile4"];function p0(i,t){if(t.length===0||i.length<t.length)return-1;const e=t.charCodeAt(0);for(let n=0;n<=i.length-t.length;n++){if(i[n]!==e)continue;let r=!0;for(let s=1;s<t.length;s++)if(i[n+s]!==t.charCodeAt(s)){r=!1;break}if(r)return n}return-1}function m0(i){for(const t of f0){const e=p0(i,t);if(e>=0)return e}return-1}function y0(i){if(i.length===0)return null;const t=m0(i);if(t<0)return null;try{return g0(h0(i.subarray(t)))}catch{return null}}const or={xAxis:[1,0,0],yAxis:[0,1,0],zAxis:[0,0,1],translation:[0,0,0],scale:1},b0=1e-12,_0=new Set([U.LocationVec,U.DirectionVec]),qi=(i,t)=>Math.abs(i-t)<=b0,Di=(i,t)=>qi(i[0],t[0])&&qi(i[1],t[1])&&qi(i[2],t[2]);function Ka(){return or}function nu(i,t){return qi(i.scale,t.scale)&&Di(i.xAxis,t.xAxis)&&Di(i.yAxis,t.yAxis)&&Di(i.zAxis,t.zAxis)&&Di(i.translation,t.translation)}function x0(i){const t=[];let e;for(const n of i.record.tokens){if(_0.has(n.tag)){t.push(n.value);continue}n.tag===U.Double&&t.length>=4&&e===void 0&&(e=n.value)}return t.length<4?null:{xAxis:t[0],yAxis:t[1],zAxis:t[2],translation:t[3],scale:e??1}}function w0(i){const t=i.refs.find(e=>(e==null?void 0:e.type)==="transform");return t==null?or:x0(t)??or}function Gn(i){return nu(i,or)}function ce(i,t){const e=t.scale,[n,r,s]=i,{xAxis:a,yAxis:o,zAxis:c,translation:l}=t;return[e*(a[0]*n+o[0]*r+c[0]*s)+l[0],e*(a[1]*n+o[1]*r+c[1]*s)+l[1],e*(a[2]*n+o[2]*r+c[2]*s)+l[2]]}function ne(i,t){const e=t.scale,[n,r,s]=i,{xAxis:a,yAxis:o,zAxis:c}=t;return[e*(a[0]*n+o[0]*r+c[0]*s),e*(a[1]*n+o[1]*r+c[1]*s),e*(a[2]*n+o[2]*r+c[2]*s)]}function iu(i){const t=new Map,e=(n,r,s)=>{if(!(n==null||s.has(n.index))&&!n.type.includes("attrib")){s.add(n.index),t.has(n.index)||t.set(n.index,r);for(const a of n.refs)e(a,r,s)}};for(const n of i.bodies)e(n,w0(n),new Set);return t}function v0(i,t){if(Gn(t)||i.length<3)return i;const e=new Float32Array(i.length);for(let n=0;n+2<i.length;n+=3){const[r,s,a]=ce([i[n],i[n+1],i[n+2]],t);e[n]=r,e[n+1]=s,e[n+2]=a}return e}class ru{constructor(t){this.tokens=t,this.i=0}next(...t){for(;this.i<this.tokens.length;){const e=this.tokens[this.i++];if(e!==void 0&&t.includes(e.tag))return e}}nextVec(){var t;return(t=this.next(U.LocationVec,U.DirectionVec))==null?void 0:t.value}nextDouble(){var t;return(t=this.next(U.Double))==null?void 0:t.value}}const cn=(i,t)=>i.refs.find(e=>e!==null&&(e.type===t||e.type.endsWith(t)))??null,su=(i,t)=>i.refs.filter(e=>e!==null&&e.type===t);function Bs(i){if(i===null)return null;const t=cn(i,"point");if(t===null)return null;const e=t.record.tokens.find(n=>n.tag===U.LocationVec);return e?e.value:null}function A0(i){const t=new ru(i.record.tokens);if(i.type==="straight-curve"){const e=t.nextVec(),n=t.nextVec();if(e&&n)return{kind:"straight",origin:e,direction:n}}else if(i.type==="ellipse-curve"){const e=t.nextVec(),n=t.nextVec(),r=t.nextVec(),s=t.nextDouble();if(e&&n&&r&&s!==void 0)return{kind:"ellipse",center:e,normal:n,majorAxis:r,ratio:s}}else if(i.type==="intcurve-curve")return{kind:"intcurve",controlPoints:P0(i.record.tokens)};return{kind:"unknown"}}function P0(i){var a,o,c;const t=i.findIndex(l=>l.tag===U.EntityType&&(l.value==="nubs"||l.value==="nurbs"));if(t<0)return[];let e=t+1,n=-1;for(;e<i.length;e++){const l=i[e];if(l===void 0||l.tag===U.Double)break;if(l.tag===U.Int&&(n=l.value),l.tag===U.EntityType||l.tag===U.SubtypeEnd)return[]}if(n<0)return[];for(let l=0;l<n;l++){if(((a=i[e])==null?void 0:a.tag)!==U.Double)return[];e+=1,((o=i[e])==null?void 0:o.tag)===U.Int&&(e+=1)}const r=[];for(;((c=i[e])==null?void 0:c.tag)===U.Double;){const l=i[e];if(l===void 0)break;r.push(l.value),e+=1}const s=[];for(let l=0;l+3<=r.length;l+=3){const h=r[l],u=r[l+1],d=r[l+2];if(h===void 0||u===void 0||d===void 0)break;s.push([h,u,d])}return s}function au(i){const t=new ru(i.record.tokens);if(i.type==="plane-surface"){const e=t.nextVec(),n=t.nextVec(),r=t.nextVec();if(e&&n)return r?{kind:"plane",origin:e,normal:n,uDir:r}:{kind:"plane",origin:e,normal:n}}else if(i.type==="cone-surface"){const e=t.nextVec(),n=t.nextVec(),r=t.nextVec(),s=t.nextDouble(),a=t.nextDouble(),o=t.nextDouble();if(e&&n&&r&&s!==void 0&&a!==void 0&&o!==void 0)return{kind:"cone",origin:e,axis:n,majorAxis:r,ratio:s,sineAngle:a,cosineAngle:o}}else if(i.type==="torus-surface"){const e=t.nextVec(),n=t.nextVec(),r=t.nextDouble(),s=t.nextDouble();if(e&&n&&r!==void 0&&s!==void 0)return{kind:"torus",center:e,axis:n,majorRadius:r,minorRadius:s}}else if(i.type==="sphere-surface"){const e=t.nextVec(),n=t.nextDouble(),r=t.nextVec(),s=t.nextVec();if(e&&n!==void 0&&r&&s)return{kind:"sphere",center:e,radius:n,uDir:r,poleAxis:s}}return{kind:"unknown"}}function k0(i){return au(i)}const S0={"plane-surface":"plane","cone-surface":"cone","torus-surface":"torus","sphere-surface":"sphere","spline-surface":"spline"},I0={"straight-curve":"straight","ellipse-curve":"ellipse","intcurve-curve":"intcurve"};function E0(i){const t=cn(i,"coedge");if(t===null)return 0;const e=new Set;let n=t;for(;n!==null&&!e.has(n.index);)e.add(n.index),n=su(n,"coedge")[0]??null;return e.size}function L0(i,t){return i.kind==="straight"?{kind:"straight",origin:ce(i.origin,t),direction:ne(i.direction,t)}:i.kind==="ellipse"?{kind:"ellipse",center:ce(i.center,t),normal:ne(i.normal,t),majorAxis:ne(i.majorAxis,t),ratio:i.ratio}:i.kind==="intcurve"?{kind:"intcurve",controlPoints:i.controlPoints.map(e=>ce(e,t))}:i}function C0(i,t){return i.kind==="plane"?{kind:"plane",origin:ce(i.origin,t),normal:ne(i.normal,t),...i.uDir?{uDir:ne(i.uDir,t)}:{}}:i.kind==="cone"?{kind:"cone",origin:ce(i.origin,t),axis:ne(i.axis,t),majorAxis:ne(i.majorAxis,t),ratio:i.ratio,sineAngle:i.sineAngle,cosineAngle:i.cosineAngle}:i.kind==="torus"?{kind:"torus",center:ce(i.center,t),axis:ne(i.axis,t),majorRadius:i.majorRadius*t.scale,minorRadius:i.minorRadius*t.scale}:i.kind==="sphere"?{kind:"sphere",center:ce(i.center,t),radius:i.radius*t.scale,uDir:ne(i.uDir,t),poleAxis:ne(i.poleAxis,t)}:i}function T0(i){const t=[],e=iu(i),n=Ka(),r=y=>e.get(y)??n,s=(y,_)=>{if(y===null)return null;const v=r(_);return Gn(v)?y:ce(y,v)};let a=1/0,o=1/0,c=1/0,l=-1/0,h=-1/0,u=-1/0;const d=y=>{y[0]<a&&(a=y[0]),y[0]>l&&(l=y[0]),y[1]<o&&(o=y[1]),y[1]>h&&(h=y[1]),y[2]<c&&(c=y[2]),y[2]>u&&(u=y[2])},g=i.nodesOfType("vertex").map(y=>{const _=s(Bs(y),y.index);return _===null?t.push(`vertex#${String(y.index)}: no resolvable point`):d(_),{nodeIndex:y.index,point:_}}),f=i.nodesOfType("edge").map(y=>{const _=su(y,"vertex"),v=s(Bs(_[0]??null),y.index),w=s(Bs(_[1]??null),y.index),A=cn(y,"-curve"),E=A?I0[A.type]??"unknown":"unknown";let I=A?A0(A):void 0;const M=r(y.index);return I!==void 0&&I.kind!=="unknown"&&!Gn(M)&&(I=L0(I,M)),v!==null&&w!==null&&v[0]===w[0]&&v[1]===w[1]&&v[2]===w[2]&&t.push(`edge#${String(y.index)}: degenerate (coincident endpoints)`),I===void 0||I.kind==="unknown"?{nodeIndex:y.index,start:v,end:w,curveType:E}:{nodeIndex:y.index,start:v,end:w,curveType:E,curve:I}}),p=i.nodesOfType("face").map(y=>{const _=cn(y,"-surface"),v=_?S0[_.type]??"unknown":"unknown";let w=_?au(_):void 0;const A=r(y.index);w!==void 0&&w.kind!=="unknown"&&!Gn(A)&&(w=C0(w,A));const E=[],I=new Set;let M=cn(y,"loop");for(;M!==null&&!I.has(M.index);)I.add(M.index),E.push({nodeIndex:M.index,coedgeCount:E0(M)}),M=cn(M,"loop");return _===null&&t.push(`face#${String(y.index)}: no surface`),w===void 0||w.kind==="unknown"?{nodeIndex:y.index,surfaceType:v,loops:E}:{nodeIndex:y.index,surfaceType:v,surface:w,loops:E}});return{vertices:g,edges:f,faces:p,bbox:a===1/0?null:{min:[a,o,c],max:[l,h,u]},diagnostics:t}}const je=(i,t)=>[i[0]+t[0],i[1]+t[1],i[2]+t[2]],Le=(i,t)=>[i[0]*t,i[1]*t,i[2]*t],M0=i=>Math.hypot(i[0],i[1],i[2]),Ki=(i,t)=>[i[1]*t[2]-i[2]*t[1],i[2]*t[0]-i[0]*t[2],i[0]*t[1]-i[1]*t[0]],rn=i=>{const t=Math.hypot(i[0],i[1],i[2]);return t>0?[i[0]/t,i[1]/t,i[2]/t]:[0,0,0]};function O0(i){const t=[];for(const r of i.record.tokens)if(r.tag===U.Double&&(t.push(r.value),t.length===2))break;const e=t[0],n=t[1];return e===void 0||n===void 0?null:[e,n]}function ou(i,t,e,n){const r=Le(Ki(rn(i.normal),i.majorAxis),i.ratio),s=Math.max(1,n),a=[];for(let o=0;o<=s;o++){const c=t+(e-t)*o/s;a.push(je(i.center,je(Le(i.majorAxis,Math.cos(c)),Le(r,Math.sin(c)))))}return a}function N0(i,t=16){const e=rn(i.poleAxis);let n=rn(i.uDir),r=Ki(e,n);M0(r)<1e-9?(n=Math.abs(e[0])<.9?[1,0,0]:[0,1,0],r=rn(Ki(e,n))):r=rn(r),n=rn(Ki(r,e));const s=[],a=(o,c)=>{const l=[],h=Math.max(8,t);for(let u=0;u<=h;u++){const d=Math.PI*2*u/h;l.push(je(i.center,je(Le(o,i.radius*Math.cos(d)),Le(c,i.radius*Math.sin(d)))))}s.push(l)};a(n,r),a(n,e),a(r,e);for(const o of[-.5,.5]){const c=Le(e,i.radius*o),l=je(i.center,c),h=i.radius*Math.sqrt(Math.max(0,1-o*o));if(h>1e-6){const u=[],d=Math.max(8,t);for(let g=0;g<=d;g++){const f=Math.PI*2*g/d;u.push(je(l,je(Le(n,h*Math.cos(f)),Le(r,h*Math.sin(f)))))}s.push(u)}}return s}const R0=16,B0=(i,t)=>i.refs.find(e=>e!==null&&(e.type===t||e.type.endsWith(t)))??null;function cu(i,t,e){i.push(t[0],t[1],t[2],e[0],e[1],e[2])}function cr(i,t){for(let e=0;e+1<t.length;e++){const n=t[e],r=t[e+1];n&&r&&cu(i,n,r)}}function D0(i){const t=[],e=iu(i),n=Ka();for(const r of i.nodesOfType("face")){const s=B0(r,"-surface");if((s==null?void 0:s.type)!=="sphere-surface")continue;const a=k0(s);if(a.kind!=="sphere")continue;const o=e.get(r.index)??n;for(const c of N0(a)){if(Gn(o)){cr(t,c);continue}cr(t,c.map(l=>ce(l,o)))}}return new Float32Array(t)}function F0(i,t){var n,r;const e=[];for(const s of i.edges){const a=t==null?void 0:t.nodes[s.nodeIndex];if(((n=s.curve)==null?void 0:n.kind)==="ellipse"){const o=a!==void 0?O0(a):null,c=(o==null?void 0:o[0])??0,l=(o==null?void 0:o[1])??Math.PI*2;cr(e,ou(s.curve,c,l,R0));continue}if(((r=s.curve)==null?void 0:r.kind)==="intcurve"&&s.curve.controlPoints.length>0){cr(e,s.curve.controlPoints);continue}s.start&&s.end&&cu(e,s.start,s.end)}return new Float32Array(e)}function X0(i){const t=y0(i);if(t===null)return null;const e=T0(t),n=F0(e,t);if(n.length>0)return n;const r=D0(t);return r.length>0?r:null}const Y0=16;function Za(i,t=!0){const e=i.split(/\s+/),n=[];let r=!t;for(const s of e){if(!r&&/^-?\d+$/.test(s)){r=!0;continue}if(s.startsWith("$")||s==="I"||s==="F"||s==="#")continue;const a=Number.parseFloat(s);Number.isFinite(a)&&n.push(a)}return n}function Ic(i,t,e){i.push(t[0],t[1],t[2],e[0],e[1],e[2])}function lu(i){return i.split("#").map(t=>t.trim()).filter(t=>t.length>0)}function z0(i){const t=[];return i.forEach((e,n)=>{const r=/^-(\d+)\b/.exec(e),s=r?Number(r[1]):n;t[s]=e}),t}function Ec(i){if(!/(?:^|\s)transform\b/.test(i))return null;const t=Za(i);return t.length<13?null:{xAxis:[t[0],t[1],t[2]],yAxis:[t[3],t[4],t[5]],zAxis:[t[6],t[7],t[8]],translation:[t[9],t[10],t[11]],scale:t[12]}}function V0(i){const t=Ka(),e=z0(lu(i)),n=[];for(const s of e){if(s==null||!/(?:^|\s)body\b/.test(s))continue;const a=[...s.matchAll(/\$(-?\d+)/g)].map(o=>Number(o[1]));for(const o of a){if(o<0)continue;const c=e[o];if(c==null)continue;const l=Ec(c);if(l!=null){n.push(l);break}}}if(n.length===0){const s=[];for(const a of e){if(a==null)continue;const o=Ec(a);o!=null&&s.push(o)}return s.length===1?s[0]:t}const r=n[0];for(let s=1;s<n.length;s++)if(!nu(n[s],r))return t;return r}function j0(i){if(!i.includes("straight-curve"))return null;const t=Za(i);if(t.length<6)return null;const e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5];return[[e,n,r],[e+s,n+a,r+o]]}function G0(i){if(!i.includes("ellipse-curve"))return null;const t=Za(i);return t.length<10?null:{kind:"ellipse",center:[t[0],t[1],t[2]],normal:[t[3],t[4],t[5]],majorAxis:[t[6],t[7],t[8]],ratio:t[9]}}function U0(i){const t=[];if(!i||i.trim().length===0)return new Float32Array(0);for(const e of lu(i)){const n=j0(e);if(n!==null){Ic(t,n[0],n[1]);continue}const r=G0(e);if(r!==null){const s=ou(r,0,Math.PI*2,Y0);for(let a=1;a<s.length;a++)Ic(t,s[a-1],s[a])}}return t.length===0?new Float32Array(0):v0(new Float32Array(t),V0(i))}const H0=/\bpoint\s+(?:\$-?\d+\s+){1,4}([-\d.eE+]+)\s+([-\d.eE+]+)\s+([-\d.eE+]+)/g;function W0(i){return i.split("#").map(t=>t.trim()).filter(t=>t.length>0)}function $0(i,t=1){const e=i.split(/\s+/),n=[];for(let r=t;r<e.length;r++){const s=e[r];if(s.startsWith("$")||s==="I"||s==="F")continue;const a=Number.parseFloat(s);Number.isFinite(a)&&n.push(a)}return n}function q0(i){const t=[];for(const e of i.matchAll(H0)){const n=Number.parseFloat(e[1]),r=Number.parseFloat(e[2]),s=Number.parseFloat(e[3]);Number.isFinite(n)&&Number.isFinite(r)&&Number.isFinite(s)&&t.push(new b(n,r,s))}if(t.length>0)return t;for(const e of W0(i)){if(!e.startsWith("point "))continue;const n=$0(e);if(n.length>=3){const r=n[n.length-3],s=n[n.length-2],a=n[n.length-1];t.push(new b(r,s,a))}}return t}function K0(i){const t=[];for(let e=0;e<i.length;e+=3){const n=i[e],r=i[e+1],s=i[e+2];t.push(new b(n,r,s))}return t}function Z0(i,t){return typeof i=="string"?{satText:i,version:t}:{sabBytes:i.sabBytes,satText:i.satText??i.acisData??"",version:i.version??t}}const go=class go extends q{constructor(t,e){super(),this._points=[],this._wireframe=new Float32Array(0);const n=Z0(t,e);this._acisData=n.satText,this._sabBytes=n.sabBytes,this._version=n.version,this.rebuildGeometryCaches()}get dxfTypeName(){return"3DSOLID"}get acisData(){return this._acisData}get version(){return this._version}get historyObjectSoftId(){return this._historyObjectSoftId}set historyObjectSoftId(t){this._historyObjectSoftId=t}get guid(){return this._guid}set guid(t){this._guid=t}get satCache(){return this._satCache}set satCache(t){this._satCache=t}setAcisData(t,e){this._acisData=t??"",e!=null&&(this._version=e),this.rebuildGeometryCaches()}setSabBytes(t){this._sabBytes=t&&t.length>0?t:void 0,this.rebuildGeometryCaches()}get sabBytes(){return this._sabBytes}rebuildGeometryCaches(){let t=new Float32Array(0);this._sabBytes&&this._sabBytes.length>0&&(t=X0(this._sabBytes)??new Float32Array(0)),t.length===0&&this._acisData&&(t=U0(this._acisData)),this._wireframe=t,this._points=t.length>0?K0(t):q0(this._acisData)}get hasRenderableGeometry(){return this._wireframe.length>0||this._points.length>0}get geometricExtents(){return this._points.length===0?new z(new b(0,0,0),new b(0,0,0)):new z().setFromPoints(this._points)}subGetIntersectCurves(){const t=[];for(let e=0;e+5<this._wireframe.length;e+=6)t.push({kind:"line",line:new Tt({x:this._wireframe[e],y:this._wireframe[e+1],z:this._wireframe[e+2]},{x:this._wireframe[e+3],y:this._wireframe[e+4],z:this._wireframe[e+5]}),extent:"bounded",extendable:!1});return t}transformBy(t){if(this._points.forEach(e=>e.applyMatrix4(t)),this._wireframe.length>0){const e=new Float32Array(this._wireframe.length);for(let n=0;n<this._wireframe.length;n+=3){const r=new b(this._wireframe[n],this._wireframe[n+1],this._wireframe[n+2]);r.applyMatrix4(t),e[n]=r.x,e[n+1]=r.y,e[n+2]=r.z}this._wireframe=e}return this}subWorldDraw(t){if(this._wireframe.length>=6){const c=this._wireframe.length/3,l=new Uint16Array(c);for(let h=0;h<c;h++)l[h]=h;return t.lineSegments(this._wireframe,3,l)}if(this._points.length===0)return;const e=this.geometricExtents,n=e.min,r=e.max,s=[new b(n.x,n.y,n.z),new b(r.x,n.y,n.z),new b(r.x,r.y,n.z),new b(n.x,r.y,n.z),new b(n.x,n.y,r.z),new b(r.x,n.y,r.z),new b(r.x,r.y,r.z),new b(n.x,r.y,r.z)],a=new Float32Array(s.length*3);s.forEach((c,l)=>{a[l*3]=c.x,a[l*3+1]=c.y,a[l*3+2]=c.z});const o=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);return t.lineSegments(a,3,o)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb3dSolid"),this._version!=null&&t.writeInt16(70,this._version),this._guid!=null&&t.writeString(2,this._guid),this._satCache!=null&&t.writeInt16(290,this._satCache?1:0);const e=255,n=this._acisData.split(`
|
|
7
|
+
`);for(let r=0;r<n.length;r++){const s=r===n.length-1;let a=n[r];for(;a.length>e;)t.writeString(3,a.slice(0,e)),a=a.slice(e);t.writeString(s?1:3,a)}return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbModelerGeometry");const e=[];let n=this._version;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.peekItem();if(!r)break;const s=Number(r.code);if(s===100){if(t.readItem(),String(r.value)==="AcDb3dSolid")continue;t.pushBackItem(r);break}t.readItem();const a=Number(r.value);switch(s){case 1:kc(e,1,String(r.value));break;case 3:kc(e,3,String(r.value));break;case 70:n=a;break;case 350:this._historyObjectSoftId=String(r.value);break;case 2:this._guid=String(r.value);break;case 290:this._satCache=a!==0;break}}return this.setAcisData(r0(e),n),this}};go.typeName="3dSolid";let ni=go;var P=(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.Intersection=6]="Intersection",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))(P||{});function Q0(i){let t=0;for(const e of i)t|=1<<e-1;return t}function J0(i){const t=[];for(const e of Object.values(P)){if(typeof e!="number")continue;const n=1<<e-1;(i&n)!==0&&t.push(e)}return t}function tm(i,t){return i^1<<t-1}function em(i,t){return(i&1<<t-1)!==0}const fo=class fo extends q{getOffsetSideAtPoint(t){return 1}};fo.typeName="Curve";let At=fo;function ft(i,t){for(const e of i)Number.isInteger(e)&&e>=0&&t(e)}function de(i,t,e){ft(i,n=>{n===0&&e.add(t)})}function Un(i,t,e){const n=i[t];n&&(n.x+=e.x,n.y+=e.y)}function On(i,t,e){ft(i,n=>{const r=e[n];r&&r.add(t)})}function Lc(i,t){const e=i.x-t.x,n=i.y-t.y,r=(i.z||0)-(t.z||0);return e*e+n*n+r*r}function $t(i,t){if(t.length===0)return;let e=new b(t[0].x,t[0].y,t[0].z||0),n=Lc(i,e);for(let r=1;r<t.length;r++){const s=t[r],a=new b(s.x,s.y,s.z||0),o=Lc(i,a);o<n&&(e=a,n=o)}return e}function Nn(i,t,e,n,r){const s=new b(i.x,i.y,i.z||0),a=new b(t.x,t.y,t.z||0),o=new Tt(s,a);switch(e){case P.EndPoint:r.push(s,a);break;case P.MidPoint:r.push(o.midPoint);break;case P.Nearest:r.push(o.nearestPoint(n));break;case P.Perpendicular:r.push(o.perpPoint(n));break}}function ii(i,t,e,n,r,s,a){if(e){const o=new rt(i,t,e);switch(r){case P.EndPoint:a.push(new b(o.startPoint.x,o.startPoint.y,n),new b(o.endPoint.x,o.endPoint.y,n));break;case P.MidPoint:a.push(new b(o.midPoint.x,o.midPoint.y,n));break;case P.Nearest:{const c=o.nearestPoint({x:s.x,y:s.y});a.push(new b(c.x,c.y,n));break}case P.Perpendicular:{o.perpendicularPoints({x:s.x,y:s.y}).forEach(l=>a.push(new b(l.x,l.y,n)));break}case P.Tangent:{o.tangentPoints({x:s.x,y:s.y}).forEach(l=>a.push(new b(l.x,l.y,n)));break}}return}Nn(new b(i.x,i.y,n),new b(t.x,t.y,n),r,s,a)}function us(i,t,e,n,r){if(i.length!==0)switch(e){case P.EndPoint:i.forEach(s=>r.push(new b(s.x,s.y,s.z||0)));break;case P.MidPoint:case P.Nearest:case P.Perpendicular:{const s=i.length,a=[];for(let o=0;o<s;o++){const c=[];Nn(i[o],i[(o+1)%i.length],e,n,c),a.push(...c)}if(e===P.MidPoint)r.push(...a);else{const o=$t(n,a);o&&r.push(o)}break}}}const jr=class jr extends At{constructor(t,e,n,r,s=x.Z_AXIS){super(),this._thickness=0;const a=Fe(s);this._geo=new St(t,e,n,r,s,a)}get dxfTypeName(){return"ARC"}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 normal(){return this._geo.normal}set normal(t){this.setNormalAndRefVec(t)}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get startPoint(){return this._geo.startPoint}get endPoint(){return this._geo.endPoint}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"circArc",arc:this._geo.clone(),extendable:!this.closed}]}get closed(){return this._geo.closed}get area(){return this._geo.area}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"arcLength",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"totalAngle",type:"float",editable:!1,accessor:{get:()=>C.radToDeg(Math.abs(this._geo.deltaAngle))}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.center),t.push(this.startPoint),t.push(this.endPoint),t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGripAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){const s=this.startPoint,a=this.endPoint;switch(t){case P.EndPoint:r.push(s),r.push(a);break;case P.MidPoint:r.push(this.midPoint);break;case P.Center:case P.Centroid:r.push(this._geo.center);break;case P.Quadrant:{const o=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const c of o)C.isBetweenAngle(c,this.startAngle,this.endAngle)&&r.push(this._geo.getPointAtAngle(c));break}case P.Nearest:{const o=this._geo.nearestPoint(e);r.push(o)}break;case P.Perpendicular:{const o=this._geo.perpendicularPoints(e),c=$t(e,o);c&&r.push(c);break}case P.Tangent:{const o=this._geo.tangentPoints(e);r.push(...o);break}}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t);const e=Rt(this.center,this.normal);return t.writeSubclassMarker("AcDbCircle"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,e),t.writeDouble(40,this.radius),t.writeVector3d(210,this.normal),t.writeSubclassMarker("AcDbArc"),t.writeAngle(50,be(this.center,this.startPoint,this.normal)),t.writeAngle(51,be(this.center,this.endPoint,this.normal)),this}dxfInFields(t){var d;super.dxfInFields(t);let e=0,n=0,r=0,s=this.radius,a=C.radToDeg(this.startAngle),o=C.radToDeg(this.endAngle),c=this.normal.x,l=this.normal.y,h=this.normal.z;const u=g=>{for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const f=t.readItem();if(!f)break;const p=Number(f.code);if(g&&p===100)return t.pushBackItem(f),!0;const m=Number(f.value);switch(p){case 10:e=m;break;case 20:n=m;break;case 30:r=m;break;case 40:s=m;break;case 39:this.thickness=m;break;case 50:a=m;break;case 51:o=m;break;case 210:c=m;break;case 220:l=m;break;case 230:h=m;break}}return!1};return t.atSubclassData("AcDbCircle")&&u(!0),(t.atSubclassData("AcDbArc")||!t.peekItem()||Number((d=t.peekItem())==null?void 0:d.code)!==100)&&u(!1),this.applyDxfInGeometry(e,n,r,s,a,o,c,l,h),this}applyDxfInGeometry(t,e,n,r,s,a,o,c,l){const h=new x(o,c,l);this.setNormalAndRefVec(h),this.center=_t({x:t,y:e,z:n},this.normal),this.radius=r,this.startAngle=C.degToRad(s),this.endAngle=C.degToRad(a)}setNormalAndRefVec(t){this._geo.normal=t,this._geo.refVec=Fe(this._geo.normal)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,n=this.radius;return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)>=n?1:-1}moveGripAt(t,e){switch(t){case 0:this.transformBy(D.makeTranslation(e));break;case 1:{const n=this._geo.startPoint;this._geo.startAngle=be(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal);break}case 2:{const n=this._geo.endPoint;this._geo.endAngle=be(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal);break}}}createOffsetCurve(t){const e=this._geo.offset(t);return e?new jr(e.center,e.radius,e.startAngle,e.endAngle,e.normal):null}};jr.typeName="Arc";let lr=jr;const nm=1,im=/\\[fF][^\\|{}]*(?:\|[^;\\|{}]*)*;./i,rm=/\\[fF][^\\|{}]*(?:\|[^;\\|{}]*)*;./gi;function Qa(i){return i.replace(/\\[PpNn]/g,`
|
|
8
|
+
`).replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,"")}function sm(i){return i.replace(/\\[PpNn]/g,`
|
|
9
|
+
`).replace(rm,"").replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,"").trim()}function am(i,t,e=1){const n=i.trim();if(!n||t<=0)return 0;const r=sm(n),s=im.test(n);return r?Math.max(t,ki(r,t,e)):s?t:0}function ki(i,t,e=1){if(!i||t<=0)return 0;const n=Qa(i),r=Math.max(...n.split(/\r\n|\r|\n/g).map(s=>s.length),0);return r===0?0:Math.max(t,r*t*nm*e)}function hu(i){const t=Qa(i);return Math.max(t.split(/\r\n|\r|\n/g).length,1)}function uu(i,t,e){if(t<=0||i<=0)return 0;if(i===1)return t;const n=Math.max(e,0)*(5/3);return t+(i-1)*t*n}function Ja(i,t,e){switch(e){case exports.AcGiMTextAttachmentPoint.TopCenter:return{minX:-i/2,minY:-t,maxX:i/2,maxY:0};case exports.AcGiMTextAttachmentPoint.TopRight:return{minX:-i,minY:-t,maxX:0,maxY:0};case exports.AcGiMTextAttachmentPoint.MiddleLeft:return{minX:0,minY:-t/2,maxX:i,maxY:t/2};case exports.AcGiMTextAttachmentPoint.MiddleCenter:return{minX:-i/2,minY:-t/2,maxX:i/2,maxY:t/2};case exports.AcGiMTextAttachmentPoint.MiddleRight:return{minX:-i,minY:-t/2,maxX:0,maxY:t/2};case exports.AcGiMTextAttachmentPoint.BottomLeft:case exports.AcGiMTextAttachmentPoint.BaselineLeft:return{minX:0,minY:0,maxX:i,maxY:t};case exports.AcGiMTextAttachmentPoint.BottomCenter:case exports.AcGiMTextAttachmentPoint.BaselineCenter:return{minX:-i/2,minY:0,maxX:i/2,maxY:t};case exports.AcGiMTextAttachmentPoint.BottomRight:case exports.AcGiMTextAttachmentPoint.BaselineRight:return{minX:-i,minY:0,maxX:0,maxY:t};case exports.AcGiMTextAttachmentPoint.TopLeft:default:return{minX:0,minY:-t,maxX:i,maxY:0}}}function to(i,t){let e;t&&t.lengthSq()>0?e=t.clone().normalize():e=new x(Math.cos(i),Math.sin(i),0);const n=new x(-e.y,e.x,e.z);return n.lengthSq()===0?n.set(0,1,0):n.normalize(),{xAxis:e,yAxis:n}}function du(i,t,e,n,r,s=0,a){if(e<=0&&n<=0)return i.expandByPoint(t),i;const o=Ja(e,n,r),{xAxis:c,yAxis:l}=to(s,a?new x(a.x,a.y,a.z||0):void 0),h=[[o.minX,o.minY],[o.maxX,o.minY],[o.maxX,o.maxY],[o.minX,o.maxY]];for(const[u,d]of h)i.expandByPoint(new b(t.x+c.x*u+l.x*d,t.y+c.y*u+l.y*d,t.z+c.z*u+l.z*d));return i}function om(i){const t=i.extentsWidth>0?i.extentsWidth:i.width>0?i.width:ki(i.contents,i.height),e=uu(hu(i.contents),i.height,i.lineSpacingFactor);return{width:t,height:e,attachment:i.attachmentPoint,rotation:i.rotation,direction:i.direction.lengthSq()>0?i.direction.clone():void 0,location:new b(i.location.x,i.location.y,i.location.z??0)}}function cm(i,t){const{xAxis:e,yAxis:n}=to(t.rotation,t.direction),r=i.x-t.location.x,s=i.y-t.location.y,a=(i.z??0)-t.location.z;return{x:r*e.x+s*e.y+a*e.z,y:r*n.x+s*n.y+a*n.z}}function lm(i){const t=Ja(i.width,i.height,i.attachment),{xAxis:e,yAxis:n}=to(i.rotation,i.direction);return[[t.minX,t.minY],[t.maxX,t.minY],[t.maxX,t.maxY],[t.minX,t.maxY]].map(([s,a])=>new b(i.location.x+e.x*s+n.x*a,i.location.y+e.y*s+n.y*a,i.location.z+e.z*s+n.z*a))}function hm(i,t,e){const n=Ja(t.width,t.height,t.attachment),{x:r,y:s}=cm(i,t),a=n.minX-e.padX,o=n.maxX+e.padX,c=n.minY-e.padYBelow,l=n.maxY+e.padYAbove;if(r<a||r>o||s<c||s>l)return null;const h=r<n.minX?n.minX-r:r>n.maxX?n.maxX-r:0,u=s<n.minY?n.minY-s:s>n.maxY?s-n.maxY:0;return h+u}var gu=(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))(gu||{}),fu=(i=>(i[i.BASELINE=0]="BASELINE",i[i.BOTTOM=1]="BOTTOM",i[i.MIDDLE=2]="MIDDLE",i[i.TOP=3]="TOP",i))(fu||{});const po=class po extends q{constructor(){super(),this._generationFlag=0,this._normal=new x(0,0,1),this._textString="",this._height=0,this._thickness=1,this._position=new b,this._alignmentPoint=new b,this._rotation=0,this._oblique=0,this._horizontalMode=0,this._verticalModel=2,this._styleName="",this._widthFactor=1}get dxfTypeName(){return"TEXT"}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 alignmentPoint(){return this._alignmentPoint}set alignmentPoint(t){this._alignmentPoint.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 generationFlag(){return this._generationFlag}set generationFlag(t){this._generationFlag=t}get isBackward(){return(this._generationFlag&2)!==0}set isBackward(t){this._generationFlag=t?this._generationFlag|2:this._generationFlag&-3}get isUpsideDown(){return(this._generationFlag&4)!==0}set isUpsideDown(t){this._generationFlag=t?this._generationFlag|4:this._generationFlag&-5}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get geometricExtents(){const t=new z,{anchor:e,attachmentPoint:n}=this.resolveTextAnchor(),r=ki(this.textString,this.height,this.widthFactor);return du(t,e,r,this.height,n,this.rotation)}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return de(t,e,this._position),this._alignmentPoint.add(e),this}subGetOsnapPoints(t,e,n,r){P.Insertion===t&&r.push(this._position)}transformBy(t){const e=this._position.clone(),n=this._position.clone().add(new x(Math.cos(this._rotation),Math.sin(this._rotation),0)),r=this._position.clone().add(new x(-Math.sin(this._rotation),Math.cos(this._rotation),0)),s=this._position.clone().add(new x(0,0,1));e.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const a=new x(n).sub(e),o=new x(r).sub(e),c=new x(s).sub(e),l=o.length(),h=a.length(),u=c.length();this._position.copy(e),h>0&&(this._rotation=Math.atan2(a.y,a.x)),l>0&&(this._height*=l,h>0&&(this._widthFactor*=h/l)),u>0&&(this._thickness*=u);const d=this._alignmentPoint.clone();return d.applyMatrix4(t),this._alignmentPoint.copy(d),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}subWorldDraw(t,e){const{anchor:n,attachmentPoint:r}=this.resolveTextAnchor(),s={text:this.textString,height:this.height,width:1/0,widthFactor:this.widthFactor,position:n,rotation:this.rotation,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:r};return t.mtext(s,this.getTextStyle(),e)}resolveTextAnchor(){const t=this.resolveAttachmentPoint();if(t===exports.AcGiMTextAttachmentPoint.BaselineLeft)return{anchor:this._position,attachmentPoint:t};const e=this._alignmentPoint;return e.x===0&&e.y===0&&e.z===0||e.x===this._position.x&&e.y===this._position.y&&e.z===this._position.z?{anchor:this._position,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft}:{anchor:e,attachmentPoint:t}}resolveAttachmentPoint(){const t=this._horizontalMode,e=this._verticalModel;if(t===4)return exports.AcGiMTextAttachmentPoint.MiddleCenter;if(t===3||t===5)return exports.AcGiMTextAttachmentPoint.BaselineLeft;switch(e){case 3:return t===1?exports.AcGiMTextAttachmentPoint.TopCenter:t===2?exports.AcGiMTextAttachmentPoint.TopRight:exports.AcGiMTextAttachmentPoint.TopLeft;case 2:return t===1?exports.AcGiMTextAttachmentPoint.MiddleCenter:t===2?exports.AcGiMTextAttachmentPoint.MiddleRight:exports.AcGiMTextAttachmentPoint.MiddleLeft;case 1:return t===1?exports.AcGiMTextAttachmentPoint.BottomCenter:t===2?exports.AcGiMTextAttachmentPoint.BottomRight:exports.AcGiMTextAttachmentPoint.BottomLeft;case 0:default:return t===1?exports.AcGiMTextAttachmentPoint.BaselineCenter:t===2?exports.AcGiMTextAttachmentPoint.BaselineRight:exports.AcGiMTextAttachmentPoint.BaselineLeft}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbText"),t.writePoint3d(10,this.position),t.writeDouble(39,this.thickness),t.writeDouble(40,this.height),t.writeString(1,this.textString),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeString(7,this.styleName),this.generationFlag!==0&&t.writeInt16(71,this.generationFlag),t.writeInt16(72,this.horizontalMode),t.writeInt16(73,this.verticalMode),t.writePoint3d(11,this.alignmentPoint),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbText");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.alignmentPoint.x,a=this.alignmentPoint.y,o=this.alignmentPoint.z,c=!1,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:n=f;break;case 30:r=f;break;case 11:s=f,c=!0;break;case 21:a=f,c=!0;break;case 31:o=f,c=!0;break;case 1:this.textString=String(d.value);break;case 7:this.styleName=String(d.value);break;case 39:this.thickness=f;break;case 40:this.height=f;break;case 41:this.widthFactor=f;break;case 50:this.rotation=C.degToRad(f);break;case 51:this.oblique=C.degToRad(f);break;case 71:this.generationFlag=f;break;case 72:this.horizontalMode=f;break;case 73:this.verticalMode=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break;case 100:{if(String(d.value)==="AcDbText")break;return t.pushBackItem(d),this.finishTextDxfIn(e,n,r,s,a,o,c,l,h,u),this}}}return this.finishTextDxfIn(e,n,r,s,a,o,c,l,h,u),this}finishTextDxfIn(t,e,n,r,s,a,o,c,l,h){this.position=new b(t,e,n),o&&!(r===0&&s===0&&a===0)?this.alignmentPoint=new b(r,s,a):this.alignmentPoint=new b(t,e,n);const u=new x(c,l,h);u.lengthSq()>0&&this.normal.copy(u.normalize())}};po.typeName="Text";let In=po;var mt=(i=>(i[i.Invisible=1]="Invisible",i[i.Const=2]="Const",i[i.Verifiable=4]="Verifiable",i[i.Preset=8]="Preset",i))(mt||{}),Jt=(i=>(i[i.MultiLine=2]="MultiLine",i[i.ConstMultiLine=4]="ConstMultiLine",i))(Jt||{});const mo=class mo extends In{get dxfTypeName(){return"ATTDEF"}constructor(){super(),this._flags=0,this._prompt="",this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&1)!==0}set isInvisible(t){t?this._flags|=1:this._flags&=-2}get prompt(){return this._prompt}set prompt(t){this._prompt=t}get isConst(){return(this._flags&2)!==0}set isConst(t){t?this._flags|=2:this._flags&=-3}get isVerifiable(){return(this._flags&4)!==0}set isVerifiable(t){t?this._flags|=4:this._flags&=-5}get isPreset(){return(this._flags&8)!==0}set isPreset(t){t?this._flags|=8:this._flags&=-9}get isMTextAttribute(){return(this._mtextFlag&2)!==0}set isMTextAttribute(t){t?this._mtextFlag|=2:this._mtextFlag&=-3}get isConstMTextAttribute(){return(this._mtextFlag&4)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=4:this._mtextFlag&=-5}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}isLooseInDrawingSpace(){const t=this.database;if(!t||!this.ownerId)return!0;const e=t.tables.blockTable.getIdAt(this.ownerId);return e?e.isModelSapce||e.isPaperSapce:!0}resolveDisplayText(){if(!this.isInvisible)return this.isLooseInDrawingSpace()?this.tag||this.textString:this.textString}subWorldDraw(t,e){const n=this.resolveDisplayText();if(n===void 0)return;if(n===this.textString)return super.subWorldDraw(t,e);const r=this.textString;this.textString=n;try{return super.subWorldDraw(t,e)}finally{this.textString=r}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttributeDefinition"),t.writeString(3,this.prompt),t.writeString(2,this.tag),t.writeInt16(70,this._flags),t.writeInt16(73,this.fieldLength),t.writeInt16(74,this.lockPositionInBlock?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttributeDefinition");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 2:this.tag=String(e.value);break;case 3:this.prompt=String(e.value);break;case 70:this.isInvisible=(r&1)!==0,this.isConst=(r&2)!==0,this.isVerifiable=(r&4)!==0,this.isPreset=(r&8)!==0;break;case 71:this.isMTextAttribute=(r&2)!==0,this.isConstMTextAttribute=(r&4)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};mo.typeName="AttDef";let hr=mo;function um(i){return i!=null&&typeof i=="object"&&"blockTableRecord"in i}const yo=class yo extends In{get dxfTypeName(){return"ATTRIB"}get resolvedColor(){var t;if(this.color.isByBlock){const e=(t=this.database)==null?void 0:t.tables.blockTable.getEntityById(this.ownerId);if(um(e))return e.resolvedColor}return this.resolveStandardColor()}constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&mt.Invisible)!==0}set isInvisible(t){t?this._flags|=mt.Invisible:this._flags&=~mt.Invisible}get isConst(){return(this._flags&mt.Const)!==0}set isConst(t){t?this._flags|=mt.Const:this._flags&=~mt.Const}get isVerifiable(){return(this._flags&mt.Verifiable)!==0}set isVerifiable(t){t?this._flags|=mt.Verifiable:this._flags&=~mt.Verifiable}get isPreset(){return(this._flags&mt.Preset)!==0}set isPreset(t){t?this._flags|=mt.Preset:this._flags&=~mt.Preset}get isMTextAttribute(){return(this._mtextFlag&Jt.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=Jt.MultiLine:this._mtextFlag&=~Jt.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&Jt.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=Jt.ConstMultiLine:this._mtextFlag&=~Jt.ConstMultiLine}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttribute"),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeString(2,this.tag),t.writeInt16(74,this.isReallyLocked?1:0),this.mtext&&t.writeInt16(71,this.isMTextAttribute?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttribute");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 2:this.tag=String(e.value);break;case 70:this.isInvisible=(r&mt.Invisible)!==0,this.isConst=(r&mt.Const)!==0,this.isVerifiable=(r&mt.Verifiable)!==0,this.isPreset=(r&mt.Preset)!==0;break;case 71:this.isMTextAttribute=(r&Jt.MultiLine)!==0,this.isConstMTextAttribute=(r&Jt.ConstMultiLine)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};yo.typeName="Attrib";let ri=yo;const dm=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0}),Cc=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0,topLevel:dm(),blockMisses:[]}),yt=class yt{static get profileStats(){return this._profileStats}static resetProfile(){this._profileStats=Cc(),this._drawDepth=0}static get instance(){return this._instance||(this._instance=new yt),this._instance}constructor(){this._blocks=new Map}createKey(t,e){let n=e.toString();return!n&&e.isByColor&&(n=`RGB:${e.red},${e.green},${e.blue}`),`${t}_${n}`}createCacheKey(t,e,n){return n?this.createKey(t,e):t}set(t,e){return this._blocks.set(t,e),e}get(t){const e=this._blocks.get(t);if(e){if(yt.profiling){const n=performance.now();if(this.maybeCompactTemplate(e,!0)){const c=performance.now()-n;yt._profileStats.missCompactMs+=c,yt._drawDepth===1&&(yt._profileStats.topLevel.missCompactMs+=c)}const s=performance.now(),a=e.fastDeepClone(),o=performance.now()-s;return yt._profileStats.cloneMs+=o,yt._drawDepth===1&&(yt._profileStats.topLevel.cloneMs+=o),a}return this.maybeCompactTemplate(e,!0),e.fastDeepClone()}}has(t){return this._blocks.has(t)}clear(){this._blocks.forEach(t=>{var e;(e=t.dispose)==null||e.call(t)}),this._blocks.clear()}async prebuildAll(t,e,n){const r=[];for(const l of e)!l||!l.name||this.shouldSkipPrebuild(l)||r.push(l);const s=r.length;let a=0;const o=new j().setForeground(),c=new Qr;for(const l of r){const h=this.createCacheKey(l.name,o,!1);this.has(h)||this.draw(t,l,o,[],!0),a++,n&&await n(a,s,l.name),await c.maybeYield(Cn)}}draw(t,e,n,r=[],s=!0,a,o){const c=yt.profiling;c&&yt._drawDepth++;const l=c&&yt._drawDepth===1,h=yt._profileStats,u=[];try{if(e!=null){const d=n.RGB??0,g=e.name;let f;if(g&&this.has(g))f=g;else if(g){const y=this.createKey(g,n);this.has(y)&&(f=y)}let p;if(f!==void 0){const y=c?performance.now():0;if(p=this.get(f),c){const _=performance.now()-y;h.hits++,h.hitMs+=_,l&&(h.topLevel.hits++,h.topLevel.hitMs+=_)}}else{const y=c?performance.now():0;let _=!1;const v=e.newIterator();for(const M of v)if(M.visibility)if(M.color.isByBlock){_=!0;const T=xm(M.color);try{n.isForeground?M.color.setForeground():M.color.setRGBValue(d),this.addEntity(M,u,t)}finally{M.color.copy(T),wm(T)}}else this.addEntity(M,u,t);p=t.group(u);let w=0;c&&(w=performance.now()-y,h.missBuildMs+=w,l&&(h.topLevel.missBuildMs+=w));let A=0;const E=!!s&&!!g&&!g.startsWith("*U");if(p&&E){const M=c?performance.now():0,T=this.maybeCompactTemplate(p,!1);c&&T&&(A=performance.now()-M,h.missCompactMs+=A,l&&(h.topLevel.missCompactMs+=A))}f=this.createCacheKey(g,n,_);const I=c?h.setCloneMs:0;if(p&&E)if(_m(p),this.set(f,p),c){const M=performance.now();p=p.fastDeepClone();const T=performance.now()-M;h.setCloneMs+=T,l&&(h.topLevel.setCloneMs+=T)}else p=p.fastDeepClone();c&&(h.misses++,l&&h.topLevel.misses++,h.blockMisses.push({blockName:g||"(unnamed)",buildMs:w,compactMs:A,setCloneMs:h.setCloneMs-I}))}const m=c?performance.now():0;if(p&&a&&(Fi.copy(a),p.applyMatrix(Fi),o&&(o.x!=0||o.y!=0||o.z!=1)&&(Ds.setFromExtrusionDirection(o),p.applyMatrix(Ds),Fi.premultiply(Ds))),p&&r&&r.length>0){const y=a!=null?gm.copy(Fi).invert():void 0;r.forEach(_=>{y&&_.applyMatrix(y),p.addChild(_)})}if(c){const y=performance.now()-m;h.applyMs+=y,l&&(h.topLevel.applyMs+=y)}return p}else return t.group(u)}finally{c&&yt._drawDepth--}}shouldSkipPrebuild(t){const e=t.name;if(it.isModelSapceName(e)||it.isPaperSapceName(e)||e.startsWith("*U")||this.blockHasByBlockColor(t))return!0;for(const n of t.newIterator())if(n.visibility)return!1;return!0}blockHasByBlockColor(t){for(const e of t.newIterator())if(e.visibility&&e.color.isByBlock)return!0;return!1}addEntity(t,e,n){if(!t.visibility)return;const r=t.worldDraw(n);r&&(this.attachEntityInfo(r,t),e.push(r))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}maybeCompactTemplate(t,e){return!t.compactForInstancing||ym(t)||!bm(t,e)?!1:(t.compactForInstancing(),!0)}};yt.profiling=!1,yt._profileStats=Cc(),yt._drawDepth=0;let Xe=yt;const Fi=new D,Ds=new D,gm=new D,fm=8,pm=32,pu=[];function mm(i){const t=i.childCount;return typeof t=="number"?t:Number.POSITIVE_INFINITY}function ym(i){return i.isCompacted===!0}function bm(i,t){const e=mm(i);return e<fm?!1:e>=pm?!0:t}function _m(i){const t=i.prepareCacheTemplate;typeof t=="function"&&t.call(i)}function xm(i){const t=pu.pop()??new j;return t.copy(i),t}function wm(i){pu.push(i)}const vm=1e-10;function Ft(i,t,e){const n=t?i.length:i.length-1;if(n<1||i.length<2)return[];const r=[];for(let s=0;s<n;s++){const a=i[s],o=i[(s+1)%i.length];if(ds(a,o))continue;const c=!t&&(s===0||s===n-1);r.push({kind:"line",line:new Tt(a,o),extent:"bounded",extendable:e??c})}return r}function eo(i,t,e,n){const r=t?i.length:i.length-1;if(r<1||i.length<2)return[];const s=[];for(let a=0;a<r;a++){const o=i[a],c=i[(a+1)%i.length],h=!t&&(a===0||a===r-1),u=o.bulge??0;if(Math.abs(u)>vm){const f=yu(new rt(o,c,u),e,n,h);f&&s.push(f);continue}const d=Ae(o.x,o.y,e,n),g=Ae(c.x,c.y,e,n);ds(d,g)||s.push({kind:"line",line:new Tt(d,g),extent:"bounded",extendable:h})}return s}function Am(i,t,e){const n=[];for(const r of i){if(r instanceof Q){n.push(...eo(r.vertices,r.closed,t,e));continue}if(r instanceof mn)for(const s of r.curves){const a=Pm(s,t,e);a&&n.push(...a)}}return n}function mu(i,t){return i.map(e=>hp(e,t))}function Pm(i,t,e){if(i instanceof Gt){const n=Ae(i.startPoint.x,i.startPoint.y,t,e),r=Ae(i.endPoint.x,i.endPoint.y,t,e);return ds(n,r)?[]:[{kind:"line",line:new Tt(n,r),extent:"bounded",extendable:!1}]}if(i instanceof rt){const n=yu(i,t,e,!1);return n?[n]:[]}if(i instanceof me){const n=km(i,t,e,!1);return n?[n]:[]}if(i instanceof Ut){const n=i.clone(),r=Sm(t,e);return r&&n.transform(r),[{kind:"spline",spline:n,extendable:!1}]}return[]}function yu(i,t,e,n){if(i.closed||Math.abs(i.deltaAngle-V)<1e-10){const c=Ae(i.center.x,i.center.y,t,e);return{kind:"circArc",arc:new St(c,i.radius,0,V,e,Fe(e)),extendable:!1}}const r=Ae(i.startPoint.x,i.startPoint.y,t,e),s=Ae(i.endPoint.x,i.endPoint.y,t,e),a=Ae(i.midPoint.x,i.midPoint.y,t,e),o=St.tryCreateByThreePoints(r,s,a);return o?{kind:"circArc",arc:o,extendable:n&&!o.closed}:ds(r,s)?null:{kind:"line",line:new Tt(r,s),extent:"bounded",extendable:n}}function km(i,t,e,n){const r=Ae(i.center.x,i.center.y,t,e),s=new D().setFromExtrusionDirection(new x(e.x,e.y,e.z)),a=new x(Math.cos(i.rotation),Math.sin(i.rotation),0).transformDirection(s);if(a.lengthSq()===0)return null;const o=i.clockwise?i.endAngle:i.startAngle,c=i.clockwise?i.startAngle:i.endAngle,l=new ue(r,e,a,i.majorAxisRadius,i.minorAxisRadius,o,c);return{kind:"ellipseArc",arc:l,extendable:n&&!l.closed&&Math.abs(l.deltaAngle-V)>1e-10}}function Ae(i,t,e,n){return _t({x:i,y:t,z:e},n)}function Sm(i,t){if(Math.abs(t.x)<1e-10&&Math.abs(t.y)<1e-10&&Math.abs(t.z-1)<1e-10&&Math.abs(i)<1e-10)return null;const n=new D().setFromExtrusionDirection(new x(t.x,t.y,t.z));return Math.abs(i)<1e-10?n:n.multiply(new D().makeTranslation(0,0,i))}function ds(i,t){const e=i.x-t.x,n=i.y-t.y,r=(i.z??0)-(t.z??0);return e*e+n*n+r*r<1e-20}const un=class un extends q{constructor(t){super(),this._columnCount=1,this._rowCount=1,this._columnSpacing=0,this._rowSpacing=0,this._blockName=t??"",this._position=new b,this._rotation=0,this._normal=new x(0,0,1),this._scaleFactors=new b(1,1,1),this._attribs=new Map}get dxfTypeName(){return"INSERT"}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 blockName(){return this._blockName}set blockName(t){this._blockName=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=Math.max(1,Math.floor(t)||1)}get rowCount(){return this._rowCount}set rowCount(t){this._rowCount=Math.max(1,Math.floor(t)||1)}get columnSpacing(){return this._columnSpacing}set columnSpacing(t){this._columnSpacing=t}get rowSpacing(){return this._rowSpacing}set rowSpacing(t){this._rowSpacing=t}get blockTableRecord(){if(this._blockName)return this.database.tables.blockTable.getAt(this._blockName)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId,this.syncAttributeDatabases()}syncAttributeDatabases(){try{const t=this.database,e=new Map;this._attribs.forEach(n=>{n.database=t,n.ownerId=this.objectId,t.commitObjectHandle(n),e.set(n.objectId,n)}),this._attribs=e}catch{}}attributeIterator(){return new kn(this._attribs)}get blockTransform(){const t=this.blockTableRecord,e=(t==null?void 0:t.origin)??b.ORIGIN,n=new D().makeTranslation(-e.x,-e.y,-e.z),r=new D().makeScale(this._scaleFactors.x,this._scaleFactors.y,this._scaleFactors.z),s=new xn().setFromAxisAngle(x.Z_AXIS,this._rotation),a=new D().makeRotationFromQuaternion(s),o=new D().makeTranslation(this._position.x,this._position.y,this._position.z);return new D().multiplyMatrices(o,a).multiply(r).multiply(n)}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return de(t,e,this._position),this}subGetOsnapPoints(t,e,n,r,s,a){const o=a??new D;P.Insertion===t?r.push(this.getInsertionPoint(o)):s?this.subEntityGetOsnapPoints(t,e,n,r,s,o):this.collectBlockOsnapPoints(t,e,n,r,o)}transformBy(t){const e=new D().setFromExtrusionDirection(this._normal),n=new D().makeRotationZ(this._rotation),r=new D().multiplyMatrices(e,n),s=this._position.clone(),a=new b(this._scaleFactors.x,0,0).applyMatrix4(r).add(s),o=new b(0,this._scaleFactors.y,0).applyMatrix4(r).add(s),c=new b(0,0,this._scaleFactors.z).applyMatrix4(r).add(s);s.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x(a).sub(s),h=new x(o).sub(s),u=new x(c).sub(s);let d=new x().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new D().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f);return this._position.copy(s),this._normal.copy(d),this._rotation=Math.atan2(p.y,p.x),this._scaleFactors.set(l.length(),h.length(),u.length()),this._attribs.forEach(m=>m.transformBy(t)),this}get properties(){const t={type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"blockName",type:"float",editable:!1,accessor:{get:()=>this._blockName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:e=>{this.position.x=e}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:e=>{this.position.y=e}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:e=>{this.position.z=e}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:e=>{this.rotation=e}}},{name:"scaleFactorsX",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.x,set:e=>{this.scaleFactors.x=e}}},{name:"scaleFactorsY",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.y,set:e=>{this.scaleFactors.y=e}}},{name:"scaleFactorsZ",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.z,set:e=>{this.scaleFactors.z=e}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:e=>{this.normal.x=e}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:e=>{this.normal.y=e}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:e=>{this.normal.z=e}}}]}]};if(this._attribs.size>0){const e={groupName:"attribute",properties:[]};t.groups.push(e),this._attribs.forEach(n=>{e.properties.push({name:n.tag,type:"string",editable:!n.isConst,skipTranslation:!0,accessor:{get:()=>n.textString,set:r=>{n.textString=r}}})})}return t}get geometricExtents(){const t=new z,e=this.blockTableRecord;if(e!=null){const r=e.newIterator();for(const s of r)t.union(s.geometricExtents)}const n=this.blockTransform;return t.applyMatrix4(n),t}subGetIntersectCurves(){const t=this.blockTableRecord;if(t==null)return[];const e=[],n=Math.max(1,this.columnCount),r=Math.max(1,this.rowCount);for(let s=0;s<r;s++)for(let a=0;a<n;a++){const o=new D().makeTranslation(a*this.columnSpacing,s*this.rowSpacing,0),c=new D().multiplyMatrices(this.getFullInsertionTransform(),o);for(const l of t.newIterator())e.push(...mu(l.subGetIntersectCurves(),c))}return e}subWorldDraw(t){const e=this.blockTableRecord;if(e!=null){const n=[];this._attribs.forEach(o=>{if(!o.isInvisible){const c=o.worldDraw(t);c&&n.push(c)}});const r=Math.max(1,this.columnCount),s=Math.max(1,this.rowCount);if(r===1&&s===1)return Xe.instance.draw(t,e,this.resolvedColor,n,!0,this.blockTransform,this._normal);const a=[];for(let o=0;o<s;o++)for(let c=0;c<r;c++){const l=new D().makeTranslation(c*this.columnSpacing,o*this.rowSpacing,0),h=new D().multiplyMatrices(this.blockTransform,l),u=Xe.instance.draw(t,e,this.resolvedColor,c===0&&o===0?n:[],!0,h,this._normal);u&&a.push(u)}return t.group(a)}else return t.group([])}dxfOut(t,e=!1){super.dxfOut(t,e);let n=!1;for(const r of this.attributeIterator())n=!0,t.writeStart("ATTRIB"),r.dxfOut(t,e);return n&&(t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity")),this}collectBlockOsnapPoints(t,e,n,r,s){const a=this.blockTableRecord;if(!a)return;const o=new D().multiplyMatrices(s,this.getFullInsertionTransform()),c=o.clone().invert(),l=new b(e).applyMatrix4(c),h=new b(n).applyMatrix4(c),u=[];for(const d of a.newIterator()){const g=[];if(d instanceof un){d.subGetOsnapPoints(t,e,n,g,void 0,o),u.push(...g);continue}d.subGetOsnapPoints(t,l,h,g,void 0,o),g.forEach(f=>u.push(new b(f).applyMatrix4(o)))}if(u.length!==0)if(t===P.Nearest||t===P.Perpendicular||t===P.Tangent){const d=$t(e,u);d&&r.push(d)}else r.push(...u)}subEntityGetOsnapPoints(t,e,n,r,s,a,o=new Set){if(s===this.objectId||o.has(this.objectId))return!1;o.add(this.objectId);try{const c=this.blockTableRecord;if(c==null)return!1;const l=new D().multiplyMatrices(a,this.getFullInsertionTransform());for(const h of c.newIterator()){if(h.objectId===s){const u=new b(e).applyMatrix4(l.clone().invert()),d=new b(n).applyMatrix4(l.clone().invert()),g=[];return h.subGetOsnapPoints(t,u,d,g,s,l),h instanceof un?g.forEach(f=>{r.push(f.clone())}):g.forEach(f=>{r.push(new b(f).applyMatrix4(l))}),!0}if(h instanceof un&&h.subEntityGetOsnapPoints(t,e,n,r,s,l,o))return!0}return!1}finally{o.delete(this.objectId)}}getInsertionPoint(t){var r;const e=((r=this.blockTableRecord)==null?void 0:r.origin)??b.ORIGIN,n=new D().multiplyMatrices(t,this.getFullInsertionTransform());return new b(e).applyMatrix4(n)}getFullInsertionTransform(){const t=new D().setFromExtrusionDirection(this._normal);return new D().multiplyMatrices(t,this.blockTransform)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockReference"),t.writePoint3d(10,this.position),t.writeString(2,this.blockName),t.writeDouble(41,this.scaleFactors.x),t.writeDouble(42,this.scaleFactors.y),t.writeDouble(43,this.scaleFactors.z),t.writeAngle(50,this.rotation),this.columnCount>1&&t.writeInt16(70,this.columnCount),this.rowCount>1&&t.writeInt16(71,this.rowCount),this.columnSpacing!==0&&t.writeDouble(44,this.columnSpacing),this.rowSpacing!==0&&t.writeDouble(45,this.rowSpacing),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbBlockReference");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.scaleFactors.x,a=this.scaleFactors.y,o=this.scaleFactors.z,c=C.radToDeg(this.rotation),l=this.normal.x,h=this.normal.y,u=this.normal.z,d=this.columnCount,g=this.rowCount,f=this.columnSpacing,p=this.rowSpacing;const m=()=>{this.position=new b(e,n,r),this.scaleFactors=new b(s,a,o),this.rotation=C.degToRad(c),this.normal.copy(new x(l,h,u)),this.columnCount=d>0?d:1,this.rowCount=g>0?g:1,this.columnSpacing=f,this.rowSpacing=p};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const _=Number(y.code),v=Number(y.value);switch(_){case 10:e=v;break;case 20:n=v;break;case 30:r=v;break;case 2:this.blockName=String(y.value);break;case 41:s=v;break;case 42:a=v;break;case 43:o=v;break;case 44:f=v;break;case 45:p=v;break;case 50:c=v;break;case 66:break;case 70:d=v;break;case 71:g=v;break;case 210:l=v;break;case 220:h=v;break;case 230:u=v;break;case 100:return t.pushBackItem(y),m(),this}}return m(),this}};un.typeName="BlockReference";let le=un;const Tc=[0,Math.PI/2,Math.PI,Math.PI/2*3],Gr=class Gr extends At{constructor(t,e,n=x.Z_AXIS){super(),this._thickness=0;const r=Fe(n);this._geo=new St(t,e,0,V,n,r)}get dxfTypeName(){return"CIRCLE"}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 thickness(){return this._thickness}set thickness(t){this._thickness=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"circArc",arc:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}subGetOsnapPoints(t,e,n,r){switch(t){case P.Center:case P.Centroid:r.push(this._geo.center);break;case P.Quadrant:r.push(this._geo.getPointAtAngle(0)),r.push(this._geo.getPointAtAngle(Math.PI/2)),r.push(this._geo.getPointAtAngle(Math.PI)),r.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case P.Nearest:{const s=this._geo.nearestPoint(e);r.push(s)}break;case P.Tangent:{const s=this._geo.tangentPoints(e);r.push(...s);break}case P.Perpendicular:{const s=this._geo.perpendicularPoints(e),a=$t(e,s);a&&r.push(a);break}}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"diameter",type:"float",editable:!1,accessor:{get:()=>this._geo.radius*2}},{name:"perimeter",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){const t=new Array;t.push(this.center);for(const e of Tc)t.push(this._geo.getPointAtAngle(e));return t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGripAt(n,e)}),this}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t);const e=Rt(this.center,this.normal);return t.writeSubclassMarker("AcDbCircle"),t.writePoint3d(10,e),t.writeDouble(40,this.radius),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbCircle");let e=0,n=0,r=0,s=this.radius,a=this.normal.x,o=this.normal.y,c=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const l=t.readItem();if(!l)break;const h=Number(l.code),u=Number(l.value);switch(h){case 10:e=u;break;case 20:n=u;break;case 30:r=u;break;case 40:s=u;break;case 39:this.thickness=u;break;case 210:a=u;break;case 220:o=u;break;case 230:c=u;break}}return this.applyDxfInGeometry(e,n,r,s,a,o,c),this}applyDxfInGeometry(t,e,n,r,s,a,o){const c=new x(s,a,o);this._geo.normal=c,this._geo.refVec=Fe(this._geo.normal),this.center=_t({x:t,y:e,z:n},this.normal),this.radius=r}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,n=this.radius;return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)>=n?1:-1}createOffsetCurve(t){const e=this._geo.offset(t);return e?new Gr(e.center,e.radius,e.normal):null}moveGripAt(t,e){switch(t){case 0:this.transformBy(D.makeTranslation(e));break;case 1:case 2:case 3:case 4:{const n=Tc[t-1],r=this._geo.getPointAtAngle(n),a=new b(r.x+e.x,r.y+e.y,(r.z??0)+(e.z??0)).distanceTo(this.center);a>0&&(this.radius=a);break}}}};Gr.typeName="Circle";let ur=Gr;const Dn=[0,Math.PI/2,Math.PI,Math.PI/2*3],Ur=class Ur extends At{get dxfTypeName(){return"ELLIPSE"}constructor(t,e,n,r,s,a,o){super(),this._geo=new ue(t,e,n,r,s,a,o)}get center(){return this._geo.center}set center(t){this._geo.center=t}get majorAxis(){return this._geo.majorAxis}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 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 normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"ellipseArc",arc:this._geo.clone(),extendable:!this.closed}]}get closed(){return this._geo.closed||Math.abs(this._geo.deltaAngle-V)<1e-10}get area(){return this._geo.area}subGetGripPoints(){const t=new Array;if(t.push(this._geo.center),this.closed)for(const e of Dn)t.push(this._geo.getPointAtAngle(e));else t.push(this._geo.startPoint),t.push(this._geo.endPoint);return t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGripAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){switch(t){case P.EndPoint:this.closed||(r.push(this._geo.startPoint),r.push(this._geo.endPoint));break;case P.MidPoint:this.closed||r.push(this._geo.midPoint);break;case P.Center:case P.Centroid:r.push(this._geo.center);break;case P.Quadrant:if(this.closed)for(const s of Dn)r.push(this._geo.getPointAtAngle(s));break;case P.Nearest:r.push(this._geo.nearestPoint(e));break;case P.Tangent:r.push(...this._geo.tangentPoints(e));break;case P.Perpendicular:{const s=this._geo.perpendicularPoints(e),a=$t(e,s);a&&r.push(a);break}}}transformBy(t){return this._geo.transform(t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"majorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.majorAxisRadius,set:t=>{this.center.x=t}}},{name:"minorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.minorAxisRadius,set:t=>{this.minorAxisRadius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.ellipticalArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbEllipse"),t.writePoint3d(10,this.center);const e=this._geo.majorAxis,n=this.majorAxisRadius;return t.writePoint3d(11,{x:e.x*n,y:e.y*n,z:e.z*n}),t.writeVector3d(210,this.normal),t.writeDouble(40,this.minorAxisRadius/this.majorAxisRadius),t.writeDouble(41,this.startAngle),t.writeDouble(42,this.endAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbEllipse");let e=this.center.x,n=this.center.y,r=this.center.z,s=this.majorAxis.x*this.majorAxisRadius,a=this.majorAxis.y*this.majorAxisRadius,o=this.majorAxis.z*this.majorAxisRadius,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=this.majorAxisRadius>0?this.minorAxisRadius/this.majorAxisRadius:1,d=this.startAngle,g=this.endAngle;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const f=t.readItem();if(!f)break;const p=Number(f.code),m=Number(f.value);switch(p){case 10:e=m;break;case 20:n=m;break;case 30:r=m;break;case 11:s=m;break;case 21:a=m;break;case 31:o=m;break;case 210:c=m;break;case 220:l=m;break;case 230:h=m;break;case 40:u=m;break;case 41:d=m;break;case 42:g=m;break}}return this.applyDxfInGeometry(e,n,r,s,a,o,c,l,h,u,d,g),this}applyDxfInGeometry(t,e,n,r,s,a,o,c,l,h,u,d){const g=Math.hypot(r,s,a)||1;this._geo=new ue({x:t,y:e,z:n},{x:o,y:c,z:l},{x:r,y:s,z:a},g,g*h,u,d)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,n=t.x-e.x,r=t.y-e.y,s=this.majorAxis,a=Math.hypot(s.x,s.y)||1,o=this.minorAxisRadius/this.majorAxisRadius*a||1,c=s.x/a,l=s.y/a,h=-l,u=c,d=n*c+r*l,g=n*h+r*u;return(d/a)**2+(g/o)**2>=1?1:-1}moveGripAt(t,e){switch(t){case 0:this.transformBy(D.makeTranslation(e));break;case 1:if(this.closed)this.moveQuadrantGripAt(Dn[0],e);else{const n=this._geo.startPoint;this._geo.startAngle=be(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal)}break;case 2:if(this.closed)this.moveQuadrantGripAt(Dn[1],e);else{const n=this._geo.endPoint;this._geo.endAngle=be(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal)}break;case 3:case 4:this.closed&&this.moveQuadrantGripAt(Dn[t-1],e);break}}moveQuadrantGripAt(t,e){const n=this._geo.getPointAtAngle(t),r=new b(n.x+e.x,n.y+e.y,(n.z??0)+(e.z??0)),s=this._geo.center,a=r.x-s.x,o=r.y-s.y,c=(r.z??0)-(s.z??0),l=t===0||t===Math.PI?this._geo.majorAxis:this._geo.minorAxis,h=a*l.x+o*l.y+c*l.z,u=Math.abs(h);u<=0||(t===0||t===Math.PI?this.majorAxisRadius=u:this.minorAxisRadius=u)}createOffsetCurve(t){const e=this._geo.offset(t);return e?new Ur(e.center,e.normal,e.majorAxis,e.majorAxisRadius,e.minorAxisRadius,e.startAngle,e.endAngle):null}};Ur.typeName="Ellipse";let dr=Ur;const bo=class bo extends q{get dxfTypeName(){return"3DFACE"}constructor(){super(),this._vertices=[new b,new b,new b],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 b),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 z().setFromPoints(this._vertices)}subGetIntersectCurves(){return Ft(this._vertices,!0)}get area(){const t=[this.getVertexAt(0),this.getVertexAt(1),this.getVertexAt(2)],e=this.getVertexAt(3);return(e.x!==t[2].x||e.y!==t[2].y||e.z!==t[2].z)&&t.push(e),Rl(t)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return On(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){us(this._vertices,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this}get directBatchPrimitive(){return"lineSegments"}subWorldDraw(t){const e=this._vertices.length,n=new Float32Array(e*3),r=new Uint16Array(e*2);for(let s=0;s<e;s++)n[s*3]=this._vertices[s].x,n[s*3+1]=this._vertices[s].y,n[s*3+2]=this._vertices[s].z,this.isEdgeVisibleAt(s)&&(r[s*2]=s,r[s*2+1]=(s+1)%4);return t.lineSegments(n,3,r)}dxfOutFields(t){super.dxfOutFields(t);const e=this.getVertexAt(0),n=this.getVertexAt(1),r=this.getVertexAt(2),s=this.getVertexAt(3);t.writeSubclassMarker("AcDbFace"),t.writePoint3d(10,e),t.writePoint3d(11,n),t.writePoint3d(12,r),t.writePoint3d(13,s);let a=0;for(let o=0;o<4;++o)this.isEdgeVisibleAt(o)||(a|=1<<o);return t.writeInt16(70,a),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFace");const e=[0,1,2,3].map(r=>{const s=this._vertices[r];return s?{x:s.x,y:s.y,z:s.z}:{x:0,y:0,z:0}});let n=this._edgeInvisibilities;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),a=Number(r.value);switch(s){case 10:case 11:case 12:case 13:e[s-10].x=a;break;case 20:case 21:case 22:case 23:e[s-20].y=a;break;case 30:case 31:case 32:case 33:e[s-30].z=a;break;case 70:n=a;break}}return e.forEach((r,s)=>this.setVertexAt(s,r)),this._edgeInvisibilities=n,this}};bo.typeName="Face";let gr=bo;var Ct=(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))(Ct||{}),ot=(i=>(i[i.Scientific=1]="Scientific",i[i.Decimal=2]="Decimal",i[i.Engineering=3]="Engineering",i[i.Architectural=4]="Architectural",i[i.Fractional=5]="Fractional",i[i.WindowsDesktop=6]="WindowsDesktop",i))(ot||{}),nt=(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))(nt||{});function Im(i){return i==4||i==5||i==6||i==7||i==12||i==13||i==14||i==15||i==16||i==17}function Em(i){return i==1||i==2||i==3||i==8||i==9||i==10||i==21}const k={ACADVER:"ACADVER",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",AUPREC:"AUPREC",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELTYPE:"CELTYPE",CELWEIGHT:"CELWEIGHT",CETRANSPARENCY:"CETRANSPARENCY",CLAYER:"CLAYER",CMLEADERSTYLE:"CMLEADERSTYLE",CMLSCALE:"CMLSCALE",CMLSTYLE:"CMLSTYLE",COLORTHEME:"COLORTHEME",COMPAREHATCH:"COMPAREHATCH",COMPAREPROPS:"COMPAREPROPS",COMPARERCMARGIN:"COMPARERCMARGIN",COMPARETEXT:"COMPARETEXT",COMPARETOLERANCE:"COMPARETOLERANCE",DYNMODE:"DYNMODE",DYNPROMPT:"DYNPROMPT",DWGNAME:"DWGNAME",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",GRIPCOLOR:"GRIPCOLOR",GRIPHOT:"GRIPHOT",GRIPOBJLIMIT:"GRIPOBJLIMIT",GRIPS:"GRIPS",GRIPSIZE:"GRIPSIZE",HPANG:"HPANG",HPASSOC:"HPASSOC",HPBACKGROUNDCOLOR:"HPBACKGROUNDCOLOR",HPCOLOR:"HPCOLOR",HPDOUBLE:"HPDOUBLE",HPISLANDDETECTION:"HPISLANDDETECTION",HPLAYER:"HPLAYER",HPNAME:"HPNAME",HPSCALE:"HPSCALE",HPSEPARATE:"HPSEPARATE",HPTRANSPARENCY:"HPTRANSPARENCY",INSUNITS:"INSUNITS",LOGINNAME:"LOGINNAME",LTSCALE:"LTSCALE",LUNITS:"LUNITS",LUPREC:"LUPREC",LWDISPLAY:"LWDISPLAY",MEASUREMENT:"MEASUREMENT",MEASUREMENTCOLOR:"MEASUREMENTCOLOR",MODELBKCOLOR:"MODELBKCOLOR",OSMODE:"OSMODE",ORTHOMODE:"ORTHOMODE",OPENPROF:"OPENPROF",PAPERBKCOLOR:"PAPERBKCOLOR",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",POLARADDANG:"POLARADDANG",POLARMODE:"POLARMODE",POLARANG:"POLARANG",SHORTCUTMENU:"SHORTCUTMENU",TEXTSTYLE:"TEXTSTYLE",DIMSTYLE:"DIMSTYLE",UNITMODE:"UNITMODE"},Lm=Object.freeze(Object.values(k));function Cm(){try{const i=typeof process<"u"&&process.env?process.env:void 0;if(!i)return"";const t=i.USERNAME||i.USER||i.LOGNAME||"";return typeof t=="string"?t.trim():""}catch{return""}}const Hr=class Hr{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new lt},this.registerVar({name:k.ANGBASE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:k.ANGDIR,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:k.AUNITS,type:"number",isDbVar:!0,defaultValue:Ct.DecimalDegrees}),this.registerVar({name:k.AUPREC,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:k.CECOLOR,type:"color",isDbVar:!0,defaultValue:new j(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:k.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:k.CELTYPE,type:"string",isDbVar:!0,defaultValue:dt}),this.registerVar({name:k.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:exports.AcGiLineWeight.ByLayer}),this.registerVar({name:k.CETRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new ht}),this.registerVar({name:k.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:k.CMLEADERSTYLE,type:"string",isDbVar:!0,defaultValue:ve}),this.registerVar({name:k.CMLSCALE,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:k.CMLSTYLE,type:"string",isDbVar:!0,defaultValue:we}),this.registerVar({name:k.COLORTHEME,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:k.COMPAREHATCH,type:"number",isDbVar:!0,defaultValue:nr}),this.registerVar({name:k.COMPAREPROPS,type:"number",isDbVar:!1,defaultValue:Yh}),this.registerVar({name:k.COMPARERCMARGIN,type:"number",isDbVar:!0,defaultValue:ir}),this.registerVar({name:k.COMPARETEXT,type:"number",isDbVar:!0,defaultValue:rr}),this.registerVar({name:k.COMPARETOLERANCE,type:"number",isDbVar:!0,defaultValue:sr}),this.registerVar({name:k.DYNMODE,type:"number",isDbVar:!1,defaultValue:3}),this.registerVar({name:k.DYNPROMPT,type:"boolean",isDbVar:!1,defaultValue:!0}),this.registerVar({name:k.DWGNAME,type:"string",isDbVar:!0,readOnly:!0,defaultValue:"Drawing1.dwg"}),this.registerVar({name:k.GRIPCOLOR,type:"number",isDbVar:!1,defaultValue:Ch}),this.registerVar({name:k.GRIPHOT,type:"number",isDbVar:!1,defaultValue:Th}),this.registerVar({name:k.GRIPOBJLIMIT,type:"number",isDbVar:!1,defaultValue:100}),this.registerVar({name:k.GRIPS,type:"number",isDbVar:!1,defaultValue:2}),this.registerVar({name:k.GRIPSIZE,type:"number",isDbVar:!1,defaultValue:Mh}),this.registerVar({name:k.HPANG,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:k.HPASSOC,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:k.HPBACKGROUNDCOLOR,type:"color",isDbVar:!0,defaultValue:new j(exports.AcCmColorMethod.None)}),this.registerVar({name:k.HPCOLOR,type:"color",isDbVar:!0,defaultValue:new j(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:k.HPDOUBLE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:k.HPISLANDDETECTION,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:k.HPLAYER,type:"string",isDbVar:!0,defaultValue:"."}),this.registerVar({name:k.HPNAME,type:"string",isDbVar:!1,defaultValue:Ih}),this.registerVar({name:k.HPSCALE,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:k.HPSEPARATE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:k.HPTRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new ht}),this.registerVar({name:k.INSUNITS,type:"number",isDbVar:!0,defaultValue:nt.Millimeters}),this.registerVar({name:k.LOGINNAME,type:"string",isDbVar:!1,readOnly:!0,defaultValue:Cm()}),this.registerVar({name:k.LUNITS,type:"number",isDbVar:!0,defaultValue:ot.Decimal}),this.registerVar({name:k.LUPREC,type:"number",isDbVar:!0,defaultValue:4}),this.registerVar({name:k.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:k.MEASUREMENT,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:k.MEASUREMENTCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new j(exports.AcCmColorMethod.ByColor);return t.setRGB(96,165,250),t})()}),this.registerVar({name:k.MODELBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new j(exports.AcCmColorMethod.ByColor);return t.setRGB(0,0,0),t})()}),this.registerVar({name:k.OSMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:k.ORTHOMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:k.OPENPROF,type:"boolean",isDbVar:!1,defaultValue:!1}),this.registerVar({name:k.PAPERBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new j(exports.AcCmColorMethod.ByColor);return t.setRGB(255,255,255),t})()}),this.registerVar({name:k.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:k.POLARADDANG,type:"string",isDbVar:!1,defaultValue:""}),this.registerVar({name:k.POLARMODE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:k.POLARANG,type:"number",isDbVar:!1,defaultValue:90}),this.registerVar({name:k.SHORTCUTMENU,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:k.TEXTSTYLE,type:"string",isDbVar:!0,defaultValue:st}),this.registerVar({name:k.UNITMODE,type:"number",isDbVar:!0,defaultValue:0})}static instance(){return this._instance||(this._instance=new Hr),this._instance}registerVar(t){const e=this.normalizeName(t.name);this.registry.set(e,{...t,name:e}),t.isDbVar||this.cache.set(e,t.defaultValue)}registerMany(t){t.forEach(e=>this.registerVar(e))}setLoginName(t){const e=this.normalizeName(k.LOGINNAME);this.cache.set(e,t.trim())}getVar(t,e){t=this.normalizeName(t);const n=this.getDescriptor(t);if(!n)throw new Error(`System variable ${t} not found!`);if(n.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}getDefaultValue(t){t=this.normalizeName(t);const e=this.getDescriptor(t);if(!e)throw new Error(`System variable ${t} not found!`);return e.defaultValue}applyVarMutation(t,e,n,r,s){const a=this.normalizeName(t);if(this.hasValueChanged(e,n)){if(r.transactionManager.isRecording())r.transactionManager.recordSysvar(a,e);else if(r.transactionManager.strictMode&&!r.transactionManager.isApplyingUndoRedo())throw new Error(`Cannot change system variable ${a} outside an active transaction.`);s(),!r.transactionManager.isApplyingUndoRedo()&&!r.transactionManager.isRecording()&&this.events.sysVarChanged.dispatch({database:r,name:a,newVal:n,oldVal:e})}}setVar(t,e,n){t=this.normalizeName(t);const r=this.getDescriptor(t);if(r){if(r.readOnly)throw new Error(`System variable ${t} is read-only!`);const s=this.getVar(t,n);if(r.type==="transparency"){const a=this.parseTransparency(e);if(a==null||a.isInvalid)throw new Error("Invalid transparency value!");e=a}else if(r.type!=="string"&&(typeof e=="string"||e instanceof String)){if(r.type==="number"){const a=Number(e);if(Number.isNaN(a))throw new Error("Invalid number input!");e=a}else if(r.type==="boolean")e=this.parseBoolean(e);else if(r.type==="color"){const a=this.parseColorSysVar(t,e,n);if(a==null)throw new Error("Invalid color value!");e=a}}if(t===k.GRIPCOLOR.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<ca||a>la)throw new Error(`Invalid GRIPCOLOR value! Valid range is ${ca} to ${la}.`);e=a}if(t===k.GRIPHOT.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<ha||a>ua)throw new Error(`Invalid GRIPHOT value! Valid range is ${ha} to ${ua}.`);e=a}if(t===k.GRIPOBJLIMIT.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<0||a>32767)throw new Error("Invalid GRIPOBJLIMIT value! Valid range is 0 to 32767.");e=a}if(t===k.GRIPS.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<0||a>2)throw new Error("Invalid GRIPS value! Valid range is 0 to 2.");e=a}if(t===k.GRIPSIZE.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<da||a>ga)throw new Error(`Invalid GRIPSIZE value! Valid range is ${da} to ${ga}.`);e=a}t===k.COMPAREHATCH.toLowerCase()&&(e=se("COMPAREHATCH",e,ns,is)),t===k.COMPAREPROPS.toLowerCase()&&(e=se("COMPAREPROPS",e,zh,Vh)),t===k.COMPARERCMARGIN.toLowerCase()&&(e=se("COMPARERCMARGIN",e,rs,ss)),t===k.COMPARETEXT.toLowerCase()&&(e=se("COMPARETEXT",e,as,os)),t===k.COMPARETOLERANCE.toLowerCase()&&(e=se("COMPARETOLERANCE",e,cs,ls)),r.isDbVar?this.applyVarMutation(t,s,e,n,()=>{n[t.toLowerCase()]=e}):this.applyVarMutation(t,s,e,n,()=>{this.cache.set(t,e)})}else throw new Error(`System variable ${t} not found!`)}getDescriptor(t){return this.registry.get(this.normalizeName(t))}getAllDescriptors(){return[...this.registry.values()]}parseBoolean(t){if(t==null)return!1;const e=String(t).trim().toLowerCase(),n=new Set(["true","t","1","yes","y"]),r=new Set(["false","f","0","no","n"]);return n.has(e)?!0:(r.has(e),!1)}parseColorSysVar(t,e,n){const r=e.trim().toLowerCase();return t===k.HPCOLOR.toLowerCase()&&(r==="."||r==="use current")?n.cecolor.clone():t===k.HPBACKGROUNDCOLOR.toLowerCase()&&(r===""||r==="."||r==="none")?new j(exports.AcCmColorMethod.None):j.fromString(e)}parseTransparency(t){if(t instanceof ht)return t;if(typeof t=="number")return ht.deserialize(t);if(!(typeof t!="string"&&!(t instanceof String)))return ht.fromString(String(t))}hasValueChanged(t,e){return t instanceof j&&e instanceof j||t instanceof ht&&e instanceof ht?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Hr._instance=null;let bt=Hr;const bu="Load Database",Mc=3e4,Tm=12e4,Mm=1024*1024;class Ot extends al{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=La.getInstance().getEntry(bu),n=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const r=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",r?r.data:null),this.data.progress.value+=this.data.step,this.data.progress.value>100&&(this.data.progress.value=100)),e&&(e.data[this.name]=Date.now()-n),r}}class no{constructor(t={}){this.config={useWorker:t.useWorker??!0,...t}}async read(t,e,n={}){const{minimumChunkSize:r=10,progress:s,timeout:a,sysVars:o}=n,c={name:bu,data:{total:0},format(){let d="";return Object.keys(this.data).forEach(g=>{g!=="total"&&(d+=`- ${g}: ${this.data[g]} ms
|
|
10
|
+
`)}),d+=`- total: ${this.data.total} ms`,d}};La.getInstance().collect(c),this.progress=s;const l={value:0},h=new ol;h.setCompleteCallback(()=>this.onFinished()),h.setErrorCallback(d=>this.onError(d)),h.addTask(new Ot({stage:"START",step:1,progress:l,task:async d=>d},s)),h.addTask(new Ot({stage:"PARSE",step:5,progress:l,task:async d=>await this.parse(d,a)},s)),h.addTask(new Ot({stage:"LTYPE",step:1,progress:l,task:async d=>(this.processLineTypes(d.model,e),d)},s)),h.addTask(new Ot({stage:"STYLE",step:1,progress:l,task:async d=>(this.processTextStyles(d.model,e),d)},s)),h.addTask(new Ot({stage:"DIMSTYLE",step:1,progress:l,task:async d=>(this.processDimStyles(d.model,e),d)},s)),h.addTask(new Ot({stage:"LAYER",step:1,progress:l,task:async d=>(this.processLayers(d.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),d)},s)),h.addTask(new Ot({stage:"VPORT",step:1,progress:l,task:async d=>(this.processViewports(d.model,e),d)},s)),h.addTask(new Ot({stage:"HEADER",step:1,progress:l,task:async d=>{if(this.processClasses(d.model,e),this.processHeader(d.model,e),o){const g=bt.instance();for(const[f,p]of Object.entries(o))g.setVar(f,p,e)}return d}},s)),h.addTask(new Ot({stage:"BLOCK_RECORD",step:5,progress:l,task:async d=>(this.processBlockTables(d.model,e),d)},s)),h.addTask(new Ot({stage:"OBJECT",step:5,progress:l,task:async d=>(this.processObjects(d.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),d)},s)),h.addTask(new Ot({stage:"BLOCK",step:5,progress:l,task:async d=>(await this.processBlocks(d.model,e),d)},s)),h.addTask(new Ot({stage:"ENTITY",step:100,progress:l,task:async d=>(await this.processEntities(d.model,e,r,l,s),d)},s)),h.addTask(new Ot({stage:"END",step:0,progress:l,task:async d=>d},s));const u=Date.now();await h.run(t),c.data.total=Date.now()-u}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&(this.progress(100,"END","END"),Xe.instance.clear())}getParserWorkerTimeout(t,e){const n=e??this.config.timeout;if(n!=null)return n;const r=Math.ceil(t.byteLength/Mm),s=Mc+r*1e3;return Math.min(Tm,Math.max(Mc,s))}async parse(t,e){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!")}processClasses(t,e){}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,n,r,s){throw new Error("Not impelemented yet!")}}class _u{constructor(t,e,n){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=n,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)}async scheduleTask(t){await Cn(),await t()}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let n=0;const r=async()=>{const s=n,a=Math.min(n+this._chunkSize,this._count);await t(s,a),n=a,n<this._count&&await this.scheduleTask(r)};await r(),await(e==null?void 0:e())}}class xu extends no{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}async processEntities(t,e,n,r,s){let a=t.tables.blockTable.modelSpace.newIterator().toArray();const o=a.length,c=new _u(o,100-r.value,n);this.config.convertByEntityType&&(a=this.groupAndFlattenByType(a));const l=e.tables.blockTable.modelSpace;await c.processChunk(async(h,u)=>{let d=[],g=h<u?a[h].type:"";for(let f=h;f<u;f++){const p=a[f];this.config.convertByEntityType&&p.type!==g&&(this.triggerEvents(l,d),d=[],g=p.type),d.push(p)}if(this.triggerEvents(l,d),s){let f=r.value+u/o*(100-r.value);f>100&&(f=100),await s(f,"ENTITY","IN-PROGRESS")}})}processBlocks(){const t=this._database.tables.blockTable.newIterator();for(const e of t){const n=e.newIterator().toArray();this.triggerEvents(e,n)}}processHeader(){}processClasses(){}processBlockTables(){}processObjects(){const t=this._database.objects.layout.newIterator();for(const a of t)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.layoutName});const e=this._database.objects.imageDefinition.newIterator();for(const a of e)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const n=this._database.objects.mleaderStyle.newIterator();for(const a of n)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const r=this._database.objects.layerFilter.newIterator();for(const a of r)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const s=this._database.objects.layerIndex.newIterator();for(const a of s)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId})}processViewports(){}processLayers(){this._database.tables.layerTable.newIterator().toArray().forEach(e=>{this._database.events.layerAppended.dispatch({database:this._database,layer:e})})}processLineTypes(){}processTextStyles(){}processDimStyles(){}groupAndFlattenByType(t){const e={},n=[];for(const r of t)e[r.type]||(e[r.type]=[],n.push(r.type)),e[r.type].push(r);return n.flatMap(r=>e[r])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}var wu=(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))(wu||{}),io=(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))(io||{}),vu=(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))(vu||{}),Au=(i=>(i[i.None=0]="None",i[i.Leading=1]="Leading",i[i.Trailing=2]="Trailing",i[i.LeadingAndTrailing=3]="LeadingAndTrailing",i))(Au||{}),Pu=(i=>(i[i.Bottom=0]="Bottom",i[i.Middle=1]="Middle",i[i.Top=2]="Top",i))(Pu||{});const Wr=class Wr extends Se{constructor(t,e){t=t||{},Wt(t,Wr.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)}dxfOut(...t){const[e,n=!1]=t;return e.writeHandle(105,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),n&&this.dxfOutXData(e),this}dxfOutFields(t){super.dxfOutFields(t);const e=this.database.tables.textStyleTable.getAt(this.dimtxsty),n=this.database.tables.blockTable.getAt(this.dimldrblk),r=this.database.tables.blockTable.getAt(this.dimblk),s=this.database.tables.blockTable.getAt(this.dimblk1),a=this.database.tables.blockTable.getAt(this.dimblk2);return t.writeSubclassMarker("AcDbDimStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),t.writeString(3,this.dimpost),t.writeString(4,this.dimapost),t.writeDouble(40,this.dimscale),t.writeDouble(41,this.dimasz),t.writeDouble(42,this.dimexo),t.writeDouble(43,this.dimdli),t.writeDouble(44,this.dimexe),t.writeDouble(140,this.dimtxt),t.writeDouble(147,this.dimgap),t.writeInt16(170,this.dimalt),t.writeInt16(171,this.dimtol),t.writeInt16(172,this.dimlim),t.writeInt16(173,this.dimtih),t.writeInt16(174,this.dimtoh),t.writeObjectId(340,e==null?void 0:e.objectId),t.writeObjectId(341,n==null?void 0:n.objectId),t.writeObjectId(342,r==null?void 0:r.objectId),t.writeObjectId(343,s==null?void 0:s.objectId),t.writeObjectId(344,a==null?void 0:a.objectId),t.writeInt16(371,this.dimlwd),t.writeInt16(372,this.dimlwe),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbDimStyleTableRecord");const e=n=>n===0?0:1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}const s=Number(n.value);switch(r){case 2:this.name=String(n.value);break;case 70:break;case 3:this.dimpost=String(n.value);break;case 4:this.dimapost=String(n.value);break;case 5:this.dimblk=String(n.value);break;case 6:this.dimblk1=String(n.value);break;case 7:this.dimblk2=String(n.value);break;case 40:this.dimscale=s;break;case 41:this.dimasz=s;break;case 42:this.dimexo=s;break;case 43:this.dimdli=s;break;case 44:this.dimexe=s;break;case 45:this.dimrnd=s;break;case 46:this.dimdle=s;break;case 47:this.dimtp=s;break;case 48:this.dimtm=s;break;case 140:this.dimtxt=s;break;case 141:this.dimcen=s;break;case 142:this.dimtsz=s;break;case 143:this.dimaltf=s;break;case 144:this.dimlfac=s;break;case 145:this.dimtvp=s;break;case 146:this.dimtfac=s;break;case 147:this.dimgap=s;break;case 148:this.dimaltrnd=s;break;case 71:this.dimtol=e(s);break;case 72:this.dimlim=e(s);break;case 73:this.dimtih=e(s);break;case 74:this.dimtoh=e(s);break;case 75:this.dimse1=e(s);break;case 76:this.dimse2=e(s);break;case 77:this.dimtad=s;break;case 78:this.dimzin=s;break;case 79:this.dimazin=s;break;case 170:this.dimalt=e(s);break;case 171:this.dimaltd=s;break;case 172:this.dimtofl=e(s);break;case 173:this.dimsah=e(s);break;case 174:this.dimtix=e(s);break;case 175:this.dimsoxd=e(s);break;case 176:this.dimclrd=s;break;case 177:this.dimclre=s;break;case 178:this.dimclrt=s;break;case 179:this.dimadec=s;break;case 270:this.dimunit=s;break;case 271:this.dimdec=s;break;case 272:this.dimtdec=s;break;case 273:this.dimaltu=s;break;case 274:this.dimalttd=s;break;case 275:this.dimaunit=s;break;case 276:this.dimfrac=s;break;case 277:this.dimlunit=s;break;case 278:this.dimdsep=typeof n.value=="string"?n.value:String.fromCharCode(s||46);break;case 279:this.dimtmove=s;break;case 280:this.dimjust=s;break;case 281:this.dimsd1=e(s);break;case 282:this.dimsd2=e(s);break;case 283:this.dimtolj=s;break;case 284:this.dimtzin=s;break;case 285:this.dimaltz=s;break;case 286:this.dimalttz=s;break;case 287:this.dimfit=s;break;case 288:this.dimupt=e(s);break;case 289:this.dimatfit=s;break;case 340:this.dimtxsty=String(n.value);break;case 341:this.dimldrblk=String(n.value);break;case 342:this.dimblk=String(n.value);break;case 343:this.dimblk1=String(n.value);break;case 344:this.dimblk2=String(n.value);break;case 371:this.dimlwd=s;break;case 372:this.dimlwe=s;break}}return this}};Wr.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:st,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Dt=Wr;function ku(){return{color:new j,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new ht,linetype:"",lineWeight:1,materialId:-1}}const Om=["name",...Object.keys(ku())];class Si extends Se{constructor(t,e){t=t||{},Wt(t,ku()),super(t,e)}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.clone())}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineStyle(){var e;const t=(e=this.database)==null?void 0:e.tables.linetypeTable.getAt(this.linetype);if(t)return{type:"UserSpecified",...t.linetype}}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)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeCmColor(this.color),t.writeString(6,this.linetype),t.writeInt16(290,this.isPlottable?1:0),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency),this.description&&t.writeString(4,this.description),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLayerTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=Number(e.value);break;case 62:{const r=Number(e.value);this.isOff=r<0,this.color.colorIndex=Math.abs(r);break}case 420:this.color.setRGBValue(Number(e.value));break;case 6:this.linetype=String(e.value);break;case 290:this.isPlottable=Number(e.value)!==0;break;case 370:this.lineWeight=Number(e.value);break;case 440:this.transparency=ht.deserialize(Number(e.value));break;case 4:this.description=String(e.value);break}}return this}}class Re extends Se{constructor(t,e){t=t||{},Wt(t,{standardFlag:0,description:"",totalPatternLength:0}),super(t,e)}get numDashes(){const t=this.getAttrWithoutException("pattern");return t?t.length:0}get patternLength(){return this.getAttr("totalPatternLength")}get comments(){return this.getAttr("description")}get linetype(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),description:this.getAttr("description"),totalPatternLength:this.getAttr("totalPatternLength"),pattern:this.getAttrWithoutException("pattern")}}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.getAttr("pattern")[t].elementLength}toPreviewSvgString(t){const e=Math.max((t==null?void 0:t.width)??220,1),n=Math.max((t==null?void 0:t.height)??36,1),r=Math.min(Math.max((t==null?void 0:t.padding)??8,0),Math.floor(e/2)),s=Math.max((t==null?void 0:t.strokeWidth)??2,.5),a=this.escapeSvgAttribute((t==null?void 0:t.stroke)??"currentColor"),o=Math.max((t==null?void 0:t.repeats)??4,1),c=n/2,l=r,h=Math.max(e-r,l+1),u=h-l,d=this.getAttrWithoutException("pattern")??[];if(d.length===0||this.patternLength<=0||!d.some(v=>v.elementLength!==0))return this.buildSvgString({width:e,height:n,stroke:a,strokeWidth:s,lineSegments:[[l,h]],dots:[],y:c});const g=[],f=[],p=u/(this.patternLength*o),m=.5,y=Math.max(s*2,2);let _=l;for(;_<h;)for(const v of d){if(_>=h)break;const w=v.elementLength;if(w===0){f.push(_),_=Math.min(_+y,h);continue}const A=Math.max(Math.abs(w)*p,m),E=Math.min(_+A,h);w>0&&E>_&&g.push([_,E]),_=E}return this.buildSvgString({width:e,height:n,stroke:a,strokeWidth:s,lineSegments:g,dots:f,y:c})}buildSvgString(t){const{width:e,height:n,stroke:r,strokeWidth:s,lineSegments:a,dots:o,y:c}=t,l=a.map(([u,d])=>`<line x1="${u.toFixed(2)}" y1="${c.toFixed(2)}" x2="${d.toFixed(2)}" y2="${c.toFixed(2)}" stroke="${r}" stroke-width="${s.toFixed(2)}" stroke-linecap="round" />`).join(""),h=o.map(u=>`<circle cx="${u.toFixed(2)}" cy="${c.toFixed(2)}" r="${(s/2).toFixed(2)}" fill="${r}" />`).join("");return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${n}" viewBox="0 0 ${e} ${n}" role="img" aria-label="${this.escapeSvgAttribute(this.name)} linetype preview">${l}${h}</svg>`}escapeSvgAttribute(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLinetypeTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeString(3,this.comments),t.writeInt16(72,65),t.writeInt16(73,this.numDashes),t.writeDouble(40,this.patternLength);for(const e of this.getAttrWithoutException("pattern")??[])t.writeDouble(49,e.elementLength),t.writeInt16(74,e.elementTypeFlag);return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLinetypeTableRecord");const e=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}switch(r){case 2:this.name=String(n.value);break;case 70:this.setAttr("standardFlag",Number(n.value));break;case 3:this.setAttr("description",String(n.value));break;case 72:break;case 73:break;case 40:this.setAttr("totalPatternLength",Number(n.value));break;case 49:e.push({elementLength:Number(n.value),elementTypeFlag:0});break;case 74:e.length>0&&(e[e.length-1].elementTypeFlag=Number(n.value));break}}return this.setAttr("pattern",e),this}}class fr extends Se{constructor(t){typeof t=="string"&&(t={name:t}),super(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRegAppTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbRegAppTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break}}return this}}class gs extends Se{constructor(t,e){t=t||{},Wt(t,{standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"",bigFont:""}),super(t,e),this.setAttr("font",this.getFileNameWithoutExtension(this.getAttr("font")||this.getAttrWithoutException("extendedFont")||this.name))}get obliquingAngle(){return this.getAttr("obliqueAngle")}set obliquingAngle(t){this.setAttr("obliqueAngle",t)}get priorSize(){return this.getAttr("lastHeight")}set priorSize(t){this.setAttr("lastHeight",t)}get textSize(){return this.getAttr("fixedTextHeight")}set textSize(t){this.setAttr("fixedTextHeight",t)}get xScale(){return this.getAttr("widthFactor")}set xScale(t){this.setAttr("widthFactor",t)}get isVertical(){return(this.getAttr("standardFlag")&4)===4}set isVertical(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|4:e&-5)}get isShapeFile(){return(this.getAttr("standardFlag")&1)===1}set isShapeFile(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|1:e&-2)}get fileName(){return this.getAttr("font")}set fileName(t){this.setAttr("font",t)}get bigFontFileName(){return this.getAttr("bigFont")}set bigFontFileName(t){this.setAttr("bigFont",t)}get textStyle(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),fixedTextHeight:this.getAttr("fixedTextHeight"),widthFactor:this.getAttr("widthFactor"),obliqueAngle:this.getAttr("obliqueAngle"),textGenerationFlag:this.getAttr("textGenerationFlag"),lastHeight:this.getAttr("lastHeight"),font:this.getAttr("font"),bigFont:this.getAttr("bigFont"),extendedFont:this.getAttrWithoutException("extendedFont")}}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const n=e.lastIndexOf(".");return n===-1?e:e.substring(0,n)}return t}get dxfFontFileName(){var e;const t=((e=this.fileName)==null?void 0:e.trim())??"";return!t||!this.isShapeFile||/\.[^./\\]+$/i.test(t)?t:`${t}.shx`}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTextStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeDouble(40,this.textSize),t.writeDouble(41,this.xScale),t.writeAngle(50,this.obliquingAngle),t.writeInt16(71,this.getAttr("textGenerationFlag")),t.writeDouble(42,this.priorSize),t.writeString(3,this.dxfFontFileName),t.writeString(4,this.bigFontFileName),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbTextStyleTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.setAttr("standardFlag",Number(e.value));break;case 40:this.textSize=Number(e.value);break;case 41:this.xScale=Number(e.value);break;case 50:this.obliquingAngle=Number(e.value);break;case 71:this.setAttr("textGenerationFlag",Number(e.value));break;case 42:this.priorSize=Number(e.value);break;case 3:this.fileName=this.getFileNameWithoutExtension(String(e.value));break;case 4:this.bigFontFileName=String(e.value);break}}return this}dxfInXData(t){super.dxfInXData(t),this.applyExtendedFontFromXData()}applyExtendedFontFromXData(){const t=this.getXData("ACAD");if(t){for(const n of t)if(Number(n.code)===1e3&&n.value!=null){const r=String(n.value).trim();if(r){this.setAttr("extendedFont",r);break}}}if(!(this.getAttr("font")??"").trim()){const n=this.getAttrWithoutException("extendedFont")||this.name||"";n&&(this.fileName=this.getFileNameWithoutExtension(n))}}}class Su extends Se{constructor(t,e){t=t||{},Wt(t,{standardFlags:0,origin:new b(0,0,0),xAxis:new b(1,0,0),yAxis:new b(0,1,0),isOrthographic:!1,elevation:0}),super(t,e)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get origin(){return this.getAttr("origin")}set origin(t){this.setAttr("origin",t.clone())}get xAxis(){return this.getAttr("xAxis")}set xAxis(t){this.setAttr("xAxis",t.clone())}get yAxis(){return this.getAttr("yAxis")}set yAxis(t){this.setAttr("yAxis",t.clone())}get isOrthographic(){return this.getAttr("isOrthographic")}set isOrthographic(t){this.setAttr("isOrthographic",t)}get elevation(){return this.getAttr("elevation")}set elevation(t){this.setAttr("elevation",t)}get baseUcsId(){return this.getAttrWithoutException("baseUcsId")}set baseUcsId(t){this.setAttr("baseUcsId",t)}get orthographicType(){return this.getAttrWithoutException("orthographicType")}set orthographicType(t){this.setAttr("orthographicType",t)}get orthographicOrigin(){return this.getAttrWithoutException("orthographicOrigin")}set orthographicOrigin(t){this.setAttr("orthographicOrigin",t==null?void 0:t.clone())}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbUCSTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writePoint3d(10,this.origin),t.writePoint3d(11,this.xAxis),t.writePoint3d(12,this.yAxis),t.writeDouble(146,this.elevation),t.writeInt16(79,this.isOrthographic?1:0),this.isOrthographic&&t.writeObjectId(346,this.baseUcsId),this.orthographicType!=null&&this.orthographicOrigin&&(t.writeInt16(71,this.orthographicType),t.writePoint3d(13,this.orthographicOrigin)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbUCSTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 10:this.origin.x=r;break;case 20:this.origin.y=r;break;case 30:this.origin.z=r;break;case 11:this.xAxis.x=r;break;case 21:this.xAxis.y=r;break;case 31:this.xAxis.z=r;break;case 12:this.yAxis.x=r;break;case 22:this.yAxis.y=r;break;case 32:this.yAxis.z=r;break;case 79:this.isOrthographic=r!==0;break;case 146:this.elevation=r;break;case 346:this.baseUcsId=String(e.value);break;case 71:this.orthographicType=r;break;case 13:this.orthographicOrigin=this.orthographicOrigin??new b,this.orthographicOrigin.x=r;break;case 23:this.orthographicOrigin&&(this.orthographicOrigin.y=r);break;case 33:this.orthographicOrigin&&(this.orthographicOrigin.z=r);break}}return this}}const Nm=()=>({center:new L,viewDirectionFromTarget:new b(0,0,1),viewTarget:new b(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:exports.AcGiRenderMode.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new b(0,0,0),ucsXAxis:new b(1,0,0),ucsYAxis:new b(0,1,0),orthographicType:exports.AcGiOrthographicType.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:exports.AcGiDefaultLightingType.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0,aspectRatio:void 0});class ro extends Se{constructor(t,e){t=t||{},Wt(t,{gsView:Nm()}),super(t,e)}get gsView(){return this.getAttr("gsView")}get centerPoint(){return this.gsView.center}set centerPoint(t){this.gsView.center.copy(t)}get viewDirectionFromTarget(){return this.gsView.viewDirectionFromTarget}set viewDirectionFromTarget(t){this.gsView.viewDirectionFromTarget.copy(t)}get viewTarget(){return this.gsView.viewTarget}set viewTarget(t){this.gsView.viewTarget.copy(t)}get viewHeight(){return this.gsView.viewHeight}set viewHeight(t){this.gsView.viewHeight=t}get viewTwistAngle(){return this.gsView.viewTwistAngle}set viewTwistAngle(t){this.gsView.viewTwistAngle=t}get lensLength(){return this.gsView.lensLength}set lensLength(t){this.gsView.lensLength=t}get frontClippingPlane(){return this.gsView.frontClippingPlane}set frontClippingPlane(t){this.gsView.frontClippingPlane=t}get backClippingPlane(){return this.gsView.backClippingPlane}set backClippingPlane(t){this.gsView.backClippingPlane=t}get renderMode(){return this.gsView.renderMode}set renderMode(t){this.gsView.renderMode=t}get viewMode(){return this.gsView.viewMode}set viewMode(t){this.gsView.viewMode=t}get ucsIconSetting(){return this.gsView.ucsIconSetting}set ucsIconSetting(t){this.gsView.ucsIconSetting=t}get ucsOrigin(){return this.gsView.ucsOrigin}set ucsOrigin(t){this.gsView.ucsOrigin.copy(t)}get ucsXAxis(){return this.gsView.ucsXAxis}set ucsXAxis(t){this.gsView.ucsXAxis.copy(t)}get ucsYAxis(){return this.gsView.ucsYAxis}set ucsYAxis(t){this.gsView.ucsYAxis.copy(t)}get orthographicType(){return this.gsView.orthographicType}set orthographicType(t){this.gsView.orthographicType=t}get shadePlotSetting(){return this.gsView.shadePlotSetting}set shadePlotSetting(t){this.gsView.shadePlotSetting=t}get shadePlotObjectId(){return this.gsView.shadePlotObjectId}set shadePlotObjectId(t){this.gsView.shadePlotObjectId=t}get visualStyleObjectId(){return this.gsView.visualStyleObjectId}set visualStyleObjectId(t){this.gsView.visualStyleObjectId=t}get isDefaultLightingOn(){return this.gsView.isDefaultLightingOn}set isDefaultLightingOn(t){this.gsView.isDefaultLightingOn=t}get defaultLightingType(){return this.gsView.defaultLightingType}set defaultLightingType(t){this.gsView.defaultLightingType=t}get brightness(){return this.gsView.brightness}set brightness(t){this.gsView.brightness=t}get contrast(){return this.gsView.contrast}set contrast(t){this.gsView.contrast=t}get ambientColor(){return this.gsView.ambientColor}set ambientColor(t){this.gsView.ambientColor=t}get aspectRatio(){return this.gsView.aspectRatio}set aspectRatio(t){this.gsView.aspectRatio=t}}const Oc=2,Rm=.45,Bm=1e5;function Dm(i){var n;const t=i,e=t.aspectRatio??((n=t.gsView)==null?void 0:n.aspectRatio);return Number.isFinite(e)?e:void 0}function Fm(i,t){if(Number.isFinite(t)&&t>0)return t;const e=Dm(i);return e!=null&&e>0?e:1}function Xm(i,t){const e=Math.max(i.min.x,t.min.x),n=Math.max(i.min.y,t.min.y),r=Math.min(i.max.x,t.max.x),s=Math.min(i.max.y,t.max.y);return e>=r||n>=s?0:(r-e)*(s-n)}function Nc(i){return{x:(i.min.x+i.max.x)/2,y:(i.min.y+i.max.y)/2}}function Ym(i){if(!i||i.isEmpty())return!1;const t=i.max.x-i.min.x,e=i.max.y-i.min.y;return t>0&&e>0}class Be extends ro{static isActiveVportName(t){return t.toLowerCase()===Pn.toLowerCase()}constructor(t,e){t=t||{},Wt(t,{circleSides:100,lowerLeftCorner:new L(0,0),upperRightCorner:new L(1,1),snapBase:new L(0,0),snapAngle:0,snapSpacing:new L(0,0),standardFlag:0,gridSpacing:new L,gridMajor:10,ucsElevation:0}),super(t,e)}get circleSides(){return this.getAttr("circleSides")}set circleSides(t){this.setAttr("circleSides",t)}get center(){return this.centerPoint}set center(t){this.centerPoint=t}get lowerLeftCorner(){return this.getAttr("lowerLeftCorner")}set lowerLeftCorner(t){this.getAttr("lowerLeftCorner").copy(t)}get upperRightCorner(){return this.getAttr("upperRightCorner")}set upperRightCorner(t){this.getAttr("upperRightCorner").copy(t)}get snapBase(){return this.getAttr("snapBase")}set snapBase(t){this.getAttr("snapBase").copy(t)}get snapAngle(){return this.getAttr("snapAngle")}set snapAngle(t){this.setAttr("snapAngle",t)}get snapIncrements(){return this.getAttr("snapSpacing")}set snapIncrements(t){this.getAttr("snapSpacing").copy(t)}get gridMajor(){return this.getAttr("gridMajor")}set gridMajor(t){this.setAttr("gridMajor",t)}get gridIncrements(){return this.getAttr("gridSpacing")}set gridIncrements(t){this.getAttr("gridSpacing").copy(t)}get standardFlag(){return this.getAttr("standardFlag")}set standardFlag(t){this.setAttr("standardFlag",t)}get snapEnabled(){return!!(this.standardFlag&256)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}modelViewBox(t){const e=this.centerPoint,n=this.viewHeight;if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(n)||n<=0)return;const r=this.viewTwistAngle;let s=e.x,a=e.y;if(Number.isFinite(r)&&r!==0){const d=Math.cos(r),g=Math.sin(r);s=e.x*d-e.y*g,a=e.x*g+e.y*d}const o=this.viewTarget;o&&Number.isFinite(o.x)&&Number.isFinite(o.y)&&(s+=o.x,a+=o.y);const c=Fm(this,t),l=n*c,h=n/2,u=l/2;return new wt().expandByPoint({x:s-u,y:a-h}).expandByPoint({x:s+u,y:a+h})}static isModelViewBoxUsable(t,e){if(t.isEmpty()||e.isEmpty())return!1;const n=t.max.x-t.min.x,r=t.max.y-t.min.y,s=e.max.x-e.min.x,a=e.max.y-e.min.y;if(n<=0||r<=0||s<=0||a<=0||n>s*Oc||r>a*Oc)return!1;const o=Math.max(s,a)*Rm,c=Nc(t),l=Nc(e);if(Math.hypot(c.x-l.x,c.y-l.y)>o)return!1;const u=n*r,d=Xm(t,e);return!(d<=0||d/u<.25)}resolveModelViewBox(t,e){const n=this.modelViewBox(t);if(!(!n||!Be.isModelViewBoxStructurallyValid(n))){if(Ym(e)){if(!Be.isModelViewBoxUsable(n,e))return}else if(!Be.isModelViewBoxPlausibleWithoutExtents(n))return;return n}}static isModelViewBoxStructurallyValid(t){if(t.isEmpty())return!1;const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Number.isFinite(e)&&Number.isFinite(n)&&e>0&&n>0}static isModelViewBoxPlausibleWithoutExtents(t){const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Math.max(e,n)<=Bm}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewportTableRecord"),t.writeString(2,this.name),t.writeDouble(40,this.gsView.viewHeight),this.gsView.aspectRatio!=null&&Number.isFinite(this.gsView.aspectRatio)&&t.writeDouble(41,this.gsView.aspectRatio),t.writeDouble(45,this.gsView.viewHeight),t.writePoint2d(10,this.lowerLeftCorner),t.writePoint2d(11,this.upperRightCorner),t.writePoint2d(12,this.center),t.writePoint2d(13,this.snapBase),t.writePoint2d(14,this.snapIncrements),t.writePoint2d(15,this.gridIncrements),t.writeInt16(70,this.standardFlag),t.writeInt16(71,this.circleSides),t.writeDouble(42,this.gsView.lensLength),t.writePoint3d(16,this.gsView.viewDirectionFromTarget),t.writePoint3d(17,this.gsView.viewTarget),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.gsView.viewTwistAngle),t.writeInt16(61,this.gridMajor),t.writeDouble(146,this.ucsElevation),t.writeInt16(170,this.shadePlotSetting),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLightingOn?1:0),t.writeInt16(281,this.backgroundObjectId?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(333,this.shadePlotObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewportTableRecord");const e=[...this.gsView.frozenLayers??[]];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}const s=Number(n.value);switch(r){case 2:this.name=String(n.value);break;case 1:this.gsView.styleSheet=String(n.value);break;case 10:this.lowerLeftCorner.x=s;break;case 20:this.lowerLeftCorner.y=s;break;case 11:this.upperRightCorner.x=s;break;case 21:this.upperRightCorner.y=s;break;case 12:this.center.x=s,this.gsView.center.x=s;break;case 22:this.center.y=s,this.gsView.center.y=s;break;case 13:this.snapBase.x=s;break;case 23:this.snapBase.y=s;break;case 14:this.snapIncrements.x=s;break;case 24:this.snapIncrements.y=s;break;case 15:this.gridIncrements.x=s;break;case 25:this.gridIncrements.y=s;break;case 16:this.gsView.viewDirectionFromTarget.x=s;break;case 26:this.gsView.viewDirectionFromTarget.y=s;break;case 36:this.gsView.viewDirectionFromTarget.z=s;break;case 17:this.gsView.viewTarget.x=s;break;case 27:this.gsView.viewTarget.y=s;break;case 37:this.gsView.viewTarget.z=s;break;case 40:case 45:this.gsView.viewHeight=s;break;case 41:Number.isFinite(s)&&s>0&&(this.gsView.aspectRatio=s);break;case 42:this.gsView.lensLength=s;break;case 43:this.gsView.frontClippingPlane=s;break;case 44:this.gsView.backClippingPlane=s;break;case 50:this.snapAngle=s;break;case 51:this.gsView.viewTwistAngle=s;break;case 61:this.gridMajor=s;break;case 70:this.standardFlag=s;break;case 71:s>=1&&s<=2e4&&(this.circleSides=s),this.gsView.viewMode=s;break;case 72:this.circleSides=s;break;case 74:this.gsView.ucsIconSetting=s;break;case 110:this.gsView.ucsOrigin.x=s;break;case 120:this.gsView.ucsOrigin.y=s;break;case 130:this.gsView.ucsOrigin.z=s;break;case 111:this.gsView.ucsXAxis.x=s;break;case 121:this.gsView.ucsXAxis.y=s;break;case 131:this.gsView.ucsXAxis.z=s;break;case 112:this.gsView.ucsYAxis.x=s;break;case 122:this.gsView.ucsYAxis.y=s;break;case 132:this.gsView.ucsYAxis.z=s;break;case 79:this.gsView.orthographicType=s;break;case 281:this.gsView.renderMode=s;break;case 331:case 441:e.push(String(n.value));break;case 332:this.backgroundObjectId=String(n.value);break;case 146:this.ucsElevation=s;break;case 170:this.shadePlotSetting=s;break;case 282:this.defaultLightingType=s;break;case 292:this.isDefaultLightingOn=s!==0;break;case 333:this.shadePlotObjectId=String(n.value);break;case 348:this.gsView.visualStyleObjectId=String(n.value);break}}return this.gsView.frozenLayers=e,this}}class Iu extends ro{constructor(t,e){t=t||{};const n=t.viewWidth!==void 0;Wt(t,{standardFlags:0,ucsAssociated:!1,cameraPlottable:!1,ucsElevation:0}),super(t,e),n||(this.viewWidth=this.viewHeight)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get viewWidth(){return this.getAttr("viewWidth")}set viewWidth(t){this.setAttr("viewWidth",t)}get ucsAssociated(){return this.getAttr("ucsAssociated")}set ucsAssociated(t){this.setAttr("ucsAssociated",t)}get cameraPlottable(){return this.getAttr("cameraPlottable")}set cameraPlottable(t){this.setAttr("cameraPlottable",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}get ucsObjectId(){return this.getAttrWithoutException("ucsObjectId")}set ucsObjectId(t){this.setAttr("ucsObjectId",t)}get ucsBaseObjectId(){return this.getAttrWithoutException("ucsBaseObjectId")}set ucsBaseObjectId(t){this.setAttr("ucsBaseObjectId",t)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get liveSectionObjectId(){return this.getAttrWithoutException("liveSectionObjectId")}set liveSectionObjectId(t){this.setAttr("liveSectionObjectId",t)}get sunObjectId(){return this.getAttrWithoutException("sunObjectId")}set sunObjectId(t){this.setAttr("sunObjectId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeDouble(40,this.gsView.viewHeight),t.writePoint2d(10,this.centerPoint),t.writeDouble(41,this.viewWidth),t.writePoint3d(11,this.gsView.viewDirectionFromTarget),t.writePoint3d(12,this.gsView.viewTarget),t.writeDouble(42,this.gsView.lensLength),t.writeDouble(43,this.gsView.frontClippingPlane),t.writeDouble(44,this.gsView.backClippingPlane),t.writeAngle(50,this.gsView.viewTwistAngle),t.writeInt16(71,this.gsView.viewMode),t.writeInt16(281,this.gsView.renderMode),t.writeInt16(72,this.ucsAssociated?1:0),t.writeInt16(73,this.cameraPlottable?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(334,this.liveSectionObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),t.writeObjectId(361,this.sunObjectId),this.ucsAssociated&&(t.writePoint3d(110,this.gsView.ucsOrigin),t.writePoint3d(111,this.gsView.ucsXAxis),t.writePoint3d(112,this.gsView.ucsYAxis),t.writeInt16(79,this.gsView.orthographicType),t.writeDouble(146,this.ucsElevation),t.writeObjectId(345,this.ucsObjectId),t.writeObjectId(346,this.ucsBaseObjectId)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 40:this.gsView.viewHeight=r;break;case 10:this.centerPoint.x=r;break;case 20:this.centerPoint.y=r;break;case 41:this.viewWidth=r;break;case 11:this.gsView.viewDirectionFromTarget.x=r;break;case 21:this.gsView.viewDirectionFromTarget.y=r;break;case 31:this.gsView.viewDirectionFromTarget.z=r;break;case 12:this.gsView.viewTarget.x=r;break;case 22:this.gsView.viewTarget.y=r;break;case 32:this.gsView.viewTarget.z=r;break;case 42:this.gsView.lensLength=r;break;case 43:this.gsView.frontClippingPlane=r;break;case 44:this.gsView.backClippingPlane=r;break;case 50:this.gsView.viewTwistAngle=r*Math.PI/180;break;case 71:this.gsView.viewMode=r;break;case 281:this.gsView.renderMode=r;break;case 72:this.ucsAssociated=r!==0;break;case 73:this.cameraPlottable=r!==0;break;case 332:this.backgroundObjectId=String(e.value);break;case 334:this.liveSectionObjectId=String(e.value);break;case 348:this.gsView.visualStyleObjectId=String(e.value);break;case 361:this.sunObjectId=String(e.value);break;case 110:this.gsView.ucsOrigin.x=r;break;case 120:this.gsView.ucsOrigin.y=r;break;case 130:this.gsView.ucsOrigin.z=r;break;case 111:this.gsView.ucsXAxis.x=r;break;case 121:this.gsView.ucsXAxis.y=r;break;case 131:this.gsView.ucsXAxis.z=r;break;case 112:this.gsView.ucsYAxis.x=r;break;case 122:this.gsView.ucsYAxis.y=r;break;case 132:this.gsView.ucsYAxis.z=r;break;case 79:this.gsView.orthographicType=r;break;case 146:this.ucsElevation=r;break;case 345:this.ucsObjectId=String(e.value);break;case 346:this.ucsBaseObjectId=String(e.value);break}}return this}}const fs=192,si=193,ps=194,ms=195,Eu=200;function Fs(i){if(i.isByBlock)return si<<24>>0;if(i.isByLayer)return fs<<24>>0;const t=i.colorIndex;if(t!=null&&t>0&&t<256)return(ms<<24|t&255)>>0;const e=i.RGB;return e!=null?(ps<<24|e&16777215)>>0:si<<24>>0}function re(i){const t=new j(exports.AcCmColorMethod.ByBlock);switch(i>>>24&255){case fs:t.setByLayer();break;case si:case Eu:t.setByBlock();break;case ms:t.colorIndex=i&255;break;case ps:t.setRGBValue(i&16777215);break;default:i===256?t.setByLayer():i===0?t.setByBlock():i>0&&i<256&&(t.colorIndex=i);break}return t}const zm=127;var Lu=(i=>(i[i.Extents=1]="Extents",i[i.Circle=2]="Circle",i[i.Circle3P=3]="Circle3P",i[i.CircularArc=4]="CircularArc",i[i.CircularArc3P=5]="CircularArc3P",i[i.Polyline=6]="Polyline",i[i.Polygon=7]="Polygon",i[i.Mesh=8]="Mesh",i[i.Shell=9]="Shell",i[i.Text=10]="Text",i[i.Text2=11]="Text2",i[i.Xline=12]="Xline",i[i.Ray=13]="Ray",i[i.AttributeColor=14]="AttributeColor",i[i.AttributeLayer=16]="AttributeLayer",i[i.AttributeLinetype=18]="AttributeLinetype",i[i.AttributeMarker=19]="AttributeMarker",i[i.AttributeFill=20]="AttributeFill",i[i.AttributeTrueColor=22]="AttributeTrueColor",i[i.AttributeLineweight=23]="AttributeLineweight",i[i.AttributeLtscale=24]="AttributeLtscale",i[i.AttributeThickness=25]="AttributeThickness",i[i.PushMatrix=29]="PushMatrix",i[i.PopMatrix=31]="PopMatrix",i[i.PolylineWithNormals=32]="PolylineWithNormals",i[i.LwPolyline=33]="LwPolyline",i[i.UnicodeText=36]="UnicodeText",i[i.UnicodeText2=38]="UnicodeText2",i[i.EllipticArc=44]="EllipticArc",i))(Lu||{});const ze=x.Z_AXIS,Vm=529;function jm(i){const t=i>>24&255;return t===ps?{rgb:i&16777215}:t===fs?{colorIndex:256}:t===si?{colorIndex:0}:t===ms?{colorIndex:i&255}:{colorIndex:i&255}}function Xs(i){return new x(i.x,i.y,i.z??0)}function Ys(i){return new b(i.x,i.y,i.z??0)}function Rc(i){return{x:i[0],y:i[1],z:i[2]}}class fa{constructor(t,e={}){this._index=8,this._colorIndex=256,this._layer="0",this._linetype=dt,this._lineweight=exports.AcGiLineWeight.ByLineWeightDefault,this._ltscale=1,this._thickness=0,this._fill=!1,this._layers=[],this._linetypes=[],this._matrices=[],this._buffer=t,this._database=e.database,this._dxfversion=e.dxfversion??"AC1015",this._encoding=e.encoding??(this._dxfversion<"AC1024"?"windows-1252":"utf-8"),this._layer=e.defaultLayer??"0",this._database&&(this._database.tables.layerTable.newIterator().toArray().forEach(n=>this._layers.push(n.name)),this._database.tables.linetypeTable.newIterator().toArray().forEach(n=>this._linetypes.push(n.name)))}get extents(){return this._extents}scanExtents(){var n;const t=this._buffer;let e=this._index;for(;e<t.length;){const r=new DataView(t.buffer,t.byteOffset+e,8),s=r.getUint32(0,!0),a=r.getUint32(4,!0);if(s<8)break;if(a===1){const o=t.subarray(e+8,e+s);return this.readExtents(o),((n=this._extents)==null?void 0:n.length)===2?[this._extents[0],this._extents[1]]:void 0}e+=s}}worldDraw(t){const e=[],n=t.subEntityTraits,r={color:n.color.clone(),lineType:n.lineType,lineTypeScale:n.lineTypeScale,lineWeight:n.lineWeight,layer:n.layer,thickness:n.thickness},s=this._buffer;let a=this._index;for(;a<s.length;){const o=new DataView(s.buffer,s.byteOffset+a,8),c=o.getUint32(0,!0),l=o.getUint32(4,!0);if(c<8)break;const h=s.subarray(a+8,a+c);this.dispatchChunk(t,e,l,h),l!==20&&(this._fill=!1),a+=c}if(n.color=r.color,n.lineType=r.lineType,n.lineTypeScale=r.lineTypeScale,n.lineWeight=r.lineWeight,n.layer=r.layer,n.thickness=r.thickness,e.length!==0)return t.group(e)}dispatchChunk(t,e,n,r){switch(n){case 1:this.readExtents(r);break;case 2:this.drawCircle(t,e,r);break;case 3:this.drawCircle3P(t,e,r);break;case 4:this.drawCircularArc(t,e,r);break;case 5:this.drawCircularArc3P(t,e,r);break;case 44:this.drawEllipticArc(t,e,r);break;case 6:this.drawPolyline(t,e,r,!1);break;case 32:this.drawPolyline(t,e,r,!0);break;case 7:this.drawPolygon(t,e,r);break;case 33:this.drawLwPolyline(t,e,r);break;case 9:this.drawShell(t,e,r);break;case 10:this.drawText(t,e,r,!1);break;case 36:this.drawText(t,e,r,!0);break;case 11:this.drawText2(t,e,r,!1);break;case 38:this.drawText2(t,e,r,!0);break;case 12:this.drawXline(t,e,r,!1);break;case 13:this.drawXline(t,e,r,!0);break;case 14:this.readAttributeColor(r);break;case 16:this.readAttributeLayer(r);break;case 18:this.readAttributeLinetype(r);break;case 20:this.readAttributeFill(r);break;case 22:this.readAttributeTrueColor(r);break;case 23:this.readAttributeLineweight(r);break;case 24:this.readAttributeLtscale(r);break;case 25:this.readAttributeThickness(r);break;case 29:this.pushMatrix(r);break;case 31:this.popMatrix();break}}applyTraits(t){const e=t.subEntityTraits;e.layer=this._layer,e.lineTypeScale=this._ltscale,e.thickness=this._thickness,e.lineWeight=this._lineweight,this._rgbColor!=null?e.color=new j(exports.AcCmColorMethod.ByColor,this._rgbColor):this._colorIndex===256?e.color=new j(exports.AcCmColorMethod.ByLayer):this._colorIndex===0?e.color=new j(exports.AcCmColorMethod.ByBlock):this._colorIndex===7?e.color=new j(exports.AcCmColorMethod.ByACI,7):e.color=new j(exports.AcCmColorMethod.ByACI,this._colorIndex),e.lineType={name:this._linetype,type:this.resolveLineStyleType(),standardFlag:0,description:"",totalPatternLength:0}}resolveLineStyleType(){return this._linetype===dt?"ByLayer":this._linetype===oe?"ByBlock":"UserSpecified"}transformPoint(t){const e=Array.isArray(t)?Rc(t):t,n=Ys(e);return this._matrices.length>0&&n.applyMatrix4(this._matrices[this._matrices.length-1]),n}transformVector(t){const e=Array.isArray(t)?Rc(t):t,n=Xs(e);return this._matrices.length>0&&n.transformDirection(this._matrices[this._matrices.length-1]),!Number.isFinite(n.lengthSq())||n.lengthSq()<1e-24?ze.clone():n.normalize()}pushEntity(t,e){e&&t.push(e)}readExtents(t){const e=new Yt(t),n=e.readVertex(),r=e.readVertex();this._extents=[new b(n[0],n[1],n[2]),new b(r[0],r[1],r[2])]}readAttributeColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);this._rgbColor=void 0,this._colorIndex=e>256||e<0?256:e}readAttributeLayer(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e<this._layers.length&&(this._layer=this._layers[e])}readAttributeLinetype(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e+2<this._linetypes.length?this._linetype=this._linetypes[e+2]:e===32766?this._linetype=oe:this._linetype=dt}readAttributeFill(t){this._fill=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0)!==0}readAttributeTrueColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0),n=jm(e);this._rgbColor=n.rgb,n.colorIndex!=null&&(this._colorIndex=n.colorIndex)}readAttributeLineweight(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e>Vm?this._lineweight=e-4294967296:this._lineweight=e}readAttributeLtscale(t){this._ltscale=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}readAttributeThickness(t){this._thickness=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}pushMatrix(t){const e=new Float64Array(t.buffer,t.byteOffset,16),n=new D().fromArray(Array.from(e));n.transpose(),this._matrices.push(n)}popMatrix(){this._matrices.length>0&&this._matrices.pop()}loadVertices(t,e){const n=new Yt(t);let r=n.readLong();e&&(r+=1);const s=[];for(;r>0;){const[o,c,l]=n.readVertex();s.push(this.transformPoint({x:o,y:c,z:l})),r-=1}let a=ze;return e&&s.length>0&&(a=Xs(s.pop())),{vertices:s,normal:a}}drawCircle(t,e,n){const r=new Yt(n),s=r.readVertex(),a=r.readFloat(),o=this.transformVector(r.readVertex());let c=Ys({x:s[0],y:s[1],z:s[2]});o.equals(ze)||(c=Rt(c,o)),c=this.transformPoint(c);const l=Fe(o),h=new St(_t(c,o),a,0,V,o,l);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircle3P(t,e,n){const r=new Yt(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=St.computeCenterPoint(s,a,o);if(!c)return;const l=c.distanceTo(s),h=new St(c,l,0,V,ze);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircularArc(t,e,n){const r=new Yt(n),s=r.readVertex(),a=r.readFloat(),o=r.readVertex(),c=r.readVertex(),l=r.readFloat(),h=this.transformVector(o),u=Ys({x:s[0],y:s[1],z:s[2]}),d=Xs({x:c[0],y:c[1],z:c[2]});this._matrices.length>0&&d.transformDirection(this._matrices[this._matrices.length-1]);const g=Number.isFinite(d.lengthSq())&&d.lengthSq()>=1e-24?d.normalize():Fe(h),f=0,p=l,m=new St(this.transformPoint(u),a,f,p,h,g);this.applyTraits(t),this.pushEntity(e,t.circularArc(m))}drawCircularArc3P(t,e,n){const r=new Yt(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=St.computeCenterPoint(s,o,a);if(!c)return;const l=c.distanceTo(s),h=be(c,s,ze),u=be(c,o,ze),d=new St(c,l,h,u,ze);this.applyTraits(t),this.pushEntity(e,t.circularArc(d))}drawEllipticArc(t,e,n){const r=new Yt(n),s=this.transformPoint(r.readVertex()),a=this.transformVector(r.readVertex()),o=r.readFloat(),c=r.readFloat(),l=r.readFloat(),h=r.readFloat(),u=r.readFloat(),d=_t({x:Math.cos(u)*o,y:Math.sin(u)*o,z:0},a),g=new ue(s,a,d,o,c,l,h);this.applyTraits(t),this.pushEntity(e,t.ellipticalArc(g))}drawPolyline(t,e,n,r){var a,o;const{vertices:s}=this.loadVertices(n,r);if(s.length!==0){if(s.length===1){this.applyTraits(t);const c=((a=this._database)==null?void 0:a.pdmode)??0,l=((o=this._database)==null?void 0:o.pdsize)??0;this.pushEntity(e,t.point(s[0],{displayMode:c,displaySize:l}));return}this.applyTraits(t),this.pushEntity(e,t.lines(s))}}drawPolygon(t,e,n){const{vertices:r}=this.loadVertices(n,!1);if(r.length<2)return;if(this._fill){const a=new Q(r.map(l=>({x:l.x,y:l.y})),!0),o=new Kt;o.add(a);const c=t.subEntityTraits;c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},c.drawOrder=-1,this.applyTraits(t),this.pushEntity(e,t.area(o));return}const s=[...r,r[0]];this.applyTraits(t),this.pushEntity(e,t.lines(s))}drawLwPolyline(t,e,n){const r=new Gh(n,this._dxfversion,this._encoding);let s=0,a=!1;r.readUnsignedLong();const o=r.readBitShort();o&8&&(s=r.readBitDouble()),o&512&&(a=!0);const c=r.readBitLong();if(c<=0)return;const l=o&16?r.readBitLong():0;this._dxfversion>="AC1024"&&(o&1024&&r.readBitLong(),o&32&&r.readBitLong());const h=r.readRawDouble(2),u=[this.transformPoint({x:h[0],y:h[1],z:s})];let d=h;for(let g=1;g<c;g++){const f=r.readBitDoubleDefault(1,d[0]),p=r.readBitDoubleDefault(1,d[1]);d=[f,p],u.push(this.transformPoint({x:f,y:p,z:s}))}for(let g=0;g<l;g++)r.readBitDouble();a&&u.length>1&&u.push(u[0].clone()),this.applyTraits(t),this.pushEntity(e,t.lines(u))}drawShell(t,e,n){const r=new Yt(n),s=r.readLong(),a=[];for(let h=0;h<s;h++){const[u,d,g]=r.readVertex();a.push(this.transformPoint({x:u,y:d,z:g}))}const o=r.readLong(),c=[];let l=0;for(;l<o;){const h=Math.abs(r.readSignedLong());l+=1+h;const u=[];for(let g=0;g<h;g++)u.push(r.readLong());const d=u.map(g=>a[g]).filter(Boolean);if(d.length>=3)for(let g=0;g<d.length;g++)c.push(d[g]),c.push(d[(g+1)%d.length])}c.length!==0&&(this.applyTraits(t),this.pushEntity(e,t.lines(c)))}drawText(t,e,n,r){const s=new Yt(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),[l,h,u]=s.readStruct([8,8,8]),d=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:d,height:l,widthFactor:h,obliqueAngle:u})}drawText2(t,e,n,r){const s=new Yt(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),l=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);s.readSignedLong(),s.readSignedLong();const[h,u,d]=s.readStruct([8,8,8]);s.readFloat(),this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:l,height:h,widthFactor:u,obliqueAngle:d})}drawTextPrimitive(t,e,n){const r=Math.atan2(n.textDirection.y,n.textDirection.x),s={text:n.text,height:n.height,width:1/0,widthFactor:n.widthFactor,position:n.insert,rotation:r*180/Math.PI,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft},a={name:st,standardFlag:0,fixedTextHeight:0,widthFactor:n.widthFactor,obliqueAngle:n.obliqueAngle*180/Math.PI,textGenerationFlag:0,lastHeight:n.height,font:"txt",bigFont:""};this.applyTraits(t),this.pushEntity(e,t.mtext(s,a))}drawXline(t,e,n,r){const s=new Yt(n),a=this.transformPoint(s.readVertex()),o=this.transformPoint(s.readVertex()),c=new x().subVectors(o,a);if(c.lengthSq()===0)return;const l=1e6,h=r?a.clone().add(c.normalize().multiplyScalar(l)):a.clone().sub(c.normalize().multiplyScalar(l)),u=o.clone().add(c.normalize().multiplyScalar(l));this.applyTraits(t),this.pushEntity(e,t.lines([h,u]))}}function Gm(i,t){if(!(t!=null&&t.length))return;const e=Ai(t);return i!=null&&i>0&&e.length>=i?e.subarray(0,i):e}const Um="ASM_Data";function pa(i){return String(i).trim().toUpperCase()}function Hm(i){let t,e;const n={};for(;!i.atEndOfObject&&!i.atEof;){const r=i.readItem();if(!r)break;switch(Number(r.code)){case 320:t=pa(String(r.value));break;case 2:e=String(r.value),n[e]??(n[e]=[]);break;case 310:e&&(r.value instanceof Uint8Array?n[e].push(r.value):n[e].push(String(r.value)));break}}return{ownerHandle:t,hexChunks:n[Um]??[]}}function Wm(i){const t={};for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)!==0){i.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"||n==="EOF"){i.readItem();break}if(i.readItem(),n==="ACDSRECORD"){const r=Hm(i);if(r.ownerHandle&&r.hexChunks.length>0){const s=Ai(r.hexChunks);s.length>0&&(t[r.ownerHandle]=s)}}else i.skipToEndOfObject()}return{byOwnerHandle:t}}function Cu(i,t){for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)===0){if(String(e.value).toUpperCase()==="ENDSEC"){i.readItem();break}break}if(i.readItem(),Number(e.code)!==9)continue;const n=String(e.value).toUpperCase();$m(i,t,n)}}function $m(i,t,e){switch(e){case"$ACADVER":{const n=Zt(i);n&&(t.version=n);break}case"$CECOLOR":{const n=tt(i);t.cecolor.colorIndex=n??256;break}case"$ANGBASE":t.angbase=tt(i)??0;break;case"$ANGDIR":t.angdir=tt(i)??0;break;case"$AUNITS":{const n=tt(i);n!=null&&(t.aunits=n);break}case"$AUPREC":{const n=tt(i);n!=null&&(t.auprec=n);break}case"$LUNITS":{const n=tt(i);n!=null&&(t.lunits=n);break}case"$LUPREC":{const n=tt(i);n!=null&&(t.luprec=n);break}case"$UNITMODE":{const n=tt(i);n!=null&&(t.unitmode=n);break}case"$MEASUREMENT":{const n=tt(i);n!=null&&(t.measurement=n);break}case"$CELTYPE":t.celtype=Zt(i)||dt;break;case"$CETRANSPARENCY":{const n=Zt(i)||"ByLayer";bt.instance().setVar(k.CETRANSPARENCY,n,t);break}case"$CELTSCALE":t.celtscale=tt(i)??1;break;case"$CELWEIGHT":{const n=tt(i);n!=null&&(t.celweight=n);break}case"$LWDISPLAY":t.lwdisplay=(tt(i)??0)!==0;break;case"$TILEMODE":t.tilemode=(tt(i)??1)!==0;break;case"$PSLTSCALE":t.psltscale=(tt(i)??1)!==0;break;case"$CMLSTYLE":case"CMLSTYLE":t.cmlstyle=Zt(i)||we;break;case"$CMLSCALE":case"CMLSCALE":{const n=tt(i);n!=null&&Number.isFinite(n)&&(t.cmlscale=n);break}case"$CMLEADERSTYLE":case"CMLEADERSTYLE":t.cmleaderstyle=Zt(i)||ve;break;case"$HPLAYER":case"HPLAYER":t.hplayer=Zt(i)||".";break;case"$LTSCALE":t.ltscale=tt(i)??1;break;case"$EXTMAX":{const n=Bc(i);n&&(t.extmax=n);break}case"$EXTMIN":{const n=Bc(i);n&&(t.extmin=n);break}case"$INSUNITS":{const n=tt(i);n!=null&&(t.insunits=n);break}case"$OSMODE":t.osmode=tt(i)??0;break;case"$ORTHOMODE":t.orthomode=tt(i)??0;break;case"$COMPAREHATCH":{const n=Yn(tt(i),ns,is);n!=null&&(t.comparehatch=n);break}case"$COMPARERCMARGIN":{const n=Yn(tt(i),rs,ss);n!=null&&(t.comparercmargin=n);break}case"$COMPARETEXT":{const n=Yn(tt(i),as,os);n!=null&&(t.comparetext=n);break}case"$COMPARETOLERANCE":{const n=Yn(tt(i),cs,ls);n!=null&&(t.comparetolerance=n);break}case"$PDMODE":t.pdmode=tt(i)??0;break;case"$PDSIZE":t.pdsize=tt(i)??0;break;case"$TEXTSTYLE":t.textstyle=Zt(i)||st;break;case"$DIMSTYLE":t.dimstyle=Zt(i)||st;break;case"$CLAYER":t.clayer=Zt(i)||"0";break;case"$HANDSEED":{const n=Zt(i);n&&t.initializeHandleSeed(n);break}default:qm(i);break}}function Zt(i){const t=i.readItem();if(t){if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}return String(t.value)}}function tt(i){const t=i.readItem();if(!t)return;if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}const e=Number(t.value);return Number.isFinite(e)?e:void 0}function Bc(i){let t=0,e=0,n=0,r=!1;for(;!i.atEof;){const s=i.peekItem();if(!s)break;const a=Number(s.code);if(a===9||a===0)break;i.readItem();const o=Number(s.value);a===10?(t=o,r=!0):a===20?(e=o,r=!0):a===30&&(n=o,r=!0)}return r?new b(t,e,n):void 0}function qm(i){for(;!i.atEof;){const t=i.peekItem();if(!t)break;const e=Number(t.code);if(e===9||e===0)break;i.readItem()}}class Tu{constructor(t){this._expression=t}get expression(){return this._expression}}var Mu=(i=>(i[i.Cancel=0]="Cancel",i[i.Ok=1]="Ok",i))(Mu||{});class ys{constructor(){this._name="",this._filterExpression="",this._nestedFilters=[],this._parent=null,this._allowDelete=!0,this._allowRename=!0,this._dynamicallyGenerated=!1,this._isProxy=!1}get name(){return this._name}setName(t){return!this.allowRename()&&this._name.length>0?!1:(this._name=t,!0)}set name(t){this.setName(t)}get filterExpression(){return this._filterExpression}setFilterExpression(t){return this.isIdFilter()?!1:(this._filterExpression=t??"",!0)}set filterExpression(t){this.setFilterExpression(t)}filterExpressionTree(){return this.isIdFilter()||!this._filterExpression?null:new Tu(this._filterExpression)}getNestedFilters(){return this._nestedFilters}get nestedFilters(){return this._nestedFilters}parent(){return this._parent}isIdFilter(){return!1}allowNested(){return!0}allowDelete(){return this._allowDelete}setAllowDelete(t){this._allowDelete=t}allowRename(){return this._allowRename}setAllowRename(t){this._allowRename=t}dynamicallyGenerated(){return this._dynamicallyGenerated}setDynamicallyGenerated(t){this._dynamicallyGenerated=t}isProxy(){return this._isProxy}setIsProxy(t){this._isProxy=t}addNested(t){return!t||t===this||!this.allowNested()||!(this._parent==null)&&!this.isIdFilter()&&t.isIdFilter()||this._nestedFilters.includes(t)?!1:(t._parent&&t._parent.removeNested(t),t._parent=this,this._nestedFilters.push(t),!0)}removeNested(t){const e=this._nestedFilters.indexOf(t);return e<0?!1:(this._nestedFilters.splice(e,1),t._parent===this&&(t._parent=null),!0)}generateNested(){return!1}compareTo(t){return t?this.isIdFilter()===t.isIdFilter()&&this._name===t._name&&this._filterExpression===t._filterExpression:!1}filter(t){return t?this._filterExpression?Km(this._filterExpression,t):!0:!1}showEditor(){return 0}}function Km(i,t){const e=i.trim();return e?Dc(e,"OR").some(r=>Dc(r,"AND").every(a=>Zm(a,t))):!0}function Dc(i,t){const e=new RegExp(`\\s+${t}\\s+`,"i");return i.split(e).map(n=>n.trim()).filter(n=>n.length>0)}function Zm(i,t){var a;const e=i.trim().match(/^([A-Za-z_]+)\s*(==|=)\s*"?(.*?)"?\s*$/);if(!e)return!1;const n=e[1].toUpperCase(),r=e[3],s=Jm(r);switch(n){case"NAME":return Qm(t.name,r);case"LOCKED":return s!=null?t.isLocked===s:!1;case"FROZEN":return s!=null?t.isFrozen===s:!1;case"OFF":return s!=null?t.isOff===s:!1;case"PLOT":return s!=null?t.isPlottable===s:!1;case"COLOR":{const o=(a=t.color)==null?void 0:a.colorIndex;return o!=null&&String(o)===r}case"LINETYPE":return t.linetype.localeCompare(r,void 0,{sensitivity:"accent"})===0;default:return!1}}function Qm(i,t){return/[*?]/.test(t)?new RegExp(`^${t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".")}$`,"i").test(i):i.localeCompare(t,void 0,{sensitivity:"accent"})===0}function Jm(i){const t=i.trim().toLowerCase();return t==="true"||t==="1"?!0:t==="false"||t==="0"?!1:null}class Pe{constructor(t,e){this._root=t??Pe.createDefaultRoot(),this._current=e===void 0?this._root:e}static createDefaultRoot(){const t=new ys;return t.setName("All"),t.setAllowDelete(!1),t.setAllowRename(!1),t.setFilterExpression(""),t}get root(){return this._root}get current(){return this._current}set current(t){this._current=t}clone(){return new Pe(this._root,this._current)}}class Ou extends ys{constructor(){super(),this._layerIds=[]}isIdFilter(){return!0}layerIds(){return this._layerIds}get layerIdList(){return this._layerIds}addLayerId(t){return!t||this._layerIds.includes(t)?!1:(this._layerIds.push(t),!0)}removeLayerId(t){const e=this._layerIds.indexOf(t);return e<0?!1:(this._layerIds.splice(e,1),!0)}filter(t){return t?this._layerIds.includes(t.objectId):!1}setFilterExpression(t){return!1}}const bs="ACAD_LAYERFILTERS",En="ACLYDICTIONARY";function Nu(i){const t=Pe.createDefaultRoot(),e=new Pe(t,t),n=Fc(i,En),r=Fc(i,bs);if(n){for(const[s,a]of Object.entries(n.entries)){const o=ma(i,a,s);o&&t.addNested(o)}return e}if(r)for(const[s,a]of Object.entries(r.entries)){const o=ma(i,a,s);o&&t.addNested(o)}return e}function Ru(i){const t=[];for(const e of i.root.getNestedFilters())t.push(Fu(e));return{nodes:t}}function Bu(i){const t=new Ke;for(const e of i)t.add({code:e.code,value:e.value});return t}function ty(i){return i?i.toArray().map(t=>({code:Number(t.code),value:t.value})):[]}function Fc(i,t){let e;for(const n of i.dictionaries.values()){const r=n.entries[t];if(!r)continue;const s=i.dictionaries.get(ye(r));if(!s)continue;if(!(n.ownerObjectId?i.xrecords.has(ye(n.ownerObjectId)):!1))return s;e=s}return e}function ma(i,t,e){const n=i.xrecords.get(ye(t));if(!n)return;const r=Du(n.data,e),s=r.isIdFilter?new Ou:new ys;if(s.setAllowRename(!0),s.setName(r.name||e),!r.isIdFilter)s.setFilterExpression(r.filterExpression);else{const a=s;for(const o of r.layerIds)a.addLayerId(o)}for(const a of ey(i,n)){const o=ma(i,a.handle,a.key);o&&s.addNested(o)}return s}function ey(i,t){const e=[],n=new Set,r=ye(t.handle),s=t.extensionDictionaryId?ye(t.extensionDictionaryId):void 0,a=(o,c)=>{const l=ye(c);n.has(l)||(n.add(l),e.push({key:o,handle:c}))};for(const o of i.dictionaries.values()){const c=o.ownerObjectId?ye(o.ownerObjectId):void 0;if(!c||!(c===r||c===s))continue;const h=o.entries[En];if(h){const u=i.dictionaries.get(ye(h));if(u){for(const[d,g]of Object.entries(u.entries))a(d,g);continue}}for(const[u,d]of Object.entries(o.entries))u===En||u===bs||a(u,d)}return e}function Du(i,t=""){const e=[],n=[];let r=0,s,a,o;for(const f of i){const p=Number(f.code),m=f.value;p===1&&typeof m=="string"?e.push(m):p===300&&typeof m=="string"?a=m:p===301&&typeof m=="string"?o=m:p===70||p===90?r=Number(m)||0:p===290||p===280?s=Number(m)===1:(p===330||p===340||p===350||p===360)&&m!=null&&String(m).length>0&&n.push(ye(String(m)))}const c=e[0],h=a||(c==="AcLyLayerFilter"||c==="AcLyLayerGroup"?void 0:c)||t,u=e[1]??"";let d=o??u;!o&&d&&d!=="*"&&!/==/.test(d)&&(d=`NAME=="${d}"`);const g=o!=null&&o.length>0?!1:s===!0&&n.length>0?!0:n.length>0&&(d.length===0||d==="*");return{name:h,filterExpression:g?"":d,flags:r,layerIds:n,isIdFilter:g}}function Fu(i){const t=i.isIdFilter(),e=Xu(i),n=i.getNestedFilters().map(s=>Fu(s));return{key:i.name||(t?"Group":"Filter"),isIdFilter:t,data:e,children:n}}function Xu(i){const t=[];if(t.push({code:1,value:i.name}),i.isIdFilter()){t.push({code:1,value:""}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:1});const e=i;for(const n of e.layerIds())t.push({code:330,value:n})}else t.push({code:1,value:i.filterExpression||"*"}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:0});return t}function ye(i){return i.trim().toUpperCase()}class Yu extends vt{constructor(){super(...arguments),this._name="",this._unnamed=!1,this._selectable=!0,this._entityIds=[]}get name(){return this._name}set name(t){this._name=t}get unnamed(){return this._unnamed}set unnamed(t){this._unnamed=t}get selectable(){return this._selectable}set selectable(t){this._selectable=t}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbGroup"),this.name&&t.writeString(300,this.name),t.writeInt16(70,this.unnamed?1:0),t.writeInt16(71,this.selectable?1:0);for(const e of this._entityIds)t.writeObjectId(340,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbGroup"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 300:this._name=String(e.value);break;case 70:this._unnamed=Number(e.value)!==0;break;case 71:this._selectable=Number(e.value)!==0;break;case 340:this._entityIds.push(String(e.value));break}}return this}}class zu extends vt{constructor(){super(),this._boundaryVertices=[],this._clipBoundaryDisplayEnabled=!1,this._frontClippingEnabled=!1,this._backClippingEnabled=!1}get boundaryVertices(){return this._boundaryVertices}set boundaryVertices(t){this._boundaryVertices=t.map(e=>e.clone())}get clipBoundaryNormal(){return this._clipBoundaryNormal}set clipBoundaryNormal(t){this._clipBoundaryNormal=t==null?void 0:t.clone()}get clipBoundaryOrigin(){return this._clipBoundaryOrigin}set clipBoundaryOrigin(t){this._clipBoundaryOrigin=t==null?void 0:t.clone()}get clipBoundaryDisplayEnabled(){return this._clipBoundaryDisplayEnabled}set clipBoundaryDisplayEnabled(t){this._clipBoundaryDisplayEnabled=t}get frontClippingEnabled(){return this._frontClippingEnabled}set frontClippingEnabled(t){this._frontClippingEnabled=t}get frontClippingDistance(){return this._frontClippingDistance}set frontClippingDistance(t){this._frontClippingDistance=t}get backClippingEnabled(){return this._backClippingEnabled}set backClippingEnabled(t){this._backClippingEnabled=t}get backClippingDistance(){return this._backClippingDistance}set backClippingDistance(t){this._backClippingDistance=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFilter"),this._boundaryVertices.length>0&&(t.writeInt16(70,this._boundaryVertices.length),this._boundaryVertices.forEach(e=>t.writePoint2d(10,e)),t.writeVector3d(210,this._clipBoundaryNormal),t.writePoint3d(11,this._clipBoundaryOrigin),t.writeInt16(71,this._clipBoundaryDisplayEnabled?1:0),t.writeInt16(72,this._frontClippingEnabled?1:0),this._frontClippingEnabled&&this._frontClippingDistance!=null&&t.writeDouble(40,this._frontClippingDistance),t.writeInt16(73,this._backClippingEnabled?1:0),this._backClippingEnabled&&this._backClippingDistance!=null&&t.writeDouble(41,this._backClippingDistance)),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFilter");let e=null,n=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===100){t.pushBackItem(r);break}const a=Number(r.value);switch(s){case 70:break;case 10:e&&this._boundaryVertices.push(new L(e.x,e.y)),e={x:a,y:0};break;case 20:e&&(e.y=a);break;case 210:this._clipBoundaryNormal=this._clipBoundaryNormal??new b,this._clipBoundaryNormal.x=a;break;case 220:this._clipBoundaryNormal&&(this._clipBoundaryNormal.y=a);break;case 230:this._clipBoundaryNormal&&(this._clipBoundaryNormal.z=a);break;case 11:this._clipBoundaryOrigin=this._clipBoundaryOrigin??new b,this._clipBoundaryOrigin.x=a;break;case 21:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.y=a);break;case 31:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.z=a);break;case 71:this._clipBoundaryDisplayEnabled=a!==0;break;case 72:this._frontClippingEnabled=a!==0;break;case 73:this._backClippingEnabled=a!==0;break;case 40:n||(this._frontClippingDistance=a,n=!0);break;case 41:this._backClippingDistance=a;break}}return e&&this._boundaryVertices.push(new L(e.x,e.y)),this}}class Vu extends zu{constructor(){super(),this._layerNames=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}add(t){const e=t==null?void 0:t.trim();return!e||this._layerNames.includes(e)?!1:(this._layerNames.push(e),!0)}getAt(t){if(t<0||t>=this._layerNames.length)throw new Error("The layer index is out of range!");return this._layerNames[t]}remove(t){const e=this._layerNames.indexOf(t);return e<0?!1:(this._layerNames.splice(e,1),!0)}layerCount(){return this._layerNames.length}indexClass(){return"AcDbLayerIndex"}isValid(){return this._layerNames.some(t=>t.length>0)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerFilter");for(const e of this._layerNames)t.writeString(8,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbLayerFilter");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 8:this.add(String(e.value));break;case 100:return t.pushBackItem(e),this}}return this}}class ju extends vt{constructor(){super(),this._lastUpdatedAt=0,this._lastUpdatedAtU=0,this._isUptoDate=!1,this._objectBeingIndexedId=""}get lastUpdatedAt(){return this._lastUpdatedAt}set lastUpdatedAt(t){this._lastUpdatedAt=t}get lastUpdatedAtU(){return this._lastUpdatedAtU}set lastUpdatedAtU(t){this._lastUpdatedAtU=t}get isUptoDate(){return this._isUptoDate}set isUptoDate(t){this._isUptoDate=t}objectBeingIndexedId(){return this._objectBeingIndexedId}setObjectBeingIndexedId(t){this._objectBeingIndexedId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbIndex"),t.writeDouble(40,this.lastUpdatedAt),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbIndex");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 40:this.lastUpdatedAt=Number(e.value),this.lastUpdatedAtU=this.lastUpdatedAt;break;case 100:return t.pushBackItem(e),this}}return this}}class Gu extends ju{constructor(){super(),this._layerNames=[],this._idBufferIds=[],this._idBufferEntryCounts=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}get idBufferIds(){return this._idBufferIds}set idBufferIds(t){this._idBufferIds=[...t]}get idBufferEntryCounts(){return this._idBufferEntryCounts}set idBufferEntryCounts(t){this._idBufferEntryCounts=[...t]}get entries(){const t=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length),e=[];for(let n=0;n<t;n++)e.push({layerName:this._layerNames[n]??"",idBufferId:this._idBufferIds[n]??"",idBufferEntryCount:this._idBufferEntryCounts[n]??0});return e}set entries(t){this._layerNames=t.map(e=>e.layerName),this._idBufferIds=t.map(e=>e.idBufferId),this._idBufferEntryCounts=t.map(e=>e.idBufferEntryCount)}compute(t,e){if(e&&this.setObjectBeingIndexedId(e.objectId),t){this._layerNames=[];for(const n of t.newIterator())this._layerNames.push(n.name)}return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}newIterator(t){return null}rebuildFull(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}rebuildModified(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerIndex");const e=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length);for(let n=0;n<e;n++)this._layerNames[n]!=null&&t.writeString(8,this._layerNames[n]),this._idBufferIds[n]&&t.writeHandle(360,this._idBufferIds[n]),this._idBufferEntryCounts[n]!=null&&t.writeInt32(90,this._idBufferEntryCounts[n]);return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLayerIndex");const e=[],n=[],r=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;switch(Number(s.code)){case 8:e.push(String(s.value));break;case 360:n.push(String(s.value));break;case 90:r.push(Number(s.value));break;case 100:return t.pushBackItem(s),this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}return this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}class _s extends vt{constructor(){super(),this._contentType=2,this._drawMLeaderOrderType=1,this._drawLeaderOrderType=0,this._bitFlags=0,this._maxLeaderSegmentsPoints=-1,this._firstSegmentAngleConstraint=0,this._secondSegmentAngleConstraint=0,this._leaderLineType=1,this._leaderLineColor=new j(exports.AcCmColorMethod.ByLayer),this._leaderLineWeight=-2,this._enableLanding=!0,this._landingGap=2,this._enableDogleg=!0,this._doglegLength=8,this._description="",this._arrowSize=4,this._defaultMTextContents="",this._textLeftAttachmentType=1,this._textAngleType=1,this._textAlignmentType=0,this._textRightAttachmentType=1,this._textColor=new j(exports.AcCmColorMethod.ByLayer),this._textHeight=4,this._enableFrameText=!1,this._textAlignAlwaysLeft=!1,this._alignSpace=0,this._blockColor=new j(exports.AcCmColorMethod.ByBlock),this._blockScale=new x(1,1,1),this._enableBlockScale=!0,this._blockRotation=0,this._enableBlockRotation=!1,this._blockConnectionType=0,this._scale=1,this._overwritePropChanged=!1,this._annotative=!1,this._breakSize=0,this._textAttachmentDirection=0,this._bottomTextAttachmentType=9,this._topTextAttachmentType=9,this._extendLeaderToText=!1}get unknown1(){return this._unknown1}set unknown1(t){this._unknown1=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get drawMLeaderOrderType(){return this._drawMLeaderOrderType}set drawMLeaderOrderType(t){this._drawMLeaderOrderType=t}get drawLeaderOrderType(){return this._drawLeaderOrderType}set drawLeaderOrderType(t){this._drawLeaderOrderType=t}get bitFlags(){return this._bitFlags}set bitFlags(t){this._bitFlags=t}get maxLeaderSegmentsPoints(){return this._maxLeaderSegmentsPoints}set maxLeaderSegmentsPoints(t){this._maxLeaderSegmentsPoints=t}get maxLeaderSegmentPoints(){return this.maxLeaderSegmentsPoints}set maxLeaderSegmentPoints(t){this.maxLeaderSegmentsPoints=t}get firstSegmentAngleConstraint(){return this._firstSegmentAngleConstraint}set firstSegmentAngleConstraint(t){this._firstSegmentAngleConstraint=t}get secondSegmentAngleConstraint(){return this._secondSegmentAngleConstraint}set secondSegmentAngleConstraint(t){this._secondSegmentAngleConstraint=t}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor.copy(t)}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get enableLanding(){return this._enableLanding}set enableLanding(t){this._enableLanding=t}get landingEnabled(){return this.enableLanding}set landingEnabled(t){this.enableLanding=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get enableDogleg(){return this._enableDogleg}set enableDogleg(t){this._enableDogleg=t}get doglegEnabled(){return this.enableDogleg}set doglegEnabled(t){this.enableDogleg=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get description(){return this._description}set description(t){this._description=t}get arrowSymbolId(){return this._arrowSymbolId}set arrowSymbolId(t){this._arrowSymbolId=t}get arrowheadId(){return this.arrowSymbolId}set arrowheadId(t){this.arrowSymbolId=t}get arrowSize(){return this._arrowSize}set arrowSize(t){this._arrowSize=t}get arrowheadSize(){return this.arrowSize}set arrowheadSize(t){this.arrowSize=t}get defaultMTextContents(){return this._defaultMTextContents}set defaultMTextContents(t){this._defaultMTextContents=t}get defaultMText(){return this.defaultMTextContents}set defaultMText(t){this.defaultMTextContents=t}get textString(){return this.defaultMTextContents}set textString(t){this.defaultMTextContents=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textStyle(){return this.textStyleId}set textStyle(t){this.textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor.copy(t)}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get enableFrameText(){return this._enableFrameText}set enableFrameText(t){this._enableFrameText=t}get textFrameEnabled(){return this.enableFrameText}set textFrameEnabled(t){this.enableFrameText=t}get textAlignAlwaysLeft(){return this._textAlignAlwaysLeft}set textAlignAlwaysLeft(t){this._textAlignAlwaysLeft=t}get alignSpace(){return this._alignSpace}set alignSpace(t){this._alignSpace=t}get blockId(){return this._blockId}set blockId(t){this._blockId=t}get blockContentId(){return this.blockId}set blockContentId(t){this.blockId=t}get blockColor(){return this._blockColor}set blockColor(t){this._blockColor.copy(t)}get blockContentColor(){return this.blockColor}set blockContentColor(t){this.blockColor=t}get blockScale(){return this._blockScale.clone()}set blockScale(t){this._blockScale.copy(t)}get blockContentScale(){return this.blockScale}set blockContentScale(t){this.blockScale=t}get enableBlockScale(){return this._enableBlockScale}set enableBlockScale(t){this._enableBlockScale=t}get blockContentScaleEnabled(){return this.enableBlockScale}set blockContentScaleEnabled(t){this.enableBlockScale=t}get blockRotation(){return this._blockRotation}set blockRotation(t){this._blockRotation=t}get blockContentRotation(){return this.blockRotation}set blockContentRotation(t){this.blockRotation=t}get enableBlockRotation(){return this._enableBlockRotation}set enableBlockRotation(t){this._enableBlockRotation=t}get blockContentRotationEnabled(){return this.enableBlockRotation}set blockContentRotationEnabled(t){this.enableBlockRotation=t}get blockConnectionType(){return this._blockConnectionType}set blockConnectionType(t){this._blockConnectionType=t}get blockContentConnectionType(){return this.blockConnectionType}set blockContentConnectionType(t){this.blockConnectionType=t}get scale(){return this._scale}set scale(t){this._scale=t}get scaleFactor(){return this.scale}set scaleFactor(t){this.scale=t}get overwritePropChanged(){return this._overwritePropChanged}set overwritePropChanged(t){this._overwritePropChanged=t}get overwritePropertyValue(){return this.overwritePropChanged}set overwritePropertyValue(t){this.overwritePropChanged=t}get annotative(){return this._annotative}set annotative(t){this._annotative=t}get breakSize(){return this._breakSize}set breakSize(t){this._breakSize=t}get breakGapSize(){return this.breakSize}set breakGapSize(t){this.breakSize=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get bottomTextAttachmentType(){return this._bottomTextAttachmentType}set bottomTextAttachmentType(t){this._bottomTextAttachmentType=t}get bottomTextAttachmentDirection(){return this.bottomTextAttachmentType}set bottomTextAttachmentDirection(t){this.bottomTextAttachmentType=t}get topTextAttachmentType(){return this._topTextAttachmentType}set topTextAttachmentType(t){this._topTextAttachmentType=t}get topTextAttachmentDirection(){return this.topTextAttachmentType}set topTextAttachmentDirection(t){this.topTextAttachmentType=t}get extendLeaderToText(){return this._extendLeaderToText}set extendLeaderToText(t){this._extendLeaderToText=t}get unknown2(){return this._unknown2}set unknown2(t){this._unknown2=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeaderStyle"),t.writeInt16(179,this.unknown1),t.writeInt16(170,this.contentType),t.writeInt16(171,this.drawMLeaderOrderType),t.writeInt16(172,this.drawLeaderOrderType),t.writeInt32(90,this.maxLeaderSegmentsPoints),t.writeDouble(40,this.firstSegmentAngleConstraint),t.writeDouble(41,this.secondSegmentAngleConstraint),t.writeInt16(173,this.leaderLineType),t.writeInt32(91,Fs(this.leaderLineColor)),t.writeHandle(340,this.leaderLineTypeId),t.writeInt32(92,this.leaderLineWeight),t.writeBoolean(290,this.enableLanding),t.writeDouble(42,this.landingGap),t.writeBoolean(291,this.enableDogleg),t.writeDouble(43,this.doglegLength),t.writeString(3,this.description),t.writeHandle(341,this.arrowSymbolId),t.writeDouble(44,this.arrowSize),t.writeString(300,this.defaultMTextContents),t.writeHandle(342,this.textStyleId),t.writeInt16(174,this.textLeftAttachmentType),t.writeInt16(175,this.textAngleType),t.writeInt16(176,this.textAlignmentType),t.writeInt16(178,this.textRightAttachmentType),t.writeInt32(93,Fs(this.textColor)),t.writeDouble(45,this.textHeight),t.writeBoolean(292,this.enableFrameText),t.writeBoolean(297,this.textAlignAlwaysLeft),t.writeDouble(46,this.alignSpace),t.writeHandle(343,this.blockId),t.writeInt32(94,Fs(this.blockColor)),t.writeDouble(47,this._blockScale.x),t.writeDouble(49,this._blockScale.y),t.writeDouble(140,this._blockScale.z),t.writeBoolean(293,this.enableBlockScale),t.writeDouble(141,this.blockRotation),t.writeBoolean(294,this.enableBlockRotation),t.writeInt16(177,this.blockConnectionType),t.writeDouble(142,this.scale),t.writeBoolean(295,this.overwritePropChanged),t.writeBoolean(296,this.annotative),t.writeDouble(143,this.breakSize),t.writeInt16(271,this.textAttachmentDirection),t.writeInt16(272,this.bottomTextAttachmentType),t.writeInt16(273,this.topTextAttachmentType),t.writeBoolean(298,this.unknown2),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbMLeaderStyle");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 179:this.unknown1=r;break;case 170:this.contentType=r;break;case 171:this.drawMLeaderOrderType=r;break;case 172:this.drawLeaderOrderType=r;break;case 90:this.maxLeaderSegmentsPoints=r;break;case 40:this.firstSegmentAngleConstraint=r;break;case 41:this.secondSegmentAngleConstraint=r;break;case 173:this.leaderLineType=r;break;case 91:this.leaderLineColor=re(r);break;case 340:this.leaderLineTypeId=String(e.value);break;case 92:this.leaderLineWeight=r;break;case 290:this.enableLanding=r!==0;break;case 42:this.landingGap=r;break;case 291:this.enableDogleg=r!==0;break;case 43:this.doglegLength=r;break;case 3:this.description=String(e.value);break;case 341:this.arrowSymbolId=String(e.value);break;case 44:this.arrowSize=r;break;case 300:this.defaultMTextContents=String(e.value);break;case 342:this.textStyleId=String(e.value);break;case 174:this.textLeftAttachmentType=r;break;case 175:this.textAngleType=r;break;case 176:this.textAlignmentType=r;break;case 178:this.textRightAttachmentType=r;break;case 93:this.textColor=re(r);break;case 45:this.textHeight=r;break;case 292:this.enableFrameText=r!==0;break;case 297:this.textAlignAlwaysLeft=r!==0;break;case 46:this.alignSpace=r;break;case 343:this.blockId=String(e.value);break;case 94:this.blockColor=re(r);break;case 47:this._blockScale.x=r;break;case 49:this._blockScale.y=r;break;case 140:this._blockScale.z=r;break;case 293:this.enableBlockScale=r!==0;break;case 141:this.blockRotation=r;break;case 294:this.enableBlockRotation=r!==0;break;case 177:this.blockConnectionType=r;break;case 142:this.scale=r;break;case 295:this.overwritePropChanged=r!==0;break;case 296:this.annotative=r!==0;break;case 143:this.breakSize=r;break;case 271:this.textAttachmentDirection=r;break;case 272:this.bottomTextAttachmentType=r;break;case 273:this.topTextAttachmentType=r;break;case 298:this.unknown2=r!==0;break;case 100:return t.pushBackItem(e),this}}return this}}class so extends vt{constructor(){super(),this._styleName="STANDARD",this._flags=0,this._description="",this._fillColor=new j,this._startAngle=90,this._endAngle=90,this._elements=[]}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get flags(){return this._flags}set flags(t){this._flags=t}get description(){return this._description}set description(t){this._description=t}get fillColor(){return this._fillColor}set fillColor(t){this._fillColor.copy(t)}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=t}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=t}get elementCount(){return this._elements.length}get elements(){return this._elements.map(t=>({offset:t.offset,color:t.color.clone(),lineType:t.lineType}))}set elements(t){this._elements=t.map(e=>({offset:e.offset,color:e.color.clone(),lineType:e.lineType}))}addElement(t){this._elements.push({offset:t.offset,color:t.color.clone(),lineType:t.lineType})}removeElementAt(t){if(t<0||t>=this._elements.length)throw new Error("The element index is out of range!");this._elements.splice(t,1)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMlineStyle"),t.writeString(2,this.styleName),t.writeInt16(70,this.flags),t.writeString(3,this.description),t.writeCmColor(this.fillColor),t.writeDouble(51,this.startAngle),t.writeDouble(52,this.endAngle),t.writeInt16(71,this.elementCount),this._elements.forEach(e=>{t.writeDouble(49,e.offset),t.writeCmColor(e.color),t.writeString(6,e.lineType)}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMlineStyle");const e=[];let n,r=0;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 2:this.styleName=String(s.value);break;case 70:this.flags=o;break;case 3:this.description=String(s.value);break;case 51:this.startAngle=o;break;case 52:this.endAngle=o;break;case 71:r=o;break;case 49:{n={offset:o,color:new j,lineType:"BYLAYER"},n.color.colorIndex=256,e.push(n);break}case 62:n?n.color.colorIndex=o:this.fillColor.colorIndex=o;break;case 420:n?n.color.setRGBValue(o):this.fillColor.setRGBValue(o);break;case 6:n&&(n.lineType=String(s.value));break;case 100:return t.pushBackItem(s),this.finishMlineElements(e,r),this}}return this.finishMlineElements(e,r),this}finishMlineElements(t,e){const n=Math.max(e,t.length);if(n<=0){this.elements=[];return}this.elements=Array.from({length:n},(r,s)=>{const a=t[s];if(a)return a;const o=new j;return o.colorIndex=256,{offset:0,color:o,lineType:"BYLAYER"}})}}class Uu extends vt{constructor(){super(),this._isLoaded=!0,this._resolutionUnits=0,this._sourceFileName="",this._classVersion=0,this._imageSize=new L,this._pixelSize=new L(1,1)}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize.copy(t)}get isLoaded(){return this._isLoaded}set isLoaded(t){this._isLoaded=t}get resolutionUnits(){return this._resolutionUnits}set resolutionUnits(t){this._resolutionUnits=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImageDef"),t.writeInt32(90,this.classVersion),t.writeString(1,this.sourceFileName),t.writePoint2d(10,this.imageSize),t.writeDouble(11,this.pixelSize.x),t.writeDouble(12,this.pixelSize.y),t.writeInt16(280,this.isLoaded?1:0),t.writeInt16(281,this.resolutionUnits),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbRasterImageDef");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.sourceFileName=String(e.value);break;case 90:this.classVersion=r;break;case 10:this.imageSize.x=r;break;case 20:this.imageSize.y=r;break;case 11:this.pixelSize.x=r;break;case 12:this.pixelSize.y=r;break;case 280:this.isLoaded=r!==0;break;case 281:this.resolutionUnits=r;break;case 100:return t.pushBackItem(e),this}}return this}}class Hu extends vt{constructor(){super(...arguments),this._entityIds=[]}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbSortentsTable");for(const e of this._entityIds)t.writeObjectId(331,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSortentsTable"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 331:this._entityIds.push(String(e.value));break}}return this}}var Wu=(i=>(i[i.NotApplicable=0]="NotApplicable",i[i.Ignore=1]="Ignore",i[i.Replace=2]="Replace",i[i.XrefMangleName=3]="XrefMangleName",i[i.MangleName=4]="MangleName",i))(Wu||{});class ao extends vt{constructor(){super(...arguments),this._data=null}get data(){return this._data}set data(t){this._data=t}clear(){var t;(t=this._data)==null||t.clear()}clone(){return super.clone()}getDuplicateRecordCloning(){return this._cloningFlag??0}setDuplicateRecordCloning(t){this._cloningFlag=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXrecord"),t.writeInt16(280,this._cloningFlag??1),t.writeResultBuffer(this.data),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXrecord");const e=new Ke;for(;!t.atEndOfObject&&!t.atEof;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===1001||r>=1e3&&r<=1071){t.pushBackItem(n);break}if(r===100){t.pushBackItem(n);break}switch(r){case 280:this._cloningFlag=Number(n.value);break;default:e.add({code:n.code,value:n.value});break}}return this._data=e.length>0?e:null,this}}const Nt=i=>i?i.trim().toUpperCase():"";class $u{constructor(t){this._db=t,this._dictionaries=new Map,this._xrecords=new Map,this._unknownObjectCount=0}get unknownObjectCount(){return this._unknownObjectCount}read(t){for(this._unknownObjectCount=0;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}t.readItem(),this.readObject(t,n)}this.finishNamedObjectDictionaries(),this.finishLayerFilterTree(),this.linkLayoutsToBlockTableRecords(),this._db.objects.layout.numEntries===0&&this._db.createDefaultData({layout:!0})}readObject(t,e){switch(e){case"LAYOUT":{const n=new Pi;n.dxfIn(t),n.layoutName&&this._db.objects.layout.setAt(n.layoutName,n);break}case"IMAGEDEF":{const n=new Uu;n.dxfIn(t),this._db.objects.imageDefinition.setAt(n.objectId,n);break}case"LAYER_FILTER":{const n=new Vu;n.dxfIn(t),this._db.objects.layerFilter.setAt(n.objectId,n);break}case"LAYER_INDEX":{const n=new Gu;n.dxfIn(t),this._db.objects.layerIndex.setAt(n.objectId,n);break}case"MLEADERSTYLE":{const n=new _s;n.dxfIn(t),this._db.objects.mleaderStyle.setAt(n.objectId,n);break}case"MLINESTYLE":{const n=new so;n.dxfIn(t),this._db.objects.mlineStyle.setAt(n.styleName||n.objectId,n);break}case"GROUP":{const n=new Yu;n.dxfIn(t);const r=n.name||n.objectId;this._db.objects.group.setAt(r,n);break}case"SORTENTSTABLE":{const n=new Hu;n.dxfIn(t),this._db.objects.sortentsTable.setAt(n.objectId,n);break}case"DICTIONARY":{const n=this.readPersistDictionary(t);n.handle&&this._dictionaries.set(Nt(n.handle),n);break}case"XRECORD":{const n=new ao;n.dxfIn(t);const r=Nt(n.objectId);if(r){this._db.objects.xrecord.setAt(r,n);const s={handle:r,ownerObjectId:Nt(n.ownerId),data:n.data?n.data.toArray().map(a=>({code:Number(a.code),value:a.value})):[]};n.extensionDictionary&&(s.extensionDictionaryId=Nt(n.extensionDictionary)),this._xrecords.set(r,s)}break}default:this._unknownObjectCount+=1,t.skipToEndOfObject();break}}finishNamedObjectDictionaries(){if(this._dictionaries.size===0)return;let t;for(const s of this._dictionaries.values())if(!s.ownerObjectId||s.ownerObjectId==="0"){t=s;break}if(!(t!=null&&t.handle))return;const e=this._db.objects.dictionary;e.objectId=t.handle,e.ownerId="0";const n={ACAD_LAYOUT:this._db.objects.layout,ACAD_GROUP:this._db.objects.group,ACAD_SORTENTS:this._db.objects.sortentsTable,ACAD_MLEADERSTYLE:this._db.objects.mleaderStyle,ACAD_MLINESTYLE:this._db.objects.mlineStyle,ISM_RASTER_IMAGE_DICT:this._db.objects.imageDefinition,MLIGHT_XRECORD:this._db.objects.xrecord},r=this.collectLoadedObjectsByHandle();for(const[s,a]of Object.entries(t.entries)){const o=n[s.toUpperCase()];if(!o)continue;o.objectId=a,o.ownerId=t.handle,e.setAt(s,o);const c=this._dictionaries.get(Nt(a));if(c)for(const[l,h]of Object.entries(c.entries)){const u=r.get(Nt(h));u&&(o.getAt(l)||o.setAt(l,u))}}}collectLoadedObjectsByHandle(){const t=new Map,e=n=>{const r=Nt(n.objectId);r&&t.set(r,n)};for(const[,n]of this._db.objects.layout.entries())e(n);for(const[,n]of this._db.objects.group.entries())e(n);for(const[,n]of this._db.objects.sortentsTable.entries())e(n);for(const[,n]of this._db.objects.imageDefinition.entries())e(n);for(const[,n]of this._db.objects.mleaderStyle.entries())e(n);for(const[,n]of this._db.objects.mlineStyle.entries())e(n);for(const[,n]of this._db.objects.layerFilter.entries())e(n);for(const[,n]of this._db.objects.layerIndex.entries())e(n);for(const[,n]of this._db.objects.xrecord.entries())e(n);return t}readPersistDictionary(t){const e={handle:"",ownerObjectId:"",entries:{}};let n;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);switch(s){case 5:e.handle=String(r.value);break;case 330:e.ownerObjectId=String(r.value);break;case 100:case 280:case 281:break;case 3:n=String(r.value);break;case 350:case 340:case 360:{const a=Nt(String(r.value));n?(e.entries[n]=a,n=void 0):s===360&&!e.extensionDictionaryId&&(e.extensionDictionaryId=a);break}}}return e.handle=Nt(e.handle),e.ownerObjectId=Nt(e.ownerObjectId),e.extensionDictionaryId&&(e.extensionDictionaryId=Nt(e.extensionDictionaryId)),e}finishLayerFilterTree(){if(this._dictionaries.size===0&&this._xrecords.size===0)return;const t=Nu({dictionaries:this._dictionaries,xrecords:this._xrecords});t.root.getNestedFilters().length>0&&(this._db.layerFilters=t),this._dictionaries.clear(),this._xrecords.clear()}linkLayoutsToBlockTableRecords(){const t=this._db.tables.blockTable,e=it.MODEL_SPACE_NAME.toUpperCase();for(const[,n]of this._db.objects.layout.entries()){if(n.layoutName==="Model"){const a=t.modelSpace;n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;continue}const r=Nt(n.objectId);let s=!1;for(const a of t.newIterator())if(Nt(a.layoutId)===r){n.blockTableRecordId=a.objectId,s=!0;break}if(!s&&n.blockTableRecordId){const a=t.getIdAt(n.blockTableRecordId);a&&(a.layoutId=n.objectId)}else if(!s){for(const a of t.newIterator())if(a.isPaperSapce&&a.name.toUpperCase()!==e&&!a.layoutId){n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;break}}}}}class qu{constructor(t,e={}){this._db=t,this._options=e,this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap=new Map,this._yieldGate=new Qr(this._options.yieldBudgetMs??Zn)}get unknownEntityCount(){return this._unknownEntityCount}get unknownObjectCount(){return this._unknownObjectCount}async read(t){for(this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap.clear(),t.database=this._db;!t.atEof;){const e=t.readItem();if(!e)break;if(Number(e.code)!==0)continue;const n=String(e.value).toUpperCase();if(n==="EOF")break;if(n==="SECTION"){const r=this.readSectionName(t);await this.readSection(t,r);continue}}return this.flushRemainingAttributes(),{unknownEntityCount:this._unknownEntityCount,unknownObjectCount:this._unknownObjectCount}}readSectionName(t){const e=t.readItem();return e&&Number(e.code)===2?String(e.value).toUpperCase():(e&&t.pushBackItem(e),"")}async readSection(t,e){switch(e){case"HEADER":Cu(t,this._db),await this.reportParseProgress(t);break;case"CLASSES":this.readClassesSection(t),await this.reportParseProgress(t);break;case"TABLES":this.readTablesSection(t),await this.reportParseProgress(t);break;case"BLOCKS":await this.readBlocksSection(t),await this.reportParseProgress(t);break;case"ENTITIES":await this.readEntitiesSection(t),await this.reportParseProgress(t);break;case"OBJECTS":{const n=new $u(this._db);n.read(t),this._unknownObjectCount+=n.unknownObjectCount}await this.reportParseProgress(t);break;case"ACDSDATA":this.applyAcdsDataToSolids(Wm(t)),await this.reportParseProgress(t);break;case"THUMBNAILIMAGE":this.readThumbnailImageSection(t),await this.reportParseProgress(t);break;default:this.skipUntilEndSec(t),await this.reportParseProgress(t);break}}applyAcdsDataToSolids(t){const e=Object.keys(t.byOwnerHandle);if(e.length===0)return;const n=new Map;for(const r of this._db.tables.blockTable.newIterator())for(const s of r.newIterator())s instanceof ni&&n.set(pa(s.objectId),s);for(const r of e){const s=t.byOwnerHandle[r];if(!s)continue;const a=n.get(pa(r));a&&a.setSabBytes(s)}}readThumbnailImageSection(t){let e=0;const n=[];for(;!t.atEof;){const s=t.readItem();if(!s)break;if(Number(s.code)===0){if(String(s.value).toUpperCase()==="ENDSEC")break;t.pushBackItem(s);break}Number(s.code)===90?e=Number(s.value)||0:Number(s.code)===310&&(s.value instanceof Uint8Array?n.push(s.value):n.push(String(s.value)))}if(n.length===0)return;const r=Ai(n);!r||r.length===0||(this._db.thumbnailImage=e>0&&r.length>e?r.subarray(0,e):r)}readClassesSection(t){const e=[];for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDSEC"){t.readItem();break}if(r==="CLASS"){t.readItem();const s=this.readClassRecord(t);(s.name||s.cppClassName)&&e.push(s);continue}t.readItem(),t.skipToEndOfObject()}e.length>0&&(this._db.classes=e)}readClassRecord(t){const e={name:"",cppClassName:"",appName:"",proxyFlag:0,instanceCount:0,wasProxy:!1,isEntity:!1};for(;!t.atEndOfObject&&!t.atEof;){const n=t.readItem();if(!n)break;switch(Number(n.code)){case 1:e.name=String(n.value);break;case 2:e.cppClassName=String(n.value);break;case 3:e.appName=String(n.value);break;case 90:e.proxyFlag=Number(n.value);break;case 91:e.instanceCount=Number(n.value);break;case 280:e.wasProxy=Number(n.value)!==0;break;case 281:e.isEntity=Number(n.value)!==0;break}}return e}readTablesSection(t){for(;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}if(n==="TABLE"){t.readItem();const r=this.readTableName(t);this.readTable(t,r);continue}t.readItem(),t.skipToEndOfObject()}this._db.ensureTextStyleDefaults()}readTableName(t){for(;!t.atEof;){const e=t.peekItem();if(!e)return"";const n=Number(e.code);if(n===0)return"";if(t.readItem(),n===2)return String(e.value).toUpperCase()}return""}readTable(t,e){switch(e){case"LAYER":this.readNamedTable(t,"LAYER",()=>new Si,n=>{n.name&&this._db.tables.layerTable.add(n)});break;case"LTYPE":this.readNamedTable(t,"LTYPE",()=>new Re,n=>{n.name&&this._db.tables.linetypeTable.add(n)});break;case"STYLE":this.readNamedTable(t,"STYLE",()=>new gs,n=>{this._db.tables.textStyleTable.add(n)});break;case"DIMSTYLE":this.readNamedTable(t,"DIMSTYLE",()=>new Dt,n=>{n.name&&this._db.tables.dimStyleTable.add(n)});break;case"VPORT":this.readNamedTable(t,"VPORT",()=>new Be,n=>{n.name&&this._db.tables.viewportTable.add(n)});break;case"APPID":this.readNamedTable(t,"APPID",()=>new fr,n=>{n.name&&this._db.tables.appIdTable.add(n)});break;case"VIEW":this.readNamedTable(t,"VIEW",()=>new Iu,n=>{n.name&&this._db.tables.viewTable.add(n)});break;case"UCS":this.readNamedTable(t,"UCS",()=>new Su,n=>{n.name&&this._db.tables.ucsTable.add(n)});break;case"BLOCK_RECORD":this.readBlockRecordTable(t);break;default:this.skipUntilEndTab(t);break}}readNamedTable(t,e,n,r){for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDTAB"){t.readItem();break}if(a==="ENDSEC")break;if(a===e){t.readItem();const o=n();o.dxfIn(t),r(o);continue}t.readItem(),t.skipToEndOfObject()}}readBlockRecordTable(t){let e=!1;for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDTAB"){t.readItem();break}if(r==="ENDSEC")break;if(r==="BLOCK_RECORD"){t.readItem(),e||(this._db.tables.blockTable.removeAll(),e=!0);const s=new it;s.dxfIn(t),s.name&&this._db.tables.blockTable.add(s);continue}t.readItem(),t.skipToEndOfObject()}}skipUntilEndTab(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDTAB")break}}async readBlocksSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;for(;!t.atEof;){const r=t.peekItem();if(!r)break;if(Number(r.code)!==0){t.readItem();continue}const s=String(r.value).toUpperCase();if(s==="ENDSEC"){t.readItem();break}if(s==="BLOCK"){t.readItem(),n=await this.readBlockDefinition(t,e,n);continue}t.readItem(),t.skipToEndOfObject()}}async readBlockDefinition(t,e,n){const r=this.readBlockBeginFields(t),s=this.ensureBlockTableRecord(r);for(;!t.atEof;){const a=t.peekItem();if(!a)break;if(Number(a.code)!==0){t.readItem();continue}const o=String(a.value).toUpperCase();if(o==="ENDBLK"){t.readItem(),t.skipToEndOfObject();break}if(o==="ENDSEC")break;if(t.readItem(),this.consumeSeqend(t,o)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const c=ka(t,o);c?this.shouldAcceptBlockEntity(s)&&this.acceptEntity(c,s):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}return n}shouldAcceptBlockEntity(t){return!t.isModelSapce&&!t.isPaperSapce}consumeSeqend(t,e){return e!=="SEQEND"?!1:(t.skipToEndOfObject(),!0)}readBlockBeginFields(t){const e=new b;let n="",r=0,s="",a,o;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code);if(l===100)continue;const h=Number(c.value);switch(l){case 5:a=String(c.value);break;case 330:o=String(c.value);break;case 2:case 3:n||(n=String(c.value));break;case 70:r=h;break;case 10:e.x=h;break;case 20:e.y=h;break;case 30:e.z=h;break;case 1:s=String(c.value);break}}return{name:n,flags:r,origin:e,pathName:s,objectId:a,ownerId:o}}ensureBlockTableRecord(t){let e=t.name?this._db.tables.blockTable.getAt(t.name):void 0;e||(e=new it,e.name=t.name||"*UNKNOWN",t.objectId&&(e.objectId=t.objectId),this._db.tables.blockTable.add(e)),e.origin.copy(t.origin);let n=it.sanitizeImportedFlags(t.flags);return t.pathName&&(e.pathName=t.pathName,(n&(jn.Xref|jn.XrefOverlay))===0&&(n=n|jn.Xref)),e.flags=n,e}async readEntitiesSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;const r=this._db.tables.blockTable.modelSpace;for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDSEC"){t.readItem();break}if(t.readItem(),this.consumeSeqend(t,a)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const o=ka(t,a);o?this.acceptEntity(o,this.resolveEntityOwner(o,r)):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}}resolveEntityOwner(t,e){const n=t.getAttrWithoutException("ownerId");if(n){const r=this._db.tables.blockTable.getIdAt(n);if(r&&(r.isModelSapce||r.isPaperSapce))return r}if(t.dxfPaperSpace){const r=this._db.tables.blockTable.getAt(it.PAPER_SPACE_NAME_PREFIX);if(r)return r}return e}acceptEntity(t,e){if(t instanceof ri){this.linkOrDeferAttribute(t,e);return}if(e.appendEntity(t),t instanceof le){const n=this._attributeMap.get(t.objectId);if(n&&n.length>0){for(const r of n)t.appendAttributes(r);this._attributeMap.delete(t.objectId)}}}linkOrDeferAttribute(t,e){const n=t.getAttrWithoutException("ownerId");if(!n||n==="0")return;const r=e.getIdAt(n)??this._db.tables.blockTable.getEntityById(n);if(r instanceof le){r.appendAttributes(t);return}let s=this._attributeMap.get(n);s||(s=[],this._attributeMap.set(n,s)),s.push(t)}flushRemainingAttributes(){for(const[t,e]of this._attributeMap){const n=this._db.tables.blockTable.getEntityById(t);if(n instanceof le)for(const r of e)n.appendAttributes(r)}this._attributeMap.clear()}skipUntilEndSec(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDSEC")break}}async reportParseProgress(t){const{onProgress:e,totalBytes:n}=this._options;if(!e||!n||n<=0)return;const r=Math.min(1,Math.max(0,t.position().byteOffset/n));await e(r)}async yieldAndReportProgress(t){await this.reportParseProgress(t),await this._yieldGate.maybeYield(Cn)}}const Xi=1,zs=18,Yi=20,zi=98;class Ku extends no{constructor(t={}){super({useWorker:!1,...t})}async read(t,e,n={}){const{minimumChunkSize:r=10,progress:s}=n;this.progress=s;const a=async(c,l,h,u)=>{s&&await s(c,l,h,u)};await a(0,"START","START"),await a(Xi,"PARSE","START"),await sl(),e.beginEventBatch();let o=!0;try{const c=Oe.fromBuffer(t,{database:e}),l=t.byteLength;let h=Xi;const d=await new qu(e,{entityBatchSize:Math.max(1,r||200),yieldBudgetMs:Zn,totalBytes:l,onProgress:async m=>{const y=Math.min(zs-1,Xi+Math.floor(m*(zs-Xi)));y<=h||(h=y,await a(y,"PARSE","IN-PROGRESS"))}}).read(c);await a(zs,"PARSE","END",{unknownEntityCount:d.unknownEntityCount}),await a(Yi,"ENTITY","START");const g=Math.max(1,r||200);let f=Yi;const p=new Qr(Zn);await e.endEventBatchChunked(g,async(m,y)=>{const _=y<=0?zi:Math.min(zi,Yi+Math.floor(m/y*(zi-Yi)));_>f&&(f=_,await a(_,"ENTITY","IN-PROGRESS")),await p.maybeYield()}),o=!1,await a(zi,"ENTITY","END"),await a(100,"END","END")}catch(c){throw o&&e.endEventBatch(),c}}async parse(t){return{model:null,data:{unknownEntityCount:0}}}}var Hn=(i=>(i.DXF="dxf",i.DWG="dwg",i))(Hn||{});class ie{constructor(){this.events={registered:new lt,unregistered:new lt},this._converters=new Map,this.register("dxf",new Ku)}static createInstance(){return ie._instance==null&&(ie._instance=new ie),this._instance}static get instance(){return ie._instance||(ie._instance=new ie),ie._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}))}}const dn=class dn extends At{constructor(){super(),this._thickness=0,this._normal=new x(0,0,1),this._elevation=0,this._geo=new Q}get dxfTypeName(){return"LWPOLYLINE"}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}addVertexAt(t,e,n=0,r=-1,s=-1){const a=r<0?void 0:r,o=s<0?void 0:s,c={x:e.x,y:e.y,bulge:n,startWidth:a,endWidth:o};this._geo.addVertexAt(t,c)}removeVertexAt(t){this._geo.removeVertexAt(t)}reset(t,e){this._geo.reset(t,e)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return new b(e.x,e.y,this._elevation)}get geometricExtents(){const t=this._geo.box;return new z({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}subGetIntersectCurves(){return eo(this._geo.vertices,this.closed,this._elevation,this._normal)}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return this.shouldIncludeSegmentMidpointGrips()&&this.appendSegmentMidpointGrips(t),t}subMoveGripPointsAt(t,e){const n=this.numberOfVertices,r=this.shouldIncludeSegmentMidpointGrips(),s=r?this.getSegmentCount():0;return ft(t,a=>{if(a<n){Un(this._geo.vertices,a,e);return}if(!r||a>=n+s)return;const o=a-n;Un(this._geo.vertices,o,e),Un(this._geo.vertices,(o+1)%n,e)}),this}shouldIncludeSegmentMidpointGrips(){return this.getGripsMode()>=2}getGripsMode(){try{const t=bt.instance().getVar(k.GRIPS,this.database);return typeof t=="number"?t:2}catch{return 2}}getSegmentCount(){const t=this.numberOfVertices;return t<2?0:this.closed?t:t-1}appendSegmentMidpointGrips(t){var a;const e=this._geo,n=this._elevation,r=this.getSegmentCount(),s=e.numberOfVertices;for(let o=0;o<r;o++){const c=[];ii(e.getPointAt(o),e.getPointAt((o+1)%s),(a=e.vertices[o])==null?void 0:a.bulge,n,P.MidPoint,{x:0,y:0,z:0},c),t.push(...c)}}subGetOsnapPoints(t,e,n,r){var c;const s=this._geo,a=this._elevation,o=s.numberOfVertices;if(o!==0)switch(t){case P.EndPoint:for(let l=0;l<o;l++){const h=s.getPointAt(l);r.push(new b(h.x,h.y,a))}break;case P.MidPoint:case P.Nearest:case P.Perpendicular:case P.Tangent:{const l=this.closed?o:o-1,h=[];for(let u=0;u<l;u++){const d=[];ii(s.getPointAt(u),s.getPointAt((u+1)%o),(c=s.vertices[u])==null?void 0:c.bulge,a,t,e,d),h.push(...d)}if(t===P.MidPoint)r.push(...h);else{const u=$t(e,h);u&&r.push(u)}break}}}transformBy(t){const e=t.determinant()<0;let n=this._elevation;return this._geo.vertices.forEach(r=>{const s=new b(r.x,r.y,this._elevation).applyMatrix4(t);r.x=s.x,r.y=s.y,n=s.z,e&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._elevation=n,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return this.hasRenderableWidth()?"area":"lineStrip"}subWorldDraw(t){const e=this._geo.getPoints(100),n=this.createWidthProfile();if(n!=null){const s=iy(n,this.closed);if(s!=null){const a=t.subEntityTraits;return a.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(s)}}const r=[];return e.forEach(s=>r.push(new b().set(s.x,s.y,this.elevation))),t.lines(r)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyline"),t.writeInt32(90,this.numberOfVertices),t.writeInt16(70,this.closed?1:0);const e=this.resolveConstantWidth();e!=null&&t.writeDouble(43,e),t.writeDouble(38,this.elevation),this.thickness!==0&&t.writeDouble(39,this.thickness);const n=this._geo.vertices;for(let r=0;r<n.length;++r){const s=n[r];t.writePoint2d(10,this.getPoint2dAt(r)),e==null&&(s.startWidth!=null&&t.writeDouble(40,s.startWidth),s.endWidth!=null&&t.writeDouble(41,s.endWidth));const a=s.bulge??0;a!==0&&t.writeDouble(42,a),s.identifier!=null&&t.writeInt32(91,s.identifier)}return t.writeVector3d(210,this.normal),this}dxfOutAs2dPolyline(t,e=!1){var r,s,a;t.writeHandle(5,this.objectId),t.writeObjectId(330,this.ownerId),t.writeObjectId(360,this.extensionDictionary),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency);const n=(r=this.database)==null?void 0:r.tables.blockTable.getIdAt(this.ownerId);n!=null&&n.isPaperSapce&&t.writeInt16(67,1),t.writeSubclassMarker("AcDb2dPolyline"),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,this.closed?1:0),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation);for(let o=0;o<this.numberOfVertices;++o){const c=this._geo.vertices[o];t.writeStart("VERTEX"),t.writeHandle(5,(s=this.database)==null?void 0:s.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPoint2dAt(o).x,y:this.getPoint2dAt(o).y,z:this.elevation});const l=(c==null?void 0:c.bulge)??0;l!==0&&t.writeDouble(42,l),t.writeInt16(70,0)}return t.writeStart("SEQEND"),t.writeHandle(5,(a=this.database)==null?void 0:a.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPolyline"),this.reset(!1);let e=!1,n=this.elevation,r=this.thickness,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=-1,l=0,h=0,u=!1,d=0,g=-1,f=-1,p,m=0;const y=()=>{if(!u)return;const v=g<0?c:g,w=f<0?c:f;if(this.addVertexAt(m++,new L(l,h),d,v,w),p!=null){const A=this._geo.vertices[m-1];A&&(A.identifier=p)}u=!1,d=0,g=-1,f=-1,p=void 0};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const v=t.readItem();if(!v)break;const w=Number(v.code),A=Number(v.value);switch(w){case 90:break;case 70:e=(A&1)!==0;break;case 43:c=A;break;case 38:n=A;break;case 39:r=A;break;case 10:y(),l=A,h=0,u=!0;break;case 20:h=A;break;case 40:g=A;break;case 41:f=A;break;case 42:d=A;break;case 91:p=A;break;case 210:s=A;break;case 220:a=A;break;case 230:o=A;break}}y(),this.closed=e,this.elevation=n,this.thickness=r;const _=new x(s,a,o);return _.lengthSq()>0&&this.normal.copy(_.normalize()),this}resolveConstantWidth(){const t=this._geo.vertices;if(t.length===0)return;let e;for(const n of t){const r=n.startWidth,s=n.endWidth;if(r==null&&s==null){if(e!=null&&e!==0)return;e=e??0;continue}const a=r??0;if(a!==(s??0))return;if(e==null)e=a;else if(e!==a)return}return e!=null&&e!==0?e:void 0}hasRenderableWidth(){const t=this._geo.vertices;for(let e=0;e<t.length;e++){const n=Math.max(0,t[e].startWidth??0),r=Math.max(0,t[e].endWidth??0);if(n>gt||r>gt)return!0}return!1}createWidthProfile(){const t=this._geo.vertices,e=t.length;if(e<2)return null;const n=this.closed?e:e-1,r=[];let s=!1;for(let a=0;a<n;a++){const o=t[a],c=t[(a+1)%e],l=Math.max(0,o.startWidth??0),h=Math.max(0,o.endWidth??0);(l>gt||h>gt)&&(s=!0);const u=this.sampleSegment(o,c),d=u.length-1;for(let g=0;g<=d;g++){if(g===0&&r.length>0||this.closed&&a===n-1&&g===d)continue;const f=d>0?g/d:0;r.push({x:u[g].x,y:u[g].y,width:dy(l,h,f)})}}return s&&r.length>=2?r:null}sampleSegment(t,e){if(t.bulge&&Math.abs(t.bulge)>gt){const r=new rt(t,e,t.bulge).getPoints(32);if(r.length>1)return r.map(s=>new L(s.x,s.y))}return[new L(t.x,t.y),new L(e.x,e.y)]}static from2dPoints(t,e){const n=new dn;return t.forEach((r,s)=>n.addVertexAt(s,r)),n.closed=e,n}static fromGePolyline(t){const e=new dn;return t.vertices.forEach((n,r)=>{e.addVertexAt(r,new L(n.x,n.y),n.bulge??0)}),e.closed=t.closed,e}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.numberOfVertices;let n=1/0,r=1;const s=this.closed?e:e-1;for(let a=0;a<s;a++){const o=this.getPoint2dAt(a),c=this.getPoint2dAt((a+1)%e),l=c.x-o.x,h=c.y-o.y,u=l*l+h*h;if(u===0)continue;const d=Math.max(0,Math.min(1,((t.x-o.x)*l+(t.y-o.y)*h)/u)),g=(t.x-o.x-d*l)**2+(t.y-o.y-d*h)**2;g<n&&(n=g,r=l*(t.y-o.y)-h*(t.x-o.x)>=0?1:-1)}return r}createOffsetCurve(t){const e=this._geo.offset(t);return e.length===0?null:dn.fromGePolyline(e[0])}};dn.typeName="Polyline";let Lt=dn;function xs(i,t,e){const n=Df(i,t,e);return n?Lt.fromGePolyline(n):null}const gt=1e-6,Xc=4,ny=.75;function iy(i,t){if(i.length<2)return null;if(t)return Vs(i,!0);const e=ry(i);if(e.length===1)return Vs(e[0],!1);const n=new Kt;let r=!1;for(const s of e){const a=Vs(s,!1);if(a!=null){for(const o of a.loops)n.add(o);r=!0}}return r?n:null}function Vs(i,t){const e=hy(i,t);if(e.length<2)return null;const{left:n,right:r}=Zu(e,t);if(zc(n)<2||zc(r)<2)return null;const s=new Kt;if(t){const a=pr(n),o=pr(r);if(!oi(a)||!oi(o))return null;const c=Math.abs(ai(a)),l=Math.abs(ai(o)),[h,u]=c>=l?[a,o]:[o,a];return s.add(new Q(h,!0)),s.add(new Q(u,!0)),s}return ay(e)&&oy(s,e)||ly(s,n,r)?s:null}function ry(i){if(i.length<2)return[i];const t=[];let e=0;const n=new Map;for(let s=0;s<i.length;s++){const a=Yc(i[s]),o=n.get(a);if(o!=null&&s-o>1){const c=i.slice(e,s+1);c.length>=2&&t.push(c),e=o,n.clear();for(let l=e;l<=s;l++)n.set(Yc(i[l]),l);continue}n.set(a,s)}const r=i.slice(e);return r.length>=2&&t.push(r),t.length>0?t:[i]}function Yc(i){return`${i.x.toFixed(4)}:${i.y.toFixed(4)}`}function sy(i,t){const e=Math.max(i,t),n=Math.min(i,t);return e<=gt||e-n<=gt?!1:n/e<=ny}function ay(i){const t=i[0],e=i[i.length-1],n=Math.hypot(e.x-t.x,e.y-t.y);if(n<=gt)return!0;const r=Math.max(...i.map(s=>s.width));return r<=gt?!1:n<=r*4}function oy(i,t){const{left:e,right:n}=Zu(t,!0),r=pr(e),s=pr(n);if(!oi(r)||!oi(s))return!1;const a=Math.abs(ai(r)),o=Math.abs(ai(s));if(!sy(a,o))return!1;const[c,l]=a>=o?[r,s]:[s,r];return i.add(new Q(c,!0)),i.add(new Q(l,!0)),!0}function Zu(i,t){const e=new Array(i.length),n=new Array(i.length);for(let r=0;r<i.length;r++){const s=i[r],a=Math.max(0,s.width)/2;if(a<=gt){e[r]=null,n[r]=null;continue}const o=uy(i,r,t);if(o==null){e[r]=null,n[r]=null;continue}e[r]={x:s.x+o.x*a,y:s.y+o.y*a},n[r]={x:s.x-o.x*a,y:s.y-o.y*a}}return{left:e,right:n}}function cy(i,t,e,n,r){const s=[t,e,n,r];return oi(s)?(i.add(new Q(s,!0)),!0):!1}function ly(i,t,e){let n=!1;for(let r=0;r<t.length-1;r++){const s=t[r],a=t[r+1],o=e[r],c=e[r+1];s==null||a==null||o==null||c==null||cy(i,s,a,c,o)&&(n=!0)}return n}function zc(i){return i.reduce((t,e)=>e==null?t:t+1,0)}function pr(i){return i.filter(t=>t!=null)}function hy(i,t){const e=[];if(i.forEach(n=>{const r=e[e.length-1];(!r||Math.abs(r.x-n.x)>gt||Math.abs(r.y-n.y)>gt||Math.abs(r.width-n.width)>gt)&&e.push(n)}),t&&e.length>1){const n=e[0],r=e[e.length-1];Math.abs(n.x-r.x)<=gt&&Math.abs(n.y-r.y)<=gt&&e.pop()}return e}function uy(i,t,e){const n=i.length,r=i[t],s=i[(t-1+n)%n],a=i[(t+1)%n];let o=Vc(r.x-s.x,r.y-s.y),c=Vc(a.x-r.x,a.y-r.y);if(e||(t===0&&(o=c),t===n-1&&(c=o)),o==null&&c==null)return null;if(o==null)return Vi(c);if(c==null)return Vi(o);const l=Vi(o),h=Vi(c),u=l.x+h.x,d=l.y+h.y,g=Math.hypot(u,d);if(g<=gt)return h;const f={x:u/g,y:d/g},p=Math.abs(f.x*h.x+f.y*h.y),m=p<=gt?Xc:Math.min(1/p,Xc);return{x:f.x*m,y:f.y*m}}function Vc(i,t){const e=Math.hypot(i,t);return e<=gt?null:{x:i/e,y:t/e}}function Vi(i){return{x:-i.y,y:i.x}}function ai(i){let t=0;const e=i.length;for(let n=0;n<e;n++){const r=i[n],s=i[(n+1)%e];t+=r.x*s.y-s.x*r.y}return t/2}function oi(i){return i.length>=3&&Math.abs(ai(i))>gt}function dy(i,t,e){return i+(t-i)*e}const gy={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:23},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:24}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:26}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:28},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:29}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:31},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:32}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:34},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:35},{angle:45,originX:.353553391,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:36},{angle:45,originX:.530330086,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:37}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:39},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.3125,-.0625,0,-.0625],sourceLine:40}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:.21875,deltaY:.125,dashes:[.3125,-.0625,0,-.0625],sourceLine:42}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:45}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:47},{angle:135,originX:0,originY:0,deltaX:.25,deltaY:.125,dashes:[.3125,-.1875],sourceLine:48}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:54},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[8,-8],sourceLine:55}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:57},{angle:0,originX:-8,originY:.375,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:58},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:59},{angle:90,originX:-.375,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:60}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:62},{angle:90,originX:0,originY:0,deltaX:8,deltaY:4,dashes:[8,-8],sourceLine:63}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:65},{angle:0,originX:0,originY:2.25,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:66},{angle:0,originX:2,originY:2.667,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:67},{angle:0,originX:2,originY:4.917,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:68},{angle:90,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:69},{angle:90,originX:-.375,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:70},{angle:90,originX:2,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:71},{angle:90,originX:1.625,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:72}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:2.667,dashes:[],sourceLine:74},{angle:90,originX:0,originY:0,deltaX:2.667,deltaY:4,dashes:[2.667,-2.667],sourceLine:75}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:77},{angle:355,originX:0,originY:0,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:78},{angle:100.45144446,originX:.59771681,originY:-.05229344,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.63740192,-7.01142112],sourceLine:79},{angle:46.1842,originX:0,originY:2,deltaX:6.19462554,deltaY:-8.84684596,dashes:[1.125,-12.375],sourceLine:80},{angle:96.63563549,originX:.88936745,originY:1.86206693,deltaX:8.59588239,deltaY:-10.40964966,dashes:[.95610342,-10.5171376],sourceLine:81},{angle:351.18416399,originX:0,originY:2,deltaX:7.74327494,deltaY:11.05855746,dashes:[.9,-9.90000001],sourceLine:82},{angle:21,originX:1,originY:1.5,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:83},{angle:326,originX:1,originY:1.5,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:84},{angle:71.45144474,originX:1.49742254,originY:1.16448426,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.6374019,-7.01142112],sourceLine:85},{angle:37.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-6.52,0,-6.7,0,-6.625],sourceLine:86},{angle:7.5,originX:0,originY:0,deltaX:3.123,deltaY:3.567,dashes:[0,-3.82,0,-6.37,0,-2.525],sourceLine:87},{angle:-32.5,originX:-2.23,originY:0,deltaX:4.6234,deltaY:2.678,dashes:[0,-2.5,0,-7.8,0,-10.35],sourceLine:88},{angle:-42.5,originX:-3.23,originY:0,deltaX:3.6234,deltaY:4.678,dashes:[0,-3.25,0,-5.18,0,-7.35],sourceLine:89}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:4,deltaY:4,dashes:[12,-4],sourceLine:91},{angle:135,originX:2.828427125,originY:2.828427125,deltaX:4,deltaY:-4,dashes:[12,-4],sourceLine:92}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:94},{angle:90,originX:2,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:95},{angle:90,originX:4,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:96},{angle:90,originX:6,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:97},{angle:90,originX:8,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:98},{angle:90,originX:10,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:99},{angle:90,originX:12,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:100},{angle:0,originX:0,originY:12,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:101},{angle:0,originX:0,originY:14,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:102},{angle:0,originX:0,originY:16,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:103},{angle:0,originX:0,originY:18,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:104},{angle:0,originX:0,originY:20,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:105},{angle:0,originX:0,originY:22,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:106},{angle:0,originX:0,originY:24,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:107}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:2.2,deltaY:1,dashes:[15,-2,5,-1],sourceLine:109},{angle:0,originX:1.33,originY:.5,deltaX:-1,deltaY:1.33,dashes:[3,-.33,6,-.75],sourceLine:110},{angle:0,originX:.5,originY:.85,deltaX:5.2,deltaY:.67,dashes:[8,-1.4,4,-1],sourceLine:111}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:25.5,deltaY:12,dashes:[6,-5,7,-3,9,-4],sourceLine:113},{angle:0,originX:6,originY:.5,deltaX:25.5,deltaY:12,dashes:[5,-19,4,-6],sourceLine:114},{angle:0,originX:18,originY:-.75,deltaX:25.5,deltaY:12,dashes:[3,-31],sourceLine:115},{angle:90,originX:0,originY:0,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:116},{angle:90,originX:6,originY:0,deltaX:12,deltaY:8.5,dashes:[11.25,-36.75],sourceLine:117},{angle:90,originX:11,originY:0,deltaX:12,deltaY:8.5,dashes:[10.5,-37.5],sourceLine:118},{angle:90,originX:18,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:119},{angle:90,originX:21,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:120},{angle:90,originX:30,originY:0,deltaX:12,deltaY:8.5,dashes:[11,-37],sourceLine:121}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:1.123,deltaY:1.567,dashes:[0,-1.52,0,-1.7,0,-1.625],sourceLine:123},{angle:7.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-.82,0,-1.37,0,-.525],sourceLine:124},{angle:-32.5,originX:-1.23,originY:0,deltaX:2.6234,deltaY:1.678,dashes:[0,-.5,0,-1.8,0,-2.35],sourceLine:125},{angle:-42.5,originX:-1.23,originY:0,deltaX:1.6234,deltaY:2.678,dashes:[0,-.25,0,-1.18,0,-1.35],sourceLine:126}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:128},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:129},{angle:0,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:130},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:131},{angle:0,originX:0,originY:.5,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:132},{angle:0,originX:0,originY:.75,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:133},{angle:90,originX:.5,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:134},{angle:90,originX:.75,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:135}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:137},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:138}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:140},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.5,dashes:[.25,-.25],sourceLine:141},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:.5,dashes:[-.25,.25],sourceLine:142}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.33,dashes:[],sourceLine:144},{angle:90,originX:.9,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:145},{angle:90,originX:.8,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:146},{angle:0,originX:.9,originY:.055,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:147},{angle:0,originX:.9,originY:.11,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:148},{angle:0,originX:.9,originY:.165,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:149},{angle:0,originX:.9,originY:.22,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:150},{angle:0,originX:.9,originY:.275,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:151}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.1875,dashes:[],sourceLine:153},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.1875,dashes:[],sourceLine:154},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.1875,dashes:[],sourceLine:155},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.1875,dashes:[.1875,-.125],sourceLine:156}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:158},{angle:135,originX:.0625,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:159},{angle:135,originX:.09375,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:160},{angle:135,originX:.125,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:161}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:163},{angle:90,originX:.0625,originY:-.0625,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:164}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:166}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:168},{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[.3535533905932738,-.7071067811865476],sourceLine:169}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.03125,deltaY:.0625,dashes:[0,-.0625],sourceLine:171}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:173},{angle:0,originX:0,originY:.09375,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:174},{angle:0,originX:0,originY:.1875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:175},{angle:90,originX:.03125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:176},{angle:90,originX:.125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:177},{angle:90,originX:.21875,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:178}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:180},{angle:180,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:181},{angle:300,originX:0,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:182},{angle:60,originX:.1,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:183},{angle:300,originX:.1,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:184},{angle:60,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:185},{angle:180,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:186},{angle:300,originX:-.05,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:187},{angle:180,originX:-.05,originY:-.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:188},{angle:60,originX:-.4,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:189},{angle:300,originX:-.4,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:190},{angle:60,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:191},{angle:180,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:192},{angle:300,originX:.2,originY:.346410161,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:193},{angle:180,originX:.2,originY:.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:194},{angle:0,originX:.2,originY:.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:195},{angle:0,originX:.2,originY:-.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:196},{angle:120,originX:.05,originY:.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:197},{angle:120,originX:-.25,originY:.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:198},{angle:240,originX:-.25,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:199},{angle:240,originX:.05,originY:-.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:200}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[.25,-.25],sourceLine:202},{angle:45,originX:.25,originY:0,deltaX:.176776695296,deltaY:.176776695296,dashes:[.0625,-.2285533906,.0625,-.353553390593],sourceLine:203}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:205},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:206},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:207}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:209},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:210},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:211}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:213},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:214},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:215}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:.707106781,deltaY:.707106781,dashes:[.1875,-1.226713563],sourceLine:217},{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:218},{angle:135,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:219}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.03125,dashes:[],sourceLine:221},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:222}]},{name:"GRAVEL",description:"",lines:[{angle:228.012787504,originX:.72,originY:1,deltaX:12.0413651692039,deltaY:.0743294146632,dashes:[.134536,-13.3190880470737],sourceLine:224},{angle:184.969740728,originX:.63,originY:.9,deltaX:-12.0415166747131,deltaY:.0433148081592,dashes:[.230868,-22.85592476123],sourceLine:225},{angle:132.510447078,originX:.4,originY:.88,deltaX:-14.8659418273816,deltaY:.061429511683,dashes:[.162788,-16.1160325960997],sourceLine:226},{angle:267.273689006,originX:.01,originY:.63,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:227},{angle:292.833654178,originX:0,originY:.42,deltaX:-12.9999095019474,deltaY:.048507125026,dashes:[.206155,-20.4093731280883],sourceLine:228},{angle:357.273689006,originX:.08,originY:.23,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:229},{angle:37.6942404667,originX:.29,originY:.22,deltaX:-16.4011800288558,deltaY:.0359675000664,dashes:[.278029,-27.524848548916],sourceLine:230},{angle:72.2553283749,originX:.51,originY:.39,deltaX:23.0867613281116,deltaY:.0380969659053,dashes:[.262488,-25.9863214968134],sourceLine:231},{angle:121.429565615,originX:.59,originY:.64,deltaX:15.2642639131074,deltaY:.047404546271,dashes:[.21095,-20.884073109729],sourceLine:232},{angle:175.236358309,originX:.48,originY:.82,deltaX:-11.0450488205478,deltaY:.083045479801,dashes:[.240832,-11.8007625787923],sourceLine:233},{angle:222.397437798,originX:.24,originY:.84,deltaX:16.2787889313724,deltaY:.0321080648114,dashes:[.311448,-30.8333750047949],sourceLine:234},{angle:138.814074834,originX:1,originY:.62,deltaX:9.2190645101588,deltaY:.0940720868851,dashes:[.106301,-10.5238448127347],sourceLine:235},{angle:171.46923439,originX:.92,originY:.69,deltaX:-13.1528534931484,deltaY:.0494468176315,dashes:[.202237,-20.021511416157],sourceLine:236},{angle:225,originX:.72,originY:.72,deltaX:.7071067811865,deltaY:.7071067811865,dashes:[.141421,-1.2727925623731],sourceLine:237},{angle:203.198590514,originX:.65,originY:.84,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.076158,-7.5396151058639],sourceLine:238},{angle:291.801409486,originX:.58,originY:.81,deltaX:-3.156820749011,deltaY:.185695338158,dashes:[.107703,-5.2774618071345],sourceLine:239},{angle:30.9637565321,originX:.62,originY:.71,deltaX:3.6014702879928,deltaY:.1714985851408,dashes:[.174929,-5.6560228948453],sourceLine:240},{angle:161.565051177,originX:.77,originY:.8,deltaX:-2.2135943621183,deltaY:.3162277660138,dashes:[.126491,-3.0357866601684],sourceLine:241},{angle:16.389540334,originX:0,originY:.81,deltaX:10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.5428451466694],sourceLine:242},{angle:70.3461759419,originX:.17,originY:.86,deltaX:-11.7045066155395,deltaY:.0672672793901,dashes:[.148661,-14.717407747319],sourceLine:243},{angle:293.198590514,originX:.77,originY:1,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.152315,-7.4634581058639],sourceLine:244},{angle:343.610459666,originX:.83,originY:.86,deltaX:-10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.542845146669],sourceLine:245},{angle:339.44395478,originX:0,originY:.19,deltaX:-5.3838927710229,deltaY:.117041147157,dashes:[.17088,-8.3731237453175],sourceLine:246},{angle:294.775140569,originX:.16,originY:.13,deltaX:-12.0828441168135,deltaY:.0698430296124,dashes:[.143178,-14.174643063276],sourceLine:247},{angle:66.8014094864,originX:.78,originY:0,deltaX:5.3835637472487,deltaY:.1313064328552,dashes:[.152315,-7.4634581058639],sourceLine:248},{angle:17.3540246363,originX:.84,originY:.14,deltaX:-13.6013396869991,deltaY:.0596549986364,dashes:[.167631,-16.59542361424],sourceLine:249},{angle:69.4439547804,originX:.29,originY:0,deltaX:-5.383892771022,deltaY:.1170411471946,dashes:[.08544,-8.4585637453175],sourceLine:250},{angle:101.309932474,originX:.72,originY:0,deltaX:4.1184388379018,deltaY:.1961161351396,dashes:[.05099,-5.0480295135928],sourceLine:251},{angle:165.963756532,originX:.71,originY:.05,deltaX:-3.1529631254726,deltaY:.2425356250323,dashes:[.206155,-3.9169506256177],sourceLine:252},{angle:186.009005957,originX:.51,originY:.1,deltaX:-10.0497393137326,deltaY:.0523423921723,dashes:[.19105,-18.9139231745428],sourceLine:253},{angle:303.690067526,originX:.62,originY:.62,deltaX:-2.2188007849008,deltaY:.2773500981134,dashes:[.144222,-3.461329275464],sourceLine:254},{angle:353.157226587,originX:.7,originY:.5,deltaX:17.1171966955143,deltaY:.0397150736497,dashes:[.251794,-24.9275626240283],sourceLine:255},{angle:60.9453959009,originX:.95,originY:.47,deltaX:-8.0616726575653,deltaY:.0971285862325,dashes:[.102956,-10.192674140987],sourceLine:256},{angle:90,originX:1,originY:.56,deltaX:1,deltaY:1,dashes:[.06,-.94],sourceLine:257},{angle:120.256437164,originX:.49,originY:.13,deltaX:-8.0619364083848,deltaY:.0719815751411,dashes:[.138924,-13.7535199894498],sourceLine:258},{angle:48.0127875042,originX:.42,originY:.25,deltaX:12.0413651692041,deltaY:.0743294146212,dashes:[.269072,-13.1845520470737],sourceLine:259},{angle:0,originX:.6,originY:.45,deltaX:1,deltaY:1,dashes:[.26,-.74],sourceLine:260},{angle:325.304846469,originX:.86,originY:.45,deltaX:12.2063917682497,deltaY:-.063245553253,dashes:[.158114,-15.653274300842],sourceLine:261},{angle:254.054604099,originX:.99,originY:.36,deltaX:4.1208169184605,deltaY:.1373605639542,dashes:[.145602,-7.1345078892805],sourceLine:262},{angle:207.645975364,originX:.95,originY:.22,deltaX:21.4708691170287,deltaY:.0421824539631,dashes:[.237065,-23.4694741822594],sourceLine:263},{angle:175.42607874,originX:.74,originY:.11,deltaX:13.0383438432524,deltaY:.039872611164,dashes:[.250799,-24.8290734079689],sourceLine:264}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:266},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:267},{angle:60,originX:.125,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:268}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:270},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:271},{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[-.25,.125],sourceLine:272}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.0625,dashes:[1,-.5],sourceLine:274},{angle:90,originX:0,originY:0,deltaX:-.25,deltaY:.0625,dashes:[1,-.5],sourceLine:275}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:277},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:278},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:279}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:292}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:294}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:296}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:298}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:300},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:301}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:303}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:305}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:307}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:309}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:311}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:313}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:315},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:316}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:318},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:319}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:321},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:322}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:327}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.25,dashes:[.25,-.25,0,-.25,0,-.25],sourceLine:329}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:331},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:332}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:334},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:335},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:336}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:338},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:339},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:340}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:342},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:343},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:344},{angle:0,originX:0,originY:.15625,deltaX:0,deltaY:.25,dashes:[],sourceLine:345}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.09375,dashes:[],sourceLine:347},{angle:45,originX:.066291261,originY:0,deltaX:0,deltaY:.09375,dashes:[0,-.09375],sourceLine:348}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:350},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:351}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:353},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:354},{angle:120,originX:.0625,originY:.108253176,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:355}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:357},{angle:45,originX:0,originY:.0625,deltaX:0,deltaY:.125,dashes:[],sourceLine:358}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.125,-.875],sourceLine:360},{angle:90,originX:.0625,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.0625,-1.669550806],sourceLine:361},{angle:90,originX:.078125,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:362},{angle:90,originX:.046875,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:363},{angle:60,originX:.09375,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:364},{angle:120,originX:.03125,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:365}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:367},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.125],sourceLine:368}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:370},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:371},{angle:0,originX:-.09375,originY:.162379763,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:372}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:374},{angle:90,originX:.125,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:375}]}],issues:[]},Qu={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:20},{angle:90,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:21}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:23}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:25},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:26}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:28},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:29}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:31},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:32},{angle:45,originX:8.98026,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:33},{angle:45,originX:13.4704,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:34}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:36},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:37}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:5.55625,deltaY:3.175,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:39}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:41},{angle:135,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:42}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:6.35,deltaY:3.175,dashes:[7.9375,-4.7625],sourceLine:45}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:47},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[203.2,-203.2],sourceLine:48}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:50},{angle:0,originX:-203.2,originY:9.525,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:51},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:52},{angle:90,originX:-9.525,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:53}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:55},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:101.6,dashes:[203.2,-203.2],sourceLine:56}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:58},{angle:0,originX:0,originY:57.15,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:59},{angle:0,originX:50.8,originY:67.7418,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:60},{angle:0,originX:50.8,originY:124.892,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:61},{angle:90,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:62},{angle:90,originX:-9.525,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:63},{angle:90,originX:50.8,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:64},{angle:90,originX:41.275,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:65}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:67.7418,dashes:[],sourceLine:67},{angle:90,originX:0,originY:0,deltaX:67.7418,deltaY:101.6,dashes:[67.7418,-67.7418],sourceLine:68}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:104.896,deltaY:-149.807,dashes:[19.05,-209.55],sourceLine:70},{angle:355,originX:0,originY:0,deltaX:-51.76101082,deltaY:187.25814969,dashes:[15.24,-167.64058417],sourceLine:71},{angle:100.4514447,originX:15.182007,originY:-1.3282535,deltaX:145.5569059,deltaY:-176.270089,dashes:[16.1900088,-178.0902446],sourceLine:72},{angle:46.1842,originX:0,originY:50.8,deltaX:157.343,deltaY:-224.71,dashes:[28.575,-314.325],sourceLine:73},{angle:96.63555761,originX:22.5899,originY:47.2965,deltaX:218.33577212,deltaY:-264.40480444,dashes:[24.28502314,-267.13560816],sourceLine:74},{angle:351.18415117,originX:0,originY:50.8,deltaX:196.67912063,deltaY:280.88740361,dashes:[22.85996707,-251.45973192],sourceLine:75},{angle:21,originX:25.4,originY:38.1,deltaX:104.89565868,deltaY:-149.80652586,dashes:[19.05,-209.55],sourceLine:76},{angle:326,originX:25.4,originY:38.1,deltaX:-51.7604,deltaY:187.258,dashes:[15.24,-167.64],sourceLine:77},{angle:71.451445,originX:38.0345326,originY:29.5779001,deltaX:145.5567546,deltaY:-176.2700748,dashes:[16.1900088,-178.0899376],sourceLine:78},{angle:37.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-165.608,0,-170.18,0,-168.275],sourceLine:79},{angle:7.5,originX:0,originY:0,deltaX:79.3242,deltaY:90.6018,dashes:[0,-97.028,0,-161.798,0,-64.135],sourceLine:80},{angle:-32.5,originX:-56.642,originY:0,deltaX:117.434,deltaY:68.0212,dashes:[0,-63.5,0,-198.12,0,-262.89],sourceLine:81},{angle:-42.5,originX:-82.042,originY:0,deltaX:92.0344,deltaY:118.821,dashes:[0,-82.55,0,-131.572,0,-186.69],sourceLine:82}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:101.6,deltaY:101.6,dashes:[304.8,-101.6],sourceLine:84},{angle:135,originX:71.842,originY:71.842,deltaX:101.6,deltaY:-101.6,dashes:[304.8,-101.6],sourceLine:85}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:87},{angle:90,originX:50.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:88},{angle:90,originX:101.6,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:89},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:90},{angle:90,originX:203.2,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:91},{angle:90,originX:254,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:92},{angle:90,originX:304.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:93},{angle:0,originX:0,originY:304.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:94},{angle:0,originX:0,originY:355.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:95},{angle:0,originX:0,originY:406.4,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:96},{angle:0,originX:0,originY:457.2,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:97},{angle:0,originX:0,originY:508,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:98},{angle:0,originX:0,originY:558.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:99},{angle:0,originX:0,originY:609.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:100}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:55.88,deltaY:25.4,dashes:[381,-50.8,127,-25.4],sourceLine:102},{angle:0,originX:33.782,originY:12.7,deltaX:-25.4,deltaY:33.782,dashes:[76.2,-8.382,152.4,-19.05],sourceLine:103},{angle:0,originX:12.7,originY:21.59,deltaX:132.08,deltaY:17.018,dashes:[203.2,-35.56,101.6,-25.4],sourceLine:104}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:647.7,deltaY:304.8,dashes:[152.4,-127,177.8,-76.2,228.6,-101.6],sourceLine:106},{angle:0,originX:152.4,originY:12.7,deltaX:647.7,deltaY:304.8,dashes:[127,-482.6,101.6,-152.4],sourceLine:107},{angle:0,originX:457.2,originY:-19.05,deltaX:647.7,deltaY:304.8,dashes:[76.2,-787.4],sourceLine:108},{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:109},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[285.75,-933.45],sourceLine:110},{angle:90,originX:279.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[266.7,-952.5],sourceLine:111},{angle:90,originX:457.2,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:112},{angle:90,originX:533.4,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:113},{angle:90,originX:762,originY:0,deltaX:304.8,deltaY:215.9,dashes:[279.4,-939.8],sourceLine:114}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:28.5242,deltaY:39.8018,dashes:[0,-38.608,0,-43.18,0,-41.275],sourceLine:116},{angle:7.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-20.828,0,-34.798,0,-13.335],sourceLine:117},{angle:-32.5,originX:-31.242,originY:0,deltaX:66.6344,deltaY:42.6212,dashes:[0,-12.7,0,-45.72,0,-59.69],sourceLine:118},{angle:-42.5,originX:-31.242,originY:0,deltaX:41.2344,deltaY:68.0212,dashes:[0,-6.35,0,-29.972,0,-34.29],sourceLine:119}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:121},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:122},{angle:0,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:123},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:124},{angle:0,originX:0,originY:12.7,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:125},{angle:0,originX:0,originY:19.05,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:126},{angle:90,originX:12.7,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:127},{angle:90,originX:19.05,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:128}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:130},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:131}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:133},{angle:90,originX:0,originY:0,deltaX:0,deltaY:12.7,dashes:[6.35,-6.35],sourceLine:134},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:12.7,dashes:[-6.35,6.35],sourceLine:135}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8.382,dashes:[],sourceLine:137},{angle:90,originX:22.86,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:138},{angle:90,originX:20.32,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:139},{angle:0,originX:22.86,originY:1.397,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:140},{angle:0,originX:22.86,originY:2.794,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:141},{angle:0,originX:22.86,originY:4.191,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:142},{angle:0,originX:22.86,originY:5.588,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:143},{angle:0,originX:22.86,originY:6.985,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:144}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:146},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:147},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:148},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:4.7625,dashes:[4.7625,-3.175],sourceLine:149}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:151},{angle:135,originX:1.5875,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:152},{angle:135,originX:2.38125,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:153},{angle:135,originX:3.175,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:154}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:156},{angle:90,originX:1.5875,originY:-1.5875,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:157}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:159}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:161},{angle:45,originX:0,originY:0,deltaX:0,deltaY:17.9605,dashes:[8.980256121069154,-17.960512242138307],sourceLine:162}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.79375,deltaY:1.5875,dashes:[0,-1.5875],sourceLine:164}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:166},{angle:0,originX:0,originY:2.38125,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:167},{angle:0,originX:0,originY:4.7625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:168},{angle:90,originX:.79375,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:169},{angle:90,originX:3.175,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:170},{angle:90,originX:5.55625,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:171}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:173},{angle:180,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:174},{angle:300,originX:0,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:175},{angle:60,originX:2.54,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:176},{angle:300,originX:2.54,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:177},{angle:60,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:178},{angle:180,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:179},{angle:300,originX:-1.27,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:180},{angle:180,originX:-1.27,originY:-2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:181},{angle:60,originX:-10.16,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:182},{angle:300,originX:-10.16,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:183},{angle:60,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:184},{angle:180,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:185},{angle:300,originX:5.08,originY:8.7988180894,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:186},{angle:180,originX:5.08,originY:8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:187},{angle:0,originX:5.08,originY:4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:188},{angle:0,originX:5.08,originY:-4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:189},{angle:120,originX:1.27,originY:6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:190},{angle:120,originX:-6.35,originY:2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:191},{angle:240,originX:-6.35,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:192},{angle:240,originX:1.27,originY:-6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:193}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:195},{angle:45,originX:6.35,originY:0,deltaX:4.490128053,deltaY:4.490128053,dashes:[1.5875,-5.8052561314,1.5875,-8.9802561314],sourceLine:196}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:198},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:199},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:200}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:202},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:203},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:204}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:206},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:207},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:208}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:17.96051224,deltaY:17.96051224,dashes:[4.7625,-31.15852448],sourceLine:210},{angle:45,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:211},{angle:135,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:212}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.79375,dashes:[],sourceLine:214},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:215}]},{name:"GRAVEL",description:"",lines:[{angle:228.0127875,originX:18.288,originY:25.4,deltaX:305.85067529778,deltaY:1.88796713245,dashes:[3.4172144,-338.30483639565],sourceLine:217},{angle:184.969741,originX:16.002,originY:22.86,deltaX:-305.8545235377,deltaY:1.10019612724,dashes:[5.8640472,-580.54048893524],sourceLine:218},{angle:132.5104471,originX:10.16,originY:22.352,deltaX:-377.59492241548,deltaY:1.56030959675,dashes:[4.1348152,-409.347227941],sourceLine:219},{angle:267.273689,originX:.254,originY:16.002,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:220},{angle:292.83365418,originX:0,originY:10.668,deltaX:-330.19770134945,deltaY:1.23208097566,dashes:[5.236337,-518.39807745344],sourceLine:221},{angle:357.273689,originX:2.032,originY:5.842,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:222},{angle:37.69424047,originX:7.366,originY:5.588,deltaX:-416.58997273292,deltaY:.91357450169,dashes:[7.0619366,-699.13115314247],sourceLine:223},{angle:72.25532837,originX:12.954,originY:9.906,deltaX:586.40373773403,deltaY:.96766293399,dashes:[6.6671952,-660.05256601905],sourceLine:224},{angle:121.42956562,originX:14.986,originY:16.256,deltaX:387.71230339293,deltaY:1.2040754753,dashes:[5.35813,-530.45545698712],sourceLine:225},{angle:175.2363583,originX:12.192,originY:20.828,deltaX:-280.5442400419,deltaY:2.10935518695,dashes:[6.1171328,-299.7393695],sourceLine:226},{angle:222.3974378,originX:6.096,originY:21.336,deltaX:413.48123885686,deltaY:.81554484621,dashes:[7.9107792,-783.16772512177],sourceLine:227},{angle:138.81407483,originX:25.4,originY:15.748,deltaX:234.164238558,deltaY:2.38943100688,dashes:[2.7000454,-267.30565824344],sourceLine:228},{angle:171.4692344,originX:23.368,originY:17.526,deltaX:-334.082478726,deltaY:1.25594916784,dashes:[5.1368198,-508.5463899704],sourceLine:229},{angle:225,originX:18.288,originY:18.288,deltaX:17.96051224214,deltaY:17.96051224214,dashes:[3.5920934,-32.32893108428],sourceLine:230},{angle:203.19859051,originX:16.51,originY:21.336,deltaX:-136.74251918,deltaY:3.33518339548,dashes:[1.9344132,-191.50622368894],sourceLine:231},{angle:291.80140949,originX:14.732,originY:20.574,deltaX:-80.18324702488,deltaY:4.71666158921,dashes:[2.7356562,-134.0475299],sourceLine:232},{angle:30.96375653,originX:15.748,originY:18.034,deltaX:91.47734531502,deltaY:4.35606406258,dashes:[4.4431966,-143.6629815291],sourceLine:233},{angle:161.56505118,originX:19.558,originY:20.32,deltaX:-56.2252967978,deltaY:8.03218525675,dashes:[3.2128714,-77.10898116828],sourceLine:234},{angle:16.389540334,originX:0,originY:20.574,deltaX:265.17991128726,deltaY:1.43340492604,dashes:[4.50088,-445.58826672539],sourceLine:235},{angle:70.34617594,originX:4.318,originY:21.844,deltaX:-297.29446803469,deltaY:1.70858889651,dashes:[3.7759894,-373.822156782],sourceLine:236},{angle:293.19859051,originX:19.558,originY:25.4,deltaX:-136.7425191801,deltaY:3.33518339548,dashes:[3.868801,-189.57183588894],sourceLine:237},{angle:343.61045967,originX:21.082,originY:21.844,deltaX:-265.17991128725,deltaY:1.433404926,dashes:[4.50088,-445.5882667254],sourceLine:238},{angle:339.44395478,originX:0,originY:4.826,deltaX:-136.75087638398,deltaY:2.97284513779,dashes:[4.340352,-212.67734313106],sourceLine:239},{angle:294.7751406,originX:4.064,originY:3.302,deltaX:-306.90424056705,deltaY:1.77401295215,dashes:[3.6367212,-360.0359338072],sourceLine:240},{angle:66.80140949,originX:19.812,originY:0,deltaX:136.74251918012,deltaY:3.33518339452,dashes:[3.868801,-189.57183588894],sourceLine:241},{angle:17.35402464,originX:21.336,originY:3.556,deltaX:-345.47402804977,deltaY:1.51523696536,dashes:[4.2578274,-421.523759802],sourceLine:242},{angle:69.44395478,originX:7.366,originY:0,deltaX:-136.75087638396,deltaY:2.97284513874,dashes:[2.170176,-214.84751913106],sourceLine:243},{angle:101.309932474,originX:18.288,originY:0,deltaX:104.60834648271,deltaY:4.98134983255,dashes:[1.295146,-128.21994964526],sourceLine:244},{angle:165.963756532,originX:18.034,originY:1.27,deltaX:-80.085263387,deltaY:6.16040487582,dashes:[5.236337,-99.49054589069],sourceLine:245},{angle:186.00900596,originX:12.954,originY:2.54,deltaX:-255.26337856879,deltaY:1.32949676118,dashes:[4.85267,-480.41364863337],sourceLine:246},{angle:303.69006753,originX:15.748,originY:15.748,deltaX:-56.35753993648,deltaY:7.0446924921,dashes:[3.6632388,-87.9177635968],sourceLine:247},{angle:353.15722659,originX:17.78,originY:12.7,deltaX:434.77679606606,deltaY:1.0087628707,dashes:[6.3955676,-633.16009065031],sourceLine:248},{angle:60.9453959,originX:24.13,originY:11.938,deltaX:-204.76648550216,deltaY:2.46706609031,dashes:[2.6150824,-258.8939231811],sourceLine:249},{angle:90,originX:25.4,originY:14.224,deltaX:25.4,deltaY:25.4,dashes:[1.524,-23.876],sourceLine:250},{angle:120.25643716,originX:12.446,originY:3.302,deltaX:-204.77318477297,deltaY:1.8283320086,dashes:[3.5286696,-349.339407732],sourceLine:251},{angle:48.0127875,originX:10.668,originY:6.35,deltaX:305.85067529778,deltaY:1.88796713138,dashes:[6.8344288,-334.88762199565],sourceLine:252},{angle:0,originX:15.24,originY:11.43,deltaX:25.4,deltaY:25.4,dashes:[6.604,-18.796],sourceLine:253},{angle:325.3048465,originX:21.844,originY:11.43,deltaX:310.04235091354,deltaY:-1.6064370526,dashes:[4.0160956,-397.5931672414],sourceLine:254},{angle:254.0546041,originX:25.146,originY:9.144,deltaX:104.6687497289,deltaY:3.48895832444,dashes:[3.6982908,-181.21650038772],sourceLine:255},{angle:207.64597536,originX:24.13,originY:5.588,deltaX:545.36007557253,deltaY:1.07143433066,dashes:[6.021451,-596.12464422938],sourceLine:256},{angle:175.42607874,originX:18.796,originY:2.794,deltaX:331.1739336186,deltaY:1.01276432357,dashes:[6.3702946,-630.6584645624],sourceLine:257}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:259},{angle:120,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:260},{angle:60,originX:3.175,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:261}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:263},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:264},{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[-6.35,3.175],sourceLine:265}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:267},{angle:90,originX:0,originY:0,deltaX:-6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:268}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:270},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:271},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:272}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:285}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:287}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:289}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:291}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:293},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:294}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:296}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:298}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:300}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:302}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:304}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:306}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:308},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:309}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:311},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:312}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:314},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:315}]},{name:"JIS_LC_20",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:322},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:323}]},{name:"JIS_LC_20A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:325},{angle:45,originX:1,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:326}]},{name:"JIS_LC_8",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:328},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:329}]},{name:"JIS_LC_8A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:331},{angle:45,originX:1,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:332}]},{name:"JIS_RC_10",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:334},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:335},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:336}]},{name:"JIS_RC_15",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:338},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:339},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:340}]},{name:"JIS_RC_18",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:342},{angle:45,originX:1,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:343},{angle:45,originX:2,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:344}]},{name:"JIS_RC_30",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:346},{angle:45,originX:1,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:347},{angle:45,originX:2,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:348}]},{name:"JIS_STN_1E",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:350},{angle:45,originX:.705,originY:0,deltaX:0,deltaY:1,dashes:[1,-.5],sourceLine:351}]},{name:"JIS_STN_2.5",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.5,dashes:[],sourceLine:353},{angle:45,originX:1.765,originY:0,deltaX:0,deltaY:2.5,dashes:[1.2,-.5],sourceLine:354}]},{name:"JIS_WOOD",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[],sourceLine:356}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:359}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:6.35,dashes:[6.35,-6.35,0,-6.35,0,-6.35],sourceLine:361}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:363},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:364}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:366},{angle:60,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:367},{angle:120,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:368}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:370},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:371},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:372}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:374},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:375},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:376},{angle:0,originX:0,originY:3.96875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:377}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.38125,dashes:[],sourceLine:379},{angle:45,originX:1.6838,originY:0,deltaX:0,deltaY:2.38125,dashes:[0,-2.38125],sourceLine:380}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:382},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:383}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:385},{angle:60,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:386},{angle:120,originX:1.5875,originY:2.7496306704,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:387}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:389},{angle:45,originX:0,originY:1.5875,deltaX:0,deltaY:3.175,dashes:[],sourceLine:390}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[3.175,-22.225],sourceLine:392},{angle:90,originX:1.5875,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.5875,-42.4065904724],sourceLine:393},{angle:90,originX:1.984375,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:394},{angle:90,originX:1.190625,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:395},{angle:60,originX:2.38125,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:396},{angle:120,originX:.79375,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:397}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:399},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-3.175],sourceLine:400}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:402},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:403},{angle:0,originX:-2.38125,originY:4.1244459802,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:404}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:406},{angle:90,originX:3.175,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:407}]}],issues:[]};var Wn=(i=>(i[i.UserDefined=0]="UserDefined",i[i.Predefined=1]="Predefined",i[i.Custom=2]="Custom",i))(Wn||{}),Ju=(i=>(i[i.Normal=0]="Normal",i[i.Outer=1]="Outer",i[i.Ignore=2]="Ignore",i))(Ju||{}),td=(i=>(i[i.HatchObject=0]="HatchObject",i[i.GradientObject=1]="GradientObject",i))(td||{}),ed=(i=>(i[i.PreDefinedGradient=0]="PreDefinedGradient",i[i.UserDefinedGradient=1]="UserDefinedGradient",i))(ed||{});const _o=class _o extends q{constructor(){super(),this._areasFromLoopsCache=null,this._normal=new x(0,0,1),this._gradientAngle=0,this._elevation=0,this._geo=new Kt,this._isSolidFill=!1,this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1,this._patternName="",this._patternNameSet=!1,this._patternType=1,this._patternAngle=0,this._patternAngleSet=!1,this._patternScale=1,this._patternScaleSet=!1,this._associative=!1,this._associativeSet=!1,this._backgroundColor=void 0,this._backgroundColorSet=!1,this._patternDouble=!1,this._patternDoubleSet=!1,this._hatchStyle=0,this._hatchStyleSet=!1,this._hatchObjectType=0,this._gradientAngle=0,this._gradientShift=0,this._shadeTintValue=0,this._gradientStartColor=void 0,this._gradientEndColor=void 0,this._pixelSize=void 0,this._gradientType=0,this._gradientName="",this._gradientOneColorMode=!1}get dxfTypeName(){return"HATCH"}get isGradient(){return this._hatchObjectType===1}get isHatch(){return this._hatchObjectType===0}get isSolidFill(){return this._isSolidFill||this.getEffectivePatternName().trim().toUpperCase()===Ue}set isSolidFill(t){this._isSolidFill=t}get color(){if(this.hasExplicitColor())return this.getEntityColor();const t=this.database,e=bt.instance().getVar(k.HPCOLOR,t);return e instanceof j&&e.colorMethod!==exports.AcCmColorMethod.None?e.clone():t.cecolor.clone()}set color(t){this.setEntityColor(t)}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t??"",this._isSolidFill=this._patternName.trim().toUpperCase()===Ue,this._patternNameSet=!0,this.updatePredefinedPatternDefinitionLines()}get patternType(){return this._patternType}set patternType(t){this._patternType=t,t!==1&&this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1),this.updatePredefinedPatternDefinitionLines()}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t,this._patternAngleSet=!0}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}get associative(){return this._associative}set associative(t){this._associative=!!t,this._associativeSet=!0}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t==null?void 0:t.clone(),this._backgroundColorSet=!0}get patternDouble(){return this._patternDouble}set patternDouble(t){this._patternDouble=!!t,this._patternDoubleSet=!0}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t,this._hatchStyleSet=!0}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t),this._normal.lengthSq()>0&&this._normal.normalize()}get hatchObjectType(){return this._hatchObjectType}set hatchObjectType(t){this._hatchObjectType=t}get gradientAngle(){return this._gradientAngle}set gradientAngle(t){this._gradientAngle=t}get gradientShift(){return this._gradientShift}set gradientShift(t){this._gradientShift=t}get gradientType(){return this._gradientType}set gradientType(t){this._gradientType=t}get gradientName(){return this.isGradient&&this._gradientName.trim()===""?Lh:this._gradientName}set gradientName(t){this._gradientName=t??""}get gradientOneColorMode(){return this._gradientOneColorMode}set gradientOneColorMode(t){this._gradientOneColorMode=t}get shadeTintValue(){return this._shadeTintValue}set shadeTintValue(t){this._shadeTintValue=t}get gradientStartColor(){return this._gradientStartColor}set gradientStartColor(t){this._gradientStartColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get gradientEndColor(){return this._gradientEndColor}set gradientEndColor(t){this._gradientEndColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize=t}applyPatternDefaultsFromSysVars(t){const e=bt.instance();if(!this.hasExplicitLayer()){const n=e.getVar(k.HPLAYER,t);this.shouldUseSysVarOverride(n)&&(this.layer=n)}if(!this.hasExplicitTransparency()){const n=this.parseHpTransparency(e.getVar(k.HPTRANSPARENCY,t));n&&(this.transparency=n)}if(this._backgroundColorSet||(this._backgroundColor=this.parseHpBackgroundColor(e.getVar(k.HPBACKGROUNDCOLOR,t)),this._backgroundColorSet=!0),!this._patternNameSet){const n=e.getVar(k.HPNAME,t);this._patternName=typeof n=="string"?n:"",this._patternNameSet=!0}if(!this._patternAngleSet){const n=e.getVar(k.HPANG,t);this._patternAngle=typeof n=="number"&&Number.isFinite(n)?n:0,this._patternAngleSet=!0}if(this._patternScaleSet||(this._patternScale=this.normalizePatternScale(e.getVar(k.HPSCALE,t)),this._patternScaleSet=!0),!this._associativeSet){const n=e.getVar(k.HPASSOC,t);this._associative=typeof n=="number"?n!==0:!1,this._associativeSet=!0}if(this._hatchStyleSet||(this._hatchStyle=this.normalizeHatchStyle(e.getVar(k.HPISLANDDETECTION,t)),this._hatchStyleSet=!0),!this._patternDoubleSet){const n=e.getVar(k.HPDOUBLE,t);this._patternDouble=typeof n=="number"?n!==0:!1,this._patternDoubleSet=!0}this.updatePredefinedPatternDefinitionLines()}getEffectivePatternName(){if(this._patternNameSet)return this._patternName;const t=this.database,e=bt.instance().getVar(k.HPNAME,t);return typeof e=="string"?e:this._patternName}shouldResolveColorFromCecolor(){return!1}getEffectivePatternAngle(){if(this._patternAngleSet)return this._patternAngle;const t=this.database,e=bt.instance().getVar(k.HPANG,t);return typeof e=="number"&&Number.isFinite(e)?e:this._patternAngle}getRenderablePatternAngle(){return!this._definitionLinesAutoGenerated&&this._definitionLines.length>0?0:this.getEffectivePatternAngle()}getEffectivePatternScale(){if(this._patternScaleSet)return this._patternScale;const t=this.database;return this.normalizePatternScale(bt.instance().getVar(k.HPSCALE,t))}getEffectiveAssociative(){if(this._associativeSet)return this._associative;const t=this.database,e=bt.instance().getVar(k.HPASSOC,t);return typeof e=="number"?e!==0:this._associative}normalizePatternScale(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:1}normalizeHatchStyle(t){return typeof t!="number"||!Number.isFinite(t)?1:t===0?0:t===2?2:1}shouldUseSysVarOverride(t){if(typeof t!="string")return!1;const e=t.trim().toLowerCase();return e!==""&&e!=="."&&e!=="use current"}parseHpBackgroundColor(t){if(t instanceof j)return t.colorMethod===exports.AcCmColorMethod.None?void 0:t.clone();if(typeof t!="string")return;const e=t.trim().toLowerCase();if(!(!e||e==="."||e==="none"))return j.fromString(t)}parseHpTransparency(t){if(t instanceof ht)return t.clone();if(!this.shouldUseSysVarOverride(t))return;const e=t.trim();if(/^bylayer$/i.test(e)||/^byblock$/i.test(e))return ht.fromString(e);const n=Number(e);if(Number.isInteger(n)&&n>=0&&n<=90){const r=new ht;return r.percentage=n,r}}updatePredefinedPatternDefinitionLines(t=this.getEffectivePatternName(),e=this.getEffectivePatternScale()){if(this.patternType!==1||!(this._definitionLinesAutoGenerated||this._definitionLines.length===0))return;const r=t.trim().toUpperCase();if(!r||r===Ue){this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1;return}const s=this.normalizePatternScale(e);if(this._definitionLinesAutoGenerated&&this._definitionLinesPatternName===r&&this._definitionLinesPatternScale===s)return;const a=Qu.patterns.find(o=>o.name.trim().toUpperCase()===r);if(!a){this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1);return}this._definitionLines=a.lines.map(o=>({angle:o.angle*Math.PI/180,base:{x:o.originX*s,y:o.originY*s},offset:{x:o.deltaX*s,y:o.deltaY*s},dashLengths:o.dashes.map(c=>c*s)})),this._definitionLinesAutoGenerated=!0,this._definitionLinesPatternName=r,this._definitionLinesPatternScale=s}add(t){this._geo.add(t),this.invalidateAreasFromLoopsCache()}invalidateAreasFromLoopsCache(){this._areasFromLoopsCache=null}buildAreasFromLoops(){if(this._areasFromLoopsCache!=null)return this._areasFromLoopsCache;const t=this._geo.loops;if(t.length===0)return this._areasFromLoopsCache=[],this._areasFromLoopsCache;if(t.length===1)return this._areasFromLoopsCache=[this._geo],this._areasFromLoopsCache;const e=this._geo.buildHierarchy(),n=[],r=(s,a)=>{if(s.index>=0&&a%2===0){const o=new Kt;o.add(t[s.index]),s.children.forEach(c=>{c.index>=0&&o.add(t[c.index])}),n.push(o)}s.children.forEach(o=>r(o,a+1))};return e.children.forEach(s=>r(s,0)),this._areasFromLoopsCache=n.length>0?n:[this._geo],this._areasFromLoopsCache}getCalculatedAreaValue(){const t=this.buildAreasFromLoops();return t.length===0?0:t.reduce((e,n)=>e+n.area,0)}get area(){return this.getCalculatedAreaValue()}get geometricExtents(){const t=this.buildAreasFromLoops();if(t.length===0)return new z;const e=new z;return t.forEach(n=>{const r=n.box;e.union(new z().setFromPoints([_t({x:r.min.x,y:r.min.y,z:this._elevation},this._normal),_t({x:r.max.x,y:r.min.y,z:this._elevation},this._normal),_t({x:r.max.x,y:r.max.y,z:this._elevation},this._normal),_t({x:r.min.x,y:r.max.y,z:this._elevation},this._normal)]))}),e}subGetIntersectCurves(){return Am(this._geo.loops,this._elevation,this._normal)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:Wn[0],value:0},{label:Wn[1],value:1},{label:Wn[2],value:2}],accessor:{get:()=>this.patternType,set:t=>{this.patternType=t}}},{name:"patternName",type:"string",editable:!0,accessor:{get:()=>this.patternName,set:t=>{this.patternName=t}}},{name:"patternAngle",type:"float",editable:!0,accessor:{get:()=>this.patternAngle,set:t=>{this.patternAngle=t}}},{name:"patternScale",type:"float",editable:!0,accessor:{get:()=>this.patternScale,set:t=>{this.patternScale=t}}},{name:"associative",type:"boolean",editable:!0,accessor:{get:()=>this.associative,set:t=>{this.associative=t}}},{name:"backgroundColor",type:"color",editable:!0,accessor:{get:()=>this.backgroundColor,set:t=>{this.backgroundColor=t}}},{name:"patternDouble",type:"boolean",editable:!0,accessor:{get:()=>this.patternDouble,set:t=>{this.patternDouble=t}}}]},{groupName:"geometry",properties:[{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){return this.associative?[]:this.collectBoundaryGripPoints()}subMoveGripPointsAt(t,e){return this.associative?this:(ft(t,n=>{this.moveBoundaryGripPointAt(n,e)}),this.invalidateAreasFromLoopsCache(),this)}collectBoundaryGripPoints(){const t=new Array,e=this._elevation,n=new Set,r=s=>{const a=`${s.x},${s.y},${s.z??0}`;n.has(a)||(n.add(a),t.push(new b(s.x,s.y,s.z??e)))};return this._geo.loops.forEach(s=>{if(s instanceof Q){const a=s.numberOfVertices;for(let o=0;o<a;o++){const c=s.getPointAt(o);r({x:c.x,y:c.y,z:e})}return}s.curves.forEach(a=>{if(a instanceof Gt)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});else if(a instanceof rt)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e}),r({x:a.midPoint.x,y:a.midPoint.y,z:e});else if(a instanceof me){r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});const o=a.getPoint(.5);r({x:o.x,y:o.y,z:e})}})}),t}moveBoundaryGripPointAt(t,e){let n=0;const r=this._elevation,s=new Set,a=(o,c)=>{const l=`${o.x},${o.y},${o.z??0}`;s.has(l)||(s.add(l),n===t&&c(),n++)};this._geo.loops.forEach(o=>{if(o instanceof Q){const c=o.numberOfVertices;for(let l=0;l<c;l++){const h=o.vertices[l];h&&a({x:h.x,y:h.y,z:r},()=>{Un(o.vertices,l,e)})}return}o.curves.forEach(c=>{if(c instanceof Gt)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>{c.startPoint.x+=e.x,c.startPoint.y+=e.y}),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>{c.endPoint.x+=e.x,c.endPoint.y+=e.y});else if(c instanceof rt)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"end",e)),a({x:c.midPoint.x,y:c.midPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"mid",e));else if(c instanceof me){a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"end",e));const l=c.getPoint(.5);a({x:l.x,y:l.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"mid",e))}})})}moveCircArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.midPoint,a=new rt(t.startPoint,{x:s.x+n.x,y:s.y+n.y},t.endPoint);t.center=a.center,t.radius=a.radius,t.startAngle=a.startAngle,t.endAngle=a.endAngle,t.clockwise=a.clockwise;break}}}moveEllipseArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.getPoint(.5),a=s.x+n.x-t.center.x,o=s.y+n.y-t.center.y,c=Math.hypot(s.x-t.center.x,s.y-t.center.y),l=Math.hypot(a,o);if(c>0&&l>0){const h=l/c;t.majorAxisRadius*=h,t.minorAxisRadius*=h}break}}}subGetOsnapPoints(t,e,n,r){const s=this._elevation,a=[];if(this._geo.loops.forEach(o=>{var c;if(o instanceof Q){const l=o,h=l.numberOfVertices;if(h===0)return;switch(t){case P.EndPoint:for(let u=0;u<h;u++){const d=l.getPointAt(u);r.push(new b(d.x,d.y,s))}break;case P.MidPoint:case P.Nearest:case P.Perpendicular:case P.Tangent:{const u=o.closed?h:h-1;for(let d=0;d<u;d++){const g=[];ii(l.getPointAt(d),l.getPointAt((d+1)%h),(c=l.vertices[d])==null?void 0:c.bulge,s,t,e,g),t===P.MidPoint?r.push(...g):a.push(...g)}break}}return}o.curves.forEach(l=>{if(l instanceof Gt){const h=[];ii(l.startPoint,l.endPoint,void 0,s,t,e,h),t===P.MidPoint?r.push(...h):t===P.Nearest||t===P.Perpendicular||t===P.Tangent?a.push(...h):r.push(...h)}else if(l instanceof rt)switch(t){case P.EndPoint:r.push(new b(l.startPoint.x,l.startPoint.y,s),new b(l.endPoint.x,l.endPoint.y,s));break;case P.MidPoint:r.push(new b(l.midPoint.x,l.midPoint.y,s));break;case P.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new b(h.x,h.y,s));break}case P.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}case P.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}}else if(l instanceof me)switch(t){case P.EndPoint:r.push(new b(l.startPoint.x,l.startPoint.y,s),new b(l.endPoint.x,l.endPoint.y,s));break;case P.MidPoint:{const h=l.getPoint(.5);r.push(new b(h.x,h.y,s));break}case P.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new b(h.x,h.y,s));break}case P.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}case P.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new b(u.x,u.y,s)));break}}})}),(t===P.Nearest||t===P.Perpendicular||t===P.Tangent)&&a.length>0){const o=$t(e,a);r.length=0,o&&r.push(o)}}get directBatchPrimitive(){return!this.isSolidFill||this.isGradient||this.buildAreasFromLoops().length>1?null:"area"}subWorldDraw(t){var s;this.updatePredefinedPatternDefinitionLines();const e=t.subEntityTraits;e.fillType={solidFill:this.isSolidFill,patternAngle:this.getRenderablePatternAngle(),definitionLines:this.definitionLines,backgroundColor:(s=this.backgroundColor)==null?void 0:s.clone(),gradient:this.isGradient?{name:this.gradientName,angle:this.gradientAngle,shift:this.gradientShift,oneColorMode:this.gradientOneColorMode,shadeTintValue:this.shadeTintValue,startColor:this.gradientStartColor,endColor:this.gradientEndColor}:void 0},e.drawOrder=-1;const n=this.buildAreasFromLoops();if(n.length===0)return t.area(this._geo);if(n.length===1)return t.area(n[0]);const r=n.map(a=>t.area(a));return t.group(r)}transformBy(t){const e=t.elements,n=new bi(e[0],e[4],e[12],e[1],e[5],e[13],0,0,1);this._geo.transform(n),this.invalidateAreasFromLoopsCache(),this._elevation=new b(0,0,this._elevation).applyMatrix4(t).z,this._normal.transformDirection(t),this._normal.lengthSq()>0&&this._normal.normalize();const r=new b(1,0,0).applyMatrix4(t),s=new b().applyMatrix4(t),a=new b(r).sub(s);if(a.length()>0){const o=Math.atan2(a.y,a.x);this._patternAngle=this.getEffectivePatternAngle()+o,this._gradientAngle+=o,this._patternScale=this.getEffectivePatternScale()*a.length(),this._patternAngleSet=!0,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}return this}dxfOutFields(t){super.dxfOutFields(t);const e=this._geo.loops,n=this.getEffectivePatternName(),r=this.getEffectivePatternAngle(),s=this.getEffectivePatternScale();if(this.updatePredefinedPatternDefinitionLines(n,s),t.writeSubclassMarker("AcDbHatch"),t.writePoint3d(10,{x:0,y:0,z:this.elevation}),t.writeVector3d(210,this.normal),t.writeString(2,n||(this.isSolidFill?Ue:Eh)),t.writeInt16(70,this.isSolidFill?1:0),t.writeInt16(71,this.getEffectiveAssociative()?1:0),t.writeInt16(91,e.length),e.forEach((a,o)=>{const c=o===0;if(a instanceof Q){const l=a.vertices,h=l.some(d=>(d.bulge??0)!==0);t.writeInt16(92,2),t.writeInt16(72,h?1:0),t.writeInt16(73,a.closed?1:0),t.writeInt16(93,l.length);for(const d of l)t.writePoint2d(10,d),h&&t.writeDouble(42,d.bulge??0);t.writeInt16(97,0);return}if(a instanceof mn){const l=c?1:0;t.writeInt16(92,l),t.writeInt16(93,a.numberOfEdges);for(const h of a.curves){if(h instanceof Gt){t.writeInt16(72,1),t.writePoint2d(10,h.startPoint),t.writePoint2d(11,h.endPoint);continue}if(h instanceof rt){t.writeInt16(72,2),t.writePoint2d(10,h.center),t.writeDouble(40,h.radius),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof me){t.writeInt16(72,3),t.writePoint2d(10,h.center);const u=new L(h.majorAxisRadius*Math.cos(h.rotation),h.majorAxisRadius*Math.sin(h.rotation));t.writePoint2d(11,u);const d=h.majorAxisRadius===0?0:h.minorAxisRadius/h.majorAxisRadius;t.writeDouble(40,d),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Ut){const u=h.knots,d=h.controlPoints,g=h.weights,f=h.fitPoints,p=g.some(m=>m!==1);t.writeInt16(72,4),t.writeInt16(94,h.degree),t.writeInt16(73,p?1:0),t.writeInt16(74,h.closed?1:0),t.writeInt16(95,u.length),t.writeInt16(96,d.length),u.forEach(m=>t.writeDouble(40,m)),d.forEach((m,y)=>{t.writePoint2d(10,m),p&&t.writeDouble(42,g[y]??1)}),t.writeInt16(97,(f==null?void 0:f.length)??0),f==null||f.forEach(m=>t.writePoint2d(11,m))}}t.writeInt16(97,0)}}),t.writeInt16(75,this.hatchStyle),t.writeInt16(76,this.patternType),t.writeAngle(52,r),t.writeDouble(41,s),t.writeInt16(77,0),t.writeInt16(78,this.definitionLines.length),this.definitionLines.forEach(a=>{t.writeAngle(53,a.angle),t.writeDouble(43,a.base.x),t.writeDouble(44,a.base.y),t.writeDouble(45,a.offset.x),t.writeDouble(46,a.offset.y),t.writeInt16(79,a.dashLengths.length),a.dashLengths.forEach(o=>t.writeDouble(49,o))}),this._pixelSize!=null&&t.writeDouble(47,this._pixelSize),this.isGradient){t.writeInt16(450,this._hatchObjectType),t.writeInt16(451,0),t.writeDouble(460,this._gradientAngle),t.writeDouble(461,this._gradientShift),t.writeInt16(452,this._gradientOneColorMode?1:0),t.writeDouble(462,this._shadeTintValue);const a=this._gradientStartColor,o=this._gradientEndColor,c=a!=null&&o!=null?2:a!=null||o!=null?1:0;t.writeInt16(453,c);const l=(h,u)=>{t.writeDouble(463,h);const d=ee.getIndexByColor(u);d!=null&&t.writeInt16(63,d),t.writeInt32(421,u)};a!=null&&l(0,a),o!=null&&l(1,o),t.writeString(470,this.gradientName)}return t.writeInt16(98,0),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbHatch"),this.definitionLines.length=0;let e=this.elevation,n=this.normal.x,r=this.normal.y,s=this.normal.z,a=this.patternAngle*180/Math.PI,o=0,c=!1,l=!1,h=!1,u=[],d=null,g=[],f=null,p="type",m=0,y=!1,_=null,v=!1,w=0,A;const E=G=>{w===0?this.gradientStartColor=G:this.gradientEndColor=G,w++,A=void 0},I=()=>{if(A==null)return;const G=ee.getColorByIndex(A);G!=null?E(G):A=void 0},M=()=>{d&&(u.push(d),d=null)},T=()=>{if(M(),u.length===0)return;const G=new Q;G.closed=h,u.forEach((J,S)=>{G.addVertexAt(S,{x:J.x,y:J.y,bulge:J.bulge??0})}),this.add(G),u=[]},R=()=>{if(g.length===0)return;const G=[];for(const S of g)if(S.kind==="line")G.push(new Gt({x:S.sx,y:S.sy},{x:S.ex,y:S.ey}));else if(S.kind==="arc")G.push(new rt({x:S.cx,y:S.cy},S.radius,S.startDeg*Math.PI/180,S.endDeg*Math.PI/180,!S.isCcw));else if(S.kind==="ellipse"){const H=Math.hypot(S.mx,S.my),ct=H*S.ratio;let N=S.startDeg*Math.PI/180,It=S.endDeg*Math.PI/180;const et=Math.atan2(S.my,S.mx);S.isCcw||(N=Math.PI*2-N,It=Math.PI*2-It),G.push(new me({x:S.cx,y:S.cy,z:0},H,ct,N,It,!S.isCcw,et))}else{const H=Ut.fromDwgSplineEdge({degree:S.degree,numberOfControlPoints:S.controlPoints.length,numberOfKnots:S.knots.length,numberOfFitData:S.fitPoints.length,knots:S.knots,controlPoints:S.controlPoints.map(ct=>({x:ct.x,y:ct.y,z:0,weight:S.rational?ct.weight??1:void 0})),fitDatum:S.fitPoints.map(ct=>({x:ct.x,y:ct.y,z:0})),startTangent:null,endTangent:null});H&&G.push(H)}const J=mn.buildFromEdges(G);J.length===0&&G.length>0?this.add(new mn(G)):J.forEach(S=>this.add(S)),g=[],f=null},Y=()=>{c?T():R()},O=()=>{f&&(g.push(f),f=null)},Z=()=>{O(),Y(),m=Math.max(0,m-1),m===0&&(v=!0)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const G=t.readItem();if(!G)break;const J=Number(G.code),S=Number(G.value);if(y||v){switch(J){case 75:this.hatchStyle=S,v=!0;break;case 76:this.patternType=S;break;case 52:a=S;break;case 41:this.patternScale=S;break;case 77:break;case 78:y=!0;break;case 53:_&&this.definitionLines.push(_),_={angle:S*Math.PI/180,base:{x:0,y:0},offset:{x:0,y:0},dashLengths:[]};break;case 43:_&&(_.base.x=S);break;case 44:_&&(_.base.y=S);break;case 45:_&&(_.offset.x=S);break;case 46:_&&(_.offset.y=S);break;case 79:break;case 49:_&&_.dashLengths.push(S);break;case 47:this.pixelSize=S;break;case 99:break;case 450:this.hatchObjectType=S,this.gradientStartColor=void 0,this.gradientEndColor=void 0,w=0,A=void 0;break;case 451:break;case 452:this.gradientOneColorMode=S!==0;break;case 453:break;case 460:this.gradientAngle=S;break;case 461:this.gradientShift=S;break;case 462:this.shadeTintValue=S;break;case 463:I();break;case 63:A=S;break;case 421:E(S);break;case 470:I(),this.gradientName=String(G.value);break}continue}switch(J){case 10:c||f&&f.kind!=="line"&&f.kind!=="arc"&&f.kind!=="ellipse"&&f.kind,m>0&&c?(M(),d={x:S,y:0}):(f==null?void 0:f.kind)==="line"&&p==="type"?f.sx=S:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cx=S:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.push({x:S,y:0});break;case 20:m>0&&c&&d?d.y=S:(f==null?void 0:f.kind)==="line"&&p==="type"?f.sy=S:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cy=S:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].y=S);break;case 30:m<=0&&!v&&(e=S);break;case 2:this.patternName=String(G.value);break;case 70:this.isSolidFill=S!==0;break;case 71:this.associative=S!==0;break;case 91:m=S;break;case 92:m>0&&(u.length>0||g.length>0||f)&&(O(),Y()),o=S,c=(o&2)!==0,l=!1,h=!1,u=[],g=[],f=null,p="type";break;case 72:c?l=S!==0:(O(),S===1?(f={kind:"line",sx:0,sy:0,ex:0,ey:0},p="type"):S===2?f={kind:"arc",cx:0,cy:0,radius:0,startDeg:0,endDeg:0,isCcw:!0}:S===3?f={kind:"ellipse",cx:0,cy:0,mx:0,my:0,ratio:1,startDeg:0,endDeg:0,isCcw:!0}:S===4?f={kind:"spline",degree:3,rational:!1,closed:!1,knots:[],controlPoints:[],fitPoints:[],expectedKnots:0,expectedControls:0,expectedFits:0,fitCountSeen:!1}:f=null);break;case 73:c?h=S!==0:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.isCcw=S!==0:(f==null?void 0:f.kind)==="spline"&&(f.rational=S!==0);break;case 74:(f==null?void 0:f.kind)==="spline"&&(f.closed=S!==0);break;case 93:break;case 42:c&&l&&d?d.bulge=S:(f==null?void 0:f.kind)==="spline"&&f.rational&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].weight=S);break;case 11:(f==null?void 0:f.kind)==="line"?(f.ex=S,p="line-end"):(f==null?void 0:f.kind)==="ellipse"?f.mx=S:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.push({x:S,y:0});break;case 21:(f==null?void 0:f.kind)==="line"?f.ey=S:(f==null?void 0:f.kind)==="ellipse"?f.my=S:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.length>0&&(f.fitPoints[f.fitPoints.length-1].y=S);break;case 40:(f==null?void 0:f.kind)==="arc"?f.radius=S:(f==null?void 0:f.kind)==="ellipse"?f.ratio=S:(f==null?void 0:f.kind)==="spline"&&f.knots.push(S);break;case 50:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.startDeg=S);break;case 51:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.endDeg=S);break;case 94:(f==null?void 0:f.kind)==="spline"&&(f.degree=S);break;case 95:(f==null?void 0:f.kind)==="spline"&&(f.expectedKnots=S);break;case 96:(f==null?void 0:f.kind)==="spline"&&(f.expectedControls=S);break;case 97:if((f==null?void 0:f.kind)==="spline"&&!f.fitCountSeen&&(f.controlPoints.length>0||f.knots.length>0)){f.expectedFits=S,f.fitCountSeen=!0;break}Z();break;case 75:O(),Y(),m=0,v=!0,this.hatchStyle=S;break;case 210:n=S;break;case 220:r=S;break;case 230:s=S;break}}f&&(g.push(f),f=null),Y(),_&&this.definitionLines.push(_),I(),this.elevation=e;const K=new x(n,r,s);return K.lengthSq()>0&&(this.normal=K),this.patternAngle=a*Math.PI/180,this}};_o.typeName="Hatch";let ci=_o;class nd{constructor(t){this.db=t}createDefaultLayer(){const t=new j;return t.colorIndex=7,this.db.tables.layerTable.add(new Si({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new Re({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new Re({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new Re({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new gs({name:st,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new Dt({name:st,dimtxsty:st}))}createDefaultLayout(){const t=new Pi;t.layoutName="Model",t.tabOrder=0,t.blockTableRecordId=this.db.tables.blockTable.modelSpace.objectId,t.limits.min.copy({x:0,y:0}),t.limits.max.copy({x:1e6,y:1e6}),t.extents.min.copy({x:0,y:0,z:0}),t.extents.max.copy({x:1e6,y:1e6,z:0}),this.db.objects.layout.setAt(t.layoutName,t),this.db.tables.blockTable.modelSpace.layoutId=t.objectId}createArrowBlock(){if(!this.db.tables.blockTable.getAt("_CAXARROW")){const e=new ci;e.patternName=Ue;const n=new mn;n.add(new Gt({x:0,y:0},{x:-1,y:.125})),n.add(new Gt({x:-1,y:.125},{x:-1,y:-.125})),n.add(new Gt({x:-1,y:-.125},{x:0,y:0})),e.add(n);const r=new it;r.name="_CAXARROW",r.appendEntity(e),this.db.tables.blockTable.add(r)}}}const ya=Math.PI/200;class id{constructor(t){this.database=t}formatLength(t,e){const n=this.createContext(e);return tn(t,n)}formatPoint2d(t,e){const n=this.createContext(e);return`${tn(t.x,n)}, ${tn(t.y,n)}`}formatPoint3d(t,e){const n=this.createContext(e);return`${tn(t.x,n)}, ${tn(t.y,n)}, ${tn(t.z,n)}`}formatAngle(t,e){const n=this.createContext(e),s=(e==null?void 0:e.applyAngbaseAngdir)??!0?py(t,this.database.angbase,this.database.angdir):C.normalizeAngle(t);return fy(s,n)}createContext(t){return{lunits:this.database.lunits,luprec:li(this.database.luprec),insunits:this.database.insunits,unitmode:this.database.unitmode,measurement:this.database.measurement,aunits:this.database.aunits,auprec:li(this.database.auprec),showUnits:(t==null?void 0:t.showUnits)??!1,showApproximate:(t==null?void 0:t.showApproximate)??!1}}}function tn(i,t){let e;switch(t.lunits){case ot.Scientific:e=js(Py(i,t.luprec),t);break;case ot.Engineering:e=ky(i,t);break;case ot.Architectural:e=Sy(i,t);break;case ot.Fractional:e=js(Iy(i,t),t);break;case ot.WindowsDesktop:case ot.Decimal:default:e=js(Bn(i,t.luprec),t)}return rd(e,my(i,t),t)}function fy(i,t){let e;switch(t.aunits){case Ct.DegreesMinutesSeconds:e=od(i,t);break;case Ct.Gradians:e=Cy(i,t);break;case Ct.Radians:e=Ly(i,t);break;case Ct.SurveyorsUnits:e=Ty(i,t);break;case Ct.DecimalDegrees:default:e=Ey(i,t)}return rd(e,yy(i,t),t)}function py(i,t,e){let n=i-t;return e===1&&(n=-n),C.normalizeAngle(n)}function oo(i){const t=i.showUnits?'"':"";return i.unitmode===1?{feetInchSeparator:"",fractionSeparator:"-",inchSuffix:t}:{feetInchSeparator:"-",fractionSeparator:" ",inchSuffix:t}}function li(i,t=0,e=8){return Number.isFinite(i)?Math.max(t,Math.min(e,Math.round(i))):t}function Rn(i){return Object.is(i,-0)?0:i}function rd(i,t,e){return!e.showApproximate||!t?i:`~ ${i}`}function my(i,t){if(!Number.isFinite(i))return!1;const e=_y(i,t);return co(i,e)}function yy(i,t){if(!Number.isFinite(i))return!1;if(t.aunits===Ct.SurveyorsUnits)return by(i,t.auprec);const e=xy(i,t);return co(i,e)}function by(i,t){const n=((90-C.radToDeg(i))%360+360)%360,r=cd(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),a=C.degToRad(s),o=sd(a,t);return co(a,o)}function _y(i,t){const e=Rn(i);switch(t.lunits){case ot.Scientific:return wy(e,t.luprec);case ot.Engineering:case ot.Architectural:case ot.Fractional:return vy(e,t);case ot.WindowsDesktop:case ot.Decimal:default:return bn(e,t.luprec)}}function xy(i,t){const e=Rn(i);switch(t.aunits){case Ct.DegreesMinutesSeconds:return sd(e,t.auprec);case Ct.Gradians:return bn(e/ya,t.auprec)*ya;case Ct.Radians:return bn(e,t.auprec);case Ct.DecimalDegrees:default:return C.degToRad(bn(C.radToDeg(e),t.auprec))}}function bn(i,t){if(!Number.isFinite(i))return 0;const e=10**t;return Math.round(Rn(i)*e)/e}function wy(i,t){if(!Number.isFinite(i))return 0;const e=Rn(i);if(e===0)return 0;const n=e.toExponential(t);return Number(n)}function vy(i,t){if(!Number.isFinite(i))return 0;const e=i<0?-1:1,n=Math.abs(i),r=Math.floor(n/12),s=n-r*12;if(t.lunits===ot.Architectural||t.lunits===ot.Fractional){const a=1<<li(t.luprec,0,8),o=Ay(s,a);return e*(r*12+o)}return e*(r*12+bn(s,t.luprec))}function Ay(i,t){const e=Math.floor(i),n=i-e,r=Math.round(n*t);return r>=t?e+1:e+r/t}function sd(i,t){const e=C.radToDeg(i),n=e<0?-1:1,r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=bn((a-o)*60,t),l=s+o/60+c/3600;return C.degToRad(n*l)}function co(i,t){if(i===t)return!1;const e=Math.max(Math.abs(i),Math.abs(t),1);return Math.abs(i-t)>e*Number.EPSILON*8}function Bn(i,t){if(!Number.isFinite(i))return"0";const e=Rn(i);if(Number.isInteger(e)&&t===0)return String(e);const r=e.toFixed(t).replace(/\.?0+$/,"");return r===""||r==="-"?"0":r}function Py(i,t){if(!Number.isFinite(i))return"0";const e=Rn(i);if(e===0)return"0";const n=e.toExponential(t).match(/^(.+)e([+-])(\d+)$/i);if(!n)return"0";const[,r,s,a]=n,o=a.length<2?a.padStart(2,"0"):a;return`${r}E${s}${o}`.toUpperCase()}function ky(i,t){if(!Number.isFinite(i))return"0";const e=oo(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=Bn(a,t.luprec);return s===0?`${n}${o}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${o}${e.inchSuffix}`}function Sy(i,t){if(!Number.isFinite(i))return"0";const e=oo(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=1<<li(t.luprec,0,8),c=ad(a,o,e.fractionSeparator);return s===0?`${n}${c}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${c}${e.inchSuffix}`}function Iy(i,t){if(!Number.isFinite(i))return"0";const e=oo(t),n=i<0?"-":"",r=Math.abs(i),s=1<<li(t.luprec,0,8);return`${n}${ad(r,s,e.fractionSeparator)}`}function ad(i,t,e){const n=Math.floor(i),r=i-n;let s=Math.round(r*t);if(s>=t)return String(n+1);if(s===0)return String(n);const a=Ry(s,t);s/=a;const o=t/a,c=`${s}/${o}`;return n===0?c:`${n}${e}${c}`}function Ey(i,t){const e=C.radToDeg(i);return`${Bn(e,t.auprec)}${t.showUnits?"°":""}`}function Ly(i,t){return`${Bn(i,t.auprec)}${t.showUnits?" rad":""}`}function Cy(i,t){const e=i/ya;return`${Bn(e,t.auprec)}${t.showUnits?"g":""}`}function od(i,t){const e=C.radToDeg(i),n=e<0?"-":"",r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=(a-o)*60,l=Bn(c,t.auprec),h=t.showUnits?'"':"";return`${n}${s}d${o}'${l}${h}`}function Ty(i,t){const n=((90-C.radToDeg(i))%360+360)%360,r=cd(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),o=od(C.degToRad(s),t).replace(/^-/,"");return`${r.prefix} ${o} ${r.suffix}`.trim()}function cd(i){return i<90?{prefix:"N",suffix:"E",base:0}:i<180?{prefix:"S",suffix:"E",base:90}:i<270?{prefix:"S",suffix:"W",base:180}:{prefix:"N",suffix:"W",base:270}}function js(i,t){if(!t.showUnits||t.lunits===ot.Engineering||t.lunits===ot.Architectural)return i;const e=My(t.insunits,t.measurement);return e?`${i}${e}`:i}function My(i,t){return i===nt.Undefined?t===0?'"':" mm":Im(i)?Oy(i):Em(i)?Ny(i):""}function Oy(i){switch(i){case nt.Millimeters:return" mm";case nt.Centimeters:return" cm";case nt.Meters:return" m";case nt.Kilometers:return" km";case nt.Decimeters:return" dm";case nt.Microns:return" µm";case nt.Nanometers:return" nm";default:return""}}function Ny(i){switch(i){case nt.Inches:case nt.Microinches:case nt.Mils:case nt.USSurveyInch:return'"';case nt.Feet:case nt.USSurveyFeet:return"'";case nt.Miles:case nt.USSurveyMile:return" mi";case nt.Yards:case nt.USSurveyYard:return" yd";default:return""}}function Ry(i,t){let e=Math.abs(i),n=Math.abs(t);for(;n!==0;){const r=n;n=e%n,e=r}return e||1}class Vt extends vt{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this._recordsByName=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){const n=this.database.transactionManager;if(n.strictMode&&!n.isRecording()&&!n.isApplyingUndoRedo())throw new Error("Cannot modify dictionary entries outside an active transaction.");const r=this.getAt(t);r&&(n.isRecording()&&n.recordRemove({type:"dictionary",dictionaryId:this.objectId,key:t},r),this.database.releaseObjectHandle(r)),e.database=this.database,e.ownerId=this.objectId,this.database.commitObjectHandle(e,s=>this.hasId(s)),this._recordsByName.set(t,e),n.isRecording()&&n.recordAppend({type:"dictionary",dictionaryId:this.objectId,key:t},e),!n.isRecording()&&!n.isApplyingUndoRedo()&&this.database.notifyDictObjectSet(e,t)}remove(t){const e=this.getAt(t);return e?(this.removeStoredObject(e,t),!0):!1}removeId(t){const e=this.getIdAt(t);if(e){let n="";return this._recordsByName.forEach((r,s)=>{r===e&&(n=s)}),this.removeStoredObject(e,n),!0}return!1}removeStoredObject(t,e){const n=this.database.transactionManager;if(n.strictMode&&!n.isRecording()&&!n.isApplyingUndoRedo())throw new Error("Cannot remove dictionary entries outside an active transaction.");n.isRecording()&&n.recordRemove({type:"dictionary",dictionaryId:this.objectId,key:e},t),this._recordsByName.forEach((r,s)=>{r===t&&this._recordsByName.delete(s)}),this.database.releaseObjectHandle(t),e&&!n.isRecording()&&!n.isApplyingUndoRedo()&&this.database.notifyDictObjectErased(t,e)}removeAll(){this._recordsByName.forEach((t,e)=>{this.database.releaseObjectHandle(t),this.database.events.dictObjectErased.dispatch({database:this.database,object:t,key:e})}),this._recordsByName.clear()}has(t){return this._recordsByName.has(t.toUpperCase())}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){return this._recordsByName.get(t)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}newIterator(){return new kn(this._recordsByName)}entries(){return this._recordsByName.entries()}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const[e,n]of this._recordsByName)t.writeString(3,e),t.writeObjectId(350,n.objectId);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbDictionary");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;if(Number(e.code)===100){t.pushBackItem(e);break}}return this}}class ge extends vt{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this.ownerId=t.objectId,this._recordsByName=new Map,this._unnamedRecords=[]}get numEntries(){return this._recordsByName.size}get totalRecordCount(){return this._recordsByName.size+this._unnamedRecords.length}add(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot add symbol table records outside an active transaction.");const n=e.resolveSymbolTableName(this);t.database=this.database,t.ownerId=this.objectId,this.database.commitObjectHandle(t,s=>this.hasId(s));const r=this.normalizeName(t.name);r?this._recordsByName.set(r,t):this._unnamedRecords.push(t),e.isRecording()&&e.recordAppend({type:"symbolTable",tableName:n},t)}remove(t){const e=this.normalizeName(t),n=this._recordsByName.get(e);return n?(this.removeRecord(n),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this.removeRecord(e),!0):!1}removeRecord(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot remove symbol table records outside an active transaction.");if(e.isRecording()){const n=e.resolveSymbolTableName(this);e.recordRemove({type:"symbolTable",tableName:n},t)}this.removeFromMembership(t),this.database.releaseObjectHandle(t)}removeAll(){for(const t of this._recordsByName.values())this.database.releaseObjectHandle(t);for(const t of this._unnamedRecords)this.database.releaseObjectHandle(t);this._recordsByName.clear(),this._unnamedRecords.length=0}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}getOwnerIdAt(t){return this.getIdAt(t)}newIterator(t=!1){return t?new kn([...this._recordsByName.values(),...this._unnamedRecords]):new kn(this._recordsByName)}normalizeName(t){return(t??"").trim().toUpperCase()}get dxfEntryCount(){return this.numEntries}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTable"),t.writeInt16(70,this.dxfEntryCount),this}removeFromMembership(t){const e=this.normalizeName(t.name);if(e){this._recordsByName.delete(e);return}const n=this._unnamedRecords.indexOf(t);n>=0&&this._unnamedRecords.splice(n,1)}}class ld extends ge{constructor(t){super(t)}get modelSpace(){let t=this.getAt(it.MODEL_SPACE_NAME);return t||(t=new it,t.name=it.MODEL_SPACE_NAME,this.add(t)),t}getEntityById(t){const e=this.database.getObjectById(t);if(e instanceof q)return e}removeEntity(t){let e=!1;for(const n of this.database.tables.blockTable.newIterator())if(n.removeEntity(t)){e=!0;break}return e}getXrefs(){const t=[];for(const e of this.newIterator())e.isXref&&t.push(e);return t}getUnresolvedXrefs(){return this.getXrefs().filter(t=>t.isUnresolvedXref)}normalizeName(t){const e=(t??"").trim();if(!e)return"";if(it.isModelSapceName(e))return it.MODEL_SPACE_NAME;if(it.isPaperSapceName(e)){const n=it.PAPER_SPACE_NAME_PREFIX,r=e.substring(n.length);return n+r}return super.normalizeName(e)}}const jt=class jt extends Error{constructor(t,e,n){super(t),this.name="AcDbOpenDatabaseError",this.code=e,this.stage=n==null?void 0:n.stage}static isWorkerOutOfMemoryMessage(t){const e=t.toLowerCase();return jt.WORKER_OOM_PATTERNS.some(n=>e.includes(n))}static classifyWorkerErrorMessage(t){return jt.isWorkerOutOfMemoryMessage(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error"}static from(t,e){if(t instanceof jt)return t;const n=t instanceof Error?t.message:String(t),r=jt.classifyWorkerErrorMessage(n);return new jt(n,r,{stage:e,cause:t})}static fromTask(t){const e=t.task.name;return jt.from(t.error,e)}static throwOnWorkerParseFailure(t,e="PARSE"){if(t.success)return;const n=t.error!=null?`Failed to parse drawing due to error: '${t.error}'`:"Failed to parse drawing due to an unknown worker error",r=jt.mapWorkerResultCode(t.errorCode,t.error);throw new jt(n,r,{stage:e})}static mapWorkerResultCode(t,e){switch(t){case"worker_oom":return"worker_oom";case"worker_timeout":return"worker_timeout";case"worker_error":return"worker_error";default:return jt.classifyWorkerErrorMessage(e??"")}}};jt.WORKER_OOM_PATTERNS=["out of memory","data cannot be cloned","allocation failed","memory access out of bounds"];let hi=jt;class hd extends ge{constructor(t){super(t)}}class ud extends ge{constructor(t){super(t)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class dd extends ge{constructor(t){super(t)}}class ui extends ge{constructor(t){super(t)}static normalizeFontFileName(t){if(!t)return;const e=t.lastIndexOf(".");return e>=0?t.substring(0,e).toLowerCase():t.toLowerCase()}get dxfEntryCount(){return this.totalRecordCount}resolveAt(t){this.database.ensureTextStyleDefaults();const e=[],n=r=>{const s=r==null?void 0:r.trim();s&&!e.includes(s)&&e.push(s)};n(t),n(this.database.textstyle),n(st),n("STANDARD");for(const r of e){const s=this.getAt(r);if(s)return s;const a=r.toUpperCase();for(const o of this.newIterator())if(o.name.toUpperCase()===a)return o}return this.newIterator().next().value??void 0}get shapeFiles(){return this.newIterator(!0).toArray().filter(t=>t.isShapeFile)}get fonts(){const t=new Set;for(const e of this.newIterator()){const n=ui.normalizeFontFileName(e.fileName);n&&t.add(n);const r=ui.normalizeFontFileName(e.bigFontFileName);r&&t.add(r)}return Array.from(t)}}class gd extends ge{constructor(t){super(t)}}class fd extends ge{constructor(t){super(t)}}class pd extends ge{constructor(t){super(t)}normalizeName(t){const e=(t??"").trim();return e?Be.isActiveVportName(e)?Pn:super.normalizeName(e):""}getActiveVport(){return this.getAt(Pn)}getActiveVportBox(t,e){const n=this.getActiveVport();return n==null?void 0:n.resolveModelViewBox(t,e)}}class md extends ge{constructor(t){super(t)}}class yd extends Vt{getBtrIdAt(t){for(const[e,n]of this._recordsByName)if(n.blockTableRecordId==t)return n}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class bd{constructor(t){this.database=t}applyForward(t){for(const e of t)this.applyChange(e,!0)}applyInverse(t){for(let e=t.length-1;e>=0;e--)this.applyChange(t[e],!1)}applyChange(t,e){switch(t.kind){case"modify":this.applyModify(t,e);break;case"append":e?this.applyAppend(t.container,t.object):this.applyRemove(t.container,t.object);break;case"remove":e?this.applyRemove(t.container,t.object):this.applyAppend(t.container,t.object);break;case"sysvar":this.applySysvar(t,e);break}}applyModify(t,e){const n=this.database.getObjectById(t.objectId);if(!n)return;const r=e?t.after:t.before;r&&n.restoreFrom(r)}applySysvar(t,e){const n=e?t.after:t.before;n!==void 0&&bt.instance().setVar(t.name,n,this.database)}applyAppend(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.appendEntity(e);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.add(e);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.setAt(t.key,e);break}}}applyRemove(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.removeEntity(e.objectId);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.removeId(e.objectId);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.removeId(e.objectId);break}}}getSymbolTable(t){const e=this.database.tables;switch(t){case"appIdTable":return e.appIdTable;case"blockTable":return e.blockTable;case"dimStyleTable":return e.dimStyleTable;case"linetypeTable":return e.linetypeTable;case"textStyleTable":return e.textStyleTable;case"viewTable":return e.viewTable;case"layerTable":return e.layerTable;case"viewportTable":return e.viewportTable;default:return}}}function ba(i,t){const e=[],n=[],r=[];for(const s of t)if(s.kind==="modify"){const a=i.getObjectById(s.objectId);a instanceof q&&e.push(a)}else if(s.kind==="append"){if(s.container.type==="blockTableRecord"){const a=i.tables.blockTable.getEntityById(s.object.objectId)??(s.object instanceof q?s.object:void 0);a&&n.push(a)}}else s.kind==="remove"&&s.container.type==="blockTableRecord"&&s.object instanceof q&&r.push(s.object);return{modified:e,appended:n,erased:r}}function jc(i,t){const e=[],n=[];for(const r of t){if(r.kind!=="append"&&r.kind!=="remove"||r.container.type!=="dictionary")continue;const s=r.container.key;if(r.kind==="append"){const a=i.getObjectById(r.object.objectId)??r.object;e.push({object:a,key:s})}else r.kind==="remove"&&n.push({object:r.object,key:s})}return{set:e,erased:n}}function Gc(i,t){const e={};for(const n of Om){const r=i.getAttrWithoutException(n),s=t.getAttrWithoutException(n);He(r,s)||(e[n]=s)}return e}function Uc(i,t,e=!1){const n=[];for(const r of t){if(r.kind!=="modify")continue;const s=i.getObjectById(r.objectId);if(!(s instanceof Si))continue;const a=r.before,o=r.after;if(!a||!o)continue;const c=e?Gc(o,a):Gc(a,o);Object.keys(c).length!==0&&n.push({database:i,layer:s,changes:c})}return n}function By(i,t){if(i.type!==t.type)return!1;switch(i.type){case"blockTableRecord":return t.type==="blockTableRecord"&&i.ownerId===t.ownerId;case"symbolTable":return t.type==="symbolTable"&&i.tableName===t.tableName;case"dictionary":return t.type==="dictionary"&&i.dictionaryId===t.dictionaryId&&i.key===t.key}}class _d{constructor(){this.changes=[]}getChanges(){return this.changes}clear(){this.changes.length=0}mergeFrom(t){for(const e of t.getChanges())this.mergeChange(e)}recordModify(t){const e=t.objectId;this.changes.find(r=>r.kind==="modify"&&r.objectId===e)||this.changes.push({kind:"modify",objectId:e,before:t.clonePreservingIdentity()})}hasModify(t){return this.changes.some(e=>e.kind==="modify"&&e.objectId===t)}recordAppend(t,e){this.recordStructuralChange({kind:"append",container:t,object:e.clonePreservingIdentity()})}recordRemove(t,e){this.recordStructuralChange({kind:"remove",container:t,object:e.clonePreservingIdentity()})}recordSysvar(t,e){const n=t.toLowerCase();this.changes.find(s=>s.kind==="sysvar"&&s.name===n)||this.changes.push({kind:"sysvar",name:n,before:e})}finalize(t){for(const e of this.changes)if(e.kind==="modify"){const n=t.getObjectById(e.objectId);n&&(e.after=n.clonePreservingIdentity())}else e.kind==="sysvar"&&(e.after=this.getSysvarValue(t,e.name))}recordStructuralChange(t){const e=t.kind==="append"?"remove":"append",n=this.findStructuralChangeIndex(e,t.container,t.object.objectId);if(n>=0){this.changes.splice(n,1);return}this.changes.push(t)}mergeChange(t){if(t.kind==="modify"){this.changes.find(n=>n.kind==="modify"&&n.objectId===t.objectId)||this.changes.push(t);return}if(t.kind==="sysvar"){this.changes.find(n=>n.kind==="sysvar"&&n.name===t.name)||this.changes.push(t);return}this.recordStructuralChange(t)}findStructuralChangeIndex(t,e,n){return this.changes.findIndex(r=>r.kind===t&&r.object.objectId===n&&By(r.container,e))}getSysvarValue(t,e){return bt.instance().getVar(e,t)}}class lo{constructor(){this.openedObjects=new Map,this.originalStates=new Map,this.recorder=new _d}getObject(t,e,n=!1){const r=this.openedObjects.get(t);if(r){if(e===Sn.kForWrite&&!this.originalStates.has(t)){const a=r.clonePreservingIdentity();this.originalStates.set(t,a),this.recorder.recordModify(r)}return r}const s=this.lookupObject(t,n);if(this.openedObjects.set(t,s),e===Sn.kForWrite){const a=s.clonePreservingIdentity();this.originalStates.set(s.objectId,a),this.recorder.recordModify(s)}return s}commit(){this.originalStates.clear(),this.openedObjects.clear()}abort(){for(const[t,e]of this.originalStates){const n=this.openedObjects.get(t);n&&n.restoreFrom(e)}this.originalStates.clear(),this.openedObjects.clear(),this.recorder.clear()}lookupObject(t,e){throw new Error(`lookupObject(${t}) not implemented`)}}class xd extends lo{constructor(t){super(),this.database=t}lookupObject(t,e){const n=this.database.getObjectById(t,e);if(!n)throw new Error(`lookupObject(${t}) not found`);return n}}class wd{constructor(){this.undoRecords=[],this.redoRecords=[],this.maxDepth=100}push(t){this.undoRecords.push(t),this.redoRecords.length=0,this.undoRecords.length>this.maxDepth&&this.undoRecords.shift()}popUndo(){return this.undoRecords.pop()}pushRedo(t){this.redoRecords.push(t)}popRedo(){return this.redoRecords.pop()}canUndo(){return this.undoRecords.length>0}canRedo(){return this.redoRecords.length>0}clear(){this.undoRecords.length=0,this.redoRecords.length=0}}class vd{constructor(t){this.database=t,this.transactionStack=[],this.undoStack=new wd,this.undoMarkStack=[],this._applyingUndoRedo=!1,this._pendingEntityModified=new Set,this._pendingLayerModified=new Map,this.strictMode=!1,this.changeApplier=new bd(t)}startTransaction(){const t=new xd(this.database);return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}hasTransaction(){return this.transactionStack.length>0}isRecording(){return this.hasTransaction()&&!this._applyingUndoRedo}isApplyingUndoRedo(){return this._applyingUndoRedo}isOpenedForWriteInTransaction(t){for(const e of this.transactionStack)if(e.recorder.hasModify(t))return!0;return!1}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");if(this.transactionStack.length>0){this.transactionStack[this.transactionStack.length-1].recorder.mergeFrom(t.recorder),t.commit();return}t.recorder.finalize(this.database);const e=t.recorder.getChanges();t.commit(),e.length>0&&(this.dispatchCommitEvents(e),this.enqueueUndoChanges(e))}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");const e=[...t.recorder.getChanges()];this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{t.abort(),e.length>0&&this.changeApplier.applyInverse(e)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}}startUndoMark(t){this.undoMarkStack.push({label:t,pendingChanges:[]})}endUndoMark(){const t=this.undoMarkStack.pop();if(!t)throw new Error("No active undo mark to end.");t.pendingChanges.length!==0&&this.undoStack.push({label:t.label,changes:t.pendingChanges})}cancelUndoMark(){this.undoMarkStack.length>0&&this.undoMarkStack.pop()}undo(){const t=this.undoStack.popUndo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyInverse(t.changes),this.dispatchUndoRedoEvents(t.changes,!0)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.pushRedo(t),!0}redo(){const t=this.undoStack.popRedo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyForward(t.changes),this.dispatchUndoRedoEvents(t.changes,!1)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.push(t),!0}canUndo(){return this.undoStack.canUndo()}canRedo(){return this.undoStack.canRedo()}clearUndoStack(){this.undoStack.clear()}recordAppend(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordAppend(t,e))}recordRemove(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordRemove(t,e))}recordSysvar(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordSysvar(t,e))}resolveSymbolTableName(t){const e=this.database.tables;return t===e.appIdTable?"appIdTable":t===e.blockTable?"blockTable":t===e.dimStyleTable?"dimStyleTable":t===e.linetypeTable?"linetypeTable":t===e.textStyleTable?"textStyleTable":t===e.viewTable?"viewTable":t===e.layerTable?"layerTable":t===e.viewportTable?"viewportTable":t.objectId}runUndoable(t,e){this.startUndoMark(t),this.startTransaction();try{const n=e(this.currentTransaction());return this.commitTransaction(),this.endUndoMark(),n}catch(n){throw this.hasTransaction()&&this.abortTransaction(),this.cancelUndoMark(),n}}enqueueUndoChanges(t){const e=this.undoMarkStack[this.undoMarkStack.length-1];if(e)for(const n of t)e.pendingChanges.push(n)}dispatchCommitEvents(t){const{modified:e,appended:n,erased:r}=ba(this.database,t);for(const o of e)this.dispatchEntityModified(o);n.length>0&&this.database.notifyEntityAppended(n),r.length>0&&this.database.notifyEntityErased(r);const{set:s,erased:a}=jc(this.database,t);for(const{object:o,key:c}of s)this.database.notifyDictObjectSet(o,c);for(const{object:o,key:c}of a)this.database.notifyDictObjectErased(o,c);for(const o of t)o.kind==="sysvar"&&o.after!==void 0&&bt.instance().events.sysVarChanged.dispatch({database:this.database,name:o.name,oldVal:o.before,newVal:o.after});for(const o of Uc(this.database,t))this.dispatchLayerModified(o)}dispatchUndoRedoEvents(t,e){const{modified:n,appended:r,erased:s}=ba(this.database,t),{set:a,erased:o}=jc(this.database,t);if(e){for(const c of n)this.dispatchEntityModified(c);s.length>0&&this.database.notifyEntityAppended(s),r.length>0&&this.database.notifyEntityErased(r);for(const{object:c,key:l}of o)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of a)this.database.notifyDictObjectErased(c,l)}else{for(const c of n)this.dispatchEntityModified(c);r.length>0&&this.database.notifyEntityAppended(r),s.length>0&&this.database.notifyEntityErased(s);for(const{object:c,key:l}of a)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of o)this.database.notifyDictObjectErased(c,l)}for(const c of t)if(c.kind==="sysvar"){const l=e?c.after:c.before,h=e?c.before:c.after;h!==void 0&&bt.instance().events.sysVarChanged.dispatch({database:this.database,name:c.name,oldVal:l,newVal:h})}for(const c of Uc(this.database,t,e))this.dispatchLayerModified(c)}dispatchLayerModified(t){if(this.database.isEventBatched()){const e=this._pendingLayerModified.get(t.layer.objectId);if(e){e.changes={...e.changes,...t.changes};return}this._pendingLayerModified.set(t.layer.objectId,{database:t.database,layer:t.layer,changes:{...t.changes}});return}this.database.events.layerModified.dispatch(t)}dispatchEntityModified(t){if(this.database.isEventBatched()){this._pendingEntityModified.add(t);return}this.database.events.entityModified.dispatch({database:this.database,entity:t})}flushPendingLayerModifiedEvents(){if(this._pendingLayerModified.size===0)return;const t=[...this._pendingLayerModified.values()];this._pendingLayerModified.clear();for(const e of t)this.database.events.layerModified.dispatch(e)}flushPendingEntityModifiedEvents(){if(this._pendingEntityModified.size===0)return;const t=[...this._pendingEntityModified];this._pendingEntityModified.clear();for(const e of t)this.database.events.entityModified.dispatch({database:this.database,entity:e})}}const Kn=class Kn extends vt{constructor(){super({objectId:"0"}),this._classes=[],this._handleRegistry=new Map,this._drawNoPlotLayers=!0,this._eventBatchDepth=0,this._pendingEntityAppended=[],this._pendingEntityErased=[],this._pendingDictObjectSet=[],this._pendingDictObjectErased=[],this._lastOpenError=null,this.events={dictObjetSet:new lt,dictObjectErased:new lt,entityAppended:new lt,entityModified:new lt,entityErased:new lt,layerAppended:new lt,layerModified:new lt,layerErased:new lt,openProgress:new lt,openFailed:new lt},Kn._unsavedDrawingSequence+=1,this._dwgname=`Drawing${Kn._unsavedDrawingSequence}.dwg`,this._version=new xt("AC1014"),this._angbase=0,this._angdir=0,this._aunits=Ct.DecimalDegrees,this._auprec=0,this._lunits=ot.Decimal,this._luprec=4,this._celtscale=1,this._cecolor=new j,this._celtype=dt,this._celweight=exports.AcGiLineWeight.ByLayer,this._cetransparency=new ht,this._clayer="0",this._cmlstyle=we,this._cmlscale=1,this._cmleaderstyle=ve,this._hpbackgroundcolor=new j(exports.AcCmColorMethod.None),this._hpcolor=this._cecolor.clone(),this._hplayer=".",this._hptransparency=new ht,this._textstyle=st,this._dimstyle=st,this._extents=new z,this._insunits=nt.Millimeters,this._unitmode=0,this._measurement=1,this._ltscale=1,this._lwdisplay=!1,this._tilemode=!0,this._psltscale=!0,this._pdmode=0,this._pdsize=0,this._osmode=0,this._orthomode=0,this._comparehatch=nr,this._comparercmargin=ir,this._comparetext=rr,this._comparetolerance=sr,this._maxHandle=0,this._tables={appIdTable:new md(this),blockTable:new ld(this),dimStyleTable:new hd(this),linetypeTable:new dd(this),textStyleTable:new ui(this),ucsTable:new gd(this),viewTable:new fd(this),layerTable:new ud(this),viewportTable:new pd(this)},this._objects={dictionary:new Vt(this),group:new Vt(this),imageDefinition:new Vt(this),layerFilter:new Vt(this),layerIndex:new Vt(this),layout:new yd(this),mleaderStyle:new Vt(this),mlineStyle:new Vt(this),sortentsTable:new Vt(this),xrecord:new Vt(this)},this._layerFilters=new Pe,this.transactionManager=new vd(this),this.registerBootstrapHandles()}get tables(){return this._tables}get classes(){return this._classes}set classes(t){this._classes=t.map(e=>({...e}))}get objects(){return this._objects}get layerFilters(){return this._layerFilters}set layerFilters(t){this._layerFilters=t??new Pe}getObjectById(t,e=!1){return t===this.objectId?this:this._handleRegistry.get(t)}isUndoRecording(){return this.transactionManager.isRecording()}openObject(t,e){const n=this.transactionManager.currentTransaction();if(n){const r=n.getObject(t,e);if(r)return r}return this.getObjectById(t)}openObjectForRead(t){return this.openObject(t,Sn.kForRead)}openObjectForWrite(t){return this.openObject(t,Sn.kForWrite)}openEntityForRead(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForRead(e)}openEntityForWrite(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForWrite(e)}runDatabaseEdit(t,e){if(this.isUndoRecording()){e();return}this.transactionManager.runUndoable(t,e)}getRootDictionaries(){return[this.objects.dictionary,this.objects.group,this.objects.imageDefinition,this.objects.layerFilter,this.objects.layerIndex,this.objects.layout,this.objects.mleaderStyle,this.objects.mlineStyle,this.objects.sortentsTable,this.objects.xrecord]}beginEventBatch(){this._eventBatchDepth++}endEventBatch(){this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth===0&&(this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents(),this.flushEventBatch()))}async endEventBatchChunked(t,e){if(this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth!==0))return;this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents();const n=this._pendingEntityAppended;this._pendingEntityAppended=[];const r=n.length,s=Math.max(1,t);if(r===0){this.flushEventBatchRemainder();return}let a=0;try{for(let o=0;o<r;o+=s){const c=Math.min(o+s,r),l=n.slice(o,c);this.events.entityAppended.dispatch({database:this,entity:l}),a=c,e&&await e(c,r)}}finally{a<r&&this.events.entityAppended.dispatch({database:this,entity:n.slice(a)}),this.flushEventBatchRemainder()}}isEventBatched(){return this._eventBatchDepth>0}notifyEntityAppended(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityAppended.push(...e);return}this.events.entityAppended.dispatch({database:this,entity:t})}notifyEntityErased(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityErased.push(...e);return}this.events.entityErased.dispatch({database:this,entity:t})}notifyDictObjectSet(t,e){if(this.isEventBatched()){this._pendingDictObjectSet.push({object:t,key:e});return}this.events.dictObjetSet.dispatch({database:this,object:t,key:e})}notifyDictObjectErased(t,e){if(this.isEventBatched()){this._pendingDictObjectErased.push({object:t,key:e});return}this.events.dictObjectErased.dispatch({database:this,object:t,key:e})}flushEventBatch(){if(this._pendingEntityAppended.length>0){const t=this._pendingEntityAppended;this._pendingEntityAppended=[],this.events.entityAppended.dispatch({database:this,entity:t})}this.flushEventBatchRemainder()}flushEventBatchRemainder(){if(this._pendingEntityErased.length>0){const t=this._pendingEntityErased;this._pendingEntityErased=[],this.events.entityErased.dispatch({database:this,entity:t})}if(this._pendingDictObjectSet.length>0){const t=this._pendingDictObjectSet;this._pendingDictObjectSet=[];for(const{object:e,key:n}of t)this.events.dictObjetSet.dispatch({database:this,object:e,key:n})}if(this._pendingDictObjectErased.length>0){const t=this._pendingDictObjectErased;this._pendingDictObjectErased=[];for(const{object:e,key:n}of t)this.events.dictObjectErased.dispatch({database:this,object:e,key:n})}}get formatter(){return this._formatter??(this._formatter=new id(this))}generateHandle(){return this._maxHandle++,this._maxHandle.toString(16).toUpperCase()}generateUniqueHandle(){let t=this.generateHandle();for(;this.isHandleTaken(t);)t=this.generateHandle();return t}initializeHandleSeed(t){const e=parseInt(t,16);if(!isNaN(e)&&e>0){const n=e-1;n>this._maxHandle&&(this._maxHandle=n)}}adoptExternalHandle(t,e){return this.releaseObjectHandle(t),e&&!e.startsWith(Ce)&&!this.isHandleTaken(e)?(t.objectId=e,this.registerObjectHandle(t),this.updateMaxHandle(e),e):this.assignGeneratedHandle(t)}registerObjectHandle(t){const e=t.objectId;!e||e.startsWith(Ce)||this._handleRegistry.set(e,t)}releaseObjectHandle(t){const e=t.objectId;!e||e.startsWith(Ce)||this._handleRegistry.get(e)===t&&this._handleRegistry.delete(e)}isHandleTaken(t,e){if(!t||t.startsWith(Ce))return!1;const n=this._handleRegistry.get(t);return n!==void 0&&n!==e}registerBootstrapHandles(){this._handleRegistry.clear(),this.registerObjectHandle(this);for(const t of[this._tables.blockTable,this._tables.dimStyleTable,this._tables.layerTable,this._tables.linetypeTable,this._tables.appIdTable,this._tables.textStyleTable,this._tables.ucsTable,this._tables.viewTable,this._tables.viewportTable])this.registerObjectHandle(t);for(const t of[this._objects.dictionary,this._objects.group,this._objects.imageDefinition,this._objects.layerFilter,this._objects.layerIndex,this._objects.layout,this._objects.mleaderStyle,this._objects.mlineStyle,this._objects.sortentsTable,this._objects.xrecord])this.registerObjectHandle(t)}assignGeneratedHandle(t){const e=t.objectId;this.releaseObjectHandle(t);const n=this.generateUniqueHandle();return t.objectId=n,this.registerObjectHandle(t),e&&e!==n&&this.updateMaxHandle(n),n}updateMaxHandle(t){const e=parseInt(t,16);!isNaN(e)&&e>this._maxHandle&&(this._maxHandle=e)}commitObjectHandle(t,e){const n=t.getAttrWithoutException("objectId"),r=e!=null&&n!=null&&e(n);if(!n||t.isTemp||r){this.assignGeneratedHandle(t);return}const a=this._handleRegistry.get(n);if(a&&a!==t)if(this.shouldPreserveIncomingHandle(t))this.assignGeneratedHandle(a);else{this.assignGeneratedHandle(t);return}this.registerObjectHandle(t),this.updateMaxHandle(n)}shouldPreserveIncomingHandle(t){return!t.isTemp}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.updateSysVar(k.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get auprec(){return this._auprec}set auprec(t){this.updateSysVar(k.AUPREC,this._auprec,t??0,e=>{this._auprec=e})}get lunits(){return this._lunits}set lunits(t){this.updateSysVar(k.LUNITS,this._lunits,t??ot.Decimal,e=>{this._lunits=e})}get luprec(){return this._luprec}set luprec(t){this.updateSysVar(k.LUPREC,this._luprec,t??4,e=>{this._luprec=e})}get version(){return this._version}set version(t){this.updateSysVar(k.ACADVER,this._version,new xt(t),e=>{this._version=e})}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(k.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get unitmode(){return this._unitmode}set unitmode(t){this.updateSysVar(k.UNITMODE,this._unitmode,t??0,e=>{this._unitmode=e})}get measurement(){return this._measurement}set measurement(t){this.updateSysVar(k.MEASUREMENT,this._measurement,t??1,e=>{this._measurement=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(k.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get lwdisplay(){return this._lwdisplay}get drawNoPlotLayers(){return this._drawNoPlotLayers}get dwgname(){return this._dwgname}setDwgName(t){const e=t.trim();e&&this.updateSysVar(k.DWGNAME,this._dwgname,e,n=>{this._dwgname=n})}get thumbnailImage(){return this._thumbnailImage}set thumbnailImage(t){if(!t||t.length===0){this._thumbnailImage=void 0;return}this._thumbnailImage=t}isLayerDrawable(t){if(this._drawNoPlotLayers)return!0;const e=this.tables.layerTable.getAt(t);return e==null||e.isPlottable}set lwdisplay(t){this.updateSysVar(k.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get tilemode(){return this._tilemode}set tilemode(t){this._tilemode=t}get psltscale(){return this._psltscale}set psltscale(t){this._psltscale=t}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(k.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(k.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celtype(){return this._celtype}set celtype(t){const e=this.normalizeLinetypeName(t??dt);this.updateSysVar(k.CELTYPE,this._celtype,e,n=>{this._celtype=n})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(k.CELWEIGHT,this._celweight,t??exports.AcGiLineWeight.ByLayer,e=>{this._celweight=e})}get cetransparency(){return this._cetransparency}set cetransparency(t){this.updateSysVar(k.CETRANSPARENCY,this._cetransparency,t??new ht,e=>{this._cetransparency=e.clone()})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(k.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get cmlstyle(){return this._cmlstyle}set cmlstyle(t){this.updateSysVar(k.CMLSTYLE,this._cmlstyle,t??we,e=>{this._cmlstyle=e})}get cmlscale(){return this._cmlscale}set cmlscale(t){this.updateSysVar(k.CMLSCALE,this._cmlscale,t??1,e=>{this._cmlscale=e})}get cmleaderstyle(){return this._cmleaderstyle}set cmleaderstyle(t){this.updateSysVar(k.CMLEADERSTYLE,this._cmleaderstyle,t??ve,e=>{this._cmleaderstyle=e})}get hpbackgroundcolor(){return this._hpbackgroundcolor}set hpbackgroundcolor(t){this.updateSysVar(k.HPBACKGROUNDCOLOR,this._hpbackgroundcolor,t??new j(exports.AcCmColorMethod.None),e=>{this._hpbackgroundcolor=e.clone()})}get hpcolor(){return this._hpcolor}set hpcolor(t){this.updateSysVar(k.HPCOLOR,this._hpcolor,t??this._cecolor,e=>{this._hpcolor=e.clone()})}get hplayer(){return this._hplayer}set hplayer(t){this.updateSysVar(k.HPLAYER,this._hplayer,t??".",e=>{this._hplayer=e})}get hptransparency(){return this._hptransparency}set hptransparency(t){this.updateSysVar(k.HPTRANSPARENCY,this._hptransparency,t??new ht,e=>{this._hptransparency=e.clone()})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(k.TEXTSTYLE,this._textstyle,t??st,e=>{this._textstyle=e})}get dimstyle(){return this._dimstyle}set dimstyle(t){this.updateSysVar(k.DIMSTYLE,this._dimstyle,t??st,e=>{this._dimstyle=e})}get angbase(){return this._angbase}set angbase(t){this.updateSysVar(k.ANGBASE,this._angbase,t??0,e=>{this._angbase=e})}get angdir(){return this._angdir}set angdir(t){this.updateSysVar(k.ANGDIR,this._angdir,t??0,e=>{this._angdir=e})}get extmax(){return this._extents.max}set extmax(t){if(t){const e=this._extents.max.clone();this._extents.expandByPoint(t),this._extents.max.equals(e)||this.triggerSysVarChangedEvent(k.EXTMAX,e,this._extents.max)}}get extmin(){return this._extents.min}set extmin(t){if(t){const e=this._extents.min.clone();this._extents.expandByPoint(t),this._extents.min.equals(e)||this.triggerSysVarChangedEvent(k.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(k.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(k.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(k.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}get orthomode(){return this._orthomode}set orthomode(t){this.updateSysVar(k.ORTHOMODE,this._orthomode,t??0,e=>{this._orthomode=e})}get comparehatch(){return this._comparehatch}set comparehatch(t){const e=se("COMPAREHATCH",t??nr,ns,is);this.updateSysVar(k.COMPAREHATCH,this._comparehatch,e,n=>{this._comparehatch=n})}get comparercmargin(){return this._comparercmargin}set comparercmargin(t){const e=se("COMPARERCMARGIN",t??ir,rs,ss);this.updateSysVar(k.COMPARERCMARGIN,this._comparercmargin,e,n=>{this._comparercmargin=n})}get comparetext(){return this._comparetext}set comparetext(t){const e=se("COMPARETEXT",t??rr,as,os);this.updateSysVar(k.COMPARETEXT,this._comparetext,e,n=>{this._comparetext=n})}get comparetolerance(){return this._comparetolerance}set comparetolerance(t){const e=se("COMPARETOLERANCE",t??sr,cs,ls);this.updateSysVar(k.COMPARETOLERANCE,this._comparetolerance,e,n=>{this._comparetolerance=n})}get lastOpenError(){return this._lastOpenError}async read(t,e,n=Hn.DXF){const r=ie.instance.get(n);if(r==null)throw new Error(`Database converter for file type '${n}' isn't registered and can can't read this file!`);this.clear(),this._lastOpenError=null,this._drawNoPlotLayers=(e==null?void 0:e.drawNoPlotLayers)??!0,e!=null&&e.fileName&&this.setDwgName(e.fileName),vh(this);try{await r.read(t,this,{minimumChunkSize:e&&e.minimumChunkSize||10,progress:this.createConversionProgressHandler(),timeout:e==null?void 0:e.timeout,sysVars:e==null?void 0:e.sysVars})}catch(s){const a=hi.from(s);throw this._lastOpenError=a,this.events.openFailed.dispatch({database:this,error:a}),a}this._lastOpenError=null,this.ensureDatabaseDefaults()}createConversionProgressHandler(){return async(t,e,n,r,s)=>{let a=r;if(n==="ERROR"&&s){const o=hi.fromTask(s);this._lastOpenError=o,a={code:o.code,message:o.message,stage:o.stage??e}}this.events.openProgress.dispatch({database:this,percentage:t,stage:"CONVERSION",subStage:e,subStageStatus:n,data:a})}}async openUri(t,e){var g;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const n=await fetch(t);if(!n.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 '${n.status}'!`);const r=n.headers.get("content-length"),s=r?parseInt(r,10):null;let a=0;const o=(g=n.body)==null?void 0:g.getReader();if(!o)throw new Error("Failed to get response reader");const c=[];for(;;){const{done:f,value:p}=await o.read();if(f)break;if(c.push(p),a+=p.length,s!==null){const m=Math.round(a/s*100);this.events.openProgress.dispatch({database:this,percentage:m,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const l=new Uint8Array(a);let h=0;for(const f of c)l.set(f,h),h+=f.length;const u=this.getFileNameFromUri(t);u&&this.setDwgName(u);const d=u.toLowerCase().split(".").pop();d==="dwg"?await this.read(l.buffer,e,Hn.DWG):d==="dxf"?await this.read(l.buffer,e,Hn.DXF):await this.read(l.buffer,e,d),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}dxfOut(t,e=16,n=this.version.name,r=!1){this.ensureDatabaseDefaults(),this._layerFilters.root.getNestedFilters().length>0&&!this.tables.layerTable.extensionDictionary&&(this.tables.layerTable.extensionDictionary=this.generateHandle());const s=typeof r=="boolean"?{saveThumbnailImage:r,format:"ascii"}:{saveThumbnailImage:r.saveThumbnailImage??!1,format:r.format??"ascii"},a=n instanceof xt?n:new xt(n),o=new Oe({database:this,precision:e,version:a,outputFormat:s.format});return this.writeDxfHeaderSection(o),this.writeDxfClassesSection(o),this.writeDxfTablesSection(o,a),this.writeDxfBlocksSection(o),this.writeDxfEntitiesSection(o),this.writeDxfObjectsSection(o),this.writeDxfThumbnailImageSection(o,s.saveThumbnailImage),o.writeStart("EOF"),s.format==="binary"?o.toBinary():o.toString()}async regen(){await new xu(this).read(null,this,{minimumChunkSize:500,progress:this.createConversionProgressHandler()})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new nd(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}ensureEntityStyleDefaults(t){var e;if(t.dxfTypeName==="MLINE"){this.ensureMLineStyle(this._cmlstyle||we);return}if(t.dxfTypeName==="MULTILEADER"){this.ensureMLeaderStyle(this._cmleaderstyle||ve);return}if(t.dxfTypeName==="HATCH"){const n=t;(e=n.applyPatternDefaultsFromSysVars)==null||e.call(n,this)}}ensureTextStyleDefaults(){this.hasDefaultTextStyle()||this.tables.textStyleTable.add(new gs({name:st,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}hasDefaultTextStyle(){const t=[st,"STANDARD"];for(const e of t)if(this.tables.textStyleTable.has(e))return!0;for(const e of this.tables.textStyleTable.newIterator())if(e.name.toUpperCase()===st.toUpperCase())return!0;return!1}ensureDatabaseDefaults(){if(!this.tables.layerTable.has("0")){const e=new j;e.colorIndex=7,this.tables.layerTable.add(new Si({name:"0",standardFlags:0,linetype:Ne,lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(this.tables.linetypeTable.has(oe)||this.tables.linetypeTable.add(new Re({name:oe,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(dt)||this.tables.linetypeTable.add(new Re({name:dt,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(Ne)||this.tables.linetypeTable.add(new Re({name:Ne,standardFlag:0,description:"Solid line",totalPatternLength:0})),this.ensureTextStyleDefaults(),this.tables.dimStyleTable.has(st)||this.tables.dimStyleTable.add(new Dt({name:st,dimtxsty:st})),!this.tables.viewportTable.has(Pn)){const e=new Be;e.name=Pn,this.tables.viewportTable.add(e)}this.ensureMLineStyle(this._cmlstyle||we),this.ensureMLeaderStyle(this._cmleaderstyle||ve);const t=this.tables.blockTable.modelSpace;if(!this.objects.layout.getAt("Model")){const e=new Pi;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.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.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId}this.tables.appIdTable.has(oa)||this.tables.appIdTable.add(new fr(oa)),this.tables.appIdTable.has(aa)||this.tables.appIdTable.add(new fr(aa))}ensureMLineStyle(t){const e=this.objects.mlineStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[s,a]of e.entries())if(s.toUpperCase()===n.toUpperCase()||a.styleName.toUpperCase()===n.toUpperCase())return;const r=new so;r.styleName=n,r.elements=[{offset:.5,color:new j().setByLayer(),lineType:dt},{offset:-.5,color:new j().setByLayer(),lineType:dt}],e.setAt(n,r)}ensureMLeaderStyle(t){const e=this.objects.mleaderStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[o]of e.entries())if(o.toUpperCase()===n.toUpperCase())return;const r=new _s;r.unknown1=2,r.maxLeaderSegmentsPoints=2,r.leaderLineColor=new j().setByBlock(),r.textColor=new j().setByBlock(),r.blockColor=new j().setByBlock(),r.alignSpace=4,r.breakSize=3.75,r.enableBlockRotation=!0,r.unknown2=!1;const s=this.tables.linetypeTable.getAt(oe);r.leaderLineTypeId=s==null?void 0:s.objectId;const a=this.tables.textStyleTable.getAt(st);r.textStyleId=a==null?void 0:a.objectId,e.setAt(n,r)}writeDxfHeaderSection(t){var e;t.startSection("HEADER"),t.writeString(9,"$ACADVER"),t.writeString(1,((e=t.version)==null?void 0:e.name)??this.version.name),t.writeString(9,"$HANDSEED"),t.writeString(5,t.nextHandle.toString(16).toUpperCase()),t.capabilities.supportsUtf8CodePage&&(t.writeString(9,"$DWGCODEPAGE"),t.writeString(3,"UTF-8")),t.writeString(9,"$INSUNITS"),t.writeInt16(70,this.insunits),t.writeString(9,"$LUNITS"),t.writeInt16(70,this.lunits),t.writeString(9,"$LUPREC"),t.writeInt16(70,this.luprec),t.writeString(9,"$UNITMODE"),t.writeInt16(70,this.unitmode),t.writeString(9,"$MEASUREMENT"),t.writeInt16(70,this.measurement),t.writeString(9,"$LTSCALE"),t.writeDouble(40,this.ltscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$LWDISPLAY"),t.writeInt16(70,this.lwdisplay?1:0)),t.writeString(9,"$CELTSCALE"),t.writeDouble(40,this.celtscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$CELWEIGHT"),t.writeLineWeight(370,this.celweight)),t.writeString(9,"$CECOLOR"),t.writeCmColor(this.cecolor),t.writeString(9,"$TILEMODE"),t.writeInt16(70,this.tilemode?1:0),t.writeString(9,"$PSLTSCALE"),t.writeInt16(70,this.psltscale?1:0),t.writeString(9,"$CLAYER"),t.writeString(8,this.clayer),t.writeString(9,"$CELTYPE"),t.writeString(6,this.celtype),t.capabilities.supportsTransparency&&!this.cetransparency.isInvalid&&(t.writeString(9,"$CETRANSPARENCY"),t.writeTransparency(this.cetransparency)),t.writeString(9,"$CMLSTYLE"),t.writeString(2,this.cmlstyle),t.writeString(9,"$CMLSCALE"),t.writeDouble(40,this.cmlscale),t.writeString(9,"$CMLEADERSTYLE"),t.writeString(2,this.cmleaderstyle),this.hpcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPCOLOR"),t.writeCmColor(this.hpcolor,2)),this.hpbackgroundcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPBACKGROUNDCOLOR"),t.writeCmColor(this.hpbackgroundcolor,2)),t.writeString(9,"$HPLAYER"),t.writeString(8,this.hplayer),t.capabilities.supportsTransparency&&!this.hptransparency.isInvalid&&(t.writeString(9,"$HPTRANSPARENCY"),t.writeTransparency(this.hptransparency)),t.writeString(9,"$TEXTSTYLE"),t.writeString(7,this.textstyle),t.writeString(9,"$DIMSTYLE"),t.writeString(2,this.dimstyle),t.writeString(9,"$ANGBASE"),t.writeAngle(50,this.angbase),t.writeString(9,"$ANGDIR"),t.writeInt16(70,this.angdir),t.writeString(9,"$AUNITS"),t.writeInt16(70,this.aunits),t.writeString(9,"$AUPREC"),t.writeInt16(70,this.auprec),t.writeString(9,"$EXTMIN"),t.writePoint3d(10,this.extmin),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,this.extmax),t.writeString(9,"$PDMODE"),t.writeInt32(70,this.pdmode),t.writeString(9,"$PDSIZE"),t.writeDouble(40,this.pdsize),t.writeString(9,"$OSMODE"),t.writeInt32(70,this.osmode),t.writeString(9,"$ORTHOMODE"),t.writeInt16(70,this.orthomode),t.endSection()}writeDxfClassesSection(t){if(!(!t.capabilities.supportsClassesSection||this._classes.length===0)){t.startSection("CLASSES");for(const e of this._classes)t.writeStart("CLASS"),t.writeString(1,e.name),t.writeString(2,e.cppClassName),t.writeString(3,e.appName),t.writeInt32(90,e.proxyFlag),t.writeInt32(91,e.instanceCount),t.writeInt8(280,e.wasProxy?1:0),t.writeInt8(281,e.isEntity?1:0);t.endSection()}}writeDxfTablesSection(t,e){t.startSection("TABLES"),this.writeDxfTable(t,"VPORT",this.tables.viewportTable,this.tables.viewportTable.newIterator(),"VPORT"),this.writeDxfTable(t,"VIEW",this.tables.viewTable,this.tables.viewTable.newIterator(),"VIEW"),this.writeDxfTable(t,"UCS",this.tables.ucsTable,this.tables.ucsTable.newIterator(),"UCS"),this.writeDxfTable(t,"LTYPE",this.tables.linetypeTable,this.tables.linetypeTable.newIterator(),"LTYPE"),this.writeDxfTable(t,"LAYER",this.tables.layerTable,this.tables.layerTable.newIterator(),"LAYER"),this.writeDxfTable(t,"STYLE",this.tables.textStyleTable,this.tables.textStyleTable.newIterator(!0),"STYLE"),this.writeDxfTable(t,"APPID",this.tables.appIdTable,this.tables.appIdTable.newIterator(),"APPID"),this.writeDxfTable(t,"DIMSTYLE",this.tables.dimStyleTable,this.tables.dimStyleTable.newIterator(),"DIMSTYLE"),e.capabilities.supportsBlockRecordTable&&this.writeDxfTable(t,"BLOCK_RECORD",this.tables.blockTable,this.tables.blockTable.newIterator(),"BLOCK_RECORD"),t.endSection()}writeDxfBlocksSection(t){t.startSection("BLOCKS");for(const e of this.tables.blockTable.newIterator()){if(e.dxfOutBlockBegin(t),!e.isModelSapce&&!e.isPaperSapce)for(const n of e.newIterator())this.writeDxfEntity(t,n);e.dxfOutBlockEnd(t)}t.endSection()}writeDxfEntitiesSection(t){t.startSection("ENTITIES");for(const e of this.tables.blockTable.newIterator())if(!(!e.isModelSapce&&!e.isPaperSapce))for(const n of e.newIterator())this.writeDxfEntity(t,n);t.endSection()}writeDxfObjectsSection(t){if(!t.capabilities.supportsObjectsSection)return;t.startSection("OBJECTS");const e=this.objects.dictionary;e.ownerId="0";const n=a=>{t.writeStart("DICTIONARY"),a.dxfOut(t,!0)},r=(a,o)=>{e.getAt(a)!==o&&e.setAt(a,o)},s=a=>{e.getAt(a)&&e.remove(a)};r("ACAD_LAYOUT",this.objects.layout),this.objects.group.numEntries>0?r("ACAD_GROUP",this.objects.group):s("ACAD_GROUP"),this.objects.sortentsTable.numEntries>0?r("ACAD_SORTENTS",this.objects.sortentsTable):s("ACAD_SORTENTS"),this.objects.mleaderStyle.numEntries>0?r("ACAD_MLEADERSTYLE",this.objects.mleaderStyle):s("ACAD_MLEADERSTYLE"),this.objects.mlineStyle.numEntries>0?r("ACAD_MLINESTYLE",this.objects.mlineStyle):s("ACAD_MLINESTYLE"),this.objects.imageDefinition.numEntries>0?r("ISM_RASTER_IMAGE_DICT",this.objects.imageDefinition):s("ISM_RASTER_IMAGE_DICT"),this.objects.xrecord.numEntries>0?r("MLIGHT_XRECORD",this.objects.xrecord):s("MLIGHT_XRECORD"),n(e),n(this.objects.layout),this.objects.group.numEntries>0&&n(this.objects.group),this.objects.sortentsTable.numEntries>0&&n(this.objects.sortentsTable),this.objects.mleaderStyle.numEntries>0&&n(this.objects.mleaderStyle),this.objects.mlineStyle.numEntries>0&&n(this.objects.mlineStyle),this.objects.imageDefinition.numEntries>0&&n(this.objects.imageDefinition),this.objects.xrecord.numEntries>0&&n(this.objects.xrecord);for(const[a,o]of this.objects.layout.entries())t.writeStart("LAYOUT"),o.dxfOut(t,!0);for(const[a,o]of this.objects.group.entries())o.name||(o.name=a),t.writeStart("GROUP"),o.dxfOut(t,!0);for(const[a,o]of this.objects.sortentsTable.entries())t.writeStart("SORTENTSTABLE"),o.dxfOut(t,!0);for(const[a,o]of this.objects.imageDefinition.entries())t.writeStart("IMAGEDEF"),o.dxfOut(t,!0);for(const[a,o]of this.objects.layerFilter.entries())t.writeStart("LAYER_FILTER"),o.dxfOut(t,!0);for(const[a,o]of this.objects.layerIndex.entries())t.writeStart("LAYER_INDEX"),o.dxfOut(t,!0);for(const[a,o]of this.objects.mleaderStyle.entries())t.writeStart("MLEADERSTYLE"),o.dxfOut(t,!0);for(const[a,o]of this.objects.mlineStyle.entries())t.writeStart("MLINESTYLE"),o.dxfOut(t,!0);for(const[a,o]of this.objects.xrecord.entries())t.writeStart("XRECORD"),o.dxfOut(t,!0);this.writeAcLyLayerFilterObjects(t),t.endSection()}writeAcLyLayerFilterObjects(t){const e=Ru(this._layerFilters);if(e.nodes.length===0)return;const n=[],r=[],s=this.tables.layerTable,a=s.extensionDictionary??this.generateHandle();s.extensionDictionary=a;const o=this.generateHandle(),c=this.generateHandle(),l=[],h=[],u=(f,p,m)=>{const y=this.generateHandle();let _;if(f.children.length>0){const v=this.generateHandle(),w=this.generateHandle(),A=[];for(const E of f.children)A.push({name:E.key,id:u(E,w,!1)});n.push({handle:v,ownerId:y,entries:[{name:En,id:w}]}),n.push({handle:w,ownerId:v,entries:A}),_=v}return r.push({handle:y,ownerId:p,extensionDictionaryId:_,data:f.data}),m&&h.push({name:f.key,id:y}),y};for(const f of e.nodes)l.push({name:f.key,id:u(f,o,!0)});const d=new Map,g=this.getObjectById(a);if(g instanceof Vt)for(const[f,p]of g.entries())d.set(f,p.objectId);d.set(En,o),d.set(bs,c),n.unshift({handle:a,ownerId:s.objectId,entries:Array.from(d,([f,p])=>({name:f,id:p}))},{handle:o,ownerId:a,entries:l},{handle:c,ownerId:a,entries:h});for(const f of n){t.writeStart("DICTIONARY"),t.writeHandle(5,f.handle),t.writeObjectId(330,f.ownerId),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const p of f.entries)t.writeString(3,p.name),t.writeObjectId(350,p.id)}for(const f of r){const p=new ao;p.objectId=f.handle,p.ownerId=f.ownerId,f.extensionDictionaryId&&(p.extensionDictionary=f.extensionDictionaryId),p.data=Bu(f.data),t.writeStart("XRECORD"),p.dxfOut(t)}}writeDxfTable(t,e,n,r,s){const a=[...r];t.startTable(e),n.dxfOut(t);for(const o of a){if(s==="BLOCK_RECORD"&&o instanceof it){o.dxfOutBlockRecord(t);continue}t.writeStart(s),o.dxfOut(t,!0)}t.endTable()}writeDxfEntity(t,e){if(e instanceof Lt&&!t.capabilities.supportsLwPolyline){t.writeStart("POLYLINE"),e.dxfOutAs2dPolyline(t,!0);return}t.writeStart(e.dxfTypeName),e.dxfOut(t,!0)}writeDxfThumbnailImageSection(t,e=!1){const n=this._thumbnailImage;if(!e||!n||n.length===0||!t.capabilities.supportsObjectsSection)return;const r=127;t.startSection("THUMBNAILIMAGE"),t.writeInt32(90,n.length);for(let s=0;s<n.length;s+=r){const a=n.subarray(s,s+r);t.writeString(310,hs(a))}t.endSection()}clear(){this.transactionManager.clearUndoStack(),this._classes=[],this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.ucsTable.removeAll(),this._tables.viewTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._tables.appIdTable.removeAll(),this._objects.layout.removeAll(),this._objects.group.removeAll(),this._objects.imageDefinition.removeAll(),this._objects.layerFilter.removeAll(),this._objects.layerIndex.removeAll(),this._objects.mleaderStyle.removeAll(),this._objects.mlineStyle.removeAll(),this._objects.sortentsTable.removeAll(),this._objects.xrecord.removeAll(),this._layerFilters=new Pe,this._currentSpace=void 0,this._extents.makeEmpty(),this.registerBootstrapHandles()}updateSysVar(t,e,n,r){bt.instance().applyVarMutation(t,e,n,this,()=>r(n))}normalizeLinetypeName(t){const e=t.trim();return e.toUpperCase()==="BYLAYER"?dt:e.toUpperCase()==="BYBLOCK"?oe:e}triggerSysVarChangedEvent(t,e,n){const r=bt.instance(),s=t.toLowerCase();r.getDescriptor(s)!=null&&r.events.sysVarChanged.dispatch({database:this,name:s,oldVal:e,newVal:n})}getFileNameFromUri(t){try{const n=new URL(t).pathname.split("/");return n[n.length-1]||""}catch{return""}}};Kn._unsavedDrawingSequence=0;let _a=Kn;class Dy{constructor(){this.transactionStack=[]}startTransaction(){const t=new lo;return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");t.commit()}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");t.abort()}hasTransaction(){return this.transactionStack.length>0}}const Gs=6,xo=class xo extends q{get dxfTypeName(){return"TOLERANCE"}constructor(){super(),this._location=new b,this._text="",this._dimensionStyle="",this._normal=new x(0,0,1),this._direction=new x(1,0,0)}get location(){return this._location}set location(t){this._location.set(t.x,t.y,t.z??0)}get text(){return this._text}set text(t){this._text=t}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get normal(){return this._normal}set normal(t){this._normal.set(t.x,t.y,t.z??0),this._normal.lengthSq()>0&&this._normal.normalize()}get direction(){return this._direction}set direction(t){this._direction.set(t.x,t.y,t.z??0),this._direction.lengthSq()>0&&this._direction.normalize()}setOrientation(t,e){return this.normal=t,this.direction=e,this}getBoundingPoints(){return this.getBoundingPolyline().slice(0,4)}getBoundingPolyline(){const{width:t,rowHeight:e,rowCount:n}=this.resolveFrameLayout(),r=e/2,s=r-e*n;return[new b(0,r,0),new b(t,r,0),new b(t,s,0),new b(0,s,0),new b(0,r,0)].map(o=>this.toFrameWcs(o.x,o.y))}get geometricExtents(){const t=new z;for(const e of this.getBoundingPoints())t.expandByPoint(e);return t.isEmpty()&&t.expandByPoint(this._location),t}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return de(t,e,this._location),this}subGetOsnapPoints(t,e,n,r){t===P.Insertion&&r.push(this._location)}transformBy(t){const e=this.resolveLocalBasis(),n=this._location.clone(),r=n.clone().add(e.xAxis),s=n.clone().add(e.yAxis);n.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const a=new x(r).sub(n),o=new x(s).sub(n);let c=new x().crossVectors(a,o);c.lengthSq()===0?c=this._normal.clone().transformDirection(t):c.normalize();let l=a.clone();return l.lengthSq()===0?l=this._direction.clone().transformDirection(t):l.normalize(),this._location.copy(n),this._normal.copy(c),this._direction.copy(l),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"tolerance",properties:[{name:"text",type:"string",editable:!0,accessor:{get:()=>this.text,set:t=>{this.text=t}}},{name:"dimensionStyle",type:"string",editable:!0,accessor:{get:()=>this.dimensionStyle,set:t=>{this.dimensionStyle=t}}},{name:"textHeight",type:"float",editable:!1,accessor:{get:()=>this.textHeight}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}subWorldDraw(t,e){const r=this.collectFrameLineSegments().map(([a,o])=>t.lines([a,o])),s=this.drawToleranceText(t,e);return r.length>0&&s?t.group([...r,s]):r.length===1?r[0]:r.length>1?t.group(r):s}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFcf"),this._dimensionStyle&&t.writeString(3,this._dimensionStyle),t.writePoint3d(10,this._location),t.writeString(1,this._text),this._normal.equals(x.Z_AXIS)||t.writeVector3d(210,this._normal),this._direction.equals(x.X_AXIS)||t.writeVector3d(11,this._direction),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFcf");let e=this.location.x,n=this.location.y,r=this.location.z,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=this.direction.x,l=this.direction.y,h=this.direction.z,u=!1,d=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 1:this.text=String(g.value);break;case 3:this.dimensionStyle=String(g.value);break;case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:c=p,d=!0;break;case 21:l=p,d=!0;break;case 31:h=p,d=!0;break;case 210:s=p,u=!0;break;case 220:a=p,u=!0;break;case 230:o=p,u=!0;break}}return this.location={x:e,y:n,z:r},u&&(this.normal={x:s,y:a,z:o}),d&&(this.direction={x:c,y:l,z:h}),this}get textHeight(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxt)??Dt.DEFAULT_DIM_VALUES.dimtxt,n=(t==null?void 0:t.dimscale)??Dt.DEFAULT_DIM_VALUES.dimscale;return e*n}drawToleranceText(t,e){const n=this.parseToleranceFrame(this._text);if(n.length===0)return;const r=this.resolveFrameLayout(n),s=this.getTextStyle(),a=[];for(let o=0;o<n.length;o++){const c=n[o];let l=r.cellPadding;const h=-r.rowHeight*o;for(let u=0;u<c.cells.length;u++){const d=c.cells[u],g=r.columnWidths[u]??this.textHeight;if(d.trim()){const f=this.toFrameWcs(l+g/2,h),p={text:d,height:this.textHeight,width:1/0,position:f,directionVector:this._direction,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,drawingDirection:exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT};a.push(t.mtext(p,s,e))}l+=g+r.columnGap}}if(a.length!==0)return a.length===1?a[0]:t.group(a)}collectFrameLineSegments(){const t=this.parseToleranceFrame(this._text),e=this.resolveFrameLayout(t),{width:n,rowHeight:r,rowCount:s,columnDivisions:a}=e;if(n<=0||r<=0||s<=0)return[];const o=r/2,c=o-r*s,l=[],h=(u,d)=>{l.push([u,d])};h(this.toFrameWcs(0,o),this.toFrameWcs(n,o)),h(this.toFrameWcs(n,o),this.toFrameWcs(n,c)),h(this.toFrameWcs(n,c),this.toFrameWcs(0,c)),h(this.toFrameWcs(0,c),this.toFrameWcs(0,o));for(const u of a)h(this.toFrameWcs(u,o),this.toFrameWcs(u,c));for(let u=1;u<t.length;u++){const d=o-r*u;h(this.toFrameWcs(0,d),this.toFrameWcs(n,d))}return l}toFrameWcs(t,e){const n=this.resolveLocalBasis();return this._location.clone().addScaledVector(n.xAxis,t).addScaledVector(n.yAxis,e)}resolveFrameLayout(t){const e=t??this.parseToleranceFrame(this._text),n=this.textHeight,r=n*2,s=n/2,a=n;if(n<=0||e.length===0)return{width:0,totalHeight:0,rowHeight:0,columnWidths:[],columnDivisions:[],rowCount:0,cellPadding:0,columnGap:0};const o=Math.max(...e.map(d=>d.cells.length),0),c=[];for(let d=0;d<o;d++){let g=n;for(const f of e){const p=f.cells[d]??"";if(!p.trim())continue;const m=am(p,n);g=Math.max(g,m)}c.push(g)}const l=[0];let h=s;for(let d=0;d<c.length;d++)h+=c[d],h+=a,l.push(h-s);return{width:l[l.length-1]??0,totalHeight:r*e.length,rowHeight:r,columnWidths:c,columnDivisions:l,rowCount:e.length,cellPadding:s,columnGap:a}}parseToleranceFrame(t){if(!t)return[];const e=this.splitToleranceRows(t);if(e.length===0)return[];if(!t.includes("%%v"))return e.map(s=>({cells:this.parsePipeSeparatedCells(s)}));const n=e.map(s=>{const o=this.splitToleranceTokens(s,"%%v").slice(0,Gs);for(;o.length<Gs;)o.push("");return o}),r=[0,1];n.some(s=>{var a;return(a=s[2])==null?void 0:a.trim()})&&r.push(2);for(let s=3;s<Gs;s++)n.some(a=>{var o;return(o=a[s])==null?void 0:o.trim()})&&r.push(s);return n.map(s=>({cells:r.map(a=>s[a]??"")}))}splitToleranceRows(t){return t.replace(/\^J/g,`
|
|
11
|
+
`).split(/\r\n|\r|\n|\\P/i).map(n=>n.trim()).filter(n=>n.length>0)}splitToleranceTokens(t,e){if(!t)return[];const n=[];let r="",s=0;for(let a=0;a<t.length;){if(t.startsWith(e,a)&&s===0){n.push(r),r="",a+=e.length;continue}const o=t[a];o==="{"?s++:o==="}"&&(s=Math.max(0,s-1)),r+=o,a++}return n.push(r),n}parsePipeSeparatedCells(t){return t?this.splitToleranceTokens(t,"|").filter(n=>n.length>0):[]}resolveLocalBasis(){const t=this._normal.clone();t.lengthSq()===0?t.set(0,0,1):t.normalize();let e=this._direction.clone();e.lengthSq()===0?e.set(1,0,0):e.normalize();let n=new x().crossVectors(t,e);return n.lengthSq()===0&&(e=x.X_AXIS.clone(),n=new x().crossVectors(t,e)),n.normalize(),e=new x().crossVectors(n,t).normalize(),{xAxis:e,yAxis:n,zAxis:t}}resolveDimensionStyle(){const t=this._dimensionStyle.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}tryGetDatabase(){try{return this.database}catch{return}}getTextStyle(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxsty)??Dt.DEFAULT_DIM_VALUES.dimtxsty??"Standard",n=this.database.tables.textStyleTable.resolveAt(e);if(!n)throw new Error("No valid text style found in text style table.");return n.textStyle}};xo.typeName="Fcf";let mr=xo;const wo=class wo extends q{constructor(){super(),this._normal=new x(0,0,1),this._annotationHeight=0,this._columnType=0,this._columnCount=0,this._columnFlowReversed=!1,this._columnAutoHeight=!1,this._columnWidth=0,this._columnGutter=0,this._contents="",this._height=0,this._width=0,this._extentsWidth=0,this._lineSpacingFactor=1,this._lineSpacingStyle=0,this._backgroundFill=!1,this._backgroundFillColor=13158600,this._backgroundFillTransparency=1,this._backgroundScaleFactor=1,this._rotation=0,this._styleName="",this._location=new b,this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._direction=new x(1,0,0),this._drawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT}get dxfTypeName(){return"MTEXT"}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 extentsWidth(){return this._extentsWidth}set extentsWidth(t){this._extentsWidth=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 normal(){return this._normal}set normal(t){this._normal.copy(t)}get annotationHeight(){return this._annotationHeight}set annotationHeight(t){this._annotationHeight=t}get columnType(){return this._columnType}set columnType(t){this._columnType=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=t}get columnFlowReversed(){return this._columnFlowReversed}set columnFlowReversed(t){this._columnFlowReversed=t}get columnAutoHeight(){return this._columnAutoHeight}set columnAutoHeight(t){this._columnAutoHeight=t}get columnWidth(){return this._columnWidth}set columnWidth(t){this._columnWidth=t}get columnGutter(){return this._columnGutter}set columnGutter(t){this._columnGutter=t}get geometricExtents(){const t=new z,e=this.extentsWidth>0?this.extentsWidth:this.width>0?this.width:ki(this.contents,this.height),n=hu(this.contents),r=uu(n,this.height,this.lineSpacingFactor);return du(t,this._location,e,r,this.attachmentPoint,this.rotation,this.direction)}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return de(t,e,this._location),this}subGetOsnapPoints(t,e,n,r){P.Insertion===t&&r.push(this._location)}transformBy(t){const e=this._location.clone(),n=this._direction.lengthSq()>0?this._direction.clone().normalize():new x(Math.cos(this._rotation),Math.sin(this._rotation),0),r=new x(-n.y,n.x,n.z);r.lengthSq()===0&&r.set(0,1,0),r.normalize();const s=e.clone().add(n),a=e.clone().add(r);e.applyMatrix4(t),s.applyMatrix4(t),a.applyMatrix4(t);const o=new x(s).sub(e),c=new x(a).sub(e),l=o.length(),h=c.length();return this._location.copy(e),l>0&&(this._direction.copy(o).normalize(),this._rotation=Math.atan2(this._direction.y,this._direction.x),this._width*=l,this._extentsWidth>0&&(this._extentsWidth*=l)),h>0&&(this._height*=h),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"attachmentPoint",type:"enum",editable:!0,options:[{label:exports.AcGiMTextAttachmentPoint[1],value:1},{label:exports.AcGiMTextAttachmentPoint[2],value:2},{label:exports.AcGiMTextAttachmentPoint[3],value:3},{label:exports.AcGiMTextAttachmentPoint[4],value:4},{label:exports.AcGiMTextAttachmentPoint[5],value:5},{label:exports.AcGiMTextAttachmentPoint[6],value:6},{label:exports.AcGiMTextAttachmentPoint[7],value:7},{label:exports.AcGiMTextAttachmentPoint[8],value:8},{label:exports.AcGiMTextAttachmentPoint[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:exports.AcGiMTextFlowDirection[1],value:1},{label:exports.AcGiMTextFlowDirection[2],value:2},{label:exports.AcGiMTextFlowDirection[3],value:3},{label:exports.AcGiMTextFlowDirection[4],value:4},{label:exports.AcGiMTextFlowDirection[5],value:5}],accessor:{get:()=>this.drawingDirection,set:t=>{this.drawingDirection=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"lineSpacingFactor",type:"float",editable:!0,accessor:{get:()=>this.lineSpacingFactor,set:t=>{this.lineSpacingFactor=t}}},{name:"definedWidth",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"directionX",type:"float",editable:!0,accessor:{get:()=>this.direction.x,set:t=>{this.direction.x=t}}},{name:"directionY",type:"float",editable:!0,accessor:{get:()=>this.direction.y,set:t=>{this.direction.y=t}}},{name:"directionZ",type:"float",editable:!0,accessor:{get:()=>this.direction.z,set:t=>{this.direction.z=t}}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}subWorldDraw(t,e){const n={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};return t.mtext(n,this.getTextStyle(),e)}encodeMTextContentsForDxf(t){return(t??"").replace(/\r\n|\r|\n/g,"\\P")}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMText"),t.writePoint3d(10,this.location),t.writeDouble(40,this.height),t.writeDouble(41,this.width),this.extentsWidth>0&&t.writeDouble(42,this.extentsWidth),t.writeMTextContents(this.encodeMTextContentsForDxf(this.contents??"")),t.writeString(7,this.styleName),t.writeAngle(50,this.rotation),t.writeVector3d(11,this.direction),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.drawingDirection),t.writeInt16(73,this.lineSpacingStyle),t.writeDouble(44,this.lineSpacingFactor),this.backgroundFill&&(t.writeInt16(90,1),t.writeInt32(63,this.backgroundFillColor),t.writeInt32(441,this.backgroundFillTransparency),t.writeDouble(45,this.backgroundScaleFactor)),this.annotationHeight!==0&&t.writeDouble(46,this.annotationHeight),this.columnType!==0&&(t.writeInt16(75,this.columnType),t.writeInt16(76,this.columnCount),t.writeInt16(78,this.columnFlowReversed?1:0),t.writeInt16(79,this.columnAutoHeight?1:0),t.writeDouble(48,this.columnWidth),t.writeDouble(49,this.columnGutter)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMText");let e=this.location.x,n=this.location.y,r=this.location.z,s=this.direction.x,a=this.direction.y,o=this.direction.z,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=!1;const d=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:s=p,u=!0;break;case 21:a=p,u=!0;break;case 31:o=p,u=!0;break;case 1:case 3:d.push(String(g.value));break;case 7:this.styleName=String(g.value);break;case 40:this.height=p;break;case 41:this.width=p;break;case 42:p>0&&(this.extentsWidth=p);break;case 43:break;case 44:this.lineSpacingFactor=p;break;case 45:this.backgroundScaleFactor=p;break;case 46:this.annotationHeight=p;break;case 48:this.columnWidth=p;break;case 49:this.columnGutter=p;break;case 50:this.rotation=C.degToRad(p);break;case 71:this.attachmentPoint=p;break;case 72:this.drawingDirection=p;break;case 73:this.lineSpacingStyle=p;break;case 75:this.columnType=p;break;case 76:this.columnCount=p;break;case 78:this.columnFlowReversed=p!==0;break;case 79:this.columnAutoHeight=p!==0;break;case 90:this.backgroundFill=p!==0;break;case 63:this.backgroundFillColor=p;break;case 441:this.backgroundFillTransparency=p;break;case 101:for(;!t.atEndOfObject&&!t.atEof&&t.readItem(););break;case 210:c=p;break;case 220:l=p;break;case 230:h=p;break;case 100:return t.pushBackItem(g),this.finishMTextDxfIn(d,e,n,r,s,a,o,u,c,l,h),this}}return this.finishMTextDxfIn(d,e,n,r,s,a,o,u,c,l,h),this}finishMTextDxfIn(t,e,n,r,s,a,o,c,l,h,u){t.length>0&&(this.contents=t.join("")),this.location={x:e,y:n,z:r},c&&(this.direction={x:s,y:a,z:o});const d=new x(l,h,u);d.lengthSq()>0&&this.normal.copy(d.normalize())}};wo.typeName="MText";let Qe=wo;var Ad=(i=>(i[i.MText=0]="MText",i[i.Fcf=1]="Fcf",i[i.BlockReference=2]="BlockReference",i[i.NoAnnotation=3]="NoAnnotation",i))(Ad||{});const vo=class vo extends At{get dxfTypeName(){return"LEADER"}constructor(){super(),this._isSplined=!1,this._updated=!1,this._hasArrowHead=!1,this._vertices=[],this._dimensionStyle="",this._hasHookLine=!1,this._isHookLineSameDirection=!1,this._annoType=3,this._textHeight=0,this._textWidth=0,this._associatedAnnotation="",this._normal=new x(0,0,1),this._horizontalDirection=new x(1,0,0)}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 isHookLineSameDirection(){return this._isHookLineSameDirection}set isHookLineSameDirection(t){this._isHookLineSameDirection=t}get numVertices(){return this._vertices.length}get vertices(){return this._vertices.map(t=>t.clone())}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get annoType(){return this._annoType}set annoType(t){this._annoType=t}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get byBlockColor(){return this._byBlockColor}set byBlockColor(t){this._byBlockColor=t}get associatedAnnotation(){return this._associatedAnnotation}set associatedAnnotation(t){this._associatedAnnotation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get horizontalDirection(){return this._horizontalDirection}set horizontalDirection(t){this._horizontalDirection.copy(t)}get offsetFromBlock(){var t;return(t=this._offsetFromBlock)==null?void 0:t.clone()}set offsetFromBlock(t){this._offsetFromBlock=t?new x(t):void 0}get offsetFromAnnotation(){var t;return(t=this._offsetFromAnnotation)==null?void 0:t.clone()}set offsetFromAnnotation(t){this._offsetFromAnnotation=t?new x(t):void 0}appendVertex(t){this._vertices.push(new b().copy(t)),this._updated=!0}setVertexAt(t,e){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].copy(e),this._updated=!0,this}vertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].clone()}subGetGripPoints(){return this._vertices.map(t=>t.clone())}subMoveGripPointsAt(t,e){return On(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){if(this.numVertices===0)return;if(this.isSplined&&this.splineGeo){switch(t){case P.EndPoint:r.push(this._vertices[0]),r.push(this._vertices[this.numVertices-1]);break;case P.Nearest:r.push(this.splineGeo.nearestPoint(e));break}return}const s=this._vertices;switch(t){case P.EndPoint:r.push(...s);break;case P.MidPoint:case P.Nearest:case P.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];Nn(s[o],s[o+1],t,e,c),a.push(...c)}if(t===P.MidPoint)r.push(...a);else{const o=$t(e,a);o&&r.push(o)}break}}}get geometricExtents(){return this._isSplined&&this.splineGeo?this.splineGeo.calculateBoundingBox():new z().setFromPoints(this.collectDrawPoints())}subGetIntersectCurves(){return this.isSplined&&this.splineGeo?[{kind:"spline",spline:this.splineGeo.clone(),extendable:!1}]:Ft(this._vertices,!1)}get closed(){return!1}set closed(t){}get area(){return 0}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this.transformVector(this._normal,t),this.transformVector(this._horizontalDirection,t),this._offsetFromBlock&&this.transformVector(this._offsetFromBlock,t),this._offsetFromAnnotation&&this.transformVector(this._offsetFromAnnotation,t),this._splineGeo?(this._splineGeo.transform(t),this._updated=!1):this._updated=!0,this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.lines(this.collectDrawPoints())}collectDrawPoints(){if(this.isSplined&&this.splineGeo)return this.splineGeo.getPoints(100);const t=this._vertices.map(e=>e.clone());if(t.length>0&&!this._isSplined){const e=t[t.length-1];if(this.shouldDrawHookLine(e)){const n=this.computeHookLineEndPoint(e);n&&t.push(n)}}return t}shouldDrawHookLine(t){if(this.resolveHookLineLength(t)<=0)return!1;if(this._hasHookLine)return!0;const e=this.resolveAssociatedMText();if(e&&this.resolveHookSpanFromMText(e,t)>0)return!0;if(this._annoType!==0)return!1;const n=this.resolveDimensionStyle();return((n==null?void 0:n.dimtad)??Dt.DEFAULT_DIM_VALUES.dimtad)!==io.Center}computeHookLineEndPoint(t){const e=this.resolveHookLineLength(t);if(e<=0)return null;const n=this.resolveHookAxis();return t.clone().addScaledVector(n,e)}resolveHookLineLength(t){const e=this.resolveDimensionStyle(),n=((e==null?void 0:e.dimgap)??Dt.DEFAULT_DIM_VALUES.dimgap)*((e==null?void 0:e.dimscale)??Dt.DEFAULT_DIM_VALUES.dimscale);let r=this._textWidth+n;const s=this.resolveAssociatedMText();if(s){const a=this.resolveHookSpanFromMText(s,t);if(a>0)r=Math.max(r,a);else{const o=this.resolveAnnotationWidth(s);o>0&&(r=Math.max(r,o))}}return r}resolveHookAxis(){const t=this._horizontalDirection.clone();t.lengthSq()===0?t.set(1,0,0):t.normalize();const e=this._isHookLineSameDirection?1:-1;return t.multiplyScalar(e),t}resolveHookSpanFromMText(t,e){const n=this.resolveHookAxis(),r=this.resolveMTextLayoutMetrics(t);let s=0;for(const a of lm(r)){const o=(a.x-e.x)*n.x+(a.y-e.y)*n.y+(a.z-e.z)*n.z;o>s&&(s=o)}return s}resolveAnnotationWidth(t){if(t.extentsWidth>0)return t.extentsWidth;const e=Qa(t.contents).split(`
|
|
12
|
+
`);return Math.max(...e.map(n=>ki(n.trim(),t.height)),0)}resolveMTextLayoutMetrics(t){return om({contents:t.contents,height:t.height,width:t.width,extentsWidth:t.extentsWidth,lineSpacingFactor:t.lineSpacingFactor,attachmentPoint:t.attachmentPoint,rotation:t.rotation,direction:t.direction,location:t.location})}scoreMTextAssociation(t,e){const n=this.resolveMTextLayoutMetrics(t),r=Math.max(t.height*2,1),s=Math.max(t.height,1),a=Math.max(n.height,t.height*4,10);return hm(e,n,{padX:r,padYAbove:s,padYBelow:a})}resolveDimensionStyle(){var n;const t=(n=this._dimensionStyle)==null?void 0:n.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}resolveAssociatedMText(){const t=this.tryGetDatabase();if(!t)return;if(this._associatedAnnotation){const o=t.getObjectById(this._associatedAnnotation);if(o instanceof Qe)return o}if(this._vertices.length===0)return;const e=this.getAttrWithoutException("ownerId");if(!e)return;const n=t.getObjectById(e);if(!(n instanceof it))return;const r=this._vertices[this._vertices.length-1];let s,a=Number.POSITIVE_INFINITY;for(const o of n.newIterator()){if(!(o instanceof Qe))continue;const c=this.scoreMTextAssociation(o,r);c==null||c>=a||(a=c,s=o)}return s}tryGetDatabase(){try{return this.database}catch{return}}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Ut(this._vertices,"Uniform"),this._updated=!1)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLeader"),t.writeString(3,this.dimensionStyle),t.writeInt16(71,this.hasArrowHead?1:0),t.writeInt16(72,this.isSplined?1:0),t.writeInt16(73,this.annoType),t.writeInt16(74,this.isHookLineSameDirection?1:0),t.writeInt16(75,this.hasHookLine?1:0),t.writeInt16(76,this.numVertices),this.textHeight!==0&&t.writeDouble(40,this.textHeight),this.textWidth!==0&&t.writeDouble(41,this.textWidth),this.byBlockColor!=null&&t.writeInt16(77,this.byBlockColor),this.associatedAnnotation&&t.writeHandle(340,this.associatedAnnotation);for(const e of this.vertices)t.writePoint3d(10,e);return t.writeVector3d(210,this.normal),t.writeVector3d(211,this.horizontalDirection),this._offsetFromBlock&&t.writeVector3d(212,this._offsetFromBlock),this._offsetFromAnnotation&&t.writeVector3d(213,this._offsetFromAnnotation),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLeader"),this._vertices.length=0;let e=null,n=this.normal.x,r=this.normal.y,s=this.normal.z,a=this.horizontalDirection.x,o=this.horizontalDirection.y,c=this.horizontalDirection.z,l=0,h=0,u=0,d=0,g=0,f=0,p=!1,m=!1;const y=()=>{e&&(this.appendVertex(e),e=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const _=t.readItem();if(!_)break;const v=Number(_.code),w=Number(_.value);switch(v){case 3:this.dimensionStyle=String(_.value);break;case 10:y(),e={x:w,y:0,z:0};break;case 20:e&&(e.y=w);break;case 30:e&&(e.z=w);break;case 40:this.textHeight=w;break;case 41:this.textWidth=w;break;case 71:this.hasArrowHead=w!==0;break;case 72:this.isSplined=w!==0;break;case 73:this.annoType=w;break;case 74:this.isHookLineSameDirection=w!==0;break;case 75:this.hasHookLine=w!==0;break;case 76:break;case 77:this.byBlockColor=w;break;case 210:n=w;break;case 220:r=w;break;case 230:s=w;break;case 211:a=w;break;case 221:o=w;break;case 231:c=w;break;case 212:l=w,p=!0;break;case 222:h=w,p=!0;break;case 232:u=w,p=!0;break;case 213:d=w,m=!0;break;case 223:g=w,m=!0;break;case 233:f=w,m=!0;break;case 340:this.associatedAnnotation=String(_.value);break}}return y(),this.normal={x:n,y:r,z:s},this.horizontalDirection={x:a,y:o,z:c},p&&(this.offsetFromBlock={x:l,y:h,z:u}),m&&(this.offsetFromAnnotation={x:d,y:g,z:f}),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Lt.from2dPoints(e,!1).getOffsetSideAtPoint(t)}createOffsetCurve(t){return xs(this.collectPath2d(),!1,t)}collectPath2d(){return this.isSplined&&this.splineGeo?this.splineGeo.getPoints(64).map(t=>new L(t.x,t.y)):this._vertices.map(t=>new L(t.x,t.y))}transformVector(t,e){const n=new b,r=new b(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}};vo.typeName="Leader";let yr=vo;const $r=class $r extends At{constructor(t,e){super(),this._normal=new x(0,0,1),this._thickness=0,this._geo=new Tt(t,e)}get dxfTypeName(){return"LINE"}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 thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"line",line:this._geo.clone(),extent:"bounded"}]}get closed(){return!1}get area(){return 0}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subMoveGripPointsAt(t,e){return ft(t,n=>{switch(n){case 0:this.transformBy(D.makeTranslation(e));break;case 1:this.startPoint.add(e);break;case 2:this.endPoint.add(e);break}}),this}subGetOsnapPoints(t,e,n,r){const s=this.startPoint,a=this.endPoint;switch(t){case P.EndPoint:r.push(s),r.push(a);break;case P.MidPoint:r.push(this.midPoint);break;case P.Nearest:{const o=this._geo.project(e);r.push(o)}break;case P.Perpendicular:{const o=this._geo.perpPoint(e);r.push(o)}break;case P.Tangent:break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this.startPoint,n=this.endPoint,r=[new b(e.x,e.y,0),new b(n.x,n.y,0)];return t.lines(r)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),this.thickness!==0&&t.writeDouble(39,this.thickness);const e=Rt(this.startPoint,this.normal),n=Rt(this.endPoint,this.normal);return t.writePoint3d(10,e),t.writePoint3d(11,n),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLine");let e=this.startPoint.x,n=this.startPoint.y,r=this.startPoint.z,s=this.endPoint.x,a=this.endPoint.y,o=this.endPoint.z,c=this.thickness,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:s=p;break;case 21:a=p;break;case 31:o=p;break;case 39:c=p;break;case 210:l=p;break;case 220:h=p;break;case 230:u=p;break}}const d=new x(l,h,u);return d.lengthSq()>0&&this.normal.copy(d.normalize()),this.thickness=c,this.startPoint=_t({x:e,y:n,z:r},this.normal),this.endPoint=_t({x:s,y:a,z:o},this.normal),this}getOffsetCurves(t){const e=this._geo.offset(t);return[new $r(e.startPoint,e.endPoint)]}getOffsetSideAtPoint(t){const e=this.startPoint,n=this.endPoint;return(n.x-e.x)*(t.y-e.y)-(n.y-e.y)*(t.x-e.x)>=0?1:-1}};$r.typeName="Line";let di=$r;var $n=(i=>(i[i.InvisibleLeader=0]="InvisibleLeader",i[i.StraightLeader=1]="StraightLeader",i[i.SplineLeader=2]="SplineLeader",i))($n||{}),ln=(i=>(i[i.NoneContent=0]="NoneContent",i[i.BlockContent=1]="BlockContent",i[i.MTextContent=2]="MTextContent",i[i.ToleranceContent=3]="ToleranceContent",i))(ln||{}),Pd=(i=>(i[i.Horizontal=0]="Horizontal",i[i.Vertical=1]="Vertical",i))(Pd||{}),kd=(i=>(i[i.Unknown=0]="Unknown",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Top=3]="Top",i[i.Bottom=4]="Bottom",i))(kd||{});const Fy=1,Xy=2,Yy=4,zy=8,Vy=64,jy=128,Gy=32768,Ao=class Ao extends q{get dxfTypeName(){return"MULTILEADER"}constructor(){super(),this._leaders=[],this._leaderLineType=1,this._contentType=0,this._doglegEnabled=!1,this._doglegLength=0,this._doglegVector=new x(1,0,0),this._normal=new x(0,0,1),this._mleaderStyleId="",this._textHeight=2.5,this._textWidth=0,this._textRotation=0,this._textDirection=new x(1,0,0),this._textStyleName="",this._textAttachmentPoint=exports.AcGiMTextAttachmentPoint.MiddleLeft,this._textDrawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT,this._textLineSpacingFactor=1,this._textAttachmentDirection=0,this._arrowheadOverrides=[],this._blockAttributes=[]}get leaders(){return this._leaders.map(t=>this.cloneLeader(t))}get numberOfLeaders(){return this._leaders.length}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get doglegEnabled(){return this._doglegEnabled}set doglegEnabled(t){this._doglegEnabled=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get doglegVector(){return this._doglegVector}set doglegVector(t){this._doglegVector.copy(t)}get landingPoint(){return this._landingPoint}set landingPoint(t){this._landingPoint=t?this.createPoint(t):void 0}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get mleaderStyleId(){return this._mleaderStyleId}set mleaderStyleId(t){this._mleaderStyleId=t}get version(){return this._version}set version(t){this._version=t}get leaderStyleId(){return this._leaderStyleId}set leaderStyleId(t){this._leaderStyleId=t}get propertyOverrideFlag(){return this._propertyOverrideFlag}set propertyOverrideFlag(t){this._propertyOverrideFlag=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor=t==null?void 0:t.clone()}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get landingEnabled(){return this._landingEnabled}set landingEnabled(t){this._landingEnabled=t}get arrowheadId(){return this._arrowheadId}set arrowheadId(t){this._arrowheadId=t}get arrowheadSize(){return this._arrowheadSize}set arrowheadSize(t){this._arrowheadSize=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor=t==null?void 0:t.clone()}get textFrameEnabled(){return this._textFrameEnabled}set textFrameEnabled(t){this._textFrameEnabled=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get textAttachment(){return this._textAttachment}set textAttachment(t){this._textAttachment=t}get textFlowDirection(){return this._textFlowDirection}set textFlowDirection(t){this._textFlowDirection=t}get blockContentId(){return this._blockContentId}set blockContentId(t){this._blockContentId=t}get blockContentColor(){return this._blockContentColor}set blockContentColor(t){this._blockContentColor=t==null?void 0:t.clone()}get blockContentScale(){return this._blockContentScale}set blockContentScale(t){this._blockContentScale=t}get blockContentRotation(){return this._blockContentRotation}set blockContentRotation(t){this._blockContentRotation=t}get blockContentConnectionType(){return this._blockContentConnectionType}set blockContentConnectionType(t){this._blockContentConnectionType=t}get annotativeScaleEnabled(){return this._annotativeScaleEnabled}set annotativeScaleEnabled(t){this._annotativeScaleEnabled=t}get arrowheadOverrides(){return this._arrowheadOverrides}set arrowheadOverrides(t){this._arrowheadOverrides=t}get blockAttributes(){return this._blockAttributes}set blockAttributes(t){this._blockAttributes=t}get textDirectionNegative(){return this._textDirectionNegative}set textDirectionNegative(t){this._textDirectionNegative=t}get textAlignInIPE(){return this._textAlignInIPE}set textAlignInIPE(t){this._textAlignInIPE=t}get bottomTextAttachmentDirection(){return this._bottomTextAttachmentDirection}set bottomTextAttachmentDirection(t){this._bottomTextAttachmentDirection=t}get topTextAttachmentDirection(){return this._topTextAttachmentDirection}set topTextAttachmentDirection(t){this._topTextAttachmentDirection=t}get contentScale(){return this._contentScale}set contentScale(t){this._contentScale=t}get contentBasePosition(){return this._contentBasePosition}set contentBasePosition(t){this._contentBasePosition=t}get textAnchor(){return this._textAnchor}set textAnchor(t){this._textAnchor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textBackgroundColor(){return this._textBackgroundColor}set textBackgroundColor(t){this._textBackgroundColor=t==null?void 0:t.clone()}get textBackgroundScaleFactor(){return this._textBackgroundScaleFactor}set textBackgroundScaleFactor(t){this._textBackgroundScaleFactor=t}get textBackgroundTransparency(){return this._textBackgroundTransparency}set textBackgroundTransparency(t){this._textBackgroundTransparency=t}get textBackgroundColorOn(){return this._textBackgroundColorOn}set textBackgroundColorOn(t){this._textBackgroundColorOn=t}get textFillOn(){return this._textFillOn}set textFillOn(t){this._textFillOn=t}get textColumnType(){return this._textColumnType}set textColumnType(t){this._textColumnType=t}get textUseAutoHeight(){return this._textUseAutoHeight}set textUseAutoHeight(t){this._textUseAutoHeight=t}get textColumnWidth(){return this._textColumnWidth}set textColumnWidth(t){this._textColumnWidth=t}get textColumnGutterWidth(){return this._textColumnGutterWidth}set textColumnGutterWidth(t){this._textColumnGutterWidth=t}get textColumnFlowReversed(){return this._textColumnFlowReversed}set textColumnFlowReversed(t){this._textColumnFlowReversed=t}get textColumnHeight(){return this._textColumnHeight}set textColumnHeight(t){this._textColumnHeight=t}get textUseWordBreak(){return this._textUseWordBreak}set textUseWordBreak(t){this._textUseWordBreak=t}get hasMText(){return this._hasMText}set hasMText(t){this._hasMText=t}get hasBlock(){return this._hasBlock}set hasBlock(t){this._hasBlock=t}get planeOrigin(){return this._planeOrigin}set planeOrigin(t){this._planeOrigin=t}get planeXAxisDirection(){return this._planeXAxisDirection}set planeXAxisDirection(t){this._planeXAxisDirection=t}get planeYAxisDirection(){return this._planeYAxisDirection}set planeYAxisDirection(t){this._planeYAxisDirection=t}get planeNormalReversed(){return this._planeNormalReversed}set planeNormalReversed(t){this._planeNormalReversed=t}get leaderSections(){return this.leaders}get blockContentData(){return this.blockContent}get mtextContent(){return this._mtextContent?{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint.clone()}:void 0}set mtextContent(t){if(!t){this._mtextContent=void 0,this._contentType===2&&(this._contentType=0);return}this._mtextContent={text:t.text,anchorPoint:this.createPoint(t.anchorPoint)},this._contentType=2}get contents(){var t;return((t=this._mtextContent)==null?void 0:t.text)??""}set contents(t){this._mtextContent?this._mtextContent.text=t:this._mtextContent={text:t,anchorPoint:new b},this._contentType=2}get textLocation(){var t;return(t=this._mtextContent)==null?void 0:t.anchorPoint}set textLocation(t){if(!t){this._mtextContent=void 0;return}this._mtextContent?this._mtextContent.anchorPoint.copy(t):this._mtextContent={text:"",anchorPoint:this.createPoint(t)},this._contentType=2}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}get textDirection(){return this._textDirection}set textDirection(t){this._textDirection.copy(t)}get textStyleName(){return this._textStyleName}set textStyleName(t){this._textStyleName=t}get textAttachmentPoint(){return this._textAttachmentPoint}set textAttachmentPoint(t){this._textAttachmentPoint=t}get textDrawingDirection(){return this._textDrawingDirection}set textDrawingDirection(t){this._textDrawingDirection=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get blockContent(){var t,e,n;return this._blockContent?{blockContentId:this._blockContent.blockContentId,blockHandle:this._blockContent.blockHandle,normal:(t=this._blockContent.normal)==null?void 0:t.clone(),position:(e=this._blockContent.position)==null?void 0:e.clone(),scale:this._blockContent.scale.clone(),rotation:this._blockContent.rotation,color:(n=this._blockContent.color)==null?void 0:n.clone(),transformationMatrix:[...this._blockContent.transformationMatrix]}:void 0}set blockContent(t){var e;if(!t){this._blockContent=void 0,this._contentType===1&&(this._contentType=0);return}this._blockContent={blockContentId:t.blockContentId??t.blockHandle,blockHandle:t.blockHandle,normal:t.normal?new x(t.normal):void 0,position:t.position?this.createPoint(t.position):void 0,scale:new x(t.scale??{x:1,y:1,z:1}),rotation:t.rotation??0,color:(e=t.color)==null?void 0:e.clone(),transformationMatrix:t.transformationMatrix?[...t.transformationMatrix]:[]},this.blockContentId=this._blockContent.blockContentId,this._contentType=1}addLeader(t={}){var n,r;const e={lastLeaderLinePoint:t.lastLeaderLinePoint?this.createPoint(t.lastLeaderLinePoint):void 0,lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:t.landingPoint?this.createPoint(t.landingPoint):void 0,doglegVector:t.doglegVector?new x(t.doglegVector):void 0,doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:((n=t.breaks)==null?void 0:n.map(s=>({index:s.index,start:this.createPoint(s.start),end:this.createPoint(s.end)})))??[],leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:[]};return(r=t.leaderLines)==null||r.forEach(s=>{e.leaderLines.push(this.createLeaderLine(s))}),this._leaders.push(e),this._leaders.length-1}removeLeader(t){return this.checkLeaderIndex(t),this._leaders.splice(t,1),this}addLeaderLine(t,e=[]){return this.checkLeaderIndex(t),this._leaders[t].leaderLines.push(this.createLeaderLine({vertices:e})),this._leaders[t].leaderLines.length-1}appendVertex(t,e,n){return this.getMutableLeaderLine(t,e).vertices.push(this.createPoint(n)),this}setLeaderLineVertices(t,e,n){return this.getMutableLeaderLine(t,e).vertices=n.map(r=>this.createPoint(r)),this}getLeaderLineVertices(t,e){return this.getMutableLeaderLine(t,e).vertices.map(n=>n.clone())}addBreak(t,e,n,r){return this.getMutableLeaderLine(t,e).breaks.push({start:this.createPoint(n),end:this.createPoint(r)}),this}setLandingPoint(t,e){return this.checkLeaderIndex(t),this._leaders[t].landingPoint=e?this.createPoint(e):void 0,this}setDoglegDirection(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegVector=new x(e),this}setDoglegLength(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegLength=e,this}get geometricExtents(){const t=this.collectGeometryPoints();return t.length>0?new z().setFromPoints(t):new z}subGetIntersectCurves(){const t=[];return this._leaders.forEach(e=>{e.leaderLines.forEach(n=>{t.push(...Ft(n.vertices,!1))})}),t}subGetGripPoints(){return this.collectGeometryPoints().map(t=>t.clone())}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGeometryGripPointAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){var s;if(t===P.Insertion){this.contentBasePosition?r.push(this.contentBasePosition):this._mtextContent?r.push(this._mtextContent.anchorPoint):(s=this._blockContent)!=null&&s.position&&r.push(this._blockContent.position);return}this._leaders.forEach(a=>{a.leaderLines.forEach(o=>{const c=this.getLeaderLineDrawPoints(a,o);if(c.length!==0)switch(t){case P.EndPoint:r.push(...c);break;case P.MidPoint:case P.Nearest:case P.Perpendicular:{const l=[];for(let h=0;h<c.length-1;h++){const u=[];Nn(c[h],c[h+1],t,e,u),l.push(...u)}if(t===P.MidPoint)r.push(...l);else{const h=$t(e,l);h&&r.push(h)}break}}})})}transformBy(t){var e,n,r,s,a,o,c,l;return this._leaders.forEach(h=>{var u,d;(u=h.lastLeaderLinePoint)==null||u.applyMatrix4(t),(d=h.landingPoint)==null||d.applyMatrix4(t),h.doglegVector&&this.transformVector(h.doglegVector,t),h.breaks.forEach(g=>{g.start.applyMatrix4(t),g.end.applyMatrix4(t)}),h.leaderLines.forEach(g=>{g.vertices.forEach(f=>f.applyMatrix4(t)),g.breaks.forEach(f=>{f.start.applyMatrix4(t),f.end.applyMatrix4(t)})})}),(e=this._landingPoint)==null||e.applyMatrix4(t),(n=this.contentBasePosition)==null||n.applyMatrix4(t),this.transformVector(this._doglegVector,t),this.transformVector(this._normal,t),(r=this.textAnchor)==null||r.applyMatrix4(t),(s=this._mtextContent)==null||s.anchorPoint.applyMatrix4(t),this.transformVector(this._textDirection,t),(o=(a=this._blockContent)==null?void 0:a.position)==null||o.applyMatrix4(t),(c=this._blockContent)!=null&&c.normal&&this.transformVector(this._blockContent.normal,t),this.blockContentScale&&this.transformVector(this.blockContentScale,t),(l=this.planeOrigin)==null||l.applyMatrix4(t),this.planeXAxisDirection&&this.transformVector(this.planeXAxisDirection,t),this.planeYAxisDirection&&this.transformVector(this.planeYAxisDirection,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"leader",properties:[{name:"contentType",type:"enum",editable:!0,options:[{label:ln[0],value:0},{label:ln[1],value:1},{label:ln[2],value:2},{label:ln[3],value:3}],accessor:{get:()=>this.contentType,set:t=>{this.contentType=t}}},{name:"leaderLineType",type:"enum",editable:!0,options:[{label:$n[0],value:0},{label:$n[1],value:1},{label:$n[2],value:2}],accessor:{get:()=>this.leaderLineType,set:t=>{this.leaderLineType=t}}},{name:"doglegEnabled",type:"boolean",editable:!0,accessor:{get:()=>this.doglegEnabled,set:t=>{this.doglegEnabled=t}}},{name:"doglegLength",type:"float",editable:!0,accessor:{get:()=>this.doglegLength,set:t=>{this.doglegLength=t}}},{name:"leaderCount",type:"int",editable:!1,accessor:{get:()=>this.numberOfLeaders}}]},{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.textHeight,set:t=>{this.textHeight=t}}},{name:"textWidth",type:"float",editable:!0,accessor:{get:()=>this.textWidth,set:t=>{this.textWidth=t}}},{name:"textStyleName",type:"string",editable:!0,accessor:{get:()=>this.textStyleName,set:t=>{this.textStyleName=t}}}]}]}}resolveEffectiveProperties(){if(super.resolveEffectiveProperties(),this._mleaderStyleId)return;const t=this.getDefaultMLeaderStyle();t&&(this._mleaderStyleId=t.objectId)}subWorldDraw(t,e){const n=[],r=t.subEntityTraits,s=r.color,a=r.lineType,o=r.lineWeight,c=this.getResolvedLeaderLineColor(),l=this.getResolvedLeaderLineStyle(),h=this.getResolvedLeaderLineWeight(),u=this.getResolvedTextColor();this.getResolvedLeaderLineType()!==0&&(this.applyColorTraits(r,c,s),this.applyLineTraits(r,l,h),this._leaders.forEach(f=>{f.leaderLines.forEach(m=>{const y=this.getLeaderLineDrawPoints(f,m);if(y.length>0){const _=this.drawLeaderLine(t,y);_&&n.push(_)}});const p=this.getDoglegPoints(f);p&&n.push(t.lines(p))}));const d=this.getRenderableMTextContent();if(!!d&&(this.contentType===2||this.contentType===0||this.hasMText===!0)&&d){this.applyColorTraits(r,u,s);const f=this.getResolvedTextHeight(),p={text:d.text,height:f,width:this.getMTextRenderWidth(d.text,f),position:d.anchorPoint,rotation:this.textRotation,directionVector:this.textDirection,attachmentPoint:this.textAttachmentPoint,drawingDirection:this.textDrawingDirection,lineSpaceFactor:this.textLineSpacingFactor};n.push(t.mtext(p,this.getTextStyle(),e))}if(r.color=s,r.lineType=a,r.lineWeight=o,n.length!==0)return n.length===1?n[0]:t.group(n)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeader"),t.writeInt16(170,this.leaderLineType),t.writeBoolean(290,this.doglegEnabled),t.writeDouble(41,this.doglegLength),t.writeInt16(172,this.contentType),t.writeVector3d(210,this.normal),t.writeHandle(340,this.mleaderStyleId),this._landingPoint&&t.writePoint3d(10,this._landingPoint),t.writeVector3d(11,this.doglegVector),this._mtextContent&&(t.writeString(1,this._mtextContent.text),t.writePoint3d(12,this._mtextContent.anchorPoint),t.writeDouble(40,this.textHeight),t.writeDouble(42,this.textWidth),t.writeAngle(50,this.textRotation),t.writeString(7,this.textStyleName)),this._blockContent&&(t.writeHandle(341,this._blockContent.blockContentId??""),this._blockContent.position&&t.writePoint3d(15,this._blockContent.position),t.writeVector3d(16,this._blockContent.scale),t.writeAngle(52,this._blockContent.rotation)),this._leaders.forEach(e=>{e.landingPoint&&t.writePoint3d(110,e.landingPoint),e.doglegVector&&t.writeVector3d(111,e.doglegVector),t.writeDouble(140,e.doglegLength),t.writeInt16(171,e.leaderLines.length),e.leaderLines.forEach(n=>{t.writeInt16(90,n.vertices.length),n.vertices.forEach(r=>t.writePoint3d(10,r))})}),this}dxfInFields(t){var I,M,T,R,Y,O,Z,K,G,J,S,H,ct,N,It;super.dxfInFields(t),t.atSubclassData("AcDbMLeader"),this._leaders.length=0;let e=(I=this._mtextContent)==null?void 0:I.text,n=(T=(M=this._mtextContent)==null?void 0:M.anchorPoint)==null?void 0:T.clone(),r=!!this._mtextContent,s=(R=this._blockContent)==null?void 0:R.blockContentId,a=(O=(Y=this._blockContent)==null?void 0:Y.position)==null?void 0:O.clone(),o=(K=(Z=this._blockContent)==null?void 0:Z.scale)==null?void 0:K.clone(),c=(G=this._blockContent)==null?void 0:G.rotation,l=(S=(J=this._blockContent)==null?void 0:J.normal)==null?void 0:S.clone(),h=(ct=(H=this._blockContent)==null?void 0:H.color)==null?void 0:ct.clone(),u=(N=this._blockContent)!=null&&N.transformationMatrix?[...this._blockContent.transformationMatrix]:[],d=!!this._blockContent,g=!1,f=!1,p=(It=this._landingPoint)==null?void 0:It.clone(),m=this._doglegVector.clone(),y=null,_=null,v=!1,w;const A=()=>{_&&y&&y.leaderLines.push(_),_=null},E=()=>{A(),y&&this.addLeader(y),y=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const et=t.readItem();if(!et)break;const Jd=Number(et.code),$=Number(et.value),pt=String(et.value??"");switch(Jd){case 100:return t.pushBackItem(et),E(),this.finishMLeaderDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,p,m,w),this;case 300:if(pt==="CONTEXT_DATA{"){f=!0;const B=this.dxfInContextData(t);B.textContent!=null&&(e=B.textContent,r=!0),B.textAnchor&&(n=B.textAnchor,r=!0),B.hasMText!=null&&(this.hasMText=B.hasMText),B.hasBlock!=null&&(this.hasBlock=B.hasBlock),B.blockContentId&&(s=B.blockContentId,d=this.isValidMLeaderHandle(B.blockContentId)),B.blockPosition&&(a=B.blockPosition,d=!0),B.blockScale&&(o=B.blockScale,d=!0),B.blockRotation!=null&&(c=B.blockRotation,d=!0),B.blockNormal&&(l=B.blockNormal,d=!0),B.blockColor&&(h=B.blockColor,d=!0),B.blockMatrix.length>0&&(u=B.blockMatrix,d=!0),r&&!g&&(this.contentType=2,g=!0)}break;case 270:f=!0,this.version=$;break;case 340:this.leaderStyleId=pt,this.mleaderStyleId=pt;break;case 90:v?(A(),_={vertices:[],breakPointIndexes:[],breaks:[]}):this.propertyOverrideFlag=$;break;case 170:this.leaderLineType=$;break;case 91:this.leaderLineColor=re($);break;case 341:f?this.leaderLineTypeId=pt:this.isValidMLeaderHandle(pt)?(s=pt,d=!0):this.leaderLineTypeId=pt;break;case 171:v||(this.leaderLineWeight=$);break;case 290:f?this.landingEnabled=this.readDxfBoolean(et):this.doglegEnabled=this.readDxfBoolean(et);break;case 291:this.doglegEnabled=this.readDxfBoolean(et);break;case 40:f?this.doglegLength=$:this.textHeight=$;break;case 41:this.doglegLength=$;break;case 342:this.arrowheadId=pt;break;case 42:f?this.arrowheadSize=$:this.textWidth=$;break;case 172:this.contentType=$,g=!0;break;case 343:this.textStyleId=pt;break;case 173:this.textLeftAttachmentType=$;break;case 95:this.textRightAttachmentType=$;break;case 174:this.textAngleType=$;break;case 175:this.textAlignmentType=$;break;case 92:this.textColor=re($);break;case 292:this.textFrameEnabled=this.readDxfBoolean(et);break;case 344:this.isValidMLeaderHandle(pt)&&(s=pt,this.blockContentId=pt,d=!0);break;case 93:this.blockContentColor=re($);break;case 10:if(v){t.pushBackItem(et);const B=t.readPoint3d(10);B&&_&&_.vertices.push(B)}else{t.pushBackItem(et);const B=t.readPoint3d(10);if(!B)break;f?(this.blockContentScale=new x(B),o=new x(B),d=!0):p=B}break;case 43:this.blockContentRotation=$,c=$,d=!0;break;case 176:this.blockContentConnectionType=$;break;case 293:this.annotativeScaleEnabled=this.readDxfBoolean(et);break;case 94:{this.arrowheadOverrides.push({index:$});break}case 345:{const B=this.arrowheadOverrides[this.arrowheadOverrides.length-1];B?B.handle=pt:this.arrowheadOverrides.push({index:0,handle:pt});break}case 330:this.blockAttributes.push({id:pt});break;case 177:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.index=$);break}case 44:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.width=$);break}case 302:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.text=pt);break}case 294:this.textDirectionNegative=this.readDxfBoolean(et);break;case 178:this.textAlignInIPE=$;break;case 179:$!==0&&(this.textAttachmentPoint=$);break;case 271:this.textAttachmentDirection=$;break;case 272:this.bottomTextAttachmentDirection=$;break;case 273:this.topTextAttachmentDirection=$;break;case 210:t.pushBackItem(et);{const B=t.readVector3d(210);B&&(this.normal=B)}break;case 110:E(),v=!0,t.pushBackItem(et),y={landingPoint:t.readPoint3d(110),doglegVector:new x(1,0,0),doglegLength:0,breaks:[],leaderLines:[]};break;case 111:if(y){t.pushBackItem(et);const B=t.readVector3d(111);B&&(y.doglegVector=B)}break;case 140:y?y.doglegLength=$:this.arrowheadSize=$;break;case 1:e=pt,r=!0;break;case 12:t.pushBackItem(et);{const B=t.readPoint3d(12);B&&(n=B,r=!0)}break;case 7:this.textStyleName=pt;break;case 50:w=$;break;case 15:t.pushBackItem(et);{const B=t.readPoint3d(15);B&&(a=B,d=!0)}break;case 16:t.pushBackItem(et);{const B=t.readVector3d(16);B&&(o=B,d=!0)}break;case 52:c=$*Math.PI/180,d=!0;break;case 11:if(!v&&!f){t.pushBackItem(et);const B=t.readVector3d(11);B&&(m=B)}break}}return E(),this.finishMLeaderDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,p,m,w),this}finishMLeaderDxfIn(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p){if(g&&(this.landingPoint=g),this.doglegVector=f,p!=null&&(this.textRotation=p*Math.PI/180),!this.textStyleName&&this.textStyleId){const y=this.database.tables.textStyleTable.getIdAt(this.textStyleId);y!=null&&y.name&&(this.textStyleName=y.name)}const m=e??this.textAnchor??this.contentBasePosition??g;(n||this.hasMText)&&t!=null&&m?(this.mtextContent={text:t,anchorPoint:m.clone()},this.textAnchor||(this.textAnchor=m.clone()),d||(this.contentType=2)):(n||this.hasMText)&&t!=null&&!m&&(d||(this.contentType=2)),u&&this.isValidMLeaderHandle(r)&&this.contentType!==2&&!this.mtextContent&&(this.blockContent={blockContentId:r,position:s,scale:a??new x(1,1,1),rotation:o??0,normal:c,color:l,transformationMatrix:h},!d&&this.contentType===0&&(this.contentType=1))}dxfInContextData(t){const e={blockMatrix:[]};for(;!t.atEof;){const n=t.readItem();if(!n)break;const r=Number(n.code),s=Number(n.value),a=String(n.value??"");if(r===301)break;if(r===0){t.pushBackItem(n);break}switch(r){case 10:t.pushBackItem(n),this.contentBasePosition=t.readPoint3d(10);break;case 11:t.pushBackItem(n);{const o=t.readVector3d(11);o&&(this.normal=o)}break;case 12:t.pushBackItem(n);{const o=t.readPoint3d(12);o&&(e.textAnchor=o,this.textAnchor=o.clone())}break;case 13:t.pushBackItem(n);{const o=t.readVector3d(13);o&&(this.textDirection=o)}break;case 14:t.pushBackItem(n),e.blockNormal=t.readVector3d(14);break;case 15:t.pushBackItem(n),e.blockPosition=t.readPoint3d(15);break;case 16:t.pushBackItem(n),e.blockScale=t.readVector3d(16);break;case 40:this.contentScale=s;break;case 41:s>0&&(this.textHeight=s);break;case 42:this.textRotation=s;break;case 43:s>0&&(this.textWidth=s);break;case 44:s>0&&(this.textHeight=s);break;case 45:this.textLineSpacingFactor=s;break;case 46:e.blockRotation=s;break;case 47:e.blockMatrix.push(s);break;case 90:this.textColor=re(s);break;case 91:this.textBackgroundColor=re(s);break;case 92:this.textBackgroundTransparency=s;break;case 93:e.blockColor=re(s);break;case 110:t.pushBackItem(n),this.planeOrigin=t.readPoint3d(110);break;case 111:t.pushBackItem(n),this.planeXAxisDirection=t.readVector3d(111);break;case 112:t.pushBackItem(n),this.planeYAxisDirection=t.readVector3d(112);break;case 140:this.arrowheadSize=s;break;case 141:this.textBackgroundScaleFactor=s;break;case 142:this.textColumnWidth=s;break;case 143:this.textColumnGutterWidth=s;break;case 144:this.textColumnHeight=s;break;case 145:this.landingGap=s;break;case 170:this.textLineSpacingStyle=s;break;case 171:this.textAttachment=s;break;case 172:this.textFlowDirection=s;break;case 173:this.textColumnType=s;break;case 290:e.hasMText=this.readDxfBoolean(n),this.hasMText=e.hasMText;break;case 291:this.textBackgroundColorOn=this.readDxfBoolean(n);break;case 292:this.textFillOn=this.readDxfBoolean(n);break;case 293:this.textUseAutoHeight=this.readDxfBoolean(n);break;case 294:this.textColumnFlowReversed=this.readDxfBoolean(n);break;case 295:this.textUseWordBreak=this.readDxfBoolean(n);break;case 296:e.hasBlock=this.readDxfBoolean(n),this.hasBlock=e.hasBlock;break;case 297:this.planeNormalReversed=this.readDxfBoolean(n);break;case 302:if(a==="LEADER{"){const o=this.dxfInLeaderSection(t);this.addLeader(o)}break;case 304:a!=="LEADER_LINE{"&&(e.textContent=a,this.hasMText=!0);break;case 340:this.textStyleId=a;break;case 341:e.blockContentId=a,this.isValidMLeaderHandle(a)&&(this.blockContentId=a);break}}return e}dxfInLeaderSection(t){const e={breaks:[],leaderLines:[]};let n;const r=()=>{n&&(e.breaks.push(n),n=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value),c=String(s.value??"");if(a===303){r();break}if(a===0||a===301){t.pushBackItem(s),r();break}switch(a){case 290:e.lastLeaderLinePointSet=this.readDxfBoolean(s);break;case 291:e.doglegVectorSet=this.readDxfBoolean(s);break;case 10:t.pushBackItem(s),e.lastLeaderLinePoint=t.readPoint3d(10);break;case 11:t.pushBackItem(s),e.doglegVector=t.readVector3d(11);break;case 12:t.pushBackItem(s);{const l=t.readPoint3d(12);l&&(n={start:l,end:l.clone()})}break;case 13:t.pushBackItem(s);{const l=t.readPoint3d(13);n&&l&&(n.end=l,r())}break;case 90:e.leaderBranchIndex=o;break;case 40:e.doglegLength=o;break;case 304:c==="LEADER_LINE{"&&e.leaderLines.push(this.dxfInLeaderLine(t));break}}return e}dxfInLeaderLine(t){const e={vertices:[],breakPointIndexes:[],breaks:[]};let n;const r=()=>{n&&(e.breaks.push(n),n=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);if(a===305){r();break}if(a===0||a===303||a===301){t.pushBackItem(s),r();break}switch(a){case 10:t.pushBackItem(s);{const c=t.readPoint3d(10);c&&e.vertices.push(c)}break;case 11:t.pushBackItem(s);{const c=t.readPoint3d(11);c&&(n={index:n==null?void 0:n.index,start:c,end:c.clone()})}break;case 12:t.pushBackItem(s);{const c=t.readPoint3d(12);n&&c&&(n.end=c,r())}break;case 90:e.breakPointIndexes.push(o),n={index:o,start:(n==null?void 0:n.start)??new b,end:(n==null?void 0:n.end)??new b};break;case 91:e.leaderLineIndex=o;break}}return e}readDxfBoolean(t){if(typeof t.value=="boolean")return t.value;const e=Number(t.value);if(Number.isFinite(e))return e!==0;const n=String(t.value??"");return n!==""&&n!=="0"}isValidMLeaderHandle(t){return t!=null&&t!==""&&t!=="0"}createPoint(t){return new b().copy(t)}createLeaderLine(t){var e,n;return{vertices:((e=t.vertices)==null?void 0:e.map(r=>this.createPoint(r)))??[],breakPointIndexes:t.breakPointIndexes?[...t.breakPointIndexes]:[],leaderLineIndex:t.leaderLineIndex,breaks:((n=t.breaks)==null?void 0:n.map(r=>({index:r.index,start:this.createPoint(r.start),end:this.createPoint(r.end)})))??[]}}cloneLeader(t){var e,n,r;return{lastLeaderLinePoint:(e=t.lastLeaderLinePoint)==null?void 0:e.clone(),lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:(n=t.landingPoint)==null?void 0:n.clone(),doglegVector:(r=t.doglegVector)==null?void 0:r.clone(),doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:t.breaks.map(s=>({index:s.index,start:s.start.clone(),end:s.end.clone()})),leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:t.leaderLines.map(s=>({vertices:s.vertices.map(a=>a.clone()),breakPointIndexes:[...s.breakPointIndexes],leaderLineIndex:s.leaderLineIndex,breaks:s.breaks.map(a=>({index:a.index,start:a.start.clone(),end:a.end.clone()}))}))}}checkLeaderIndex(t){if(t<0||t>=this._leaders.length)throw new Error("The leader index is out of range!")}getMutableLeaderLine(t,e){this.checkLeaderIndex(t);const n=this._leaders[t].leaderLines[e];if(!n)throw new Error("The leader line index is out of range!");return n}collectGeometryPoints(){var e;const t=[];return this._leaders.forEach(n=>{n.lastLeaderLinePoint&&t.push(n.lastLeaderLinePoint),n.landingPoint&&t.push(n.landingPoint),n.breaks.forEach(s=>t.push(s.start,s.end)),n.leaderLines.forEach(s=>{t.push(...s.vertices),s.breaks.forEach(a=>t.push(a.start,a.end))});const r=this.getDoglegPoints(n);r&&t.push(...r),n.leaderLines.forEach(s=>{const a=this.getArrowheadPoints(this.getLeaderLineDrawPoints(n,s));a&&t.push(...a)})}),this._landingPoint&&t.push(this._landingPoint),this.contentBasePosition&&t.push(this.contentBasePosition),this.textAnchor&&t.push(this.textAnchor),this._mtextContent&&t.push(this._mtextContent.anchorPoint),(e=this._blockContent)!=null&&e.position&&t.push(this._blockContent.position),this.planeOrigin&&t.push(this.planeOrigin),t}moveGeometryGripPointAt(t,e){var s;let n=0;const r=(a,o)=>{if(a){n===t&&a.add(e),n++;return}o&&(n===t&&o(),n++)};this._leaders.forEach(a=>{r(a.lastLeaderLinePoint),r(a.landingPoint),a.breaks.forEach(c=>{r(c.start),r(c.end)}),a.leaderLines.forEach(c=>{c.vertices.forEach(l=>r(l)),c.breaks.forEach(l=>{r(l.start),r(l.end)})});const o=this.getDoglegPoints(a);o&&(r(o[0]),r(void 0,()=>{const c=o[0],l=o[1];if(!c||!l)return;const h=c.distanceTo({x:l.x+e.x,y:l.y+e.y,z:(l.z??0)+(e.z??0)});a.doglegLength!=null||a.doglegVectorSet?a.doglegLength=h:this._doglegLength=h})),a.leaderLines.forEach(c=>{const l=this.getLeaderLineDrawPoints(a,c),h=this.getArrowheadPoints(l);h&&h.forEach((u,d)=>{d===0||d===h.length-1?r(l[0]):r(void 0)})})}),r(this._landingPoint),r(this.contentBasePosition),r(this.textAnchor),this._mtextContent&&r(this._mtextContent.anchorPoint),(s=this._blockContent)!=null&&s.position&&r(this._blockContent.position),r(this.planeOrigin)}getLeaderLineDrawPoints(t,e){if(e.vertices.length>=2)return e.vertices;if(e.vertices.length===0)return[];const n=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint??this.contentBasePosition;return!n||e.vertices[0].equals(n)?e.vertices:[e.vertices[0],n]}getDoglegPoints(t){if(!this.getResolvedDoglegEnabled())return;const e=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint,n=t.doglegVector??this._doglegVector,r=t.doglegLength??this.getResolvedDoglegLength();if(!e||r==null||r===0||n.lengthSq()===0)return;const s=e.clone().add(n.clone().normalize().multiplyScalar(r));return[e,s]}getArrowheadPoints(t){if(!this.isArrowheadVisible()||t.length<2)return;const e=this.getArrowheadFrame(t);if(!e)return;const n=this.getResolvedArrowheadSize(),{tip:r,unit:s}=e,a=r.clone().add(s.clone().multiplyScalar(n)),o=n/6,c=new x(-s.y,s.x,0),l=a.clone().add(c.clone().multiplyScalar(o)),h=a.clone().add(c.clone().multiplyScalar(-o));return[r,l,h,r]}isArrowheadVisible(){const t=this.getResolvedArrowheadId();return(t==null?void 0:t.toUpperCase())==="_NONE"?!1:this.getResolvedArrowheadSize()>0}drawLeaderLine(t,e){const n=[],r=this.getLeaderLinePointsForDraw(e);r.length>=2&&n.push(t.lines(r));const s=this.drawArrowhead(t,e);if(s&&n.push(s),n.length!==0)return n.length===1?n[0]:t.group(n)}getLeaderLinePointsForDraw(t){const e=this.getArrowheadLeaderLineTrimDistance();return e<=0?t:this.trimPolylineStart(t,e)}getArrowheadLeaderLineTrimDistance(){if(!this.isArrowheadVisible())return 0;const t=this.getResolvedArrowheadBlockTableRecord();if(!t)return 0;const e=this.getResolvedArrowheadSize();if(e<=0)return 0;const n=t.origin??b.ORIGIN;let r=n.x;for(const s of t.newIterator()){const a=s.geometricExtents;a.isEmpty()||a.max.x>r&&(r=a.max.x)}return Math.max(0,(r-n.x)*e)}trimPolylineStart(t,e){if(t.length<2||e<=0)return t;let n=e;for(let r=0;r<t.length-1;r++){const s=t[r],a=t[r+1],o=a.distanceTo(s);if(!(o<=0)){if(n<o){const c=new x().subVectors(a,s);return[s.clone().add(c.multiplyScalar(n/o)),...t.slice(r+1)]}n-=o}}return[t[t.length-1]]}drawArrowhead(t,e){if(!this.isArrowheadVisible())return;const n=this.drawArrowheadBlock(t,e);if(n)return n;const r=this.getArrowheadPoints(e);if(!r)return;const s=new Kt;s.add(new Q(r,!0));const a=t.subEntityTraits,o=a.fillType;a.fillType={solidFill:!0,patternAngle:0,definitionLines:[]};const c=t.area(s);return a.fillType=o,c}drawArrowheadBlock(t,e){const n=this.getResolvedArrowheadBlockTableRecord();if(!n)return;const r=this.getArrowheadFrame(e);if(!r)return;const{tip:s,unit:a}=r,o=this.getResolvedArrowheadSize(),c=Math.atan2(a.y,a.x),l=n.origin??b.ORIGIN,h=new D().makeTranslation(-l.x,-l.y,-l.z),u=new D().makeScale(o,o,o),d=new D().makeRotationZ(c),g=new D().makeTranslation(s.x,s.y,s.z),f=new D().multiplyMatrices(g,d).multiply(u).multiply(h);return Xe.instance.draw(t,n,this.resolvedColor,[],!0,f,new x(this.normal))}getArrowheadFrame(t){if(t.length<2)return;const e=t[0],n=t.find(s=>!s.equals(e));if(!n)return;const r=new x().subVectors(n,e);if(r.lengthSq()!==0)return{tip:e,unit:r.normalize()}}getResolvedArrowheadId(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.arrowSymbolId;return this.arrowheadId??t}getResolvedArrowheadBlockTableRecord(){const t=this.getResolvedArrowheadId();if(t)return this.database.tables.blockTable.getIdAt(t)}getResolvedArrowheadSize(){const t=this.getMLeaderStyle(),e=(t==null?void 0:t.arrowSize)??(t==null?void 0:t.scale);return this.arrowheadSize??this.contentScale??e??this.getResolvedTextHeight()}getResolvedTextHeight(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.textHeight;return this.textHeight>0?this.textHeight:t!=null&&t>0?t:2.5}getRenderableMTextContent(){var n;if(this._mtextContent)return{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint};const t=(n=this.getMLeaderStyle())==null?void 0:n.defaultMTextContents,e=this.textAnchor??this.contentBasePosition??this._landingPoint;if(!(!t||!e))return{text:t,anchorPoint:e}}getMTextRenderWidth(t,e){if(this._textWidth>0)return this._textWidth;if(!t)return this._textWidth;const n=t.replace(/\\[PpNn]/g,`
|
|
13
|
+
`).replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,""),r=Math.max(...n.split(/\r\n|\r|\n/g).map(s=>s.length),1);return Math.max(e,r*e)}transformVector(t,e){const n=new b,r=new b(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}getMLeaderStyle(){var n,r;const t=this.database.objects.mleaderStyle,e=(n=this.mleaderStyleId||this.leaderStyleId)==null?void 0:n.trim();if(e){const s=t.getIdAt(e);if(s)return s;const a=e.toUpperCase();for(const[,c]of t.entries())if(((r=c.objectId)==null?void 0:r.toUpperCase())===a)return c;const o=this.database.getObjectById(e);if(o instanceof _s)return o}return this.getDefaultMLeaderStyle()}getDefaultMLeaderStyle(){const t=this.resolveMLeaderStyleByName(this.getDefaultMLeaderStyleName());return t||this.database.objects.mleaderStyle.newIterator().toArray()[0]}resolveMLeaderStyleByName(t){const e=t==null?void 0:t.trim();if(!e)return;const n=this.database.objects.mleaderStyle,r=n.getAt(e);if(r)return r;const s=n.getIdAt(e);if(s)return s;const a=e.toUpperCase();for(const[o,c]of n.entries())if(o.toUpperCase()===a)return c}getDefaultMLeaderStyleName(){try{return this.database.cmleaderstyle||ve}catch{return ve}}getResolvedTextStyleName(){var s,a,o;const t=this.database.tables.textStyleTable,e=(s=this.getMLeaderStyle())==null?void 0:s.textStyleId,n=e?(a=t.getIdAt(e))==null?void 0:a.name:void 0,r=this.textStyleId?(o=t.getIdAt(this.textStyleId))==null?void 0:o.name:void 0;if(this.textStyleName){const c=t.getAt(this.textStyleName);if(c!=null&&c.name)return c.name;const l=t.getIdAt(this.textStyleName);if(l!=null&&l.name)return l.name}return r||n}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.getResolvedTextStyleName());if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}getResolvedLeaderLineColor(){var t;return this.getResolvedComponentColor(this.leaderLineColor,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineColor,Xy)}getResolvedLeaderLineType(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.leaderLineType;return this.getResolvedStyleDrivenValue(this.leaderLineType,t,Fy)}getResolvedLeaderLineTypeId(){var t;return this.getResolvedStyleDrivenValue(this.leaderLineTypeId,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineTypeId,Yy)}getResolvedLeaderLineStyle(){const t=this.getResolvedLeaderLineTypeId();if(!t)return;const e=this.database.tables.linetypeTable.getIdAt(t);if(e)return{type:"UserSpecified",...e.linetype}}getResolvedLeaderLineWeight(){var n;const t=(n=this.getMLeaderStyle())==null?void 0:n.leaderLineWeight,e=this.getResolvedStyleDrivenValue(this.leaderLineWeight,t,zy);if(e!=null)return e}getResolvedDoglegEnabled(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegEnabled;return this.getResolvedStyleDrivenValue(this.doglegEnabled,t,Vy)}getResolvedDoglegLength(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegLength;return this.getResolvedStyleDrivenValue(this.doglegLength,t,jy)}getResolvedTextColor(){var t;return this.getResolvedComponentColor(this.textColor,(t=this.getMLeaderStyle())==null?void 0:t.textColor,Gy)}getResolvedComponentColor(t,e,n){if(!t)return e;if(!t.isByBlock&&!t.isByLayer)return t;const r=this.isPropertyOverrideEnabled(n);return r===!0?t:e??t}getResolvedStyleDrivenValue(t,e,n){const r=this.isPropertyOverrideEnabled(n);return r===!0?t??e:e??t}isPropertyOverrideEnabled(t){if(this.propertyOverrideFlag!=null)return(this.propertyOverrideFlag&t)!==0}applyColorTraits(t,e,n){t.color=n,e&&(t.color=e)}applyLineTraits(t,e,n){e&&(t.lineType=e),n!=null&&(t.lineWeight=n)}};Ao.typeName="MLeader";let br=Ao;var Sd=(i=>(i[i.Top=0]="Top",i[i.Zero=1]="Zero",i[i.Bottom=2]="Bottom",i))(Sd||{}),Id=(i=>(i[i.HasVertex=1]="HasVertex",i[i.Closed=2]="Closed",i[i.SuppressStartCaps=4]="SuppressStartCaps",i[i.SuppressEndCaps=8]="SuppressEndCaps",i))(Id||{});const Po=class Po extends q{get dxfTypeName(){return"MLINE"}constructor(){super(),this._styleName="",this._styleObjectHandle="",this._scale=1,this._justification=1,this._flags=0,this._styleCount=0,this._startPosition=new b,this._normal=new x(0,0,1),this._segments=[]}get styleName(){return this._styleName||this.getDefaultStyleName()}set styleName(t){this._styleName=t}get styleObjectHandle(){return this._styleObjectHandle}set styleObjectHandle(t){this._styleObjectHandle=t}get scale(){return this._scale}set scale(t){this._scale=t}get justification(){return this._justification}set justification(t){this._justification=t}get flags(){return this._flags}set flags(t){this._flags=t}get styleCount(){return this._styleCount}set styleCount(t){this._styleCount=Math.max(0,t)}get startPosition(){return this._startPosition}set startPosition(t){this._startPosition.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get segments(){return this._segments.map(t=>this.cloneSegment(t))}set segments(t){this._segments=t.map(e=>this.createSegment(e)),this.updateHasVertexFlag()}get vertexCount(){return this._segments.length}get closed(){return(this._flags&2)!==0}set closed(t){this.setFlag(2,t)}get suppressStartCaps(){return(this._flags&4)!==0}set suppressStartCaps(t){this.setFlag(4,t)}get suppressEndCaps(){return(this._flags&8)!==0}set suppressEndCaps(t){this.setFlag(8,t)}appendSegment(t){this._segments.push(this.createSegment(t)),this.updateHasVertexFlag()}clearSegments(){this._segments=[],this.updateHasVertexFlag()}get geometricExtents(){const t=this.collectGeometryPoints();return new z().setFromPoints(t)}subGetIntersectCurves(){const t=[],e=this.getMLineStyle(),n=this.getRenderableElementCount(e);if(n<=0)return Ft(this.getReferencePath(),this.closed);for(let r=0;r<n;r++)t.push(...Ft(this.getElementPath(r,e),this.closed));return t}transformBy(t){return this._startPosition.applyMatrix4(t),this._segments.forEach(e=>{e.position.applyMatrix4(t),this.transformVector(e.direction,t),this.transformVector(e.miterDirection,t)}),this.transformVector(this._normal,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"mline",properties:[{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"scale",type:"float",editable:!0,accessor:{get:()=>this.scale,set:t=>{this.scale=t}}},{name:"justification",type:"int",editable:!0,accessor:{get:()=>this.justification,set:t=>{this.justification=t}}},{name:"closed",type:"boolean",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}},{name:"vertexCount",type:"int",editable:!1,accessor:{get:()=>this.vertexCount}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this._startPosition.clone()),this._segments.forEach(e=>t.push(e.position.clone())),t}subMoveGripPointsAt(t,e){const n=[this._startPosition,...this._segments.map(r=>r.position)];return On(t,e,n),ft(t,r=>{this.updateReferencePathDirectionsAfterGripMove(r)}),this}subGetOsnapPoints(t,e,n,r){const s=[this._startPosition,...this._segments.map(a=>a.position)];if(s.length!==0)switch(t){case P.EndPoint:r.push(...s);break;case P.MidPoint:case P.Nearest:case P.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];Nn(s[o],s[o+1],t,e,c),a.push(...c)}if(t===P.MidPoint)r.push(...a);else{const o=$t(e,a);o&&r.push(o)}break}}}subWorldDraw(t){if(this._segments.length===0)return;const e=[],n=this.getMLineStyle(),r=this.getRenderableElementCount(n),s=t.subEntityTraits,a=s.color,o=s.lineType,c=s.fillType,l=s.drawOrder,h=this.createFillArea(n,r);if(h&&(s.color=a,this.applyFillTraits(n,s),s.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},s.drawOrder=-1,e.push(t.area(h)),s.fillType=c,s.drawOrder=l),r<=0){const u=this.getReferencePath();u.length>=2&&e.push(t.lines(u))}else{for(let u=0;u<r;u++){s.color=a,s.lineType=o,this.applyStyleElementTraits(n,u,s);const d=this.getElementPath(u,n);d.length>=2&&e.push(t.lines(d))}this.appendStyleDrivenJointAndCapEntities(t,e,n,r,a,o)}if(s.color=a,s.lineType=o,s.fillType=c,s.drawOrder=l,e.length!==0)return e.length===1?e[0]:t.group(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMline"),t.writeString(2,this.styleName),t.writeHandle(340,this._styleObjectHandle),t.writeDouble(40,this._scale),t.writeInt16(70,this._justification),t.writeInt16(71,this._flags),t.writeInt16(72,this.vertexCount),t.writeInt16(73,this._styleCount),t.writePoint3d(10,this._startPosition),t.writeVector3d(210,this._normal),this._segments.forEach(e=>{t.writePoint3d(11,e.position),t.writeVector3d(12,e.direction),t.writeVector3d(13,e.miterDirection),e.elements.forEach(n=>{t.writeInt16(74,n.parameterCount),n.parameters.forEach(r=>t.writeDouble(41,r)),t.writeInt16(75,n.fillCount),n.fillParameters.forEach(r=>t.writeDouble(42,r))})}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMline");let e=this._startPosition.x,n=this._startPosition.y,r=this._startPosition.z,s=this._normal.x,a=this._normal.y,o=this._normal.z;const c=[];let l=null,h=null,u=!1,d=!1,g=0,f=0;const p=()=>{h&&l&&l.elements.push(h),h=null,u=!1,d=!1,g=0,f=0},m=()=>{p(),l&&c.push(l),l=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const _=Number(y.code),v=Number(y.value);switch(_){case 2:this.styleName=String(y.value);break;case 340:this.styleObjectHandle=String(y.value);break;case 40:this.scale=v;break;case 70:this.justification=v;break;case 71:this.flags=v;break;case 72:break;case 73:this.styleCount=v;break;case 10:e=v;break;case 20:n=v;break;case 30:r=v;break;case 210:s=v;break;case 220:a=v;break;case 230:o=v;break;case 11:m(),l={position:new b(v,0,0),direction:new x(1,0,0),miterDirection:new x(0,1,0),elements:[]};break;case 21:l&&(l.position.y=v);break;case 31:l&&(l.position.z=v);break;case 12:l&&(l.direction.x=v);break;case 22:l&&(l.direction.y=v);break;case 32:l&&(l.direction.z=v);break;case 13:l&&(l.miterDirection.x=v);break;case 23:l&&(l.miterDirection.y=v);break;case 33:l&&(l.miterDirection.z=v);break;case 74:p(),g=v,u=!0,d=!1,h={parameterCount:v,parameters:[],fillCount:0,fillParameters:[]};break;case 41:h&&u&&(h.parameters.push(v),g>0&&h.parameters.length>=g&&(u=!1));break;case 75:h&&(f=v,h.fillCount=v,d=!0,u=!1);break;case 42:h&&d&&(h.fillParameters.push(v),f>0&&h.fillParameters.length>=f&&(d=!1));break}}return m(),this.startPosition=new b(e,n,r),this.normal=new x(s,a,o),this.segments=c,this}setFlag(t,e){e?this._flags|=t:this._flags&=~t}updateHasVertexFlag(){this.setFlag(1,this._segments.length>0)}updateReferencePathDirectionsAfterGripMove(t){const e=r=>{const s=this._segments[r];if(!s)return;const a=r===0?this._startPosition:this._segments[r-1].position,o=new x().subVectors(s.position,a);o.lengthSq()>0&&s.direction.copy(o.normalize())};if(t===0){this._segments.length>0&&e(0);return}const n=t-1;n<0||n>=this._segments.length||(e(n),n+1<this._segments.length&&e(n+1))}createSegment(t){var e;return{position:new b().copy(t.position),direction:new x().copy(t.direction),miterDirection:new x().copy(t.miterDirection),elements:((e=t.elements)==null?void 0:e.map(n=>this.createElement(n)))??[]}}createElement(t){const e=t.parameters?[...t.parameters]:[],n=t.fillParameters?[...t.fillParameters]:[];return{parameterCount:t.parameterCount??e.length,parameters:e,fillCount:t.fillCount??n.length,fillParameters:n}}cloneSegment(t){return{position:t.position.clone(),direction:t.direction.clone(),miterDirection:t.miterDirection.clone(),elements:t.elements.map(e=>({parameterCount:e.parameterCount,parameters:[...e.parameters],fillCount:e.fillCount,fillParameters:[...e.fillParameters]}))}}collectGeometryPoints(){const t=[this._startPosition];if(this._segments.length===0)return t;const e=this.getMLineStyle(),n=this.getRenderableElementCount(e);if(n<=0)return this._segments.forEach(r=>t.push(r.position)),t;for(let r=0;r<n;r++)t.push(...this.getElementPath(r,e));return t}getRenderableElementCount(t){const e=(t==null?void 0:t.elementCount)??0;return Math.max(this._styleCount,e,...this._segments.map(n=>n.elements.length),0)}getReferencePath(){const t=[this._startPosition.clone(),...this._segments.map(e=>e.position.clone())];return this.closePathIfNeeded(t)}getElementPath(t,e){const n=[],r=this._segments[0];return n.push(this.getElementBoundaryPoint("start",r,t,e)),this._segments.forEach(s=>{n.push(this.offsetPoint(s.position,s.miterDirection,this.getElementMiterOffset(s,t,e)))}),n[n.length-1]=this.getElementBoundaryPoint("end",this._segments[this._segments.length-1],t,e),this.closePathIfNeeded(n)}getElementMiterOffset(t,e,n){var s;const r=t.elements[e];return(s=r==null?void 0:r.parameters)!=null&&s.length?r.parameters[0]:this.getStyleElementOffset(e,n)}getElementBoundaryPoint(t,e,n,r){const s=this.getElementMiterOffset(e,n,r),a=t==="start"?this._startPosition:e.position,o=this.offsetPoint(a,e.miterDirection,s);if(!this.shouldApplyCapCutAtSide(t,r))return o;const c=t==="start"?r==null?void 0:r.startAngle:r==null?void 0:r.endAngle,l=this.computeCapCutDistance(s,c,t);if(l===0)return o;const h=t==="start"?this.getStartSegmentDirection():this.getEndSegmentDirection();return h.lengthSq()===0?o:o.add(h.multiplyScalar(l))}shouldApplyCapCutAtSide(t,e){return!e||this.closed?!1:t==="start"?this.suppressStartCaps?!1:(e.flags&112)!==0:this.suppressEndCaps?!1:(e.flags&1792)!==0}computeCapCutDistance(t,e,n){const r=this.normalizeCapAngle(e),s=Math.tan(r);if(Math.abs(s)<1e-6)return 0;const a=t/s;return a}normalizeCapAngle(t){if(t==null||!Number.isFinite(t))return Math.PI/2;let e=t%180;return e<0&&(e+=180),(e<1||e>179)&&(e=90),e*Math.PI/180}getStartSegmentDirection(){const t=this._segments[0],e=new x;return t&&(e.subVectors(t.position,this._startPosition),e.lengthSq()===0&&e.copy(t.direction)),e.lengthSq()>0&&e.normalize(),e}getEndSegmentDirection(){const t=this._segments[this._segments.length-1];if(!t)return new x;const e=new x,n=this._segments.length>1?this._segments[this._segments.length-2].position:this._startPosition;return e.subVectors(t.position,n),e.lengthSq()===0&&e.copy(t.direction),e.lengthSq()>0&&e.normalize(),e}createFillArea(t,e){if(!t||(t.flags&1)===0||e<2)return;const n=this.getFillBoundaryElementIndices(e,t);if(!n)return;const r=this.getElementPath(n.outerIndex,t),s=this.getElementPath(n.innerIndex,t),a=this.stripClosingPoint(r),o=this.stripClosingPoint(s);if(a.length<2||o.length<2)return;const c=new Kt;if(this.closed){if(a.length<3||o.length<3)return;c.add(new Q(a.map(l=>({x:l.x,y:l.y})),!0)),c.add(new Q(o.map(l=>({x:l.x,y:l.y})),!0))}else{const l=[...a,...o.slice().reverse()].map(h=>({x:h.x,y:h.y}));if(l.length<3)return;c.add(new Q(l,!0))}return c}getFillBoundaryElementIndices(t,e){let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=-1,a=-1;for(let o=0;o<t;o++){const c=this.getElementReferenceOffset(o,e);c<n&&(n=c,s=o),c>r&&(r=c,a=o)}if(!(s<0||a<0||s===a))return{outerIndex:a,innerIndex:s}}getElementReferenceOffset(t,e){var r;const n=this._segments[0];if(n){const s=n.elements[t];if((r=s==null?void 0:s.parameters)!=null&&r.length)return s.parameters[0]}return this.getStyleElementOffset(t,e)}getStyleElementOffset(t,e){const n=e==null?void 0:e.elements[t];if(!n)return 0;const r=this.getStyleJustificationShift(e);return(n.offset+r)*this._scale}getStyleJustificationShift(t){const e=(t==null?void 0:t.elements)??[];if(e.length<=0)return 0;let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const s of e){const a=s.offset;a<n&&(n=a),a>r&&(r=a)}return this._justification===0?-r:this._justification===2?-n:0}stripClosingPoint(t){if(t.length<2)return t;const e=t[0],n=t[t.length-1],r=1e-9;return Math.abs(e.x-n.x)<=r&&Math.abs(e.y-n.y)<=r&&Math.abs(e.z-n.z)<=r?t.slice(0,-1):t}offsetPoint(t,e,n){if(n===0||e.lengthSq()===0)return t.clone();const r=e.clone().normalize().multiplyScalar(n);return t.clone().add(r)}closePathIfNeeded(t){if(!this.closed||t.length<2)return t;const e=t[0],n=t[t.length-1],r=1e-9;return Math.abs(e.x-n.x)<=r&&Math.abs(e.y-n.y)<=r&&Math.abs(e.z-n.z)<=r||t.push(e.clone()),t}appendStyleDrivenJointAndCapEntities(t,e,n,r,s,a){!n||r<2||(e.push(...this.drawMiterJointEntities(t,n,r,s,a)),e.push(...this.drawCapEntities(t,n,r,s,a)))}drawMiterJointEntities(t,e,n,r,s){if(this.closed||this._segments.length<2||(e.flags&2)===0)return[];const a=[],o=t.subEntityTraits;for(let c=0;c<this._segments.length-1;c++){const l=this._segments[c],h=Array.from({length:n},(u,d)=>{const g=this.getElementMiterOffset(l,d,e);return{elementIndex:d,offset:g,point:this.offsetPoint(l.position,l.miterDirection,g)}}).sort((u,d)=>d.offset-u.offset);for(let u=0;u<h.length-1;u++)this.applyElementDrawTraits(o,r,s,e,h[u].elementIndex),a.push(t.lines([h[u].point,h[u+1].point]))}return a}drawCapEntities(t,e,n,r,s){if(this.closed||this._segments.length<=0)return[];const a=[];return a.push(...this.drawCapEntitiesForSide(t,"start",e,n,r,s)),a.push(...this.drawCapEntitiesForSide(t,"end",e,n,r,s)),a}drawCapEntitiesForSide(t,e,n,r,s,a){if(e==="start"&&this.suppressStartCaps)return[];if(e==="end"&&this.suppressEndCaps)return[];const o=n.flags,c=e==="start",l=c?(o&16)!==0:(o&256)!==0,h=c?(o&64)!==0:(o&1024)!==0,u=c?(o&32)!==0:(o&512)!==0;if(!l&&!h&&!u)return[];const d=this.getCapElementPoints(e,r,n);if(d.length<2)return[];const g=[],f=t.subEntityTraits;if(l)for(let m=0;m<d.length-1;m++)this.applyElementDrawTraits(f,s,a,n,d[m].elementIndex),g.push(t.lines([d[m].point,d[m+1].point]));const p=c?this.getStartSegmentDirection().multiplyScalar(-1):this.getEndSegmentDirection().clone();if(h){const m=this.drawCapArcBetweenElements(t,e,d[0],d[d.length-1],p,f,s,a,n);m&&g.push(m)}if(u)for(let m=1;m<Math.floor(d.length/2);m++){const y=d[m],_=d[d.length-1-m];if(!y||!_||y===_)continue;const v=this.drawCapArcBetweenElements(t,e,y,_,p,f,s,a,n);v&&g.push(v)}return g}getCapElementPoints(t,e,n){const r=t==="start"?this._segments[0]:this._segments[this._segments.length-1];return r?Array.from({length:e},(s,a)=>({elementIndex:a,offset:this.getElementMiterOffset(r,a,n),point:this.getElementBoundaryPoint(t,r,a,n)})).sort((s,a)=>a.offset-s.offset):[]}drawCapArcBetweenElements(t,e,n,r,s,a,o,c,l){const h=e==="end"?r.point:n.point,u=e==="end"?n.point:r.point,d=h.distanceTo(u);if(d<=1e-9||s.lengthSq()===0)return;const f=h.clone().add(new x().subVectors(u,h).multiplyScalar(.5)).add(s.clone().normalize().multiplyScalar(d/2)),p=St.createByThreePoints(h,u,f);if(p)return this.applyElementDrawTraits(a,o,c,l,e==="end"?r.elementIndex:n.elementIndex),t.circularArc(p)}applyElementDrawTraits(t,e,n,r,s){t.color=e,t.lineType=n,this.applyStyleElementTraits(r,s,t)}transformVector(t,e){const n=new b,r=new b(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}getMLineStyle(){var s;const t=this.database.objects.mlineStyle,e=this.styleObjectHandle?t.getIdAt(this.styleObjectHandle):void 0;if(e)return e;const n=this.styleName?t.getAt(this.styleName):void 0;if(n)return n;const r=(s=this.styleName)==null?void 0:s.toUpperCase();if(r)for(const[a,o]of t.entries()){const c=(o.styleName||a).toUpperCase();if(a.toUpperCase()===r||c===r)return o}}applyStyleElementTraits(t,e,n){const r=t==null?void 0:t.elements[e];if(!r)return;const s=this.resolveStyleElementLineType(r.lineType);s&&(n.lineType=s),!(r.color.isByBlock||r.color.isByLayer)&&(n.color=r.color.clone())}applyFillTraits(t,e){const n=t==null?void 0:t.fillColor;!n||n.isByBlock||n.isByLayer||(e.color=n.clone())}resolveStyleElementLineType(t){var l;const e=t==null?void 0:t.trim();if(!e)return;const n=e.toUpperCase(),r=dt.toUpperCase(),s=oe.toUpperCase();let a="UserSpecified",o=e;if(n===r){a="ByLayer";const h=(l=this.database.tables.layerTable.getAt(this.layer))==null?void 0:l.linetype;o=h&&h.toUpperCase()!==r&&h.toUpperCase()!==s?h:Ne}else n===s&&(a="ByBlock",o=Ne);const c=this.database.tables.linetypeTable.getAt(o);return c?{type:a,...c.linetype}:{type:a,name:o,standardFlag:0,description:"",totalPatternLength:0}}resolveEffectiveProperties(){super.resolveEffectiveProperties(),this._styleName||(this._styleName=this.getDefaultStyleName())}getDefaultStyleName(){try{return this.database.cmlstyle||we}catch{return we}}};Po.typeName="MLine";let _r=Po;function Ed(i,t){if(t.length<3)return;const e=i.subEntityTraits,n=e.fillType,r=e.transparency;e.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},e.transparency=new ht(0);const s=new Kt;s.add(new Q(t,!0));const a=i.area(s);e.fillType=n,e.transparency=r;const o=i.lines(t);return a?o?i.group([a,o]):a:o}const Hc=[208,207,17,224,161,177,26,225],Wc=128,xa=8,Us=3*xa,ji=2;function Uy(i){if(!i||i.length<Wc)return;for(let l=0;l<Hc.length;l++)if(i[Wc+l]!==Hc[l])return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=l=>{const h=t.getFloat64(l,!0),u=t.getFloat64(l+xa,!0),d=t.getFloat64(l+2*xa,!0);if([h,u,d].every(Number.isFinite))return{x:h,y:u,z:d}},n=e(ji),r=e(ji+Us),s=e(ji+2*Us),a=e(ji+3*Us);if(!n||!r||!s||!a)return;const o=Math.abs(s.x-n.x),c=Math.abs(n.y-s.y);if(!(o<=0||c<=0))return{upperLeft:n,upperRight:r,lowerRight:s,lowerLeft:a}}const wa=[208,207,17,224,161,177,26,225],Hy=2,Wy=8,Hs=128,$y=64*1024*1024;function qy(i){if(!(i!=null&&i.length))return;const t=Ky(i);return t||_n(i)}function Ky(i){const t=gi(i,wa);if(t<0)return;const e=i.subarray(t);let n;try{n=rb(e)}catch{return}const r=["CONTENTS","Package","Ole10Native","Ole10Native"];for(const s of r){const a=n.readStream(s);if(!(a!=null&&a.length))continue;const o=_n(a);if(o)return o}for(const s of n.entries()){if(s.type!=="stream"||!/olepres/i.test(s.name)&&!s.name.includes("OlePres"))continue;const a=n.readStream(s.name);if(!(a!=null&&a.length))continue;const o=Zy(a);if(o)return o;const c=_n(a);if(c)return c}for(const s of n.entries()){if(s.type!=="stream")continue;const a=n.readStream(s.name);if(!(a!=null&&a.length))continue;const o=_n(a);if(o)return o}}function Zy(i){if(i.length<28)return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;const n=t.getUint32(e,!0);e+=4;let r=0;if(n===4294967295)r=t.getUint32(e,!0),e+=4;else{if(n===4294967294)return;if(n>0&&n<65535)e+=n;else return}if(e+4>i.length)return;const s=t.getUint32(e,!0);if(e+=4,s>4&&(e+=s-4),e+=24,e+4>i.length)return;const a=t.getUint32(e,!0);if(e+=4,a<=0||e+a>i.length)return;const o=i.subarray(e,e+a);return r===Wy?Cd(o):_n(o)}function _n(i){const t=Qy(i);if(t)return t;const e=Jy(i);if(e)return e;const n=tb(i);if(n)return n;const r=eb(i);if(r)return r;const s=nb(i);if(s)return s}function Qy(i){for(let t=0;t<i.length-14;t++){if(i[t]!==66||i[t+1]!==77)continue;const e=new DataView(i.buffer,i.byteOffset+t,i.length-t),n=e.getUint32(2,!0);if(n<14||n>i.length-t)continue;const r=e.getUint32(10,!0);if(!(r<14||r>=n))return new Blob([i.subarray(t,t+n)],{type:"image/bmp"})}}function Jy(i){const e=gi(i,[137,80,78,71,13,10,26,10]);if(!(e<0)){for(let n=e+8;n+12<=i.length;n++)if(i[n+4]===73&&i[n+5]===69&&i[n+6]===78&&i[n+7]===68){const r=n+12;return new Blob([i.subarray(e,r)],{type:"image/png"})}return new Blob([i.subarray(e)],{type:"image/png"})}}function tb(i){const t=gi(i,[255,216,255]);if(!(t<0)){for(let e=t+3;e+1<i.length;e++)if(i[e]===255&&i[e+1]===217)return new Blob([i.subarray(t,e+2)],{type:"image/jpeg"})}}function eb(i){const t=gi(i,[71,73,70,56,55,97]),e=gi(i,[71,73,70,56,57,97]),n=t>=0?t:e;if(!(n<0)){for(let r=n+6;r<i.length;r++)if(i[r]===59)return new Blob([i.subarray(n,r+1)],{type:"image/gif"});return new Blob([i.subarray(n)],{type:"image/gif"})}}function nb(i){for(let t=0;t+40<=i.length;t++){const e=new DataView(i.buffer,i.byteOffset+t,i.length-t),n=e.getUint32(0,!0);if(n!==40)continue;const r=e.getInt32(4,!0),s=e.getInt32(8,!0),a=e.getUint16(12,!0),o=e.getUint16(14,!0),c=e.getUint32(16,!0),l=e.getUint32(20,!0),h=e.getUint32(32,!0);if(r<=0||r>65536||s===0||Math.abs(s)>65536||a!==1||![1,4,8,16,24,32].includes(o)||c!==0&&c!==3)continue;const u=Ld(n,o,c,h),d=Math.abs(s),g=r*o+31>>5<<2,f=l>0?l:g*d,p=u+f;if(!(p<=40||t+p>i.length))return Cd(i.subarray(t,t+p))}}function Ld(i,t,e,n){let r=0;return t>8&&e===3&&(r+=12),n>0?r+=n*4:t<=8&&(r+=(1<<t)*4),i+r}function Cd(i){if(i.length<40)return;const e=new DataView(i.buffer,i.byteOffset,i.byteLength).getUint32(0,!0);if(e!==40&&e!==12)return;const n=14+i.length,r=new Uint8Array(14),s=new DataView(r.buffer);r[0]=66,r[1]=77,s.setUint32(2,n,!0),s.setUint32(10,14+ib(i),!0);const a=new Uint8Array(n);return a.set(r,0),a.set(i,14),new Blob([a],{type:"image/bmp"})}function ib(i){const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=t.getUint32(0,!0);if(e===12){const a=t.getUint16(10,!0),o=a<=8?1<<a:0;return e+o*3}const n=t.getUint16(14,!0),r=t.getUint32(16,!0),s=t.getUint32(32,!0);return Ld(e,n,r,s)}function gi(i,t){t:for(let e=0;e<=i.length-t.length;e++){for(let n=0;n<t.length;n++)if(i[e+n]!==t[n])continue t;return e}return-1}function rb(i){if(i.length<512)throw new Error("CFB too small");for(let E=0;E<wa.length;E++)if(i[E]!==wa[E])throw new Error("Not a CFB document");const t=new DataView(i.buffer,i.byteOffset,i.byteLength),n=1<<t.getUint16(30,!0);if(n!==512&&n!==4096)throw new Error("Unsupported CFB sector size");const r=t.getUint32(44,!0),s=t.getUint32(48,!0),a=t.getUint32(56,!0),o=t.getUint32(60,!0),c=t.getUint32(64,!0),l=t.getUint32(68,!0),h=t.getUint32(72,!0),u=[];for(let E=0;E<109;E++){const I=t.getUint32(76+E*4,!0);I<=4294967290&&u.push(I)}let d=l;for(let E=0;E<h&&d<=4294967290;E++){const I=(d+1)*n;if(I+n>i.length)break;const M=n/4-1;for(let T=0;T<M;T++){const R=t.getUint32(I+T*4,!0);R<=4294967290&&u.push(R)}d=t.getUint32(I+M*4,!0)}const g=[];for(let E=0;E<Math.min(r,u.length);E++){const M=(u[E]+1)*n;if(M+n>i.length)break;const T=n/4;for(let R=0;R<T;R++)g.push(t.getUint32(M+R*4,!0))}const f=Gi(g,s,4096),p=Ui(i,f,n),m=[],y=Math.floor(p.length/Hs);for(let E=0;E<y;E++){const I=E*Hs,M=new DataView(p.buffer,p.byteOffset+I,Hs),T=M.getUint16(64,!0);if(T<2||T>64)continue;const R=Math.floor((T-2)/2);let Y="";for(let H=0;H<R;H++)Y+=String.fromCharCode(M.getUint16(H*2,!0));const O=M.getUint8(66),Z=M.getUint32(116,!0),K=M.getUint32(120,!0),G=M.getUint32(124,!0),J=G===0?K:K+G*4294967296;let S="unknown";O===5?S="root":O===1?S="storage":O===2&&(S="stream"),m.push({name:Y,type:S,size:J,startSector:Z})}const _=m.find(E=>E.type==="root"),v=[];if(c>0&&o<=4294967290){const E=Gi(g,o,c),I=Ui(i,E,n),M=new DataView(I.buffer,I.byteOffset,I.byteLength);for(let T=0;T+4<=I.length;T+=4)v.push(M.getUint32(T,!0))}let w;if(_&&_.size>0){const E=Gi(g,_.startSector,65536);w=Ui(i,E,n).subarray(0,_.size)}return{entries:()=>m,readStream:E=>{const I=m.find(T=>T.type==="stream"&&(T.name===E||T.name.toLowerCase()===E.toLowerCase()));if(!I||I.size<=0||I.size>$y)return;if(I.size<a&&w&&v.length>0){const R=Td(v,I.startSector,65536),Y=new Uint8Array(I.size);let O=0;for(const Z of R){if(O>=I.size)break;const K=Z*64,G=Math.min(K+64,w.length);if(K>=w.length)break;const J=w.subarray(K,G);Y.set(J.subarray(0,Math.min(J.length,I.size-O)),O),O+=J.length}return Y.subarray(0,Math.min(O,I.size))}const M=Gi(g,I.startSector,65536);return Ui(i,M,n).subarray(0,I.size)}}}function Gi(i,t,e){return Td(i,t,e)}function Td(i,t,e){const n=[];let r=t;const s=new Set;for(;r<=4294967290&&n.length<e&&!(s.has(r)||(s.add(r),n.push(r),r>=i.length));)r=i[r];return n}function Ui(i,t,e){const n=new Uint8Array(t.length*e);let r=0;for(const s of t){const a=(s+1)*e,o=Math.min(a+e,i.length);if(a>=i.length)break;n.set(i.subarray(a,o),r),r+=e}return n}const ko=class ko extends q{};ko.typeName="Frame";let xr=ko;const So=class So extends xr{constructor(){super(),this._oleVersion=0}get dxfTypeName(){return"OLEFRAME"}get oleVersion(){return this._oleVersion}set oleVersion(t){this._oleVersion=t}getOleObject(){return this._oleObject?new Uint8Array(this._oleObject):void 0}setOleObject(t){t==null?this._oleObject=void 0:this._oleObject=t instanceof ArrayBuffer?new Uint8Array(t.slice(0)):new Uint8Array(t),this.onOleObjectChanged()}loadOleObjectFromDxf(t,e){e!=null&&e.length?t!=null&&t>0&&t<e.length?this._oleObject=e.subarray(0,t):this._oleObject=new Uint8Array(e):this._oleObject=void 0,this.onOleObjectChanged()}get oleObjectData(){return this._oleObject}onOleObjectChanged(){}get geometricExtents(){return new z}subWorldDraw(t){}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbOleFrame"),t.writeInt16(70,this._oleVersion),(e=this._oleObject)!=null&&e.length){t.writeInt32(90,this._oleObject.length);let n=0;for(;n<this._oleObject.length;){const r=this._oleObject.subarray(n,n+127);t.writeString(310,hs(r)),n+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbOleFrame");const e=[];let n;const r=()=>{e.length>0&&this.loadOleObjectFromDxf(n,Ai(e))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 1:break;case 70:this.oleVersion=o;break;case 90:n=o;break;case 310:s.value instanceof Uint8Array?e.push(s.value):e.push(String(s.value));break}}return r(),this}};So.typeName="OleFrame";let fi=So;var Md=(i=>(i[i.Link=1]="Link",i[i.Embedded=2]="Embedded",i[i.Static=3]="Static",i))(Md||{}),Od=(i=>(i[i.ModelSpace=0]="ModelSpace",i[i.PaperSpace=1]="PaperSpace",i))(Od||{});const Io=class Io extends fi{constructor(){super(),this._upperLeft=new b,this._lowerRight=new b,this._rotation=0,this._scaleWidth=1,this._scaleHeight=1,this._lockAspect=!1,this._outputQuality=0,this._autoOutputQuality=0,this._oleObjectType=2,this._tileMode=0,this._userType="",this._linkName="",this._linkPath="",this._oleClientItem=null,this._imageResolved=!1}get dxfTypeName(){return"OLE2FRAME"}get upperLeftCorner(){return this._upperLeft}set upperLeftCorner(t){this._upperLeft.copy(t)}get lowerRightCorner(){return this._lowerRight}set lowerRightCorner(t){this._lowerRight.copy(t)}getLocation(t){return t?t.copy(this._upperLeft):this._upperLeft.clone()}setLocation(t){const e=t.x-this._upperLeft.x,n=t.y-this._upperLeft.y,r=(t.z??0)-this._upperLeft.z;this._upperLeft.copy(t),this._lowerRight.x+=e,this._lowerRight.y+=n,this._lowerRight.z+=r}position(){return{upperLeft:this._upperLeft.clone(),upperRight:this.cornerUpperRight(),lowerLeft:this.cornerLowerLeft(),lowerRight:this._lowerRight.clone()}}setPosition(t){this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight)}wcsWidth(){return Math.abs(this._lowerRight.x-this._upperLeft.x)}setWcsWidth(t){const e=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+e*Math.abs(t),this._lockAspect&&this.syncHeightFromAspect()}wcsHeight(){return Math.abs(this._upperLeft.y-this._lowerRight.y)}setWcsHeight(t){const e=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-e*Math.abs(t),this._lockAspect&&this.syncWidthFromAspect()}scaleWidth(){return this._scaleWidth}setScaleWidth(t){this._scaleWidth=t}scaleHeight(){return this._scaleHeight}setScaleHeight(t){this._scaleHeight=t}rotation(){return this._rotation}setRotation(t){this._rotation=t}lockAspect(){return this._lockAspect}setLockAspect(t){this._lockAspect=!!t}outputQuality(){return this._outputQuality}setOutputQuality(t){this._outputQuality=t&255}autoOutputQuality(){return this._autoOutputQuality}setAutoOutputQuality(t){this._autoOutputQuality=t&255}getType(){return this._oleObjectType}setType(t){this._oleObjectType=t}get oleObjectType(){return this._oleObjectType}set oleObjectType(t){this._oleObjectType=t}get tileMode(){return this._tileMode}set tileMode(t){this._tileMode=t}getUserType(){return this._userType}setUserType(t){this._userType=t}get userType(){return this._userType}set userType(t){this._userType=t}getLinkName(){return this._linkName}setLinkName(t){this._linkName=t}getLinkPath(){return this._linkPath}setLinkPath(t){this._linkPath=t}getOleClientItem(){return this._oleClientItem}setOleClientItem(t){this._oleClientItem=t??null}get geometricExtents(){return new z().setFromPoints(this.boundaryPath())}subGetIntersectCurves(){return Ft(this.boundaryPath().slice(0,4),!0)}subGetGripPoints(){return this.boundaryPath().slice(0,4)}subMoveGripPointsAt(t,e){const n=this.boundaryPath().slice(0,4);return On(t,e,n),ft(t,r=>{r===0?this._upperLeft.copy(n[0]):r===2?this._lowerRight.copy(n[2]):r===1?(this._upperLeft.y=n[1].y,this._lowerRight.x=n[1].x,this._upperLeft.z=n[1].z,this._lowerRight.z=n[1].z):r===3&&(this._upperLeft.x=n[3].x,this._lowerRight.y=n[3].y,this._upperLeft.z=n[3].z,this._lowerRight.z=n[3].z)}),this}subGetOsnapPoints(t,e,n,r){if(t===P.Insertion){r.push(this._upperLeft.clone());return}const s=this.boundaryPath().slice(0,4);if(t===P.EndPoint){r.push(...s);return}us(s,!0,t,e,r)}transformBy(t){const e=this._lowerRight.x-this._upperLeft.x,n=this._upperLeft.y-this._lowerRight.y,r=Math.cos(this._rotation),s=Math.sin(this._rotation),a=this._upperLeft.clone(),o=a.clone().add(new x(e*r,e*s,0)),c=a.clone().add(new x(n*s,-n*r,0));a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x().subVectors(o,a),h=new x().subVectors(c,a);return this._upperLeft.copy(a),this._rotation=Math.atan2(l.y,l.x),this._lowerRight.set(a.x+l.length(),a.y-h.length(),a.z),this}get image(){return this.resolveImage()}subWorldDraw(t){const e=this.resolveImage(),n=this.imageBoundaryPath();return e?t.image(e,{boundary:n,roation:this._rotation}):Ed(t,this.boundaryPath())}onOleObjectChanged(){this._image=void 0,this._imageResolved=!1,this.applyGeometryFromOleObjectData()}applyGeometryFromOleObjectData(){const t=Uy(this.oleObjectData);t&&(this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight))}resolveImage(){return this._imageResolved?this._image:(this._imageResolved=!0,this._image=qy(this.oleObjectData),this._image)}imageBoundaryPath(){const t=this.boundaryPath(),e=[t[3],t[2],t[1],t[0]];return e.push(e[0].clone()),e}dxfOutFields(t){q.prototype.dxfOutFields.call(this,t),t.writeSubclassMarker("AcDbOle2Frame"),t.writeInt16(70,this.oleVersion),this._userType&&t.writeString(3,this._userType),t.writePoint3d(10,this._upperLeft),t.writePoint3d(11,this._lowerRight),t.writeInt16(71,this._oleObjectType),t.writeInt16(72,this._tileMode),this._outputQuality&&t.writeInt16(73,this._outputQuality);const e=this.getOleObject();if(e!=null&&e.length){t.writeInt32(90,e.length);let n=0;for(;n<e.length;){const r=e.subarray(n,n+127);t.writeString(310,hs(r)),n+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){q.prototype.dxfInFields.call(this,t),t.atSubclassData("AcDbOle2Frame");let e=this._upperLeft.x,n=this._upperLeft.y,r=this._upperLeft.z,s=this._lowerRight.x,a=this._lowerRight.y,o=this._lowerRight.z;const c=[];let l;const h=()=>{this.upperLeftCorner=new b(e,n,r),this.lowerRightCorner=new b(s,a,o),c.length>0&&this.loadOleObjectFromDxf(l,Ai(c))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 1:break;case 3:this.userType=String(u.value);break;case 10:e=g;break;case 20:n=g;break;case 30:r=g;break;case 11:s=g;break;case 21:a=g;break;case 31:o=g;break;case 70:this.oleVersion=g;break;case 71:this.oleObjectType=g;break;case 72:this.tileMode=g;break;case 73:this.setOutputQuality(g);break;case 90:l=g;break;case 310:u.value instanceof Uint8Array?c.push(u.value):c.push(String(u.value));break}}return h(),this}cornerUpperRight(){return new b(this._lowerRight.x,this._upperLeft.y,this._upperLeft.z)}cornerLowerLeft(){return new b(this._upperLeft.x,this._lowerRight.y,this._lowerRight.z)}boundaryPath(){const t=[this._upperLeft.clone(),this.cornerUpperRight(),this._lowerRight.clone(),this.cornerLowerLeft()];if(this._rotation!==0){const e=this._upperLeft;for(let n=1;n<t.length;n++)t[n].sub(e).applyMatrix4(new D().makeRotationZ(this._rotation)),t[n].add(e)}return t.push(t[0].clone()),t}syncHeightFromAspect(){const t=this.wcsWidth();if(t===0||this._scaleWidth===0)return;const e=this._scaleHeight/this._scaleWidth,n=t*e,r=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-r*Math.abs(n)}syncWidthFromAspect(){const t=this.wcsHeight();if(t===0||this._scaleHeight===0)return;const e=this._scaleWidth/this._scaleHeight,n=t*e,r=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+r*Math.abs(n)}};Io.typeName="Ole2Frame";let wr=Io;const Eo=class Eo extends q{constructor(){super(),this._thickness=0,this._normal=new x(0,0,1),this._ecsRotation=0,this._geo=new b}get dxfTypeName(){return"POINT"}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get ecsRotation(){return this._ecsRotation}set ecsRotation(t){this._ecsRotation=t}get geometricExtents(){return new z().expandByPoint(this._geo)}subGetGripPoints(){return[this._geo]}subMoveGripPointsAt(t,e){return de(t,e,this._geo),this}subGetOsnapPoints(t,e,n,r){t===P.Node&&r.push(this._geo)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}transformBy(t){return this._geo.applyMatrix4(t),this}get directBatchPrimitive(){var e;return(((e=this.database)==null?void 0:e.pdmode)??0)===0?"point":null}subWorldDraw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbPoint"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,Rt(this.position,this.normal)),this.ecsRotation!==0&&t.writeAngle(50,this.ecsRotation),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPoint");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.thickness,a=this.ecsRotation*180/Math.PI,o=this.normal.x,c=this.normal.y,l=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 10:e=g;break;case 20:n=g;break;case 30:r=g;break;case 39:s=g;break;case 50:a=g;break;case 210:o=g;break;case 220:c=g;break;case 230:l=g;break}}const h=new x(o,c,l);return h.lengthSq()>0&&this.normal.copy(h.normalize()),this.thickness=s,this.ecsRotation=a*Math.PI/180,this.position=_t({x:e,y:n,z:r},this.normal),this}};Eo.typeName="Point";let vr=Eo;const Lo=class Lo extends q{constructor(){super(...arguments),this._originalDxfName="",this._originalClassName="",this._applicationName="",this._proxyEntityClassId=498,this._applicationEntityClassId=0,this._objectDrawingFormat=0,this._originalDataFormat=0,this._entityOrigins=[],this._worldTransform=new D}get dxfTypeName(){return"ACAD_PROXY_ENTITY"}get originalDxfName(){return this._originalDxfName}set originalDxfName(t){this._originalDxfName=t}get originalClassName(){return this._originalClassName}set originalClassName(t){this._originalClassName=t}get applicationName(){return this._applicationName}set applicationName(t){this._applicationName=t}get proxyEntityClassId(){return this._proxyEntityClassId}set proxyEntityClassId(t){this._proxyEntityClassId=t}get applicationEntityClassId(){return this._applicationEntityClassId}set applicationEntityClassId(t){this._applicationEntityClassId=t}get objectDrawingFormat(){return this._objectDrawingFormat}set objectDrawingFormat(t){this._objectDrawingFormat=t}get graphicsMetafileType(){return this._objectDrawingFormat}set graphicsMetafileType(t){this._objectDrawingFormat=t}get originalDataFormat(){return this._originalDataFormat}set originalDataFormat(t){this._originalDataFormat=t}get proxyGraphic(){return this._proxyGraphic}setProxyGraphic(t){this._proxyGraphic=t?new Uint8Array(t):void 0}get entityOrigins(){return this._entityOrigins}setEntityOrigins(t){this._entityOrigins=t.map(e=>new b(e.x,e.y,e.z))}get geometricExtents(){const t=this._proxyGraphic;if(!(t!=null&&t.length))return new z;const n=new fa(t,{database:this.database,defaultLayer:this.layer}).scanExtents();if(n){const r=new z().setFromPoints(n);return this._worldTransform.equals(new D)||r.applyMatrix4(this._worldTransform),r}return new z}subGetGripPoints(){if(this._entityOrigins.length>0)return[...this._entityOrigins];const t=this.geometricExtents;return t.isEmpty()?[]:[new b(t.min.x,t.min.y,t.min.z),new b(t.max.x,t.max.y,t.max.z)]}subMoveGripPointsAt(t,e){return this._entityOrigins.length>0?(On(t,e,this._entityOrigins),this):this.geometricExtents.isEmpty()?this:(ft(t,r=>{r===0&&this.transformBy(D.makeTranslation(e))}),this)}transformBy(t){return this._entityOrigins.forEach(e=>e.applyMatrix4(t)),this._worldTransform.premultiply(t),this}subWorldDraw(t){const e=this._proxyGraphic;if(!(e!=null&&e.length))return;const r=new fa(e,{database:this.database,defaultLayer:this.layer}).worldDraw(t);return r&&!this._worldTransform.equals(new D)&&r.applyMatrix(this._worldTransform),r}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbProxyEntity"),this._originalDxfName&&t.writeString(1,this._originalDxfName),this._originalClassName&&t.writeString(3,this._originalClassName),t.writeInt32(90,this._proxyEntityClassId||498),this._applicationEntityClassId&&t.writeInt32(91,this._applicationEntityClassId),this._objectDrawingFormat&&t.writeInt32(95,this._objectDrawingFormat),t.writeInt16(70,this._originalDataFormat),(e=this._proxyGraphic)!=null&&e.length){t.writeInt32(160,this._proxyGraphic.length);let n=0;for(;n<this._proxyGraphic.length;){const r=this._proxyGraphic.subarray(n,n+127);t.writeString(310,hs(r)),n+=127}}return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbProxyEntity");const e=[];let n;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),a=Number(r.value);switch(s){case 1:this.originalDxfName=String(r.value);break;case 3:this.originalClassName=String(r.value);break;case 70:this.originalDataFormat=a;break;case 90:this.proxyEntityClassId=a;break;case 91:this.applicationEntityClassId=a;break;case 95:this.objectDrawingFormat=a;break;case 160:n=a;break;case 310:r.value instanceof Uint8Array?e.push(r.value):e.push(String(r.value));break}}return e.length>0&&this.loadProxyGraphicFromDxf(n,e),this}loadProxyGraphicFromDxf(t,e){const n=Gm(t,e);n&&this.setProxyGraphic(n)}};Lo.typeName="ProxyEntity";let Ar=Lo;var Nd=(i=>(i[i.Invalid=0]="Invalid",i[i.Rect=1]="Rect",i[i.Poly=2]="Poly",i))(Nd||{}),Rd=(i=>(i[i.Show=1]="Show",i[i.ShowUnAligned=2]="ShowUnAligned",i[i.Clip=4]="Clip",i[i.Transparent=8]="Transparent",i))(Rd||{});const Co=class Co extends q{constructor(){super(),this._classVersion=0,this._clipMode=0,this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new b,this._scale=new at(1,1),this._rotation=0,this._imageSize=new L,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get dxfTypeName(){return"IMAGE"}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 imageSize(){return this._imageSize}set imageSize(t){this._imageSize.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 classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get clipMode(){return this._clipMode}set clipMode(t){this._clipMode=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.objects.imageDefinition.getIdAt(this._imageDefId);if(t)return t.sourceFileName}return""}get geometricExtents(){const t=new z;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetIntersectCurves(){return Ft(this.boundaryPath(),!0)}subGetGripPoints(){return this.boundaryPath()}subMoveGripPointsAt(t,e){return ft(t,n=>{this.isClipped&&this._clipBoundary.length>3?this.moveClippedBoundaryGripAt(n,e):this.moveUnclippedGripAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){if(t===P.Insertion){r.push(this._position);return}const s=this.boundaryPath();if(s.length===0)return;let a=s;if(s.length>1){const o=s[0],c=s[s.length-1];o.x===c.x&&o.y===c.y&&(o.z||0)===(c.z||0)&&(a=s.slice(0,-1))}if(t===P.EndPoint){r.push(...a);return}us(a,!0,t,e,r)}subWorldDraw(t){const e=this.boundaryPath();return this._image&&this.isImageShown?t.image(this._image,{boundary:e,roation:this._rotation}):Ed(t,e)}transformBy(t){const e=this._width*this._scale.x,n=this._height*this._scale.y,r=new x(e*Math.cos(this._rotation),e*Math.sin(this._rotation),0),s=new x(-n*Math.sin(this._rotation),n*Math.cos(this._rotation),0),a=this._position.clone(),o=this._position.clone().add(r),c=this._position.clone().add(s);a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x(o).sub(a),h=new x(c).sub(a);return this._position.copy(a),this._rotation=Math.atan2(l.y,l.x),this._width=l.length(),this._height=h.length(),this._scale.set(1,1),this}moveUnclippedGripAt(t,e){const n=this._position.x,r=this._position.y,s=this._width,a=this._height;switch(t){case 0:this._position.add(e);break;case 1:{const o=n,c=r+a,l=n+s+e.x,h=r+e.y;this._position.x=o,this._position.y=h,this._width=l-o,this._height=c-h;break}case 2:{const o=n+s+e.x,c=r+a+e.y;this._width=o-n,this._height=c-r;break}case 3:{const o=n+s,c=r,l=n+e.x,h=r+a+e.y;this._position.x=l,this._position.y=c,this._width=o-l,this._height=h-c;break}}}moveClippedBoundaryGripAt(t,e){if(t<0||t>=this._clipBoundary.length)return;const n=this._width,r=this._height,s=new wt;s.setFromPoints(this._clipBoundary);const a=new L;a.setX(this._position.x-s.min.x*n),a.setY(this._position.y-s.min.y*r);const o=this._clipBoundary[t],c=o.x*n+a.x+e.x,l=o.y*r+a.y+e.y;o.x=(c-a.x)/n,o.y=(l-a.y)/r}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,n=this._height,r=new wt;r.setFromPoints(this._clipBoundary);const s=new L;s.setX(this._position.x-r.min.x*e),s.setY(this._position.y-r.min.y*n),this._clipBoundary.forEach(a=>{const o=a.x*e+s.x,c=a.y*n+s.y;t.push(new b(o,c,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){$c.copy(t[1]);for(let e=1;e<4;e++)Hi.copy(t[e]),Hi.rotateAround($c,this._rotation),t[e].setX(Hi.x),t[e].setY(Hi.y)}t.push(t[0])}return t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImage"),t.writeInt32(90,this.classVersion),t.writePoint3d(10,this.position);const e=this.width*this.scale.x,n=this.height*this.scale.y,r=this._imageSize.x>0&&this._imageSize.y>0?this._imageSize:{x:e,y:n},s=r.x>0?e/r.x:e,a=r.y>0?n/r.y:n,o=Math.cos(this._rotation),c=Math.sin(this._rotation);t.writePoint3d(11,{x:s*o,y:s*c,z:0}),t.writePoint3d(12,{x:-a*c,y:a*o,z:0}),t.writePoint2d(13,r),t.writeObjectId(340,this.imageDefId);const l=(this.isImageShown?1:0)|(this.isShownClipped?4:0)|(this.isImageTransparent?8:0);if(t.writeInt16(70,l),t.writeInt16(280,this.isClipped?1:0),t.writeInt16(281,this.brightness),t.writeInt16(282,this.contrast),t.writeInt16(283,this.fade),t.writeInt16(71,this.clipBoundaryType),this.isClipped){t.writeInt16(91,this.clipBoundary.length);for(const h of this.clipBoundary)t.writePoint2d(14,h)}return t.writeInt16(290,this.clipMode),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRasterImage");let e=this.position.x,n=this.position.y,r=this.position.z,s=1,a=0,o=0,c=0,l=1,h=0,u=this.imageSize.x,d=this.imageSize.y;const g=[];let f=null;const p=()=>{f&&(g.push(new L(f.x,f.y)),f=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const m=t.readItem();if(!m)break;const y=Number(m.code),_=Number(m.value);switch(y){case 10:e=_;break;case 20:n=_;break;case 30:r=_;break;case 11:s=_;break;case 21:a=_;break;case 31:o=_;break;case 12:c=_;break;case 22:l=_;break;case 32:h=_;break;case 13:u=_;break;case 23:d=_;break;case 14:p(),f={x:_,y:0};break;case 24:f&&(f.y=_);break;case 70:{this.isImageShown=(_&3)!==0,this.isShownClipped=(_&4)!==0,this.isImageTransparent=(_&8)!==0;break}case 71:this.clipBoundaryType=_;break;case 90:this.classVersion=_;break;case 91:break;case 280:this.isClipped=_!==0;break;case 281:this.brightness=_;break;case 282:this.contrast=_;break;case 283:this.fade=_;break;case 290:this.clipMode=_;break;case 340:this.imageDefId=String(m.value);break}}return p(),this.applyRasterImageDxfIn(e,n,r,s,a,o,c,l,h,u,d,g),this}applyRasterImageDxfIn(t,e,n,r,s,a,o,c,l,h,u,d){this.position.copy({x:t,y:e,z:n}),this.imageSize.copy({x:h,y:u});const g=Math.hypot(r,s,a),f=Math.hypot(o,c,l);this.width=g*(h||1),this.height=f*(u||1),this.rotation=Math.atan2(s,r),d.length>0&&(this.clipBoundary=d)}};Co.typeName="RasterImage";let pi=Co;const $c=new L,Hi=new L,qr=class qr extends At{get dxfTypeName(){return"RAY"}constructor(){super(),this._basePoint=new b,this._unitDir=new x}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 area(){return 0}get geometricExtents(){const t=new z;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Tt(this._basePoint,t),extent:"ray"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return de(t,e,this.basePoint),this}subGetOsnapPoints(t,e,n,r){const s=this.basePoint;if(t===P.EndPoint){r.push(s);return}const a=this.unitDir.clone();if(a.lengthSq()===0)return;a.normalize();const o=new Tt(s,s.clone().add(a));switch(t){case P.Nearest:{const c=o.project(e),h=new x(c).sub(s).dot(a);r.push(h<0?s:c);break}case P.Perpendicular:r.push(o.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRay"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRay");let e=this.basePoint.x,n=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,a=this.unitDir.y,o=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 11:s=h;break;case 21:a=h;break;case 31:o=h;break}}return this.basePoint=new b(e,n,r),this.unitDir=new x(s,a,o),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,n=this.unitDir,r=Math.hypot(n.x,n.y);return r<=1e-9||(n.x*(t.y-e.y)-n.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=$l(this.basePoint,this.unitDir,t);if(!e)return null;const n=new qr;return n.basePoint=e,n.unitDir=this.unitDir.clone(),n}};qr.typeName="Ray";let Pr=qr;const To=class To extends q{get dxfTypeName(){return"SHAPE"}constructor(){super(),this._position=new b,this._size=1,this._name="",this._rotation=0,this._widthFactor=1,this._oblique=0,this._thickness=0,this._normal=new x(0,0,1),this._shapeNumber=0,this._styleName=""}get position(){return this._position}set position(t){this._position.copy(t)}get size(){return this._size}set size(t){this._size=t}get name(){return this._name}set name(t){this._name=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get shapeNumber(){return this._shapeNumber}set shapeNumber(t){this._shapeNumber=t}get styleId(){var e,n,r;const t=(r=(n=(e=this.database)==null?void 0:e.tables)==null?void 0:n.textStyleTable)==null?void 0:r.resolveAt(this._styleName);return(t==null?void 0:t.objectId)??""}set styleId(t){var n,r,s;const e=(s=(r=(n=this.database)==null?void 0:n.tables)==null?void 0:r.textStyleTable)==null?void 0:s.getIdAt(t);e&&(this._styleName=e.name)}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get isPlanar(){return!0}get geometricExtents(){const t=Math.abs(this._size)/2,e=new z;return e.expandByPoint(this._position),t>0&&(e.expandByPoint(new b(this._position.x-t,this._position.y-t,this._position.z)),e.expandByPoint(new b(this._position.x+t,this._position.y+t,this._position.z))),e}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return de(t,e,this._position),this}subGetOsnapPoints(t,e,n,r){t===P.Insertion&&r.push(this._position)}transformBy(t){const e=new D().setFromExtrusionDirection(this._normal),n=new D().makeRotationZ(this._rotation),r=new D().multiplyMatrices(e,n),s=this._position.clone(),a=new b(this._widthFactor,0,0).applyMatrix4(r).add(s),o=new b(0,1,0).applyMatrix4(r).add(s),c=new b(0,0,1).applyMatrix4(r).add(s);s.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new x(a).sub(s),h=new x(o).sub(s),u=new x(c).sub(s);let d=new x().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new D().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f),m=h.length(),y=l.length();this._position.copy(s),this._normal.copy(d),y>0&&(this._rotation=Math.atan2(p.y,p.x)),m>0&&(this._size*=m,y>0&&(this._widthFactor*=y/m));const _=u.length();return _>0&&(this._thickness*=_),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"shape",properties:[{name:"name",type:"string",editable:!0,accessor:{get:()=>this.name,set:t=>{this.name=t}}},{name:"size",type:"float",editable:!0,accessor:{get:()=>this.size,set:t=>{this.size=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}},{name:"shapeNumber",type:"int",editable:!0,accessor:{get:()=>this.shapeNumber,set:t=>{this.shapeNumber=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t,e){const n=this.getTextStyle(),r=n?{...n,widthFactor:this.widthFactor,obliqueAngle:this.oblique*180/Math.PI}:void 0,s={...this.renderGlyphIdentity(),size:this.size,position:this._position,rotation:this._rotation,directionVector:this._normal,widthFactor:this.widthFactor};return t.shape(s,r,e)}renderGlyphIdentity(){const t=this._name.trim(),e=Number(t);return t!==""&&Number.isInteger(e)&&e!==0&&String(e)===t?{shapeNumber:e}:{name:t||void 0,shapeNumber:this._shapeNumber!==0?this._shapeNumber:void 0}}getTextStyle(){const t=this.styleName.trim();if(!t)return;const e=this.database.tables.textStyleTable.resolveAt(t);return e==null?void 0:e.textStyle}get dxfShapeIdentity(){const t=this._name.trim();return t||(this._shapeNumber!==0?String(this._shapeNumber):"")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbShape"),t.writePoint3d(10,this.position),t.writeDouble(40,this.size);const e=this.dxfShapeIdentity;return e&&t.writeString(2,e),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeDouble(39,this.thickness),this._styleName&&t.writeString(3,this._styleName),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbShape");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.normal.x,a=this.normal.y,o=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 2:{const u=String(c.value).trim(),d=Number(u);u!==""&&Number.isInteger(d)&&d!==0&&String(d)===u?(this.shapeNumber=d,this.name=""):this.name=u;break}case 3:this.styleName=String(c.value);break;case 39:this.thickness=h;break;case 40:this.size=h;break;case 41:this.widthFactor=h;break;case 50:this.rotation=C.degToRad(h);break;case 51:this.oblique=C.degToRad(h);break;case 210:s=h;break;case 220:a=h;break;case 230:o=h;break}}return this.position={x:e,y:n,z:r},this.normal={x:s,y:a,z:o},this}};To.typeName="Shape";let kr=To;const gn=class gn extends At{constructor(){super(),this._normal=new x(0,0,1),this._elevation=0,this._thickness=0,this._vertices=[new b,new b,new b,new b]}get dxfTypeName(){return"TRACE"}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get area(){return new Q(gn.boundaryPointsFromVertices(this._vertices),!0).area}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(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 z().setFromPoints(this._vertices)}subGetIntersectCurves(){const t=this._vertices[0],e=this._vertices[1],n=this._vertices[2],r=this._vertices[3];return Ft([t,e,r,n],!0)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return On(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){const s=[this._vertices[0],this._vertices[1],this._vertices[3],this._vertices[2]];us(s,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._elevation=this._vertices[0].z,this}get directBatchPrimitive(){return"area"}subWorldDraw(t){const e=new Q(gn.boundaryPointsFromVertices(this._vertices),!0),n=new Kt;n.add(e);const r=t.subEntityTraits;return r.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(n)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTrace"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,Rt(this.getPointAt(0),this.normal)),t.writePoint3d(11,Rt(this.getPointAt(1),this.normal)),t.writePoint3d(12,Rt(this.getPointAt(2),this.normal)),t.writePoint3d(13,Rt(this.getPointAt(3),this.normal)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbTrace");const e=[{x:this.getPointAt(0).x,y:this.getPointAt(0).y,z:this.getPointAt(0).z},{x:this.getPointAt(1).x,y:this.getPointAt(1).y,z:this.getPointAt(1).z},{x:this.getPointAt(2).x,y:this.getPointAt(2).y,z:this.getPointAt(2).z},{x:this.getPointAt(3).x,y:this.getPointAt(3).y,z:this.getPointAt(3).z}];let n=this.normal.x,r=this.normal.y,s=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const o=t.readItem();if(!o)break;const c=Number(o.code),l=Number(o.value);switch(c){case 10:case 11:case 12:case 13:e[c-10].x=l;break;case 20:case 21:case 22:case 23:e[c-20].y=l;break;case 30:case 31:case 32:case 33:e[c-30].z=l;break;case 39:this.thickness=l;break;case 210:n=l;break;case 220:r=l;break;case 230:s=l;break}}const a=new x(n,r,s);return a.lengthSq()>0&&this.normal.copy(a.normalize()),e.forEach((o,c)=>this.setPointAt(c,_t(o,this.normal))),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectBoundary2d();return e.length<2?1:Lt.from2dPoints(e,!0).getOffsetSideAtPoint(t)}createOffsetCurve(t){return xs(this.collectBoundary2d(),!0,t)}collectBoundary2d(){return gn.boundaryPointsFromVertices(this._vertices)}static boundaryPointsFromVertices(t){const e=t[0],n=t[1],r=t[2],s=t[3];return[new L(e.x,e.y),new L(n.x,n.y),new L(s.x,s.y),new L(r.x,r.y)]}};gn.typeName="Trace";let mi=gn;const Mo=class Mo extends mi{get dxfTypeName(){return"SOLID"}};Mo.typeName="Solid";let Sr=Mo;function sb(i){return i&2048?"SqrtChord":i&1024?"Chord":"Uniform"}function qc(i,t){try{return new yi(i.controlPoints,i.knots,ab(i.weights,i.controlPoints.length),i.degree,t)}catch{return null}}function ab(i,t){if(!(!i||i.length!==t))return i}const fn=class fn extends At{constructor(t,e,n,r,s){super(),this._knotTolerance=1e-6,this._controlTolerance=1e-6,this._fitTolerance=1e-9,this._normal=new x(0,0,1),this.rebuild(t,e,n,r,s)}get dxfTypeName(){return"SPLINE"}static fromControlPoints(t,e,n,r,s){const a=Ut.fromControlPoints(t,e,n,r,s);return a?qc(a,s):null}static fromFitPoints(t,e,n,r,s,a){const o=Ut.fromFitPoints(t,e,n,r,s,a);return o?qc(o,r):null}static fromDwgSpline(t){const e=!!(t.flag&1),n=sb(t.flag);if(t.numberOfControlPoints>0&&t.numberOfKnots>0){const r=fn.fromControlPoints(t.controlPoints,t.knots,t.weights,t.degree,e);if(r)return r}return t.numberOfFitPoints>0?fn.fromFitPoints(t.fitPoints,n,t.degree,e,t.startTangent,t.endTangent):null}rebuild(t,e,n,r,s){const a=+(t!==void 0)+ +(e!==void 0)+ +(n!==void 0)+ +(r!==void 0)+ +(s!==void 0);if(a<2||a>5)throw Et.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Ut(t,e,n,r):this._geo=new Ut(t,e,n,r,s)}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"spline",spline:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}get knotTolerance(){return this._knotTolerance}set knotTolerance(t){this._knotTolerance=t}get controlTolerance(){return this._controlTolerance}set controlTolerance(t){this._controlTolerance=t}get fitTolerance(){return this._fitTolerance}set fitTolerance(t){this._fitTolerance=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}subGetGripPoints(){return this._geo.getGripPoints()}subMoveGripPointsAt(t,e){return this._geo.moveGripPointsAt(t,e),this}subGetOsnapPoints(t,e,n,r){switch(t){case P.EndPoint:r.push(this._geo.startPoint),r.push(this._geo.endPoint);break;case P.Node:{const s=new Set;for(const a of this._geo.knots)s.has(a)||(s.add(a),r.push(this._geo.evaluateAt(a)));break}case P.Nearest:r.push(this._geo.nearestPoint(e));break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this._geo.getPoints(100);return t.lines(e)}dxfOutFields(t){var n;const e=this._geo;super.dxfOutFields(t),t.writeSubclassMarker("AcDbSpline"),t.writeInt16(70,this.closed?1:0),t.writeInt16(71,e.degree),t.writeInt16(72,e.knots.length),t.writeInt16(73,e.controlPoints.length),t.writeInt16(74,((n=e.fitPoints)==null?void 0:n.length)??0),t.writeDouble(42,this.knotTolerance),t.writeDouble(43,this.controlTolerance),t.writeDouble(44,this.fitTolerance);for(const r of e.knots)t.writeDouble(40,r);for(const r of e.weights)t.writeDouble(41,r);for(const r of e.controlPoints)t.writePoint3d(10,r);for(const r of e.fitPoints??[])t.writePoint3d(11,r);return t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSpline");let e=this.closed?1:0,n=3,r=0,s=0,a=0;const o=[],c=[],l=[],h=[];let u=null,d=null,g=this.knotTolerance,f=this.controlTolerance,p=this.fitTolerance,m=this.normal.x,y=this.normal.y,_=this.normal.z,v=null,w=null,A=null,E=null;const I=()=>{v&&(l.push(v),v=null)},M=()=>{w&&(h.push(w),w=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const R=t.readItem();if(!R)break;const Y=Number(R.code),O=Number(R.value);switch(Y){case 70:e=O;break;case 71:n=O;break;case 72:r=O;break;case 73:s=O;break;case 74:a=O;break;case 42:g=O;break;case 43:f=O;break;case 44:p=O;break;case 40:o.push(O);break;case 41:c.push(O);break;case 10:I(),v={x:O,y:0,z:0};break;case 20:v&&(v.y=O);break;case 30:v&&(v.z=O);break;case 11:M(),w={x:O,y:0,z:0};break;case 21:w&&(w.y=O);break;case 31:w&&(w.z=O);break;case 12:A={x:O,y:0,z:0};break;case 22:A&&(A.y=O);break;case 32:A&&(A.z=O,u=A,A=null);break;case 13:E={x:O,y:0,z:0};break;case 23:E&&(E.y=O);break;case 33:E&&(E.z=O,d=E,E=null);break;case 210:m=O;break;case 220:y=O;break;case 230:_=O;break}}I(),M(),this.knotTolerance=g,this.controlTolerance=f,this.fitTolerance=p;const T=new x(m,y,_);return T.lengthSq()>0&&this.normal.copy(T.normalize()),this.applyDxfInSpline({flag:e,degree:n,numberOfControlPoints:s||l.length,numberOfKnots:r||o.length,numberOfFitPoints:a||h.length,controlPoints:l,knots:o,weights:c.length>0?c:void 0,fitPoints:h,startTangent:u,endTangent:d}),this}applyDxfInSpline(t){const e=fn.fromDwgSpline(t);e&&(this._geo=e._geo,this.closed=e.closed)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d(1);return e.length<2?1:Lt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const{points:e,tangents:n}=this._geo.getOffsetSamplePath2d(t),r=Ff(e,this.closed,t,n);return r?Lt.fromGePolyline(r):null}collectPath2d(t){return this._geo.getOffsetSamplePath2d(t).points}};fn.typeName="Spline";let yi=fn;function ob(i){return i==null?xt.latest.capabilities:typeof i=="object"&&"supportsHandles"in i?i:i instanceof xt?i.capabilities:new xt(i).capabilities}const cb=new x,Oo=class Oo extends le{get dxfTypeName(){return"ACAD_TABLE"}constructor(t,e,n){super(t??""),this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._numColumns=n,this._numRows=e,this._columnWidth=new Array(n),this._rowHeight=new Array(e),this._cells=new Array(e*n)}get blockTableRecord(){const t=this.blockName;if(t){const n=this.database.tables.blockTable.getAt(t);if(n)return n}const e=this.owningBlockRecordId;if(e)return this.database.tables.blockTable.getIdAt(e)}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}resizeGrid(t,e){const n=Math.max(0,t),r=Math.max(0,e);this._numRows=n,this._numColumns=r,this._rowHeight=new Array(n).fill(0),this._columnWidth=new Array(r).fill(0),this._cells=new Array(n*r)}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,n){var s;const r=t*this._numColumns+e;return(s=this._cells[r])==null?void 0:s.text}setTextString(t,e,n){const r=t*this._numColumns+e;if(!this._cells[r]){this._cells[r]={text:n,attachmentPoint:this._attachmentPoint,cellType:1,textHeight:0};return}this._cells[r].text=n}isEmpty(t,e){var r;const n=t*this._numColumns+e;return!((r=this._cells[n])!=null&&r.text)}get geometricExtents(){let t;try{t=this.blockTableRecord}catch{t=void 0}if(t&&t.newIterator().count>0){const o=new z;for(const c of t.newIterator())o.union(c.geometricExtents);return o.applyMatrix4(this.blockTransform),o}const e=this._columnWidth.reduce((o,c)=>o+c,0),n=this._rowHeight.reduce((o,c)=>o+c,0),r=new z;if(e===0&&n===0)return r.expandByPoint(this.position),r;const s=new xn;s.setFromAxisAngle(x.Z_AXIS,this.rotation),en.compose(this.position,s,this.scaleFactors);const a=[new b(0,0,0),new b(e,0,0),new b(e,-n,0),new b(0,-n,0)];for(const o of a)r.expandByPoint(o.applyMatrix4(en));return r}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"table",properties:[{name:"numRows",type:"string",editable:!0,accessor:{get:()=>this.numRows,set:t=>{this.numRows=t}}},{name:"numColumns",type:"float",editable:!0,accessor:{get:()=>this.numColumns,set:t=>{this.numColumns=t}}},{name:"tableWidth",type:"float",editable:!1,accessor:{get:()=>this._columnWidth.reduce((t,e)=>t+e,0)}},{name:"tableHeight",type:"float",editable:!1,accessor:{get:()=>this._rowHeight.reduce((t,e)=>t+e,0)}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t){const e=this.blockTableRecord;if(e&&e.newIterator().count>0){const g=this.drawAnonymousTableBlock(t,e);if(g)return g}let n=0,r=0;const s=new Uint16Array(this.numColumns*this.numRows*8),a=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let o=0;for(let g=0;g<=this.numRows;g++){n-=g>0?this.rowHeight(g-1):0,r=0;for(let f=0;f<=this.numColumns;f++)r+=f>0?this.columnWidth(f-1):0,a[o++]=r,a[o++]=n,a[o++]=0}const c=[],l=new Array(this.numRows*this.numColumns).fill(!1);r=0,o=0;let h=0;for(let g=0;g<this.numColumns;g++){r+=g>0?this.columnWidth(g-1):0,n=0;for(let f=0;f<this.numRows;f++){n+=f>0?this.rowHeight(f-1):0;const p=this.cell(f*this.numColumns+g);if(h=f*this.numColumns+g,p&&!l[h]){const m=p.borderWidth??1,y=p.borderHeight??1;this.fillVisited(l,h,this.numColumns,m,y),s[o++]=g+f*(this.numColumns+1),s[o++]=g+f*(this.numColumns+1)+m;const _=a[s[o-1]*3]-r,v=g+(f+y)*(this.numColumns+1)+m;g+m==this.numColumns&&(s[o++]=g+f*(this.numColumns+1)+m,s[o++]=v);const w=-a[v*3+1]-n;if(f+y==this.numRows&&(s[o++]=g+(f+y)*(this.numColumns+1)+y,s[o++]=g+(f+y)*(this.numColumns+1)),s[o++]=g+(f+y)*(this.numColumns+1),s[o++]=g+f*(this.numColumns+1),p.text){const A=p.attachmentPoint||this.attachmentPoint||exports.AcGiMTextAttachmentPoint.MiddleCenter,E=this.getTableTextOffset(A,_,w),I={text:p.text,height:this.getCellTextHeight(p,w),width:_,position:cb.set(r,-n,0).clone().add(E),rotation:this.rotation,attachmentPoint:A},M=this.getTextStyle(p);c.push(t.mtext(I,M))}}}}c.push(t.lineSegments(a,3,s));const u=t.group(c),d=new xn;return d.setFromAxisAngle(x.Z_AXIS,this.rotation),en.compose(this.position,d,this.scaleFactors),u.applyMatrix(en),u}drawAnonymousTableBlock(t,e){const n=[],r=e.newIterator();for(const o of r){let c;if(o.color.isByBlock){Kc.copy(o.color);const l=this.resolvedColor;l.isForeground?o.color.setForeground():l.RGB!=null&&o.color.setRGBValue(l.RGB),c=o.worldDraw(t),o.color.copy(Kc)}else c=o.worldDraw(t);c&&(c.objectId=this.objectId,c.ownerId=this.ownerId,c.layerName=this.layer,c.visible=this.visibility&&o.visibility,n.push(c))}const s=t.group(n);s.applyMatrix(this.blockTransform);const a=this.normal;return a&&(a.x!==0||a.y!==0||a.z!==1)&&(en.setFromExtrusionDirection(a),s.applyMatrix(en)),s}fillVisited(t,e,n,r,s){if(s==1&&r==1)t[e]=!0;else for(let a=0;a<r;++a)for(let o=0;o<s;++o)t[e+a+o*n]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable.resolveAt(t.textStyle);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}getTableTextOffset(t,e,n){const r=new x;switch(t){case 1:break;case 2:r.setX(e/2);break;case 3:r.setX(e);break;case 4:r.setY(-n/2);break;case 5:r.set(e/2,-n/2,0);break;case 6:r.set(e,-n/2,0);break;case 7:r.setY(-n);break;case 8:r.set(e/2,-n,0);break;case 9:r.set(e,-n,0);break}return r}getCellTextHeight(t,e){return t.textHeight&&t.textHeight>0?t.textHeight:Math.max(e/2,1)}dxfOutFields(t){var s,a,o,c,l,h,u;super.dxfOutFields(t),t.writeSubclassMarker("AcDbTable");const e=t.version??((s=t.database)==null?void 0:s.version)??((a=this.database)==null?void 0:a.version),n=ob(e).supportsUtf8CodePage;t.writeInt16(280,this.tableDataVersion),t.writeObjectId(342,this.tableStyleId),t.writeObjectId(343,this.owningBlockRecordId),t.writeVector3d(11,this.horizontalDirection),t.writeUInt32(90,this.tableValueFlag),t.writeUInt32(93,this.tableOverrideFlag),t.writeUInt32(94,this.borderColorOverrideFlag),t.writeUInt32(95,this.borderLineweightOverrideFlag),t.writeUInt32(96,this.borderVisibilityOverrideFlag),t.writeInt16(71,this.attachmentPoint),t.writeInt32(91,this.numRows),t.writeInt32(92,this.numColumns);for(let d=0;d<this.numRows;++d)t.writeDouble(141,this.rowHeight(d));for(let d=0;d<this.numColumns;++d)t.writeDouble(142,this.columnWidth(d));const r=this._cells.length>0?this._cells.length:this.numRows*this.numColumns;for(let d=0;d<r;d++){const g=this._cells[d],f=(g==null?void 0:g.cellType)??(g!=null&&g.blockTableRecordId?2:1);if(t.writeInt16(171,f),t.writeInt16(172,(g==null?void 0:g.flagValue)??0),t.writeInt16(173,(g==null?void 0:g.mergedValue)??0),t.writeBoolean(174,g==null?void 0:g.autoFit),t.writeInt16(175,g==null?void 0:g.borderWidth),t.writeInt16(176,g==null?void 0:g.borderHeight),(g==null?void 0:g.overrideFlag)!=null&&(n?t.writeInt32(91,g.overrideFlag):t.writeInt16(177,g.overrideFlag)),t.writeInt16(178,g==null?void 0:g.virtualEdgeFlag),t.writeAngle(145,g==null?void 0:g.rotation),n&&t.writeInt16(92,g==null?void 0:g.extendedCellFlags),f===1)g!=null&&g.fieldObjetId?t.writeObjectId(344,g.fieldObjetId):this.writeCellText(t,(g==null?void 0:g.text)??"",n,g==null?void 0:g.cellValueBlockBegin);else if(f===2){if(t.writeObjectId(340,g==null?void 0:g.blockTableRecordId),t.writeDouble(144,g==null?void 0:g.blockScale),t.writeInt16(179,g==null?void 0:g.blockAttrNum),(o=g==null?void 0:g.attrDefineId)!=null&&o.length)for(const p of g.attrDefineId)t.writeObjectId(331,p);if((g==null?void 0:g.attrText)!=null)if(Array.isArray(g.attrText))for(const p of g.attrText)t.writeString(300,p);else t.writeString(300,g.attrText)}g!=null&&g.textStyle&&t.writeString(7,g.textStyle),(g==null?void 0:g.textHeight)!=null&&t.writeDouble(140,g.textHeight),(g==null?void 0:g.attachmentPoint)!=null&&t.writeInt16(170,g.attachmentPoint),(g==null?void 0:g.topBorderVisibility)!=null&&t.writeInt16(289,g.topBorderVisibility?1:0),(g==null?void 0:g.rightBorderVisibility)!=null&&t.writeInt16(285,g.rightBorderVisibility?1:0),(g==null?void 0:g.bottomBorderVisibility)!=null&&t.writeInt16(286,g.bottomBorderVisibility?1:0),(g==null?void 0:g.leftBorderVisibility)!=null&&t.writeInt16(288,g.leftBorderVisibility?1:0)}if(t.writeInt16(70,this.flowDirection),t.writeDouble(40,this.horizontalCellMargin),t.writeDouble(41,this.verticalCellMargin),this.suppressTitle!=null&&t.writeInt16(280,this.suppressTitle?1:0),this.suppressHeader!=null&&t.writeInt16(281,this.suppressHeader?1:0),(c=this.cellTypeOverrides)!=null&&c.length)for(const d of this.cellTypeOverrides){t.writeString(7,d.textStyle),t.writeDouble(140,d.textHeight),t.writeInt16(170,d.alignment),t.writeInt16(63,d.backgroundColor),t.writeInt16(64,d.contentColor),d.backgroundColorEnabled!=null&&t.writeInt16(283,d.backgroundColorEnabled?1:0);const g=d.borderLineweights;g&&(t.writeInt16(274,g.top),t.writeInt16(275,g.right),t.writeInt16(276,g.bottom),t.writeInt16(277,g.left),t.writeInt16(278,g.insideHorizontal),t.writeInt16(279,g.insideVertical));const f=d.borderVisibility;f&&(t.writeInt16(284,f.top?1:0),t.writeInt16(285,f.right?1:0),t.writeInt16(286,f.bottom?1:0),t.writeInt16(287,f.left?1:0),t.writeInt16(288,f.insideHorizontal?1:0),t.writeInt16(289,f.insideVertical?1:0))}if(this.tableBorderColors&&(t.writeInt16(63,this.tableBorderColors.left),t.writeInt16(64,this.tableBorderColors.top),t.writeInt16(65,this.tableBorderColors.insideHorizontal),t.writeInt16(66,this.tableBorderColors.bottom),t.writeInt16(68,this.tableBorderColors.insideVertical),t.writeInt16(69,this.tableBorderColors.right)),(l=this.rowDataTypes)!=null&&l.length)for(const d of this.rowDataTypes)t.writeInt16(97,d);if((h=this.rowUnitTypes)!=null&&h.length)for(const d of this.rowUnitTypes)t.writeInt16(98,d);if((u=this.rowFormats)!=null&&u.length)for(const d of this.rowFormats)t.writeString(4,d);return this}dxfInFields(t){var p,m,y;super.dxfInFields(t),t.atSubclassData("AcDbTable");let e=this._numRows,n=this._numColumns,r=!1;const s=[],a=[];let o=0,c=null,l=[],h=((p=this.horizontalDirection)==null?void 0:p.x)??1,u=((m=this.horizontalDirection)==null?void 0:m.y)??0,d=((y=this.horizontalDirection)==null?void 0:y.z)??0;const g=()=>{e>0&&n>0&&(!r||this._numRows!==e||this._numColumns!==n)&&(this.resizeGrid(e,n),r=!0)},f=()=>{c&&(l.length>0&&(c.text=l.join(""),l=[]),g(),o<this._cells.length&&this.setCell(o,c),o+=1,c=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const _=t.readItem();if(!_)break;const v=Number(_.code),w=Number(_.value);switch(v){case 280:c||(this.tableDataVersion=w);break;case 342:this.tableStyleId=String(_.value);break;case 343:this.owningBlockRecordId=String(_.value);break;case 11:h=w;break;case 21:u=w;break;case 31:d=w;break;case 90:c||(this.tableValueFlag=w);break;case 93:c||(this.tableOverrideFlag=w);break;case 94:c||(this.borderColorOverrideFlag=w);break;case 95:c||(this.borderLineweightOverrideFlag=w);break;case 96:c||(this.borderVisibilityOverrideFlag=w);break;case 71:this.attachmentPoint=w;break;case 170:c?c.attachmentPoint=w:this.attachmentPoint=w;break;case 91:c?c&&(c.overrideFlag=w):(e=w,g());break;case 92:c?c&&(c.extendedCellFlags=w):(n=w,g());break;case 141:s.push(w);break;case 142:a.push(w);break;case 171:f(),c={text:"",attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,cellType:w,textHeight:0};break;case 172:c&&(c.flagValue=w);break;case 173:c&&(c.mergedValue=w);break;case 174:c&&(c.autoFit=!!_.value||w!==0);break;case 175:c&&(c.borderWidth=w);break;case 176:c&&(c.borderHeight=w);break;case 177:c&&(c.overrideFlag=w);break;case 178:c&&(c.virtualEdgeFlag=w);break;case 145:c&&(c.rotation=w*Math.PI/180);break;case 1:case 2:case 302:case 303:l.push(String(_.value));break;case 300:if(c){const A=c.attrText;Array.isArray(A)?A.push(String(_.value)):A!=null&&A!==""?c.attrText=[String(A),String(_.value)]:c.attrText=String(_.value)}break;case 301:c&&(c.cellValueBlockBegin=String(_.value));break;case 304:break;case 7:c&&(c.textStyle=String(_.value));break;case 140:c&&(c.textHeight=w);break;case 340:c&&(c.blockTableRecordId=String(_.value));break;case 344:case 345:c&&(c.fieldObjetId=String(_.value));break;case 144:case 146:c&&(c.blockScale=w);break;case 179:c&&(c.blockAttrNum=w);break;case 70:this.flowDirection=w;break;case 40:this.horizontalCellMargin=w;break;case 41:this.verticalCellMargin=w;break;case 281:this.suppressHeader=w!==0;break}}return f(),this.horizontalDirection=new x(h,u,d),s.forEach((_,v)=>this.setRowHeight(v,_)),a.forEach((_,v)=>this.setColumnWidth(v,_)),this}writeCellText(t,e,n,r){if(!n){if(e.length<=250){t.writeString(1,e);return}const o=Math.ceil(e.length/250);for(let c=0;c<o;c++){const l=c*250,h=l+250,u=e.slice(l,h);c===o-1?t.writeString(1,u):t.writeString(2,u)}return}if(t.writeString(301,r??"CELL_VALUE"),e.length<=250){t.writeString(302,e),t.writeString(304,"ACVALUE_END");return}const a=Math.ceil(e.length/250);for(let o=0;o<a;o++){const c=o*250,l=c+250,h=e.slice(c,l);o===a-1?t.writeString(302,h):t.writeString(303,h)}t.writeString(304,"ACVALUE_END")}};Oo.typeName="Table";let Ir=Oo;const en=new D,Kc=new j,No=class No extends q{constructor(){super(),this._snapBase=new b,this._snapSpacing=new b(1,1,0),this._gridSpacing=new b(1,1,0),this._perspectiveLensLength=50,this._frontClipZ=0,this._backClipZ=0,this._snapAngle=0,this._status=0,this._ucsPerViewport=0,this._circleZoomPercent=1e3,this._statusBitFlags=0,this._ucsOrigin=new b,this._ucsXAxis=new x(1,0,0),this._ucsYAxis=new x(0,1,0),this._elevation=0,this._frozenLayerIds=[],this._sheetName="",this._iconFlag=0,this._orthographicType=0,this._majorGridFrequency=0,this._ambientLightColorIndex=0,this._brightness=0,this._contrast=0,this._shadePlotMode=0,this._renderMode=0,this._defaultLightingType=0,this._isDefaultLighting=!1,this._clippingBoundaryId="",this._backgroundId="",this._shadePlotId="",this._ucsId="",this._ucsBaseId="",this._visualStyleId="",this._sunId="",this._ambientLightColorInstance=0,this._ambientLightColorName="",this._softPointers=[],this._centerPoint=new b,this._height=0,this._width=0,this._viewCenter=new b,this._viewTarget=new b,this._viewDirection=new x(0,0,1),this._viewTwistAngle=0,this._viewHeight=0,this._number=-1}get dxfTypeName(){return"VIEWPORT"}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 viewTarget(){return this._viewTarget}set viewTarget(t){this._viewTarget=t}get viewDirection(){return this._viewDirection}set viewDirection(t){this._viewDirection.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapSpacing(){return this._snapSpacing}set snapSpacing(t){this._snapSpacing.copy(t)}get gridSpacing(){return this._gridSpacing}set gridSpacing(t){this._gridSpacing.copy(t)}get perspectiveLensLength(){return this._perspectiveLensLength}set perspectiveLensLength(t){this._perspectiveLensLength=t}get frontClipZ(){return this._frontClipZ}set frontClipZ(t){this._frontClipZ=t}get backClipZ(){return this._backClipZ}set backClipZ(t){this._backClipZ=t}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get status(){return this._status}set status(t){this._status=t}get ucsPerViewport(){return this._ucsPerViewport}set ucsPerViewport(t){this._ucsPerViewport=t}get circleZoomPercent(){return this._circleZoomPercent}set circleZoomPercent(t){this._circleZoomPercent=t}get statusBitFlags(){return this._statusBitFlags}set statusBitFlags(t){this._statusBitFlags=t}get ucsOrigin(){return this._ucsOrigin}set ucsOrigin(t){this._ucsOrigin.copy(t)}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get frozenLayerIds(){return this._frozenLayerIds}set frozenLayerIds(t){this._frozenLayerIds=[...t]}get ucsXAxis(){return this._ucsXAxis}set ucsXAxis(t){this._ucsXAxis.copy(t)}get ucsYAxis(){return this._ucsYAxis}set ucsYAxis(t){this._ucsYAxis.copy(t)}get sheetName(){return this._sheetName}set sheetName(t){this._sheetName=t}get iconFlag(){return this._iconFlag}set iconFlag(t){this._iconFlag=t}get orthographicType(){return this._orthographicType}set orthographicType(t){this._orthographicType=t}get majorGridFrequency(){return this._majorGridFrequency}set majorGridFrequency(t){this._majorGridFrequency=t}get ambientLightColorIndex(){return this._ambientLightColorIndex}set ambientLightColorIndex(t){this._ambientLightColorIndex=t}get viewportBrightness(){return this._brightness}set viewportBrightness(t){this._brightness=t}get viewportContrast(){return this._contrast}set viewportContrast(t){this._contrast=t}get shadePlotMode(){return this._shadePlotMode}set shadePlotMode(t){this._shadePlotMode=t}get renderMode(){return this._renderMode}set renderMode(t){this._renderMode=t}get defaultLightingType(){return this._defaultLightingType}set defaultLightingType(t){this._defaultLightingType=t}get isDefaultLighting(){return this._isDefaultLighting}set isDefaultLighting(t){this._isDefaultLighting=t}get clippingBoundaryId(){return this._clippingBoundaryId}set clippingBoundaryId(t){this._clippingBoundaryId=t}get backgroundId(){return this._backgroundId}set backgroundId(t){this._backgroundId=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get ucsId(){return this._ucsId}set ucsId(t){this._ucsId=t}get ucsBaseId(){return this._ucsBaseId}set ucsBaseId(t){this._ucsBaseId=t}get visualStyleId(){return this._visualStyleId}set visualStyleId(t){this._visualStyleId=t}get sunId(){return this._sunId}set sunId(t){this._sunId=t}get ambientLightColorInstance(){return this._ambientLightColorInstance}set ambientLightColorInstance(t){this._ambientLightColorInstance=t}get ambientLightColorName(){return this._ambientLightColorName}set ambientLightColorName(t){this._ambientLightColorName=t}get softPointers(){return this._softPointers}set softPointers(t){this._softPointers=[...t]}get viewTwistAngle(){return this._viewTwistAngle}set viewTwistAngle(t){this._viewTwistAngle=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){const t=this._width/2,e=this._height/2,n=new z;return n.expandByPoint(new b(this._centerPoint.x-t,this._centerPoint.y-e,this._centerPoint.z)),n.expandByPoint(new b(this._centerPoint.x+t,this._centerPoint.y+e,this._centerPoint.z)),n}subGetIntersectCurves(){const t=this._width/2,e=this._height/2,n=this._centerPoint.z,r=[new b(this._centerPoint.x-t,this._centerPoint.y-e,n),new b(this._centerPoint.x+t,this._centerPoint.y-e,n),new b(this._centerPoint.x+t,this._centerPoint.y+e,n),new b(this._centerPoint.x-t,this._centerPoint.y+e,n)];return Ft(r,!0)}subGetGripPoints(){const t=new Array,e=this._width/2,n=this._height/2,r=this._centerPoint.z;return t.push(this._centerPoint),(e>0||n>0)&&t.push(new b(this._centerPoint.x-e,this._centerPoint.y-n,r),new b(this._centerPoint.x+e,this._centerPoint.y-n,r),new b(this._centerPoint.x+e,this._centerPoint.y+n,r),new b(this._centerPoint.x-e,this._centerPoint.y+n,r)),t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveGripAt(n,e)}),this}transformBy(t){const e=this._centerPoint.clone(),n=this._centerPoint.clone().add(new x(this._width,0,0)),r=this._centerPoint.clone().add(new x(0,this._height,0));e.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t);const s=new x(n).sub(e),a=new x(r).sub(e),o=this._height!==0?a.length()/this._height:1;return this._centerPoint.copy(e),this._width=s.length(),this._height=a.length(),this._viewHeight*=o,this}subWorldDraw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport();return t.group(this.createViewportRect(e,t))}}toGiViewport(){const t=new Sh;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.viewTarget=this.viewTarget,t.viewTwistAngle=this.viewTwistAngle,t}createViewportRect(t,e){const n=[];return n.push(e.lines([new b(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new b(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),n.push(e.lines([new b(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new b(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),n.push(e.lines([new b(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new b(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),n.push(e.lines([new b(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new b(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),n}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewport"),t.writePoint3d(10,this.centerPoint),t.writeDouble(40,this.height),t.writeDouble(41,this.width),t.writePoint3d(12,this.viewCenter),t.writePoint3d(13,this.snapBase),t.writePoint3d(14,this.snapSpacing),t.writePoint3d(15,this.gridSpacing),t.writeVector3d(16,this.viewDirection),t.writePoint3d(17,this.viewTarget),t.writeDouble(42,this.perspectiveLensLength),t.writeDouble(43,this.frontClipZ),t.writeDouble(44,this.backClipZ),t.writeDouble(45,this.viewHeight),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.viewTwistAngle),t.writeInt16(68,this.status),t.writeInt32(69,this.number),t.writeInt16(71,this.ucsPerViewport),t.writeInt16(72,this.circleZoomPercent),t.writeInt32(90,this.statusBitFlags);for(const e of this.frozenLayerIds)t.writeObjectId(331,e);t.writePoint3d(110,this.ucsOrigin),t.writeVector3d(111,this.ucsXAxis),t.writeVector3d(112,this.ucsYAxis),t.writeDouble(146,this.elevation),this.sheetName&&t.writeString(1,this.sheetName),t.writeInt16(61,this.majorGridFrequency),t.writeInt16(63,this.ambientLightColorIndex),t.writeInt16(74,this.iconFlag),t.writeInt16(79,this.orthographicType);for(const e of this.softPointers)t.writeObjectId(91,e);return t.writeDouble(141,this.viewportBrightness),t.writeDouble(142,this.viewportContrast),t.writeInt16(170,this.shadePlotMode),t.writeInt16(281,this.renderMode),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLighting?1:0),this.clippingBoundaryId&&t.writeObjectId(340,this.clippingBoundaryId),this.backgroundId&&t.writeObjectId(332,this.backgroundId),this.shadePlotId&&t.writeObjectId(333,this.shadePlotId),this.ucsId&&t.writeObjectId(345,this.ucsId),this.ucsBaseId&&t.writeObjectId(346,this.ucsBaseId),this.visualStyleId&&t.writeObjectId(348,this.visualStyleId),this.sunId&&t.writeObjectId(361,this.sunId),this.ambientLightColorInstance&&t.writeInt32(421,this.ambientLightColorInstance),this.ambientLightColorName&&t.writeString(431,this.ambientLightColorName),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbViewport");let e=this.centerPoint.x,n=this.centerPoint.y,r=this.centerPoint.z,s=this.viewCenter.x,a=this.viewCenter.y,o=this.viewCenter.z,c=this.viewTarget.x,l=this.viewTarget.y,h=this.viewTarget.z,u=this.viewDirection.x,d=this.viewDirection.y,g=this.viewDirection.z,f=this.snapBase.x,p=this.snapBase.y,m=this.snapBase.z,y=this.snapSpacing.x,_=this.snapSpacing.y,v=this.snapSpacing.z,w=this.gridSpacing.x,A=this.gridSpacing.y,E=this.gridSpacing.z,I=this.ucsOrigin.x,M=this.ucsOrigin.y,T=this.ucsOrigin.z,R=this.ucsXAxis.x,Y=this.ucsXAxis.y,O=this.ucsXAxis.z,Z=this.ucsYAxis.x,K=this.ucsYAxis.y,G=this.ucsYAxis.z;const J=[],S=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const H=t.readItem();if(!H)break;const ct=Number(H.code),N=Number(H.value);switch(ct){case 1:this.sheetName=String(H.value);break;case 10:e=N;break;case 20:n=N;break;case 30:r=N;break;case 12:s=N;break;case 22:a=N;break;case 32:o=N;break;case 13:f=N;break;case 23:p=N;break;case 33:m=N;break;case 14:y=N;break;case 24:_=N;break;case 34:v=N;break;case 15:w=N;break;case 25:A=N;break;case 35:E=N;break;case 16:u=N;break;case 26:d=N;break;case 36:g=N;break;case 17:c=N;break;case 27:l=N;break;case 37:h=N;break;case 40:this.height=N;break;case 41:this.width=N;break;case 42:this.perspectiveLensLength=N;break;case 43:this.frontClipZ=N;break;case 44:this.backClipZ=N;break;case 45:this.viewHeight=N;break;case 50:this.snapAngle=C.degToRad(N);break;case 51:this.viewTwistAngle=C.degToRad(N);break;case 61:this.majorGridFrequency=N;break;case 63:this.ambientLightColorIndex=N;break;case 68:this.status=N;break;case 69:this.number=N;break;case 71:this.ucsPerViewport=N;break;case 72:this.circleZoomPercent=N;break;case 74:this.iconFlag=N;break;case 79:this.orthographicType=N;break;case 90:this.statusBitFlags=N;break;case 91:case 335:case 343:case 344:S.push(String(H.value));break;case 110:I=N;break;case 120:M=N;break;case 130:T=N;break;case 111:R=N;break;case 121:Y=N;break;case 131:O=N;break;case 112:Z=N;break;case 122:K=N;break;case 132:G=N;break;case 141:this.viewportBrightness=N;break;case 142:this.viewportContrast=N;break;case 146:this.elevation=N;break;case 170:this.shadePlotMode=N;break;case 281:this.renderMode=N;break;case 282:this.defaultLightingType=N;break;case 292:this.isDefaultLighting=N!==0;break;case 331:J.push(String(H.value));break;case 332:this.backgroundId=String(H.value);break;case 333:this.shadePlotId=String(H.value);break;case 340:this.clippingBoundaryId=String(H.value);break;case 345:this.ucsId=String(H.value);break;case 346:this.ucsBaseId=String(H.value);break;case 348:this.visualStyleId=String(H.value);break;case 361:this.sunId=String(H.value);break;case 421:this.ambientLightColorInstance=N;break;case 431:this.ambientLightColorName=String(H.value);break}}return this.applyViewportDxfIn(e,n,r,s,a,o,c,l,h),this._viewDirection.copy({x:u,y:d,z:g}),this._snapBase.copy({x:f,y:p,z:m}),this._snapSpacing.copy({x:y,y:_,z:v}),this._gridSpacing.copy({x:w,y:A,z:E}),this._ucsOrigin.copy({x:I,y:M,z:T}),this._ucsXAxis.copy({x:R,y:Y,z:O}),this._ucsYAxis.copy({x:Z,y:K,z:G}),this.frozenLayerIds=J,this.softPointers=S,this}applyViewportDxfIn(t,e,n,r,s,a,o,c,l){this.centerPoint.copy({x:t,y:e,z:n}),this.viewCenter.copy({x:r,y:s,z:a}),this.viewTarget.copy({x:o,y:c,z:l});const h=1e-6,u=Math.abs(t)<h&&Math.abs(e)<h,d=Math.abs(o)<h&&Math.abs(c)<h,g=Number.isFinite(this.height)&&Number.isFinite(this.viewHeight)&&Math.abs(this.viewHeight-this.height)<h;u&&d&&g&&this.centerPoint.copy(this.viewCenter)}moveGripAt(t,e){switch(t){case 0:this._centerPoint.add(e);break;case 1:case 2:case 3:case 4:{const n=this.width/2,r=this.height/2,s=this._centerPoint.x,a=this._centerPoint.y,o={1:{x:s-n,y:a-r},2:{x:s+n,y:a-r},3:{x:s+n,y:a+r},4:{x:s-n,y:a+r}},c=t===1?3:t===2?4:t===3?1:2,l=o[t],h=o[c];l.x+=e.x,l.y+=e.y,this._centerPoint.x=(l.x+h.x)/2,this._centerPoint.y=(l.y+h.y)/2,this._centerPoint.z=(this._centerPoint.z??0)+(e.z??0),this.width=Math.abs(h.x-l.x),this.height=Math.abs(h.y-l.y);break}}}};No.typeName="Viewport";let Er=No;const Ro=class Ro extends pi{get dxfTypeName(){return"WIPEOUT"}subWorldDraw(t){const e=this.boundaryPath(),n=new Kt;return n.add(new Q(e)),t.area(n)}dxfOutFields(t){return super.dxfOutFields(t),this}};Ro.typeName="Wipeout";let Lr=Ro;const Kr=class Kr extends At{get dxfTypeName(){return"XLINE"}constructor(){super(),this._basePoint=new b,this._unitDir=new x}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 area(){return 0}get geometricExtents(){const t=new z;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Tt(this._basePoint,t),extent:"unbounded"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return de(t,e,this.basePoint),this}subGetOsnapPoints(t,e,n,r){const s=this.basePoint;if(t===P.EndPoint){r.push(s);return}const a=this.unitDir.clone();if(a.lengthSq()===0)return;a.normalize();const o=new Tt(s,s.clone().add(a));switch(t){case P.Nearest:r.push(o.project(e));break;case P.Perpendicular:r.push(o.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(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)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXline"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXline");let e=this.basePoint.x,n=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,a=this.unitDir.y,o=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 11:s=h;break;case 21:a=h;break;case 31:o=h;break}}return this.basePoint=new b(e,n,r),this.unitDir=new x(s,a,o),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,n=this.unitDir,r=Math.hypot(n.x,n.y);return r<=1e-9||(n.x*(t.y-e.y)-n.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=$l(this.basePoint,this.unitDir,t);if(!e)return null;const n=new Kr;return n.basePoint=e,n.unitDir=this.unitDir.clone(),n}};Kr.typeName="Xline";let Cr=Kr;var Bd=(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))(Bd||{});const nn=48,Zc=8,lb=48,Dd=80,Fd=32,Ws=80,$s=24,va=40,hb=8,ub=4,Qc=64,db=64,gb=new Set(["_version","_angbase","_angdir","_aunits","_auprec","_lunits","_luprec","_celtscale","_cecolor","_celtype","_celweight","_cetransparency","_clayer","_cmlstyle","_cmlscale","_cmleaderstyle","_hpbackgroundcolor","_hpcolor","_hplayer","_hptransparency","_textstyle","_dimstyle","_dimstyle","_dimstyle","_extents","_insunits","_unitmode","_measurement","_ltscale","_lwdisplay","_pdmode","_pdsize","_osmode","_orthomode","_maxHandle","_drawNoPlotLayers","_dwgname","_currentSpace","_formatter","_eventBatchDepth","_pendingEntityAppended","_pendingEntityErased","_pendingDictObjectSet","_pendingDictObjectErased","_lastOpenError"]),Xd=new Set(["constructor","prototype","__proto__","caller","callee","arguments"]);function Qt(i,t){let e=i.get(t);return e||(e={bytes:0,count:0},i.set(t,e)),e}function zt(i,t,e,n=0){if(e<=0&&n===0)return;const r=Qt(i.byCategory,t);r.bytes+=e,r.count+=n}function fb(i){const t=Object.getPrototypeOf(i);return t===Object.prototype||t===null}function pb(i){return ArrayBuffer.isView(i)}function mb(i){return typeof i.addEventListener=="function"&&typeof i.dispatch=="function"&&"listeners"in i}function yb(i,t,e){return Xd.has(t)?!0:!i.includeEventManagers&&(t==="events"||e==="events")?t==="events":!i.includeTransactionManager&&(t==="transactionManager"||e==="transaction")?t==="transactionManager":!1}function Jc(i,t,e){return t==="_xDataMap"||i==="xdata"?"xdata":t==="_tables"||i==="tables"?e instanceof q?"entities":"tables":t==="_entities"||i==="entities"?"entities":t==="_objects"||i==="objects"?"objects":t==="_handleRegistry"||i==="handleRegistry"?"handleRegistry":t==="transactionManager"||i==="transaction"?"transaction":t==="events"||i==="events"?"events":i==="sysvars"||gb.has(t)?"sysvars":e instanceof q?"entities":i==="other"?"other":i}function bb(i){const t=new Set;let e=i;for(;e&&e!==Object.prototype;){for(const n of Object.getOwnPropertyNames(e)){if(Xd.has(n))continue;const r=Object.getOwnPropertyDescriptor(e,n);r&&typeof r.value=="function"||r&&(r.get||r.set)&&r.value===void 0||t.add(n)}if(e=Object.getPrototypeOf(e),e===Object.prototype||e===null||e===Array.prototype||e===Map.prototype||e===Set.prototype)break}return[...t]}function Yd(i){if(i==null)return 0;switch(typeof i){case"number":return hb;case"boolean":return ub;case"string":return va+i.length*2;case"bigint":return 16;case"symbol":return va+String(i.description??"").length*2;default:return 0}}function _b(i,t){if(i.visited.has(t))return 0;i.visited.add(t),i.objectCount+=1;let e=Dd+t.size*Fd;for(const n of t.keys())e+=Yd(n);return zt(i,"handleRegistry",e,1),e}function sn(i,t,e,n){if(t==null)return 0;const r=typeof t;if(r==="function")return 0;if(r!=="object"){const h=Yd(t);if(zt(i,e,h),n){const u=Qt(i.byEntityType,n);u.bytes+=h}return h}const s=t;if(typeof s.nodeType=="number"||i.visited.has(s))return 0;if(i.visited.add(s),i.objectCount+=1,!i.includeEventManagers&&mb(s))return zt(i,e,nn,1),nn;let a=n,o=e;if(s instanceof q){o="entities",a=s.type,i.entityCount+=1;const h=Qt(i.byEntityType,a);h.count+=1}if(typeof s.then=="function")return zt(i,o,nn,1),nn;if(s instanceof ArrayBuffer){const h=Qc+s.byteLength;return zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h),h}if(pb(s)){const h=Qc+s.byteLength;return s.buffer&&!i.visited.has(s.buffer)&&i.visited.add(s.buffer),zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h),h}if(typeof Blob<"u"&&s instanceof Blob){const h=db+s.size;return zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h),h}if(s instanceof Date){const h=nn+8;return zt(i,o,h,1),h}if(s instanceof Map){const h=o==="handleRegistry",u=Dd+s.size*Fd;let d=u;zt(i,o,u,1),a&&(Qt(i.byEntityType,a).bytes+=u);for(const[g,f]of s)d+=sn(i,g,o,a),h||(d+=sn(i,f,o,a));return d}if(s instanceof Set){let h=Ws+s.size*$s;for(const u of s)h+=sn(i,u,o,a);return zt(i,o,Ws+s.size*$s,1),a&&(Qt(i.byEntityType,a).bytes+=Ws+s.size*$s),h}if(Array.isArray(s)){let h=lb+s.length*Zc;zt(i,o,h,1),a&&(Qt(i.byEntityType,a).bytes+=h);for(let u=0;u<s.length;u++){const d=s[u],g=Jc(o,String(u),d);h+=sn(i,d,g,a)}return h}let c=nn;const l=fb(s)?Object.getOwnPropertyNames(s):bb(s);for(const h of l)c+=Zc,c+=Math.min(va+h.length*2,64);zt(i,o,c,1),a&&(Qt(i.byEntityType,a).bytes+=c);for(const h of l){if(yb(i,h,o)||h==="_database"||h==="database")continue;let u;try{u=s[h]}catch{continue}if(typeof u=="function")continue;if(h==="_handleRegistry"&&u instanceof Map){c+=_b(i,u);continue}const d=Jc(o,h,u);!i.includeTransactionManager&&d==="transaction"||!i.includeEventManagers&&d==="events"||(c+=sn(i,u,d,a))}return c}function xb(i,t){const e={visited:new WeakSet,objectCount:0,entityCount:0,byCategory:new Map,byEntityType:new Map,includeTransactionManager:(t==null?void 0:t.includeTransactionManager)===!0,includeEventManagers:(t==null?void 0:t.includeEventManagers)===!0};sn(e,i,"sysvars",null);let n=0;const r={};for(const[a,o]of e.byCategory)r[a]={bytes:o.bytes,count:o.count},n+=o.bytes;const s={};for(const[a,o]of e.byEntityType)s[a]={bytes:o.bytes,count:o.count};return{totalBytes:n,objectCount:e.objectCount,entityCount:e.entityCount,byCategory:r,byEntityType:s}}function qs(i){return i<1024?`${i} B`:i<1024*1024?`${(i/1024).toFixed(2)} KiB`:`${(i/(1024*1024)).toFixed(2)} MiB`}function wb(i){const t=[`AcDbDatabase memory estimate: ${qs(i.totalBytes)} (${i.totalBytes} bytes)`,`Objects: ${i.objectCount}, Entities: ${i.entityCount}`,"By category:"],e=Object.entries(i.byCategory).sort((r,s)=>s[1].bytes-r[1].bytes);for(const[r,s]of e)t.push(` ${r}: ${qs(s.bytes)} (${s.bytes} bytes), count=${s.count}`);const n=Object.entries(i.byEntityType).sort((r,s)=>s[1].bytes-r[1].bytes);if(n.length>0){t.push("By entity type:");for(const[r,s]of n)t.push(` ${r}: ${qs(s.bytes)} (${s.bytes} bytes), count=${s.count}`)}return t.join(`
|
|
14
|
+
`)}class ho{parse(t){const n=this.normalizeLineEndings(t).split(`
|
|
15
|
+
`),r=[],s=[];let a=null;return n.forEach((o,c)=>{const l=c+1,h=this.stripInlineComment(o).trim();if(!h)return;if(h.startsWith("*")){this.flushCurrentPattern(a,r,s);const d=this.parseHeader(h.slice(1));if(!d){s.push({line:l,message:"Invalid pattern header.",source:o}),a=null;return}a={pattern:{name:d.name,description:d.description,lines:[]},headerLine:l};return}if(!a){s.push({line:l,message:"Line descriptor appears before any pattern header.",source:o});return}const u=this.parseLineDescriptor(h,l);if(!u){s.push({line:l,message:"Invalid line descriptor. Expect: angle,x-origin,y-origin,delta-x,delta-y[,dash-1,...].",source:o});return}a.pattern.lines.push(u)}),this.flushCurrentPattern(a,r,s),{patterns:r,issues:s}}static parse(t){return new ho().parse(t)}normalizeLineEndings(t){return t.replace(/\r\n/g,`
|
|
16
16
|
`).replace(/\r/g,`
|
|
17
|
-
`)}stripInlineComment(t){const e=t.indexOf(";");return e<0?t:t.slice(0,e)}parseHeader(t){const e=t.indexOf(",");if(e<0){const s=t.trim();return s?{name:s,description:""}:null}const n=t.slice(0,e).trim(),r=t.slice(e+1).trim();return n?{name:n,description:r}:null}parseNumber(t){const e=Number(t.trim());return Number.isFinite(e)?e:null}parseLineDescriptor(t,e){const n=t.split(",").map(u=>u.trim()).filter(u=>u.length>0);if(n.length<5)return null;const r=this.parseNumber(n[0]),s=this.parseNumber(n[1]),a=this.parseNumber(n[2]),o=this.parseNumber(n[3]),c=this.parseNumber(n[4]);if(r==null||s==null||a==null||o==null||c==null)return null;const l=n.slice(5),h=[];for(const u of l){const d=this.parseNumber(u);if(d==null)return null;h.push(d)}return{angle:r,originX:s,originY:a,deltaX:o,deltaY:c,dashes:h,sourceLine:e}}flushCurrentPattern(t,e,n){t&&(t.pattern.lines.length===0&&n.push({line:t.headerLine,message:`Pattern "${t.pattern.name}" has no line descriptor.`,source:""}),e.push(t.pattern))}}const W=class W{static nextGradientId(t){return W.gradientIdCounter+=1,`acdb-pat-gradient-${t.toLowerCase()}-${W.gradientIdCounter}`}static packedRgbToCss(t){return`#${(t&16777215).toString(16).padStart(6,"0")}`}static gradientColorToCss(t,e){return typeof t=="number"?W.packedRgbToCss(t):t??e}static applyShadeTint(t,e){const n=T.clamp(e,0,1),r=n<.5?0:16777215,s=n<.5?1-n*2:n*2-1,a=t>>16&255,o=t>>8&255,c=t&255,l=r>>16&255,h=r>>8&255,u=r&255;return Math.round(a+(l-a)*s)*65536+Math.round(o+(h-o)*s)*256+Math.round(c+(u-c)*s)}static resolveGradientColors(t){const e="#2563eb",n="#f8fafc",r=W.gradientColorToCss(t.startColor,e);if(t.oneColorMode&&t.endColor==null){if(typeof t.startColor=="number"){const s=W.applyShadeTint(t.startColor,t.shadeTintValue??.5);return{start:r,end:W.packedRgbToCss(s)}}return{start:r,end:(t.shadeTintValue??.5)<.5?"#000000":"#ffffff"}}return{start:r,end:W.gradientColorToCss(t.endColor,n)}}static renderGradientStops(t){return t.map(e=>`<stop offset="${(T.clamp(e.offset,0,1)*100).toFixed(2)}%" stop-color="${e.color}" />`).join("")}static getGradientVector(t){return{x:Math.cos(t),y:-Math.sin(t)}}static isSolidPattern(t){return t.name.trim().toUpperCase()===Ge}static renderBackground(t,e,n){return`<rect x="${-t/2}" y="${-e/2}" width="${t}" height="${e}" fill="${n}" />`}static estimateUnitScale(t){const e=[];for(const s of t.lines){e.push(Math.abs(s.deltaX),Math.abs(s.deltaY));for(const a of s.dashes)e.push(Math.abs(a))}const n=e.filter(s=>s>W.EPSILON);if(n.length===0)return 1;const r=n.sort((s,a)=>s-a);return r[Math.floor(r.length/2)]||1}static segmentToSvgPath(t){return`M ${t.x1.toFixed(2)} ${(-t.y1).toFixed(2)} L ${t.x2.toFixed(2)} ${(-t.y2).toFixed(2)}`}static buildDashSegments(t,e,n,r,s,a,o){const c=t.dashes;if(c.length===0)return[{x1:r+a*e,y1:s+o*e,x2:r+a*n,y2:s+o*n}];const l=c.reduce((g,f)=>g+Math.abs(f),0);if(l<=W.EPSILON)return[{x1:r+a*e,y1:s+o*e,x2:r+a*n,y2:s+o*n}];const h=[],u=Math.ceil((n-e)/l)+2;let d=e-l;for(let g=0;g<u;g++){let f=d;for(const p of c){const m=Math.abs(p),y=f+m;if(p>0||p===0){const _=T.clamp(f,e,n),v=T.clamp(y,e,n);v>_?h.push({x1:r+a*_,y1:s+o*_,x2:r+a*v,y2:s+o*v}):p===0&&_>=e&&_<=n&&h.push({x1:r+a*(_-.35),y1:s+o*(_-.35),x2:r+a*(_+.35),y2:s+o*(_+.35)})}f=y}d+=l}return h}static renderFamily(t,e){const n=T.degToRad(t.angle),r=Math.cos(n),s=Math.sin(n),a=-s,o=r,c=r*t.deltaX+a*t.deltaY,l=s*t.deltaX+o*t.deltaY,h=Math.hypot(c,l),u=h<=W.EPSILON?1:Math.max(1,Math.ceil(e*2/h)+1),d=Math.floor(u/2),g=-e*1.5,f=e*1.5,p=[];for(let m=-d;m<=d;m++){const y=t.originX+c*m,_=t.originY+l*m,v=W.buildDashSegments(t,g,f,y,_,r,s);for(const w of v)p.push(W.segmentToSvgPath(w))}return`<path d="${p.join(" ")}" fill="none" />`}static renderLinearGradientDef(t,e,n,r,s){const a=W.getGradientVector(e),o=T.clamp(n,-1,1)*r*.5,c=a.x*o,l=a.y*o;return[`<linearGradient id="${t}" gradientUnits="userSpaceOnUse"`,` x1="${(-a.x*r+c).toFixed(2)}"`,` y1="${(-a.y*r+l).toFixed(2)}"`,` x2="${(a.x*r+c).toFixed(2)}"`,` y2="${(a.y*r+l).toFixed(2)}">`,W.renderGradientStops(s),"</linearGradient>"].join("")}static renderRadialGradientDef(t,e,n,r,s){return[`<radialGradient id="${t}" gradientUnits="userSpaceOnUse"`,` cx="${e.toFixed(2)}" cy="${n.toFixed(2)}" r="${r.toFixed(2)}"`,` fx="${e.toFixed(2)}" fy="${n.toFixed(2)}">`,W.renderGradientStops(s),"</radialGradient>"].join("")}static renderGradientDef(t,e,n,r,s,a,o){const c=e.toUpperCase(),l=c.startsWith("INV"),h=c.replace(/^INV/,""),u=l?n.end:n.start,d=l?n.start:n.end,g=Math.hypot(a,o)/2,f=W.getGradientVector(r),p=T.clamp(s,-1,1),m=f.x*p*a*.25,y=f.y*p*o*.25;switch(h){case"CYLINDER":{const _=T.clamp(.5+p*.45,.05,.95);return W.renderLinearGradientDef(t,r,0,g,[{offset:0,color:u},{offset:_,color:d},{offset:1,color:u}])}case"SPHERICAL":return W.renderRadialGradientDef(t,m,y,g,[{offset:0,color:d},{offset:1,color:u}]);case"HEMISPHERICAL":return W.renderRadialGradientDef(t,m+f.x*a*.18,y+f.y*o*.18,g*.92,[{offset:0,color:d},{offset:.72,color:u},{offset:1,color:u}]);case"CURVED":return W.renderRadialGradientDef(t,-f.x*a*.95+m,-f.y*o*.95+y,g*1.65,[{offset:0,color:u},{offset:.55,color:u},{offset:1,color:d}]);case"LINEAR":default:return W.renderLinearGradientDef(t,r,s,g,[{offset:0,color:u},{offset:1,color:d}])}}renderPattern(t,e={}){const n=e.width??260,r=e.height??160,s=e.stroke??"#1f2937",a=e.strokeWidth??1.3,o=e.background??"#ffffff",c=`${-n/2} ${-r/2} ${n} ${r}`;if(W.isSolidPattern(t))return[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${c}" width="${n}" height="${r}">`,W.renderBackground(n,r,o),`<rect x="${-n/2}" y="${-r/2}" width="${n}" height="${r}" fill="${s}" />`,"</svg>"].join("");const l=W.estimateUnitScale(t),u=Math.min(n,r)*.18/Math.max(l,W.EPSILON),d={...t,lines:t.lines.map(p=>({...p,originX:p.originX*u,originY:p.originY*u,deltaX:p.deltaX*u,deltaY:p.deltaY*u,dashes:p.dashes.map(m=>m*u)}))},g=Math.hypot(n,r)*.75,f=d.lines.map(p=>W.renderFamily(p,g)).join("");return[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${c}" width="${n}" height="${r}">`,W.renderBackground(n,r,o),`<g stroke="${s}" stroke-width="${a.toFixed(2)}" stroke-linecap="round">`,f,"</g>","</svg>"].join("")}renderGradient(t,e={}){const n=e.width??260,r=e.height??160,s=e.background??"#ffffff",a=e.angle??0,o=e.shift??0,c=`${-n/2} ${-r/2} ${n} ${r}`,l=W.nextGradientId(t),h=W.resolveGradientColors(e),u=W.renderGradientDef(l,t,h,a,o,n,r);return[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${c}" width="${n}" height="${r}">`,W.renderBackground(n,r,s),"<defs>",u,"</defs>",`<rect x="${-n/2}" y="${-r/2}" width="${n}" height="${r}" fill="url(#${l})" />`,"</svg>"].join("")}};W.EPSILON=1e-9,W.gradientIdCounter=0;let la=W;function yd(i){if(!i||i.length===0)return;const t=Jy(i);if(t)return ha(t,"image/bmp")}function Qy(i){if(!(!i||i.length===0))return i.length>=8&&i[0]===137&&i[1]===80&&i[2]===78&&i[3]===71?ha(i,"image/png"):i.length>=3&&i[0]===255&&i[1]===216&&i[2]===255?ha(i,"image/jpeg"):yd(i)}function ha(i,t){let e="";for(let n=0;n<i.length;n++)e+=String.fromCharCode(i[n]);return`data:${t};base64,${btoa(e)}`}function Jy(i){if(i.length>=14&&i[0]===66&&i[1]===77)return i;if(i.length<40)return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=t.getUint32(0,!0);if(e<12||e>i.length)return;const n=t.getUint16(14,!0),r=t.getUint32(32,!0),s=n<=8?r>0?r:1<<n:r>0?r:0,a=e===12?s*3:s*4,o=14+e+a;if(o>14+i.length)return;const c=14+i.length,l=new Uint8Array(14),h=new DataView(l.buffer);l[0]=66,l[1]=77,h.setUint32(2,c,!0),h.setUint32(6,0,!0),h.setUint32(10,o,!0);const u=new Uint8Array(c);return u.set(l,0),u.set(i,14),u}var Pr=(i=>(i[i.AtLeast=1]="AtLeast",i[i.Exactly=2]="Exactly",i))(Pr||{});const vo=class vo extends q{get dxfTypeName(){return"DIMENSION"}constructor(){super(),this._dimBlockId=null,this._dimBlockPosition=new b,this._dxfDefinitionPoint=new b,this._dimensionStyleName=null,this._dimensionText=null,this._textLineSpacingFactor=1,this._textLineSpacingStyle=1,this._textPosition=new b,this._textRotation=0,this._horizontalRotation=0,this._dimensionType=0,this._attachmentPoint=exports.AcGiMTextAttachmentPoint.MiddleCenter,this._dxfVersion=0,this._normal=new x(0,0,1),this._dimBlockRotation=0}get dimBlockId(){return this._dimBlockId}set dimBlockId(t){this._dimBlockId=t}get dimBlockPosition(){return this._dimBlockPosition}set dimBlockPosition(t){this._dimBlockPosition.copy(t)}get dimensionStyleName(){return this._dimensionStyleName}set dimensionStyleName(t){this._dimensionStyleName=t,this._dimStyle=void 0}get dimensionStyle(){if(this._dimStyle==null){let t;this.dimensionStyleName&&(t=this.database.tables.dimStyleTable.getAt(this.dimensionStyleName)),t==null&&(t=new Ft),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}get horizontalRotation(){return this._horizontalRotation}set horizontalRotation(t){this._horizontalRotation=t}get dimensionType(){return this._dimensionType}set dimensionType(t){this._dimensionType=t}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get dxfVersion(){return this._dxfVersion}set dxfVersion(t){this._dxfVersion=t}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get properties(){return this.getBaseProperties()}getBaseProperties(){return{type:this.type,groups:[this.getGeneralProperties(),this.getDimensionProperties()]}}transformBy(t){const e=this._textPosition.clone(),n=this._textPosition.clone().add(new x(Math.cos(this._textRotation),Math.sin(this._textRotation),0));this._dimBlockPosition.applyMatrix4(t),this._textPosition.applyMatrix4(t),this._normal.transformDirection(t);const r=new x(1,0,0).transformDirection(t);r.lengthSq()>0&&(this._dimBlockRotation+=Math.atan2(r.y,r.x)),e.applyMatrix4(t),n.applyMatrix4(t);const s=new x(n).sub(e);return s.lengthSq()>0&&(this._textRotation=Math.atan2(s.y,s.x)),this.subTransformBy(t),this}subGetOsnapPoints(t,e,n,r,s){const a=this.getDimBlockTableRecord();if(!a)return;const o=this.getFullDimBlockTransform(),c=new b(e).applyMatrix4(o.clone().invert()),l=new b(n).applyMatrix4(o.clone().invert()),h=(u,d)=>{const g=[];u.subGetOsnapPoints(t,c,l,g,d,o),u instanceof ce?g.forEach(f=>r.push(f.clone())):g.forEach(f=>r.push(new b(f).applyMatrix4(o)))};if(s){const u=a.getIdAt(s);if(u&&(h(u,s),r.length>0))return}for(const u of a.newIterator())h(u)}subWorldDraw(t){const e=this.getDimBlockTableRecord();if(e){const r=this.computeDimBlockTransform();return De.instance.draw(t,e,this.resolvedColor,[],!1,r,this._normal)}return t.group([])}subGetIntersectCurves(){const t=this.getDimBlockTableRecord();if(!t)return[];const e=this.getFullDimBlockTransform(),n=[];for(const r of t.newIterator())n.push(...Hh(r.subGetIntersectCurves(),e));return n}getDimBlockGeometricExtents(){const t=new z,e=this.getDimBlockTableRecord();if(!e)return t;for(const n of e.newIterator())t.union(n.geometricExtents);return t.applyMatrix4(this.getFullDimBlockTransform()),t}getGeometricExtentsFromDimBlockOrPoints(t){const e=this.getDimBlockGeometricExtents();if(!e.isEmpty())return e;const n=new z;for(const r of t)n.expandByPoint(r);return this.hasExplicitTextPosition()&&n.expandByPoint(this.textPosition),n}hasExplicitTextPosition(){const{x:t,y:e,z:n}=this.textPosition;return t!==0||e!==0||n!==0}collectDimensionDefinitionGripPoints(){return[]}subGetGripPoints(){return this.collectDimensionDefinitionGripPoints().concat([this.textPosition])}subMoveGripPointsAt(t,e){const n=this.collectDimensionDefinitionGripPoints();return ft(t,r=>{r>=0&&r<n.length?n[r].add(e):r===n.length&&this.textPosition.add(e)}),this}getDimBlockTableRecord(){return this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0}getDimensionProperties(){return{groupName:"dimension",properties:[this.createProperty("dimensionStyleName","string",()=>this.dimensionStyleName??"",t=>{this.dimensionStyleName=t.trim()===""?null:t}),this.createProperty("dimensionText","string",()=>this.dimensionText??"",t=>{this.dimensionText=t}),this.createProperty("measurement","float",()=>this.getMeasurementPropertyValue()),this.createProperty("dimBlockId","string",()=>this.dimBlockId??""),...this.createPoint3dProperties("dimBlockPosition",()=>this.dimBlockPosition),...this.createPoint3dProperties("textPosition",()=>this.textPosition),this.createProperty("textRotation","float",()=>this.textRotation,t=>{this.textRotation=t}),this.createProperty("textLineSpacingFactor","float",()=>this.textLineSpacingFactor,t=>{this.textLineSpacingFactor=t}),this.createProperty("textLineSpacingStyle","enum",()=>this.textLineSpacingStyle,t=>{this.textLineSpacingStyle=t},[{label:Pr[1],value:1},{label:Pr[2],value:2}]),...this.createPoint3dProperties("normal",()=>this.normal)]}}createProperty(t,e,n,r,s){return{name:t,type:e,editable:r!=null,options:s,accessor:r?{get:n,set:r}:{get:n}}}createPoint3dProperties(t,e){return[this.createProperty(`${t}X`,"float",()=>e().x,n=>{e().x=n}),this.createProperty(`${t}Y`,"float",()=>e().y,n=>{e().y=n}),this.createProperty(`${t}Z`,"float",()=>e().z,n=>{e().z=n})]}getMeasurementPropertyValue(){return this.measurement}getFullDimBlockTransform(){const t=this.computeDimBlockTransform();if(this._normal.x===0&&this._normal.y===0&&this._normal.z===1)return t;const e=new F().setFromExtrusionDirection(this._normal);return new F().multiplyMatrices(e,t)}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}findPointOnLine1(t,e,n){const r=new b().subVectors(e,t).normalize();return new b(e).addScaledVector(r,n)}findPointOnLine2(t,e,n){const r=t.x+n*Math.cos(e),s=t.y+n*Math.sin(e);return{x:r,y:s}}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():exports.AcGiArrowType.Closed}computeDimBlockTransform(){const t=this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0,e=(t==null?void 0:t.origin)??b.ORIGIN,n=new F().makeTranslation(-e.x,-e.y,-e.z),r=new F().makeTranslation(this._dimBlockPosition.x,this._dimBlockPosition.y,this._dimBlockPosition.z),s=new F().makeRotationZ(this._dimBlockRotation);return new F().multiplyMatrices(r,new F().multiplyMatrices(s,n))}subTransformBy(t){}dxfOutFields(t){super.dxfOutFields(t);const e=this.dimensionStyleName!=null?this.database.tables.dimStyleTable.getAt(this.dimensionStyleName):void 0;return t.writeSubclassMarker("AcDbDimension"),t.writeInt16(280,this.dxfVersion),t.writeString(2,this.dimBlockId??void 0),t.writeString(3,this.dimensionStyleName??this.dimensionStyle.name),t.writePoint3d(10,this._dxfDefinitionPoint),t.writeString(1,this.dimensionText??""),t.writeAngle(53,this.textRotation),this.horizontalRotation!==0&&t.writeAngle(51,this.horizontalRotation),t.writePoint3d(11,this.textPosition),t.writeInt16(70,this.dimensionType),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.textLineSpacingStyle),t.writeDouble(41,this.textLineSpacingFactor),t.writeDouble(42,this.measurement),t.writeVector3d(210,this.normal),t.writeObjectId(340,e==null?void 0:e.objectId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbDimension");let e=this._dxfDefinitionPoint.x,n=this._dxfDefinitionPoint.y,r=this._dxfDefinitionPoint.z,s=this.textPosition.x,a=this.textPosition.y,o=this.textPosition.z,c=this.textRotation*180/Math.PI,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);if(g===100){t.pushBackItem(d);break}switch(g){case 1:this.dimensionText=String(d.value);break;case 2:this.dimBlockId=String(d.value);break;case 3:this.dimensionStyleName=String(d.value);break;case 10:e=f;break;case 20:n=f;break;case 30:r=f;break;case 11:s=f;break;case 21:a=f;break;case 31:o=f;break;case 41:this.textLineSpacingFactor=f;break;case 42:this.measurement=f;break;case 53:c=f;break;case 51:this.horizontalRotation=T.degToRad(f);break;case 70:this.dimensionType=f;break;case 71:this.attachmentPoint=f;break;case 72:this.textLineSpacingStyle=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break;case 280:this.dxfVersion=f;break}}return this._dxfDefinitionPoint.set(e,n,r),this.textPosition.copy(new b(s,a,o)),this.textRotation=c*Math.PI/180,this.normal.copy(new x(l,h,u)),this}};vo.typeName="Dimension";let ke=vo;const Ao=class Ao extends ke{constructor(t,e,n,r,s=null,a=null){super(),this._centerPoint=new b().copy(t),this._xLine1Point=new b().copy(e),this._xLine2Point=new b().copy(n),this._arcPoint=new b().copy(r),this.dimensionText=s,this.dimensionStyleName=a}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("centerPoint",()=>this.centerPoint),...this.createPoint3dProperties("xLine1Point",()=>this.xLine1Point),...this.createPoint3dProperties("xLine2Point",()=>this.xLine2Point),...this.createPoint3dProperties("arcPoint",()=>this.arcPoint)]}]}}collectDimensionDefinitionGripPoints(){return[this.centerPoint,this.xLine1Point,this.xLine2Point,this.arcPoint]}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.xLine1Point,this.xLine2Point,this.centerPoint,this.arcPoint])}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDb3PointAngularDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}dxfInFields(t){super.dxfInFields(t);const e=t.peekItem();let n=!1;if(e&&Number(e.code)===100){const M=String(e.value);M==="AcDb2LineAngularDimension"?(n=!0,t.atSubclassData("AcDb2LineAngularDimension")):M==="AcDb3PointAngularDimension"&&t.atSubclassData("AcDb3PointAngularDimension")}let r=this.xLine1Point.x,s=this.xLine1Point.y,a=this.xLine1Point.z,o=this.xLine2Point.x,c=this.xLine2Point.y,l=this.xLine2Point.z,h=this.centerPoint.x,u=this.centerPoint.y,d=this.centerPoint.z,g=this.arcPoint.x,f=this.arcPoint.y,p=this.arcPoint.z,m=!1,y=r,_=s,v=a,w=o,A=c,I=l;const S=()=>{if(n){this.xLine1Point=new b(r,s,a),this.xLine2Point=new b(h,u,d);const M=tb({x:r,y:s},{x:y,y:_},{x:h,y:u},{x:w,y:A});M?this.centerPoint=new b(M.x,M.y,(a+I)/2):this.centerPoint=new b(y,_,v),this.arcPoint=new b(this._dxfDefinitionPoint.x,this._dxfDefinitionPoint.y,this._dxfDefinitionPoint.z);return}this.xLine1Point=new b(r,s,a),this.xLine2Point=new b(o,c,l),this.centerPoint=new b(h,u,d),m?this.arcPoint=new b(g,f,p):this.arcPoint=new b(this._dxfDefinitionPoint.x,this._dxfDefinitionPoint.y,this._dxfDefinitionPoint.z)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const M=t.readItem();if(!M)break;const C=Number(M.code),B=Number(M.value);switch(C){case 13:r=B;break;case 23:s=B;break;case 33:a=B;break;case 14:n?y=B:o=B;break;case 24:n?_=B:c=B;break;case 34:n?v=B:l=B;break;case 15:h=B;break;case 25:u=B;break;case 35:d=B;break;case 16:n?w=B:(g=B,m=!0);break;case 26:n?A=B:(f=B,m=!0);break;case 36:n?I=B:(p=B,m=!0);break}}return S(),this}};Ao.typeName="3PointAngularDimension";let Sr=Ao;function tb(i,t,e,n){const r=t.x-i.x,s=t.y-i.y,a=n.x-e.x,o=n.y-e.y,c=r*o-s*a;if(Math.abs(c)<1e-12)return null;const l=((e.x-i.x)*o-(e.y-i.y)*a)/c;return{x:i.x+l*r,y:i.y+l*s}}const ko=class ko extends ke{constructor(t,e,n,r=null,s=null){super(),this._dimLinePoint=new b().copy(n),this._xLine1Point=new b().copy(t),this._xLine2Point=new b().copy(e),this._oblique=0,this._rotation=0,this.calculateRotation(),r?this.dimensionText=r:this.dimensionText=this._xLine1Point.distanceTo(this._xLine2Point).toFixed(3),this.dimensionStyleName=s}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("xLine1Point",()=>this.xLine1Point),...this.createPoint3dProperties("xLine2Point",()=>this.xLine2Point),...this.createPoint3dProperties("dimLinePoint",()=>this.dimLinePoint),this.createProperty("rotation","float",()=>this.rotation,e=>{this.rotation=e}),this.createProperty("oblique","float",()=>this.oblique,e=>{this.oblique=e})]}]}}collectDimensionDefinitionGripPoints(){return[this.xLine1Point,this.xLine2Point,this.dimLinePoint]}subMoveGripPointsAt(t,e){return super.subMoveGripPointsAt(t,e),this.calculateRotation(),this}subTransformBy(t){this._dimLinePoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t),this.calculateRotation()}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.xLine1Point,this.xLine2Point,this.dimLinePoint])}get isAppendArrow(){return!1}createDimBlock(t){const e=new nt;e.name=t;const n=this.createLines();n.forEach(o=>e.appendEntity(new hi(o.startPoint,o.endPoint))),this.createArrows(n[0]).forEach(o=>e.appendEntity(o));const s=n[0].midPoint,a=this.createMText(s,this._rotation);return a&&e.appendEntity(a),e}createMText(t,e){const n=r=>({x:Math.cos(r),y:Math.sin(r),z:0});if(this.dimensionText){const r=new Ze;return r.attachmentPoint=this.attachmentPoint,r.layer="0",r.color=new j(exports.AcCmColorMethod.ByBlock),r.location=t,r.contents=this.dimensionText??"",r.height=10,r.direction=n(e),r.styleName=this.dimensionStyle.dimtxsty,r}}createArrows(t){const e=[];return e.push(this.createArrow(t.startPoint,this.rotation+Math.PI,10)),e.push(this.createArrow(t.endPoint,this.rotation,10)),e}createArrow(t,e,n){const r="_CAXARROW",s=new ce(r);return s.position=t,s.rotation=e,s.scaleFactors={x:n,y:n,z:n},s}createLines(){const t=[],e=this.createExtensionLine(this._xLine1Point),n=this.createExtensionLine(this._xLine2Point),r=this.findIntersectionPoint(e,this._dimLinePoint),s=this.findIntersectionPoint(n,this._dimLinePoint),a=new Ct(r,s);return t.push(a),e.endPoint=r,this.adjustExtensionLine(e),t.push(e),n.endPoint=s,this.adjustExtensionLine(n),t.push(n),t}createExtensionLine(t){const e=this.rotation+Math.PI/2,n=this.findPointOnLine2(t,e,100);return new Ct(t,{...n,z:t.z})}findIntersectionPoint(t,e){const n=t.startPoint,r=t.endPoint,s=new x().subVectors(r,n).normalize(),o=new x().subVectors(e,n).dot(s),c=new x().copy(s).multiplyScalar(o);return new x().addVectors(n,c)}calculateRotation(){const t=this._xLine1Point,e=this._xLine2Point,n=e.x-t.x,r=e.y-t.y;this._rotation=Math.atan2(r,n)}get dxfSubclassMarker(){return"AcDbAlignedDimension"}getMeasurementPropertyValue(){return this.measurement??this.xLine1Point.distanceTo(this.xLine2Point)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker(this.dxfSubclassMarker),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.dimLinePoint),t.writeAngle(50,this.rotation),t.writeAngle(52,this.oblique),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData(this.dxfSubclassMarker);let e=this.xLine1Point.x,n=this.xLine1Point.y,r=this.xLine1Point.z,s=this.xLine2Point.x,a=this.xLine2Point.y,o=this.xLine2Point.z,c=this.dimLinePoint.x,l=this.dimLinePoint.y,h=this.dimLinePoint.z,u=this.rotation*180/Math.PI,d=this.oblique*180/Math.PI,g=this.dimBlockPosition.x,f=this.dimBlockPosition.y,p=this.dimBlockPosition.z,m=!1,y=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const _=t.readItem();if(!_)break;const v=Number(_.code),w=Number(_.value);switch(v){case 12:g=w,m=!0;break;case 22:f=w,m=!0;break;case 32:p=w,m=!0;break;case 13:e=w;break;case 23:n=w;break;case 33:r=w;break;case 14:s=w;break;case 24:a=w;break;case 34:o=w;break;case 15:c=w,y=!0;break;case 25:l=w,y=!0;break;case 35:h=w,y=!0;break;case 50:u=w;break;case 52:d=w;break;case 100:return t.pushBackItem(_),this.finishAlignedDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,f,p,m,y),this}}return this.finishAlignedDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,f,p,m,y),this}finishAlignedDxfIn(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m){this.xLine1Point={x:t,y:e,z:n},this.xLine2Point={x:r,y:s,z:a},m?this.dimLinePoint={x:o,y:c,z:l}:this.dimLinePoint={x:this._dxfDefinitionPoint.x,y:this._dxfDefinitionPoint.y,z:this._dxfDefinitionPoint.z},this.rotation=h*Math.PI/180,this.oblique=u*Math.PI/180,p&&(this.dimBlockPosition={x:d,y:g,z:f})}};ko.typeName="AlignedDimension";let En=ko;const Po=class Po extends ke{constructor(t,e,n,r,s=null,a=null){super(),this._arcPoint=new b().copy(r),this._xLine1Point=new b().copy(e),this._xLine2Point=new b().copy(n),this._centerPoint=new b().copy(t),this.dimensionText=s,this.dimensionStyleName=a}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("centerPoint",()=>this.centerPoint),...this.createPoint3dProperties("xLine1Point",()=>this.xLine1Point),...this.createPoint3dProperties("xLine2Point",()=>this.xLine2Point),...this.createPoint3dProperties("arcPoint",()=>this.arcPoint)]}]}}collectDimensionDefinitionGripPoints(){return[this.centerPoint,this.xLine1Point,this.xLine2Point,this.arcPoint]}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.xLine1Point,this.xLine2Point,this.centerPoint,this.arcPoint])}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArcDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbArcDimension");let e=this.xLine1Point.x,n=this.xLine1Point.y,r=this.xLine1Point.z,s=this.xLine2Point.x,a=this.xLine2Point.y,o=this.xLine2Point.z,c=this.centerPoint.x,l=this.centerPoint.y,h=this.centerPoint.z,u=this.arcPoint.x,d=this.arcPoint.y,g=this.arcPoint.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const f=t.readItem();if(!f)break;const p=Number(f.code),m=Number(f.value);switch(p){case 13:e=m;break;case 23:n=m;break;case 33:r=m;break;case 14:s=m;break;case 24:a=m;break;case 34:o=m;break;case 15:c=m;break;case 25:l=m;break;case 35:h=m;break;case 16:u=m;break;case 26:d=m;break;case 36:g=m;break}}return this.xLine1Point=new b(e,n,r),this.xLine2Point=new b(s,a,o),this.centerPoint=new b(c,l,h),this.arcPoint=new b(u,d,g),this}};Po.typeName="ArcDimension";let Ir=Po;const So=class So extends ke{constructor(t,e,n=0,r=null,s=null){super(),this._chordPoint=new b().copy(t),this._farChordPoint=new b().copy(e),this._extArcStartAngle=0,this._extArcEndAngle=0,this._leaderLength=n,this.dimensionText=r,this.dimensionStyleName=s}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}set leaderLength(t){this._leaderLength=t}get properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("chordPoint",()=>this.chordPoint),...this.createPoint3dProperties("farChordPoint",()=>this.farChordPoint),this.createProperty("leaderLength","float",()=>this.leaderLength,e=>{this.leaderLength=e}),this.createProperty("extArcStartAngle","float",()=>this.extArcStartAngle,e=>{this.extArcStartAngle=e}),this.createProperty("extArcEndAngle","float",()=>this.extArcEndAngle,e=>{this.extArcEndAngle=e})]}]}}collectDimensionDefinitionGripPoints(){return[this.chordPoint,this.farChordPoint]}subTransformBy(t){this._chordPoint.applyMatrix4(t),this._farChordPoint.applyMatrix4(t)}getMeasurementPropertyValue(){return this.measurement??this.chordPoint.distanceTo(this.farChordPoint)}get geometricExtents(){const t=[this.chordPoint,this.farChordPoint];if(this.leaderLength>0){const e=this.farChordPoint.clone().sub(this.chordPoint);e.lengthSq()>0&&(e.normalize().multiplyScalar(this.leaderLength),t.push(this.farChordPoint.clone().add(e)))}return this.getGeometricExtentsFromDimBlockOrPoints(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbDiametricDimension"),t.writePoint3d(15,this.chordPoint),t.writePoint3d(16,this.farChordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbDiametricDimension");let e=this._dxfDefinitionPoint.x,n=this._dxfDefinitionPoint.y,r=this._dxfDefinitionPoint.z,s=this.farChordPoint.x,a=this.farChordPoint.y,o=this.farChordPoint.z,c=!1,l=!1,h=this.extArcStartAngle*180/Math.PI,u=this.extArcEndAngle*180/Math.PI;const d=()=>{l?(this.chordPoint=new b(e,n,r),this.farChordPoint=new b(s,a,o)):c&&(this.chordPoint=new b(this._dxfDefinitionPoint.x,this._dxfDefinitionPoint.y,this._dxfDefinitionPoint.z),this.farChordPoint=new b(e,n,r)),this.extArcStartAngle=h*Math.PI/180,this.extArcEndAngle=u*Math.PI/180};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 15:e=p,c=!0;break;case 25:n=p,c=!0;break;case 35:r=p,c=!0;break;case 16:s=p,l=!0;break;case 26:a=p,l=!0;break;case 36:o=p,l=!0;break;case 40:this.leaderLength=p;break;case 52:h=p;break;case 53:u=p;break}}return d(),this}};So.typeName="DiametricDimension";let Er=So;const Io=class Io extends ke{constructor(t,e,n=null,r=null){super(),this._definingPoint=new b().copy(t),this._leaderEndPoint=new b().copy(e),this.dimensionText=n,this.dimensionStyleName=r}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("definingPoint",()=>this.definingPoint),...this.createPoint3dProperties("leaderEndPoint",()=>this.leaderEndPoint)]}]}}collectDimensionDefinitionGripPoints(){return[this.definingPoint,this.leaderEndPoint]}subTransformBy(t){this._definingPoint.applyMatrix4(t),this._leaderEndPoint.applyMatrix4(t)}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.definingPoint,this.leaderEndPoint])}get arrowLineCount(){return 0}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbOrdinateDimension"),t.writePoint3d(13,this.definingPoint),t.writePoint3d(14,this.leaderEndPoint),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbOrdinateDimension");let e=this.definingPoint.x,n=this.definingPoint.y,r=this.definingPoint.z,s=this.leaderEndPoint.x,a=this.leaderEndPoint.y,o=this.leaderEndPoint.z;const c=()=>{this.definingPoint=new b(e,n,r),this.leaderEndPoint=new b(s,a,o)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const l=t.readItem();if(!l)break;const h=Number(l.code),u=Number(l.value);switch(h){case 13:e=u;break;case 23:n=u;break;case 33:r=u;break;case 14:s=u;break;case 24:a=u;break;case 34:o=u;break}}return c(),this}};Io.typeName="OrdinateDimension";let Lr=Io;const Eo=class Eo extends ke{constructor(t,e,n,r=null,s=null){super(),this._center=new b().copy(t),this._chordPoint=new b().copy(e),this._leaderLength=n,this._extArcStartAngle=0,this._extArcEndAngle=0,this.dimensionText=r,this.dimensionStyleName=s}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 leaderLength(t){this._leaderLength=t}set leaderLenght(t){this._leaderLength=t}get properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("center",()=>this.center),...this.createPoint3dProperties("chordPoint",()=>this.chordPoint),this.createProperty("leaderLength","float",()=>this.leaderLength,e=>{this.leaderLength=e}),this.createProperty("extArcStartAngle","float",()=>this.extArcStartAngle,e=>{this.extArcStartAngle=e}),this.createProperty("extArcEndAngle","float",()=>this.extArcEndAngle,e=>{this.extArcEndAngle=e})]}]}}collectDimensionDefinitionGripPoints(){return[this.center,this.chordPoint]}subTransformBy(t){this._center.applyMatrix4(t),this._chordPoint.applyMatrix4(t)}getMeasurementPropertyValue(){return this.measurement??this.center.distanceTo(this.chordPoint)}get geometricExtents(){const t=[this.center,this.chordPoint];if(this.leaderLength>0){const e=this.chordPoint.clone().sub(this.center);e.lengthSq()>0&&(e.normalize().multiplyScalar(this.leaderLength),t.push(this.chordPoint.clone().add(e)))}return this.getGeometricExtentsFromDimBlockOrPoints(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRadialDimension"),t.writePoint3d(15,this.center),t.writePoint3d(13,this.chordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRadialDimension");const e=this._dxfDefinitionPoint.x,n=this._dxfDefinitionPoint.y,r=this._dxfDefinitionPoint.z;let s=this.chordPoint.x,a=this.chordPoint.y,o=this.chordPoint.z,c=!1,l=this.extArcStartAngle*180/Math.PI,h=this.extArcEndAngle*180/Math.PI;const u=()=>{this.center=new b(e,n,r),this.chordPoint=new b(s,a,o),this.extArcStartAngle=l*Math.PI/180,this.extArcEndAngle=h*Math.PI/180};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 15:s=f,c=!0;break;case 25:a=f,c=!0;break;case 35:o=f,c=!0;break;case 13:c||(s=f);break;case 23:c||(a=f);break;case 33:c||(o=f);break;case 40:this.leaderLength=f;break;case 52:l=f;break;case 53:h=f;break}}return u(),this}};Eo.typeName="RadialDimension";let Tr=Eo;const Lo=class Lo extends En{get dxfSubclassMarker(){return"AcDbRotatedDimension"}};Lo.typeName="RotatedDimension";let Cr=Lo;class eb{constructor(t){this._pairs=t,this.kind="ascii",this._index=0}next(){if(!(this._index>=this._pairs.length))return this._pairs[this._index++]}peek(){if(!(this._index>=this._pairs.length))return this._pairs[this._index]}position(){return{byteOffset:this._index}}}function bd(i){const t=Number(i.code),e=i.value,n=xi(t);return n==="comment"?{code:t,type:"string",value:String(e??"")}:n==="bool"?{code:t,type:"bool",value:!!e}:n==="binary"?e instanceof Uint8Array?{code:t,type:"binary",value:e}:{code:t,type:"string",value:String(e??"")}:n==="handle"?{code:t,type:"handle",value:String(e??"")}:n==="int"||n==="long"?{code:t,type:n==="long"?"long":"int",value:Number(e)}:n==="double"?{code:t,type:"double",value:Number(e)}:{code:t,type:"string",value:String(e??"")}}function nb(i){const t=[];for(;!i.atEndOfObject&&!i.atEof&&!i.atExtendedData;){const e=i.readItem();if(!e)break;t.push(bd(e))}return t}const ib=new Set(["AcDbAlignedDimension","AcDbRotatedDimension","AcDb3PointAngularDimension","AcDb2LineAngularDimension","AcDbOrdinateDimension","AcDbRadialDimension","AcDbDiametricDimension","AcDbArcDimension"]);function rb(i){const t=sb(i),e=ab(t),n=ob(e);if(!n)return null;const r=Me.forReading(new eb(t),{database:i.database});return n.dxfIn(r),n}function sb(i){const t=nb(i);for(;!i.atEndOfObject&&!i.atEof;){const e=i.readItem();if(!e)break;if(Number(e.code)===0){i.pushBackItem(e);break}t.push(bd(e))}return t}function ab(i){let t="";for(const e of i)e.code===100&&typeof e.value=="string"&&ib.has(e.value)&&(t=e.value);if(t)return t;for(const e of i)if(e.code===70&&typeof e.value=="number")switch(e.value&15){case 0:return"AcDbRotatedDimension";case 1:return"AcDbAlignedDimension";case 2:return"AcDb2LineAngularDimension";case 3:return"AcDbDiametricDimension";case 4:return"AcDbRadialDimension";case 5:return"AcDb3PointAngularDimension";case 6:return"AcDbOrdinateDimension";case 8:return"AcDbArcDimension"}return"AcDbAlignedDimension"}function ob(i,t){const e=new b;switch(i){case"AcDbRotatedDimension":return new Cr(e,e,e);case"AcDbAlignedDimension":return new En(e,e,e);case"AcDb3PointAngularDimension":case"AcDb2LineAngularDimension":return new Sr(e,e,e,e);case"AcDbOrdinateDimension":return new Lr(e,e);case"AcDbRadialDimension":return new Tr(e,e,0);case"AcDbDiametricDimension":return new Er(e,e,0);case"AcDbArcDimension":return new Ir(e,e,e,e);default:return new En(e,e,e)}}var ln=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.FitCurvePoly=1]="FitCurvePoly",i[i.QuadSplinePoly=2]="QuadSplinePoly",i[i.CubicSplinePoly=3]="CubicSplinePoly",i))(ln||{});const To=class To extends At{constructor(t,e,n=0,r=!1,s=0,a=0,o=null){super(),this._normal=new x(0,0,1),this._polyType=t,this._elevation=n;const c=o&&(o==null?void 0:o.length)===e.length,l=e.map((h,u)=>({x:h.x,y:h.y,bulge:c?o[u]:void 0}));this._geo=new Q(l,r)}get dxfTypeName(){return"POLYLINE"}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t),this._normal.lengthSq()>0&&this._normal.normalize()}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){return this._geo.getPointAt(t)}getBulgeAt(t){const e=this._geo.vertices[t];return(e==null?void 0:e.bulge)||0}get geometricExtents(){const t=this._geo.box;return new z().setFromPoints([_t({x:t.min.x,y:t.min.y,z:this._elevation},this._normal),_t({x:t.max.x,y:t.min.y,z:this._elevation},this._normal),_t({x:t.max.x,y:t.max.y,z:this._elevation},this._normal),_t({x:t.min.x,y:t.max.y,z:this._elevation},this._normal)])}subGetIntersectCurves(){return za(this._geo.vertices,this.closed,this._elevation,this._normal)}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const n=this._geo.getPointAt(e);t.push(new b(n.x,n.y,this._elevation))}return t}subMoveGripPointsAt(t,e){return ft(t,n=>{jn(this._geo.vertices,n,e)}),this}subGetOsnapPoints(t,e,n,r){var c;const s=this._geo,a=this._elevation,o=s.numberOfVertices;if(o!==0)switch(t){case k.EndPoint:for(let l=0;l<o;l++){const h=s.getPointAt(l);r.push(new b(h.x,h.y,a))}break;case k.MidPoint:case k.Nearest:case k.Perpendicular:case k.Tangent:{const l=this.closed?o:o-1,h=[];for(let u=0;u<l;u++){const d=[];ei(s.getPointAt(u),s.getPointAt((u+1)%o),(c=s.vertices[u])==null?void 0:c.bulge,a,t,e,d),h.push(...d)}if(t===k.MidPoint)r.push(...h);else{const u=$t(e,h);u&&r.push(u)}break}}}transformBy(t){const e=t.determinant()<0;let n=this._elevation;return this._geo.vertices.forEach(r=>{const s=new b(r.x,r.y,this._elevation).applyMatrix4(t);r.x=s.x,r.y=s.y,n=s.z,e&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._elevation=n,this._normal.transformDirection(t),this._normal.lengthSq()>0&&this._normal.normalize(),this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return this._geo.getPoints(100).forEach(r=>e.push(new b().set(r.x,r.y,this.elevation))),t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;++n)t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPointAt(n).x,y:this.getPointAt(n).y,z:this.elevation}),t.writeDouble(42,this.getBulgeAt(n)),t.writeInt16(70,0);return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb2dPolyline");let e=this.closed?1:0;return this.polyType===1&&(e|=2),this.polyType===2&&(e|=4),this.polyType===3&&(e|=8),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation),t.writeVector3d(210,this.normal),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Lt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const e=this._geo.offset(t);return e.length===0?null:Lt.fromGePolyline(e[0])}collectPath2d(){const t=Math.max(32,this.numberOfVertices*4);return this._geo.getPoints(t)}};To.typeName="2dPolyline";let Mr=To;var Wn=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.QuadSplinePoly=1]="QuadSplinePoly",i[i.CubicSplinePoly=2]="CubicSplinePoly",i))(Wn||{});const Ur=class Ur extends At{get dxfTypeName(){return"POLYLINE"}constructor(t,e,n=!1){super(),this._polyType=t,this._geo=new Q(e,n)}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get closed(){return this._geo.closed}get area(){return 0}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){const e=this._geo.vertices[t];return new b(e.x,e.y,e.z||0)}get geometricExtents(){const t=this._geo.vertices.map(e=>new b(e.x,e.y,e.z||0));return new z().setFromPoints(t)}subGetIntersectCurves(){const t=[];for(let e=0;e<this.numberOfVertices;e++)t.push(this.getPointAt(e));return Dt(t,this.closed)}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e)t.push(this.getPointAt(e));return t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveVertexAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){const s=Array.from({length:this._geo.numberOfVertices},(a,o)=>this.getPointAt(o));if(s.length!==0)switch(t){case k.EndPoint:r.push(...s);break;case k.MidPoint:case k.Nearest:case k.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];On(s[o],s[o+1],t,e,c),a.push(...c)}if(t===k.MidPoint)r.push(...a);else{const o=$t(e,a);o&&r.push(o)}break}}}transformBy(t){return this._geo.vertices.forEach(e=>{const n=new b(e.x,e.y,e.z||0).applyMatrix4(t);e.x=n.x,e.y=n.y,e.z=n.z}),this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this._geo.vertices.map(n=>new b(n.x,n.y,n.z||0));return t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;++n){const r=this.getPointAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,{x:r.x,y:r.y,z:r.z}),t.writeInt16(70,32)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb3dPolyline");let e=this.closed?1:0;return e|=8,this.polyType===1&&(e|=16),this.polyType===2&&(e|=32),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Lt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const e=this._geo.offset(t);if(e.length===0)return null;const n=e[0],r=[];for(let s=0;s<n.numberOfVertices;s++){const a=n.getPointAt(s);r.push(new b(a.x,a.y,this.interpolateZ(a.x,a.y)))}return new Ur(this.polyType,r,this.closed)}collectPath2d(){const t=Math.max(32,this.numberOfVertices*4);return this._geo.getPoints(t)}interpolateZ(t,e){const n=this.numberOfVertices;if(n<=0)return 0;let r=1/0,s=this.getPointAt(0).z;const a=this.closed?n:n-1;for(let o=0;o<a;o++){const c=this.getPointAt(o),l=this.getPointAt((o+1)%n),h=l.x-c.x,u=l.y-c.y,d=h*h+u*u;if(d===0)continue;const g=Math.max(0,Math.min(1,((t-c.x)*h+(e-c.y)*u)/d)),f=c.x+h*g,p=c.y+u*g,m=(t-f)**2+(e-p)**2;m<r&&(r=m,s=c.z+(l.z-c.z)*g)}return s}moveVertexAt(t,e){const n=this._geo.vertices[t];if(!n)return;n.x+=e.x,n.y+=e.y;const r=n;r.z=(r.z??0)+(e.z??0)}};Ur.typeName="3dPolyline";let Or=Ur;class _d{constructor(t){this.position=new b(t.x,t.y,t.z||0)}}class xd{constructor(t){this.vertexIndices=t}}const Co=class Co extends At{get dxfTypeName(){return"POLYLINE"}constructor(t,e){super(),this._vertices=t.map(n=>new _d(n)),this._faces=e.map(n=>new xd(n))}get numberOfVertices(){return this._vertices.length}get numberOfFaces(){return this._faces.length}get closed(){return!1}get area(){return 0}set closed(t){}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getFaceAt(t){if(t<0||t>=this._faces.length)throw new Error("Face index out of bounds");return this._faces[t]}get geometricExtents(){if(this._vertices.length===0)return new z(new b(0,0,0),new b(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),n=Math.min(n,o.position.z),r=Math.max(r,o.position.x),s=Math.max(s,o.position.y),a=Math.max(a,o.position.z)}),new z(new b(t,e,n),new b(r,s,a))}subGetIntersectCurves(){const t=[];return this._faces.forEach(e=>{const n=[];e.vertexIndices.forEach(r=>{const s=Math.abs(r)-1;s>=0&&s<this._vertices.length&&n.push(this._vertices[s].position)}),n.length>=2&&t.push(...Dt(n,!0))}),t}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subMoveGripPointsAt(t,e){return ft(t,n=>{const r=this._vertices[n];r&&r.position.add(e)}),this}subGetOsnapPoints(t,e,n,r){switch(t){case k.EndPoint:this._vertices.forEach(s=>{r.push(s.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}},{name:"faces",type:"array",editable:!1,itemSchema:{properties:[{name:"vertexIndices",type:"array",editable:!1,itemSchema:{properties:[{name:"index",type:"int",editable:!1}]}}]},accessor:{get:()=>this._faces.map(t=>({vertexIndices:t.vertexIndices}))}}]}]}}subWorldDraw(t){const e=[];return this._faces.forEach(n=>{const r=[];if(n.vertexIndices.forEach(s=>{const a=Math.abs(s)-1;a>=0&&a<this._vertices.length&&r.push(this._vertices[a].position)}),r.length>=3)for(let s=0;s<r.length;s++){const a=r[s],o=r[(s+1)%r.length];e.push(a),e.push(o)}}),t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyFaceMesh");const e=64;return t.writeInt16(66,1),t.writeInt16(70,e),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;n++){const r=this.getVertexAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writePoint3d(10,r.position),t.writeInt16(70,64)}for(let n=0;n<this.numberOfFaces;n++){const r=this.getFaceAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writeInt16(70,128),r.vertexIndices.forEach((s,a)=>{t.writeInt32(10+a,s)})}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectLargestFaceBoundary2d();return e.length<2?1:Lt.from2dPoints(e,!0).getOffsetSideAtPoint(t)}createOffsetCurve(t){return as(this.collectLargestFaceBoundary2d(),!0,t)}collectLargestFaceBoundary2d(){let t=[];for(const e of this._faces){const n=e.vertexIndices.filter(r=>r>=0);n.length>t.length&&(t=n)}return t.length<2?this._vertices.map(e=>new L(e.position.x,e.position.y)):t.map(e=>{const n=this.getVertexAt(e).position;return new L(n.x,n.y)})}};Co.typeName="PolyFaceMesh";let Nr=Co;class wd{constructor(t){this.position=new b(t.x,t.y,t.z||0)}}const Mo=class Mo extends At{get dxfTypeName(){return"POLYLINE"}constructor(t,e,n,r=!1,s=!1){super(),this._mCount=t,this._nCount=e,this._closedM=r,this._closedN=s,this._vertices=n.map(a=>new wd(a))}get mCount(){return this._mCount}get nCount(){return this._nCount}get closedM(){return this._closedM}get closedN(){return this._closedN}get closed(){return this._closedM}get area(){return 0}set closed(t){this._closedM=t}get numberOfVertices(){return this._vertices.length}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getVertexAtMN(t,e){const n=t*this._nCount+e;return this.getVertexAt(n)}get geometricExtents(){if(this._vertices.length===0)return new z(new b(0,0,0),new b(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),n=Math.min(n,o.position.z),r=Math.max(r,o.position.x),s=Math.max(s,o.position.y),a=Math.max(a,o.position.z)}),new z(new b(t,e,n),new b(r,s,a))}subGetIntersectCurves(){const t=[];for(let e=0;e<this._mCount;e++)for(let n=0;n<this._nCount;n++){const r=this.getVertexAtMN(e,n);let s=n+1;if(s>=this._nCount)if(this._closedN)s=0;else continue;t.push(...Dt([r.position,this.getVertexAtMN(e,s).position],!1,!1))}for(let e=0;e<this._nCount;e++)for(let n=0;n<this._mCount;n++){const r=this.getVertexAtMN(n,e);let s=n+1;if(s>=this._mCount)if(this._closedM)s=0;else continue;t.push(...Dt([r.position,this.getVertexAtMN(s,e).position],!1,!1))}return t}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subMoveGripPointsAt(t,e){return ft(t,n=>{const r=this._vertices[n];r&&r.position.add(e)}),this}subGetOsnapPoints(t,e,n,r){switch(t){case k.EndPoint:this._vertices.forEach(s=>{r.push(s.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"mCount",type:"float",editable:!1,accessor:{get:()=>this._mCount}},{name:"nCount",type:"float",editable:!1,accessor:{get:()=>this._nCount}},{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}}]},{groupName:"others",properties:[{name:"closedM",type:"boolean",editable:!0,accessor:{get:()=>this._closedM,set:t=>{this._closedM=t}}},{name:"closedN",type:"boolean",editable:!0,accessor:{get:()=>this._closedN,set:t=>{this._closedN=t}}}]}]}}subWorldDraw(t){const e=[];for(let n=0;n<this._mCount;n++)for(let r=0;r<this._nCount;r++){const s=this.getVertexAtMN(n,r);let a=r+1;if(a>=this._nCount)if(this._closedN)a=0;else continue;const o=this.getVertexAtMN(n,a);e.push(s.position),e.push(o.position)}for(let n=0;n<this._nCount;n++)for(let r=0;r<this._mCount;r++){const s=this.getVertexAtMN(r,n);let a=r+1;if(a>=this._mCount)if(this._closedM)a=0;else continue;const o=this.getVertexAtMN(a,n);e.push(s.position),e.push(o.position)}return t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolygonMesh");let e=16;return this._closedM&&(e|=1),this._closedN&&(e|=32),t.writeInt16(66,1),t.writeInt16(70,e),t.writeInt32(71,this._mCount),t.writeInt32(72,this._nCount),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;n++){const r=this.getVertexAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolygonMeshVertex"),t.writePoint3d(10,r.position),t.writeInt16(70,16)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectBoundary2d();return e.length<2?1:Lt.from2dPoints(e,this.isBoundaryClosed()).getOffsetSideAtPoint(t)}createOffsetCurve(t){return as(this.collectBoundary2d(),this.isBoundaryClosed(),t)}isBoundaryClosed(){return this._closedM&&this._closedN&&this._mCount>1&&this._nCount>1}collectBoundary2d(){const t=this._mCount,e=this._nCount;if(t<1||e<1)return[];const n=[],r=(s,a)=>{const o=this.getVertexAtMN(s,a).position;n.push(new L(o.x,o.y))};if(t===1){for(let s=0;s<e;s++)r(0,s);return n}if(e===1){for(let s=0;s<t;s++)r(s,0);return n}for(let s=0;s<e;s++)r(0,s);for(let s=1;s<t;s++)r(s,e-1);for(let s=e-2;s>=0;s--)r(t-1,s);for(let s=t-2;s>=1;s--)r(s,0);return n}};Mo.typeName="PolygonMesh";let Br=Mo;const cb=16,vd=128,Ad=64,Xc=5,zc=6;function lb(i){const t=hb(i),e=ub(i);return gb(t,e)}function hb(i){const t={layer:"0",lineType:"ByLayer",flag:0,elevation:0,startWidth:0,endWidth:0,meshM:0,meshN:0,smoothType:0};for(;!i.atEndOfObject&&!i.atEof&&!i.atExtendedData;){const e=i.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 5:t.objectId=String(e.value);break;case 330:t.ownerId=String(e.value);break;case 8:t.layer=String(e.value);break;case 6:t.lineType=String(e.value);break;case 62:t.colorIndex=r;break;case 420:t.trueColor=r;break;case 70:t.flag=r;break;case 10:case 20:break;case 30:t.elevation=r;break;case 40:t.startWidth=r;break;case 41:t.endWidth=r;break;case 71:t.meshM=r;break;case 72:t.meshN=r;break;case 75:t.smoothType=r;break}}return t}function ub(i){const t=[];for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)!==0){i.readItem();continue}const n=String(e.value).toUpperCase();if(n==="SEQEND"){i.readItem(),i.skipToEndOfObject();break}if(n==="ENDSEC"||n==="ENDBLK"||n==="EOF"||n!=="VERTEX")break;i.readItem(),t.push(db(i))}return t}function db(i){const t={x:0,y:0,z:0,bulge:0,flag:0,faces:[]},e=[],n=[];for(;!i.atEndOfObject&&!i.atEof&&!i.atExtendedData;){const s=i.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 10:t.x=o,n[0]=Math.trunc(o);break;case 20:t.y=o;break;case 30:t.z=o;break;case 11:n[1]=Math.trunc(o);break;case 12:n[2]=Math.trunc(o);break;case 13:n[3]=Math.trunc(o);break;case 42:t.bulge=o;break;case 70:t.flag=o;break;case 71:e[0]=Math.trunc(o);break;case 72:e[1]=Math.trunc(o);break;case 73:e[2]=Math.trunc(o);break;case 74:e[3]=Math.trunc(o);break}}if(!!(t.flag&vd)&&!(t.flag&Ad)){const s=e.length>0?e:n;t.faces=s.filter(a=>a!==0&&a!=null)}return t}function gb(i,t){const e=!!(i.flag&1),n=!!(i.flag&8),r=!!(i.flag&16),s=!!(i.flag&64),a=!!(i.flag&32),o=[],c=[],l=[];for(const u of t)u.flag&cb||(s&&u.flag&vd?u.flag&Ad?(o.push({x:u.x,y:u.y,z:u.z}),c.push(u.bulge)):u.faces.length>=3&&l.push([...u.faces]):(o.push({x:u.x,y:u.y,z:u.z}),c.push(u.bulge)));let h;if(r)h=new Br(i.meshM,i.meshN,o,e,a);else if(s)h=new Nr(o,l);else if(n){let u=Wn.SimplePoly;i.flag&4&&(i.smoothType===zc?u=Wn.CubicSplinePoly:i.smoothType===Xc&&(u=Wn.QuadSplinePoly)),h=new Or(u,o,e)}else{let u=ln.SimplePoly;i.flag&2?u=ln.FitCurvePoly:i.flag&4&&(i.smoothType===zc?u=ln.CubicSplinePoly:i.smoothType===Xc&&(u=ln.QuadSplinePoly)),h=new Mr(u,o,i.elevation,e,i.startWidth,i.endWidth,c)}return fb(h,i),h}function fb(i,t){t.objectId&&(i.objectId=t.objectId),t.ownerId&&(i.ownerId=t.ownerId),i.layer=t.layer,i.lineType=t.lineType,t.colorIndex!=null&&(i.color.colorIndex=t.colorIndex),t.trueColor!=null&&i.color.setRGBValue(t.trueColor)}function kd(i){switch(i.toUpperCase()){case"LINE":return new hi(new b,new b);case"CIRCLE":return new sr(new b,1);case"ARC":return new ir(new b,1,0,Math.PI/2);case"POINT":return new mr;case"RAY":return new br;case"XLINE":return new kr;case"ELLIPSE":return new ar(new b,x.Z_AXIS,x.X_AXIS,1,1,0,Math.PI*2);case"SOLID":return new xr;case"TRACE":return new fi;case"3DFACE":return new or;case"LWPOLYLINE":return new Lt;case"INSERT":return new ce("");case"TEXT":return new Sn;case"MTEXT":return new Ze;case"SPLINE":return pi.fromControlPoints([{x:0,y:0,z:0},{x:1,y:0,z:0},{x:2,y:0,z:0},{x:3,y:0,z:0}],[0,0,0,0,1,1,1,1],void 0,3,!1);case"ATTDEF":return new rr;case"ATTRIB":return new ni;case"SHAPE":return new _r;case"TOLERANCE":return new hr;case"LEADER":return new ur;case"VIEWPORT":return new vr;case"IMAGE":return new gi;case"WIPEOUT":return new Ar;case"ACAD_PROXY_ENTITY":return new yr;case"OLEFRAME":return new di;case"OLE2FRAME":return new pr;case"HATCH":return new ai;case"MLINE":return new gr;case"MULTILEADER":case"MLEADER":return new dr;case"ACAD_TABLE":return new wr("",1,1);case"3DSOLID":return new ti("");default:return null}}function ua(i,t){let e=t;if(e==null){const s=i.readItem();if(!s||Number(s.code)!==0)return s&&i.pushBackItem(s),null;e=String(s.value)}const n=e.toUpperCase();if(n==="POLYLINE")return lb(i);if(n==="DIMENSION")return rb(i);const r=kd(e);return r?(r.dxfIn(i),r):null}class Pd{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 n=Date.now(),r=this.generateTaskId();try{return await this.executeInWorker(r,t,e||this.config.workerUrl)}catch(s){const a=Date.now()-n,o=s instanceof Error?s.message:String(s);return{success:!1,error:o,errorCode:o.toLowerCase().includes("timed out")?"worker_timeout":void 0,duration:a}}}async executeInWorker(t,e,n){const r=Date.now();return new Promise((s,a)=>{const o=this.getAvailableWorker(n),c=setTimeout(()=>{this.cleanupTask(t),this.releaseWorker(o),a(new Error(`Worker operation timed out after ${this.config.timeout}ms`))},this.config.timeout);this.pendingTasks.set(t,{resolve:d=>{clearTimeout(c),this.releaseWorker(o),s(d)},reject:d=>{clearTimeout(c),this.releaseWorker(o),a(d)},timeout:c});const l=d=>{const{id:g,success:f,data:p,error:m,errorCode:y}=d.data;if(g!==t)return;this.cleanupTask(t);const _=Date.now()-r;s(f?{success:!0,data:p,duration:_}:{success:!1,error:m,errorCode:y,duration:_})},h=d=>{this.cleanupTask(t),a(new Error(`Worker error: ${d.message}`))};o.addEventListener("message",l),o.addEventListener("error",h);const u={id:t,input:e};e instanceof ArrayBuffer?o.postMessage(u,[e]):o.postMessage(u)})}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[n,r]of this.workers)if(!r.isBusy)return r.isBusy=!0,r.worker;if(this.workers.size<this.config.maxConcurrentWorkers){const n=new Worker(t,{type:"module"}),r=this.generateWorkerId(),s={worker:n,isBusy:!0,id:r,createdAt:new Date};return this.workers.set(r,s),n}const e=Array.from(this.workers.values()).sort((n,r)=>n.createdAt.getTime()-r.createdAt.getTime())[0];return e.isBusy=!0,e.worker}releaseWorker(t){for(const[e,n]of this.workers)if(n.worker===t){n.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 Sd{constructor(t){this.framework=new Pd(t)}async execute(t,e){return this.framework.execute(t,e)}getStats(){return this.framework.getStats()}destroy(){this.framework.destroy()}}function pb(i){return new Sd(i)}class mb{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:n}=t.data;try{const r=await this.executeTask(n);this.sendResponse(e,!0,r)}catch(r){this.sendResponse(e,!1,void 0,r instanceof Error?r.message:String(r))}}}sendResponse(t,e,n,r,s){const a={id:t,success:e,data:n,error:r,errorCode:s};try{self.postMessage(a)}catch(o){const c=o instanceof Error?o.message:String(o);self.postMessage({id:t,success:!1,error:c,errorCode:this.classifyPostMessageError(c)})}}classifyPostMessageError(t){const e=t.toLowerCase();return e.includes("out of memory")||e.includes("data cannot be cloned")?"worker_oom":"worker_error"}}var Id=(i=>(i[i.Vertex=0]="Vertex",i[i.CurveFitVertex=1]="CurveFitVertex",i[i.SplineFitVertex=8]="SplineFitVertex",i[i.SplineCtlVertex=9]="SplineCtlVertex",i))(Id||{});const Oo=class Oo extends q{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new b,this._bulge=0,this._startWidth=0,this._endWidth=0,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get bulge(){return this._bulge}set bulge(t){this._bulge=t}get startWidth(){return this._startWidth}set startWidth(t){this._startWidth=t}get endWidth(){return this._endWidth}set endWidth(t){this._endWidth=t}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new z().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subMoveGripPointsAt(t,e){return ue(t,e,this._position),this}subGetOsnapPoints(t,e,n,r){(t===k.EndPoint||t===k.Node)&&r.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint2d(10,this.position),t.writeDouble(40,this.startWidth),t.writeDouble(41,this.endWidth),t.writeDouble(42,this.bulge),t.writeInt16(70,this.vertexType),this}};Oo.typeName="2dVertex";let da=Oo;var Ed=(i=>(i[i.SimpleVertex=0]="SimpleVertex",i[i.ControlVertex=1]="ControlVertex",i[i.FitVertex=2]="FitVertex",i))(Ed||{});const No=class No extends q{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new b,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new z().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subMoveGripPointsAt(t,e){return ue(t,e,this._position),this}subGetOsnapPoints(t,e,n,r){(t===k.EndPoint||t===k.Node)&&r.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,this.position),t.writeInt16(70,this.vertexType|32),this}};No.typeName="3dVertex";let ga=No;exports.ACAD_APPID=Ws;exports.ACAD_LAYERFILTERS_NAME=rs;exports.ACCM_DEFAULT_UI_YIELD_BUDGET_MS=qn;exports.ACDB_DXF_MTEXT_CHUNK_CHARS=Dn;exports.ACDB_DXF_XDATA_BINARY_MAX_BYTES=eh;exports.ACDB_DXF_XDATA_STRING_MAX_BYTES=th;exports.ACDB_GRIPCOLOR_DEFAULT=mh;exports.ACDB_GRIPCOLOR_MAX=qs;exports.ACDB_GRIPCOLOR_MIN=$s;exports.ACDB_GRIPHOT_DEFAULT=yh;exports.ACDB_GRIPHOT_MAX=Zs;exports.ACDB_GRIPHOT_MIN=Ks;exports.ACDB_GRIPOBJLIMIT_MAX=Sp;exports.ACDB_GRIPOBJLIMIT_MIN=Pp;exports.ACDB_GRIPSIZE_DEFAULT=bh;exports.ACDB_GRIPSIZE_MAX=Js;exports.ACDB_GRIPSIZE_MIN=Qs;exports.ACDB_GRIPS_MAX=Ep;exports.ACDB_GRIPS_MIN=Ip;exports.ACDB_PROXY_GRAPHIC_CHUNK_SIZE=ym;exports.ACGI_DARK_THEME_FOREGROUND=Qn;exports.ACGI_LIGHT_THEME_FOREGROUND=Jn;exports.ACGI_MODEL_SPACE_BACKGROUND=hh;exports.ACGI_PAPER_SPACE_BACKGROUND=gp;exports.ACLY_DICTIONARY_NAME=In;exports.ACTIVE_VPORT_NAME=An;exports.AC_DB_SYSTEM_VARIABLE_NAMES=sm;exports.AcCmColor=j;exports.AcCmColorUtil=ee;exports.AcCmEntityColor=Od;exports.AcCmErrors=Et;exports.AcCmEventDispatcher=Nd;exports.AcCmEventManager=lt;exports.AcCmLoader=Qd;exports.AcCmLoadingManager=$c;exports.AcCmObject=Ds;exports.AcCmPerformanceCollector=pa;exports.AcCmTask=Hc;exports.AcCmTaskScheduler=Wc;exports.AcCmTransparency=ht;exports.AcCmUiYieldGate=Hr;exports.AcDb2dPolyline=Mr;exports.AcDb2dVertex=da;exports.AcDb2dVertexType=Id;exports.AcDb3PointAngularDimension=Sr;exports.AcDb3dPolyline=Or;exports.AcDb3dSolid=ti;exports.AcDb3dVertex=ga;exports.AcDb3dVertexType=Ed;exports.AcDbAbstractViewTableRecord=Ga;exports.AcDbAlignedDimension=En;exports.AcDbAngleUnits=Tt;exports.AcDbArc=ir;exports.AcDbArcDimension=Ir;exports.AcDbAttribute=ni;exports.AcDbAttributeDefinition=rr;exports.AcDbAttributeFlags=mt;exports.AcDbAttributeMTextFlag=Jt;exports.AcDbBaseWorker=mb;exports.AcDbBatchProcessing=qh;exports.AcDbBlockReference=ce;exports.AcDbBlockScaling=wh;exports.AcDbBlockTable=Yu;exports.AcDbBlockTableRecord=nt;exports.AcDbBlockTableRecordFlag=zn;exports.AcDbChangeApplier=$u;exports.AcDbChangeRecorder=qu;exports.AcDbCircle=sr;exports.AcDbCodePage=Oa;exports.AcDbCurve=At;exports.AcDbDataGenerator=Mu;exports.AcDbDatabase=sa;exports.AcDbDatabaseConverter=Va;exports.AcDbDatabaseConverterManager=ie;exports.AcDbDatabaseTransaction=Ku;exports.AcDbDatabaseTransactionManager=Qu;exports.AcDbDiametricDimension=Er;exports.AcDbDictionary=Vt;exports.AcDbDimArrowType=dd;exports.AcDbDimStyleTable=Xu;exports.AcDbDimStyleTableRecord=Ft;exports.AcDbDimTextHorizontal=Zh;exports.AcDbDimTextVertical=ja;exports.AcDbDimVerticalJustification=tu;exports.AcDbDimZeroSuppression=Qh;exports.AcDbDimZeroSuppressionAngular=Jh;exports.AcDbDimension=ke;exports.AcDbDuplicateRecordCloning=Au;exports.AcDbDwgVersion=xt;exports.AcDbDxfCode=fa;exports.AcDbDxfDocumentReader=Pu;exports.AcDbDxfFiler=Me;exports.AcDbDxfFilerStatus=sh;exports.AcDbDxfObjectsReader=ku;exports.AcDbEllipse=ar;exports.AcDbEntity=q;exports.AcDbFace=or;exports.AcDbFcf=hr;exports.AcDbFileType=Gn;exports.AcDbFilter=yu;exports.AcDbFormatter=Ou;exports.AcDbFrame=fr;exports.AcDbGradientPatternType=Cu;exports.AcDbGroup=mu;exports.AcDbHatch=ai;exports.AcDbHatchObjectType=Tu;exports.AcDbHatchPatternType=Un;exports.AcDbHatchStyle=Lu;exports.AcDbHostApplicationServices=tr;exports.AcDbIndex=_u;exports.AcDbIntersect=ze;exports.AcDbLayerFilter=bu;exports.AcDbLayerIndex=xu;exports.AcDbLayerTable=zu;exports.AcDbLayerTableRecord=ki;exports.AcDbLayout=vi;exports.AcDbLayoutDictionary=Wu;exports.AcDbLayoutManager=Lh;exports.AcDbLeader=ur;exports.AcDbLeaderAnnotationType=Ju;exports.AcDbLine=hi;exports.AcDbLineSpacingStyle=Pr;exports.AcDbLinearUnits=ot;exports.AcDbLinetypeTable=Vu;exports.AcDbLinetypeTableRecord=Ne;exports.AcDbMLeader=dr;exports.AcDbMLeaderContentType=cn;exports.AcDbMLeaderDirectionType=ed;exports.AcDbMLeaderLineType=Hn;exports.AcDbMLeaderStyle=ss;exports.AcDbMLeaderTextAttachmentDirection=td;exports.AcDbMLine=gr;exports.AcDbMLineFlags=id;exports.AcDbMLineJustification=nd;exports.AcDbMText=Ze;exports.AcDbMlineStyle=Ua;exports.AcDbNativeDxfConverter=Su;exports.AcDbObject=vt;exports.AcDbObjectIterator=kn;exports.AcDbOle2Frame=pr;exports.AcDbOleFrame=di;exports.AcDbOleObjectType=cd;exports.AcDbOleTileMode=ld;exports.AcDbOpenDatabaseError=ci;exports.AcDbOpenMode=Pn;exports.AcDbOrdinateDimension=Lr;exports.AcDbOsnapMode=k;exports.AcDbPatParser=Ka;exports.AcDbPatSvgRenderer=la;exports.AcDbPlotPaperUnits=vh;exports.AcDbPlotRotation=Ah;exports.AcDbPlotSettings=Eh;exports.AcDbPlotShadePlotResLevel=Ph;exports.AcDbPlotShadePlotType=Sh;exports.AcDbPlotStdScaleType=Ih;exports.AcDbPlotType=kh;exports.AcDbPoint=mr;exports.AcDbPoly2dType=ln;exports.AcDbPoly3dType=Wn;exports.AcDbPolyFaceMesh=Nr;exports.AcDbPolyFaceMeshFace=xd;exports.AcDbPolyFaceMeshVertex=_d;exports.AcDbPolygonMesh=Br;exports.AcDbPolygonMeshVertex=wd;exports.AcDbPolyline=Lt;exports.AcDbPredefinedAcadIsoPat=Eu;exports.AcDbPredefinedAcadPat=jm;exports.AcDbProxyEntity=yr;exports.AcDbProxyGraphic=ta;exports.AcDbProxyGraphicBitStream=xh;exports.AcDbProxyGraphicByteStream=Xt;exports.AcDbProxyGraphicEndOfBufferError=Te;exports.AcDbProxyGraphicType=su;exports.AcDbRadialDimension=Tr;exports.AcDbRasterImage=gi;exports.AcDbRasterImageClipBoundaryType=hd;exports.AcDbRasterImageDef=wu;exports.AcDbRasterImageImageDisplayOpt=ud;exports.AcDbRay=br;exports.AcDbRegAppTable=Hu;exports.AcDbRegAppTableRecord=cr;exports.AcDbRegenerator=Kh;exports.AcDbRenderingCache=De;exports.AcDbResultBuffer=qe;exports.AcDbRotatedDimension=Cr;exports.AcDbShape=_r;exports.AcDbSolid=xr;exports.AcDbSortentsTable=vu;exports.AcDbSpline=pi;exports.AcDbSymbolTable=de;exports.AcDbSymbolTableRecord=Pe;exports.AcDbSysVarManager=bt;exports.AcDbSystemVariables=E;exports.AcDbTable=wr;exports.AcDbText=Sn;exports.AcDbTextHorizontalMode=jh;exports.AcDbTextStyleTable=li;exports.AcDbTextStyleTableRecord=Jr;exports.AcDbTextVerticalMode=Gh;exports.AcDbTrace=fi;exports.AcDbTransaction=qa;exports.AcDbTransactionManager=gy;exports.AcDbUcsTable=ju;exports.AcDbUcsTableRecord=nu;exports.AcDbUndoStack=Zu;exports.AcDbUnitsValue=et;exports.AcDbViewTable=Gu;exports.AcDbViewTableRecord=iu;exports.AcDbViewport=vr;exports.AcDbViewportTable=Uu;exports.AcDbViewportTableRecord=Be;exports.AcDbWipeout=Ar;exports.AcDbWorkerApi=Sd;exports.AcDbWorkerManager=Pd;exports.AcDbXline=kr;exports.AcDbXrecord=Ha;exports.AcGeArea2d=Kt;exports.AcGeBox2d=wt;exports.AcGeBox3d=z;exports.AcGeCatmullRomCurve3d=Fl;exports.AcGeCircArc2d=it;exports.AcGeCircArc3d=St;exports.AcGeCurve2d=Tn;exports.AcGeEllipseArc2d=pe;exports.AcGeEllipseArc3d=he;exports.AcGeEuler=hg;exports.AcGeGeometryUtil=Pt;exports.AcGeLine2d=Gt;exports.AcGeLine3d=Ct;exports.AcGeLoop2d=pn;exports.AcGeMathUtil=T;exports.AcGeMatrix2d=mi;exports.AcGeMatrix3d=F;exports.AcGeNurbsCurve=Yt;exports.AcGePlane=Wr;exports.AcGePoint2d=L;exports.AcGePoint3d=b;exports.AcGePolyline2d=Q;exports.AcGeQuaternion=_n;exports.AcGeShape2d=Pa;exports.AcGeSpline3d=Ut;exports.AcGeTol=Y;exports.AcGeVector2d=at;exports.AcGeVector3d=x;exports.AcGiContext=qr;exports.AcGiViewport=dh;exports.AcLyBoolExpr=ou;exports.AcLyLayerFilter=is;exports.AcLyLayerFilterDialogResult=cu;exports.AcLyLayerFilterTree=Ae;exports.AcLyLayerGroup=lu;exports.AcTrStringUtil=qd;exports.ByBlock=ae;exports.ByLayer=dt;exports.DEBUG_MODE=Ud;exports.DEFAULT_ACGI_CONTEXT=pp;exports.DEFAULT_GRADIENT_HATCH_NAME=ph;exports.DEFAULT_HATCH_PATTERN_IMPERIAL=_p;exports.DEFAULT_HATCH_PATTERN_METRIC=gh;exports.DEFAULT_LINE_TYPE=Oe;exports.DEFAULT_MLEADER_STYLE=we;exports.DEFAULT_MLINE_STYLE=xe;exports.DEFAULT_TEXT_STYLE=st;exports.DEFAULT_TOL=yi;exports.DEG2RAD=ma;exports.DefaultLoadingManager=qc;exports.FLOAT_TOL=ut;exports.HATCH_PATTERN_SOLID=Ge;exports.HATCH_PATTERN_USER=fh;exports.MLIGHTCAD_APPID=Hs;exports.ORIGIN_POINT_2D=tg;exports.ORIGIN_POINT_3D=wa;exports.RAD2DEG=ya;exports.RAW_COLOR_TYPE_ACI=ns;exports.RAW_COLOR_TYPE_BY_BLOCK=ii;exports.RAW_COLOR_TYPE_BY_LAYER=ts;exports.RAW_COLOR_TYPE_RGB=es;exports.RAW_COLOR_TYPE_WINDOW_BG=ru;exports.TAU=V;exports.TEMP_OBJECT_ID_PREFIX=Le;exports.VPORT_FALLBACK_CENTER_2D=xp;exports.VPORT_FALLBACK_LLC=wp;exports.VPORT_FALLBACK_URC=vp;exports.VPORT_FALLBACK_VIEW_DIR=Ap;exports.VPORT_FALLBACK_VIEW_TARGET=kp;exports.accmYieldForPaint=Uc;exports.accmYieldToUi=Ln;exports.acdbAssignWorkingDatabase=ch;exports.acdbChunkBinaryByMaxBytes=rh;exports.acdbChunkDxfMTextContents=nh;exports.acdbChunkUtf8ByMaxBytes=ih;exports.acdbCollectChangeEntities=ra;exports.acdbCreateDxfPairReader=Jl;exports.acdbCreateEntityForDxfIn=kd;exports.acdbCreateWorkerApi=pb;exports.acdbDecodeMLeaderStyleRawColor=re;exports.acdbDwgCodePageToEncoding=Wl;exports.acdbDxfInEntity=ua;exports.acdbDxfInHeader=au;exports.acdbDxfValueType=xi;exports.acdbEstimateDatabaseMemory=Ky;exports.acdbFormatMemoryEstimate=Zy;exports.acdbGetWorkingDatabase=lh;exports.acdbHasOsnapMode=C0;exports.acdbHexStringsToBytes=Ba;exports.acdbHostApplicationServices=Th;exports.acdbIsBinaryDxf=$l;exports.acdbLayerGroupsToResultBuffer=du;exports.acdbMakeAsciiDxfPairReader=Na;exports.acdbMakeBinaryDxfPairReader=Ql;exports.acdbMakeUtf8AsciiDxfPairReader=Zl;exports.acdbMaskToOsnapModes=L0;exports.acdbOsnapModesToMask=E0;exports.acdbParseFilterXRecordData=gu;exports.acdbPeekDxfHeaderInfo=ql;exports.acdbPreviewIconToDataUrl=yd;exports.acdbReadLayerFilterTree=hu;exports.acdbResultBufferToLayerGroups=Tm;exports.acdbSerializeLayerFilterTree=uu;exports.acdbSetHostApplicationServicesProvider=oh;exports.acdbSetLayoutManagerFactory=Tp;exports.acdbThumbnailImageToDataUrl=Qy;exports.acdbToggleOsnapMode=T0;exports.acdbWriteFilterXRecordData=pu;exports.acgeBasisFunction=Re;exports.acgeCalculateCurveLength=bl;exports.acgeCeilPowerOfTwo=hl;exports.acgeClamp=fe;exports.acgeComputeParameterValues=ml;exports.acgeDamp=Jc;exports.acgeDegToRad=ol;exports.acgeEuclideanModulo=ba;exports.acgeEvaluateNurbsPoint=Xn;exports.acgeFloorPowerOfTwo=ul;exports.acgeGenerateAveragedKnots=yl;exports.acgeGenerateChordKnots=mg;exports.acgeGenerateSqrtChordKnots=yg;exports.acgeGenerateUUID=Kc;exports.acgeGenerateUniformKnots=pg;exports.acgeGetOcsAngle=ye;exports.acgeGetOcsReferenceVector=Fe;exports.acgeIntPartLength=xa;exports.acgeInterpolateControlPoints=wg;exports.acgeInterpolateNurbsCurve=va;exports.acgeInverseLerp=Qc;exports.acgeIsAngleOnCcwSweep=fl;exports.acgeIsBetterDistanceAlign=Pl;exports.acgeIsBetween=dl;exports.acgeIsBetweenAngle=gl;exports.acgeIsPowerOfTwo=ll;exports.acgeLerp=_a;exports.acgeMapLinear=Zc;exports.acgeNormalizeAngle=He;exports.acgePingpong=tl;exports.acgePointLiesOnCircle2d=Al;exports.acgeRadToDeg=cl;exports.acgeRandFloat=rl;exports.acgeRandFloatSpread=sl;exports.acgeRandInt=il;exports.acgeRelativeEps=pl;exports.acgeSameCircle2d=kl;exports.acgeSeededRandom=al;exports.acgeSmootherstep=nl;exports.acgeSmoothstep=el;exports.acgeTransformOcsPointToWcs=_t;exports.acgeTransformWcsPointToOcs=Bt;exports.acgiContrastingForegroundColor=yp;exports.acgiForegroundColorForBackground=mp;exports.acgiIsLightBackground=uh;exports.acgiResolveSubEntityTraitsRgbFromBackground=bp;exports.clone=Fn;exports.deepClone=Fs;exports.defaults=Wt;exports.has=jc;exports.isEmpty=Gc;exports.isEqual=Ue;exports.log=Yn;exports.setLogLevel=Hd;
|
|
17
|
+
`)}stripInlineComment(t){const e=t.indexOf(";");return e<0?t:t.slice(0,e)}parseHeader(t){const e=t.indexOf(",");if(e<0){const s=t.trim();return s?{name:s,description:""}:null}const n=t.slice(0,e).trim(),r=t.slice(e+1).trim();return n?{name:n,description:r}:null}parseNumber(t){const e=Number(t.trim());return Number.isFinite(e)?e:null}parseLineDescriptor(t,e){const n=t.split(",").map(u=>u.trim()).filter(u=>u.length>0);if(n.length<5)return null;const r=this.parseNumber(n[0]),s=this.parseNumber(n[1]),a=this.parseNumber(n[2]),o=this.parseNumber(n[3]),c=this.parseNumber(n[4]);if(r==null||s==null||a==null||o==null||c==null)return null;const l=n.slice(5),h=[];for(const u of l){const d=this.parseNumber(u);if(d==null)return null;h.push(d)}return{angle:r,originX:s,originY:a,deltaX:o,deltaY:c,dashes:h,sourceLine:e}}flushCurrentPattern(t,e,n){t&&(t.pattern.lines.length===0&&n.push({line:t.headerLine,message:`Pattern "${t.pattern.name}" has no line descriptor.`,source:""}),e.push(t.pattern))}}const W=class W{static nextGradientId(t){return W.gradientIdCounter+=1,`acdb-pat-gradient-${t.toLowerCase()}-${W.gradientIdCounter}`}static packedRgbToCss(t){return`#${(t&16777215).toString(16).padStart(6,"0")}`}static gradientColorToCss(t,e){return typeof t=="number"?W.packedRgbToCss(t):t??e}static applyShadeTint(t,e){const n=C.clamp(e,0,1),r=n<.5?0:16777215,s=n<.5?1-n*2:n*2-1,a=t>>16&255,o=t>>8&255,c=t&255,l=r>>16&255,h=r>>8&255,u=r&255;return Math.round(a+(l-a)*s)*65536+Math.round(o+(h-o)*s)*256+Math.round(c+(u-c)*s)}static resolveGradientColors(t){const e="#2563eb",n="#f8fafc",r=W.gradientColorToCss(t.startColor,e);if(t.oneColorMode&&t.endColor==null){if(typeof t.startColor=="number"){const s=W.applyShadeTint(t.startColor,t.shadeTintValue??.5);return{start:r,end:W.packedRgbToCss(s)}}return{start:r,end:(t.shadeTintValue??.5)<.5?"#000000":"#ffffff"}}return{start:r,end:W.gradientColorToCss(t.endColor,n)}}static renderGradientStops(t){return t.map(e=>`<stop offset="${(C.clamp(e.offset,0,1)*100).toFixed(2)}%" stop-color="${e.color}" />`).join("")}static getGradientVector(t){return{x:Math.cos(t),y:-Math.sin(t)}}static isSolidPattern(t){return t.name.trim().toUpperCase()===Ue}static renderBackground(t,e,n){return`<rect x="${-t/2}" y="${-e/2}" width="${t}" height="${e}" fill="${n}" />`}static estimateUnitScale(t){const e=[];for(const s of t.lines){e.push(Math.abs(s.deltaX),Math.abs(s.deltaY));for(const a of s.dashes)e.push(Math.abs(a))}const n=e.filter(s=>s>W.EPSILON);if(n.length===0)return 1;const r=n.sort((s,a)=>s-a);return r[Math.floor(r.length/2)]||1}static segmentToSvgPath(t){return`M ${t.x1.toFixed(2)} ${(-t.y1).toFixed(2)} L ${t.x2.toFixed(2)} ${(-t.y2).toFixed(2)}`}static buildDashSegments(t,e,n,r,s,a,o){const c=t.dashes;if(c.length===0)return[{x1:r+a*e,y1:s+o*e,x2:r+a*n,y2:s+o*n}];const l=c.reduce((g,f)=>g+Math.abs(f),0);if(l<=W.EPSILON)return[{x1:r+a*e,y1:s+o*e,x2:r+a*n,y2:s+o*n}];const h=[],u=Math.ceil((n-e)/l)+2;let d=e-l;for(let g=0;g<u;g++){let f=d;for(const p of c){const m=Math.abs(p),y=f+m;if(p>0||p===0){const _=C.clamp(f,e,n),v=C.clamp(y,e,n);v>_?h.push({x1:r+a*_,y1:s+o*_,x2:r+a*v,y2:s+o*v}):p===0&&_>=e&&_<=n&&h.push({x1:r+a*(_-.35),y1:s+o*(_-.35),x2:r+a*(_+.35),y2:s+o*(_+.35)})}f=y}d+=l}return h}static renderFamily(t,e){const n=C.degToRad(t.angle),r=Math.cos(n),s=Math.sin(n),a=-s,o=r,c=r*t.deltaX+a*t.deltaY,l=s*t.deltaX+o*t.deltaY,h=Math.hypot(c,l),u=h<=W.EPSILON?1:Math.max(1,Math.ceil(e*2/h)+1),d=Math.floor(u/2),g=-e*1.5,f=e*1.5,p=[];for(let m=-d;m<=d;m++){const y=t.originX+c*m,_=t.originY+l*m,v=W.buildDashSegments(t,g,f,y,_,r,s);for(const w of v)p.push(W.segmentToSvgPath(w))}return`<path d="${p.join(" ")}" fill="none" />`}static renderLinearGradientDef(t,e,n,r,s){const a=W.getGradientVector(e),o=C.clamp(n,-1,1)*r*.5,c=a.x*o,l=a.y*o;return[`<linearGradient id="${t}" gradientUnits="userSpaceOnUse"`,` x1="${(-a.x*r+c).toFixed(2)}"`,` y1="${(-a.y*r+l).toFixed(2)}"`,` x2="${(a.x*r+c).toFixed(2)}"`,` y2="${(a.y*r+l).toFixed(2)}">`,W.renderGradientStops(s),"</linearGradient>"].join("")}static renderRadialGradientDef(t,e,n,r,s){return[`<radialGradient id="${t}" gradientUnits="userSpaceOnUse"`,` cx="${e.toFixed(2)}" cy="${n.toFixed(2)}" r="${r.toFixed(2)}"`,` fx="${e.toFixed(2)}" fy="${n.toFixed(2)}">`,W.renderGradientStops(s),"</radialGradient>"].join("")}static renderGradientDef(t,e,n,r,s,a,o){const c=e.toUpperCase(),l=c.startsWith("INV"),h=c.replace(/^INV/,""),u=l?n.end:n.start,d=l?n.start:n.end,g=Math.hypot(a,o)/2,f=W.getGradientVector(r),p=C.clamp(s,-1,1),m=f.x*p*a*.25,y=f.y*p*o*.25;switch(h){case"CYLINDER":{const _=C.clamp(.5+p*.45,.05,.95);return W.renderLinearGradientDef(t,r,0,g,[{offset:0,color:u},{offset:_,color:d},{offset:1,color:u}])}case"SPHERICAL":return W.renderRadialGradientDef(t,m,y,g,[{offset:0,color:d},{offset:1,color:u}]);case"HEMISPHERICAL":return W.renderRadialGradientDef(t,m+f.x*a*.18,y+f.y*o*.18,g*.92,[{offset:0,color:d},{offset:.72,color:u},{offset:1,color:u}]);case"CURVED":return W.renderRadialGradientDef(t,-f.x*a*.95+m,-f.y*o*.95+y,g*1.65,[{offset:0,color:u},{offset:.55,color:u},{offset:1,color:d}]);case"LINEAR":default:return W.renderLinearGradientDef(t,r,s,g,[{offset:0,color:u},{offset:1,color:d}])}}renderPattern(t,e={}){const n=e.width??260,r=e.height??160,s=e.stroke??"#1f2937",a=e.strokeWidth??1.3,o=e.background??"#ffffff",c=`${-n/2} ${-r/2} ${n} ${r}`;if(W.isSolidPattern(t))return[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${c}" width="${n}" height="${r}">`,W.renderBackground(n,r,o),`<rect x="${-n/2}" y="${-r/2}" width="${n}" height="${r}" fill="${s}" />`,"</svg>"].join("");const l=W.estimateUnitScale(t),u=Math.min(n,r)*.18/Math.max(l,W.EPSILON),d={...t,lines:t.lines.map(p=>({...p,originX:p.originX*u,originY:p.originY*u,deltaX:p.deltaX*u,deltaY:p.deltaY*u,dashes:p.dashes.map(m=>m*u)}))},g=Math.hypot(n,r)*.75,f=d.lines.map(p=>W.renderFamily(p,g)).join("");return[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${c}" width="${n}" height="${r}">`,W.renderBackground(n,r,o),`<g stroke="${s}" stroke-width="${a.toFixed(2)}" stroke-linecap="round">`,f,"</g>","</svg>"].join("")}renderGradient(t,e={}){const n=e.width??260,r=e.height??160,s=e.background??"#ffffff",a=e.angle??0,o=e.shift??0,c=`${-n/2} ${-r/2} ${n} ${r}`,l=W.nextGradientId(t),h=W.resolveGradientColors(e),u=W.renderGradientDef(l,t,h,a,o,n,r);return[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${c}" width="${n}" height="${r}">`,W.renderBackground(n,r,s),"<defs>",u,"</defs>",`<rect x="${-n/2}" y="${-r/2}" width="${n}" height="${r}" fill="url(#${l})" />`,"</svg>"].join("")}};W.EPSILON=1e-9,W.gradientIdCounter=0;let Aa=W;function zd(i){if(!i||i.length===0)return;const t=Ab(i);if(t)return Pa(t,"image/bmp")}function vb(i){if(!(!i||i.length===0))return i.length>=8&&i[0]===137&&i[1]===80&&i[2]===78&&i[3]===71?Pa(i,"image/png"):i.length>=3&&i[0]===255&&i[1]===216&&i[2]===255?Pa(i,"image/jpeg"):zd(i)}function Pa(i,t){let e="";for(let n=0;n<i.length;n++)e+=String.fromCharCode(i[n]);return`data:${t};base64,${btoa(e)}`}function Ab(i){if(i.length>=14&&i[0]===66&&i[1]===77)return i;if(i.length<40)return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=t.getUint32(0,!0);if(e<12||e>i.length)return;const n=t.getUint16(14,!0),r=t.getUint32(32,!0),s=n<=8?r>0?r:1<<n:r>0?r:0,a=e===12?s*3:s*4,o=14+e+a;if(o>14+i.length)return;const c=14+i.length,l=new Uint8Array(14),h=new DataView(l.buffer);l[0]=66,l[1]=77,h.setUint32(2,c,!0),h.setUint32(6,0,!0),h.setUint32(10,o,!0);const u=new Uint8Array(c);return u.set(l,0),u.set(i,14),u}var Tr=(i=>(i[i.AtLeast=1]="AtLeast",i[i.Exactly=2]="Exactly",i))(Tr||{});const Bo=class Bo extends q{get dxfTypeName(){return"DIMENSION"}constructor(){super(),this._dimBlockId=null,this._dimBlockPosition=new b,this._dxfDefinitionPoint=new b,this._dimensionStyleName=null,this._dimensionText=null,this._textLineSpacingFactor=1,this._textLineSpacingStyle=1,this._textPosition=new b,this._textRotation=0,this._horizontalRotation=0,this._dimensionType=0,this._attachmentPoint=exports.AcGiMTextAttachmentPoint.MiddleCenter,this._dxfVersion=0,this._normal=new x(0,0,1),this._dimBlockRotation=0}get dimBlockId(){return this._dimBlockId}set dimBlockId(t){this._dimBlockId=t}get dimBlockPosition(){return this._dimBlockPosition}set dimBlockPosition(t){this._dimBlockPosition.copy(t)}get dimensionStyleName(){return this._dimensionStyleName}set dimensionStyleName(t){this._dimensionStyleName=t,this._dimStyle=void 0}get dimensionStyle(){if(this._dimStyle==null){let t;this.dimensionStyleName&&(t=this.database.tables.dimStyleTable.getAt(this.dimensionStyleName)),t==null&&(t=new Dt),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}get horizontalRotation(){return this._horizontalRotation}set horizontalRotation(t){this._horizontalRotation=t}get dimensionType(){return this._dimensionType}set dimensionType(t){this._dimensionType=t}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get dxfVersion(){return this._dxfVersion}set dxfVersion(t){this._dxfVersion=t}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get properties(){return this.getBaseProperties()}getBaseProperties(){return{type:this.type,groups:[this.getGeneralProperties(),this.getDimensionProperties()]}}transformBy(t){const e=this._textPosition.clone(),n=this._textPosition.clone().add(new x(Math.cos(this._textRotation),Math.sin(this._textRotation),0));this._dimBlockPosition.applyMatrix4(t),this._textPosition.applyMatrix4(t),this._normal.transformDirection(t);const r=new x(1,0,0).transformDirection(t);r.lengthSq()>0&&(this._dimBlockRotation+=Math.atan2(r.y,r.x)),e.applyMatrix4(t),n.applyMatrix4(t);const s=new x(n).sub(e);return s.lengthSq()>0&&(this._textRotation=Math.atan2(s.y,s.x)),this.subTransformBy(t),this}subGetOsnapPoints(t,e,n,r,s){const a=this.getDimBlockTableRecord();if(!a)return;const o=this.getFullDimBlockTransform(),c=new b(e).applyMatrix4(o.clone().invert()),l=new b(n).applyMatrix4(o.clone().invert()),h=(u,d)=>{const g=[];u.subGetOsnapPoints(t,c,l,g,d,o),u instanceof le?g.forEach(f=>r.push(f.clone())):g.forEach(f=>r.push(new b(f).applyMatrix4(o)))};if(s){const u=a.getIdAt(s);if(u&&(h(u,s),r.length>0))return}for(const u of a.newIterator())h(u)}subWorldDraw(t){const e=this.getDimBlockTableRecord();if(e){const r=this.computeDimBlockTransform();return Xe.instance.draw(t,e,this.resolvedColor,[],!1,r,this._normal)}return t.group([])}subGetIntersectCurves(){const t=this.getDimBlockTableRecord();if(!t)return[];const e=this.getFullDimBlockTransform(),n=[];for(const r of t.newIterator())n.push(...mu(r.subGetIntersectCurves(),e));return n}getDimBlockGeometricExtents(){const t=new z,e=this.getDimBlockTableRecord();if(!e)return t;for(const n of e.newIterator())t.union(n.geometricExtents);return t.applyMatrix4(this.getFullDimBlockTransform()),t}getGeometricExtentsFromDimBlockOrPoints(t){const e=this.getDimBlockGeometricExtents();if(!e.isEmpty())return e;const n=new z;for(const r of t)n.expandByPoint(r);return this.hasExplicitTextPosition()&&n.expandByPoint(this.textPosition),n}hasExplicitTextPosition(){const{x:t,y:e,z:n}=this.textPosition;return t!==0||e!==0||n!==0}collectDimensionDefinitionGripPoints(){return[]}subGetGripPoints(){return this.collectDimensionDefinitionGripPoints().concat([this.textPosition])}subMoveGripPointsAt(t,e){const n=this.collectDimensionDefinitionGripPoints();return ft(t,r=>{r>=0&&r<n.length?n[r].add(e):r===n.length&&this.textPosition.add(e)}),this}getDimBlockTableRecord(){return this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0}getDimensionProperties(){return{groupName:"dimension",properties:[this.createProperty("dimensionStyleName","string",()=>this.dimensionStyleName??"",t=>{this.dimensionStyleName=t.trim()===""?null:t}),this.createProperty("dimensionText","string",()=>this.dimensionText??"",t=>{this.dimensionText=t}),this.createProperty("measurement","float",()=>this.getMeasurementPropertyValue()),this.createProperty("dimBlockId","string",()=>this.dimBlockId??""),...this.createPoint3dProperties("dimBlockPosition",()=>this.dimBlockPosition),...this.createPoint3dProperties("textPosition",()=>this.textPosition),this.createProperty("textRotation","float",()=>this.textRotation,t=>{this.textRotation=t}),this.createProperty("textLineSpacingFactor","float",()=>this.textLineSpacingFactor,t=>{this.textLineSpacingFactor=t}),this.createProperty("textLineSpacingStyle","enum",()=>this.textLineSpacingStyle,t=>{this.textLineSpacingStyle=t},[{label:Tr[1],value:1},{label:Tr[2],value:2}]),...this.createPoint3dProperties("normal",()=>this.normal)]}}createProperty(t,e,n,r,s){return{name:t,type:e,editable:r!=null,options:s,accessor:r?{get:n,set:r}:{get:n}}}createPoint3dProperties(t,e){return[this.createProperty(`${t}X`,"float",()=>e().x,n=>{e().x=n}),this.createProperty(`${t}Y`,"float",()=>e().y,n=>{e().y=n}),this.createProperty(`${t}Z`,"float",()=>e().z,n=>{e().z=n})]}getMeasurementPropertyValue(){return this.measurement}getFullDimBlockTransform(){const t=this.computeDimBlockTransform();if(this._normal.x===0&&this._normal.y===0&&this._normal.z===1)return t;const e=new D().setFromExtrusionDirection(this._normal);return new D().multiplyMatrices(e,t)}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}findPointOnLine1(t,e,n){const r=new b().subVectors(e,t).normalize();return new b(e).addScaledVector(r,n)}findPointOnLine2(t,e,n){const r=t.x+n*Math.cos(e),s=t.y+n*Math.sin(e);return{x:r,y:s}}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():exports.AcGiArrowType.Closed}computeDimBlockTransform(){const t=this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0,e=(t==null?void 0:t.origin)??b.ORIGIN,n=new D().makeTranslation(-e.x,-e.y,-e.z),r=new D().makeTranslation(this._dimBlockPosition.x,this._dimBlockPosition.y,this._dimBlockPosition.z),s=new D().makeRotationZ(this._dimBlockRotation);return new D().multiplyMatrices(r,new D().multiplyMatrices(s,n))}subTransformBy(t){}dxfOutFields(t){super.dxfOutFields(t);const e=this.dimensionStyleName!=null?this.database.tables.dimStyleTable.getAt(this.dimensionStyleName):void 0;return t.writeSubclassMarker("AcDbDimension"),t.writeInt16(280,this.dxfVersion),t.writeString(2,this.dimBlockId??void 0),t.writeString(3,this.dimensionStyleName??this.dimensionStyle.name),t.writePoint3d(10,this._dxfDefinitionPoint),t.writeString(1,this.dimensionText??""),t.writeAngle(53,this.textRotation),this.horizontalRotation!==0&&t.writeAngle(51,this.horizontalRotation),t.writePoint3d(11,this.textPosition),t.writeInt16(70,this.dimensionType),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.textLineSpacingStyle),t.writeDouble(41,this.textLineSpacingFactor),t.writeDouble(42,this.measurement),t.writeVector3d(210,this.normal),t.writeObjectId(340,e==null?void 0:e.objectId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbDimension");let e=this._dxfDefinitionPoint.x,n=this._dxfDefinitionPoint.y,r=this._dxfDefinitionPoint.z,s=this.textPosition.x,a=this.textPosition.y,o=this.textPosition.z,c=this.textRotation*180/Math.PI,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);if(g===100){t.pushBackItem(d);break}switch(g){case 1:this.dimensionText=String(d.value);break;case 2:this.dimBlockId=String(d.value);break;case 3:this.dimensionStyleName=String(d.value);break;case 10:e=f;break;case 20:n=f;break;case 30:r=f;break;case 11:s=f;break;case 21:a=f;break;case 31:o=f;break;case 41:this.textLineSpacingFactor=f;break;case 42:this.measurement=f;break;case 53:c=f;break;case 51:this.horizontalRotation=C.degToRad(f);break;case 70:this.dimensionType=f;break;case 71:this.attachmentPoint=f;break;case 72:this.textLineSpacingStyle=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break;case 280:this.dxfVersion=f;break}}return this._dxfDefinitionPoint.set(e,n,r),this.textPosition.copy(new b(s,a,o)),this.textRotation=c*Math.PI/180,this.normal.copy(new x(l,h,u)),this}};Bo.typeName="Dimension";let ke=Bo;const Do=class Do extends ke{constructor(t,e,n,r,s=null,a=null){super(),this._centerPoint=new b().copy(t),this._xLine1Point=new b().copy(e),this._xLine2Point=new b().copy(n),this._arcPoint=new b().copy(r),this.dimensionText=s,this.dimensionStyleName=a}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("centerPoint",()=>this.centerPoint),...this.createPoint3dProperties("xLine1Point",()=>this.xLine1Point),...this.createPoint3dProperties("xLine2Point",()=>this.xLine2Point),...this.createPoint3dProperties("arcPoint",()=>this.arcPoint)]}]}}collectDimensionDefinitionGripPoints(){return[this.centerPoint,this.xLine1Point,this.xLine2Point,this.arcPoint]}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.xLine1Point,this.xLine2Point,this.centerPoint,this.arcPoint])}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDb3PointAngularDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}dxfInFields(t){super.dxfInFields(t);const e=t.peekItem();let n=!1;if(e&&Number(e.code)===100){const M=String(e.value);M==="AcDb2LineAngularDimension"?(n=!0,t.atSubclassData("AcDb2LineAngularDimension")):M==="AcDb3PointAngularDimension"&&t.atSubclassData("AcDb3PointAngularDimension")}let r=this.xLine1Point.x,s=this.xLine1Point.y,a=this.xLine1Point.z,o=this.xLine2Point.x,c=this.xLine2Point.y,l=this.xLine2Point.z,h=this.centerPoint.x,u=this.centerPoint.y,d=this.centerPoint.z,g=this.arcPoint.x,f=this.arcPoint.y,p=this.arcPoint.z,m=!1,y=r,_=s,v=a,w=o,A=c,E=l;const I=()=>{if(n){this.xLine1Point=new b(r,s,a),this.xLine2Point=new b(h,u,d);const M=Pb({x:r,y:s},{x:y,y:_},{x:h,y:u},{x:w,y:A});M?this.centerPoint=new b(M.x,M.y,(a+E)/2):this.centerPoint=new b(y,_,v),this.arcPoint=new b(this._dxfDefinitionPoint.x,this._dxfDefinitionPoint.y,this._dxfDefinitionPoint.z);return}this.xLine1Point=new b(r,s,a),this.xLine2Point=new b(o,c,l),this.centerPoint=new b(h,u,d),m?this.arcPoint=new b(g,f,p):this.arcPoint=new b(this._dxfDefinitionPoint.x,this._dxfDefinitionPoint.y,this._dxfDefinitionPoint.z)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const M=t.readItem();if(!M)break;const T=Number(M.code),R=Number(M.value);switch(T){case 13:r=R;break;case 23:s=R;break;case 33:a=R;break;case 14:n?y=R:o=R;break;case 24:n?_=R:c=R;break;case 34:n?v=R:l=R;break;case 15:h=R;break;case 25:u=R;break;case 35:d=R;break;case 16:n?w=R:(g=R,m=!0);break;case 26:n?A=R:(f=R,m=!0);break;case 36:n?E=R:(p=R,m=!0);break}}return I(),this}};Do.typeName="3PointAngularDimension";let Mr=Do;function Pb(i,t,e,n){const r=t.x-i.x,s=t.y-i.y,a=n.x-e.x,o=n.y-e.y,c=r*o-s*a;if(Math.abs(c)<1e-12)return null;const l=((e.x-i.x)*o-(e.y-i.y)*a)/c;return{x:i.x+l*r,y:i.y+l*s}}const Fo=class Fo extends ke{constructor(t,e,n,r=null,s=null){super(),this._dimLinePoint=new b().copy(n),this._xLine1Point=new b().copy(t),this._xLine2Point=new b().copy(e),this._oblique=0,this._rotation=0,this.calculateRotation(),r?this.dimensionText=r:this.dimensionText=this._xLine1Point.distanceTo(this._xLine2Point).toFixed(3),this.dimensionStyleName=s}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("xLine1Point",()=>this.xLine1Point),...this.createPoint3dProperties("xLine2Point",()=>this.xLine2Point),...this.createPoint3dProperties("dimLinePoint",()=>this.dimLinePoint),this.createProperty("rotation","float",()=>this.rotation,e=>{this.rotation=e}),this.createProperty("oblique","float",()=>this.oblique,e=>{this.oblique=e})]}]}}collectDimensionDefinitionGripPoints(){return[this.xLine1Point,this.xLine2Point,this.dimLinePoint]}subMoveGripPointsAt(t,e){return super.subMoveGripPointsAt(t,e),this.calculateRotation(),this}subTransformBy(t){this._dimLinePoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t),this.calculateRotation()}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.xLine1Point,this.xLine2Point,this.dimLinePoint])}get isAppendArrow(){return!1}createDimBlock(t){const e=new it;e.name=t;const n=this.createLines();n.forEach(o=>e.appendEntity(new di(o.startPoint,o.endPoint))),this.createArrows(n[0]).forEach(o=>e.appendEntity(o));const s=n[0].midPoint,a=this.createMText(s,this._rotation);return a&&e.appendEntity(a),e}createMText(t,e){const n=r=>({x:Math.cos(r),y:Math.sin(r),z:0});if(this.dimensionText){const r=new Qe;return r.attachmentPoint=this.attachmentPoint,r.layer="0",r.color=new j(exports.AcCmColorMethod.ByBlock),r.location=t,r.contents=this.dimensionText??"",r.height=10,r.direction=n(e),r.styleName=this.dimensionStyle.dimtxsty,r}}createArrows(t){const e=[];return e.push(this.createArrow(t.startPoint,this.rotation+Math.PI,10)),e.push(this.createArrow(t.endPoint,this.rotation,10)),e}createArrow(t,e,n){const r="_CAXARROW",s=new le(r);return s.position=t,s.rotation=e,s.scaleFactors={x:n,y:n,z:n},s}createLines(){const t=[],e=this.createExtensionLine(this._xLine1Point),n=this.createExtensionLine(this._xLine2Point),r=this.findIntersectionPoint(e,this._dimLinePoint),s=this.findIntersectionPoint(n,this._dimLinePoint),a=new Tt(r,s);return t.push(a),e.endPoint=r,this.adjustExtensionLine(e),t.push(e),n.endPoint=s,this.adjustExtensionLine(n),t.push(n),t}createExtensionLine(t){const e=this.rotation+Math.PI/2,n=this.findPointOnLine2(t,e,100);return new Tt(t,{...n,z:t.z})}findIntersectionPoint(t,e){const n=t.startPoint,r=t.endPoint,s=new x().subVectors(r,n).normalize(),o=new x().subVectors(e,n).dot(s),c=new x().copy(s).multiplyScalar(o);return new x().addVectors(n,c)}calculateRotation(){const t=this._xLine1Point,e=this._xLine2Point,n=e.x-t.x,r=e.y-t.y;this._rotation=Math.atan2(r,n)}get dxfSubclassMarker(){return"AcDbAlignedDimension"}getMeasurementPropertyValue(){return this.measurement??this.xLine1Point.distanceTo(this.xLine2Point)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker(this.dxfSubclassMarker),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.dimLinePoint),t.writeAngle(50,this.rotation),t.writeAngle(52,this.oblique),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData(this.dxfSubclassMarker);let e=this.xLine1Point.x,n=this.xLine1Point.y,r=this.xLine1Point.z,s=this.xLine2Point.x,a=this.xLine2Point.y,o=this.xLine2Point.z,c=this.dimLinePoint.x,l=this.dimLinePoint.y,h=this.dimLinePoint.z,u=this.rotation*180/Math.PI,d=this.oblique*180/Math.PI,g=this.dimBlockPosition.x,f=this.dimBlockPosition.y,p=this.dimBlockPosition.z,m=!1,y=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const _=t.readItem();if(!_)break;const v=Number(_.code),w=Number(_.value);switch(v){case 12:g=w,m=!0;break;case 22:f=w,m=!0;break;case 32:p=w,m=!0;break;case 13:e=w;break;case 23:n=w;break;case 33:r=w;break;case 14:s=w;break;case 24:a=w;break;case 34:o=w;break;case 15:c=w,y=!0;break;case 25:l=w,y=!0;break;case 35:h=w,y=!0;break;case 50:u=w;break;case 52:d=w;break;case 100:return t.pushBackItem(_),this.finishAlignedDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,f,p,m,y),this}}return this.finishAlignedDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,f,p,m,y),this}finishAlignedDxfIn(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p,m){this.xLine1Point={x:t,y:e,z:n},this.xLine2Point={x:r,y:s,z:a},m?this.dimLinePoint={x:o,y:c,z:l}:this.dimLinePoint={x:this._dxfDefinitionPoint.x,y:this._dxfDefinitionPoint.y,z:this._dxfDefinitionPoint.z},this.rotation=h*Math.PI/180,this.oblique=u*Math.PI/180,p&&(this.dimBlockPosition={x:d,y:g,z:f})}};Fo.typeName="AlignedDimension";let Ln=Fo;const Xo=class Xo extends ke{constructor(t,e,n,r,s=null,a=null){super(),this._arcPoint=new b().copy(r),this._xLine1Point=new b().copy(e),this._xLine2Point=new b().copy(n),this._centerPoint=new b().copy(t),this.dimensionText=s,this.dimensionStyleName=a}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("centerPoint",()=>this.centerPoint),...this.createPoint3dProperties("xLine1Point",()=>this.xLine1Point),...this.createPoint3dProperties("xLine2Point",()=>this.xLine2Point),...this.createPoint3dProperties("arcPoint",()=>this.arcPoint)]}]}}collectDimensionDefinitionGripPoints(){return[this.centerPoint,this.xLine1Point,this.xLine2Point,this.arcPoint]}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.xLine1Point,this.xLine2Point,this.centerPoint,this.arcPoint])}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArcDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbArcDimension");let e=this.xLine1Point.x,n=this.xLine1Point.y,r=this.xLine1Point.z,s=this.xLine2Point.x,a=this.xLine2Point.y,o=this.xLine2Point.z,c=this.centerPoint.x,l=this.centerPoint.y,h=this.centerPoint.z,u=this.arcPoint.x,d=this.arcPoint.y,g=this.arcPoint.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const f=t.readItem();if(!f)break;const p=Number(f.code),m=Number(f.value);switch(p){case 13:e=m;break;case 23:n=m;break;case 33:r=m;break;case 14:s=m;break;case 24:a=m;break;case 34:o=m;break;case 15:c=m;break;case 25:l=m;break;case 35:h=m;break;case 16:u=m;break;case 26:d=m;break;case 36:g=m;break}}return this.xLine1Point=new b(e,n,r),this.xLine2Point=new b(s,a,o),this.centerPoint=new b(c,l,h),this.arcPoint=new b(u,d,g),this}};Xo.typeName="ArcDimension";let Or=Xo;const Yo=class Yo extends ke{constructor(t,e,n=0,r=null,s=null){super(),this._chordPoint=new b().copy(t),this._farChordPoint=new b().copy(e),this._extArcStartAngle=0,this._extArcEndAngle=0,this._leaderLength=n,this.dimensionText=r,this.dimensionStyleName=s}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}set leaderLength(t){this._leaderLength=t}get properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("chordPoint",()=>this.chordPoint),...this.createPoint3dProperties("farChordPoint",()=>this.farChordPoint),this.createProperty("leaderLength","float",()=>this.leaderLength,e=>{this.leaderLength=e}),this.createProperty("extArcStartAngle","float",()=>this.extArcStartAngle,e=>{this.extArcStartAngle=e}),this.createProperty("extArcEndAngle","float",()=>this.extArcEndAngle,e=>{this.extArcEndAngle=e})]}]}}collectDimensionDefinitionGripPoints(){return[this.chordPoint,this.farChordPoint]}subTransformBy(t){this._chordPoint.applyMatrix4(t),this._farChordPoint.applyMatrix4(t)}getMeasurementPropertyValue(){return this.measurement??this.chordPoint.distanceTo(this.farChordPoint)}get geometricExtents(){const t=[this.chordPoint,this.farChordPoint];if(this.leaderLength>0){const e=this.farChordPoint.clone().sub(this.chordPoint);e.lengthSq()>0&&(e.normalize().multiplyScalar(this.leaderLength),t.push(this.farChordPoint.clone().add(e)))}return this.getGeometricExtentsFromDimBlockOrPoints(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbDiametricDimension"),t.writePoint3d(15,this.chordPoint),t.writePoint3d(16,this.farChordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbDiametricDimension");let e=this._dxfDefinitionPoint.x,n=this._dxfDefinitionPoint.y,r=this._dxfDefinitionPoint.z,s=this.farChordPoint.x,a=this.farChordPoint.y,o=this.farChordPoint.z,c=!1,l=!1,h=this.extArcStartAngle*180/Math.PI,u=this.extArcEndAngle*180/Math.PI;const d=()=>{l?(this.chordPoint=new b(e,n,r),this.farChordPoint=new b(s,a,o)):c&&(this.chordPoint=new b(this._dxfDefinitionPoint.x,this._dxfDefinitionPoint.y,this._dxfDefinitionPoint.z),this.farChordPoint=new b(e,n,r)),this.extArcStartAngle=h*Math.PI/180,this.extArcEndAngle=u*Math.PI/180};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 15:e=p,c=!0;break;case 25:n=p,c=!0;break;case 35:r=p,c=!0;break;case 16:s=p,l=!0;break;case 26:a=p,l=!0;break;case 36:o=p,l=!0;break;case 40:this.leaderLength=p;break;case 52:h=p;break;case 53:u=p;break}}return d(),this}};Yo.typeName="DiametricDimension";let Nr=Yo;const zo=class zo extends ke{constructor(t,e,n=null,r=null){super(),this._definingPoint=new b().copy(t),this._leaderEndPoint=new b().copy(e),this.dimensionText=n,this.dimensionStyleName=r}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 properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("definingPoint",()=>this.definingPoint),...this.createPoint3dProperties("leaderEndPoint",()=>this.leaderEndPoint)]}]}}collectDimensionDefinitionGripPoints(){return[this.definingPoint,this.leaderEndPoint]}subTransformBy(t){this._definingPoint.applyMatrix4(t),this._leaderEndPoint.applyMatrix4(t)}get geometricExtents(){return this.getGeometricExtentsFromDimBlockOrPoints([this.definingPoint,this.leaderEndPoint])}get arrowLineCount(){return 0}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbOrdinateDimension"),t.writePoint3d(13,this.definingPoint),t.writePoint3d(14,this.leaderEndPoint),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbOrdinateDimension");let e=this.definingPoint.x,n=this.definingPoint.y,r=this.definingPoint.z,s=this.leaderEndPoint.x,a=this.leaderEndPoint.y,o=this.leaderEndPoint.z;const c=()=>{this.definingPoint=new b(e,n,r),this.leaderEndPoint=new b(s,a,o)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const l=t.readItem();if(!l)break;const h=Number(l.code),u=Number(l.value);switch(h){case 13:e=u;break;case 23:n=u;break;case 33:r=u;break;case 14:s=u;break;case 24:a=u;break;case 34:o=u;break}}return c(),this}};zo.typeName="OrdinateDimension";let Rr=zo;const Vo=class Vo extends ke{constructor(t,e,n,r=null,s=null){super(),this._center=new b().copy(t),this._chordPoint=new b().copy(e),this._leaderLength=n,this._extArcStartAngle=0,this._extArcEndAngle=0,this.dimensionText=r,this.dimensionStyleName=s}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 leaderLength(t){this._leaderLength=t}set leaderLenght(t){this._leaderLength=t}get properties(){const t=this.getBaseProperties();return{type:this.type,groups:[...t.groups,{groupName:"geometry",properties:[...this.createPoint3dProperties("center",()=>this.center),...this.createPoint3dProperties("chordPoint",()=>this.chordPoint),this.createProperty("leaderLength","float",()=>this.leaderLength,e=>{this.leaderLength=e}),this.createProperty("extArcStartAngle","float",()=>this.extArcStartAngle,e=>{this.extArcStartAngle=e}),this.createProperty("extArcEndAngle","float",()=>this.extArcEndAngle,e=>{this.extArcEndAngle=e})]}]}}collectDimensionDefinitionGripPoints(){return[this.center,this.chordPoint]}subTransformBy(t){this._center.applyMatrix4(t),this._chordPoint.applyMatrix4(t)}getMeasurementPropertyValue(){return this.measurement??this.center.distanceTo(this.chordPoint)}get geometricExtents(){const t=[this.center,this.chordPoint];if(this.leaderLength>0){const e=this.chordPoint.clone().sub(this.center);e.lengthSq()>0&&(e.normalize().multiplyScalar(this.leaderLength),t.push(this.chordPoint.clone().add(e)))}return this.getGeometricExtentsFromDimBlockOrPoints(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRadialDimension"),t.writePoint3d(15,this.center),t.writePoint3d(13,this.chordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRadialDimension");const e=this._dxfDefinitionPoint.x,n=this._dxfDefinitionPoint.y,r=this._dxfDefinitionPoint.z;let s=this.chordPoint.x,a=this.chordPoint.y,o=this.chordPoint.z,c=!1,l=this.extArcStartAngle*180/Math.PI,h=this.extArcEndAngle*180/Math.PI;const u=()=>{this.center=new b(e,n,r),this.chordPoint=new b(s,a,o),this.extArcStartAngle=l*Math.PI/180,this.extArcEndAngle=h*Math.PI/180};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 15:s=f,c=!0;break;case 25:a=f,c=!0;break;case 35:o=f,c=!0;break;case 13:c||(s=f);break;case 23:c||(a=f);break;case 33:c||(o=f);break;case 40:this.leaderLength=f;break;case 52:l=f;break;case 53:h=f;break}}return u(),this}};Vo.typeName="RadialDimension";let Br=Vo;const jo=class jo extends Ln{get dxfSubclassMarker(){return"AcDbRotatedDimension"}};jo.typeName="RotatedDimension";let Dr=jo;class kb{constructor(t){this._pairs=t,this.kind="ascii",this._index=0}next(){if(!(this._index>=this._pairs.length))return this._pairs[this._index++]}peek(){if(!(this._index>=this._pairs.length))return this._pairs[this._index]}position(){return{byteOffset:this._index}}}function Vd(i){const t=Number(i.code),e=i.value,n=vi(t);return n==="comment"?{code:t,type:"string",value:String(e??"")}:n==="bool"?{code:t,type:"bool",value:!!e}:n==="binary"?e instanceof Uint8Array?{code:t,type:"binary",value:e}:{code:t,type:"string",value:String(e??"")}:n==="handle"?{code:t,type:"handle",value:String(e??"")}:n==="int"||n==="long"?{code:t,type:n==="long"?"long":"int",value:Number(e)}:n==="double"?{code:t,type:"double",value:Number(e)}:{code:t,type:"string",value:String(e??"")}}function Sb(i){const t=[];for(;!i.atEndOfObject&&!i.atEof&&!i.atExtendedData;){const e=i.readItem();if(!e)break;t.push(Vd(e))}return t}const Ib=new Set(["AcDbAlignedDimension","AcDbRotatedDimension","AcDb3PointAngularDimension","AcDb2LineAngularDimension","AcDbOrdinateDimension","AcDbRadialDimension","AcDbDiametricDimension","AcDbArcDimension"]);function Eb(i){const t=Lb(i),e=Cb(t),n=Tb(e);if(!n)return null;const r=Oe.forReading(new kb(t),{database:i.database});return n.dxfIn(r),n}function Lb(i){const t=Sb(i);for(;!i.atEndOfObject&&!i.atEof;){const e=i.readItem();if(!e)break;if(Number(e.code)===0){i.pushBackItem(e);break}t.push(Vd(e))}return t}function Cb(i){let t="";for(const e of i)e.code===100&&typeof e.value=="string"&&Ib.has(e.value)&&(t=e.value);if(t)return t;for(const e of i)if(e.code===70&&typeof e.value=="number")switch(e.value&15){case 0:return"AcDbRotatedDimension";case 1:return"AcDbAlignedDimension";case 2:return"AcDb2LineAngularDimension";case 3:return"AcDbDiametricDimension";case 4:return"AcDbRadialDimension";case 5:return"AcDb3PointAngularDimension";case 6:return"AcDbOrdinateDimension";case 8:return"AcDbArcDimension"}return"AcDbAlignedDimension"}function Tb(i,t){const e=new b;switch(i){case"AcDbRotatedDimension":return new Dr(e,e,e);case"AcDbAlignedDimension":return new Ln(e,e,e);case"AcDb3PointAngularDimension":case"AcDb2LineAngularDimension":return new Mr(e,e,e,e);case"AcDbOrdinateDimension":return new Rr(e,e);case"AcDbRadialDimension":return new Br(e,e,0);case"AcDbDiametricDimension":return new Nr(e,e,0);case"AcDbArcDimension":return new Or(e,e,e,e);default:return new Ln(e,e,e)}}var hn=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.FitCurvePoly=1]="FitCurvePoly",i[i.QuadSplinePoly=2]="QuadSplinePoly",i[i.CubicSplinePoly=3]="CubicSplinePoly",i))(hn||{});const Go=class Go extends At{constructor(t,e,n=0,r=!1,s=0,a=0,o=null){super(),this._normal=new x(0,0,1),this._polyType=t,this._elevation=n;const c=o&&(o==null?void 0:o.length)===e.length,l=e.map((h,u)=>({x:h.x,y:h.y,bulge:c?o[u]:void 0}));this._geo=new Q(l,r)}get dxfTypeName(){return"POLYLINE"}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t),this._normal.lengthSq()>0&&this._normal.normalize()}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){return this._geo.getPointAt(t)}getBulgeAt(t){const e=this._geo.vertices[t];return(e==null?void 0:e.bulge)||0}get geometricExtents(){const t=this._geo.box;return new z().setFromPoints([_t({x:t.min.x,y:t.min.y,z:this._elevation},this._normal),_t({x:t.max.x,y:t.min.y,z:this._elevation},this._normal),_t({x:t.max.x,y:t.max.y,z:this._elevation},this._normal),_t({x:t.min.x,y:t.max.y,z:this._elevation},this._normal)])}subGetIntersectCurves(){return eo(this._geo.vertices,this.closed,this._elevation,this._normal)}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const n=this._geo.getPointAt(e);t.push(new b(n.x,n.y,this._elevation))}return t}subMoveGripPointsAt(t,e){return ft(t,n=>{Un(this._geo.vertices,n,e)}),this}subGetOsnapPoints(t,e,n,r){var c;const s=this._geo,a=this._elevation,o=s.numberOfVertices;if(o!==0)switch(t){case P.EndPoint:for(let l=0;l<o;l++){const h=s.getPointAt(l);r.push(new b(h.x,h.y,a))}break;case P.MidPoint:case P.Nearest:case P.Perpendicular:case P.Tangent:{const l=this.closed?o:o-1,h=[];for(let u=0;u<l;u++){const d=[];ii(s.getPointAt(u),s.getPointAt((u+1)%o),(c=s.vertices[u])==null?void 0:c.bulge,a,t,e,d),h.push(...d)}if(t===P.MidPoint)r.push(...h);else{const u=$t(e,h);u&&r.push(u)}break}}}transformBy(t){const e=t.determinant()<0;let n=this._elevation;return this._geo.vertices.forEach(r=>{const s=new b(r.x,r.y,this._elevation).applyMatrix4(t);r.x=s.x,r.y=s.y,n=s.z,e&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._elevation=n,this._normal.transformDirection(t),this._normal.lengthSq()>0&&this._normal.normalize(),this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return this._geo.getPoints(100).forEach(r=>e.push(new b().set(r.x,r.y,this.elevation))),t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;++n)t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPointAt(n).x,y:this.getPointAt(n).y,z:this.elevation}),t.writeDouble(42,this.getBulgeAt(n)),t.writeInt16(70,0);return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb2dPolyline");let e=this.closed?1:0;return this.polyType===1&&(e|=2),this.polyType===2&&(e|=4),this.polyType===3&&(e|=8),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation),t.writeVector3d(210,this.normal),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Lt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const e=this._geo.offset(t);return e.length===0?null:Lt.fromGePolyline(e[0])}collectPath2d(){const t=Math.max(32,this.numberOfVertices*4);return this._geo.getPoints(t)}};Go.typeName="2dPolyline";let Fr=Go;var qn=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.QuadSplinePoly=1]="QuadSplinePoly",i[i.CubicSplinePoly=2]="CubicSplinePoly",i))(qn||{});const Zr=class Zr extends At{get dxfTypeName(){return"POLYLINE"}constructor(t,e,n=!1){super(),this._polyType=t,this._geo=new Q(e,n)}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get closed(){return this._geo.closed}get area(){return 0}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){const e=this._geo.vertices[t];return new b(e.x,e.y,e.z||0)}get geometricExtents(){const t=this._geo.vertices.map(e=>new b(e.x,e.y,e.z||0));return new z().setFromPoints(t)}subGetIntersectCurves(){const t=[];for(let e=0;e<this.numberOfVertices;e++)t.push(this.getPointAt(e));return Ft(t,this.closed)}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e)t.push(this.getPointAt(e));return t}subMoveGripPointsAt(t,e){return ft(t,n=>{this.moveVertexAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){const s=Array.from({length:this._geo.numberOfVertices},(a,o)=>this.getPointAt(o));if(s.length!==0)switch(t){case P.EndPoint:r.push(...s);break;case P.MidPoint:case P.Nearest:case P.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];Nn(s[o],s[o+1],t,e,c),a.push(...c)}if(t===P.MidPoint)r.push(...a);else{const o=$t(e,a);o&&r.push(o)}break}}}transformBy(t){return this._geo.vertices.forEach(e=>{const n=new b(e.x,e.y,e.z||0).applyMatrix4(t);e.x=n.x,e.y=n.y,e.z=n.z}),this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this._geo.vertices.map(n=>new b(n.x,n.y,n.z||0));return t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;++n){const r=this.getPointAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,{x:r.x,y:r.y,z:r.z}),t.writeInt16(70,32)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb3dPolyline");let e=this.closed?1:0;return e|=8,this.polyType===1&&(e|=16),this.polyType===2&&(e|=32),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Lt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const e=this._geo.offset(t);if(e.length===0)return null;const n=e[0],r=[];for(let s=0;s<n.numberOfVertices;s++){const a=n.getPointAt(s);r.push(new b(a.x,a.y,this.interpolateZ(a.x,a.y)))}return new Zr(this.polyType,r,this.closed)}collectPath2d(){const t=Math.max(32,this.numberOfVertices*4);return this._geo.getPoints(t)}interpolateZ(t,e){const n=this.numberOfVertices;if(n<=0)return 0;let r=1/0,s=this.getPointAt(0).z;const a=this.closed?n:n-1;for(let o=0;o<a;o++){const c=this.getPointAt(o),l=this.getPointAt((o+1)%n),h=l.x-c.x,u=l.y-c.y,d=h*h+u*u;if(d===0)continue;const g=Math.max(0,Math.min(1,((t-c.x)*h+(e-c.y)*u)/d)),f=c.x+h*g,p=c.y+u*g,m=(t-f)**2+(e-p)**2;m<r&&(r=m,s=c.z+(l.z-c.z)*g)}return s}moveVertexAt(t,e){const n=this._geo.vertices[t];if(!n)return;n.x+=e.x,n.y+=e.y;const r=n;r.z=(r.z??0)+(e.z??0)}};Zr.typeName="3dPolyline";let Xr=Zr;class jd{constructor(t){this.position=new b(t.x,t.y,t.z||0)}}class Gd{constructor(t){this.vertexIndices=t}}const Uo=class Uo extends At{get dxfTypeName(){return"POLYLINE"}constructor(t,e){super(),this._vertices=t.map(n=>new jd(n)),this._faces=e.map(n=>new Gd(n))}get numberOfVertices(){return this._vertices.length}get numberOfFaces(){return this._faces.length}get closed(){return!1}get area(){return 0}set closed(t){}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getFaceAt(t){if(t<0||t>=this._faces.length)throw new Error("Face index out of bounds");return this._faces[t]}get geometricExtents(){if(this._vertices.length===0)return new z(new b(0,0,0),new b(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),n=Math.min(n,o.position.z),r=Math.max(r,o.position.x),s=Math.max(s,o.position.y),a=Math.max(a,o.position.z)}),new z(new b(t,e,n),new b(r,s,a))}subGetIntersectCurves(){const t=[];return this._faces.forEach(e=>{const n=[];e.vertexIndices.forEach(r=>{const s=Math.abs(r)-1;s>=0&&s<this._vertices.length&&n.push(this._vertices[s].position)}),n.length>=2&&t.push(...Ft(n,!0))}),t}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subMoveGripPointsAt(t,e){return ft(t,n=>{const r=this._vertices[n];r&&r.position.add(e)}),this}subGetOsnapPoints(t,e,n,r){switch(t){case P.EndPoint:this._vertices.forEach(s=>{r.push(s.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}},{name:"faces",type:"array",editable:!1,itemSchema:{properties:[{name:"vertexIndices",type:"array",editable:!1,itemSchema:{properties:[{name:"index",type:"int",editable:!1}]}}]},accessor:{get:()=>this._faces.map(t=>({vertexIndices:t.vertexIndices}))}}]}]}}subWorldDraw(t){const e=[];return this._faces.forEach(n=>{const r=[];if(n.vertexIndices.forEach(s=>{const a=Math.abs(s)-1;a>=0&&a<this._vertices.length&&r.push(this._vertices[a].position)}),r.length>=3)for(let s=0;s<r.length;s++){const a=r[s],o=r[(s+1)%r.length];e.push(a),e.push(o)}}),t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyFaceMesh");const e=64;return t.writeInt16(66,1),t.writeInt16(70,e),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;n++){const r=this.getVertexAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writePoint3d(10,r.position),t.writeInt16(70,64)}for(let n=0;n<this.numberOfFaces;n++){const r=this.getFaceAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writeInt16(70,128),r.vertexIndices.forEach((s,a)=>{t.writeInt32(10+a,s)})}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectLargestFaceBoundary2d();return e.length<2?1:Lt.from2dPoints(e,!0).getOffsetSideAtPoint(t)}createOffsetCurve(t){return xs(this.collectLargestFaceBoundary2d(),!0,t)}collectLargestFaceBoundary2d(){let t=[];for(const e of this._faces){const n=e.vertexIndices.filter(r=>r>=0);n.length>t.length&&(t=n)}return t.length<2?this._vertices.map(e=>new L(e.position.x,e.position.y)):t.map(e=>{const n=this.getVertexAt(e).position;return new L(n.x,n.y)})}};Uo.typeName="PolyFaceMesh";let Yr=Uo;class Ud{constructor(t){this.position=new b(t.x,t.y,t.z||0)}}const Ho=class Ho extends At{get dxfTypeName(){return"POLYLINE"}constructor(t,e,n,r=!1,s=!1){super(),this._mCount=t,this._nCount=e,this._closedM=r,this._closedN=s,this._vertices=n.map(a=>new Ud(a))}get mCount(){return this._mCount}get nCount(){return this._nCount}get closedM(){return this._closedM}get closedN(){return this._closedN}get closed(){return this._closedM}get area(){return 0}set closed(t){this._closedM=t}get numberOfVertices(){return this._vertices.length}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getVertexAtMN(t,e){const n=t*this._nCount+e;return this.getVertexAt(n)}get geometricExtents(){if(this._vertices.length===0)return new z(new b(0,0,0),new b(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),n=Math.min(n,o.position.z),r=Math.max(r,o.position.x),s=Math.max(s,o.position.y),a=Math.max(a,o.position.z)}),new z(new b(t,e,n),new b(r,s,a))}subGetIntersectCurves(){const t=[];for(let e=0;e<this._mCount;e++)for(let n=0;n<this._nCount;n++){const r=this.getVertexAtMN(e,n);let s=n+1;if(s>=this._nCount)if(this._closedN)s=0;else continue;t.push(...Ft([r.position,this.getVertexAtMN(e,s).position],!1,!1))}for(let e=0;e<this._nCount;e++)for(let n=0;n<this._mCount;n++){const r=this.getVertexAtMN(n,e);let s=n+1;if(s>=this._mCount)if(this._closedM)s=0;else continue;t.push(...Ft([r.position,this.getVertexAtMN(s,e).position],!1,!1))}return t}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subMoveGripPointsAt(t,e){return ft(t,n=>{const r=this._vertices[n];r&&r.position.add(e)}),this}subGetOsnapPoints(t,e,n,r){switch(t){case P.EndPoint:this._vertices.forEach(s=>{r.push(s.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"mCount",type:"float",editable:!1,accessor:{get:()=>this._mCount}},{name:"nCount",type:"float",editable:!1,accessor:{get:()=>this._nCount}},{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}}]},{groupName:"others",properties:[{name:"closedM",type:"boolean",editable:!0,accessor:{get:()=>this._closedM,set:t=>{this._closedM=t}}},{name:"closedN",type:"boolean",editable:!0,accessor:{get:()=>this._closedN,set:t=>{this._closedN=t}}}]}]}}subWorldDraw(t){const e=[];for(let n=0;n<this._mCount;n++)for(let r=0;r<this._nCount;r++){const s=this.getVertexAtMN(n,r);let a=r+1;if(a>=this._nCount)if(this._closedN)a=0;else continue;const o=this.getVertexAtMN(n,a);e.push(s.position),e.push(o.position)}for(let n=0;n<this._nCount;n++)for(let r=0;r<this._mCount;r++){const s=this.getVertexAtMN(r,n);let a=r+1;if(a>=this._mCount)if(this._closedM)a=0;else continue;const o=this.getVertexAtMN(a,n);e.push(s.position),e.push(o.position)}return t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolygonMesh");let e=16;return this._closedM&&(e|=1),this._closedN&&(e|=32),t.writeInt16(66,1),t.writeInt16(70,e),t.writeInt32(71,this._mCount),t.writeInt32(72,this._nCount),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let n=0;n<this.numberOfVertices;n++){const r=this.getVertexAt(n);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolygonMeshVertex"),t.writePoint3d(10,r.position),t.writeInt16(70,16)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectBoundary2d();return e.length<2?1:Lt.from2dPoints(e,this.isBoundaryClosed()).getOffsetSideAtPoint(t)}createOffsetCurve(t){return xs(this.collectBoundary2d(),this.isBoundaryClosed(),t)}isBoundaryClosed(){return this._closedM&&this._closedN&&this._mCount>1&&this._nCount>1}collectBoundary2d(){const t=this._mCount,e=this._nCount;if(t<1||e<1)return[];const n=[],r=(s,a)=>{const o=this.getVertexAtMN(s,a).position;n.push(new L(o.x,o.y))};if(t===1){for(let s=0;s<e;s++)r(0,s);return n}if(e===1){for(let s=0;s<t;s++)r(s,0);return n}for(let s=0;s<e;s++)r(0,s);for(let s=1;s<t;s++)r(s,e-1);for(let s=e-2;s>=0;s--)r(t-1,s);for(let s=t-2;s>=1;s--)r(s,0);return n}};Ho.typeName="PolygonMesh";let zr=Ho;const Mb=16,Hd=128,Wd=64,tl=5,el=6;function Ob(i){const t=Nb(i),e=Rb(i);return Db(t,e)}function Nb(i){const t={layer:"0",lineType:"ByLayer",flag:0,elevation:0,startWidth:0,endWidth:0,meshM:0,meshN:0,smoothType:0};for(;!i.atEndOfObject&&!i.atEof&&!i.atExtendedData;){const e=i.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 5:t.objectId=String(e.value);break;case 330:t.ownerId=String(e.value);break;case 8:t.layer=String(e.value);break;case 6:t.lineType=String(e.value);break;case 62:t.colorIndex=r;break;case 420:t.trueColor=r;break;case 70:t.flag=r;break;case 10:case 20:break;case 30:t.elevation=r;break;case 40:t.startWidth=r;break;case 41:t.endWidth=r;break;case 71:t.meshM=r;break;case 72:t.meshN=r;break;case 75:t.smoothType=r;break}}return t}function Rb(i){const t=[];for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)!==0){i.readItem();continue}const n=String(e.value).toUpperCase();if(n==="SEQEND"){i.readItem(),i.skipToEndOfObject();break}if(n==="ENDSEC"||n==="ENDBLK"||n==="EOF"||n!=="VERTEX")break;i.readItem(),t.push(Bb(i))}return t}function Bb(i){const t={x:0,y:0,z:0,bulge:0,flag:0,faces:[]},e=[],n=[];for(;!i.atEndOfObject&&!i.atEof&&!i.atExtendedData;){const s=i.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 10:t.x=o,n[0]=Math.trunc(o);break;case 20:t.y=o;break;case 30:t.z=o;break;case 11:n[1]=Math.trunc(o);break;case 12:n[2]=Math.trunc(o);break;case 13:n[3]=Math.trunc(o);break;case 42:t.bulge=o;break;case 70:t.flag=o;break;case 71:e[0]=Math.trunc(o);break;case 72:e[1]=Math.trunc(o);break;case 73:e[2]=Math.trunc(o);break;case 74:e[3]=Math.trunc(o);break}}if(!!(t.flag&Hd)&&!(t.flag&Wd)){const s=e.length>0?e:n;t.faces=s.filter(a=>a!==0&&a!=null)}return t}function Db(i,t){const e=!!(i.flag&1),n=!!(i.flag&8),r=!!(i.flag&16),s=!!(i.flag&64),a=!!(i.flag&32),o=[],c=[],l=[];for(const u of t)u.flag&Mb||(s&&u.flag&Hd?u.flag&Wd?(o.push({x:u.x,y:u.y,z:u.z}),c.push(u.bulge)):u.faces.length>=3&&l.push([...u.faces]):(o.push({x:u.x,y:u.y,z:u.z}),c.push(u.bulge)));let h;if(r)h=new zr(i.meshM,i.meshN,o,e,a);else if(s)h=new Yr(o,l);else if(n){let u=qn.SimplePoly;i.flag&4&&(i.smoothType===el?u=qn.CubicSplinePoly:i.smoothType===tl&&(u=qn.QuadSplinePoly)),h=new Xr(u,o,e)}else{let u=hn.SimplePoly;i.flag&2?u=hn.FitCurvePoly:i.flag&4&&(i.smoothType===el?u=hn.CubicSplinePoly:i.smoothType===tl&&(u=hn.QuadSplinePoly)),h=new Fr(u,o,i.elevation,e,i.startWidth,i.endWidth,c)}return Fb(h,i),h}function Fb(i,t){t.objectId&&(i.objectId=t.objectId),t.ownerId&&(i.ownerId=t.ownerId),i.layer=t.layer,i.lineType=t.lineType,t.colorIndex!=null&&(i.color.colorIndex=t.colorIndex),t.trueColor!=null&&i.color.setRGBValue(t.trueColor)}function $d(i){switch(i.toUpperCase()){case"LINE":return new di(new b,new b);case"CIRCLE":return new ur(new b,1);case"ARC":return new lr(new b,1,0,Math.PI/2);case"POINT":return new vr;case"RAY":return new Pr;case"XLINE":return new Cr;case"ELLIPSE":return new dr(new b,x.Z_AXIS,x.X_AXIS,1,1,0,Math.PI*2);case"SOLID":return new Sr;case"TRACE":return new mi;case"3DFACE":return new gr;case"LWPOLYLINE":return new Lt;case"INSERT":return new le("");case"TEXT":return new In;case"MTEXT":return new Qe;case"SPLINE":return yi.fromControlPoints([{x:0,y:0,z:0},{x:1,y:0,z:0},{x:2,y:0,z:0},{x:3,y:0,z:0}],[0,0,0,0,1,1,1,1],void 0,3,!1);case"ATTDEF":return new hr;case"ATTRIB":return new ri;case"SHAPE":return new kr;case"TOLERANCE":return new mr;case"LEADER":return new yr;case"VIEWPORT":return new Er;case"IMAGE":return new pi;case"WIPEOUT":return new Lr;case"ACAD_PROXY_ENTITY":return new Ar;case"OLEFRAME":return new fi;case"OLE2FRAME":return new wr;case"HATCH":return new ci;case"MLINE":return new _r;case"MULTILEADER":case"MLEADER":return new br;case"ACAD_TABLE":return new Ir("",1,1);case"3DSOLID":return new ni("");default:return null}}function ka(i,t){let e=t;if(e==null){const s=i.readItem();if(!s||Number(s.code)!==0)return s&&i.pushBackItem(s),null;e=String(s.value)}const n=e.toUpperCase();if(n==="POLYLINE")return Ob(i);if(n==="DIMENSION")return Eb(i);const r=$d(e);return r?(r.dxfIn(i),r):null}class qd{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 n=Date.now(),r=this.generateTaskId();try{return await this.executeInWorker(r,t,e||this.config.workerUrl)}catch(s){const a=Date.now()-n,o=s instanceof Error?s.message:String(s);return{success:!1,error:o,errorCode:o.toLowerCase().includes("timed out")?"worker_timeout":void 0,duration:a}}}async executeInWorker(t,e,n){const r=Date.now();return new Promise((s,a)=>{const o=this.getAvailableWorker(n),c=setTimeout(()=>{this.cleanupTask(t),this.releaseWorker(o),a(new Error(`Worker operation timed out after ${this.config.timeout}ms`))},this.config.timeout);this.pendingTasks.set(t,{resolve:d=>{clearTimeout(c),this.releaseWorker(o),s(d)},reject:d=>{clearTimeout(c),this.releaseWorker(o),a(d)},timeout:c});const l=d=>{const{id:g,success:f,data:p,error:m,errorCode:y}=d.data;if(g!==t)return;this.cleanupTask(t);const _=Date.now()-r;s(f?{success:!0,data:p,duration:_}:{success:!1,error:m,errorCode:y,duration:_})},h=d=>{this.cleanupTask(t),a(new Error(`Worker error: ${d.message}`))};o.addEventListener("message",l),o.addEventListener("error",h);const u={id:t,input:e};e instanceof ArrayBuffer?o.postMessage(u,[e]):o.postMessage(u)})}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[n,r]of this.workers)if(!r.isBusy)return r.isBusy=!0,r.worker;if(this.workers.size<this.config.maxConcurrentWorkers){const n=new Worker(t,{type:"module"}),r=this.generateWorkerId(),s={worker:n,isBusy:!0,id:r,createdAt:new Date};return this.workers.set(r,s),n}const e=Array.from(this.workers.values()).sort((n,r)=>n.createdAt.getTime()-r.createdAt.getTime())[0];return e.isBusy=!0,e.worker}releaseWorker(t){for(const[e,n]of this.workers)if(n.worker===t){n.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 Kd{constructor(t){this.framework=new qd(t)}async execute(t,e){return this.framework.execute(t,e)}getStats(){return this.framework.getStats()}destroy(){this.framework.destroy()}}function Xb(i){return new Kd(i)}class Yb{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:n}=t.data;try{const r=await this.executeTask(n);this.sendResponse(e,!0,r)}catch(r){this.sendResponse(e,!1,void 0,r instanceof Error?r.message:String(r))}}}sendResponse(t,e,n,r,s){const a={id:t,success:e,data:n,error:r,errorCode:s};try{self.postMessage(a)}catch(o){const c=o instanceof Error?o.message:String(o);self.postMessage({id:t,success:!1,error:c,errorCode:this.classifyPostMessageError(c)})}}classifyPostMessageError(t){const e=t.toLowerCase();return e.includes("out of memory")||e.includes("data cannot be cloned")?"worker_oom":"worker_error"}}var Zd=(i=>(i[i.Vertex=0]="Vertex",i[i.CurveFitVertex=1]="CurveFitVertex",i[i.SplineFitVertex=8]="SplineFitVertex",i[i.SplineCtlVertex=9]="SplineCtlVertex",i))(Zd||{});const Wo=class Wo extends q{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new b,this._bulge=0,this._startWidth=0,this._endWidth=0,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get bulge(){return this._bulge}set bulge(t){this._bulge=t}get startWidth(){return this._startWidth}set startWidth(t){this._startWidth=t}get endWidth(){return this._endWidth}set endWidth(t){this._endWidth=t}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new z().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subMoveGripPointsAt(t,e){return de(t,e,this._position),this}subGetOsnapPoints(t,e,n,r){(t===P.EndPoint||t===P.Node)&&r.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint2d(10,this.position),t.writeDouble(40,this.startWidth),t.writeDouble(41,this.endWidth),t.writeDouble(42,this.bulge),t.writeInt16(70,this.vertexType),this}};Wo.typeName="2dVertex";let Sa=Wo;var Qd=(i=>(i[i.SimpleVertex=0]="SimpleVertex",i[i.ControlVertex=1]="ControlVertex",i[i.FitVertex=2]="FitVertex",i))(Qd||{});const $o=class $o extends q{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new b,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new z().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subMoveGripPointsAt(t,e){return de(t,e,this._position),this}subGetOsnapPoints(t,e,n,r){(t===P.EndPoint||t===P.Node)&&r.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,this.position),t.writeInt16(70,this.vertexType|32),this}};$o.typeName="3dVertex";let Ia=$o;exports.ACAD_APPID=oa;exports.ACAD_LAYERFILTERS_NAME=bs;exports.ACCM_DEFAULT_UI_YIELD_BUDGET_MS=Zn;exports.ACDB_COMPAREHATCH_DEFAULT=nr;exports.ACDB_COMPAREHATCH_MAX=is;exports.ACDB_COMPAREHATCH_MIN=ns;exports.ACDB_COMPAREPROPS_COLOR=Oh;exports.ACDB_COMPAREPROPS_DEFAULT=Yh;exports.ACDB_COMPAREPROPS_LAYER=Nh;exports.ACDB_COMPAREPROPS_LINETYPE=Rh;exports.ACDB_COMPAREPROPS_LINETYPESCALE=Bh;exports.ACDB_COMPAREPROPS_LINEWEIGHT=Dh;exports.ACDB_COMPAREPROPS_MAX=Vh;exports.ACDB_COMPAREPROPS_MIN=zh;exports.ACDB_COMPAREPROPS_THICKNESS=Xh;exports.ACDB_COMPAREPROPS_TRANSPARENCY=Fh;exports.ACDB_COMPARERCMARGIN_DEFAULT=ir;exports.ACDB_COMPARERCMARGIN_MAX=ss;exports.ACDB_COMPARERCMARGIN_MIN=rs;exports.ACDB_COMPARETEXT_DEFAULT=rr;exports.ACDB_COMPARETEXT_MAX=os;exports.ACDB_COMPARETEXT_MIN=as;exports.ACDB_COMPARETOLERANCE_DEFAULT=sr;exports.ACDB_COMPARETOLERANCE_MAX=ls;exports.ACDB_COMPARETOLERANCE_MIN=cs;exports.ACDB_DXF_MTEXT_CHUNK_CHARS=Xn;exports.ACDB_DXF_XDATA_BINARY_MAX_BYTES=ph;exports.ACDB_DXF_XDATA_STRING_MAX_BYTES=fh;exports.ACDB_GRIPCOLOR_DEFAULT=Ch;exports.ACDB_GRIPCOLOR_MAX=la;exports.ACDB_GRIPCOLOR_MIN=ca;exports.ACDB_GRIPHOT_DEFAULT=Th;exports.ACDB_GRIPHOT_MAX=ua;exports.ACDB_GRIPHOT_MIN=ha;exports.ACDB_GRIPOBJLIMIT_MAX=Kp;exports.ACDB_GRIPOBJLIMIT_MIN=qp;exports.ACDB_GRIPSIZE_DEFAULT=Mh;exports.ACDB_GRIPSIZE_MAX=ga;exports.ACDB_GRIPSIZE_MIN=da;exports.ACDB_GRIPS_MAX=Qp;exports.ACDB_GRIPS_MIN=Zp;exports.ACDB_PROXY_GRAPHIC_CHUNK_SIZE=zm;exports.ACGI_DARK_THEME_FOREGROUND=ti;exports.ACGI_LIGHT_THEME_FOREGROUND=ei;exports.ACGI_MODEL_SPACE_BACKGROUND=Ph;exports.ACGI_PAPER_SPACE_BACKGROUND=Dp;exports.ACLY_DICTIONARY_NAME=En;exports.ACTIVE_VPORT_NAME=Pn;exports.AC_DB_SYSTEM_VARIABLE_NAMES=Lm;exports.AcCmColor=j;exports.AcCmColorUtil=ee;exports.AcCmEntityColor=ig;exports.AcCmErrors=Et;exports.AcCmEventDispatcher=rg;exports.AcCmEventManager=lt;exports.AcCmLoader=vg;exports.AcCmLoadingManager=cl;exports.AcCmObject=Qs;exports.AcCmPerformanceCollector=La;exports.AcCmTask=al;exports.AcCmTaskScheduler=ol;exports.AcCmTransparency=ht;exports.AcCmUiYieldGate=Qr;exports.AcDb2dPolyline=Fr;exports.AcDb2dVertex=Sa;exports.AcDb2dVertexType=Zd;exports.AcDb3PointAngularDimension=Mr;exports.AcDb3dPolyline=Xr;exports.AcDb3dSolid=ni;exports.AcDb3dVertex=Ia;exports.AcDb3dVertexType=Qd;exports.AcDbAbstractViewTableRecord=ro;exports.AcDbAlignedDimension=Ln;exports.AcDbAngleUnits=Ct;exports.AcDbArc=lr;exports.AcDbArcDimension=Or;exports.AcDbAttribute=ri;exports.AcDbAttributeDefinition=hr;exports.AcDbAttributeFlags=mt;exports.AcDbAttributeMTextFlag=Jt;exports.AcDbBaseWorker=Yb;exports.AcDbBatchProcessing=_u;exports.AcDbBlockReference=le;exports.AcDbBlockScaling=Uh;exports.AcDbBlockTable=ld;exports.AcDbBlockTableRecord=it;exports.AcDbBlockTableRecordFlag=jn;exports.AcDbChangeApplier=bd;exports.AcDbChangeRecorder=_d;exports.AcDbCircle=ur;exports.AcDbCodePage=Wa;exports.AcDbCurve=At;exports.AcDbDataGenerator=nd;exports.AcDbDatabase=_a;exports.AcDbDatabaseConverter=no;exports.AcDbDatabaseConverterManager=ie;exports.AcDbDatabaseTransaction=xd;exports.AcDbDatabaseTransactionManager=vd;exports.AcDbDiametricDimension=Nr;exports.AcDbDictionary=Vt;exports.AcDbDimArrowType=Bd;exports.AcDbDimStyleTable=hd;exports.AcDbDimStyleTableRecord=Dt;exports.AcDbDimTextHorizontal=wu;exports.AcDbDimTextVertical=io;exports.AcDbDimVerticalJustification=Pu;exports.AcDbDimZeroSuppression=vu;exports.AcDbDimZeroSuppressionAngular=Au;exports.AcDbDimension=ke;exports.AcDbDuplicateRecordCloning=Wu;exports.AcDbDwgVersion=xt;exports.AcDbDxfCode=Ea;exports.AcDbDxfDocumentReader=qu;exports.AcDbDxfFiler=Oe;exports.AcDbDxfFilerStatus=_h;exports.AcDbDxfObjectsReader=$u;exports.AcDbEllipse=dr;exports.AcDbEntity=q;exports.AcDbFace=gr;exports.AcDbFcf=mr;exports.AcDbFileType=Hn;exports.AcDbFilter=zu;exports.AcDbFormatter=id;exports.AcDbFrame=xr;exports.AcDbGradientPatternType=ed;exports.AcDbGroup=Yu;exports.AcDbHatch=ci;exports.AcDbHatchObjectType=td;exports.AcDbHatchPatternType=Wn;exports.AcDbHatchStyle=Ju;exports.AcDbHostApplicationServices=ar;exports.AcDbIndex=ju;exports.AcDbIntersect=Ve;exports.AcDbLayerFilter=Vu;exports.AcDbLayerIndex=Gu;exports.AcDbLayerTable=ud;exports.AcDbLayerTableRecord=Si;exports.AcDbLayout=Pi;exports.AcDbLayoutDictionary=yd;exports.AcDbLayoutManager=Jh;exports.AcDbLeader=yr;exports.AcDbLeaderAnnotationType=Ad;exports.AcDbLine=di;exports.AcDbLineSpacingStyle=Tr;exports.AcDbLinearUnits=ot;exports.AcDbLinetypeTable=dd;exports.AcDbLinetypeTableRecord=Re;exports.AcDbMLeader=br;exports.AcDbMLeaderContentType=ln;exports.AcDbMLeaderDirectionType=kd;exports.AcDbMLeaderLineType=$n;exports.AcDbMLeaderStyle=_s;exports.AcDbMLeaderTextAttachmentDirection=Pd;exports.AcDbMLine=_r;exports.AcDbMLineFlags=Id;exports.AcDbMLineJustification=Sd;exports.AcDbMText=Qe;exports.AcDbMlineStyle=so;exports.AcDbNativeDxfConverter=Ku;exports.AcDbObject=vt;exports.AcDbObjectIterator=kn;exports.AcDbOle2Frame=wr;exports.AcDbOleFrame=fi;exports.AcDbOleObjectType=Md;exports.AcDbOleTileMode=Od;exports.AcDbOpenDatabaseError=hi;exports.AcDbOpenMode=Sn;exports.AcDbOrdinateDimension=Rr;exports.AcDbOsnapMode=P;exports.AcDbPatParser=ho;exports.AcDbPatSvgRenderer=Aa;exports.AcDbPlotPaperUnits=Hh;exports.AcDbPlotRotation=Wh;exports.AcDbPlotSettings=Qh;exports.AcDbPlotShadePlotResLevel=qh;exports.AcDbPlotShadePlotType=Kh;exports.AcDbPlotStdScaleType=Zh;exports.AcDbPlotType=$h;exports.AcDbPoint=vr;exports.AcDbPoly2dType=hn;exports.AcDbPoly3dType=qn;exports.AcDbPolyFaceMesh=Yr;exports.AcDbPolyFaceMeshFace=Gd;exports.AcDbPolyFaceMeshVertex=jd;exports.AcDbPolygonMesh=zr;exports.AcDbPolygonMeshVertex=Ud;exports.AcDbPolyline=Lt;exports.AcDbPredefinedAcadIsoPat=Qu;exports.AcDbPredefinedAcadPat=gy;exports.AcDbProxyEntity=Ar;exports.AcDbProxyGraphic=fa;exports.AcDbProxyGraphicBitStream=Gh;exports.AcDbProxyGraphicByteStream=Yt;exports.AcDbProxyGraphicEndOfBufferError=Te;exports.AcDbProxyGraphicType=Lu;exports.AcDbRadialDimension=Br;exports.AcDbRasterImage=pi;exports.AcDbRasterImageClipBoundaryType=Nd;exports.AcDbRasterImageDef=Uu;exports.AcDbRasterImageImageDisplayOpt=Rd;exports.AcDbRay=Pr;exports.AcDbRegAppTable=md;exports.AcDbRegAppTableRecord=fr;exports.AcDbRegenerator=xu;exports.AcDbRenderingCache=Xe;exports.AcDbResultBuffer=Ke;exports.AcDbRotatedDimension=Dr;exports.AcDbShape=kr;exports.AcDbSolid=Sr;exports.AcDbSortentsTable=Hu;exports.AcDbSpline=yi;exports.AcDbSymbolTable=ge;exports.AcDbSymbolTableRecord=Se;exports.AcDbSysVarManager=bt;exports.AcDbSystemVariables=k;exports.AcDbTable=Ir;exports.AcDbText=In;exports.AcDbTextHorizontalMode=gu;exports.AcDbTextStyleTable=ui;exports.AcDbTextStyleTableRecord=gs;exports.AcDbTextVerticalMode=fu;exports.AcDbTrace=mi;exports.AcDbTransaction=lo;exports.AcDbTransactionManager=Dy;exports.AcDbUcsTable=gd;exports.AcDbUcsTableRecord=Su;exports.AcDbUndoStack=wd;exports.AcDbUnitsValue=nt;exports.AcDbViewTable=fd;exports.AcDbViewTableRecord=Iu;exports.AcDbViewport=Er;exports.AcDbViewportTable=pd;exports.AcDbViewportTableRecord=Be;exports.AcDbWipeout=Lr;exports.AcDbWorkerApi=Kd;exports.AcDbWorkerManager=qd;exports.AcDbXline=Cr;exports.AcDbXrecord=ao;exports.AcGeArea2d=Kt;exports.AcGeBox2d=wt;exports.AcGeBox3d=z;exports.AcGeCatmullRomCurve3d=Zl;exports.AcGeCircArc2d=rt;exports.AcGeCircArc3d=St;exports.AcGeCurve2d=Tn;exports.AcGeEllipseArc2d=me;exports.AcGeEllipseArc3d=ue;exports.AcGeEuler=Ng;exports.AcGeGeometryUtil=kt;exports.AcGeLine2d=Gt;exports.AcGeLine3d=Tt;exports.AcGeLoop2d=mn;exports.AcGeMathUtil=C;exports.AcGeMatrix2d=bi;exports.AcGeMatrix3d=D;exports.AcGeNurbsCurve=Xt;exports.AcGePlane=Jr;exports.AcGePoint2d=L;exports.AcGePoint3d=b;exports.AcGePolyline2d=Q;exports.AcGeQuaternion=xn;exports.AcGeShape2d=Xa;exports.AcGeSpline3d=Ut;exports.AcGeTol=X;exports.AcGeVector2d=at;exports.AcGeVector3d=x;exports.AcGiContext=es;exports.AcGiViewport=Sh;exports.AcLyBoolExpr=Tu;exports.AcLyLayerFilter=ys;exports.AcLyLayerFilterDialogResult=Mu;exports.AcLyLayerFilterTree=Pe;exports.AcLyLayerGroup=Ou;exports.AcTrStringUtil=_g;exports.ByBlock=oe;exports.ByLayer=dt;exports.DEBUG_MODE=pg;exports.DEFAULT_ACGI_CONTEXT=Xp;exports.DEFAULT_GRADIENT_HATCH_NAME=Lh;exports.DEFAULT_HATCH_PATTERN_IMPERIAL=jp;exports.DEFAULT_HATCH_PATTERN_METRIC=Ih;exports.DEFAULT_LINE_TYPE=Ne;exports.DEFAULT_MLEADER_STYLE=ve;exports.DEFAULT_MLINE_STYLE=we;exports.DEFAULT_TEXT_STYLE=st;exports.DEFAULT_TOL=_i;exports.DEG2RAD=Ca;exports.DefaultLoadingManager=ll;exports.FLOAT_TOL=ut;exports.HATCH_PATTERN_SOLID=Ue;exports.HATCH_PATTERN_USER=Eh;exports.MLIGHTCAD_APPID=aa;exports.ORIGIN_POINT_2D=Pg;exports.ORIGIN_POINT_3D=Ra;exports.RAD2DEG=Ta;exports.RAW_COLOR_TYPE_ACI=ms;exports.RAW_COLOR_TYPE_BY_BLOCK=si;exports.RAW_COLOR_TYPE_BY_LAYER=fs;exports.RAW_COLOR_TYPE_RGB=ps;exports.RAW_COLOR_TYPE_WINDOW_BG=Eu;exports.TAU=V;exports.TEMP_OBJECT_ID_PREFIX=Ce;exports.VPORT_FALLBACK_CENTER_2D=Gp;exports.VPORT_FALLBACK_LLC=Up;exports.VPORT_FALLBACK_URC=Hp;exports.VPORT_FALLBACK_VIEW_DIR=Wp;exports.VPORT_FALLBACK_VIEW_TARGET=$p;exports.accmYieldForPaint=sl;exports.accmYieldToUi=Cn;exports.acdbAssignWorkingDatabase=vh;exports.acdbChunkBinaryByMaxBytes=bh;exports.acdbChunkDxfMTextContents=mh;exports.acdbChunkUtf8ByMaxBytes=yh;exports.acdbCoerceIntegerSysVar=se;exports.acdbCollectChangeEntities=ba;exports.acdbCreateDxfPairReader=gh;exports.acdbCreateEntityForDxfIn=$d;exports.acdbCreateWorkerApi=Xb;exports.acdbDecodeMLeaderStyleRawColor=re;exports.acdbDwgCodePageToEncoding=oh;exports.acdbDxfInEntity=ka;exports.acdbDxfInHeader=Cu;exports.acdbDxfValueType=vi;exports.acdbEstimateDatabaseMemory=xb;exports.acdbFormatMemoryEstimate=wb;exports.acdbGetWorkingDatabase=Ah;exports.acdbHasOsnapMode=em;exports.acdbHexStringsToBytes=qa;exports.acdbHostApplicationServices=tu;exports.acdbIntegerSysVarIfInRange=Yn;exports.acdbIsBinaryDxf=ch;exports.acdbLayerGroupsToResultBuffer=Bu;exports.acdbMakeAsciiDxfPairReader=$a;exports.acdbMakeBinaryDxfPairReader=dh;exports.acdbMakeUtf8AsciiDxfPairReader=uh;exports.acdbMaskToOsnapModes=J0;exports.acdbOsnapModesToMask=Q0;exports.acdbParseFilterXRecordData=Du;exports.acdbPeekDxfHeaderInfo=lh;exports.acdbPreviewIconToDataUrl=zd;exports.acdbReadLayerFilterTree=Nu;exports.acdbResultBufferToLayerGroups=ty;exports.acdbSerializeLayerFilterTree=Ru;exports.acdbSetHostApplicationServicesProvider=wh;exports.acdbSetLayoutManagerFactory=t0;exports.acdbThumbnailImageToDataUrl=vb;exports.acdbToggleOsnapMode=tm;exports.acdbWriteFilterXRecordData=Xu;exports.acgeBasisFunction=De;exports.acgeCalculateCurveLength=Ml;exports.acgeCeilPowerOfTwo=Pl;exports.acgeClamp=pe;exports.acgeComputeParameterValues=Cl;exports.acgeDamp=gl;exports.acgeDegToRad=wl;exports.acgeEuclideanModulo=Ma;exports.acgeEvaluateNurbsPoint=Vn;exports.acgeFloorPowerOfTwo=kl;exports.acgeGenerateAveragedKnots=Tl;exports.acgeGenerateChordKnots=Yg;exports.acgeGenerateSqrtChordKnots=zg;exports.acgeGenerateUUID=hl;exports.acgeGenerateUniformKnots=Xg;exports.acgeGetOcsAngle=be;exports.acgeGetOcsReferenceVector=Fe;exports.acgeIntPartLength=Na;exports.acgeInterpolateControlPoints=Ug;exports.acgeInterpolateNurbsCurve=Ba;exports.acgeInverseLerp=dl;exports.acgeIsAngleOnCcwSweep=El;exports.acgeIsBetterDistanceAlign=Xl;exports.acgeIsBetween=Sl;exports.acgeIsBetweenAngle=Il;exports.acgeIsPowerOfTwo=Al;exports.acgeLerp=Oa;exports.acgeMapLinear=ul;exports.acgeNormalizeAngle=We;exports.acgePingpong=fl;exports.acgePointLiesOnCircle2d=Dl;exports.acgeRadToDeg=vl;exports.acgeRandFloat=bl;exports.acgeRandFloatSpread=_l;exports.acgeRandInt=yl;exports.acgeRelativeEps=Ll;exports.acgeSameCircle2d=Fl;exports.acgeSeededRandom=xl;exports.acgeSmootherstep=ml;exports.acgeSmoothstep=pl;exports.acgeTransformOcsPointToWcs=_t;exports.acgeTransformWcsPointToOcs=Rt;exports.acgiContrastingForegroundColor=zp;exports.acgiForegroundColorForBackground=Yp;exports.acgiIsLightBackground=kh;exports.acgiResolveSubEntityTraitsRgbFromBackground=Vp;exports.clone=Fn;exports.deepClone=Zs;exports.defaults=Wt;exports.has=il;exports.isEmpty=rl;exports.isEqual=He;exports.log=zn;exports.setLogLevel=mg;
|