3,W5      !"#$%&'()* + , - . / 0 1 2 3 4 NoneKA datatype that houses two values of a given type. It is provided with a 5y instance so that, when used with number types it can function similarly (though not exactly) to a mathematical vector.Maps over both values in the 8Performs operations on the matching fields of the other .Displaying the .The default for the .None     None 1A list of all possible keys used in the GLFW API.  A Map from 61 to the externals created for every single key.  Creating the 7 of a 8 from 6 to 9 from a 8 of  . Making a 8 from 6 to sink from a 8 of  .    None Safe-Inferred#Driving a network created with the  # function and a function such as  .NoneA container around  and 7 + so that one needn't pass around a tuple.>A container for all of the states themselves. It is used as a 7  in the > (which is necessary to use it within Elerea's FRP network).aA wrapper around the sinks for the mouse position, the key states, and the mouse button states.! Making an % filled with all necessary externals."9Creating a callback to update the mouse position's state.#4Creating a callback to update the keyboard's states.$8Creating a callback to update the mouse buttons' states. !"#$[:;6<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$ !"#$ !"#$None%%The class which is to be used in the   function. &: provides the API to update on every tick (purely), an '( provides the API to render every frame.(<A synonym to make the update function more self-documenting.%&'(%&'((%&'%&'(None) Given an r indicating whether or not the program should close, it either returns the delta time since the last call, or a -, indicating that the program should close.)))) None*)Creating a network to be used with the  function.**** None+TA datatype to configure the window settings when creating an OpenGL context using   in the engine.2The default for + getWindowWidth = 640 getWindowHeight = 480 getWindowFullscreen = False getWindowResizeable = False getWindowTitle = "Spice Application" +,-./0123+,-./012 +,-./0123+,-./0123 None4BStarting the spice engine with the parameters prescribed in the +. It updates and renders the %5 automatically so all you need to to is set up the ++ and make a datatype with an instance of %.4444Noneh:;6<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'(+,-./0124 !"##$%&'()*+,-. / / 0 1 2 3 4 5 6 789:;<=>?@ABCDE:;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:;{:;|:;}:;~:;:;:;:;:;:;:;:;:;G:;:;:;:;:;@A77 spice-0.1.0.2FRP.Spice.Math.VectorFRP.Spice.Input.MouseFRP.Spice.Input.KeyboardFRP.Spice.Input.MousePositionFRP.Spice.Engine.DriverFRP.Spice.InputFRP.Spice.GameFRP.Spice.Engine.RunInputFRP.Spice.Engine.NetworkFRP.Spice.ConfigFRP.Spice.Engine makeNetworkrunInput startEngine driveNetwork FRP.SpiceVector$fFunctorVector $fNumVector $fShowVector$fDefaultVectorbuttons externalssignalssinks$fOrdMouseButtonkeysInputContainergetSinksgetInputInput mousePositionkeyboardmouseSinksmousePositionSinks keyboardSinks mouseSinksmakeInputContainermakeMousePositionCallbackmakeKeyboardCallbackmakeMouseCallbackGameupdaterender DeltaTime WindowConfiggetWindowWidthgetWindowHeightgetWindowFullscreengetWindowResizablegetWindowTitledefaultWindowConfig$fDefaultWindowConfigbaseGHC.NumNum GLFW-0.5.2.2Graphics.UI.GLFWKeyelerea-2.7.0.2FRP.Elerea.ParamSignalcontainers-0.5.5.1 Data.Map.BaseMapghc-prim GHC.TypesBoolCharKey SpecialKeyUNKNOWNESCF1F2F3F4F5F6F7F8F9F10F11F12F13F14F15F16F17F18F19F20F21F22F23F24F25UPDOWNLEFTRIGHTLSHIFTRSHIFTLCTRLRCTRLLALTRALTTABENTER BACKSPACEINSERTDELPAGEUPPAGEDOWNHOMEENDKP_0KP_1KP_2KP_3KP_4KP_5KP_6KP_7KP_8KP_9 KP_DIVIDE KP_MULTIPLY KP_SUBTRACTKP_ADD KP_DECIMALKP_EQUALKP_ENTER ButtonLeft ButtonRight ButtonMiddleButtonNo MouseButton! GHC.IORefIORef Data.MaybeNothing