f8WB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferred   Safe-Inferred  None   Safe-Inferred %Abstract data type for URI Authority Abstract data type for URI  Parsing URI. Getting a hostname from  . Getting a port number from  . Making a URL string from  . Making a URL string from   without port. Making a URL string from   without port and parameters. (Checking whether or not URI starts with "http:". Decoding the %XX encoding. Decoding the %XX encoding.       None+Internal information of CGI converted from  . A porgram path to be executed. A script name. A path information. A query string. %Control information of how to handle  .   is converted into CGI.  2 is converted into a resource (typically a file). ! ) cannot be converted into any resources. ",The configuration for the basic web server. $A mapper from   to . %4Resource obtaining function. The second argument is 9 (offset of the resource, and length from the offset). &2A function to return the size of the resource and $ its modification time if exists. '+A server name specified the Server: field. (& for passing CGI. (See c10k library.)  !"#$%&'( !"#$%&'("#$%&'(! ! "#$%&'( Safe-Inferred)Exceptions for Web server ,'The type for persist connection or not 0The type for Content-Type. 1Field value of HTTP header. 2Field key of HTTP header. GStatus of HTTP. pVersions of HTTP. sMethods of HTTP. Converting numeric status to G.  Returning  for 4xx and 5xx. Converting field key to 2.  Converting 2 to field key. 6Selecting a value of Content-Type from a file suffix. The value for text/html. k)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_s{zyxwvut|prq~}Gonmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIH,/.-)+*2FEDCBA@?>=<;:987654310 )+*,/.-012FEDCBA@?>=<;:9876543G(onmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHprqs{zyxwvut|}~ Safe-Inferred2Abstract data type for Key-values of HTTP header. A class to abstract  and . %Abstract data type of HTTP response. Response status $Abstract data type of HTTP request. Request method BURI parsed from absolute URL or relative URL with the Host: field  HTTP version Key-values of request header Entity body if exists +Length of entity body from Content-Length: Default Request. Default Response. A function to make . A function to make . A function to make . Receiving HTTP request from .  If request is broken,  is returned. Parsing HTTP header from . / This function is useful to parse CGI output. Sending HTTP response to .  If .# is specified, the HTTP connection  will be kept. If /. is specified, the connection will be closed.  p should be copied from . !Looking up the HTTP field value. !Looking up the HTTP field value. Inserting the HTTP field. Inserting the HTTP field. 8y)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%(NoneThe configuration for . 7A hook to be called when an HTTP connection is closed. *A hook to be called when access succeeds. 1A hook to be called when an access error occurs. /A hook to be called when a fatal error occurs. 8A time to unblock receiving an HTTP request in seconds. The type for HTTP server. A function to run an .  should be mode by ! converting an accepted socket.  Keep-alive /< termination of HTTP 1.0 and HTTP 1.1 is correctly handled.  So, 8 need not to handle the Connection: header in response. 7 The Date: header is automatically added in response.   None None Creating  with ".  The created  can handle GET / HEAD / POST; 7 OK, Not Found, Not Modified, Moved Permanently, etc; * partial getting; language negotication; $ CGI, chunked data for CGI output;  If http:// example.com/path does not exist but  http:// example.com/path/ exists, the created   redirects it. http:// example.com/path/ is mapped to  / somewhere/path/ by $" and index.html and index.html.en ) automatically added and try to read by %.  If Accept-Language is xx and yy in order, = index.html.xx, index.html.yy, index.html and index.html.en  are tried. The created  does not dynamically > make index.html for a directory even if index.html does not  exist for security reasons. $      !"#$% !"#$%&'($      !"#$%&    !"##$%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                             ! " # $ % & ' ( ) * + , -.webserver-0.5.1.0Network.Web.Server.RangeNetwork.Web.Server.LangNetwork.Web.DateNetwork.Web.URINetwork.Web.Server.ParamsNetwork.Web.ParamsNetwork.Web.HTTPNetwork.Web.ServerNetwork.Web.Server.CGINetwork.Web.Server.Basic skipAndSize parseLangHttpDate parseDate utcToDateURIAuth uriUserInfo uriRegNameuriPortURI uriScheme uriAuthorityuriPathuriQuery uriFragmentparseURI uriHostName uriPortNumbertoURL toURLwoPort toURLPath isAbsoluteURIunEscapeByteStringunEscapeStringCGIprogPath scriptNamepathInfo queryStringPathPathCGIFileNone BasicConfigmapperobtaininfo serverNametcpInfoServerExceptionTerminatedByClientTimeOutPersist PerUnknownKeepCloseCT FieldValueFieldKeyFkOtherFkTransferEncodingFkStatus FkSetCookie2FkServerFkRange FkLocationFkLastModifiedFkIfUnmodifiedSince FkIfRangeFkIfModifiedSinceFkHostFkDateFkCookie FkContentTypeFkContentRangeFkContentLength FkConnectionFkCacheControlFkAcceptLanguageStatusHTTPVersionNotSupportedGatewayTimeoutServiceUnavailable BadGatewayNotImplementedInternalServerErrorExpectationFailedRequestedRangeNotSatisfiableUnsupportedMediaTypeRequestURITooLargeRequestEntityTooLargePreconditionFailedLengthRequiredGoneConflictRequestTimeoutProxyAuthenticationRequired NotAcceptableMethodNotAllowedNotFound ForbiddenPaymentRequired Unauthorized BadRequestTemporaryRedirectUseProxy NotModifiedSeeOtherFoundMovedPermanentlyMultipleChoicesPartialContent ResetContent NoContentNonAuthoritativeInformationAcceptedCreatedOKSwitchingProtocolsContinueVersionHTTP11HTTP10Method UnknownMethodCONNECTTRACEDELETEPUTPOSTHEADGETtoMethod fromVersion toVersion fromStatustoStatus badStatus toFieldKey fromFieldKeyselectContentTypetextHtml fromPersist toPersistFieldsCommResponse rspStatus rspFieldsrspBody rspLength rspLogMsgRequest reqMethodreqURI reqVersion reqFieldsreqBody reqLength makeResponse makeResponse2 makeResponse3receive receiveFieldsrespond lookupField lookupField' insertField insertField' fromFields WebConfig closedHook accessHook errorHookfatalErrorHookconnectionTimer WebServer connection tryGetCGI basicServerRangeadjust parseRange byteRangerangesrange suffixRangenumacceptLanguage rangeQvalue languageRangelanguagesublangqualityqvalueupto rfc1123Format rfc850Format asctimeFormatpreferredFormat rfc1123Date rfc850Date asctimeDateparseURLparsePathQueryparseAuthority c10k-0.5.0Network.TCPInfoTCPInfoghc-prim GHC.TypesTrue methodAlist fieldKeyListfieldStringListstringFieldKeyfieldKeyString<:> capitalize textPlainappOct contentTypeDB$fShowServerException$fExceptionServerExceptiondefaultRequestdefaultResponsebaseGHC.IO.Handle.TypesHandle Data.MaybeNothing getFields setFieldsreceiveRequestisEOHreceiveRequestLinetoURItoURI' receiveBodysendStatusLinesendResponseFieldssendResponseBody sendChunk emptyFieldstoFields copyFields composeField parseFieldparseRequestLinechopchomptrimcrlfspc$fCommResponse $fCommRequestsession recvRequest sendResponse sendResponse' checkPersistENVVARSgatewayInterfacemakeEnvprocessCGIoutput responseAnyresponseInternalServerErrorrunAnyIO runAnyMaybeIO processGET processHEAD processPOST languages>>||>||||ifModifiedSinceifUnmodifiedSinceifRangelookupAndParseDatetryGet tryGetFile tryGetFile' ifmodified ifunmodifiedifrange unconditionaltryHead tryHeadFile tryHeadFile' redirectURI tryRedirecttryRedirectFiletryPostnotFoundresponse responseOKresponseRedirectresponseNotFoundresponseBadRequestresponseNotImplement