BmA     <Generate a frequency trigraph based on an english dictionary(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafeKSearch for the character frequencies based on the first a two-letter stringA map of character frequencies, based on a dictionary. The key is a two-letter string, and the value is a list of probabilities (a-z). It's form is: [("aa", [2,0,3,0,0,0,1,0,0,0,0,1,1,1,0,0,0,3,2,0,0,0,0,0,0,0]), ... ("zz", [7,0,0,0,1,0,0,0,7,0,0,17,0,0,2,0,0,0,0,0,0,0,1,0,5,0])].Generate pronouncable, hard-to-guess passwords(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafe \Generate a password using the generator g, returning the result and the updated generator.  -- Generate a password of length 10 using the system generator myGenPassword :: IO (String, StdGen) myGenPassword = genPassword 10 True `liftM` getStdGen Plural version of genPassword. Generates an infinite list of passwords using the generator g, returning the result and the updated generator. -- Generate 10 passwords of length 10 using the system generator myGenPasswords :: IO ([String], StdGen) myGenPasswords = ((ls, g) -> (ls, g)  genPasswords 10 10 True  getStdGen @Generate a password using the generator g, returning the result.  -- Generate a password of length 10 using the system generator myNewPassword :: IO String myNewPassword = newPassword 10 True `liftM` getStdGen uPlural version of newPassword. Generates an infinite list of passwords using the generator g, returning the result -- Generate 10 passwords of length 10 using the system generator myNewPasswords :: IO [String] myNewPasswords = genPasswords 10 10 True  getStdGen ]Generate a password using the MonadRandom m. MonadRandom is exposed here for extra control.  -- Generate a password of length 10 using the system generator myPassword :: IO String myPassword = evalRand (mkPassword 10 True) `liftM` getStdGen Plural version of mkPassword. Generate an infinite list of passwords using the MonadRandom m. MonadRandom is exposed here for extra control. -- Generate an list of length 20 with passwords of length 10 using the system generator myMkPasswords :: IO [String] myMkPasswords = evalRand (mkPasswords 10 20 True) `liftM` getStdGen ^Generate a passphrase using the generator g, returning the result and the updated generator.  -- Generate a passphrase of 10 words, each having a length between 6 and 12, -- using the system generator myGenPassphrase :: IO (String, StdGen) myGenPassphrase = genPassword 10 True `liftM` getStdGen BGenerate a passphrase using the generator g, returning the result.  -- Generate a passphrase of 10 words, each having a length between 6 an 12, -- using the system generator. myNewPassphrase :: IO String myNewPassphrase = newPassphrase 10 6 12 `liftM` getStdGen <Generate a finite number of words of random length (between min and maxQ chars) using the MonadRandom m. MonadRandom is exposed here for extra control.  -- Generate a passphrase of 10 words, each having a length between 6 and 12. myPassphrase :: IO String myPassphrase = evalRand (mkPassphrase 10 6 12) `liftM` getStdGen )The alphabet we sample random values from %Generate two random characters. Uses  to generate a weighted list. MGenerate a random character based on the previous two characters and their IGenerate the last n characters using previous two characters and their  password lengthinclude capitals?random generatorpassword lengthnumber of passwordsinclude capitals?random generatorpassword lengthinclude capitals?random generatorpassword lengthnumber of passwordsinclude capitals?random generatorpassword lengthinclude capitals?password lengthnumber of passwordsinclude capitals?number of wordsminimum word lengthmaximum word lengthrandom generator number of wordsminimum word lengthmaximum word lengthrandom generator number of wordsminimum word lengthmaximum word length            %elocrypt-1.0.0-GUrIFzFhCLO9yokN76lkiPData.Elocrypt.Trigraph Data.ElocryptElocrypt.Trigraphtrigraghtrigraph findFrequency frequencies genPassword genPasswords newPassword newPasswords mkPassword mkPasswords genPassphrase newPassphrase mkPassphrasealphabetfirst2nextlastNbaseGHC.BaseliftM