h&]"Nn      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (Helpers for interpreting IRC reply codes(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred"irc-coreInformation describing the category and human decipherable name of a reply.irc-corecategoryirc-corehuman-decipherable nameirc-coreCategories for reply codesirc-core'0-99 Messages between client and serverirc-core200-399 Responses to commandsirc-core400-599 Errorsirc-core Uncategorized irc-coreType of numeric reply codesirc-core$Compute information for a reply codeirc-coreCategorize a reply code using the unknown category and simply showing the reply code's number as its name.irc-core9Information about reply codes as derived from ircd-seven.irc-coreReads only the numberirc-core Shows number  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  3Type and operations for nicknames and channel names(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferredirc-core.Identifier representing channels and nicknamesirc-core9This indexing function exists to specialize the type of .irc-core Construct an  from a irc-coreReturns the original  of an irc-core Returns a  of an  which is suitable for comparison or hashing which has been normalized for case.irc-coreReturns the case-normalized  for an identifier.irc-coreReturns 3 when the first argument is a prefix of the second.irc-coreCapitalize a string according to RFC 2812 Latin letters are capitalized and {|}~ are mapped to []^irc-core@ =  . irc-coreHash on normalized identifierirc-core#Comparison on normalized identifierirc-coreRead as string literalirc-coreShow as string literalirc-core!Equality on normalized identifierRate limit operations for IRC(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred$irc-coreThe  keeps track of rate limit settings as well as the current state of the limit.irc-coreTime that client can sendirc-coreConstruct a new rate limit with the given penalty and threshold.irc-core)Account for an event in the context of a . This command will block and delay as required to satisfy the current rate. Once it returns it is safe to proceed with the rate limited action.irc-corepenalty seconds irc-corethreshold seconds User hostmasks(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred" irc-core packages a nickname along with the username and hostname if they are known in the current context.irc-corenicknameirc-coreusername, empty when missingirc-corehostname, empty when missingirc-core Lens into  field.irc-core Lens into  field.irc-core Lens into  field.irc-coreRender  as nick!username@hostnameirc-coreSplit up a hostmask into a nickname, username, and hostname. The username and hostname might not be defined but are delimited by a ! and @ respectively.   Local definition of view(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferredirc-core(Local definition of lens package's view.(Low-level representation of IRC messages(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred"*irc-coreKey value pair representing an IRCv3.2 message tag. The value in this pair has had the message tag unescape algorithm applied.irc-core breaks down the IRC protocol into its most basic parts. The "trailing" parameter indicated in the IRC protocol with a leading colon will appear as the last parameter in the parameter list.8Note that RFC 2812 specifies a maximum of 15 parameters.This parser is permissive regarding spaces. It aims to parse carefully constructed messages exactly and to make a best effort to recover from extraneous spaces. It makes no effort to validate nicknames, usernames, hostnames, commands, etc. Servers don't all agree on these things. .:prefix COMMAND param0 param1 param2 .. paramNirc-coreIRCv3.2 message tagsirc-coreOptional sender of messageirc-coreCommandirc-coreCommand parametersirc-core Lens for irc-core Lens for irc-core Lens for irc-core Lens for irc-coreAttempt to split an IRC protocol message without its trailing newline information into a structured message.irc-coreRFC 2812 specifies that there can only be up to 14 "middle" parameters, after that the fifteenth is the final parameter and the trailing : is optional!irc-coreParse a whole IRC message assuming that the trailing newlines have already been removed. This parser will parse valid messages correctly but will also accept some invalid messages. Presumably the server isn't sending invalid messages!irc-coreParse the list of parameters in a raw message. The RFC allows for up to 15 parameters.irc-coreParse a rendered  token.irc-core$Take the next space-delimited lexemeirc-coreSerialize a structured IRC protocol message back into its wire format. This command adds the required trailing newline.irc-coreConstruct a new  without a time or prefix.irc-coreConcatenate a list of parameters into a single, space-delimited bytestring. Use a colon for the last parameter if it starts with a colon or contains a space.irc-coreWhen the current input matches the given character parse using the given parser.irc-coreReturns / iff next character in stream matches argument.irc-coreTry to decode a message as UTF-8. If that fails interpret it as Windows CP1252 This helps deal with clients like XChat that get clever and otherwise misconfigured clients.irc-core Decode a  as CP1252irc-coreThis character encoding is a superset of ISO 8859-1 in terms of printable characters, but differs from the IANA's ISO-8859-1 by using displayable characters rather than control characters in the 80 to 9F (hex) range.irc-corepossible middle parameters irc-corecommand irc-core parameters Smart constructors for  RawIrcMsg(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred"-<<irc-core Payload for irc-corePRIVMSG commandirc-coreCPRIVMSG command (CPRIVMSG :irc-coreCNOTICE command 'CNOTICE :irc-core KNOCK command KNOCK []irc-coreNOTICE commandirc-core MODE commandirc-core WHOIS commandirc-core WHO commandirc-coreWHOWAS commandirc-coreWALLOPS commandirc-coreOPERWALL commandirc-core NICK commandirc-core PART commandirc-core JOIN commandirc-coreINVITE commandirc-core TOPIC commandirc-core KICK commandirc-core KILL commandirc-core KLINE commandirc-coreUNKLINE commandirc-coreUNDLINE commandirc-coreUNXLINE commandirc-coreUNRESV commandirc-coreTESTLINE commandirc-coreTESTMASK commandirc-coreMASKTRACE commandirc-coreCHANTRACE commandirc-coreETRACE commandirc-coreREMOVE commandirc-core QUIT commandirc-core PASS commandirc-core LIST commandirc-core PING commandirc-core PONG commandirc-core ISON commandirc-core TIME commandirc-coreUSERHOST commandirc-coreUSERIP commandirc-core USERS commandirc-core STATS commandirc-core OPER commandirc-core LINKS commandirc-core AWAY commandirc-core MAP commandirc-core INFO commandirc-core RULES commandirc-coreVERSION commandirc-coreLUSERS command LUSERS [ []]irc-core MOTD command MOTD []irc-core ADMIN command ADMIN []irc-core TRACE command TRACE []irc-core USER commandirc-coreCAP REQ commandirc-coreCAP END commandirc-core(CAP LS command - support CAP version 3.2irc-core ZNC commandspecific to ZNCirc-coreAUTHENTICATE command generator. Returns a list because AUTHENTICATE has a chunking behavior.irc-core9Encoding of username and password in PLAIN authenticationirc-core/Encoding of username in EXTERNAL authentication9irc-coretarget irc-coremessage irc-core nickname irc-core channel irc-core message irc-core nickname irc-core channel irc-core message irc-core channel irc-core message irc-coretarget irc-coremessage irc-core target irc-core parameters irc-core parameters irc-core parameters irc-core parameters irc-core parameters irc-coremessage irc-coremessage irc-core nickname irc-corechannel irc-coremessage irc-corechannel irc-corekey irc-core nickname irc-core channel irc-corechannel irc-coretopic irc-core channel irc-core nickname irc-core message irc-coreclient irc-coremessage irc-coreminutes irc-coremask irc-corereason irc-coremask irc-coreserver irc-coremask irc-coreserver irc-coremask irc-coreserver irc-coremask irc-coreserver irc-coremask irc-coremask irc-coregecos irc-coremask irc-coregecos irc-corechannel irc-core argument irc-core channel irc-core nickname irc-core message irc-core quit message irc-core password irc-core parameters irc-core parameters irc-core parameters irc-core nicknames irc-coreoptional servername irc-core parameters irc-core parameters irc-coreoptional servername irc-core parameters irc-core username irc-core password irc-core parameters irc-coremessage irc-core servername irc-coreserver irc-coreparams irc-coreserver irc-coretarget irc-coreparams irc-core username irc-core realname irc-core capabilities irc-core parameters irc-coreauthentication mechanism irc-coreauthentication payload irc-coreauthorization identity irc-coreauthentication identity irc-core password irc-coreauthorization identity ??(Operations for interpreting mode changes(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-InferredB"irc-core5Settings that describe how to interpret channel modesirc-core"modes for channel lists (e.g. ban)irc-core"modes that always have an argumentirc-core$modes that have an argument when setirc-coremodes that never have argumentsirc-core0modes requiring a nickname argument (mode,sigil)irc-core Lens for  _modesListirc-core Lens for irc-core Lens for irc-core Lens for irc-core Lens for irc-core!The channel modes used by Solanumirc-core!The default UMODE used by Solanumirc-coreSplit up a mode change command and arguments into individual changes given a configuration.irc-coreConstruct the arguments to a MODE command corresponding to the given mode changes.irc-coremode interpretation irc-coremodes irc-corearguments irc-core(set, mode, parameter) irc-core(set,mode,parameter) )High-level representation of IRC messages(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred"M.irc-core8Targets used to direct a message to a window for displayirc-coreMetadata update for a userirc-core.Directed message to window that already existsirc-core(Directed message to channel or from userirc-coreNetwork-level messageirc-core.Sub-commands of the CAP command sent by serverirc-corelist of supported capsirc-corelist of active capsirc-corerequest acceptedirc-corerequest deniedirc-core/new capability available (cap-notify extension)irc-core)capability removed (cap-notify extension)irc-core%High-level IRC message representationirc-core#pass-through for unhandled messagesirc-coreserver code argumentsirc-coreold newirc-core"user channel account account gecosirc-coreuser channel reasonirc-core user reasonirc-corekicker channel kickee commentirc-corekiller killee reasonirc-coreuser channel topicirc-coresource target txtirc-coresource target command txtirc-coresource target command txtirc-coresource target txtirc-coresource target txtirc-core parametersirc-corecap command and parametersirc-core parametersirc-core parametersirc-coremessageirc-corereference-id type parametersirc-core reference-idirc-core4user account name changed (account-notify extension)irc-core%Target, new username and new hostnameirc-core"Braodcast message: Source, messageirc-coresender target channelirc-core0Match command text to structured cap sub-commandirc-coreInterpret a low-level  as a high-level 4. Messages that can't be understood are wrapped in .irc-coreParse a CTCP encoded message: ^ACOMMAND arguments^Airc-coreTarget information for the window that could be appropriate to display this message in.irc-core' of the user responsible for a message.irc-coreText representation of an IRC message to be used for matching with regular expressions.irc-coreSplit a nick into text parts group by whether or not those parts are valid nickname characters.irc-coreMaximum length computation for the message part for privmsg and notice. Note that the need for the limit is because the server will limit the length of the message sent out to each client, not just the length of the messages it will recieve.Note that the length is on the *encoded message* which is UTF-8 The calculation isn't using UTF-8 on the userinfo part because I'm assuming that the channel name and userinfo are all ASCII .:my!user@info PRIVMSG #channel :messagebodyrn 66      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ #irc-core-2.12-CQVQVE232o2MW0QnQjYkR Irc.CodesIrc.Identifier Irc.RateLimit Irc.UserInfo Irc.RawIrcMsg Irc.Commands Irc.Modes Irc.MessageView ReplyCodeInfo replyCodeType replyCodeText ReplyTypeClientServerReply CommandReply ErrorReply UnknownReply ReplyCodeERR_NUMERIC_ERRERR_TEXTTOOSHORTERR_NOLANGUAGEERR_TOOMANYLANGUAGESERR_BADCHARENCODINGERR_SERVERMODELOCKERR_UNKNOWNSERVERMODEERR_CANNOTSENDTONICKERR_CANNOTCHANGESERVERMODEERR_CANNOTCHANGECHANMODEERR_CANNOTCHANGEUMODEERR_CANNOTDOCOMMAND RPL_SASLMECHSERR_SASLALREADYERR_SASLABORTEDERR_SASLTOOLONG ERR_SASLFAILRPL_SASLSUCCESSRPL_NICKLOCKED RPL_LOGGEDOUT RPL_LOGGEDIN RPL_XINFOENDRPL_XINFOSTART RPL_XINFORPL_SCANUMODESRPL_SCANMATCHEDERR_MLOCKRESTRICTEDRPL_ENDOFRSACHALLENGE2RPL_RSACHALLENGE2ERR_MONLISTFULLRPL_ENDOFMONLIST RPL_MONLISTRPL_MONOFFLINE RPL_MONONLINERPL_ENDOFQUIETLIST RPL_QUIETLISTRPL_TESTMASKGECOSRPL_NOTESTLINE RPL_TESTLINE RPL_TESTMASK ERR_NOPRIVSRPL_ENDOFOMOTD RPL_OMOTDRPL_OMOTDSTART RPL_UMODEGMSGRPL_TARGNOTIFYRPL_TARGUMODEGERR_KNOCKDISABLEDERR_KNOCKONCHAN ERR_CHANOPENERR_TOOMANYKNOCK RPL_KNOCKDLVR RPL_KNOCK RPL_ETRACERPL_ETRACEFULLERR_TARGCHANGE RPL_ENDOFHELP RPL_HELPTXT RPL_HELPSTARTRPL_ENDOFMODLIST RPL_MODLIST ERR_STARTTLSRPL_WHOISLANGUAGERPL_WHOISSTAFF RPL_LANGUAGERPL_YOURLANGUAGEIS RPL_NETWORKSRPL_TIMEONSERVERISRPL_LUSERSTAFFRPL_CANNOTSETMODESRPL_UNKNOWNMODESRPL_WHOISSECURE RPL_STARTTLSRPL_ENDOF_GENERICRPL_OTHERUMODEISRPL_SERVMODEIS RPL_CHANREDIRRPL_MODECHANGEWARNRPL_TRACEROUTE_STARTRPL_TRACEROUTE_HOP RPL_EODUMP RPL_DUMPRPL RPL_DUMPINGRPL_ENDOFSETTINGS RPL_SETTINGS RPL_ENDOFO RPL_RULES RPL_DCCINFORPL_WHOWASHOSTRPL_ENDOFDCCLIST RPL_DCCLIST RPL_DCCSTATUSRPL_ENDOFISOPER RPL_ISNOTOPER RPL_ISLOCOP RPL_ISOPERRPL_WATCHCLEARRPL_ENDOFWATCHLIST RPL_WATCHLIST RPL_NOWOFF RPL_NOWON RPL_WATCHSTAT RPL_WATCHOFF RPL_LOGOFF RPL_LOGONERR_STATSSLINEERR_USINGSLINEERR_HOSTUNAVAILERR_BADHOSTMASKERR_PFXUNROUTABLE ERR_REMOTEPFXERR_HELPNOTFOUNDERR_WHOLIMEXCEED ERR_WHOSYNTAXERR_LISTSYNTAX ERR_WHOTRUNCERR_MASKTOOWIDE ERR_OPERONLYERR_TOOMANYUSERS ERR_ADMONLY ERR_LONGMASK ERR_NOINVITE ERR_DISABLED ERR_DONTCHEAT ERR_BADEXPIRE ERR_WRONGPONGERR_TOOMANYWATCHERR_SILELISTFULLERR_USERNOTONSERVERR_GHOSTEDCLIENTERR_USERSDONTMATCHERR_UMODEUNKNOWNFLAGERR_CHANOWNPRIVNEEDEDERR_ISOPERLCHANERR_BADLOGVALUE ERR_BADLOGSYSERR_BADLOGTYPE ERR_OWNMODE ERR_NOFEATUREERR_NOSERVICEHOSTERR_NOOPERHOSTERR_VOICENEEDEDERR_TSLESSCHAN ERR_NONONREGERR_BANNEDNICKERR_ISCHANSERVICEERR_CANTKILLSERVERERR_CHANOPRIVSNEEDEDERR_NOPRIVILEGES ERR_THROTTLEERR_BADCHANNAMEERR_BANLISTFULLERR_NEEDREGGEDNICKERR_BADCHANMASKERR_BADCHANNELKEYERR_BANNEDFROMCHANERR_INVITEONLYCHANERR_UNKNOWNMODEERR_CHANNELISFULLERR_LINKCHANNEL ERR_LINKSETERR_ONLYSERVERSCANCHANGEERR_INVALIDUSERNAME ERR_KEYSETERR_YOUWILLBEBANNEDERR_YOUREBANNEDCREEPERR_PASSWDMISMATCHERR_NOPERMFORHOSTERR_ALREADYREGISTEREDERR_NEEDMOREPARAMSERR_NOTFORHALFOPS ERR_NOHIDING ERR_ACCEPTNOTERR_ACCEPTEXISTERR_ACCEPTFULLERR_HOSTILENAME ERR_NICKLOSTERR_IDCOLLISIONERR_NOTREGISTEREDERR_NOTIMPLEMENTEDERR_NONICKCHANGEERR_USERSDISABLEDERR_SUMMONDISABLED ERR_NOLOGINERR_USERONCHANNELERR_NOTONCHANNELERR_USERNOTINCHANNELERR_SERVICESDOWNERR_TARGETTOOFASTERR_NICKTOOFASTERR_UNAVAILRESOURCEERR_NICKCOLLISIONERR_BANNICKCHANGE ERR_NORULESERR_SERVICENAMEINUSEERR_NICKNAMEINUSEERR_ERRONEUSNICKNAMEERR_NONICKNAMEGIVENERR_EVENTNICKCHANGEERR_TOOMANYAWAYERR_NOOPERMOTD ERR_FILEERRORERR_NOADMININFO ERR_NOMOTDERR_UNKNOWNCOMMANDERR_LENGTHTRUNCATEDERR_TOOMANYMATCHESERR_MSGNEEDREGGEDNICKERR_WILDTOPLEVELERR_NOTOPLEVELERR_NOTEXTTOSENDERR_NORECIPIENTERR_INVALIDCAPCMD ERR_NOORIGINERR_TOOMANYTARGETSERR_WASNOSUCHNICKERR_TOOMANYCHANNELSERR_CANNOTSENDTOCHANERR_NOSUCHCHANNELERR_NOSUCHSERVERERR_NOSUCHNICKERR_UNKNOWNERRORRPL_HOSTHIDDEN RPL_NOUSERSRPL_ENDOFUSERS RPL_USERSRPL_USERSSTARTRPL_TIMERPL_RSACHALLENGERPL_NOTOPERANYMORE RPL_MYPORTISRPL_YOURESERVICE RPL_REHASHING RPL_YOUREOPERRPL_WHOISMODES RPL_WHOISHOST RPL_ENDOFMOTD RPL_MOTDSTART RPL_ENDOFINFO RPL_INFOSTARTRPL_MOTDRPL_INFORPL_ENDOFWHOWASRPL_ENDOFBANLIST RPL_BANLISTRPL_ENDOFNAMESRPL_ENDOFLINKS RPL_LINKS RPL_CLOSEEND RPL_CLOSING RPL_KILLDONERPL_WHOWASREAL RPL_NAMREPLY_ RPL_WHOSPCRPL RPL_NAMREPLY RPL_WHOREPLY RPL_VERSIONRPL_ENDOFEXCEPTLISTRPL_EXCEPTLISTRPL_ENDOFINVEXLIST RPL_INVEXLIST RPL_INVITED RPL_SUMMONING RPL_INVITINGRPL_BADCHANPASSRPL_WHOISACTUALLY RPL_WHOISTEXTRPL_LISTSYNTAXRPL_COMMANDSYNTAX RPL_LISTUSAGERPL_TOPICWHOTIME RPL_TOPIC RPL_NOTOPICRPL_WHOISACCOUNTRPL_CREATIONTIMERPL_CHANNEL_URLRPL_CHPASSUNKNOWNRPL_NOCHANPASSRPL_CHANNELMLOCKISRPL_CHANNELMODEIS RPL_LISTENDRPL_LIST RPL_LISTSTARTRPL_WHOISSPECIALRPL_WHOISCHANNELSRPL_ENDOFWHOIS RPL_WHOISIDLERPL_WHOISCHANOP RPL_ENDOFWHORPL_WHOWASUSERRPL_WHOISOPERATORRPL_WHOISSERVER RPL_WHOISUSERRPL_WHOISHELPOPRPL_WHOISHELPERRPL_WHOISSADMIN RPL_NICKTRACERPL_WHOISADMINRPL_NOTIFYACTION RPL_SUSERHOSTRPL_WHOISREGNICK RPL_NOWAWAY RPL_UNAWAYRPL_TEXTRPL_ISON RPL_USERHOSTRPL_AWAYRPL_NONERPL_END_CHANINFO RPL_DATASTR RPL_FEATURERPL_ENDOFJUPELISTRPL_ENDOFACCEPTRPL_ACCEPTLIST RPL_GLIST RPL_VCHANHELP RPL_VCHANLISTRPL_WHOISCERTFPRPL_STATSDELTA RPL_ENDNOTIFY RPL_NOTIFYRPL_ENDOFSILELIST RPL_SILELIST RPL_PRIVSRPL_END_NETSTAT RPL_NETSTATRPL_START_NETSTATRPL_GLOBALUSERSRPL_LOCALUSERS RPL_LOAD2HIRPL_ENDOFTRACE RPL_TRACELOGRPL_ADMINEMAIL RPL_ADMINLOC2 RPL_ADMINLOC1 RPL_ADMINME RPL_LUSERMERPL_LUSERCHANNELSRPL_LUSERUNKNOWN RPL_LUSEROPRPL_LUSERCLIENT RPL_STATSCONNRPL_STATSDEBUGRPL_STATSULINERPL_STATSXLINE RPL_STATSPINGRPL_STATSSLINERPL_STATSHLINERPL_STATSOLINERPL_STATSUPTIMERPL_STATSLLINERPL_STATSIAUTHRPL_STATSVERBOSERPL_SERVLISTEND RPL_SERVLIST RPL_SERVICERPL_ENDOFSERVICESRPL_SERVICEINFORPL_STATSCOUNTRPL_STATSDLINERPL_SQLINE_NICK RPL_UMODEISRPL_STATSPLINERPL_ENDOFSTATSRPL_STATSYLINERPL_STATSQLINERPL_STATSKLINERPL_STATSILINERPL_STATSNLINERPL_STATSCLINERPL_STATSCOMMANDSRPL_STATSLINKINFO RPL_STATSRPL_TRACERECONNECTRPL_TRACECLASSRPL_TRACENEWTYPERPL_TRACESERVICERPL_TRACESERVER RPL_TRACEUSERRPL_TRACEOPERATORRPL_TRACEUNKNOWNRPL_TRACEHANDSHAKERPL_TRACECONNECTING RPL_TRACELINKRPL_REMOTESUPPORTRPL_ATTEMPTINGREROUTERPL_ATTEMPTINGJUNC RPL_SAVENICK RPL_YOURID RPL_MAPENDRPL_MAPRPL_YOURCOOKIE RPL_REDIRRPL_STATMEMTOT RPL_SNOMASK RPL_ISUPPORT RPL_MYINFO RPL_CREATED RPL_YOURHOST RPL_WELCOME replyCodeInfodefaultReplyCodeInforeplyCodeInfoTable$fReadReplyCode$fShowReplyCode$fEqReplyCodeInfo$fOrdReplyCodeInfo$fShowReplyCodeInfo$fReadReplyCodeInfo $fEqReplyType$fOrdReplyType$fReadReplyType$fShowReplyType $fEqReplyCode$fOrdReplyCode IdentifiermkIdidTextidDenote idTextNormidPrefix$fIsStringIdentifier$fHashableIdentifier$fOrdIdentifier$fReadIdentifier$fShowIdentifier$fEqIdentifier RateLimit newRateLimit tickRateLimitUserInfouserNickuserNameuserHostuiNickuiNameuiHostrenderUserInfo parseUserInfo $fEqUserInfo $fOrdUserInfo$fReadUserInfo$fShowUserInfoTagEntry RawIrcMsg_msgTags _msgPrefix _msgCommand _msgParamsmsgTags msgPrefix msgCommand msgParamsparseRawIrcMsg prefixParsersimpleTokenParserrenderRawIrcMsg rawIrcMsgasUtf8 $fEqRawIrcMsg$fReadRawIrcMsg$fShowRawIrcMsg $fEqTagEntry$fReadTagEntry$fShowTagEntryAuthenticatePayload ircPrivmsg ircCprivmsg ircCnoticeircKnock ircNoticeircMode ircMonitorircWhoisircWho ircWhowas ircWallops ircOperwallircNickircPartircJoin ircInviteircTopicircKickircKillircKline ircUnkline ircUndline ircUnxline ircUnresv ircTestline ircTestmask ircMasktrace ircChantrace ircEtrace ircRemoveircQuitircPassircListircPingircPongircIsonircTime ircUserhost ircUseripircUsersircStatsircOperircLinksircAwayircMapircInfoircRules ircVersion ircLusersircMotdircAdminircTraceircUser ircCapReq ircCapEndircCapLsircZncircAuthenticateircAuthenticatesencodePlainAuthenticationencodeExternalAuthentication$fShowAuthenticatePayload ModeTypes _modesLists_modesAlwaysArg _modesSetArg_modesNeverArg_modesPrefixModes modesListsmodesAlwaysArg modesSetArg modesNeverArgmodesPrefixModesdefaultModeTypesdefaultUmodeTypes splitModes unsplitModes$fShowModeTypes MessageTarget TargetUserTargetExisting TargetWindow TargetNetworkCapCmdCapLsCapListCapAckCapNakCapNewCapDelCapMoreCapDoneSourcesrcUsersrcAcctIrcMsg UnknownMsgReplyNickJoinPartQuitKickKillTopicPrivmsgCtcp CtcpNoticeNoticeMode AuthenticateCapPingPongError BatchStartBatchEndAccountChghostWallopsInviteAway msgSource cookIrcMsg msgTargetmsgActor ircMsgText capCmdText nickSplitcomputeMaxMessageLength$fShowMessageTarget $fShowIrcMsg $fShowCapCmd $fReadCapCmd $fEqCapCmd $fOrdCapCmd $fShowCapMore $fReadCapMore $fEqCapMore $fOrdCapMore $fShowSource indexWord8(primitive-0.9.0.0-8PnPU28YnnMJ76K6OX5YivData.Primitive.ByteArrayindexByteArraybytestring-0.11.3.1Data.ByteString.Internal ByteString text-1.2.5.0Data.Text.InternalText.data-array-byte-0.1.0.1-B5cMzW9TZQ0HeLdy4luv5pData.Array.Byte ByteArrayghc-prim GHC.TypesTrue ircFoldCasebase Data.String fromString rateStampviewmaxMiddleParamsrawIrcMsgParser paramsParser buildParamsguarded optionalChar decodeCP1252cp1252 cookCapCmd parseCtcp