!0]"J      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI-Nonelm^JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SafelmNonelmhttp24Integer decoding. The first argument is N of prefix.decodeInteger 5 10 $ BS.empty10%decodeInteger 5 31 $ BS.pack [154,10]1337decodeInteger 8 42 $ BS.empty42http24Integer decoding. The first argument is N of prefix. Nonelmhttp2 Bit stream.http2Data type for Bit.http2Zerohttp2Onehttp2From  of length 8 to .fromBits [T,F,T,F,T,F,T,F]170fromBits [F,T,F,T,F,T,F,T]85 Nonelmhttp2&let bs = BS.pack [0x12,0x34,0xf3,0xab]unpack4bits bs[1,2,3,4,15,3,10,11]unpack4bits $ BS.tail bs[3,4,15,3,10,11] Safelm 1 Nonelm | None"#lm!http2Huffman encoding.http2Huffman encoding.Nonelm#Ehttp2Type for Huffman decoding.http2 Creating .http2Marking the EOS pathNonelm5!http2(Internal representation for header keys.http2Index for value tablehttp2should be indexed in HPACKhttp2is this a pseudo header key? http2Case insensitive header key http2!Extracting an index from a token. http26Extracting a case insensitive header key from a token. http2,Extracting a folded header key from a token.Ahttp2 Not defined in the static table.Bhttp2 Not defined in the static table.Chttp2CA place holder to hold header keys not defined in the static table.Dhttp2Minimum token index.Ehttp20Maximun token index defined in the static table.Fhttp2Maximum token index.Ghttp2Token index for #.Hhttp2Is this token ix for Cookie?Ihttp20Is this token ix to be held in the place holder?Jhttp2>Is this token ix for a header not defined in the static table?Khttp2;Is this token for a header not defined in the static table?Lhttp2!Making a token from a header key.&toToken ":authority" == tokenAuthorityTrue toToken "foo"KToken {ix = 54, shouldBeIndexed = True, isPseudo = False, tokenKey = "foo"}toToken ":bar"KToken {ix = 54, shouldBeIndexed = True, isPseudo = True, tokenKey = ":bar"}I  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLI LDEFGIHJK  !"#$%&'()*+,-./0123456789:;<=>?@ABCNone2lmFOhttp2Errors for decoder.Phttp2Index is out of rangeQhttp2+Eos appears in the middle of huffman stringRhttp2,Non-eos appears in the end of huffman stringShttp2)Eos of huffman string is more than 7 bitsThttp2Encoded string has no lengthUhttp2.A peer set the dynamic table size less than 32Vhttp2<A peer tried to change the dynamic table size over the limitWhttp2&Table size update at the non-beginningZhttp2Strategy for HPACK encoding.\http2$Which compression algorithm is used.]http23Whether or not to use Huffman encoding for strings.^http2*Compression algorithms for HPACK encoding._http2No compression`http2&Using indices in the static table onlyahttp2 Using indicesbhttp2Index for table.chttp2TokenBased header list.dhttp2TokenBased header.http2To be a h or g.ehttp2 Header list.fhttp2Header.ghttp2 Header value.hhttp2 Header name.ihttp2Default Z.defaultEncodeStrategy=EncodeStrategy {compressionAlgo = Linear, useHuffman = False}#OPQRSTUVWXYZ[\]^`_abcdefghiNonelmL http2>Type for table entry. Size includes the 32 bytes magic number.jhttp2Size in bytes.http2From f to .http2Getting the size of .http2Getting d.http2Getting .http2Getting h.http2Getting g.http2Dummy  to initialize a dynamic table.http22How many entries can be stored in a dynamic table?bfghjNonelmShttp2The size of static table.http2Get  from the static table.toStaticEntry 1^Entry 42 (Token {ix = 0, shouldBeIndexed = True, isPseudo = True, tokenKey = ":authority"}) ""toStaticEntry 8^Entry 42 (Token {ix = 4, shouldBeIndexed = True, isPseudo = True, tokenKey = ":status"}) "200"toStaticEntry 50[Entry 37 (Token {ix = 40, shouldBeIndexed = True, isPseudo = False, tokenKey = "Range"}) ""http2Pre-defined static table.None"#lmTrNonelmUhttp2Huffman decoding.http2Huffman decoding.NonelmUNone"#>Plmgkhttp2Type for dynamic table.http2An arrayhttp2 Start pointhttp2The current number of entrieshttp2The size of the arrayhttp21The current dynamic table size (defined in HPACK)http2-The max dynamic table size (defined in HPACK)http2 Printing k.lhttp2eWhen SETTINGS_HEADER_TABLE_SIZE is received from a peer, its value should be set by this function.mhttp2 Creating k for encoding.nhttp2 Creating k for decoding.http2 Renewing k with necessary entries copied.http2Is the size of k really changed?ohttp2 Creating k< for encoding, performing the action and clearing the k.phttp2 Creating k< for decoding, performing the action and clearing the k.qhttp2 Clearing kE. Currently, this frees the temporary buffer for Huffman decoding.http2 Inserting  to k . New k, the largest new b and a set of dropped OLD b are returned.mhttp2The dynamic table sizenhttp2The dynamic table sizehttp21The size of temporary buffer for Huffman decodingohttp2The dynamic table sizephttp2The dynamic table sizehttp2(The size of temporary buffer for Huffman"klmnopqNonePlmh-bfghjklmnopqNone"#lmyrhttp2 Converting ea to the HPACK format. This function has overhead of allocating/freeing a temporary buffer. 5 will be thrown if the temporary buffer is too small.http2 Converting e to the HPACK format. 5 will be thrown if the temporary buffer is too small.shttp2 Converting c, to the HPACK format directly in the buffer._4th argument is relating to dynamic table size update. When calling this function for a new c, it must be . If  and set by lT, dynamic table size update is generated at the beginning of the HPACK format.'The return value is a pair of leftover c and how many bytes are filled in the buffer. If the leftover is empty, the encoding is finished. Otherwise, this function should be called with it again. 4th argument must be .rhttp2The size of a temporary buffer.http2An HPACK formathttp2The size of a temporary buffer.http2An HPACK formatshttp2 at the first time,  when continued.http2Leftover, filled lengthrsNone"#lmthttp2%A pair of token list and value table.uhttp2An array to get g quickly. v+ should be used. Internally, the key is  .vhttp2 Accessing g with .whttp2Converting the HPACK format to e.Headers are decoded as is.O/ would be thrown if the HPACK format is broken.J will be thrown if the temporary buffer for Huffman decoding is too small.xhttp2Converting the HPACK format to c and u.,Multiple values of Cookie: are concatenated.0If a pseudo header appears multiple times, Y is thrown.'If unknown pseudo headers appear, Y is thrown.7If pseudo headers are found after normal headers, Y is thrown./If a header key contains capital letters, Y is thrown.O/ would be thrown if the HPACK format is broken.J will be thrown if the temporary buffer for Huffman decoding is too small.yhttp27Converting a header list of the http-types style to c and u.whttp2An HPACK formatxhttp2An HPACK formattuvwxyNonelm8rstuvwxyNonelmzhttp2RDefault dynamic table size. The value is 4,096 bytes: an array has 128 entries.defaultDynamicTableSize40960OPQRSTUVWXYZ[\]^`_abcdefghijklmnopqrstuvwxyz0rwsxkzmnqopl^`_aZ[\]iOPQRSTUVWXYefhgcdutvyjbSafe"#lmQ{http2Internal representation of priority in priority queues. The precedence of a dequeued entry should be specified to enqueue when the entry is enqueued again.http2 For test only{     Safelm {    NonelmDhttp2fStarting a thread pool manager. Its action is initially set to 'return ()' and should be set by @. This allows that the action can include the manager itself.http2ERegistering closer for a resource and returning a timer refresher.  !"NonelmM|http2Naive implementation for readN.|None2lmc8}http2(The data type for HTTP/2 frame payloads.http2'The data type for HTTP/2 frame headers.http2 The data type for HTTP/2 frames.http2!The type for padding in payloads.http26The type for fragments of a header encoded with HPACK.http2The type for stream identifierhttp2The type for flags.http2The type for frame type.http2The type for raw frame type.http2Type for stream priorityhttp2>The type for weight in priority. Its values are from 1 to 256.http2The type for window size.http2NCooked version of settings. This is suitable to be stored in a HTTP/2 context.http2Association list of SETTINGS.http2 The type for raw SETTINGS value.http2The type for SETTINGS key.http2)The connection error or the stream error.http2The type for error code. See  -https://tools.ietf.org/html/rfc7540#section-7.http2The type for raw error code.http2"The length of HTTP/2 frame header.frameHeaderLength9http2 Converting  to .fromErrorCodeId NoError0"fromErrorCodeId InadequateSecurity12http2 Converting  to .toErrorCodeId 0NoErrortoErrorCodeId 0xcInadequateSecuritytoErrorCodeId 0xeUnknownErrorCode 14http2 Obtaining  from .http2 Converting  to raw value.)fromSettingsKeyId SettingsHeaderTableSize1,fromSettingsKeyId SettingsMaxHeaderBlockSize6http2Converting raw value to .toSettingsKeyId 0NothingtoSettingsKeyId 1Just SettingsHeaderTableSizetoSettingsKeyId 6Just SettingsMaxHeaderBlockSizetoSettingsKeyId 7Nothinghttp2 Checking  and reporting an error if any.*checkSettingsList [(SettingsEnablePush,2)]AJust (ConnectionError ProtocolError "enable push must be 0 or 1")http2The default settings.defaultSettingsSettings {headerTableSize = 4096, enablePush = True, maxConcurrentStreams = Nothing, initialWindowSize = 65535, maxFrameSize = 16384, maxHeaderBlockSize = Nothing}http2Updating settings.XupdateSettings defaultSettings [(SettingsEnablePush,0),(SettingsMaxHeaderBlockSize,200)]Settings {headerTableSize = 4096, enablePush = False, maxConcurrentStreams = Nothing, initialWindowSize = 65535, maxFrameSize = 16384, maxHeaderBlockSize = Just 200}http2 The default initial window size.defaultInitialWindowSize65535http2The maximum window size. maxWindowSize 2147483647http2:Checking if a window size exceeds the maximum window size.isWindowOverflow 10FalseisWindowOverflow maxWindowSizeFalse$isWindowOverflow (maxWindowSize + 1)Truehttp2Default concurrency.recommendedConcurrency100http2+Default priority which depends on stream 0.defaultPriority?Priority {exclusive = False, streamDependency = 0, weight = 16}http2+Highest priority which depends on stream 0.highestPriority@Priority {exclusive = False, streamDependency = 0, weight = 256}http2 Converting  to .fromFrameTypeId FrameData0!fromFrameTypeId FrameContinuation9!fromFrameTypeId (FrameUnknown 10)10http2 Converting  to .toFrameTypeId 0 FrameDatatoFrameTypeId 9FrameContinuationtoFrameTypeId 10FrameUnknown 10http2%The maximum length of HTTP/2 payload.maxPayloadLength16384http2-The initial value of flags. No flags are set. defaultFlags0http2DChecking if the END_STREAM flag is set. >>> testEndStream 0x1 Truehttp27Checking if the ACK flag is set. >>> testAck 0x1 Truehttp2(Checking if the END_HEADERS flag is set.testEndHeader 0x4Truehttp2#Checking if the PADDED flag is set.testPadded 0x8Truehttp2%Checking if the PRIORITY flag is set.testPriority 0x20Truehttp2Setting the END_STREAM flag.setEndStream 01http2Setting the ACK flag.setAck 01http2Setting the END_HEADERS flag.setEndHeader 04http2Setting the PADDED flag. setPadded 08http2Setting the PRIORITY flag. setPriority 032http2.Checking if the stream identifier for control. isControl 0True isControl 1Falsehttp2.Checking if the stream identifier for request. isRequest 0False isRequest 1Truehttp2/Checking if the stream identifier for response. isResponse 0False isResponse 2Truehttp2&Checking if the exclusive flag is set.http2Setting the exclusive flag.http2Clearing the exclusive flag.http2Getting  from }.,framePayloadToFrameTypeId (DataFrame "body") FrameDatahttp22Checking if padding is defined in this frame type.isPaddingDefined $ DataFrame ""TrueisPaddingDefined $ PingFrame ""Falsey}~#$Nonelm http2&Abstract data type for priority trees.http2Default precedence.http2 Converting  to {R. When an entry is enqueued at the first time, this function should be used.http2Creating a new priority tree.http2XBringing up the structure of the priority tree. This must be used for Priority frame.http2OEnqueuing an entry to the priority tree. This must be used for Header frame.http2'Checking if the priority tree is empty.http2'Checking if the priority tree is empty.http2*Dequeuing an entry from the priority tree.http2*Dequeuing an entry from the priority tree.http2$Deleting the entry corresponding to .  and 5 are used to change the priority of a live stream. { {None"#lm http2)Auxiliary information for frame encoding.http2!Flags to be set in a frame headerhttp2%Stream id to be set in a frame headerhttp2Padding if any. In the case where this value is set but the priority flag is not set, this value gets preference over the priority flag. So, if this value is set, the priority flag is also set.http2A smart builder of .encodeInfo setAck 0IEncodeInfo {encodeFlags = 1, encodeStreamId = 0, encodePadding = Nothing}http2Encoding an HTTP/2 frame to f. This function is not efficient enough for high performace program because of the concatenation of .0encodeFrame (encodeInfo id 1) (DataFrame "body")*"\NUL\NUL\EOT\NUL\NUL\NUL\NUL\NUL\SOHbody"http2Encoding an HTTP/2 frame to [$]. This is suitable for sendMany.http2GEncoding an HTTP/2 frame header. The frame header must be completed.http2zWriting an encoded HTTP/2 frame header to the buffer. The length of the buffer must be larger than or equal to 9 bytes. http2`Encoding an HTTP/2 frame payload. This returns a complete frame header and chunks of payload.http2stream identifier%http2Payload length.   None"#Plm http2#The type for frame payload decoder. http2Decoding an HTTP/2 frame to . The second argument must be include the entire of frame. So, this function is not useful for real applications but useful for testing. http28Decoding an HTTP/2 frame header. Must supply 9 bytes. http26Checking a frame header and reporting an error if any.BcheckFrameHeader defaultSettings (FrameData,(FrameHeader 100 0 0))DLeft (ConnectionError ProtocolError "cannot used in control stream")http2Decoding an HTTP/2 frame payload. This function is considered to return a frame payload decoder according to a frame type.http2%Frame payload decoder for DATA frame.http2(Frame payload decoder for HEADERS frame.http2)Frame payload decoder for PRIORITY frame.http2+Frame payload decoder for RST_STREAM frame.http2)Frame payload decoder for SETTINGS frame.http2-Frame payload decoder for PUSH_PROMISE frame.http2%Frame payload decoder for PING frame.http2'Frame payload decoder for GOAWAY frame.http2.Frame payload decoder for WINDOW_UPDATE frame.http2-Frame payload decoder for CONTINUATION frame.&http2Helper function to pull off the padding if its there, and will eat up the trailing padding automatically. Calls the decoder func passed in with the length of the unpadded portion between the padding octet and the actual padding http2HTTP/2 settingshttp2Input byte-streamhttp2 Decoded frame    NonelmYhttp2The preface of HTTP/2.connectionPreface""PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"http2Length of the preface.connectionPrefaceLength24}~     }~     !Nonelm7'()*+"Nonelm?http2&Making a position read and its closer.http2Manipulating a file resource.http2[Closing a file resource. Its refresher is automatiaclly generated by the internal timer.http2iRefreshing a file resource while reading. Closing the file must be done by its own timer or something.http2Position read for files. http2How many bytes to read!http2Offset for file."http2File specification.$http2HTTP/2 push promise or sever push. Pseudo REQUEST headers in push promise is automatically generated. Then, a server push is sent according to &.%http2jAccessor for a URL path in a push promise (a virtual request from a server). E.g. "/style/default.css".&http24Accessor for response actually pushed from a server.'http2Accessor for response weight.(http21Either the next trailers maker or final trailers.+http2@Trailers maker. A chunks of the response body is passed with 5. The maker should update internal state with the O and return the next trailers maker. When response body reaches its end, A is passed and the maker should generate trailers. An example: &{-# LANGUAGE BangPatterns #-} import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as C8 import Crypto.Hash (Context, SHA1) -- cryptonite import qualified Crypto.Hash as CH -- Strictness is important for Context. trailersMaker :: Context SHA1 -> Maybe ByteString -> IO NextTrailersMaker trailersMaker ctx Nothing = return $ Trailers [("X-SHA1", sha1)] where !sha1 = C8.pack $ show $ CH.hashFinalize ctx trailersMaker ctx (Just bs) = return $ NextTrailersMaker $ trailersMaker ctx' where !ctx' = CH.hashUpdate ctx bsUsage example: let h2rsp = responseFile ... maker = trailersMaker (CH.hashInit :: Context SHA1) h2rsp' = setResponseTrailersMaker h2rsp maker,http2HTTP response body.-http27Streaming body takes a write action and a flush action.,http2HTTP response.-http2Accessor for response status..http2Accessor for response header./http2Accessor for response body.0http2%Accessor for response trailers maker..http2Additional information./http2@Time handle for the worker processing this request and response.0http2 HTTP request.1http2Accessor for request headers.2http26Accessor for body length specified in content-length:.1http2Accessor for body.3http2HTTP/2 server takes a HTTP request, should generate a HTTP response and push promises, then should give them to the sending function. The sending function would throw exceptions so that they can be logged.4http2HTTP/2 server configuration.. !"#$2'&%(*)+,34-5,60/.-.7/089121345:9876#None$lm@6:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno$None$lmB pqrstuvwxyz{%None"#$lmB|}~&None$lmFhttp2"The context for HTTP/2 connection.http2RFC 7540 says "Other frames (from any stream) MUST NOT occur between the HEADERS frame and any CONTINUATION frames that might follow". This field is used to implement this requirement.'None"#$lmJhttp2The type for cleaning up.http26This function is passed to workers. They also pass ,[s from a server to this function. This function enqueues commands for the HTTP/2 sender.(None"#$lmJ)None"#$lmK~*None$lmLchttp2Type for input streaming.+None"#lmM<;http2Running HTTP/2 server.;,NonelmN<http2Position read based on .<-NonelmSS=http2Making configuration whose IO is not efficient. A write buffer is allocated internally. That should be deallocated by the returned action.>http2aMaking simple configuration whose IO is not efficient. A write buffer is allocated internally.?http26Deallocating the resource of the simple configuration.=>?None"#lm[ @http21Reading a chunk of the request body. An empty  returned when finished.Ahttp2@Reading request trailers. This function must be called after @ returns an empty.Bhttp2Creating response without body.Chttp2Creating response with file.Dhttp2Creating response with builder.Ehttp2!Creating response with streaming.Fhttp2EGetter for response body size. This value is available for file body.Ghttp2Setting + to ,.Hhttp2#TrailersMake to create no trailers.Ihttp2Creating push promise.0| !"#$'&%()*+,-./0213456789:;<=>?@ABCDEFGHI0;456789:>?=3012@A./,BCED-F+()*HG$I%&'"#! |<./0./1./2./233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'(()*+,-./01 2 3 4 5 6 7 8 9 : ; < = > ? @AB"C"D"E"F"G"H"I"J"J"K"L"M"N"O"O"P"Q"R"S"T"U"V"W"X"Y"Z"Z"["\"]"^"_+`,a-b-c-defghijklmnopqorsortopuovwopxoyzoy{oy|oy}oy~oyoyoyoyoyoyoyoyoyoyoyoyoyoyoyoyoyoyopopopopopopopopopopopopopopoooooooooooooooooooopopopopopoooooooooooovovovovovovovovovovovovovovooooooooooooooooooooooooooooooooooo o o o  o  o o o o o o o ooooooooooooooooooo o o!o"#o"$o"%o"&o"'o"(o")o"*o"+o",o"-o".o"/o"0o"1o"2o"3o"4o"5o"6o"7o"8o"9o":o";o"<o"=o">o"?o"@o"Ao"Bo"Co"Do"Eo"Fo"Go"Ho"Io"Jo"Ko"Lo"Mo"No"Oo"'o"Po"Qo"Ro"So"To"Uo"Vo"Wo"Xo"Yo"Zo[\o[]o[]o^_o^`o^ao^bo^co^do^eo^fo^go^ho^io^jo^ko^lo^mo^noopoyqoyroysotouovowxowyowzow{ow|ow}ow~owowowowowowowowowowowowowowowowowowowowowowowoooorororororororororororororororororororororororororororororororoooooooooopopopopopopopopopopopopopopopopopopop`                   !("#$%&'()*+,-./0012345#"%'67#"%'89:;<=>?@ABCD E!F!G!H!I!J"K"L"M"N"O"P"K"Q"R"S"R"T"V"T#L#U#V#W#X#Y#Z#[#\#]#^#^#_#`#a#b#c#d#e#f#f#g#h#i#j#k#l#l#m#m#n#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~######$$$$$$$$$E$$$%%%&&&&&&&&&&&&&&&&&&&&&&&&'''(((((()**+o"http2-2.0.5-A9g3OqwpDAZG1RLdNZ0XND Network.HPACKNetwork.HPACK.TokenNetwork.HTTP2.PriorityNetwork.HTTP2.Server Network.HTTP2ImportsNetwork.HPACK.Builder!Network.HPACK.HeaderBlock.IntegerNetwork.HPACK.Huffman.Bit Network.HPACK.Huffman.ByteStringNetwork.HPACK.Huffman.ParamsNetwork.HPACK.Huffman.TableNetwork.HPACK.Huffman.EncodeNetwork.HPACK.Huffman.TreeNetwork.HPACK.TypesNetwork.HPACK.Table.EntryNetwork.HPACK.Table.StaticNetwork.HPACK.Table.RevIndexNetwork.HPACK.Huffman.DecodeNetwork.HPACK.HuffmanNetwork.HPACK.Table.DynamicNetwork.HPACK.Table Network.HPACK.HeaderBlock.Encode Network.HPACK.HeaderBlock.DecodeNetwork.HPACK.HeaderBlockNetwork.HTTP2.Priority.PSQNetwork.HTTP2.Priority.QueueNetwork.HTTP2.Server.ManagerNetwork.HTTP2.Server.ReadNNetwork.HTTP2.TypesNetwork.HTTP2.EncodeNetwork.HTTP2.Decode Network.HTTP2.Server.EncodeFrameNetwork.HTTP2.Server.APINetwork.HTTP2.Server.TypesNetwork.HTTP2.Server.StreamNetwork.HTTP2.Server.QueueNetwork.HTTP2.Server.ContextNetwork.HTTP2.Server.WorkerNetwork.HTTP2.Server.HPACKNetwork.HTTP2.Server.SenderNetwork.HTTP2.Server.ReceiverNetwork.HTTP2.Server.RunNetwork.HTTP2.Server.FileNetwork.HTTP2.Server.Config/network-byte-order-0.1.5-GALpwQ0SlSnCqygFNSIs56Network.ByteOrderBuffer BufferSize BufferOverrunTokenixshouldBeIndexedisPseudotokenKeytokenIx tokenCIKeytokenFoldedKeytokenAuthority tokenMethod tokenPath tokenScheme tokenStatustokenAcceptCharsettokenAcceptEncodingtokenAcceptLanguagetokenAcceptRanges tokenAccepttokenAccessControlAllowOrigintokenAge tokenAllowtokenAuthorizationtokenCacheControltokenContentDispositiontokenContentEncodingtokenContentLanguagetokenContentLengthtokenContentLocationtokenContentRangetokenContentType tokenCookie tokenDate tokenEtag tokenExpect tokenExpires tokenFrom tokenHost tokenIfMatchtokenIfModifiedSincetokenIfNoneMatch tokenIfRangetokenIfUnmodifiedSincetokenLastModified tokenLink tokenLocationtokenMaxForwardstokenProxyAuthenticatetokenProxyAuthorization tokenRange tokenReferer tokenRefreshtokenRetryAfter tokenServertokenSetCookietokenStrictTransportSecuritytokenTransferEncodingtokenUserAgent tokenVarytokenViatokenWwwAuthenticatetokenConnectiontokenTEtokenMax minTokenIxmaxStaticTokenIx maxTokenIx cookieTokenIxisCookieTokenIx isMaxTokenIxisStaticTokenIx isStaticTokentoToken $fEqToken $fShowToken DecodeError IndexOverrunEosInTheMiddle IllegalEos TooLongEosEmptyEncodedStringTooSmallTableSizeTooLargeTableSizeIllegalTableSizeUpdateHeaderBlockTruncatedIllegalHeaderNameEncodeStrategycompressionAlgo useHuffmanCompressionAlgoNaiveStaticLinearIndexTokenHeaderList TokenHeader HeaderListHeader HeaderValue HeaderNamedefaultEncodeStrategySize DynamicTablesetLimitForEncodingnewDynamicTableForEncodingnewDynamicTableForDecodingwithDynamicTableForEncodingwithDynamicTableForDecodingclearDynamicTable encodeHeaderencodeTokenHeader HeaderTable ValueTablegetHeaderValue decodeHeaderdecodeTokenHeader toHeaderTabledefaultDynamicTableSize Precedence defaultReadN FramePayload DataFrame HeadersFrame PriorityFrameRSTStreamFrame SettingsFramePushPromiseFrame PingFrame GoAwayFrameWindowUpdateFrameContinuationFrame UnknownFrame FrameHeader payloadLengthflagsstreamIdFrame frameHeader framePayloadPaddingHeaderBlockFragmentStreamId FrameFlags FrameTypeId FrameData FrameHeaders FramePriorityFrameRSTStream FrameSettingsFramePushPromise FramePing FrameGoAwayFrameWindowUpdateFrameContinuation FrameUnknown FrameTypePriority exclusivestreamDependencyweightWeight WindowSizeSettingsheaderTableSize enablePushmaxConcurrentStreamsinitialWindowSize maxFrameSizemaxHeaderBlockSize SettingsList SettingsValue SettingsKeyIdSettingsHeaderTableSizeSettingsEnablePushSettingsMaxConcurrentStreamsSettingsInitialWindowSizeSettingsMaxFrameSizeSettingsMaxHeaderBlockSize HTTP2ErrorConnectionError StreamError ErrorCodeIdNoError ProtocolError InternalErrorFlowControlErrorSettingsTimeout StreamClosedFrameSizeError RefusedStreamCancelCompressionError ConnectErrorEnhanceYourCalmInadequateSecurityHTTP11RequiredUnknownErrorCode ErrorCodeframeHeaderLengthfromErrorCodeId toErrorCodeId errorCodeIdfromSettingsKeyIdtoSettingsKeyIdcheckSettingsListdefaultSettingsupdateSettingsdefaultInitialWindowSize maxWindowSizeisWindowOverflowrecommendedConcurrencydefaultPriorityhighestPriorityfromFrameTypeId toFrameTypeIdmaxPayloadLength defaultFlags testEndStreamtestAck testEndHeader testPadded testPriority setEndStreamsetAck setEndHeader setPadded setPriority isControl isRequest isResponse testExclusive setExclusiveclearExclusiveframePayloadToFrameTypeIdisPaddingDefined PriorityTreedefaultPrecedence toPrecedencenewPriorityTreeprepareenqueueisEmpty isEmptySTMdequeue dequeueSTMdelete EncodeInfo encodeFlagsencodeStreamId encodePadding encodeInfo encodeFrameencodeFrameChunksencodeFrameHeaderencodeFrameHeaderBufencodeFramePayloadFramePayloadDecoder decodeFramedecodeFrameHeadercheckFrameHeaderdecodeFramePayloaddecodeDataFramedecodeHeadersFramedecodePriorityFramedecoderstStreamFramedecodeSettingsFramedecodePushPromiseFramedecodePingFramedecodeGoAwayFramedecodeWindowUpdateFramedecodeContinuationFrameconnectionPrefaceconnectionPrefaceLengthPositionReadMakerSentinelCloser Refresher PositionRead ByteCount FileOffsetFileSpec PushPromisepromiseRequestPathpromiseResponse promiseWeightNextTrailersMakerTrailers TrailersMakerResponseresponseStatusAux auxTimeHandleRequestrequestHeadersrequestBodySizeServerConfigconfWriteBufferconfBufferSize confSendAll confReadNconfPositionReadMakerrundefaultPositionReadMakermakeSimpleConfigallocSimpleConfigfreeSimpleConfiggetRequestBodyChunkgetRequestTrailersresponseNoBody responseFileresponseBuilderresponseStreamingresponseBodySizesetResponseTrailersMakerdefaultTrailersMaker pushPromisebaseGHC.Base++GHC.Listfilterzipmap Control.Monadguardjoin GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanhlog1pexpm1log1pexplog1mexpMonad>>=>>returnfailFunctorfmap<$ghc-prim GHC.ClassesOrd>=minmax><compare<= Applicativepure<*>*>liftA2<* Data.FoldableFoldabletoListfoldMapfoldfoldr'foldrnulllengthfoldlfoldl'foldl1sumproductfoldr1maximumminimumelemData.TraversablemapMsequence<>Monoidmemptymappendmconcat GHC.TypesIntGHC.IntInt8Int16Int32Int64 GHC.MaybeMaybeNothingJustOrderingLTEQGTWordGHC.WordWord8Word16Word32Word64mfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterM Data.ListisSubsequenceOf mapAccumR mapAccumLforMControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConstfindnotElem minimumBy maximumByallanyorand concatMapconcatmsumasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMfoldrM Data.MonoidFirstgetFirstLastgetLastApgetApData.Semigroup.InternalDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductAltgetAlt Data.OldListunwordswordsunlineslinesunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLengthinsertByinsert partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBynubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndex elemIndices elemIndex stripPrefix dropWhileEndData.Ord comparingDownNumericshowOctshowHex showIntAtBase showHFloat showGFloatAlt showFFloatAlt showGFloat showFFloat showEFloatshowInt readSigned readFloatreadHexreadDecreadOctreadIntGHC.Read lexDigitsfromRat floatToDigits showFloat byteSwap64 byteSwap32 byteSwap16 Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefault.&..|.xor complementshiftrotatezeroBitsbitsetBitclearBit complementBittestBit bitSizeMaybebitSizeisSignedshiftL unsafeShiftLshiftR unsafeShiftRrotateLrotateRpopCount FiniteBits finiteBitSizecountLeadingZeroscountTrailingZeros Data.Functorvoid<$>GHC.Real showSignedunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiterate'iteratescanr1scanrscanl'scanl1scanlfoldl1'initlasttailunconshead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeapliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA<**> Alternativeempty<|>somemany MonadPlusmzeromplusbytestring-0.10.8.2Data.ByteString.Internal ByteStringPSBuilder<< singleton decodeIntegerdecode encodeIntegerencodeBitsBFTfromBits unpack4bitscopyidxEos huffmanTable huffmanTable'HuffmanEncoding encodeHuffmanHTreetoHTreemarkBinTipeosInfoshowTree printTreeflatten HeaderStuffHIndexSIndexDIndexEntrytoEntry entrySizeentryTokenHeader entryTokenentryHeaderNameentryHeaderValue dummyEntry maxNumbers toEntryTokenstaticTableSize toStaticEntry staticTablestaticTableListRevIndex newRevIndex renewRevIndexlookupRevIndexlookupRevIndex'insertRevIndexdeleteRevIndexListHuffmanDecoding decodeHuffman circularTableoffset numOfEntriesmaxNumOfEntriesdynamicTableSizemaxDynamicTableSizeprintDynamicTablerenewDynamicTable shouldRenew insertEntryTableSizeActionKeepChangeIgnorecodeInfoCodeInfo DecodeInfotoIndexedEntryfromHIndexToIndexhuffmanDecoderisDynamicTableEmptyisSuitableSizeneedChangeTableSizeresetLimitForEncodingtoDynamicEntry getRevIndex encodeHeader'TrueFalse newPrecedence PriorityQueue baseDeficitqueue dependencydeficitKeyTPriorityQueuenewstart setAction timeoutCloseManagerActionstop spawnActionaddMyId deleteMyIdtimeoutKillThread minFrameType maxFrameType buildPaddingdecodeWithPadding goawayFrame resetFrame settingsFrame pingFramewindowUpdateFrame ResponseBody RspStreamingresponseHeaders responseBodyresponseTrailers requestBodyRspFile RspBuilder RspNoBodyrequestTrailers_ RSBuilderRSFlushRSFinishControl CSettings0 CSettingsCFrameCGoawayCFinishNext BytesFilledDynaNext OutputTypeONextOPushOWaitORspnOutputoutputSentinel outputStrmQ outputTypeoutputResponse outputStreamInput StreamTableStreamstreamPrecedence streamWindow streamState streamNumber StreamStateReservedClosedHalfClosedLocalHalfClosedRemoteOpenIdle ClosedCode ResetByMeResetKilledFinished OpenStateBodyHasBodyNoBody Continued JustOpenedisIdleisOpenisHalfClosedRemoteisHalfClosedLocalisClosed newStreamreadStreamStatenewStreamTableremovesearchupdateAllStreamWindowforkAndEnqueueWhenReady enqueueOutputenqueueControlContext continuedconnectionWindowdecodeDynamicTableencodeDynamicTablecontrolQoutputQinputQserverStreamIdclientStreamIdpriorityTreeSize concurrency streamTable firstSettings http2settings newContext clearContext newPushStreamsetStreamStateopenedhalfClosedRemotehalfClosedLocalclosed StreamInforesponseworker fixHeadershpackEncodeHeaderhpackEncodeHeaderLoophpackDecodeHeaderhpackDecodeTrailerjust frameSenderSource frameReceivergoawayGHC.IO.Handle.TypesHandle