úÎ;‚     Safe05Represents an email address.£Creates an email address without validating it. You should only use this when reading data from somewhere it has already been validated (e.g. a database)..Converts an email address back to a ByteString,Extracts the local part of an email address.-Extracts the domain part of an email address.A parser for email addresses., !"#$%&'()*+,-./01234+ !"#$%&'()*+,-./01234Safe &Smart constructor for an email address mChecks that an email is valid and returns a version of it where comments and whitespace have been removed.5Example: >>> canonicalizeEmail "spaces. are. allowed&example.com" Just "spaces.are.allowed example.com"RValidates whether a particular string is an email address according to RFC5322.WIf you want to find out *why* a particular string is not an email address, use this. Examples: >>> validate "exampleexample.com" Right "exampleKexample.com" >>> validate "not.good" Left "at sign > @: not enough input"      None#A QuasiQuoter for email addresses. Use it like this::set -XQuasiQuotes[email|someone@example.com|]"someone@example.com"5      !"#$%&'()*+,-./012345678)email-validate-2.3-CwjB5eTwuQ9Al5mTMI0Io0Text.Email.ParserText.Email.ValidateText.Email.QuasiQuotation EmailAddressunsafeEmailAddress toByteString localPart domainPartaddrSpec$fReadEmailAddress$fShowEmailAddress$fEqEmailAddress$fOrdEmailAddress$fDataEmailAddress$fGenericEmailAddress emailAddresscanonicalizeEmailisValidvalidateemaillocaldomain domainName domainLabelalphaNumisAlphaNumHyphen dottedAtomsatom isAtomText domainLiteral isDomainText quotedString quotedContent isQuotedText quotedPaircfwsfwsbetweenbetween1commentcommentContent isCommentTextnullChar skipWhile1wsp1wspisWsp isAlphaNumcrlfcrlfisVcharvchar isObsNoWsCtl obsNoWsCtl