@sap/cds 5.6.0 → 5.6.4

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.
Files changed (32) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/apis/services.d.ts +4 -0
  3. package/lib/core/reflect.js +1 -0
  4. package/lib/env/index.js +5 -1
  5. package/lib/i18n/localize.js +2 -1
  6. package/lib/log/format/kibana.js +1 -1
  7. package/lib/ql/Whereable.js +1 -0
  8. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/ExpressionToCQN.js +2 -0
  9. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/readToCQN.js +5 -5
  10. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SetResponseHeadersCommand.js +1 -0
  11. package/libx/_runtime/cds-services/adapter/odata-v4/utils/result.js +18 -15
  12. package/libx/_runtime/cds-services/adapter/rest/rest-to-cqn/index.js +2 -2
  13. package/libx/_runtime/cds-services/adapter/rest/utils/validation-checks.js +6 -2
  14. package/libx/_runtime/cds-services/services/utils/compareJson.js +1 -1
  15. package/libx/_runtime/common/auth/strategies/utils/uaa.js +10 -3
  16. package/libx/_runtime/common/composition/update.js +9 -1
  17. package/libx/_runtime/common/generic/paging.js +2 -2
  18. package/libx/_runtime/db/expand/expandCQNToJoin.js +44 -9
  19. package/libx/_runtime/db/generic/arrayed.js +14 -27
  20. package/libx/_runtime/db/sql-builder/ExpressionBuilder.js +2 -2
  21. package/libx/_runtime/fiori/generic/edit.js +1 -1
  22. package/libx/_runtime/fiori/generic/read.js +28 -0
  23. package/libx/_runtime/fiori/uiflex/extensibility/index.js +3 -1
  24. package/libx/_runtime/fiori/uiflex/handler/transformRESULT.js +0 -4
  25. package/libx/_runtime/messaging/common-utils/AMQPClient.js +8 -3
  26. package/libx/_runtime/remote/Service.js +6 -2
  27. package/libx/odata/index.js +2 -1
  28. package/libx/odata/odata2cqn/afterburner.js +9 -1
  29. package/libx/odata/odata2cqn/grammar.pegjs +30 -7
  30. package/libx/odata/odata2cqn/parser.js +1 -1
  31. package/package.json +1 -1
  32. package/server.js +9 -5
package/CHANGELOG.md CHANGED
@@ -4,12 +4,55 @@
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 5.6.4 - 2021-11-23
8
+
9
+ ### Fixed
10
+
11
+ - Preserve log level in Kibana formatter
12
+ - RFC 3986 compliant segment recognition in beta URL to CQN parser (`cds.env.features.odata_new_parser`)
13
+ - Support for `$skiptoken` OData query option when using beta URL to CQN parser (`cds.env.features.odata_new_parser`)
14
+ - OData requests with `$skip` and without `$top` query option to services with defined default limit (`cds.query.limit.default`)
15
+ - Creating entities with binary keys. Currently the binary keys may be provided only as Node.js `Buffer` instances using a custom handler.
16
+ - Requests with payload containing nested arrayed elements no longer crash the application
17
+
18
+ ## Version 5.6.3 - 2021-11-15
19
+
20
+ ### Fixed
21
+
22
+ - `cds run` does not fail if `cds.requires.multitenancy` is explicitly set to `false`
23
+ - Calculation of `DraftIsCreatedByMe` or `DraftIsProcessedByMe` when expanding or navigating to `DraftAdministrativeData`
24
+ - Nested `any` in `$filter` query option
25
+ - Crash on draft activate after draft edit for not existing composition of one, if no explicit DB service is defined
26
+ - Typescript definition of `srv.delete` no longer leads to a duplication error
27
+
28
+ ## Version 5.6.2 - 2021-11-08
29
+
30
+ ### Fixed
31
+
32
+ - Handle arrayed elements using templating mechanism
33
+ - OData requests to `$count` endpoint of ETag enabled entity
34
+ - `cds.test` does no longer crash if executed in `cds repl` on a remote service call
35
+ - Crash on draft activate after draft edit for not existing composition of one
36
+ - Ensure request correlation (with default server)
37
+ - `<entity>.texts` points to real text entity
38
+ - Draft union with expand to to-one and to-many
39
+ - No columns in draft lock statement (i.e., use `SELECT 1`)
40
+
41
+ ## Version 5.6.1 - 2021-11-02
42
+
43
+ ### Fixed
44
+
45
+ - UAA credentials lookup
46
+ - Revert return type validation for `cds.String` for compatibility with older `@sap/cds-mtx` versions
47
+ - Messaging: Ill-defined incoming AMQP messages will not crash the app
48
+ - `cds compile -l` does no longer crash if called without `--to` option
49
+
7
50
  ## Version 5.6.0 - 2021-10-29
8
51
 
9
52
  ### Added
10
53
 
11
54
  - New REST protocol adapter (beta)
12
- + Makes use of the beta OData URL to CQN parser. Hence, almost all OData requests are supported (see limitations below).
55
+ + Makes use of the beta OData URL to CQN parser. Hence, almost all OData requests are supported (see limitations below).
13
56
  + Activate via `cds.env.features.rest_new_adapter = true`
14
57
  + Out of scope (compared to OData protocol adapter):
15
58
  + OData query option `$apply`
