$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                       None  None!_Cjspath expression, e.g. .property, .property[0] or ."property-dash" *full jspath, e.g. .property[0].attr.detail/`Path of the embedded levels, e.g "clients.projects.name=eq.." gives Path ["clients", "projects"]17This type will hold information about which particular b between two tables to choose when there are multiple ones. Specifically, it will contain the name of the foreign key or the join table in many to many relations.2`Custom guc header, it's obtained by parsing the json in a: `SET LOCAL "response.headers" = '[{ Set-Cookie : ".."}]'9Represents the key( `->'key'` ) or index(`->'1`a::int`), the index is Text because we reuse our escaping functons and let pg do the casting with '1'::int=Represents the single arrow `->` or double arrow ->> operatorsA%Json path operations as specified in >https://www.postgresql.org/docs/9.4/static/functions-json.htmlCKBoolean logic expression tree e.g. "and(name.eq.N,or(id.eq.1,id.eq.2))" is:TAnd / name.eq.N Or / id.eq.1 id.eq.2I@Represents a list value in a filter, e.g. id=in.(val1,val2,val3)J;Represents a single value in a filter, e.g. id=eq.singleval]#Cached attributes of a JSON payload_This is the raw ByteString that comes from the request body. We cache this instead of an Aeson Value because it was detected that for large payloads the encoding had high memory usage, see #1005 for more detailsafKeys of the object or if it's an array these keys are guaranteed to be the same across all its objectsb The name b\ here is used with the meaning "What is the relation between the current node and the parent node". It has nothing to do with PostgreSQL referring to tables/views as relations. The order of the relColumns and relFColumns should be maintained to get the join conditions right. TODO merge relColumns and relFColumns to a tuple or Data.Bimap+A view column that refers to a table column9Enumeration of currently supported response content typese.g. whether it is []/{} or not.Convert from ContentType to a full HTTP HeaderCConvert from ContentType to a ByteString representing the mime typeJTells the minimum PostgreSQL version required by this version of PostgREST  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !")*+,/0123456789:;=>?ABCDEFGHIJKLMNOPQRSTYZ[]^bclomnpqruvz{|}~}~z{|uvwxyqrstlmnopbcdefghijk]^_`aYZ[\STUVWXRPQLMNOKJIFGHCDEBA=>?@@9:;<<876542310/+,-.)*!"#$%&'(      S     !"#$%&'()*+,-./0123456789:;<<=>?@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~ None ./0123456789:;<=>?@ABCDEFGHIJKLM ./0123456789:;<=>?@ABCDEFGHIJKLM ./0123456789:;<=>?@ABCDEFGHIJKLM ./0123456789:;<=>?@ABCDEFGHIJKLMNone9;NOPQRSTUVWXYNOPQRSTUNPOQRTUSNOPQRSTUVWXYNone #9:<=TZ[\]^Z[\]^Z][\^Z[\]^"PostgREST authorization functions.None:[_0Possible situations encountered with client JWTsc_Receives the JWT secret and audience (from config) and a JWT and returns a map of JWT claims.tTurn JWT ClaimSet into something easier to work with, also here the jspath is applied to put the "role" in the mapd7Whether a response from jwtClaims contains a role claimeParse  `jwt-secret`- configuration option and turn into a JWKSet. There are three ways to specify  `jwt-secret`: text secret, JSON Web Key (JWK), or JSON Web Key Set (JWKS). The first two are converted into a JWKSet with one key and the last is converted as is.KInternal helper to generate a symmetric HMAC-SHA256 JWK from a text secret. _`abcde_`abcdedc_`abe_`abcdeQPostgREST functions to translate HTTP request to a domain type called ApiRequest.None[h&Describes what the user wants to do. This data type is a translation of the raw elements of an HTTP request into domain specific language. There is no guarantee that the intent is sensible, it is up to a later stage of processing to determine if it is an action we are able to perform.jDSimilar but not identical to HTTP verb, e.g. Create/Invoke both POSTk'Requested range of rows within responsel5The target, be it calling a proc or accessing a tablemAContent types the client will accept, [CTAny] if no Accept headern1Data sent by client and used for mutation actionso)If client wants created items echoed backpAPass all parameters as a single json object to a stored procedureq0Whether the client wants a result count (slower)rCWhether the client wants to UPSERT or ignore records on PK conflicts%Filters on the result ("id", "eq.10")t6&and and &or parameters used for complex boolean logicu,&select parameter used to shape the responsev &order parameters for each levelw?Alphabetized (canonical) request query string for response URLsxJSON Web TokenyHTTP request headerszRequest Cookies{How to return the inserted data%The target db object of a user action,Types of things a user wants to do to tablesviewsprocs9Examines HTTP request and translates it into user intent.Find the best match from a list of content types accepted by the client in order of decreasing preference and a list of types producible by the server. If there is no match but the client accepts */* then return the top server pick.!Warning: discards MIME parameters&Converts CSV like a,b 1,hi 2,byeHinto a JSON array like [ {"a": "1", "b": "hi"}, {"a": 2, "b": "bye"} ][The reason for its odd signature is so that it can compose directly with CSV.decodeByName-hijklmnopqrstuvwxyz{|}~0hijklmnopqrstuvwxyz{~|}0hijklmnopqrstuvwxyz{|}~ hijklmnopqrstuvwxyz{|}~ None!#:[\_ #PostgREST SQL generating functions.None!9:;[_The generic query result format used by API responses. The location header is represented as a list of strings containing variable bindings like  "k1=eq.42"3, or the empty list if there is no location header.Read and Write api requests use a similar response format which includes various record counts and possible location header. This is the decoder for that common type of query.$  $Safe            (Manages PostgREST configuration options.None[#Config file settings for the server0CORS policy to be used in by Wai Cors middlewareUser friendly version numberVersion number used in docs8Function to read and parse options from the command line None:T NoneTest whether a proxy uri is malformed or not. A valid proxy uri should be an absolute uri without query and user info, only http(s) schemes are valid, port number range is 1-65535.For example  !http://postgrest.com/openapi.json 'https://postgrest.com:8080/openapi.json !"#$%&'()*+,-./01234 !"#$%&'()*+,-./01234 None#:T 56789:;<=> 56789:;<=>? !"#$%&'()*+,-./012345677889:;<=>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[[\]]^_`abcdeffghijjklmnopqrstuvwxxyz{{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeffghijklmnopqrstuvwxyz{|}~                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 :;&postgrest-5.2.0-15dHTTr2CdQICoP5F9n48MPostgREST.RangeQueryPostgREST.TypesPostgREST.ParsersPostgREST.ErrorPostgREST.DbStructurePostgREST.AuthPostgREST.ApiRequestPostgREST.DbRequestBuilderPostgREST.QueryBuilderPostgREST.ConfigPostgREST.MiddlewarePostgREST.OpenAPI PostgREST.AppPaths_postgrest NonnegRange rangeParserangeRequested restrictRange rangeLimit rangeOffsetrangeGeqallRange JSPathExpJSPKeyJSPIdxJSPath PgVersion$sel:pgvNum:PgVersion$sel:pgvName:PgVersion DbRequestDbReadDbMutate MutateRequestDepth ReadRequestReadNode MutateQueryInsertDeleteUpdate$sel:in_:Insert$sel:insPkCols:Insert$sel:qPayload:Insert$sel:onConflict:Insert$sel:where_:Insert$sel:returning:Insert ReadQuerySelect$sel:select:Select$sel:from:Select$sel:where_:Select$sel:joinConditions:Select$sel:order:Select$sel:range_:Select JoinConditionFilter$sel:field:Filter$sel:opExpr:Filter EmbedPath SelectItemRelationDetail GucHeader RpcQParamNodeNameCastAliasField JsonOperandJKeyJIdx$sel:jVal:JKey JsonOperationJArrowJ2Arrow$sel:jOp:JArrowJsonPath FieldName LogicTreeExprStmnt LogicOperatorAndOrListVal SingleValLanguage OperationOpInFtsOpExprOperatorProxy$sel:proxyScheme:Proxy$sel:proxyHost:Proxy$sel:proxyPort:Proxy$sel:proxyPath:ProxyPJTypePJArrayPJObject$sel:pjaLength:PJArray PayloadJSON$sel:pjRaw:PayloadJSON$sel:pjType:PayloadJSON$sel:pjKeys:PayloadJSONRelation$sel:relTable:Relation$sel:relColumns:Relation$sel:relFTable:Relation$sel:relFColumns:Relation$sel:relType:Relation$sel:relLinkTable:Relation$sel:relLinkCols1:Relation$sel:relLinkCols2:Relation RelationTypeChildParentManyRootQualifiedIdentifier!$sel:qiSchema:QualifiedIdentifier$sel:qiName:QualifiedIdentifier OrderTerm$sel:otTerm:OrderTerm$sel:otDirection:OrderTerm$sel:otNullOrder:OrderTerm OrderNullsOrderNullsFirstOrderNullsLastOrderDirectionOrderAsc OrderDesc PrimaryKey$sel:pkTable:PrimaryKey$sel:pkName:PrimaryKey ViewColumnSynonymColumn$sel:colTable:Column$sel:colName:Column$sel:colDescription:Column$sel:colPosition:Column$sel:colNullable:Column$sel:colType:Column$sel:colUpdatable:Column$sel:colMaxLen:Column$sel:colPrecision:Column$sel:colDefault:Column$sel:colEnum:Column$sel:colFK:Column ForeignKey$sel:fkCol:ForeignKeyTable$sel:tableSchema:Table$sel:tableName:Table$sel:tableDescription:Table$sel:tableInsertable:Table SqlFragmentSqlQuery TableNameSchemaProcDescription$sel:pdName:ProcDescription"$sel:pdDescription:ProcDescription$sel:pdArgs:ProcDescription!$sel:pdReturnType:ProcDescription!$sel:pdVolatility:ProcDescriptionProcVolatilityVolatileStable ImmutableRetTypeSingleSetOfPgTypeScalar CompositePgArg$sel:pgaName:PgArg$sel:pgaType:PgArg$sel:pgaReq:PgArg DbStructure$sel:dbTables:DbStructure$sel:dbColumns:DbStructure$sel:dbRelations:DbStructure$sel:dbPrimaryKeys:DbStructure$sel:dbProcs:DbStructure$sel:pgVersion:DbStructurePreferResolutionMergeDuplicatesIgnoreDuplicatesApiRequestErrorActionInappropriate InvalidBody InvalidRangeParseRequestErrorUnknownRelationNoRelationBetweenUnsupportedVerbInvalidFilters ContentTypeCTApplicationJSON CTTextCSV CTOpenAPICTSingularJSON CTOctetStreamCTAnyCTOther tableCols tablePKCols pjIsEmpty operators ftsOperators toHeaderstoHeadertoMimeminimumPgVersion pgVersion95 pgVersion96 pgVersion100 sourceCTEName$fOrdPgVersion $fEqColumn $fEqTable$fFromJSONGucHeader$fShowLogicOperator$fShowOrderNulls$fShowOrderDirection$fOrdProcDescription$fShowPreferResolution$fEqContentType$fShowApiRequestError$fEqApiRequestError$fEqPreferResolution $fShowPgArg $fEqPgArg $fOrdPgArg$fEqProcVolatility$fShowProcVolatility$fOrdProcVolatility $fShowTable $fOrdTable $fShowColumn $fOrdColumn$fShowForeignKey$fEqForeignKey$fOrdForeignKey$fShowPrimaryKey$fEqPrimaryKey$fEqOrderDirection$fEqOrderNulls$fShowQualifiedIdentifier$fEqQualifiedIdentifier$fOrdQualifiedIdentifier $fEqPgType $fShowPgType $fOrdPgType $fEqRetType $fShowRetType $fOrdRetType$fShowProcDescription$fEqProcDescription$fShowRelationType$fEqRelationType$fShowRelation $fEqRelation $fShowPJType $fEqPJType$fShowPayloadJSON$fEqPayloadJSON $fShowProxy $fEqProxy $fEqOperation$fShowOperation $fEqOpExpr $fShowOpExpr$fEqLogicOperator$fShowJsonOperand$fEqJsonOperand$fShowJsonOperation$fEqJsonOperation$fShowOrderTerm $fEqOrderTerm $fShowFilter $fEqFilter$fShowLogicTree $fEqLogicTree$fShowJoinCondition$fEqJoinCondition$fShowReadQuery $fEqReadQuery$fShowMutateQuery$fEqMutateQuery $fEqPgVersion$fShowPgVersion$fShowDbStructure$fEqDbStructure $fEqJSPathExp$fShowJSPathExppRequestSelectpRequestFilter pRequestOrder pRequestRangepRequestLogicTreewslexeme pTreePath pFieldForestpStar pFieldName pJsonPathpFieldaliasSeparatorpRelationSelect pFieldSelectpOpExpr pSingleValpListVal pListElement pQuotedValue pDelimiterpOrder pOrderTerm pLogicTreepLogicSingleVal pLogicPathmapError pRoleClaimKeypJSPathpJSPKeypJSPIdxapiRequestError simpleErrorpgErrorsingularityErrorbinaryFieldErrorgucHeadersErrorconnectionLostError encodeError$fToJSONCommandError$fToJSONQueryError$fToJSONUsageError$fToJSONApiRequestErrorgetDbStructureaccessibleProcsschemaDescriptionaccessibleTables getPgVersion JWTAttempt JWTInvalidJWTMissingSecret JWTClaims jwtClaims containsRole parseSecret$fEqJWTAttempt$fShowJWTAttempt ApiRequestiActioniRangeiTargetiAcceptsiPayloadiPreferRepresentationiPreferSingleObjectParameter iPreferCountiPreferResolutioniFiltersiLogiciSelectiOrder iCanonicalQSiJWTiHeadersiCookiesPreferRepresentationFull HeadersOnlyNoneTarget TargetIdent TargetProc TargetRoot TargetUnknownAction ActionCreate ActionRead ActionUpdate ActionDelete ActionInfo ActionInvoke ActionInspectActionSingleUpsert isReadOnlyuserApiRequestmutuallyAgreeable $fEqAction $fEqTarget$fEqPreferRepresentation readRequest mutateRequest fieldNamesResultsWithCountcreateReadStatementcreateWriteStatementcallProc pgFmtIdentpgFmtLitrequestToCountQueryrequestToQueryunquoted pgFmtSetLocalpgFmtSetLocalSearchPath AppConfigconfigDatabaseconfigAnonRoleconfigProxyUri configSchema configHost configPortconfigJwtSecretconfigJwtSecretIsBase64configJwtAudience configPool configMaxRowsconfigReqCheck configQuietconfigSettingsconfigRoleClaimKeyconfigExtraSearchPath corsPolicy prettyVersion docsVersion readOptions runWithClaims defaultMiddle encodeOpenAPIisMalformedProxyUri pickProxy postgrestrangeLeq errorResponse httpStatus decodeTables decodeColumnsdecodeRelations decodePksdecodeSynonyms decodeProcsallProcs procsSqlQueryaddForeignKeysaddViewChildRelationsaddParentRelationsaddManyToManyRelationsaddViewPrimaryKeys allTables allColumns columnFromRowallChildRelationsrelationFromRowallPrimaryKeys pkFromRow allSynonymssynonymFromRow claims2map jwkFromSecret walkJSPathdecodeContentType csvToJsonCsvData RequestBodypayloadAttributestoSourceRelationtreeRestrictRangeaugumentRequestWithJoin addRelations findRelationaddJoinConditionsgetJoinConditionsaddFiltersOrdersRangesaddFilterToNode addFilteraddOrderToNodeaddOrderaddRangeToNodeaddRangeaddLogicTreeToNode addLogicTree addPropertyaddFilterToLogicForestdecodeStandard ProcResults standardRow noLocationFdecodeStandardMay ignoredBodyremoveSourceCTESchemaasCsvFasJsonF asJsonSingleF asBinaryF locationFfromQiunicodeStatement emptyOnFalse pgFmtColumn pgFmtFieldpgFmtSelectItempgFmtOrderTerm pgFmtFilterpgFmtJoinConditionpgFmtLogicTree pgFmtJsonPathpgFmtAs trimNullCharscatchIOversionbindirlibdir dynlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamedefaultCorsPolicy pathParser makeMimeList toSwaggerType makeTableDef makePropertymakeProcSchemamakeProcPropertymakePreferParam makeProcParam makeParamDefsmakeObjectBody makeRowFiltermakeRowFilters makePathItemmakeProcPathItemmakeRootPathItem makePathItemsescapeHostName postgrestSpectoURI isUriValidfAnd isSchemeValid isQueryValidisAuthorityValidisUserInfoValid isHostValid isPortValidfindProctransactionModeappresponseContentTypeOrError binaryField splitKeyValuerenderLocationFields rangeStatus contentRangeHextractQueryResult