Q(IuH      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG  Safe-InferredH*ByteString should be exactly 4 bytes long I Apply mask JCreate a random mask HIJHIJHIJNone8Error in case of failed handshake. Will be thrown as an K. MTODO: This should probably be in the Handshake module, and is solely here to  prevent a cyclic dependency.  for example EOF came too early# (which is actually a parse error)  or for your own errors. (like  unknown path?) ?The request was well-formed, but the library user rejected it.  (e.g.  unknown path) CThe servers response was somehow invalid (missing headers or wrong  security token) CThe request was somehow invalid (missing headers or wrong security  token) We don'9t have a match for the protocol requested by the client.  todo: version parameter A response including a body HTTP response, without body. A request with a body 3An HTTP request. The request body is not yet read. Request headers LParse an initial request M Encode an HTTP upgrade response NAn upgrade response O Bad request PHTTP response parser QGet the Sec-WebSocket-Version header $ RSLMTNOPUVWQXYZ! RSLMTNOPUVWQ RSLMTNOPUVWQXYZNoneThe connection couldn'4t be established or broke down unexpectedly. thrown  as an iteratee exception. Fthe client unexpectedly closed the connection while we were trying to  receive some data. "todo: Also want this for sending. HIn order to have an even more high-level API, we define a typeclass for I values the user can receive from and send to the socket. A few warnings  apply: * Natively, everything is represented as a [, so this is the  fastest instance  You should only use the \ or the ] instance when you are > sure that the data is UTF-8 encoded (which is the case for   messages). M Messages can be very large. If this is the case, it might be inefficient to  use the strict ^ and ] instances. .For an end-user of this library, dealing with Frames would be a bit K low-level. This is why define another type on top of it, which represents ! data for the application layer. Different control messages !>The kind of message a server application typically deals with _`a !"#bcdef_`a !"# _a` !#"bcdefNoneg)Internal state used by the demultiplexer h4Thrown if the client sends invalid multiplexed data iBThe type of a frame. Not all types are allowed for all protocols. j1A low-level representation of a WebSocket packet gklhminopqrsjtuvwxyz{|}ginopqrsjtuvwxyz{|gklhmisrqponjtuvwxyz{|}None~Parse a frame ~ ~None  None..A new client connected to the server. We haven't accepted the connection  yet, though. 0Options, passed as-is to the ' 1-Useful for e.g. inspecting the request path. 2EOne-shot callback fired when a connection is accepted, i.e., *after* / the accepting response is sent to the client. 3 Input stream 4Output stream Utility 9KReceive an application message. Automatically respond to control messages. :?Receive a message, converting it to whatever format is needed. <Send a  =Send a message as text >Send a message as binary data ?Send a friendly close message @ Send a ping $%&'()*+,-./0123456789:;<=>?@$%&'()*+,-./0123456789:;<=>?@./0123456'()*+,-$%&789:;<=>?@$%&'()*+,-./0123456789:;<=>?@ NoneA>WebSockets application that can be ran by a server. Once this  action : finishes, the underlying socket is closed automatically. BGProvides a simple server. This function blocks forever. Note that this J is merely provided for quick-and-dirty standalone applications, for real - applications, you should use a real server.  A version of B- which allows you to customize some options. ABAddress to bind Port to listen on  Application Never returns ABAB NoneCAA client application interacting with a single server. Once this  A action finished, the underlying socket is closed automatically. CDHost Port Path Client application EHost Port Path Options Custom headers to send Client application FStream Host Path Connection options Custom headers to send Client application GSocket Host Path Options Custom headers to send Client application CDEFGCDEFGNone=  !"#$%&'.156789:;<=>?@ABCDEFG>.1156'$%&789:;<=>?@  !#" ABCDEGF    !"#$%&'(!$))*++,-./01123456789:;<=>?@AB C D E F G H IJKLMNOPQRSTUVWXYZ[\]^_`abc#bd#_eafghijklmnopqnrostuvwxqyz{|}~ websockets-0.8.0.0Network.WebSocketsNetwork.WebSockets.ConnectionNetwork.WebSockets.Hybi13.MaskNetwork.WebSockets.HttpNetwork.WebSockets.Types%Network.WebSockets.Hybi13.DemultiplexNetwork.WebSockets.Hybi13Network.WebSockets.ProtocolNetwork.WebSockets.ServerNetwork.WebSockets.ClientHandshakeExceptionOtherHandshakeExceptionRequestRejectedMalformedResponseMalformedRequest NotSupportedResponse ResponseHead responseCoderesponseMessageresponseHeadersRequest RequestHead requestPathrequestHeaders requestSecureHeadersConnectionExceptionConnectionClosedWebSocketsDatafromLazyByteStringtoLazyByteString DataMessageBinaryTextControlMessagePongPingCloseMessageConnectionOptionsconnectionOnPong ConnectionconnectionOptionsconnectionTypeconnectionProtocol connectionIn connectionOutPendingConnectionpendingOptionspendingRequestpendingOnAccept pendingIn pendingOut acceptRequest rejectRequestdefaultConnectionOptionsreceivereceiveDataMessage receiveDatasendsendDataMessage sendTextDatasendBinaryData sendClosesendPing ServerApp runServer ClientApp runClient runClientWithrunClientWithStreamrunClientWithSocketMask maskPayload randomMaskbase GHC.Exception ExceptiondecodeRequestHeadencodeResponseHead response101 response400decodeResponseHeadgetRequestSecWebSocketVersionencodeRequestHead encodeRequestencodeResponsedecodeResponsegetRequestHeadergetResponseHeaderdecodeHeaderLine$fExceptionHandshakeException$fErrorHandshakeExceptionbytestring-0.10.0.2Data.ByteString.Lazy.Internal ByteString text-0.11.2.3Data.Text.Lazy.InternalData.Text.InternalData.ByteString.InternalConnectionTypeClientConnectionServerConnection$fExceptionConnectionException$fWebSocketsDataText$fWebSocketsDataText0$fWebSocketsDataByteString$fWebSocketsDataByteString0DemultiplexStateDemultiplexException FrameTypeFrameunDemultiplexState PongFrame PingFrame CloseFrame BinaryFrame TextFrameContinuationFrameframeFin frameRsv1 frameRsv2 frameRsv3 frameType framePayloademptyDemultiplexState demultiplex$fExceptionDemultiplexException parseFrameheaderVersions finishRequestfinishResponse encodeMessageencodeMessages encodeFramedecodeMessageshashKey createRequestProtocolHybi13defaultProtocol protocols compatible sendResponseghc-prim GHC.TypesIO runServerWithrunApp