ǚ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                 !"#$%&'()*+,-./0123456789:; < = > ? @ A B C D E FGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d e f g h i j k l m n o p q r s t u v w x y z { | } ~          ;NoneSafe579;'Returns the vector perpendicular on the given vector between the 2 points. Always has positive y and vector length 1; y is inverted in canvas(Returns the vector perpendicular on the given vector between the 2 points. Always has negative y and vector length 1; y is inverted in canvas6   In degrees!"#$%&'()*+,-./012345-   !"#$%&'()*+,6 543!"#$%&'()*+,  210/.-$  !"#$%&'()*+,-./012345NoneSafe<=>?<=>??>=<<=>?Safe57@ABCDEFGHIJKLMNOP@ABCDEFGHIJKLMNOP@ABCDEFGHIJKLMNOPSafe57QAlmost all key presses are registered including modifier keys. Expect character keys to come in as their character. Press a c, get a "c". If a modifier is used and a different character is expected, it will be that instead. Press shift + c, get a Ct. Modifiers are also sent as their string representation: "shift", "ctrl" or "alt". Space is expected as "space". QRQRQRSafe57QS Opcode: 1900 T Opcode: 1901U Opcode: 1902V Opcode: 1800W Opcode: 1801X Opcode: 1802Y Opcode: 2300Z Opcode: 2301[@Opcode: 2302 Usually this is the top left corner of the element ] Opcode: 2201` Opcode: 2200b Opcode: 1601c Opcode: 1602d Opcode: 1603e Opcode: 1604f Opcode: 1605g Opcode: 1606h Opcode: 1607i Opcode: 1608k Opcode: 1600l Opcode: 1500m Opcode: 1501n Opcode: 1502o Opcode: 1503p Opcode: 2400q Opcode: 2401r Opcode: 2402t Opcode: 1401u Opcode: 1402w Opcode: 1400x Opcode: 1300y Opcode: 1301z Opcode: 1200{ Opcode: 1201| Opcode: 1000}Opcode: 1001 First circle = inner circle, Second circle is enclosing circle~ Opcode: 1002 Opcode: 0900 Opcode: 0901 Opcode: 0902 Opcode: 0903 Opcode: 0904 Opcode: 0800 Opcode: 0801Opcode: 0802 [ScreenPixel] should be as long as width * height * 4. Each quad is red,green,blue,alpha Opcode: 0701 Opcode:0702 Opcode: 0703 Opcode: 0700 Opcode: 0601 Opcode: 0602 Opcode: 0600 Opcode: 0501 Opcode: 0502 Opcode: 0500 Opcode: 0400 Opcode: 0401 Opcode: 0402 Opcode: 0403 Opcode: 0404 Opcode: 0405 Opcode: 0406 Opcode: 0407 Opcode: 0408 Opcode: 0300 Opcode: 0301  Opcode: 0302  Opcode: 0303  Opcode: 0304  Opcode: 0305 Reserved type words Type: t | Opcode Arguments: a | List of arguments for that data type Route: r | Either s for system or u8 for user Object: o | The object that is beneathExample: {r: s, o: {SystemMeasuredText object}}SystemMeasuredText object: {t:2102, a1:[CanvasId, CanvasText object, ScreenDimensions]} Opcode: 0200 Opcode: 0201 Opcode: 0202 Opcode: 0203 Opcode: 0204 Opcode: 0100 Opcode: 0101 Opcode: 2000 Opcode: 2001 Opcode: 2100 Opcode: 2101STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ In degreesSTUVWXYZ[\]^_`adbcefghijklmnopqrstuvwxyz{|}~DSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SafeNoneSafe57 Safe57Safe57Safe57&     2@ABCDEFGHIJK            Safe/57   Safe57"Z| The point indications are from the perspective of a regular Cartesian cordinate system.'| Rotation is around a point on the canvas. May be the centre of the boundingbox (enclosing rectangle) or an arbitrary point. Angle is in degrees and counter-clockwise in the cordinate system(from the x-axis to the y-axis) and visually on canvas clock-wise.)8Should contain atleast 1 shape. Rotation before Position*| Position is upperleftcorner. Position is the corner closes to origin. Visually in canvas, this is top left. In a Cartesian cordinate system, this is bottom left.+| Position is center,The first point of the regular polygon, always starts in the direction from the x-axis.(Towards x-infinity). Position is the the centre of the regular polygonB"| Can contain any number of points;!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[@lmno!"#$%&'(-*)+,./01<?B=>23456789:;@ACDEFGHIJKLMNOPQRSTUVWXYZ[!"#$%&'(<)*+,-./012345678945:78945;:7894<=>5?7894@A894B894BC7894B7894DEFGHIJKLMNOPQRSTUVWXYZ[ Safe Safe57"\]^_`abcdefghijklmnopqrstuvwxyz{|}!\]^_`abcdefghijklmnopqrstuvwxyz{|"ijfghdecba`_^\]}klmnopqrstuvwxyz{|\]^_`abcdefghijklmnopqrstuvwxyz{|}!Safe57  "Safe /5679:;QRT Convert to a  Convert to a  A version of 8 that works for any data type that has an instance for         #None   $None3 "( %None57!"#$%& !"#$%&None57 &None0 '()*+,-./0123 '.()*+,-/01' ()*+,-./0123NoneW      !"#$%&'()*+,-./0123456789W      !"#$%&'()*+,-./0123456789]9876543210%&'()*+,-./!"#$             !"#$% &'()*+,-./0123456789'None ;<=4>567?@89;<=>?@ ;<=4>567?@89 None;<=>?@;<=>?@(NoneAB:CD;<=>?@ABCEDABCDEAB:CD;<=>?@ABCED None ABCDEABCDE )NoneFGHIJEFFGHIJFGHIJEFNone FGHIJ FGHIJ*NoneKLMKLMKLMNoneKLMKLM+None NOPQRGSHIJKLMNOPQRS NOPQRGSHIJKLMNoneNOPQRSNOPQRS,None TUVWXNOPQTUVWX TUVWXNOPQNoneSTUVWXYZ[\]^_`adbcefghijklmnopqrstuvwxyz{|}~TUVWXTUVWX|}~z{xywvstupqrlmnokjabcdefghi`_^\]YZ[VWXSTU-NoneYZ[\R]STYZ[\]YZ[\R]STNoneQRYZ[\]YZ[\]QR.None ^_`aUbVWXYZ[^_`ab ^_`aUbVWXYZ[None@ABCDEFGHIJKLMNOP^_`ab^_`abOPLMNDEFGHIJK@ABC/None\]\\]0None^_`^^_`1Noneabcabcabc2Nonedefeventloop function geventloop function defgdefg3Nonehihihi4Nonejkjkjk5Nonelmnllmn6Nonecdoecdecdoe Noneelmno!"#$%&'(-*)+,./01<?B=>23456789:;@ACDEFGHIJKLMNOPQRSTUVWXYZ[cdecde[ZYXWVUTSRQPONMLKJIHGFDE()*+,-./012345678945:78945;:7894<=>5?7894@A894B894BC7894B7894&'#$%!"lmno7None zGCheckes to see if there is a node on a certain position {Abstracts the standardized 89 to  | Abstracts  back to  BasicShapes and Canvas events}'Translates color datatype to RGBA codes~.Translates the thickness to a float Returns the point when making a step f long from the point start in the direction of the vector. The length between start pos and result pos is always f.Vector from p1 to p2 Returns the vector perpendicular on the given vector between the 2 points. Always has positive y and vector length 1; y is inverted in canvasReturns the vector perpendicular on the given vector between the 2 points. Always has negative y and vector length 1; y is inverted in canvas8Returns the size of the vector "fghijklmnopqrstuvwxyz{|}~"fghijklmnopqrstuvwxyz{|}~"fghijklmnopqrstuvwxyz{|}~ NoneT@ABCDEFGHIJK     fghijklmnopqrstuvwxyz{|}~Tfghijklmnopqrstuvwxyz{|}~     DEFGHIJK@ABC:Nonepqrstuvwxyz{|}~pqrstuvwxyz{|}~None|}~z{xywvstupqrlmnokjabcdefghi`_^\]YZ[VWXSTU;None<NoneGrab an outEvent from the outEventQueue and route it to the correct module sender if any. If there isn't one, throw a NoOutRouteException. The router will continue until it: - Comes across a Stop outEvent: Raises a RequestShutdownException - Raises an exception - Receives an exception (Only possibility is ShutdownException) In all cases, a Stop outEvent is sent to all module senders.None=NoneNone-Starts the entire system. First the setup phase is handled to setup the different concurrent resources. This is followed by the initialization phase where all modules are initialised. Than, the different worker threads are spawned and finally the system thread will go to work as the eventloop thread.^Shutting down is handled centrally through the system thread (main thread). If any of the threads(including the system thread) receive an exception, only the first exception is thrown to the system thread which will try to shutdown immediately. This exception is logged by the system thread. All other exceptions are logged by their respective threads. The system thread will than shutdown the worker threads. This is done by throwing exceptions to all workerthreads except sender threads. These are sent a Stop event. If they take longer than 1 second, to finish up, they will also be thrown an exception.Utility function in order to create the different thread actions in the system. Assumed is that the action requires the system configuration, the module configuration and some resource that may be available in the module configuration.    >?@ABCDEFGHIJKLMNOPQRSTUUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~K       !"#$%&'()*+,-.//0123456789:;<=>?@ABCDEFGHIJKLMN@OOPQRSSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy%z'(&{|}~   >                                           !!!!!!!!!!"""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%      !!"#$%&'())*+,--./01234567889:;<==>?@@ABCDEFGHIJKLMNOPQRST'U'V'W'X'Y'Z([(\(](^(_)`)a)b)c)d*e*f*g+h+i+j+k+l+m,n,o,p,q,r-s-t-u-v-w.x.y.z.{.|6}6~67777777777777777777777777777777777::::                  """"""""""" "!"""#"$"%"&"'"(#)#*#+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<%=%>%?%@%A%B&C&D&E&F&G&H&I&C&J&K&L&M&N'O'P'Q'R'S'T(U(V(W(X(Y(Z([(\(](^(_)`)a+b+c+d+e+f+g+h,i,j,k,l-m-n-o.p.q.r.s.t.u.v/w/x0y0z0{1|1}1~222233445556::::::::::::::::::;<<<<====(eventloop-0.8.2.4-2MIopGNjKqMCPJYv8aNWr2Eventloop.Utility.VectorsEventloop.Types.Common Eventloop.Module.Websocket.Mouse#Eventloop.Module.Websocket.Keyboard!Eventloop.Module.Websocket.CanvasEventloop.Module.TimerEventloop.Module.StdOutEventloop.Module.StdInEventloop.Module.GraphsEventloop.Module.FileEventloop.Module.BasicShapes#Eventloop.Utility.Trees.GeneralTreeEventloop.Module.DrawTrees!Eventloop.Module.StatefulGraphicsEventloop.Types.EventsEventloop.Types.SystemEventloop.DefaultConfigurationEventloop.CoreEventloop.Utility.WebsocketsEventloop.Utility.Config&Eventloop.Module.Websocket.Mouse.Types)Eventloop.Module.Websocket.Keyboard.Types'Eventloop.Module.Websocket.Canvas.Types(Eventloop.Module.Websocket.Canvas.Opcode.Eventloop.Module.Websocket.Canvas.JSONEncodingEventloop.Module.Timer.TypesEventloop.Module.StdOut.TypesEventloop.Module.StdIn.TypesEventloop.Module.Graphs.TypesEventloop.Module.File.Types"Eventloop.Module.BasicShapes.Types"Eventloop.Utility.Trees.LayoutTree Eventloop.Module.DrawTrees.Types*Eventloop.Module.DrawTrees.RoseTreeGeneric,Eventloop.Module.BasicShapes.MeasureTextHack$Eventloop.Module.BasicShapes.Classes'Eventloop.Module.StatefulGraphics.TypesEventloop.Types.Exception$Eventloop.Module.DrawTrees.DrawTreesEventloop.Module.File.FileEventloop.Module.StdIn.StdInEventloop.Module.StdOut.StdOutEventloop.Module.Timer.Timer(Eventloop.Module.Websocket.Canvas.Canvas,Eventloop.Module.Websocket.Keyboard.Keyboard&Eventloop.Module.Websocket.Mouse.Mouse'Eventloop.System.DisplayExceptionThread%Eventloop.System.InitializationThreadEventloop.System.Processing Eventloop.System.EventloopThread Eventloop.System.RetrieverThreadEventloop.System.SenderThreadEventloop.System.TeardownThread(Eventloop.Module.BasicShapes.BasicShapesEventloop.Module.Graphs.GraphsEventLoop.Types EventTypes2Eventloop.Module.StatefulGraphics.StatefulGraphicsEventloop.OutRouter Eventloop.System.OutRouterThreadEventloop.System.SetupRotateLeftAroundrotateLeftAround ToPolarCoord toPolarCoordToPointtoPointVector2D|+||-||/|* negateVector angleBetween Translate translate ExtremaCoordxMinxMaxyMinyMaxCoordxyPoint PolarCoordOffsetYXLengthRadiansAngledegreesToRadiansradiansToDegrees lengthToPointlengthBetweenPointsdifferenceBetweenPoints averagePointdownPerpendicularupPerpendicular followVectorintersectVector turnToVector originPoint$fRotateLeftAroundPoint$fRotateLeftAroundPolarCoord$fToPolarCoordPoint$fToPointPolarCoord$fVector2DPoint$fVector2DPolarCoord$fExtremaCoord[]$fCoordPolarCoord $fCoordPoint$fShowPolarCoord$fEqPolarCoord $fShowPoint $fEqPoint$fGenericPoint $fNFDataPoint NumericIdNamedIdProcessingDescriptionEventloopModuleIdentifier MouseButton MouseLeft MouseRight MouseMiddle MouseEventClick DoubleClick MouseMove MouseDownMouseUp MouseEnter MouseLeave MouseType MouseCanvasMouseSVGMouseInMouseKeyboardKey ClearPartClearRectangle ClearCanvasCSSUnit CSSPixels CSSPercentage CSSBindPoint CSSFromCenterCSSFromDefault CSSPositionCSSMeasurements CSSTopOffset CSSLeftOffsetCanvasTransformSaveRestoreRotateScale Transform SetTransformResetTransformTransformationMatrix TransformUnit Alignment AlignLeft AlignRight AlignCenterTextFill NoTextFill TextStroke NoTextStrokeTextFillRenderStyleTextStrokeRenderStyleFont CanvasTextCanvasGradientTypeRadialGradientLinearGradientPatternRepetitionRepeatRepeatXRepeatYNoRepeat CanvasImage CanvasElement ImageData RenderStyle CanvasColorCanvasGradient CanvasPatternCanvasColorStopPathFill NoPathFillPathRenderFillStyle PathStroke NoPathStrokePathRenderStrokeStyleScreenPathPartMoveToLineTo BezierCurveToQuadraticCurveToArcToArc Rectangle ClosePathCanvasOperationDrawPathDrawText DoTransformClearFrame CanvasOut SetupCanvasTeardownCanvasCanvasOperations MeasureTextCanvasIn MeasuredTextSystemCanvasOutSystemMeasureTextSystemCanvasInSystemMeasuredTextRoutedMessageOut OutUserCanvasOutSystemCanvasRoutedMessageIn InUserCanvasInSystemCanvasFontSize FontFamilyScreenLineThicknessScaleYScaleX ScaleUnit ScreenCircleColorStopOffset ScreenPixel ScreenColor ScreenAlpha ScreenBlue ScreenGreen ScreenRedScreenColorMetricZIndexCanvasIdScreenEndAngleScreenStartingAngleScreenEndPointScreenControlPointScreenStartingPointScreenDimensions ScreenPoint ScreenAngle ScreenRadius ScreenHeight ScreenWidthScreenYScreenX ScreenMetricOpcodeCanvasSystemReceiveBufferTimerOutSetTimerSetIntervalTimer UnsetTimerTimerInTickTimerStartFunction StartedTimer TickBufferTimerIdMicroSecondDelay StdOutOut StdOutMessageStdInOutStdInReceiveContentsStdInReceiveLineStdInReceiveCharStdInInStdInReceivedContentsStdInReceivedLineStdInReceivedCharWeighted UnweightedDirected Undirected ThicknessThinThickColorRedBlueGreenPurpleGreyYellowOrangeBlackWhiteGraphnodesedgesdirectedweightedEdgeNodeWeightLabel GraphsOut SetupGraphs DrawGraph InstructionsGraphsInVectorPosFileOutOpenFile CloseFileRetrieveContents RetrieveLine RetrieveCharIfEOFWriteToFileIn FileOpened FileClosedRetrievedContents RetrievedLine RetrievedCharIsEOFWroteTo BoundingBox RotatePoint AroundCenter AroundPointRotationShapeCompositeShapeCircleRegularPolygonTextLine MultiLineFilledMultiLinePolygonshapes positionM rotationMposition dimensions fillColorstrokeLineThickness strokeColorradiusnumberOfPointstext fontFamilyfontSize alignmentpoint1point2points fillWidthBasicShapesOut DrawShapesNumberOfPoints LowerRight LowerLeft UpperRight UpperLeftStrokeLineThickness FillThickness StrokeColor FillColorAlphaRadius DimensionsHeightWidthPositionGraphicalNumericGeneralizeTreegeneralizeTreeMiddle BottomOffset RightOffset TopOffset LeftOffset GeneralLineGeneralNodeContentGeneralNodeText GeneralNode GeneralTreeGeneralTreeBoxtextFont textHeight charWidthmarginBetweenTreesmarginBetweenNodeContentmarginBetweenNodeRowsmarginBetweenNodeColumnsgeneralNodeDimensionflattenDimensionsgeneralNodeContentDimensionlayoutGeneralTreelayoutGeneralTreeChildren layoutLinelayoutGeneralTreeslayoutGeneralNodeContentListlayoutGeneralNodeContenttextSize treeIndex$fGeneralizeTreeGeneralTree$fShowGeneralNodeContent$fEqGeneralNodeContent$fGenericGeneralNodeContent$fNFDataGeneralNodeContent$fShowGeneralLine$fEqGeneralLine$fGenericGeneralLine$fNFDataGeneralLine$fShowGeneralTree$fEqGeneralTree$fGenericGeneralTree$fNFDataGeneralTreeRoseTreeRoseNodeRBTreeRBNode NodeColorNodeRed NodeBlackNodeGrey DrawTreesOut DrawTrees ToRoseTree toRoseTreegenericToRoseTreeToScreenPathParttoScreenPathPartsToCanvasOperationstoCanvasOperations ToCanvasOut toCanvasOutOverlapsoverlapscontainstouches ToBoundingBox toBoundingBoxToCentertoCenter ToPrimitives toPrimitivesGeometricPrimitivePoints CircleAreaopOnBoundingBoxallRegularPolygonPointsboundingBoxFromPrimitives normalizeBBox roundPoint roundColorstrokePointsForLinestrokePointsForConnection strokePointsstrokePointsClosedPathfindRotationPoint toCanvasTexttoCanvasPathFillhasCanvasPathFillallScreenPolygonPoints NoDimChange noDimChangeGraphicsStates GraphicsState StatefulBBStatefulGraphicStatefulGraphicPerformedDrawnModifiedRemovedNoOpStatefulGraphicsOutDrawRemoveOutOutFileOutTimer OutStdOutOutStdIn OutCanvasOutBasicShapes OutDrawTrees OutGraphsOutStatefulGraphicsStopInStart InKeyboardInMouseInFileInTimerInStdInInCanvasInGraphs$fEqIn$fShowIn$fEqOut $fShowOut $fGenericOut $fNFDataOutIOState TimerState FileStateStatefulGraphicsStateNoStatestartedIntervalTimers startedTimersopenedstates IOConstantsMouseConstantsKeyboardConstantsCanvasConstantsStdInConstantsTimerConstants FileConstants NoConstants clientSocketclientConnection serverSocketcanvasSystemReceiveBuffer stdInInQueue tickInQueue fileInQueue SharedIOStateSharedIOConstantssafePrintToken measureText!EventloopSetupModuleConfigurationmoduleIdentifier initializerFeventRetrieverF preprocessorFpostprocessorF eventSenderF teardownFEventloopSetupConfigurationbeginProgstate eventloopFsetupModuleConfigurationsEventloopSystemConfigurationeventloopConfig moduleConfigssharedIOConstantssharedIOStateTsystemThreadIdretrieverThreadsMoutRouterThreadMsenderThreadsM exceptions isStoppingMEventloopConfiguration progstateT eventloopFunc inEventQueue outEventQueue"EventloopModuleSenderConfigurationsendersenderEventQueueEventloopModuleConfigurationmoduleId ioConstantsioStateT initializerM retrieverM preprocessorMpostprocessorM senderConfigM teardownMSenderEventQueue OutEventQueue InEventQueueOutEventRouterTeardown EventSender PostProcessor PreProcessorEventRetriever Initializer$fShowIOConstants!setupDrawTreesModuleConfigurationdrawTreesModuleIdentifierdrawTreesPostProcessorshowGeneralTreeList rbExampleTreeroseExampleTreesetupFileModuleConfigurationfileModuleIdentifierfileEventRetrieverfileEventSender fileTeardownsetupStdInModuleConfigurationstdInModuleIdentifierstdInInitializerstdInEventRetrieverstdInEventSendersetupStdOutModuleConfigurationstdOutModuleIdentifierstdOutEventSendersetupTimerModuleConfigurationtimerModuleIdentifiertimerInitializertimerEventRetrievertimerEventSender timerTeardownsetupCanvasModuleConfigurationcanvasModuleIdentifiercanvasInitializercanvasEventRetrievercanvasEventSender setupKeyboardModuleConfigurationkeyboardModuleIdentifierkeyboardInitializerkeyboardEventRetrieverkeyboardEventSendersetupMouseModuleConfigurationmouseModuleIdentifiermouseInitializermouseEventRetrievermouseEventSender#setupBasicShapesModuleConfigurationbasicShapesModuleIdentifierbasicShapesPostProcessorsetupGraphsModuleConfigurationgraphsModuleIdentifier nodeRadius xArrowSize yArrowSize weightHeightdimCanvasGraphsroundDimCanvasGraphscanvasGraphsWidthcanvasGraphsHeightinstructionsHeightinstructionsBeginAtcanvasInstrWidthcanvasInstrHeightdimCanvasInstrroundDimCanvasInstrcanvasIdGraphscanvasIdInstructionsonNodegraphsPreProcessorgraphsPostProcessorcolorToRGBAColorthicknessToFloatfindNode graphToShapes nodeToShapes edgeToShapes posOnVector vectorizedownPerpendicularToupPerpendicularTo vectorSize(setupStatefulGraphicsModuleConfiguration statefulGraphicsModuleIdentifierstatefulGraphicsInitializerstatefulGraphicsPostProcessor%allModulesEventloopSetupConfigurationsetupSharedIOConstantssetupSharedIOStatestartEventloopSystemterminateWithinOrThrowExceptionthreadActionsBasedOnModulespawnWorkerThreadregisterRetrieverThreadregisterOutRouterThreadregisterSenderThreadthrowShutdownExceptionToThreadallWorkerThreadsretrieverThreadsoutRouterThread senderThreadsUnbufferedReaderThread ReaderThread ClientSocket ServerSocket ReceiveBufferMessagePortHostcreateBindListenServerSocketacceptFirstConnectionsetupWebsocketConnectionhandleCloseRequestException takeMessage writeMessagewriteBinaryMessage isConnectedcloseWebsocketConnectiondestroyWebsocketConnection$fShowConnection&network-2.6.3.1-G4Up1CPKbp7DeFsnywOnGGNetwork.Socket iNADDR_ANY)websockets-0.9.8.2-G6KgPF0ECtM3baU5Lvww5aNetwork.WebSockets.Connection Connection ipAddress keyboardPort mousePort canvasPort $fShowMVarToOpcodetoOpcode$fToOpcodeCSSBindPoint$fToOpcodeCSSPosition$fToOpcodeClearPart$fToOpcodeCSSUnit$fToOpcodeCanvasTransform$fToOpcodeAlignment$fToOpcodeTextFill$fToOpcodeTextStroke$fToOpcodeFont$fToOpcodeCanvasText$fToOpcodeCanvasGradientType$fToOpcodePatternRepetition$fToOpcodeCanvasImage$fToOpcodeRenderStyle$fToOpcodePathFill$fToOpcodePathStroke$fToOpcodeScreenPathPart$fToOpcodeCanvasOperation$fToOpcodeCanvasOut$fToOpcodeSystemCanvasOutoperationObject$fToJSONClearPart$fToJSONCSSUnit$fToJSONCSSBindPoint$fToJSONCSSPosition$fToJSONCanvasTransform$fToJSONAlignment$fToJSONTextFill$fToJSONTextStroke $fToJSONFont$fToJSONCanvasText$fToJSONCanvasGradientType$fToJSONPatternRepetition$fToJSONCanvasImage$fToJSONRenderStyle$fToJSONPathFill$fToJSONPathStroke$fToJSONScreenPathPart$fToJSONCanvasOperation$fToJSONCanvasOut$fToJSONSystemCanvasOut$fToJSONRoutedMessageOut$fFromJSONAlignment$fFromJSONFont$fFromJSONCanvasText$fFromJSONCanvasIn$fFromJSONSystemCanvasIn$fFromJSONRoutedMessageInConnect BottomConnect TopConnect LayoutLineLayoutNodeContentLayoutNodeText LayoutNode LayoutTreeLBox marginLine lineThickness textThickness printTreeprintNodeContent printLinemarginizeLinePointsbase GHC.GenericsGeneric GToRoseTree gtoRoseTree emptyNode cleanTree mergeProduct$fToRoseTree[]$fToRoseTree[]0$fToRoseTreeChar$fToRoseTreeDouble$fToRoseTreeFloat$fToRoseTreeInteger$fToRoseTreeInt$fGToRoseTree:+:$fGToRoseTree:*:$fGToRoseTreeV1$fGToRoseTreeU1$fGToRoseTreeM1$fGToRoseTreeM10$fGToRoseTreeK1measureTextRefsaveMeasureTextuseMeasureText$fToScreenPathPartShape$fToCanvasOperationsShape$fToCanvasOutBasicShapesOut$fOverlapsBoundingBox$fOverlapsShape$fToBoundingBoxShape$fToBoundingBoxBoundingBox$fToCenterShape$fToCenterBoundingBox$fToPrimitivesShape$fToPrimitivesBoundingBox$fTranslateGeometricPrimitive$fTranslateShape$fRotateLeftAroundBoundingBox $fExtremaCoordGeometricPrimitive$fExtremaCoordBoundingBox$$fRotateLeftAroundGeometricPrimitive$fOverlapsStatefulBB$fToBoundingBoxStatefulBB$fToPrimitivesStatefulBB$fOverlapsStatefulGraphic$fToBoundingBoxStatefulGraphic$fToPrimitivesStatefulGraphicEventloopExceptionShuttingDownExceptionRequestShutdownExceptionNoOutRouteExceptionInitializationExceptionRetrievingExceptionProcessingExceptionSendingExceptionTeardownExceptionexceptionMessage$fShowEventloopException$fExceptionEventloopExceptionmaxWidthshowGeneralTreeList'showGeneralTreenodeColorToFillColor$fGeneralizeTreeRoseTree$fGeneralizeTreeRBTreefileInitializerfileEventSender' doReadAction getFromFilefileIsReadablefileIsWriteable fileIsOpenedretrieveContentsretrieveOpenedFileremoveOpenedFile closeAllFilesstdInEventSender' doStdInGettimerEventSender' registerTimer startTimerunregisterTimer haltTimerfindStartedTimertickcanvasTeardownsendRoutedMessageOutroute measureText_messageToKeyboardInkeyboardTeardown$fFromJSONKeyboardmessageToMouseIn mouseTeardown$fFromJSONPoint$fFromJSONMouseButton$fFromJSONMouseEvent$fFromJSONMouseType$fFromJSONMouseInstartDisplayingExceptionsdisplayExceptionstartInitializinginitializeModulesinitializeModuleprocessEventWithModuleprocessEventsWithModules processEventsstartEventloopingfindProcessorseventloopSteps eventloopStepstartRetrieving retrieveOne startSendingsendOnestartTeardowningteardownModulesteardownModulebasicShapesInitializergetIdgetZgetShapereplaceGraphicalStatefindGraphicalStatecalculateNewScenecalculateRemovecalculateRedrawscalculateRedrawsForDrawncalculateRedrawsForRemoved statefulIds statefulIdsplitsplitOnperformStatefulGraphicsOut addGraphicaddOrReplaceGraphic removeGraphic routeOutEventstartOutRouting outRoutes outRouteOneoutRouteBroadcastStopsetupEventloopSystemConfigsetupEventloopConfigurationsetupEventloopModuleConfig'setupEventloopModuleSenderConfiguration