@sap/cds 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -1
- package/bin/build/util.js +6 -4
- package/bin/deploy/to-hana/hana.js +6 -3
- package/bin/serve.js +1 -9
- package/lib/deploy.js +1 -2
- package/lib/index.js +1 -1
- package/lib/req/cds-context.js +1 -1
- package/lib/serve/factory.js +1 -2
- package/lib/utils/index.js +10 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/OData.js +3 -2
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/action.js +18 -3
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/create.js +7 -7
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/request.js +1 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/update.js +7 -6
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/handlerUtils.js +2 -6
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/readAfterWrite.js +7 -2
- package/libx/_runtime/common/constants/events.js +1 -3
- package/libx/_runtime/fiori/generic/activate.js +0 -4
- package/libx/_runtime/fiori/generic/edit.js +1 -9
- package/libx/_runtime/fiori/generic/new.js +3 -17
- package/libx/_runtime/fiori/generic/patch.js +6 -7
- package/libx/_runtime/fiori/generic/prepare.js +11 -18
- package/libx/_runtime/fiori/generic/read.js +11 -1
- package/libx/_runtime/fiori/utils/handler.js +0 -17
- package/libx/_runtime/messaging/AMQPWebhookMessaging.js +18 -19
- package/libx/_runtime/messaging/file-based.js +1 -0
- package/libx/_runtime/remote/utils/client.js +6 -2
- package/libx/odata/grammar.pegjs +4 -1
- package/libx/odata/parser.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,12 +4,30 @@
|
|
|
4
4
|
- The format is based on [Keep a Changelog](http://keepachangelog.com/).
|
|
5
5
|
- This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## Version 6.0.3 - 2022-07-14
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- On Business Application Studio, `@sap/cds` now rejects starting on Node 12, as it does locally. This avoids cryptic follow-up errors.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- Generic handlers for draft-related operations will trigger a READ event afterwards
|
|
16
|
+
- `file-based-messaging` only watches the file when at least one handler is registered
|
|
17
|
+
- `--vap-file` parameter of `cds deploy` is available again
|
|
18
|
+
- `cds build` no longer throws an error if `@sap/cds-mtx` library (classic MTX) isn't installed locally.
|
|
19
|
+
- `cds.spawn` no longer tries to reuse a transaction
|
|
20
|
+
- Custom query parameter caused bad request on certain characters in rest adapter
|
|
21
|
+
- `cds-ts` no longer fails with an `ERR_UNKNOWN_FILE_EXTENSION` error
|
|
22
|
+
- Timeouts when sending string payloads to remote services
|
|
23
|
+
- `cds.context.http` for `$batch` using atomicity groups
|
|
24
|
+
|
|
7
25
|
## Version 6.0.2 - 2022-07-06
|
|
8
26
|
|
|
9
27
|
### Fixed
|
|
10
28
|
|
|
11
29
|
- Jest tests do not fail any longer because of logs during app shutdown
|
|
12
|
-
- `cds build` now uses correct `mtx/sidecar` context. This avoids redundant `cds-mtxs` npm dependency for Java projects.
|
|
30
|
+
- `cds build` now uses correct `mtx/sidecar` context. This avoids redundant `cds-mtxs` npm dependency for Java projects.
|
|
13
31
|
|
|
14
32
|
## Version 6.0.1 - 2022-07-05
|
|
15
33
|
|
package/bin/build/util.js
CHANGED
|
@@ -124,11 +124,13 @@ function _redacted(cred) {
|
|
|
124
124
|
* @returns
|
|
125
125
|
*/
|
|
126
126
|
function isStreamlinedMtx(cds) {
|
|
127
|
-
if (process.env.OLD_MTX)
|
|
128
|
-
|
|
127
|
+
if (hasOptionValue(process.env.OLD_MTX, true)) {
|
|
128
|
+
return false
|
|
129
|
+
}
|
|
130
|
+
return (cds.env.get("requires.toggles")
|
|
129
131
|
|| cds.env.requires['cds.xt.ModelProviderService']
|
|
130
|
-
|| cds.env.get("requires.multitenancy
|
|
131
|
-
|
|
132
|
+
|| (typeof cds.env.get("requires.multitenancy") === "object")
|
|
133
|
+
) && !(() => { try { return cds.mtx } catch (e) { /**/ } })()
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
class BuildMessage extends Error {
|
|
@@ -35,7 +35,12 @@ class HanaDeployer {
|
|
|
35
35
|
this.logger = logger;
|
|
36
36
|
|
|
37
37
|
this.logger.log(`${bold('Starting deploy to SAP HANA ...')}`);
|
|
38
|
-
if (
|
|
38
|
+
if (vcapFile) {
|
|
39
|
+
this.logger.log();
|
|
40
|
+
this.logger.log(`Using VCAP_SERVICES from file ${vcapFile} (beta feature).`);
|
|
41
|
+
bindCallback = null // credentials are given - no cds bind then
|
|
42
|
+
}
|
|
43
|
+
else if (bindCallback) {
|
|
39
44
|
this.logger.log('Using cds bind');
|
|
40
45
|
}
|
|
41
46
|
this.logger.log();
|
|
@@ -46,8 +51,6 @@ class HanaDeployer {
|
|
|
46
51
|
|
|
47
52
|
let vcapServices;
|
|
48
53
|
if (vcapFile) {
|
|
49
|
-
this.logger.log();
|
|
50
|
-
this.logger.log(`Using vcap file ${vcapFile} (beta feature).`);
|
|
51
54
|
vcapServices = await this._loadVCAPServices(vcapFile);
|
|
52
55
|
}
|
|
53
56
|
|
package/bin/serve.js
CHANGED
|
@@ -225,7 +225,7 @@ async function _local_server_js() {
|
|
|
225
225
|
let server_js = process.env.CDS_TYPESCRIPT && _local('server.ts') || _local('server.js')
|
|
226
226
|
if (server_js) {
|
|
227
227
|
log ('Loading server from', { file: local(server_js) })
|
|
228
|
-
let fn = await _import(server_js)
|
|
228
|
+
let fn = await cds.utils._import(server_js)
|
|
229
229
|
if (fn && fn.default) fn = fn.default // default ESM export
|
|
230
230
|
return typeof fn === 'function' ? fn : cds.server
|
|
231
231
|
}
|
|
@@ -320,14 +320,6 @@ function _with_mocks (o) {
|
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
322
|
|
|
323
|
-
const { pathToFileURL } = require('url') // on Windows, must use a file: URL for ESM import
|
|
324
|
-
function _import(filePath) {
|
|
325
|
-
return typeof jest !== 'undefined'
|
|
326
|
-
? require(filePath)
|
|
327
|
-
: import (pathToFileURL(filePath).href)
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
|
|
331
323
|
const SECRETS = /(password)|(certificate)|(ca)|(secret)|(key)/i // 'certificate' and 'ca' on HANA
|
|
332
324
|
/** mascades password-like strings, also reducing clutter in output */
|
|
333
325
|
function _redacted(cred) {
|
package/lib/deploy.js
CHANGED
|
@@ -124,8 +124,7 @@ exports.init = (db, csn=db.model, log=()=>{}) => db.tx (async tx => {
|
|
|
124
124
|
const resources = await exports.resources(csn), inits=[]
|
|
125
125
|
for (let [file,e] of Object.entries(resources)) {
|
|
126
126
|
if (e === '*') { // init.js/ts
|
|
127
|
-
|
|
128
|
-
let x = typeof jest !== 'undefined' ? require(file) : await import(pathToFileURL(file).href); if (!x) continue
|
|
127
|
+
let x = await cds.utils._import(file); if (!x) continue
|
|
129
128
|
if (x.default) x = x.default // default ESM export
|
|
130
129
|
inits.push (!x.then && typeof x === 'function' ? x(db,csn) : x)
|
|
131
130
|
log (file)
|
package/lib/index.js
CHANGED
|
@@ -135,7 +135,7 @@ _global ('ql','SELECT','INSERT','UPDATE','DELETE','CREATE','DROP')
|
|
|
135
135
|
_global ('parse','CDL','CQL','CXL')
|
|
136
136
|
|
|
137
137
|
// Check Node.js version
|
|
138
|
-
if (process.env.CDS_STRICT_NODE_VERSION !== 'false'
|
|
138
|
+
if (process.env.CDS_STRICT_NODE_VERSION !== 'false') {
|
|
139
139
|
const v = version => { let vv = version.split('.'); return { version, major: +vv[0], minor: +vv[1] }}
|
|
140
140
|
const required = v('14.15'), given = v(process.version.match(/^v(\d+\.\d+)/)[1])
|
|
141
141
|
if (given.major < required.major || given.major === required.major && given.minor < required.minor) process.exit (process.stderr.write (`
|
package/lib/req/cds-context.js
CHANGED
|
@@ -30,7 +30,7 @@ module.exports = new class extends AsyncLocalStorage {
|
|
|
30
30
|
if (typeof o === 'function') [fn,o] = [o,fn] //> for compatibility
|
|
31
31
|
if (o instanceof EventContext) throw cds.error `The passed options must not be an instance of cds.EventContext.`
|
|
32
32
|
const fx = ()=>{
|
|
33
|
-
const tx = cds.tx(o) // create a new detached transaction for each run of the background job
|
|
33
|
+
const tx = cds.tx({...o}) // create a new detached transaction for each run of the background job
|
|
34
34
|
return cds._context.run (tx, ()=> Promise.resolve(fn(tx))
|
|
35
35
|
.then (tx.commit, e => tx.rollback(_error(e, cds)))
|
|
36
36
|
.then (res => Promise.all(em.listeners('succeeded').map(each => each(res))))
|
package/lib/serve/factory.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const { pathToFileURL } = require('url') // on Windows, must use a file: URL for ESM import
|
|
2
1
|
const cds = require('..'), { path, isfile } = cds.utils
|
|
3
2
|
const paths = Array.from (new Set ([ cds.root, ...require.resolve.paths('x') ]))
|
|
4
3
|
const DEBUG = cds.debug('srv.factory'); DEBUG && DEBUG ({ 'cds.root':cds.root, paths })
|
|
@@ -48,7 +47,7 @@ const _require = (it,d) => {
|
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
DEBUG && DEBUG({resolved})
|
|
51
|
-
return
|
|
50
|
+
return cds.utils._import(resolved)
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
const _function = (impl) => !_is_class(impl) ? impl : (srv) => {
|
package/lib/utils/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const cwd = process.env._original_cwd || process.cwd()
|
|
2
|
-
const path = require ('path'), { dirname, join, resolve, sep, relative } = path
|
|
2
|
+
const path = require ('path'), { dirname, extname, join, resolve, sep, relative } = path
|
|
3
3
|
const fs = require('fs')
|
|
4
4
|
const cds = require('../index')
|
|
5
5
|
|
|
@@ -131,6 +131,15 @@ exports.find = function find (base, patterns='*', filter=()=>true) {
|
|
|
131
131
|
return files
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
// internal utility to load a file through ESM or CommonJs. TODO find a better place.
|
|
135
|
+
const { pathToFileURL } = require('url')
|
|
136
|
+
exports._import = async function(filePath) {
|
|
137
|
+
return typeof jest !== 'undefined' || extname(filePath) === '.ts' // ts-node w/ ESM not working (cap/issues#11980)
|
|
138
|
+
? require(filePath)
|
|
139
|
+
: import (pathToFileURL(filePath).href) // on Windows, must use a file: URL for ESM import
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
|
|
134
143
|
/** @type <T>(o,p,v:T) => T */
|
|
135
144
|
const $set = (o,p,v) => { Object.defineProperty(o,p,{value:v}); return v }
|
|
136
145
|
const { mkdirp, isdir } = exports
|
|
@@ -162,10 +162,11 @@ class OData {
|
|
|
162
162
|
const txs = (data.txs = data.txs || {})
|
|
163
163
|
const {
|
|
164
164
|
req: { user },
|
|
165
|
-
req
|
|
165
|
+
req,
|
|
166
|
+
res
|
|
166
167
|
} = data
|
|
167
168
|
// REVISIT: _model should not be necessary
|
|
168
|
-
const tx = (txs[odataContext.id] = cdsService.tx({ user, req, _model: cdsService.model }))
|
|
169
|
+
const tx = (txs[odataContext.id] = cdsService.tx({ user, req, res, _model: cdsService.model }))
|
|
169
170
|
cds.context = tx.context
|
|
170
171
|
// for collecting results and errors
|
|
171
172
|
data.results = data.results || {}
|
|
@@ -7,16 +7,16 @@ const {
|
|
|
7
7
|
} = require('../okra/odata-server')
|
|
8
8
|
|
|
9
9
|
const { getSapMessages } = require('../../../../common/error/frontend')
|
|
10
|
-
const { getActionOrFunctionReturnType } = require('../utils/handlerUtils')
|
|
10
|
+
const { getActionOrFunctionReturnType, isReturnMinimal } = require('../utils/handlerUtils')
|
|
11
11
|
const { validateResourcePath } = require('../utils/request')
|
|
12
12
|
const { toODataResult, postProcess } = require('../utils/result')
|
|
13
|
-
const {
|
|
13
|
+
const { DRAFT_EVENTS } = require('../../../../common/constants/events')
|
|
14
14
|
const { readAfterWrite } = require('../utils/readAfterWrite')
|
|
15
15
|
|
|
16
16
|
const _postProcess = async (req, odataReq, odataRes, tx, result) => {
|
|
17
17
|
const returnType = getActionOrFunctionReturnType(odataReq.getUriInfo().getPathSegments(), tx.model.definitions)
|
|
18
18
|
// as of spec meeting: no generic support of $select/$expand for custom actions/functions
|
|
19
|
-
if (returnType && returnType.kind === 'entity' && req.event in
|
|
19
|
+
if (returnType && returnType.kind === 'entity' && (req.event in DRAFT_EVENTS || req.event === 'EDIT')) {
|
|
20
20
|
result = await readAfterWrite(req, tx, { operation: { result, returnType } })
|
|
21
21
|
if (result && !('IsActiveEntity' in result)) result.IsActiveEntity = req.event === 'draftActivate'
|
|
22
22
|
}
|
|
@@ -59,6 +59,21 @@ const action = service => {
|
|
|
59
59
|
} else {
|
|
60
60
|
await tx.commit(result)
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
if (isReturnMinimal(req) || result === null) odataRes.setStatusCode(204)
|
|
64
|
+
else if (req.event === 'draftActivate' || req.event === 'EDIT') {
|
|
65
|
+
odataRes.setStatusCode(201)
|
|
66
|
+
const keys = Object.keys(req.target.keys).filter(k => {
|
|
67
|
+
return k !== 'IsActiveEntity' && !req.target.keys[k]._isAssociationStrict
|
|
68
|
+
})
|
|
69
|
+
const keysString = keys.map(key => `${key}=${result[key]}`).join(',')
|
|
70
|
+
odataRes.setHeader(
|
|
71
|
+
'location',
|
|
72
|
+
`../${req.target.name.replace(`${service.name}.`, '')}(${keysString},IsActiveEntity=${
|
|
73
|
+
req.event === 'draftActivate'
|
|
74
|
+
})`
|
|
75
|
+
)
|
|
76
|
+
}
|
|
62
77
|
} catch (e) {
|
|
63
78
|
err = e
|
|
64
79
|
|
|
@@ -38,15 +38,15 @@ const create = service => {
|
|
|
38
38
|
try {
|
|
39
39
|
result = await tx.dispatch(req)
|
|
40
40
|
|
|
41
|
-
// REVISIT:
|
|
41
|
+
// REVISIT:
|
|
42
|
+
// Performance: For `isReturnMinimal` it's enough to just read the etag.
|
|
43
|
+
// Note: Without read access, one cannot return the etag.
|
|
44
|
+
if (req._.readAfterWrite) {
|
|
45
|
+
result = await readAfterWrite(req, service, { operation: { result } })
|
|
46
|
+
}
|
|
42
47
|
if (isReturnMinimal(req)) {
|
|
43
48
|
result = postProcessMinimal(req, service, result)
|
|
44
49
|
} else {
|
|
45
|
-
// REVISIT: find better solution
|
|
46
|
-
if (req._.readAfterWrite) {
|
|
47
|
-
result = await readAfterWrite(req, service)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
50
|
postProcess(req, odataRes, service, result)
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -57,7 +57,7 @@ const create = service => {
|
|
|
57
57
|
await tx.commit(result)
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
if (isReturnMinimal(req)) {
|
|
60
|
+
if (isReturnMinimal(req) || result === null) {
|
|
61
61
|
odataRes.setStatusCode(204)
|
|
62
62
|
}
|
|
63
63
|
} catch (e) {
|
|
@@ -149,12 +149,13 @@ const update = service => {
|
|
|
149
149
|
// try UPDATE and, on 404 error, try CREATE
|
|
150
150
|
;[result, req] = await _updateThenCreate(req, odataReq, odataRes, tx)
|
|
151
151
|
|
|
152
|
+
if (!primitive && req._.readAfterWrite) {
|
|
153
|
+
// REVISIT:
|
|
154
|
+
// Performance: For `isReturnMinimal` it's enough to just read the etag.
|
|
155
|
+
// Note: Without read access, one cannot return the etag.
|
|
156
|
+
result = await readAfterWrite(req, service, { operation: { result } })
|
|
157
|
+
}
|
|
152
158
|
if (!isReturnMinimal(req)) {
|
|
153
|
-
// REVISIT: find better solution
|
|
154
|
-
if (!primitive && req._.readAfterWrite) {
|
|
155
|
-
result = await readAfterWrite(req, service)
|
|
156
|
-
}
|
|
157
|
-
|
|
158
159
|
postProcess(req, odataRes, service, result, previousResult)
|
|
159
160
|
} else {
|
|
160
161
|
result = postProcessMinimal(req, service, result)
|
|
@@ -167,7 +168,7 @@ const update = service => {
|
|
|
167
168
|
await tx.commit(result)
|
|
168
169
|
}
|
|
169
170
|
|
|
170
|
-
if (isReturnMinimal(req)) {
|
|
171
|
+
if (isReturnMinimal(req) || result === null) {
|
|
171
172
|
odataRes.setStatusCode(204)
|
|
172
173
|
}
|
|
173
174
|
} catch (e) {
|
|
@@ -16,9 +16,7 @@ const _keysOf = (row, target) => {
|
|
|
16
16
|
if (!keyElements.length) return
|
|
17
17
|
const keys = {}
|
|
18
18
|
for (const key of keyElements) {
|
|
19
|
-
if (key._isAssociationStrict
|
|
20
|
-
continue
|
|
21
|
-
}
|
|
19
|
+
if (key._isAssociationStrict) continue
|
|
22
20
|
keys[key.name] = key.elements ? { val: JSON.stringify(row[key.name]) } : row[key.name]
|
|
23
21
|
}
|
|
24
22
|
return keys
|
|
@@ -111,10 +109,8 @@ const _getColumns = (target, data, prefix = []) => {
|
|
|
111
109
|
* (depth determined by req.data)
|
|
112
110
|
*/
|
|
113
111
|
const getDeepSelect = req => {
|
|
114
|
-
|
|
115
|
-
const { target, data } = req
|
|
112
|
+
let { target, data } = req
|
|
116
113
|
const columns = _getColumns(target, data)
|
|
117
|
-
|
|
118
114
|
return getSimpleSelectCQN(target, data, columns)
|
|
119
115
|
}
|
|
120
116
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const { removeDraftUUIDIfNecessary } = require('../../../../fiori/utils/handler')
|
|
1
2
|
const cds = require('../../../../cds')
|
|
2
3
|
const {
|
|
3
4
|
Request,
|
|
@@ -8,7 +9,7 @@ const { normalizeError } = require('../../../../common/error/frontend')
|
|
|
8
9
|
|
|
9
10
|
const { getDeepSelect, getSimpleSelectCQN } = require('./handlerUtils')
|
|
10
11
|
const { hasDeepUpdate } = require('../../../../common/composition/update')
|
|
11
|
-
const { WRITE_EVENTS, CDS_EVENTS
|
|
12
|
+
const { WRITE_EVENTS, CDS_EVENTS } = require('../../../../common/constants/events')
|
|
12
13
|
|
|
13
14
|
const setLocationHeader = (req, { model }) => {
|
|
14
15
|
const { odataRes } = req._
|
|
@@ -38,7 +39,7 @@ const _getOperationQueryColumns = urlQueryOptions => {
|
|
|
38
39
|
return columns
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
const _isDraftAction = req => req.event in
|
|
42
|
+
const _isDraftAction = req => req.event in { draftActivate: 1, EDIT: 1, draftPrepare: 1 }
|
|
42
43
|
const _isActionOrFunction = req => !(req.event in CDS_EVENTS) || _isDraftAction(req)
|
|
43
44
|
const _isWriteWithResponse = req => req.event in WRITE_EVENTS && !(req.event in { CANCEL: 1, DELETE: 1 })
|
|
44
45
|
|
|
@@ -49,6 +50,9 @@ const readAfterWrite = async (req, srv, { operation, isBefore } = { isBefore: fa
|
|
|
49
50
|
const { result, returnType } = operation
|
|
50
51
|
query = getSimpleSelectCQN(returnType, result, _getOperationQueryColumns(req._queryOptions))
|
|
51
52
|
if (_isDraftAction(req)) query.where({ IsActiveEntity: req.event === 'draftActivate' })
|
|
53
|
+
} else if (req.event === 'NEW' || req.event === 'PATCH') {
|
|
54
|
+
const { result } = operation
|
|
55
|
+
query = getSimpleSelectCQN(req.target, result)
|
|
52
56
|
} else if (req.event === 'UPDATE' && !hasDeepUpdate(srv.model, req.query)) {
|
|
53
57
|
query = Array.isArray(req.data) ? SELECT.from(req.query.UPDATE.entity) : SELECT.one(req.query.UPDATE.entity)
|
|
54
58
|
} else {
|
|
@@ -60,6 +64,7 @@ const readAfterWrite = async (req, srv, { operation, isBefore } = { isBefore: fa
|
|
|
60
64
|
try {
|
|
61
65
|
const _req = new Request({ query, event: 'READ', _: req._ })
|
|
62
66
|
result = await srv.dispatch(_req)
|
|
67
|
+
if (result && req.target._isDraftEnabled) removeDraftUUIDIfNecessary(req)(result)
|
|
63
68
|
if (result === null && !isBefore && (_isWriteWithResponse(req) || _isDraftAction(req))) {
|
|
64
69
|
// > something must be written and no READ error <=> @restrict or static where
|
|
65
70
|
_req.reject({
|
|
@@ -2,7 +2,6 @@ const MOD_EVENTS = { UPDATE: 1, DELETE: 1, EDIT: 1 }
|
|
|
2
2
|
const WRITE_EVENTS = Object.assign({ CREATE: 1, NEW: 1, PATCH: 1, CANCEL: 1 }, MOD_EVENTS)
|
|
3
3
|
const CRUD_EVENTS = Object.assign({ READ: 1 }, WRITE_EVENTS)
|
|
4
4
|
const DRAFT_EVENTS = { PATCH: 1, CANCEL: 1, draftActivate: 1, draftPrepare: 1 }
|
|
5
|
-
const DRAFT_MOD_EVENTS = { draftActivate: 1, EDIT: 1 }
|
|
6
5
|
const CDS_EVENTS = Object.assign({}, CRUD_EVENTS, DRAFT_EVENTS)
|
|
7
6
|
|
|
8
7
|
module.exports = {
|
|
@@ -10,6 +9,5 @@ module.exports = {
|
|
|
10
9
|
WRITE_EVENTS,
|
|
11
10
|
CRUD_EVENTS,
|
|
12
11
|
DRAFT_EVENTS,
|
|
13
|
-
CDS_EVENTS
|
|
14
|
-
DRAFT_MOD_EVENTS
|
|
12
|
+
CDS_EVENTS
|
|
15
13
|
}
|
|
@@ -11,7 +11,6 @@ const {
|
|
|
11
11
|
const { readAndDeleteKeywords, isActiveEntityRequested, getKeyData } = require('../utils/where')
|
|
12
12
|
const { isDraftRootEntity } = require('../../fiori/utils/csn')
|
|
13
13
|
const { getColumns } = require('../../cds-services/services/utils/columns')
|
|
14
|
-
const { setStatusCodeAndHeader, getKeyProperty } = require('../utils/handler')
|
|
15
14
|
|
|
16
15
|
const { DRAFT_COLUMNS_MAP } = require('../../common/constants/draft')
|
|
17
16
|
|
|
@@ -175,9 +174,6 @@ const _handler = async function (req) {
|
|
|
175
174
|
})
|
|
176
175
|
])
|
|
177
176
|
|
|
178
|
-
const k = getKeyProperty(req.target.keys)
|
|
179
|
-
setStatusCodeAndHeader(req._.odataRes, { [k]: result[k] }, req.target.name.replace(`${this.name}.`, ''), true)
|
|
180
|
-
|
|
181
177
|
return result
|
|
182
178
|
}
|
|
183
179
|
|
|
@@ -4,14 +4,7 @@ const { INSERT, SELECT, DELETE } = cds.ql
|
|
|
4
4
|
const { getCompositionTree } = require('../../common/composition')
|
|
5
5
|
const { getColumns } = require('../../cds-services/services/utils/columns')
|
|
6
6
|
const { getTransition } = require('../../common/utils/resolveView')
|
|
7
|
-
const {
|
|
8
|
-
draftIsLocked,
|
|
9
|
-
ensureDraftsSuffix,
|
|
10
|
-
ensureNoDraftsSuffix,
|
|
11
|
-
getSubCQNs,
|
|
12
|
-
setStatusCodeAndHeader,
|
|
13
|
-
filterKeys
|
|
14
|
-
} = require('../utils/handler')
|
|
7
|
+
const { draftIsLocked, ensureDraftsSuffix, ensureNoDraftsSuffix, getSubCQNs, filterKeys } = require('../utils/handler')
|
|
15
8
|
const { isActiveEntityRequested, getKeyData } = require('../utils/where')
|
|
16
9
|
|
|
17
10
|
const _getDraftColumns = draftUUID => ({
|
|
@@ -163,7 +156,6 @@ const _handler = async function (req) {
|
|
|
163
156
|
}
|
|
164
157
|
|
|
165
158
|
await Promise.all(insertCQNs.map(CQN => dbtx.run(CQN)))
|
|
166
|
-
setStatusCodeAndHeader(req._.odataRes, rootWhere, req.target.name.replace(`${this.name}.`, ''), false)
|
|
167
159
|
return results[0][0]
|
|
168
160
|
}
|
|
169
161
|
|
|
@@ -4,7 +4,7 @@ const { INSERT, SELECT, UPDATE } = cds.ql
|
|
|
4
4
|
const onDraftActivate = require('./activate')._handler
|
|
5
5
|
const { isNavigationToMany } = require('../utils/req')
|
|
6
6
|
const { getKeysCondition } = require('../utils/where')
|
|
7
|
-
const {
|
|
7
|
+
const { ensureDraftsSuffix } = require('../utils/handler')
|
|
8
8
|
const { DRAFT_COLUMNS_MAP } = require('../../common/constants/draft')
|
|
9
9
|
|
|
10
10
|
const _getUpdateDraftAdminCQN = ({ user, timestamp }, draftUUID) => {
|
|
@@ -74,26 +74,12 @@ const _handler = async function (req, next) {
|
|
|
74
74
|
: _getInsertDraftAdminCQN(req, req.data.DraftAdministrativeData_DraftUUID)
|
|
75
75
|
const insertDataCQN = _getInsertDataCQN(req, req.data.DraftAdministrativeData_DraftUUID)
|
|
76
76
|
|
|
77
|
-
// read data as on db and return
|
|
78
|
-
const columns = Object.keys(req.target.elements)
|
|
79
|
-
.map(e => req.target.elements[e])
|
|
80
|
-
.filter(e => !e.isAssociation)
|
|
81
|
-
.map(e => e.name)
|
|
82
|
-
const readInsertDataCQN = SELECT.from(insertDataCQN.INSERT.into).columns(columns)
|
|
83
|
-
readInsertDataCQN.where(getKeysCondition(req.target, req.data))
|
|
84
|
-
|
|
85
77
|
const dbtx = cds.tx(req)
|
|
86
78
|
|
|
87
79
|
await Promise.all([dbtx.run(adminDataCQN), dbtx.run(insertDataCQN)])
|
|
88
80
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
req.reject(404)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
removeDraftUUIDIfNecessary(req)(result[0])
|
|
95
|
-
|
|
96
|
-
return result[0]
|
|
81
|
+
req._.readAfterWrite = true
|
|
82
|
+
return { ...req.data, IsActiveEntity: false }
|
|
97
83
|
}
|
|
98
84
|
|
|
99
85
|
module.exports = cds.service.impl(function (srv, entity) {
|
|
@@ -29,7 +29,7 @@ const _getSelectCQN = (model, { target: { name } }, keysCondition, checkUser = t
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// REVISIT: support navigation to one
|
|
32
|
-
return SELECT.
|
|
32
|
+
return SELECT.one(draftName)
|
|
33
33
|
.columns(columns)
|
|
34
34
|
.join('DRAFT.DraftAdministrativeData')
|
|
35
35
|
.on([
|
|
@@ -71,19 +71,18 @@ const _handler = async function (req) {
|
|
|
71
71
|
let result = await dbtx.run(_getSelectCQN(this.model, req, keysCondition))
|
|
72
72
|
|
|
73
73
|
// Potential timeout scenario supported
|
|
74
|
-
if (result
|
|
74
|
+
if (result.draftAdmin_inProcessByUser && result.draftAdmin_inProcessByUser !== req.user.id) {
|
|
75
75
|
// REVISIT: security log?
|
|
76
76
|
req.reject(403)
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
const updateDraftCQN = _getUpdateDraftCQN(req, keysCondition)
|
|
80
|
-
const updateDraftAdminCQN = getUpdateDraftAdminCQN(req, result
|
|
80
|
+
const updateDraftAdminCQN = getUpdateDraftAdminCQN(req, result.DraftAdministrativeData_DraftUUID)
|
|
81
81
|
|
|
82
82
|
await Promise.all([dbtx.run(updateDraftCQN), dbtx.run(updateDraftAdminCQN)])
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return result[0]
|
|
83
|
+
req._.readAfterWrite = true
|
|
84
|
+
|
|
85
|
+
return { ...req.data, IsActiveEntity: false }
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
module.exports = cds.service.impl(function (srv, entity) {
|
|
@@ -5,8 +5,6 @@ const { isActiveEntityRequested } = require('../utils/where')
|
|
|
5
5
|
const { ensureDraftsSuffix, ensureNoDraftsSuffix } = require('../utils/handler')
|
|
6
6
|
const { getColumns } = require('../../cds-services/services/utils/columns')
|
|
7
7
|
|
|
8
|
-
const { DRAFT_COLUMNS_CQN } = require('../../common/constants/draft')
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* Generic Handler for PreparationAction requests.
|
|
12
10
|
* In case of success it returns the prepared draft entry.
|
|
@@ -19,15 +17,14 @@ const _handler = async function (req) {
|
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
const target = ensureDraftsSuffix(req.target.name)
|
|
22
|
-
const columns = [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
]
|
|
20
|
+
const columns = getColumns(this.model.definitions[ensureNoDraftsSuffix(req.target.name)], {
|
|
21
|
+
keysOnly: true,
|
|
22
|
+
removeIgnore: true,
|
|
23
|
+
filterVirtual: true,
|
|
24
|
+
onlyNames: true
|
|
25
|
+
})
|
|
29
26
|
columns.push({ ref: ['DRAFT.DraftAdministrativeData', 'inProcessByUser'], as: 'draftAdmin_inProcessByUser' })
|
|
30
|
-
const select = SELECT.
|
|
27
|
+
const select = SELECT.one(target)
|
|
31
28
|
.columns(columns)
|
|
32
29
|
.join('DRAFT.DraftAdministrativeData')
|
|
33
30
|
.on([
|
|
@@ -36,18 +33,14 @@ const _handler = async function (req) {
|
|
|
36
33
|
{ ref: ['DRAFT.DraftAdministrativeData', 'DraftUUID'] }
|
|
37
34
|
])
|
|
38
35
|
.where(req.query.SELECT.from.ref[0].where)
|
|
39
|
-
|
|
40
36
|
const result = await cds.tx(req).run(select)
|
|
41
|
-
|
|
42
|
-
if (result.
|
|
43
|
-
|
|
44
|
-
if (result[0].draftAdmin_inProcessByUser !== req.user.id) {
|
|
37
|
+
if (!result) req.reject(404)
|
|
38
|
+
if (result.draftAdmin_inProcessByUser !== req.user.id) {
|
|
45
39
|
// REVISIT: security log?
|
|
46
40
|
req.reject(403, 'DRAFT_LOCKED_BY_ANOTHER_USER')
|
|
47
41
|
}
|
|
48
|
-
delete result
|
|
49
|
-
|
|
50
|
-
return result[0]
|
|
42
|
+
delete result.draftAdmin_inProcessByUser
|
|
43
|
+
return result
|
|
51
44
|
}
|
|
52
45
|
|
|
53
46
|
module.exports = cds.service.impl(function (srv, entity) {
|
|
@@ -120,6 +120,11 @@ const DRAFT_COLUMNS_CASTED = [
|
|
|
120
120
|
}
|
|
121
121
|
]
|
|
122
122
|
|
|
123
|
+
const DRAFT_COLUMNS_CASTED_WITH_DRAFTADMIN_UUID = [
|
|
124
|
+
...DRAFT_COLUMNS_CASTED,
|
|
125
|
+
{ ref: ['DraftAdministrativeData_DraftUUID'] }
|
|
126
|
+
]
|
|
127
|
+
|
|
123
128
|
// default draft values for active entities
|
|
124
129
|
const _getDefaultDraftProperties = ({ hasDraft, isActive = true, withDraftUUID = true }) => {
|
|
125
130
|
const columns = [
|
|
@@ -442,7 +447,10 @@ const _activeWithoutDraft = (req, draftWhere, columns) => {
|
|
|
442
447
|
|
|
443
448
|
const _draftOfWhichIAmOwner = (req, draftWhere, columns) => {
|
|
444
449
|
const { table, name } = _getTableName(req, true)
|
|
445
|
-
const outerMostColumns = _getOuterMostColumns(
|
|
450
|
+
const outerMostColumns = _getOuterMostColumns(
|
|
451
|
+
addColumnAlias(columns, name),
|
|
452
|
+
DRAFT_COLUMNS_CASTED_WITH_DRAFTADMIN_UUID
|
|
453
|
+
)
|
|
446
454
|
|
|
447
455
|
const cqn = SELECT.from(table)
|
|
448
456
|
.columns(...outerMostColumns)
|
|
@@ -1277,6 +1285,8 @@ const _handler = async function (req) {
|
|
|
1277
1285
|
const query4sql = cqn2cqn4sql(req.query, this.model, { _4fiori: true })
|
|
1278
1286
|
|
|
1279
1287
|
// Clone the request. Do not clone with Object.assign as that would skip all non-enumerable properties.
|
|
1288
|
+
// REVISIT: query4sql.clone() doesn't really clone the original query, hence _generateCQN will heavily modify
|
|
1289
|
+
// it, e.g. IsActiveEntity is stripped. This is a problem for subsequent handlers which rely on this information.
|
|
1280
1290
|
const reqClone = { __proto__: req, query: query4sql.clone() }
|
|
1281
1291
|
// Clone draft restrictions to the cloned query.
|
|
1282
1292
|
reqClone.query._draftRestrictions = query._draftRestrictions
|
|
@@ -183,15 +183,6 @@ const _aliased = (arr, columns, alias) =>
|
|
|
183
183
|
})
|
|
184
184
|
|
|
185
185
|
// Only works for root entity, otherwise the relative position needs to be adapted
|
|
186
|
-
const setStatusCodeAndHeader = (response, keys, entityName, isActiveEntity) => {
|
|
187
|
-
response.setStatusCode(201)
|
|
188
|
-
|
|
189
|
-
const keysString = Object.keys(keys)
|
|
190
|
-
.map(key => `${key}=${keys[key]}`)
|
|
191
|
-
.join(',')
|
|
192
|
-
response.setHeader('location', `../${entityName}(${keysString},IsActiveEntity=${isActiveEntity})`)
|
|
193
|
-
}
|
|
194
|
-
|
|
195
186
|
const removeDraftUUIDIfNecessary = req =>
|
|
196
187
|
req._.req && req._.req.headers && req._.req.headers['x-cds-odata-version'] === 'v2'
|
|
197
188
|
? () => {}
|
|
@@ -255,12 +246,6 @@ const draftIsLocked = lastChangedAt => {
|
|
|
255
246
|
return DRAFT_CANCEL_TIMEOUT_IN_MS > Date.now() - Date.parse(lastChangedAt)
|
|
256
247
|
}
|
|
257
248
|
|
|
258
|
-
const getKeyProperty = keys => {
|
|
259
|
-
return Object.keys(keys).find(k => {
|
|
260
|
-
return k !== 'IsActiveEntity' && !keys[k]._isAssociationStrict
|
|
261
|
-
})
|
|
262
|
-
}
|
|
263
|
-
|
|
264
249
|
const filterKeys = keys => {
|
|
265
250
|
return Object.keys(keys).filter(key => {
|
|
266
251
|
return key !== 'IsActiveEntity' && !keys[key]._isAssociationStrict
|
|
@@ -273,7 +258,6 @@ module.exports = {
|
|
|
273
258
|
getUpdateDraftAdminCQN,
|
|
274
259
|
getEnrichedCQN,
|
|
275
260
|
removeDraftUUIDIfNecessary,
|
|
276
|
-
setStatusCodeAndHeader,
|
|
277
261
|
isDraftActivateAction,
|
|
278
262
|
ensureDraftsSuffix,
|
|
279
263
|
ensureNoDraftsSuffix,
|
|
@@ -282,7 +266,6 @@ module.exports = {
|
|
|
282
266
|
proxifyToNoDraftsName,
|
|
283
267
|
addColumnAlias,
|
|
284
268
|
replaceRefWithDraft,
|
|
285
|
-
getKeyProperty,
|
|
286
269
|
filterKeys,
|
|
287
270
|
getDeleteDraftAdminCqn,
|
|
288
271
|
getCompositionTargets
|
|
@@ -38,26 +38,25 @@ class AMQPWebhookMessaging extends MessagingService {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
startListening(opt = {}) {
|
|
41
|
-
if (this.subscribedTopics.size)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
if (!this.subscribedTopics.size) return
|
|
42
|
+
const management = this.getManagement()
|
|
43
|
+
if (!opt.doNotDeploy) this.queued(management.createQueueAndSubscriptions.bind(management))()
|
|
44
|
+
this.queued(this.listenToClient.bind(this))(async (_topic, _payload, _other, { done, failed }) => {
|
|
45
|
+
const msg = Object.assign(normalizeIncomingMessage(_payload), _other || {})
|
|
46
|
+
msg.event = _topic
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
48
|
+
if (!msg._) msg._ = {}
|
|
49
|
+
msg._.topic = _topic
|
|
50
|
+
try {
|
|
51
|
+
await super.emit(msg)
|
|
52
|
+
done()
|
|
53
|
+
} catch (e) {
|
|
54
|
+
// In case of AMQP and Solace, the `failed` callback must be called
|
|
55
|
+
// with an error, otherwise there are problems with the redelivery count.
|
|
56
|
+
failed(new Error('processing failed'))
|
|
57
|
+
this.LOG.error('ERROR occured in asynchronous event processing:', e)
|
|
58
|
+
}
|
|
59
|
+
})
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
listenToClient(cb) {
|
|
@@ -35,6 +35,7 @@ class FileBasedMessaging extends MessagingService {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
startWatching() {
|
|
38
|
+
if (!this.subscribedTopics.size) return
|
|
38
39
|
const watcher = async () => {
|
|
39
40
|
if (!(await touched(this.file, this.recent))) return // > not touched since last check
|
|
40
41
|
// REVISIT: Bad if lock file wasn't cleaned up (due to crashes...)
|
|
@@ -450,8 +450,12 @@ const getReqOptions = (req, query, service) => {
|
|
|
450
450
|
}
|
|
451
451
|
|
|
452
452
|
if (reqOptions.data && reqOptions.method !== 'GET' && reqOptions.method !== 'HEAD') {
|
|
453
|
-
reqOptions.
|
|
454
|
-
|
|
453
|
+
if (typeof reqOptions.data === 'object' && !Buffer.isBuffer(reqOptions.data)) {
|
|
454
|
+
reqOptions.headers['content-type'] = 'application/json'
|
|
455
|
+
reqOptions.headers['content-length'] = Buffer.byteLength(JSON.stringify(reqOptions.data))
|
|
456
|
+
} else if (typeof reqOptions.data === 'string' || Buffer.isBuffer(reqOptions.data)) {
|
|
457
|
+
reqOptions.headers['content-length'] = Buffer.byteLength(reqOptions.data)
|
|
458
|
+
}
|
|
455
459
|
}
|
|
456
460
|
reqOptions.url = formatPath(reqOptions.url)
|
|
457
461
|
|
package/libx/odata/grammar.pegjs
CHANGED
|
@@ -520,7 +520,10 @@
|
|
|
520
520
|
}
|
|
521
521
|
return {apply: mainTransformation}
|
|
522
522
|
}
|
|
523
|
-
|
|
523
|
+
|
|
524
|
+
custom
|
|
525
|
+
= [a-zA-Z0-9-_.~]+ "=" [^&]*
|
|
526
|
+
|
|
524
527
|
format = "$format=" f:$([^&]*) {
|
|
525
528
|
if (f.toLowerCase() !== "json") {
|
|
526
529
|
const err = new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED")
|
package/libx/odata/parser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function peg$subclass(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}function peg$SyntaxError(r,t,e,n){this.message=r,this.expected=t,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(r,t){t=void 0!==t?t:{};var e,n={},s={ODataRelativeURI:Ye},o=Ye,u="/",a=De("/",!1),c=De("?",!1),i=De("&",!1),f="$count",l=De("$count",!1),h="$ref",p=De("$ref",!1),A="$value",d=De("$value",!1),g=function(r){return[r]},m="=",v=De("=",!1),b="$skiptoken=",y=De("$skiptoken=",!1),C="$select=",w=De("$select=",!1),x="$expand=",E=De("$expand=",!1),$="$filter=",L=De("$filter=",!1),B="$orderby=",S=De("$orderby=",!1),T=function(r,t){os(t)},O="$top=",_=De("$top=",!1),R="$skip=",Z=De("$skip=",!1),j="$search=",N=De("$search=",!1),k="$count=",z=De("$count=",!1),D="$apply=",P=De("$apply=",!1),F=De("*",!1),U=De(";",!1),M="/$count",q=De("/$count",!1),I=function(r){return r?[r]:[]},Y=function(r,t){r.push({xpr:t})},X=function(r,t){r.push({val:t})},J=function(r,t,e){r.push(t,...e)},Q=function(r,t){r.push(t)},W=function(r,t,e){r.push(t,...e)},G=":",H=De(":",!1),K="any",V=De("any",!1),rr="all",tr=De("all",!1),er=De("asc",!1),nr="desc",sr=De("desc",!1),or=function(r,t){return t},ur=/^[a-zA-Z]/,ar=Pe([["a","z"],["A","Z"]],!1,!1),cr=/^[a-zA-Z0-9\-]/,ir=Pe([["a","z"],["A","Z"],["0","9"],"-"],!1,!1),fr=/^[^&]/,lr=Pe(["&"],!0,!1),hr="$format=",pr=De("$format=",!1),Ar=Fe("a comparison"),dr=De("eq",!1),gr=De("ne",!1),mr=De("lt",!1),vr=De("gt",!1),br=De("le",!1),yr=De("ge",!1),Cr=(De("add",!1),De("sub",!1),De("mul",!1),De("div",!1),De("mod",!1),Fe("an operand")),wr=Fe("navigation with $count"),xr=function(r,t){return t},Er=function(r,t){return t?{id:r,where:t}:r},$r=Fe("a reference"),Lr=function(r,t){return t},Br=function(r){return{val:r}},Sr=De("{",!1),Tr=/^[^}]/,Or=Pe(["}"],!0,!1),_r=De("}",!1),Rr="[",Zr=De("[",!1),jr="]",Nr=De("]",!1),kr=/^[^\]]/,zr=Pe(["]"],!0,!1),Dr=Fe("a function call"),Pr=function(r,t,e){return e},Fr=Fe("a boolean function"),Ur="contains",Mr=De("contains",!0),qr="endswith",Ir=De("endswith",!0),Yr="startswith",Xr=De("startswith",!0),Jr=De("NOT",!0),Qr=De("AND",!0),Wr=De("OR",!0),Gr="aggregate",Hr=De("aggregate",!1),Kr="groupby",Vr=De("groupby",!1),rt="filter",tt=De("filter",!1),et="search",nt=De("search",!1),st="concat",ot=De("concat",!1),ut="compute",at=De("compute",!1),ct=De("top",!1),it="skip",ft=De("skip",!1),lt="orderby",ht=De("orderby",!1),pt=De("topcount",!0),At=De("bottomcount",!0),dt=De("topsum",!0),gt=De("bottomsum",!0),mt=De("toppercent",!0),vt=De("bottompercent",!0),bt=function(r,t){return t},yt="with",Ct=De("with",!1),wt="from",xt=De("from",!1),Et=De("as",!1),$t="rollup",Lt=De("rollup",!1),Bt="$all",St=De("$all",!1),Tt=function(r,t){return t},Ot="identity",_t=De("identity",!1),Rt=function(r,t){return t},Zt="true",jt=De("true",!1),Nt="false",kt=De("false",!1),zt=Fe("Edm.String"),Dt="'",Pt=De("'",!1),Ft="''",Ut=De("''",!1),Mt=/^[^']/,qt=Pe(["'"],!0,!1),It='"',Yt=De('"',!1),Xt='\\"',Jt=De('\\"',!1),Qt=/^[^"]/,Wt=Pe(['"'],!0,!1),Gt=/^[^ \t\n()"&;]/,Ht=Pe([" ","\t","\n","(",")",'"',"&",";"],!0,!1),Kt=/^[0-9]/,Vt=Pe([["0","9"]],!1,!1),re="-",te=De("-",!1),ee=De("T",!1),ne=".",se=De(".",!1),oe=De("Z",!1),ue=De("+",!1),ae=/^[+\-]/,ce=Pe(["+","-"],!1,!1),ie=De("e",!1),fe=/^[_a-zA-Z]/,le=Pe(["_",["a","z"],["A","Z"]],!1,!1),he=/^[_a-zA-Z0-9"."]/,pe=Pe(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),Ae=/^[0-9a-fA-F]/,de=Pe([["0","9"],["a","f"],["A","F"]],!1,!1),ge=/^[^\/?]/,me=Pe(["/","?"],!0,!1),ve=/^[a-zA-Z0-9\-"."_~!$'()*+,;=:@"\/""?"]/,be=Pe([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","'","(",")","*","+",",",";","=",":","@",'"',"/",'"','"',"?",'"'],!1,!1),ye="binary'",Ce=De("binary'",!1),we=/^[a-zA-Z0-9\-_]/,xe=Pe([["a","z"],["A","Z"],["0","9"],"-","_"],!1,!1),Ee="==",$e=De("==",!1),Le=De(",",!1),Be=De("(",!1),Se=De(")",!1),Te=Fe("optional whitespaces"),Oe=/^[ \t\n]/,_e=Pe([" ","\t","\n"],!1,!1),Re=Fe("mandatory whitespaces"),Ze=0,je=[{line:1,column:1}],Ne=0,ke=[],ze=0;if("startRule"in t){if(!(t.startRule in s))throw new Error("Can't start parsing from rule \""+t.startRule+'".');o=s[t.startRule]}function De(r,t){return{type:"literal",text:r,ignoreCase:t}}function Pe(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function Fe(r){return{type:"other",description:r}}function Ue(t){var e,n=je[t];if(n)return n;for(e=t-1;!je[e];)e--;for(n={line:(n=je[e]).line,column:n.column};e<t;)10===r.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return je[t]=n,n}function Me(r,t){var e=Ue(r),n=Ue(t);return{start:{offset:r,line:e.line,column:e.column},end:{offset:t,line:n.line,column:n.column}}}function qe(r){Ze<Ne||(Ze>Ne&&(Ne=Ze,ke=[]),ke.push(r))}function Ie(r,t,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(r,t),r,t,e)}function Ye(){var t,e,s,o,f,l,h,p,A,d,g,m,v,b;if(t=Ze,47===r.charCodeAt(Ze)?(e=u,Ze++):(e=n,0===ze&&qe(a)),e===n&&(e=null),e!==n)if(s=Ze,(o=Xe())!==n&&(s,o=void(Yn=o)),(s=o)!==n){if(o=Ze,(f=Pn())!==n)if(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l!==n)if((h=Pn())!==n)if((p=Qe())!==n){for(A=[],d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);d!==n;)A.push(d),d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);A!==n?o=f=[f,l,h,p,A]:(Ze=o,o=n)}else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;o===n&&(o=null),o!==n&&(f=Pn())!==n?(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l===n&&(l=null),l!==n&&(h=Pn())!==n?(t,t=e=function(){if(Xn)return Yn.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete Yn.expand,delete Yn.limit,delete Yn.orderBy,Yn.apply?rs(Yn,Yn.apply):{SELECT:Yn};let r;if(Yn.expand){Yn.columns||(Yn.columns=["*"],r=!0);for(const r of Yn.expand){const t=Yn.columns.findIndex(Gn(r));t>-1&&Yn.columns.splice(t,1),Yn.columns.push(r)}delete Yn.expand}return Yn.count&&Yn.apply&&(Yn.__countAggregated=!0),Yn.apply?rs(Yn,Yn.apply,r):{SELECT:Yn}}()):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Xe(){var t,e,s,o,c,i,m,v;return t=Ze,r.substr(Ze,6)===f?(e=f,Ze+=6):(e=n,0===ze&&qe(l)),e!==n&&(t,e=void(Xn=!0)),(t=e)===n&&(t=Ze,e=Ze,r.substr(Ze,4)===h?(s=h,Ze+=4):(s=n,0===ze&&qe(p)),s===n&&(r.substr(Ze,6)===A?(s=A,Ze+=6):(s=n,0===ze&&qe(d))),(e=s!==n?r.substring(e,Ze):s)!==n&&(t,v=e,e=!Jn.includes(v)&&{from:{ref:[v]}}),(t=e)===n&&(t=Ze,e=Ze,(s=Rn())!==n?(o=Ze,(c=zn())!==n&&(i=Dn())!==n?o=c=[c,i]:(Ze=o,o=n),o===n&&(o=Ze,(c=zn())!==n&&(i=Je())!==n&&(m=Dn())!==n?o=c=[c,i,m]:(Ze=o,o=n)),o===n&&(o=null),o!==n?(c=Ze,ze++,i=Nn(),ze--,i===n?c=void 0:(Ze=c,c=n),c!==n?e=s=[s,o,c]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),e===n&&(e=Ze,(s=Nn())!==n&&(e,s=g(s)),e=s),e===n&&(e=null),e!==n?(s=Ze,o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(o,c=c),(o=c)!==n?((c=Xe())===n&&(c=null),c!==n?s=o=[o,c]:(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=function(r,t){if(t=t&&t[1],!r&&!t)return{from:{ref:[""]}};if(!r&&t&&t.from)return t.from.ref.unshift(""),t;const[e,n]=r,s=[];if(n?n.length>2?s.push({id:e,where:n[1].map((r=>r.val&&r.val.match&&r.val.match(/^"(.*)"$/)?{val:r.val.match(/^"(.*)"$/)[1]}:r))}):s.push({id:e,where:[]}):qn?s.push(`${"object"==typeof e&&"val"in e?e.val:e}`):"object"==typeof e&&"string"==typeof e.val&&e.val.match(/^[1-9]\d*$|^0$/)?s.push({val:Qn(e.val)}):s.push(e),t&&t.from){const r=t.from.ref;Object.prototype.hasOwnProperty.call(r[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[r.shift()]}),s.push(...r)}const o={from:{ref:s}};return t&&t.columns&&(o.columns=t.columns),o}(e,s)):(Ze=t,t=n)):(Ze=t,t=n))),t}function Je(){var t,e,s,o,u,a,c;return t=Ze,(e=pn())!==n&&(t,e=g(e)),(t=e)===n&&(t=Ze,(e=hn())!==n&&Pn()!==n?(61===r.charCodeAt(Ze)?(s="=",Ze++):(s=n,0===ze&&qe(v)),s!==n&&Pn()!==n&&(o=pn())!==n?(u=Ze,(a=kn())!==n&&(c=Je())!==n?u=a=[a,c]:(Ze=u,u=n),u===n&&(u=null),u!==n?(t,t=e=function(r,t,e){const n=[r,"=",t];return e&&n.push("and",...e[1]),n}(e,o,u)):(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)),t}function Qe(){var t,e,s,o,u;return t=Ze,(e=We())!==n&&(t,e=void((u=e)&&u.apply&&(Yn.apply=u.apply))),(t=e)===n&&(t=Ze,r.substr(Ze,11)===b?(e=b,Ze+=11):(e=n,0===ze&&qe(y)),e!==n&&(s=Pn())!==n?(o=function(){var t,e,s;t=Ze,(e=_n())===n&&(e=null);e!==n?(s=function(){var t,e,s;t=Ze,e=[],ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));if(s!==n)for(;s!==n;)e.push(s),ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),s===n&&(s=null),s!==n?(t,o=e,t=e=void(s||ss(o))):(Ze=t,t=n)):(Ze=t,t=n);var o;return t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=function(){var t,e,s,o,u;t=Ze,r.substr(Ze,8)===hr?(e=hr,Ze+=8):(e=n,0===ze&&qe(pr));if(e!==n){for(s=Ze,o=[],fr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(lr));u!==n;)o.push(u),fr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(lr));(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=e=function(r){if("json"!==r.toLowerCase()){const r=new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED");throw r.statusCode=501,r}}(s)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),t===n&&(t=function(){var t,e,s,o,u,a;t=Ze,ur.test(r.charAt(Ze))?(e=r.charAt(Ze),Ze++):(e=n,0===ze&&qe(ar));if(e!==n){for(s=[],cr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ir));o!==n;)s.push(o),cr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ir));if(s!==n)if(61===r.charCodeAt(Ze)?(o=m,Ze++):(o=n,0===ze&&qe(v)),o!==n){for(u=[],fr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(lr));a!==n;)u.push(a),fr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(lr));u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n}else Ze=t,t=n;return t}()))),t}function We(){var t,e,s,o,u,a,c,i,f,l,h;if(t=Ze,r.substr(Ze,8)===C?(e=C,Ze+=8):(e=n,0===ze&&qe(w)),e!==n)if((s=Pn())!==n)if((o=Ge())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n){if(t=Ze,r.substr(Ze,8)===x?(e=x,Ze+=8):(e=n,0===ze&&qe(E)),e!==n)if((s=Pn())!==n)if((o=He())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n&&(t=Ze,r.substr(Ze,8)===$?(e=$,Ze+=8):(e=n,0===ze&&qe(L)),e!==n&&(s=Pn())!==n&&(o=en())!==n?(t,h=o,t=e=void(Yn.where=h)):(Ze=t,t=n),t===n)){if(t=Ze,r.substr(Ze,9)===B?(e=B,Ze+=9):(e=n,0===ze&&qe(S)),e!==n)if((s=Pn())!==n)if((o=an())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);u!==n?(t,t=e=void os(o,!0)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;t===n&&(t=Ze,r.substr(Ze,5)===O?(e=O,Ze+=5):(e=n,0===ze&&qe(_)),e!==n&&(s=Pn())!==n&&(o=Ke())!==n?(t,l=o,t=e=void((Yn.limit||(Yn.limit={})).rows={val:l})):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===R?(e=R,Ze+=6):(e=n,0===ze&&qe(Z)),e!==n&&(s=Pn())!==n&&(o=Ve())!==n?(t,e=function(r){ss(r)}(o),t=e):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,8)===j?(e=j,Ze+=8):(e=n,0===ze&&qe(N)),e!==n&&(s=Pn())!==n&&(o=rn())!==n?(t,t=e=void((f=o)&&(Yn.search=f))):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===k?(e=k,Ze+=7):(e=n,0===ze&&qe(z)),e!==n&&(s=Pn())!==n?(o=function(){var r,t;r=Ze,(t=Tn())!==n&&(r,t=function(r){r&&(Yn.count=!0)}(t));return r=t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===D?(e=D,Ze+=7):(e=n,0===ze&&qe(P)),e!==n&&(s=Pn())!==n&&(o=cn())!==n?(t,t=e=o):(Ze=t,t=n))))))}}return t}function Ge(){var t,e,s;return t=Ze,42===r.charCodeAt(Ze)?(e="*",Ze++):(e=n,0===ze&&qe(F)),e===n&&(e=hn()),e!==n&&(t,s=e,Yn.columns=Array.isArray(Yn.columns)?Yn.columns:[],Yn.columns.find(Gn(s))||Yn.columns.push(s),e=s),t=e}function He(){var t,e,s,o,u,a,c,i,f;if(t=Ze,e=Ze,42===r.charCodeAt(Ze)?(s="*",Ze++):(s=n,0===ze&&qe(F)),s===n&&(s=hn()),s!==n&&(e,s=function(r){const t="*"===r?{}:r;return t.expand="*",Array.isArray(Yn.expand)||(Yn.expand=[]),Yn.expand.find(Gn(t))||Yn.expand.push(t),t}(s)),(e=s)!==n){if(s=Ze,o=Ze,(u=zn())!==n&&(o,In.push(Yn),Yn=Yn.expand[Yn.expand.length-1],u=void(Yn.expand="*")),(o=u)!==n){for(u=Ze,a=[],c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)a.push(c),c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);a!==n&&(u,a=function(r){if(r.find((r=>r&&void 0!==r.apply))){const r=new Error("EXPAND_APPLY_UNSUPPORTED");throw r.statusCode=501,r}if(Yn.columns){"*"===Yn.expand&&(Yn.expand=[]);for(const r of Yn.columns)Yn.expand.find(Gn(r))||Yn.expand.push(r);delete Yn.columns}else Array.isArray(Yn.expand)&&-1===Yn.expand.indexOf("*")&&Yn.expand.unshift("*")}(a)),(u=a)!==n?(a=Ze,(c=Dn())!==n&&(a,c=void(Yn=In.pop())),(a=c)!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;s===n&&(s=null),s!==n?(o=Ze,(u=kn())!==n&&(a=He())!==n?o=u=[u,a]:(Ze=o,o=n),o===n&&(o=null),o!==n?(u=Ze,r.substr(Ze,7)===M?(a=M,Ze+=7):(a=n,0===ze&&qe(q)),a!==n&&(u,a=function(){const r=new Error("EXPAND_COUNT_UNSUPPORTED");throw r.statusCode=501,r}()),(u=a)===n&&(u=null),u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}function Ke(){var r,t;return r=Ze,(t=_n())!==n&&(r,t=t),r=t}function Ve(){var r,t;return r=Ze,(t=_n())!==n&&(r,t=t),r=t}function rn(){var r,t;return r=Ze,(t=tn())!==n&&(r,t=t),(r=t)===n&&(r=Pn()),r}function tn(){var t,e,s,o,u,a,c;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=tn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,o=function(){var t,e,s,o,u;t=Ze,34===r.charCodeAt(Ze)?(e=It,Ze++):(e=n,0===ze&&qe(Yt));if(e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));u!==n;)o.push(u),r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));(s=o!==n?r.substring(s,Ze):o)!==n?(34===r.charCodeAt(Ze)?(o=It,Ze++):(o=n,0===ze&&qe(Yt)),o!==n?(t,t=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),o!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,(o=On())!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s;t=Ze,e=[],Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));if(s!==n)for(;s!==n;)e.push(s),Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),o!==n&&(s,o=X(e,o)),s=o))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function en(){var r,t;return r=Ze,(t=nn())!==n&&(r,t=t),r=t}function nn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=nn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,(o=fn())!==n&&(s,i=o,o=void e.push(...i)),(s=o)===n&&(s=Ze,(o=sn())!==n&&(s,o=function(r,t){"not"===r[r.length-1]&&"not"===t[0]?r.push("(",...t,")"):r.push(...t)}(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s,o;ze++,t=Ze,r.substr(Ze,8).toLowerCase()===Ur?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Mr));e===n&&(r.substr(Ze,8).toLowerCase()===qr?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Ir)),e===n&&(r.substr(Ze,10).toLowerCase()===Yr?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(Xr))));e!==n&&zn()!==n&&(s=ln())!==n&&kn()!==n&&(o=ln())!==n&&Dn()!==n?(t,u=s,a=o,t=e={func:e.toLowerCase(),args:[u,a]}):(Ze=t,t=n);var u,a;ze--,t===n&&(e=n,0===ze&&qe(Fr));return t}(),o!==n&&(s,o=function(r,t){r.push(t)}(e,o)),(s=o)===n&&(s=Ze,(o=Tn())!==n&&(s,o=X(e,o)),s=o)))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function sn(){var t,e,s,o,c,i,f;if(t=Ze,e=Ze,(s=Rn())!==n&&(e,s=[s]),(e=s)!==n)if(47===r.charCodeAt(Ze)?(s=u,Ze++):(s=n,0===ze&&qe(a)),s!==n){for(o=[],c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)o.push(c),c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);o!==n?(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===K?(e=K,Ze+=3):(e=n,0===ze&&qe(V));e!==n&&zn()!==n?((s=un())===n&&(s=null),s!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();if(!t)return["exists",{ref:[...r,{id:e}]}];let n=[];for(let r=0,s=0;r<t.length;++r){let o=t[r];o.ref&&0===o.ref.length&&"="===t[r+1]?n[s++]={func:"contains",args:[{ref:e},t[r+=2]]}:n[s++]=o}return n.length<t.length?(e=r.pop(),["exists",{ref:[...r,{id:e,where:n}]}]):["exists",{ref:[...r,{id:e,where:t}]}]}(e,i)),(c=i)===n&&(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===rr?(e=rr,Ze+=3):(e=n,0===ze&&qe(tr));e!==n&&zn()!==n&&(s=un())!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();return["not","exists",{ref:[...r,{id:e,where:["not",{xpr:[...t]}]}]}]}(e,i)),c=i),c!==n?(t,t=e=c):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function on(){var r,t,e,s,o,u,a,c,i;if(r=Ze,t=Ze,(e=mn())===n&&(e=null),e!==n&&(t,e=(c=e)?[c]:[]),(t=e)!==n)if(e=Ze,(s=zn())!==n&&(o=on())!==n&&(u=Dn())!==n?(e,i=o,e=s=void t.push("(",...i,")")):(Ze=e,e=n),e===n&&(e=Ze,(s=fn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),(e=s)===n&&(e=Ze,(s=gn())!==n&&(e,s=function(r,t){r.push(t)}(t,s)),(e=s)===n&&(e=Ze,(s=sn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),e=s))),e!==n){for(s=[],o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);s!==n?(r,r=t=t):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;return r}function un(){var t,e,s,o;return t=Ze,(e=Rn())!==n?(58===r.charCodeAt(Ze)?(s=G,Ze++):(s=n,0===ze&&qe(H)),s!==n&&(o=on())!==n?(t,t=e=us(e,o)):(Ze=t,t=n)):(Ze=t,t=n),t}function an(){var t,e,s,o,u,a;return t=Ze,e=Ze,(s=sn())!==n&&(e,s=function(){const r=new Error("ORDERBY_LAMBDA_UNSUPPORTED");throw r.statusCode=501,r}()),(e=s)===n&&(e=gn())===n&&(e=hn()),e!==n?(s=Ze,Fn()!==n?(o=Ze,"asc"===r.substr(Ze,3)?(u="asc",Ze+=3):(u=n,0===ze&&qe(er)),u===n&&(r.substr(Ze,4)===nr?(u=nr,Ze+=4):(u=n,0===ze&&qe(sr))),(o=u!==n?r.substring(o,Ze):u)!==n?(s,s=o):(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=Un(e,(a=s)&&{sort:a})):(Ze=t,t=n)):(Ze=t,t=n),t}function cn(){var t,e,s,o,c,i;if(t=Ze,(e=Cn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);s!==n?(t,t=e=function(r,t){if(void 0!==r){t=Array.isArray(t)?t:[t];for(let e of t)for(const t in e)if("limit"===t&&e.limit&&r.limit&&r.limit.offset&&e.limit.rows)r.limit.rows=e.limit.rows;else if(r[t]||"groupBy"===t&&(r.where||r.search)||"aggregate"===t&&"groupBy"in r&&!("groupBy"in e)){let n=r;r={apply:n},"limit"===t&&e[t].offset&&n.limit&&n.limit.offset&&n.limit.offset.val&&(e[t].offset+=n.limit.offset.val),n=r,n[t]=e[t]}else r[t]=e[t];return{apply:r}}}(e,s)):(Ze=t,t=n)}else Ze=t,t=n;return t}function fn(){var t,e,s,o,u,a;return ze++,t=Ze,(e=ln())!==n&&Fn()!==n?(s=Ze,"eq"===r.substr(Ze,2)?(o="eq",Ze+=2):(o=n,0===ze&&qe(dr)),o===n&&("ne"===r.substr(Ze,2)?(o="ne",Ze+=2):(o=n,0===ze&&qe(gr)),o===n&&("lt"===r.substr(Ze,2)?(o="lt",Ze+=2):(o=n,0===ze&&qe(mr)),o===n&&("gt"===r.substr(Ze,2)?(o="gt",Ze+=2):(o=n,0===ze&&qe(vr)),o===n&&("le"===r.substr(Ze,2)?(o="le",Ze+=2):(o=n,0===ze&&qe(br)),o===n&&("ge"===r.substr(Ze,2)?(o="ge",Ze+=2):(o=n,0===ze&&qe(yr))))))),(s=o!==n?r.substring(s,Ze):o)!==n&&(o=Fn())!==n&&(u=ln())!==n?(t,t=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[a=s]||a,u]):(Ze=t,t=n)):(Ze=t,t=n),ze--,t===n&&(e=n,0===ze&&qe(Ar)),t}function ln(){var t;return ze++,t=function(){var t,e,s,o,c,i,h;ze++,t=Ze,e=[],s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=xr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=Er(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);if(s!==n)for(;s!==n;)e.push(s),s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=xr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=Er(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);else e=n;e!==n?(r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n?(t,t=e={func:"count",as:"$count",args:[{ref:e}]}):(Ze=t,t=n)):(Ze=t,t=n);ze--,t===n&&(e=n,0===ze&&qe(wr));return t}(),t===n&&(t=gn())===n&&(t=pn())===n&&(t=hn())===n&&(t=An())===n&&(t=dn())===n&&(t=function(){var t,e,s,o,u;t=Ze,91===r.charCodeAt(Ze)?(e=Rr,Ze++):(e=n,0===ze&&qe(Zr));if(e!==n){for(s=Ze,o=[],kr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(zr));u!==n;)o.push(u),kr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(zr));(s=o!==n?r.substring(s,Ze):o)!==n?(93===r.charCodeAt(Ze)?(o=jr,Ze++):(o=n,0===ze&&qe(Nr)),o!==n?(t,t=e={list:s.replace(/"/g,"").split(",").map((r=>({val:r})))}):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}()),ze--,t===n&&(n,0===ze&&qe(Cr)),t}function hn(){var t,e,s,o,c,i,f,l;if(ze++,t=Ze,(e=Rn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Lr(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Lr(0,i)):(Ze=o,o=n);s!==n?(t,l=s,t=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe($r)),t}function pn(){var t,e,s;return t=Ze,(e=Tn())===n&&(e=function(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d,g,m,v,b,y,C,w,x,E,$,L;t=Ze,e=Ze,s=Ze,o=[],Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));if(u!==n)for(;u!==n;)o.push(u),Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));else o=n;if(o!==n)if(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u!==n)if(Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)if(Kt.test(r.charAt(Ze))?(c=r.charAt(Ze),Ze++):(c=n,0===ze&&qe(Vt)),c!==n)if(45===r.charCodeAt(Ze)?(i=re,Ze++):(i=n,0===ze&&qe(te)),i!==n)if(Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)if(Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n){if(h=Ze,84===r.charCodeAt(Ze)?(p="T",Ze++):(p=n,0===ze&&qe(ee)),p!==n)if(Kt.test(r.charAt(Ze))?(A=r.charAt(Ze),Ze++):(A=n,0===ze&&qe(Vt)),A!==n)if(Kt.test(r.charAt(Ze))?(d=r.charAt(Ze),Ze++):(d=n,0===ze&&qe(Vt)),d!==n)if(58===r.charCodeAt(Ze)?(g=G,Ze++):(g=n,0===ze&&qe(H)),g!==n)if(Kt.test(r.charAt(Ze))?(m=r.charAt(Ze),Ze++):(m=n,0===ze&&qe(Vt)),m!==n)if(Kt.test(r.charAt(Ze))?(v=r.charAt(Ze),Ze++):(v=n,0===ze&&qe(Vt)),v!==n){if(b=Ze,58===r.charCodeAt(Ze)?(y=G,Ze++):(y=n,0===ze&&qe(H)),y!==n)if(Kt.test(r.charAt(Ze))?(C=r.charAt(Ze),Ze++):(C=n,0===ze&&qe(Vt)),C!==n)if(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n){if(x=Ze,46===r.charCodeAt(Ze)?(E=".",Ze++):(E=n,0===ze&&qe(se)),E!==n){if($=[],Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n)for(;L!==n;)$.push(L),Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt));else $=n;$!==n?x=E=[E,$]:(Ze=x,x=n)}else Ze=x,x=n;x===n&&(x=null),x!==n?b=y=[y,C,w,x]:(Ze=b,b=n)}else Ze=b,b=n;else Ze=b,b=n;else Ze=b,b=n;b===n&&(b=null),b!==n?(90===r.charCodeAt(Ze)?(y="Z",Ze++):(y=n,0===ze&&qe(oe)),y===n&&(y=Ze,43===r.charCodeAt(Ze)?(C="+",Ze++):(C=n,0===ze&&qe(ue)),C===n&&(45===r.charCodeAt(Ze)?(C=re,Ze++):(C=n,0===ze&&qe(te))),C!==n?(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n?(Kt.test(r.charAt(Ze))?(x=r.charAt(Ze),Ze++):(x=n,0===ze&&qe(Vt)),x!==n?(58===r.charCodeAt(Ze)?(E=G,Ze++):(E=n,0===ze&&qe(H)),E!==n?(Kt.test(r.charAt(Ze))?($=r.charAt(Ze),Ze++):($=n,0===ze&&qe(Vt)),$!==n?(Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n?y=C=[C,w,x,E,$,L]:(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)),y===n&&(y=null),y!==n?h=p=[p,A,d,g,m,v,b,y]:(Ze=h,h=n)):(Ze=h,h=n)}else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;h===n&&(h=null),h!==n?s=o=[o,u,a,c,i,f,l,h]:(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=function(r){if(r.split("-")[0].length>4)throw Object.assign(new Error(`The type 'Edm.DateTimeOffset' is not compatible with '${r}'`),{statusCode:400});return r}(e));return t=e}()),e!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,(e=Zn())!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l;t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce));o===n&&(o=null);if(o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;if(u!==n){if(a=Ze,46===r.charCodeAt(Ze)?(c=ne,Ze++):(c=n,0===ze&&qe(se)),c!==n){if(i=[],Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)for(;f!==n;)i.push(f),Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt));else i=n;i!==n?a=c=[c,i]:(Ze=a,a=n)}else Ze=a,a=n;if(a===n&&(a=null),a!==n){if(c=Ze,101===r.charCodeAt(Ze)?(i="e",Ze++):(i=n,0===ze&&qe(ie)),i!==n){if(f=[],Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n)for(;l!==n;)f.push(l),Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt));else f=n;f!==n?c=i=[i,f]:(Ze=c,c=n)}else Ze=c,c=n;c===n&&(c=null),c!==n?s=o=[o,u,a,c]:(Ze=s,s=n)}else Ze=s,s=n}else Ze=s,s=n}else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=Qn(e));return t=e}(),e!==n&&(t,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(t=e)===n&&(t=Ze,(e=On())!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a;t=Ze,r.substr(Ze,7)===ye?(e=ye,Ze+=7):(e=n,0===ze&&qe(Ce));if(e!==n){if(s=Ze,o=Ze,u=[],we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe)),a!==n)for(;a!==n;)u.push(a),we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe));else u=n;u!==n?(r.substr(Ze,2)===Ee?(a=Ee,Ze+=2):(a=n,0===ze&&qe($e)),a===n&&(61===r.charCodeAt(Ze)?(a=m,Ze++):(a=n,0===ze&&qe(v))),a===n&&(a=null),a!==n?o=u=[u,a]:(Ze=o,o=n)):(Ze=o,o=n),(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=Wn(s)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),e!==n&&(t,e=Br(e)),t=e)))),t}function An(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,123===r.charCodeAt(Ze)?(o="{",Ze++):(o=n,0===ze&&qe(Sr)),o!==n){for(u=[],(a=An())===n&&(Tr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Or)));a!==n;)u.push(a),(a=An())===n&&(Tr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Or)));u!==n?(125===r.charCodeAt(Ze)?(a="}",Ze++):(a=n,0===ze&&qe(_r)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=Br(e)),t=e}function dn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,s=Ze,91===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n&&(u=Pn())!==n?(93===r.charCodeAt(Ze)?(a=jr,Ze++):(a=n,0===ze&&qe(Nr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n),s===n)if(s=Ze,91===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n)if((u=Pn())!==n)if(123===r.charCodeAt(Ze)?(a="{",Ze++):(a=n,0===ze&&qe(Sr)),a!==n){for(c=[],(i=dn())===n&&(kr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(zr)));i!==n;)c.push(i),(i=dn())===n&&(kr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(zr)));c!==n?(93===r.charCodeAt(Ze)?(i=jr,Ze++):(i=n,0===ze&&qe(Nr)),i!==n?s=o=[o,u,a,c,i]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=Br(e)),t=e}function gn(){var t,e,s,o,u,a,c;if(ze++,t=Ze,e=Ze,s=[],ur.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ar)),o!==n)for(;o!==n;)s.push(o),ur.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ar));else s=n;if((e=s!==n?r.substring(e,Ze):s)!==n)if((s=zn())!==n)if((o=ln())!==n){for(u=[],a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);u!==n&&(a=Dn())!==n?(t,t=e=function(r,t,e){if(Mn&&!(r.toLowerCase()in Mn.functions))throw Object.assign(new Error(`"${r}" is an unknown function in OData URL spec (strict mode)`),{statusCode:400});return{func:r.toLowerCase(),args:[t,...e]}}(e,o,u)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(Dr)),t}function mn(){var t,e;return t=Ze,Pn()!==n?("not"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Jr)),e!==n&&Fn()!==n?(t,t="not"):(Ze=t,t=n)):(Ze=t,t=n),t}function vn(){var t,e;return t=Ze,Fn()!==n?("and"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Qr)),e!==n&&Fn()!==n?(t,t="and"):(Ze=t,t=n)):(Ze=t,t=n),t}function bn(){var r,t;return r=Ze,(t=Fn())!==n&&(r,t="and"),r=t}function yn(){var t,e;return t=Ze,Fn()!==n?("or"===r.substr(Ze,2).toLowerCase()?(e=r.substr(Ze,2),Ze+=2):(e=n,0===ze&&qe(Wr)),e!==n&&Fn()!==n?(t,t="or"):(Ze=t,t=n)):(Ze=t,t=n),t}function Cn(){var t,e,s;return t=Ze,r.substr(Ze,9)===Gr?(e=Gr,Ze+=9):(e=n,0===ze&&qe(Hr)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=wn())!==n){for(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={aggregate:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===Kr?(e=Kr,Ze+=7):(e=n,0===ze&&qe(Vr)),e!==n?(s=function(){var r,t,e,s,o,u,a,c;if(r=Ze,(t=zn())!==n)if(zn()!==n)if((e=Bn())!==n){for(s=[],o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);s!==n?(o=Ze,(u=Dn())!==n&&(o,i=s,u={groupBy:[e,...i]}),(o=u)!==n?(u=Ze,(a=kn())!==n&&(c=cn())!==n?(u,u=a=c):(Ze=u,u=n),u===n&&(u=null),u!==n&&(a=Dn())!==n?(r,t=function(r,t,e){let n={};return n=e?{groupBy:[r,...t],...e.apply}:{groupBy:[r,...t]},n}(e,s,u),r=t):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var i;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===rt?(e=rt,Ze+=6):(e=n,0===ze&&qe(tt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=en())!==n&&(t,e=e),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={where:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===et?(e=et,Ze+=6):(e=n,0===ze&&qe(nt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=rn())!==n&&(t,e=function(r){if(r)return r}(e)),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={search:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===st?(e=st,Ze+=6):(e=n,0===ze&&qe(ot)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=cn())!==n){if(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n),s!==n)for(;s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n);else e=n;e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={concat:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===ut?(e=ut,Ze+=7):(e=n,0===ze&&qe(at)),e!==n?(s=function(){var r,t,e,s,o,u,a,c,i,f;if(r=Ze,(t=zn())!==n)if((e=Pn())!==n)if((s=Sn())!==n){for(o=[],u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);o!==n&&(u=Pn())!==n&&(a=Dn())!==n?r=t=[t,e,s,o,u,a]:(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"top"===r.substr(Ze,3)?(e="top",Ze+=3):(e=n,0===ze&&qe(ct)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ke())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{rows:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,4)===it?(e=it,Ze+=4):(e=n,0===ze&&qe(ft)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ve())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{offset:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===lt?(e=lt,Ze+=7):(e=n,0===ze&&qe(ht)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=an())!==n){for(e=[],s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={orderBy:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"topcount"===r.substr(Ze,8).toLowerCase()?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(pt)),e===n&&("bottomcount"===r.substr(Ze,11).toLowerCase()?(e=r.substr(Ze,11),Ze+=11):(e=n,0===ze&&qe(At)),e===n&&("topsum"===r.substr(Ze,6).toLowerCase()?(e=r.substr(Ze,6),Ze+=6):(e=n,0===ze&&qe(dt)),e===n&&("bottomsum"===r.substr(Ze,9).toLowerCase()?(e=r.substr(Ze,9),Ze+=9):(e=n,0===ze&&qe(gt)),e===n&&("toppercent"===r.substr(Ze,10).toLowerCase()?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(mt)),e===n&&("bottompercent"===r.substr(Ze,13).toLowerCase()?(e=r.substr(Ze,13),Ze+=13):(e=n,0===ze&&qe(vt))))))),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n&&(t=ln())!==n&&Pn()!==n&&kn()!==n&&Pn()!==n&&(e=ln())!==n&&Pn()!==n&&Dn()!==n?(r,r=[t,e]):(Ze=r,r=n);return r}(),s!==n?(t,t=e=function(r,t){if(!{topcount:!0,bottomcount:!0,topsum:!1,bottomsum:!1,toppercent:!1,bottompercent:!1}[r=r.toLowerCase()])throw Object.assign(new Error(`Transformation "${r}" in $apply is not yet supported.`),{statusCode:501});return{aggregate:[{func:r,args:t}]}}(e,s)):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,e=function(){var t,e;t=Ze,r.substr(Ze,8)===Ot?(e=Ot,Ze+=8):(e=n,0===ze&&qe(_t));e!==n&&(t,e={identity:!0});return t=e}(),e!==n&&(t,e=e),t=e)))))))))),t}function wn(){var t,e,s,o;return t=Ze,e=Ze,r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n&&(o=Ln())!==n?(e,e=s={func:"count",args:[{val:1}],as:o}):(Ze=e,e=n),e===n&&(e=xn()),e!==n&&(t,e=e),t=e}function xn(){var r,t,e,s,o;return r=Ze,(t=hn())!==n?((e=En())===n&&(e=null),e!==n?((s=$n())===n&&(s=null),s!==n?((o=Ln())===n&&(o=null),o!==n?(r,r=t={func:e,args:[t],as:o}):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n),r===n&&(r=Ze,(t=Rn())!==n&&(e=zn())!==n&&(s=xn())!==n&&(o=Dn())!==n?r=t=[t,e,s,o]:(Ze=r,r=n)),r}function En(){var t,e,s,o,u;if(t=Ze,Fn()!==n)if(r.substr(Ze,4)===yt?(e=yt,Ze+=4):(e=n,0===ze&&qe(Ct)),e!==n)if(Fn()!==n){if(s=Ze,o=[],ur.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ar)),u!==n)for(;u!==n;)o.push(u),ur.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ar));else o=n;(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=s.toLowerCase()):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return t}function $n(){var t,e,s,o,u,a,c;return t=Ze,(e=Fn())!==n?(r.substr(Ze,4)===wt?(s=wt,Ze+=4):(s=n,0===ze&&qe(xt)),s!==n&&(o=Fn())!==n&&(u=hn())!==n&&(a=En())!==n?((c=$n())===n&&(c=null),c!==n?t=e=[e,s,o,u,a,c]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n),t}function Ln(){var t,e,s;return t=Ze,Fn()!==n?("as"===r.substr(Ze,2)?(e="as",Ze+=2):(e=n,0===ze&&qe(Et)),e!==n&&Fn()!==n&&(s=Rn())!==n?(t,t=s):(Ze=t,t=n)):(Ze=t,t=n),t}function Bn(){var t,e;return t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l,h;t=Ze,e=Ze,r.substr(Ze,6)===$t?(s=$t,Ze+=6):(s=n,0===ze&&qe(Lt));if(s!==n)if((o=zn())!==n)if((u=Pn())!==n)if(r.substr(Ze,4)===Bt?(a=Bt,Ze+=4):(a=n,0===ze&&qe(St)),a===n&&(a=hn()),a!==n){if(c=[],i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n);else c=n;c!==n&&(i=Pn())!==n&&(f=Dn())!==n?e=s=[s,o,u,a,c,i,f]:(Ze=e,e=n)}else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;e!==n&&(t,e=function(r){const t=new Error("Rollup in groupby is not supported yet.");throw t.statusCode=501,t}());return t=e}(),e===n&&(e=hn()),e!==n&&(t,e=e),t=e}function Sn(){var r,t,e;return r=Ze,(t=nn())!==n&&(e=Ln())!==n?r=t=[t,e]:(Ze=r,r=n),r}function Tn(){var t,e;return t=Ze,r.substr(Ze,4)===Zt?(e=Zt,Ze+=4):(e=n,0===ze&&qe(jt)),e===n&&(r.substr(Ze,5)===Nt?(e=Nt,Ze+=5):(e=n,0===ze&&qe(kt))),e!==n&&(t,e="true"===e),t=e}function On(){var t,e,s,o,u;if(ze++,t=Ze,39===r.charCodeAt(Ze)?(e=Dt,Ze++):(e=n,0===ze&&qe(Pt)),e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));u!==n;)o.push(u),r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=s.replace(/''/g,"'")):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(zt)),t}function _n(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce)),o===n&&(o=null),o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;u!==n?s=o=[o,u]:(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=parseInt(e)),t=e}function Rn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,ze++,s=Tn(),ze--,s===n?e=void 0:(Ze=e,e=n),e!==n)if(s=Ze,ze++,o=Zn(),ze--,o===n?s=void 0:(Ze=s,s=n),s!==n){if(o=Ze,u=Ze,fe.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(le)),a!==n){for(c=[],he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));i!==n;)c.push(i),he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));c!==n?u=a=[a,c]:(Ze=u,u=n)}else Ze=u,u=n;(o=u!==n?r.substring(o,Ze):u)!==n?(t,t=e=o):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Zn(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d;return t=Ze,e=Ze,(s=jn())!==n&&(o=jn())!==n?(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u===n&&(u=null),u!==n&&(a=jn())!==n?(45===r.charCodeAt(Ze)?(c=re,Ze++):(c=n,0===ze&&qe(te)),c===n&&(c=null),c!==n&&(i=jn())!==n?(45===r.charCodeAt(Ze)?(f=re,Ze++):(f=n,0===ze&&qe(te)),f===n&&(f=null),f!==n&&(l=jn())!==n?(45===r.charCodeAt(Ze)?(h=re,Ze++):(h=n,0===ze&&qe(te)),h===n&&(h=null),h!==n&&(p=jn())!==n&&(A=jn())!==n&&(d=jn())!==n?e=s=[s,o,u,a,c,i,f,l,h,p,A,d]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function jn(){var t,e,s,o,u,a;return t=Ze,e=Ze,Ae.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(de)),s!==n?(Ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(de)),o!==n?(Ae.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(de)),u!==n?(Ae.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(de)),a!==n?e=s=[s,o,u,a]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function Nn(){var t,e,s,o;if(t=Ze,e=Ze,s=[],ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me)),o!==n)for(;o!==n;)s.push(o),ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me));else s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e={val:e}),t=e}function kn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(44===r.charCodeAt(Ze)?(s=",",Ze++):(s=n,0===ze&&qe(Le)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function zn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(40===r.charCodeAt(Ze)?(s="(",Ze++):(s=n,0===ze&&qe(Be)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function Dn(){var t,e,s;return t=Ze,(e=Pn())!==n?(41===r.charCodeAt(Ze)?(s=")",Ze++):(s=n,0===ze&&qe(Se)),s!==n?t=e=[e,s]:(Ze=t,t=n)):(Ze=t,t=n),t}function Pn(){var t,e,s;for(ze++,t=Ze,e=[],Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));s!==n;)e.push(s),Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Te)),t}function Fn(){var t,e,s;if(ze++,t=Ze,e=[],Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e)),s!==n)for(;s!==n;)e.push(s),Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));else e=n;return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Re)),t}const Un=Object.assign,{strict:Mn,minimal:qn}=t,In=[];let Yn,Xn;const Jn=["$value"],Qn=t.safeNumber||function(r){const t=Number(r);return Number.isSafeInteger(t)?t:r},Wn=t.standardBase64||function(r){return Buffer.from(r,"base64").toString("base64")},Gn=r=>t=>r===t||r.as&&t.as&&r.as===t.as||t.as&&r.ref&&t.as===r.ref[r.ref.length-1]||r.ref&&t.ref&&r.ref.join("")===t.ref.join(""),Hn=r=>t=>{if(Array.isArray(t))return t.map(Hn(r));const e=t.ref&&r.find((r=>r.as&&r.func&&r.as===t.ref[0]));return e||t},Kn=r=>t=>Array.isArray(t)?t.map(Kn(r)):t.ref&&!r.find(Gn(t))?{val:null}:t,Vn=(r,t)=>{if(1===t.ref.length)r.find(Gn(t))||r.push(t);else{const e=t.ref.shift(),n=r.find((r=>r.ref&&r.ref[0]===e));if(n)Vn(n.expand,t);else{const n={ref:[e],expand:[]};Vn(n.expand,t),r.push(n)}}},rs=(r,t,e=!1)=>{let n=ns({from:r.from},t,e);if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=ts(n[t],r,e);else n=ts(n,r,e);return n},ts=(r,t,e)=>{if(!t)return r;t.apply&&delete t.apply;let n={};t.columns&&"$count"===t.columns[0].as||r.SELECT.where&&t.where||r.SELECT.limit&&t.limit||r.SELECT.orderBy&&t.orderBy||r.SELECT.search&&t.search?n.from=r:n=r.SELECT;for(const r in t)"columns"===r?(t.columns=t.columns.map((r=>n.columns&&n.columns.find((t=>r.ref&&r.ref[0]===t.as||t.ref&&r.ref&&r.ref[0]===t.ref[0]&&!r.expand))||r)),n.columns&&n.groupBy&&t.columns.push(...n.columns.filter((r=>e&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))&&!t.columns.some((t=>t.ref&&t.ref[0]===r.as||t.ref&&r.ref&&t.ref[0]===r.ref[0]||t.as&&t.as===r.as))))||[]),n.columns=t.columns):"from"!==r&&(n[r]=t[r]);const s=[...n.columns&&n.columns.filter((r=>n.groupBy&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))))||[],...n.columns&&n.columns.filter((r=>r&&"object"==typeof r&&"func"in r))||[]];return es(n,s,e),{SELECT:n}},es=(r,t,e)=>{t.length&&(r.columns=r.columns&&!e?r.columns.reduce(((r,e)=>{const n=t.find(Gn(e));return n&&r.push(n),r}),[]):t,r.where&&(r.where=r.where.map(Hn(r.columns)),r.groupBy&&(r.having=r.where.map(Kn(r.groupBy)),delete r.where)),r.columns=r.columns.reduce(((r,e)=>(e.ref&&e.ref.length>1&&t.find(Gn(e))?Vn(r,{ref:[...e.ref]}):r.push(e),r)),[]))},ns=(r,t,e)=>{if(!t)return;if(r.apply&&delete r.apply,t.identity&&r.from.SELECT&&(r=r.from.SELECT),(t.apply||t.where&&r.where||t.search&&r.search||t.limit&&r.limit||t.orderBy&&r.orderBy)&&(r.from={SELECT:{...r}}),t.where&&(r.where=t.where),t.search&&(r.search=t.search),t.groupBy){r.groupBy=[];for(const e of t.groupBy)r.groupBy.find(Gn(e))||r.groupBy.push(e)}t.limit&&(r.limit=t.limit),t.orderBy&&(r.orderBy=t.orderBy);const n=[...r.groupBy||[],...t.aggregate||[]];if(es(r,n,e),t.apply&&r.from&&ns(r.from.SELECT,t.apply),t.concat&&Array.isArray(t.concat)){const e=[];for(let n of t.concat){n.from=1===Object.keys(r).length?r.from:{SELECT:r};const t=ns(n,n.apply);Array.isArray(t)?e.push(...t):e.push(t)}r=e}return Array.isArray(r)?r:{SELECT:r}},ss=r=>{Yn.limit&&Yn.limit.offset&&Yn.limit.offset.val&&(r+=Yn.limit.offset.val),(Yn.limit||(Yn.limit={})).offset={val:r}},os=(r,t=!1)=>{Yn.orderBy=Yn.orderBy?t?[r,...Yn.orderBy]:[...Yn.orderBy,r]:[r]},us=(r,t)=>{for(const e of t)e.ref&&e.ref[0]===r&&e.ref.shift(),e.func&&us(r,e.args);return t};if((e=o())!==n&&Ze===r.length)return e;throw e!==n&&Ze<r.length&&qe({type:"end"}),Ie(ke,Ne<r.length?r.charAt(Ne):null,Ne<r.length?Me(Ne,Ne+1):Me(Ne,Ne))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(r,t){var e={literal:function(r){return'"'+s(r.text)+'"'},class:function(r){var t,e="";for(t=0;t<r.parts.length;t++)e+=r.parts[t]instanceof Array?o(r.parts[t][0])+"-"+o(r.parts[t][1]):o(r.parts[t]);return"["+(r.inverted?"^":"")+e+"]"},any:function(r){return"any character"},end:function(r){return"end of input"},other:function(r){return r.description}};function n(r){return r.charCodeAt(0).toString(16).toUpperCase()}function s(r){return r.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}function o(r){return r.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}return"Expected "+function(r){var t,n,s,o=new Array(r.length);for(t=0;t<r.length;t++)o[t]=(s=r[t],e[s.type](s));if(o.sort(),o.length>0){for(t=1,n=1;t<o.length;t++)o[t-1]!==o[t]&&(o[n]=o[t],n++);o.length=n}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(r)+" but "+function(r){return r?'"'+s(r)+'"':"end of input"}(t)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|
|
1
|
+
"use strict";function peg$subclass(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}function peg$SyntaxError(r,t,e,n){this.message=r,this.expected=t,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(r,t){t=void 0!==t?t:{};var e,n={},s={ODataRelativeURI:Ye},o=Ye,u="/",a=De("/",!1),c=De("?",!1),i=De("&",!1),f="$count",l=De("$count",!1),h="$ref",p=De("$ref",!1),A="$value",d=De("$value",!1),g=function(r){return[r]},m="=",v=De("=",!1),b="$skiptoken=",y=De("$skiptoken=",!1),C="$select=",w=De("$select=",!1),x="$expand=",E=De("$expand=",!1),$="$filter=",L=De("$filter=",!1),B="$orderby=",S=De("$orderby=",!1),T=function(r,t){os(t)},_="$top=",O=De("$top=",!1),R="$skip=",Z=De("$skip=",!1),j="$search=",N=De("$search=",!1),k="$count=",z=De("$count=",!1),D="$apply=",P=De("$apply=",!1),F=De("*",!1),U=De(";",!1),M="/$count",q=De("/$count",!1),I=function(r){return r?[r]:[]},Y=function(r,t){r.push({xpr:t})},X=function(r,t){r.push({val:t})},J=function(r,t,e){r.push(t,...e)},Q=function(r,t){r.push(t)},W=function(r,t,e){r.push(t,...e)},G=":",H=De(":",!1),K="any",V=De("any",!1),rr="all",tr=De("all",!1),er=De("asc",!1),nr="desc",sr=De("desc",!1),or=function(r,t){return t},ur=/^[a-zA-Z0-9\-_.~]/,ar=Pe([["a","z"],["A","Z"],["0","9"],"-","_",".","~"],!1,!1),cr=/^[^&]/,ir=Pe(["&"],!0,!1),fr="$format=",lr=De("$format=",!1),hr=Fe("a comparison"),pr=De("eq",!1),Ar=De("ne",!1),dr=De("lt",!1),gr=De("gt",!1),mr=De("le",!1),vr=De("ge",!1),br=(De("add",!1),De("sub",!1),De("mul",!1),De("div",!1),De("mod",!1),Fe("an operand")),yr=Fe("navigation with $count"),Cr=function(r,t){return t},wr=function(r,t){return t?{id:r,where:t}:r},xr=Fe("a reference"),Er=function(r,t){return t},$r=function(r){return{val:r}},Lr=De("{",!1),Br=/^[^}]/,Sr=Pe(["}"],!0,!1),Tr=De("}",!1),_r="[",Or=De("[",!1),Rr="]",Zr=De("]",!1),jr=/^[^\]]/,Nr=Pe(["]"],!0,!1),kr=Fe("a function call"),zr=/^[a-zA-Z]/,Dr=Pe([["a","z"],["A","Z"]],!1,!1),Pr=function(r,t,e){return e},Fr=Fe("a boolean function"),Ur="contains",Mr=De("contains",!0),qr="endswith",Ir=De("endswith",!0),Yr="startswith",Xr=De("startswith",!0),Jr=De("NOT",!0),Qr=De("AND",!0),Wr=De("OR",!0),Gr="aggregate",Hr=De("aggregate",!1),Kr="groupby",Vr=De("groupby",!1),rt="filter",tt=De("filter",!1),et="search",nt=De("search",!1),st="concat",ot=De("concat",!1),ut="compute",at=De("compute",!1),ct=De("top",!1),it="skip",ft=De("skip",!1),lt="orderby",ht=De("orderby",!1),pt=De("topcount",!0),At=De("bottomcount",!0),dt=De("topsum",!0),gt=De("bottomsum",!0),mt=De("toppercent",!0),vt=De("bottompercent",!0),bt=function(r,t){return t},yt="with",Ct=De("with",!1),wt="from",xt=De("from",!1),Et=De("as",!1),$t="rollup",Lt=De("rollup",!1),Bt="$all",St=De("$all",!1),Tt=function(r,t){return t},_t="identity",Ot=De("identity",!1),Rt=function(r,t){return t},Zt="true",jt=De("true",!1),Nt="false",kt=De("false",!1),zt=Fe("Edm.String"),Dt="'",Pt=De("'",!1),Ft="''",Ut=De("''",!1),Mt=/^[^']/,qt=Pe(["'"],!0,!1),It='"',Yt=De('"',!1),Xt='\\"',Jt=De('\\"',!1),Qt=/^[^"]/,Wt=Pe(['"'],!0,!1),Gt=/^[^ \t\n()"&;]/,Ht=Pe([" ","\t","\n","(",")",'"',"&",";"],!0,!1),Kt=/^[0-9]/,Vt=Pe([["0","9"]],!1,!1),re="-",te=De("-",!1),ee=De("T",!1),ne=".",se=De(".",!1),oe=De("Z",!1),ue=De("+",!1),ae=/^[+\-]/,ce=Pe(["+","-"],!1,!1),ie=De("e",!1),fe=/^[_a-zA-Z]/,le=Pe(["_",["a","z"],["A","Z"]],!1,!1),he=/^[_a-zA-Z0-9"."]/,pe=Pe(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),Ae=/^[0-9a-fA-F]/,de=Pe([["0","9"],["a","f"],["A","F"]],!1,!1),ge=/^[^\/?]/,me=Pe(["/","?"],!0,!1),ve=/^[a-zA-Z0-9\-"."_~!$'()*+,;=:@"\/""?"]/,be=Pe([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","'","(",")","*","+",",",";","=",":","@",'"',"/",'"','"',"?",'"'],!1,!1),ye="binary'",Ce=De("binary'",!1),we=/^[a-zA-Z0-9\-_]/,xe=Pe([["a","z"],["A","Z"],["0","9"],"-","_"],!1,!1),Ee="==",$e=De("==",!1),Le=De(",",!1),Be=De("(",!1),Se=De(")",!1),Te=Fe("optional whitespaces"),_e=/^[ \t\n]/,Oe=Pe([" ","\t","\n"],!1,!1),Re=Fe("mandatory whitespaces"),Ze=0,je=[{line:1,column:1}],Ne=0,ke=[],ze=0;if("startRule"in t){if(!(t.startRule in s))throw new Error("Can't start parsing from rule \""+t.startRule+'".');o=s[t.startRule]}function De(r,t){return{type:"literal",text:r,ignoreCase:t}}function Pe(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function Fe(r){return{type:"other",description:r}}function Ue(t){var e,n=je[t];if(n)return n;for(e=t-1;!je[e];)e--;for(n={line:(n=je[e]).line,column:n.column};e<t;)10===r.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return je[t]=n,n}function Me(r,t){var e=Ue(r),n=Ue(t);return{start:{offset:r,line:e.line,column:e.column},end:{offset:t,line:n.line,column:n.column}}}function qe(r){Ze<Ne||(Ze>Ne&&(Ne=Ze,ke=[]),ke.push(r))}function Ie(r,t,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(r,t),r,t,e)}function Ye(){var t,e,s,o,f,l,h,p,A,d,g,m,v,b;if(t=Ze,47===r.charCodeAt(Ze)?(e=u,Ze++):(e=n,0===ze&&qe(a)),e===n&&(e=null),e!==n)if(s=Ze,(o=Xe())!==n&&(s,o=void(Yn=o)),(s=o)!==n){if(o=Ze,(f=Pn())!==n)if(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l!==n)if((h=Pn())!==n)if((p=Qe())!==n){for(A=[],d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);d!==n;)A.push(d),d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);A!==n?o=f=[f,l,h,p,A]:(Ze=o,o=n)}else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;o===n&&(o=null),o!==n&&(f=Pn())!==n?(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l===n&&(l=null),l!==n&&(h=Pn())!==n?(t,t=e=function(){if(Xn)return Yn.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete Yn.expand,delete Yn.limit,delete Yn.orderBy,Yn.apply?rs(Yn,Yn.apply):{SELECT:Yn};let r;if(Yn.expand){Yn.columns||(Yn.columns=["*"],r=!0);for(const r of Yn.expand){const t=Yn.columns.findIndex(Gn(r));t>-1&&Yn.columns.splice(t,1),Yn.columns.push(r)}delete Yn.expand}return Yn.count&&Yn.apply&&(Yn.__countAggregated=!0),Yn.apply?rs(Yn,Yn.apply,r):{SELECT:Yn}}()):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Xe(){var t,e,s,o,c,i,m,v;return t=Ze,r.substr(Ze,6)===f?(e=f,Ze+=6):(e=n,0===ze&&qe(l)),e!==n&&(t,e=void(Xn=!0)),(t=e)===n&&(t=Ze,e=Ze,r.substr(Ze,4)===h?(s=h,Ze+=4):(s=n,0===ze&&qe(p)),s===n&&(r.substr(Ze,6)===A?(s=A,Ze+=6):(s=n,0===ze&&qe(d))),(e=s!==n?r.substring(e,Ze):s)!==n&&(t,v=e,e=!Jn.includes(v)&&{from:{ref:[v]}}),(t=e)===n&&(t=Ze,e=Ze,(s=Rn())!==n?(o=Ze,(c=zn())!==n&&(i=Dn())!==n?o=c=[c,i]:(Ze=o,o=n),o===n&&(o=Ze,(c=zn())!==n&&(i=Je())!==n&&(m=Dn())!==n?o=c=[c,i,m]:(Ze=o,o=n)),o===n&&(o=null),o!==n?(c=Ze,ze++,i=Nn(),ze--,i===n?c=void 0:(Ze=c,c=n),c!==n?e=s=[s,o,c]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),e===n&&(e=Ze,(s=Nn())!==n&&(e,s=g(s)),e=s),e===n&&(e=null),e!==n?(s=Ze,o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(o,c=c),(o=c)!==n?((c=Xe())===n&&(c=null),c!==n?s=o=[o,c]:(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=function(r,t){if(t=t&&t[1],!r&&!t)return{from:{ref:[""]}};if(!r&&t&&t.from)return t.from.ref.unshift(""),t;const[e,n]=r,s=[];if(n?n.length>2?s.push({id:e,where:n[1].map((r=>r.val&&r.val.match&&r.val.match(/^"(.*)"$/)?{val:r.val.match(/^"(.*)"$/)[1]}:r))}):s.push({id:e,where:[]}):qn?s.push(`${"object"==typeof e&&"val"in e?e.val:e}`):"object"==typeof e&&"string"==typeof e.val&&e.val.match(/^[1-9]\d*$|^0$/)?s.push({val:Qn(e.val)}):s.push(e),t&&t.from){const r=t.from.ref;Object.prototype.hasOwnProperty.call(r[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[r.shift()]}),s.push(...r)}const o={from:{ref:s}};return t&&t.columns&&(o.columns=t.columns),o}(e,s)):(Ze=t,t=n)):(Ze=t,t=n))),t}function Je(){var t,e,s,o,u,a,c;return t=Ze,(e=pn())!==n&&(t,e=g(e)),(t=e)===n&&(t=Ze,(e=hn())!==n&&Pn()!==n?(61===r.charCodeAt(Ze)?(s="=",Ze++):(s=n,0===ze&&qe(v)),s!==n&&Pn()!==n&&(o=pn())!==n?(u=Ze,(a=kn())!==n&&(c=Je())!==n?u=a=[a,c]:(Ze=u,u=n),u===n&&(u=null),u!==n?(t,t=e=function(r,t,e){const n=[r,"=",t];return e&&n.push("and",...e[1]),n}(e,o,u)):(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)),t}function Qe(){var t,e,s,o,u;return t=Ze,(e=We())!==n&&(t,e=void((u=e)&&u.apply&&(Yn.apply=u.apply))),(t=e)===n&&(t=Ze,r.substr(Ze,11)===b?(e=b,Ze+=11):(e=n,0===ze&&qe(y)),e!==n&&(s=Pn())!==n?(o=function(){var t,e,s;t=Ze,(e=On())===n&&(e=null);e!==n?(s=function(){var t,e,s;t=Ze,e=[],ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));if(s!==n)for(;s!==n;)e.push(s),ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),s===n&&(s=null),s!==n?(t,o=e,t=e=void(s||ss(o))):(Ze=t,t=n)):(Ze=t,t=n);var o;return t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=function(){var t,e,s,o,u;t=Ze,r.substr(Ze,8)===fr?(e=fr,Ze+=8):(e=n,0===ze&&qe(lr));if(e!==n){for(s=Ze,o=[],cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));u!==n;)o.push(u),cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=e=function(r){if("json"!==r.toLowerCase()){const r=new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED");throw r.statusCode=501,r}}(s)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),t===n&&(t=function(){var t,e,s,o,u;t=Ze,e=[],ur.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(ar));if(s!==n)for(;s!==n;)e.push(s),ur.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(ar));else e=n;if(e!==n)if(61===r.charCodeAt(Ze)?(s=m,Ze++):(s=n,0===ze&&qe(v)),s!==n){for(o=[],cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));u!==n;)o.push(u),cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));o!==n?t=e=[e,s,o]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}()))),t}function We(){var t,e,s,o,u,a,c,i,f,l,h;if(t=Ze,r.substr(Ze,8)===C?(e=C,Ze+=8):(e=n,0===ze&&qe(w)),e!==n)if((s=Pn())!==n)if((o=Ge())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n){if(t=Ze,r.substr(Ze,8)===x?(e=x,Ze+=8):(e=n,0===ze&&qe(E)),e!==n)if((s=Pn())!==n)if((o=He())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n&&(t=Ze,r.substr(Ze,8)===$?(e=$,Ze+=8):(e=n,0===ze&&qe(L)),e!==n&&(s=Pn())!==n&&(o=en())!==n?(t,h=o,t=e=void(Yn.where=h)):(Ze=t,t=n),t===n)){if(t=Ze,r.substr(Ze,9)===B?(e=B,Ze+=9):(e=n,0===ze&&qe(S)),e!==n)if((s=Pn())!==n)if((o=an())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);u!==n?(t,t=e=void os(o,!0)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;t===n&&(t=Ze,r.substr(Ze,5)===_?(e=_,Ze+=5):(e=n,0===ze&&qe(O)),e!==n&&(s=Pn())!==n&&(o=Ke())!==n?(t,l=o,t=e=void((Yn.limit||(Yn.limit={})).rows={val:l})):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===R?(e=R,Ze+=6):(e=n,0===ze&&qe(Z)),e!==n&&(s=Pn())!==n&&(o=Ve())!==n?(t,e=function(r){ss(r)}(o),t=e):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,8)===j?(e=j,Ze+=8):(e=n,0===ze&&qe(N)),e!==n&&(s=Pn())!==n&&(o=rn())!==n?(t,t=e=void((f=o)&&(Yn.search=f))):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===k?(e=k,Ze+=7):(e=n,0===ze&&qe(z)),e!==n&&(s=Pn())!==n?(o=function(){var r,t;r=Ze,(t=Tn())!==n&&(r,t=function(r){r&&(Yn.count=!0)}(t));return r=t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===D?(e=D,Ze+=7):(e=n,0===ze&&qe(P)),e!==n&&(s=Pn())!==n&&(o=cn())!==n?(t,t=e=o):(Ze=t,t=n))))))}}return t}function Ge(){var t,e,s;return t=Ze,42===r.charCodeAt(Ze)?(e="*",Ze++):(e=n,0===ze&&qe(F)),e===n&&(e=hn()),e!==n&&(t,s=e,Yn.columns=Array.isArray(Yn.columns)?Yn.columns:[],Yn.columns.find(Gn(s))||Yn.columns.push(s),e=s),t=e}function He(){var t,e,s,o,u,a,c,i,f;if(t=Ze,e=Ze,42===r.charCodeAt(Ze)?(s="*",Ze++):(s=n,0===ze&&qe(F)),s===n&&(s=hn()),s!==n&&(e,s=function(r){const t="*"===r?{}:r;return t.expand="*",Array.isArray(Yn.expand)||(Yn.expand=[]),Yn.expand.find(Gn(t))||Yn.expand.push(t),t}(s)),(e=s)!==n){if(s=Ze,o=Ze,(u=zn())!==n&&(o,In.push(Yn),Yn=Yn.expand[Yn.expand.length-1],u=void(Yn.expand="*")),(o=u)!==n){for(u=Ze,a=[],c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)a.push(c),c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);a!==n&&(u,a=function(r){if(r.find((r=>r&&void 0!==r.apply))){const r=new Error("EXPAND_APPLY_UNSUPPORTED");throw r.statusCode=501,r}if(Yn.columns){"*"===Yn.expand&&(Yn.expand=[]);for(const r of Yn.columns)Yn.expand.find(Gn(r))||Yn.expand.push(r);delete Yn.columns}else Array.isArray(Yn.expand)&&-1===Yn.expand.indexOf("*")&&Yn.expand.unshift("*")}(a)),(u=a)!==n?(a=Ze,(c=Dn())!==n&&(a,c=void(Yn=In.pop())),(a=c)!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;s===n&&(s=null),s!==n?(o=Ze,(u=kn())!==n&&(a=He())!==n?o=u=[u,a]:(Ze=o,o=n),o===n&&(o=null),o!==n?(u=Ze,r.substr(Ze,7)===M?(a=M,Ze+=7):(a=n,0===ze&&qe(q)),a!==n&&(u,a=function(){const r=new Error("EXPAND_COUNT_UNSUPPORTED");throw r.statusCode=501,r}()),(u=a)===n&&(u=null),u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}function Ke(){var r,t;return r=Ze,(t=On())!==n&&r,r=t}function Ve(){var r,t;return r=Ze,(t=On())!==n&&r,r=t}function rn(){var r,t;return r=Ze,(t=tn())!==n&&r,(r=t)===n&&(r=Pn()),r}function tn(){var t,e,s,o,u,a,c;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=tn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,o=function(){var t,e,s,o,u;t=Ze,34===r.charCodeAt(Ze)?(e=It,Ze++):(e=n,0===ze&&qe(Yt));if(e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));u!==n;)o.push(u),r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));(s=o!==n?r.substring(s,Ze):o)!==n?(34===r.charCodeAt(Ze)?(o=It,Ze++):(o=n,0===ze&&qe(Yt)),o!==n?(t,t=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),o!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,(o=_n())!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s;t=Ze,e=[],Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));if(s!==n)for(;s!==n;)e.push(s),Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),o!==n&&(s,o=X(e,o)),s=o))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function en(){var r,t;return r=Ze,(t=nn())!==n&&r,r=t}function nn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=nn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,(o=fn())!==n&&(s,i=o,o=void e.push(...i)),(s=o)===n&&(s=Ze,(o=sn())!==n&&(s,o=function(r,t){"not"===r[r.length-1]&&"not"===t[0]?r.push("(",...t,")"):r.push(...t)}(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s,o;ze++,t=Ze,r.substr(Ze,8).toLowerCase()===Ur?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Mr));e===n&&(r.substr(Ze,8).toLowerCase()===qr?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Ir)),e===n&&(r.substr(Ze,10).toLowerCase()===Yr?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(Xr))));e!==n&&zn()!==n&&(s=ln())!==n&&kn()!==n&&(o=ln())!==n&&Dn()!==n?(t,u=s,a=o,t=e={func:e.toLowerCase(),args:[u,a]}):(Ze=t,t=n);var u,a;ze--,t===n&&(e=n,0===ze&&qe(Fr));return t}(),o!==n&&(s,o=function(r,t){r.push(t)}(e,o)),(s=o)===n&&(s=Ze,(o=Tn())!==n&&(s,o=X(e,o)),s=o)))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function sn(){var t,e,s,o,c,i,f;if(t=Ze,e=Ze,(s=Rn())!==n&&(e,s=[s]),(e=s)!==n)if(47===r.charCodeAt(Ze)?(s=u,Ze++):(s=n,0===ze&&qe(a)),s!==n){for(o=[],c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)o.push(c),c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);o!==n?(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===K?(e=K,Ze+=3):(e=n,0===ze&&qe(V));e!==n&&zn()!==n?((s=un())===n&&(s=null),s!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();if(!t)return["exists",{ref:[...r,{id:e}]}];let n=[];for(let r=0,s=0;r<t.length;++r){let o=t[r];o.ref&&0===o.ref.length&&"="===t[r+1]?n[s++]={func:"contains",args:[{ref:e},t[r+=2]]}:n[s++]=o}return n.length<t.length?(e=r.pop(),["exists",{ref:[...r,{id:e,where:n}]}]):["exists",{ref:[...r,{id:e,where:t}]}]}(e,i)),(c=i)===n&&(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===rr?(e=rr,Ze+=3):(e=n,0===ze&&qe(tr));e!==n&&zn()!==n&&(s=un())!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();return["not","exists",{ref:[...r,{id:e,where:["not",{xpr:[...t]}]}]}]}(e,i)),c=i),c!==n?(t,t=e=c):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function on(){var r,t,e,s,o,u,a,c,i;if(r=Ze,t=Ze,(e=mn())===n&&(e=null),e!==n&&(t,e=(c=e)?[c]:[]),(t=e)!==n)if(e=Ze,(s=zn())!==n&&(o=on())!==n&&(u=Dn())!==n?(e,i=o,e=s=void t.push("(",...i,")")):(Ze=e,e=n),e===n&&(e=Ze,(s=fn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),(e=s)===n&&(e=Ze,(s=gn())!==n&&(e,s=function(r,t){r.push(t)}(t,s)),(e=s)===n&&(e=Ze,(s=sn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),e=s))),e!==n){for(s=[],o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);s!==n?(r,r=t):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;return r}function un(){var t,e,s,o;return t=Ze,(e=Rn())!==n?(58===r.charCodeAt(Ze)?(s=G,Ze++):(s=n,0===ze&&qe(H)),s!==n&&(o=on())!==n?(t,t=e=us(e,o)):(Ze=t,t=n)):(Ze=t,t=n),t}function an(){var t,e,s,o,u,a;return t=Ze,e=Ze,(s=sn())!==n&&(e,s=function(){const r=new Error("ORDERBY_LAMBDA_UNSUPPORTED");throw r.statusCode=501,r}()),(e=s)===n&&(e=gn())===n&&(e=hn()),e!==n?(s=Ze,Fn()!==n?(o=Ze,"asc"===r.substr(Ze,3)?(u="asc",Ze+=3):(u=n,0===ze&&qe(er)),u===n&&(r.substr(Ze,4)===nr?(u=nr,Ze+=4):(u=n,0===ze&&qe(sr))),(o=u!==n?r.substring(o,Ze):u)!==n?(s,s=o):(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=Un(e,(a=s)&&{sort:a})):(Ze=t,t=n)):(Ze=t,t=n),t}function cn(){var t,e,s,o,c,i;if(t=Ze,(e=Cn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);s!==n?(t,t=e=function(r,t){if(void 0!==r){t=Array.isArray(t)?t:[t];for(let e of t)for(const t in e)if("limit"===t&&e.limit&&r.limit&&r.limit.offset&&e.limit.rows)r.limit.rows=e.limit.rows;else if(r[t]||"groupBy"===t&&(r.where||r.search)||"aggregate"===t&&"groupBy"in r&&!("groupBy"in e)){let n=r;r={apply:n},"limit"===t&&e[t].offset&&n.limit&&n.limit.offset&&n.limit.offset.val&&(e[t].offset+=n.limit.offset.val),n=r,n[t]=e[t]}else r[t]=e[t];return{apply:r}}}(e,s)):(Ze=t,t=n)}else Ze=t,t=n;return t}function fn(){var t,e,s,o,u,a;return ze++,t=Ze,(e=ln())!==n&&Fn()!==n?(s=Ze,"eq"===r.substr(Ze,2)?(o="eq",Ze+=2):(o=n,0===ze&&qe(pr)),o===n&&("ne"===r.substr(Ze,2)?(o="ne",Ze+=2):(o=n,0===ze&&qe(Ar)),o===n&&("lt"===r.substr(Ze,2)?(o="lt",Ze+=2):(o=n,0===ze&&qe(dr)),o===n&&("gt"===r.substr(Ze,2)?(o="gt",Ze+=2):(o=n,0===ze&&qe(gr)),o===n&&("le"===r.substr(Ze,2)?(o="le",Ze+=2):(o=n,0===ze&&qe(mr)),o===n&&("ge"===r.substr(Ze,2)?(o="ge",Ze+=2):(o=n,0===ze&&qe(vr))))))),(s=o!==n?r.substring(s,Ze):o)!==n&&(o=Fn())!==n&&(u=ln())!==n?(t,t=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[a=s]||a,u]):(Ze=t,t=n)):(Ze=t,t=n),ze--,t===n&&(e=n,0===ze&&qe(hr)),t}function ln(){var t;return ze++,t=function(){var t,e,s,o,c,i,h;ze++,t=Ze,e=[],s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=Cr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=wr(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);if(s!==n)for(;s!==n;)e.push(s),s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=Cr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=wr(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);else e=n;e!==n?(r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n?(t,t=e={func:"count",as:"$count",args:[{ref:e}]}):(Ze=t,t=n)):(Ze=t,t=n);ze--,t===n&&(e=n,0===ze&&qe(yr));return t}(),t===n&&(t=gn())===n&&(t=pn())===n&&(t=hn())===n&&(t=An())===n&&(t=dn())===n&&(t=function(){var t,e,s,o,u;t=Ze,91===r.charCodeAt(Ze)?(e=_r,Ze++):(e=n,0===ze&&qe(Or));if(e!==n){for(s=Ze,o=[],jr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Nr));u!==n;)o.push(u),jr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Nr));(s=o!==n?r.substring(s,Ze):o)!==n?(93===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n?(t,t=e={list:s.replace(/"/g,"").split(",").map((r=>({val:r})))}):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}()),ze--,t===n&&(n,0===ze&&qe(br)),t}function hn(){var t,e,s,o,c,i,f,l;if(ze++,t=Ze,(e=Rn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Er(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Er(0,i)):(Ze=o,o=n);s!==n?(t,l=s,t=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(xr)),t}function pn(){var t,e,s;return t=Ze,(e=Tn())===n&&(e=function(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d,g,m,v,b,y,C,w,x,E,$,L;t=Ze,e=Ze,s=Ze,o=[],Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));if(u!==n)for(;u!==n;)o.push(u),Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));else o=n;if(o!==n)if(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u!==n)if(Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)if(Kt.test(r.charAt(Ze))?(c=r.charAt(Ze),Ze++):(c=n,0===ze&&qe(Vt)),c!==n)if(45===r.charCodeAt(Ze)?(i=re,Ze++):(i=n,0===ze&&qe(te)),i!==n)if(Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)if(Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n){if(h=Ze,84===r.charCodeAt(Ze)?(p="T",Ze++):(p=n,0===ze&&qe(ee)),p!==n)if(Kt.test(r.charAt(Ze))?(A=r.charAt(Ze),Ze++):(A=n,0===ze&&qe(Vt)),A!==n)if(Kt.test(r.charAt(Ze))?(d=r.charAt(Ze),Ze++):(d=n,0===ze&&qe(Vt)),d!==n)if(58===r.charCodeAt(Ze)?(g=G,Ze++):(g=n,0===ze&&qe(H)),g!==n)if(Kt.test(r.charAt(Ze))?(m=r.charAt(Ze),Ze++):(m=n,0===ze&&qe(Vt)),m!==n)if(Kt.test(r.charAt(Ze))?(v=r.charAt(Ze),Ze++):(v=n,0===ze&&qe(Vt)),v!==n){if(b=Ze,58===r.charCodeAt(Ze)?(y=G,Ze++):(y=n,0===ze&&qe(H)),y!==n)if(Kt.test(r.charAt(Ze))?(C=r.charAt(Ze),Ze++):(C=n,0===ze&&qe(Vt)),C!==n)if(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n){if(x=Ze,46===r.charCodeAt(Ze)?(E=".",Ze++):(E=n,0===ze&&qe(se)),E!==n){if($=[],Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n)for(;L!==n;)$.push(L),Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt));else $=n;$!==n?x=E=[E,$]:(Ze=x,x=n)}else Ze=x,x=n;x===n&&(x=null),x!==n?b=y=[y,C,w,x]:(Ze=b,b=n)}else Ze=b,b=n;else Ze=b,b=n;else Ze=b,b=n;b===n&&(b=null),b!==n?(90===r.charCodeAt(Ze)?(y="Z",Ze++):(y=n,0===ze&&qe(oe)),y===n&&(y=Ze,43===r.charCodeAt(Ze)?(C="+",Ze++):(C=n,0===ze&&qe(ue)),C===n&&(45===r.charCodeAt(Ze)?(C=re,Ze++):(C=n,0===ze&&qe(te))),C!==n?(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n?(Kt.test(r.charAt(Ze))?(x=r.charAt(Ze),Ze++):(x=n,0===ze&&qe(Vt)),x!==n?(58===r.charCodeAt(Ze)?(E=G,Ze++):(E=n,0===ze&&qe(H)),E!==n?(Kt.test(r.charAt(Ze))?($=r.charAt(Ze),Ze++):($=n,0===ze&&qe(Vt)),$!==n?(Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n?y=C=[C,w,x,E,$,L]:(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)),y===n&&(y=null),y!==n?h=p=[p,A,d,g,m,v,b,y]:(Ze=h,h=n)):(Ze=h,h=n)}else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;h===n&&(h=null),h!==n?s=o=[o,u,a,c,i,f,l,h]:(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=function(r){if(r.split("-")[0].length>4)throw Object.assign(new Error(`The type 'Edm.DateTimeOffset' is not compatible with '${r}'`),{statusCode:400});return r}(e));return t=e}()),e!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,(e=Zn())!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l;t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce));o===n&&(o=null);if(o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;if(u!==n){if(a=Ze,46===r.charCodeAt(Ze)?(c=ne,Ze++):(c=n,0===ze&&qe(se)),c!==n){if(i=[],Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)for(;f!==n;)i.push(f),Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt));else i=n;i!==n?a=c=[c,i]:(Ze=a,a=n)}else Ze=a,a=n;if(a===n&&(a=null),a!==n){if(c=Ze,101===r.charCodeAt(Ze)?(i="e",Ze++):(i=n,0===ze&&qe(ie)),i!==n){if(f=[],Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n)for(;l!==n;)f.push(l),Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt));else f=n;f!==n?c=i=[i,f]:(Ze=c,c=n)}else Ze=c,c=n;c===n&&(c=null),c!==n?s=o=[o,u,a,c]:(Ze=s,s=n)}else Ze=s,s=n}else Ze=s,s=n}else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=Qn(e));return t=e}(),e!==n&&(t,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(t=e)===n&&(t=Ze,(e=_n())!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a;t=Ze,r.substr(Ze,7)===ye?(e=ye,Ze+=7):(e=n,0===ze&&qe(Ce));if(e!==n){if(s=Ze,o=Ze,u=[],we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe)),a!==n)for(;a!==n;)u.push(a),we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe));else u=n;u!==n?(r.substr(Ze,2)===Ee?(a=Ee,Ze+=2):(a=n,0===ze&&qe($e)),a===n&&(61===r.charCodeAt(Ze)?(a=m,Ze++):(a=n,0===ze&&qe(v))),a===n&&(a=null),a!==n?o=u=[u,a]:(Ze=o,o=n)):(Ze=o,o=n),(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=Wn(s)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),e!==n&&(t,e=$r(e)),t=e)))),t}function An(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,123===r.charCodeAt(Ze)?(o="{",Ze++):(o=n,0===ze&&qe(Lr)),o!==n){for(u=[],(a=An())===n&&(Br.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Sr)));a!==n;)u.push(a),(a=An())===n&&(Br.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Sr)));u!==n?(125===r.charCodeAt(Ze)?(a="}",Ze++):(a=n,0===ze&&qe(Tr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=$r(e)),t=e}function dn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,s=Ze,91===r.charCodeAt(Ze)?(o=_r,Ze++):(o=n,0===ze&&qe(Or)),o!==n&&(u=Pn())!==n?(93===r.charCodeAt(Ze)?(a=Rr,Ze++):(a=n,0===ze&&qe(Zr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n),s===n)if(s=Ze,91===r.charCodeAt(Ze)?(o=_r,Ze++):(o=n,0===ze&&qe(Or)),o!==n)if((u=Pn())!==n)if(123===r.charCodeAt(Ze)?(a="{",Ze++):(a=n,0===ze&&qe(Lr)),a!==n){for(c=[],(i=dn())===n&&(jr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(Nr)));i!==n;)c.push(i),(i=dn())===n&&(jr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(Nr)));c!==n?(93===r.charCodeAt(Ze)?(i=Rr,Ze++):(i=n,0===ze&&qe(Zr)),i!==n?s=o=[o,u,a,c,i]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=$r(e)),t=e}function gn(){var t,e,s,o,u,a,c;if(ze++,t=Ze,e=Ze,s=[],zr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(Dr)),o!==n)for(;o!==n;)s.push(o),zr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(Dr));else s=n;if((e=s!==n?r.substring(e,Ze):s)!==n)if((s=zn())!==n)if((o=ln())!==n){for(u=[],a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);u!==n&&(a=Dn())!==n?(t,t=e=function(r,t,e){if(Mn&&!(r.toLowerCase()in Mn.functions))throw Object.assign(new Error(`"${r}" is an unknown function in OData URL spec (strict mode)`),{statusCode:400});return{func:r.toLowerCase(),args:[t,...e]}}(e,o,u)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(kr)),t}function mn(){var t,e;return t=Ze,Pn()!==n?("not"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Jr)),e!==n&&Fn()!==n?(t,t="not"):(Ze=t,t=n)):(Ze=t,t=n),t}function vn(){var t,e;return t=Ze,Fn()!==n?("and"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Qr)),e!==n&&Fn()!==n?(t,t="and"):(Ze=t,t=n)):(Ze=t,t=n),t}function bn(){var r,t;return r=Ze,(t=Fn())!==n&&(r,t="and"),r=t}function yn(){var t,e;return t=Ze,Fn()!==n?("or"===r.substr(Ze,2).toLowerCase()?(e=r.substr(Ze,2),Ze+=2):(e=n,0===ze&&qe(Wr)),e!==n&&Fn()!==n?(t,t="or"):(Ze=t,t=n)):(Ze=t,t=n),t}function Cn(){var t,e,s;return t=Ze,r.substr(Ze,9)===Gr?(e=Gr,Ze+=9):(e=n,0===ze&&qe(Hr)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=wn())!==n){for(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={aggregate:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===Kr?(e=Kr,Ze+=7):(e=n,0===ze&&qe(Vr)),e!==n?(s=function(){var r,t,e,s,o,u,a,c;if(r=Ze,(t=zn())!==n)if(zn()!==n)if((e=Bn())!==n){for(s=[],o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);s!==n?(o=Ze,(u=Dn())!==n&&(o,i=s,u={groupBy:[e,...i]}),(o=u)!==n?(u=Ze,(a=kn())!==n&&(c=cn())!==n?(u,u=a=c):(Ze=u,u=n),u===n&&(u=null),u!==n&&(a=Dn())!==n?(r,t=function(r,t,e){let n={};return n=e?{groupBy:[r,...t],...e.apply}:{groupBy:[r,...t]},n}(e,s,u),r=t):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var i;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===rt?(e=rt,Ze+=6):(e=n,0===ze&&qe(tt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=en())!==n&&t,(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={where:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===et?(e=et,Ze+=6):(e=n,0===ze&&qe(nt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=rn())!==n&&(t,e=function(r){if(r)return r}(e)),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={search:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===st?(e=st,Ze+=6):(e=n,0===ze&&qe(ot)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=cn())!==n){if(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n),s!==n)for(;s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n);else e=n;e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={concat:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===ut?(e=ut,Ze+=7):(e=n,0===ze&&qe(at)),e!==n?(s=function(){var r,t,e,s,o,u,a,c,i,f;if(r=Ze,(t=zn())!==n)if((e=Pn())!==n)if((s=Sn())!==n){for(o=[],u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);o!==n&&(u=Pn())!==n&&(a=Dn())!==n?r=t=[t,e,s,o,u,a]:(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"top"===r.substr(Ze,3)?(e="top",Ze+=3):(e=n,0===ze&&qe(ct)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ke())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{rows:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,4)===it?(e=it,Ze+=4):(e=n,0===ze&&qe(ft)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ve())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{offset:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===lt?(e=lt,Ze+=7):(e=n,0===ze&&qe(ht)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=an())!==n){for(e=[],s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={orderBy:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"topcount"===r.substr(Ze,8).toLowerCase()?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(pt)),e===n&&("bottomcount"===r.substr(Ze,11).toLowerCase()?(e=r.substr(Ze,11),Ze+=11):(e=n,0===ze&&qe(At)),e===n&&("topsum"===r.substr(Ze,6).toLowerCase()?(e=r.substr(Ze,6),Ze+=6):(e=n,0===ze&&qe(dt)),e===n&&("bottomsum"===r.substr(Ze,9).toLowerCase()?(e=r.substr(Ze,9),Ze+=9):(e=n,0===ze&&qe(gt)),e===n&&("toppercent"===r.substr(Ze,10).toLowerCase()?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(mt)),e===n&&("bottompercent"===r.substr(Ze,13).toLowerCase()?(e=r.substr(Ze,13),Ze+=13):(e=n,0===ze&&qe(vt))))))),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n&&(t=ln())!==n&&Pn()!==n&&kn()!==n&&Pn()!==n&&(e=ln())!==n&&Pn()!==n&&Dn()!==n?(r,r=[t,e]):(Ze=r,r=n);return r}(),s!==n?(t,t=e=function(r,t){if(!{topcount:!0,bottomcount:!0,topsum:!1,bottomsum:!1,toppercent:!1,bottompercent:!1}[r=r.toLowerCase()])throw Object.assign(new Error(`Transformation "${r}" in $apply is not yet supported.`),{statusCode:501});return{aggregate:[{func:r,args:t}]}}(e,s)):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,e=function(){var t,e;t=Ze,r.substr(Ze,8)===_t?(e=_t,Ze+=8):(e=n,0===ze&&qe(Ot));e!==n&&(t,e={identity:!0});return t=e}(),e!==n&&t,t=e)))))))))),t}function wn(){var t,e,s,o;return t=Ze,e=Ze,r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n&&(o=Ln())!==n?(e,e=s={func:"count",args:[{val:1}],as:o}):(Ze=e,e=n),e===n&&(e=xn()),e!==n&&t,t=e}function xn(){var r,t,e,s,o;return r=Ze,(t=hn())!==n?((e=En())===n&&(e=null),e!==n?((s=$n())===n&&(s=null),s!==n?((o=Ln())===n&&(o=null),o!==n?(r,r=t={func:e,args:[t],as:o}):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n),r===n&&(r=Ze,(t=Rn())!==n&&(e=zn())!==n&&(s=xn())!==n&&(o=Dn())!==n?r=t=[t,e,s,o]:(Ze=r,r=n)),r}function En(){var t,e,s,o,u;if(t=Ze,Fn()!==n)if(r.substr(Ze,4)===yt?(e=yt,Ze+=4):(e=n,0===ze&&qe(Ct)),e!==n)if(Fn()!==n){if(s=Ze,o=[],zr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Dr)),u!==n)for(;u!==n;)o.push(u),zr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Dr));else o=n;(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=s.toLowerCase()):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return t}function $n(){var t,e,s,o,u,a,c;return t=Ze,(e=Fn())!==n?(r.substr(Ze,4)===wt?(s=wt,Ze+=4):(s=n,0===ze&&qe(xt)),s!==n&&(o=Fn())!==n&&(u=hn())!==n&&(a=En())!==n?((c=$n())===n&&(c=null),c!==n?t=e=[e,s,o,u,a,c]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n),t}function Ln(){var t,e,s;return t=Ze,Fn()!==n?("as"===r.substr(Ze,2)?(e="as",Ze+=2):(e=n,0===ze&&qe(Et)),e!==n&&Fn()!==n&&(s=Rn())!==n?(t,t=s):(Ze=t,t=n)):(Ze=t,t=n),t}function Bn(){var t,e;return t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l,h;t=Ze,e=Ze,r.substr(Ze,6)===$t?(s=$t,Ze+=6):(s=n,0===ze&&qe(Lt));if(s!==n)if((o=zn())!==n)if((u=Pn())!==n)if(r.substr(Ze,4)===Bt?(a=Bt,Ze+=4):(a=n,0===ze&&qe(St)),a===n&&(a=hn()),a!==n){if(c=[],i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n);else c=n;c!==n&&(i=Pn())!==n&&(f=Dn())!==n?e=s=[s,o,u,a,c,i,f]:(Ze=e,e=n)}else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;e!==n&&(t,e=function(r){const t=new Error("Rollup in groupby is not supported yet.");throw t.statusCode=501,t}());return t=e}(),e===n&&(e=hn()),e!==n&&t,t=e}function Sn(){var r,t,e;return r=Ze,(t=nn())!==n&&(e=Ln())!==n?r=t=[t,e]:(Ze=r,r=n),r}function Tn(){var t,e;return t=Ze,r.substr(Ze,4)===Zt?(e=Zt,Ze+=4):(e=n,0===ze&&qe(jt)),e===n&&(r.substr(Ze,5)===Nt?(e=Nt,Ze+=5):(e=n,0===ze&&qe(kt))),e!==n&&(t,e="true"===e),t=e}function _n(){var t,e,s,o,u;if(ze++,t=Ze,39===r.charCodeAt(Ze)?(e=Dt,Ze++):(e=n,0===ze&&qe(Pt)),e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));u!==n;)o.push(u),r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=s.replace(/''/g,"'")):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(zt)),t}function On(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce)),o===n&&(o=null),o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;u!==n?s=o=[o,u]:(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=parseInt(e)),t=e}function Rn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,ze++,s=Tn(),ze--,s===n?e=void 0:(Ze=e,e=n),e!==n)if(s=Ze,ze++,o=Zn(),ze--,o===n?s=void 0:(Ze=s,s=n),s!==n){if(o=Ze,u=Ze,fe.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(le)),a!==n){for(c=[],he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));i!==n;)c.push(i),he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));c!==n?u=a=[a,c]:(Ze=u,u=n)}else Ze=u,u=n;(o=u!==n?r.substring(o,Ze):u)!==n?(t,t=e=o):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Zn(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d;return t=Ze,e=Ze,(s=jn())!==n&&(o=jn())!==n?(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u===n&&(u=null),u!==n&&(a=jn())!==n?(45===r.charCodeAt(Ze)?(c=re,Ze++):(c=n,0===ze&&qe(te)),c===n&&(c=null),c!==n&&(i=jn())!==n?(45===r.charCodeAt(Ze)?(f=re,Ze++):(f=n,0===ze&&qe(te)),f===n&&(f=null),f!==n&&(l=jn())!==n?(45===r.charCodeAt(Ze)?(h=re,Ze++):(h=n,0===ze&&qe(te)),h===n&&(h=null),h!==n&&(p=jn())!==n&&(A=jn())!==n&&(d=jn())!==n?e=s=[s,o,u,a,c,i,f,l,h,p,A,d]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function jn(){var t,e,s,o,u,a;return t=Ze,e=Ze,Ae.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(de)),s!==n?(Ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(de)),o!==n?(Ae.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(de)),u!==n?(Ae.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(de)),a!==n?e=s=[s,o,u,a]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function Nn(){var t,e,s,o;if(t=Ze,e=Ze,s=[],ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me)),o!==n)for(;o!==n;)s.push(o),ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me));else s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e={val:e}),t=e}function kn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(44===r.charCodeAt(Ze)?(s=",",Ze++):(s=n,0===ze&&qe(Le)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function zn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(40===r.charCodeAt(Ze)?(s="(",Ze++):(s=n,0===ze&&qe(Be)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function Dn(){var t,e,s;return t=Ze,(e=Pn())!==n?(41===r.charCodeAt(Ze)?(s=")",Ze++):(s=n,0===ze&&qe(Se)),s!==n?t=e=[e,s]:(Ze=t,t=n)):(Ze=t,t=n),t}function Pn(){var t,e,s;for(ze++,t=Ze,e=[],_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));s!==n;)e.push(s),_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Te)),t}function Fn(){var t,e,s;if(ze++,t=Ze,e=[],_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe)),s!==n)for(;s!==n;)e.push(s),_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));else e=n;return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Re)),t}const Un=Object.assign,{strict:Mn,minimal:qn}=t,In=[];let Yn,Xn;const Jn=["$value"],Qn=t.safeNumber||function(r){const t=Number(r);return Number.isSafeInteger(t)?t:r},Wn=t.standardBase64||function(r){return Buffer.from(r,"base64").toString("base64")},Gn=r=>t=>r===t||r.as&&t.as&&r.as===t.as||t.as&&r.ref&&t.as===r.ref[r.ref.length-1]||r.ref&&t.ref&&r.ref.join("")===t.ref.join(""),Hn=r=>t=>{if(Array.isArray(t))return t.map(Hn(r));const e=t.ref&&r.find((r=>r.as&&r.func&&r.as===t.ref[0]));return e||t},Kn=r=>t=>Array.isArray(t)?t.map(Kn(r)):t.ref&&!r.find(Gn(t))?{val:null}:t,Vn=(r,t)=>{if(1===t.ref.length)r.find(Gn(t))||r.push(t);else{const e=t.ref.shift(),n=r.find((r=>r.ref&&r.ref[0]===e));if(n)Vn(n.expand,t);else{const n={ref:[e],expand:[]};Vn(n.expand,t),r.push(n)}}},rs=(r,t,e=!1)=>{let n=ns({from:r.from},t,e);if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=ts(n[t],r,e);else n=ts(n,r,e);return n},ts=(r,t,e)=>{if(!t)return r;t.apply&&delete t.apply;let n={};t.columns&&"$count"===t.columns[0].as||r.SELECT.where&&t.where||r.SELECT.limit&&t.limit||r.SELECT.orderBy&&t.orderBy||r.SELECT.search&&t.search?n.from=r:n=r.SELECT;for(const r in t)"columns"===r?(t.columns=t.columns.map((r=>n.columns&&n.columns.find((t=>r.ref&&r.ref[0]===t.as||t.ref&&r.ref&&r.ref[0]===t.ref[0]&&!r.expand))||r)),n.columns&&n.groupBy&&t.columns.push(...n.columns.filter((r=>e&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))&&!t.columns.some((t=>t.ref&&t.ref[0]===r.as||t.ref&&r.ref&&t.ref[0]===r.ref[0]||t.as&&t.as===r.as))))||[]),n.columns=t.columns):"from"!==r&&(n[r]=t[r]);const s=[...n.columns&&n.columns.filter((r=>n.groupBy&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))))||[],...n.columns&&n.columns.filter((r=>r&&"object"==typeof r&&"func"in r))||[]];return es(n,s,e),{SELECT:n}},es=(r,t,e)=>{t.length&&(r.columns=r.columns&&!e?r.columns.reduce(((r,e)=>{const n=t.find(Gn(e));return n&&r.push(n),r}),[]):t,r.where&&(r.where=r.where.map(Hn(r.columns)),r.groupBy&&(r.having=r.where.map(Kn(r.groupBy)),delete r.where)),r.columns=r.columns.reduce(((r,e)=>(e.ref&&e.ref.length>1&&t.find(Gn(e))?Vn(r,{ref:[...e.ref]}):r.push(e),r)),[]))},ns=(r,t,e)=>{if(!t)return;if(r.apply&&delete r.apply,t.identity&&r.from.SELECT&&(r=r.from.SELECT),(t.apply||t.where&&r.where||t.search&&r.search||t.limit&&r.limit||t.orderBy&&r.orderBy)&&(r.from={SELECT:{...r}}),t.where&&(r.where=t.where),t.search&&(r.search=t.search),t.groupBy){r.groupBy=[];for(const e of t.groupBy)r.groupBy.find(Gn(e))||r.groupBy.push(e)}t.limit&&(r.limit=t.limit),t.orderBy&&(r.orderBy=t.orderBy);const n=[...r.groupBy||[],...t.aggregate||[]];if(es(r,n,e),t.apply&&r.from&&ns(r.from.SELECT,t.apply),t.concat&&Array.isArray(t.concat)){const e=[];for(let n of t.concat){n.from=1===Object.keys(r).length?r.from:{SELECT:r};const t=ns(n,n.apply);Array.isArray(t)?e.push(...t):e.push(t)}r=e}return Array.isArray(r)?r:{SELECT:r}},ss=r=>{Yn.limit&&Yn.limit.offset&&Yn.limit.offset.val&&(r+=Yn.limit.offset.val),(Yn.limit||(Yn.limit={})).offset={val:r}},os=(r,t=!1)=>{Yn.orderBy=Yn.orderBy?t?[r,...Yn.orderBy]:[...Yn.orderBy,r]:[r]},us=(r,t)=>{for(const e of t)e.ref&&e.ref[0]===r&&e.ref.shift(),e.func&&us(r,e.args);return t};if((e=o())!==n&&Ze===r.length)return e;throw e!==n&&Ze<r.length&&qe({type:"end"}),Ie(ke,Ne<r.length?r.charAt(Ne):null,Ne<r.length?Me(Ne,Ne+1):Me(Ne,Ne))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(r,t){var e={literal:function(r){return'"'+s(r.text)+'"'},class:function(r){var t,e="";for(t=0;t<r.parts.length;t++)e+=r.parts[t]instanceof Array?o(r.parts[t][0])+"-"+o(r.parts[t][1]):o(r.parts[t]);return"["+(r.inverted?"^":"")+e+"]"},any:function(r){return"any character"},end:function(r){return"end of input"},other:function(r){return r.description}};function n(r){return r.charCodeAt(0).toString(16).toUpperCase()}function s(r){return r.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}function o(r){return r.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}return"Expected "+function(r){var t,n,s,o=new Array(r.length);for(t=0;t<r.length;t++)o[t]=(s=r[t],e[s.type](s));if(o.sort(),o.length>0){for(t=1,n=1;t<o.length;t++)o[t-1]!==o[t]&&(o[n]=o[t],n++);o.length=n}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(r)+" but "+function(r){return r?'"'+s(r)+'"':"end of input"}(t)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|