x{C      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred4Integer encoding. The first argument is N of prefix. encode 5 10[10] encode 5 1337 [31,154,10] encode 8 42[42]4Integer decoding. The first argument is N of prefix.decode 5 10 $ BS.empty10decode 5 31 $ BS.pack [154,10]1337decode 8 42 $ BS.empty426parseInteger 7 127 $ BS.pack [210,211,212,87,88,89,90](183839313,"XYZ") Safe-InferredNone&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] Safe-Inferred Bit stream.Data type for Bit.OneZeroFrom  of length 8 to .fromBits [T,F,T,F,T,F,T,F]170fromBits [F,T,F,T,F,T,F,T]85 Safe-Inferred Safe-InferredType for Huffman decoding. Creating .Marking the EOS path   NoneHuffman encoding.toShifted [T,T,T,T] 0Shifted 1 4 "\240"toShifted [T,T,T,T] 4Shifted 1 0 "\SI"toShifted [T,T,T,T] 5Shifted 2 1 "\a\128"Huffman encoding.  None  Safe-Inferred  Safe-InferredTfromErrorCodeId NoError0"fromErrorCodeId InadequateSecurity12UtoErrorCodeId 0NoErrortoErrorCodeId 0xcInadequateSecuritytoErrorCodeId 0xeUnknownErrorCode 14V)fromSettingsKeyId SettingsHeaderTableSize1,fromSettingsKeyId SettingsMaxHeaderBlockSize6WtoSettingsKeyId 0NothingtoSettingsKeyId 1Just SettingsHeaderTableSizetoSettingsKeyId 6Just SettingsMaxHeaderBlockSizetoSettingsKeyId 7NothingXThe default settings.YUpdating settings.XupdateSettings defaultSettings [(SettingsEnablePush,0),(SettingsMaxHeaderBlockSize,200)]Settings {headerTableSize = 4096, establishPush = False, maxConcurrentStreams = 100, initialWindowSize = 65535, maxFrameSize = 16384, maxHeaderBlockSize = Just 200}ZfromFrameTypeId FrameData0!fromFrameTypeId FrameContinuation9[toFrameTypeId 0Just FrameDatatoFrameTypeId 9Just FrameContinuationtoFrameTypeId 10Nothing^testEndStream 0x1True_ testAck 0x1True`testEndHeader 0x4TrueatestPadded 0x8TruebtestPriority 0x20TruecsetEndStream 01dsetAck 01esetEndHeader 04f setPadded 08g setPriority 032r  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm4    )('&%$#"! *+,-./0123456789:;A@?>=<BRQPONMLKJIHGFEDCSTUVWXYZ[\]^_`abcdefghijklm NoneEn,Parsing byte stream to make an HTTP/2 frame.Helper function to pull off the padding if its there, and will eat up the trailing padding automatically. Calls the parser func passed in with the length of the unpadded portion between the padding octet and the actual padding nHTTP/2 settingsInput byte-stream%(Decoded frame, leftover byte-stream)n nNoneo)Auxiliary information for frame encoding.q!Flags to be set in a frame headerr%Stream id to be set in a frame headersPadding if anytA smart builder of o.u(Encoding an HTTP/2 frame to byte stream.opqrstu opqrstuopqrstuNonev""PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"wLength of the prefacevwx  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxvwopqrstun:;A@?>=<9VW123456780XYSBRQPONMLKJIHGFEDCTU*)('&%$#"! Z[  mihljk]^_`abcdefg\+,-./vw Safe-Inferred+xErrors for decoder.yHeader block is emptyzEncoded string has no length{)Eos of huffman string is more than 7 bits|,Non-eos appears in the end of huffman string}+Eos appears in the middle of huffman string~Index is out of rangeStrategy for HPACK encoding.$Which compression algorithm is used.3Whether or not to use Huffman encoding for strings.*Compression algorithms for HPACK encoding.Using indices onlyUsing the static table onlyNo compressionIndex for table.%Byte stream in HTTP request/response.To be a  or . Header list.Header. Header value. Header name.Default .  is  and  is .xyz{|}~xyz{|}~ x~}|{zyNoneHuffman decoding.Huffman decoding.           None Safe-InferredIndex or literal.!Whether or not adding to a table.Type for representation.Type for header block.Empty header block. None  Encoding  to ! according to HuffmanEncoding."Parsing  from !. The second #: is whether or not huffman encoding is used. The third $% is the length of the encoded string. " " "None%#Converting the low level format to .&#Converting the low level format to . ! forms a pair with corresponding !.%&'()*+,-./0123456%&%&'()*+,-./0123456None7 Converting  to the low level format. 879:;<=>?@ABC7 879:;<=>?@ABC Safe-Inferred D>Type for table entry. Size includes the 32 bytes magic number.Size in bytes.EFrom  to D.FFrom D to .GGetting the size of D.HGetting .IGetting .JGetting .KDummy D to initialize a dynamic table.L2How many entries can be stored in a dynamic table? DMNEFGHIJKLDEFGHIJKL DMNEFGHIJKL Safe-Inferred OPQRSTUVWXYZ OPQRSUVWXYZORQPSTUVWXYZ Safe-Inferred[The size of static table.\Get D from the static table.toStaticEntry (SIndex 1)(42,(":authority",""))toStaticEntry (SIndex 8)(42,(":status","200"))toStaticEntry (SIndex 50)(37,("range",""))]Pre-defined static table. ^_`ab[\]cd^_`ab[\c ^_`ab[\]cdNoneEType for dynamic table.eAn arrayf Start pointgThe current number of entrieshThe size of the arrayi1The current dynamic table size (defined in HPACK)j-The max dynamic table size (defined in HPACK)kjHeader to the index in Dynamic Table for encoder. Static Table is not included. Nothing for decoder.l Printing . Creating r. The default maxDynamicTableSize is 4096 bytes, an array has 128 entries, resulting 1024 bytes in 64bit machine Creating r. The default maxDynamicTableSize is 4096 bytes, an array has 128 entries, resulting 1024 bytes in 64bit machinem Renewing  with necessary entries copied.nIs the size of  really changed?o Inserting D to  . New , the largest new  and a set of dropped OLD  are returned.#pqrefghijkstluvwxyz{m|}~norefghijklvwxyzmopqrefghijkstluvwxyz{m|}~noNoneE)Is header key-value stored in the tables?Which table does  refer to?MResolving an index from a header. Static table is prefer to dynamic table.Which table does  belong to? DEFGHIJKLlvmoNone Decoding  to .Decoding step for one $. Exporting for the test purpose.None Encoding  to .  None%&7NoneHPACK decoding, from  to .HPACK encoding, from  to . Converting * for HTTP request to the low level format.4Converting the low level format for HTTP request to . x would be thrown.xyz{|}~x~}|{zy    ! " # $ % & ' ( ) * * + , - . . / 0 1 2 3 4 5 6 7 7 8 9 : ; < = > ? @ A B C D E F F G H I J K 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:;<=>?@ABCDEFGHIJKLMNOPBCQRSTUVWXYZ[\]^_`abcdeffghijklmnoopqrstuvwxLyz{|}~ http2-0.7.0 Network.HTTP2 Network.HPACK!Network.HPACK.HeaderBlock.IntegerNetwork.HPACK.Huffman.Params Network.HPACK.Huffman.ByteStringNetwork.HPACK.Huffman.BitNetwork.HPACK.Huffman.TableNetwork.HPACK.Huffman.TreeNetwork.HPACK.Huffman.EncodeNetwork.HPACK.Builder.Word8Network.HPACK.BuilderNetwork.HTTP2.TypesNetwork.HTTP2.DecodeNetwork.HTTP2.EncodeNetwork.HPACK.TypesNetwork.HPACK.Huffman.DecodeNetwork.HPACK.Huffman%Network.HPACK.HeaderBlock.HeaderField Network.HPACK.HeaderBlock.String Network.HPACK.HeaderBlock.Decode Network.HPACK.HeaderBlock.EncodeNetwork.HPACK.Table.EntryNetwork.HPACK.Table.HashPSQNetwork.HPACK.Table.StaticNetwork.HPACK.Table.DynamicNetwork.HPACK.TableNetwork.HPACK.HeaderBlock.FromNetwork.HPACK.HeaderBlock.ToNetwork.HPACK.HeaderBlock FramePayload UnknownFrameContinuationFrameWindowUpdateFrame GoAwayFrame PingFramePushPromiseFrame SettingsFrameRSTStreamFrame PriorityFrame HeadersFrame DataFrame FrameHeader payloadLengthflagsstreamIdFrame frameHeader framePayloadPaddingHeaderBlockFragmentWindowSizeIncrementPromisedStreamId LastStreamIdStreamDependencyStreamIdentifier FrameFlags PayloadLength FrameTypeIdFrameContinuationFrameWindowUpdate FrameGoAway FramePingFramePushPromise FrameSettingsFrameRSTStream FramePriority FrameHeaders FrameData FrameTypePriority exclusivestreamDependencyweight SettingsListSettingsheaderTableSize establishPushmaxConcurrentStreamsinitialWindowSize maxFrameSizemaxHeaderBlockSize SettingsValue SettingsKey SettingsKeyIdSettingsMaxHeaderBlockSizeSettingsMaxFrameSizeSettingsInitialWindowSizeSettingsMaxConcurrentStreamsSettingsEnablePushSettingsHeaderTableSize ErrorCodeId UnknownErrorUnknownErrorCodeHTTP11RequiredInadequateSecurityEnhanceYourCalm ConnectErrorCompressionErrorCancel RefusedStreamFrameSizeError StreamClosedSettingsTimeoutFlowControlError InternalError ProtocolErrorNoError ErrorCodefromErrorCodeId toErrorCodeIdfromSettingsKeyIdtoSettingsKeyIddefaultSettingsupdateSettingsfromFrameTypeId toFrameTypeIdmaxPayloadLength defaultFlags testEndStreamtestAck testEndHeader testPadded testPriority setEndStreamsetAck setEndHeader setPadded setPrioritytoStreamIdentifierfromStreamIdentifier testExclusive setExclusivestreamIdentifierForSeetingsframePayloadToFrameType decodeFrame EncodeInfo encodeFlagsencodeStreamId encodePadding encodeInfo encodeFrameconnectionPrefaceconnectionPrefaceLength DecodeError EmptyBlockEmptyEncodedString TooLongEos IllegalEosEosInTheMiddle IndexOverrunEncodeStrategycompressionAlgo useHuffmanCompressionAlgoLinearStaticNaiveIndex ByteStream HeaderListHeader HeaderValue HeaderNamedefaultEncodeStrategySize DynamicTablenewDynamicTableForEncodingnewDynamicTableForDecoding HPACKDecoding HPACKEncoding encodeHeader decodeHeaderencodedecode parseInteger powerArrayencode'decode'idxEos unpack4bitsc_memcpycopymemcpyBitsBTFfromBitsbaseGHC.WordWord8fromBit huffmanTableHTreetoHTreemarkBinTipEOSInfoeosInfoshowTree showTree' printTreebuildflattenHuffmanEncoding toShiftedShifted ShiftedArrayAOSAaosatoShiftedArray Word8Builder<|w8empty toByteStringBuilder<<empty singletonrunminSettingsKeyIdmaxSettingsKeyId minFrameType maxFrameTypeparseWithPaddingFramePayloadParser protocolErrorframeSizeErrordecodeFrameHeader toErrorCode parseFrameparseFrameHeader doesExceedzeroFrameTypesnonZeroFrameTypesisProtocolErrorpayloadParsersparseFramePayloadparseDataFrameparseHeadersFrameparsePriorityFrameparseRstStreamFrameparseSettingsFrameparsePushPromiseFrameparsePingFrameparseGoAwayFrameparseWindowUpdateFrameparseContinuationFrameparseUnknownFramestreamIdentifierstreamIdentifier'priorityignore intFromWord8intFromWord16beencodeFrameHeaderencodeFramePayload buildFramebuildFrameHeaderbuildFramePayload buildPadding buildPriority buildStreambuildErrorCodeIdbuildFramePayloadDatabuildFramePayloadHeadersbuildFramePayloadPrioritybuildFramePayloadRSTStreambuildFramePayloadSettingsbuildFramePayloadPushPromisebuildFramePayloadPingbuildFramePayloadGoAwaybuildFramePayloadWindowUpdatebuildFramePayloadContinuationbuildFramePayloadUnknown HeaderStuffghc-prim GHC.TypesTrue$fExceptionDecodeErrorHuffmanDecodingWay256Way16PinGoBackForward EndOfStringnextdecway256 constructstepbits4sNamingIndexing HeaderField HeaderBlockemptyHeaderBlockLitIdxNeverNotAddAddLiteralIndexedChangeTableSizebytestring-0.10.4.0Data.ByteString.Internal ByteString parseStringBoolIntfromByteStreamfromByteStreamDebug toHeaderFieldindexedincrementalIndexingmaxSizewithoutIndexing neverIndexing indexedNamenewName headerStuffmask6mask5mask4isIndexedName1isIndexedName2 isHuffman dropHuffman toByteStreamSetterfromHeaderFieldchangeindexset1set01set001set0001set0000setHEntrytoEntry fromEntry entrySize entryHeaderentryHeaderNameentryHeaderValue dummyEntry maxNumbersheaderSizeMagicNumber headerSizeResKVKNHashPSQinsertdeletefromList deleteListsearchstaticTableSize toStaticEntry staticTableSIndexfromStaticIndex toStaticIndex isSIndexValid staticHashPSQstaticTableList circularTableoffset numOfEntriesmaxNumOfEntriesmaxDynamicTableSize reverseIndexprintDynamicTablerenewDynamicTable shouldRenew insertEntryHIndexTableadj printEntryisDynamicTableEmptyfromHIndexToIndexfromIndexToHIndexfromSIndexToIndexfromIndexToSIndexnewDynamicTable copyTable getEntries copyEntries insertFrontadjustTableSizeadjust insertEnd removeEnd toHeaderEntry HeaderCache WhichTable lookupTablewhichKeyValueKeyOnlyNone InStaticTableInDynamicTableisInfromHeaderBlock decodeStepStepCtx decodeLoop decodeFinal fromNaming toHeaderBlock encodeFinal encodeLoop naiveStep staticStep linearStep smartStepcheckheadersNotToIndex