@@ -165,6 +165,10 @@ export class Service extends QueryAPI {
165
165
  * @see [capire docs](https://cap.cloud.sap/docs/node.js/services#srv-send)
166
166
  */
167
167
  delete (entityOrPath: Target, data?: object) : Promise<this>
168
+ /**
169
+ * @see [docs](https://cap.cloud.sap/docs/node.js/services#srv-run)
170
+ */
171
+ delete <T>(entity : Definition | string, key?: any) : DELETE<T>
168
172
 
169
173
  // The central method to dispatch events
170
174
  dispatch (msg: EventMessage): Promise<any>
@@ -26,6 +26,7 @@ class LinkedCSN extends any {
26
26
  /* else: */ any.prototype
27
27
  )
28
28
  if (p.key && !d.key && d.kind === 'element') Object.defineProperty (d,'key',{value:undefined}) //> don't propagate .key
29
+ if (d.elements && d.elements.localized) Object.defineProperty (d,'texts',{value: defs [d.elements.localized.target] })
29
30
  try { return Object.setPrototypeOf(d,p) } //> link d to resolved proto
30
31
  catch(e) { //> cyclic proto error
31
32
  let msg = d.name; for (; p && p.name; p = p.__proto__) msg += ' > '+p.name
package/lib/env/index.js CHANGED
@@ -242,7 +242,11 @@ _loadFromPath (_path, _basePath) {
242
242
 
243
243
  _link_required_services () {
244
244
  const { requires } = this, protos = requires && requires._prototypes || {}
245
- for (let each in requires) requires[each] = _merged (each)
245
+ for (let each in requires) {
246
+ requires[each] = _merged (each)
247
+ // if we got an invalid value, remove it (would anyways cause trouble down the road)
248
+ if (!requires[each]) delete requires[each]
249
+ }
246
250
  function _merged (key) {
247
251
  const entry = requires[key] || protos[key]
248
252
  if (!entry || entry._is_merged || entry.kind === key || !(entry.kind in requires) && !(entry.kind in protos)) return entry
@@ -35,7 +35,8 @@ function localize (model, /*with:*/ locale, aString) {
35
35
  const TEXT_KEY_MARKER = 'i18n>'
36
36
  const TEXT_KEYS = /"([^"{]+)?{b?i18n>([^"}]+)}([^"]+)?"/g
37
37
  function localizeString (aString, bundle) {
38
- if (!bundle) return aString
38
+ if (!bundle || !aString) return aString
39
+ if (typeof aString === 'object') aString = JSON.stringify(aString, null, 2)
39
40
  // quick check for presence of any text key, to avoid expensive operation below
40
41
  if (aString.indexOf(TEXT_KEY_MARKER) < 0) return aString
41
42
  const isXml = aString.startsWith('<?xml')
@@ -35,7 +35,7 @@ module.exports = (module, level, ...args) => {
35
35
  const err = args.shift()
36
36
  toLog.msg = err.message
37
37
  if (err instanceof Error) toLog.stacktrace = err.stack.split(/\s*\r?\n\s*/)
38
- Object.assign(toLog, err)
38
+ Object.assign(toLog, err, { level: toLog.level })
39
39
  }
40
40
 
41
41
  // append remaining args via util.format()
@@ -77,6 +77,7 @@ const _object_predicate = ([arg], _clause) => { // e.g. .where ({ID:4711, stock:
77
77
  else if (x.SELECT || x.list) pred.push('in', x)
78
78
  else if (is_array(x)) pred.push('in', {list:x.map(val)})
79
79
  else if (is_cqn(x)) pred.push('=', x)
80
+ else if (x instanceof Buffer) pred.push('=', {val:x})
80
81
  else if (x instanceof RegExp) pred.push('like', {val:x})
81
82
  else if (typeof x === 'object') for (let op in x) pred.push(op, val(x[op]))
82
83
  else if (_clause === 'on' && typeof x === 'string') pred.push('=', { ref: x.split('.') })
@@ -59,6 +59,8 @@ class ExpressionToCQN {
59
59
  }
60
60
 
61
61
  _lambda(pathSegments) {
62
+ // we don't care about the variable name
63
+ if (pathSegments[0].getKind() === 'EXPRESSION.VARIABLE') pathSegments = pathSegments.slice(1)
62
64
  const nav =
63
65
  pathSegments.length > 2 ? pathSegments.slice(0, pathSegments.length - 2).map(this._segmentFromMember) : []
64
66
  const navName = this._segmentFromMember(pathSegments[pathSegments.length - 2])
@@ -14,7 +14,7 @@ const { _expand } = require('../utils/handlerUtils')
14
14
  const { resolveStructuredName } = require('../utils/handlerUtils')
15
15
  const { isStreaming } = require('../utils/stream')
16
16
  const { convertUrlPathToCqn, getAllKeys } = require('./utils')
17
- const { getMaxPageSize } = require('../../../../common/utils/page')
17
+ const { getMaxPageSize, getDefaultPageSize } = require('../../../../common/utils/page')
18
18
  const { isAsteriskColumn } = require('../../../../common/utils/rewriteAsterisks')
19
19
 
20
20
  const {
@@ -137,11 +137,11 @@ const _apply = (uriInfo, queryOptions, entity, model) => {
137
137
  return {}
138
138
  }
139
139
 
140
- const _topSkip = (queryOptions, maxPageSize, cqn) => {
140
+ const _topSkip = (queryOptions, target, cqn) => {
141
141
  if (queryOptions && (queryOptions.$top || queryOptions.$skip || queryOptions.$skiptoken)) {
142
- const top = queryOptions.$top ? parseInt(queryOptions.$top) : Number.MAX_SAFE_INTEGER
142
+ const top = queryOptions.$top ? parseInt(queryOptions.$top) : getDefaultPageSize(target)
143
143
  const skip = parseInt(queryOptions.$skip || 0) + parseInt(queryOptions.$skiptoken || 0)
144
- cqn.limit(Math.min(top, maxPageSize), skip)
144
+ cqn.limit(Math.min(top, getMaxPageSize(target)), skip)
145
145
  }
146
146
  }
147
147
 
@@ -400,7 +400,7 @@ const readToCQN = (service, target, odataReq) => {
400
400
  }
401
401
 
402
402
  if (isCollectionOrToMany) {
403
- _topSkip(queryOptions, getMaxPageSize(target), cqn)
403
+ _topSkip(queryOptions, target, cqn)
404
404
  _orderby(uriInfo, cqn)
405
405
  }
406
406
 
@@ -75,6 +75,7 @@ class SetResponseHeadersCommand extends Command {
75
75
  ? lastSegment.getTarget() && lastSegment.getTarget().isConcurrent()
76
76
  : this._request.getConcurrentResource()) &&
77
77
  representationKind !== RepresentationKinds.ENTITY_COLLECTION &&
78
+ representationKind !== RepresentationKinds.COUNT &&
78
79
  representationKind !== RepresentationKinds.REFERENCE &&
79
80
  representationKind !== RepresentationKinds.REFERENCE_COLLECTION
80
81
  ) {
@@ -249,23 +249,26 @@ const postProcess = (req, res, service, result, previousResult) => {
249
249
  if (template.elements.size === 0) return
250
250
 
251
251
  // normalize result to rows
252
- result = result.value && Object.keys(result).filter(k => !k.match(/^\W/)).length === 1 ? result.value : result
253
- const rows = Array.isArray(result) ? result : [result]
254
-
255
- // process each row
256
- const processFn = _processorFn(req, previousResult, options)
257
-
258
- for (const row of rows) {
259
- const args = {
260
- processFn,
261
- row,
262
- template,
263
- pathOptions: {
264
- includeKeyValues: false
252
+ result = result.value != null && Object.keys(result).filter(k => !k.match(/^\W/)).length === 1 ? result.value : result
253
+
254
+ if (typeof result === 'object' && result != null) {
255
+ const rows = Array.isArray(result) ? result : [result]
256
+
257
+ // process each row
258
+ const processFn = _processorFn(req, previousResult, options)
259
+
260
+ for (const row of rows) {
261
+ const args = {
262
+ processFn,
263
+ row,
264
+ template,
265
+ pathOptions: {
266
+ includeKeyValues: false
267
+ }
265
268
  }
266
- }
267
269
 
268
- templateProcessor(args)
270
+ templateProcessor(args)
271
+ }
269
272
  }
270
273
 
271
274
  applyOmitValuesPreference(res, options.omitValuesPreference)
@@ -4,7 +4,7 @@ const { INSERT, SELECT, UPDATE, DELETE } = cds.ql
4
4
 
5
5
  const { createCqlString } = require('./utils')
6
6
  const { getColumns } = require('../../../services/utils/columns')
7
- const { getMaxPageSize } = require('../../../../common/utils/page')
7
+ const { getMaxPageSize, getDefaultPageSize } = require('../../../../common/utils/page')
8
8
 
9
9
  const _readToCQN = ({ isCollection, segments }, target, restReq) => {
10
10
  const key = Object.keys(target.keys)[0]
@@ -20,7 +20,7 @@ const _readToCQN = ({ isCollection, segments }, target, restReq) => {
20
20
  if (!isCollection) cqn.SELECT.one = true
21
21
 
22
22
  if (isCollection && (restReq.query.$top || restReq.query.$skip)) {
23
- const top = restReq.query.$top ? parseInt(restReq.query.$top) : Number.MAX_SAFE_INTEGER
23
+ const top = restReq.query.$top ? parseInt(restReq.query.$top) : getDefaultPageSize(target)
24
24
  cqn.limit(Math.min(top, getMaxPageSize(target)), parseInt(restReq.query.$skip) || 0)
25
25
  }
26
26
 
@@ -106,10 +106,14 @@ const validateReturnType = (operation, data) => {
106
106
  // Determine entity from bound or unbound action/function
107
107
  const returnTypeCsnDefinition = returnType._type || returnType
108
108
 
109
- checkResult = checkStatic(returnTypeCsnDefinition, data, true)
109
+ // REVISIT: remove exception with cds^6
110
+ // mtx returns object instead of string (as in modell) -> skip validation
111
+ if (returnTypeCsnDefinition.type !== 'cds.String') {
112
+ checkResult = checkStatic(returnTypeCsnDefinition, data, true)
113
+ }
110
114
  }
111
115
 
112
- if (checkResult.length !== 0) {
116
+ if (checkResult && checkResult.length !== 0) {
113
117
  throw _getTypeError(operation, returnType.type, checkResult)
114
118
  }
115
119
 
@@ -268,7 +268,7 @@ const compareJson = (newValue, oldValue, entity) => {
268
268
  return Array.isArray(newValue) ? result : result[0]
269
269
  }
270
270
 
271
- const _isObject = item => item && typeof item === 'object' && !Array.isArray(item)
271
+ const _isObject = item => item && typeof item === 'object' && !Array.isArray(item) && !Buffer.isBuffer(item)
272
272
 
273
273
  const _mergeArrays = (entity, oldValue, newValue) => {
274
274
  const merged = []
@@ -1,11 +1,18 @@
1
1
  const cds = require('../../../../cds')
2
2
 
3
3
  const getCredentials = uaa => {
4
- uaa = uaa || cds.env.requires.uaa || {}
4
+ uaa =
5
+ uaa && uaa.credentials
6
+ ? uaa
7
+ : cds.env.requires.uaa && cds.env.requires.uaa.credentials
8
+ ? cds.env.requires.uaa
9
+ : cds.env.requires.xsuaa && cds.env.requires.xsuaa.credentials
10
+ ? cds.env.requires.xsuaa
11
+ : {}
5
12
 
6
- if (!uaa.credentials) {
13
+ if (!uaa.credentials)
7
14
  throw Object.assign(new Error('No or malformed uaa credentials'), { credentials: uaa.credentials })
8
- }
15
+
9
16
  return uaa.credentials
10
17
  }
11
18
 
@@ -205,11 +205,19 @@ function _addSubDeepUpdateCQNRecursion({ definitions, compositionTree, entity, d
205
205
  const selectSubData = []
206
206
  for (const entry of data) {
207
207
  if (element.name in entry) {
208
- _addToData(subData, entity, element, entry)
209
208
  const selectEntry = selectDataByKey.get(_serializedKey(entity, entry))
209
+
210
210
  if (selectEntry && element.name in selectEntry) {
211
+ if (
212
+ selectEntry[element.name] === null &&
213
+ (entry[element.name] === null || Object.keys(entry[element.name]).length === 0)
214
+ ) {
215
+ continue
216
+ }
211
217
  _addToData(selectSubData, entity, element, selectEntry)
212
218
  }
219
+
220
+ _addToData(subData, entity, element, entry)
213
221
  }
214
222
  }
215
223
  _addSubDeepUpdateCQN({
@@ -1,5 +1,5 @@
1
1
  const cds = require('../../cds')
2
- const { getDefaultPageSize } = require('../utils/page')
2
+ const { getDefaultPageSize, getMaxPageSize } = require('../utils/page')
3
3
 
4
4
  const _handler = function (req) {
5
5
  // only if http request
@@ -11,7 +11,7 @@ const _handler = function (req) {
11
11
  let { rows, offset } = req.query.SELECT.limit || {}
12
12
  rows = rows && 'val' in rows ? rows.val : getDefaultPageSize(req.target)
13
13
  offset = offset && 'val' in offset ? offset.val : 0
14
- req.query.limit(...[rows, offset])
14
+ req.query.limit(...[Math.min(rows, getMaxPageSize(req.target)), offset])
15
15
  }
16
16
 
17
17
  /**
@@ -11,15 +11,27 @@ const { isAsteriskColumn } = require('../../common/utils/rewriteAsterisks')
11
11
  const GET_KEY_VALUE = Symbol.for('sap.cds.getKeyValue')
12
12
  const TO_MANY = Symbol.for('sap.cds.toMany')
13
13
  const TO_ACTIVE = Symbol.for('sap.cds.toActive')
14
-
15
14
  const SKIP_MAPPING = Symbol.for('sap.cds.skipMapping')
16
15
  const IDENTIFIER = Symbol.for('sap.cds.identifier')
17
16
  const IS_ACTIVE = Symbol.for('sap.cds.isActive')
18
17
  const IS_UNION_DRAFT = Symbol.for('sap.cds.isUnionDraft')
18
+
19
19
  const { DRAFT_COLUMNS } = require('../../common/constants/draft')
20
20
 
21
21
  const { getCQNUnionFrom } = require('../../common/utils/union')
22
22
 
23
+ function getCqnCopy(readToOneCQN) {
24
+ const readToOneCQNCopy = JSON.parse(JSON.stringify(readToOneCQN))
25
+ if (readToOneCQN[GET_KEY_VALUE] !== undefined) readToOneCQNCopy[GET_KEY_VALUE] = readToOneCQN[GET_KEY_VALUE]
26
+ if (readToOneCQN[TO_MANY] !== undefined) readToOneCQNCopy[TO_MANY] = readToOneCQN[TO_MANY]
27
+ if (readToOneCQN[TO_ACTIVE] !== undefined) readToOneCQNCopy[TO_ACTIVE] = readToOneCQN[TO_ACTIVE]
28
+ if (readToOneCQN[SKIP_MAPPING] !== undefined) readToOneCQNCopy[SKIP_MAPPING] = readToOneCQN[SKIP_MAPPING]
29
+ if (readToOneCQN[IDENTIFIER] !== undefined) readToOneCQNCopy[IDENTIFIER] = readToOneCQN[IDENTIFIER]
30
+ if (readToOneCQN[IS_ACTIVE] !== undefined) readToOneCQNCopy[IS_ACTIVE] = readToOneCQN[IS_ACTIVE]
31
+ if (readToOneCQN[IS_UNION_DRAFT] !== undefined) readToOneCQNCopy[IS_UNION_DRAFT] = readToOneCQN[IS_UNION_DRAFT]
32
+ return readToOneCQNCopy
33
+ }
34
+
23
35
  class JoinCQNFromExpanded {
24
36
  constructor(cqn, csn, locale) {
25
37
  this._SELECT = Object.assign({}, cqn.SELECT)
@@ -91,16 +103,16 @@ class JoinCQNFromExpanded {
91
103
  * @private
92
104
  */
93
105
  _createJoinCQNFromExpanded(SELECT, toManyTree, defaultLanguage) {
94
- const unionArgs = SELECT.from.args
95
- const isJoinOfTwoUnions = unionArgs && unionArgs.every(a => a.SELECT)
106
+ const joinArgs = SELECT.from.args
107
+ const isJoinOfTwoSelects = joinArgs && joinArgs.every(a => a.SELECT)
96
108
 
97
109
  const unionTableRef = this._getUnionTable(SELECT)
98
110
  const unionTable = unionTableRef && unionTableRef.table
99
111
  const tableAlias = this._getTableAlias(SELECT, toManyTree, unionTable)
100
112
 
101
- const readToOneCQN = this._getReadToOneCQN(SELECT, isJoinOfTwoUnions ? 'filterExpand' : tableAlias)
113
+ const readToOneCQN = this._getReadToOneCQN(SELECT, isJoinOfTwoSelects ? 'filterExpand' : tableAlias)
102
114
 
103
- if (isJoinOfTwoUnions) {
115
+ if (isJoinOfTwoSelects) {
104
116
  // mappings
105
117
  const mappings = this._getMappingObject(toManyTree)
106
118
  const prefix = `${tableAlias}_`
@@ -110,7 +122,7 @@ class JoinCQNFromExpanded {
110
122
  mappings[c.as.replace(prefix, '')] = c.as
111
123
  })
112
124
  // expand to one
113
- const entity = this._csn.definitions[unionArgs[0].SELECT.from.SET.args[1].SELECT.from.ref[0]]
125
+ const entity = this._csn.definitions[joinArgs[0].SELECT.from.SET.args[1].SELECT.from.ref[0]]
114
126
  const givenColumns = readToOneCQN.columns
115
127
  readToOneCQN.columns = []
116
128
  this._expandedToFlat({ entity, givenColumns, readToOneCQN, tableAlias, toManyTree, defaultLanguage })
@@ -128,6 +140,9 @@ class JoinCQNFromExpanded {
128
140
  this._expandedToFlat({ entity, givenColumns, readToOneCQN, tableAlias, toManyTree, defaultLanguage })
129
141
  }
130
142
 
143
+ // brute force hack
144
+ readToOneCQN.columns = readToOneCQN.columns.filter(c => c.as !== 'filterExpand_IsActiveEntity')
145
+
131
146
  // Add at start, so that the deepest level is post processed first
132
147
  this.queries.push({
133
148
  SELECT: readToOneCQN,
@@ -480,6 +495,8 @@ class JoinCQNFromExpanded {
480
495
  const toManyColumns = []
481
496
  const mappings = this._getMappingObject(toManyTree)
482
497
 
498
+ const readToOneCQNCopy = getCqnCopy(readToOneCQN)
499
+
483
500
  for (const column of givenColumns) {
484
501
  let navigation
485
502
  if (column.expand) {
@@ -523,7 +540,16 @@ class JoinCQNFromExpanded {
523
540
  }
524
541
 
525
542
  // only as second step handle expand to many, or else keys might still be unknown
526
- this._toMany({ entity, readToOneCQN, tableAlias, toManyColumns, toManyTree, mappings, defaultLanguage })
543
+ this._toMany({
544
+ entity,
545
+ readToOneCQN,
546
+ tableAlias,
547
+ toManyColumns,
548
+ toManyTree,
549
+ mappings,
550
+ defaultLanguage,
551
+ readToOneCQNCopy
552
+ })
527
553
  }
528
554
 
529
555
  adjustOrderBy(orderBy, mappings, column, tableAlias) {
@@ -957,7 +983,16 @@ class JoinCQNFromExpanded {
957
983
  return DRAFT_COLUMNS.includes(ref[0])
958
984
  }
959
985
 
960
- _toMany({ entity, readToOneCQN, tableAlias, toManyColumns, toManyTree, mappings, defaultLanguage }) {
986
+ _toMany({
987
+ entity,
988
+ readToOneCQN,
989
+ tableAlias,
990
+ toManyColumns,
991
+ toManyTree,
992
+ mappings,
993
+ defaultLanguage,
994
+ readToOneCQNCopy
995
+ }) {
961
996
  if (toManyColumns.length === 0) {
962
997
  return
963
998
  }
@@ -968,7 +1003,7 @@ class JoinCQNFromExpanded {
968
1003
  const select = this._buildExpandedCQN({
969
1004
  column,
970
1005
  entity,
971
- readToOneCQN,
1006
+ readToOneCQN: readToOneCQNCopy,
972
1007
  toManyTree,
973
1008
  mappings,
974
1009
  parentAlias,
@@ -1,27 +1,14 @@
1
- // REVISIT: use templating mechanism (resp. results.metadata, once available) to make more efficient
2
-
3
1
  const { getEntityFromCQN } = require('../../common/utils/entityFromCqn')
2
+ const getTemplate = require('../../common/utils/template')
3
+ const templateProcessor = require('../../common/utils/templateProcessor')
4
4
 
5
- const _toArray = (result, elements) => {
6
- // REVISIT: This is a very expensive loop in loop...
7
- // and 100% overhead the results don't contain arrayed elements,
8
- // and 100% of all currently existing stakeholder projects don't.
9
- // but that's not that easy to fix -> see comment about results.metadata below
10
- for (const row of result) {
11
- for (const column in row) {
12
- if (elements[column] === undefined || row[column] === undefined) continue
5
+ const _pick = element => {
6
+ if (element.kind === 'element' && element.items) return 'arrayed'
7
+ }
13
8
 
14
- // .items marks arrayed element
15
- if (elements[column].items) {
16
- row[column] = JSON.parse(row[column])
17
- } else if (elements[column].is2many) {
18
- _toArray(row[column], elements[column]._target.elements)
19
- } else if (elements[column].is2one) {
20
- _toArray([row[column]], elements[column]._target.elements)
21
- } else if (elements[column].elements) {
22
- _toArray([row[column]], elements[column].elements)
23
- }
24
- }
9
+ const _processFn = ({ row, key, plain }) => {
10
+ if (plain === 'arrayed' && row && row[key] && (typeof row[key] === 'string' || Buffer.isBuffer(row[key]))) {
11
+ row[key] = JSON.parse(row[key])
25
12
  }
26
13
  }
27
14
 
@@ -35,12 +22,12 @@ const _toArray = (result, elements) => {
35
22
  module.exports = function (result, req) {
36
23
  if (!this.model) return
37
24
 
38
- if (!Array.isArray(result)) result = [result]
39
-
40
- // REVISIT: We need results.metadata to make that more efficient
41
- // results.metadata ~= cds.infer(req.query).metadata
42
- // REVISIT: No entity for sets/unions outside of common draft scenarios
43
25
  const entity = getEntityFromCQN(req, this)
44
26
  if (!entity) return
45
- if (entity) _toArray(result, entity.elements)
27
+
28
+ const template = getTemplate('db-arrayed', this, entity, { pick: _pick })
29
+ if (template.elements.size === 0) return
30
+
31
+ for (const row of Array.isArray(result) ? result : [result])
32
+ templateProcessor({ processFn: _processFn, row, template })
46
33
  }
@@ -87,11 +87,11 @@ class ExpressionBuilder extends BaseBuilder {
87
87
  }
88
88
 
89
89
  _isStructured(op1, comp, op2) {
90
- if (op1.ref && comp === '=' && op2.val && typeof op2.val === 'object') {
90
+ if (op1.ref && comp === '=' && op2.val && typeof op2.val === 'object' && !(op2.val instanceof Buffer)) {
91
91
  return true
92
92
  }
93
93
  // also check reverse
94
- if (op1.val && typeof op1.val === 'object' && comp === '=' && op2.ref) {
94
+ if (op1.val && typeof op1.val === 'object' && comp === '=' && op2.ref && !(op1.val instanceof Buffer)) {
95
95
  return true
96
96
  }
97
97
 
@@ -106,7 +106,7 @@ const _handler = async function (req) {
106
106
  // Only allows one active entity to be processed at a time, locking out other
107
107
  // users who need to edit the same record simultaneously.
108
108
  // .forUpdate(): lock the record, a wait of 0 is equivalent to no wait
109
- const lockRecordCQN = SELECT.from(lockTargetEntity).where(lockWhere).forUpdate({ wait: 0 })
109
+ const lockRecordCQN = SELECT.from(lockTargetEntity, [1]).where(lockWhere).forUpdate({ wait: 0 })
110
110
 
111
111
  const columnNames = getColumns(req.target, { onlyNames: true, filterVirtual: true })
112
112
  const rootCQN = SELECT.from(req.target, columnNames).where(rootWhere)
@@ -257,12 +257,29 @@ const _getOuterMostColumns = (columnsFromRequest, additionalDraftColumns) => {
257
257
  return columns
258
258
  }
259
259
 
260
+ // adds base columns 'InProcessByUser' and 'CreatedByUser' to columns param if needed
261
+ // those are required for calculating 'DraftIsProcessedByMe' and 'DraftIsCreatedByMe'
262
+ const _ensureDraftAdminColumnsForCalculation = columns => {
263
+ columns.forEach((c, i) => {
264
+ if (c.ref && c.ref[0] === 'DraftIsCreatedByMe' && !columns.find(e => e.ref && e.ref[0] === 'CreatedByUser')) {
265
+ columns.push({ ref: ['CreatedByUser'] })
266
+ } else if (
267
+ c.ref &&
268
+ c.ref[0] === 'DraftIsProcessedByMe' &&
269
+ !columns.find(e => e.ref && e.ref[0] === 'InProcessByUser')
270
+ ) {
271
+ columns.push({ ref: ['InProcessByUser'] })
272
+ }
273
+ })
274
+ }
275
+
260
276
  const _draftAdminTable = req => {
261
277
  const { table } = _getTableName(req)
262
278
 
263
279
  let cqn = SELECT.from(table)
264
280
  if (req.query.SELECT.columns) {
265
281
  cqn = cqn.columns(...req.query.SELECT.columns)
282
+ _ensureDraftAdminColumnsForCalculation(cqn.SELECT.columns)
266
283
  }
267
284
 
268
285
  return {
@@ -1119,6 +1136,14 @@ const _getLocalizedEntity = (model, target, user) => {
1119
1136
  return localizedEntity || model.definitions[`${prefix}.${target.name}`]
1120
1137
  }
1121
1138
 
1139
+ const _adaptDraftAdminExpand = cqn => {
1140
+ const draftAdminExpand =
1141
+ cqn.SELECT.columns && cqn.SELECT.columns.find(c => c.expand && c.ref[0] === 'DraftAdministrativeData')
1142
+ if (draftAdminExpand) {
1143
+ _ensureDraftAdminColumnsForCalculation(draftAdminExpand.expand)
1144
+ }
1145
+ }
1146
+
1122
1147
  /**
1123
1148
  * Generic Handler for READ requests in the context of draft.
1124
1149
  *
@@ -1154,6 +1179,9 @@ const _handler = async function (req) {
1154
1179
  return
1155
1180
  }
1156
1181
 
1182
+ // ensure base columns for calculation are selected in draft admin expand
1183
+ _adaptDraftAdminExpand(cqnScenario.cqn)
1184
+
1157
1185
  if (cqnScenario.scenario === SCENARIO.ALL_ACTIVE && cqnScenario.cqn.SELECT.where) {
1158
1186
  cqnScenario.cqn.SELECT.where = removeIsActiveEntityRecursively(cqnScenario.cqn.SELECT.where)
1159
1187
  }
@@ -55,13 +55,15 @@ const _addViews = csn => {
55
55
  })
56
56
  }
57
57
 
58
+ const _needsQuotations = t => t instanceof cds.builtin.classes.string || t instanceof cds.builtin.classes.date
59
+
58
60
  const _handleDefaults = async (extension, dbEntity, req, cds, draftEntity) => {
59
61
  const ext = Object.keys(extension.elements)
60
62
  .filter(key => extension.elements[key].default)
61
63
  .map(key => {
62
64
  const element = extension.elements[key]
63
65
  const t = cds.model.definitions[element.type] || cds.builtin.types[element.type]
64
- const value = t && t instanceof cds.builtin.classes.string ? `"${element.default.val}"` : element.default.val
66
+ const value = t && _needsQuotations(t) ? `"${element.default.val}"` : element.default.val
65
67
  return `"${key}":${value}`
66
68
  })
67
69
 
@@ -16,10 +16,6 @@ const _processorFn = ({ row, key }) => {
16
16
 
17
17
  delete row[EXT_BACK_PACK]
18
18
  }
19
-
20
- if (row[key] === undefined) {
21
- row[key] = null
22
- }
23
19
  }
24
20
 
25
21
  function transformExtendedFieldsRESULT(result, req) {
@@ -18,9 +18,14 @@ const addDataListener = (client, queue, prefix, cb) =>
18
18
  .receiver(queue)
19
19
  .attach(source)
20
20
  .on('data', async raw => {
21
- const buffer = Buffer.concat(raw.payload.chunks)
22
- const payload = _JSONorString(buffer.toString())
23
- const topic = raw.source.properties.to.replace(/^topic:\/*/, '')
21
+ const buffer = raw.payload && Buffer.concat(raw.payload.chunks)
22
+ const payload = buffer && _JSONorString(buffer.toString())
23
+ const topic =
24
+ raw.source &&
25
+ raw.source.properties &&
26
+ raw.source.properties.to &&
27
+ raw.source.properties.to.replace(/^topic:\/*/, '')
28
+ if (!topic) return raw.done()
24
29
  await cb(topic, payload, null, { done: raw.done, failed: raw.failed })
25
30
  })
26
31
  .on('subscribed', () => {
@@ -5,8 +5,12 @@ const LOG = cds.log('remote')
5
5
 
6
6
  // disable sdk logger if not in debug mode
7
7
  if (!LOG._debug) {
8
- const sdkUtils = require('@sap-cloud-sdk/util')
9
- sdkUtils.setGlobalLogLevel('error')
8
+ try {
9
+ const sdkUtils = require('@sap-cloud-sdk/util')
10
+ sdkUtils.setGlobalLogLevel('error')
11
+ } catch (err) {
12
+ /* might fail in cds repl due to winston's exception handler, see cap/issues#10134 */
13
+ }
10
14
  }
11
15
 
12
16
  const { resolveView, getTransition, restoreLink, findQueryTarget } = require('../common/utils/resolveView')
@@ -39,6 +39,7 @@ module.exports = {
39
39
  if (url.url) url = url.url
40
40
  // REVISIT: for okra, remove when no longer needed
41
41
  else if (url.getIncomingRequest) url = url.getIncomingRequest().url
42
+
42
43
  url = decodeURIComponent(url)
43
44
 
44
45
  options = options === 'strict' ? { strict } : options.strict ? { ...options, strict } : options
@@ -63,7 +64,7 @@ module.exports = {
63
64
  throw err
64
65
  }
65
66
 
66
- if (typeof options.afterburner === 'function') cqn = options.afterburner(cqn)
67
+ if (options.afterburner) cqn = options.afterburner(cqn)
67
68
 
68
69
  const query = cqn.SELECT.one ? SELECT.one(cqn.SELECT.from) : SELECT.from(cqn.SELECT.from)
69
70
  Object.assign(query.SELECT, cqn.SELECT)
@@ -59,7 +59,15 @@ function _processSegments(cqn, model) {
59
59
  let base = ref[i - keyCount]
60
60
  if (!base.id) base = { id: base, where: [] }
61
61
  if (base.where.length) base.where.push('and')
62
- base.where.push({ ref: [key] }, '=', { val: element.type === 'cds.Integer' ? Number(seg) : seg })
62
+ if (ref[i].id) {
63
+ // > fix case key value parsed to collection with filter
64
+ const val = `${ref[i].id}(${Object.keys(params)
65
+ .map(k => `${k}='${params[k]}'`)
66
+ .join(',')})`
67
+ base.where.push({ ref: [key] }, '=', { val })
68
+ } else {
69
+ base.where.push({ ref: [key] }, '=', { val: element.type === 'cds.Integer' ? Number(seg) : seg })
70
+ }
63
71
  ref[i] = null
64
72
  ref[i - keyCount] = base
65
73
  incompleteKeys = keyCount < keys.length
@@ -115,6 +115,22 @@
115
115
  const _compareRefs = col => exp => col === exp ||
116
116
  (col.as && exp.as && col.as === exp.as) ||
117
117
  (col.ref && exp.ref && col.ref.join('') === exp.ref.join(''))
118
+
119
+ const _getMergedPath = (head, filter, segment) => {
120
+ if (!head) head = ''
121
+ if (filter) {
122
+ head += filter.reduce((acc, cur) => {
123
+ for (const c of cur) {
124
+ if (typeof c === 'string') acc += c
125
+ else acc += c.val ? typeof c.val === 'string' ? `'${c.val}'` : c.val : c.ref[0]
126
+ }
127
+ return acc
128
+ }, '')
129
+ filter = undefined
130
+ }
131
+ head += segment
132
+ return [head, filter, segment]
133
+ }
118
134
  }
119
135
 
120
136
  // ---------- Entity Paths ---------------
@@ -149,7 +165,9 @@
149
165
  path
150
166
  = "$count" {count = true}
151
167
  / rv:$("$ref"/"$value") {return !TECHNICAL_OPTS.includes(rv) && {from: {ref: [rv]}}}
152
- / head:(identifier/val) filter:(OPEN CLOSE/OPEN args CLOSE)? tail:( '/' p:path {return p} )? {
168
+ / head:(identifier/val)? filter:(OPEN CLOSE/OPEN args CLOSE)? segment:(segment)? tail:( '/' p:path {return p} )? {
169
+ // OData vs. REST style
170
+ if (segment) [head, filter, segment] = _getMergedPath(head, filter, segment)
153
171
  // minimal: val also as path segment
154
172
  const ref = [
155
173
  filter
@@ -187,6 +205,7 @@
187
205
  "$orderby=" o orderby ( COMMA orderby )* /
188
206
  "$top=" o top /
189
207
  "$skip=" o skip /
208
+ "$skiptoken=" o skip /
190
209
  "$search=" o search /
191
210
  "$count=" o count /
192
211
  "$apply=" o apply /
@@ -241,6 +260,9 @@
241
260
 
242
261
  skip
243
262
  = val:integer {
263
+ if (SELECT.limit && SELECT.limit.offset && SELECT.limit.offset.val) {
264
+ val += SELECT.limit.offset.val
265
+ }
244
266
  (SELECT.limit || (SELECT.limit={})).offset = {val}
245
267
  }
246
268
 
@@ -506,18 +528,19 @@
506
528
  )?)
507
529
 
508
530
  number
509
- = s:$( [+-]? [0-9]+ ("."[0-9]+)? ("e"[0-9]+)? )
510
- {return safeNumber(s)}
531
+ = s:$( [+-]? [0-9]+ ("."[0-9]+)? ("e"[0-9]+)? ) {return safeNumber(s)}
511
532
 
512
533
  integer
513
- = s:$( [+-]? [0-9]+ )
514
- {return parseInt(s)}
534
+ = s:$( [+-]? [0-9]+ ) {return parseInt(s)}
515
535
 
516
536
  identifier
517
537
  = !bool !guid s:$([_a-zA-Z][_a-zA-Z0-9"."]*) {return s}
518
538
 
519
- guid = val:$([0-9a-zA-Z]+ "-" ([0-9a-zA-Z]+ "-"?)+)
520
- {return {val}}
539
+ guid
540
+ = val:$([0-9a-zA-Z]+ "-" ([0-9a-zA-Z]+ "-"?)+) {return {val}}
541
+
542
+ segment
543
+ = s:$([a-zA-Z0-9-"."_~!$&'()*+,;=:@]+)
521
544
 
522
545
  //
523
546
  // ---------- Punctuation ----------
@@ -1 +1 @@
1
- "use strict";function peg$subclass(t,r){function e(){this.constructor=t}e.prototype=r.prototype,t.prototype=new e}function peg$SyntaxError(t,r,e,n){this.message=t,this.expected=r,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(t,r){r=void 0!==r?r:{};var e,n={},s={ODataRelativeURI:we},u=we,a="/",c=ve("/",!1),o=ve("?",!1),i=ve("&",!1),f="$count",l=ve("$count",!1),h="$ref",p=ve("$ref",!1),A="$value",d=ve("$value",!1),g=ve("=",!1),v="$select=",b=ve("$select=",!1),m="$expand=",x=ve("$expand=",!1),C="$filter=",y=ve("$filter=",!1),$="$orderby=",w=ve("$orderby=",!1),E="$top=",S=ve("$top=",!1),z="$skip=",Z=ve("$skip=",!1),j="$search=",O=ve("$search=",!1),B="$count=",R=ve("$count=",!1),F="$apply=",T=ve("$apply=",!1),L=ve("*",!1),N=ve(";",!1),k=function(t){return t?[t]:[]},q=function(t,r){t.push({xpr:r})},I=function(t,r){t.push({val:r})},_=function(t,r,e){t.push(r,...e)},D=function(t,r){t.push(r)},U=function(t,r,e){t.push(r,...e)},M=":",P=ve(":",!1),J="any",G=ve("any",!1),H="all",K=ve("all",!1),Q=ve("asc",!1),V="desc",W=ve("desc",!1),X=/^[a-zA-Z]/,Y=be([["a","z"],["A","Z"]],!1,!1),tt=/^[a-zA-Z0-9\-]/,rt=be([["a","z"],["A","Z"],["0","9"],"-"],!1,!1),et=/^[^&]/,nt=be(["&"],!0,!1),st=me("a comparison"),ut=ve("eq",!1),at=ve("ne",!1),ct=ve("lt",!1),ot=ve("gt",!1),it=ve("le",!1),ft=ve("ge",!1),lt=(ve("add",!1),ve("sub",!1),ve("mul",!1),ve("div",!1),ve("mod",!1),me("an operand")),ht=me("a reference"),pt=function(t,r){return r},At=function(t){return{val:t}},dt=ve("{",!1),gt=/^[^}]/,vt=be(["}"],!0,!1),bt=ve("}",!1),mt="[",xt=ve("[",!1),Ct="]",yt=ve("]",!1),$t=/^[^\]]/,wt=be(["]"],!0,!1),Et=me("a function call"),St=/^[a-z]/,zt=be([["a","z"]],!1,!1),Zt=function(t,r,e){return e},jt=me("a boolean function"),Ot="contains",Bt=ve("contains",!1),Rt="endswith",Ft=ve("endswith",!1),Tt="startswith",Lt=ve("startswith",!1),Nt=ve("NOT",!0),kt=ve("AND",!0),qt=ve("OR",!0),It="aggregate",_t=ve("aggregate",!1),Dt="groupby",Ut=ve("groupby",!1),Mt="filter",Pt=ve("filter",!1),Jt="expand",Gt=ve("expand",!1),Ht="search",Kt=ve("search",!1),Qt="concat",Vt=ve("concat",!1),Wt="compute",Xt=ve("compute",!1),Yt="bottompercent",tr=ve("bottompercent",!1),rr="bottomsum",er=ve("bottomsum",!1),nr="toppercent",sr=ve("toppercent",!1),ur="topsum",ar=ve("topsum",!1),cr="with",or=ve("with",!1),ir="from",fr=ve("from",!1),lr=ve("as",!1),hr="rollup",pr=ve("rollup",!1),Ar="$all",dr=ve("$all",!1),gr="topcount",vr=ve("topcount",!1),br="bottomcount",mr=ve("bottomcount",!1),xr="identity",Cr=ve("identity",!1),yr="true",$r=ve("true",!1),wr="false",Er=ve("false",!1),Sr=me("Edm.String"),zr=ve("'",!1),Zr="''",jr=ve("''",!1),Or=/^[^']/,Br=be(["'"],!0,!1),Rr='"',Fr=ve('"',!1),Tr='\\"',Lr=ve('\\"',!1),Nr=/^[^"]/,kr=be(['"'],!0,!1),qr=/^[a-zA-Z0-9.+\-]/,Ir=be([["a","z"],["A","Z"],["0","9"],".","+","-"],!1,!1),_r=/^[0-9]/,Dr=be([["0","9"]],!1,!1),Ur="-",Mr=ve("-",!1),Pr=ve("T",!1),Jr=ve(".",!1),Gr=ve("Z",!1),Hr=ve("+",!1),Kr=/^[+\-]/,Qr=be(["+","-"],!1,!1),Vr=ve("e",!1),Wr=/^[_a-zA-Z]/,Xr=be(["_",["a","z"],["A","Z"]],!1,!1),Yr=/^[_a-zA-Z0-9"."]/,te=be(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),re=/^[0-9a-zA-Z]/,ee=be([["0","9"],["a","z"],["A","Z"]],!1,!1),ne=ve(",",!1),se=ve("(",!1),ue=ve(")",!1),ae=me("optional whitespaces"),ce=/^[ \t\n]/,oe=be([" ","\t","\n"],!1,!1),ie=me("mandatory whitespaces"),fe=0,le=0,he=[{line:1,column:1}],pe=0,Ae=[],de=0;if("startRule"in r){if(!(r.startRule in s))throw new Error("Can't start parsing from rule \""+r.startRule+'".');u=s[r.startRule]}function ge(t,r){throw function(t,r){return new peg$SyntaxError(t,null,null,r)}(t,r=void 0!==r?r:Ce(le,fe))}function ve(t,r){return{type:"literal",text:t,ignoreCase:r}}function be(t,r,e){return{type:"class",parts:t,inverted:r,ignoreCase:e}}function me(t){return{type:"other",description:t}}function xe(r){var e,n=he[r];if(n)return n;for(e=r-1;!he[e];)e--;for(n={line:(n=he[e]).line,column:n.column};e<r;)10===t.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return he[r]=n,n}function Ce(t,r){var e=xe(t),n=xe(r);return{start:{offset:t,line:e.line,column:e.column},end:{offset:r,line:n.line,column:n.column}}}function ye(t){fe<pe||(fe>pe&&(pe=fe,Ae=[]),Ae.push(t))}function $e(t,r,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(t,r),t,r,e)}function we(){var r,e,s,u,f,l,h,p,A,d,g,v,b,m;if(r=fe,47===t.charCodeAt(fe)?(e=a,fe++):(e=n,0===de&&ye(c)),e===n&&(e=null),e!==n)if(s=fe,(u=Ee())!==n&&(le=s,u=void(En=u)),(s=u)!==n){if(u=fe,(f=bn())!==n)if(63===t.charCodeAt(fe)?(l="?",fe++):(l=n,0===de&&ye(o)),l!==n)if((h=bn())!==n)if((p=ze())!==n){for(A=[],d=fe,(g=bn())!==n?(38===t.charCodeAt(fe)?(v="&",fe++):(v=n,0===de&&ye(i)),v!==n&&(b=bn())!==n&&(m=ze())!==n?d=g=[g,v,b,m]:(fe=d,d=n)):(fe=d,d=n);d!==n;)A.push(d),d=fe,(g=bn())!==n?(38===t.charCodeAt(fe)?(v="&",fe++):(v=n,0===de&&ye(i)),v!==n&&(b=bn())!==n&&(m=ze())!==n?d=g=[g,v,b,m]:(fe=d,d=n)):(fe=d,d=n);A!==n?u=f=[f,l,h,p,A]:(fe=u,u=n)}else fe=u,u=n;else fe=u,u=n;else fe=u,u=n;else fe=u,u=n;u===n&&(u=null),u!==n&&(f=bn())!==n?(le=r,r=e=function(){if(Sn)return En.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete En.expand,delete En.limit,delete En.orderBy,{SELECT:En};if(En.expand){En.columns||(En.columns=["*"]);for(const t of En.expand){const r=En.columns.findIndex(Bn(t));r>-1&&En.columns.splice(r,1),En.columns.push(t)}delete En.expand}return En=On(En),{SELECT:En}}()):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Ee(){var r,e,s,u,o,i,g;return r=fe,t.substr(fe,6)===f?(e=f,fe+=6):(e=n,0===de&&ye(l)),e!==n&&(le=r,e=void(Sn=!0)),(r=e)===n&&(r=fe,e=fe,t.substr(fe,4)===h?(s=h,fe+=4):(s=n,0===de&&ye(p)),s===n&&(t.substr(fe,6)===A?(s=A,fe+=6):(s=n,0===de&&ye(d))),(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,g=e,e=!zn.includes(g)&&{from:{ref:[g]}}),(r=e)===n&&(r=fe,(e=pn())===n&&(e=Ue()),e!==n?(s=fe,(u=gn())!==n&&(o=vn())!==n?s=u=[u,o]:(fe=s,s=n),s===n&&(s=fe,(u=gn())!==n&&(o=Se())!==n&&(i=vn())!==n?s=u=[u,o,i]:(fe=s,s=n)),s===n&&(s=null),s!==n?(u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=Ee())!==n?(le=u,u=o=i):(fe=u,u=n),u===n&&(u=null),u!==n?(le=r,r=e=function(t,r,e){const n=[r?r.length>2?{id:t,where:r[1].map((t=>t.val&&t.val.match&&t.val.match(/^"(.*)"$/)?{val:t.val.match(/^"(.*)"$/)[1]}:t))}:{id:t,where:[]}:$n?`${Object.prototype.hasOwnProperty.call(t,"val")?t.val:t}`:t];if(e&&e.from){const t=e.from.ref;Object.prototype.hasOwnProperty.call(t[0],"val")&&(n[n.length-1]={id:n[n.length-1],where:[t.shift()]}),n.push(...t)}const s={from:{ref:n}};return e&&e.columns&&(s.columns=e.columns),s}(e,s,u)):(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n))),r}function Se(){var r,e,s,u,a,c,o;return r=fe,(e=Ue())!==n&&(le=r,e=[e]),(r=e)===n&&(r=fe,(e=De())!==n&&bn()!==n?(61===t.charCodeAt(fe)?(s="=",fe++):(s=n,0===de&&ye(g)),s!==n&&bn()!==n?((u=Ue())===n&&(u=fe,(a=fn())!==n&&(le=u,a={val:a}),u=a),u!==n?(a=fe,(c=dn())!==n&&(o=Se())!==n?a=c=[c,o]:(fe=a,a=n),a===n&&(a=null),a!==n?(le=r,e=function(t,r,e){const n=[t,"=",r];return e&&n.push("and",...e[1]),n}(e,u,a),r=e):(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n)),r}function ze(){var r,e,s,u,a,c,o,i;if(r=fe,t.substr(fe,8)===v?(e=v,fe+=8):(e=n,0===de&&ye(b)),e!==n)if((s=bn())!==n)if((u=Ze())!==n){for(a=[],c=fe,(o=dn())!==n&&(i=Ze())!==n?c=o=[o,i]:(fe=c,c=n);c!==n;)a.push(c),c=fe,(o=dn())!==n&&(i=Ze())!==n?c=o=[o,i]:(fe=c,c=n);a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;if(r===n){if(r=fe,t.substr(fe,8)===m?(e=m,fe+=8):(e=n,0===de&&ye(x)),e!==n)if((s=bn())!==n)if((u=je())!==n){for(a=[],c=fe,(o=dn())!==n&&(i=je())!==n?c=o=[o,i]:(fe=c,c=n);c!==n;)a.push(c),c=fe,(o=dn())!==n&&(i=je())!==n?c=o=[o,i]:(fe=c,c=n);a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;if(r===n&&(r=fe,t.substr(fe,8)===C?(e=C,fe+=8):(e=n,0===de&&ye(y)),e!==n&&(s=bn())!==n&&(u=Re())!==n?r=e=[e,s,u]:(fe=r,r=n),r===n)){if(r=fe,t.substr(fe,9)===$?(e=$,fe+=9):(e=n,0===de&&ye(w)),e!==n)if((s=bn())!==n)if((u=ke())!==n){for(a=[],c=fe,(o=dn())!==n&&(i=ke())!==n?c=o=[o,i]:(fe=c,c=n);c!==n;)a.push(c),c=fe,(o=dn())!==n&&(i=ke())!==n?c=o=[o,i]:(fe=c,c=n);a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;r===n&&(r=fe,t.substr(fe,5)===E?(e=E,fe+=5):(e=n,0===de&&ye(S)),e!==n&&(s=bn())!==n?(u=function(){var t,r;t=fe,(r=hn())!==n&&(le=t,e=r,r=void((En.limit||(En.limit={})).rows={val:e}));var e;return t=r}(),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===z?(e=z,fe+=6):(e=n,0===de&&ye(Z)),e!==n&&(s=bn())!==n?(u=function(){var t,r;t=fe,(r=hn())!==n&&(le=t,e=r,r=void((En.limit||(En.limit={})).offset={val:e}));var e;return t=r}(),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,8)===j?(e=j,fe+=8):(e=n,0===de&&ye(O)),e!==n&&(s=bn())!==n&&(u=Oe())!==n?r=e=[e,s,u]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===B?(e=B,fe+=7):(e=n,0===de&&ye(R)),e!==n&&(s=bn())!==n?(u=function(){var t,r;t=fe,(r=cn())!==n&&(le=t,r=void(r&&(En.count=!0)));return t=r}(),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===F?(e=F,fe+=7):(e=n,0===de&&ye(T)),e!==n&&(s=bn())!==n&&(u=qe())!==n?r=e=[e,s,u]:(fe=r,r=n),r===n&&(r=function(){var r,e,s,u,a,c;r=fe,X.test(t.charAt(fe))?(e=t.charAt(fe),fe++):(e=n,0===de&&ye(Y));if(e!==n){for(s=[],tt.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(rt));u!==n;)s.push(u),tt.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(rt));if(s!==n)if(61===t.charCodeAt(fe)?(u="=",fe++):(u=n,0===de&&ye(g)),u!==n){for(a=[],et.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(nt));c!==n;)a.push(c),et.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(nt));a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n}else fe=r,r=n;return r}()))))))}}return r}function Ze(){var r,e,s;return r=fe,42===t.charCodeAt(fe)?(e="*",fe++):(e=n,0===de&&ye(L)),e===n&&(e=De()),e!==n&&(le=r,s=e,En.columns=Array.isArray(En.columns)?En.columns:[],En.columns.find(Bn(s))||En.columns.push(s),e=s),r=e}function je(){var r,e,s,u,a,c,o,i,f,l,h;if(r=fe,e=fe,42===t.charCodeAt(fe)?(s="*",fe++):(s=n,0===de&&ye(L)),s===n&&(s=De()),s!==n&&(le=e,s=function(t){const r="*"===t?{}:t;return r.expand="*",Array.isArray(En.expand)||(En.expand=[]),En.expand.find(Bn(r))||En.expand.push(r),r}(s)),(e=s)!==n){if(s=fe,u=fe,(a=gn())!==n&&(le=u,wn.push(En),En=En.expand[En.expand.length-1],a=void(En.expand="*")),(u=a)!==n){for(a=fe,c=[],o=fe,(i=bn())!==n?(59===t.charCodeAt(fe)?(f=";",fe++):(f=n,0===de&&ye(N)),f===n&&(f=null),f!==n&&(l=bn())!==n&&(h=ze())!==n?o=i=[i,f,l,h]:(fe=o,o=n)):(fe=o,o=n);o!==n;)c.push(o),o=fe,(i=bn())!==n?(59===t.charCodeAt(fe)?(f=";",fe++):(f=n,0===de&&ye(N)),f===n&&(f=null),f!==n&&(l=bn())!==n&&(h=ze())!==n?o=i=[i,f,l,h]:(fe=o,o=n)):(fe=o,o=n);c!==n&&(le=a,c=function(t){if(En.columns){"*"===En.expand&&(En.expand=[]);for(const t of En.columns)En.expand.find(Bn(t))||En.expand.push(t);delete En.columns}else Array.isArray(En.expand)&&-1===En.expand.indexOf("*")&&En.expand.unshift("*")}()),(a=c)!==n?(c=fe,(o=vn())!==n&&(le=c,o=void(En=wn.pop())),(c=o)!==n?s=u=[u,a,c]:(fe=s,s=n)):(fe=s,s=n)}else fe=s,s=n;s===n&&(s=null),s!==n?(u=fe,(a=dn())!==n&&(c=je())!==n?u=a=[a,c]:(fe=u,u=n),u===n&&(u=null),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return r}function Oe(){var t,r,e;return t=fe,(r=Be())!==n&&(le=t,e=r,r=void(En.search=e)),t=r}function Be(){var r,e,s,u,a,c,o;if(r=fe,e=fe,(s=Ge())===n&&(s=null),s!==n&&(le=e,s=k(s)),(e=s)!==n)if(s=fe,(u=gn())!==n&&(a=Be())!==n&&(c=vn())!==n?(le=s,s=u=q(e,a)):(fe=s,s=n),s===n&&(s=fe,u=function(){var r,e,s,u,a;r=fe,34===t.charCodeAt(fe)?(e=Rr,fe++):(e=n,0===de&&ye(Fr));if(e!==n){for(s=fe,u=[],t.substr(fe,2)===Tr?(a=Tr,fe+=2):(a=n,0===de&&ye(Lr)),a===n&&(Nr.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(kr)));a!==n;)u.push(a),t.substr(fe,2)===Tr?(a=Tr,fe+=2):(a=n,0===de&&ye(Lr)),a===n&&(Nr.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(kr)));(s=u!==n?t.substring(s,fe):u)!==n?(34===t.charCodeAt(fe)?(u=Rr,fe++):(u=n,0===de&&ye(Fr)),u!==n?(le=r,r=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return r}(),u!==n&&(le=s,u=I(e,u)),(s=u)===n&&(s=fe,(u=on())!==n&&(le=s,u=I(e,u)),(s=u)===n&&(s=fe,(u=fn())!==n&&(le=s,u=I(e,u)),s=u))),s!==n){for(u=[],a=fe,(c=He())===n&&(c=Qe())===n&&(c=Ke()),c!==n&&(o=Be())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=He())===n&&(c=Qe())===n&&(c=Ke()),c!==n&&(o=Be())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);u!==n?(le=r,r=e=e):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Re(){var t,r,e;return t=fe,(r=Fe())!==n&&(le=t,e=r,r=void(En.where=e)),t=r}function Fe(){var r,e,s,u,a,c,o,i;if(r=fe,e=fe,(s=Ge())===n&&(s=null),s!==n&&(le=e,s=k(s)),(e=s)!==n)if(s=fe,(u=gn())!==n&&(a=Fe())!==n&&(c=vn())!==n?(le=s,s=u=q(e,a)):(fe=s,s=n),s===n&&(s=fe,(u=Ie())!==n&&(le=s,i=u,u=void e.push(...i)),(s=u)===n&&(s=fe,(u=Te())!==n&&(le=s,u=function(t,r){t.push(...r)}(e,u)),(s=u)===n&&(s=fe,u=function(){var r,e,s,u;de++,r=fe,t.substr(fe,8)===Ot?(e=Ot,fe+=8):(e=n,0===de&&ye(Bt));e===n&&(t.substr(fe,8)===Rt?(e=Rt,fe+=8):(e=n,0===de&&ye(Ft)),e===n&&(t.substr(fe,10)===Tt?(e=Tt,fe+=10):(e=n,0===de&&ye(Lt))));e!==n&&gn()!==n&&(s=_e())!==n&&dn()!==n&&(u=_e())!==n&&vn()!==n?(le=r,r=e={func:e,args:[s,u]}):(fe=r,r=n);de--,r===n&&(e=n,0===de&&ye(jt));return r}(),u!==n&&(le=s,u=function(t,r){t.push(r)}(e,u)),(s=u)===n&&(s=fe,(u=cn())!==n&&(le=s,u=I(e,u)),s=u)))),s!==n){for(u=[],a=fe,(c=He())===n&&(c=Qe()),c!==n&&(o=Fe())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=He())===n&&(c=Qe()),c!==n&&(o=Fe())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);u!==n?(le=r,r=e=e):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Te(){var r,e,s,u,o,i,f;if(r=fe,e=fe,(s=pn())!==n&&(le=e,s=[s]),(e=s)!==n)if(47===t.charCodeAt(fe)?(s=a,fe++):(s=n,0===de&&ye(c)),s!==n){for(u=[],o=fe,(i=pn())!==n?(47===t.charCodeAt(fe)?(f=a,fe++):(f=n,0===de&&ye(c)),f!==n?(le=o,o=i=D(e,i)):(fe=o,o=n)):(fe=o,o=n);o!==n;)u.push(o),o=fe,(i=pn())!==n?(47===t.charCodeAt(fe)?(f=a,fe++):(f=n,0===de&&ye(c)),f!==n?(le=o,o=i=D(e,i)):(fe=o,o=n)):(fe=o,o=n);u!==n?(o=fe,i=function(){var r,e,s;r=fe,t.substr(fe,3)===J?(e=J,fe+=3):(e=n,0===de&&ye(G));e!==n&&gn()!==n?((s=Ne())===n&&(s=null),s!==n&&vn()!==n?(le=r,r=e=s):(fe=r,r=n)):(fe=r,r=n);return r}(),i!==n&&(le=o,i=function(t,r){let e=t.pop();if(!r)return["exists",{ref:[...t,{id:e}]}];let n=[];for(let t=0,s=0;t<r.length;++t){let u=r[t];u.ref&&0===u.ref.length&&"="===r[t+1]?n[s++]={func:"contains",args:[{ref:e},r[t+=2]]}:n[s++]=u}return n.length<r.length?(e=t.pop(),["exists",{ref:[...t,{id:e,where:n}]}]):["exists",{ref:[...t,{id:e,where:r}]}]}(e,i)),(o=i)===n&&(o=fe,i=function(){var r,e,s;r=fe,t.substr(fe,3)===H?(e=H,fe+=3):(e=n,0===de&&ye(K));e!==n&&gn()!==n&&(s=Ne())!==n&&vn()!==n?(le=r,r=e=s):(fe=r,r=n);return r}(),i!==n&&(le=o,i=function(t,r){let e=t.pop();return["not","exists",{ref:[...t,{id:e,where:["not",{xpr:[...r]}]}]}]}(e,i)),o=i),o!==n?(le=r,r=e=o):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Le(){var t,r,e,s,u,a,c,o,i;if(t=fe,r=fe,(e=Ge())===n&&(e=null),e!==n&&(le=r,e=(o=e)?[o]:[]),(r=e)!==n)if(e=fe,(s=gn())!==n&&(u=Le())!==n&&(a=vn())!==n?(le=e,i=u,e=s=void r.push("(",...i,")")):(fe=e,e=n),e===n&&(e=fe,(s=Ie())!==n&&(le=e,s=function(t,r){t.push(...r)}(r,s)),(e=s)===n&&(e=fe,(s=Te())!==n&&(le=e,s=function(t,r){t.push(...r)}(r,s)),e=s)),e!==n){for(s=[],u=fe,(a=He())===n&&(a=Qe()),a!==n&&(c=Le())!==n?(le=u,u=a=U(r,a,c)):(fe=u,u=n);u!==n;)s.push(u),u=fe,(a=He())===n&&(a=Qe()),a!==n&&(c=Le())!==n?(le=u,u=a=U(r,a,c)):(fe=u,u=n);s!==n?(le=t,t=r=r):(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;return t}function Ne(){var r,e,s,u;return r=fe,(e=pn())!==n?(58===t.charCodeAt(fe)?(s=M,fe++):(s=n,0===de&&ye(P)),s!==n&&(u=Le())!==n?(le=r,r=e=function(t,r){for(const e of r)e.ref&&e.ref[0]===t&&e.ref.shift();return r}(e,u)):(fe=r,r=n)):(fe=r,r=n),r}function ke(){var r,e,s,u,a;return r=fe,(e=Je())===n&&(e=De()),e!==n?(s=fe,mn()!==n?(u=fe,"asc"===t.substr(fe,3)?(a="asc",fe+=3):(a=n,0===de&&ye(Q)),a===n&&(t.substr(fe,4)===V?(a=V,fe+=4):(a=n,0===de&&ye(W))),(u=a!==n?t.substring(u,fe):a)!==n?(le=s,s=u):(fe=s,s=n)):(fe=s,s=n),s===n&&(s=null),s!==n?(le=r,r=e=function(t,r){const e=Cn(t,r&&{sort:r});En.orderBy=En.orderBy?[...En.orderBy,e]:[e]}(e,s)):(fe=r,r=n)):(fe=r,r=n),r}function qe(){var r,e,s,u,o,i;if(r=fe,(e=Ve())!==n){for(s=[],u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=Ve())!==n?u=o=[o,i]:(fe=u,u=n);u!==n;)s.push(u),u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=Ve())!==n?u=o=[o,i]:(fe=u,u=n);s!==n?r=e=[e,s]:(fe=r,r=n)}else fe=r,r=n;return r}function Ie(){var r,e,s,u,a,c;return de++,r=fe,(e=_e())!==n&&mn()!==n?(s=fe,"eq"===t.substr(fe,2)?(u="eq",fe+=2):(u=n,0===de&&ye(ut)),u===n&&("ne"===t.substr(fe,2)?(u="ne",fe+=2):(u=n,0===de&&ye(at)),u===n&&("lt"===t.substr(fe,2)?(u="lt",fe+=2):(u=n,0===de&&ye(ct)),u===n&&("gt"===t.substr(fe,2)?(u="gt",fe+=2):(u=n,0===de&&ye(ot)),u===n&&("le"===t.substr(fe,2)?(u="le",fe+=2):(u=n,0===de&&ye(it)),u===n&&("ge"===t.substr(fe,2)?(u="ge",fe+=2):(u=n,0===de&&ye(ft))))))),(s=u!==n?t.substring(s,fe):u)!==n&&(u=mn())!==n&&(a=_e())!==n?(le=r,r=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[c=s]||c,a]):(fe=r,r=n)):(fe=r,r=n),de--,r===n&&(e=n,0===de&&ye(st)),r}function _e(){var r;return de++,(r=Je())===n&&(r=De())===n&&(r=Ue())===n&&(r=Me())===n&&(r=Pe())===n&&(r=function(){var r,e,s,u,a;r=fe,91===t.charCodeAt(fe)?(e=mt,fe++):(e=n,0===de&&ye(xt));if(e!==n){for(s=fe,u=[],$t.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(wt));a!==n;)u.push(a),$t.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(wt));(s=u!==n?t.substring(s,fe):u)!==n?(93===t.charCodeAt(fe)?(u=Ct,fe++):(u=n,0===de&&ye(yt)),u!==n?(le=r,r=e={list:s.replace(/"/g,"").split(",").map((t=>({val:t})))}):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return r}()),de--,r===n&&(n,0===de&&ye(lt)),r}function De(){var r,e,s,u,o,i,f,l;if(de++,r=fe,(e=pn())!==n){for(s=[],u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=pn())!==n?(le=u,u=o=pt(0,i)):(fe=u,u=n);u!==n;)s.push(u),u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=pn())!==n?(le=u,u=o=pt(0,i)):(fe=u,u=n);s!==n?(le=r,l=s,r=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(fe=r,r=n)}else fe=r,r=n;return de--,r===n&&(e=n,0===de&&ye(ht)),r}function Ue(){var r,e,s;return r=fe,(e=cn())===n&&(e=function(){var r,e,s,u,a,c,o,i,f,l,h,p,A,d,g,v,b,m,x,C,y,$,w,E;r=fe,e=fe,s=[],_r.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Dr));if(u!==n)for(;u!==n;)s.push(u),_r.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Dr));else s=n;if(s!==n)if(45===t.charCodeAt(fe)?(u=Ur,fe++):(u=n,0===de&&ye(Mr)),u!==n)if(_r.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(Dr)),a!==n)if(_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr)),c!==n)if(45===t.charCodeAt(fe)?(o=Ur,fe++):(o=n,0===de&&ye(Mr)),o!==n)if(_r.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(Dr)),i!==n)if(_r.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(Dr)),f!==n){if(l=fe,84===t.charCodeAt(fe)?(h="T",fe++):(h=n,0===de&&ye(Pr)),h!==n)if(_r.test(t.charAt(fe))?(p=t.charAt(fe),fe++):(p=n,0===de&&ye(Dr)),p!==n)if(_r.test(t.charAt(fe))?(A=t.charAt(fe),fe++):(A=n,0===de&&ye(Dr)),A!==n)if(58===t.charCodeAt(fe)?(d=M,fe++):(d=n,0===de&&ye(P)),d!==n)if(_r.test(t.charAt(fe))?(g=t.charAt(fe),fe++):(g=n,0===de&&ye(Dr)),g!==n)if(_r.test(t.charAt(fe))?(v=t.charAt(fe),fe++):(v=n,0===de&&ye(Dr)),v!==n){if(b=fe,58===t.charCodeAt(fe)?(m=M,fe++):(m=n,0===de&&ye(P)),m!==n)if(_r.test(t.charAt(fe))?(x=t.charAt(fe),fe++):(x=n,0===de&&ye(Dr)),x!==n)if(_r.test(t.charAt(fe))?(C=t.charAt(fe),fe++):(C=n,0===de&&ye(Dr)),C!==n){if(y=fe,46===t.charCodeAt(fe)?($=".",fe++):($=n,0===de&&ye(Jr)),$!==n){if(w=[],_r.test(t.charAt(fe))?(E=t.charAt(fe),fe++):(E=n,0===de&&ye(Dr)),E!==n)for(;E!==n;)w.push(E),_r.test(t.charAt(fe))?(E=t.charAt(fe),fe++):(E=n,0===de&&ye(Dr));else w=n;w!==n?y=$=[$,w]:(fe=y,y=n)}else fe=y,y=n;y===n&&(y=null),y!==n?b=m=[m,x,C,y]:(fe=b,b=n)}else fe=b,b=n;else fe=b,b=n;else fe=b,b=n;b===n&&(b=null),b!==n?(90===t.charCodeAt(fe)?(m="Z",fe++):(m=n,0===de&&ye(Gr)),m===n&&(m=fe,43===t.charCodeAt(fe)?(x="+",fe++):(x=n,0===de&&ye(Hr)),x===n&&(45===t.charCodeAt(fe)?(x=Ur,fe++):(x=n,0===de&&ye(Mr))),x!==n?(_r.test(t.charAt(fe))?(C=t.charAt(fe),fe++):(C=n,0===de&&ye(Dr)),C!==n?(_r.test(t.charAt(fe))?(y=t.charAt(fe),fe++):(y=n,0===de&&ye(Dr)),y!==n?(58===t.charCodeAt(fe)?($=M,fe++):($=n,0===de&&ye(P)),$!==n?(_r.test(t.charAt(fe))?(w=t.charAt(fe),fe++):(w=n,0===de&&ye(Dr)),w!==n?(_r.test(t.charAt(fe))?(E=t.charAt(fe),fe++):(E=n,0===de&&ye(Dr)),E!==n?m=x=[x,C,y,$,w,E]:(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)),m===n&&(m=null),m!==n?l=h=[h,p,A,d,g,v,b,m]:(fe=l,l=n)):(fe=l,l=n)}else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;l===n&&(l=null),l!==n?e=s=[s,u,a,c,o,i,f,l]:(fe=e,e=n)}else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;r=e!==n?t.substring(r,fe):e;return r}()),e!==n&&(le=r,e=At(e)),(r=e)===n&&(r=An())===n&&(r=fe,(e=ln())!==n&&(le=r,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(r=e)===n&&(r=fe,(e=on())!==n&&(le=r,e=At(e)),r=e)),r}function Me(){var r,e,s,u,a,c;if(r=fe,e=fe,s=fe,123===t.charCodeAt(fe)?(u="{",fe++):(u=n,0===de&&ye(dt)),u!==n){for(a=[],(c=Me())===n&&(gt.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(vt)));c!==n;)a.push(c),(c=Me())===n&&(gt.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(vt)));a!==n?(125===t.charCodeAt(fe)?(c="}",fe++):(c=n,0===de&&ye(bt)),c!==n?s=u=[u,a,c]:(fe=s,s=n)):(fe=s,s=n)}else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=At(e)),r=e}function Pe(){var r,e,s,u,a,c,o,i;if(r=fe,e=fe,s=fe,91===t.charCodeAt(fe)?(u=mt,fe++):(u=n,0===de&&ye(xt)),u!==n&&(a=bn())!==n?(93===t.charCodeAt(fe)?(c=Ct,fe++):(c=n,0===de&&ye(yt)),c!==n?s=u=[u,a,c]:(fe=s,s=n)):(fe=s,s=n),s===n)if(s=fe,91===t.charCodeAt(fe)?(u=mt,fe++):(u=n,0===de&&ye(xt)),u!==n)if((a=bn())!==n)if(123===t.charCodeAt(fe)?(c="{",fe++):(c=n,0===de&&ye(dt)),c!==n){for(o=[],(i=Pe())===n&&($t.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(wt)));i!==n;)o.push(i),(i=Pe())===n&&($t.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(wt)));o!==n?(93===t.charCodeAt(fe)?(i=Ct,fe++):(i=n,0===de&&ye(yt)),i!==n?s=u=[u,a,c,o,i]:(fe=s,s=n)):(fe=s,s=n)}else fe=s,s=n;else fe=s,s=n;else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=At(e)),r=e}function Je(){var r,e,s,u,a,c,o,i,f,l;if(de++,r=fe,e=fe,s=[],St.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(zt)),u!==n)for(;u!==n;)s.push(u),St.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(zt));else s=n;if((e=s!==n?t.substring(e,fe):s)!==n)if((s=gn())!==n)if((u=_e())!==n){for(a=[],c=fe,dn()!==n&&(o=_e())!==n?(le=c,c=Zt(0,0,o)):(fe=c,c=n);c!==n;)a.push(c),c=fe,dn()!==n&&(o=_e())!==n?(le=c,c=Zt(0,0,o)):(fe=c,c=n);a!==n&&(c=vn())!==n?(le=r,i=e,f=u,l=a,yn&&!(i in yn.functions)&&xn("'"+i+"' is an unknown function in OData URL spec (strict mode)"),r=e={func:i,args:[f,...l]}):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;return de--,r===n&&(e=n,0===de&&ye(Et)),r}function Ge(){var r,e;return r=fe,bn()!==n?("not"===t.substr(fe,3).toLowerCase()?(e=t.substr(fe,3),fe+=3):(e=n,0===de&&ye(Nt)),e!==n&&mn()!==n?(le=r,r="not"):(fe=r,r=n)):(fe=r,r=n),r}function He(){var r,e;return r=fe,mn()!==n?("and"===t.substr(fe,3).toLowerCase()?(e=t.substr(fe,3),fe+=3):(e=n,0===de&&ye(kt)),e!==n&&mn()!==n?(le=r,r="and"):(fe=r,r=n)):(fe=r,r=n),r}function Ke(){var t,r;return t=fe,(r=mn())!==n&&(le=t,r="and"),t=r}function Qe(){var r,e;return r=fe,mn()!==n?("or"===t.substr(fe,2).toLowerCase()?(e=t.substr(fe,2),fe+=2):(e=n,0===de&&ye(qt)),e!==n&&mn()!==n?(le=r,r="or"):(fe=r,r=n)):(fe=r,r=n),r}function Ve(){var r,e,s;return r=fe,t.substr(fe,9)===It?(e=It,fe+=9):(e=n,0===de&&ye(_t)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=We())!==n){for(u=[],a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=We())!==n?a=c=[c,o,i,f]:(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=We())!==n?a=c=[c,o,i,f]:(fe=a,a=n);u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===Dt?(e=Dt,fe+=7):(e=n,0===de&&ye(Ut)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f,l;if(t=fe,(r=gn())!==n)if((e=bn())!==n){if(s=fe,(u=gn())!==n)if((a=en())!==n){for(c=[],o=fe,(i=dn())!==n&&(f=bn())!==n&&(l=en())!==n?o=i=[i,f,l]:(fe=o,o=n);o!==n;)c.push(o),o=fe,(i=dn())!==n&&(f=bn())!==n&&(l=en())!==n?o=i=[i,f,l]:(fe=o,o=n);c!==n&&(o=vn())!==n?s=u=[u,a,c,o]:(fe=s,s=n)}else fe=s,s=n;else fe=s,s=n;s!==n?(u=fe,(a=dn())!==n&&(c=bn())!==n&&(o=qe())!==n?u=a=[a,c,o]:(fe=u,u=n),u===n&&(u=null),u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)):(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===Mt?(e=Mt,fe+=6):(e=n,0===de&&ye(Pt)),e!==n&&(s=nn())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=function(){var r,e,s,u;r=fe,t.substr(fe,8)===gr?(e=gr,fe+=8):(e=n,0===de&&ye(vr));e===n&&(t.substr(fe,11)===br?(e=br,fe+=11):(e=n,0===de&&ye(mr)));e!==n&&gn()!==n&&bn()!==n&&(s=ln())!==n&&bn()!==n&&dn()!==n&&bn()!==n&&(u=De())!==n&&bn()!==n&&vn()!==n?(le=r,r=e=function(t,r,e){const n={...e,sort:"topcount"===t?"desc":"asc"};En.orderBy=En.orderBy?[...En.orderBy,n]:[n],(En.limit||(En.limit={})).rows={val:r}}(e,s,u)):(fe=r,r=n);return r}(),r===n&&(r=fe,t.substr(fe,6)===Jt?(e=Jt,fe+=6):(e=n,0===de&&ye(Gt)),e!==n&&(s=sn())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===Ht?(e=Ht,fe+=6):(e=n,0===de&&ye(Kt)),e!==n?(s=function(){var t,r,e,s,u,a;t=fe,(r=gn())!==n&&(e=bn())!==n&&(s=Oe())!==n&&(u=bn())!==n&&(a=vn())!==n?t=r=[r,e,s,u,a]:(fe=t,t=n);return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===Qt?(e=Qt,fe+=6):(e=n,0===de&&ye(Vt)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=qe())!==n){if(u=[],a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=qe())!==n?a=c=[c,o,i,f]:(fe=a,a=n),a!==n)for(;a!==n;)u.push(a),a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=qe())!==n?a=c=[c,o,i,f]:(fe=a,a=n);else u=n;u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===Wt?(e=Wt,fe+=7):(e=n,0===de&&ye(Xt)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=un())!==n){for(u=[],a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=un())!==n?a=c=[c,o,i,f]:(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=un())!==n?a=c=[c,o,i,f]:(fe=a,a=n);u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,13)===Yt?(e=Yt,fe+=13):(e=n,0===de&&ye(tr)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,9)===rr?(e=rr,fe+=9):(e=n,0===de&&ye(er)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,10)===nr?(e=nr,fe+=10):(e=n,0===de&&ye(sr)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===ur?(e=ur,fe+=6):(e=n,0===de&&ye(ar)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=function(){var r;t.substr(fe,8)===xr?(r=xr,fe+=8):(r=n,0===de&&ye(Cr));return r}())))))))))))),r}function We(){var r,e,s,u,a;return r=fe,e=fe,t.substr(fe,6)===f?(s=f,fe+=6):(s=n,0===de&&ye(l)),s!==n&&(u=rn())!==n?(le=e,e=s={func:"count",args:["*"],as:u}):(fe=e,e=n),e===n&&(e=Xe()),e!==n&&(le=r,a=e,En.columns=Array.isArray(En.columns)?En.columns:[],En.columns.find(Bn(a))||En.columns.push(a),e=a),r=e}function Xe(){var t,r,e,s,u;return t=fe,(r=De())!==n&&(e=Ye())!==n?((s=tn())===n&&(s=null),s!==n&&(u=rn())!==n?(le=t,t=r={func:e,args:[r],as:u}):(fe=t,t=n)):(fe=t,t=n),t===n&&(t=fe,(r=pn())!==n&&(e=gn())!==n&&(s=Xe())!==n&&(u=vn())!==n?t=r=[r,e,s,u]:(fe=t,t=n)),t}function Ye(){var r,e,s,u,a;if(r=fe,mn()!==n)if(t.substr(fe,4)===cr?(e=cr,fe+=4):(e=n,0===de&&ye(or)),e!==n)if(mn()!==n){if(s=fe,u=[],St.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(zt)),a!==n)for(;a!==n;)u.push(a),St.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(zt));else u=n;(s=u!==n?t.substring(s,fe):u)!==n?(le=r,r=s):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;return r}function tn(){var r,e,s,u,a,c,o;return r=fe,(e=mn())!==n?(t.substr(fe,4)===ir?(s=ir,fe+=4):(s=n,0===de&&ye(fr)),s!==n&&(u=mn())!==n&&(a=De())!==n&&(c=Ye())!==n?((o=tn())===n&&(o=null),o!==n?r=e=[e,s,u,a,c,o]:(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n),r}function rn(){var r,e,s;return r=fe,mn()!==n?("as"===t.substr(fe,2)?(e="as",fe+=2):(e=n,0===de&&ye(lr)),e!==n&&mn()!==n&&(s=pn())!==n?(le=r,r=s):(fe=r,r=n)):(fe=r,r=n),r}function en(){var r,e,s;return r=fe,e=function(){var r,e,s,u,a,c,o,i,f,l,h;r=fe,e=fe,t.substr(fe,6)===hr?(s=hr,fe+=6):(s=n,0===de&&ye(pr));if(s!==n)if((u=gn())!==n)if((a=bn())!==n)if(t.substr(fe,4)===Ar?(c=Ar,fe+=4):(c=n,0===de&&ye(dr)),c===n&&(c=De()),c!==n){if(o=[],i=fe,(f=bn())!==n&&(l=dn())!==n&&(h=De())!==n?i=f=[f,l,h]:(fe=i,i=n),i!==n)for(;i!==n;)o.push(i),i=fe,(f=bn())!==n&&(l=dn())!==n&&(h=De())!==n?i=f=[f,l,h]:(fe=i,i=n);else o=n;o!==n&&(i=bn())!==n&&(f=vn())!==n?e=s=[s,u,a,c,o,i,f]:(fe=e,e=n)}else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;e!==n&&(le=r,e=function(t){const r=new Error("Rollup in groupby is not supported yet.");throw r.statusCode=501,r}());return r=e}(),e===n&&(e=De()),e!==n&&(le=r,s=e,e=void(En.groupBy||(En.groupBy=[])).push(s)),r=e}function nn(){var t,r,e,s,u,a;return t=fe,(r=gn())!==n&&(e=bn())!==n&&(s=Re())!==n&&(u=bn())!==n&&(a=vn())!==n?t=r=[r,e,s,u,a]:(fe=t,t=n),t}function sn(){var t,r,e,s,u,a,c,o,i,f,l,h,p,A;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=De())!==n)if((u=bn())!==n)if((a=dn())!==n)if((c=bn())!==n){if(o=fe,(i=sn())!==n){for(f=[],l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);l!==n;)f.push(l),l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);f!==n?o=i=[i,f]:(fe=o,o=n)}else fe=o,o=n;if(o===n)if(o=fe,(i=nn())!==n){for(f=[],l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);l!==n;)f.push(l),l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);f!==n?o=i=[i,f]:(fe=o,o=n)}else fe=o,o=n;o!==n&&(i=bn())!==n&&(f=vn())!==n?t=r=[r,e,s,u,a,c,o,i,f]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}function un(){var t,r,e;return t=fe,(r=Fe())!==n&&(e=rn())!==n?t=r=[r,e]:(fe=t,t=n),t}function an(){var t,r,e,s,u,a,c,o,i,f;return t=fe,(r=gn())!==n&&(e=bn())!==n&&(s=_e())!==n&&(u=bn())!==n&&(a=dn())!==n&&(c=bn())!==n&&(o=_e())!==n&&(i=bn())!==n&&(f=vn())!==n?t=r=[r,e,s,u,a,c,o,i,f]:(fe=t,t=n),t}function cn(){var r,e;return r=fe,t.substr(fe,4)===yr?(e=yr,fe+=4):(e=n,0===de&&ye($r)),e===n&&(t.substr(fe,5)===wr?(e=wr,fe+=5):(e=n,0===de&&ye(Er))),e!==n&&(le=r,e="true"===e),r=e}function on(){var r,e,s,u,a;if(de++,r=fe,39===t.charCodeAt(fe)?(e="'",fe++):(e=n,0===de&&ye(zr)),e!==n){for(s=fe,u=[],t.substr(fe,2)===Zr?(a=Zr,fe+=2):(a=n,0===de&&ye(jr)),a===n&&(Or.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(Br)));a!==n;)u.push(a),t.substr(fe,2)===Zr?(a=Zr,fe+=2):(a=n,0===de&&ye(jr)),a===n&&(Or.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(Br)));(s=u!==n?t.substring(s,fe):u)!==n?(39===t.charCodeAt(fe)?(u="'",fe++):(u=n,0===de&&ye(zr)),u!==n?(le=r,r=e=s.replace(/''/g,"'")):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return de--,r===n&&(e=n,0===de&&ye(Sr)),r}function fn(){var r,e,s;if(r=fe,e=[],qr.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(Ir)),s!==n)for(;s!==n;)e.push(s),qr.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(Ir));else e=n;return r=e!==n?t.substring(r,fe):e}function ln(){var r,e,s,u,a,c,o,i,f,l;if(r=fe,e=fe,s=fe,Kr.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Qr)),u===n&&(u=null),u!==n){if(a=[],_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr)),c!==n)for(;c!==n;)a.push(c),_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr));else a=n;if(a!==n){if(c=fe,46===t.charCodeAt(fe)?(o=".",fe++):(o=n,0===de&&ye(Jr)),o!==n){if(i=[],_r.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(Dr)),f!==n)for(;f!==n;)i.push(f),_r.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(Dr));else i=n;i!==n?c=o=[o,i]:(fe=c,c=n)}else fe=c,c=n;if(c===n&&(c=null),c!==n){if(o=fe,101===t.charCodeAt(fe)?(i="e",fe++):(i=n,0===de&&ye(Vr)),i!==n){if(f=[],_r.test(t.charAt(fe))?(l=t.charAt(fe),fe++):(l=n,0===de&&ye(Dr)),l!==n)for(;l!==n;)f.push(l),_r.test(t.charAt(fe))?(l=t.charAt(fe),fe++):(l=n,0===de&&ye(Dr));else f=n;f!==n?o=i=[i,f]:(fe=o,o=n)}else fe=o,o=n;o===n&&(o=null),o!==n?s=u=[u,a,c,o]:(fe=s,s=n)}else fe=s,s=n}else fe=s,s=n}else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=Zn(e)),r=e}function hn(){var r,e,s,u,a,c;if(r=fe,e=fe,s=fe,Kr.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Qr)),u===n&&(u=null),u!==n){if(a=[],_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr)),c!==n)for(;c!==n;)a.push(c),_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr));else a=n;a!==n?s=u=[u,a]:(fe=s,s=n)}else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=parseInt(e)),r=e}function pn(){var r,e,s,u,a,c,o,i;if(r=fe,e=fe,de++,s=cn(),de--,s===n?e=void 0:(fe=e,e=n),e!==n)if(s=fe,de++,u=An(),de--,u===n?s=void 0:(fe=s,s=n),s!==n){if(u=fe,a=fe,Wr.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Xr)),c!==n){for(o=[],Yr.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(te));i!==n;)o.push(i),Yr.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(te));o!==n?a=c=[c,o]:(fe=a,a=n)}else fe=a,a=n;(u=a!==n?t.substring(u,fe):a)!==n?(le=r,r=e=u):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function An(){var r,e,s,u,a,c,o,i,f;if(r=fe,e=fe,s=fe,u=[],re.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(ee)),a!==n)for(;a!==n;)u.push(a),re.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(ee));else u=n;if(u!==n)if(45===t.charCodeAt(fe)?(a=Ur,fe++):(a=n,0===de&&ye(Mr)),a!==n){if(c=[],o=fe,i=[],re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee)),f!==n)for(;f!==n;)i.push(f),re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee));else i=n;if(i!==n?(45===t.charCodeAt(fe)?(f=Ur,fe++):(f=n,0===de&&ye(Mr)),f===n&&(f=null),f!==n?o=i=[i,f]:(fe=o,o=n)):(fe=o,o=n),o!==n)for(;o!==n;){if(c.push(o),o=fe,i=[],re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee)),f!==n)for(;f!==n;)i.push(f),re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee));else i=n;i!==n?(45===t.charCodeAt(fe)?(f=Ur,fe++):(f=n,0===de&&ye(Mr)),f===n&&(f=null),f!==n?o=i=[i,f]:(fe=o,o=n)):(fe=o,o=n)}else c=n;c!==n?s=u=[u,a,c]:(fe=s,s=n)}else fe=s,s=n;else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=At(e)),r=e}function dn(){var r,e,s,u;return r=fe,(e=bn())!==n?(44===t.charCodeAt(fe)?(s=",",fe++):(s=n,0===de&&ye(ne)),s!==n&&(u=bn())!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r}function gn(){var r,e,s,u;return r=fe,(e=bn())!==n?(40===t.charCodeAt(fe)?(s="(",fe++):(s=n,0===de&&ye(se)),s!==n&&(u=bn())!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r}function vn(){var r,e,s;return r=fe,(e=bn())!==n?(41===t.charCodeAt(fe)?(s=")",fe++):(s=n,0===de&&ye(ue)),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r}function bn(){var r,e,s;for(de++,r=fe,e=[],ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe));s!==n;)e.push(s),ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe));return r=e!==n?t.substring(r,fe):e,de--,r===n&&(e=n,0===de&&ye(ae)),r}function mn(){var r,e,s;if(de++,r=fe,e=[],ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe)),s!==n)for(;s!==n;)e.push(s),ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe));else e=n;return r=e!==n?t.substring(r,fe):e,de--,r===n&&(e=n,0===de&&ye(ie)),r}const xn=(t,r=400)=>{ge(JSON.stringify({code:r,message:t}))},Cn=Object.assign,{strict:yn,minimal:$n}=r,wn=[];let En,Sn;const zn=["$value"],Zn=r.safeNumber||function(t){const r=Number(t);return Number.isSafeInteger(r)?r:t},jn=(t,r)=>{const e=[...t];for(const t of e)t.xpr&&(t.xpr=jn(t.xpr,r)),t.args&&(t.args=jn(t.args,r)),t.ref&&r.includes(t.ref.join(""));return e},On=t=>{const r=t.groupBy,e=t.where,n=t.columns||[],s=n.filter((t=>t.as));let u=[],a=[];if(0!==s.length&&(u=n.filter((t=>!t.ref||s.includes(t.ref.join(""))))),r){const t=r.map((({ref:t})=>t&&t.join(""))),e=n.filter((r=>r.ref&&t.includes(r.ref.join(""))));a=0===e.length?[...r]:e}const c=0!==u.length||0!==a.length?[...a,...u]:t.columns;let o={...t};c&&(o.columns=c);if(e&&(r||0!==s.length)){const t=n.map((t=>t.ref&&t.ref.join("")||t.as));o={...o,where:jn(e,t)}}return o},Bn=t=>r=>t===r||t.as&&r.as&&t.as===r.as||t.ref&&r.ref&&t.ref.join("")===r.ref.join("");if((e=u())!==n&&fe===t.length)return e;throw e!==n&&fe<t.length&&ye({type:"end"}),$e(Ae,pe<t.length?t.charAt(pe):null,pe<t.length?Ce(pe,pe+1):Ce(pe,pe))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(t,r){var e={literal:function(t){return'"'+s(t.text)+'"'},class:function(t){var r,e="";for(r=0;r<t.parts.length;r++)e+=t.parts[r]instanceof Array?u(t.parts[r][0])+"-"+u(t.parts[r][1]):u(t.parts[r]);return"["+(t.inverted?"^":"")+e+"]"},any:function(t){return"any character"},end:function(t){return"end of input"},other:function(t){return t.description}};function n(t){return t.charCodeAt(0).toString(16).toUpperCase()}function s(t){return t.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(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}function u(t){return t.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(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}return"Expected "+function(t){var r,n,s,u=new Array(t.length);for(r=0;r<t.length;r++)u[r]=(s=t[r],e[s.type](s));if(u.sort(),u.length>0){for(r=1,n=1;r<u.length;r++)u[r-1]!==u[r]&&(u[n]=u[r],n++);u.length=n}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}(t)+" but "+function(t){return t?'"'+s(t)+'"':"end of input"}(r)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
1
+ "use strict";function peg$subclass(t,r){function e(){this.constructor=t}e.prototype=r.prototype,t.prototype=new e}function peg$SyntaxError(t,r,e,n){this.message=t,this.expected=r,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(t,r){r=void 0!==r?r:{};var e,n={},s={ODataRelativeURI:Ze},u=Ze,a="/",o=ye("/",!1),c=ye("?",!1),i=ye("&",!1),f="$count",l=ye("$count",!1),h="$ref",p=ye("$ref",!1),A="$value",d=ye("$value",!1),v=ye("=",!1),g="$select=",b=ye("$select=",!1),m="$expand=",x=ye("$expand=",!1),y="$filter=",C=ye("$filter=",!1),$="$orderby=",w=ye("$orderby=",!1),E="$top=",S=ye("$top=",!1),z="$skip=",Z=ye("$skip=",!1),j="$skiptoken=",O=ye("$skiptoken=",!1),B="$search=",k=ye("$search=",!1),R="$count=",F=ye("$count=",!1),T="$apply=",L=ye("$apply=",!1),N=ye("*",!1),_=ye(";",!1),q=function(t){return t?[t]:[]},I=function(t,r){t.push({xpr:r})},D=function(t,r){t.push({val:r})},U=function(t,r,e){t.push(r,...e)},M=function(t,r){t.push(r)},P=function(t,r,e){t.push(r,...e)},J=":",G=ye(":",!1),H="any",K=ye("any",!1),Q="all",V=ye("all",!1),W=ye("asc",!1),X="desc",Y=ye("desc",!1),tt=/^[a-zA-Z]/,rt=Ce([["a","z"],["A","Z"]],!1,!1),et=/^[a-zA-Z0-9\-]/,nt=Ce([["a","z"],["A","Z"],["0","9"],"-"],!1,!1),st=/^[^&]/,ut=Ce(["&"],!0,!1),at=$e("a comparison"),ot=ye("eq",!1),ct=ye("ne",!1),it=ye("lt",!1),ft=ye("gt",!1),lt=ye("le",!1),ht=ye("ge",!1),pt=(ye("add",!1),ye("sub",!1),ye("mul",!1),ye("div",!1),ye("mod",!1),$e("an operand")),At=$e("a reference"),dt=function(t,r){return r},vt=function(t){return{val:t}},gt=ye("{",!1),bt=/^[^}]/,mt=Ce(["}"],!0,!1),xt=ye("}",!1),yt="[",Ct=ye("[",!1),$t="]",wt=ye("]",!1),Et=/^[^\]]/,St=Ce(["]"],!0,!1),zt=$e("a function call"),Zt=/^[a-z]/,jt=Ce([["a","z"]],!1,!1),Ot=function(t,r,e){return e},Bt=$e("a boolean function"),kt="contains",Rt=ye("contains",!1),Ft="endswith",Tt=ye("endswith",!1),Lt="startswith",Nt=ye("startswith",!1),_t=ye("NOT",!0),qt=ye("AND",!0),It=ye("OR",!0),Dt="aggregate",Ut=ye("aggregate",!1),Mt="groupby",Pt=ye("groupby",!1),Jt="filter",Gt=ye("filter",!1),Ht="expand",Kt=ye("expand",!1),Qt="search",Vt=ye("search",!1),Wt="concat",Xt=ye("concat",!1),Yt="compute",tr=ye("compute",!1),rr="bottompercent",er=ye("bottompercent",!1),nr="bottomsum",sr=ye("bottomsum",!1),ur="toppercent",ar=ye("toppercent",!1),or="topsum",cr=ye("topsum",!1),ir="with",fr=ye("with",!1),lr="from",hr=ye("from",!1),pr=ye("as",!1),Ar="rollup",dr=ye("rollup",!1),vr="$all",gr=ye("$all",!1),br="topcount",mr=ye("topcount",!1),xr="bottomcount",yr=ye("bottomcount",!1),Cr="identity",$r=ye("identity",!1),wr="true",Er=ye("true",!1),Sr="false",zr=ye("false",!1),Zr=$e("Edm.String"),jr=ye("'",!1),Or="''",Br=ye("''",!1),kr=/^[^']/,Rr=Ce(["'"],!0,!1),Fr='"',Tr=ye('"',!1),Lr='\\"',Nr=ye('\\"',!1),_r=/^[^"]/,qr=Ce(['"'],!0,!1),Ir=/^[a-zA-Z0-9.+\-]/,Dr=Ce([["a","z"],["A","Z"],["0","9"],".","+","-"],!1,!1),Ur=/^[0-9]/,Mr=Ce([["0","9"]],!1,!1),Pr="-",Jr=ye("-",!1),Gr=ye("T",!1),Hr=ye(".",!1),Kr=ye("Z",!1),Qr=ye("+",!1),Vr=/^[+\-]/,Wr=Ce(["+","-"],!1,!1),Xr=ye("e",!1),Yr=/^[_a-zA-Z]/,te=Ce(["_",["a","z"],["A","Z"]],!1,!1),re=/^[_a-zA-Z0-9"."]/,ee=Ce(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),ne=/^[0-9a-zA-Z]/,se=Ce([["0","9"],["a","z"],["A","Z"]],!1,!1),ue=/^[a-zA-Z0-9\-"."_~!$&'()*+,;=:@]/,ae=Ce([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","&","'","(",")","*","+",",",";","=",":","@"],!1,!1),oe=ye(",",!1),ce=ye("(",!1),ie=ye(")",!1),fe=$e("optional whitespaces"),le=/^[ \t\n]/,he=Ce([" ","\t","\n"],!1,!1),pe=$e("mandatory whitespaces"),Ae=0,de=0,ve=[{line:1,column:1}],ge=0,be=[],me=0;if("startRule"in r){if(!(r.startRule in s))throw new Error("Can't start parsing from rule \""+r.startRule+'".');u=s[r.startRule]}function xe(t,r){throw function(t,r){return new peg$SyntaxError(t,null,null,r)}(t,r=void 0!==r?r:Ee(de,Ae))}function ye(t,r){return{type:"literal",text:t,ignoreCase:r}}function Ce(t,r,e){return{type:"class",parts:t,inverted:r,ignoreCase:e}}function $e(t){return{type:"other",description:t}}function we(r){var e,n=ve[r];if(n)return n;for(e=r-1;!ve[e];)e--;for(n={line:(n=ve[e]).line,column:n.column};e<r;)10===t.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return ve[r]=n,n}function Ee(t,r){var e=we(t),n=we(r);return{start:{offset:t,line:e.line,column:e.column},end:{offset:r,line:n.line,column:n.column}}}function Se(t){Ae<ge||(Ae>ge&&(ge=Ae,be=[]),be.push(t))}function ze(t,r,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(t,r),t,r,e)}function Ze(){var r,e,s,u,f,l,h,p,A,d,v,g,b,m;if(r=Ae,47===t.charCodeAt(Ae)?(e=a,Ae++):(e=n,0===me&&Se(o)),e===n&&(e=null),e!==n)if(s=Ae,(u=je())!==n&&(de=s,u=void(On=u)),(s=u)!==n){if(u=Ae,(f=$n())!==n)if(63===t.charCodeAt(Ae)?(l="?",Ae++):(l=n,0===me&&Se(c)),l!==n)if((h=$n())!==n)if((p=Be())!==n){for(A=[],d=Ae,(v=$n())!==n?(38===t.charCodeAt(Ae)?(g="&",Ae++):(g=n,0===me&&Se(i)),g!==n&&(b=$n())!==n&&(m=Be())!==n?d=v=[v,g,b,m]:(Ae=d,d=n)):(Ae=d,d=n);d!==n;)A.push(d),d=Ae,(v=$n())!==n?(38===t.charCodeAt(Ae)?(g="&",Ae++):(g=n,0===me&&Se(i)),g!==n&&(b=$n())!==n&&(m=Be())!==n?d=v=[v,g,b,m]:(Ae=d,d=n)):(Ae=d,d=n);A!==n?u=f=[f,l,h,p,A]:(Ae=u,u=n)}else Ae=u,u=n;else Ae=u,u=n;else Ae=u,u=n;else Ae=u,u=n;u===n&&(u=null),u!==n&&(f=$n())!==n?(de=r,r=e=function(){if(Bn)return On.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete On.expand,delete On.limit,delete On.orderBy,{SELECT:On};if(On.expand){On.columns||(On.columns=["*"]);for(const t of On.expand){const r=On.columns.findIndex(Ln(t));r>-1&&On.columns.splice(r,1),On.columns.push(t)}delete On.expand}return On=Tn(On),{SELECT:On}}()):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function je(){var r,e,s,u,c,i,v,g;return r=Ae,t.substr(Ae,6)===f?(e=f,Ae+=6):(e=n,0===me&&Se(l)),e!==n&&(de=r,e=void(Bn=!0)),(r=e)===n&&(r=Ae,e=Ae,t.substr(Ae,4)===h?(s=h,Ae+=4):(s=n,0===me&&Se(p)),s===n&&(t.substr(Ae,6)===A?(s=A,Ae+=6):(s=n,0===me&&Se(d))),(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,g=e,e=!kn.includes(g)&&{from:{ref:[g]}}),(r=e)===n&&(r=Ae,(e=bn())===n&&(e=He()),e===n&&(e=null),e!==n?(s=Ae,(u=yn())!==n&&(c=Cn())!==n?s=u=[u,c]:(Ae=s,s=n),s===n&&(s=Ae,(u=yn())!==n&&(c=Oe())!==n&&(i=Cn())!==n?s=u=[u,c,i]:(Ae=s,s=n)),s===n&&(s=null),s!==n?(u=function(){var r,e,s;r=Ae,e=[],ue.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(ae));if(s!==n)for(;s!==n;)e.push(s),ue.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(ae));else e=n;r=e!==n?t.substring(r,Ae):e;return r}(),u===n&&(u=null),u!==n?(c=Ae,47===t.charCodeAt(Ae)?(i=a,Ae++):(i=n,0===me&&Se(o)),i!==n&&(v=je())!==n?(de=c,c=i=v):(Ae=c,c=n),c===n&&(c=null),c!==n?(de=r,r=e=function(t,r,e,n){e&&([t,r,e]=Nn(t,r,e));const s=[r?r.length>2?{id:t,where:r[1].map((t=>t.val&&t.val.match&&t.val.match(/^"(.*)"$/)?{val:t.val.match(/^"(.*)"$/)[1]}:t))}:{id:t,where:[]}:Zn?`${Object.prototype.hasOwnProperty.call(t,"val")?t.val:t}`:t];if(n&&n.from){const t=n.from.ref;Object.prototype.hasOwnProperty.call(t[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[t.shift()]}),s.push(...t)}const u={from:{ref:s}};return n&&n.columns&&(u.columns=n.columns),u}(e,s,u,c)):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n))),r}function Oe(){var r,e,s,u,a,o,c;return r=Ae,(e=He())!==n&&(de=r,e=[e]),(r=e)===n&&(r=Ae,(e=Ge())!==n&&$n()!==n?(61===t.charCodeAt(Ae)?(s="=",Ae++):(s=n,0===me&&Se(v)),s!==n&&$n()!==n?((u=He())===n&&(u=Ae,(a=dn())!==n&&(de=u,a={val:a}),u=a),u!==n?(a=Ae,(o=xn())!==n&&(c=Oe())!==n?a=o=[o,c]:(Ae=a,a=n),a===n&&(a=null),a!==n?(de=r,e=function(t,r,e){const n=[t,"=",r];return e&&n.push("and",...e[1]),n}(e,u,a),r=e):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n)),r}function Be(){var r,e,s,u,a,o,c,i;if(r=Ae,t.substr(Ae,8)===g?(e=g,Ae+=8):(e=n,0===me&&Se(b)),e!==n)if((s=$n())!==n)if((u=ke())!==n){for(a=[],o=Ae,(c=xn())!==n&&(i=ke())!==n?o=c=[c,i]:(Ae=o,o=n);o!==n;)a.push(o),o=Ae,(c=xn())!==n&&(i=ke())!==n?o=c=[c,i]:(Ae=o,o=n);a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;if(r===n){if(r=Ae,t.substr(Ae,8)===m?(e=m,Ae+=8):(e=n,0===me&&Se(x)),e!==n)if((s=$n())!==n)if((u=Re())!==n){for(a=[],o=Ae,(c=xn())!==n&&(i=Re())!==n?o=c=[c,i]:(Ae=o,o=n);o!==n;)a.push(o),o=Ae,(c=xn())!==n&&(i=Re())!==n?o=c=[c,i]:(Ae=o,o=n);a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;if(r===n&&(r=Ae,t.substr(Ae,8)===y?(e=y,Ae+=8):(e=n,0===me&&Se(C)),e!==n&&(s=$n())!==n&&(u=Ne())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n)){if(r=Ae,t.substr(Ae,9)===$?(e=$,Ae+=9):(e=n,0===me&&Se(w)),e!==n)if((s=$n())!==n)if((u=Ue())!==n){for(a=[],o=Ae,(c=xn())!==n&&(i=Ue())!==n?o=c=[c,i]:(Ae=o,o=n);o!==n;)a.push(o),o=Ae,(c=xn())!==n&&(i=Ue())!==n?o=c=[c,i]:(Ae=o,o=n);a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;r===n&&(r=Ae,t.substr(Ae,5)===E?(e=E,Ae+=5):(e=n,0===me&&Se(S)),e!==n&&(s=$n())!==n?(u=function(){var t,r;t=Ae,(r=gn())!==n&&(de=t,e=r,r=void((On.limit||(On.limit={})).rows={val:e}));var e;return t=r}(),u!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===z?(e=z,Ae+=6):(e=n,0===me&&Se(Z)),e!==n&&(s=$n())!==n&&(u=Fe())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,11)===j?(e=j,Ae+=11):(e=n,0===me&&Se(O)),e!==n&&(s=$n())!==n&&(u=Fe())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,8)===B?(e=B,Ae+=8):(e=n,0===me&&Se(k)),e!==n&&(s=$n())!==n&&(u=Te())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===R?(e=R,Ae+=7):(e=n,0===me&&Se(F)),e!==n&&(s=$n())!==n?(u=function(){var t,r;t=Ae,(r=pn())!==n&&(de=t,r=void(r&&(On.count=!0)));return t=r}(),u!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===T?(e=T,Ae+=7):(e=n,0===me&&Se(L)),e!==n&&(s=$n())!==n&&(u=Me())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=function(){var r,e,s,u,a,o;r=Ae,tt.test(t.charAt(Ae))?(e=t.charAt(Ae),Ae++):(e=n,0===me&&Se(rt));if(e!==n){for(s=[],et.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(nt));u!==n;)s.push(u),et.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(nt));if(s!==n)if(61===t.charCodeAt(Ae)?(u="=",Ae++):(u=n,0===me&&Se(v)),u!==n){for(a=[],st.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(ut));o!==n;)a.push(o),st.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(ut));a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n}else Ae=r,r=n;return r}())))))))}}return r}function ke(){var r,e,s;return r=Ae,42===t.charCodeAt(Ae)?(e="*",Ae++):(e=n,0===me&&Se(N)),e===n&&(e=Ge()),e!==n&&(de=r,s=e,On.columns=Array.isArray(On.columns)?On.columns:[],On.columns.find(Ln(s))||On.columns.push(s),e=s),r=e}function Re(){var r,e,s,u,a,o,c,i,f,l,h;if(r=Ae,e=Ae,42===t.charCodeAt(Ae)?(s="*",Ae++):(s=n,0===me&&Se(N)),s===n&&(s=Ge()),s!==n&&(de=e,s=function(t){const r="*"===t?{}:t;return r.expand="*",Array.isArray(On.expand)||(On.expand=[]),On.expand.find(Ln(r))||On.expand.push(r),r}(s)),(e=s)!==n){if(s=Ae,u=Ae,(a=yn())!==n&&(de=u,jn.push(On),On=On.expand[On.expand.length-1],a=void(On.expand="*")),(u=a)!==n){for(a=Ae,o=[],c=Ae,(i=$n())!==n?(59===t.charCodeAt(Ae)?(f=";",Ae++):(f=n,0===me&&Se(_)),f===n&&(f=null),f!==n&&(l=$n())!==n&&(h=Be())!==n?c=i=[i,f,l,h]:(Ae=c,c=n)):(Ae=c,c=n);c!==n;)o.push(c),c=Ae,(i=$n())!==n?(59===t.charCodeAt(Ae)?(f=";",Ae++):(f=n,0===me&&Se(_)),f===n&&(f=null),f!==n&&(l=$n())!==n&&(h=Be())!==n?c=i=[i,f,l,h]:(Ae=c,c=n)):(Ae=c,c=n);o!==n&&(de=a,o=function(t){if(On.columns){"*"===On.expand&&(On.expand=[]);for(const t of On.columns)On.expand.find(Ln(t))||On.expand.push(t);delete On.columns}else Array.isArray(On.expand)&&-1===On.expand.indexOf("*")&&On.expand.unshift("*")}()),(a=o)!==n?(o=Ae,(c=Cn())!==n&&(de=o,c=void(On=jn.pop())),(o=c)!==n?s=u=[u,a,o]:(Ae=s,s=n)):(Ae=s,s=n)}else Ae=s,s=n;s===n&&(s=null),s!==n?(u=Ae,(a=xn())!==n&&(o=Re())!==n?u=a=[a,o]:(Ae=u,u=n),u===n&&(u=null),u!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return r}function Fe(){var t,r,e;return t=Ae,(r=gn())!==n&&(de=t,e=r,On.limit&&On.limit.offset&&On.limit.offset.val&&(e+=On.limit.offset.val),r=void((On.limit||(On.limit={})).offset={val:e})),t=r}function Te(){var t,r,e;return t=Ae,(r=Le())!==n&&(de=t,e=r,r=void(On.search=e)),t=r}function Le(){var r,e,s,u,a,o,c;if(r=Ae,e=Ae,(s=We())===n&&(s=null),s!==n&&(de=e,s=q(s)),(e=s)!==n)if(s=Ae,(u=yn())!==n&&(a=Le())!==n&&(o=Cn())!==n?(de=s,s=u=I(e,a)):(Ae=s,s=n),s===n&&(s=Ae,u=function(){var r,e,s,u,a;r=Ae,34===t.charCodeAt(Ae)?(e=Fr,Ae++):(e=n,0===me&&Se(Tr));if(e!==n){for(s=Ae,u=[],t.substr(Ae,2)===Lr?(a=Lr,Ae+=2):(a=n,0===me&&Se(Nr)),a===n&&(_r.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(qr)));a!==n;)u.push(a),t.substr(Ae,2)===Lr?(a=Lr,Ae+=2):(a=n,0===me&&Se(Nr)),a===n&&(_r.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(qr)));(s=u!==n?t.substring(s,Ae):u)!==n?(34===t.charCodeAt(Ae)?(u=Fr,Ae++):(u=n,0===me&&Se(Tr)),u!==n?(de=r,r=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return r}(),u!==n&&(de=s,u=D(e,u)),(s=u)===n&&(s=Ae,(u=An())!==n&&(de=s,u=D(e,u)),(s=u)===n&&(s=Ae,(u=dn())!==n&&(de=s,u=D(e,u)),s=u))),s!==n){for(u=[],a=Ae,(o=Xe())===n&&(o=tn())===n&&(o=Ye()),o!==n&&(c=Le())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=Xe())===n&&(o=tn())===n&&(o=Ye()),o!==n&&(c=Le())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);u!==n?(de=r,r=e=e):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function Ne(){var t,r,e;return t=Ae,(r=_e())!==n&&(de=t,e=r,r=void(On.where=e)),t=r}function _e(){var r,e,s,u,a,o,c,i;if(r=Ae,e=Ae,(s=We())===n&&(s=null),s!==n&&(de=e,s=q(s)),(e=s)!==n)if(s=Ae,(u=yn())!==n&&(a=_e())!==n&&(o=Cn())!==n?(de=s,s=u=I(e,a)):(Ae=s,s=n),s===n&&(s=Ae,(u=Pe())!==n&&(de=s,i=u,u=void e.push(...i)),(s=u)===n&&(s=Ae,(u=qe())!==n&&(de=s,u=function(t,r){t.push(...r)}(e,u)),(s=u)===n&&(s=Ae,u=function(){var r,e,s,u;me++,r=Ae,t.substr(Ae,8)===kt?(e=kt,Ae+=8):(e=n,0===me&&Se(Rt));e===n&&(t.substr(Ae,8)===Ft?(e=Ft,Ae+=8):(e=n,0===me&&Se(Tt)),e===n&&(t.substr(Ae,10)===Lt?(e=Lt,Ae+=10):(e=n,0===me&&Se(Nt))));e!==n&&yn()!==n&&(s=Je())!==n&&xn()!==n&&(u=Je())!==n&&Cn()!==n?(de=r,r=e={func:e,args:[s,u]}):(Ae=r,r=n);me--,r===n&&(e=n,0===me&&Se(Bt));return r}(),u!==n&&(de=s,u=function(t,r){t.push(r)}(e,u)),(s=u)===n&&(s=Ae,(u=pn())!==n&&(de=s,u=D(e,u)),s=u)))),s!==n){for(u=[],a=Ae,(o=Xe())===n&&(o=tn()),o!==n&&(c=_e())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=Xe())===n&&(o=tn()),o!==n&&(c=_e())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);u!==n?(de=r,r=e=e):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function qe(){var r,e,s,u,c,i,f;if(r=Ae,e=Ae,(s=bn())!==n&&(de=e,s=[s]),(e=s)!==n)if(47===t.charCodeAt(Ae)?(s=a,Ae++):(s=n,0===me&&Se(o)),s!==n){for(u=[],c=Ae,(i=bn())!==n?(47===t.charCodeAt(Ae)?(f=a,Ae++):(f=n,0===me&&Se(o)),f!==n?(de=c,c=i=M(e,i)):(Ae=c,c=n)):(Ae=c,c=n);c!==n;)u.push(c),c=Ae,(i=bn())!==n?(47===t.charCodeAt(Ae)?(f=a,Ae++):(f=n,0===me&&Se(o)),f!==n?(de=c,c=i=M(e,i)):(Ae=c,c=n)):(Ae=c,c=n);u!==n?(c=Ae,i=function(){var r,e,s;r=Ae,t.substr(Ae,3)===H?(e=H,Ae+=3):(e=n,0===me&&Se(K));e!==n&&yn()!==n?((s=De())===n&&(s=null),s!==n&&Cn()!==n?(de=r,r=e=s):(Ae=r,r=n)):(Ae=r,r=n);return r}(),i!==n&&(de=c,i=function(t,r){let e=t.pop();if(!r)return["exists",{ref:[...t,{id:e}]}];let n=[];for(let t=0,s=0;t<r.length;++t){let u=r[t];u.ref&&0===u.ref.length&&"="===r[t+1]?n[s++]={func:"contains",args:[{ref:e},r[t+=2]]}:n[s++]=u}return n.length<r.length?(e=t.pop(),["exists",{ref:[...t,{id:e,where:n}]}]):["exists",{ref:[...t,{id:e,where:r}]}]}(e,i)),(c=i)===n&&(c=Ae,i=function(){var r,e,s;r=Ae,t.substr(Ae,3)===Q?(e=Q,Ae+=3):(e=n,0===me&&Se(V));e!==n&&yn()!==n&&(s=De())!==n&&Cn()!==n?(de=r,r=e=s):(Ae=r,r=n);return r}(),i!==n&&(de=c,i=function(t,r){let e=t.pop();return["not","exists",{ref:[...t,{id:e,where:["not",{xpr:[...r]}]}]}]}(e,i)),c=i),c!==n?(de=r,r=e=c):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function Ie(){var t,r,e,s,u,a,o,c,i;if(t=Ae,r=Ae,(e=We())===n&&(e=null),e!==n&&(de=r,e=(c=e)?[c]:[]),(r=e)!==n)if(e=Ae,(s=yn())!==n&&(u=Ie())!==n&&(a=Cn())!==n?(de=e,i=u,e=s=void r.push("(",...i,")")):(Ae=e,e=n),e===n&&(e=Ae,(s=Pe())!==n&&(de=e,s=function(t,r){t.push(...r)}(r,s)),(e=s)===n&&(e=Ae,(s=qe())!==n&&(de=e,s=function(t,r){t.push(...r)}(r,s)),e=s)),e!==n){for(s=[],u=Ae,(a=Xe())===n&&(a=tn()),a!==n&&(o=Ie())!==n?(de=u,u=a=P(r,a,o)):(Ae=u,u=n);u!==n;)s.push(u),u=Ae,(a=Xe())===n&&(a=tn()),a!==n&&(o=Ie())!==n?(de=u,u=a=P(r,a,o)):(Ae=u,u=n);s!==n?(de=t,t=r=r):(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;return t}function De(){var r,e,s,u;return r=Ae,(e=bn())!==n?(58===t.charCodeAt(Ae)?(s=J,Ae++):(s=n,0===me&&Se(G)),s!==n&&(u=Ie())!==n?(de=r,r=e=function(t,r){for(const e of r)e.ref&&e.ref[0]===t&&e.ref.shift();return r}(e,u)):(Ae=r,r=n)):(Ae=r,r=n),r}function Ue(){var r,e,s,u,a;return r=Ae,(e=Ve())===n&&(e=Ge()),e!==n?(s=Ae,wn()!==n?(u=Ae,"asc"===t.substr(Ae,3)?(a="asc",Ae+=3):(a=n,0===me&&Se(W)),a===n&&(t.substr(Ae,4)===X?(a=X,Ae+=4):(a=n,0===me&&Se(Y))),(u=a!==n?t.substring(u,Ae):a)!==n?(de=s,s=u):(Ae=s,s=n)):(Ae=s,s=n),s===n&&(s=null),s!==n?(de=r,r=e=function(t,r){const e=Sn(t,r&&{sort:r});On.orderBy=On.orderBy?[...On.orderBy,e]:[e]}(e,s)):(Ae=r,r=n)):(Ae=r,r=n),r}function Me(){var r,e,s,u,c,i;if(r=Ae,(e=rn())!==n){for(s=[],u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=rn())!==n?u=c=[c,i]:(Ae=u,u=n);u!==n;)s.push(u),u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=rn())!==n?u=c=[c,i]:(Ae=u,u=n);s!==n?r=e=[e,s]:(Ae=r,r=n)}else Ae=r,r=n;return r}function Pe(){var r,e,s,u,a,o;return me++,r=Ae,(e=Je())!==n&&wn()!==n?(s=Ae,"eq"===t.substr(Ae,2)?(u="eq",Ae+=2):(u=n,0===me&&Se(ot)),u===n&&("ne"===t.substr(Ae,2)?(u="ne",Ae+=2):(u=n,0===me&&Se(ct)),u===n&&("lt"===t.substr(Ae,2)?(u="lt",Ae+=2):(u=n,0===me&&Se(it)),u===n&&("gt"===t.substr(Ae,2)?(u="gt",Ae+=2):(u=n,0===me&&Se(ft)),u===n&&("le"===t.substr(Ae,2)?(u="le",Ae+=2):(u=n,0===me&&Se(lt)),u===n&&("ge"===t.substr(Ae,2)?(u="ge",Ae+=2):(u=n,0===me&&Se(ht))))))),(s=u!==n?t.substring(s,Ae):u)!==n&&(u=wn())!==n&&(a=Je())!==n?(de=r,r=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[o=s]||o,a]):(Ae=r,r=n)):(Ae=r,r=n),me--,r===n&&(e=n,0===me&&Se(at)),r}function Je(){var r;return me++,(r=Ve())===n&&(r=Ge())===n&&(r=He())===n&&(r=Ke())===n&&(r=Qe())===n&&(r=function(){var r,e,s,u,a;r=Ae,91===t.charCodeAt(Ae)?(e=yt,Ae++):(e=n,0===me&&Se(Ct));if(e!==n){for(s=Ae,u=[],Et.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(St));a!==n;)u.push(a),Et.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(St));(s=u!==n?t.substring(s,Ae):u)!==n?(93===t.charCodeAt(Ae)?(u=$t,Ae++):(u=n,0===me&&Se(wt)),u!==n?(de=r,r=e={list:s.replace(/"/g,"").split(",").map((t=>({val:t})))}):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return r}()),me--,r===n&&(n,0===me&&Se(pt)),r}function Ge(){var r,e,s,u,c,i,f,l;if(me++,r=Ae,(e=bn())!==n){for(s=[],u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=bn())!==n?(de=u,u=c=dt(0,i)):(Ae=u,u=n);u!==n;)s.push(u),u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=bn())!==n?(de=u,u=c=dt(0,i)):(Ae=u,u=n);s!==n?(de=r,l=s,r=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ae=r,r=n)}else Ae=r,r=n;return me--,r===n&&(e=n,0===me&&Se(At)),r}function He(){var r,e,s;return r=Ae,(e=pn())===n&&(e=function(){var r,e,s,u,a,o,c,i,f,l,h,p,A,d,v,g,b,m,x,y,C,$,w,E;r=Ae,e=Ae,s=[],Ur.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Mr));if(u!==n)for(;u!==n;)s.push(u),Ur.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Mr));else s=n;if(s!==n)if(45===t.charCodeAt(Ae)?(u=Pr,Ae++):(u=n,0===me&&Se(Jr)),u!==n)if(Ur.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(Mr)),a!==n)if(Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr)),o!==n)if(45===t.charCodeAt(Ae)?(c=Pr,Ae++):(c=n,0===me&&Se(Jr)),c!==n)if(Ur.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(Mr)),i!==n)if(Ur.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(Mr)),f!==n){if(l=Ae,84===t.charCodeAt(Ae)?(h="T",Ae++):(h=n,0===me&&Se(Gr)),h!==n)if(Ur.test(t.charAt(Ae))?(p=t.charAt(Ae),Ae++):(p=n,0===me&&Se(Mr)),p!==n)if(Ur.test(t.charAt(Ae))?(A=t.charAt(Ae),Ae++):(A=n,0===me&&Se(Mr)),A!==n)if(58===t.charCodeAt(Ae)?(d=J,Ae++):(d=n,0===me&&Se(G)),d!==n)if(Ur.test(t.charAt(Ae))?(v=t.charAt(Ae),Ae++):(v=n,0===me&&Se(Mr)),v!==n)if(Ur.test(t.charAt(Ae))?(g=t.charAt(Ae),Ae++):(g=n,0===me&&Se(Mr)),g!==n){if(b=Ae,58===t.charCodeAt(Ae)?(m=J,Ae++):(m=n,0===me&&Se(G)),m!==n)if(Ur.test(t.charAt(Ae))?(x=t.charAt(Ae),Ae++):(x=n,0===me&&Se(Mr)),x!==n)if(Ur.test(t.charAt(Ae))?(y=t.charAt(Ae),Ae++):(y=n,0===me&&Se(Mr)),y!==n){if(C=Ae,46===t.charCodeAt(Ae)?($=".",Ae++):($=n,0===me&&Se(Hr)),$!==n){if(w=[],Ur.test(t.charAt(Ae))?(E=t.charAt(Ae),Ae++):(E=n,0===me&&Se(Mr)),E!==n)for(;E!==n;)w.push(E),Ur.test(t.charAt(Ae))?(E=t.charAt(Ae),Ae++):(E=n,0===me&&Se(Mr));else w=n;w!==n?C=$=[$,w]:(Ae=C,C=n)}else Ae=C,C=n;C===n&&(C=null),C!==n?b=m=[m,x,y,C]:(Ae=b,b=n)}else Ae=b,b=n;else Ae=b,b=n;else Ae=b,b=n;b===n&&(b=null),b!==n?(90===t.charCodeAt(Ae)?(m="Z",Ae++):(m=n,0===me&&Se(Kr)),m===n&&(m=Ae,43===t.charCodeAt(Ae)?(x="+",Ae++):(x=n,0===me&&Se(Qr)),x===n&&(45===t.charCodeAt(Ae)?(x=Pr,Ae++):(x=n,0===me&&Se(Jr))),x!==n?(Ur.test(t.charAt(Ae))?(y=t.charAt(Ae),Ae++):(y=n,0===me&&Se(Mr)),y!==n?(Ur.test(t.charAt(Ae))?(C=t.charAt(Ae),Ae++):(C=n,0===me&&Se(Mr)),C!==n?(58===t.charCodeAt(Ae)?($=J,Ae++):($=n,0===me&&Se(G)),$!==n?(Ur.test(t.charAt(Ae))?(w=t.charAt(Ae),Ae++):(w=n,0===me&&Se(Mr)),w!==n?(Ur.test(t.charAt(Ae))?(E=t.charAt(Ae),Ae++):(E=n,0===me&&Se(Mr)),E!==n?m=x=[x,y,C,$,w,E]:(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)),m===n&&(m=null),m!==n?l=h=[h,p,A,d,v,g,b,m]:(Ae=l,l=n)):(Ae=l,l=n)}else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;l===n&&(l=null),l!==n?e=s=[s,u,a,o,c,i,f,l]:(Ae=e,e=n)}else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;r=e!==n?t.substring(r,Ae):e;return r}()),e!==n&&(de=r,e=vt(e)),(r=e)===n&&(r=mn())===n&&(r=Ae,(e=vn())!==n&&(de=r,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(r=e)===n&&(r=Ae,(e=An())!==n&&(de=r,e=vt(e)),r=e)),r}function Ke(){var r,e,s,u,a,o;if(r=Ae,e=Ae,s=Ae,123===t.charCodeAt(Ae)?(u="{",Ae++):(u=n,0===me&&Se(gt)),u!==n){for(a=[],(o=Ke())===n&&(bt.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(mt)));o!==n;)a.push(o),(o=Ke())===n&&(bt.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(mt)));a!==n?(125===t.charCodeAt(Ae)?(o="}",Ae++):(o=n,0===me&&Se(xt)),o!==n?s=u=[u,a,o]:(Ae=s,s=n)):(Ae=s,s=n)}else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=vt(e)),r=e}function Qe(){var r,e,s,u,a,o,c,i;if(r=Ae,e=Ae,s=Ae,91===t.charCodeAt(Ae)?(u=yt,Ae++):(u=n,0===me&&Se(Ct)),u!==n&&(a=$n())!==n?(93===t.charCodeAt(Ae)?(o=$t,Ae++):(o=n,0===me&&Se(wt)),o!==n?s=u=[u,a,o]:(Ae=s,s=n)):(Ae=s,s=n),s===n)if(s=Ae,91===t.charCodeAt(Ae)?(u=yt,Ae++):(u=n,0===me&&Se(Ct)),u!==n)if((a=$n())!==n)if(123===t.charCodeAt(Ae)?(o="{",Ae++):(o=n,0===me&&Se(gt)),o!==n){for(c=[],(i=Qe())===n&&(Et.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(St)));i!==n;)c.push(i),(i=Qe())===n&&(Et.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(St)));c!==n?(93===t.charCodeAt(Ae)?(i=$t,Ae++):(i=n,0===me&&Se(wt)),i!==n?s=u=[u,a,o,c,i]:(Ae=s,s=n)):(Ae=s,s=n)}else Ae=s,s=n;else Ae=s,s=n;else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=vt(e)),r=e}function Ve(){var r,e,s,u,a,o,c,i,f,l;if(me++,r=Ae,e=Ae,s=[],Zt.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(jt)),u!==n)for(;u!==n;)s.push(u),Zt.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(jt));else s=n;if((e=s!==n?t.substring(e,Ae):s)!==n)if((s=yn())!==n)if((u=Je())!==n){for(a=[],o=Ae,xn()!==n&&(c=Je())!==n?(de=o,o=Ot(0,0,c)):(Ae=o,o=n);o!==n;)a.push(o),o=Ae,xn()!==n&&(c=Je())!==n?(de=o,o=Ot(0,0,c)):(Ae=o,o=n);a!==n&&(o=Cn())!==n?(de=r,i=e,f=u,l=a,zn&&!(i in zn.functions)&&En("'"+i+"' is an unknown function in OData URL spec (strict mode)"),r=e={func:i,args:[f,...l]}):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;return me--,r===n&&(e=n,0===me&&Se(zt)),r}function We(){var r,e;return r=Ae,$n()!==n?("not"===t.substr(Ae,3).toLowerCase()?(e=t.substr(Ae,3),Ae+=3):(e=n,0===me&&Se(_t)),e!==n&&wn()!==n?(de=r,r="not"):(Ae=r,r=n)):(Ae=r,r=n),r}function Xe(){var r,e;return r=Ae,wn()!==n?("and"===t.substr(Ae,3).toLowerCase()?(e=t.substr(Ae,3),Ae+=3):(e=n,0===me&&Se(qt)),e!==n&&wn()!==n?(de=r,r="and"):(Ae=r,r=n)):(Ae=r,r=n),r}function Ye(){var t,r;return t=Ae,(r=wn())!==n&&(de=t,r="and"),t=r}function tn(){var r,e;return r=Ae,wn()!==n?("or"===t.substr(Ae,2).toLowerCase()?(e=t.substr(Ae,2),Ae+=2):(e=n,0===me&&Se(It)),e!==n&&wn()!==n?(de=r,r="or"):(Ae=r,r=n)):(Ae=r,r=n),r}function rn(){var r,e,s;return r=Ae,t.substr(Ae,9)===Dt?(e=Dt,Ae+=9):(e=n,0===me&&Se(Ut)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=en())!==n){for(u=[],a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=en())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=en())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===Mt?(e=Mt,Ae+=7):(e=n,0===me&&Se(Pt)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f,l;if(t=Ae,(r=yn())!==n)if((e=$n())!==n){if(s=Ae,(u=yn())!==n)if((a=on())!==n){for(o=[],c=Ae,(i=xn())!==n&&(f=$n())!==n&&(l=on())!==n?c=i=[i,f,l]:(Ae=c,c=n);c!==n;)o.push(c),c=Ae,(i=xn())!==n&&(f=$n())!==n&&(l=on())!==n?c=i=[i,f,l]:(Ae=c,c=n);o!==n&&(c=Cn())!==n?s=u=[u,a,o,c]:(Ae=s,s=n)}else Ae=s,s=n;else Ae=s,s=n;s!==n?(u=Ae,(a=xn())!==n&&(o=$n())!==n&&(c=Me())!==n?u=a=[a,o,c]:(Ae=u,u=n),u===n&&(u=null),u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)):(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===Jt?(e=Jt,Ae+=6):(e=n,0===me&&Se(Gt)),e!==n&&(s=cn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=function(){var r,e,s,u;r=Ae,t.substr(Ae,8)===br?(e=br,Ae+=8):(e=n,0===me&&Se(mr));e===n&&(t.substr(Ae,11)===xr?(e=xr,Ae+=11):(e=n,0===me&&Se(yr)));e!==n&&yn()!==n&&$n()!==n&&(s=vn())!==n&&$n()!==n&&xn()!==n&&$n()!==n&&(u=Ge())!==n&&$n()!==n&&Cn()!==n?(de=r,r=e=function(t,r,e){const n={...e,sort:"topcount"===t?"desc":"asc"};On.orderBy=On.orderBy?[...On.orderBy,n]:[n],(On.limit||(On.limit={})).rows={val:r}}(e,s,u)):(Ae=r,r=n);return r}(),r===n&&(r=Ae,t.substr(Ae,6)===Ht?(e=Ht,Ae+=6):(e=n,0===me&&Se(Kt)),e!==n&&(s=fn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===Qt?(e=Qt,Ae+=6):(e=n,0===me&&Se(Vt)),e!==n?(s=function(){var t,r,e,s,u,a;t=Ae,(r=yn())!==n&&(e=$n())!==n&&(s=Te())!==n&&(u=$n())!==n&&(a=Cn())!==n?t=r=[r,e,s,u,a]:(Ae=t,t=n);return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===Wt?(e=Wt,Ae+=6):(e=n,0===me&&Se(Xt)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=Me())!==n){if(u=[],a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=Me())!==n?a=o=[o,c,i,f]:(Ae=a,a=n),a!==n)for(;a!==n;)u.push(a),a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=Me())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);else u=n;u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===Yt?(e=Yt,Ae+=7):(e=n,0===me&&Se(tr)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=ln())!==n){for(u=[],a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=ln())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=ln())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,13)===rr?(e=rr,Ae+=13):(e=n,0===me&&Se(er)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,9)===nr?(e=nr,Ae+=9):(e=n,0===me&&Se(sr)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,10)===ur?(e=ur,Ae+=10):(e=n,0===me&&Se(ar)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===or?(e=or,Ae+=6):(e=n,0===me&&Se(cr)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=function(){var r;t.substr(Ae,8)===Cr?(r=Cr,Ae+=8):(r=n,0===me&&Se($r));return r}())))))))))))),r}function en(){var r,e,s,u,a;return r=Ae,e=Ae,t.substr(Ae,6)===f?(s=f,Ae+=6):(s=n,0===me&&Se(l)),s!==n&&(u=an())!==n?(de=e,e=s={func:"count",args:["*"],as:u}):(Ae=e,e=n),e===n&&(e=nn()),e!==n&&(de=r,a=e,On.columns=Array.isArray(On.columns)?On.columns:[],On.columns.find(Ln(a))||On.columns.push(a),e=a),r=e}function nn(){var t,r,e,s,u;return t=Ae,(r=Ge())!==n&&(e=sn())!==n?((s=un())===n&&(s=null),s!==n&&(u=an())!==n?(de=t,t=r={func:e,args:[r],as:u}):(Ae=t,t=n)):(Ae=t,t=n),t===n&&(t=Ae,(r=bn())!==n&&(e=yn())!==n&&(s=nn())!==n&&(u=Cn())!==n?t=r=[r,e,s,u]:(Ae=t,t=n)),t}function sn(){var r,e,s,u,a;if(r=Ae,wn()!==n)if(t.substr(Ae,4)===ir?(e=ir,Ae+=4):(e=n,0===me&&Se(fr)),e!==n)if(wn()!==n){if(s=Ae,u=[],Zt.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(jt)),a!==n)for(;a!==n;)u.push(a),Zt.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(jt));else u=n;(s=u!==n?t.substring(s,Ae):u)!==n?(de=r,r=s):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;return r}function un(){var r,e,s,u,a,o,c;return r=Ae,(e=wn())!==n?(t.substr(Ae,4)===lr?(s=lr,Ae+=4):(s=n,0===me&&Se(hr)),s!==n&&(u=wn())!==n&&(a=Ge())!==n&&(o=sn())!==n?((c=un())===n&&(c=null),c!==n?r=e=[e,s,u,a,o,c]:(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n),r}function an(){var r,e,s;return r=Ae,wn()!==n?("as"===t.substr(Ae,2)?(e="as",Ae+=2):(e=n,0===me&&Se(pr)),e!==n&&wn()!==n&&(s=bn())!==n?(de=r,r=s):(Ae=r,r=n)):(Ae=r,r=n),r}function on(){var r,e,s;return r=Ae,e=function(){var r,e,s,u,a,o,c,i,f,l,h;r=Ae,e=Ae,t.substr(Ae,6)===Ar?(s=Ar,Ae+=6):(s=n,0===me&&Se(dr));if(s!==n)if((u=yn())!==n)if((a=$n())!==n)if(t.substr(Ae,4)===vr?(o=vr,Ae+=4):(o=n,0===me&&Se(gr)),o===n&&(o=Ge()),o!==n){if(c=[],i=Ae,(f=$n())!==n&&(l=xn())!==n&&(h=Ge())!==n?i=f=[f,l,h]:(Ae=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ae,(f=$n())!==n&&(l=xn())!==n&&(h=Ge())!==n?i=f=[f,l,h]:(Ae=i,i=n);else c=n;c!==n&&(i=$n())!==n&&(f=Cn())!==n?e=s=[s,u,a,o,c,i,f]:(Ae=e,e=n)}else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;e!==n&&(de=r,e=function(t){const r=new Error("Rollup in groupby is not supported yet.");throw r.statusCode=501,r}());return r=e}(),e===n&&(e=Ge()),e!==n&&(de=r,s=e,e=void(On.groupBy||(On.groupBy=[])).push(s)),r=e}function cn(){var t,r,e,s,u,a;return t=Ae,(r=yn())!==n&&(e=$n())!==n&&(s=Ne())!==n&&(u=$n())!==n&&(a=Cn())!==n?t=r=[r,e,s,u,a]:(Ae=t,t=n),t}function fn(){var t,r,e,s,u,a,o,c,i,f,l,h,p,A;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=Ge())!==n)if((u=$n())!==n)if((a=xn())!==n)if((o=$n())!==n){if(c=Ae,(i=fn())!==n){for(f=[],l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);l!==n;)f.push(l),l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);f!==n?c=i=[i,f]:(Ae=c,c=n)}else Ae=c,c=n;if(c===n)if(c=Ae,(i=cn())!==n){for(f=[],l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);l!==n;)f.push(l),l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);f!==n?c=i=[i,f]:(Ae=c,c=n)}else Ae=c,c=n;c!==n&&(i=$n())!==n&&(f=Cn())!==n?t=r=[r,e,s,u,a,o,c,i,f]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}function ln(){var t,r,e;return t=Ae,(r=_e())!==n&&(e=an())!==n?t=r=[r,e]:(Ae=t,t=n),t}function hn(){var t,r,e,s,u,a,o,c,i,f;return t=Ae,(r=yn())!==n&&(e=$n())!==n&&(s=Je())!==n&&(u=$n())!==n&&(a=xn())!==n&&(o=$n())!==n&&(c=Je())!==n&&(i=$n())!==n&&(f=Cn())!==n?t=r=[r,e,s,u,a,o,c,i,f]:(Ae=t,t=n),t}function pn(){var r,e;return r=Ae,t.substr(Ae,4)===wr?(e=wr,Ae+=4):(e=n,0===me&&Se(Er)),e===n&&(t.substr(Ae,5)===Sr?(e=Sr,Ae+=5):(e=n,0===me&&Se(zr))),e!==n&&(de=r,e="true"===e),r=e}function An(){var r,e,s,u,a;if(me++,r=Ae,39===t.charCodeAt(Ae)?(e="'",Ae++):(e=n,0===me&&Se(jr)),e!==n){for(s=Ae,u=[],t.substr(Ae,2)===Or?(a=Or,Ae+=2):(a=n,0===me&&Se(Br)),a===n&&(kr.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(Rr)));a!==n;)u.push(a),t.substr(Ae,2)===Or?(a=Or,Ae+=2):(a=n,0===me&&Se(Br)),a===n&&(kr.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(Rr)));(s=u!==n?t.substring(s,Ae):u)!==n?(39===t.charCodeAt(Ae)?(u="'",Ae++):(u=n,0===me&&Se(jr)),u!==n?(de=r,r=e=s.replace(/''/g,"'")):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return me--,r===n&&(e=n,0===me&&Se(Zr)),r}function dn(){var r,e,s;if(r=Ae,e=[],Ir.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(Dr)),s!==n)for(;s!==n;)e.push(s),Ir.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(Dr));else e=n;return r=e!==n?t.substring(r,Ae):e}function vn(){var r,e,s,u,a,o,c,i,f,l;if(r=Ae,e=Ae,s=Ae,Vr.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Wr)),u===n&&(u=null),u!==n){if(a=[],Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr)),o!==n)for(;o!==n;)a.push(o),Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr));else a=n;if(a!==n){if(o=Ae,46===t.charCodeAt(Ae)?(c=".",Ae++):(c=n,0===me&&Se(Hr)),c!==n){if(i=[],Ur.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(Mr)),f!==n)for(;f!==n;)i.push(f),Ur.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(Mr));else i=n;i!==n?o=c=[c,i]:(Ae=o,o=n)}else Ae=o,o=n;if(o===n&&(o=null),o!==n){if(c=Ae,101===t.charCodeAt(Ae)?(i="e",Ae++):(i=n,0===me&&Se(Xr)),i!==n){if(f=[],Ur.test(t.charAt(Ae))?(l=t.charAt(Ae),Ae++):(l=n,0===me&&Se(Mr)),l!==n)for(;l!==n;)f.push(l),Ur.test(t.charAt(Ae))?(l=t.charAt(Ae),Ae++):(l=n,0===me&&Se(Mr));else f=n;f!==n?c=i=[i,f]:(Ae=c,c=n)}else Ae=c,c=n;c===n&&(c=null),c!==n?s=u=[u,a,o,c]:(Ae=s,s=n)}else Ae=s,s=n}else Ae=s,s=n}else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=Rn(e)),r=e}function gn(){var r,e,s,u,a,o;if(r=Ae,e=Ae,s=Ae,Vr.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Wr)),u===n&&(u=null),u!==n){if(a=[],Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr)),o!==n)for(;o!==n;)a.push(o),Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr));else a=n;a!==n?s=u=[u,a]:(Ae=s,s=n)}else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=parseInt(e)),r=e}function bn(){var r,e,s,u,a,o,c,i;if(r=Ae,e=Ae,me++,s=pn(),me--,s===n?e=void 0:(Ae=e,e=n),e!==n)if(s=Ae,me++,u=mn(),me--,u===n?s=void 0:(Ae=s,s=n),s!==n){if(u=Ae,a=Ae,Yr.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(te)),o!==n){for(c=[],re.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(ee));i!==n;)c.push(i),re.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(ee));c!==n?a=o=[o,c]:(Ae=a,a=n)}else Ae=a,a=n;(u=a!==n?t.substring(u,Ae):a)!==n?(de=r,r=e=u):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function mn(){var r,e,s,u,a,o,c,i,f;if(r=Ae,e=Ae,s=Ae,u=[],ne.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(se)),a!==n)for(;a!==n;)u.push(a),ne.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(se));else u=n;if(u!==n)if(45===t.charCodeAt(Ae)?(a=Pr,Ae++):(a=n,0===me&&Se(Jr)),a!==n){if(o=[],c=Ae,i=[],ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se)),f!==n)for(;f!==n;)i.push(f),ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se));else i=n;if(i!==n?(45===t.charCodeAt(Ae)?(f=Pr,Ae++):(f=n,0===me&&Se(Jr)),f===n&&(f=null),f!==n?c=i=[i,f]:(Ae=c,c=n)):(Ae=c,c=n),c!==n)for(;c!==n;){if(o.push(c),c=Ae,i=[],ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se)),f!==n)for(;f!==n;)i.push(f),ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se));else i=n;i!==n?(45===t.charCodeAt(Ae)?(f=Pr,Ae++):(f=n,0===me&&Se(Jr)),f===n&&(f=null),f!==n?c=i=[i,f]:(Ae=c,c=n)):(Ae=c,c=n)}else o=n;o!==n?s=u=[u,a,o]:(Ae=s,s=n)}else Ae=s,s=n;else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=vt(e)),r=e}function xn(){var r,e,s,u;return r=Ae,(e=$n())!==n?(44===t.charCodeAt(Ae)?(s=",",Ae++):(s=n,0===me&&Se(oe)),s!==n&&(u=$n())!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r}function yn(){var r,e,s,u;return r=Ae,(e=$n())!==n?(40===t.charCodeAt(Ae)?(s="(",Ae++):(s=n,0===me&&Se(ce)),s!==n&&(u=$n())!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r}function Cn(){var r,e,s;return r=Ae,(e=$n())!==n?(41===t.charCodeAt(Ae)?(s=")",Ae++):(s=n,0===me&&Se(ie)),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r}function $n(){var r,e,s;for(me++,r=Ae,e=[],le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he));s!==n;)e.push(s),le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he));return r=e!==n?t.substring(r,Ae):e,me--,r===n&&(e=n,0===me&&Se(fe)),r}function wn(){var r,e,s;if(me++,r=Ae,e=[],le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he)),s!==n)for(;s!==n;)e.push(s),le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he));else e=n;return r=e!==n?t.substring(r,Ae):e,me--,r===n&&(e=n,0===me&&Se(pe)),r}const En=(t,r=400)=>{xe(JSON.stringify({code:r,message:t}))},Sn=Object.assign,{strict:zn,minimal:Zn}=r,jn=[];let On,Bn;const kn=["$value"],Rn=r.safeNumber||function(t){const r=Number(t);return Number.isSafeInteger(r)?r:t},Fn=(t,r)=>{const e=[...t];for(const t of e)t.xpr&&(t.xpr=Fn(t.xpr,r)),t.args&&(t.args=Fn(t.args,r)),t.ref&&r.includes(t.ref.join(""));return e},Tn=t=>{const r=t.groupBy,e=t.where,n=t.columns||[],s=n.filter((t=>t.as));let u=[],a=[];if(0!==s.length&&(u=n.filter((t=>!t.ref||s.includes(t.ref.join(""))))),r){const t=r.map((({ref:t})=>t&&t.join(""))),e=n.filter((r=>r.ref&&t.includes(r.ref.join(""))));a=0===e.length?[...r]:e}const o=0!==u.length||0!==a.length?[...a,...u]:t.columns;let c={...t};o&&(c.columns=o);if(e&&(r||0!==s.length)){const t=n.map((t=>t.ref&&t.ref.join("")||t.as));c={...c,where:Fn(e,t)}}return c},Ln=t=>r=>t===r||t.as&&r.as&&t.as===r.as||t.ref&&r.ref&&t.ref.join("")===r.ref.join(""),Nn=(t,r,e)=>(t||(t=""),r&&(t+=r.reduce(((t,r)=>{for(const e of r)t+="string"==typeof e?e:e.val?"string"==typeof e.val?`'${e.val}'`:e.val:e.ref[0];return t}),""),r=void 0),[t+=e,r,e]);if((e=u())!==n&&Ae===t.length)return e;throw e!==n&&Ae<t.length&&Se({type:"end"}),ze(be,ge<t.length?t.charAt(ge):null,ge<t.length?Ee(ge,ge+1):Ee(ge,ge))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(t,r){var e={literal:function(t){return'"'+s(t.text)+'"'},class:function(t){var r,e="";for(r=0;r<t.parts.length;r++)e+=t.parts[r]instanceof Array?u(t.parts[r][0])+"-"+u(t.parts[r][1]):u(t.parts[r]);return"["+(t.inverted?"^":"")+e+"]"},any:function(t){return"any character"},end:function(t){return"end of input"},other:function(t){return t.description}};function n(t){return t.charCodeAt(0).toString(16).toUpperCase()}function s(t){return t.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(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}function u(t){return t.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(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}return"Expected "+function(t){var r,n,s,u=new Array(t.length);for(r=0;r<t.length;r++)u[r]=(s=t[r],e[s.type](s));if(u.sort(),u.length>0){for(r=1,n=1;r<u.length;r++)u[r-1]!==u[r]&&(u[n]=u[r],n++);u.length=n}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}(t)+" but "+function(t){return t?'"'+s(t)+'"':"end of input"}(r)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/cds",
3
- "version": "5.6.0",
3
+ "version": "5.6.4",
4
4
  "description": "SAP Cloud Application Programming Model - CDS for Node.js",
5
5
  "homepage": "https://cap.cloud.sap/",
6
6
  "keywords": [
package/server.js CHANGED
@@ -138,13 +138,17 @@ function cors (req, res, next) {
138
138
  next()
139
139
  }
140
140
 
141
- function correlate (req,_,next) {
142
- if (!cds.context) cds.context = {}
143
- const id = cds.context.id
144
- || req.headers['x-correlation-id'] || req.headers['x-correlationid']
141
+ function correlate (req, res, next) {
142
+ // derive correlation id from req
143
+ const id = req.headers['x-correlation-id'] || req.headers['x-correlationid']
145
144
  || req.headers['x-request-id'] || req.headers['x-vcap-request-id']
146
145
  || cds.utils.uuid()
147
- cds.context.id = req.headers['x-correlation-id'] = id
146
+ // new intermediate cds.context, if necessary
147
+ if (!cds.context) cds.context = { id }
148
+ // guarantee x-correlation-id going forward and set on res
149
+ req.headers['x-correlation-id'] = id
150
+ res.set('x-correlation-id', id)
151
+ // guaranteed access to cds.context._.req -> REVISIT
148
152
  if (!cds.context._) cds.context._ = {}
149
153
  if (!cds.context._.req) cds.context._.req = req
150
154
  next()