úÎ!€¡u+Í      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌNone&',-.=>?@AHSUVXgy.memorable-bitsFClass for all things that can be converted to memorable strings. See B for how to use.memorable-bits4Render numbers as hexadecimal numbers. Pads with 0s.memorable-bits0Render numbers as decimal numbers. Does not pad.memorable-bits*Class for capturing how to render numbers. memorable-bits6The class that implements the main rendering function.memorable-bits:Determines the number of bits that a pattern will consume.memorable-bits2Useful to prevent haddock from expanding the type.memorable-bits2Useful to prevent haddock from expanding the type.memorable-bits Convert a  '[Symbol] to a balanced tree of #¬. Each result has equal probability of occurring. Length of the list must be a power of two. This is very useful for converting long lists of words into a usable pattern.#:kind! ToTree '["a", "b", "c", "d"]!ToTree '["a", "b", "c", "d"] :: *= ("a" :| "b") :| ("c" :| "d")memorable-bitsPad the a argument out to length n7 by taking the remaining bits and converting them via nt (see  and 6). If padding is required, it is separated by a dash.See - and . for convinence functions. memorable-bits Captures n- bits and convertes them to a string via the nt8 ("number type") argument after adding the offset. See , .!memorable-bits Captures n, bits and converts them to a string via the nt ("number type") argument. See , ."memorable-bitsLAppend two patterns together by doing the first, then the second. See also %#memorable-bitsJChoice between two sub patterns. It's not safe to use this directly. Use $ instead.€Also, if you are parsing back rendered phrases, you must make sure that the selected word is enough to choose a side. That is, a and b  must have unique first words. This is NOT checked, as it causes a HUGE compile-time performance hit. If we can make it performant it may be checked one day.$memorable-bitsProxy version of #¼. It also constraints the two subpatterns to being the same depth. Use this to add an extra bit to the pattern depth, where the bit chooses to proceed down either the left or right side.:set -XTypeApplications:set -XDataKindsimport Data.Word5let myPattern = padHex (Proxy @"foo" .| Proxy @"bar"))renderMemorable myPattern (0x00 :: Word8)"bar-00")renderMemorable myPattern (0xff :: Word8)"foo-7f" See also FWARNING: Each side of the split must be unique. See the warning about #.%memorable-bitsProxy version of "Ö. The new pattern depth is the sum of the two parts. >>> import Data.Word >>> import Data.Memorable.Theme.Words >>> let myPattern = words8 .- words8 >>> renderMemorable myPattern (0xabcd :: Word16) "ages-old"&memorable-bits=Shrink a branching pattern by discarding the right hand side.'memorable-bits<Shrink a branching pattern by discarding the left hand side.(memorable-bits,Get the depth of a pattern as a value-level Í@. >>> :set -XTypeApplications -XDataKinds >>> getDepth (Proxy "foo" .| Proxy  "bar") 1)memorable-bits3Put five things next to each other. Same as using % repeatedly*memorable-bits#Put four things next to each other.+memorable-bits$Put three things next to each other.,memorable-bits"Put two things next to each other.-memorable-bitsPad this pattern out with hex digits. Useful when you want some human readability, but also want full coverage of the data. See  for details.import Data.Word#import Data.Memorable.Theme.FantasyBrenderMemorable (padHex rpgWeapons) (0xdeadbeef01020304 :: Word64)+"sacred-club-of-ghoul-charming-eef01020304".memorable-bitsPad with decimal digits. See - and ) for details. This does not pad with 0's/memorable-bits8A single hex number consuming 4 bits (with leading 0's).0memorable-bits8A single hex number consuming 8 bits (with leading 0's).1memorable-bits9A single hex number consuming 16 bits (with leading 0's).2memorable-bits9A single hex number consuming 32 bits (with leading 0's).3memorable-bitsA single hex number consuming nI bits, which it will try and figure out from context (with leading 0's).4memorable-bits9A single decimal number consuming 4 bits (no leading 0's)5memorable-bits9A single decimal number consuming 8 bits (no leading 0's)6memorable-bits:A single decimal number consuming 16 bits (no leading 0's)7memorable-bits:A single decimal number consuming 32 bits (no leading 0's)8memorable-bits"A single decimal number consuming nF bits, which it will try and figure out from context (no leading 0's)=memorable-bits$Turn a memorable string back into a  value.>memorable-bits=Convert a memorable string into a different memorable string.WUseful for things like taking an existing md5, and converting it into a memorable one.#:set -XTypeApplications -XDataKinds!import Data.Memorable.Theme.WordsLrerender hex (padHex @128 $ four words10) "2d4fbe4d5db8748c931b85c551d03360"1Just "lurk-lash-atop-hole-b8748c931b85c551d03360"@memorable-bitsiUse this with tasty-quickcheck (or your prefered testing framework) to make sure you aren't lying about . >testProperty "MemLen Word8" $ forAll (arbitrary :: Gen Word8) @ Bmemorable-bitsXThis is the function to use when you want to turn your values into a memorable strings.import Data.Word!import Data.Memorable.Theme.Words let myPattern = words8 .- words8,renderMemorable myPattern (0x0123 :: Word16) "cats-bulk"Ememorable-bits Render a Î as a more memorable Ï.Fmemorable-bitsGenerate a random string.Gmemorable-bits Render any Ð value as a 32 bit pattern.Hmemorable-bits Render any Ð value as a 16 bit pattern.Imemorable-bits Render any Ð value as a 8 bit pattern.Wmemorable-bits:set -XOverloadedStringsimport Data.ByteStringimport Crypto.Hash#let myPattern = padHex (four flw10)JrenderMemorable myPattern (hash ("anExample" :: ByteString) :: Digest MD5),"bark-most-gush-tuft-1b7155ab0dce3ecb4195fc"smemorable-bits=renderMemorable threeWordsFor32Bits (ip4FromOctets 127 0 0 1)"shore-pick-pets"H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIH#"$%! &'()*+,-./012345678 9:;<=> ?@ABCDEFGHINoneiï)  !"$%&'()*+,-./012345678=>B)B=>%$,+*)-.3/01284567&'" ! (None-.HUVk¥ ŒŽ‘’“”•– ”“’‘ŽŒ•–None-.HUVl[—˜™š›š™˜—›None-.HUVl᜞Ÿ Ÿžœ None-.HUVmg¡¢£¤¥¤£¢¡¥None -.>HUVXsï¸memorable-bitsA collection of wordsÁmemorable-bits$Three words made to fit into 32 bitsÂmemorable-bits"Six words made to fit into 64 bitsÃmemorable-bits+Four letter words (useful for even lengths)Êmemorable-bits+Four equal length words made to fit 32 bitsËmemorable-bits$Seven equal length words for 64 bitsÌmemorable-bits,Eight equal length words made to fit 64 bits'¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌ'·¶µ´³²±°¯¸¹º»¼½¾¿ÀÁ®­¬«ª©¨ÃÄÅÆÇÈÉÊȨ̈¦Ñ        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàámemorable-bits-0.1.0.1-inplaceData.MemorableData.Memorable.InternalData.Memorable.Theme.FantasyData.Memorable.Theme.FoodData.Memorable.Theme.MetricData.Memorable.Theme.ScienceData.Memorable.Theme.Wordsbase Data.ProxyProxy MemorableMemLen renderMem parserMemHexDec NumberRender renderNumber readNumber MemRenderrenderparserNTimesDepthNoDupsHasDupsFindBitsInPowerOfTwo IsPowerOfTwo PowerOfTwo RightSideLeftSide IntersperseConcatToTreeLenToTree64ToTree2ToTreeHPadToNumberWithOffsetNumber:-:|.|.-leftSide rightSidegetDepthfivefourthreetwopadHexpadDechex4hex8hex16hex32hexdec4dec8dec16dec32decaddBits symbolString stringSymbol parsePhraseparseMemorablererender memBitSize testMemLen putUnalignedrenderMemorable runRender runParserrenderMemorableByteString renderRandomrenderHashable32renderHashable16renderHashable8$fMemRenderTYPE:|$fMemRenderTYPE:-$fMemRenderSymbola$fMemRenderTYPEPadTo$fMemRenderTYPENumberWithOffset$fNumberRenderTYPEDec$fNumberRenderTYPEHex$fMemorableDigest$fMemorableDigest0$fMemorableDigest1$fMemorableDigest2$fMemorableDigest3$fMemorableDigest4$fMemorableDigest5$fMemorableDigest6$fMemorableDigest7$fMemorableDigest8$fMemorableDigest9$fMemorableDigest10$fMemorableDigest11$fMemorableDigest12$fMemorableDigest13$fMemorableDigest14$fMemorableDigest15$fMemorableDigest16$fMemorableDigest17$fMemorableDigest18$fMemorableDigest19$fMemorableDigest20$fMemorableDigest21$fMemorableDigest22$fMemorableDigest23$fMemorableDigest24$fMemorableDigest25$fMemorableDigest26$fMemorableDigest27$fMemorableDigest28$fMemorableDigest29$fMemorableDigest30$fMemorableDigest31$fMemorableIP6$fMemorableIP4$fMemorableInt256$fMemorableInt224$fMemorableInt192$fMemorableInt160$fMemorableInt128$fMemorableInt96$fMemorableWord256$fMemorableWord224$fMemorableWord192$fMemorableWord160$fMemorableWord128$fMemorableWord96$fMemorable(,,,,)$fMemorable(,,,)$fMemorable(,,)$fMemorable(,)$fMemorableInt64$fMemorableInt32$fMemorableInt16$fMemorableInt8$fMemorableWord64$fMemorableWord32$fMemorableWord16$fMemorableWord8 RpgArmour RpgWeaponsBuffArmourMaterialMonsterAuraArmourWeaponsTransitiveVerb rpgWeapons rpgArmourDessertsFoodAdjectives DessertTypesDessertFlavoursdesserts MeasurementsSIPrefixUnits UnitsPlural measurements ChemBabble ChemSuffix ChemPrefix NumericPrefix chemBabbleFourLetterWordsWordsFLW4FLW5FLW6FLW7FLW8FLW9FLW10Words4Words5Words6Words7Words8Words9Words10Words11Words12words12words11words10words9words8words7words6words5words4threeWordsFor32BitssixWordsFor64Bitsflw10flw9flw8flw7flw6flw5flw4fourEqualWordsFor32BitssevenEqualWordsFor64BitseightEqualWordsFor64Bits integer-gmpGHC.Integer.TypeIntegerbytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringGHC.BaseString'hashable-1.2.7.0-6U3VnAjAfQC5KkN2X3oAD1Data.Hashable.ClassHashable