'M      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLSafeThe O keeps track of rate limit settings as well as the current state of the limit.`Construct a new rate limit with the RFC 2813 specified 2 second penalty and 10 second threshold@Construct a new rate limit with the given penalty and threshold.)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.MNOP penalty  threshold MNOPSafeQCCompatibility indirection for time-1.4.2 and time-1.5 compatibilityQFormat string Input string QQSafe?Case insensitive identifier representing channels and nicknames 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. .:prefix COMMAND param0 param1 param2 .. paramN  d packages a nickname along with the username and hsotname if they are known in the current context. Construct an  from a RReturns the original R of an Returns the case-normalized R of an # which is suitable for comparison.mAttempt to split an IRC protocol message without its trailing newline information into a structured message.SRFC 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!TParse 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!UWParse the list of parameters in a raw message. The RFC allows for up to 15 parameters.VEParse the server-time message prefix: @time=2015-03-04T22:29:04.064ZW-Take the bytes up to the next space delimiterZTake the bytes up to the next space delimiter. If the first character of this token is a :* then take the whole remaining bytestringRender   as nick!username@hostnameSplit up a hostmask into a nickname, username, and hostname. The username and hostname might not be defined but are delimited by a ! and @ respectively.xSerialize a structured IRC protocol message back into its wire format. This command adds the required trailing newline.XBuild concatenate a list of parameters into a single, space- delimited bytestring. Use a colon for the last parameter if it contains a colon or a space.Y^When the first parser succeeds require the second parser to succeed. Otherwise return NothingcCapitalize a string according to RFC 2812 Latin letters are capitalized and {|}~ are mapped to []^&Z STUV[\W]XY^_`   Z  STUV[\W]XY^_`Safe "Construct a MODE command !MODE target *(mode) *(modeparams)#Construct a KICK command@KICK channel nick msg$Construct a REMOVE command@REMOVE channel nick msg%Construct a JOIN command. A join command can support multiple channels separated by commas, and takes an optional channel key. JOIN channel [key]&Construct a PART command. PART channel message'UConstruct a TOPIC command. This is used to lookup the current topic or to change it. TOPIC channel message(Construct a WHOIS command.  WHOIS user)Construct a WHOWAS command.  WHOWAS user*`Construct a NICK command. This is used to specify the initial nickname as well as to change it.  NICK nickname+bConstruct a USER command. This is used in the initial handshake to specify username and realname. USER username 0 * realname,bConstruct a PING command. This is used to respond to the PING command to keep a connection alive.  PONG token-bConstruct a PONG command. This is used to respond to the PING command to keep a connection alive.  PONG token.jConstruct a PASS command. This is used in the initial handshake to specify a password for the connection.  PASS password/Construct a CAP LS command. This is used during the inital connection to request a list of extensions that are supported by the server. It should be followed by CAP REQ and eventually CAP END commands. CAP LS0|Construct a CAP REQ command. This is used to request a subset of the capabilities returned in response to a CAP LS command. CAP REQ :cap0 cap1 .. capN1kConstruct a CAP END command. This terminates the capability negotiation portion of the initial connection. CAP END2_Construct a PRIVMSG command. This send normal chat messages to both users as well as channels. PRIVMSG target message5^Construct a NOTICE command. This send notice chat messages to both users as well as channels. NOTICE target message6"Construct an AUTHENTICATE command. AUTHENTICATE message7Construct a HELP command.  HELP topic8Construct an AWAY command. AWAY away_message9Construct a QUIT command. QUIT quit_message:Construct a LIST command. LIST  channel *(","  channel);Construct a INVITE command. INVITE  nickanme channel<Construct a NAMES command. NAMES [  channel *(","  channel)=Construct an OPER command. OPER  name password>Construct a WHO command. WHO mask?Construct a KNOCK command. KNOCK channel@Construct an ACCEPT command. ACCEPT nickAConstruct an TIME command. TIME [ server]>BConstruct an ADMIN command. ADMIN [ server]>CConstruct a STATS command. STATS  letter [ server]>#a"target modes and params #channel nick msg $channel nick msg %&channel message 'channel topic (user )user * nickname + username  realname ,token -token . password /012target message 3target command  parameters 4target command  parameters 5target message 6message 7topic 8message 9message : channels ; nickname  channel < channels =name  password >mask ?channel @nick, -nick, * Aserver Bserver Ctarget ""#$%&'()*+,-./0123456789:;<=>?@ABC".*+="9%&'<:;#2345()>-,/01687$?@ABC#a"#$%&'()*+,-./0123456789:;<=>?@ABCNoneE401F 402 serverG403H404I405J406K407L409M411N412O 421 commandP422Q 423 serverR431S 432 badnickT433 nickU435V437W438X440Y441 nickZ 442 channel[443 nick\451]456^457_458` 461 commanda462b463c464d465e470 dstchannelf 471 channelg472 modeh473i474j475k477l478 modem479 namen480o481p482q483r484 nicks486t489u491v494w501 modex502y 524 topicz713{713|714}716~723 priv742 mode setting provides a typed view of the various IRC protocol messages. There are more messages defined for IRC (and many of those overlap) than are in common use. Please report a bug if a common message is missing from this type.@001 "Welcome to the Internet Relay Network <nick>!<user>@<host>"6002 "Your host is <servername>, running version <ver>"$003 "This server was created <date>"004 servername version *(modes)005 *(KEY=VALUE) 008 snomask 042 unique-id 211 arguments 212 arguments 213 arguments 214 arguments 215 arguments 216 arguments 217 arguments 218 arguments219 mode 220 arguments221 modes *(params)225240241242243244245246247248249250 connectionK251 "There are <integer> users and <integer> services on <integer> servers"252 number-of-ops253 number-of-unknown254 number-of-channels4255 "I have <integer> clients and <integer> servers" 256 server257 admin-info-1258 admin-info-2259 admin-email 263 command265 [local] [max] txt266 [global] [max] txt270 privstring 276 nick txt281282301 nick away_message302 *(user hosts) 303 *(nick)(inspircd) 304 text305306311 nick user host realname312 nick server serverinfo313 nick "is an IRC operator"314 nick user host realname 315 channel317 nick idle signon318 nick319 nick channels321322 channel usercount topic323324 channel modes *(params) 331 channel332 channel topic328 channel url329 channel timestamp330 nick account333 channel nickname timestamp341 nick channel346 channel mask who timestamp 347 channel348 channel mask who timestamp 349 channel351 version server comments+352 channel user host server nick flags txt353 channeltype channel names364 mask server info365 mask 366 channel#367 channel banned banner timestamp 368 channel369 nick372 line-of-motd3753761391 server "<string showing server's local time>"371 info374 378 nick host379 nick modes *(args)381 text 396 hostname671 nick704 topic text705 topic text706 topic text 710 channel 711 channel717 nick 718 nick mask#728 channel mode mask who timestamp729 channel mode 900 account901902903904905906907908 comma-sep-mechsbcdeDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~fgDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~bcdeD;EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~fgNone   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None*Event types and associated fields used by .ctcp command and argumentsctcp command and argumentsr represents a high-level event to be communicated out to the library user when something changes on a connection.666None2IOTa is the type of user-level metadata tracked for the users visible on the current IRC connection.IMask entries are used to represent an entry in a ban list for a channel. represents the current state of a channel as seen on the connection. It includes all user lists, modes, and other metadata about a channel.5Settings that describe how to interpret channel modesz is the state of an IRC connection. It maintains channel membership, user and channel modes, and other connection state." value with everything unspecified"The channel modes used by Freenode(The default UMODE as defined by FreenodehDefault value for  with everything unspecified.0This represents the metadata of an unknown user.?mPrimary state machine step function. Call this function with a timestamp and a server message to update the L state. If additional messages are required they will be requested via the 5 type.iZEvent handler when receiving a new privmsg. The message will be passed along as an event.jGRecord the new topic as set by the given user and emit a change event.k.Mark all the given nicks as active (not-away).A\Split up a mode change command and arguments into individual changes given a configuration.l Update an  when a user changes nicknames.m Update the " when a user parts from a channel.n Update an & when a user is kicked from a channel.o Update an  with the quitting of a user.pCompute the nickname and channel modes from an entry in a NAMES reply. The leading channel prefixes are translated into the appropriate modes.B Execute the 5G value using a given operation for sending and recieving IRC messages.qAdd a message to the client state for users and channels. The user or channel record should be added if it does not already exist.C[Predicate to determine if a given identifier is the primary nick for the given connection.DPredicate for identifiers to identify which represent channel names. Channel prefixes are configurable, but the most common is #E?Predicate for identifiers to identify which represent nicknamesrstuhv !"#$%&'()*+,-./012345w6789:;<=>?x  (key,value)yz{|nicks }nick ~nick  user@host channel members topic  nickname  away message channel error isender message target message j changed by channel  topic text  raw, spaces delimited caps list  username  password Channel modes mode parameters k active nicks who target modes changed arguments  (+/-,mode,argument) (+/-,mode,argument)changer channel  settings  timestamp changer +/- mode  argument @Amode interpretation modes arguments lold user infomation new nickname muser information channel part reason n kicker  channel  kicked  kick reason o user info  quit reason  who joined  account name  channel who message p  (mode,prefix)names entry (nickname, modes) Bqtarget CDEFGnick mode channel Hchannel mode n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHn'$% ("&#!,.+)*-;:><=2430/1B67895?DECFA@GHgrstuhv !"#$%&'()*+,-./012345w6789:;<=>?xyz{|}~ijk@AlmnopBqCDEFGH      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM NOPQRSTUVWXYZ[ \]^_`abcdefghijklmnopqrstuvw6xyz{|}~%irc-core-1.1.5-4Qdr8kNCWMEHpgig381hZZ Irc.RateLimit Irc.FormatIrc.CmdIrc.CoreIrc.Core.Prisms Irc.Message Irc.ModelIrc.Time RateLimitnewRateLimitDefault newRateLimit tickRateLimit Identifier RawIrcMsgmsgTime msgPrefix msgCommand msgParamsUserInfouserNickuserNameuserHostmkIdidBytesidDenoteparseRawIrcMsgrenderUserInfo parseUserInforenderRawIrcMsg ircFoldCaseasUtf8$fIsStringIdentifier$fOrdIdentifier$fEqIdentifier$fReadIdentifier$fShowIdentifier$fReadUserInfo$fShowUserInfo$fReadRawIrcMsg$fShowRawIrcMsgmodeCmdkickCmd removeCmdjoinCmdpartCmdtopicCmdwhoisCmd whowasCmdnickCmduserCmdpingCmdpongCmdpassCmdcapLsCmd capReqCmd capEndCmd privMsgCmdctcpRequestCmdctcpResponseCmd noticeCmdauthenticateCmdhelpCmdawayCmdquitCmdlistCmd inviteCmdnamesCmdoperCmdwhoCmdknockCmd acceptCmdtimeCmdadminCmdstatsCmdIrcError ErrNoSuchNickErrNoSuchServerErrNoSuchChannelErrCannotSendToChanErrTooManyChannelsErrWasNoSuchNickErrTooManyTargets ErrNoOriginErrNoRecipientErrNoTextToSendErrUnknownCommand ErrNoMotdErrNoAdminInfoErrNoNicknameGivenErrErroneousNicknameErrNicknameInUseErrBanNickChangeErrUnavailResourceErrNickTooFastErrServicesDownErrUserNotInChannelErrNotOnChannelErrUserOnChannelErrNotRegistered ErrAcceptFullErrAcceptExist ErrAcceptNotErrNeedMoreParamsErrAlreadyRegisteredErrNoPermForHostErrPasswordMismatchErrYoureBannedCreepErrLinkChannelErrChannelFullErrUnknownModeErrInviteOnlyChanErrBannedFromChanErrBadChannelKeyErrNeedReggedNickErrBanListFullErrBadChanName ErrThrottleErrNoPrivilegesErrChanOpPrivsNeededErrCantKillServerErrIsChanService ErrNoNonRegErrVoiceNeeded ErrNoOperHost ErrOwnModeErrUnknownUmodeFlagErrUsersDontMatchErrHelpNotFoundErrTooManyKnocks ErrChanOpenErrKnockOnChan ErrTargUmodeG ErrNoPrivsErrMlockRestricted MsgFromServer RplWelcome RplYourHost RplCreated RplMyInfo RplISupport RplSnoMask RplYourIdRplStatsLinkInfoRplStatsCommands RplStatsCLine RplStatsNLine RplStatsILine RplStatsKLine RplStatsQLine RplStatsYLine RplEndOfStats RplStatsPLine RplUmodeIs RplStatsDLine RplStatsVLine RplStatsLLineRplStatsUptime RplStatsOLine RplStatsHLine RplStatsSLine RplStatsPing RplStatsXLine RplStatsULine RplStatsDebug RplStatsConnRplLuserClient RplLuserOpRplLuserUnknownRplLuserChannels RplLuserMeRplLuserAdminMeRplLuserAdminLoc1RplLuserAdminLoc2RplLuserAdminEmailRplLoadTooHigh RplLocalUsersRplGlobalUsersRplPrivsRplWhoisCertFp RplAcceptListRplEndOfAcceptRplAway RplUserHostRplIsOn RplSyntax RplUnAway RplNowAway RplWhoisUserRplWhoisServerRplWhoisOperator RplWhoWasUser RplEndOfWho RplWhoisIdle RplEndOfWhoisRplWhoisChannels RplListStartRplList RplListEndRplChannelModeIs RplNoTopicSetRplTopic RplChannelUrlRplCreationTimeRplWhoisAccountRplTopicWhoTime RplInviting RplInviteListRplEndOfInviteListRplExceptionListRplEndOfExceptionList RplVersion RplWhoReply RplNameReplyRplLinks RplEndOfLinks RplEndOfNames RplBanListRplEndOfBanListRplEndOfWhoWasRplMotd RplMotdStart RplEndOfMotdRplTimeRplInfo RplEndOfInfo RplWhoisHost RplWhoisModes RplYoureOper RplHostHiddenErrRplWhoisSecure RplHelpStartRplHelp RplEndOfHelpRplKnockRplKnockDelivered RplTargNotify RplUmodeGMsg RplQuietListRplEndOfQuietList RplLoggedIn RplLoggedOut RplNickLockedRplSaslSuccess RplSaslFailRplSaslTooLongRplSaslAbortedRplSaslAlready RplSaslMechsAwayPingPongNoticeTopicPrivMsgExtJoinJoinNickModeQuitCapKickPartInviteError AuthenticateAccountircMsgToServerMsg$fReadIrcError$fShowIrcError$fReadChannelType$fShowChannelType$fReadMsgFromServer$fShowMsgFromServer _RplWelcome _RplYourHost _RplCreated _RplMyInfo _RplISupport _RplSnoMask _RplYourId_RplStatsLinkInfo_RplStatsCommands_RplStatsCLine_RplStatsNLine_RplStatsILine_RplStatsKLine_RplStatsQLine_RplStatsYLine_RplEndOfStats_RplStatsPLine _RplUmodeIs_RplStatsDLine_RplStatsVLine_RplStatsLLine_RplStatsUptime_RplStatsOLine_RplStatsHLine_RplStatsSLine _RplStatsPing_RplStatsXLine_RplStatsULine_RplStatsDebug _RplStatsConn_RplLuserClient _RplLuserOp_RplLuserUnknown_RplLuserChannels _RplLuserMe_RplLuserAdminMe_RplLuserAdminLoc1_RplLuserAdminLoc2_RplLuserAdminEmail_RplLoadTooHigh_RplLocalUsers_RplGlobalUsers _RplPrivs_RplWhoisCertFp_RplAcceptList_RplEndOfAccept_RplAway _RplUserHost_RplIsOn _RplSyntax _RplUnAway _RplNowAway _RplWhoisUser_RplWhoisServer_RplWhoisOperator_RplWhoWasUser _RplEndOfWho _RplWhoisIdle_RplEndOfWhois_RplWhoisChannels _RplListStart_RplList _RplListEnd_RplChannelModeIs_RplNoTopicSet _RplTopic_RplChannelUrl_RplCreationTime_RplWhoisAccount_RplTopicWhoTime _RplInviting_RplInviteList_RplEndOfInviteList_RplExceptionList_RplEndOfExceptionList _RplVersion _RplWhoReply _RplNameReply _RplLinks_RplEndOfLinks_RplEndOfNames _RplBanList_RplEndOfBanList_RplEndOfWhoWas_RplMotd _RplMotdStart _RplEndOfMotd_RplTime_RplInfo _RplEndOfInfo _RplWhoisHost_RplWhoisModes _RplYoureOper_RplHostHidden_Err_RplWhoisSecure _RplHelpStart_RplHelp _RplEndOfHelp _RplKnock_RplKnockDelivered_RplTargNotify _RplUmodeGMsg _RplQuietList_RplEndOfQuietList _RplLoggedIn _RplLoggedOut_RplNickLocked_RplSaslSuccess _RplSaslFail_RplSaslTooLong_RplSaslAborted_RplSaslAlready _RplSaslMechs_Away_Ping_Pong_Notice_Topic_PrivMsg_ExtJoin_Join_Nick_Mode_Quit_Cap_Kick_Part_Invite_Error _Authenticate_AccountIrcMessageType PrivMsgType NoticeMsgType ActionMsgType AwayMsgType JoinMsgType KickMsgType PartMsgType QuitMsgType NickMsgType TopicMsgType ErrorMsgType ErrMsgType ModeMsgType InviteMsgType KnockMsgTypeCallerIdMsgTypeCallerIdDeliveredMsgTypeCtcpReqMsgTypeCtcpRspMsgType IrcMessage _mesgType _mesgSender _mesgStamp_mesgMe _mesgModes _mesgStatusdefaultIrcMessage$fReadIrcMessageType$fShowIrcMessageType$fReadIrcMessage$fShowIrcMessagemesgMe mesgModes mesgSender mesgStamp mesgStatusmesgType _PrivMsgType_NoticeMsgType_ActionMsgType _AwayMsgType _JoinMsgType _KickMsgType _PartMsgType _QuitMsgType _NickMsgType _TopicMsgType _ErrorMsgType _ErrMsgType _ModeMsgType_InviteMsgType _KnockMsgType_CallerIdMsgType_CallerIdDeliveredMsgType_CtcpReqMsgType_CtcpRspMsgTypeIrcUser_usrAway _usrAccount_usrHost IrcMaskEntry_maskEntryMask _maskEntryWho_maskEntryStamp IrcChannel _chanTopic _chanUsers _chanModes _chanCreation_chanMaskLists_chanUrl ModeTypes _modesLists_modesAlwaysArg _modesSetArg_modesNeverArg_modesPrefixModesPhaseRegistrationPhase ActivePhase SaslPhase PingStatusPingTimePingSentNoPing IrcConnection _connNick _connChannels_connId_connChanTypes_connStatusMsg _connKnock _connNickLen _connExcepts _connInvex _connUsers_connChanModeTypes_connUserModeTypes _connModes _connTopicLen _connMyInfo _connSasl _connUmode _connSnoMask _connPhase _connPingTimedefaultIrcConnectiondefaultChanModeTypesdefaultUmodeTypesdefaultIrcUser$fReadPingStatus$fShowPingStatus $fReadPhase $fShowPhase $fEqPhase$fReadModeTypes$fShowModeTypes$fReadIrcMaskEntry$fShowIrcMaskEntry$fReadIrcChannel$fShowIrcChannel $fReadIrcUser $fShowIrcUser$fReadIrcConnection$fShowIrcConnection $fReadFuzzy $fShowFuzzyconnChanModeTypes connChannels connExceptsconnId connInvex connKnock connModes connMyInfoconnNick connNickLen connPhase connPingTimeconnSasl connSnoMask connStatusMsg connTopicLen connUmodeconnUserModeTypes connUsers chanCreation chanMaskLists chanModes chanTopicchanUrl chanUsers usrAccountusrAwayusrHost maskEntryMaskmaskEntryStamp maskEntryWhoLogicLogicOpExpectEmitRecordmodesAlwaysArg modesLists modesNeverArgmodesPrefixModes modesSetArg advanceModel unsplitModes splitModesrunLogicisMyNick isChannelName isNickNamesplitStatusMsgnickHasModeInChannelchannelHasMode$fFunctorLogicOp$fFunctorLogic$fApplicativeLogic $fMonadLogic rateStamp rateThreshold ratePenalty myParseTimebytestring-0.10.8.1Data.ByteString.Internal ByteStringmaxMiddleParamsrawIrcMsgParser paramsParser timeParsersimpleTokenParser buildParamsguarded parseIrcTime prefixParser renderPrefixcasemap decodeCP1252cp1252 outgoingMsg ChannelType SecretChannelPrivateChannel PublicChannel asTimeStampasNumberdefaultChannel doPrivMsgdoTopicdoIsOndoNickdoPartdoKickdoQuitsplitNamesReplyName recordMessageFuzzyKnownUnknownNone connChanTypes doISupportsupportupdateChanModesupdateChanPrefix doAcceptListdoCallerIdDeliver doCallerIddoList doAwayReplydoChannelErrorparseCtcpCommanddoCapLsdoCapAckencodePlainAuthenticationdoChannelModeIs doServerError doModeChangedoUserModeChangesdoChannelModeChangesinstallModeChange doMaskListupdateUserRecord doWhoReply doJoinChannel learnUserInfodoNotifyChanneldoServerMessage doNameReplygetStamp recordFor getMessage sendMessage