Îõ³h&Ód˜      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst u v w x y z { | } ~  €  ‚ ƒ „ … † ‡ˆ‰Š‹ŒŽ‘’“”•–— Safe-Inferred"«simple rate limiter(c) 2012 Eric MertensBSD3jeremy@seereason.comstableportable Safe-Inferredù ircbot"Construct a new rate limit control ircbotExecute this before sending˜ircbot#Loop which manages the limit timers ircbotmax burst lengthircbotdelay (in microseconds)   Safe-Inferred60    Safe-Inferred "5ÁÂÃÄÅÑs !"$'#%&()*+,"$'#%&() !*+, Safe-Inferred"6ùRircbot1get the nickname of the user who sent the messageSircbot'figure out who to reply to for a given ™ÖIf message was sent to a #channel reply to the channel. Otherwise reply to the sender.Tircbot!returns the receiver of a message0if multiple receivers, it returns only the first<@?>=ABCDEHIGFJKLMNOPQRSTLMJKNEHIGFOPCDQAB<@?>=RST Safe-Inferred"Â÷iircbotparse a positive integerjircbotparser that checks for the ! (from the )kircbot6create a bot part by using Parsec to parse the commandThe argument to k is a parser function.,The argument to that parsec function is the target% that the response should be sent to.The parser will receive the I from the E.see dicePart for an example usage.hijklmhijklm Safe-Inferred"*opqopq Safe-Inferred"Wrsrs  Safe-Inferred"‚tutu  Safe-Inferred¬vv  Safe-Inferred"Öwxwx  Safe-Inferred"%&6 {ircbotusername on client system|ircbothostname of client system}ircbot!irc server client is connected to~ircbotclient's real nameyz{|}~yz{|}~  Safe-Inferred Ñ…†…† Safe-Inferred"%&¼‡ircbotBot configuration‰ircbot!optional channel logging functionŠircbot app logging‹ircbotirc server to connectŒircbot3irc port to connect to (usually, 'PortNumber 6667')ircbotirc nickŽircbotcommand prefixircbot irc user infoircbotchannel to join‘ircbot%(burst length, delay in microseconds)šircbot5connect to irc server and send NICK and USER commands“ircbotÒsimpleBot connects to the server and handles messages using the supplied BotPartTs¡the 'Chan Message' for the optional logging function will include all received and sent messages. This means that the bots output will be included in the logs.”ircbotÓsimpleBot' connects to the server and handles messages using the supplied BotPartTs¡the 'Chan Message' for the optional logging function will include all received and sent messages. This means that the bots output will be included in the logs.›ircbotcall œ if . Do nothing for Nothing.žircbotlogging“ircbotBot configurationircbotbot parts (must include pingPart, or equivalent)ircbotŸÆ for all forked handler threads and a function that forces a reconnect” ircbotoptional logging functionircbotapplication loggingircbot;rate limiter settings (burst length, delay in microseconds)ircbotirc server to connectircbot(irc port to connect to (usually, '6667')ircbotirc nickircbotcommand prefixircbot irc user infoircbotbot parts (must include pingPart,  channelsPart, and 'nickUserPart)' ircbotŸÈ for all forked handler threads and an IO action that forces a reconnectyz{|}~‡ˆ‰Š‹ŒŽ‘’“”“”‡ˆ‰Š‹ŒŽ‘’yz{|}~ Safe-Inferred"b ircbotPrefix channel name with # if needed•–•– Safe-InferredÕ—ircbotÈRun bot with user provided initialization function returning bot parts.¡ircbotÈRun bot with user provided initialization function returning bot parts.'Accepts another `optparse-applicative` ¢ for extending built-in one.£ircbotUser provided partsircbotSet of channels to join—— Safe-InferredÿÑ ! ")(&%#$'*+,<@?=>ABCDEHIFGJKLMNOPQRSThijklmy~}|z{‡‘ŽŒ‹Š‰ˆ’“”—¤ !"#$%&'())*++,-./0123456789:;<=>?@ABCDEFGHIJKKLMNOOPQRRSTUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  €  ‚ ƒ „ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž  ‘‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©§ª«¬§­®¯°±²³´µ%ircbot-0.6.6.2-6Tym17gXh9T8TVBv7LJilVNetwork.IRC.Bot.ErrorCodesNetwork.IRC.Bot.LimiterNetwork.IRC.Bot.LogNetwork.IRC.Bot.BotMonadNetwork.IRC.Bot.CommandsNetwork.IRC.Bot.ParsecNetwork.IRC.Bot.Part.ChannelsNetwork.IRC.Bot.Part.DiceNetwork.IRC.Bot.Part.HelloNetwork.IRC.Bot.Part.PingNetwork.IRC.Bot.PosixLoggerNetwork.IRC.Bot.TypesNetwork.IRC.Bot.Part.NickUserNetwork.IRC.Bot.CoreNetwork.IRC.Bot.OptionsNetwork.IRC.Bot.RunNetwork.IRC.BotnoNicknameGivenerroneusNickname nicknameInUse nickCollisionLimiterlimitsIn limitsOut limitsDelaylimitsThreadId newLimiterlimitLoggerLogLevelDebugNormal Important stdoutLogger nullLogger $fEqLogLevel $fOrdLogLevel$fReadLogLevel$fShowLogLevel$fDataLogLevelBotPartT unBotPartTBotEnvmessageoutChanlogFnbotName cmdPrefixBotMonad askBotEnv askMessage askOutChan localMessage sendMessagelogMwhoami runBotPartT mapBotPartT maybeZero$fBotMonadBotPartT$fMonadRWSrwsBotPartT$fMonadReaderrBotPartT$fApplicativeBotPartT$fAlternativeBotPartT$fFunctorBotPartT$fMonadBotPartT$fMonadFixBotPartT$fMonadPlusBotPartT$fMonadTransBotPartT$fMonadIOBotPartT$fMonadWriterwBotPartT$fMonadStatesBotPartT$fMonadErroreBotPartT$fMonadContBotPartTNotice noticePrefixnoticeReceivers noticeMsgPong ToMessage toMessagePrivMsgprefix receiversmsgPingHostNamecmdpingprivMsg toPrivMsg sendCommandaskSenderNickNamereplyTo askReceiver$fToMessagePrivMsg$fToMessagePong$fToMessageNotice $fEqNotice $fReadNotice $fShowNotice$fEqPong $fOrdPong $fReadPong $fShowPong $fDataPong $fEqPrivMsg $fReadPrivMsg $fShowPrivMsg$fEqPing $fOrdPing $fReadPing $fShowPing $fDataPing mapParsecTnat botPrefix parsecPart reportErrorshowErrorMessages$fBotMonadParsecTinitChannelsPart channelsPart joinChanneldicePart diceCommand helloPart helloCommandpingPart posixLoggerfdWritesUserusernamehostname servernamerealnamenullUser $fDataUser$fEqUser $fOrdUser $fReadUser $fShowUser nickUserPartchangeNickUserBotConf channelLoggerloggerhostportnick commandPrefixuserchannelslimits nullBotConf simpleBot simpleBot'execBotOptsParser parseBotConfrunBotWithPartslimiter!irc-0.6.1.1-asVOWDkcp31Sgn2wJ5re5Network.IRC.BaseMessage ircConnectwriteMaybeChanbaseControl.Concurrent.Chan writeChan GHC.MaybeJustircConnectLoop GHC.Conc.SyncThreadIdcoercePrefixesrunBotWithParts'4optparse-applicative-0.18.1.0-H40Ua5VoxKR6dBYdIcQ709Options.Applicative.TypesParser initParts