*- y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     Safe!"xInternal representation of priority in priority queues. The precedence of a dequeued entry should be specified to " when the entry is enqueued again. For test only !"#$%&'()*+,-./01 !"#&,-./ !"#$%&'()*+,-./01Safe222None3&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]4356354356Safe7 Bit stream.8Data type for Bit.9Zero:One;From 7 of length 8 to <.fromBits [T,F,T,F,T,F,T,F]170fromBits [F,T,F,T,F,T,F,T]85789:=;78:9;789:=; Safe>>> Safe?Type for Huffman decoding.@ Creating ?.AMarking the EOS path ?BCDEFGH@IAJ?CBEFH@J ?BCDEFGH@IAJ SafeKLMNOPKLMNOPKLMNOP SafeQRSTUVW  !"#QSTUVWQRSTUVW Safe08(The data type for HTTP/2 frame payloads. 'The data type for HTTP/2 frame headers. The data type for HTTP/2 frames.!The type for padding in payloads.6The type for fragments of a header encoded with HPACK.The type for stream identifierThe type for flags.The type for frame type.&The type for raw frame type.'Type for stream priority,>The type for weight in priority. Its values are from 1 to 256.-The type for window size..NCooked version of settings. This is suitable to be stored in a HTTP/2 context.6Association list of SETTINGS.7 The type for raw SETTINGS value.8The type for SETTINGS key.?)The connection error or the stream error.BThe type for error code. See  -https://tools.ietf.org/html/rfc7540#section-7.RThe type for raw error code.S"The length of HTTP/2 frame header.frameHeaderLength9T Converting B to R.fromErrorCodeId NoError0"fromErrorCodeId InadequateSecurity12U Converting R to B.toErrorCodeId 0NoErrortoErrorCodeId 0xcInadequateSecuritytoErrorCodeId 0xeUnknownErrorCode 14V Obtaining B from ?.W Converting 8 to raw value.)fromSettingsKeyId SettingsHeaderTableSize1,fromSettingsKeyId SettingsMaxHeaderBlockSize6XConverting raw value to 8.toSettingsKeyId 0NothingtoSettingsKeyId 1Just SettingsHeaderTableSizetoSettingsKeyId 6Just SettingsMaxHeaderBlockSizetoSettingsKeyId 7NothingY Checking 6 and reporting an error if any.*checkSettingsList [(SettingsEnablePush,2)]AJust (ConnectionError ProtocolError "enable push must be 0 or 1")ZThe default settings.defaultSettingsSettings {headerTableSize = 4096, enablePush = True, maxConcurrentStreams = Nothing, initialWindowSize = 65535, maxFrameSize = 16384, maxHeaderBlockSize = Nothing}[Updating settings.XupdateSettings defaultSettings [(SettingsEnablePush,0),(SettingsMaxHeaderBlockSize,200)]Settings {headerTableSize = 4096, enablePush = False, maxConcurrentStreams = Nothing, initialWindowSize = 65535, maxFrameSize = 16384, maxHeaderBlockSize = Just 200}\ The default initial window size.defaultInitialWindowSize65535]The maximum window size. maxWindowSize 2147483647^:Checking if a window size exceeds the maximum window size.isWindowOverflow 10FalseisWindowOverflow maxWindowSizeFalse$isWindowOverflow (maxWindowSize + 1)True_Default concurrency.recommendedConcurrency100`+Default priority which depends on stream 0.defaultPriority?Priority {exclusive = False, streamDependency = 0, weight = 16}a+Highest priority which depends on stream 0.highestPriority@Priority {exclusive = False, streamDependency = 0, weight = 256}b Converting  to &.fromFrameTypeId FrameData0!fromFrameTypeId FrameContinuation9!fromFrameTypeId (FrameUnknown 10)10c Converting & to .toFrameTypeId 0 FrameDatatoFrameTypeId 9FrameContinuationtoFrameTypeId 10FrameUnknown 10d%The maximum length of HTTP/2 payload.maxPayloadLength16384e-The initial value of flags. No flags are set. defaultFlags0fDChecking if the END_STREAM flag is set. >>> testEndStream 0x1 Trueg7Checking if the ACK flag is set. >>> testAck 0x1 Trueh(Checking if the END_HEADERS flag is set.testEndHeader 0x4Truei#Checking if the PADDED flag is set.testPadded 0x8Truej%Checking if the PRIORITY flag is set.testPriority 0x20TruekSetting the END_STREAM flag.setEndStream 01lSetting the ACK flag.setAck 01mSetting the END_HEADERS flag.setEndHeader 04nSetting the PADDED flag. setPadded 08oSetting the PRIORITY flag. setPriority 032p.Checking if the stream identifier for control. isControl 0True isControl 1Falseq.Checking if the stream identifier for request. isRequest 0False isRequest 1Truer/Checking if the stream identifier for response. isResponse 0False isResponse 2Trues&Checking if the exclusive flag is set.tSetting the exclusive flag.uClearing the exclusive flag.vGetting & from .,framePayloadToFrameTypeId (DataFrame "body") FrameDataw2Checking if padding is defined in this frame type.isPaddingDefined $ DataFrame ""TrueisPaddingDefined $ PingFrame ""False}  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYXYZZ[\]^_`a[\bcdefghijklmnopqrstuvw]y  !"#$%&'(+)*,-./0123456789:;<=>?@ABDCEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a[\bcdefghijklmnopqrstuvw>    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYXYZZ[\]^_`a[\bcdefghijklmnopqrstuvw]Safe x&Abstract data type for priority trees.yDefault precedence.z Converting ' to R. When an entry is enqueued at the first time, this function should be used.{Creating a new priority tree.|XBringing up the structure of the priority tree. This must be used for Priority frame.}OEnqueuing an entry to the priority tree. This must be used for Header frame.~'Checking if the priority tree is empty.'Checking if the priority tree is empty.*Dequeuing an entry from the priority tree.*Dequeuing an entry from the priority tree.$Deleting the entry corresponding to .  and }5 are used to change the priority of a live stream.^_`abxcyz{|}~ xyz{|}~ yzx{|}~^_`abxcyz{|}~None!" )Auxiliary information for frame encoding.!Flags to be set in a frame header%Stream id to be set in a frame headerPadding 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.A smart builder of .encodeInfo setAck 0IEncodeInfo {encodeFlags = 1, encodeStreamId = 0, encodePadding = Nothing}Encoding an HTTP/2 frame to df. This function is not efficient enough for high performace program because of the concatenation of d.0encodeFrame (encodeInfo id 1) (DataFrame "body")*"\NUL\NUL\EOT\NUL\NUL\NUL\NUL\NUL\SOHbody"Encoding an HTTP/2 frame to [d$]. This is suitable for sendMany.GEncoding an HTTP/2 frame header. The frame header must be completed.zWriting an encoded HTTP/2 frame header to the buffer. The length of the buffer must be larger than or equal to 9 bytes.`Encoding an HTTP/2 frame payload. This returns a complete frame header and chunks of payload.estream identifierfgPayload length.hijklmnopqrstuvwx efghijklmnopqrstuvwxNone!"L#The type for frame payload decoder.Decoding an HTTP/2 frame to d. The second argument must be include the entire of frame. So, this function is not useful for real applications but useful for testing.8Decoding an HTTP/2 frame header. Must supply 9 bytes.6Checking a frame header and reporting an error if any.BcheckFrameHeader defaultSettings (FrameData,(FrameHeader 100 0 0))DLeft (ConnectionError ProtocolError "cannot used in control stream")Decoding an HTTP/2 frame payload. This function is considered to return a frame payload decoder according to a frame type.%Frame payload decoder for DATA frame.(Frame payload decoder for HEADERS frame.)Frame payload decoder for PRIORITY frame.+Frame payload decoder for RST_STREAM frame.)Frame payload decoder for SETTINGS frame.-Frame payload decoder for PUSH_PROMISE frame.%Frame payload decoder for PING frame.'Frame payload decoder for GOAWAY frame..Frame payload decoder for WINDOW_UPDATE frame.-Frame payload decoder for CONTINUATION frame.yHelper 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 paddingHTTP/2 settingsInput byte-stream Decoded framez{|}~yz{|}~yNoneThe preface of HTTP/2.connectionPreface""PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"Length of the preface.connectionPrefaceLength24  !"#$%&'(+)*,-./0123456789:;<=>?@ABDCEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw  w !"#$%v&bc'()*+,`apqrstuefghijklmno689:;<=>7WXY./012345Z[-\]^RBCDEFGHIJKLMNOPQTU?@AVSd_None(Internal representation for header keys.Index for value tableshould be indexed in HPACKis this a pseudo header key?Case insensitive header key!Extracting an index from a token.6Extracting a case insensitive header key from a token.,Extracting a folded header key from a token. Not defined in the static table. Not defined in the static table.CA place holder to hold header keys not defined in the static table.Minimum token index.0Maximun token index defined in the static table.Maximum token index.Token index for .Is this token ix for Cookie?0Is this token ix to be held in the place holder?>Is this token ix for a header not defined in the static table?;Is this token for a header not defined in the static table?!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"}JIIENone0The buffer size is not enoughThe size of buffer. Buffer type.Errors for decoder.Index is out of range+Eos appears in the middle of huffman string,Non-eos appears in the end of huffman string)Eos of huffman string is more than 7 bitsEncoded string has no length.A peer set the dynamic table size less than 32<A peer tried to change the dynamic table size over the limit&Table size update at the non-beginningStrategy for HPACK encoding.$Which compression algorithm is used.3Whether or not to use Huffman encoding for strings.*Compression algorithms for HPACK encoding.No compression&Using indices in the static table only Using indicesIndex for table.To be a  or . Header list.Header. Header value. Header name.Default .defaultEncodeStrategy=EncodeStrategy {compressionAlgo = Linear, useHuffman = False}%# None!"None4Integer decoding. The first argument is N of prefix.decodeInteger 5 10 $ BS.empty10%decodeInteger 5 31 $ BS.pack [154,10]1337decodeInteger 8 42 $ BS.empty424Integer decoding. The first argument is N of prefix.NoneHuffman decoding.Huffman decoding.None!"Huffman encoding.toShifted [T,T,T,T] 0Shifted 4 1 240 W0toShifted [T,T,T,T] 4Shifted 0 1 15 W0toShifted [T,T,T,T] 5Shifted 1 2 7 (W1 128)Huffman encoding. NoneNone >Type for table entry. Size includes the 32 bytes magic number. Size in bytes.From  to .Getting the size of .Getting .Getting .Getting .Getting .Dummy  to initialize a dynamic table.2How many entries can be stored in a dynamic table?   NoneThe size of static table.Get  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"}) ""Pre-defined static table.None!"None!":L Type for dynamic table.An array Start pointThe current number of entriesThe size of the array1The current dynamic table size (defined in HPACK)-The max dynamic table size (defined in HPACK)  Printing  . eWhen SETTINGS_HEADER_TABLE_SIZE is received from a peer, its value should be set by this function.  Creating   for encoding.  Creating   for decoding.  Renewing   with necessary entries copied. Is the size of   really changed? Creating  < for encoding, performing the action and clearing the  . Creating  < for decoding, performing the action and clearing the  . Clearing  E. Currently, this frees the temporary buffer for Huffman decoding.  Inserting  to   . New  , the largest new  and a set of dropped OLD  are returned.-     The dynamic table size The dynamic table size1The size of temporary buffer for Huffman decoding  !" The dynamic table sizeThe dynamic table size(The size of temporary buffer for Huffman #$%&'("        '(         !"  #$%&'(NoneL-         (None!" An array for . Accessing  with .Converting the HPACK format to .Headers are decoded as is./ would be thrown if the HPACK format is broken.J will be thrown if the temporary buffer for Huffman decoding is too small.Converting the HPACK format to  and .,Multiple values of Cookie: are concatenated.0If a pseudo header appears multiple times,  is thrown.'If unknown pseudo headers appear,  is thrown.7If pseudo headers are found after normal headers,  is thrown./If a header key contains capital letters,  is thrown./ would be thrown if the HPACK format is broken.J will be thrown if the temporary buffer for Huffman decoding is too small.7Converting a header list of the http-types style to  and .An HPACK formatAn HPACK format)*+,-./0123456789:;<=)*+,-./0123456789:;<=None!" Converting a 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.> Converting  to the HPACK format. 5 will be thrown if the temporary buffer is too small. Converting , to the HPACK format directly in the buffer._4th argument is relating to dynamic table size update. When calling this function for a new , it must be ?. If ? and set by  T, dynamic table size update is generated at the beginning of the HPACK format.'The return value is a pair of leftover  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 @.ABCDEFGThe size of a temporary buffer.An HPACK format>The size of a temporary buffer.An HPACK format? at the first time, @ when continued.Leftover, filled lengthHIJKLMNOPQRSTUVWXYZ[ABCDEFG>HIJKLMNOPQRSTUVWXYZ[NoneNoneRDefault dynamic table size. The value is 4,096 bytes: an array has 128 entries.defaultDynamicTableSize4096/     /     \   ! " # $ % & ' ( ) * + + , - . / / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C C D E F G H I 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 { | } ~        !"#$%&'()*+,-./001234F56G789:;<=>?@ABCDEFGHIJKLM N O P Q R S T U V W X Y Z [ [ \ = ] ^ _ _ ` a b c d e fghijklmn[opqrstuvwxyz{|}~C       !"#$%&'()*+,-./0123456789:;<:;=>?@ABCDEFGHIJKLMNO-.PQRSTUVW"http2-1.6.1-38WE8vncYjs1WX1hLzkQtWNetwork.HTTP2.Priority Network.HTTP2Network.HPACK.Token Network.HPACKNetwork.HTTP2.Priority.PSQNetwork.HPACK.Huffman.Params Network.HPACK.Huffman.ByteStringNetwork.HPACK.Huffman.BitNetwork.HPACK.Huffman.TableNetwork.HPACK.Huffman.TreeNetwork.HPACK.BuilderNetwork.HTTP2.Priority.QueueNetwork.HTTP2.TypesNetwork.HTTP2.EncodeNetwork.HTTP2.DecodeNetwork.HPACK.TypesNetwork.HPACK.Buffer!Network.HPACK.HeaderBlock.IntegerNetwork.HPACK.Huffman.DecodeNetwork.HPACK.Huffman.EncodeNetwork.HPACK.HuffmanNetwork.HPACK.Table.EntryNetwork.HPACK.Table.StaticNetwork.HPACK.Table.RevIndexNetwork.HPACK.Table.DynamicNetwork.HPACK.Table Network.HPACK.HeaderBlock.Decode Network.HPACK.HeaderBlock.EncodeNetwork.HPACK.HeaderBlock Precedence 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 decodeFramedecodeFrameHeadercheckFrameHeaderdecodeFramePayloaddecodeDataFramedecodeHeadersFramedecodePriorityFramedecoderstStreamFramedecodeSettingsFramedecodePushPromiseFramedecodePingFramedecodeGoAwayFramedecodeWindowUpdateFramedecodeContinuationFrameconnectionPrefaceconnectionPrefaceLengthTokenixshouldBeIndexedisPseudotokenKeytokenIx 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 BufferOverrun BufferSizeBuffer DecodeError IndexOverrunEosInTheMiddle IllegalEos TooLongEosEmptyEncodedStringTooSmallTableSizeTooLargeTableSizeIllegalTableSizeUpdateHeaderBlockTruncatedIllegalHeaderNameEncodeStrategycompressionAlgo useHuffmanCompressionAlgoNaiveStaticLinearIndexTokenHeaderList TokenHeader HeaderListHeader HeaderValue HeaderNamedefaultEncodeStrategySize DynamicTablesetLimitForEncodingnewDynamicTableForEncodingnewDynamicTableForDecodingwithDynamicTableForEncodingwithDynamicTableForDecodingclearDynamicTable ValueTablegetHeaderValue decodeHeaderdecodeTokenHeader toHeaderTable encodeHeaderencodeTokenHeaderdefaultDynamicTableSize newPrecedence PriorityQueue baseDeficitqueueHeapdeficit dependencyDeficitKey deficitSteps deficitStepsW deficitList deficitTableweightToDeficitempty$fOrdPrecedence$fEqPrecedenceidxEos unpack4bitsc_memcpycopymemcpyBitsBFTfromBitsbaseGHC.WordWord8fromBit huffmanTableHTreetoHTreemarkTipBinEOSInfoeosInfoshowTree showTree' printTreebuildflattenBuilder<< singletonrunTPriorityQueuenewminSettingsKeyIdmaxSettingsKeyIdcheckSettingsValue minFrameType maxFrameType$fExceptionHTTP2ErrorElementChildParentTNestedPriorityQueueGluebytestring-0.10.8.1Data.ByteString.Internal ByteStringbuildFramePayload buildPadding buildPrioritybuildFramePayloadDatabuildFramePayloadHeadersbuildFramePayloadPrioritybuildFramePayloadRSTStreambuildFramePayloadSettingsbuildFramePayloadPushPromisebuildFramePayloadPingbuildFramePayloadGoAwaybuildFramePayloadWindowUpdatebuildFramePayloadContinuationbuildFramePayloadUnknownpoke8poke16poke24poke32 bytestring4decodeWithPadding+.zeroFrameTypesnonZeroFrameTypespayloadDecodersdecodeUnknownFramecheckFrameSizestreamIdentifierpriority intFromWord8word32word32'word16' mkTokenMax HeaderStuffHIndexSIndexDIndex$fExceptionBufferOverrun$fExceptionDecodeError ReadBufferbegendcur WorkingBufferstartlimitoffsetnewWorkingBufferwind readWord8 writeWord8 shiftLastNcopyByteString toByteString returnLengthwithTemporaryBuffer currentOffsetwithReadBuffer hasOneByte hasMoreBytes rewindOneBytegetByteextractByteString decodeIntegerdecode powerArray encodeIntegerencodeHuffmanDecodingCharaNonOneTwoWay256WayStepPin EndOfStringForwardGoBackGoBack2nextdec decodeHuffmanway256 constructincstepbits8sHuffmanEncoding toShiftedShiftedWSW0W1W2W3W4 ShiftedArrayAOSAaosatoShiftedArrayenc encodeHuffmanEntrytoEntry entrySizeentryTokenHeader entryTokenentryHeaderNameentryHeaderValue dummyEntry maxNumbersheaderSizeMagicNumber headerSize headerSize' toEntryTokenstaticTableSize toStaticEntry staticTablestaticTableListValueMap StaticEntryStaticRevIndex OtherRevIdexKeyValueDynamicRevIndexRevIndexstaticRevIndexlookupStaticRevIndexnewDynamicRevIndexrenewDynamicRevIndexlookupDynamicStaticRevIndexinsertDynamicRevIndexdeleteDynamicRevIndexnewOtherRevIndexrenewOtherRevIndexlookupOtherRevIndexinsertOtherRevIndexdeleteOtherRevIndex newRevIndex renewRevIndexlookupRevIndexlookupRevIndex'insertRevIndexdeleteRevIndexdeleteRevIndexList circularTable numOfEntriesmaxNumOfEntriesdynamicTableSizemaxDynamicTableSizeprintDynamicTablerenewDynamicTable shouldRenew insertEntryTableSizeActionKeepChangeIgnorecodeInfoCodeInfo DecodeInfoTabletoIndexedEntryfromHIndexToIndexadjhuffmanDecoder printEntryisDynamicTableEmptyisSuitableSizeneedChangeTableSizeresetLimitForEncodingnewDynamicTable getEntries copyEntries insertFrontadjustTableSize insertEnd removeEndtoDynamicEntry getRevIndex decodeHPACK decodeSimpledecodeSophisticated toTokenHeadertableSizeUpdateindexedincrementalIndexingwithoutIndexing neverIndexing indexedNamenewName headerStuffmask6mask5mask4isIndexedName1isIndexedName2isTableSizeUpdate isHuffman dropHuffman decodeString encodeHeader'ghc-prim GHC.TypesTrueFalseSetterFEFDFCFBFAchangeTableSize naiveStep staticStep linearStepindexedHeaderField4literalHeaderFieldWithIncrementalIndexingIndexedName0literalHeaderFieldWithIncrementalIndexingNewName,literalHeaderFieldWithoutIndexingIndexedName(literalHeaderFieldWithoutIndexingNewName)literalHeaderFieldWithoutIndexingNewName'changeindexset1set01set001set0000setH encodeString integerLength