úÎT³Kmª      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©(c) Philip Cunningham, 2015MIThello@filib.io experimentalportableNone Read an Int8.Read an Int16.[Read a Word24 in little endian format. Since Word24 unavailable in Data.Int we use Word32.@Read an Int24. Since Int24 unavailable in Data.Int we use Int32. Read an Int32.    (c) Philip Cunningham, 2015MIThello@filib.io experimentalportableSafe .ADT representing all supported Ruby encodings.p)Lifts encoding strings into encoding ADT.q,Lowers encoding ADT into an encoding string.h  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqh  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqhqp  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno e  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq(c) Philip Cunningham, 2015MIThello@filib.io experimentalportableNone35Ur7Transform plain Haskell values to RubyObjects and back.s5Takes a plain Haskell value and lifts into RubyObjecttCTakes a RubyObject transforms it into a more general Haskell value.u Representation of a Ruby object.v represents nilw represents true or falsex represents a Fixnumyrepresents an Arrayzrepresents an Hash{represents an IVar| represents a String} represents a Float~ represents a Symbolrepresents an invalid objectrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œrstuvwxyz{|}~uvwxyz{|}~rstŒ‹Š‰ˆ‡†…„ƒ‚€rstu vwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ(c) Philip Cunningham, 2015MIThello@filib.io experimentalportableNoneC 7State that we must carry around during deserialisation. object cache. symbol cache.‘9Marshal monad endows the underlying Get monad with State.”"Lift Get monad into Marshal monad.•7Constructs an empty cache to store symbols and objects.–Look up value in cache.—Look up object in object cache.˜!Look up a symbol in symbol cache.™)Write an object to the appropriate cache. Ž‘’“”•–—˜™ Ž‘’“”•–—˜™ ‘’“”Ž•–—˜™Ž‘’“”•–—˜™(c) Philip Cunningham, 2015MIThello@filib.io experimentalportableNoneZ š&Character that represents NilCharlass.›%Character that represents FalseClass.œ$Character that represents TrueClass. Character that represents Array.ž!Character that represents Fixnum.Ÿ Character that represents Float. Character that represents Hash.¡Character that represents IVar.¢&Character that represents Object link.£!Character that represents String.¤!Character that represents Symbol.¥"Character that represents Symlink. š›œžŸ ¡¢£¤¥  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnouvwxyz{|}~‘š›œžŸ ¡¢£¤¥‘  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnouvwxyz{|}~š›œžŸ ¡¢£¤¥ š›œžŸ ¡¢£¤¥(c) Philip Cunningham, 2015MIThello@filib.io experimentalportableNoneUVZ ¦Parses Marshal version.§ Parses a subset of Ruby objects.ªParses  )http://ruby-doc.org/core-2.2.0/Array.htmlArray.«Parses  *http://ruby-doc.org/core-2.2.0/Fixnum.htmlFixnum.¬Parses  )http://ruby-doc.org/core-2.2.0/Float.htmlFloat.­Parses  (http://ruby-doc.org/core-2.2.0/Hash.htmlHash.®Parses  Mhttp://docs.ruby-lang.org/en/2.1.0/marshal_rdoc.html#label-Instance+VariablesInstance Variables.¯3Pulls an Instance Variable out of the object cache.°Parses  *http://ruby-doc.org/core-2.2.0/String.htmlString.±Parses  *http://ruby-doc.org/core-2.2.0/Symbol.htmlSymbol.²'Pulls a Symbol out of the symbol cache.³+Lift Get into Marshal monad and then label.´&Label underlying Get in Marshal monad. ¦§ª«¬­®¯°±²³´¦§¦§ ¦§ª«¬­®¯°±²³´(c) Philip Cunningham, 2015MIThello@filib.io experimentalportableNone¨fParses a subset of Ruby objects serialised with Marshal, Ruby's built-in binary serialisation format.©fParses a subset of Ruby objects serialised with Marshal, Ruby's built-in binary serialisation format.µConverts an Either to a Maybe.¨Serialised Ruby objectDe-serialisation result©Serialised Ruby object(Error message or de-serialisation resultµƒ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnostuvwxyz{|}~‘š›œžŸ ¡¢£¤¥¨©¨©ts¨©µ¶       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™šš›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁrubym_9qq0sUWiP6J5notNqvAppZData.Ruby.Marshal.IntData.Ruby.Marshal.EncodingData.Ruby.Marshal.RubyObjectData.Ruby.Marshal.MonadData.Ruby.Marshal.TypesData.Ruby.Marshal.GetData.Ruby.MarshalbaseGHC.IntInt16GHC.WordWord8cerea_HLYHUfAEssgHMcUIvqnkVDData.Serialize.Get getWord32le getWord16legetWord8getInt8 getInt16le getWord24le getInt24le getInt32leRubyStringEncoding ASCII_8BITBig5 Big5_HKSCSBig5_UAOCP50220CP50221CP51932CP850CP852CP855CP949CP950CP951EUC_JP EUC_JP_2004EUC_KREUC_TW Emacs_MuleEucJP_msGB12345GB18030GB1988GB2312GBKIBM437IBM737IBM775IBM852IBM855IBM857IBM860IBM861IBM862IBM863IBM864IBM865IBM866IBM869 ISO_2022_JP ISO_2022_JP_2ISO_2022_JP_KDDI ISO_8859_1 ISO_8859_10 ISO_8859_11 ISO_8859_13 ISO_8859_14 ISO_8859_15 ISO_8859_16 ISO_8859_2 ISO_8859_3 ISO_8859_4 ISO_8859_5 ISO_8859_6 ISO_8859_7 ISO_8859_8 ISO_8859_9KOI8_RKOI8_U MacCentEuro MacCroatian MacCyrillicMacGreek MacIceland MacJapaneseMacRoman MacRomaniaMacThai MacTurkish MacUkraine SJIS_DoCoMo SJIS_KDDI SJIS_SoftBank Shift_JISStateless_ISO_2022_JPStateless_ISO_2022_JP_KDDITIS_620US_ASCII UTF8_DoCoMo UTF8_KDDIUTF8_MAC UTF8_SoftBankUTF_16UTF_16BEUTF_16LEUTF_32UTF_32BEUTF_32LEUTF_7UTF_8 Windows_1250 Windows_1251 Windows_1252 Windows_1253 Windows_1254 Windows_1255 Windows_1256 Windows_1257 Windows_1258 Windows_31J Windows_874UnsupportedEncodingtoEncfromEncRubyabletoRubyfromRuby RubyObjectRNilRBoolRFixnumRArrayRHashRIVarRStringRFloatRSymbol Unsupported $fRubyableMap $fRubyable[] $fRubyable[]0$fRubyableMaybe $fRubyable(,)$fRubyableFloat$fRubyableByteString$fRubyableVector$fRubyableVector0 $fRubyableInt$fRubyableBool $fRubyable()$fRubyableRubyObjectCacheobjectssymbolsMarshal runMarshal liftMarshal emptyCache readCache readObject readSymbol writeCacheNilChar FalseCharTrueChar ArrayChar FixnumChar FloatCharHashCharIVarCharObjectLinkChar StringChar SymbolChar SymlinkChargetMarshalVersion getRubyObjectdecode decodeEithergetArray getFixnumgetFloatgetHashgetIVar getObjectLink getString getSymbol getSymlink liftAndLabel marshalLabelhush