!TS!     <Generate a frequency trigraph based on an english dictionary(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafe elocrypt?Search for the character frequencies and return a weighted listelocryptKSearch for the character frequencies based on the first a two-letter stringelocryptFix frequencies if they are all 0, since MonadRandom prohibits this. In this case, use all 1s to give every item an equal weightelocryptA 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])]elocryptThe two letter prefix.Generate pronouncable, hard-to-guess passwords(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafeRelocryptdOptions for generating passwords or passphrases. Do not use this constructor directly. Instead use  to construct an instance.elocryptaDefault options for generating passwords or passphrases. This is the preferred way to construct .elocrypt\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 genOptions `liftM` getStdGen elocryptPlural 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 genOptions  getStdGen elocrypt@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 genOptions `liftM` getStdGen elocryptuPlural 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 genOptions  getStdGen elocrypt]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 genOptions) `liftM` getStdGen elocryptPlural 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 genOptions) `liftM` getStdGen elocrypt^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 6 10 genOptions `liftM` getStdGen elocryptBGenerate 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 elocrypt<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 elocrypt%Generate two random characters. Uses  to generate a weighted list.elocryptIGenerate the last n characters using previous two characters and their elocryptMGenerate a random character based on the previous two characters and their elocryptdRandomly capitalize at least 1 character. Additional characters capitalize at a probability of 1/12elocryptRandomly capitalize 1 character elocryptpassword lengthelocryptoptionselocryptrandom generator elocryptpassword lengthelocryptnumber of passwordselocryptoptionselocryptrandom generator elocryptpassword lengthelocryptoptionselocryptrandom generator elocryptpassword lengthelocryptnumber of passwordselocryptoptionselocryptrandom generator elocryptpassword lengthelocryptoptions elocryptpassword lengthelocryptnumber of passwordselocryptoptionselocryptnumber of wordselocryptminimum word lengthelocryptmaximum word lengthelocryptoptionselocryptrandom generatorelocryptnumber of wordselocryptminimum word lengthelocryptmaximum word lengthelocryptoptionselocryptrandom generatorelocryptnumber of wordselocryptminimum word lengthelocryptmaximum word lengthelocryptoptionselocrypt the prefixelocryptlengthelocryptthe string to capitalize         %elocrypt-2.0.1-2KbMhPXYPJj96oPSOuQivqData.Elocrypt.Trigraph Data.ElocryptElocrypt.Trigraphtrigraghtrigraph findWeights findFrequencydefaultFrequencies frequencies GenOptions genCapitals genOptions genPassword genPasswords newPassword newPasswords mkPassword mkPasswords genPassphrase newPassphrase mkPassphrasefirst2lastNnext capitalizeR capitalize1$fEqGenOptions$fShowGenOptionsbaseGHC.BaseliftM