v0F      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ K L M N O P Q R S T U V W X Y Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""#$$$$$$$$$%%%%%%%%%%%%%&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ' ' ' '''''(((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w)x*y*z+{,|-}.~/0112333333333333333333333333345677899::::::::::::::::::::::::::::::A;*Dynamically generated configuration moduleSafe3_CTransitive dependencies for this package computed at configure-timepackage name, version numberBinding to ecdsatool(c) Eric Mertens, 2016ISCemertens@gmail.comSafe;RIdentifier for SASL ECDSA challenge response authentication using curve NIST256P. ECDSA-NIST256P-CHALLENGE;Encode a username as specified in this authentication mode.5Compute the response for a given challenge using the  ecdsatool( executable which must be available in PATH.username base-64 encoded username !private key file !challenge string !error message or response string Marshaling support for C API(c) Eric Mertens, 2016ISCemertens@gmail.comNone"#S struct glirc_string struct glirc_command struct glirc_message struct glirc_messagearray array lengtharrayarray array length struct glirc_extension;Optional startup callbackOptional shutdown callback"Optional message received callbackOptional message send callback Optional client command callback Null-terminated name!extension version"extension version#*Type of dynamic function pointer wrappers. Ktypedef void process_chat(void *glirc, void *S, const struct glirc_chat *);$ Qtypedef void process_command(void *glirc, void *S, const struct glirc_command *);% `typedef enum process_result process_message(void *glirc, void *S, const struct glirc_message *);& (typedef void stop(void *glirc, void *S);' 3typedef void *start(void *glirc, const char *path);*LTag for describing the kind of message to display in the client as used in  glirc_print. enum message_code;2IResult used to determine what to do after processing a message with the % callback. enum process_result;5Like  except it doesn't write to NULL67Marshal a text as a malloced null-terminated CStringLen78Marshal a text as a temporary null-terminated CStringLenapi token extension state chat info $api token extension state command %api token extention state message to send &api token extension state 'api token path to extension initialized extension state 5  !"#$%&'()*+,-./012345675 !"'&%$  #0/.-,*+12()34765   !"()*+ Dynamically loaded extension API(c) Eric Mertens, 2016ISCemertens@gmail.comNone"#KQVw.Continuation-passing style bracked IO actions.?Information about a loaded extension including the handle to the loaded shared object, and state value returned by the startup callback, and the loaded extension record.A$Struct of callback function pointersB&Handle of dynamically linked extensionC'State value generated by start callbackG3The symbol that is loaded from an extension object."Extensions are expected to export: "struct galua_extension extension; HLoad the extension from the given path and call the start callback. The result of the start callback is saved to be passed to any subsequent calls into the extension.IWCall the stop callback of the extension if it is defined and unload the shared object.JCall all of the process message callbacks in the list of extensions. This operation marshals the IRC message once and shares that across all of the callbacks.Returns < to pass message to client. Returns 'False to drop message.KCall all of the process chat callbacks in the list of extensions. This operation marshals the IRC message once and shares that across all of the callbacks.Returns < to pass message to client. Returns 'False to drop message.LBNotify an extension of a client command with the given parameters. Marshal a  into a  ; which will be valid for the remainder of the computation.Return the bracket IO action.IWrap up a bracketing IO operation where the continuation takes 1 argumentIWrap up a bracketing IO operation where the continuation takes 2 argumentHpath to extension Jclientstate stable pointer network current message all active extensions should pass message Kclientstate stable pointer network target (channel or user) message body all active extensions should pass message Lclient state stableptr command extension to command  network  message network target message command ?@ABCDEFGHIJKL?@ABCDEFGHIJLK?@ABCDEF3Argument specifications used within client commands(c) Eric Mertens, 2017ISCemertens@gmail.comSafe&'Fz^required names optional names QTRSUVWXYZ[\]^X\YZ^][UVWQRSTQRSTUVW-Interpret argument specifications as a parser(c) Eric Mertens, 2017ISCemertens@gmail.comSafe&'|__ Implementation of slash commands(c) Eric Mertens, 2016ISCemertens@gmail.comNone, ` Settings for /exec command.RWhen no network or channel are specified the output is sent to the client window.YWhen only a network is specified the output is sent as raw IRC commands to that network.mWhen only a channel is specified the output is sent as messages on the current network to the given channel.uWhen the network and channel are specified the output is sent as messages to the given channel on the given network.boutput networkcoutput channeldcommand filenamee stdin sourcefcommand argumentsDefault values for /exec to be overridden by flags.kParse the arguments to /exec> looking for various flags and the command and its arguments.lCExecute the requested command synchronously and return the output.Power words is similar to ? except that when it encounters a word formatted as a Haskell B literal it parses it as such. Only space is used as a delimiter.kexec arguments error or parsed command lexec configuration error lines or output lines `abcdefijkl `abcdefjikl`abcdef9Parser and evaluator for string interpolation in commands(c) Eric Mertens, 2016ISCemertens@gmail.comSafe&'QVs%Parsed chunk of an expandable commandt regular textuinline variable $x or ${x y}vinline variable $1 or ${1}w bracketed variable with default ${x|lit}x2Specification used when unspecified, no arguments.zParse a / searching for the expansions as specified in s. $$ is used to escape a single $.{Attempt to expand all of the elements in the given list using the two expansion functions. If the expansion of any chunk fails the whole expansion fails.{variable resolution argument index resolution chunks concatenated, expanded chunks mnopqrstuvwxyz{stuvwz{opqrmnyxmnopqrstuvwTrie for recognizing commands(c) Dan Doel, 2016ISCemertens@gmail.comSafe3%Possible results of recognizing text..text matched exactly, yielding the given value8text would be recognized if joined to the given suffixes%text could not possibly be recognized A map from  values to au values that is capable of yielding more detailed information when looking up keys that are not actually in the map.TMatch common prefixes of two strings in a more convenient form than available from <=*Attempt to recognize a string, yielding a  result.Create a singleton  associating the given  and value. Union two  RecognizersR. The stored values in the result are biased to the left if there is key overlap.Union an arbitrary number of  Recognizers as with . Create a _ from an association list. If a key appears twice, the earliest associated value will be used.Add a key-value pair to a >. This will override the value already present if one exists.1Compute all strings that will be recognized by a .Auxiliary function for .   *Client configuration format and operations(c) Eric Mertens, 2016ISCemertens@gmail.comNone/AParse a text attribute. This value should be a sections with the fg and/or bg attributes. Otherwise it should be a color entry that will be used for the foreground color. An empty sections value will result in #Parse a color. Support formats are:Number between 0-255 Name of colorRGB values of color as a list4Match integers between 0 and 255 as Terminal colors.kConfiguration section that matches 3 integers in the range 0-255 representing red, green, and blue values. Configuration schema for macros(c) Eric Mertens, 2017ISCemertens@gmail.comNone/6 Programmable keyboard actions(c) Eric Mertens, 2016ISCemertens@gmail.comNoneQVvCLookup table for keyboard events to actions. Use with keyToAction./Actions that can be invoked using the keyboard./Names and default key bindings for each action.bNote that Jump, Insert and Ignored are excluded. These will be computed on demand by keyToAction.%Render action as human-readable text.CLookup the action to perform in response to a particular key event.&Bind a keypress event to a new action.(Unbind the action associated with a key.Default key bindingsactions jump modifier window names actual modifier key action  modifiers  key  action  actions  modifiers  key  actions 22( -Human-readable versions of connection failure(c) Eric Mertens, 2016ISCemertens@gmail.comNone{BCompute the message message text to be used for a connection errornetwork error client lines network error client lines  'Hooks into the operation of the client.(c) Dan Doel, 2016ISCdan.doel@gmail.comNoneIdentifying name for the hook0Whether the remapping should affect client state"(Partial) message remapping actionThe possible results of a 2 action. A hook can decline to handle a message (), filter out a message (9), or change a message into an arbitrary other message ().$Apply the given message hooks to an A. The hooks are tried in order until one handles the message. A 9 result means the message was filtered out by a hook. A  result contains the actual  to be processed. %Hook to remap znc buffextras messages(c) Dan Doel, 2016ISCdan.doel@gmail.comNoneMap ZNC's buffextras messages to native client messages. Set debugging to pass through buffextras messages that the hook doesn't understand.enable debugging enable debugging Available hooks(c) Dan Doel, 2016ISCdan.doel@gmail.comNone~ All the available message hooks.Packed vty Image type(c) Eric Mertens, 2016ISCemertens@gmail.comNoneۭPacked, strict version of & used for long-term storage of images."Width in terms of terminal columns image width *Parser for mIRC's text formatting encoding(c) Eric Mertens, 2016ISCemertens@gmail.comNonepEParse mIRC encoded format characters and hide the control characters.Parse mIRC encoded format characters and render the control characters explicitly. This view is useful when inputting control characters to make it clear where they are in the text."Safely render a control character. Render a  with default attributes and replacing all of the control characters with reverse-video letters corresponding to caret notation.Chat message view(c) Eric Mertens, 2016ISCemertens@gmail.comNoneoTrailing space with default attributes deals with bug in VTY where the formatting will continue past the end of chat messages. This adds an extra space if a line doesn't end on the terminal edge.CThis version of line wrap wraps without regard for word boundaries.XList of image widths suitable for breaking the image on that correspond to word breaks.%Drop the leading spaces from an imageterminal width unwrapped image wrapped image terminal width unwrapped image wrapped image terminal width prefix image unwrapped image wrapped image first line length image splits first line length image splits 'Palette of colors used to render the UI(c) Eric Mertens, 2016ISCemertens@gmail.comNone .Color palette used for rendering the client UIhighlighting nicknamesown nickname(s)own nickname(s) in mentionsmessage timestampscoalesced metadatasigils (e.g. @+)information labels ping latency window nameerror messagestextbox markerswindow name with activitywindow name with mention known command%known command with complete argumentsprefix of known commandunknown commandcommand argument placeholderDivider between split windows$Divider between new and old messagesBDefault UI colors that look nice in my dark solarized color schemeSDefault nick highlighting colors that look nice in my dark solarized color scheme.TList of palette entry names and lenses for accessing that component of the palette.,     ,     6Interpretation of argument specification as a renderer(c) Eric Mertens, 2017ISCemertens@gmail.comNone&';palette environment render placeholders specification user input None!4Compile a list of masks down to a single, reuseable  % value suitable for being used with ".7Masks can match zero-to-many arbitrary characters with *.-Masks can match one arbitrary character with ?.Literal * ? and |$ can be matched with a preceding @@.ZMissing host or username components of a mask will automatically be treated as wildcards."Determine if a given   matches a given cParse a mask into the nick, user, and hostname components while replacing omitted components with "*".LTranslate from the languge of masks to the language of regular expressions.Masks support the * (many) and ?! (one) wildcards. Wildcards and *@ can be escaped by preceding them with a G@. All other uses of @@ are treated as matching the literal backslash.Greturns True iff the charactr is a regular expression meta character: ^$\.|*?+()[]{}!masks  !" "! Messages to be added to buffers(c) Eric Mertens, 2016ISCemertens@gmail.comNone;7Compute a searchable text representation of the message#$%&'()*+,-./0123456789:;<'()*+98:#$%&,-./01234567<;#$%&'()*+/01234567IRC channel session state(c) Eric Mertens, 2016ISCemertens@gmail.comNone G5Dynamic information about the state of an IRC channelI topic textJauthor and timestamp for topicK channel URLLuser list and sigilsMchannel settings and parametersNmode, mask, setter, set timeOcreation time of channelPdelayed op messages`Construct an empty GaAdd a user to the user listb Remove a user from the user listcRename a user in the user listdSet the channel topic#?@ABCDEFGHIJKLMNOPTUVWXYZ[\]^_`abcd#GHIJKLMNOPXYZ[VUTW?@AB^_CDEF\]`dabc?@ABCDEFG HIJKLMNOP9Types for representing the current window being displayed(c) Eric Mertens, 2016ISCemertens@gmail.comNone+OeCurrently focused windowf No networkgNetworkhNetwork Channel/NickkFilter argument for ul no filtermonly network windowsnonly channel windowsoonly user windowsp Subfocus viewq Show messagesrShow channel metadatasShow channel user listt%Show channel mask list for given modeuShow client windowsvShow current palettewShow all mentionsxShow all digraphsyShow key bindingsz&Show help window with optional command{Show GHC RTS statistics|Show ignored masks4Return the network associated with the current focusUnfocused first, followed by focuses sorted by network. Within the same network the network focus comes first and then the channels are ordered by channel identifiernetwork efghklmnopqrstuvwxyz{|}~efghpqrstuvwxyz{|klmno~}efghklmnop qrstuvwxyz{|2Types and operations for managing message buffers.(c) Eric Mertens, 2016ISCemertens@gmail.comNone>?B{;Flag for the important of a message being added to a windowDon't update unread countIncrement unread count-Increment unread count and set important flagA J tracks all of the messages and metadata for a particular message buffer.!Messages to display, newest first1Location of line drawn to indicate newer messages'Messages added since buffer was visibleMessages in buffer&Indicates an important event is unreadHide metadata messagesA single message to be displayed in a window. The normal message line consists of the image prefix and the image. This allows line wrapping to be applied separately to the image and prefix so that wrapped messages can fall to the right side of the prefix. Summary valueNormal rendered image prefixNormal rendered imageDetailed rendered imageImportance of messageA window with no messages~Adds a given line to a window as the newest message. Window's unread count will be updated according to the given importance.?Update the window clearing the unread count and important flag.8Update the window when it first becomes active. If only boringE messages have been added since last time the marker will be hidden.iUpdate the window when it becomes inactive. This resets the activity marker to the bottom of the window.**3View current palette and to see all terminal colors(c) Eric Mertens, 2016ISCemertens@gmail.comNoneHaGenerate lines used for /palettet. These lines show all the colors used in the current palette as well as the colors available for use in palettes.>/Template Haskell quasi-quoter for digraph table(c) Eric Mertens, 2017ISCemertens@gmail.comSafeJ?Character mnemonics(c) Eric Mertens, 2016ISCemertens@gmail.comSafePD+States for the digraph lookup state machine!ready to match two-character name)first character matched, ready for second(both characters matched, return the nextskip the next two charactersskip the next character[Find the entry in the digraph table give a two-character key and return the matched value.$Multiline text container with cursor(c) Eric Mertens, 2016ISCemertens@gmail.comNonecL0Zipper-ish view of the multi-line content of an EditBox . Lines  the  are stored in reverse order.Default  value Single line .!Shifts the first line off of the =, yielding the text of the line and the rest of the content.lWhen at beginning of line, jump to beginning of previous line. Otherwise jump to beginning of current line.VWhen at end of line, jump to end of next line. Otherwise jump to end of current line.0Move the cursor left, across lines if necessary.1Move the cursor right, across lines if necessary.3Move the cursor left to the previous word boundary.0Move the cursor right to the next word boundary.'Delete the character before the cursor.,Delete the character after/under the cursor./Insert character at cursor, cursor is advanced.Smarter version of  that removes spurious newlines.OInsert string at cursor, cursor is advanced to the end of the inserted string.)Advance to the beginning of the next line'Retreat to the end of the previous linemUse the two characters preceeding the cursor as a digraph and replace them with the corresponding character.  Console-mode text box(c) Eric Mertens, 2016ISCemertens@gmail.comNoneu Default  value DSets the given string to the yank buffer unless the string is empty.Indicate that the contents of the text box were successfully used by the program. This clears the first line of the contents and updates the history.AUpdate the editbox to reflect the earlier element in the history.?Update the editbox to reflect the later element in the history..Jump the cursor to the beginning of the input.(Jump the cursor to the end of the input.LDelete all text from the cursor to the end and store it in the yank buffer.RDelete all text from the cursor to the beginning and store it in the yank buffer.%Insert the yank buffer at the cursor.KKill the content from the cursor back to the previous word boundary. When yank( is set the yank buffer will be updated.JKill the content from the curser forward to the next word boundary. When yank' is set the yank buffer will be updated8Insert a character at the cursor and advance the cursor.yank yank ))  Tab-completion logic(c) Eric Mertens, 2016ISCemertens@gmail.comNonef 'Class for types that are isomorphic to > and which can support a total order and a prefix predicate. @A ( x) == x  (@A x) == x @B x y ==> x  y DCheck if the first argument is a lexicographic prefix of the second. Convert to a .!Word completion prefix and suffix3Word completion without adding any prefix or suffix>Word completion adding a ": " suffix at the beginning of lines+Word completion using a "@" prefix intended&Perform word completion on a text box.The leading update operation is applied to the result of tab-completion when tab completing from the beginning of the text box. This is useful when auto-completing a nick and including a trailing colon.The reversed parameter indicates that tab-completion should return the previous entry. When starting a fresh tab completion the priority completions will be considered in order before resorting to the set of possible completions.Find the word preceeding the cursor skipping over any characters that can be found in the prefix and suffix for the current completion mode.RFind the next entry in a list of possible choices using an alphabetical ordering.leading update operation  reversed priority completions possible completions reversed search prefix previous result posibilities  )Settings for an individual IRC connection(c) Eric Mertens, 2016ISCemertens@gmail.comNone/#'Security setting for network connectionTLS connection+TLS connection without certificate checking Plain connection Static server-level settings connection nicknames connection usernameconnection realname / GECOS CTCP userinfoserver password SASL usernameSASL plain passwordSASL ecdsa private keyserver hostname server portuse TLS to connectpath to client TLS certificatepath to client TLS key0additional CA certificates for validating serverOpenSSL cipher suite.commands to execute upon successful connectionhostname of SOCKS proxyport of SOCKS proxy"Channels with chanserv permissionsFlood limiter penalty (seconds) !Flood limited threshold (seconds)!Initial message hooks"+The name referencing the server in commands#1The number of reconnect attempts to make on error$)Connect to this network on server startup%$Nick completion mode for this server&Directory to save logs of chat'Protocol family to connect withFJLoad the defaults for server settings based on the environment variables.Environment variables USER,  IRCPASSSWORD, and  SASLPASSWORD are used.%Specification for IP protocol family.A      !"#$%&'*+,-./0123456789:;<=>?@ABCDEFGHA     !"#$%&'GH4D8E5<;:/6?ABC@,=>+-.129*307F       !"#$%&'#Interface to the connection package(c) Eric Mertens, 2016ISCemertens@gmail.comNoneI Create a new 6 which will be closed when the continuation finishes.II Event-based network IO(c) Eric Mertens, 2016ISCemertens@gmail.comNone J-Exceptions used to kill connections manually.Ksent when ping timer expiresL*sent when client commands force disconnectMThe sum of incoming events from a network connection. All events are annotated with a network ID matching that given when the connection was created as well as the time at which the message was recieved.N'Event for successful connection to hostO/Event for a new recieved line (newline removed)P6Final message indicating the network connection failedQ8Final message indicating the network connection finishedRHandle for a network connectionS:Identifier used to match connection events to connections.TSchedule a message to be transmitted on the network connection. These messages are sent unmodified. The message should contain a newline terminator.U(Force the given connection to terminate.V9Initiate a new network connection according to the given  R. All events on this connection will be added to the given queue. The resulting R^ value can be used for sending outgoing messages and for early termination of the connection.Vdelay in seconds )Identifier to be used on incoming events JKLMNOPQRSTUV RSMNOPQVTUJKLJKLMNOPQR!*Client configuration format and operations(c) Eric Mertens, 2016ISCemertens@gmail.comNone"#/&[/Vertically stack all windows in a single column\1Vertically stack extra windows in a second column]*Setting for how to pad the message prefix.^.Whitespace add to the left side of chat prefix_/Whitespace add to the right side of chat prefix`No whitespace addeda\Top-level client configuration information. When connecting to a server configuration from d$ is used where possible, otherwise c is used.cDefault connection settingsdHost-specific settingsf(Names of windows, used when alt-jumping)gExtra highlight nicks/termshPadding of nicks in messagesicommand macrosjpaths to shared librarykpaths to url opening executablelinitial ignore mask listm(initially visibility of the activity barnnotify terminal on mentiono+default setting for hidemeta on new windowspkeyboard bindingsqDefault layout on startupr!Modifier used for jumping windowsv0Failure cases when loading a configuration file.w-Error message from reading configuration filex"Error message from parser or lexery/Error message from loading parsed configurationUses  to find  .glirc/configUses   ! to find .configglircconfig"_Empty configuration file used when no path is specified and the configuration file is missing.#YAttempt to read a file using the given handler when a file does not exist. On failure a w exception is throw.$Either read a configuration file from one of the default locations, in which case no configuration found is equivalent to an empty configuration, or from the specified file where no configuration found is an error.*Load the configuration file defaulting to ~.glircconfig.%IResolve all the potentially relative file paths in the configuration file&<The default nick padding side if padding is going to be used'5Either full or abbreviated nick-padding configuration nick-padding: 10 'nick-padding: side: right width: 16( Full nick padding specification: &nick-padding: side: left width: 15)CCustom configuration specification for emacs-style key descriptionsdefault instance# file to read !error handler for not found case $&just file or use default search paths path to configuration file * defaults +configuration file path 0Z[\]`^_abcdefghijklmnopqrvwxyz{|}~0abcdefghijklmnopqrvwxyZ[\]^_`|}~z{Z[\]^_`abcdefghijklmnopqr,-./vwxy"Renderer for message lines(c) Eric Mertens, 2016ISCemertens@gmail.comNoneO"An identifier in a PRIVMSGAn identifier somewhere else%Level of detail to use when renderingonly render nicknamesrender full user info'Parameters used when rendering messagesrestricted message sigils sender sigilsnicknames to highlightnicknames to highlight in rednick color paletteDefault & with no sigils or nicknames specifiedWConstruct a message given the time the message was received and its render parameters.0+Render the sigils for a restricted message.1 Render a #; given the sender's sigils and the nicknames to highlight.2 Render a #; given the sender's sigils and the nicknames to highlight. Render a 3 as time using quiet attributes 23:15 4 Render a 3A as full date and time user quiet attributes. Excludes the year. 07-24 23:15:10 Optionally add padding to an input image according to the specified mode. If the input image is already wider than the specified padding mode, the image is returned unmodified.5QRender the sender of a message in normal mode. This is typically something like  @nickname:6Render a chat message given a rendering mode, the sigils of the user who sent the message, and a list of nicknames to highlight.7Render a chat message given a rendering mode, the sigils of the user who sent the message, and a list of nicknames to highlight.8Process list of } as individual IRC formatted words separated by a special separator to distinguish parameters from words within parameters.9Process list of " as individual IRC formatted words:ETransform string representing seconds in POSIX time to pretty format.;JRender string representing seconds into days, hours, minutes, and seconds.*Render a nickname in its hash-based color.Render an a full user. In normal mode only the nickname will be rendered. If detailed mode the full user info including the username and hostname parts will be rendered. The nickname will be colored.GRender an identifier without using colors. This is useful for metadata.Parse message text to construct an image. If the text has formatting control characters in it then the text will be rendered according to the formatting codes. Otherwise the nicknames in the message are highlighted.<Given a list of nicknames and a chat message, this will generate an image where all of the occurrences of those nicknames are colored.KReturns image and identifier to be used when collapsing metadata messages.:Image used when treating ignored chat messages as metadataARender the normal view of a chat message line padded and wrapped.time of message message body prefix, image, full 0sigils  padding mode  input image  padded image color palette draw mode my nicknames identifier to draw color palette mode my nicks userinfo to draw palette  my nicks  other nicks explicit controls rendering  input text  colored text < my nicks  other nicks palette draw columns nick padding window line wrapped lines #(Line renderers for ignore mask list view(c) Eric Mertens, 2016ISCemertens@gmail.comNone-Render the lines used in a channel mask list.=7Render a summary describing the number of ignore masks. ignore masks  palette = ignore masks  palette $Support for logging IRC traffic(c) Eric Mertens, 2016ISCemertens@gmail.comNone:Log entry queued in client to be written by the event loop"log directory from server settings localtime daychannel or nicknameformatted log message text,Write the given log entry to the filesystem. Ignore all IOErrors Construct a  for the given '< when appropriate. Only chat messages result in a log line. log line message log directory target  CSafe>?@ABCDE%"Processing of command-line options(c) Eric Mertens, 2016ISCemertens@gmail.comNone^'7 Command-line optionsconfiguration file pathinitial networksdisable autoconnectshow help messageshow version message+show version of ALL transitive dependenciesshow configuration file formatFDefault values for GOption descriptionsuLoad command line options. This action will terminate early in the case of the version flag, help flag, or an error.HReturns  "-SOMEHASH" when in a git repository, "" otherwise.IReturns "-dirty"! when in a dirty git repository, "" otherwise.  D:Compatibility layer for GHC RTS statistics across versions(c) Eric Mertens, 2017ISCemertens@gmail.comSafe)JKLJMNO&View current GHC RTS statistics(c) Eric Mertens, 2017ISCemertens@gmail.comNone+Generate lines used for  /rtsstats.EStrict unit type(c) Eric Mertens, 2016ISCemertens@gmail.comSafe.pPUnit data type with a strict Q and R instances.ST is strictUV is strict, W is O(1)PXPXFLens utility functions(c) Eric Mertens, 2016ISCemertens@gmail.comSafe4YModify the target of a Zd with a function. The result is strict in the results of applying the function. Strict version of [\9Set a value strictly in the set value. Strict version of ].^_ to the ` component of a 3a_" to the 'TimeOfDay component of a `.b_" to the 'TimeOfDay component of a `.Y\^ab'IRC network session state(c) Eric Mertens, 2016ISCemertens@gmail.comNoneg0Status of the ping timerping sent waiting for pong latency in seconds for last ping no ping sent.number of attempts, last known connection timeKPair of username and hostname. Empty strings represent missing information.username hostname'State of the authentication transactionno active transactionPLAIN mode initiatedECDSA-NIST mode initiated*ECDSA_NIST user sent waiting for challenge%State tracked for each IRC connectionnetwork connection identifierjoined channelsnetwork socketchannel mode meaningschannel identifier prefixes!state for multi-message sequencesmodes for the connected user)modes that prefix statusmsg channel names!settings used for this connection/usermask used by the server for this connection!user and hostname for other nicks%maximum mode changes per MODE commandname of network connectiontime for next ping eventstate of ping timertime of last message received2names of message hooks to apply to this connectionTimer-based events'terminate the connection due to timeouttransmit a ping to the server Transmit a ; on the connection associated with the given network. For PRIVMSG and NOTICEF overlong commands are detected and transmitted as multiple messages.qConstruct a new network state using the given settings and default values as specified by the IRC specification.cUsed for updates to a  that require no reply. noReply x = ([], x)d Restrict A to only users are in a channel that the client is connected to.e001 f is the first message received when transitioning from the initial handshake to a connected state. At this point we know what nickname the server is using for our connection, and we can start scheduling PINGs.gHandle h errors when connecting.i'Add an entry to a mode list transactionjKSave a completed ban, quiet, invex, or exempt list into the channel state.k[These replies are interpreted by the client and should only be shown in the detailed view.Return  for messages that should be hidden outside of full detail view. These messages are interpreted by the client so the user shouldn't need to see them directly to get the relevant information.>Predicate to test if the connection has op in a given channel.lProcess a list of WHO replies :Compute the earliest timed action for a connection, if any Apply the given  to a connection state. Used to send commands that require ops to perform. If this channel is one that the user has chanserv access and ops are needed then ops are requested and the commands are queued, otherwise send them directly. unique network ID network name server settings active network connection initial ping status new network state emessage received my nickname g bad nickname replies, updated state imask set by  set time jmode channel mtime of message sender channel mode flags mode parameters n  "key=value" channel commands network state  channel network state chanserv available channel topic network state I     I     (/Primary client state type and update operations(c) Eric Mertens, 2016ISCemertens@gmail.comNoneWState of the extension API including loaded extensions and the mechanism used to support reentry into the Haskell runtime from the C API.oactive extensionspq used to with Lrs used with L(All state information for the IRC clientclient message bufferspreviously focused buffer"focus prior to jumping to activitycurrently focused buffercurrent view modeextra messages windows to viewstate of active connectionsincoming network event queuenetwork name to connection IDclient configurationclient configuration file path primary text box!"size to crop from left of text box"current terminal width#current terminal height$buffer scroll lines%use detailed rendering mode&visible activity bar'optional persistent filter(layout mode for split screen)sound a bell next draw* ignored masks+,precomputed ignore regular expression (lazy),state of loaded extensions-log lines ready to write.transient error box text/most recent GHC RTS statstSelection function used in uL=Prepare the client to support reentry from the extension API.Mv for finding the I associated with a given network if that connection is currently active.N-The full top-most line that would be executedO*The line under the cursor in the edit box.PConstruct an initial  using default values.QTForcefully terminate the connection currently associated with a given network name.R;Add a message to the window associated with a given channelw5Extract the status mode sigils from a message target.xbCompute the importance of a message to be used when computing change notifications in the client.yTPredicate for messages that should be ignored based on the configurable ignore listSCPredicate for nicknames to determine if messages should be ignored.TARecord a message in the windows corresponding to the given targetz2Compute the sigils of the user who sent a message.{&Compute sigils for a user on a channel|Detect error messages and add the message text to the transient error display. The transient message will not be generated if the user is focused on the window where the message is going to be rendered, anyway.U$Record a message on a network window}FRecord window line at the given focus creating the window if necessary~& but with mostly defaulted parameters.V2Function applied to the client state every redraw.AMark the messages on the current window (and any splits) as seen.W@Add the textbox input to the edit history and clear the textbox.XCReturns the current network's channels and current channel's users.Y Returns the % associated with the current network.[9Returns the current filtering predicate if one is active.\Strict version of []FConstruct a text matching predicate used to filter the message window.^;Compute the command and arguments currently in the textbox._=Regular expression for matching HTTP/HTTPS URLs in chat text.`Find all the URL matches using _ in a given ) suitable for being opened. Surrounding < and > are removed.aRemove a network connection and unlink it from the network map. This operation assumes that the network connection exists and should only be applied once per connection.b<Start a new connection. The delay is used for reconnections.6Find the first unused key in the intmap starting at 0.When a nick change happens and there is an open query window for that nick and there isn't an open query window for the new nick, rename the window.d*Actions to be run when exiting the client.Unload all active extensions.e9Start extensions after ensuring existing ones are stoppedf0Scroll the current buffer to show newer messagesg1List of extra focuses to display as split windowshJump the focus of the client to a buffer that has unread activity. Some events like errors or chat messages mentioning keywords are considered important and will be jumped to first.iBJump the focus directly to a window based on its zero-based index.jChange the window focus to the given value, reset the subfocus to message view, reset the scroll, remember the previous focus if it changed.kiUnified logic for assigning to the extra focuses field that activates and deactivates windows as needed.lNChange the subfocus to the given value, preserve the focus, reset the scroll.m$Return to previously focused window.nVStep focus to the next window when on message view. Otherwise switch to message view.oZStep focus to the previous window when on message view. Otherwise switch to message view.pVStep focus to the next window when on message view. Otherwise switch to message view.uStep focus to the next window when on message view. Otherwise switch to message view. Reverse the step order when argument is .qbCompute the set of extra identifiers that should be highlighted given a particular network state.r\Compute the set of extra identifiers that should be highlighted given a particular network.s;Produce the list of window names configured for the client.t;Produce the list of window names configured for the client.u@Returns the list of network names that requested autoconnection.v Toggle the  hide metadata setting for the focused window.twindows before current window windows after current window window to focus L4client state 4continuation using the stable pointer to the client Mnetwork Oline number, line content Qnetwork Rnetwork channel  message  target  client state wpossible modes target actual modes, actual target S target user  client state  is ignored Tnetwork znetwork channel sigils {network channel user sigils network  channels Znetwork channel nicks [client state optional predicate \client state optional predicate ^!client state !command name and argument string battempts optional disconnect time network name ctimestamp message received message network network connection state client state response , updated state network izero-based window index j new focus  client state l new subfocus  client state uselection function client state qnetwork state client state extra highlight identifiers rnetwork client state extra highlight identifiers e !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuve !"#$%&'()*+,-./JGH5I<8;B:3E60FA>=M29C@17?D4PedL[\]vrZWXSNOQbaVcqstu^gYRUTjlmnpohikfK_`opr !"#$%&'()*+,-./) View of the list of open windows(c) Eric Mertens, 2016ISCemertens@gmail.comNone"w)Draw the image lines associated with the /windows command.ww*)Line renderers for channel user list view(c) Eric Mertens, 2016ISCemertens@gmail.comNonekxRender the lines used by the /users command in normal mode. These lines show the count of users having each channel mode in addition to the nicknames of the users.yRender lines for the /usersu command in detailed view. Each user will be rendered on a separate line with username and host visible when known.xnetwork channel ynetwork channel xyxy+URL selection module(c) Eric Mertens, 2016ISCemertens@gmail.comNonez1Generate the lines used for the view when typing /urlRender one line of the url listzrender width window to search argument to command client state image lines rendered width my nick palette nick render padding selected index url index sender and url text rendered lines zz,Chat message view(c) Eric Mertens, 2016ISCemertens@gmail.comNone-Classify window lines for metadata coalesence current nick  metadata  palette client state draw width hide metadata window lines image lines metadata image possible nick transition image accumulator possible nick transition metadata entries are reversed;Image, incoming identifier, outgoing identifier if changed {{-)Line renderers for channel mask list view(c) Eric Mertens, 2016ISCemertens@gmail.comNone3|,Render the lines used in a channel mask list| Mask mode  network  channel  draw width ||.List of the current key map(c) Eric Mertens, 2017ISCemertens@gmail.comNoneE}HRender the lines of a table showing all of the available digraph entries} client state  output lines }}/Character mnemonics(c) Eric Mertens, 2016ISCemertens@gmail.comNone~HRender the lines of a table showing all of the available digraph entries~ draw width  client state  output lines 3-character entry ~~0Channel information renderer(c) Eric Mertens, 2016ISCemertens@gmail.comNoneV,Render the lines used in a channel mask listnetwork channel 1Renderer for status line(c) Eric Mertens, 2016ISCemertens@gmail.comNone 9Renders the status line between messages and the textbox.1The minor status line is used when rendering the /splits and  /mentions* views to show the associated window name.GIndicate when the client is scrolling and old messages are being shown.YIndicate when the client is potentially showing a subset of the available chat messages.Indicate the current connection health. This will either indicate that the connection is being established or that a ping has been sent or long the previous ping round-trip was.TWrap some text in parentheses to make it suitable for inclusion in the status line.#Indicate that the client is in the detailed view.=Indicate that the client isn't showing the metadata lines in normal view..Image for little box with active window names: -[15p]-Multi-line activity information enabled by F3+Pack a list of images into a single image spanning possibly many lines. The images will stack upward with the first element of the list being in the bottom left corner of the image. Each line will have at least one of the component images in it, which might truncate that image in extreme cases. draw width  client state  status bar   error-message %[error: error-message]window name draw width show hidemeta status  client state window width components to pack 2 Mentions view(c) Eric Mertens, 2016ISCemertens@gmail.comNonemessage timestamp for sortingwindow names shortcutassociated windowwrapped rendered linesGenerate the list of message lines marked important ordered by time. Each run of lines from the same channel will be grouped together. Messages are headed by their window, network, and channel.DInsert channel name markers between messages from different channels]Merge a list of sorted lists of mention lines into a single sorted list in descending order."draw width "client state "list of mentions in time order "mention images and channel labels palette draw columns nick padding detailed view window name window focus window 3 Implementation of slash commands(c) Eric Mertens, 2016ISCemertens@gmail.comNoneCV'LuA command section is a logical grouping of commands. This allows for showing more structure in the help menu system.A command is a list of aliases, an argument specification, implementation, and documentation. The arguments and implementation must match so that the parsed arguments will match what the implementation expects.>Names of this command, first in the list is the "primary" name-Specification of the arguments of the command5Multi-line IRC-formatted documentation text used for /helpCImplementation of the command for both execution and tab completionPair of implementations for executing a command and tab completing one. The tab-completion logic is extended with a bool indicating that tab completion should be reversedno requirementsrequires an active networkrequires an active chat window!requires an active channel window=Type of commands that require an active channel to be focused=Type of commands that require an active network to be focused!Type of commands that always work%Possible results of running a commandDContinue running the client, consume input if command was from input,Continue running the client, report an errorClient should close8Consider the text entry successful and resume the client7Consider the text entry a failure and resume the client>Command failure with an error message printed to client window5Interpret the given chat message or command. Leading /d indicates a command. Otherwise if a channel or user query is focused a chat message will be sent.?Execute command provided by user, resolve aliases if necessary.?Compute the replacement value for the given expansion variable.Respond to the TAB key being pressed. This can dispatch to a command specific completion mode when relevant. Otherwise this will complete input based on the users of the channel related to the current buffer.;Treat the current text input as a chat message and send it.Parse and execute the given command. When the first argument is Nothing the command is executed, otherwise the first argument is the cursor position for tab-completion@Expands each alias to have its own copy of the command callbacksiMap of built-in client commands to their implementations, tab completion logic, and argument structures.+Raw list of commands in the order used for /help.Provides no tab completion for client commands/Provides no tab completion for network commands/Provides no tab completion for channel commands:Provides nickname based tab completion for client commands;Provides nickname based tab completion for network commands;Provides nickname based tab completion for channel commandsImplementation of /exit command.When used on a channel that the user is currently joined to this command will clear the messages but preserve the window. When used on a window that the user is not joined to this command will delete the window.Implementation of /quoteJ. Parses arguments as a raw IRC command and sends to the current network.Implementation of /meImplementation of /ctcpImplementation of /noticeImplementation of /msgCommon logic for /msg and /noticeCommon logic for /msg and /notice returning the client stateImplementation of /windows" command. Set subfocus to Windows.Implementation of  /mentions# command. Set subfocus to Mentions.Implementation of /palette" command. Set subfocus to Palette.Implementation of  /digraphs# command. Set subfocus to Digraphs.Implementation of /keymap! command. Set subfocus to Keymap.Implementation of  /rtsstatsM command. Set subfocus to RtsStats. Update cached rts stats in client state.Implementation of /help command. Set subfocus to Help.Tab completion for  /splits[+]. When given no arguments this populates the current list of splits, otherwise it tab completes all of the currently available windows.Tab completion for /splits-J. This completes only from the list of active entries in the splits list.3Parses a single focus name given a default network./The default is parameterized over an arbitrary 7 instance so that if you know the network you can use $ and if you might not, you can use 6Render a entry from splits back to the textual format.Implementation of /splitsImplementation of /splits+B. When no focuses are provided the current focus is used instead.Implementation of /splits-B. When no focuses are provided the current focus is used instead./connect! tab completes known server names\When tab completing the first parameter of the focus command the current networks are used.yThis command is equivalent to chatting without a command. The primary use at the moment is to be able to send a leading / to chat easily./query` command. Takes a channel or nickname and switches focus to that target on the current network./channel` command. Takes a channel or nickname and switches focus to that target on the current network.Tab completion for /channel,. Tab completion uses pre-existing windows.SReturn the list of identifiers for open channel windows on the given network name.Reconnect to the currently focused network. It's possible that we're not currently connected to a network, so this is implemented as a client command.sComplete the nickname at the current cursor position using the userlist for the currently focused channel (if any)Implementation of /reload(Attempt to reload the configuration fileSSupport file name tab completion when providing an alternative configuration file.NOT IMPLEMENTEDwThis function computes the list of required and optional parameters corresponding to the flags that have been entered.IUse the *!*@host masks of users for channel lists when setting list modes.Use the channel's mask list for removing modesUse the nick list otherwise=Predicate for mode commands that can be performed without opssComplete the nickname at the current cursor position using the userlist for the currently focused channel (if any)Implementation of /exec command.Implementation of /grep and /grepifocused channel current network  arguments chat or command disconnect time client state expansion variable expansion value  reversed target target default network  [network:]targetword completion mode hints all completions reversed order client state  reversed reversed order network client state open channel windows  reversed  reversed &network's mode behaviors &polarity mode-letter unused-parameter &required-names optional-names &required-names optional-names mode polarity mode channel (hint, complete)  reversed case sensitive 4Renderer for help lines(c) Eric Mertens, 2016ISCemertens@gmail.comNoneGenerate either the list of all commands and their arguments, or when given a command name generate the detailed help text for that command.AGenerate detailed help lines for the command with the given name.]Generate an explanation of the context where the given command implementation will be valid.<Generate the lines for the help window showing all commands.dGenerate the help line for the given command and its specification for use in the list of commands.client state optional command name palette help lines  client state  command name  palette  lines command implementation help line client state palette help lines client state palette command section help lines client state palette command name and aliases argument specification summary help line 5View selection module(c) Eric Mertens, 2016ISCemertens@gmail.comNone6Textbox renderer(c) Eric Mertens, 2016ISCemertens@gmail.comNone*Compute the UI image for the text input box. This computes the logical cursor position on the screen to compensate for VTY's cursor placement behavior.5Renders the whole, uncropped text box as well as the  corresponding to the rendered image which can be used for computing the logical cursor position of the cropped version of the text box. Version of wcwidth7 that accounts for how control characters are rendered Version of wcswidth7 that accounts for how control characters are rendered}Render the active text box line using command highlighting and placeholders, and WYSIWYG mIRC formatting control characters. cursor column, new offset, image&client state &my nicknames &other nicknames &macro completions &palette &content &plain text rendering, image rendering  commands  focused  input text  output image 7'Layout code for the multi-window splits(c) Eric Mertens, 2016ISCemertens@gmail.comNone ?Compute the combined image for all the visible message windows.4Layout algorithm for all windows in a single column.4Layout algorithm for all windows in a single column.#Draw one of the extra windows from /splitsGenerate an image corresponding to the image lines of the given focus and subfocus. Returns the number of lines overscrolled to assist in clamping scroll to the lines available in the window.Constructs a list of numbers with the length of the divisor and that sums to the dividend. Each element will be within one of the quotient.@Compute the number of lines in a page at the current window size 1client state 1overscroll, cursor pos, next offset, final image client state extra window names overscroll and final image ,client state ,extra window names ,overscroll, cursor pos, offset, final image draw width draw height scroll amount client state client state draw width draw height focus image lines rendered window client width available rows current scroll focused window overscroll, rendered messages "screen rows to fill "number of extra windows "list of heights for each division  dividend  divisor client state scroll amount 8 UI renderer(c) Eric Mertens, 2016ISCemertens@gmail.comNone Generate a u for the current client state. The resulting client state is updated for render specific information like scrolling.Primary UI render logic client state /text box cursor position, image, updated state 9Event loop for IRC client(c) Eric Mertens, 2016ISCemertens@gmail.comNoneZ<Sum of the three possible event types the event loop handlesKey presses and resizingIncoming network events'Timed action and the applicable networkBlock waiting for the next V. This function will compute an appropriate timeout based on the current connections.:Compute the earliest scheduled timed action for the client"Apply this function to an initial  to launch the client.*Sound the terminal bell assuming that the BEL control code is supported.8Respond to a network connection successfully connecting.1Respond to a network connection closing normally.3Respond to a network connection closing abnormally.Respond to an IRC protocol line. This will parse the message, updated the relevant connection state and update the UI buffers.qClient-level responses to specific IRC messages. This is in contrast to the connection state tracking logic in Client.NetworkState!Find the ZNC provided server time6Parses the time format used by ZNC for buffer playbackgReturns the list of values that were stored at the given indexes, if a value was stored at that index.6Update the height and width fields of the client stateRespond to a VTY event.,Map keyboard inputs to actions in the clientProcess  and update the 0 textbox and error state. When quitting return .9Execute the the command on the first line of the text boxRespond to a timer event. vty handle  client state  network id  event time  client state  network id  event time  client state failed network current time termination reason client state thread failure reason failed network client state !Network ID of message !current time !Raw IRC message without newlines !client state message time challenge network state client state now current network client state command now current network error message client state vty handle vty event client state nothing when finished vty handle action client state clear on success command result  client state Network related to event Action to perform client state :9Foreign exports which expose functionality for extensions(c) Eric Mertens, 2016ISCemertens@gmail.comNone"#/PReturns 1M when the given target on the given network shares a channel with the user, 0 otherwise.:If the given network is not currently active this returns 0.Returns 1R when the given target on the given network is a channel name, otherwise returns 0.:If the given network is not currently active this returns 0.~Free an array of heap allocated strings found as a return value from the extension API. If argument is NULL, nothing happens. Free the allocated strings with glirc_free_stringIStrings set to NULL if there is no current network or no current target.~Free an array of heap allocated strings found as a return value from the extension API. If argument is NULL, nothing happens.}Free one of the heap allocated strings found as a return value from the extension API. If argument is NULL, nothing happens.Mark a window as being seen clearing the new message counter. To clear the client window send an empty network name. To clear a network window send an empty channel name.Mark a window as being seen clearing the new message counter. To clear the client window send an empty network name. To clear a network window send an empty channel name.XThe resulting string is malloc'd and the caller must free it. NULL returned on failure.rThe resulting strings and array of strings are malloc'd and the caller must free them. NULL returned on failure.qThe resulting strings and array of strings are malloc'd and the caller must free them. NULL returned on failure.Case insensitive comparison suitable for use on channels and nicknames. Returns -1 if the first identifier is less than the second Returns 0 if the first identifier is equal to the second Returns 1 if the first identifier is greater than the secondqThe resulting strings and array of strings are malloc'd and the caller must free them. NULL returned on failure.-Print a message or error to the client window-Print a message or error to the client windowFNetwork, command, and parameters are used when transmitting a message.<Dereference the stable pointer passed to extension callbacks  Import a   into an  Peek a  as UTF-8 encoded bytes.api token network name network length target name target length boolean api token network name network length target name target length boolean api token newly allocated network string network length newly allocated target string target length )glirc allocated strings, null-terminated glirc allocated string api token network name network name length channel name channel name length api token network name network name length channel name channel name length api token network name network name length  api token  network  network len  channel  channel len 1null terminated array of null terminated strings  api token  network  network len 1null terminated array of null terminated strings identifier 1 identifier 1 len identifier 2 identifier 2 len 1api token 1null terminated array of null terminated strings  api token network network length source source length target target length message message length 0 on success api token enum message_code message message length 0 on success api token pointer to message 0 on success  GHIJJKKLMMNOPQQRSTUVWXYZ[\\]^_`abcdefghijjkklmnopqrstuvwxyz{|}~@                                                      j          !"#$%&'()*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnopqrstuvvwxyyz{||}~      !"#$%&@BA''()*+,-./012334566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst u v w x y z { | } ~      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""#$$$$$$$$$%%%%%%%%%%%%%&'''''''''''''''''''''''''''''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6(7(8(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((()**+,-./0112333333333333333333333333345677899::::::::::::::::::::::::::::::;=         X !"#$%&>'?(?)?*?+?,?-?.?/0123456789:;<=>?@ABCDEFGH } I J!KLMNLMOLMP!Q!R!S!T!U!V!W!X!Y!Z![![!\!]"^"_"`abc"d"e"f"g"h"i"j"k"l#mCnCoCpCqCrCsCtCu%v%w%x%yDzD{D|DzD}DWEE~EE~~EEFFFaFF''''''''''(((((((((((((((((((((7+,,,,,,/111111111122222222233333333333333333333333333333333333333333333333333333 3 3 3 3 44444666677777778 9!9"9x9#9$9%9&9'9(9)9*9+9,9-9.9/9091929394959697:8:9::; glirc-2.25-KfHcxAZZf0JgusxHhn5zTClient.Authentication.EcdsaClient.CApi.Types Client.CApiClient.Commands.Arguments.Spec Client.Commands.Arguments.ParserClient.Commands.ExecClient.Commands.InterpolationClient.Commands.RecognizerClient.Configuration.ColorsClient.Configuration.MacrosClient.EventLoop.ActionsClient.EventLoop.Errors Client.HookClient.Hook.Znc.Buffextras Client.HooksClient.Image.PackedImageClient.Image.MircFormattingClient.Image.LineWrapClient.Image.Palette"Client.Commands.Arguments.Renderer Client.MaskClient.MessageClient.State.ChannelClient.State.FocusClient.State.WindowClient.View.PaletteClient.State.EditBox.ContentClient.State.EditBoxClient.Commands.WordCompletion#Client.Configuration.ServerSettingsClient.Network.ConnectClient.Network.AsyncClient.ConfigurationClient.Image.MessageClient.View.IgnoreList Client.LogClient.OptionsClient.View.RtsStatsClient.State.Network Client.StateClient.View.WindowsClient.View.UserListClient.View.UrlSelectionClient.View.MessagesClient.View.MaskListClient.View.KeyMapClient.View.DigraphsClient.View.ChannelInfoClient.Image.StatusLineClient.View.MentionsClient.CommandsClient.View.Help Client.ViewClient.Image.TextboxClient.Image.Layout Client.ImageClient.EventLoopClient.CApi.Exports Build_glircDataText DigraphQuoteDigraphsPrefixtoStringisPrefix Paths_glircRtsStats StrictUnit LensUtilsauthenticationModeencodeUsernamecomputeResponse FgnStringLenFgnCmd fcCommandFgnChat fhNetworkfhTarget fhMessageFgnMsg fmNetwork fmPrefixNick fmPrefixUser fmPrefixHost fmCommandfmParamsfmParamN fmTagKeys fmTagValsfmTagN FgnExtensionfgnStartfgnStop fgnMessagefgnChat fgnCommandfgnNamefgnMajorVersionfgnMinorVersionDynamicProcessCommandProcessMessage StopExtensionStartExtension MessageResult MessageCoderunProcessChatrunProcessCommandrunProcessMessagerunStopExtensionrunStartExtension normalMessage errorMessage passMessage dropMessagepoke' exportText withText0$fStorableFgnStringLen$fStorableFgnCmd$fStorableFgnChat$fStorableFgnMsg$fStorableFgnExtension$fEqMessageCode$fEqMessageResultActiveExtensionaeFgnaeDL aeSessionaeNameaeMajorVersionaeMinorVersionextensionSymbolactivateExtensiondeactivateExtensionnotifyExtensions chatExtensioncommandExtension$fFunctorNestedIO$fApplicativeNestedIO$fMonadNestedIO$fMonadIONestedIOArgArgumentOptional Extension ArgumentShape TokenArgumentRemainingArgumentArgs remainingArg optionalArg extensionArg simpleToken numberArg tokenListparseExecCmd_execOutputNetwork_execOutputChannel _execCommand _execStdIn_execArguments $fReadExecCmd $fShowExecCmdexecOutputChannelexecOutputNetwork parseExecCmd runExecCmd MacroSpecMacro macroSpec macroCommandsExpansionChunk LiteralChunk VariableChunk IntegerChunk DefaultChunknoMacroArgumentsparseMacroSpecsparseExpansionresolveMacroExpansions$fShowMacroSpec$fShowExpansionChunk $fShowMacro RecognitionExactInvalid Recognizer recognize fromCommands addCommandkeys$fSemigroupRecognizer$fMonoidRecognizer$fShowRecognizer$fFunctorRecognizer$fShowRecognition$fFunctorRecognitionattrSpec colorSpec macroMapSpecmacroCommandSpecKeyMapAction ActBackspace ActDeleteActLeftActRightActHomeActEnd ActOlderLine ActNewerLine ActScrollUp ActScrollDown ActBackWordActForwardWordActYank ActKillHome ActKillEndActKillWordBackActKillWordForward ActToggleActBoldActColor ActItalic ActUnderlineActReverseVideoActClearFormatActInsertEnter ActDigraphActRetreatFocusActAdvanceFocusActAdvanceNetworkActJumpToActivityActJumpPreviousActJumpActTabCompleteActTabCompleteBackActEnterActReset ActRefresh ActCommand ActInsert ActIgnored keyMapEntries actionName keyToAction addKeyBindingremoveKeyBinding initialKeyMapparseKeyprettyModifierKey $fSpecAction $fEqAction $fOrdAction $fReadAction $fShowAction $fShowKeyMapexceptionToLines MessageHook_messageHookName_messageHookStateful_messageHookAction PassMessage OmitMessage RemapMessage$fMonoidMessageResult$fSemigroupMessageResultmessageHookActionmessageHookNamemessageHookStatefulapplyMessageHooksbuffextrasHook messageHooksImage' unpackImagetext'charstring splitImage imageWidth imageText resizeImage$fIsStringImage'$fSemigroupImage'$fMonoidImage' $fShowImage' parseIrcText parseIrcText' mircColor controlImage plainText terminate fullLineWraplineWrapPrefixlineWrapPalette _palNicks_palSelf_palSelfHighlight_palTime_palMeta _palSigil _palLabel _palLatency_palWindowName _palError _palTextBox _palActivity _palMention _palCommand_palCommandReady_palCommandPrefix_palCommandError_palCommandPlaceholder_palWindowDivider_palLineMarker $fShowPalette palActivity palCommandpalCommandErrorpalCommandPlaceholderpalCommandPrefixpalCommandReadypalErrorpalLabel palLatency palLineMarker palMentionpalMetapalNickspalSelfpalSelfHighlightpalSigil palTextBoxpalTimepalWindowDivider palWindowNamedefaultPalette paletteMaprenderMask buildMask matchMask MessageBodyIrcBody ErrorBody NormalBody ClientMessage _msgNetwork_msgBody_msgTime_IrcBody _ErrorBody _NormalBody IrcSummary JoinSummary QuitSummary PartSummary NickSummary ReplySummary ChatSummary CtcpSummary NoSummarymsgBody msgNetworkmsgTimemsgText msgSummary$fEqIrcSummary$fShowIrcSummary MaskListEntry_maskListSetter _maskListTimeTopicProvenance _topicAuthor _topicTime ChannelState _chanTopic_chanTopicProvenance_chanUrl _chanUsers _chanModes _chanLists _chanCreation_chanQueuedModeration$fShowTopicProvenance$fShowMaskListEntry$fShowChannelState chanCreation chanLists chanModeschanQueuedModeration chanTopicchanTopicProvenancechanUrl chanUsers topicAuthor topicTimemaskListSetter maskListTime newChannel joinChannel partChannel nickChangesetTopicFocus Unfocused NetworkFocus ChannelFocus $fEqFocus $fShowFocus WindowsFilter AllWindowsNetworkWindowsChannelWindows UserWindowsSubfocus FocusMessages FocusInfo FocusUsers FocusMasks FocusWindows FocusPalette FocusMentions FocusDigraphs FocusKeyMap FocusHelp FocusRtsStatsFocusIgnoreList _Unfocused _NetworkFocus _ChannelFocus focusNetwork $fOrdFocus$fEqWindowsFilter$fShowWindowsFilter $fEqSubfocus$fShowSubfocusWindowLineImportanceWLBoringWLNormal WLImportantWindow _winMessages _winMarker _winUnread _winTotal _winMention _winHideMeta PackedTime WindowLine _wlSummary _wlPrefix_wlImage _wlFullImage _wlImportance _wlTimestamp$fEqActivityLevel$fOrdActivityLevel$fReadActivityLevel$fShowActivityLevel$fEqWindowLineImportance$fOrdWindowLineImportance$fShowWindowLineImportance$fReadWindowLineImportance winHideMeta winMarker winMention winMessageswinTotal winUnread wlFullImagewlImage wlImportancewlPrefix wlSummary wlTimestampwlText emptyWindow addToWindow windowSeenwindowActivatewindowDeactivate packZonedTimeunpackTimeOfDay unpackUTCTime0$fEachWindowLinesWindowLinesWindowLineWindowLinepaletteViewLinesLine_pos_text $fReadLine $fShowLineContentHasLinelinepostextendLine $fHasLineLine $fReadContent $fShowContentabovebelow noContent singleLineshiftjumpLeft jumpRightleftrightleftWord rightWord backspacedelete insertCharinsertPastedString insertStringtoggledigraph$fHasLineContent LastOperation TabOperation KillOperationOtherOperationEditBox$fReadLastOperation$fShowLastOperation $fReadEditBox $fShowEditBoxcontent lastOperationdefaultEditBoxsuccessearlierlaterhomeendkillEndkillHomeyankkillWordBackwardkillWordForwardinsert insertPaste insertDigraph$fHasLineEditBoxWordCompletionModewcmStartPrefixwcmStartSuffixwcmMiddlePrefixwcmMiddleSuffixplainWordCompleteModedefaultNickWordCompleteModeslackNickWordCompleteMode wordComplete $fPrefixText$fPrefixIdentifier$fShowWordCompletionModeUseTlsUseInsecureTls UseInsecureServerSettings_ssNicks_ssUser_ssReal _ssUserInfo _ssPassword_ssSaslUsername_ssSaslPassword_ssSaslEcdsaFile _ssHostName_ssPort_ssTls_ssTlsClientCert_ssTlsClientKey_ssTlsServerCert _ssTlsCiphers_ssConnectCmds _ssSocksHost _ssSocksPort_ssChanservChannels_ssFloodPenalty_ssFloodThreshold_ssMessageHooks_ssName_ssReconnectAttempts_ssAutoconnect_ssNickCompletion _ssLogDir_ssProtocolFamily $fShowUseTls$fShowServerSettings ssAutoconnectssChanservChannels ssConnectCmdsssFloodPenaltyssFloodThreshold ssHostNamessLogDirssMessageHooksssNamessNickCompletionssNicks ssPasswordssPortssProtocolFamilyssRealssReconnectAttemptsssSaslEcdsaFilessSaslPasswordssSaslUsername ssSocksHost ssSocksPortssTls ssTlsCiphersssTlsClientCertssTlsClientKeyssTlsServerCertssUser ssUserInfoloadDefaultServerSettings serverSpecidentifierSpecwithConnectionTerminationReason PingTimeoutForcedDisconnect NetworkEvent NetworkOpen NetworkLine NetworkError NetworkCloseNetworkConnection NetworkIdsendabortConnectioncreateConnection$fShowNetworkConnection$fExceptionTerminationReason$fShowTerminationReason LayoutMode OneColumn TwoColumn PaddingMode LeftPadding RightPadding NoPadding Configuration_configDefaults_configServers_configPalette_configWindowNames_configExtraHighlights_configNickPadding _configMacros_configExtensions_configUrlOpener_configIgnores_configActivityBar_configBellOnMention_configHideMeta _configKeyMap _configLayout_configJumpModifier$fShowPaddingMode$fShowLayoutMode$fShowConfigurationConfigurationFailureConfigurationReadFailedConfigurationParseFailedConfigurationMalformedconfigActivityBarconfigBellOnMentionconfigDefaultsconfigExtensionsconfigExtraHighlightsconfigHideMeta configIgnoresconfigJumpModifier configKeyMap configLayout configMacrosconfigNickPadding configPalette configServersconfigUrlOpenerconfigWindowNamesgetNewConfigPathloadConfigurationconfigurationSpec$fExceptionConfigurationFailure$fShowConfigurationFailureIdentifierColorModePrivmsgIdentifierNormalIdentifier RenderMode NormalRenderDetailedRenderMessageRendererParams rendStatusMsgrendUserSigils rendNicks rendMyNicks rendPalettedefaultRenderParamsmsgImage cleanChar cleanText timeImagenickPadcoloredIdentifiercoloredUserInfoquietIdentifierparseIrcTextWithNicks metadataImg ignoreImagedrawWindowLineignoreListLinesLogLine logBaseDirlogDay logTargetlogLine writeLogLineignoreProblems renderLogLineOptions_optConfigFile_optInitialNetworks _optNoConnect _optShowHelp_optShowVersion_optShowFullVersion_optShowConfigFormat optConfigFileoptInitialNetworks optNoConnect getOptions rtsStatsLines Transaction NoTransactionNamesTransactionBanTransactionWhoTransaction PingStatusPingSent PingLatency PingNeverPingConnecting UserAndHostAuthenticateStateAS_NoneAS_PlainStartedAS_EcdsaStartedAS_EcdsaWaitChallenge NetworkState _csNetworkId _csChannels _csSocket _csModeTypes_csChannelTypes_csTransaction_csModes _csStatusMsg _csSettings _csUserInfo_csUsers _csModeCount _csNetwork_csNextPingTime _csPingStatus_csLastReceived_csMessageHooks_csAuthenticationState$fShowAuthenticateState$fShowUserAndHost$fShowPingStatus$fShowTransaction$fShowNetworkStatecsAuthenticationStatecsChannelTypes csChannelscsLastReceivedcsMessageHooks csModeCount csModeTypescsModes csNetwork csNetworkIdcsNextPingTime csPingStatus csSettingscsSocket csStatusMsg csTransaction csUserInfocsUsers TimedActionTimedDisconnect TimedSendPing_PingConnectingcsNicksendMsgnewNetworkState applyMessage squelchIrcMsgiHaveOpinitialMessagesisChannelIdentifiercsUsernextTimedActionapplyTimedActionsendModeration useChanServ sendTopic$fEqTimedAction$fOrdTimedAction$fShowTimedActionExtensionState ClientState_clientWindows_clientPrevFocus_clientActivityReturn _clientFocus_clientSubfocus_clientExtraFocus_clientConnections _clientEvents_clientNetworkMap _clientConfig_clientConfigPath_clientTextBox_clientTextBoxOffset _clientWidth _clientHeight _clientScroll_clientDetailView_clientActivityBar _clientRegex _clientLayout _clientBell_clientIgnores_clientIgnoreMask_clientExtensions_clientLogQueue_clientErrorMsg_clientRtsStatsclientActivityBarclientActivityReturn clientBell clientConfigclientConfigPathclientConnectionsclientDetailViewclientErrorMsg clientEventsclientExtensionsclientExtraFocus clientFocus clientHeightclientIgnoreMask clientIgnores clientLayoutclientLogQueueclientNetworkMapclientPrevFocus clientRegexclientRtsStats clientScrollclientSubfocus clientTextBoxclientTextBoxOffset clientWidth clientWindowsesActive clientParkclientConnectionclientFirstLine clientLinewithClientState abortNetworkrecordChannelMessage identIgnoredrecordIrcMessagerecordNetworkMessage clientTick consumeInputcurrentCompletionListcurrentNickCompletionModechannelUserList clientMatcherclientMatcher'clientActiveRegexclientActiveCommand urlPattern urlMatches removeNetwork addConnectionapplyMessageToClientStateclientShutdownclientStartExtensions scrollClientclientExtraFocusesjumpToActivity jumpFocus changeFocus setExtraFocuschangeSubfocus returnFocus advanceFocus retreatFocusadvanceNetworkFocusclientHighlightsclientHighlightsNetworkclientWindowNames clientPaletteclientAutoconnectsclientToggleHideMeta windowsImagesuserListImagesuserInfoImagesurlSelectionViewchatMessageImagesmaskListImages keyMapLines digraphLineschannelInfoImagesstatusLineImageminorStatusLineImagementionsViewLinesCommandSectioncmdSectionNamecmdSectionCmdsCommandcmdNamescmdArgumentSpeccmdDocumentationcmdImplementation CommandImpl ClientCommandNetworkCommand ChatCommandChannelCommand CommandResultCommandSuccessCommandFailure CommandQuitexecuteexecuteUserCommandcommandExpansion tabCompletioncommands commandsListhelpImageLines viewLines textboxImage drawLayout scrollAmount clientPicture eventLoopupdateTerminalSizeGlirc_is_logged_onGlirc_is_channelGlirc_current_focusGlirc_free_stringsGlirc_free_stringGlirc_clear_windowGlirc_mark_seen Glirc_my_nickGlirc_list_channel_usersGlirc_list_channelsGlirc_identifier_cmpGlirc_list_networksGlirc_inject_chat Glirc_printGlirc_send_messageglirc_send_message glirc_printglirc_inject_chatglirc_list_networksglirc_identifier_cmpglirc_list_channelsglirc_list_channel_users glirc_my_nickglirc_mark_seenglirc_clear_windowglirc_free_stringglirc_free_stringsglirc_current_focusglirc_is_channelglirc_is_logged_ondeps ProcessChatbaseForeign.StorablepokeNestedIOghc-prim GHC.TypesTrue withRawIrcMsg%irc-core-2.3.0-FeAQjtVfMU0LF5FrBSytIz Irc.RawIrcMsg RawIrcMsg evalNestedIOnest1nest2withChat withCommand emptyExecCmd powerWords Data.OldListwordsGHC.BaseString#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.Internal splitCommonsinglebothall childKeysBranch!vty-5.19.1-9muDbUzRE8o3wr5400575TGraphics.Vty.AttributesdefAttrcolorNumberSpecrgbSpec actionInfosexceptionToLines' Irc.MessageIrcMsgNothingJustremapGraphics.Vty.Image.InternalImage HorizText' EmptyImage'Segment TextSegmentControlSegment splitOptions dropSpaces lineWrap'defaultNickColorPalette Irc.UserInfoUserInfoparseMaskComponents translate isMetaChar ActivityLevel NoActivityNormalActivity HighActivity WindowLines:-Nil digraphTableStReadyMatchFoundSkip2Skip1 lookupDigraphdigraphs currentLine forwardLine backwardLine_above _currentLine_belowupdateYankBuffer_content_history _historyPos _yankBuffer_lastOperation KillDirection KillForward KillBackward Data.String fromString GHC.Classes<= currentWord tabSearchprotocolFamilySpec!hookup-0.2-8ODf9jfjTqvLZn52V0Z8QCHookup Connection connOutQueue connAsyncgetOldConfigPathdirectory-1.3.0.2System.DirectorygetAppUserDataDirectorygetXdgDirectory XdgConfigemptyConfigFilereadFileCatchNotFoundreadConfigurationFile resolvePathsdefaultPaddingSidenickPaddingSpecfullNickPaddingSpeckeySpecbuildServerMapnewFilePathContextFilePathContextfpBasefpHomestatusMsgImage prefixImage bodyImage time-1.8.0.2&Data.Time.LocalTime.Internal.ZonedTime ZonedTime datetimeImage ircLinePrefix ircLineImagefullIrcLineImageseparatedParamsircWordsprettyUnixTime prettySecondshighlightNicks summaryLineversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamedefaultOptionsoptions gitHashTxt gitDirtyTxtStatsgetStatsstatsToEntriesRenderData.Semigroup SemigroupMonoid$fMonoidStrictUnitmappend$fSemigroupStrictUnit<>stimes overStrict"lens-4.15.4-GHGW9NLjbni2ZqhBzqLjI4Control.Lens.TypeSetterControl.Lens.Setterover setStrictsetzonedTimeLocalTimeLens&Data.Time.LocalTime.Internal.LocalTime LocalTimelocalTimeTimeOfDay localTimeDaynoReply pruneUsers doWelcome Irc.Codes RPL_WELCOME doBadNickERR_NICKNAMEINUSErecordListEntrysaveList squelchReplymassRegistrationdoModeisupport _esActive_esMVarGHC.MVarMVar _esStablePtr GHC.Stable StablePtr FocusSelector stepFocus TraversalsplitStatusMsgModes msgImportance ircIgnorablecomputeMsgLineSigilscomputeUserSigilsupdateTransientErrorrecordWindowLine toWindowLine' toWindowLinemarkSeennextAvailableKeyapplyWindowRenamesclientStopExtensions recordLogLinenetworkChannelListdrawmetadataWindowLine MetadataStatewindowLinesToImages startMetadatatransitionMetadatagatherMetadataLines drawEntry scrollImage filterImage latencyImage infoBubble detailImage nometaImageactivitySummaryactivityBarImages makeLinestransientErrorImage mlTimestamp mlWindowNamemlFocusmlImage addMarkersmerge windowEntries MentionLinecommandSuccesscommandFailurecommandFailureMsg executeChatexecuteCommand expandAliases noClientTab noNetworkTab noChannelTabsimpleClientTabsimpleNetworkTabsimpleChannelTabcmdExitcmdClearcmdQuotecmdMecmdCtcp cmdNoticecmdMsg chatCommand chatCommand' cmdWindows cmdMentions cmdPalette cmdDigraphs cmdKeyMap cmdRtsStatscmdHelp tabSplitstabActiveSplits parseFocus ApplicativeData.Functor.IdentityIdentityMayberenderSplitFocus cmdSplits cmdSplitsAdd cmdSplitsDel tabConnecttabFocuscmdSaycmdQuery cmdChannel tabChannelchannelWindowsOnNetwork cmdReconnect tabIgnore cmdReload tabReload countFlagscomputeModeCompletionisPublicChannelModenickTabCompletioncmdExeccmdGrepsimpleTabCompletiontabTopiccommandHelpLinesexplainContextlistAllCommandscommandSummarylistCommandSection renderContent myWcwidth myWcswidth renderLine drawLayoutOne drawLayoutTwo drawExtra messagePane divisionsdrawMain splitHeightsGraphics.Vty.PicturePicture clientImage ClientEventVtyEvent TimerEventgetEvent earliestEventbeep doNetworkOpendoNetworkClosedoNetworkError doNetworkLineclientResponsecomputeEffectiveTime parseZncTimelookups doVtyEventdoActiondoCommandResult executeInput doTimerEventreconnectLogicprocessSaslEcdsaprocessConnectCmd recordError derefToken peekFgnMsgpeekFgnStringLen