úÎ!&,#L3      !"#$%&'()*+,-./012f(c) 2005 Jesper Louis Andersen <jlouis@mongers.org> 2006 Lemmih <lemmih@gmail.com>BSD3lemmih@gmail.combelieved to be stableportableSafe:  f(c) 2005 Jesper Louis Andersen <jlouis@mongers.org> 2006 Lemmih <lemmih@gmail.com>BSD3lemmih@gmail.combelieved to be stableportableSafe s bencodeRThe B-coding defines an abstract syntax tree given as a simple data type herebencode|bRead is a conversion routine. It assumes a B-coded string as input and attempts a parse of it into a BEncode data typebencode.Render a BEncode structure to a B-coded string  "(c) 2005 Lemmih <lemmih@gmail.com>BSD3lemmih@gmail.comstableportableSafe  !  !*(c) 2015 Matthew Leon <ml@matthewleon.com>BSD3creichert07@gmail.com experimentalportableNoneM#'bencode;Reader monad for extracting data from a BEncoded structure.3bencodeBReader constructor. Private.(bencode9Run a BReader. See usage examples elsewhere in this file.)bencodeQUsage same as bstring, below. (sadly, doctests for this cause errors on GHC 7.4)*bencode"runBReader bstring (BString "foo") Right "foo"+bencoderunBReader bint (BInt 42)Right 42,bencodeRead a list of BEncoded data/runBReader (list bint) (BList [BInt 1, BInt 2]) Right [1,2]!runBReader (list bint) (BList [])Right []Alet bs = (BList [BList [BString "foo", BString "bar"], BList []])#runBReader (list $ list bstring) bsRight [["foo","bar"],[]]-bencode8Read the values of a BDict corresponding to a string keyBlet bd = (BDict $ Map.fromList [("bar", BInt 2), ("foo", BInt 1)])runBReader (dict "foo" bint) bdRight 1:{7let bs = (BList [BDict $ Map.fromList [("baz", BInt 2),? ("foo", BString "bar")],> BDict $ Map.singleton "foo" (BString "bam")]),in runBReader (list $ dict "foo" bstring) bs:}Right ["bar","bam"]:{.let bd = (BDict $ Map.singleton "foo" (BList [( BString "foo", BString "bar" ])).in runBReader (dict "foo" $ list $ bstring) bd:}Right ["foo","bar"]'()*+,-'(+)*,-4      !"#$%&'()*+,-./&%'$#0123456&bencode-0.6.1.0-29zzKtaSrFnIgBRvSGscvuData.BEncode.ReaderData.BEncode.ParserData.BEncode.Lexer Data.BEncodebaseControl.ApplicativeoptionalGHC.Base<|>TokenTDictTListTIntTStringTNumberTEndlexer $fShowToken $fEqTokenBEncodeBIntBStringBListBDictbReadbShowbPack$fBinaryBEncode $fEqBEncode $fOrdBEncode $fShowBEncodeBParser runParsertokendictlistbstring bbytestringbintsetInput$fFunctorBParser$fMonadBParser$fApplicativeBParser$fMonadPlusBParser$fAlternativeBParserBReader runBReader$fFunctorBReader$fApplicativeBReader$fAlternativeBReader$fMonadBReader$fMonadPlusBReaderbreader