ٝ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe1;=>?`;RFC 2616 Byte ranges (set).!RFC 2616 Byte range (individual).!Negative indices are not allowed!Response HeadersRequest Headers Header nameHeader HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html!HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html$HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html%HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html&HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html'HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html(HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html*HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html+HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html-HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html.HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html/HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html0HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html1HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html2HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html3HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html4HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html5HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html6HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html7HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html8HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html9HTTP Header names according to 6http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html:HTTP Header names according to -https://tools.ietf.org/html/rfc6265#section-4;HTTP Header names according to -https://tools.ietf.org/html/rfc6265#section-4<HTTP Header names according to #https://tools.ietf.org/html/rfc6454A)Parse the value of a Range header into a .parseByteRanges "error"NothingparseByteRanges "bytes=0-499"Just [ByteRangeFromTo 0 499]parseByteRanges "bytes=500-999"Just [ByteRangeFromTo 500 999]parseByteRanges "bytes=-500"Just [ByteRangeSuffix 500]parseByteRanges "bytes=9500-"Just [ByteRangeFrom 9500]parseByteRanges "bytes=0-0,-1",Just [ByteRangeFromTo 0 0,ByteRangeSuffix 1]'parseByteRanges "bytes=500-600,601-999"6Just [ByteRangeFromTo 500 600,ByteRangeFromTo 601 999]'parseByteRanges "bytes=500-700,601-999"6Just [ByteRangeFromTo 500 700,ByteRangeFromTo 601 999]B  !"#$%&'()*+,-./0123456789:;<=>?@AB  !"#$%&'<()*+,-./0123456789:;=>?@ASafe1iFYHTTP standard method (as defined by RFC 2616, and PATCH which is defined by RFC 5789).PHTTP method (flat string type).QHTTP Method constants.RHTTP Method constants.SHTTP Method constants.THTTP Method constants.UHTTP Method constants.VHTTP Method constants.WHTTP Method constants.XHTTP Method constants.YHTTP Method constants.ZConvert a method  ByteString to a F if possible.[!Convert an algebraic method to a  ByteString.\ Convert a F to a  ByteString.FGHIJKLMNOPQRSTUVWXYZ[\PQRSTUVWXYFGHIJKLMNOZ[\F GHIJKLMNOSafe1gd HTTP Status. Only the f is used for comparisons. Please use h6 to create status codes from code and message, or the . instance or the status code constants (like n:). There might be additional record members in the future.2Note that the Show instance is only for debugging.h-Create a Status from status code and message.i Continue 100j Continue 100kSwitching Protocols 101lSwitching Protocols 101mOK 200nOK 200o Created 201p Created 201q Accepted 202r Accepted 202s!Non-Authoritative Information 203t!Non-Authoritative Information 203uNo Content 204vNo Content 204wReset Content 205xReset Content 205yPartial Content 206zPartial Content 206{Multiple Choices 300|Multiple Choices 300}Moved Permanently 301~Moved Permanently 301 Found 302 Found 302 See Other 303 See Other 303Not Modified 304Not Modified 304 Use Proxy 305 Use Proxy 305Temporary Redirect 307Temporary Redirect 307Permanent Redirect 308Permanent Redirect 308Bad Request 400Bad Request 400Unauthorized 401Unauthorized 401Payment Required 402Payment Required 402 Forbidden 403 Forbidden 403 Not Found 404 Not Found 404Method Not Allowed 405Method Not Allowed 405Not Acceptable 406Not Acceptable 406!Proxy Authentication Required 407!Proxy Authentication Required 407Request Timeout 408Request Timeout 408 Conflict 409 Conflict 409Gone 410Gone 410Length Required 411Length Required 411Precondition Failed 412Precondition Failed 412Request Entity Too Large 413Request Entity Too Large 413Request-URI Too Long 414Request-URI Too Long 414Unsupported Media Type 415Unsupported Media Type 415#Requested Range Not Satisfiable 416#Requested Range Not Satisfiable 416Expectation Failed 417Expectation Failed 417I'm a teapot 418I'm a teapot 418Unprocessable Entity 422 ( #https://tools.ietf.org/html/rfc4918RFC 4918)Unprocessable Entity 422 ( #https://tools.ietf.org/html/rfc4918RFC 4918)Upgrade Required 426 ( 2https://tools.ietf.org/html/rfc7231#section-6.5.15)Upgrade Required 426 ( 2https://tools.ietf.org/html/rfc7231#section-6.5.15)Precondition Required 428 ( #https://tools.ietf.org/html/rfc6585RFC 6585)Precondition Required 428 ( #https://tools.ietf.org/html/rfc6585RFC 6585)Too Many Requests 429 ( #https://tools.ietf.org/html/rfc6585RFC 6585)Too Many Requests 429 ( #https://tools.ietf.org/html/rfc6585RFC 6585)&Request Header Fields Too Large 431 ( #https://tools.ietf.org/html/rfc6585RFC 6585)&Request Header Fields Too Large 431 ( #https://tools.ietf.org/html/rfc6585RFC 6585)Internal Server Error 500Internal Server Error 500Not Implemented 501Not Implemented 501Bad Gateway 502Bad Gateway 502Service Unavailable 503Service Unavailable 503Gateway Timeout 504Gateway Timeout 504HTTP Version Not Supported 505HTTP Version Not Supported 505&Network Authentication Required 511 ( #https://tools.ietf.org/html/rfc6585RFC 6585)&Network Authentication Required 511 ( #https://tools.ietf.org/html/rfc6585RFC 6585)Informational classSuccessful classRedirection classClient Error classServer Error classjdefghijklmnopqrstuvwxyz{|}~jdefghijklmnopqrstuvwxyz{|}~defgSafe?Simplified Query type without support for parameter-less items.DSimplified Query item type without support for parameter-less items.Like Query, but with  instead of   (UTF8-encoded).Query.FGeneral form: a=b&c=d, but if the value is Nothing, it becomes a&c=d. Query itemConvert  to .Convert  to a  .Convert  to  (leniently decoding the UTF-8).Parse  from a  . See  for details.Convert  to .Convert  to a Builder.Convert  to  ByteString.Convert  to  ByteString.TSplit out the query string into a list of keys and values. A few importants points:The result returned is still bytestrings, since we perform no character decoding here. Most likely, you will want to use UTF-8 decoding, but this is left to the user of the library.QPercent decoding errors are ignored. In particular, "%Q" will be output as "%Q". rBreak the second bytestring at the first occurrence of any bytes from the first bytestring, discarding that byte.Parse  from a  ByteString. Percent-encoding for URLs.!Percent-encoding for URLs (using  ).Percent-encoding for URLs.Percent-decoding.:Encodes a list of path segments into a valid URL fragment..This function takes the following three steps:UTF-8 encodes the characters.IPerforms percent encoding on all unreserved characters, as well as :@=+$,#Prepends each segment with a slash. For example: .encodePathSegments [\"foo\", \"bar\", \"baz\"]"/foo/bar/baz" .encodePathSegments [\"foo bar\", \"baz\/bin\"]"/foo%20bar/baz%2Fbin" encodePathSegments [\"\"]"/%D7%A9%D7%9C%D7%95%D7%9D"Huge thanks to Jeremy Shaw who created the original implementation of this function in web-routes and did such thorough research to determine all correct escaping procedures.7Like encodePathSegments, but without the initial slash.8Parse a list of path segments from a valid URL fragment.3Extract whole path (path segments + query) from a  0http://tools.ietf.org/html/rfc2616#section-5.1.2RFC 2616 Request-URI.extractPath "/path""/path"*extractPath "http://example.com:8080/path""/path" extractPath "http://example.com""/"extractPath """/",Encode a whole path (path segments + query).,Decode a whole path (path segments + query).prepend a question mark?prepend a question mark?prepend question mark?prepend question mark?IWhether input is in query string. True: Query string, False: Path elementWhether to decode   to ' 'The ByteString to encode as URLThe encoded URLWhether to decode   to ' 'Safe;=ЗLTypes which, in a Query-like key-value list, are used in the Value position.JTypes which, in a Query-like key-value list, are used in the Key position.0Types which can, and commonly are, converted to  are in this class.2You can use lists of simple key value pairs, with   (strict, or lazy: ), , or  as the key/value types. You can also have the value type lifted into a Maybe to support keys without values; and finally it is possible to put each pair into a Maybe for key-value pairs that aren't always present. Convert to .Safe1 HTTP Version.=Note that the Show instance is intended merely for debugging.HTTP 0.9HTTP 1.0HTTP 1.1HTTP 2.0SafeӇ !#%&+,.3:=>?@AFGHIJKLMNOPQRSTUVWXYZ[\defghijklmnopqrstuvwxyz{|}~PQRSTUVWXYFGHIJKLMNOZ[\defghijklmnopqrstuvwxyz{|}~ :!#%&+,.3=>?@A      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{|}~       &http-types-0.12-7fW2gLZ0ieSDHsGGDU46eINetwork.HTTP.Types.HeaderNetwork.HTTP.Types.MethodNetwork.HTTP.Types.StatusNetwork.HTTP.Types.URINetwork.HTTP.Types.QueryLikeNetwork.HTTP.Types.VersionNetwork.HTTP.Types ByteRanges ByteRange ByteRangeFromByteRangeFromToByteRangeSuffixResponseHeadersRequestHeaders HeaderNameHeaderhAccepthAcceptCharsethAcceptEncodinghAcceptLanguage hAcceptRangeshAgehAllowhAuthorization hCacheControl hConnectionhContentEncodinghContentLanguagehContentLengthhContentLocation hContentMD5 hContentRange hContentTypehDatehETaghExpecthExpireshFromhHosthIfMatchhIfModifiedSince hIfNoneMatchhIfRangehIfUnmodifiedSince hLastModified hLocation hMaxForwardshPragmahProxyAuthenticatehProxyAuthorizationhRangehReferer hRetryAfterhServerhTEhTrailerhTransferEncodinghUpgrade hUserAgenthVaryhViahWWWAuthenticatehWarninghContentDisposition hMIMEVersionhCookie hSetCookiehOriginrenderByteRangeBuilderrenderByteRangerenderByteRangesBuilderrenderByteRangesparseByteRanges$fShowByteRange $fEqByteRange$fOrdByteRange$fDataByteRange StdMethodGETPOSTHEADPUTDELETETRACECONNECTOPTIONSPATCHMethod methodGet methodPost methodHead methodPut methodDelete methodTrace methodConnect methodOptions methodPatch parseMethod renderMethodrenderStdMethod$fReadStdMethod$fShowStdMethod $fEqStdMethod$fOrdStdMethod$fEnumStdMethod$fBoundedStdMethod $fIxStdMethodStatus statusCode statusMessagemkStatus status100 continue100 status101switchingProtocols101 status200ok200 status201 created201 status202 accepted202 status203nonAuthoritative203 status204 noContent204 status205resetContent205 status206partialContent206 status300multipleChoices300 status301movedPermanently301 status302found302 status303 seeOther303 status304notModified304 status305 useProxy305 status307temporaryRedirect307 status308permanentRedirect308 status400 badRequest400 status401unauthorized401 status402paymentRequired402 status403 forbidden403 status404 notFound404 status405methodNotAllowed405 status406notAcceptable406 status407proxyAuthenticationRequired407 status408requestTimeout408 status409 conflict409 status410gone410 status411lengthRequired411 status412preconditionFailed412 status413requestEntityTooLarge413 status414requestURITooLong414 status415unsupportedMediaType415 status416requestedRangeNotSatisfiable416 status417expectationFailed417 status418 imATeapot418 status422unprocessableEntity422 status426upgradeRequired426 status428preconditionRequired428 status429tooManyRequests429 status431requestHeaderFieldsTooLarge431 status500internalServerError500 status501notImplemented501 status502 badGateway502 status503serviceUnavailable503 status504gatewayTimeout504 status505httpVersionNotSupported505 status511 networkAuthenticationRequired511statusIsInformationalstatusIsSuccessfulstatusIsRedirectionstatusIsClientErrorstatusIsServerError$fBoundedStatus $fEnumStatus $fOrdStatus $fEqStatus $fShowStatus SimpleQuerySimpleQueryItem QueryTextQuery QueryItemqueryTextToQueryrenderQueryTextqueryToQueryTextparseQueryTextsimpleQueryToQueryrenderQueryBuilder renderQueryrenderSimpleQuery parseQueryparseSimpleQueryurlEncodeBuilder urlEncode urlDecodeencodePathSegmentsencodePathSegmentsRelativedecodePathSegments extractPath encodePath decodePathQueryValueLike toQueryValue QueryKeyLike toQueryKey QueryLiketoQuery$fQueryKeyLike[]$fQueryKeyLikeText$fQueryKeyLikeByteString$fQueryKeyLikeByteString0$fQueryValueLikeMaybe$fQueryValueLike[]$fQueryValueLikeText$fQueryValueLikeByteString$fQueryValueLikeByteString0 $fQueryLike[]$fQueryLike[]0 HttpVersion httpMajor httpMinorhttp09http10http11http20$fShowHttpVersion$fEqHttpVersion$fOrdHttpVersionbaseGHC.EnumEnum#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalTextbytestring-0.10.8.2Data.ByteString.Internal ByteString Data.ByteString.Builder.InternalBuilder breakDiscardurlEncodeBuilder'GHC.Num+Data.ByteString.Lazy.InternalGHC.BaseString