!`^x%      !"#$<Generate a frequency trigraph based on an english dictionary(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafe0elocrypt?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 prefixSafeelocrypt5A mapping from letters to numbers that look like themelocrypt5A mapping from letters to symbols that look like themelocrypt/Map a letter to one or more digits, if possibleelocrypt0Map a letter to one or more symbols, if possibleelocryptSelects special characters elocrypt7Randomly update characters at the specified probability elocrypt Update character at position pos elocryptUpdate functionelocryptthe string to updateelocryptthe position to update  .Generate pronouncable, hard-to-guess passwords(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafe] elocryptdOptions 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 characterelocrypt_Randomly numerize at least 1 character. Additional characters numerize at a probability of 1/6!elocryptfRandomly make at least 1 character a symbol. Additional characters specialize at a probability of 1/4 elocryptpassword lengthelocryptoptionselocryptrandom generatorelocryptpassword lengthelocryptnumber of passwordselocryptoptionselocryptrandom generatorelocryptpassword lengthelocryptoptionselocryptrandom generatorelocryptpassword lengthelocryptnumber of passwordselocryptoptionselocryptrandom generatorelocryptpassword lengthelocryptoptionselocryptpassword lengthelocryptnumber of passwordselocryptoptionselocryptnumber of wordselocryptminimum word lengthelocryptmaximum word lengthelocryptoptionselocryptrandom generatorelocryptnumber of wordselocryptminimum word lengthelocryptmaximum word lengthelocryptoptionselocryptrandom generatorelocryptnumber of wordselocryptminimum word lengthelocryptmaximum word lengthelocryptoptionselocrypt the prefix   !"   !"&      !"#$%&'()*+,-.$elocrypt-2.1.0-3xBw3XKEZXUIfJ7KI9TZsData.Elocrypt.TrigraphData.Elocrypt.Utils Data.ElocryptElocrypt.Trigraphtrigraghtrigraph findWeights findFrequencydefaultFrequencies frequenciesnumeralConversionssymbolConversionstoDigittoSymbolisSymbolupdateRupdate1 GenOptions genCapitals genDigits genSpecials genOptions genPassword genPasswords newPassword newPasswords mkPassword mkPasswords genPassphrase newPassphrase mkPassphrasefirst2lastNnext capitalizeR capitalize1 numerizeR numerize1 specializeR specialize1$fEqGenOptions$fShowGenOptionsbaseGHC.BaseliftM