úÎ!“¯|?ÿ›      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š2Lennart Kolmodin, Ross Paterson, George Giorgidze BSD3 .George Giorgidze <http://cs.nott.ac.uk/~ggg/>  experimental  Portable None@HCodecsA # is an efficient way to build lazy ›1s. There are several functions for constructing Xs, but only one to inspect them: to extract any data, you have to turn them into lazy ›s using .Internally, a  constructs a lazy … by filling byte arrays piece by piece. As each buffer is filled, it is 'popped' off, to become a new chunk of the resulting lazy ›+. All this is hidden from the user of the .HCodecsO(1). The empty Builder, satisfying   = œHCodecsO(1).+ A Builder taking a single byte, satisfying  ( b) =  bHCodecsO(1).L The concatenation of two Builders, an associative operation with identity  , satisfying  ( x y) =  ( x) ( y)HCodecsO(1). A Builder taking a Ÿ , satisfying  ( bs) =   [bs]HCodecsO(1). A Builder taking a lazy › , satisfying  ( bs) = bsHCodecsO(n). Extract a lazy › from a P. The construction work takes place if and when the relevant part of the lazy › is demanded. HCodecsO(1). Pop the ŸN we have constructed so far, if any, yielding a new chunk in the result lazy ›.¡HCodecs&Sequence an IO operation on the buffer¢HCodecsGet the size of the buffer£HCodecs&Map the resulting list of bytestrings.¤HCodecsEnsure that there are at least n many bytes available.¥HCodecs Ensure that n( many bytes are available, and then use f& to write some bytes into the memory.¦HCodecs Ensure that n( many bytes are available, and then use f0 to write some storable values into the memory. HCodecs#Write a Word16 in big endian format HCodecs&Write a Word16 in little endian format HCodecs@Write a 24 bit number in big endian format represented as Word32 HCodecsCWrite a 24 bit number in little endian format represented as Word32HCodecs#Write a Word32 in big endian formatHCodecs&Write a Word32 in little endian formatHCodecs#Write a Word64 in big endian formatHCodecs&Write a Word64 in little endian formatHCodecsO(1).ÿ; A Builder taking 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.HCodecs]Write a Word16 in native host order and host endianness. 2 bytes will be written, unaligned.HCodecs]Write a Word32 in native host order and host endianness. 4 bytes will be written, unaligned.HCodecs“Write a Word64 in native host order. On a 32 bit machine we write two host order Word32s, in big endian form. 8 bytes will be written, unaligned.   #Lennart Kolmodin, George Giorgidze BSD3 .George Giorgidze <http://cs.nott.ac.uk/~ggg/>  experimental  Portable Nonej3!HCodecsHThe Get monad is just a State monad carrying around the input ByteString§HCodecsThe parse state"HCodecsRun the Get monad applies a ¨%-based parser on the input ByteString#HCodecsRun the Get monad applies a ¨‹-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.%HCodecs Skip ahead n bytes. Fails if fewer than n bytes are available.&HCodecsRun ga4, but return without consuming its input. Fails if ga fails.'HCodecsLike &, but consume the input if gma returns 'Just _'. Fails if gma fails.(HCodecsLike &, but consume the input if gea returns 'Right _'. Fails if gea fails.-HCodecs1Get the total number of bytes read to this point..HCodecs“Get the number of remaining unparsed bytes. Useful for checking whether all input has been consumed. Note that this forces the rest of the input./HCodecsVTest whether all input has been consumed, i.e. there are no remaining unparsed bytes.0HCodecs An efficient ¨5 method for strict ByteStrings. Fails if fewer than n bytes are left in the input.1HCodecs An efficient ¨; method for lazy ByteStrings. Does not fail if fewer than n bytes are left in the input.2HCodecsvGet a lazy ByteString that is terminated with a NUL byte. Fails if it reaches the end of input without hitting a NUL.3HCodecs,Get the remaining bytes as a lazy ByteString4HCodecsPull n. bytes from the input, as a strict ByteString.©HCodecslSplit a ByteString. If the first result is consumed before the -- second, this runs in constant heap space.8You must force the returned tuple for that to work, e.g. >case splitAtST n xs of (ys,zs) -> consume ys ... consume zs6HCodecs!Read a Word8 from the monad state8HCodecs"Read a Word16 in big endian format:HCodecs%Read a Word16 in little endian format<HCodecs3Read a 24 bit word into Word32 in big endian format@HCodecs"Read a Word32 in big endian formatBHCodecs%Read a Word32 in little endian formatDHCodecs"Read a Word64 in big endian formatFHCodecs%Read a Word64 in little endian formatVHCodecsO(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.XHCodecsO(1).? Read a 2 byte Word16 in native host order and host endianness.ZHCodecsO(1).8 Read a Word32 in native host order and host endianness.\HCodecsO(1).7 Read a Word64 in native host order and host endianess.A!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aA!"#$)%&'(-4./5*+,6H7I012389<=@ADELMPQTU:;>?BCFGJKNORSVWXYZ[\]^_`a George Giorgidze BSD3 .George Giorgidze <http://cs.nott.ac.uk/~ggg/>  Experimental  Portable Safe>m檫George Giorgidze BSD3 .George Giorgidze <http://cs.nott.ac.uk/~ggg/>  Experimental  Portable Noneo’Shqo{ijklmnprstuvwxyz|}~€ƒ‚„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹ºSœŸ ˜™š›—”•–hqo{ijklmnprstuvwxyz|}~€ƒ‚„…†‡ˆ‰“’‘Œ‹Š¡¢£¤¥¦§¨ª©«¬­®°¯±²³´µ¶·¸¹ºGeorge Giorgidze BSD3 .George Giorgidze <http://cs.nott.ac.uk/~ggg/>  Experimental  Portable None>sİÇÈÉÊËÌÍÎÏĞÒÑÓÔÕÖרÙÔËÌÍÎÏÓÇÈÉÊÖÕרÙĞÑÒGeorge Giorgidze BSD3 .George Giorgidze <http://cs.nott.ac.uk/~ggg/>  Experimental  Portable None>v êëìíîïğñîïğñêëìíGeorge Giorgidze BSD3 .George Giorgidze <http://cs.nott.ac.uk/~ggg/>  Experimental  Portable Nonex‡ö÷úùıøûüşÿ07      !"#$%&'()*+,-./12345689:;<=>?@ABCDEFGHJIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|‡lmnop_`abcdefghijk[\]^PQRSTUVWXYZGHJIKLMNOCDEF<=>?@AB07      !"#$%&'()*+,-./12345689:;qrö÷úùıøûüşÿstuvwxyz{|¬     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”y•–—˜™š›œŸ ¡¢£¤¥¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóô»¼õö÷øùúûûüışÿÔİ      !"#$%&'()*+,-./0™123456Ï789:;;<=>?@AABCDDE’FGHIJKKLMNOPQRSTUUVWXYZ[\]^_`abcdeefghij»¼klmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“‘” ‘” ‘”‘•“‘”–—˜™š›œŸ   ¡¢$HCodecs-0.5.2-GhmLmLPmSkA1j7Zgm05WoeCodec.ByteString.BuilderCodec.ByteString.Parser Codec.Midi Data.Audio Codec.WavCodec.SoundFontL BytestringCodec.Internal.ArbitraryBuilderempty singletonputWord8appendfromByteStringfromLazyByteString putStringtoLazyByteStringflush putWord16be putWord16le putWord24be putWord24le putWord32be putWord32le putWord64be putWord64leputInt8 putInt16le putInt16be putInt32le putInt32be putInt64le putInt64be putWordHost putWord16host putWord32host putWord64host putVarLenBe putVarLenLe$fMonoidBuilder$fSemigroupBuilderParser runParserrunParserStatechoiceskip lookAhead lookAheadM lookAheadEexpect getString getStringNulstring bytesRead remainingisEmpty getByteStringgetLazyByteStringgetLazyByteStringNulgetRemainingLazyByteStringgetBytessatisfygetWord8word8 getWord16beword16be getWord16leword16le getWord24beword24be getWord24leword24le getWord32beword32be getWord32leword32le getWord64beword64be getWord64leword64legetInt8int8 getInt16leint16le getInt16beint16be getInt32leint32le getInt32beint32be getInt64leint64le getInt64beint64be getWordHostwordHost getWord16host word16host getWord32host word32host getWord64host word64host getVarLenBevarLenBe getVarLenLevarLenLe$fAlternativeParser$fApplicativeParser$fMonadFailParser$fMonadPlusParser $fMonadParser$fFunctorParserMessageNoteOffNoteOn KeyPressure ControlChange ProgramChangeChannelPressure PitchWheelSequenceNumberText Copyright TrackNameInstrumentNameLyricsMarkerCuePoint ChannelPrefix ProgramName DeviceNameTrackEnd TempoChange SMPTEOffset TimeSignature KeySignatureReservedSysexchannelkeyvelocitypressurecontrollerNumbercontrollerValuepreset pitchWheelTempoBankPresetPressureVelocityKeyChannelTimeTicksTimeDiv TicksPerBeatTicksPerSecondTrackFileType SingleTrack MultiTrack MultiPatternMidifileTypetimeDivtracks isNoteOffisNoteOn isKeyPressureisControlChangeisProgramChangeisChannelPressure isPitchWheelisChannelMessageisSysexMessage isMetaMessage isTrackEndremoveTrackEnds toSingleTrackmerge toAbsTime fromAbsTime toRealTime fromRealTime importFile exportFile parseMidi buildMidi parseTrack buildTrack parseMessage buildMessage$fArbitraryFileType$fArbitraryTimeDiv$fArbitraryMessage$fArbitraryMidi $fEqFileType$fShowFileType $fShowTimeDiv $fEqTimeDiv $fShowMessage $fEqMessage$fEqMidi $fShowMidi SampleModeNoLoopContLoop PressLoopAudio sampleRate channelNumber sampleDataAudibletoSample fromSample SampleDataSample sampleNumber sampleTypeconvertparseSampleDatabuildSampleData$fAudibleDouble$fAudibleFloat$fAudibleWord64$fAudibleWord32$fAudibleWord16$fAudibleWord8$fAudibleInt64$fAudibleInt32$fAudibleInt16 $fAudibleInt8$fArbitraryAudio $fShowAudio $fEqAudio$fArbitrarySampleMode$fEqSampleMode$fShowSampleMode AudibleInWav parseSample buildSample bitsPerSampleparseWavbuildWav$fAudibleInWavInt64$fAudibleInWavInt32$fAudibleInWavInt16$fAudibleInWavWord8Shdr sampleNamestartend startLoopendLoop originalPitchpitchCorrection sampleLinkInstinstName instBagNdx GeneratorStartAddressOffsetEndAddressOffsetLoopStartAddressOffsetLoopEndAddressOffsetStartAddressCoarseOffset ModLfoToPitch VibLfoToPitch ModEnvToPitchInitFcInitQ ModLfoToFc ModEnvToFcEndAddressCoarseOffset ModLfoToVolChorusReverbPan DelayModLfo FreqModLfo DelayVibLfo FreqVibLfo DelayModEnv AttackModEnv HoldModEnv DecayModEnv SustainModEnv ReleaseModEnvKeyToModEnvHoldKeyToModEnvDecay DelayVolEnv AttackVolEnv HoldVolEnv DecayVolEnv SustainVolEnv ReleaseVolEnvKeyToVolEnvHoldKeyToVolEnvDecay InstIndexKeyRangeVelRangeLoopStartAddressCoarseOffsetVel InitAttenLoopEndAddressCoarseOffset CoarseTuneFineTune SampleIndex ScaleTuningExclusiveClassRootKey ReservedGenModsrcOperdestOperamount amtSrcOper transOperBaggenNdxmodNdxPhdr presetNamebank presetBagNdxlibrarygenre morphologyPdtaphdrspbagspmodspgensinstsibagsimodsigensshdrsSdtasmplsm24InfoVersionTargetSoundEngineBankNameRomName RomVersion CreationDateAuthorsIntendedProductCopyrightMessageComments UsedTools ReservedInfo SoundFontinfossdtapdta isSampleIndex isInstIndexparseSoundFontbuildSoundFont parseInfos buildInfos parseSdta buildSdta parsePdta buildPdta$fArbitraryInfo$fArbitrarySdta$fArbitraryPhdr$fArbitraryBag$fArbitraryMod$fArbitraryGenerator$fArbitraryInst$fArbitraryShdr$fArbitraryPdta$fArbitrarySoundFont$fEqInfo $fShowInfo$fEqSdta $fShowSdta$fEqPhdr $fShowPhdr$fEqBag $fShowBag$fEqMod $fShowMod $fEqGenerator$fShowGenerator$fEqInst $fShowInst$fEqShdr $fShowShdr$fEqPdta $fShowPdta $fEqSoundFont$fShowSoundFontbytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringData.ByteString.LazyData.ByteString.Internal fromChunks unsafeLiftIOwithSize mapBuilder ensureFreewriteN writeNbytesSget splitAtSTarrayGen stringNulGen