h$n(b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                 3 Safe-Inferred 5 implicit/A type serving to enumerate our output formats.implicitDefault 2D output formatimplicitDefault 3D output formatimplicitAll supported 2D formatsimplicitTrue for 2D capable simplicitAll supported 3D formatsimplicitTrue for 3D capable simplicit1A list mapping file extensions to output formats.implicitLookup an output format for a given output file. Throw an error if one cannot be found.implicitGet filename extension for implicit/A Read instance for our output format. Used by auto in our command line parser. Reads a string, and evaluates to the appropriate OutputFormat.   Safe-Inferred wimplicitThe goal of getLoops is to extract loops from a list of segments. The input is a list of segments. The output a list of loops, where each loop is a list of segments, which each piece representing a "side".For example: Given points [[1,2],[5,1],[2,3,4,5], ... ] notice that there is a loop 1,2,3,4,5...  repeat But we give the output [ [ [1,2], [2,3,4,5], [5,1] ], ... ] so that we have the loop, and also knowledge of how the list is built (the "sides" of it). Safe-Inferred implicitConsume whitespace.implicitMatch the module keyword.implicitMatch the function keyword.implicitMatch the if keyword.implicitMatch the else keyword.implicitMatch the let keyword.implicitMatch the each keyword.implicitMatch boolean true.implicitMatch boolean falseimplicitMatch the undef keyword.implicitMatch the include keyword.implicitMatch the use keyword.implicit6match a single character token followed by whitespace.implicitmatch a colon.implicitmatch a semicolon.implicitmatch a comma.implicitMatch operators.implicit!match something between two ends.implicitmatch an identifier. variable name, function name, module name, etc.None! None6"$#None8>?^!)implicitA symbolic 3D format!4implicitA symbolic 2D object format. We want to have symbolic objects so that we can accelerate rendering & give ideal meshes for simple cases.>implicitMeans of constructing symbolic objects that are common between the 2D and 3D case. This type is parameterized on obj and vec so that 4 and )+ can instantiate it for their own purposes.?implicitThe empty object@implicitThe entirely full objectGimplicit / FIXME: May not be empty. expose to type system.cimplicit5Add multiply and divide operators for two B2s or B3s.fimplicit A triple of s. When used as a volume or position vector, measured in millimeters cubed. When used as a rotation, interpreted as Euler angles measured in radians.gimplicitA pair of two s. When used as an area or position vector, measured in millimeters squared.himplicitA type synonym for . When used in the context of positions or sizes, measured in units of millimeters. When used as in the context of a rotation, measured in radians.iimplicitA give up point for dividing Bs, and for the maximum difference between abs(n) and abs(-n).jimplicit*Convert from our Integral to our Rational.kimplicit+Convert from our Fast Integer (int32) to B.limplicit;Convert from our rational to a float, for output to a file.pimplicit Convert a ! to its constituent euler angles.From https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Source_code_2zimplicit Monoid under .{implicitSemigroup under .~implicit Monoid under .implicitSemigroup under . !"#$%&'()*+,-./0213456789:;<=>?@EFAHGIBCDJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop !"#$hgficde`ab^_\]Z[WXYTUVSRQPONML>?@EFAHGIBCDJK456789:)*+,-./0213%&'(;<=mjklnop2None 5implicit>Options changing the behavior of the extended OpenScad engine.implicitAn individual message.implicitThe types of messages the execution engine can send back to the application.implicitIn order to not propagate Parsec or other modules around, create our own source position type for the AST.implicit&Objects for our OpenSCAD-like languageimplicitA statement, along with the line, column number, and file it is found at.implicitAn expression.implicit-Handles parsing arguments to built-in modulesimplicitFor actual argument entries: 6AP (argument name) (default) (doc) (next Argparser...)implicit For returns: APTerminator (return value)implicit For failure: APFail (error message)implicitAn example, then nextimplicitA string to run as a test, then invariants for the results, then nextimplicitA branch where there are a number of possibilities for the parser underneathimplicitThe state of computation.implicit"A hash of variables and functions.implicit,The result of geometry generating functions.implicit(The path we are looking for includes in.implicitOutput strings, warnings, and errors generated during execution.implicit/Options controlling the execution of scad code.implicitFor programs using this API to perform variable lookups, after execution of an escad has completed.None!implicitPerform a variable lookup FIXME: generate a warning when we look up a variable that is not present.implicit"Pure the path stored in the state. None &>"2None $*implicitBuilds an argparser for the type that is expected from it. FIXME: make a version of this that accepts multiple symbol names, so we can have h= and height=implicitInline documentation.implicitAn inline default value.implicitAn inline example.implicitInline test and combinators.implicitApply arguments to an ArgParserimplicit argumentsimplicitArgParser to apply them toimplicit(result, error messages)None %mimplicitA pattern parserimplicitParse a number.implicitParse a variable reference. NOTE: abused by the parser for function calls.implicitParse a true or false value.implicit$Parse a quoted string. FIXME: no u unicode support? 12None %None&timplicitall of the token parsers are lexemes which consume all trailing spaces nicely. | This leaves us to deal only with the first spaces in the file. None 'implicitConstruct a VarLookup from the given Pattern and OVal, if possible.implicitThe entry point from StateC. evaluates an expression, pureing the result, and moving any error messages generated into the calling StateC.!None 'implicit(Run statements out of the OpenScad file."None?(#None(implicitSerialize a value as a single precision float with an exponent attached.implicit*Serialize a float with four decimal places None )iimplicit%Generate an STL file is ASCII format.implicit+Generate an STL file in it's binary format.$None*DimplicitSlightly stretch the bounding box of an object, in order to ensure that during mesh generation, there are no problems because values are right at the edge.%None+implicitSlightly stretch the bounding box of an object, in order to ensure that during mesh generation, there are no problems because values are right at the edge.&None, implicitThe purpose of refine is to add detail to a polyline aproximating the boundary of an implicit function and to remove redundant points. We break this into two steps: detail and then simplify.'None,+(None,K)None,k*None,+None,,None,-None-implicit.A colour. Red Green Blue and Alpha components.implicit,A light source. source point, and intensity.implicitAverage a set of colours.  None .implicit0DXF2 export in 2D. conforming to AutoCAD R12/13.implicitGcode generation for the laser cutter in HackLab. Complies with  Generate a .obj format file from a NormedTriangleMesh see: 1https://en.wikipedia.org/wiki/Wavefront_.obj_file None&?6% implicit3The distance a point p is from a line segment (a,b)implicitRounded Maximum Consider max(x,y) = 0, the generated curve has a square-like corner. We replace it with a quarter of a circleNOTE: rmax is not associative!implicitLike rmax, but on a list instead of two. Just as maximum is. The implementation is to take the maximum two and rmax those.implicitLike rmin but on a list.implicit/Pack the given objects in a box the given size.implicitReflect a vector across a hyperplane defined by its normal vector.From https://en.wikipedia.org/wiki/Reflection_(mathematics)#Reflection_through_a_hyperplane_in_n_dimensionsimplicitLift a function over  into a function over f.implicit Convert a ! to its constituent euler angles.From https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Source_code_2implicitHaskell's standard library doesn't make floating-point infinity available in any convenient way, so we define it here.implicitradiusimplicitfirst number to round maximumimplicitsecond number to round maximumimplicitresulting numberimplicitradiusimplicitnumbers to take round maximumimplicitresulting numberimplicitradiusimplicitnumbers to take round minimumimplicitresulting numberimplicitThe box to pack withinimplicit"The space seperation between itemsimplicitObjects with their boxesimplicitPacked objects with their positions, objects that could be packedimplicit Mirror axisimplicitVector to transform  .None>?9{ implicitAd-hoc methods we need to share code between 2D and 3D. With the exception of , these are actually all standard methods of other classes, which we don't have access to due to the choice representation for R2 and R3.7This class is unnecessary if we were to implement #283.implicitEquivalent to implicitEquivalent to implicit8Given a bounding box, produce the points at each corner.implicitCompute the intersection of dimensionality-polymorphic bounding boxes.implicit An empty box.implicit,Define a box around all of the given points.implicitCompute the intersection of dimensionality-polymorphic bounding boxes.implicit*Increase a boxes size by a rounding value. /None'(?9implicit.Normalize a dimensionality-polymorphic vector.0None:1None&:92None;>implicitDefine a Box2 around the given object, and the space it occupies while rotating about the center point. Note: No implementations for Square, Translate2, or Scale2 as they would be identical to the fallthrough.3None;` None;None ; None&>R implicitOperations available on both 2D and 3D objects. The obvious omission of rotation operations from this class are a technical limitation, and are instead provided by  and .Library users shouldn't need to provide new instances of this class.implicitA  for including >s in obj. Prefer using  instead of this.implicitGet the bounding box an objectimplicit'Get the implicit function for an objectimplicit'Get the implicit function for an objectimplicitA pattern that abstracts over : and 3.implicitA rectangular prismimplicitA cubeimplicitA conical frustum --- ie. a cylinder with different radii at either end.implicit A rectangleimplicitA squareimplicit A 2D polygonimplicit9Translate an object by a vector of appropriate dimension.implicitScale an objectimplicitComplement an ObjectimplicitThe object that fills no spaceimplicit&The object that fills the entire spaceimplicitSet the current object-rounding value for the given object. The rounding value is measured in units of distance, and describes the radius of rounded corners.This can be used to change the shape of more primitive forms, for example, we can make a cube with rounded corners via withRounding 5 ( True 20). r obj applies the rounding r all primitives objects in obj, so long as they have the same dimensionality. That is to say, the current object-rounding value set in 3D will not apply to extruded 2D shapes.implicitMirror an object across the hyperplane whose normal is a given vector.implicitOutset of an object.implicitMake a shell of an object.implicit Rounded unionimplicitRounded differenceimplicitRounded minimumimplicitExtrude a 2d object upwards. The current object-rounding value set by = is used to round the caps, but is not used by the 2D object.implicit)The current object-rounding value set by > is used to round the caps, but is not used by the 2D object.implicitRotate a 3D object via an Euler angle, measured in radians, along the world axis.implicit+Rotate a 3D object along an arbitrary axis.implicitTransform a 3D object using a 4x4 matrix representing affine transformation (OpenSCAD multmatrix)implicit;Attempt to pack multiple 3D objects into a fixed area. The z coordinate of each object is dropped, and the resulting packed objects will all be on the same plane.FIXME: shouldn't this pack into a 3d area, or have a 3d equivalent?implicitTransform a 2D object using a 3x3 matrix representing affine transformation (OpenSCAD multmatrix)implicit6Attempt to pack multiple 2D objects into a fixed area.implicitObject to get box ofimplicit Bounding boximplicit"Object to get implicit function ofimplicitImplicit functionimplicit"Object to get implicit function ofimplicitImplicit functionimplicitRadius of the sphereimplicitResulting sphereimplicitBottom.. cornerimplicitTop right... cornerimplicit Resuting cubeimplicit Centered?implicitSizeimplicit)Resuting cube. (0,0,0) is bottom left if center = False, otherwise it's the center.implicitRadius of the cylinderimplicitSecond radius of the cylinderimplicitHeight of the cylinderimplicitResulting cylinderimplicitRadius of the cylinderimplicitHeight of the cylinderimplicitResulting cylinderimplicitradius of the circleimplicitresulting circleimplicitBottom left cornerimplicitTop right cornerimplicitResulting squareimplicit Centered?implicitSizeimplicit(Resulting square (bottom right = (0,0) )implicitVerticies of the polygonimplicitResulting polygonimplicitVector to translate byimplicitObject to translateimplicitResulting objectimplicitAmount to scale byimplicitObject to scaleimplicitResulting scaled objectimplicitObject to complementimplicitResultimplicitVector defining the hyperplaneimplicitObject to mirrorimplicitResulting objectimplicitdistance to outsetimplicitobject to outsetimplicitresulting objectimplicitwidth of shellimplicitobject to take shell ofimplicitresulting shellimplicitThe radius (in mm) of roundingimplicitobjects to unionimplicitResulting objectimplicitThe radius (in mm) of roundingimplicit Base objectimplicit!Objects to subtract from the baseimplicitResulting objectimplicitThe radius (in mm) of roundingimplicitObjects to intersectimplicitResulting objectimplicitImplicit functionimplicit Bounding boximplicitResulting objectimplicitExtrusion heightimplicittwistimplicitscaleimplicit translateimplicitobject to extrudeimplicitheight to extrude toimplicitAngle to sweep to (in rad)implicit translateimplicitrotateimplicitobject to extrudeimplicitAngle of rotationimplicitAxis of rotationimplicit Area to packimplicitSeparation between objectsimplicitObjects to packimplicit3 if the objects could be packed into the given areaimplicit Area to packimplicitSeparation between objectsimplicitObjects to packimplicit3 if the objects could be packed into the given area++None Simplicit;The only thing exported here. basically, a list of modules.4None SNoneT`implicit1Define variables used during the extOpenScad run.implicitEvaluate an expression.NoneTimplicit8Small wrapper of our parser to handle parse errors, etc.5NoneU>implicit>getContour gets a polyline describing the edge of a 2D object.00000NoneUNoneUNone>VyimplicitThere is a discrete way to aproximate this object. eg. Aproximating a 3D object with a triangle mesh would be DiscreteApproxable Obj3 TriangleMeshNone?YimplicitWrite an object to a file with LazyText IO, using the given format writer function.implicitSerialize an object using the given format writer. No file target is implied.implicit%Output a file containing a 3D object.implicit%Output a file containing a 2D object.implicit Resolutionimplicit*File Format Writer (Function that formats)implicit File NameimplicitObject to renderimplicitWriting Action!implicit Resolutionimplicit*File Format Writer (Function that formats)implicitObject to renderimplicitResult  NoneaimplicitExport a PNG of the ). The projection is with a front-facing camera, so the coordinate system is +(left to right, front to back, down to up). implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-2) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-2) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-3) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-3) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-3) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-2) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-3) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-3) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-2) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-2) more time.implicitRendering resolution, in millimeters. Smaller values produce exports more faithful to the implicit model, at the expense of taking O(n^-3) more time.%&'()4fghhgf4)%&'(None &bimplicit#Find the resolution to raytrace at.67867869:69:6;<6;<=>?@ABCDEFGHIJKLMNOPQRSTUUVWXYZ[\]^_`abcdefghijklmnopqqrstuvwxyz{|}~                     0123                                                !"""#####$%&'()***+,-----------..........//245555555'implicit-0.4.0.0-2QFrzNvv6lKFGu3kPbjLACGraphics.ImplicitGraphics.Implicit.Definitions%Graphics.Implicit.Export.OutputFormat(Graphics.Implicit.Export.Render.GetLoops)Graphics.Implicit.ExtOpenScad.Definitions)Graphics.Implicit.ExtOpenScad.Parser.Expr.Graphics.Implicit.ExtOpenScad.Parser.Statement,Graphics.Implicit.Export.TriangleMeshFormats(Graphics.Implicit.Export.PolylineFormats2Graphics.Implicit.Export.NormedTriangleMeshFormatsGraphics.Implicit.MathUtilGraphics.Implicit.PrimitivesGraphics.Implicit.ObjectUtil(Graphics.Implicit.Export.SymbolicFormats(Graphics.Implicit.ExtOpenScad.Primitives+Graphics.Implicit.ExtOpenScad.Eval.ConstantGraphics.Implicit.ExtOpenScad%Graphics.Implicit.Export.SymbolicObj3%Graphics.Implicit.Export.SymbolicObj2*Graphics.Implicit.Export.DiscreteAproxableGraphics.Implicit.Export#Graphics.Implicit.Export.Resolution*Graphics.Implicit.ExtOpenScad.Parser.LexerGraphics.Implicit.FastIntUtilGraphics.Implicit.IntegralUtilGraphic.Implicit.Primitivesunion)Graphics.Implicit.ExtOpenScad.Util.StateC'Graphics.Implicit.ExtOpenScad.Util.OVal,Graphics.Implicit.ExtOpenScad.Util.ArgParser)Graphics.Implicit.ExtOpenScad.Parser.Util'Graphics.Implicit.ExtOpenScad.Eval.Expr,Graphics.Implicit.ExtOpenScad.Eval.StatementGraphics.Implicit.Export.Util)Graphics.Implicit.Export.TextBuilderUtils*Graphics.Implicit.Export.Symbolic.Rebound3*Graphics.Implicit.Export.Symbolic.Rebound2*Graphics.Implicit.Export.Render.RefineSegs+Graphics.Implicit.Export.Render.Interpolate/Graphics.Implicit.Export.Render.HandlePolylines'Graphics.Implicit.Export.Render.GetSegs+Graphics.Implicit.Export.Render.Definitions.Graphics.Implicit.Export.Render.TesselateLoops-Graphics.Implicit.Export.Render.HandleSquares!Graphics.Implicit.Export.RayTrace)Graphics.Implicit.ObjectUtil.GetBoxShared.Graphics.Implicit.ObjectUtil.GetImplicitShared)Graphics.Implicit.ObjectUtil.GetImplicit3)Graphics.Implicit.ObjectUtil.GetImplicit2$Graphics.Implicit.ObjectUtil.GetBox2$Graphics.Implicit.ObjectUtil.GetBox3%Graphics.Implicit.ExtOpenScad.DefaultGraphics.Implicit.Export.Render#linear-1.21.9-6oNTW01QwujhmpV2bFQ8CLinear.Quaternion Quaternion Linear.V3V3 Linear.V2V2 OutputFormatSVGSCADPNGGCodeASCIISTLSTLTHREEJSOBJDXFdef2Ddef3D formats2D formatIs2D formats3D formatIs3DformatExtensionsguessOutputFormatformatExtension$fReadOutputFormat$fDefaultOutputFormat$fShowOutputFormat$fEqOutputFormatgetLoopsFastℕ fromFastℕ toFastℕℕfromℕtoℕ ExtrudeMScaleC1C2Fn SymbolicObj3CubeSphereCylinderRotate3 Transform3ExtrudeExtrudeM RotateExtrudeExtrudeOnEdgeOfShared3 SymbolicObj2SquareCirclePolygonRotate2 Transform2Shared2 ObjectContextobjectRounding SharedObjEmptyFull ComplementUnionR DifferenceR IntersectR TranslateScaleMirrorOutsetShell EmbedBoxedObj WithRounding BoxedObj3 BoxedObj2Boxed3Boxed2Box3Box2Obj3Obj2NormedTriangleMeshgetNormedTriangles TriangleMesh getTrianglesNormedTriangleTrianglePolytriPolyline getSegmentsComponentWiseMultable⋯*⋯/ℝ3ℝ2ℝminℝ fromℕtoℝfromFastℕtoℝfromℝtoFloatdefaultObjectContext toScaleFn isScaleIDquaternionToEuler$fComponentWiseMultableV3$fComponentWiseMultableV2$fNFDataPolyline$fNFDataPolytri$fNFDataTriangle$fNFDataNormedTriangle$fNFDataTriangleMesh$fShowBlackhole$fShowSharedObj$fMonoidSymbolicObj2$fSemigroupSymbolicObj2$fShowSymbolicObj2$fShowExtrudeMScale$fMonoidSymbolicObj3$fSemigroupSymbolicObj3$fShowSymbolicObj3$fGenericSymbolicObj3$fGenericExtrudeMScale$fGenericSymbolicObj2$fEqObjectContext$fOrdObjectContext$fShowObjectContext$fGenericSharedObj TestInvariantEulerCharacteristicScadOptsopenScadCompatibilityimportsAllowedMessage MessageTypeTextOutWarningError SyntaxError Compatibility UnimplementedSourcePositionOVal OUndefinedOErrorOBoolONumOListOStringOFuncOUModuleONModule OVargsModuleOObj3OObj2 StatementInclude:=If NewModule ModuleCall DoNothing StatementIExprVarLitEListELamE:$PatternNameListPWild VarLookupSymbol ArgParserAP APTerminatorAPFail APExampleAPTestAPBranchStateC CompStatescadVarsoVals sourceDirmessagesscadOptsvarUnion lookupVarIn$fShowSourcePosition $fShowMessage$fDefaultScadOpts $fShowOVal$fEqOVal$fAlternativeArgParser$fMonadPlusArgParser$fMonadArgParser$fApplicativeArgParser$fFunctorArgParser$fShowStatementI$fEqStatementI$fShowStatement $fEqStatement $fShowExpr$fEqExpr$fShowVarLookup $fEqVarLookup$fShowCompState$fShowTestInvariant$fShowScadOpts $fEqScadOpts $fEqMessage$fShowMessageType$fEqMessageType$fEqSourcePosition $fShowPattern $fEqPattern $fShowSymbol $fEqSymbol $fOrdSymbolexpr0 parseProgramstl binaryStljsTHREEsvgdxf2hacklabLaserGCodeobjdistFromLineSeg box3sWithinrmaxrmaximumrminimumpackreflectalaV3packV3unpackV3inftyObject_SharedgetBox getImplicit' getImplicit getImplicit3 getImplicit2getBox2getBox3scad2scad3$fBuildSymbolicObj3$fBuildSymbolicObj2Sharedsphererect3cube cylinder2cylindercirclerectsquarepolygon translatescale complement emptySpace fullSpace withRoundingmirroroutsetshellunionR differenceR intersectRimplicit difference intersectextrudeextrudeM rotateExtrudeextrudeOnEdgeOfrotate3rotateQrotate3V transform3pack3rotate transformpack2$fObjectSymbolicObj3V3Double$fObjectSymbolicObj2V2DoubleprimitiveModules addConstantsrunExpr runOpenscadsymbolicGetMeshsymbolicGetContourDiscreteAproxable discreteAprox+$fDiscreteAproxableSymbolicObj2DynamicImage!$fDiscreteAproxableSymbolicObj2[]+$fDiscreteAproxableSymbolicObj3DynamicImage1$fDiscreteAproxableSymbolicObj3NormedTriangleMesh+$fDiscreteAproxableSymbolicObj3TriangleMesh writeObject formatObjectwriteSVG writeDXF2writeSTL writeBinSTLwriteOBJ writeTHREEJSwriteGCodeHacklabLaser writeSCAD3 writeSCAD2writePNGexport3export2 writePNG2 writePNG3estimateResolution whiteSpace matchModule matchFunctionmatchIf matchElsematchLet matchEach matchTrue matchFalse matchUndef matchIncludematchUsematchTok matchColon matchSemi matchCommamatchLE surroundedBymatchIdentifierlexermatchLTmatchGEmatchGTmatchEQmatchNEmatchANDmatchORmatchCATmatchEXPghc-prim GHC.TypesDouble@|| lookupVargetPath getVarLookupmodifyVarLookuppushValsgetValsputValswithPathShiftedBy getRelPath addMessageerrorCwarnC scadOptions OTypeMirrorfromOObjtoOObjoTypeStr getErrors caseOType<||> divideObjsargumentdoc defaultToexampletestargMapeulerCharacteristicpatternMatchernumbervariableboolean scadString*<|>?:tryMany scadUndefinedsourcePositionmatchPatevalExprStateE ExprState rawRunExpr runStatementI normTriangle normVertexcentroidbfbuildTruncFloat text-1.2.3.2Data.Text.Internal.LazyTextData.Text.Internal.BuilderBuildertoLazyTextWith fromLazyTextData.Text.Lazy toLazyTextbuildℕbuildIntrebound3rebound2refine interpolatecleanLoopsFromSegsgetSegs TriSquareTrisSq tesselateLoopmergedSquareTrisColorLightaverageSceneCamera cameraRaytraceRay VectorStuffcornersuniformVbaseGHC.Basepureelements Data.FoldabletoListintersectBoxesemptyBox pointsBox unionBoxes outsetBox getBoxShared normalizegetImplicitSharedgetBox2R!lens-5.1.1-4YKrd8cImFMDX0ZV6QIC2hControl.Lens.TypePrism' GHC.MaybeJustdefaultObjects getContourgetMesh$***$***$$**$