wk,      !"#$%&'()*+,-./01234default timeout list of ports number of capabilities  error log session handler 5session port information read end of socket write end of socket  sendfile end timeout tickler 6789:;<,-./0123456789:;<,-./0-./013223456789:;<789:;<=>?@ABCD?ABCD?ABCD EFGHIJKLMN EFGHIJKLMN EFFGHIJKLMNOPQQQRSTUVWXRSTUVWXRSTUVWX Y;an internal version of the headers part of an HTTP request Z[\]^_`ab+Parser for the internal request data type. cdParser for the request method. eParser for the request URI. fParser for the request's HTTP protocol version. ghij klYZ[\]^_`ij YZ[\]^Z[\]^_`ij mnopqrstuvmrstuvmrstuv www xyz{|}~number of locks to use hash function hash function y~y~ For each cpu, we store: . * A list of accept threads, one per port. 0 * One timeout table and one timeout thread. ) These timeout the session threads. < * An mvar to signal when the timeout thread is shutdown  Holds the state for a logger. ICreates a new logger, logging to the given file. If the file argument is  "-", then log to stdout; if it's "stderr" then we log to stderr, K otherwise we log to a regular file in append mode. The file is closed and A re-opened every 15 minutes to facilitate external log rotation. 0Prepares a log message with the time prepended. Prepares a log message in "combined" format.  remote host  remote user "request line (up to you to ensure  there are no quotes in here)  status code num bytes sent referer (up to you to ensure  there are no quotes in here)  user agent (up to you to ensure  there are no quotes in here) @Sends out a log message verbatim with a newline appended. Note: $ if you want a fancy log message you'll have to format it yourself  (or use ). <Kills a logger thread, causing any unwritten contents to be  flushed out to disk 'JThe handler has to return the request object because we have to clear the L HTTP request body before we send the response. If the handler consumes the - request body, it is responsible for setting  rqBody=return in the returned ? request (otherwise we will mess up reading the input stream). Note that we won':t be bothering end users with this -- the details will be  hidden inside the Snap monad local host name session port information access log function error log function monadic action to run default timeout ports to listen on Specify a given event loop, ! otherwise a default is picked local hostname (server name) path to the access log path to the error log handler procedure default timeout access logger  error logger handler procedure local host name session port information read end of socket write end of socket  sendfile end timeout tickler Runs an HTTP session. write end of socket builder buffer sendfile continuation timeout tickler handler procedure iteratee write end function to call on  sendfile Convert  into  for output. '';9A data structure used during command-line option parsing IThe Config data type allows a list of listen ports, but the command line J options only allow one http and one https listener. This data structure  is used during option parsing ;A record type which represents partial configurations (for  httpServe) $ by wrapping all of its fields in a ". Values of this type are usually  constructed via its # instance by doing something like:  . addListen (ListenHttp "0.0.0.0" 9000) mempty (Any fields which are unspecified in the  passed to  httpServe (and : this is the norm) are filled in with default values from . The name of the server "The local interfaces to listen on The path to the access log  The path to the error log  The locale to use  The backend to use  Whether to use compression  1Whether to write server status updates to stderr (A MonadSnap action to handle 500 errors AThis is for any other state needed to initialize a custom server CA data type to record which backend event loop should be used when  serving data.  =A data type to store the bind address and port to listen on. JFor SSL support, it also stores the path to the certificate in PEM format 0 and the path to the private key in PEM format Returns a completely empty . Equivalent to  from  Config's  instance. 3These are the default values for all the fields in .  hostname = "localhost"  listen = [] ! accessLog = "log/access.log"  errorLog = "log/error.log"  locale = "en_US" K backend = Nothing (the backend is selected based on compile options)  compression = True  verbose = True ) errorHandler = prints the error message Completes a partial + by filling in the unspecified values with  the default values from . Also, if no listeners are 1 specified, adds a http listener on 0.0.0.0:8000 -These are the default values for the options Convert options to config Convert config to options 6A description of the command-line options accepted by  . The ; parameter is just for specifying any default values which  are to override those in #. This is so the usage message can L accurately inform the user what the default values for the options are. In 3 most cases, you will probably just end up passing  for this  parameter. 0The return type is a list of options describing  ( m)  as opposed to  m, because if the --help option is given, L the set of command-line options no longer describe a config, but an action # (printing out the usage message). This returns a 2 gotten from parsing the options specified on the  command-line. The ? parameter is just for specifying any default values which are  to override those in #. This is so the usage message can L accurately inform the user what the default values for the options are. In 3 most cases, you will probably just end up passing  for this  parameter. -On Unix systems, the locale is read from the LANG environment variable.  !"#$%&!  !"#$%&!    !"#$&%!    !"#$%&'2A short string describing the Snap server version (JStarts serving HTTP requests using the given handler. Uses only the basic M settings from the given config; error handling and compression are ignored. E This function never returns; to shut down the HTTP server, kill the  controlling thread. )IStarts serving HTTP requests using the given handler, with settings from  the ? passed in. This function never returns; to shut down the HTTP & server, kill the controlling thread. *GStarts serving HTTP using the given handler. The configuration is read < from the options given on the command-line, as returned by  5. This function never returns; to shut down the HTTP & server, kill the controlling thread. +Given a string like "en_US", this sets the locale to " en_US.UTF-8".  This doesn't work on Windows. &  !"#$%&'()*+()*'+'()*+ !"#$%&'()*+,-./0123456789:;<=>??@ABCDEFFGHIJKLMNOPQRSTTUVWXPQSRYYZ[K\PQRS ] ] ^ _ ` a b c d e f g h i j k l mnopqrs t u v w x y z { | } ~       <:qq     snap-server-0.4.1System.FastLoggerSnap.Http.Server.ConfigSnap.Http.Server!Snap.Internal.Http.Server.Backend"Snap.Internal.Http.Server.HttpPort Snap.Internal.Http.Server.GnuTLS&Snap.Internal.Http.Server.LibevBackend'Snap.Internal.Http.Server.ListenHelpersSnap.Internal.Http.ParserPaths_snap_server Data.Concurrent.HashMap.InternalData.Concurrent.HashMap&Snap.Internal.Http.Server.TimeoutTableSystem.SendFile.LinuxSystem.SendFileSnap.Internal.Http.Server.Date'Snap.Internal.Http.Server.SimpleBackendSnap.Internal.Http.ServerLogger newLoggertimestampedLogEntrycombinedLogEntrylogMsg stopLoggerConfig ConfigBackendConfigLibEvBackendConfigSimpleBackend ConfigListen ListenHttps ListenHttp emptyConfig defaultConfigcompleteConfigcommandLineConfig getHostname getListen getAccessLog getErrorLog getLocale getBackendgetCompression getVerbosegetErrorHandlergetOthergetDefaultTimeout setHostname addListen setAccessLog setErrorLog setLocale setBackendsetCompression setVerbosesetErrorHandlersetOthersetDefaultTimeoutsnapServerVersionsimpleHttpServe httpServequickHttpServesetUnicodeLocaleNetworkSession_socket_session_recvLen ListenSocket EventLoopSessionHandler SessionInfo localAddress localPort remoteAddress remotePortisSecurec_writec_readbindHttp getHostAddr createSession endSessionrecvsendGnuTLSExceptioninitTLSstopTLS bindHttpsfreePortLibevExceptionlibEvEventLoop listenSocket closeSocketIRequestiMethod iRequestUri iHttpVersioniRequestHeaders parseRequestreadChunkedTransferEncodingchunkParserToEnumerateepRequest pRequest'pMethodpUripVersionpGetTransferChunkpCookies parseCookieparseUrlEncodedattoparsec-enumerator-0.2.0.3Data.Attoparsec.Enumerator iterParsersnap-core-0.4.1Snap.Internal.Parsing strictizeversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileName whichHashSubmapHashMapHM_hash _hashToBucket_maps hashStringhashInthashBSnullnew'newinsertdeletelookupupdatetoListfromListshiftRLnextHighestPowerOf2highestBitMask insSubmap delSubmap lookupSubmap updateSubmapdefaultNumberOfLocks TimeoutTable _activityTT hashToBucketkillAll killOlderThanwaitForActivity c_sendfilesendFilesendfilemaxBytes sendFileMode DateState_cachedDateString_cachedLogString _cachedDate _valueIsOld _morePlease _dateThread dateState fetchTime updateState dateThreadensureFreshDate getDateStringgetLogDateStringgetCurrentDateTimeAddressNotSupportedException EventLoopCpu _boundCpu_acceptThreads _timeoutTable_timeoutThread _exitMVarsimpleEventLoopnewLoopstopLoop acceptThread timeoutThread runSession eatException tickleTimeout enumeratewriteOut_queuedMessages _dataWaiting _loggerPath_loggingThread loggingThread ServerState_forceConnectionClose_localHostname _sessionPort _logAccess _logError EventLoopTypeEventLoopLibEvEventLoopSimple ListenPort HttpsPortHttpPort ServerMonad ServerHandler defaultEvTyperunServerMonaddebugElogElogE'bshowlogAlogA'runHTTP sERVER_HEADER logAccesslogError httpSessioncheckExpect100ContinuereceiveRequest sendResponsecheckConnectionClose toHeaders cookieToBSSnap.Internal.Http.TypesCookiebytestring-0.9.1.10Data.ByteString.Internal ByteString getFileSizel2stoBS OptionDataconfigbindportsslbindsslportsslcertsslkeytoutbase Data.MaybeMaybe Data.MonoidMonoidhostnamelisten accessLogerrorLoglocalebackend compressionverbose errorHandlerdefaultTimeoutothermemptydefaultOptionsoptionsToConfigconfigToOptionsoptions