Îõ³h$ð˜      !"#$%&'()*+,-./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 ircbotmax burst lengthircbotdelay (in microseconds)   Safe-Inferred3ÿ   None  2>?ÀÁÂÎ7 !"$'#%&()*+,"$'#%&() !*+,None 3´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<=@?>ABCDEFHIGJKLMNOPQRSTLMJKNEFHIGOPCDQAB<=@?>RSTNone ?¨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.hijklmhijklmNone ÒopqopqNone örsrs None tutu None9vv None Ywxwx None #$3 {ircbotusername on client system|ircbothostname of client system}ircbot!irc server client is connected to~ircbotclient's real nameyz{|}~yz{|}~ None B…†…†None #$Š ‡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)“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.“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{|}~None î•–•–Nonej—ircbotÈRun bot with user provided initialization function returning bot parts.——None‹Ñ ! ")(&%#$'*+,<=@>?ABCDEFHGIJKLMNOPQRSThijklmyz~}{|‡ˆ‘ŽŒ‹Š‰’“”—š !"#$%&'())*++,-./0123456789:;<=>?@ABCDEFGHIJKKLMNOOPQRRSTUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  €  ‚ ƒ „ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž  ‘‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§%ircbot-0.6.6.1-KRjwiBwYzLL4KbQSobbPWhNetwork.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 parseBotConfrunBotWithParts"irc-0.6.1.0-JowqUH6pAevFTTWdJbJVBENetwork.IRC.BaseMessagebase GHC.Conc.SyncThreadId