آ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  None2<=E"type of the multi piece at the endFsupported request methods&;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` ;<=>?@ABCDEFGHIKJLMNPOQRSTUVWXYZ MNOPQRSTUVIJKBCDEFGHL;<=>?@AYWXZ;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` None!"$<=XA simpler version of Yesod.Routes.TH.Dispatch.mkDispatchClause, based on view patterns. Since 1.4.0   None<=parent resource trees             None<=avoid performing the same action multiple times. Values are stored by their TypeRep from Typeable. Therefore, you should use un-exported newtype wrappers for each cache. For example, yesod-auth uses an un-exported newtype, CachedMaybeAuth and exports functions that utilize it such as maybeAuth. This means that another module can create its own newtype wrapper to cache the same type from a different action without any cache conflicts.~In Yesod, this is used for a request-local cache that is cleared at the end of every request. See the original announcement: @http://www.yesodweb.com/blog/2013/03/yesod-1-2-cleaner-internals Since 1.4.0 similar to . * can only cache a single value per type. @ stores multiple values per type by indexing on a ByteString keyd is ideal to cache an action that has only one value of a type, such as the session's current user  is required if the action has parameters and can return multiple values per type. You can turn those parameters into a ByteString cache key. For example, caching a lookup of a Link by a token where multiple token lookups might be performed. Since 1.4.0cache the result of this action$Left is a cache miss, Right is a hit a cache keycache the result of this action$Left is a cache miss, Right is a hit None :<=DRkThe  1http://www.yesodweb.com/book/routing-and-handlerstype-safe URLs! associated with a site argument.fghijklfghijklfghijklNone<=/Generate the constructors of a route data type.Clauses for the l method. Generate the j instance.This includes both the k associated type and the l" method. This function uses both  and mkRenderRouteClasses.A more general version of $ which takes an additional context.None<=None!"<=None<=3;<=>?@ABCDEFGHIKJLMNPOQRSTUVWXYZNone0<=Mm0A quasi-quoter to parse a string into a list of M;s. Checks for overlapping routes, failing if present; use pE to skip the checking. See documentation site for details on syntax.pSame as m#, but performs no overlap checking. Converts a multi-line string to a set of resources. See documentation for the format of this string. This is a partial function which calls ! on invalid input."TTake attributes out of the list and put them in the first slot in the result tuple.#$%&mno'(p )*"+,-./012 #$%&mnop./#$%&mno'(p )*"+,-./012None<= 3456789:;<=>?4:;<=>? 3456789:;<=>?None<=s Format a @ in W3 format.tFormat as per RFC 1123.uFormat as per RFC 822.vGet the time 365 days from now in RFC 1123 format. For use as an expiry date on a resource that never expires. See RFC 2616 section 14.21 for details.qrABstuvqrstuvqrABstuvNone09;<=DILRtA diff list that does not directly enforce uniqueness. When creating a widget Yesod will use nub to make it unique.Headers to be added to a Result.5Responses to indicate some form of an error occurred.PPrevents a response body from being fully evaluated before sending the request. Since 1.1.0(The content and optional content length.Content for a web page. By providing this datatype, we can easily create generic site templates, which would have the type signature: PageContent url -> HtmlUrl urlANewtype wrapper allowing injection of arbitrary content into CSS.Usage: (toWidget $ CssBuilder "p { color: red }" Since: 1.1.3pA generic widget, allowing specification of both the subsite and master site datatypes. While this is simply a WriterT1, we define a newtype for better error messages.An extension of the basic WAI :l datatype to provide extra features needed by Yesod. Users should never need to use this directly, as the 5 monad and template haskell code should hide it away.{A generic handler monad, which can have a different subsite and master site. We define a newtype for better error message.2How to respond when an error is thrown internally. Since 1.2.04Wrap up a normal WAI application as a Yesod subsite.CHow to determine the root of the application for constructing URLs.Note that future versions of Yesod may add new constructors without bumping the major version number. As a result, you should not pattern match on Approot values.No application root.@A tuple containing both the POST parameters and submitted files.An augmented WAI C . This can either be a standard ResponseA, or a higher-level data structure which Yesod will turn into a Response.EThe parsed request information. This type augments the standard WAI D with additional information.Same as E, but decoded to Text.KLanguages which the client supports. This is an ordered list by preference.>A random, session-specific token used to prevent CSRF attacks.%Initial session sent from the client. Since 1.2.0.An ordered list of the accepted content types. Since 1.2.0):Return the session data and a function to save the session8Note: although we provide a MonadBaseControl instance,  lifted-base's fork. function is incompatible with the underlying  ResourceTG system. Instead, if you must fork a separate thread, you should use resourceForkIO.Using fork usually leads to an exception that says "Control.Monad.Trans.Resource.register': The mutable state is being accessed after cleanup. Please contact the maintainers."YA F' can be trivially promoted to a widget.4For example, in a yesod-scaffold site you could use: )getHomeR = do defaultLayout "Widget text"wxyz{|}~urls to load asynchronously'widget of js to run on async completion"widget to insert at the bottom of head      !"#$%&'()*.The session contents after running the handler+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\k,wxyz{|}~      !"#$%&'()*+-+*'()%&\ !"#$     [ZYXWVUT{|}~SRQPONMLKJIHGFEDCBA@?>=<;:9876543210/,.wxyz-bwxyz{|}~      !"#$%&'()*+-.0/,123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\None*9:;<=DLR#tuvwxGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdtuvwx tuvwxGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNone<=e/Impose a limit on the size of the request body.fMGet the list of accepted content types from the WAI Request's Accept header. Since 1.2.0gGenerate a random String of alphanumerical characters (a-z, A-Z, and 0-9) of the given length using the given random number generator. ehi max body sizejfkglmnopq    hijgmnopq ehijfkglmnopqNone<=r expire time remote hostsession cookie values current timeremote host field cookie valueyInactive session validity.  !"#$'()*rsyrsyNone /9;<=IOTz#Any type which can be converted to . Since 1.2.0~A class for all data which can be sent in a streaming response. Note that for textual data, instances must use UTF-8 encoding. Since 1.2.0%Anything which can be converted into .. Most of the time, you will want to use the ? constructor. An easier approach will be to use a pre-defined Q function, such as converting your data into a lazy bytestring and then calling  on that.BPlease note that the built-in instances for lazy data structures (F, lazy t, lazy u and v=) will not automatically include the content length for the  constructor.Zero-length enumerator.Removes "extra" information at the end of a content type string. In particular, removes everything after the semicolon, if present.For example, "text/html; charset=utf-8" is commonly used to specify the character encoding for HTML data. This function would return "text/html".Xz{|}~/z{|}~/~z{|}Tz{|}~None !"<=MOTwIndicates that the user provided no specific status code to be used, and therefore the default status code should be used. For normal responses, this would be a 200 response, whereas for error responses this would be an appropriate status code.1For more information on motivation for this, see: Ahttps://groups.google.com/d/msg/yesodweb/vHDBzyu28TM/bezCvviWp4sJ Since 1.2.3.1x#Convert Header to a key/value pair.y save sessionwxz{ywxz{ywxz{None!"*09:;<=?DLORTk<Internal representation of a single provided representation. Since 1.2.0PAdd a fragment identifier to a route to be used when redirecting. For example:  redirect (NewsfeedR :#: storyId) Since 1.2.9.8Some value which can be turned into a URL for redirects.DConverts the value to the URL and a list of query-string parameters.)Get the master site application argument.VGet a specific component of the master site application argument. Analogous to the gets function for operating on StateT.Get the URL rendering function.8The URL rendering function with query-string parameters.Get the route requested by the user. If this is a 404 response- where the user requested an invalid route- this function will return |.Returns a function that runs  actions inside IO.#Sometimes you want to run an inner C action outside the control flow of an HTTP request (on the outer < action). For example, you may want to spawn a new thread: vgetFooR :: Handler RepHtml getFooR = do runInnerHandler <- handlerToIO liftIO $ forkIO $ runInnerHandler $ do 3Code here runs inside GHandler but on a new thread. This is the inner GHandler. ... 1Code here runs inside the request's control flow. This is the outer GHandler. ... UAnother use case for this function is creating a stream of server-sent events using GHandler actions (see yesod-eventsource).'Most of the environment from the outer GHandler is preserved on the inner GHandler , however:bThe request body is cleared (otherwise it would be very difficult to prevent huge memory leaks).The cache is cleared (see CacheKey)..Changes to the response made inside the inner GHandler[ are ignored (e.g., session variables, cookies, response headers). This allows the inner GHandler to outlive the outer GHandler (e.g., on the forkIOV example above, a response may be sent to the client without killing the new thread).6forkIO for a Handler (run an action in the background)Uses C, liftResourceT, and resourceForkIO for correctness and efficiency Since 1.2.8Redirect to the given route. HTTP status code 303 for HTTP 1.1 clients and 302 for HTTP 1.0 This is the appropriate choice for a get-following-post technique, which should be the usual use case.bIf you want direct control of the final status code, or need a different status code, please use .9Redirect to the given URL with the specified status code.:Sets the ultimate destination variable to the given route.RAn ultimate destination is stored in the user session and can be loaded later by .Same as , but uses the current page.UIf this is a 404 handler, there is no current page, and then this call does nothing.HSets the ultimate destination to the referer request header, if present.5This function will not overwrite an existing ultdest.^Redirect to the ultimate destination in the user's session. Clear the value from the session.%The ultimate destination is set with .This function uses ?, and thus will perform a temporary redirect to a GET request.2Remove a previously set ultimate destination. See .0Adds a status and message in the user's session.See .MAdds a message in the user's session but uses RenderMessage to allow for i18nSee .FGets all messages in the user's session, and then clears the variable.See .Calls  with an empty statusCalls  with an empty statusSGets just the last message in the user's session, discards the rest and the status8Bypass remaining handler code and output the given file.For some backends, this is more efficient than reading in the file to memory, since they can optimize file sending via a system call to sendfile.Same as  , but only sends part of a file.SBypass remaining handler code and output the given content with a 200 status code.WBypass remaining handler code and output the given content with the given status code.TBypass remaining handler code and output the given JSON with the given status code. Since 1.4.18 Send a 201 Created@ response with the given route as the Location response header.Send a C<. Please note: this function is rarely necessary, and will  disregard any changes to response headers and session that you have already specified. This function short-circuits. It should be considered only for very specific needs. If you are not sure if you need it, you don't.7Switch over to handling the current request with a WAI  Application. Since 1.2.17Send a raw response without conduit. This is used for cases such as WebSockets. Requires WAI 3.0 or later, and a web server which supports raw responses (e.g., Warp). Since 1.2.16Send a raw response. This is used for cases such as WebSockets. Requires WAI 2.1 or later, and a web server which supports raw responses (e.g., Warp). Since 1.2.7QSend a 304 not modified response immediately. This is a short-circuiting action. Since 1.4.4?Return a 404 not found page. Also denotes no handler available.'Return a 405 method not supported page.Return a 401 status code$Return a 403 permission denied page.$Return a 403 permission denied page.$Return a 400 invalid arguments page.$Return a 400 invalid arguments page.Set the cookie on the client.*Helper function for setCookieExpires valueUnset the cookie on the client.2Note: although the value used for key and path is }9, you should only use ASCII values to be HTTP compliant.6Set the language in the user session. Will show up in  on the next request.!Set an arbitrary response header.,Note that, while the data type used here is }:, you must provide only ASCII value to be HTTP compliant. Since 1.2.0!Deprecated synonym for addHeader.iSet the Cache-Control header to indicate this response should be cached for the given number of seconds. lSet the Expires header to some date in 2037. In other words, this content is never (realistically) expired. NSet an Expires header in the past, meaning this content should not be cached. (Set an Expires header to the given date. Check the if-none-match header and, if it matches the given value, return a 304 not modified response. Otherwise, set the etag header to the given value.Note that it is the responsibility of the caller to ensure that the provided value is a value etag value, no sanity checking is performed by this function. Since 1.4.4~zParse an if-none-match field according to the spec. Does not parsing on weak matches, which are not supported by setEtag. %Set a variable in the user's session.The session is handled by the clientsession package: it sets an encrypted and hashed cookie on the client. This ensures that all data is secure and not tampered with.Same as  %, but uses binary data for the value.Unsets a session variable. See  .Clear all session variables. Since: 1.0.1+Internal use only, not to be confused with .Lookup for session data.)Lookup for session data in binary format.Get all session variables.Get a unique identifier.Redirect to a POST resource.This is not technically a redirect; instead, it returns an HTML page with a POST form, and some Javascript to automatically submit the form. This can be useful when you need to post a plain link somewhere that needs to cause changes on the server. Wraps the  generated by hamletToContent in a .Deprecated synonym for . Since 1.2.0}Provide a URL rendering function to the given function and return the result. Useful for processing Shakespearean templates. Since 1.2.20Get the request's D value.Use a per-request cache to avoid performing the same action multiple times. Values are stored by their type, the result of typeOf from Typeable. Therefore, you should use different newtype wrappers at each cache site. For example, yesod-auth uses an un-exported newtype, CachedMaybeAuth and exports functions that utilize it such as maybeAuth. This means that another module can create its own newtype wrapper to cache the same type from a different action without any cache conflicts.See the original announcement: @http://www.yesodweb.com/blog/2013/03/yesod-1-2-cleaner-internals Since 1.2.0a per-request cache. just like . * can only cache a single value per type. = stores multiple values per type by usage of a ByteString keyd is ideal to cache an action that has only one value of a type, such as the session's current user  is required if the action has parameters and can return multiple values per type. You can turn those parameters into a ByteString cache key. For example, caching a lookup of a Link by a token where multiple token lookups might be performed. Since 1.4.09Get the list of supported languages supplied by the user.[Languages are determined based on the following three (in descending order of preference):The _LANG get parameter.The _LANG cookie. The _LANG user session variable.Accept-Language HTTP header.Yesod will seek the first language from the returned list matched with languages supporting by your application. This language will be used to render i18n templates. If a matching language is not found the default language will be used.1This is handled by parseWaiRequest (not exposed).Lookup a request header. Since 1.2.2Lookup a request header. Since 1.2.2 &Lookup basic authentication data from  Authorization3 header of request. Returns user name and password Since 1.4.9!&Lookup bearer authentication datafrom  Authorization/ header of request. Returns bearer token value Since 1.4.9"Lookup for GET parameters.#Lookup for GET parameters.$Lookup for POST parameters.&Lookup for POSTed files.'Lookup for POSTed files.(Lookup for cookie data.)Lookup for cookie data.*Select a representation to send to the client based on the representations provided inside this do-block. Should be used together with +. Since 1.2.0+nProvide a single representation to be used, based on the request of the client. Should be used together with *. Since 1.2.0,Same as +, but instead of determining the content type from the type of the value itself, you provide the content type separately. This can be a convenience instead of creating newtype wrappers for uncommonly used content types. CprovideRepType "application/x-special-format" "This is the content" Since 1.2.0-3Stream in the raw request body without any parsing. Since 1.2.0.ZStream the data from the file. Since Yesod 1.2, this has been generalized to work in any  MonadResource./+Provide a pure value for the response body. 1respond ct = return . TypedContent ct . toContent Since 1.2.00Use a Source for the response body.6Note that, for ease of use, the underlying monad is a HandlerT%. This implies that you can run any HandlerT action. However, since a streaming response occurs after the response headers have already been sent, some actions make no sense here. For example: short-circuit responses, setting headers, changing status codes, etc. Since 1.2.01fIn a streaming response, send a single chunk of data. This function works on most datatypes, such as  ByteString and Html. Since 1.2.02oIn a streaming response, send a flush command, causing all buffered data to be immediately sent to the client. Since 1.2.03Type-specialized version of 1 for strict  ByteStrings. Since 1.2.04Type-specialized version of 1 for lazy  ByteStrings. Since 1.2.05Type-specialized version of 1 for strict Texts. Since 1.2.06Type-specialized version of 1 for lazy Texts. Since 1.2.07Type-specialized version of 1 for Htmls. Since 1.2.08,Converts a child handler to a parent handlerExported since 1.4.119,The default cookie name for the CSRF token ( XSRF-TOKEN). Since 1.4.14:'Sets a cookie with a CSRF token, using 9 for the cookie name. Since 1.4.14;Takes a A and overrides its value with a CSRF token, then sets the cookie. Since 1.4.14<,The default header name for the CSRF token ( X-XSRF-TOKEN). Since 1.4.14=Takes a header name to lookup a CSRF token. If the value doesn't match the token stored in the session, this function throws a  error. Since 1.4.14>rTakes a header name to lookup a CSRF token, and returns whether the value matches the token stored in the session. Since 1.4.14?8The default parameter name for the CSRF token ("_token") Since 1.4.14@Takes a POST parameter name to lookup a CSRF token. If the value doesn't match the token stored in the session, this function throws a  error. Since 1.4.14AzTakes a POST parameter name to lookup a CSRF token, and returns whether the value matches the token stored in the session. Since 1.4.14BChecks that a valid CSRF token is present in either the request headers or POST parameters. If the value doesn't match the token stored in the session, this function throws a  error. Since 1.4.14 error handler)default destination if nothing in sessionstatusmessageoffsetcountminuteskeypath    ~ keyvalue !"#$%&'()*+,-./0123456789:;<=>?@AB(The header name to lookup the CSRF token0The POST parameter name to lookup the CSRF tokenCDEFGH~ +      !"#$%&'()*+,-./0123456789:;<=>?@AB- .#%(& !"$)'/01234567*+,    + 8:;9=><A@?B    ~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHNone9:;<=DILORTN>Allows adding some CSS to the page with a specific media type. Since 1.2OEAdd the given content to the page, but only for the given media type. Since 1.2RSet the page title. Calling R1 multiple times overrides previously set values.SSet the page title. Calling R1 multiple times overrides previously set values.T'Link to the specified local stylesheet.U'Link to the specified local stylesheet.V(Link to the specified remote stylesheet.W(Link to the specified remote stylesheet.Z#Link to the specified local script.[#Link to the specified local script.\$Link to the specified remote script.]$Link to the specified remote script.b Wraps the  generated by hamletToContent in a .c Wraps the  generated by hamletToContent in a . Since 1.2.1:JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%JKLMNOPQRSTUVWXYZ[\]^_`abcde%^_bcPQJKLMNORSTUVWXZ[\]Yed`a6JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None:<=*~Define settings for a Yesod applications. All methods have intelligent defaults, and therefore no implementation is required.OAn absolute URL to the root of the application. Do not include trailing slash.Default value: 0. This is valid under the following conditions:7Your application is served from the root of the domain.]You do not use any features that require absolute URLs, such as Atom feeds and XML sitemaps.JIf this is not true, you should override with a different implementation.Output error response pages.Default value: .6Applies some form of layout to the contents of a page.Override the rendering function for a particular URL. One use case for this is to offload static hosting to a different domain name to avoid sending cookies.,Determine if a request is authorized or not.Return  if the request is authorized, C a message if unauthorized. If authentication is required, return . Determines whether the current request is a write request. By default, this assumes you are following RESTful principles, and determines this from request method. In particular, all except the following request methods are considered write: GET HEAD OPTIONS TRACE.DThis function is used to determine if a request is authorized; see .%The default route for authentication.Used in particular by 7, but library users can do whatever they want with it.6A function used to clean up path segments. It returns  with a clean path or a with a new set of pieces the user should be redirected to. The default implementation enforces:No double slashesThere is no trailing slash.bNote that versions of Yesod prior to 0.7 used a different set of rules involing trailing slashes.Builds an absolute URL by concatenating the application root with the pieces of a path and a query string, if any. Note that the pieces of the path have been previously cleaned up by .This function is used to store some static content to be served as an external file. The most common case of this is stashing CSS and JavaScript content in an external file; the  Yesod.Widget module uses this feature.The return value is |E if no storing was performed; this is the default implementation. A  0 gives the absolute URL of the file, whereas a   gives the type-safe URL. The former is necessary when you are serving the content outside the context of a Yesod application, such as via memcached.5Maximum allowed length of the request body, in bytes.If Nothing, no maximum is applied.Default: 2 megabytes. Creates a Logger to use for log messages.KNote that a common technique (endorsed by the scaffolding) is to create a Logger value and place it in your foundation datatype, and have this method return that already created value. That way, you can use that same Logger1 for printing messages during app initialization. Default: the  function.Send a message to the Logger provided by  getLogger. Default: the  function, using  to check whether we should log.<Where to Load sripts from. We recommend the default value, .$Create a session backend. Returning |l disables sessions. If you'd like to change the way that the session cookies are created, take a look at .2Default: Uses clientsession with a 2 hour timeout.How to store uploaded files.Default: When the request body is greater than 50kb, store in a temp file. For chunked request bodies, store in a temp file. Otherwise, store in memory.5Should we log the given log source/level combination. Default: the  function.5Should we log the given log source/level combination.&Note that this is almost identical to  shouldLog, except the result lives in IOx. This allows you to dynamically alter the logging level of your application by having this result depend on, e.g., an IORef.'The default implementation simply uses  shouldLog(. Future versions of Yesod will remove  shouldLog! and use this method exclusively. Since 1.2.4{A Yesod middleware, which will wrap every handler function. This allows you to run code before and after a normal handler. Default: the  function. Since: 1.1.6How to allocate an  InternalState for each request.|The default implementation is almost always what you want. However, if you know that you are never taking advantage of the  MonadResource instance in your handler functions, setting this to a dummy implementation can provide a small optimization. Only do this if you really know what you're doing, otherwise you can turn safe code into a runtime error! Since 1.4.2Default implementation of ;. Sends to stdout and automatically flushes on each write. Since 1.4.10Default implementation of a. Checks if the message should be logged using the provided function, and if so, formats using . You can use  as the provided function. Since 1.4.10Default implementation of . Logs everything at or above ". Since 1.4.10A default implementation of  that can be used with  . Just uses . Since 1.4.10Default implementation of ^. Adds the response header "Vary: Accept, Accept-Language" and performs authorization checks. Since 1.2.0Defends against session hijacking by setting the secure bit on session cookies so that browsers will not transmit them over http. With this setting on, it follows that the server will regard requests made over http as sessionless, because the session cookie will not be included in the request. Use this as part of a total security measure which also includes disabling HTTP traffic to the site or issuing redirects from HTTP urls, and composing  with the site's . Since 1.4.7Apply a Strict-Transport-Security header with the specified timeout to all responses so that browsers will rewrite all http links to https until the timeout expires. For security, the max-age of the STS header should always equal or exceed the client sessions timeout. This defends against hijacking attacks on the sessions of users who attempt to access the site using an http url. This middleware makes a site functionally inaccessible over vanilla http in all standard browsers. Since 1.4.7+Check if a given request is authorized via  and . Since 1.2.0Calls  with , <, and ? as parameters. Since 1.4.14Looks up the CSRF token from the request headers or POST parameters. If the value doesn't match the token stored in the session, this function throws a  error.7For details, see the "AJAX CSRF protection" section of Yesod.Core.Handler. Since 1.4.14Calls  with the 9. Since 1.4.14Takes a F and overrides its value with a CSRF token, then sets the cookie. See ;.7For details, see the "AJAX CSRF protection" section of Yesod.Core.Handler. Since 1.4.14Calls  and .7For details, see the "AJAX CSRF protection" section of Yesod.Core.Handler. Since 1.4.14Convert a widget to a .The default error handler for .Default formatting for log messages. When you use the template haskell logging functions for to log with information about the source location, that information will be appended to the end of the log. When you use the non-TH logging functions, like  logDebugN, this function does not include source information. This currently works by checking to see if the package name is the string "<unknown>". This is a hack, but it removes some of the visual clutter from non-TH logs. Since 1.4.10eCustomize the cookies used by the session backend. You may use this function on your definition of .[For example, you could set the cookie domain so that it would work across many subdomains: |makeSessionBackend site = (fmap . fmap) (customizeSessionCookies addDomain) ... where addDomain cookie = cookie {  = Just ".example.com" } $Default: Do not customize anything (). Create a SessionBackendB which reads the session key from the named environment variable.This can be useful if: 8You can't rely on a persistent file system (e.g. Heroku)?Your application is open source (e.g. you can't commit the key)By keeping a consistent value in the environment variable, your users will have consistent sessions without relying on the file system.BNote: A suitable value should only be obtained in one of two ways: URun this code without the variable set, a value will be generated and printed on devstdout/Use clientsession-generate Since 1.4.5GGuess the approot based on request headers. For more information, see Network.Wai.Middleware.Approot;In the case of headers being unavailable, it falls back to  Since 1.4.16MGuess the approot based on request headers, with fall back to the specified AppRoot. Since 1.4.16)Get the textual application root from an  value. Since 1.4.173!Check whether we should log thisposition in source codemessageminutes)Whether or not to perform the CSRF check..The header name to lookup the CSRF token from.6The POST parameter name to lookup the CSRF token from.messageminuteskey fileminutesenvironment variable nameThe encryption keySee ySee y session name3None9<= rProvide both an HTML and JSON representation for a piece of data, using the default layout for the HTML output ().Wraps a data type in a RepJson6. The data type must support conversion to JSON via .5Convert a value to a JSON representation via aeson's  function.5Convert a value to a JSON representation via aeson's  function.-Provide a JSON representation for usage with  selectReps, using aeson's  (aeson >= 0.11: %) function to perform the conversion.mParse the request body to a data type as a JSON value. The data type must support conversion from JSON via 2. If you want the raw JSON value, just ask for a  .Note that this function will consume the request body. As such, calling it twice will result in a parse error on the second call, since the request body will no longer be available.Same as 8, but return an invalid args response on a parse error.Same as 8, but return an invalid args response on a parse error.Convert a list of values to an .pjsonOrRedirect simplifies the scenario where a POST handler sends a different response based on Accept headers: .200 with JSON data if the client prefers application/json (e.g. AJAX, see  acceptsJSON).)3xx otherwise, following the PRG pattern.xjsonEncodingOrRedirect simplifies the scenario where a POST handler sends a different response based on Accept headers: .200 with JSON data if the client prefers application/json (e.g. AJAX, see  acceptsJSON).83xx otherwise, following the PRG pattern. @since 1.4.21Returns True if the client prefers application/json as indicated by the Accept HTTP header. HTMLJSONRedirect targetData to send via JSONRedirect targetData to send via JSONRedirect targetData to send via JSON   None !":<=MOTBFunction used internally by Yesod in the process of converting a  into an : . Should not be needed by users.Run a  completely outside of Yesod. This function comes with many caveats and you shouldn't use it unless you fully understand what it's doing and how it works.pAs of now, there's only one reason to use this function at all: in order to run unit tests of functions inside Y but that aren't easily testable with a full HTTP request. Even so, it's better to use wai-test or  yesod-test! instead of using this function.4This function will create a fake HTTP request (both wai's D and yesod's D) and feed it to the HandlerT#. The only useful information the HandlerTU may get from the request is the session map, which you must supply as argument to runFakeHandler. All other fields contain fake information, which means that they can be accessed but won't have any useful information. The response of the HandlerTh is completely ignored, including changes to the session, cookies or headers. We only return you the HandlerT's return value.url query string None<=designed to be used as 5unsafeHandler = Unsafe.fakeHandlerGetLogger appLoggerNone!"$9:;<=DORTThis class is automatically instantiated when you use the template haskell mkYesod function. You should never need to deal with it directly.A helper function for creating YesodSubDispatch instances, used by the internal generated code. This function has been exported since 1.4.11. It promotes a subsite handler to a wai application.None <=DMR kNone<=A type-safe, concise method of creating breadcrumbs for pages. For each resource, you declare the title of the page and the parent resource (if present).JReturns the title and the parent resource, if available. If you return a |+, then this is considered a top-level page.jGets the title of the current page and the hierarchy of parent pages, along with their respective titles.None 9;<=DR7Generates URL datatype and site function for the given M%s. This is used for creating sites, not subsites. See  mkYesodSub for the latter. Use m to create the Ms.Sometimes, you will want to declare your routes in one file and define your handlers elsewhere. For example, this is the only way to break up a monolithic file into smaller parts. Use this function, paired with , to do just that.See .<Get the Handler and Widget type synonyms for the given site.* arguments indicate a monomorphic type, a l argument indicates a polymorphic type, and provides the list of classes the type must be instance of.If the generation of  instance require finer control of the types, contexts etc. using this combinator. You will hardly need this generality. However, in certain situations, like when writing library/plugin for yesod, this combinator becomes handy. name of the argument datatypefoundation typearguments for the typeis this a subsiteunwrap handlerThe master site typeContext of the instanceUnwrap handler The resource  None<=igNone 9;<=DRConvert the given argument into a WAI application, executable with any WAI handler. This function will provide no middlewares; if you want commonly used middlewares, please use .Same as m, but provides a default set of middlewares. This set may change with future releases, but currently covers:LoggingGZIP compressionAutomatic HEAD method handling?Request method override with the _method query string parameter>Accept header override with the _accept query string parameterpA convenience method to run an application using the Warp webserver on the specified port. Automatically calls . Provides a default set of middlewares. This set may change at any point without a breaking version number. Currently, it includes:AIf you need more fine-grained control of middlewares, please use  directly. Since 1.2.0A default set of middlewares. Since 1.2.02All of the default middlewares, excluding logging. Since 1.2.12Deprecated synonym for .;Runs your application using default middlewares (i.e., via ). It reads port information from the PORT environment variable, as used by tools such as Keter and the FP Complete School of Haskell.Note that the exact behavior of this function may be modified slightly over time to work correctly with external tools, without a change to the type signature. ('&+*)mnopmpno('&+*) None 9:;<=DR Return an $ value, with the given i18n message.8Return the same URL if the user is authorized to see it.Built on top of `. This is useful for building page that only contain links to pages the user is allowed to see.is this a write request? v9$#"! %('&+*)-,./012345678:fghijklmnopstu    '()+tuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABJKLMNOPQRSTUVWXYZ[\]^_`abcdejklhifg   $#"! '()yvwxtuqrstuv9-,%:6758243./10 !" #$ #% #& #' #( #) *+ *, *- *. */ *0 *1 *2345346789:;<:;=>?@ABCABDABEABFABGABHABIABJABKABLABMABNABOABPABQABRABSTUVTUWTUXTUYTUZTU[\]^\]_`ab`cd`ef`gh`ij`ik`il`mn`mo`mp`mq>?rstuvvwxyz{|}~            !"#$%&'()*+,,-./01234566789:;<=>>?@ABBCCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                         ! " 6 7 # $%&'()*+*,-.*/30123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTsUVsUWsUX3Y/Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3Y333Y3Y * *0*``````````(yesod-core-1.4.21-FtVpW5jltzzCHwWKawDQNKYesod.Core.Json Yesod.CoreYesod.Core.DispatchYesod.Routes.TH.TypesYesod.Core.TypesYesod.Core.ContentYesod.Core.HandlerYesod.Core.WidgetYesod.Core.UnsafeYesod.Routes.TH.DispatchYesod.Routes.OverlapYesod.Core.TypeCacheYesod.Routes.ClassYesod.Routes.TH.RenderRouteYesod.Routes.TH.ParseRouteYesod.Routes.TH.RouteAttrsYesod.Routes.THYesod.Routes.ParsePaths_yesod_coreYesod.Core.Internal.UtilYesod.Core.Class.HandlerYesod.Core.Internal.RequestYesod.Core.Internal.SessionYesod.Core.Internal.ResponseYesod.Core.Class.YesodYesod.Core.Internal.RunYesod.Core.Class.DispatchYesod.Core.Internal.LiteAppYesod.Core.Class.BreadcrumbsYesod.Core.Internal.THYesod.Core.Internal%aeson-0.11.2.0-5DxCuyeR5wK1EbzxdYDVasData.Aeson.Types.Instances.:Data.Aeson.Types.Class toEncodingtoJSONToJSON parseJSONFromJSON.=Data.Aeson.Types.InternalobjectNullBoolNumberStringArrayObjectValuebaseControl.Monad.IO.ClassliftIOMonadIO,monad-control-1.0.1.0-1xoC3YihUKYHLar1SsWtYeControl.Monad.Trans.ControlMonadBaseControltransformers-0.5.2.0Control.Monad.Trans.Class MonadTranslift.transformers-base-0.4.4-FMTbgPqmqMsCiOz3biyAGxControl.Monad.Base MonadBase*monad-logger-0.3.18-GR9g7j4EerN1oYzzoLqmd7Control.Monad.Logger logOtherS logErrorSlogWarnSlogInfoS logDebugSlogOtherlogErrorlogWarnlogInfologDebug LevelOther LevelError LevelWarn LevelInfo LevelDebugLogLevel MonadLogger(path-pieces-0.2.1-6d85LEGh3iiE9d9gfFmdFKWeb.PathPieces toPathPiece fromPathPiece PathPiecetoPathMultiPiecefromPathMultiPiecePathMultiPiece(resourcet-1.1.7.4-EPw5Ucp5s8AERJojCCz0nc%Control.Monad.Trans.Resource.Internal liftResourceT MonadResource*shakespeare-2.0.8.2-9RVLaeu9WBQ4Amt20Ak0Ea Text.Cassiuscassius Text.LuciusluciusText.CssCommon renderCssUrlText.CssCssUrl Text.JuliusjuliusrenderJavascriptUrl JavascriptUrl Text.HamletxhamlethamletshamletHtmlUrlliftBase"wai-3.2.1.1-8uFpvNjQyLRAS9CS9xIVt3 Network.Wai Application FlatResourcefrParentPiecesfrNamefrPieces frDispatchfrCheckDispatchMethodsSubsite methodsMultimethodsMethods subsiteType subsiteFuncPieceStaticDynamic CheckOverlapResource resourceNameresourcePiecesresourceDispatch resourceAttrs resourceCheck ResourceTree ResourceLeafResourceParentresourceTreePiecesresourceTreeName resourceMultiflatten$fLiftDispatch$fFunctorDispatch $fLiftPiece$fFunctorPiece$fLiftResource$fLiftResourceTree $fShowPiece$fShowDispatch$fShowResource$fFunctorResource$fFunctorResourceTree RouteAttrs routeAttrs ParseRoute parseRoute RenderRouteRoute renderRoute parseRoutesparseRoutesFileparseRoutesFileNoCheckparseRoutesNoCheckputTimegetTimeformatW3 formatRFC1123 formatRFC822getCurrentMaxExpiresRFC1123Logger loggerSet loggerDateHandlerContents HCContentHCError HCSendFile HCRedirect HCCreatedHCWaiHCWaiAppGWDatagwdBodygwdTitle gwdScriptsgwdStylesheetsgwdCss gwdJavascriptgwdHead CssBuilderUrlBodyHeadTitleunTitle Stylesheet styleLocationstyleAttributesScriptscriptLocationscriptAttributes UniqueListLocationLocalRemoteHeader AddCookie DeleteCookie ErrorResponseNotFound InternalError InvalidArgsNotAuthenticatedPermissionDenied BadMethodDontFullyEvaluateunDontFullyEvaluate ContentTypeRepXmlRepPlainRepJsonRepHtml TypedContentContentContentBuilder ContentSource ContentFileContentDontEvaluate PageContent pageTitlepageHeadpageBody CssBuilder unCssBuilderRYWidgetT unWidgetTYesodAppGHState ghsSessionghsRBCghsIdentghsCache ghsCacheBy ghsHeaders MonadRouteHandlerT unHandlerT ParentRunnerYesodSubRunnerEnvysreParentRunner ysreGetSubysreToParentRoute ysreParentEnvYesodRunnerEnv yreLoggeryreSiteyreSessionBackendyreGenyreGetMaxExpires HandlerDatahandlerRequest handlerEnv handlerStatehandlerToParenthandlerResource RunHandlerEnv rheRenderrheRouterheSite rheUploadrheLog rheOnError rheMaxExpires WaiSubsite runWaiSubsiteTextsBottomOfHeadAsyncScriptLoadPosition BottomOfBodyBottomOfHeadBlocking AuthResult AuthorizedAuthenticationRequired UnauthorizedResolvedApprootApprootApprootRelative ApprootStatic ApprootMasterApprootRequest FileUploadFileUploadMemoryFileUploadDiskFileUploadSourceFileInfofileNamefileContentType fileSourceRawfileMoveRequestBodyContents YesodResponseYRWaiYRWaiAppYRPlain YesodRequest reqGetParams reqCookies reqWaiRequestreqLangsreqToken reqSession reqAcceptClientSessionDateCachecsdcNow csdcExpirescsdcExpiresSerialized SessionCookieSessionBackend sbLoadSession SaveSession SessionMapWaiSubsiteRoute loggerPutStr$fParseRouteWaiSubsiteD:R:RouteWaiSubsite0$fRenderRouteWaiSubsite$fIsStringContent$fSemigroupUniqueList$fMonoidUniqueList$fMonadLoggerIOHandlerT$fMonadLoggerHandlerT$fMonadResourceHandlerT$fMonadThrowHandlerT$fMonadBaseControlbHandlerT$fMonadReadersiteHandlerT$fMonadBasebHandlerT$fMonadIOHandlerT$fMonadHandlerT$fApplicativeHandlerT$fFunctorHandlerT$fMonadTransHandlerT$fMonadActiveHandlerT$fMonadActiveWidgetT$fMonadLoggerIOWidgetT$fMonadLoggerWidgetT$fMonadResourceWidgetT$fMonadMaskWidgetT$fMonadCatchWidgetT$fMonadMaskHandlerT$fMonadCatchHandlerT$fMonadThrowWidgetT$fMonadTransWidgetT$fMonadReadersiteWidgetT$fMonadBaseControlbWidgetT$fMonadBasebWidgetT$fMonadIOWidgetT$fMonadWidgetT$fApplicativeWidgetT$fFunctorWidgetT$fExceptionHandlerContents$fShowHandlerContents$fSemigroupGWData$fMonoidGWData$fSemigroupBody$fSemigroupHead$fNFDataHeader$fIsStringWidgetT$fSemigroupWidgetT$fMonoidWidgetT$fSerializeSessionCookie $fShowRoute $fEqRoute $fReadRoute $fOrdRoute$fShowSessionCookie$fReadSessionCookie$fEqClientSessionDateCache$fShowClientSessionDateCache$fEqAuthResult$fShowAuthResult$fReadAuthResult$fShowErrorResponse$fEqErrorResponse $fEqHeader $fShowHeader$fShowLocation $fEqLocation $fShowScript $fEqScript$fShowStylesheet$fEqStylesheet $fMonoidHead $fMonoidBody MonadWidget liftWidgetT MonadHandler HandlerSite liftHandlerTclientSessionDateCacherToTypedContenttoTypedContentHasContentTypegetContentTypeToFlushBuildertoFlushBuilder ToContent toContent emptyContentrepJsonrepPlainrepXmltypeHtml typePlaintypeJsontypeXmltypeAtomtypeRsstypeJpegtypePngtypeGiftypeSvgtypeJavascripttypeCsstypeFlvtypeOgv typeOctetsimpleContentTypecontentTypeTypes$fToTypedContentJavascript$fToTypedContentCss!$fToTypedContentDontFullyEvaluate$fToTypedContentText$fToTypedContent[]$fToTypedContentText0$fToTypedContentMarkupM$fToTypedContentEncoding$fToTypedContentValue$fToTypedContentRepXml$fToTypedContentRepPlain$fToTypedContentRepJson$fToTypedContent(,)$fToTypedContent()$fToTypedContentTypedContent$fHasContentTypeJavascript$fHasContentTypeCss$fHasContentTypeText$fHasContentTypeText0$fHasContentTypeMarkupM$fHasContentTypeEncoding$fHasContentTypeValue$fToContentEncoding$fToContentValue$fToContentDontFullyEvaluate!$fHasContentTypeDontFullyEvaluate$fHasContentTypeRepXml$fHasContentTypeRepPlain$fHasContentTypeRepJson$fToFlushBuilderMarkupM$fToFlushBuilderFlush$fToFlushBuilder[]$fToFlushBuilderFlush0$fToFlushBuilderText$fToFlushBuilderFlush1$fToFlushBuilderText0$fToFlushBuilderFlush2$fToFlushBuilderByteString$fToFlushBuilderFlush3$fToFlushBuilderByteString0$fToFlushBuilderFlush4$fToFlushBuilderBuilder$fToFlushBuilderFlush5$fToContentResumableSource$fToContentConduitM$fToContentPipe$fToContentJavascript$fToContentCss$fToContentTypedContent$fToContent(,) $fToContent()$fToContentMarkupM $fToContent[]$fToContentText$fToContentText0$fToContentByteString$fToContentByteString0$fToContentBuilder$fToContentContent$fToContentRepXml$fToContentRepPlain$fToContentRepJson ProvidedRepFragment:#: RedirectUrl toTextUrl getRequestrunRequestBodygetYesod getsYesod getUrlRendergetUrlRenderParamsgetCurrentRoute handlerToIO forkHandlerredirect redirectWith setUltDestsetUltDestCurrentsetUltDestRefererredirectUltDest clearUltDest addMessage addMessageI getMessages setMessage setMessageI getMessagesendFile sendFilePart sendResponsesendResponseStatussendStatusJSONsendResponseCreatedsendWaiResponsesendWaiApplicationsendRawResponseNoConduitsendRawResponse notModifiednotFound badMethodnotAuthenticatedpermissionDeniedpermissionDeniedI invalidArgs invalidArgsI setCookie getExpires deleteCookie setLanguage addHeader setHeader cacheSeconds neverExpiresalreadyExpired expiresAtsetEtag setSession setSessionBS deleteSession clearSession lookupSessionlookupSessionBS getSessionnewIdentredirectToPosthamletToRepHtmlgiveUrlRendererwithUrlRenderer waiRequestgetMessageRendercachedcachedBy languages lookupHeader lookupHeaderslookupBasicAuthlookupBearerAuthlookupGetParamslookupGetParamlookupPostParamslookupPostParam lookupFile lookupFiles lookupCookie lookupCookies selectRep provideRepprovideRepTyperawRequestBody fileSourcerespond respondSource sendChunk sendFlush sendChunkBS sendChunkLBS sendChunkTextsendChunkLazyText sendChunkHtml stripHandlerTdefaultCsrfCookieName setCsrfCookiesetCsrfCookieWithCookiedefaultCsrfHeaderNamecheckCsrfHeaderNamedhasValidCsrfHeaderNameddefaultCsrfParamNamecheckCsrfParamNamedhasValidCsrfParamNamedcheckCsrfHeaderOrParam$fRedirectUrlmasterFragment$fRedirectUrlmaster(,)$fRedirectUrlmaster(,)0$fRedirectUrlmasterRoute$fRedirectUrlmaster[]$fRedirectUrlmasterText$fShowFragment ToWidgetHead toWidgetHead ToWidgetBody toWidgetBody ToWidgetMedia toWidgetMediaToWidgettoWidgetsetTitle setTitleI addStylesheetaddStylesheetAttrsaddStylesheetRemoteaddStylesheetRemoteAttrsaddStylesheetEitheraddScriptEither addScriptaddScriptAttrsaddScriptRemoteaddScriptRemoteAttrswhamlet whamletFilewhamletFileWithSettings asWidgetTihamletToRepHtml ihamletToHtmlhandlerToWidgetwidgetToParentWidget$fToWidgetHeadsiteMarkupM$fToWidgetHeadsiteJavascript$fToWidgetHeadsite(->)$fToWidgetHeadsiteCssBuilder$fToWidgetHeadsite(->)0$fToWidgetHeadsiteCss$fToWidgetHeadsite(->)1$fToWidgetHeadsite(->)2$fToWidgetBodysiteMarkupM$fToWidgetBodysiteJavascript$fToWidgetBodysite(->)$fToWidgetBodysite(->)0$fToWidgetMediasiteCssBuilder$fToWidgetMediasite(->)$fToWidgetMediasiteCss$fToWidgetMediasite(->)0$fToWidgetsiteMarkupM$fToWidgetsite'WidgetT$fToWidgetsiteJavascript$fToWidgetsite(->)$fToWidgetsiteCssBuilder$fToWidgetsite(->)0$fToWidgetsiteCss$fToWidgetsite(->)1$fToWidgetsite(->)2Yesodapproot errorHandler defaultLayouturlRenderOverride isAuthorizedisWriteRequest authRoute cleanPathjoinPathaddStaticContentmaximumContentLength makeLoggermessageLoggerSourcejsLoadermakeSessionBackend fileUpload shouldLog shouldLogIOyesodMiddlewareyesodWithInternalStatedefaultMakeLoggerdefaultMessageLoggerSourcedefaultShouldLogdefaultShouldLogIOdefaultYesodMiddlewaresslOnlySessionssslOnlyMiddlewareauthorizationCheckdefaultCsrfCheckMiddlewarecsrfCheckMiddlewaredefaultCsrfSetCookieMiddlewarecsrfSetCookieMiddlewaredefaultCsrfMiddlewarewidgetToPageContentdefaultErrorHandlerformatLogMessagecustomizeSessionCookiesdefaultClientSessionBackendenvClientSessionBackendclientSessionBackendloadClientSession guessApprootguessApprootOrgetApprootTextdefaultLayoutJson jsonToRepJson returnJsonreturnJsonEncoding provideJson parseJsonBodyparseJsonBody_requireJsonBodyarrayjsonOrRedirectjsonEncodingOrRedirect acceptsJsonrunFakeHandler yesodRunner yesodRenderfakeHandlerGetLoggerYesodSubDispatchyesodSubDispatch YesodDispatch yesodDispatch subHelper LiteWidget LiteHandlerLiteApp unLiteApp LiteAppRouteliteApp dispatchToonMethodonStatic withDynamicwithDynamicMultiD:R:RouteLiteApp0YesodBreadcrumbs breadcrumb breadcrumbsmkYesod mkYesodWith mkYesodDatamkYesodSubDatamkYesodDispatchmkYesodSubDispatch toWaiAppPlaintoWaiAppwarpmkDefaultMiddlewaresdefaultMiddlewaresNoLogging warpDebugwarpEnv unauthorizedI yesodVersionmaybeAuthorizedgetRouteToParentdefaultLayoutSub showIntegral readIntegralmkDispatchClauseSDC clause404 extraParams extraConsenvExpreqExpMkDispatchSettings mdsRunHandlermdsSubDispatchermdsGetPathInfomdsSetPathInfo mdsMethodmds404mds405 mdsGetHandler mdsUnwrapperdefaultGetHandleroverlapParentsOverlapF _overlapF1 _overlapF2Overlapoverlap1overlap2 FlattenedfNamesfPieces fHasSuffixfCheckoverlaps piecesOverlapfindOverlapNames findOverlapsF findOverlapF hasSuffix KeyedTypeMapTypeMap mkRouteConsmkRenderRouteClausesmkRenderRouteInstancemkRenderRouteInstance' notStrict instanceDmkParseRouteInstancemkRouteAttrsInstancegoTreegoResresourcesFromStringGHC.Errerror takeAttrsTypeTreeTTTermTTAppTTListparseRoutesFileWith readUtf8FilepiecesFromStringCheckaddAttrsdispatchFromString drop1SlashpiecesFromString parseType parseTypeTree toTypeTreettToTypepieceFromStringcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName time-1.6.0.1Data.Time.Clock.UTCUTCTimeposixDayLength_int64 diffTimeScaleNetwork.Wai.InternalResponseRequest queryStringGHC.BasereplaceToParent$fMonadWidgetConduitM$fMonadWidgetPipe$fMonadWidgetWriterT$fMonadWidgetStateT$fMonadWidgetRWST$fMonadWidgetRWST0$fMonadWidgetWriterT0$fMonadWidgetStateT0$fMonadWidgetReaderT$fMonadWidgetErrorT$fMonadWidgetMaybeT$fMonadWidgetListT$fMonadWidgetIdentityT$fMonadWidgetWidgetT$fMonadHandlerConduitM$fMonadHandlerPipe$fMonadHandlerWriterT$fMonadHandlerStateT$fMonadHandlerRWST$fMonadHandlerRWST0$fMonadHandlerWriterT0$fMonadHandlerStateT0$fMonadHandlerReaderT$fMonadHandlerErrorT$fMonadHandlerMaybeT$fMonadHandlerListT$fMonadHandlerIdentityT$fMonadHandlerWidgetT$fMonadHandlerHandlerTlimitRequestBody httpAccept randomStringtooLargeResponseparseWaiRequesttextQueryString addTwoLettersfromByteVector mkFileInfoLBSmkFileInfoFilemkFileInfoSourcetokenKeylangKeyencodeClientSessiondecodeClientSessionbytestring-0.10.8.1Data.ByteString.Lazy.Internal ByteString#text-1.2.2.1-9Yh8rJoh8fO2JMLWffT3QsData.Text.Internal.LazyText)blaze-html-0.8.1.1-FWDyo2PT9Ai9uTv7METXp8Text.Blaze.HtmlHtml defaultStatus headerToPair yarToResponseevaluateContent getStatusNothingData.Text.Internal parseMatchaddHeaderInternal#cookie-0.4.2-3fDvn7tBlVA5BS7IxBqMo9 Web.Cookie SetCookiegetputmodifytell handlerErrorhcErrorrbHelper rbHelper' askHandlerEnv ultDestKeymsgKey modSessionlookup' validCsrfcsrfErrorMessagepreEscapedLazyTextrulestoUniqueliftGWD Data.EitherRightLeftJustsetCookieDomainid asyncHelperjsToHtmljelperleftrightfileLocationToStringResultjsonOrRedirect' runHandlerreturnDeepSessionMapsafeEhresolveApproot"$fYesodSubDispatchWaiSubsitemaster$fMonoidLiteApp$fParseRouteLiteApp$fRenderRouteLiteApp$fYesodDispatchLiteApp$fYesodLiteAppmasterTypeSynsmkYesodGeneralmkDispatchInstancemkYesodDataGeneralmkMDS toWaiAppYretoWaiAppLogger serverValuegetGetMaxExpires+blaze-markup-0.7.0.3-CVsxE1CnsL6EE2OJKqS4gG Text.BlazepreEscapedToMarkuptoHtmlText.Shakespeare.I18NmkMessageVariant mkMessageFor mkMessage ToMessage toMessage RenderMessage renderMessageLang SomeMessage