śĪ™ÖŽšn      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"Lennart Kolmodin, Galois Inc. 2009BSD3-style (see LICENSE)"Trevor Elliott <trevor@galois.com> Portability :Safe<Put merely lifts Builder into a Writer monad, applied to ().@The PutM type. A Writer monad over the efficient Builder monoid.Run the  monadRun the  monad with a serialiserRun the + monad with a serialiser and get its result Run the  monad with a serialiser Run the  monad with a serialiser fPop the ByteString we have constructed so far, if any, yielding a new chunk in the result ByteString. /Efficiently write a byte into the output buffer •An efficient primitive to write a strict ByteString into the output buffer. It flushes the current buffer, and writes the argument into a new chunk.fWrite a lazy ByteString efficiently, simply appending the lazy ByteString chunks to the output buffer#Write a Word16 in big endian format&Write a Word16 in little endian format#Write a Word32 in big endian format&Write a Word32 in little endian format#Write a Word64 in big endian format&Write a Word64 in little endian formatO(1).’0 Write a single native machine word. The word is written in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes. Values written this way are not portable to different endian or word sized machines, without conversion.O(1).V Write a Word16 in native host order and host endianness. For portability issues see  putWordhost.O(1).V Write a Word32 in native host order and host endianness. For portability issues see  putWordhost.O(1).‹ Write a Word64 in native host order On a 32 bit machine we write two host order Word32s, in big endian form. For portability issues see  putWordhost.%]Put a nested structure by first putting a length field and then putting the encoded value..nopq r !"#$%stu&  !"#$%&   !"#$%+nopq r !"#$%stu"Lennart Kolmodin, Galois Inc. 2009BSD3-style (see LICENSE)"Trevor Elliott <trevor@galois.com> Portability :None<IN8v!Have we read all available input?&.The Get monad is an Exception and State monad.'The result of a parse.(The parse failed. The w0 is the message describing the error, if any.)‚Supply this continuation with more input so that the parser can resume. To indicate that no more input is available, use an x string.*The parse succeeded. The yU is the input that had not yet been consumed (if any) when the parse succeeded.,Run the Get monad applies a z%-based parser on the input ByteString-’Run the get monad on a single chunk, providing an optional length for the remaining, unseen input, with Nothing indicating that it's not clear how much input is left. For example, with a lazy ByteString, the optional length represents the sum of the lengths of all remaining chunks..Run the Get monad applies a z%-based parser on the input ByteString/Run the Get monad applies a z‹-based parser on the input ByteString. Additional to the result of get it returns the number of consumed bytes and the rest of the input.{Run the Get monad applies a z«-based parser on the input ByteString. Additional to the result of get it returns the number of consumed bytes and the rest of the input, even in the event of a failure.0„Run the Get monad over a Lazy ByteString. Note that this will not run the Get parser lazily, but will operate on lazy ByteStrings.1„Run the Get monad over a Lazy ByteString. Note that this does not run the Get parser lazily, but will operate on lazy ByteStrings.2 If at least nK bytes of input are available, return the current input, otherwise fail.| If at least nK bytes of input are available, return the current input, otherwise fail.3‰Isolate an action to operating within a fixed block of bytes. The action is required to consume all the bytes that it is isolated to.}$Immediately demand more input via a ) continuation result.4 Skip ahead n bytes. Fails if fewer than n bytes are available.5 Skip ahead n- bytes. No error if there isn't enough bytes.6Run ga4, but return without consuming its input. Fails if ga fails.7Like 6, but consume the input if gma returns 'Just _'. Fails if gma fails.8Like 6, but consume the input if gea returns 'Right _'. Fails if gea fails.9Get the next up to n/ bytes as a ByteString, without consuming them.:fGet the number of remaining unparsed bytes. Useful for checking whether all input has been consumed.WARNING: when run with  runGetPartialZ, remaining will only return the number of bytes that are remaining in the current input.;)Test whether all input has been consumed.WARNING: when run with  runGetPartialH, isEmpty will only tell you if you're at the end of the current chunk.< An efficient z5 method for strict ByteStrings. Fails if fewer than nZ bytes are left in the input. This function creates a fresh copy of the underlying bytes.?Pull n. bytes from the input, as a strict ByteString.@ Read a Int8 from the monad stateA!Read a Int16 in big endian formatB$Read a Int16 in little endian formatC!Read a Int32 in big endian formatD$Read a Int32 in little endian formatE!Read a Int64 in big endian formatF$Read a Int64 in little endian formatG!Read a Word8 from the monad stateH"Read a Word16 in big endian formatI%Read a Word16 in little endian formatJ"Read a Word32 in big endian formatK%Read a Word32 in little endian formatL"Read a Word64 in big endian formatM%Read a Word64 in little endian formatNO(1).Į Read a single native machine word. The word is read in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes.OO(1).? Read a 2 byte Word16 in native host order and host endianness.PO(1).8 Read a Word32 in native host order and host endianness.QO(1).7 Read a Word64 in native host order and host endianess.SbGet a list in the following format: Word64 (big endian format) element 1 ... element nT“Get an IArray in the following format: index (lower bound) index (upper bound) Word64 (big endian format) element 1 ... element nUfGet a sequence in the following format: Word64 (big endian format) element 1 ... element nVRead as a list of lists.W+Read as a list of pairs of key and element.X+Read as a list of pairs of int and element.YRead as a list of elements.ZRead as a list of ints.[pRead in a Maybe in the following format: Word8 (0 for Nothing, anything else for Just) element (when Just)\€Read an Either, in the following format: Word8 (0 for Left, anything else for Right) element a when 0, element b otherwise]DRead in a length and then read a nested structure of that length.[v~€‚ƒ&„…'()*†‡ˆ‰Š‹zŒ+Ž,-./{012|3}456789:;<=>?‘@ABCDEFGHIJKLMNOPQ’“”RSTUVWXYZ[\]•–—˜™š›8&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]8&,0/1'()*.-23+456789?:;G@<=>HJLACEIKMBDFNOPQRSTVUWXYZ[\]Tv~€‚ƒ&„…'()*†‡ˆ‰Š‹zŒ+Ž,-./{012|3}456789:;<=>?‘@ABCDEFGHIJKLMNOPQ’“”RSTUVWXYZ[\]•–—˜™š›None4^-Read a Float in little endian IEEE-754 format_*Read a Float in big endian IEEE-754 format`.Read a Double in little endian IEEE-754 formata+Read a Double in big endian IEEE-754 formatb.Write a Float in little endian IEEE-754 formatc+Write a Float in big endian IEEE-754 formatd/Write a Double in little endian IEEE-754 formate,Write a Double in big endian IEEE-754 format ^_`abcdeœžŸ ^_`abcde^_`abcde ^_`abcdeœžŸ "Lennart Kolmodin, Galois Inc. 2009BSD3-style (see LICENSE)"Trevor Elliott <trevor@galois.com> Portability :None345f%If your compiler has support for the  DeriveGeneric and DefaultSignatures language extensions ( ghc >= 7.2.1), the g and h4 methods will have default generic implementations.!To use this option, simply add a  deriving Generic( clause to your datatype and declare a f2 instance for it without giving a definition for g and h.g Encode a value in the Put monad.hDecode a value in the Get monadiAEncode a value using binary serialization to a strict ByteString.j?Encode a value using binary serialization to a lazy ByteString.kPDecode a value from a strict ByteString, reconstructing the original structure.lNDecode a value from a lazy ByteString, reconstructing the original structure.mVPerform an action, failing if the read result does not match the argument provided.=”¢fghijklm£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕn  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmfghijklm;”¢fghijklm£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrrstuvwxyz{|}~}€l‚ƒ„…†‡ˆ‰Š*‹ŒŽ‘k’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪcerea_BBfptUfmSBYLBoW9Jgic7fData.Serialize.PutData.Serialize.GetData.Serialize.IEEE754Data.SerializePutterPutPutMunPut putBuilderexecPutrunPutrunPutM runPutLazy runPutMLazyflushputWord8 putByteStringputShortByteStringputLazyByteString putWord16be putWord16le putWord32be putWord32le putWord64be putWord64le putWordhost putWord16host putWord32host putWord64hostputTwoOf putListOf putIArrayOfputSeqOf putTreeOfputMapOf putIntMapOfputSetOf putIntSetOf putMaybeOf putEitherOf putNestedGetResultFailPartialDonelabelrunGet runGetChunk runGetPartial runGetState runGetLazyrunGetLazyStateensureisolateskip uncheckedSkip lookAhead lookAheadM lookAheadEuncheckedLookAhead remainingisEmpty getByteStringgetLazyByteStringgetShortByteStringgetBytesgetInt8 getInt16be getInt16le getInt32be getInt32le getInt64be getInt64legetWord8 getWord16be getWord16le getWord32be getWord32le getWord64be getWord64le getWordhost getWord16host getWord32host getWord64hostgetTwoOf getListOf getIArrayOfgetSeqOf getTreeOfgetMapOf getIntMapOfgetSetOf getIntSetOf getMaybeOf getEitherOf getNested getFloat32le getFloat32be getFloat64le getFloat64be putFloat32le putFloat32be putFloat64le putFloat64be Serializeputgetencode encodeLazydecode decodeLazyexpectPairSsndStell encodeListOf $fMonadPutM$fApplicativePutM $fFunctorPutMMorebaseGHC.BaseStringbytes_6elQVSg5cWdFrvRnfxTUrHData.ByteStringemptyData.ByteString.Internal ByteString runGetState' ensureRec demandInputComplete IncompleteSuccessFailureBufferInputunGet emptyBuffer extendBufferappend bufferBytes moreLength formatTracefinalKfailK runGetLazy'failDescgetPtr shiftl_w16 shiftl_w32 shiftl_w64$fMonadPlusGet $fMonadGet$fAlternativeGet$fApplicativeGet $fFunctorGet$fFunctorResult $fShowResult wordToFloat floatToWord wordToDouble doubleToWordcast NaturalWordSmallIntunrollroll chrEither$fSerializeUArray$fSerializeArray$fSerializeTree$fSerializeFloat$fSerializeDouble$fSerializeSeq$fSerializeIntMap$fSerializeIntSet$fSerializeMap$fSerializeSet$fSerializeByteString$fSerializeByteString0$fSerializeEither$fSerializeMaybe $fSerialize[]$fSerializeLast$fSerializeFirst$fSerializeProduct$fSerializeSum$fSerializeAny$fSerializeAll$fSerializeDual$fSerialize(,,,,,,,,,)$fSerialize(,,,,,,,,)$fSerialize(,,,,,,,)$fSerialize(,,,,,,)$fSerialize(,,,,,)$fSerialize(,,,,)$fSerialize(,,,)$fSerialize(,,)$fSerialize(,)$fSerializeChar$fSerializeNatural$fSerializeRatio$fSerializeInteger$fSerializeInt$fSerializeWord$fSerializeInt64$fSerializeInt32$fSerializeInt16$fSerializeInt8$fSerializeWord64$fSerializeWord32$fSerializeWord16$fSerializeWord8$fSerializeOrdering$fSerializeBool $fSerialize()