h$&3 L      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None '(-> ;SpockGive you access to a database connectin from the connection pool. The connection is released back to the pool once the function terminates.<SpockRead the application's state. If you wish to have mutable state, you could use a TVar from the STM packge.=SpockGet the session manager>SpockGet the Spock configuration@Spock8Hook into the session manager to trigger custom behaviorCSpock%Configuration for the session managerESpockname of the client side cookieFSpock+how long the client side cookie should liveGSpock$how long shoud a client session liveHSpock,entropy of the session id sent to the clientISpockif this is true, every page reload will renew the session time to live counterJSpockinitial session for visitorsKSpockstorage interface for sessionsLSpockhow often should the session manager check for dangeling dead sessionsMSpockhooks into the session managerNSpockYou can feed Spock with either a connection pool, or instructions on how to build a connection pool. See RRSpockThe ConnBuilder instructs Spock how to create or close a database connection.WSpockIf Spock should take care of connection pooling, you need to configure it depending on what you need.\SpockSpock configuration, use defaultSpockCfg# and change single values if needed^Spock initial application global state_SpockSee N`SpockSee CaSpockMaximum request size in bytes. % means no limit. Defaults to 5 MB in defaultSpockCfg.bSpockCustom error handlers for implicit errors such as not matching routes or exceptions during a request handler run.cSpock-Function that should be called to log errors.dSpockWhen set to true, all non GET request will require either an HTTP-Header e or a POST-Parameter f# to be set to the value aquired by  getCsrfTokeneSpocksee efSpocksee fgSpockThe g is a specialisation of h with a () context.hSpockThe h is the monad of all route-actions. You have access to the context of the request and database, session and state of your application.SpockInside the SpockAllM monad, you may define routes and middleware."! #$+*)('&%,-./32104567>=;<:98?@ABCDMLKJIHGFENQPORSVUTWX[ZY\]fedcba`_^ghNone? oSpockCreate a new session vaultpSpockLoad a sessionqSpock0Store a session, overwriting any previous valuesrSpockRemovea sessionsSpockGet all sessions as listtSpock3Remove all sessions that do not match the predicateuSpockPerform action on all sessionsijklnmopqrstuvwlnmijkopqrstuvwNone '(?  !"./01234yz{|}~4./0123 !"yz{|}~None >?SpockRead the heart of Spock. This is useful if you want to construct your own monads that work with ; and < using SpockRun an action inside of Spocks core monad. This allows you to use ; and <SpockRead the connection pool of Spock. This is useful if you want to construct your own monads that work with ; and < using None SpockNOP session hooksSpockSession configuration with reasonable defaults and an stm based session storeSpockSpock configuration with reasonable defaults such as a basic error page and 5MB request body limit. IMPORTANT: CSRF Protection is turned off by default for now to not break any existing Spock applications. Consider turning it on manually as it will become the default in the future.6#$%&'()*+,-@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefw6\]^_`abcdefNOPQRSTUVWXYZ[CDEFGHIJKLM@AB#$%&'()*+,-wNone  '(/? SpockRegenerate the users sessionId. This preserves all stored data. Call this prior to logging in a user to prevent session fixation attacks.SpockGet the current users sessionId. Note that this ID should only be shown to it's owner as otherwise sessions can be hijacked.SpockWrite to the current session. Note that all data is stored on the server. The user only reciedes a sessionId to be identified.SpockModify the stored sessionSpock,Modify the stored session and return a valueSpockModify the stored session and return the new value after modificationSpockRead the stored sessionSpockGlobally delete all existing sessions. This is useful for example if you want to require all users to reloginSpockApply a transformation to all sessions. Be careful with this, as this may cause many STM transaction retries. 4 4None  '(/?SpockCreate a spock application using a given db storageLayer and an initial state. Spock works with database libraries that already implement connection pooling and with those that don't come with it out of the box. For more see the N type. Use runSpock to run the app or  spockAsApp to create a Wai.ApplicationSpockGet the CSRF token for the current user. This token must be sent on all non GET requests via a post parameter or HTTP-Header if d" is turned on. See configuration \# documentation for more informationSpockGet the CSRF token sent by the client. You should not need to call this manually if d is turned on.SpockCheck that the client sent a valid CSRF token. You should not need to call this manually in non GET requests if d is turned on.SpockSpecify an action that will be run when a standard HTTP verb and the given route matchSpock>Specify an action that will be run regardless of the HTTP verbSpock6Specify an action that will be run when the HTTP verb  and the given route matchSpock6Specify an action that will be run when the HTTP verb  and the given route matchSpock6Specify an action that will be run when the HTTP verb / and the given route matchSpock6Specify an action that will be run when the HTTP verb  and the given route matchSpock6Specify an action that will be run when the HTTP verb  and the given route matchSpock6Specify an action that will be run when the HTTP verb  and the given route matchSpock6Specify an action that will be run when the HTTP verb  and the given route matchSpockSpecify an action that will be run when a custom HTTP verb and the given route matchSpockSpecify an action that will be run when a standard HTTP verb matches but no defined route matches. The full path is passed as an argumentSpockSpecify an action that will be run regardless of the HTTP verb and no defined route matches. The full path is passed as an argumentSpockSpecify an action that will be run when a custom HTTP verb matches but no defined route matches. The full path is passed as an argument 456789:<;=>?gh<    gh789:<;=>56?        !"#$%%&'()*+,-./0012345678899:;<=>?@ABCDEFGHIJJKLLMNOPQRSTUVWXYZZ[\]^^_`abbcdefghijklmnnopqrstuvwxyz{|}}~@I%Spock-0.14.0.0-5V7OHc56xJeLibDH7mqqKh Web.Spock!Web.Spock.Internal.SessionManagerWeb.Spock.ConfigWeb.Spock.Internal.SessionVaultWeb.Spock.SessionActionsWeb.Spock.Internal.TypesWeb.Spock.Internal.Monad*Spock-core-0.14.0.0-K2pbC2tVT8aBDrFhli6pMZWeb.Spock.Core renderRoute middlewareprehook spockAsApprunSpockNoBannerrunSpock&reroute-0.6.0.0-48ZQtbTPTNQAvYy3ZOP5PGWeb.Routing.CombinatorsVarPathvarstaticrootwildcard(http-types-0.12.3-LMMV4F9OuE2BJ0myUSAImxNetwork.HTTP.Types.Method StdMethodGETPOSTHEADPUTDELETETRACECONNECTOPTIONSPATCHSessionManagersm_getSessionIdsm_getCsrfTokensm_regenerateSessionIdsm_readSessionsm_writeSessionsm_modifySessionsm_mapSessionssm_clearAllSessions sm_middlewaresm_closeSessionManager SessionStoress_runTxss_loadSessionss_deleteSessionss_storeSession ss_toListss_filterSessionsss_mapSessionsSessionStoreInstanceSessionsess_idsess_csrfTokensess_validUntil sess_data SessionId WebStateM WebStateTHasSpock SpockConn SpockState SpockSessionrunQuerygetState getSessMgr getSpockCfgWebState SessionHooks sh_removed SessionCfg sc_cookieName sc_cookieEOL sc_sessionTTLsc_sessionIdEntropysc_sessionExpandTTLsc_emptySessionsc_storesc_housekeepingIntervalsc_hooks PoolOrConnPCPoolPCConn PCNoDatabase ConnBuilder cb_createConncb_destroyConncb_poolConfigurationPoolCfg pc_stripespc_resPerStripepc_keepOpenTimeSpockCfgspc_initialState spc_databasespc_sessionCfgspc_maxRequestSizespc_errorHandler spc_logErrorspc_csrfProtectionspc_csrfHeaderNamespc_csrfPostName SpockActionSpockActionCtx SessionVaultunSessionVault IsSession SessionKey getSessionKeynewSessionVault loadSession storeSession deleteSessiontoListfilterSessions mapSessionsnewStmSessionStore'newStmSessionStore$fIsSessionSession SessionIf si_queryVaultsi_modifyVaultsi_setRawMultiHeader si_vaultKeywithSessionManagercreateSessionManager getSpockHeart runSpockIO getSpockPooldefaultSessionHooksdefaultSessionCfgdefaultSpockCfgsessionRegenerateId getSessionId writeSession modifySessionmodifySession'modifyReadSession readSessionclearAllSessionsmapAllSessions RouteSpec SpockCtxMSpockMspock getCsrfTokengetClientCsrfToken csrfCheck hookRoute hookRouteAllgetpostgetpostheadputdeletepatchhookRouteCustomhookAny hookAnyAll hookAnyCustombase GHC.MaybeNothing SpockAllMSpockSessionManager runWebStateT web_config web_stateweb_sessionMgr web_dbConnwebMgetSpockCfgImpl runQueryImpl getStateImplgetSessMgrImplWeb.Spock.Internal.CoreActioncookiecookies deleteCookie setCookie runInContext getContextwithBasicAuthDatarequireBasicAuthstreamjsonfilehtmltext lazyBytesbytesresponse queryVault modifyVaultmiddlewarePassrespondMiddleware respondAppredirectjumpNextsetRawMultiHeader setHeader setStatusparam'paramparams paramsPost paramsGetfiles jsonBody'jsonBodybody reqMethodpreferredFormat rawHeaderheaderrequestWeb.Spock.Internal.Wire UploadedFileuf_tempLocationuf_nameuf_contentType MultiHeaderMultiHeaderSetCookieMultiHeaderWWWAuthMultiHeaderWarningMultiHeaderViaMultiHeaderUpgradeMultiHeaderTransferEncodingMultiHeaderTrailerMultiHeaderProxyAuthenticateMultiHeaderPragmaMultiHeaderContentLanguageMultiHeaderContentEncodingMultiHeaderCacheControlMultiHeaderConnectionActionT ActionCtxTWeb.Spock.Internal.UtilClientPreferredFormat PrefUnknownPrefTextPrefHTMLPrefJSONPrefXMLWeb.Spock.Internal.CookiesdefaultCookieSettingsCookieSettings cs_secure cs_HTTPOnly cs_domaincs_EOLcs_path CookieEOLCookieValidForeverCookieValidForSessionCookieValidUntilCookieValidFor