@react-querybuilder/core 8.9.2 → 8.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{arrayUtils-BF1P8iHS.mjs → arrayUtils-A_OXU9W1.mjs} +3 -75
- package/dist/arrayUtils-A_OXU9W1.mjs.map +1 -0
- package/dist/arrayUtils-QxZOZTf6.js +73 -0
- package/dist/arrayUtils-QxZOZTf6.js.map +1 -0
- package/dist/basic-DEc65Kng.d.mts +363 -0
- package/dist/basic-Dd_M2f3M.d.ts +363 -0
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +806 -1366
- package/dist/cjs/react-querybuilder_core.cjs.development.js +455 -116
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +806 -1366
- package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
- package/dist/{convertQuery-H7RhQiIc.mjs → convertQuery-CqX3rPvj.mjs} +3 -3
- package/dist/{convertQuery-H7RhQiIc.mjs.map → convertQuery-CqX3rPvj.mjs.map} +1 -1
- package/dist/{export-DyrnTh6K.d.ts → export-Dy4FckB-.d.ts} +7 -6
- package/dist/{export-r-V7bU31.d.mts → export-t1V2N8pz.d.mts} +7 -6
- package/dist/formatQuery.d.mts +3 -2
- package/dist/formatQuery.d.ts +3 -2
- package/dist/formatQuery.js +217 -87
- package/dist/formatQuery.js.map +1 -1
- package/dist/formatQuery.mjs +217 -87
- package/dist/formatQuery.mjs.map +1 -1
- package/dist/{import-Cksobmln.d.ts → import-Cz8canKo.d.mts} +3 -3
- package/dist/{import-BwbbP4oU.d.mts → import-DtS9Ocx5.d.ts} +3 -3
- package/dist/{isRuleGroup-CnhYpLOM.mjs → isRuleGroup-CYcfPgbg.mjs} +2 -2
- package/dist/{isRuleGroup-CnhYpLOM.mjs.map → isRuleGroup-CYcfPgbg.mjs.map} +1 -1
- package/dist/lexer-C53tqS2p.js +406 -0
- package/dist/lexer-C53tqS2p.js.map +1 -0
- package/dist/{optGroupUtils-CXLgyg2i.js → optGroupUtils-B0hTpodo.js} +114 -1
- package/dist/optGroupUtils-B0hTpodo.js.map +1 -0
- package/dist/{optGroupUtils-Duv-M8rf.mjs → optGroupUtils-VeZ3k7-1.mjs} +86 -3
- package/dist/optGroupUtils-VeZ3k7-1.mjs.map +1 -0
- package/dist/parseCEL.d.mts +292 -11
- package/dist/parseCEL.d.ts +292 -11
- package/dist/parseCEL.js +874 -1125
- package/dist/parseCEL.js.map +1 -1
- package/dist/parseCEL.mjs +828 -1126
- package/dist/parseCEL.mjs.map +1 -1
- package/dist/parseJSONata.d.mts +3 -2
- package/dist/parseJSONata.d.ts +3 -2
- package/dist/parseJSONata.js +49 -77
- package/dist/parseJSONata.js.map +1 -1
- package/dist/parseJSONata.mjs +4 -5
- package/dist/parseJSONata.mjs.map +1 -1
- package/dist/parseJsonLogic.d.mts +4 -3
- package/dist/parseJsonLogic.d.ts +4 -3
- package/dist/parseJsonLogic.js +5 -6
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs +5 -6
- package/dist/parseJsonLogic.mjs.map +1 -1
- package/dist/parseMongoDB.d.mts +3 -2
- package/dist/parseMongoDB.d.ts +3 -2
- package/dist/parseMongoDB.js +15 -16
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs +5 -6
- package/dist/parseMongoDB.mjs.map +1 -1
- package/dist/{parseNumber-BtGKa58z.mjs → parseNumber-CXdMVNFx.mjs} +2 -2
- package/dist/{parseNumber-BtGKa58z.mjs.map → parseNumber-CXdMVNFx.mjs.map} +1 -1
- package/dist/{parseNumber-Bcys1kOH.js → parseNumber-D4iQDxK-.js} +1 -1
- package/dist/{parseNumber-Bcys1kOH.js.map → parseNumber-D4iQDxK-.js.map} +1 -1
- package/dist/parseSQL.d.mts +3 -2
- package/dist/parseSQL.d.ts +3 -2
- package/dist/parseSQL.js +2691 -3036
- package/dist/parseSQL.js.map +1 -1
- package/dist/parseSQL.mjs +2691 -3037
- package/dist/parseSQL.mjs.map +1 -1
- package/dist/parseSpEL.d.mts +3 -2
- package/dist/parseSpEL.d.ts +3 -2
- package/dist/parseSpEL.js +7 -9
- package/dist/parseSpEL.js.map +1 -1
- package/dist/parseSpEL.mjs +5 -6
- package/dist/parseSpEL.mjs.map +1 -1
- package/dist/{prepareQueryObjects-BqFEs4eV.js → prepareQueryObjects-BOUWfel5.js} +4 -5
- package/dist/prepareQueryObjects-BOUWfel5.js.map +1 -0
- package/dist/{prepareQueryObjects-CS6Wmhmf.mjs → prepareQueryObjects-DPCC-iHp.mjs} +6 -7
- package/dist/prepareQueryObjects-DPCC-iHp.mjs.map +1 -0
- package/dist/query-builder-layout.css +1 -1
- package/dist/query-builder-layout.css.map +1 -1
- package/dist/query-builder.css +1 -1
- package/dist/query-builder.css.map +1 -1
- package/dist/react-querybuilder_core.d.mts +806 -1366
- package/dist/react-querybuilder_core.legacy-esm.d.ts +806 -1366
- package/dist/react-querybuilder_core.legacy-esm.js +455 -114
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +448 -117
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +806 -1366
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/styles/_layout.scss +61 -17
- package/dist/styles/_main.scss +22 -4
- package/dist/{transformQuery-FL_nlpp5.js → transformQuery-CWDPogO5.js} +1 -1
- package/dist/{transformQuery-FL_nlpp5.js.map → transformQuery-CWDPogO5.js.map} +1 -1
- package/dist/{transformQuery-DdMvmrCh.mjs → transformQuery-DCCpjtyq.mjs} +3 -3
- package/dist/{transformQuery-DdMvmrCh.mjs.map → transformQuery-DCCpjtyq.mjs.map} +1 -1
- package/dist/transformQuery.d.mts +1 -1
- package/dist/transformQuery.d.ts +1 -1
- package/dist/transformQuery.js +1 -1
- package/dist/transformQuery.mjs +2 -2
- package/package.json +14 -12
- package/dist/arrayUtils-BF1P8iHS.mjs.map +0 -1
- package/dist/arrayUtils-D5EoIsKP.js +0 -164
- package/dist/arrayUtils-D5EoIsKP.js.map +0 -1
- package/dist/basic-BfD-7CN3.d.mts +0 -1235
- package/dist/basic-C8xXKHIA.d.ts +0 -1235
- package/dist/objectUtils-BBZSfZJz.js +0 -17
- package/dist/objectUtils-BBZSfZJz.js.map +0 -1
- package/dist/objectUtils-BtWdcZVG.mjs +0 -11
- package/dist/objectUtils-BtWdcZVG.mjs.map +0 -1
- package/dist/optGroupUtils-CXLgyg2i.js.map +0 -1
- package/dist/optGroupUtils-Duv-M8rf.mjs.map +0 -1
- package/dist/prepareQueryObjects-BqFEs4eV.js.map +0 -1
- package/dist/prepareQueryObjects-CS6Wmhmf.mjs.map +0 -1
package/dist/parseSpEL.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseSpEL.js","names":["module","exports","nodeType","t","pos","value","entry","returnArray: (\n | DefaultCombinatorName\n | SpELProcessedExpression\n | ('and' | SpELProcessedExpression)[]\n )[]","getFieldsArray","fieldIsValidUtil","emptyQuery: DefaultRuleGroupTypeAny","isRuleGroup","rules","field: string","regex: string","valueSource: ValueSource | undefined","values: [any, any]","joinWith","field: string | null","value: any","prepareRuleGroup","compiledSpEL: SpELExpressionNode","SpelExpressionEvaluator"],"sources":["../../../node_modules/spel2js/dist/spel2js.js","../src/utils/parseSpEL/utils.ts","../src/utils/parseSpEL/parseSpEL.ts"],"sourcesContent":["/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"spel2js\"] = factory();\n\telse\n\t\troot[\"spel2js\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The common supertype of all AST nodes in a parsed Spring Expression Language\n * format expression.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createSpelNode(nodeType, position) {\n var node = {},\n type = nodeType || 'Abstract',\n children = [],\n parent = null,\n activeContext;\n\n node._type = type;\n\n node.getType = function () {\n return type;\n };\n node.setType = function (nodeType) {\n type = nodeType;\n };\n\n node.getChildren = function () {\n return children;\n };\n node.addChild = function (childNode) {\n if (!childNode) {\n // See OpMinus and OpPlus: right node can be null for unary mode\n return;\n }\n if (!childNode.setParent) {\n throw {\n name: 'Error',\n message: 'Trying to add a child which is not a node: ' + JSON.stringify(childNode)\n };\n }\n childNode.setParent(node);\n children.push(childNode);\n };\n\n node.getParent = function () {\n return parent;\n };\n node.setParent = function (parentNode) {\n parent = parentNode;\n };\n\n node.getContext = function (state) {\n return activeContext || state.activeContext.peek();\n };\n node.setContext = function (nodeContext) {\n activeContext = nodeContext;\n };\n\n node.getStartPosition = function () {\n return position >> 16;\n };\n\n node.getEndPosition = function () {\n return position & 0xffff;\n };\n\n //must override\n node.getValue = function () {\n throw {\n name: 'MethodNotImplementedException',\n message: 'SpelNode#getValue() must be overridden.'\n };\n };\n\n node.toString = function () {\n var s = 'Kind: ' + node.getType();\n //s += ', Value: ' + node.getValue();\n s += ', Children: [';\n for (var i = 0, l = node.getChildren().length; i < l; i += 1) {\n s += '{' + node.getChildren()[i] + '}, ';\n }\n s += ']';\n return s;\n };\n\n //constructor\n if (position === 0) {\n throw {\n name: 'Error',\n message: 'Position cannot be 0'\n };\n }\n\n for (var _len = arguments.length, operands = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n operands[_key - 2] = arguments[_key];\n }\n\n if (operands) {\n operands.forEach(function (operand) {\n node.addChild(operand);\n });\n }\n\n return node;\n}\n\nvar SpelNode = exports.SpelNode = {\n create: createSpelNode\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Stack = Stack;\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction Stack(startingElements) {\n this.elements = startingElements || [];\n}\n\nStack.prototype.push = function (el) {\n this.elements.push(el);\n return el;\n};\n\nStack.prototype.pop = function () {\n return this.elements.pop();\n};\n\nStack.prototype.peek = function () {\n return this.elements[this.elements.length - 1];\n};\n\nStack.prototype.empty = function () {\n return this.elements.length > 0;\n};\n\nStack.prototype.search = function (el) {\n return this.elements.length - this.elements.indexOf(el);\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nvar types = {\n\n LITERAL_INT: 1, //tested\n\n LITERAL_LONG: 2, //tested\n\n LITERAL_HEXINT: 3, //tested\n\n LITERAL_HEXLONG: 4, //tested\n\n LITERAL_STRING: 5, //tested\n\n LITERAL_REAL: 6, //tested\n\n LITERAL_REAL_FLOAT: 7, //tested\n\n LPAREN: '(', //tested\n\n RPAREN: ')', //tested\n\n COMMA: ',', //tested\n\n IDENTIFIER: 0, //tested\n\n COLON: ':', //tested\n\n HASH: '#', //tested\n\n RSQUARE: ']', //tested\n\n LSQUARE: '[', //tested\n\n LCURLY: '{', //tested\n\n RCURLY: '}', //tested\n\n DOT: '.', //tested\n\n PLUS: '+', //tested\n\n STAR: '*', //tested\n\n MINUS: '-', //tested\n\n SELECT_FIRST: '^[', //tested\n\n SELECT_LAST: '$[', //tested\n\n QMARK: '?', //tested\n\n PROJECT: '![', //tested\n\n DIV: '/', //tested\n\n GE: '>=', //tested\n\n GT: '>', //tested\n\n LE: '<=', //tested\n\n LT: '<', //tested\n\n EQ: '==', //tested\n\n NE: '!=', //tested\n\n MOD: '%', //tested\n\n NOT: '!', //tested\n\n ASSIGN: '=', //tested\n\n INSTANCEOF: 'instanceof', //test fails\n\n MATCHES: 'matches', //test fails\n\n BETWEEN: 'between', //test fails\n\n SELECT: '?[', //tested\n\n POWER: '^', //tested\n\n ELVIS: '?:', //tested\n\n SAFE_NAVI: '?.', //tested\n\n BEAN_REF: '@', //tested\n\n SYMBOLIC_OR: '||', //tested\n\n SYMBOLIC_AND: '&&', //tested\n\n INC: '++', //tested\n\n DEC: '--' //tested\n};\n\nfunction TokenKind(type) {\n this.type = type;\n this.tokenChars = types[type];\n this._hasPayload = typeof types[type] !== 'string';\n if (typeof types[type] === 'number') {\n this._ordinal = types[type];\n }\n}\n\n//create enum\nfor (var t in types) {\n if (types.hasOwnProperty(t)) {\n TokenKind[t] = new TokenKind(t);\n }\n}\n\nTokenKind.prototype.toString = function () {\n return this.type + (this.tokenChars.length !== 0 ? '(' + this.tokenChars + ')' : '');\n};\n\nTokenKind.prototype.getLength = function () {\n return this.tokenChars.length;\n};\n\nTokenKind.prototype.hasPayload = function () {\n return this._hasPayload;\n};\n\nTokenKind.prototype.valueOf = function (id) {\n for (var t in types) {\n if (types.hasOwnProperty(t) && types[t] === id) {\n return TokenKind[t];\n }\n }\n};\n\nTokenKind.prototype.ordinal = function () {\n return this._ordinal;\n};\n\nexports.TokenKind = TokenKind;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StandardContext = exports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionEvaluator = __webpack_require__(4);\n\nvar _StandardContext = __webpack_require__(50);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nexports.SpelExpressionEvaluator = _SpelExpressionEvaluator.SpelExpressionEvaluator;\nexports.StandardContext = _StandardContext.StandardContext;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionParser = __webpack_require__(5);\n\nvar _Stack = __webpack_require__(1);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nvar spelExpressionEvaluator = {};\n\nfunction evalCompiled(compiledExpression, context, locals) {\n var activeContext = new _Stack.Stack(),\n state;\n\n if (!context) {\n context = {};\n }\n\n activeContext.push(context);\n\n state = {\n rootContext: context,\n activeContext: activeContext,\n locals: locals\n };\n return compiledExpression.getValue(state);\n}\n\nspelExpressionEvaluator.compile = function (expression) {\n var compiledExpression = (0, _SpelExpressionParser.SpelExpressionParser)().parse(expression);\n return {\n eval: function _eval(context, locals) {\n return evalCompiled(compiledExpression, context, locals);\n },\n _compiledExpression: compiledExpression\n };\n};\n\nspelExpressionEvaluator.eval = function (expression, context, locals) {\n return spelExpressionEvaluator.compile(expression).eval(context, locals);\n};\n\nexports.SpelExpressionEvaluator = spelExpressionEvaluator;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionParser = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nvar _Tokenizer = __webpack_require__(6);\n\nvar _BooleanLiteral = __webpack_require__(8);\n\nvar _NumberLiteral = __webpack_require__(9);\n\nvar _StringLiteral = __webpack_require__(10);\n\nvar _NullLiteral = __webpack_require__(11);\n\nvar _FunctionReference = __webpack_require__(12);\n\nvar _MethodReference = __webpack_require__(13);\n\nvar _PropertyReference = __webpack_require__(14);\n\nvar _VariableReference = __webpack_require__(15);\n\nvar _CompoundExpression = __webpack_require__(16);\n\nvar _Indexer = __webpack_require__(17);\n\nvar _Assign = __webpack_require__(18);\n\nvar _OpEQ = __webpack_require__(19);\n\nvar _OpNE = __webpack_require__(20);\n\nvar _OpGE = __webpack_require__(21);\n\nvar _OpGT = __webpack_require__(22);\n\nvar _OpLE = __webpack_require__(23);\n\nvar _OpLT = __webpack_require__(24);\n\nvar _OpPlus = __webpack_require__(25);\n\nvar _OpMinus = __webpack_require__(26);\n\nvar _OpMultiply = __webpack_require__(27);\n\nvar _OpDivide = __webpack_require__(28);\n\nvar _OpModulus = __webpack_require__(29);\n\nvar _OpPower = __webpack_require__(30);\n\nvar _OpInc = __webpack_require__(31);\n\nvar _OpDec = __webpack_require__(32);\n\nvar _OpNot = __webpack_require__(33);\n\nvar _OpAnd = __webpack_require__(34);\n\nvar _OpOr = __webpack_require__(35);\n\nvar _OpMatches = __webpack_require__(36);\n\nvar _Ternary = __webpack_require__(37);\n\nvar _Elvis = __webpack_require__(38);\n\nvar _InlineList = __webpack_require__(39);\n\nvar _InlineMap = __webpack_require__(40);\n\nvar _Selection = __webpack_require__(41);\n\nvar _Projection = __webpack_require__(42);\n\nvar _OpInstanceof = __webpack_require__(43);\n\nvar _OpBetween = __webpack_require__(44);\n\nvar _TypeReference = __webpack_require__(45);\n\nvar _BeanReference = __webpack_require__(46);\n\nvar _Identifier = __webpack_require__(47);\n\nvar _QualifiedIdentifier = __webpack_require__(48);\n\nvar _ConstructorReference = __webpack_require__(49);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n *\n */\n\nvar SpelExpressionParser = exports.SpelExpressionParser = function SpelExpressionParser() {\n\n var VALID_QUALIFIED_ID_PATTERN = new RegExp('[\\\\p{L}\\\\p{N}_$]+');\n\n var configuration;\n\n // For rules that build nodes, they are stacked here for return\n var constructedNodes = [];\n\n // The expression being parsed\n var expressionString;\n\n // The token stream constructed from that expression string\n var tokenStream;\n\n // length of a populated token stream\n var tokenStreamLength;\n\n // Current location in the token stream when processing tokens\n var tokenStreamPointer;\n\n /**\n * Create a parser with some configured behavior.\n * @param config custom configuration options\n */\n function setConfiguration(config) {\n configuration = config;\n }\n\n function parse(expression, context) {\n try {\n expressionString = expression;\n tokenStream = _Tokenizer.Tokenizer.tokenize(expression);\n tokenStreamLength = tokenStream.length;\n tokenStreamPointer = 0;\n constructedNodes = [];\n var ast = eatExpression();\n if (moreTokens()) {\n raiseInternalException(peekToken().startPos, 'MORE_INPUT', nextToken().toString());\n }\n //Assert.isTrue(this.constructedNodes.isEmpty());\n return ast;\n } catch (e) {\n throw e.message;\n }\n }\n\n //\texpression\n // : logicalOrExpression\n // ( (ASSIGN^ logicalOrExpression)\n //\t | (DEFAULT^ logicalOrExpression)\n //\t | (QMARK^ expression COLON! expression)\n // | (ELVIS^ expression))?;\n function eatExpression() {\n var expr = eatLogicalOrExpression();\n if (moreTokens()) {\n var token = peekToken();\n if (token.getKind() === _TokenKind.TokenKind.ASSIGN) {\n // a=b\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var assignedValue = eatLogicalOrExpression();\n return _Assign.Assign.create(toPosToken(token), expr, assignedValue);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.ELVIS) {\n // a?:b (a if it isn't null, otherwise b)\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 2));\n }\n nextToken(); // elvis has left the building\n var valueIfNull = eatExpression();\n if (valueIfNull === null) {\n valueIfNull = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos + 1, token.endPos + 1));\n }\n return _Elvis.Elvis.create(toPosToken(token), expr, valueIfNull);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.QMARK) {\n // a?b:c\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var ifTrueExprValue = eatExpression();\n eatToken(_TokenKind.TokenKind.COLON);\n var ifFalseExprValue = eatExpression();\n return _Ternary.Ternary.create(toPosToken(token), expr, ifTrueExprValue, ifFalseExprValue);\n }\n }\n return expr;\n }\n\n //logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;\n function eatLogicalOrExpression() {\n var expr = eatLogicalAndExpression();\n while (peekIdentifierToken('or') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n var token = nextToken(); //consume OR\n var rhExpr = eatLogicalAndExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpOr.OpOr.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // logicalAndExpression : relationalExpression (AND^ relationalExpression)*;\n function eatLogicalAndExpression() {\n var expr = eatRelationalExpression();\n while (peekIdentifierToken('and') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n var token = nextToken(); // consume 'AND'\n var rhExpr = eatRelationalExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpAnd.OpAnd.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // relationalExpression : sumExpression (relationalOperator^ sumExpression)?;\n function eatRelationalExpression() {\n var expr = eatSumExpression();\n var relationalOperatorToken = maybeEatRelationalOperator();\n if (relationalOperatorToken !== null) {\n var token = nextToken(); // consume relational operator token\n var rhExpr = eatSumExpression();\n checkOperands(token, expr, rhExpr);\n var tk = relationalOperatorToken.kind;\n\n if (relationalOperatorToken.isNumericRelationalOperator()) {\n var pos = toPosToken(token);\n if (tk === _TokenKind.TokenKind.GT) {\n return _OpGT.OpGT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LT) {\n return _OpLT.OpLT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LE) {\n return _OpLE.OpLE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.GE) {\n return _OpGE.OpGE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.EQ) {\n return _OpEQ.OpEQ.create(pos, expr, rhExpr);\n }\n //Assert.isTrue(tk === TokenKind.NE);\n return _OpNE.OpNE.create(pos, expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.INSTANCEOF) {\n return _OpInstanceof.OpInstanceof.create(toPosToken(token), expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.MATCHES) {\n return _OpMatches.OpMatches.create(toPosToken(token), expr, rhExpr);\n }\n\n //Assert.isTrue(tk === TokenKind.BETWEEN);\n return _OpBetween.OpBetween.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n //sumExpression: productExpression ( (PLUS^ | MINUS^) productExpression)*;\n function eatSumExpression() {\n var expr = eatProductExpression();\n while (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.INC)) {\n var token = nextToken(); //consume PLUS or MINUS or INC\n var rhExpr = eatProductExpression();\n checkRightOperand(token, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n expr = _OpPlus.OpPlus.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.MINUS) {\n expr = _OpMinus.OpMinus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // productExpression: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;\n function eatProductExpression() {\n var expr = eatPowerIncDecExpression();\n while (peekTokenAny(_TokenKind.TokenKind.STAR, _TokenKind.TokenKind.DIV, _TokenKind.TokenKind.MOD)) {\n var token = nextToken(); // consume STAR/DIV/MOD\n var rhExpr = eatPowerIncDecExpression();\n checkOperands(token, expr, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.STAR) {\n expr = _OpMultiply.OpMultiply.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.DIV) {\n expr = _OpDivide.OpDivide.create(toPosToken(token), expr, rhExpr);\n } else {\n //Assert.isTrue(token.getKind() === TokenKind.MOD);\n expr = _OpModulus.OpModulus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // powerExpr : unaryExpression (POWER^ unaryExpression)? (INC || DEC) ;\n function eatPowerIncDecExpression() {\n var expr = eatUnaryExpression(),\n token;\n\n if (peekTokenOne(_TokenKind.TokenKind.POWER)) {\n token = nextToken(); //consume POWER\n var rhExpr = eatUnaryExpression();\n checkRightOperand(token, rhExpr);\n return _OpPower.OpPower.create(toPosToken(token), expr, rhExpr);\n }\n\n if (expr !== null && peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken(); //consume INC/DEC\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), true, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), true, expr);\n }\n\n return expr;\n }\n\n // unaryExpression: (PLUS^ | MINUS^ | BANG^ | INC^ | DEC^) unaryExpression | primaryExpression ;\n function eatUnaryExpression() {\n var token, expr;\n\n if (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.NOT)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.NOT) {\n return _OpNot.OpNot.create(toPosToken(token), expr);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n return _OpPlus.OpPlus.create(toPosToken(token), expr);\n }\n //Assert.isTrue(token.getKind() === TokenKind.MINUS);\n return _OpMinus.OpMinus.create(toPosToken(token), expr);\n }\n if (peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), false, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), false, expr);\n }\n\n return eatPrimaryExpression();\n }\n\n // primaryExpression : startNode (node)? -> ^(EXPRESSION startNode (node)?);\n function eatPrimaryExpression() {\n var nodes = [];\n var start = eatStartNode(); // always a start node\n nodes.push(start);\n while (maybeEatNode()) {\n nodes.push(pop());\n }\n if (nodes.length === 1) {\n return nodes[0];\n }\n return _CompoundExpression.CompoundExpression.create(toPosBounds(start.getStartPosition(), nodes[nodes.length - 1].getEndPosition()), nodes);\n }\n\n // node : ((DOT dottedNode) | (SAFE_NAVI dottedNode) | nonDottedNode)+;\n function maybeEatNode() {\n var expr = null;\n if (peekTokenAny(_TokenKind.TokenKind.DOT, _TokenKind.TokenKind.SAFE_NAVI)) {\n expr = eatDottedNode();\n } else {\n expr = maybeEatNonDottedNode();\n }\n\n if (expr === null) {\n return false;\n } else {\n push(expr);\n return true;\n }\n }\n\n // nonDottedNode: indexer;\n function maybeEatNonDottedNode() {\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n if (maybeEatIndexer()) {\n return pop();\n }\n }\n return null;\n }\n\n //dottedNode\n // : ((methodOrProperty\n //\t | functionOrVar\n // | projection\n // | selection\n // | firstSelection\n // | lastSelection\n // ))\n //\t;\n function eatDottedNode() {\n var token = nextToken(); // it was a '.' or a '?.'\n var nullSafeNavigation = token.getKind() === _TokenKind.TokenKind.SAFE_NAVI;\n if (maybeEatMethodOrProperty(nullSafeNavigation) || maybeEatFunctionOrVar() || maybeEatProjection(nullSafeNavigation) || maybeEatSelection(nullSafeNavigation)) {\n return pop();\n }\n if (peekToken() === null) {\n // unexpectedly ran out of data\n raiseInternalException(token.startPos, 'OOD');\n } else {\n raiseInternalException(token.startPos, 'UNEXPECTED_DATA_AFTER_DOT', toString(peekToken()));\n }\n return null;\n }\n\n // functionOrVar\n // : (POUND ID LPAREN) => function\n // | var\n //\n // function : POUND id=ID methodArgs -> ^(FUNCTIONREF[$id] methodArgs);\n // var : POUND id=ID -> ^(VARIABLEREF[$id]);\n function maybeEatFunctionOrVar() {\n if (!peekTokenOne(_TokenKind.TokenKind.HASH)) {\n return false;\n }\n var token = nextToken();\n var functionOrVariableName = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n var args = maybeEatMethodArgs();\n if (args === null) {\n push(_VariableReference.VariableReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos)));\n return true;\n }\n\n push(_FunctionReference.FunctionReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos), args));\n return true;\n }\n\n // methodArgs : LPAREN! (argument (COMMA! argument)* (COMMA!)?)? RPAREN!;\n function maybeEatMethodArgs() {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n return null;\n }\n var args = [];\n consumeArguments(args);\n eatToken(_TokenKind.TokenKind.RPAREN);\n return args;\n }\n\n function eatConstructorArgs(accumulatedArguments) {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n raiseInternalException(toPosToken(peekToken()), 'MISSING_CONSTRUCTOR_ARGS');\n }\n consumeArguments(accumulatedArguments);\n eatToken(_TokenKind.TokenKind.RPAREN);\n }\n\n /**\n * Used for consuming arguments for either a method or a constructor call\n */\n function consumeArguments(accumulatedArguments) {\n var pos = peekToken().startPos;\n var next;\n do {\n nextToken(); // consume ( (first time through) or comma (subsequent times)\n var token = peekToken();\n if (token === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n if (token.getKind() !== _TokenKind.TokenKind.RPAREN) {\n accumulatedArguments.push(eatExpression());\n }\n next = peekToken();\n } while (next !== null && next.kind === _TokenKind.TokenKind.COMMA);\n\n if (next === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n }\n\n function positionOf(token) {\n if (token === null) {\n // if null assume the problem is because the right token was\n // not found at the end of the expression\n return expressionString.length;\n }\n return token.startPos;\n }\n\n //startNode\n // : parenExpr | literal\n //\t | type\n //\t | methodOrProperty\n //\t | functionOrVar\n //\t | projection\n //\t | selection\n //\t | firstSelection\n //\t | lastSelection\n //\t | indexer\n //\t | constructor\n function eatStartNode() {\n if (maybeEatLiteral()) {\n return pop();\n } else if (maybeEatParenExpression()) {\n return pop();\n } else if (maybeEatTypeReference() || maybeEatNullReference() || maybeEatConstructorReference() || maybeEatMethodOrProperty(false) || maybeEatFunctionOrVar()) {\n return pop();\n } else if (maybeEatBeanReference()) {\n return pop();\n } else if (maybeEatProjection(false) || maybeEatSelection(false) || maybeEatIndexer()) {\n return pop();\n } else if (maybeEatInlineListOrMap()) {\n return pop();\n } else {\n return null;\n }\n }\n\n // parse: @beanname @'bean.name'\n // quoted if dotted\n function maybeEatBeanReference() {\n if (peekTokenOne(_TokenKind.TokenKind.BEAN_REF)) {\n var beanRefToken = nextToken();\n var beanNameToken = null;\n var beanName = null;\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n beanName = beanNameToken.data;\n } else if (peekTokenOne(_TokenKind.TokenKind.LITERAL_STRING)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.LITERAL_STRING);\n beanName = beanNameToken.stringValue();\n beanName = beanName.substring(1, beanName.length() - 1);\n } else {\n raiseInternalException(beanRefToken.startPos, 'INVALID_BEAN_REFERENCE');\n }\n\n var beanReference = _BeanReference.BeanReference.create(toPosToken(beanNameToken), beanName);\n push(beanReference);\n return true;\n }\n return false;\n }\n\n function maybeEatTypeReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var typeName = peekToken();\n if (typeName.stringValue() !== 'T') {\n return false;\n }\n // It looks like a type reference but is T being used as a map key?\n var token = nextToken();\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'T]' (T is map key)\n push(_PropertyReference.PropertyReference.create(token.stringValue(), toPosToken(token)));\n return true;\n }\n eatToken(_TokenKind.TokenKind.LPAREN);\n var node = eatPossiblyQualifiedId();\n // dotted qualified id\n // Are there array dimensions?\n var dims = 0;\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n eatToken(_TokenKind.TokenKind.RSQUARE);\n dims++;\n }\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(_TypeReference.TypeReference.create(toPosToken(typeName), node, dims));\n return true;\n }\n return false;\n }\n\n function maybeEatNullReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var nullToken = peekToken();\n if (nullToken.stringValue().toLowerCase() !== 'null') {\n return false;\n }\n nextToken();\n push(_NullLiteral.NullLiteral.create(toPosToken(nullToken)));\n return true;\n }\n return false;\n }\n\n //projection: PROJECT^ expression RCURLY!;\n function maybeEatProjection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.PROJECT, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Projection.Projection.create(nullSafeNavigation, toPosToken(token), expr));\n return true;\n }\n\n // list = LCURLY (element (COMMA element)*) RCURLY\n // map = LCURLY (key ':' value (COMMA key ':' value)*) RCURLY\n function maybeEatInlineListOrMap() {\n var token = peekToken(),\n listElements = [];\n\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LCURLY, true)) {\n return false;\n }\n var expr = null;\n var closingCurly = peekToken();\n if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.RCURLY, true)) {\n // empty list '{}'\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n // empty map '{:}'\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else {\n var firstExpression = eatExpression();\n // Next is either:\n // '}' - end of list\n // ',' - more expressions in this list\n // ':' - this is a map!\n\n if (peekTokenOne(_TokenKind.TokenKind.RCURLY)) {\n // list with one item in it\n listElements.push(firstExpression);\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n // multi item list\n listElements.push(firstExpression);\n do {\n listElements.push(eatExpression());\n } while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true));\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosToken(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n // map!\n var mapElements = [];\n mapElements.push(firstExpression);\n mapElements.push(eatExpression());\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n mapElements.push(eatExpression());\n eatToken(_TokenKind.TokenKind.COLON);\n mapElements.push(eatExpression());\n }\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos), mapElements);\n } else {\n raiseInternalException(token.startPos, 'OOD');\n }\n }\n push(expr);\n return true;\n }\n\n function maybeEatIndexer() {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Indexer.Indexer.create(toPosToken(token), expr));\n return true;\n }\n\n function maybeEatSelection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekSelectToken()) {\n return false;\n }\n nextToken();\n var expr = eatExpression();\n if (expr === null) {\n raiseInternalException(toPosToken(token), 'MISSING_SELECTION_EXPRESSION');\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n if (token.getKind() === _TokenKind.TokenKind.SELECT_FIRST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.FIRST, toPosToken(token), expr));\n } else if (token.getKind() === _TokenKind.TokenKind.SELECT_LAST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.LAST, toPosToken(token), expr));\n } else {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.ALL, toPosToken(token), expr));\n }\n return true;\n }\n\n /**\n * Eat an identifier, possibly qualified (meaning that it is dotted).\n * TODO AndyC Could create complete identifiers (a.b.c) here rather than a sequence of them? (a, b, c)\n */\n function eatPossiblyQualifiedId() {\n var qualifiedIdPieces = [];\n var node = peekToken();\n while (isValidQualifiedId(node)) {\n nextToken();\n if (node.kind !== _TokenKind.TokenKind.DOT) {\n qualifiedIdPieces.push(_Identifier.Identifier.create(node.stringValue(), toPosToken(node)));\n }\n node = peekToken();\n }\n if (!qualifiedIdPieces.length) {\n if (node === null) {\n raiseInternalException(expressionString.length(), 'OOD');\n }\n raiseInternalException(node.startPos, 'NOT_EXPECTED_TOKEN', 'qualified ID', node.getKind().toString().toLowerCase());\n }\n var pos = toPosBounds(qualifiedIdPieces[0].getStartPosition(), qualifiedIdPieces[qualifiedIdPieces.length - 1].getEndPosition());\n return _QualifiedIdentifier.QualifiedIdentifier.create(pos, qualifiedIdPieces);\n }\n\n function isValidQualifiedId(node) {\n if (node === null || node.kind === _TokenKind.TokenKind.LITERAL_STRING) {\n return false;\n }\n if (node.kind === _TokenKind.TokenKind.DOT || node.kind === _TokenKind.TokenKind.IDENTIFIER) {\n return true;\n }\n var value = node.stringValue();\n return value && value.length && VALID_QUALIFIED_ID_PATTERN.test(value);\n }\n\n // This is complicated due to the support for dollars in identifiers. Dollars are normally separate tokens but\n // there we want to combine a series of identifiers and dollars into a single identifier\n function maybeEatMethodOrProperty(nullSafeNavigation) {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var methodOrPropertyName = nextToken();\n var args = maybeEatMethodArgs();\n if (args === null) {\n // property\n push(_PropertyReference.PropertyReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName)));\n return true;\n }\n // methodreference\n push(_MethodReference.MethodReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName), args));\n // TODO what is the end position for a method reference? the name or the last arg?\n return true;\n }\n return false;\n }\n\n //constructor\n //:\t('new' qualifiedId LPAREN) => 'new' qualifiedId ctorArgs -> ^(CONSTRUCTOR qualifiedId ctorArgs)\n function maybeEatConstructorReference() {\n if (peekIdentifierToken('new')) {\n var newToken = nextToken();\n // It looks like a constructor reference but is NEW being used as a map key?\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'NEW]' (so NEW used as map key)\n push(_PropertyReference.PropertyReference.create(newToken.stringValue(), toPosToken(newToken)));\n return true;\n }\n var possiblyQualifiedConstructorName = eatPossiblyQualifiedId();\n var nodes = [];\n nodes.push(possiblyQualifiedConstructorName);\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n // array initializer\n var dimensions = [];\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n if (!peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n dimensions.push(eatExpression());\n } else {\n dimensions.push(null);\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n }\n if (maybeEatInlineListOrMap()) {\n nodes.push(pop());\n }\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), dimensions, nodes));\n } else {\n // regular constructor invocation\n eatConstructorArgs(nodes);\n // TODO correct end position?\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), nodes));\n }\n return true;\n }\n return false;\n }\n\n function push(newNode) {\n constructedNodes.push(newNode);\n }\n\n function pop() {\n return constructedNodes.pop();\n }\n\n //\tliteral\n // : INTEGER_LITERAL\n //\t| boolLiteral\n //\t| STRING_LITERAL\n // | HEXADECIMAL_INTEGER_LITERAL\n // | REAL_LITERAL\n //\t| DQ_STRING_LITERAL\n //\t| NULL_LITERAL\n function maybeEatLiteral() {\n var token = peekToken();\n if (token === null) {\n return false;\n }\n if (token.getKind() === _TokenKind.TokenKind.LITERAL_INT || token.getKind() === _TokenKind.TokenKind.LITERAL_LONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 10), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_REAL || token.getKind() === _TokenKind.TokenKind.LITERAL_REAL_FLOAT) {\n push(_NumberLiteral.NumberLiteral.create(parseFloat(token.stringValue()), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_HEXINT || token.getKind() === _TokenKind.TokenKind.LITERAL_HEXLONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 16), toPosToken(token)));\n } else if (peekIdentifierToken('true')) {\n push(_BooleanLiteral.BooleanLiteral.create(true, toPosToken(token)));\n } else if (peekIdentifierToken('false')) {\n push(_BooleanLiteral.BooleanLiteral.create(false, toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_STRING) {\n push(_StringLiteral.StringLiteral.create(token.stringValue(), toPosToken(token)));\n } else {\n return false;\n }\n nextToken();\n return true;\n }\n\n //parenExpr : LPAREN! expression RPAREN!;\n function maybeEatParenExpression() {\n if (peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n nextToken();\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(expr);\n return true;\n } else {\n return false;\n }\n }\n\n // relationalOperator\n // : EQUAL | NOT_EQUAL | LESS_THAN | LESS_THAN_OR_EQUAL | GREATER_THAN\n // | GREATER_THAN_OR_EQUAL | INSTANCEOF | BETWEEN | MATCHES\n function maybeEatRelationalOperator() {\n var token = peekToken();\n if (token === null) {\n return null;\n }\n if (token.isNumericRelationalOperator()) {\n return token;\n }\n if (token.isIdentifier()) {\n var idString = token.stringValue();\n if (idString.toLowerCase() === 'instanceof') {\n return token.asInstanceOfToken();\n }\n if (idString.toLowerCase() === 'matches') {\n return token.asMatchesToken();\n }\n if (idString.toLowerCase() === 'between') {\n return token.asBetweenToken();\n }\n }\n return null;\n }\n\n function eatToken(expectedKind) {\n var token = nextToken();\n if (token === null) {\n raiseInternalException(expressionString.length, 'OOD');\n }\n if (token.getKind() !== expectedKind) {\n raiseInternalException(token.startPos, 'NOT_EXPECTED_TOKEN', expectedKind.toString().toLowerCase(), token.getKind().toString().toLowerCase());\n }\n return token;\n }\n\n function peekTokenOne(desiredTokenKind) {\n return peekTokenConsumeIfMatched(desiredTokenKind, false);\n }\n\n function peekTokenConsumeIfMatched(desiredTokenKind, consumeIfMatched) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n if (token.getKind() === desiredTokenKind) {\n if (consumeIfMatched) {\n tokenStreamPointer++;\n }\n return true;\n }\n\n if (desiredTokenKind === _TokenKind.TokenKind.IDENTIFIER) {\n // might be one of the textual forms of the operators (e.g. NE for !== ) - in which case we can treat it as an identifier\n // The list is represented here: Tokenizer.alternativeOperatorNames and those ones are in order in the TokenKind enum\n if (token.getKind().ordinal() >= _TokenKind.TokenKind.DIV.ordinal() && token.getKind().ordinal() <= _TokenKind.TokenKind.NOT.ordinal() && token.data !== null) {\n // if token.data were null, we'd know it wasn'token the textual form, it was the symbol form\n return true;\n }\n }\n return false;\n }\n\n function peekTokenAny() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n var args = Array.prototype.slice.call(arguments);\n for (var i = 0, l = args.length; i < l; i += 1) {\n if (token.getKind() === args[i]) {\n return true;\n }\n }\n return false;\n }\n\n function peekIdentifierToken(identifierString) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.IDENTIFIER && token.stringValue().toLowerCase() === identifierString.toLowerCase();\n }\n\n function peekSelectToken() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.SELECT || token.getKind() === _TokenKind.TokenKind.SELECT_FIRST || token.getKind() === _TokenKind.TokenKind.SELECT_LAST;\n }\n\n function moreTokens() {\n return tokenStreamPointer < tokenStream.length;\n }\n\n function nextToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer++];\n }\n\n function peekToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer];\n }\n\n function raiseInternalException(pos, message, expected, actual) {\n if (expected) {\n message += '\\nExpected: ' + expected;\n }\n if (actual) {\n message += '\\nActual: ' + actual;\n }\n throw {\n name: 'InternalParseException',\n message: 'Error occurred while attempting to parse expression \\'' + expressionString + '\\' at position ' + pos + '. Message: ' + message\n };\n }\n\n function toString(token) {\n if (token.getKind().hasPayload()) {\n return token.stringValue();\n }\n return token.getKind().toString().toLowerCase();\n }\n\n function checkOperands(token, left, right) {\n checkLeftOperand(token, left);\n checkRightOperand(token, right);\n }\n\n function checkLeftOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'LEFT_OPERAND_PROBLEM');\n }\n }\n\n function checkRightOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'RIGHT_OPERAND_PROBLEM');\n }\n }\n\n /**\n * Compress the start and end of a token into a single int.\n */\n function toPosToken(token) {\n return (token.startPos << 16) + token.endPos;\n }\n\n function toPosBounds(start, end) {\n return (start << 16) + end;\n }\n\n return {\n setConfiguration: setConfiguration,\n parse: parse\n };\n};\n\n//not yet implemented\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Tokenizer = undefined;\n\nvar _Token = __webpack_require__(7);\n\nvar _TokenKind = __webpack_require__(2);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Phillip Webb\n * @author Ben March\n * @since 0.2.0\n */\n\nvar ALTERNATIVE_OPERATOR_NAMES = ['DIV', 'EQ', 'GE', 'GT', 'LE', 'LT', 'MOD', 'NE', 'NOT'],\n FLAGS = [],\n IS_DIGIT = 1,\n IS_HEXDIGIT = 2,\n IS_ALPHA = 4;\n\nfunction init() {\n var ch;\n\n for (ch = '0'.charCodeAt(0); ch <= '9'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_DIGIT | IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'F'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'f'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'Z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n}\n\ninit();\n\nfunction tokenize(inputData) {\n var expressionString = inputData,\n toProcess = inputData + '\\0',\n max = toProcess.length,\n pos = 0,\n tokens = [];\n\n function process() {\n var ch;\n\n while (pos < max) {\n ch = toProcess[pos];\n if (isAlphabetic(ch)) {\n lexIdentifier();\n } else {\n switch (ch) {\n case '+':\n if (isTwoCharToken(_TokenKind.TokenKind.INC)) {\n pushPairToken(_TokenKind.TokenKind.INC);\n } else {\n pushCharToken(_TokenKind.TokenKind.PLUS);\n }\n break;\n case '_':\n // the other way to start an identifier\n lexIdentifier();\n break;\n case '-':\n if (isTwoCharToken(_TokenKind.TokenKind.DEC)) {\n pushPairToken(_TokenKind.TokenKind.DEC);\n } else {\n pushCharToken(_TokenKind.TokenKind.MINUS);\n }\n break;\n case ':':\n pushCharToken(_TokenKind.TokenKind.COLON);\n break;\n case '.':\n pushCharToken(_TokenKind.TokenKind.DOT);\n break;\n case ',':\n pushCharToken(_TokenKind.TokenKind.COMMA);\n break;\n case '*':\n pushCharToken(_TokenKind.TokenKind.STAR);\n break;\n case '/':\n pushCharToken(_TokenKind.TokenKind.DIV);\n break;\n case '%':\n pushCharToken(_TokenKind.TokenKind.MOD);\n break;\n case '(':\n pushCharToken(_TokenKind.TokenKind.LPAREN);\n break;\n case ')':\n pushCharToken(_TokenKind.TokenKind.RPAREN);\n break;\n case '[':\n pushCharToken(_TokenKind.TokenKind.LSQUARE);\n break;\n case '#':\n pushCharToken(_TokenKind.TokenKind.HASH);\n break;\n case ']':\n pushCharToken(_TokenKind.TokenKind.RSQUARE);\n break;\n case '{':\n pushCharToken(_TokenKind.TokenKind.LCURLY);\n break;\n case '}':\n pushCharToken(_TokenKind.TokenKind.RCURLY);\n break;\n case '@':\n pushCharToken(_TokenKind.TokenKind.BEAN_REF);\n break;\n case '^':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_FIRST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_FIRST);\n } else {\n pushCharToken(_TokenKind.TokenKind.POWER);\n }\n break;\n case '!':\n if (isTwoCharToken(_TokenKind.TokenKind.NE)) {\n pushPairToken(_TokenKind.TokenKind.NE);\n } else if (isTwoCharToken(_TokenKind.TokenKind.PROJECT)) {\n pushPairToken(_TokenKind.TokenKind.PROJECT);\n } else {\n pushCharToken(_TokenKind.TokenKind.NOT);\n }\n break;\n case '=':\n if (isTwoCharToken(_TokenKind.TokenKind.EQ)) {\n pushPairToken(_TokenKind.TokenKind.EQ);\n } else {\n pushCharToken(_TokenKind.TokenKind.ASSIGN);\n }\n break;\n case '&':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'&\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_AND);\n break;\n case '|':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'|\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_OR);\n break;\n case '?':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT)) {\n pushPairToken(_TokenKind.TokenKind.SELECT);\n } else if (isTwoCharToken(_TokenKind.TokenKind.ELVIS)) {\n pushPairToken(_TokenKind.TokenKind.ELVIS);\n } else if (isTwoCharToken(_TokenKind.TokenKind.SAFE_NAVI)) {\n pushPairToken(_TokenKind.TokenKind.SAFE_NAVI);\n } else {\n pushCharToken(_TokenKind.TokenKind.QMARK);\n }\n break;\n case '$':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_LAST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_LAST);\n } else {\n lexIdentifier();\n }\n break;\n case '>':\n if (isTwoCharToken(_TokenKind.TokenKind.GE)) {\n pushPairToken(_TokenKind.TokenKind.GE);\n } else {\n pushCharToken(_TokenKind.TokenKind.GT);\n }\n break;\n case '<':\n if (isTwoCharToken(_TokenKind.TokenKind.LE)) {\n pushPairToken(_TokenKind.TokenKind.LE);\n } else {\n pushCharToken(_TokenKind.TokenKind.LT);\n }\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n lexNumericLiteral(ch === '0');\n break;\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n // drift over white space\n pos += 1;\n break;\n case '\\'':\n lexQuotedStringLiteral();\n break;\n case '\"':\n lexDoubleQuotedStringLiteral();\n break;\n case '\\0':\n // hit sentinel at end of value\n pos += 1; // will take us to the end\n break;\n case '\\\\':\n throw {\n name: 'SpelParseException',\n message: 'Unexpected escape character in expression (' + expressionString + ') at position ' + pos\n };\n default:\n throw {\n name: 'SpelParseException',\n message: 'Cannot handle character \\'' + ch + '\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n }\n }\n\n function lexQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\\'') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\\'') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n function lexDoubleQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\"') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\"') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating double-quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n\n // REAL_LITERAL :\n // ('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));\n // fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );\n // fragment HEX_DIGIT :\n // '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';\n //\n // fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)*\n // (DECIMAL_DIGIT)+ ;\n // fragment SIGN : '+' | '-' ;\n // fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';\n // INTEGER_LITERAL\n // : (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;\n\n function lexNumericLiteral(firstCharIsZero) {\n var isReal = false,\n start = pos,\n ch = toProcess[pos + 1],\n isHex = ch === 'x' || ch === 'X',\n dotpos,\n endOfNumber,\n possibleSign,\n isFloat;\n\n // deal with hexadecimal\n if (firstCharIsZero && isHex) {\n pos = pos + 1;\n do {\n pos += 1;\n } while (isHexadecimalDigit(toProcess[pos]));\n if (isChar('L', 'l')) {\n pushHexIntToken(subarray(start + 2, pos), true, start, pos);\n pos += 1;\n } else {\n pushHexIntToken(subarray(start + 2, pos), false, start, pos);\n }\n return;\n }\n\n // real numbers must have leading digits\n\n // Consume first part of number\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n\n // a '.' indicates this number is a real\n ch = toProcess[pos];\n if (ch === '.') {\n isReal = true;\n dotpos = pos;\n // carry on consuming digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n if (pos === dotpos + 1) {\n // the number is something like '3.'. It is really an int but may be\n // part of something like '3.toString()'. In this case process it as\n // an int and leave the dot as a separate token.\n pos = dotpos;\n pushIntToken(subarray(start, pos), false, start, pos);\n return;\n }\n }\n\n endOfNumber = pos;\n\n // Now there may or may not be an exponent\n\n // is it a long ?\n if (isChar('L', 'l')) {\n if (isReal) {\n // 3.4L - not allowed\n throw {\n name: 'SpelParseException',\n message: 'Real cannot be long in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushIntToken(subarray(start, endOfNumber), true, start, endOfNumber);\n pos += 1;\n } else if (isExponentChar(toProcess[pos])) {\n isReal = true; // if it wasn't before, it is now\n pos += 1;\n possibleSign = toProcess[pos];\n if (isSign(possibleSign)) {\n pos += 1;\n }\n\n // exponent digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n isFloat = false;\n if (isFloatSuffix(toProcess[pos])) {\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(toProcess[pos])) {\n pos += 1;\n endOfNumber = pos;\n }\n pushRealToken(subarray(start, pos), isFloat, start, pos);\n } else {\n ch = toProcess[pos];\n isFloat = false;\n if (isFloatSuffix(ch)) {\n isReal = true;\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(ch)) {\n isReal = true;\n pos += 1;\n endOfNumber = pos;\n }\n if (isReal) {\n pushRealToken(subarray(start, endOfNumber), isFloat, start, endOfNumber);\n } else {\n pushIntToken(subarray(start, endOfNumber), false, start, endOfNumber);\n }\n }\n }\n\n function lexIdentifier() {\n var start = pos,\n substring,\n asString,\n idx;\n do {\n pos += 1;\n } while (isIdentifier(toProcess[pos]));\n substring = subarray(start, pos);\n\n // Check if this is the alternative (textual) representation of an operator (see\n // alternativeOperatorNames)\n if (pos - start === 2 || pos - start === 3) {\n asString = substring.toUpperCase();\n idx = ALTERNATIVE_OPERATOR_NAMES.indexOf(asString);\n if (idx >= 0) {\n pushOneCharOrTwoCharToken(_TokenKind.TokenKind.valueOf(asString), start, substring);\n return;\n }\n }\n tokens.push(new _Token.Token(_TokenKind.TokenKind.IDENTIFIER, substring.replace('\\0', ''), start, pos));\n }\n\n function pushIntToken(data, isLong, start, end) {\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_LONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_INT, data, start, end));\n }\n }\n\n function pushHexIntToken(data, isLong, start, end) {\n if (data.length === 0) {\n if (isLong) {\n throw {\n name: 'SpelParseException',\n message: 'Not a long in expression (' + expressionString + ') at position ' + pos\n };\n } else {\n throw {\n name: 'SpelParseException',\n message: 'Not an int in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXLONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXINT, data, start, end));\n }\n }\n\n function pushRealToken(data, isFloat, start, end) {\n if (isFloat) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL_FLOAT, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL, data, start, end));\n }\n }\n\n function subarray(start, end) {\n return toProcess.substring(start, end);\n }\n\n /**\n * Check if this might be a two character token.\n */\n function isTwoCharToken(kind) {\n if (kind.tokenChars.length === 2 && toProcess[pos] === kind.tokenChars[0]) {\n return toProcess[pos + 1] === kind.tokenChars[1];\n }\n return false;\n }\n\n /**\n * Push a token of just one character in length.\n */\n function pushCharToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 1));\n pos += 1;\n }\n\n /**\n * Push a token of two characters in length.\n */\n function pushPairToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 2));\n pos += 2;\n }\n\n function pushOneCharOrTwoCharToken(kind, pos, data) {\n tokens.push(new _Token.Token(kind, data, pos, pos + kind.getLength()));\n }\n\n // ID: ('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'_'|'$'|'0'..'9'|DOT_ESCAPED)*;\n function isIdentifier(ch) {\n return isAlphabetic(ch) || isDigit(ch) || ch === '_' || ch === '$';\n }\n\n function isChar(a, b) {\n var ch = toProcess[pos];\n return ch === a || ch === b;\n }\n\n function isExponentChar(ch) {\n return ch === 'e' || ch === 'E';\n }\n\n function isFloatSuffix(ch) {\n return ch === 'f' || ch === 'F';\n }\n\n function isDoubleSuffix(ch) {\n return ch === 'd' || ch === 'D';\n }\n\n function isSign(ch) {\n return ch === '+' || ch === '-';\n }\n\n function isDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_DIGIT) !== 0;\n }\n\n function isAlphabetic(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_ALPHA) !== 0;\n }\n\n function isHexadecimalDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_HEXDIGIT) !== 0;\n }\n\n process();\n\n return tokens;\n}\n\nvar Tokenizer = exports.Tokenizer = {\n tokenize: tokenize\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Token = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nfunction Token(tokenKind, tokenData, startPos, endPos) {\n this.kind = tokenKind;\n this.startPos = startPos;\n this.endPos = endPos;\n if (tokenData) {\n this.data = tokenData;\n }\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nToken.prototype.getKind = function () {\n return this.kind;\n};\n\nToken.prototype.toString = function () {\n var s = '[';\n s += this.kind.toString();\n if (this.kind.hasPayload()) {\n s += ':' + this.data;\n }\n s += ']';\n s += '(' + this.startPos + ',' + this.endPos + ')';\n return s;\n};\n\nToken.prototype.isIdentifier = function () {\n return this.kind === _TokenKind.TokenKind.IDENTIFIER;\n};\n\nToken.prototype.isNumericRelationalOperator = function () {\n return this.kind === _TokenKind.TokenKind.GT || this.kind === _TokenKind.TokenKind.GE || this.kind === _TokenKind.TokenKind.LT || this.kind === _TokenKind.TokenKind.LE || this.kind === _TokenKind.TokenKind.EQ || this.kind === _TokenKind.TokenKind.NE;\n};\n\nToken.prototype.stringValue = function () {\n return this.data;\n};\n\nToken.prototype.asInstanceOfToken = function () {\n return new Token(_TokenKind.TokenKind.INSTANCEOF, this.startPos, this.endPos);\n};\n\nToken.prototype.asMatchesToken = function () {\n return new Token(_TokenKind.TokenKind.MATCHES, this.startPos, this.endPos);\n};\n\nToken.prototype.asBetweenToken = function () {\n return new Token(_TokenKind.TokenKind.BETWEEN, this.startPos, this.endPos);\n};\n\nToken.prototype.getStartPosition = function () {\n return this.startPos;\n};\n\nToken.prototype.getEndPosition = function () {\n return this.endPos;\n};\n\nexports.Token = Token;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BooleanLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the literal values TRUE and FALSE.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('boolean', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BooleanLiteral = exports.BooleanLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NumberLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a literal number of any kind (since JavaScript only supports doubles anyway)\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('number', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NumberLiteral = exports.NumberLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StringLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a string literal.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('string', position);\n\n function stripQuotes(value) {\n if (value[0] === '\\'' && value[value.length - 1] === '\\'' || value[0] === '\"' && value[value.length - 1] === '\"') {\n value = value.substring(1, value.length - 1);\n }\n\n return value.replace(/''/g, '\\'').replace(/\"\"/g, '\"');\n }\n\n //value cannot be null so no check\n value = stripQuotes(value);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar StringLiteral = exports.StringLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NullLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents null.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('null', position);\n\n node.getValue = function () {\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NullLiteral = exports.NullLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FunctionReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * A function reference is of the form \"#someFunction(a,b,c)\". Functions may be defined in\n * the context prior to the expression being evaluated or within the expression itself\n * using a lambda function definition. For example: Lambda function definition in an\n * expression: \"(#max = {|x,y|$x>$y?$x:$y};max(2,3))\" Calling context defined function:\n * \"#isEven(37)\". Functions may also be static java methods, registered in the context\n * prior to invocation of the expression.\n *\n * <p>Functions are very simplistic, the arguments are not part of the definition (right\n * now), so the names must be unique.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(functionName, position, args) {\n var node = _SpelNode.SpelNode.create('function', position);\n\n node.getRaw = function () {\n return {\n functionName: functionName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var locals = state.locals || {},\n context = state.rootContext,\n compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (locals[functionName]) {\n return locals[functionName].apply(context, compiledArgs);\n }\n\n throw {\n name: 'FunctionDoesNotExistException',\n message: 'Function \\'' + functionName + '\\' does not exist.'\n };\n };\n\n return node;\n}\n\nvar FunctionReference = exports.FunctionReference = {\n create: createNode\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MethodReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * Expression language AST node that represents a method reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(nullSafeNavigation, methodName, position, args) {\n var node = _SpelNode.SpelNode.create('method', position);\n\n node.getRaw = function () {\n return {\n methodName: methodName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n compiledArgs = [],\n method;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + methodName + '\\' for an undefined context.'\n };\n }\n\n //handle safe navigation\n function maybeHandleNullSafeNavigation(member) {\n if (member === undefined || member === null) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Method ' + methodName + ' does not exist.'\n };\n }\n\n return member;\n }\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n //accessors might not be available\n if (methodName.substr(0, 3) === 'get' && !context[methodName]) {\n return maybeHandleNullSafeNavigation(context[methodName.charAt(3).toLowerCase() + methodName.substring(4)]);\n }\n if (methodName.substr(0, 3) === 'set' && !context[methodName]) {\n /*jshint -W093 */\n return context[methodName.charAt(3).toLowerCase() + methodName.substring(4)] = compiledArgs[0];\n /*jshint +W093 */\n }\n\n //array methods\n if (Array.isArray(context)) {\n //size() -> length\n if (methodName === 'size') {\n return context.length;\n }\n\n if (methodName === 'contains') {\n return context.includes(compiledArgs[0]);\n }\n }\n\n method = maybeHandleNullSafeNavigation(context[methodName]);\n if (method) {\n return method.apply(context, compiledArgs);\n }\n return null;\n };\n\n return node;\n}\n\nvar MethodReference = exports.MethodReference = {\n create: createNode\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PropertyReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a simple property or field reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Clark Duplichien\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(nullSafeNavigation, propertyName, position) {\n var node = _SpelNode.SpelNode.create('property', position);\n\n node.getRaw = function () {\n return propertyName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n if (context[propertyName] === undefined || context[propertyName] === null) {\n //handle safe navigation\n if (nullSafeNavigation) {\n return null;\n }\n\n //handle conversion of Java properties to JavaScript properties\n if (propertyName === 'size' && Array.isArray(context)) {\n return context.length;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Property \\'' + propertyName + '\\' does not exist.'\n };\n }\n\n return context[propertyName];\n };\n\n node.setValue = function (value, state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n /*jshint -W093 */\n return context[propertyName] = value;\n /*jshint +W093 */\n };\n\n node.getName = function () {\n return propertyName;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar PropertyReference = exports.PropertyReference = {\n create: createNode\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VariableReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a variable reference, eg. #someVar. Note this is different to a *local*\n * variable like $someVar\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(variableName, position) {\n var node = _SpelNode.SpelNode.create('variable', position);\n\n node.getRaw = function () {\n return variableName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n locals = state.locals;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up variable \\'' + variableName + '\\' for an undefined context.'\n };\n }\n\n //there are 2 keywords (root, this) that need to be dealt with\n if (variableName === 'this') {\n return context;\n }\n if (variableName === 'root') {\n return state.rootContext;\n }\n\n return locals[variableName];\n };\n\n node.setValue = function (value, state) {\n var locals = state.locals;\n\n /*jshint -W093 */\n return locals[variableName] = value;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar VariableReference = exports.VariableReference = {\n create: createNode\n};\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CompoundExpression = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a DOT separated expression sequence, such as 'property1.property2.methodOne()'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['compound', position].concat(expressionComponents));\n\n function buildContextStack(state) {\n var childrenCount = node.getChildren().length,\n i;\n\n for (i = 0; i < childrenCount; i += 1) {\n if (node.getChildren()[i].getType() === 'indexer') {\n state.activeContext.push(state.activeContext.peek()[node.getChildren()[i].getValue(state)]);\n } else {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n }\n\n return function unbuildContextStack() {\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n };\n }\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n value;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n var unbuildContextStack = buildContextStack(state);\n\n value = state.activeContext.peek();\n\n unbuildContextStack();\n\n return value;\n };\n\n node.setValue = function (value, state) {\n var unbuildContextStack = buildContextStack(state),\n childCount = node.getChildren().length;\n\n state.activeContext.pop();\n\n value = node.getChildren()[childCount - 1].setValue(value, state);\n\n state.activeContext.push(null);\n\n unbuildContextStack();\n\n return value;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar CompoundExpression = exports.CompoundExpression = {\n create: createNode\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Indexer = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * An Indexer can index into some proceeding structure to access a particular piece of it.\n * Supported structures are: strings / collections (lists/sets) / arrays.\n *\n * @author Andy Clement\n * @author Phillip Webb\n * @author Stephane Nicoll\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['indexer', position].concat(expressionComponents));\n\n node.getValue = function (state) {\n var activeContext = state.activeContext,\n context,\n childrenCount = node.getChildren().length,\n i,\n value;\n\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n\n value = state.activeContext.peek();\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n\n state.activeContext = activeContext;\n\n return value;\n };\n\n //node.setContext(node.getValue());\n\n return node;\n}\n\nvar Indexer = exports.Indexer = {\n create: createNode\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Assign = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents assignment. An alternative to calling setValue() for an expression is to use\n * an assign.\n *\n * <p>Example: 'someNumberProperty=42'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, property, assignedValue) {\n var node = _SpelNode.SpelNode.create('assign', position, property, assignedValue);\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + property.getValue(state) + '\\' for an undefined context.'\n };\n }\n\n return property.setValue(assignedValue.getValue(state), state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Assign = exports.Assign = {\n create: createNode\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpEQ = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the equality operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-eq', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) === right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpEQ = exports.OpEQ = {\n create: createNode\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the not-equal operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ne', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) !== right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNE = exports.OpNE = {\n create: createNode\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements greater-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ge', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) >= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGE = exports.OpGE = {\n create: createNode\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the greater-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-gt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) > right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGT = exports.OpGT = {\n create: createNode\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-le', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) <= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLE = exports.OpLE = {\n create: createNode\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-lt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) < right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLT = exports.OpLT = {\n create: createNode\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPlus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The plus operator will:\n * <ul>\n * <li>add numbers\n * <li>concatenate strings\n * </ul>\n *\n * <p>It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double+int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ivo Smid\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-plus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return +left.getValue(state);\n }\n //javascript will handle string concatenation or addition depending on types\n return left.getValue(state) + right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPlus = exports.OpPlus = {\n create: createNode\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMinus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The minus operator supports:\n * <ul>\n * <li>subtraction of numbers\n * <li>subtraction of an int from a string of one character\n * (effectively decreasing that character), so 'd'-3='a'\n * </ul>\n *\n * <p>It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double-int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-minus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return -left.getValue(state);\n }\n return left.getValue(state) - right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMinus = exports.OpMinus = {\n create: createNode\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMultiply = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the {@code multiply} operator.\n *\n * <p>Conversions and promotions are handled as defined in\n * <a href=\"http://java.sun.com/docs/books/jls/third_edition/html/conversions.html\">Section 5.6.2 of the\n * Java Language Specification</a>, with the addiction of {@code BigDecimal}/{@code BigInteger} management:\n *\n * <p>If any of the operands is of a reference type, unboxing conversion (Section 5.1.8)\n * is performed. Then:<br>\n * If either operand is of type {@code BigDecimal}, the other is converted to {@code BigDecimal}.<br>\n * If either operand is of type double, the other is converted to double.<br>\n * Otherwise, if either operand is of type float, the other is converted to float.<br>\n * If either operand is of type {@code BigInteger}, the other is converted to {@code BigInteger}.<br>\n * Otherwise, if either operand is of type long, the other is converted to long.<br>\n * Otherwise, both operands are converted to type int.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Sam Brannen\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-multiply', position, left, right);\n\n node.getValue = function (state) {\n var leftValue = left.getValue(state),\n rightValue = right.getValue(state);\n\n if (typeof leftValue === 'number' && typeof rightValue === 'number') {\n return leftValue * rightValue;\n }\n\n //repeats (ex. 'abc' * 2 = 'abcabc')\n if (typeof leftValue === 'string' && typeof rightValue === 'number') {\n var s = '',\n i = 0;\n for (; i < rightValue; i += 1) {\n s += leftValue;\n }\n return s;\n }\n\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMultiply = exports.OpMultiply = {\n create: createNode\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDivide = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements division operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-divide', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) / right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDivide = exports.OpDivide = {\n create: createNode\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpModulus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the modulus operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-modulus', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) % right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpModulus = exports.OpModulus = {\n create: createNode\n};\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPower = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The power operator.\n *\n * @author Andy Clement\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, base, exp) {\n var node = _SpelNode.SpelNode.create('op-power', position, base, exp);\n\n node.getValue = function (state) {\n return Math.pow(base.getValue(state), exp.getValue(state));\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPower = exports.OpPower = {\n create: createNode\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInc = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Increment operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support increment.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-inc', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur + 1, state);\n if (postfix) {\n return cur;\n }\n return cur + 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInc = exports.OpInc = {\n create: createNode\n};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDec = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Decrement operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support decrement.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-dec', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur - 1, state);\n if (postfix) {\n return cur;\n }\n return cur - 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDec = exports.OpDec = {\n create: createNode\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNot = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a NOT operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expr) {\n var node = _SpelNode.SpelNode.create('op-not', position, expr);\n\n node.getValue = function (state) {\n return !expr.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNot = exports.OpNot = {\n create: createNode\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpAnd = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean AND operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-and', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) && !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpAnd = exports.OpAnd = {\n create: createNode\n};\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpOr = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean OR operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-or', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) || !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpOr = exports.OpOr = {\n create: createNode\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMatches = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the matches operator. Matches takes two operands:\n * The first is a String and the second is a Java regex.\n * It will return {@code true} when {@link #getValue} is called\n * if the first operand matches the regex.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Chris Thielen\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('matches', position, left, right);\n\n /**\n * Check the first operand matches the regex specified as the second operand.\n * @param state the expression state\n * @return {@code true} if the first operand matches the regex specified as the\n * second operand, otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n * (e.g. the regex is invalid)\n */\n node.getValue = function (state) {\n var data = left.getValue(state);\n var regexpString = right.getValue(state);\n\n try {\n var regexp = new RegExp(regexpString);\n return !!regexp.exec(data);\n } catch (error) {\n throw {\n name: 'EvaluationException',\n message: error.toString()\n };\n }\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMatches = exports.OpMatches = {\n create: createNode\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Ternary = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a ternary expression, for example: \"someCheck()?true:false\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifTrue, ifFalse) {\n var node = _SpelNode.SpelNode.create('ternary', position, expression, ifTrue, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) ? ifTrue.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Ternary = exports.Ternary = {\n create: createNode\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Elvis = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the elvis operator ?:. For an expression \"a?:b\" if a is not null, the value\n * of the expression is \"a\", if a is null then the value of the expression is \"b\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifFalse) {\n var node = _SpelNode.SpelNode.create('elvis', position, expression, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) !== null ? expression.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Elvis = exports.Elvis = {\n create: createNode\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineList = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a list in an expression, e.g. '{1,2,3}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('list', position),\n list = [].concat(elements || []);\n\n node.getRaw = function () {\n return list;\n };\n\n node.getValue = function (state) {\n return list.map(function (element) {\n return element.getValue(state);\n });\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineList = exports.InlineList = {\n create: createNode\n};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineMap = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a map in an expression, e.g. '{name:'foo',age:12}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('map', position),\n mapPieces = [].concat(elements || []);\n\n node.getValue = function (state) {\n var key = true,\n keyValue = null,\n map = {};\n\n mapPieces.forEach(function (piece) {\n if (key) {\n //unquoted property names come as type \"property\" but should be treated as strings\n if (piece.getType() === 'property') {\n keyValue = piece.getName();\n } else {\n keyValue = piece.getValue(state);\n }\n } else {\n map[keyValue] = piece.getValue(state);\n }\n key = !key;\n });\n\n return map;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineMap = exports.InlineMap = {\n create: createNode\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Selection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents selection over a map or collection.\n * For example: {1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'} returns [2, 4, 6, 8, 10]\n *\n * <p>Basically a subset of the input data is returned based on the\n * evaluation of the expression supplied as selection criteria.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Sam Brannen\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction matches(element, expr, state) {\n var doesMatch = false;\n state.activeContext.push(element);\n doesMatch = expr.getValue(state);\n state.activeContext.pop();\n return doesMatch;\n}\n\nfunction selectFromArray(collection, whichElement, expr, state) {\n var newCollection = collection.filter(function (element) {\n return matches(element, expr, state);\n });\n\n switch (whichElement) {\n case 'ALL':\n return newCollection;\n case 'FIRST':\n return newCollection[0] || null;\n case 'LAST':\n if (newCollection.length) {\n return newCollection[newCollection.length - 1];\n }\n return null;\n }\n}\n\nfunction selectFromMap(collection, whichElement, expr, state) {\n var newCollection = {},\n entry,\n key,\n entries = [],\n returnValue = {};\n\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entry = {\n key: key,\n value: collection[key]\n };\n if (matches(entry, expr, state)) {\n entries.push(entry);\n }\n }\n }\n\n switch (whichElement) {\n case 'ALL':\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n return newCollection;\n case 'FIRST':\n if (entries.length) {\n returnValue[entries[0].key] = entries[0].value;\n return returnValue;\n }\n return null;\n case 'LAST':\n if (entries.length) {\n returnValue[entries[entries.length - 1].key] = entries[entries.length - 1].value;\n return returnValue;\n }\n return null;\n }\n\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n}\n\nfunction createNode(nullSafeNavigation, whichElement, position, expr) {\n var node = _SpelNode.SpelNode.create('selection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek();\n\n if (collection) {\n if (Array.isArray(collection)) {\n return selectFromArray(collection, whichElement, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n return selectFromMap(collection, whichElement, expr, state);\n }\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Selection = exports.Selection = {\n create: createNode,\n FIRST: 'FIRST',\n LAST: 'LAST',\n ALL: 'ALL'\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Projection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents projection, where a given operation is performed on all elements in some\n * input sequence, returning a new sequence of the same size. For example:\n * \"{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}\" returns \"[n, y, n, y, n, y, n, y, n, y]\"\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction projectCollection(collection, expr, state) {\n return collection.map(function (element) {\n var matches;\n state.activeContext.push(element);\n matches = expr.getValue(state);\n state.activeContext.pop();\n return matches;\n });\n}\n\nfunction createNode(nullSafeNavigation, position, expr) {\n var node = _SpelNode.SpelNode.create('projection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek(),\n entries = [],\n key;\n\n if (Array.isArray(collection)) {\n return projectCollection(collection, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entries.push(collection[key]);\n }\n }\n return projectCollection(entries, expr, state);\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Projection = exports.Projection = {\n create: createNode\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInstanceof = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The operator 'instanceof' checks if an object is of the class specified in the right\n * hand operand, in the same way that {@code instanceof} does in Java.\n *\n * THIS OPERATOR IS NOT IMPLEMENTED AND WILL THROW AN EXCEPTION\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('instanceof', position, left, right);\n\n /**\n * Compare the left operand to see it is an instance of the type specified as the\n * right operand. The right operand must be a class.\n * @param state the expression state\n * @return {@code true} if the left operand is an instanceof of the right operand,\n * otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpInstanceOf: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInstanceof = exports.OpInstanceof = {\n create: createNode\n};\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpBetween = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the between operator. The left operand to between must be a single value and\n * the right operand must be a list - this operator returns true if the left operand is\n * between (using the registered comparator) the two elements in the list. The definition\n * of between being inclusive follows the SQL BETWEEN definition.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('between', position, left, right);\n\n /**\n * Returns a boolean based on whether a value is in the range expressed. The first\n * operand is any value whilst the second is a list of two values - those two values\n * being the bounds allowed for the first operand (inclusive).\n * @param state the expression state\n * @return true if the left operand is in the range specified, false otherwise\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpBetween: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpBetween = exports.OpBetween = {\n create: createNode\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TypeReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a reference to a type, for example\n * {@code \"T(String)\" or \"T(com.somewhere.Foo)\"}.\n *\n * @author Andy Clement\n */\nfunction createNode(position, node, _dims) {\n var node = _SpelNode.SpelNode.create('typeref', position, node);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'TypeReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar TypeReference = exports.TypeReference = {\n create: createNode\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BeanReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a bean reference to a type, for example <tt>@foo</tt> or <tt>@'foo.bar'</tt>.\n * For a FactoryBean the syntax <tt>&foo</tt> can be used to access the factory itself.\n *\n * @author Andy Clement\n */\nfunction createNode(position, beanName) {\n var node = _SpelNode.SpelNode.create('beanref', position);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'BeanReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BeanReference = exports.BeanReference = {\n create: createNode\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Identifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * An 'identifier' {@link SpelNode}.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(identifierName, position) {\n var node = _SpelNode.SpelNode.create('identifier', position);\n\n node.getRaw = function () {\n return identifierName;\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'Identifier: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Identifier = exports.Identifier = {\n create: createNode\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.QualifiedIdentifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents a dot separated sequence of strings that indicate a package qualified type\n * reference.\n *\n * <p>Example: \"java.lang.String\" as in the expression \"new java.lang.String('hello')\"\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, pieces) {\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['qualifiedidentifier', position].concat(_toConsumableArray(pieces)));\n\n node.getRaw = function () {\n return pieces.map(function (p) {\n return p.getRaw();\n });\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'QualifiedIdentifier: Not implemented'\n };\n };\n\n return node;\n}\n\nvar QualifiedIdentifier = exports.QualifiedIdentifier = {\n create: createNode\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConstructorReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the invocation of a constructor. Either a constructor on a regular type or\n * construction of an array. When an array is constructed, an initializer can be specified.\n *\n * <p>Examples:<br>\n * new String('hello world')<br>\n * new int[]{1,2,3,4}<br>\n * new int[3] new int[3]{1,2,3}\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @since 3.0\n */\nfunction createNode(position, dimensions, nodes) {\n var isArray = nodes !== undefined;\n var dimension;\n if (isArray) {\n dimension = dimensions.length && dimensions[0] && dimensions[0].getType() === 'number' ? dimensions[0].getValue() : null;\n } else {\n nodes = dimensions;\n dimensions = undefined;\n }\n\n var _nodes = nodes,\n _nodes2 = _toArray(_nodes),\n _qualifiedIdentifier = _nodes2[0],\n args = _nodes2.slice(1);\n\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['constructorref', position].concat(_toConsumableArray(nodes)));\n\n node.getRaw = function () {\n return dimension;\n };\n\n node.getValue = function (state) {\n if (isArray && args.length <= 1) {\n var compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (args.length === 1) {\n return compiledArgs[0];\n } else {\n return dimension ? new Array(dimension) : [];\n }\n }\n\n throw {\n name: 'MethodNotImplementedException',\n message: 'ConstructorReference: Not implemented'\n };\n };\n\n return node;\n}\n\nvar ConstructorReference = exports.ConstructorReference = {\n create: createNode\n};\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction create(authentication, principal) {\n var context = {};\n\n context.authentication = authentication || {};\n context.principal = principal || {};\n\n context.hasRole = function (role) {\n var hasRole = false;\n\n if (!role) {\n return false;\n }\n if (!context.authentication && !Array.isArray(context.authentication.authorities)) {\n return false;\n }\n\n context.authentication.authorities.forEach(function (grantedAuthority) {\n if (grantedAuthority.authority.toLowerCase() === role.toLowerCase()) {\n hasRole = true;\n }\n });\n\n return hasRole;\n };\n\n context.hasPermission = function () /*variable arguments*/{\n var args = Array.prototype.slice.call(arguments);\n\n if (args.length === 1) {\n return context.hasRole(args[0]);\n }\n };\n\n return context;\n}\n\nvar StandardContext = exports.StandardContext = {\n create: create\n};\n\n/***/ })\n/******/ ]);\n});","import type { DefaultCombinatorName, DefaultOperatorName } from '../../types';\nimport type {\n SpELBaseNode,\n SpELBetweenFields,\n SpELBetweenValues,\n SpELBooleanLiteral,\n SpELCompoundNode,\n SpELExpressionNode,\n SpELIdentifier,\n SpELListNode,\n SpELNodeType,\n SpELNullLiteral,\n SpELNumericLiteral,\n SpELOpAnd,\n SpELOpMatches,\n SpELOpOr,\n SpELPrimitive,\n SpELProcessedExpression,\n SpELPropertyNode,\n SpELRelOpType,\n SpELRelation as SpELRelationOp,\n SpELStringLiteral,\n} from './types';\n\nexport const isSpELPropertyNode = (expr: SpELBaseNode<SpELNodeType>): expr is SpELPropertyNode => {\n return expr.getType() === 'property' || expr.getType() === 'variable';\n};\nexport const isSpELCompoundNode = (expr: SpELBaseNode<SpELNodeType>): expr is SpELCompoundNode => {\n return expr.getType() === 'compound' && expr.getChildren().every(c => isSpELPropertyNode(c));\n};\nexport const isSpELListNode = (expr: SpELBaseNode<SpELNodeType>): expr is SpELListNode => {\n return expr.getType() === 'list';\n};\n\nexport const isSpELOpAnd = (expr: SpELProcessedExpression): expr is SpELOpAnd =>\n expr.type === 'op-and';\nexport const isSpELOpOr = (expr: SpELProcessedExpression): expr is SpELOpOr =>\n expr.type === 'op-or';\nexport const isSpELOpMatches = (expr: SpELProcessedExpression): expr is SpELOpMatches =>\n expr.type === 'matches' &&\n ((isSpELIdentifier(expr.children[0]) && isSpELStringLiteral(expr.children[1])) ||\n (isSpELIdentifier(expr.children[1]) && isSpELStringLiteral(expr.children[0])) ||\n (isSpELIdentifier(expr.children[0]) && isSpELIdentifier(expr.children[1])));\nexport const isSpELIdentifier = (expr: SpELProcessedExpression): expr is SpELIdentifier =>\n expr.type === 'property' || expr.type === 'variable' || expr.type === 'compound';\nexport const isSpELStringLiteral = (expr: SpELProcessedExpression): expr is SpELStringLiteral =>\n expr.type === 'string';\nexport const isSpELNumericLiteral = (expr: SpELProcessedExpression): expr is SpELNumericLiteral =>\n expr.type === 'number';\nexport const isSpELBooleanLiteral = (expr: SpELProcessedExpression): expr is SpELBooleanLiteral =>\n expr.type === 'boolean';\nexport const isSpELNullLiteral = (expr: SpELProcessedExpression): expr is SpELNullLiteral =>\n expr.type === 'null';\nexport const isSpELRelationOp = (expr: SpELProcessedExpression): expr is SpELRelationOp =>\n expr.type === 'op-eq' ||\n expr.type === 'op-ne' ||\n expr.type === 'op-gt' ||\n expr.type === 'op-ge' ||\n expr.type === 'op-lt' ||\n expr.type === 'op-le';\nexport const isSpELPrimitive = (expr: SpELProcessedExpression): expr is SpELPrimitive =>\n isSpELNumericLiteral(expr) ||\n isSpELStringLiteral(expr) ||\n isSpELBooleanLiteral(expr) ||\n isSpELNullLiteral(expr);\nexport const isSpELBetweenValues = (expr: SpELProcessedExpression): expr is SpELBetweenValues =>\n expr.type === 'between' &&\n isSpELIdentifier(expr.children[0]) &&\n expr.children[1].type === 'list' &&\n expr.children[1].children.length >= 2 &&\n expr.children[1].children.every(c => isSpELPrimitive(c));\nexport const isSpELBetweenFields = (expr: SpELProcessedExpression): expr is SpELBetweenFields =>\n expr.type === 'between' &&\n isSpELIdentifier(expr.children[0]) &&\n expr.children[1].type === 'list' &&\n expr.children[1].children.length >= 2 &&\n expr.children[1].children.every(c => isSpELIdentifier(c));\n\nexport const processCompiledExpression = (\n ce: SpELPropertyNode | SpELExpressionNode\n): SpELProcessedExpression => {\n const type = ce.getType();\n const identifier = isSpELCompoundNode(ce)\n ? ce\n .getChildren()\n .map(p => (isSpELPropertyNode(p) ? p.getRaw() : /* istanbul ignore next */ ''))\n .join('.')\n : isSpELPropertyNode(ce)\n ? ce.getRaw()\n : null;\n const children =\n type === 'compound'\n ? []\n : (isSpELListNode(ce) ? ce.getRaw : ce.getChildren)().map(c => processCompiledExpression(c));\n const startPosition = ce.getStartPosition();\n const endPosition = ce.getEndPosition();\n const value = ce.getValue.length === 0 ? ce.getValue() : 'N/A';\n\n return {\n type: type === 'compound' && !identifier ? 'invalid' : type,\n children,\n startPosition,\n endPosition,\n value,\n identifier,\n };\n};\n\nexport const normalizeOperator = (opType: SpELRelOpType, flip?: boolean): DefaultOperatorName => {\n if (flip) {\n if (opType === 'op-lt') return '>';\n if (opType === 'op-le') return '>=';\n if (opType === 'op-gt') return '<';\n if (opType === 'op-ge') return '<=';\n }\n return (\n {\n 'op-eq': '=',\n 'op-ge': '>=',\n 'op-gt': '>',\n 'op-le': '<=',\n 'op-lt': '<',\n 'op-ne': '!=',\n } as const\n )[opType];\n};\n\nexport const generateFlatAndOrList = (\n expr: SpELProcessedExpression\n): (DefaultCombinatorName | SpELProcessedExpression)[] => {\n const combinator = expr.type.slice(3) as DefaultCombinatorName;\n const [left, right] = expr.children;\n if (left.type === 'op-and' || left.type === 'op-or') {\n return [...generateFlatAndOrList(left), combinator, right];\n }\n return [left, combinator, right];\n};\n\nexport const generateMixedAndOrList = (\n expr: SpELOpAnd | SpELOpOr\n): (DefaultCombinatorName | SpELProcessedExpression | ('and' | SpELProcessedExpression)[])[] => {\n const arr = generateFlatAndOrList(expr);\n const returnArray: (\n | DefaultCombinatorName\n | SpELProcessedExpression\n | ('and' | SpELProcessedExpression)[]\n )[] = [];\n let startIndex = 0;\n for (let i = 0; i < arr.length; i += 2) {\n if (arr[i + 1] === 'and') {\n startIndex = i;\n let j = 1;\n while (arr[startIndex + j] === 'and') {\n i += 2;\n j += 2;\n }\n const tempAndArray = arr.slice(startIndex, i + 1) as ('and' | SpELProcessedExpression)[];\n returnArray.push(tempAndArray);\n i -= 2;\n } else if (arr[i + 1] === 'or') {\n if (i === 0 || i === arr.length - 3) {\n if (i === 0 || arr[i - 1] === 'or') {\n returnArray.push(arr[i]);\n }\n returnArray.push(arr[i + 1]);\n if (i === arr.length - 3) {\n returnArray.push(arr[i + 2]);\n }\n } else {\n if (arr[i - 1] === 'and') {\n returnArray.push(arr[i + 1]);\n } else {\n returnArray.push(arr[i], arr[i + 1]);\n }\n }\n }\n }\n if (returnArray.length === 1 && Array.isArray(returnArray[0])) {\n // If length is 1, then the only element is an AND array so just return that\n return returnArray[0];\n }\n return returnArray;\n};\n","import { SpelExpressionEvaluator } from 'spel2js';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n Except,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { joinWith } from '../arrayUtils';\nimport { isRuleGroup } from '../isRuleGroup';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport type { SpELExpressionNode, SpELProcessedExpression } from './types';\nimport {\n generateFlatAndOrList,\n generateMixedAndOrList,\n isSpELBetweenFields,\n isSpELBetweenValues,\n isSpELIdentifier,\n isSpELOpAnd,\n isSpELOpMatches,\n isSpELOpOr,\n isSpELPrimitive,\n isSpELRelationOp,\n normalizeOperator,\n processCompiledExpression,\n} from './utils';\n\n/**\n * Options object for {@link parseSpEL!parseSpEL}.\n */\nexport interface ParseSpELOptions extends ParserCommonOptions {}\n\n/**\n * Converts a SpEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseSpEL(spel: string): DefaultRuleGroupType;\n/**\n * Converts a SpEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseSpEL(\n spel: string,\n options: Except<ParseSpELOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a SpEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseSpEL(\n spel: string,\n options: Except<ParseSpELOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseSpEL(spel: string, options: ParseSpELOptions = {}): DefaultRuleGroupTypeAny {\n const { fields, independentCombinators, listsAsArrays } = options;\n const ic = !!independentCombinators;\n const fieldsFlat = getFieldsArray(fields);\n\n const fieldIsValid = (\n fieldName: string,\n operator: DefaultOperatorName,\n subordinateFieldName?: string\n ) =>\n fieldIsValidUtil({\n fieldName,\n fieldsFlat,\n operator,\n subordinateFieldName,\n getValueSources: options?.getValueSources,\n });\n\n const emptyQuery: DefaultRuleGroupTypeAny = {\n rules: [],\n ...(ic ? {} : { combinator: 'and' }),\n };\n\n const parseProcessedSpEL = (\n expr: SpELProcessedExpression,\n processOpts: {\n groupOnlyIfNecessary?: boolean;\n forwardNegation?: boolean;\n } = {}\n ): DefaultRuleType | DefaultRuleGroupTypeAny | null => {\n const { forwardNegation: _forwardedNegation, groupOnlyIfNecessary: _g } = processOpts;\n if (expr.type === 'op-not') {\n const negatedExpr = parseProcessedSpEL(expr.children[0]);\n // istanbul ignore else\n if (negatedExpr) {\n if (\n !isRuleGroup(negatedExpr) &&\n (negatedExpr.operator === 'contains' ||\n negatedExpr.operator === 'beginsWith' ||\n negatedExpr.operator === 'endsWith')\n ) {\n return {\n ...negatedExpr,\n operator: `doesNot${negatedExpr.operator[0].toUpperCase()}${negatedExpr.operator\n .slice(1)\n .replace('s', '')}` as DefaultOperatorName,\n };\n }\n return ic\n ? ({ rules: [negatedExpr], not: true } as DefaultRuleGroupTypeIC)\n : ({\n combinator: 'and',\n rules: [negatedExpr],\n not: true,\n } as DefaultRuleGroupType);\n }\n } else if (isSpELOpAnd(expr) || isSpELOpOr(expr)) {\n if (ic) {\n const andOrList = generateFlatAndOrList(expr);\n const rules = andOrList.map(v => {\n if (typeof v === 'string') {\n return v;\n }\n return parseProcessedSpEL(v);\n });\n // Bail out completely if any rules in the list were invalid\n // so as not to return an incorrect and/or sequence\n if (!rules.every(Boolean)) {\n return null;\n }\n return {\n rules: rules as DefaultRuleGroupICArray,\n };\n }\n const andOrList = generateMixedAndOrList(expr);\n const combinator = andOrList[1] as DefaultCombinatorName;\n const filteredList = andOrList\n .filter(v => Array.isArray(v) || (!!v && typeof v !== 'string' && 'type' in v))\n .map(v =>\n Array.isArray(v) ? v.filter(vf => !!v && typeof vf !== 'string' && 'type' in vf) : v\n ) as (SpELProcessedExpression | SpELProcessedExpression[])[];\n const rules = filteredList\n .map((exp): DefaultRuleGroupType | DefaultRuleType | null => {\n if (Array.isArray(exp)) {\n return {\n combinator: 'and',\n rules: exp.map(e => parseProcessedSpEL(e)).filter(Boolean) as DefaultRuleGroupArray,\n };\n }\n return parseProcessedSpEL(exp) as DefaultRuleType | DefaultRuleGroupType | null;\n })\n .filter(Boolean) as DefaultRuleGroupArray;\n // istanbul ignore else\n if (rules.length > 0) {\n return { combinator, rules };\n }\n } else if (isSpELOpMatches(expr)) {\n const [left, right] = expr.children;\n let field: string = '';\n let regex: string = '';\n let valueSource: ValueSource | undefined = undefined;\n if (isSpELIdentifier(left)) {\n field = left.identifier;\n if (isSpELIdentifier(right)) {\n regex = right.identifier;\n valueSource = 'field';\n } else {\n // istanbul ignore else\n if (isSpELPrimitive(right)) {\n regex = right.value;\n }\n }\n } else {\n // istanbul ignore else\n if (isSpELIdentifier(right) && isSpELPrimitive(left)) {\n field = right.identifier;\n regex = left.value;\n }\n }\n\n if (/^(?!\\^).*?(?<!\\$)$/.test(regex)) {\n // istanbul ignore else\n if (fieldIsValid(field, 'contains')) {\n return {\n field,\n operator: 'contains',\n value: regex,\n ...(valueSource ? { valueSource } : {}),\n };\n }\n } else {\n if (/^\\^.*?(?<!\\$)$/.test(regex)) {\n // istanbul ignore else\n if (fieldIsValid(field, 'beginsWith')) {\n return {\n field,\n operator: 'beginsWith',\n value: regex.replace(/^\\^/, ''),\n };\n }\n } else {\n // istanbul ignore else\n if (/^(?!\\^).*?\\$$/.test(regex)) {\n // istanbul ignore else\n if (fieldIsValid(field, 'endsWith')) {\n return {\n field,\n operator: 'endsWith',\n value: regex.replace(/\\$$/, ''),\n };\n }\n }\n }\n }\n } else if (isSpELBetweenValues(expr) || isSpELBetweenFields(expr)) {\n // oxlint-disable-next-line typescript/no-explicit-any\n let values: [any, any] = [null, null];\n let valueSource: ValueSource | undefined = undefined;\n const [\n { identifier: field },\n {\n children: [left, right],\n },\n ] = expr.children;\n\n if (isSpELBetweenValues(expr)) {\n values = [left.value, right.value];\n } else {\n values = [left.identifier, right.identifier];\n valueSource = 'field';\n }\n // istanbul ignore else\n if (\n field &&\n values.every(v => fieldIsValid(field, 'between', valueSource === 'field' ? v : undefined))\n ) {\n const valueArray =\n values[0] < values[1] || valueSource === 'field' ? values : [values[1], values[0]];\n const value = listsAsArrays ? valueArray : joinWith(valueArray, ',');\n return valueSource\n ? { field, operator: 'between', value, valueSource }\n : { field, operator: 'between', value };\n }\n } else if (isSpELRelationOp(expr)) {\n let field: string | null = null;\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = undefined;\n let valueSource: ValueSource | undefined = undefined;\n let flip = false;\n const [left, right] = expr.children;\n\n if (isSpELIdentifier(left)) {\n field = left.identifier;\n if (isSpELIdentifier(right)) {\n value = right.identifier;\n valueSource = 'field';\n } else if (isSpELPrimitive(right)) {\n value = right.value;\n }\n } else {\n // istanbul ignore else\n if (isSpELIdentifier(right) && isSpELPrimitive(left)) {\n flip = true;\n field = right.identifier;\n value = left.value;\n }\n }\n let operator = normalizeOperator(expr.type, flip);\n if (value === null && (operator === '=' || operator === '!=')) {\n operator = operator === '=' ? 'null' : 'notNull';\n }\n if (\n field &&\n fieldIsValid(field, operator, valueSource === 'field' ? value : undefined) &&\n value !== undefined\n ) {\n return valueSource ? { field, operator, value, valueSource } : { field, operator, value };\n }\n }\n return null;\n };\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let compiledSpEL: SpELExpressionNode;\n try {\n compiledSpEL = SpelExpressionEvaluator.compile(spel)._compiledExpression;\n } catch {\n return prepare(emptyQuery);\n }\n\n const processedSpEL = processCompiledExpression(compiledSpEL);\n\n const result = parseProcessedSpEL(processedSpEL);\n if (result) {\n if (isRuleGroup(result)) {\n return prepare(result);\n }\n return prepare({ rules: [result], ...(ic ? {} : { combinator: 'and' }) });\n }\n\n return prepare(emptyQuery);\n}\n\nexport { parseSpEL };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;AAgBA,EAAC,SAAS,iCAAiC,MAAM,SAAS;AACzD,MAAG,OAAO,YAAY,YAAY,OAAO,WAAW,SACnD,QAAO,UAAU,SAAS;WACnB,OAAO,WAAW,cAAc,OAAO,IAC9C,QAAO,EAAE,EAAE,QAAQ;WACZ,OAAO,YAAY,SAC1B,SAAQ,aAAa,SAAS;MAE9B,MAAK,aAAa,SAAS;aACpB,WAAW;AACpB,UAAiB,SAAS,SAAS;GAEzB,IAAI,mBAAmB,EAAE;GAGzB,SAAS,oBAAoB,UAAU;AAGtC,QAAG,iBAAiB,UACnB,QAAO,iBAAiB,UAAU;IAGnC,IAAIA,WAAS,iBAAiB,YAAY;KACzC,GAAG;KACH,GAAG;KACH,SAAS,EAAE;KACX;AAGD,YAAQ,UAAU,KAAKA,SAAO,SAASA,UAAQA,SAAO,SAAS,oBAAoB;AAGnF,aAAO,IAAI;AAGX,WAAOA,SAAO;;AAKf,uBAAoB,IAAI;AAGxB,uBAAoB,IAAI;AAGxB,uBAAoB,IAAI,SAAS,WAAS,MAAM,QAAQ;AACvD,QAAG,CAAC,oBAAoB,EAAEC,WAAS,KAAK,CACvC,QAAO,eAAeA,WAAS,MAAM;KACpC,cAAc;KACd,YAAY;KACZ,KAAK;KACL,CAAC;;AAKJ,uBAAoB,IAAI,SAAS,UAAQ;IACxC,IAAI,SAASD,YAAUA,SAAO,aAC7B,SAAS,aAAa;AAAE,YAAOA,SAAO;QACtC,SAAS,mBAAmB;AAAE,YAAOA;;AACtC,wBAAoB,EAAE,QAAQ,KAAK,OAAO;AAC1C,WAAO;;AAIR,uBAAoB,IAAI,SAAS,QAAQ,UAAU;AAAE,WAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,SAAS;;AAGlH,uBAAoB,IAAI;AAGxB,UAAO,oBAAoB,oBAAoB,IAAI,EAAE;KAGrD;IAEH,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeC,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;;;;;;;;;IA0BF,SAAS,eAAe,UAAU,UAAU;KACxC,IAAI,OAAO,EAAE,EACT,OAAO,YAAY,YACnB,WAAW,EAAE,EACb,SAAS,MACT;AAEJ,UAAK,QAAQ;AAEb,UAAK,UAAU,WAAY;AACvB,aAAO;;AAEX,UAAK,UAAU,SAAU,YAAU;AAC/B,aAAOC;;AAGX,UAAK,cAAc,WAAY;AAC3B,aAAO;;AAEX,UAAK,WAAW,SAAU,WAAW;AACjC,UAAI,CAAC,UAED;AAEJ,UAAI,CAAC,UAAU,UACX,OAAM;OACF,MAAM;OACN,SAAS,gDAAgD,KAAK,UAAU,UAAU;OACrF;AAEL,gBAAU,UAAU,KAAK;AACzB,eAAS,KAAK,UAAU;;AAG5B,UAAK,YAAY,WAAY;AACzB,aAAO;;AAEX,UAAK,YAAY,SAAU,YAAY;AACnC,eAAS;;AAGb,UAAK,aAAa,SAAU,OAAO;AAC/B,aAAO,iBAAiB,MAAM,cAAc,MAAM;;AAEtD,UAAK,aAAa,SAAU,aAAa;AACrC,sBAAgB;;AAGpB,UAAK,mBAAmB,WAAY;AAChC,aAAO,YAAY;;AAGvB,UAAK,iBAAiB,WAAY;AAC9B,aAAO,WAAW;;AAItB,UAAK,WAAW,WAAY;AACxB,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,UAAK,WAAW,WAAY;MACxB,IAAI,IAAI,WAAW,KAAK,SAAS;AAEjC,WAAK;AACL,WAAK,IAAI,IAAI,GAAG,IAAI,KAAK,aAAa,CAAC,QAAQ,IAAI,GAAG,KAAK,EACvD,MAAK,MAAM,KAAK,aAAa,CAAC,KAAK;AAEvC,WAAK;AACL,aAAO;;AAIX,SAAI,aAAa,EACb,OAAM;MACF,MAAM;MACN,SAAS;MACZ;AAGL,UAAK,IAAI,OAAO,UAAU,QAAQ,WAAW,MAAM,OAAO,IAAI,OAAO,IAAI,EAAE,EAAE,OAAO,GAAG,OAAO,MAAM,OAChG,UAAS,OAAO,KAAK,UAAU;AAGnC,SAAI,SACA,UAAS,QAAQ,SAAU,SAAS;AAChC,WAAK,SAAS,QAAQ;OACxB;AAGN,YAAO;;AAGI,cAAQ,WAAW,EAC9B,QAAQ,gBACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeD,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,QAAQ;;;;;IAsBhB,SAAS,MAAM,kBAAkB;AAC7B,UAAK,WAAW,oBAAoB,EAAE;;AAG1C,UAAM,UAAU,OAAO,SAAU,IAAI;AACjC,UAAK,SAAS,KAAK,GAAG;AACtB,YAAO;;AAGX,UAAM,UAAU,MAAM,WAAY;AAC9B,YAAO,KAAK,SAAS,KAAK;;AAG9B,UAAM,UAAU,OAAO,WAAY;AAC/B,YAAO,KAAK,SAAS,KAAK,SAAS,SAAS;;AAGhD,UAAM,UAAU,QAAQ,WAAY;AAChC,YAAO,KAAK,SAAS,SAAS;;AAGlC,UAAM,UAAU,SAAS,SAAU,IAAI;AACnC,YAAO,KAAK,SAAS,SAAS,KAAK,SAAS,QAAQ,GAAG;;;IAKpD,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;;;;;;IAuBF,IAAI,QAAQ;KAER,aAAa;KAEb,cAAc;KAEd,gBAAgB;KAEhB,iBAAiB;KAEjB,gBAAgB;KAEhB,cAAc;KAEd,oBAAoB;KAEpB,QAAQ;KAER,QAAQ;KAER,OAAO;KAEP,YAAY;KAEZ,OAAO;KAEP,MAAM;KAEN,SAAS;KAET,SAAS;KAET,QAAQ;KAER,QAAQ;KAER,KAAK;KAEL,MAAM;KAEN,MAAM;KAEN,OAAO;KAEP,cAAc;KAEd,aAAa;KAEb,OAAO;KAEP,SAAS;KAET,KAAK;KAEL,IAAI;KAEJ,IAAI;KAEJ,IAAI;KAEJ,IAAI;KAEJ,IAAI;KAEJ,IAAI;KAEJ,KAAK;KAEL,KAAK;KAEL,QAAQ;KAER,YAAY;KAEZ,SAAS;KAET,SAAS;KAET,QAAQ;KAER,OAAO;KAEP,OAAO;KAEP,WAAW;KAEX,UAAU;KAEV,aAAa;KAEb,cAAc;KAEd,KAAK;KAEL,KAAK;KACR;IAED,SAAS,UAAU,MAAM;AACrB,UAAK,OAAO;AACZ,UAAK,aAAa,MAAM;AACxB,UAAK,cAAc,OAAO,MAAM,UAAU;AAC1C,SAAI,OAAO,MAAM,UAAU,SACvB,MAAK,WAAW,MAAM;;AAK9B,SAAK,IAAI,KAAK,MACV,KAAI,MAAM,eAAe,EAAE,CACvB,WAAU,KAAK,IAAI,UAAU,EAAE;AAIvC,cAAU,UAAU,WAAW,WAAY;AACvC,YAAO,KAAK,QAAQ,KAAK,WAAW,WAAW,IAAI,MAAM,KAAK,aAAa,MAAM;;AAGrF,cAAU,UAAU,YAAY,WAAY;AACxC,YAAO,KAAK,WAAW;;AAG3B,cAAU,UAAU,aAAa,WAAY;AACzC,YAAO,KAAK;;AAGhB,cAAU,UAAU,UAAU,SAAU,IAAI;AACxC,UAAK,IAAIE,OAAK,MACV,KAAI,MAAM,eAAeA,IAAE,IAAI,MAAMA,SAAO,GACxC,QAAO,UAAUA;;AAK7B,cAAU,UAAU,UAAU,WAAY;AACtC,YAAO,KAAK;;AAGhB,cAAQ,YAAY;;IAIb,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeF,WAAS,cAAc,EAC3C,OAAO,MACR,CAAC;AACF,cAAQ,kBAAkB,UAAQ,0BAA0B;IAE5D,IAAI,2BAA2B,oBAAoB,EAAE;IAErD,IAAI,mBAAmB,oBAAoB,GAAG;;;;;AAuB9C,cAAQ,0BAA0B,yBAAyB;AAC3D,cAAQ,kBAAkB,iBAAiB;;IAIpC,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,0BAA0B;IAElC,IAAI,wBAAwB,oBAAoB,EAAE;IAElD,IAAI,SAAS,oBAAoB,EAAE;;;;;IAuBnC,IAAI,0BAA0B,EAAE;IAEhC,SAAS,aAAa,oBAAoB,SAAS,QAAQ;KACvD,IAAI,gBAAgB,IAAI,OAAO,OAAO,EAClC;AAEJ,SAAI,CAAC,QACD,WAAU,EAAE;AAGhB,mBAAc,KAAK,QAAQ;AAE3B,aAAQ;MACJ,aAAa;MACE;MACP;MACX;AACD,YAAO,mBAAmB,SAAS,MAAM;;AAG7C,4BAAwB,UAAU,SAAU,YAAY;KACpD,IAAI,sBAAsB,GAAG,sBAAsB,uBAAuB,CAAC,MAAM,WAAW;AAC5F,YAAO;MACH,MAAM,SAAS,MAAM,SAAS,QAAQ;AAClC,cAAO,aAAa,oBAAoB,SAAS,OAAO;;MAE5D,qBAAqB;MACxB;;AAGL,4BAAwB,OAAO,SAAU,YAAY,SAAS,QAAQ;AAClE,YAAO,wBAAwB,QAAQ,WAAW,CAAC,KAAK,SAAS,OAAO;;AAG5E,cAAQ,0BAA0B;;IAI3B,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,uBAAuB;IAE/B,IAAI,aAAa,oBAAoB,EAAE;IAEvC,IAAI,aAAa,oBAAoB,EAAE;IAEvC,IAAI,kBAAkB,oBAAoB,EAAE;IAE5C,IAAI,iBAAiB,oBAAoB,EAAE;IAE3C,IAAI,iBAAiB,oBAAoB,GAAG;IAE5C,IAAI,eAAe,oBAAoB,GAAG;IAE1C,IAAI,qBAAqB,oBAAoB,GAAG;IAEhD,IAAI,mBAAmB,oBAAoB,GAAG;IAE9C,IAAI,qBAAqB,oBAAoB,GAAG;IAEhD,IAAI,qBAAqB,oBAAoB,GAAG;IAEhD,IAAI,sBAAsB,oBAAoB,GAAG;IAEjD,IAAI,WAAW,oBAAoB,GAAG;IAEtC,IAAI,UAAU,oBAAoB,GAAG;IAErC,IAAI,QAAQ,oBAAoB,GAAG;IAEnC,IAAI,QAAQ,oBAAoB,GAAG;IAEnC,IAAI,QAAQ,oBAAoB,GAAG;IAEnC,IAAI,QAAQ,oBAAoB,GAAG;IAEnC,IAAI,QAAQ,oBAAoB,GAAG;IAEnC,IAAI,QAAQ,oBAAoB,GAAG;IAEnC,IAAI,UAAU,oBAAoB,GAAG;IAErC,IAAI,WAAW,oBAAoB,GAAG;IAEtC,IAAI,cAAc,oBAAoB,GAAG;IAEzC,IAAI,YAAY,oBAAoB,GAAG;IAEvC,IAAI,aAAa,oBAAoB,GAAG;IAExC,IAAI,WAAW,oBAAoB,GAAG;IAEtC,IAAI,SAAS,oBAAoB,GAAG;IAEpC,IAAI,SAAS,oBAAoB,GAAG;IAEpC,IAAI,SAAS,oBAAoB,GAAG;IAEpC,IAAI,SAAS,oBAAoB,GAAG;IAEpC,IAAI,QAAQ,oBAAoB,GAAG;IAEnC,IAAI,aAAa,oBAAoB,GAAG;IAExC,IAAI,WAAW,oBAAoB,GAAG;IAEtC,IAAI,SAAS,oBAAoB,GAAG;IAEpC,IAAI,cAAc,oBAAoB,GAAG;IAEzC,IAAI,aAAa,oBAAoB,GAAG;IAExC,IAAI,aAAa,oBAAoB,GAAG;IAExC,IAAI,cAAc,oBAAoB,GAAG;IAEzC,IAAI,gBAAgB,oBAAoB,GAAG;IAE3C,IAAI,aAAa,oBAAoB,GAAG;IAExC,IAAI,iBAAiB,oBAAoB,GAAG;IAE5C,IAAI,iBAAiB,oBAAoB,GAAG;IAE5C,IAAI,cAAc,oBAAoB,GAAG;IAEzC,IAAI,uBAAuB,oBAAoB,GAAG;IAElD,IAAI,wBAAwB,oBAAoB,GAAG;AA0BxB,cAAQ,uBAAuB,SAAS,uBAAuB;KAEtF,IAAI,6CAA6B,IAAI,OAAO,oBAAoB;KAKhE,IAAI,mBAAmB,EAAE;KAGzB,IAAI;KAGJ,IAAI;KAGJ,IAAI;KAGJ,IAAI;;;;;KAMJ,SAAS,iBAAiB,QAAQ;KAIlC,SAAS,MAAM,YAAY,SAAS;AAChC,UAAI;AACA,0BAAmB;AACnB,qBAAc,WAAW,UAAU,SAAS,WAAW;AACvD,2BAAoB,YAAY;AAChC,4BAAqB;AACrB,0BAAmB,EAAE;OACrB,IAAI,MAAM,eAAe;AACzB,WAAI,YAAY,CACZ,wBAAuB,WAAW,CAAC,UAAU,cAAc,WAAW,CAAC,UAAU,CAAC;AAGtF,cAAO;eACF,GAAG;AACR,aAAM,EAAE;;;KAUhB,SAAS,gBAAgB;MACrB,IAAI,OAAO,wBAAwB;AACnC,UAAI,YAAY,EAAE;OACd,IAAI,QAAQ,WAAW;AACvB,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,QAAQ;AAEjD,YAAI,SAAS,KACT,QAAO,aAAa,YAAY,OAAO,YAAY,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;AAE7F,mBAAW;QACX,IAAI,gBAAgB,wBAAwB;AAC5C,eAAO,QAAQ,OAAO,OAAO,WAAW,MAAM,EAAE,MAAM,cAAc;;AAGxE,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,OAAO;AAEhD,YAAI,SAAS,KACT,QAAO,aAAa,YAAY,OAAO,YAAY,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;AAE7F,mBAAW;QACX,IAAI,cAAc,eAAe;AACjC,YAAI,gBAAgB,KAChB,eAAc,aAAa,YAAY,OAAO,YAAY,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;AAEpG,eAAO,OAAO,MAAM,OAAO,WAAW,MAAM,EAAE,MAAM,YAAY;;AAGpE,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,OAAO;AAEhD,YAAI,SAAS,KACT,QAAO,aAAa,YAAY,OAAO,YAAY,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;AAE7F,mBAAW;QACX,IAAI,kBAAkB,eAAe;AACrC,iBAAS,WAAW,UAAU,MAAM;QACpC,IAAI,mBAAmB,eAAe;AACtC,eAAO,SAAS,QAAQ,OAAO,WAAW,MAAM,EAAE,MAAM,iBAAiB,iBAAiB;;;AAGlG,aAAO;;KAIX,SAAS,yBAAyB;MAC9B,IAAI,OAAO,yBAAyB;AACpC,aAAO,oBAAoB,KAAK,IAAI,aAAa,WAAW,UAAU,YAAY,EAAE;OAChF,IAAI,QAAQ,WAAW;OACvB,IAAI,SAAS,yBAAyB;AACtC,qBAAc,OAAO,MAAM,OAAO;AAClC,cAAO,MAAM,KAAK,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;;AAE7D,aAAO;;KAIX,SAAS,0BAA0B;MAC/B,IAAI,OAAO,yBAAyB;AACpC,aAAO,oBAAoB,MAAM,IAAI,aAAa,WAAW,UAAU,aAAa,EAAE;OAClF,IAAI,QAAQ,WAAW;OACvB,IAAI,SAAS,yBAAyB;AACtC,qBAAc,OAAO,MAAM,OAAO;AAClC,cAAO,OAAO,MAAM,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;;AAE/D,aAAO;;KAIX,SAAS,0BAA0B;MAC/B,IAAI,OAAO,kBAAkB;MAC7B,IAAI,0BAA0B,4BAA4B;AAC1D,UAAI,4BAA4B,MAAM;OAClC,IAAI,QAAQ,WAAW;OACvB,IAAI,SAAS,kBAAkB;AAC/B,qBAAc,OAAO,MAAM,OAAO;OAClC,IAAI,KAAK,wBAAwB;AAEjC,WAAI,wBAAwB,6BAA6B,EAAE;QACvD,IAAI,MAAM,WAAW,MAAM;AAC3B,YAAI,OAAO,WAAW,UAAU,GAC5B,QAAO,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO;AAE/C,YAAI,OAAO,WAAW,UAAU,GAC5B,QAAO,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO;AAE/C,YAAI,OAAO,WAAW,UAAU,GAC5B,QAAO,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO;AAE/C,YAAI,OAAO,WAAW,UAAU,GAC5B,QAAO,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO;AAE/C,YAAI,OAAO,WAAW,UAAU,GAC5B,QAAO,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO;AAG/C,eAAO,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO;;AAG/C,WAAI,OAAO,WAAW,UAAU,WAC5B,QAAO,cAAc,aAAa,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;AAG7E,WAAI,OAAO,WAAW,UAAU,QAC5B,QAAO,WAAW,UAAU,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;AAIvE,cAAO,WAAW,UAAU,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;;AAEvE,aAAO;;KAIX,SAAS,mBAAmB;MACxB,IAAI,OAAO,sBAAsB;AACjC,aAAO,aAAa,WAAW,UAAU,MAAM,WAAW,UAAU,OAAO,WAAW,UAAU,IAAI,EAAE;OAClG,IAAI,QAAQ,WAAW;OACvB,IAAI,SAAS,sBAAsB;AACnC,yBAAkB,OAAO,OAAO;AAChC,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,KACzC,QAAO,QAAQ,OAAO,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;gBACtD,MAAM,SAAS,KAAK,WAAW,UAAU,MAChD,QAAO,SAAS,QAAQ,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;;AAGvE,aAAO;;KAIX,SAAS,uBAAuB;MAC5B,IAAI,OAAO,0BAA0B;AACrC,aAAO,aAAa,WAAW,UAAU,MAAM,WAAW,UAAU,KAAK,WAAW,UAAU,IAAI,EAAE;OAChG,IAAI,QAAQ,WAAW;OACvB,IAAI,SAAS,0BAA0B;AACvC,qBAAc,OAAO,MAAM,OAAO;AAClC,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,KACzC,QAAO,YAAY,WAAW,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;gBAC9D,MAAM,SAAS,KAAK,WAAW,UAAU,IAChD,QAAO,UAAU,SAAS,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;WAGjE,QAAO,WAAW,UAAU,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;;AAG3E,aAAO;;KAIX,SAAS,2BAA2B;MAChC,IAAI,OAAO,oBAAoB,EAC3B;AAEJ,UAAI,aAAa,WAAW,UAAU,MAAM,EAAE;AAC1C,eAAQ,WAAW;OACnB,IAAI,SAAS,oBAAoB;AACjC,yBAAkB,OAAO,OAAO;AAChC,cAAO,SAAS,QAAQ,OAAO,WAAW,MAAM,EAAE,MAAM,OAAO;;AAGnE,UAAI,SAAS,QAAQ,aAAa,WAAW,UAAU,KAAK,WAAW,UAAU,IAAI,EAAE;AACnF,eAAQ,WAAW;AACnB,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,IACzC,QAAO,OAAO,MAAM,OAAO,WAAW,MAAM,EAAE,MAAM,KAAK;AAE7D,cAAO,OAAO,MAAM,OAAO,WAAW,MAAM,EAAE,MAAM,KAAK;;AAG7D,aAAO;;KAIX,SAAS,qBAAqB;MAC1B,IAAI,OAAO;AAEX,UAAI,aAAa,WAAW,UAAU,MAAM,WAAW,UAAU,OAAO,WAAW,UAAU,IAAI,EAAE;AAC/F,eAAQ,WAAW;AACnB,cAAO,oBAAoB;AAC3B,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,IACzC,QAAO,OAAO,MAAM,OAAO,WAAW,MAAM,EAAE,KAAK;AAGvD,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,KACzC,QAAO,QAAQ,OAAO,OAAO,WAAW,MAAM,EAAE,KAAK;AAGzD,cAAO,SAAS,QAAQ,OAAO,WAAW,MAAM,EAAE,KAAK;;AAE3D,UAAI,aAAa,WAAW,UAAU,KAAK,WAAW,UAAU,IAAI,EAAE;AAClE,eAAQ,WAAW;AACnB,cAAO,oBAAoB;AAC3B,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,IACzC,QAAO,OAAO,MAAM,OAAO,WAAW,MAAM,EAAE,OAAO,KAAK;AAE9D,cAAO,OAAO,MAAM,OAAO,WAAW,MAAM,EAAE,OAAO,KAAK;;AAG9D,aAAO,sBAAsB;;KAIjC,SAAS,uBAAuB;MAC5B,IAAI,QAAQ,EAAE;MACd,IAAI,QAAQ,cAAc;AAC1B,YAAM,KAAK,MAAM;AACjB,aAAO,cAAc,CACjB,OAAM,KAAK,KAAK,CAAC;AAErB,UAAI,MAAM,WAAW,EACjB,QAAO,MAAM;AAEjB,aAAO,oBAAoB,mBAAmB,OAAO,YAAY,MAAM,kBAAkB,EAAE,MAAM,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,MAAM;;KAIhJ,SAAS,eAAe;MACpB,IAAI,OAAO;AACX,UAAI,aAAa,WAAW,UAAU,KAAK,WAAW,UAAU,UAAU,CACtE,QAAO,eAAe;UAEtB,QAAO,uBAAuB;AAGlC,UAAI,SAAS,KACT,QAAO;WACJ;AACH,YAAK,KAAK;AACV,cAAO;;;KAKf,SAAS,wBAAwB;AAC7B,UAAI,aAAa,WAAW,UAAU,QAAQ,EAC1C;WAAI,iBAAiB,CACjB,QAAO,KAAK;;AAGpB,aAAO;;KAYX,SAAS,gBAAgB;MACrB,IAAI,QAAQ,WAAW;MACvB,IAAI,qBAAqB,MAAM,SAAS,KAAK,WAAW,UAAU;AAClE,UAAI,yBAAyB,mBAAmB,IAAI,uBAAuB,IAAI,mBAAmB,mBAAmB,IAAI,kBAAkB,mBAAmB,CAC1J,QAAO,KAAK;AAEhB,UAAI,WAAW,KAAK,KAEhB,wBAAuB,MAAM,UAAU,MAAM;UAE7C,wBAAuB,MAAM,UAAU,6BAA6B,SAAS,WAAW,CAAC,CAAC;AAE9F,aAAO;;KASX,SAAS,wBAAwB;AAC7B,UAAI,CAAC,aAAa,WAAW,UAAU,KAAK,CACxC,QAAO;MAEX,IAAI,QAAQ,WAAW;MACvB,IAAI,yBAAyB,SAAS,WAAW,UAAU,WAAW;MACtE,IAAI,OAAO,oBAAoB;AAC/B,UAAI,SAAS,MAAM;AACf,YAAK,mBAAmB,kBAAkB,OAAO,uBAAuB,MAAM,YAAY,MAAM,UAAU,uBAAuB,OAAO,CAAC,CAAC;AAC1I,cAAO;;AAGX,WAAK,mBAAmB,kBAAkB,OAAO,uBAAuB,MAAM,YAAY,MAAM,UAAU,uBAAuB,OAAO,EAAE,KAAK,CAAC;AAChJ,aAAO;;KAIX,SAAS,qBAAqB;AAC1B,UAAI,CAAC,aAAa,WAAW,UAAU,OAAO,CAC1C,QAAO;MAEX,IAAI,OAAO,EAAE;AACb,uBAAiB,KAAK;AACtB,eAAS,WAAW,UAAU,OAAO;AACrC,aAAO;;KAGX,SAAS,mBAAmB,sBAAsB;AAC9C,UAAI,CAAC,aAAa,WAAW,UAAU,OAAO,CAC1C,wBAAuB,WAAW,WAAW,CAAC,EAAE,2BAA2B;AAE/E,uBAAiB,qBAAqB;AACtC,eAAS,WAAW,UAAU,OAAO;;;;;KAMzC,SAAS,iBAAiB,sBAAsB;MAC5C,IAAI,MAAM,WAAW,CAAC;MACtB,IAAI;AACJ,SAAG;AACC,kBAAW;OACX,IAAI,QAAQ,WAAW;AACvB,WAAI,UAAU,KACV,wBAAuB,KAAK,uBAAuB;AAEvD,WAAI,MAAM,SAAS,KAAK,WAAW,UAAU,OACzC,sBAAqB,KAAK,eAAe,CAAC;AAE9C,cAAO,WAAW;eACb,SAAS,QAAQ,KAAK,SAAS,WAAW,UAAU;AAE7D,UAAI,SAAS,KACT,wBAAuB,KAAK,uBAAuB;;KAwB3D,SAAS,eAAe;AACpB,UAAI,iBAAiB,CACjB,QAAO,KAAK;eACL,yBAAyB,CAChC,QAAO,KAAK;eACL,uBAAuB,IAAI,uBAAuB,IAAI,8BAA8B,IAAI,yBAAyB,MAAM,IAAI,uBAAuB,CACzJ,QAAO,KAAK;eACL,uBAAuB,CAC9B,QAAO,KAAK;eACL,mBAAmB,MAAM,IAAI,kBAAkB,MAAM,IAAI,iBAAiB,CACjF,QAAO,KAAK;eACL,yBAAyB,CAChC,QAAO,KAAK;UAEZ,QAAO;;KAMf,SAAS,wBAAwB;AAC7B,UAAI,aAAa,WAAW,UAAU,SAAS,EAAE;OAC7C,IAAI,eAAe,WAAW;OAC9B,IAAI,gBAAgB;OACpB,IAAI,WAAW;AACf,WAAI,aAAa,WAAW,UAAU,WAAW,EAAE;AAC/C,wBAAgB,SAAS,WAAW,UAAU,WAAW;AACzD,mBAAW,cAAc;kBAClB,aAAa,WAAW,UAAU,eAAe,EAAE;AAC1D,wBAAgB,SAAS,WAAW,UAAU,eAAe;AAC7D,mBAAW,cAAc,aAAa;AACtC,mBAAW,SAAS,UAAU,GAAG,SAAS,QAAQ,GAAG,EAAE;aAEvD,wBAAuB,aAAa,UAAU,yBAAyB;OAG3E,IAAI,gBAAgB,eAAe,cAAc,OAAO,WAAW,cAAc,EAAE,SAAS;AAC5F,YAAK,cAAc;AACnB,cAAO;;AAEX,aAAO;;KAGX,SAAS,wBAAwB;AAC7B,UAAI,aAAa,WAAW,UAAU,WAAW,EAAE;OAC/C,IAAI,WAAW,WAAW;AAC1B,WAAI,SAAS,aAAa,KAAK,IAC3B,QAAO;OAGX,IAAI,QAAQ,WAAW;AACvB,WAAI,aAAa,WAAW,UAAU,QAAQ,EAAE;AAE5C,aAAK,mBAAmB,kBAAkB,OAAO,MAAM,aAAa,EAAE,WAAW,MAAM,CAAC,CAAC;AACzF,eAAO;;AAEX,gBAAS,WAAW,UAAU,OAAO;OACrC,IAAI,OAAO,wBAAwB;OAGnC,IAAI,OAAO;AACX,cAAO,0BAA0B,WAAW,UAAU,SAAS,KAAK,EAAE;AAClE,iBAAS,WAAW,UAAU,QAAQ;AACtC;;AAEJ,gBAAS,WAAW,UAAU,OAAO;AACrC,YAAK,eAAe,cAAc,OAAO,WAAW,SAAS,EAAE,MAAM,KAAK,CAAC;AAC3E,cAAO;;AAEX,aAAO;;KAGX,SAAS,wBAAwB;AAC7B,UAAI,aAAa,WAAW,UAAU,WAAW,EAAE;OAC/C,IAAI,YAAY,WAAW;AAC3B,WAAI,UAAU,aAAa,CAAC,aAAa,KAAK,OAC1C,QAAO;AAEX,kBAAW;AACX,YAAK,aAAa,YAAY,OAAO,WAAW,UAAU,CAAC,CAAC;AAC5D,cAAO;;AAEX,aAAO;;KAIX,SAAS,mBAAmB,oBAAoB;MAC5C,IAAI,QAAQ,WAAW;AACvB,UAAI,CAAC,0BAA0B,WAAW,UAAU,SAAS,KAAK,CAC9D,QAAO;MAEX,IAAI,OAAO,eAAe;AAC1B,eAAS,WAAW,UAAU,QAAQ;AACtC,WAAK,YAAY,WAAW,OAAO,oBAAoB,WAAW,MAAM,EAAE,KAAK,CAAC;AAChF,aAAO;;KAKX,SAAS,0BAA0B;MAC/B,IAAI,QAAQ,WAAW,EACnB,eAAe,EAAE;AAErB,UAAI,CAAC,0BAA0B,WAAW,UAAU,QAAQ,KAAK,CAC7D,QAAO;MAEX,IAAI,OAAO;MACX,IAAI,eAAe,WAAW;AAC9B,UAAI,0BAA0B,WAAW,UAAU,QAAQ,KAAK,CAE5D,QAAO,YAAY,WAAW,OAAO,YAAY,MAAM,UAAU,aAAa,OAAO,CAAC;eAC/E,0BAA0B,WAAW,UAAU,OAAO,KAAK,EAAE;AACpE,sBAAe,SAAS,WAAW,UAAU,OAAO;AAEpD,cAAO,WAAW,UAAU,OAAO,YAAY,MAAM,UAAU,aAAa,OAAO,CAAC;aACjF;OACH,IAAI,kBAAkB,eAAe;AAMrC,WAAI,aAAa,WAAW,UAAU,OAAO,EAAE;AAE3C,qBAAa,KAAK,gBAAgB;AAClC,uBAAe,SAAS,WAAW,UAAU,OAAO;AACpD,eAAO,YAAY,WAAW,OAAO,YAAY,MAAM,UAAU,aAAa,OAAO,EAAE,aAAa;kBAC7F,0BAA0B,WAAW,UAAU,OAAO,KAAK,EAAE;AAEpE,qBAAa,KAAK,gBAAgB;AAClC;AACI,sBAAa,KAAK,eAAe,CAAC;eAC7B,0BAA0B,WAAW,UAAU,OAAO,KAAK;AACpE,uBAAe,SAAS,WAAW,UAAU,OAAO;AACpD,eAAO,YAAY,WAAW,OAAO,WAAW,MAAM,UAAU,aAAa,OAAO,EAAE,aAAa;kBAC5F,0BAA0B,WAAW,UAAU,OAAO,KAAK,EAAE;QAEpE,IAAI,cAAc,EAAE;AACpB,oBAAY,KAAK,gBAAgB;AACjC,oBAAY,KAAK,eAAe,CAAC;AACjC,eAAO,0BAA0B,WAAW,UAAU,OAAO,KAAK,EAAE;AAChE,qBAAY,KAAK,eAAe,CAAC;AACjC,kBAAS,WAAW,UAAU,MAAM;AACpC,qBAAY,KAAK,eAAe,CAAC;;AAErC,uBAAe,SAAS,WAAW,UAAU,OAAO;AACpD,eAAO,WAAW,UAAU,OAAO,YAAY,MAAM,UAAU,aAAa,OAAO,EAAE,YAAY;aAEjG,wBAAuB,MAAM,UAAU,MAAM;;AAGrD,WAAK,KAAK;AACV,aAAO;;KAGX,SAAS,kBAAkB;MACvB,IAAI,QAAQ,WAAW;AACvB,UAAI,CAAC,0BAA0B,WAAW,UAAU,SAAS,KAAK,CAC9D,QAAO;MAEX,IAAI,OAAO,eAAe;AAC1B,eAAS,WAAW,UAAU,QAAQ;AACtC,WAAK,SAAS,QAAQ,OAAO,WAAW,MAAM,EAAE,KAAK,CAAC;AACtD,aAAO;;KAGX,SAAS,kBAAkB,oBAAoB;MAC3C,IAAI,QAAQ,WAAW;AACvB,UAAI,CAAC,iBAAiB,CAClB,QAAO;AAEX,iBAAW;MACX,IAAI,OAAO,eAAe;AAC1B,UAAI,SAAS,KACT,wBAAuB,WAAW,MAAM,EAAE,+BAA+B;AAE7E,eAAS,WAAW,UAAU,QAAQ;AACtC,UAAI,MAAM,SAAS,KAAK,WAAW,UAAU,aACzC,MAAK,WAAW,UAAU,OAAO,oBAAoB,WAAW,UAAU,OAAO,WAAW,MAAM,EAAE,KAAK,CAAC;eACnG,MAAM,SAAS,KAAK,WAAW,UAAU,YAChD,MAAK,WAAW,UAAU,OAAO,oBAAoB,WAAW,UAAU,MAAM,WAAW,MAAM,EAAE,KAAK,CAAC;UAEzG,MAAK,WAAW,UAAU,OAAO,oBAAoB,WAAW,UAAU,KAAK,WAAW,MAAM,EAAE,KAAK,CAAC;AAE5G,aAAO;;;;;;KAOX,SAAS,yBAAyB;MAC9B,IAAI,oBAAoB,EAAE;MAC1B,IAAI,OAAO,WAAW;AACtB,aAAO,mBAAmB,KAAK,EAAE;AAC7B,kBAAW;AACX,WAAI,KAAK,SAAS,WAAW,UAAU,IACnC,mBAAkB,KAAK,YAAY,WAAW,OAAO,KAAK,aAAa,EAAE,WAAW,KAAK,CAAC,CAAC;AAE/F,cAAO,WAAW;;AAEtB,UAAI,CAAC,kBAAkB,QAAQ;AAC3B,WAAI,SAAS,KACT,wBAAuB,iBAAiB,QAAQ,EAAE,MAAM;AAE5D,8BAAuB,KAAK,UAAU,sBAAsB,gBAAgB,KAAK,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC;;MAExH,IAAI,MAAM,YAAY,kBAAkB,GAAG,kBAAkB,EAAE,kBAAkB,kBAAkB,SAAS,GAAG,gBAAgB,CAAC;AAChI,aAAO,qBAAqB,oBAAoB,OAAO,KAAK,kBAAkB;;KAGlF,SAAS,mBAAmB,MAAM;AAC9B,UAAI,SAAS,QAAQ,KAAK,SAAS,WAAW,UAAU,eACpD,QAAO;AAEX,UAAI,KAAK,SAAS,WAAW,UAAU,OAAO,KAAK,SAAS,WAAW,UAAU,WAC7E,QAAO;MAEX,IAAI,QAAQ,KAAK,aAAa;AAC9B,aAAO,SAAS,MAAM,UAAU,2BAA2B,KAAK,MAAM;;KAK1E,SAAS,yBAAyB,oBAAoB;AAClD,UAAI,aAAa,WAAW,UAAU,WAAW,EAAE;OAC/C,IAAI,uBAAuB,WAAW;OACtC,IAAI,OAAO,oBAAoB;AAC/B,WAAI,SAAS,MAAM;AAEf,aAAK,mBAAmB,kBAAkB,OAAO,oBAAoB,qBAAqB,aAAa,EAAE,WAAW,qBAAqB,CAAC,CAAC;AAC3I,eAAO;;AAGX,YAAK,iBAAiB,gBAAgB,OAAO,oBAAoB,qBAAqB,aAAa,EAAE,WAAW,qBAAqB,EAAE,KAAK,CAAC;AAE7I,cAAO;;AAEX,aAAO;;KAKX,SAAS,+BAA+B;AACpC,UAAI,oBAAoB,MAAM,EAAE;OAC5B,IAAI,WAAW,WAAW;AAE1B,WAAI,aAAa,WAAW,UAAU,QAAQ,EAAE;AAE5C,aAAK,mBAAmB,kBAAkB,OAAO,SAAS,aAAa,EAAE,WAAW,SAAS,CAAC,CAAC;AAC/F,eAAO;;OAEX,IAAI,mCAAmC,wBAAwB;OAC/D,IAAI,QAAQ,EAAE;AACd,aAAM,KAAK,iCAAiC;AAC5C,WAAI,aAAa,WAAW,UAAU,QAAQ,EAAE;QAE5C,IAAI,aAAa,EAAE;AACnB,eAAO,0BAA0B,WAAW,UAAU,SAAS,KAAK,EAAE;AAClE,aAAI,CAAC,aAAa,WAAW,UAAU,QAAQ,CAC3C,YAAW,KAAK,eAAe,CAAC;aAEhC,YAAW,KAAK,KAAK;AAEzB,kBAAS,WAAW,UAAU,QAAQ;;AAE1C,YAAI,yBAAyB,CACzB,OAAM,KAAK,KAAK,CAAC;AAErB,aAAK,sBAAsB,qBAAqB,OAAO,WAAW,SAAS,EAAE,YAAY,MAAM,CAAC;cAC7F;AAEH,2BAAmB,MAAM;AAEzB,aAAK,sBAAsB,qBAAqB,OAAO,WAAW,SAAS,EAAE,MAAM,CAAC;;AAExF,cAAO;;AAEX,aAAO;;KAGX,SAAS,KAAK,SAAS;AACnB,uBAAiB,KAAK,QAAQ;;KAGlC,SAAS,MAAM;AACX,aAAO,iBAAiB,KAAK;;KAWjC,SAAS,kBAAkB;MACvB,IAAI,QAAQ,WAAW;AACvB,UAAI,UAAU,KACV,QAAO;AAEX,UAAI,MAAM,SAAS,KAAK,WAAW,UAAU,eAAe,MAAM,SAAS,KAAK,WAAW,UAAU,aACjG,MAAK,eAAe,cAAc,OAAO,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,WAAW,MAAM,CAAC,CAAC;eACxF,MAAM,SAAS,KAAK,WAAW,UAAU,gBAAgB,MAAM,SAAS,KAAK,WAAW,UAAU,mBACzG,MAAK,eAAe,cAAc,OAAO,WAAW,MAAM,aAAa,CAAC,EAAE,WAAW,MAAM,CAAC,CAAC;eACtF,MAAM,SAAS,KAAK,WAAW,UAAU,kBAAkB,MAAM,SAAS,KAAK,WAAW,UAAU,gBAC3G,MAAK,eAAe,cAAc,OAAO,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,WAAW,MAAM,CAAC,CAAC;eACxF,oBAAoB,OAAO,CAClC,MAAK,gBAAgB,eAAe,OAAO,MAAM,WAAW,MAAM,CAAC,CAAC;eAC7D,oBAAoB,QAAQ,CACnC,MAAK,gBAAgB,eAAe,OAAO,OAAO,WAAW,MAAM,CAAC,CAAC;eAC9D,MAAM,SAAS,KAAK,WAAW,UAAU,eAChD,MAAK,eAAe,cAAc,OAAO,MAAM,aAAa,EAAE,WAAW,MAAM,CAAC,CAAC;UAEjF,QAAO;AAEX,iBAAW;AACX,aAAO;;KAIX,SAAS,0BAA0B;AAC/B,UAAI,aAAa,WAAW,UAAU,OAAO,EAAE;AAC3C,kBAAW;OACX,IAAI,OAAO,eAAe;AAC1B,gBAAS,WAAW,UAAU,OAAO;AACrC,YAAK,KAAK;AACV,cAAO;YAEP,QAAO;;KAOf,SAAS,6BAA6B;MAClC,IAAI,QAAQ,WAAW;AACvB,UAAI,UAAU,KACV,QAAO;AAEX,UAAI,MAAM,6BAA6B,CACnC,QAAO;AAEX,UAAI,MAAM,cAAc,EAAE;OACtB,IAAI,WAAW,MAAM,aAAa;AAClC,WAAI,SAAS,aAAa,KAAK,aAC3B,QAAO,MAAM,mBAAmB;AAEpC,WAAI,SAAS,aAAa,KAAK,UAC3B,QAAO,MAAM,gBAAgB;AAEjC,WAAI,SAAS,aAAa,KAAK,UAC3B,QAAO,MAAM,gBAAgB;;AAGrC,aAAO;;KAGX,SAAS,SAAS,cAAc;MAC5B,IAAI,QAAQ,WAAW;AACvB,UAAI,UAAU,KACV,wBAAuB,iBAAiB,QAAQ,MAAM;AAE1D,UAAI,MAAM,SAAS,KAAK,aACpB,wBAAuB,MAAM,UAAU,sBAAsB,aAAa,UAAU,CAAC,aAAa,EAAE,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC;AAEjJ,aAAO;;KAGX,SAAS,aAAa,kBAAkB;AACpC,aAAO,0BAA0B,kBAAkB,MAAM;;KAG7D,SAAS,0BAA0B,kBAAkB,kBAAkB;AACnE,UAAI,CAAC,YAAY,CACb,QAAO;MAEX,IAAI,QAAQ,WAAW;AACvB,UAAI,MAAM,SAAS,KAAK,kBAAkB;AACtC,WAAI,iBACA;AAEJ,cAAO;;AAGX,UAAI,qBAAqB,WAAW,UAAU,YAG1C;WAAI,MAAM,SAAS,CAAC,SAAS,IAAI,WAAW,UAAU,IAAI,SAAS,IAAI,MAAM,SAAS,CAAC,SAAS,IAAI,WAAW,UAAU,IAAI,SAAS,IAAI,MAAM,SAAS,KAErJ,QAAO;;AAGf,aAAO;;KAGX,SAAS,eAAe;AACpB,UAAI,CAAC,YAAY,CACb,QAAO;MAEX,IAAI,QAAQ,WAAW;MACvB,IAAI,OAAO,MAAM,UAAU,MAAM,KAAK,UAAU;AAChD,WAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK,EACzC,KAAI,MAAM,SAAS,KAAK,KAAK,GACzB,QAAO;AAGf,aAAO;;KAGX,SAAS,oBAAoB,kBAAkB;AAC3C,UAAI,CAAC,YAAY,CACb,QAAO;MAEX,IAAI,QAAQ,WAAW;AACvB,aAAO,MAAM,SAAS,KAAK,WAAW,UAAU,cAAc,MAAM,aAAa,CAAC,aAAa,KAAK,iBAAiB,aAAa;;KAGtI,SAAS,kBAAkB;AACvB,UAAI,CAAC,YAAY,CACb,QAAO;MAEX,IAAI,QAAQ,WAAW;AACvB,aAAO,MAAM,SAAS,KAAK,WAAW,UAAU,UAAU,MAAM,SAAS,KAAK,WAAW,UAAU,gBAAgB,MAAM,SAAS,KAAK,WAAW,UAAU;;KAGhK,SAAS,aAAa;AAClB,aAAO,qBAAqB,YAAY;;KAG5C,SAAS,YAAY;AACjB,UAAI,sBAAsB,kBACtB,QAAO;AAEX,aAAO,YAAY;;KAGvB,SAAS,YAAY;AACjB,UAAI,sBAAsB,kBACtB,QAAO;AAEX,aAAO,YAAY;;KAGvB,SAAS,uBAAuB,KAAK,SAAS,UAAU,QAAQ;AAC5D,UAAI,SACA,YAAW,iBAAiB;AAEhC,UAAI,OACA,YAAW,eAAe;AAE9B,YAAM;OACF,MAAM;OACN,SAAS,0DAA2D,mBAAmB,mBAAoB,MAAM,gBAAgB;OACpI;;KAGL,SAAS,SAAS,OAAO;AACrB,UAAI,MAAM,SAAS,CAAC,YAAY,CAC5B,QAAO,MAAM,aAAa;AAE9B,aAAO,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa;;KAGnD,SAAS,cAAc,OAAO,MAAM,OAAO;AACvC,uBAAiB,OAAO,KAAK;AAC7B,wBAAkB,OAAO,MAAM;;KAGnC,SAAS,iBAAiB,OAAO,mBAAmB;AAChD,UAAI,sBAAsB,KACtB,wBAAuB,MAAM,UAAU,uBAAuB;;KAItE,SAAS,kBAAkB,OAAO,mBAAmB;AACjD,UAAI,sBAAsB,KACtB,wBAAuB,MAAM,UAAU,wBAAwB;;;;;KAOvE,SAAS,WAAW,OAAO;AACvB,cAAQ,MAAM,YAAY,MAAM,MAAM;;KAG1C,SAAS,YAAY,OAAO,KAAK;AAC7B,cAAQ,SAAS,MAAM;;AAG3B,YAAO;MACe;MACX;MACV;;;IAOE,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,YAAY;IAEpB,IAAI,SAAS,oBAAoB,EAAE;IAEnC,IAAI,aAAa,oBAAoB,EAAE;;;;;;;IAyBvC,IAAI,6BAA6B;KAAC;KAAO;KAAM;KAAM;KAAM;KAAM;KAAM;KAAO;KAAM;KAAM,EACtF,QAAQ,EAAE,EACV,WAAW,GACX,cAAc,GACd,WAAW;IAEf,SAAS,OAAO;KACZ,IAAI;AAEJ,UAAK,KAAK,IAAI,WAAW,EAAE,EAAE,MAAM,IAAI,WAAW,EAAE,EAAE,MAAM,EACxD,OAAM,OAAO,WAAW;AAE5B,UAAK,KAAK,IAAI,WAAW,EAAE,EAAE,MAAM,IAAI,WAAW,EAAE,EAAE,MAAM,EACxD,OAAM,OAAO;AAEjB,UAAK,KAAK,IAAI,WAAW,EAAE,EAAE,MAAM,IAAI,WAAW,EAAE,EAAE,MAAM,EACxD,OAAM,OAAO;AAEjB,UAAK,KAAK,IAAI,WAAW,EAAE,EAAE,MAAM,IAAI,WAAW,EAAE,EAAE,MAAM,EACxD,OAAM,OAAO;AAEjB,UAAK,KAAK,IAAI,WAAW,EAAE,EAAE,MAAM,IAAI,WAAW,EAAE,EAAE,MAAM,EACxD,OAAM,OAAO;;AAIrB,UAAM;IAEN,SAAS,SAAS,WAAW;KACzB,IAAI,mBAAmB,WACnB,YAAY,YAAY,MACxB,MAAM,UAAU,QAChB,MAAM,GACN,SAAS,EAAE;KAEf,SAAS,UAAU;MACf,IAAI;AAEJ,aAAO,MAAM,KAAK;AACd,YAAK,UAAU;AACf,WAAI,aAAa,GAAG,CAChB,gBAAe;WAEf,SAAQ,IAAR;QACI,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,IAAI,CACxC,eAAc,WAAW,UAAU,IAAI;aAEvC,eAAc,WAAW,UAAU,KAAK;AAE5C;QACJ,KAAK;AAED,wBAAe;AACf;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,IAAI,CACxC,eAAc,WAAW,UAAU,IAAI;aAEvC,eAAc,WAAW,UAAU,MAAM;AAE7C;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,MAAM;AACzC;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,IAAI;AACvC;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,MAAM;AACzC;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,KAAK;AACxC;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,IAAI;AACvC;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,IAAI;AACvC;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,OAAO;AAC1C;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,OAAO;AAC1C;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,QAAQ;AAC3C;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,KAAK;AACxC;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,QAAQ;AAC3C;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,OAAO;AAC1C;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,OAAO;AAC1C;QACJ,KAAK;AACD,uBAAc,WAAW,UAAU,SAAS;AAC5C;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,aAAa,CACjD,eAAc,WAAW,UAAU,aAAa;aAEhD,eAAc,WAAW,UAAU,MAAM;AAE7C;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,GAAG,CACvC,eAAc,WAAW,UAAU,GAAG;kBAC/B,eAAe,WAAW,UAAU,QAAQ,CACnD,eAAc,WAAW,UAAU,QAAQ;aAE3C,eAAc,WAAW,UAAU,IAAI;AAE3C;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,GAAG,CACvC,eAAc,WAAW,UAAU,GAAG;aAEtC,eAAc,WAAW,UAAU,OAAO;AAE9C;QACJ,KAAK;AACD,aAAI,CAAC,eAAe,WAAW,UAAU,aAAa,CAClD,OAAM;UACF,MAAM;UACN,SAAS,0CAA4C,mBAAmB,mBAAmB;UAC9F;AAEL,uBAAc,WAAW,UAAU,aAAa;AAChD;QACJ,KAAK;AACD,aAAI,CAAC,eAAe,WAAW,UAAU,YAAY,CACjD,OAAM;UACF,MAAM;UACN,SAAS,0CAA4C,mBAAmB,mBAAmB;UAC9F;AAEL,uBAAc,WAAW,UAAU,YAAY;AAC/C;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,OAAO,CAC3C,eAAc,WAAW,UAAU,OAAO;kBACnC,eAAe,WAAW,UAAU,MAAM,CACjD,eAAc,WAAW,UAAU,MAAM;kBAClC,eAAe,WAAW,UAAU,UAAU,CACrD,eAAc,WAAW,UAAU,UAAU;aAE7C,eAAc,WAAW,UAAU,MAAM;AAE7C;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,YAAY,CAChD,eAAc,WAAW,UAAU,YAAY;aAE/C,gBAAe;AAEnB;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,GAAG,CACvC,eAAc,WAAW,UAAU,GAAG;aAEtC,eAAc,WAAW,UAAU,GAAG;AAE1C;QACJ,KAAK;AACD,aAAI,eAAe,WAAW,UAAU,GAAG,CACvC,eAAc,WAAW,UAAU,GAAG;aAEtC,eAAc,WAAW,UAAU,GAAG;AAE1C;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACD,2BAAkB,OAAO,IAAI;AAC7B;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AAED,gBAAO;AACP;QACJ,KAAK;AACD,iCAAwB;AACxB;QACJ,KAAK;AACD,uCAA8B;AAC9B;QACJ,KAAK;AAED,gBAAO;AACP;QACJ,KAAK,KACD,OAAM;SACF,MAAM;SACN,SAAS,gDAAgD,mBAAmB,mBAAmB;SAClG;QACL,QACI,OAAM;SACF,MAAM;SACN,SAAS,8BAA+B,KAAK,sBAAuB,mBAAmB,mBAAmB;SAC7G;;;;KAMrB,SAAS,yBAAyB;MAC9B,IAAI,QAAQ,KACR,aAAa,OACb;AAEJ,aAAO,CAAC,YAAY;AAChB,cAAO;AACP,YAAK,UAAU;AACf,WAAI,OAAO,IAEP,KAAI,UAAU,MAAM,OAAO,IACvB,QAAO;WAEP,cAAa;AAGrB,WAAI,GAAG,WAAW,EAAE,KAAK,EACrB,OAAM;QACF,MAAM;QACN,SAAS,kDAAkD,mBAAmB,mBAAmB;QACpG;;AAGT,aAAO;AACP,aAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,gBAAgB,SAAS,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC;;KAExG,SAAS,+BAA+B;MACpC,IAAI,QAAQ,KACR,aAAa,OACb;AAEJ,aAAO,CAAC,YAAY;AAChB,cAAO;AACP,YAAK,UAAU;AACf,WAAI,OAAO,KAEP,KAAI,UAAU,MAAM,OAAO,KACvB,QAAO;WAEP,cAAa;AAGrB,WAAI,GAAG,WAAW,EAAE,KAAK,EACrB,OAAM;QACF,MAAM;QACN,SAAS,yDAAyD,mBAAmB,mBAAmB;QAC3G;;AAGT,aAAO;AACP,aAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,gBAAgB,SAAS,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC;;KAmBxG,SAAS,kBAAkB,iBAAiB;MACxC,IAAI,SAAS,OACT,QAAQ,KACR,KAAK,UAAU,MAAM,IACrB,QAAQ,OAAO,OAAO,OAAO,KAC7B,QACA,aACA,cACA;AAGJ,UAAI,mBAAmB,OAAO;AAC1B,aAAM,MAAM;AACZ;AACI,eAAO;cACF,mBAAmB,UAAU,KAAK;AAC3C,WAAI,OAAO,KAAK,IAAI,EAAE;AAClB,wBAAgB,SAAS,QAAQ,GAAG,IAAI,EAAE,MAAM,OAAO,IAAI;AAC3D,eAAO;aAEP,iBAAgB,SAAS,QAAQ,GAAG,IAAI,EAAE,OAAO,OAAO,IAAI;AAEhE;;AAMJ;AACI,cAAO;aACF,QAAQ,UAAU,KAAK;AAGhC,WAAK,UAAU;AACf,UAAI,OAAO,KAAK;AACZ,gBAAS;AACT,gBAAS;AAET;AACI,eAAO;cACF,QAAQ,UAAU,KAAK;AAChC,WAAI,QAAQ,SAAS,GAAG;AAIpB,cAAM;AACN,qBAAa,SAAS,OAAO,IAAI,EAAE,OAAO,OAAO,IAAI;AACrD;;;AAIR,oBAAc;AAKd,UAAI,OAAO,KAAK,IAAI,EAAE;AAClB,WAAI,OAEA,OAAM;QACF,MAAM;QACN,SAAS,wCAAwC,mBAAmB,mBAAmB;QAC1F;AAEL,oBAAa,SAAS,OAAO,YAAY,EAAE,MAAM,OAAO,YAAY;AACpE,cAAO;iBACA,eAAe,UAAU,KAAK,EAAE;AACvC,gBAAS;AACT,cAAO;AACP,sBAAe,UAAU;AACzB,WAAI,OAAO,aAAa,CACpB,QAAO;AAIX;AACI,eAAO;cACF,QAAQ,UAAU,KAAK;AAChC,iBAAU;AACV,WAAI,cAAc,UAAU,KAAK,EAAE;AAC/B,kBAAU;AACV,eAAO;AACP,sBAAc;kBACP,eAAe,UAAU,KAAK,EAAE;AACvC,eAAO;AACP,sBAAc;;AAElB,qBAAc,SAAS,OAAO,IAAI,EAAE,SAAS,OAAO,IAAI;aACrD;AACH,YAAK,UAAU;AACf,iBAAU;AACV,WAAI,cAAc,GAAG,EAAE;AACnB,iBAAS;AACT,kBAAU;AACV,eAAO;AACP,sBAAc;kBACP,eAAe,GAAG,EAAE;AAC3B,iBAAS;AACT,eAAO;AACP,sBAAc;;AAElB,WAAI,OACA,eAAc,SAAS,OAAO,YAAY,EAAE,SAAS,OAAO,YAAY;WAExE,cAAa,SAAS,OAAO,YAAY,EAAE,OAAO,OAAO,YAAY;;;KAKjF,SAAS,gBAAgB;MACrB,IAAI,QAAQ,KACR,WACA,UACA;AACJ;AACI,cAAO;aACF,aAAa,UAAU,KAAK;AACrC,kBAAY,SAAS,OAAO,IAAI;AAIhC,UAAI,MAAM,UAAU,KAAK,MAAM,UAAU,GAAG;AACxC,kBAAW,UAAU,aAAa;AAClC,aAAM,2BAA2B,QAAQ,SAAS;AAClD,WAAI,OAAO,GAAG;AACV,kCAA0B,WAAW,UAAU,QAAQ,SAAS,EAAE,OAAO,UAAU;AACnF;;;AAGR,aAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,YAAY,UAAU,QAAQ,MAAM,GAAG,EAAE,OAAO,IAAI,CAAC;;KAG3G,SAAS,aAAa,MAAM,QAAQ,OAAO,KAAK;AAC5C,UAAI,OACA,QAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,cAAc,MAAM,OAAO,IAAI,CAAC;UAElF,QAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,aAAa,MAAM,OAAO,IAAI,CAAC;;KAIzF,SAAS,gBAAgB,MAAM,QAAQ,OAAO,KAAK;AAC/C,UAAI,KAAK,WAAW,EAChB,KAAI,OACA,OAAM;OACF,MAAM;OACN,SAAS,+BAA+B,mBAAmB,mBAAmB;OACjF;UAED,OAAM;OACF,MAAM;OACN,SAAS,+BAA+B,mBAAmB,mBAAmB;OACjF;AAGT,UAAI,OACA,QAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,iBAAiB,MAAM,OAAO,IAAI,CAAC;UAErF,QAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,gBAAgB,MAAM,OAAO,IAAI,CAAC;;KAI5F,SAAS,cAAc,MAAM,SAAS,OAAO,KAAK;AAC9C,UAAI,QACA,QAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,oBAAoB,MAAM,OAAO,IAAI,CAAC;UAExF,QAAO,KAAK,IAAI,OAAO,MAAM,WAAW,UAAU,cAAc,MAAM,OAAO,IAAI,CAAC;;KAI1F,SAAS,SAAS,OAAO,KAAK;AAC1B,aAAO,UAAU,UAAU,OAAO,IAAI;;;;;KAM1C,SAAS,eAAe,MAAM;AAC1B,UAAI,KAAK,WAAW,WAAW,KAAK,UAAU,SAAS,KAAK,WAAW,GACnE,QAAO,UAAU,MAAM,OAAO,KAAK,WAAW;AAElD,aAAO;;;;;KAMX,SAAS,cAAc,MAAM;AACzB,aAAO,KAAK,IAAI,OAAO,MAAM,MAAM,MAAM,KAAK,MAAM,EAAE,CAAC;AACvD,aAAO;;;;;KAMX,SAAS,cAAc,MAAM;AACzB,aAAO,KAAK,IAAI,OAAO,MAAM,MAAM,MAAM,KAAK,MAAM,EAAE,CAAC;AACvD,aAAO;;KAGX,SAAS,0BAA0B,MAAM,OAAK,MAAM;AAChD,aAAO,KAAK,IAAI,OAAO,MAAM,MAAM,MAAMG,OAAKA,QAAM,KAAK,WAAW,CAAC,CAAC;;KAI1E,SAAS,aAAa,IAAI;AACtB,aAAO,aAAa,GAAG,IAAI,QAAQ,GAAG,IAAI,OAAO,OAAO,OAAO;;KAGnE,SAAS,OAAO,GAAG,GAAG;MAClB,IAAI,KAAK,UAAU;AACnB,aAAO,OAAO,KAAK,OAAO;;KAG9B,SAAS,eAAe,IAAI;AACxB,aAAO,OAAO,OAAO,OAAO;;KAGhC,SAAS,cAAc,IAAI;AACvB,aAAO,OAAO,OAAO,OAAO;;KAGhC,SAAS,eAAe,IAAI;AACxB,aAAO,OAAO,OAAO,OAAO;;KAGhC,SAAS,OAAO,IAAI;AAChB,aAAO,OAAO,OAAO,OAAO;;KAGhC,SAAS,QAAQ,IAAI;AACjB,UAAI,GAAG,WAAW,EAAE,GAAG,IACnB,QAAO;AAEX,cAAQ,MAAM,GAAG,WAAW,EAAE,IAAI,cAAc;;KAGpD,SAAS,aAAa,IAAI;AACtB,UAAI,GAAG,WAAW,EAAE,GAAG,IACnB,QAAO;AAEX,cAAQ,MAAM,GAAG,WAAW,EAAE,IAAI,cAAc;;KAGpD,SAAS,mBAAmB,IAAI;AAC5B,UAAI,GAAG,WAAW,EAAE,GAAG,IACnB,QAAO;AAEX,cAAQ,MAAM,GAAG,WAAW,EAAE,IAAI,iBAAiB;;AAGvD,cAAS;AAET,YAAO;;AAGK,cAAQ,YAAY,EACtB,UACb;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeH,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,QAAQ;IAEhB,IAAI,aAAa,oBAAoB,EAAE;IAEvC,SAAS,MAAM,WAAW,WAAW,UAAU,QAAQ;AACnD,UAAK,OAAO;AACZ,UAAK,WAAW;AAChB,UAAK,SAAS;AACd,SAAI,UACA,MAAK,OAAO;;;;;;;AAwBpB,UAAM,UAAU,UAAU,WAAY;AAClC,YAAO,KAAK;;AAGhB,UAAM,UAAU,WAAW,WAAY;KACnC,IAAI,IAAI;AACR,UAAK,KAAK,KAAK,UAAU;AACzB,SAAI,KAAK,KAAK,YAAY,CACtB,MAAK,MAAM,KAAK;AAEpB,UAAK;AACL,UAAK,MAAM,KAAK,WAAW,MAAM,KAAK,SAAS;AAC/C,YAAO;;AAGX,UAAM,UAAU,eAAe,WAAY;AACvC,YAAO,KAAK,SAAS,WAAW,UAAU;;AAG9C,UAAM,UAAU,8BAA8B,WAAY;AACtD,YAAO,KAAK,SAAS,WAAW,UAAU,MAAM,KAAK,SAAS,WAAW,UAAU,MAAM,KAAK,SAAS,WAAW,UAAU,MAAM,KAAK,SAAS,WAAW,UAAU,MAAM,KAAK,SAAS,WAAW,UAAU,MAAM,KAAK,SAAS,WAAW,UAAU;;AAG3P,UAAM,UAAU,cAAc,WAAY;AACtC,YAAO,KAAK;;AAGhB,UAAM,UAAU,oBAAoB,WAAY;AAC5C,YAAO,IAAI,MAAM,WAAW,UAAU,YAAY,KAAK,UAAU,KAAK,OAAO;;AAGjF,UAAM,UAAU,iBAAiB,WAAY;AACzC,YAAO,IAAI,MAAM,WAAW,UAAU,SAAS,KAAK,UAAU,KAAK,OAAO;;AAG9E,UAAM,UAAU,iBAAiB,WAAY;AACzC,YAAO,IAAI,MAAM,WAAW,UAAU,SAAS,KAAK,UAAU,KAAK,OAAO;;AAG9E,UAAM,UAAU,mBAAmB,WAAY;AAC3C,YAAO,KAAK;;AAGhB,UAAM,UAAU,iBAAiB,WAAY;AACzC,YAAO,KAAK;;AAGhB,cAAQ,QAAQ;;IAIT,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,iBAAiB;IAEzB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,OAAO,UAAU;KACjC,IAAI,OAAO,UAAU,SAAS,OAAO,WAAW,SAAS;AAEzD,UAAK,WAAW,WAAY;AACxB,aAAO;;AAGX,UAAK,WAAW,SAAU,UAAU;AAEhC,aAAO,QAAQ;;AAInB,YAAO;;AAiBU,cAAQ,iBAAiB,EAC1C,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,gBAAgB;IAExB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,OAAO,UAAU;KACjC,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,SAAS;AAExD,UAAK,WAAW,WAAY;AACxB,aAAO;;AAGX,UAAK,WAAW,SAAU,UAAU;AAEhC,aAAO,QAAQ;;AAInB,YAAO;;AAiBS,cAAQ,gBAAgB,EACxC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,gBAAgB;IAExB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;IAWtC,SAAS,WAAW,OAAO,UAAU;KACjC,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,SAAS;KAExD,SAAS,YAAY,SAAO;AACxB,UAAII,QAAM,OAAO,OAAQA,QAAMA,QAAM,SAAS,OAAO,OAAQA,QAAM,OAAO,QAAOA,QAAMA,QAAM,SAAS,OAAO,KACzG,WAAQA,QAAM,UAAU,GAAGA,QAAM,SAAS,EAAE;AAGhD,aAAOA,QAAM,QAAQ,OAAO,IAAK,CAAC,QAAQ,OAAO,KAAI;;AAIzD,aAAQ,YAAY,MAAM;AAE1B,UAAK,WAAW,WAAY;AACxB,aAAO;;AAGX,UAAK,WAAW,SAAU,UAAU;AAEhC,aAAO,QAAQ;;AAInB,YAAO;;AAiBS,cAAQ,gBAAgB,EACxC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeJ,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,cAAc;IAEtB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,OAAO,UAAU;KACjC,IAAI,OAAO,UAAU,SAAS,OAAO,QAAQ,SAAS;AAEtD,UAAK,WAAW,WAAY;AACxB,aAAO;;AAGX,YAAO;;AAiBO,cAAQ,cAAc,EACpC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,oBAAoB;IAE5B,IAAI,YAAY,oBAAoB,EAAE;IAEtC,IAAI,SAAS,oBAAoB,EAAE;;;;;;;;;;;;;;;;IAkCnC,SAAS,WAAW,cAAc,UAAU,MAAM;KAC9C,IAAI,OAAO,UAAU,SAAS,OAAO,YAAY,SAAS;AAE1D,UAAK,SAAS,WAAY;AACtB,aAAO;OACW;OACR;OACT;;AAGL,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,SAAS,MAAM,UAAU,EAAE,EAC3B,UAAU,MAAM,aAChB,eAAe,EAAE;AAGrB,WAAK,QAAQ,SAAU,KAAK;OAExB,IAAI,uBAAuB,MAAM;AACjC,aAAM,gBAAgB,IAAI,OAAO,OAAO;AACxC,aAAM,cAAc,KAAK,MAAM,YAAY;AAG3C,oBAAa,KAAK,IAAI,SAAS,MAAM,CAAC;AAGtC,aAAM,gBAAgB;QACxB;AAEF,UAAI,OAAO,cACP,QAAO,OAAO,cAAc,MAAM,SAAS,aAAa;AAG5D,YAAM;OACF,MAAM;OACN,SAAS,eAAgB,eAAe;OAC3C;;AAGL,YAAO;;AAGa,cAAQ,oBAAoB,EAChD,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,kBAAkB;IAE1B,IAAI,YAAY,oBAAoB,EAAE;IAEtC,IAAI,SAAS,oBAAoB,EAAE;;;;;;;;;IA2BnC,SAAS,WAAW,oBAAoB,YAAY,UAAU,MAAM;KAChE,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,SAAS;AAExD,UAAK,SAAS,WAAY;AACtB,aAAO;OACS;OACN;OACT;;AAGL,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,UAAU,MAAM,cAAc,MAAM,EACpC,eAAe,EAAE,EACjB;AAEJ,UAAI,CAAC,QACD,OAAM;OACF,MAAM;OACN,SAAS,qCAAsC,aAAa;OAC/D;MAIL,SAAS,8BAA8B,QAAQ;AAC3C,WAAI,WAAW,UAAa,WAAW,MAAM;AACzC,YAAI,mBACA,QAAO;AAGX,cAAM;SACF,MAAM;SACN,SAAS,YAAY,aAAa;SACrC;;AAGL,cAAO;;AAIX,WAAK,QAAQ,SAAU,KAAK;OAExB,IAAI,uBAAuB,MAAM;AACjC,aAAM,gBAAgB,IAAI,OAAO,OAAO;AACxC,aAAM,cAAc,KAAK,MAAM,YAAY;AAG3C,oBAAa,KAAK,IAAI,SAAS,MAAM,CAAC;AAGtC,aAAM,gBAAgB;QACxB;AAGF,UAAI,WAAW,OAAO,GAAG,EAAE,KAAK,SAAS,CAAC,QAAQ,YAC9C,QAAO,8BAA8B,QAAQ,WAAW,OAAO,EAAE,CAAC,aAAa,GAAG,WAAW,UAAU,EAAE,EAAE;AAE/G,UAAI,WAAW,OAAO,GAAG,EAAE,KAAK,SAAS,CAAC,QAAQ,YAE9C,QAAO,QAAQ,WAAW,OAAO,EAAE,CAAC,aAAa,GAAG,WAAW,UAAU,EAAE,IAAI,aAAa;AAKhG,UAAI,MAAM,QAAQ,QAAQ,EAAE;AAExB,WAAI,eAAe,OACf,QAAO,QAAQ;AAGnB,WAAI,eAAe,WACf,QAAO,QAAQ,SAAS,aAAa,GAAG;;AAIhD,eAAS,8BAA8B,QAAQ,YAAY;AAC3D,UAAI,OACA,QAAO,OAAO,MAAM,SAAS,aAAa;AAE9C,aAAO;;AAGX,YAAO;;AAGW,cAAQ,kBAAkB,EAC5C,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,oBAAoB;IAE5B,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,oBAAoB,cAAc,UAAU;KAC5D,IAAI,OAAO,UAAU,SAAS,OAAO,YAAY,SAAS;AAE1D,UAAK,SAAS,WAAY;AACtB,aAAO;;AAGX,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,UAAU,MAAM,cAAc,MAAM;AAExC,UAAI,CAAC,SAAS;AACV,WAAI,mBACA,QAAO;AAGX,aAAM;QACF,MAAM;QACN,SAAS,qCAAsC,eAAe;QACjE;;AAGL,UAAI,QAAQ,kBAAkB,UAAa,QAAQ,kBAAkB,MAAM;AAEvE,WAAI,mBACA,QAAO;AAIX,WAAI,iBAAiB,UAAU,MAAM,QAAQ,QAAQ,CACjD,QAAO,QAAQ;AAGnB,aAAM;QACF,MAAM;QACN,SAAS,eAAgB,eAAe;QAC3C;;AAGL,aAAO,QAAQ;;AAGnB,UAAK,WAAW,SAAU,OAAO,OAAO;MACpC,IAAI,UAAU,MAAM,cAAc,MAAM;AAExC,UAAI,CAAC,QACD,OAAM;OACF,MAAM;OACN,SAAS,oCAAqC,eAAe;OAChE;AAIL,aAAO,QAAQ,gBAAgB;;AAInC,UAAK,UAAU,WAAY;AACvB,aAAO;;AAGX,YAAO;;AAiBa,cAAQ,oBAAoB,EAChD,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,oBAAoB;IAE5B,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;IAWtC,SAAS,WAAW,cAAc,UAAU;KACxC,IAAI,OAAO,UAAU,SAAS,OAAO,YAAY,SAAS;AAE1D,UAAK,SAAS,WAAY;AACtB,aAAO;;AAGX,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,UAAU,MAAM,cAAc,MAAM,EACpC,SAAS,MAAM;AAEnB,UAAI,CAAC,QACD,OAAM;OACF,MAAM;OACN,SAAS,qCAAsC,eAAe;OACjE;AAIL,UAAI,iBAAiB,OACjB,QAAO;AAEX,UAAI,iBAAiB,OACjB,QAAO,MAAM;AAGjB,aAAO,OAAO;;AAGlB,UAAK,WAAW,SAAU,OAAO,OAAO;MACpC,IAAI,SAAS,MAAM;AAGnB,aAAO,OAAO,gBAAgB;;AAIlC,YAAO;;AAiBa,cAAQ,oBAAoB,EAChD,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,qBAAqB;IAE7B,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,UAAU,sBAAsB;KAChD,IAAI,OAAO,UAAU,SAAS,OAAO,MAAM,MAAM,CAAC,YAAY,SAAS,CAAC,OAAO,qBAAqB,CAAC;KAErG,SAAS,kBAAkB,OAAO;MAC9B,IAAI,gBAAgB,KAAK,aAAa,CAAC,QACnC;AAEJ,WAAK,IAAI,GAAG,IAAI,eAAe,KAAK,EAChC,KAAI,KAAK,aAAa,CAAC,GAAG,SAAS,KAAK,UACpC,OAAM,cAAc,KAAK,MAAM,cAAc,MAAM,CAAC,KAAK,aAAa,CAAC,GAAG,SAAS,MAAM,EAAE;UAE3F,OAAM,cAAc,KAAK,KAAK,aAAa,CAAC,GAAG,SAAS,MAAM,CAAC;AAIvE,aAAO,SAAS,sBAAsB;AAClC,YAAK,IAAI,GAAG,IAAI,eAAe,KAAK,EAChC,OAAM,cAAc,KAAK;;;AAKrC,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,UAAU,MAAM,cAAc,MAAM,EACpC;AAEJ,UAAI,CAAC,QACD,OAAM;OACF,MAAM;OACN,SAAS;OACZ;MAGL,IAAI,sBAAsB,kBAAkB,MAAM;AAElD,cAAQ,MAAM,cAAc,MAAM;AAElC,2BAAqB;AAErB,aAAO;;AAGX,UAAK,WAAW,SAAU,OAAO,OAAO;MACpC,IAAI,sBAAsB,kBAAkB,MAAM,EAC9C,aAAa,KAAK,aAAa,CAAC;AAEpC,YAAM,cAAc,KAAK;AAEzB,cAAQ,KAAK,aAAa,CAAC,aAAa,GAAG,SAAS,OAAO,MAAM;AAEjE,YAAM,cAAc,KAAK,KAAK;AAE9B,2BAAqB;AAErB,aAAO;;AAGX,YAAO;;AAiBc,cAAQ,qBAAqB,EAClD,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,UAAU;IAElB,IAAI,YAAY,oBAAoB,EAAE;IAEtC,IAAI,SAAS,oBAAoB,EAAE;;;;;;;;;;;IA6BnC,SAAS,WAAW,UAAU,sBAAsB;KAChD,IAAI,OAAO,UAAU,SAAS,OAAO,MAAM,MAAM,CAAC,WAAW,SAAS,CAAC,OAAO,qBAAqB,CAAC;AAEpG,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,gBAAgB,MAAM,eACtB,SACA,gBAAgB,KAAK,aAAa,CAAC,QACnC,GACA;AAEJ,YAAM,gBAAgB,IAAI,OAAO,OAAO;AACxC,YAAM,cAAc,KAAK,MAAM,YAAY;AAE3C,gBAAU,MAAM,cAAc,MAAM;AAEpC,UAAI,CAAC,QACD,OAAM;OACF,MAAM;OACN,SAAS;OACZ;AAGL,WAAK,IAAI,GAAG,IAAI,eAAe,KAAK,EAChC,OAAM,cAAc,KAAK,KAAK,aAAa,CAAC,GAAG,SAAS,MAAM,CAAC;AAGnE,cAAQ,MAAM,cAAc,MAAM;AAElC,WAAK,IAAI,GAAG,IAAI,eAAe,KAAK,EAChC,OAAM,cAAc,KAAK;AAG7B,YAAM,gBAAgB;AAEtB,aAAO;;AAKX,YAAO;;AAGG,cAAQ,UAAU,EAC5B,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,SAAS;IAEjB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;IAatC,SAAS,WAAW,UAAU,UAAU,eAAe;KACnD,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,UAAU,UAAU,cAAc;AAEjF,UAAK,WAAW,SAAU,OAAO;AAG7B,UAAI,CAFU,MAAM,cAAc,MAAM,CAGpC,OAAM;OACF,MAAM;OACN,SAAS,oCAAqC,SAAS,SAAS,MAAM,GAAG;OAC5E;AAGL,aAAO,SAAS,SAAS,cAAc,SAAS,MAAM,EAAE,MAAM;;AAGlE,YAAO;;AAiBE,cAAQ,SAAS,EAC1B,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,OAAO;IAEf,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAEpE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM;;AAGzD,YAAO;;AAiBA,cAAQ,OAAO,EACtB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,OAAO;IAEf,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAEpE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM;;AAGzD,YAAO;;AAiBA,cAAQ,OAAO,EACtB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,OAAO;IAEf,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAEpE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM;;AAGxD,YAAO;;AAiBA,cAAQ,OAAO,EACtB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,OAAO;IAEf,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAEpE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM;;AAGvD,YAAO;;AAiBA,cAAQ,OAAO,EACtB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,OAAO;IAEf,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAEpE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM;;AAGxD,YAAO;;AAiBA,cAAQ,OAAO,EACtB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,OAAO;IAEf,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAEpE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM;;AAGvD,YAAO;;AAiBA,cAAQ,OAAO,EACtB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,SAAS;IAEjB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;IAqBtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,WAAW,UAAU,MAAM,MAAM;AAEtE,UAAK,WAAW,SAAU,OAAO;AAC7B,UAAI,CAAC,MACD,QAAO,CAAC,KAAK,SAAS,MAAM;AAGhC,aAAO,KAAK,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM;;AAGvD,YAAO;;AAiBE,cAAQ,SAAS,EAC1B,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,UAAU;IAElB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;IAqBtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,YAAY,UAAU,MAAM,MAAM;AAEvE,UAAK,WAAW,SAAU,OAAO;AAC7B,UAAI,CAAC,MACD,QAAO,CAAC,KAAK,SAAS,MAAM;AAEhC,aAAO,KAAK,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM;;AAGvD,YAAO;;AAiBG,cAAQ,UAAU,EAC5B,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,aAAa;IAErB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;IA0BtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,eAAe,UAAU,MAAM,MAAM;AAE1E,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,YAAY,KAAK,SAAS,MAAM,EAChC,aAAa,MAAM,SAAS,MAAM;AAEtC,UAAI,OAAO,cAAc,YAAY,OAAO,eAAe,SACvD,QAAO,YAAY;AAIvB,UAAI,OAAO,cAAc,YAAY,OAAO,eAAe,UAAU;OACjE,IAAI,IAAI,IACJ,IAAI;AACR,cAAO,IAAI,YAAY,KAAK,EACxB,MAAK;AAET,cAAO;;AAGX,aAAO;;AAGX,YAAO;;AAiBM,cAAQ,aAAa,EAClC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,WAAW;IAEnB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,aAAa,UAAU,MAAM,MAAM;AAExE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM;;AAGvD,YAAO;;AAiBI,cAAQ,WAAW,EAC9B,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,YAAY;IAEpB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,cAAc,UAAU,MAAM,MAAM;AAEzE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM;;AAGvD,YAAO;;AAiBK,cAAQ,YAAY,EAChC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,UAAU;IAElB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;IAWtC,SAAS,WAAW,UAAU,MAAM,KAAK;KACrC,IAAI,OAAO,UAAU,SAAS,OAAO,YAAY,UAAU,MAAM,IAAI;AAErE,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,IAAI,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,CAAC;;AAG9D,YAAO;;AAiBG,cAAQ,UAAU,EAC5B,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,QAAQ;IAEhB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;IAatC,SAAS,WAAW,UAAU,SAAS,KAAK;KACxC,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,UAAU,IAAI;AAE7D,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,MAAM,IAAI,SAAS,MAAM;AAC7B,UAAI,SAAS,MAAM,GAAG,MAAM;AAC5B,UAAI,QACA,QAAO;AAEX,aAAO,MAAM;;AAGjB,YAAO;;AAiBC,cAAQ,QAAQ,EACxB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,QAAQ;IAEhB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;IAatC,SAAS,WAAW,UAAU,SAAS,KAAK;KACxC,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,UAAU,IAAI;AAE7D,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,MAAM,IAAI,SAAS,MAAM;AAC7B,UAAI,SAAS,MAAM,GAAG,MAAM;AAC5B,UAAI,QACA,QAAO;AAEX,aAAO,MAAM;;AAGjB,YAAO;;AAiBC,cAAQ,QAAQ,EACxB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,QAAQ;IAEhB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM;KAChC,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,UAAU,KAAK;AAE9D,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,CAAC,KAAK,SAAS,MAAM;;AAGhC,YAAO;;AAiBC,cAAQ,QAAQ,EACxB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,QAAQ;IAEhB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,UAAU,MAAM,MAAM;AAErE,UAAK,WAAW,SAAU,OAAO;AAE7B,aAAO,CAAC,CAAC,KAAK,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,SAAS,MAAM;;AAG5D,YAAO;;AAiBC,cAAQ,QAAQ,EACxB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,OAAO;IAEf,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAEpE,UAAK,WAAW,SAAU,OAAO;AAE7B,aAAO,CAAC,CAAC,KAAK,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,SAAS,MAAM;;AAG5D,YAAO;;AAiBA,cAAQ,OAAO,EACtB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,YAAY;IAEpB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;;IAatC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,WAAW,UAAU,MAAM,MAAM;;;;;;;;;AAUtE,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,OAAO,KAAK,SAAS,MAAM;MAC/B,IAAI,eAAe,MAAM,SAAS,MAAM;AAExC,UAAI;AAEA,cAAO,CAAC,CADK,IAAI,OAAO,aAAa,CACrB,KAAK,KAAK;eACrB,OAAO;AACZ,aAAM;QACF,MAAM;QACN,SAAS,MAAM,UAAU;QAC5B;;;AAIT,YAAO;;AAiBK,cAAQ,YAAY,EAChC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,UAAU;IAElB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;IAWtC,SAAS,WAAW,UAAU,YAAY,QAAQ,SAAS;KACvD,IAAI,OAAO,UAAU,SAAS,OAAO,WAAW,UAAU,YAAY,QAAQ,QAAQ;AAEtF,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,WAAW,SAAS,MAAM,GAAG,OAAO,SAAS,MAAM,GAAG,QAAQ,SAAS,MAAM;;AAGxF,YAAO;;AAiBG,cAAQ,UAAU,EAC5B,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,QAAQ;IAEhB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAYtC,SAAS,WAAW,UAAU,YAAY,SAAS;KAC/C,IAAI,OAAO,UAAU,SAAS,OAAO,SAAS,UAAU,YAAY,QAAQ;AAE5E,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,WAAW,SAAS,MAAM,KAAK,OAAO,WAAW,SAAS,MAAM,GAAG,QAAQ,SAAS,MAAM;;AAGrG,YAAO;;AAiBC,cAAQ,QAAQ,EACxB,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,aAAa;IAErB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,UAAU,UAAU;KACpC,IAAI,OAAO,UAAU,SAAS,OAAO,QAAQ,SAAS,EAClD,OAAO,EAAE,CAAC,OAAO,YAAY,EAAE,CAAC;AAEpC,UAAK,SAAS,WAAY;AACtB,aAAO;;AAGX,UAAK,WAAW,SAAU,OAAO;AAC7B,aAAO,KAAK,IAAI,SAAU,SAAS;AAC/B,cAAO,QAAQ,SAAS,MAAM;QAChC;;AAGN,YAAO;;AAiBM,cAAQ,aAAa,EAClC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,YAAY;IAEpB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;IAUtC,SAAS,WAAW,UAAU,UAAU;KACpC,IAAI,OAAO,UAAU,SAAS,OAAO,OAAO,SAAS,EACjD,YAAY,EAAE,CAAC,OAAO,YAAY,EAAE,CAAC;AAEzC,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,MAAM,MACN,WAAW,MACX,MAAM,EAAE;AAEZ,gBAAU,QAAQ,SAAU,OAAO;AAC/B,WAAI,IAEA,KAAI,MAAM,SAAS,KAAK,WACpB,YAAW,MAAM,SAAS;WAE1B,YAAW,MAAM,SAAS,MAAM;WAGpC,KAAI,YAAY,MAAM,SAAS,MAAM;AAEzC,aAAM,CAAC;QACT;AAEF,aAAO;;AAGX,YAAO;;AAiBK,cAAQ,YAAY,EAChC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,YAAY;IAEpB,IAAI,UAAU,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,WAAW,SAAU,KAAK;AAAE,YAAO,OAAO;QAAS,SAAU,KAAK;AAAE,YAAO,OAAO,OAAO,WAAW,cAAc,IAAI,gBAAgB,UAAU,QAAQ,OAAO,YAAY,WAAW,OAAO;;IAgBtQ,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;;;;IAgBtC,SAAS,QAAQ,SAAS,MAAM,OAAO;KACnC,IAAI,YAAY;AAChB,WAAM,cAAc,KAAK,QAAQ;AACjC,iBAAY,KAAK,SAAS,MAAM;AAChC,WAAM,cAAc,KAAK;AACzB,YAAO;;IAGX,SAAS,gBAAgB,YAAY,cAAc,MAAM,OAAO;KAC5D,IAAI,gBAAgB,WAAW,OAAO,SAAU,SAAS;AACrD,aAAO,QAAQ,SAAS,MAAM,MAAM;OACtC;AAEF,aAAQ,cAAR;MACI,KAAK,MACD,QAAO;MACX,KAAK,QACD,QAAO,cAAc,MAAM;MAC/B,KAAK;AACD,WAAI,cAAc,OACd,QAAO,cAAc,cAAc,SAAS;AAEhD,cAAO;;;IAInB,SAAS,cAAc,YAAY,cAAc,MAAM,OAAO;KAC1D,IAAI,gBAAgB,EAAE,EAClB,OACA,KACA,UAAU,EAAE,EACZ,cAAc,EAAE;AAEpB,UAAK,OAAO,WACR,KAAI,WAAW,eAAe,IAAI,EAAE;AAChC,cAAQ;OACC;OACL,OAAO,WAAW;OACrB;AACD,UAAI,QAAQ,OAAO,MAAM,MAAM,CAC3B,SAAQ,KAAK,MAAM;;AAK/B,aAAQ,cAAR;MACI,KAAK;AACD,eAAQ,QAAQ,SAAU,SAAO;AAC7B,sBAAcK,QAAM,OAAOA,QAAM;SACnC;AACF,cAAO;MACX,KAAK;AACD,WAAI,QAAQ,QAAQ;AAChB,oBAAY,QAAQ,GAAG,OAAO,QAAQ,GAAG;AACzC,eAAO;;AAEX,cAAO;MACX,KAAK;AACD,WAAI,QAAQ,QAAQ;AAChB,oBAAY,QAAQ,QAAQ,SAAS,GAAG,OAAO,QAAQ,QAAQ,SAAS,GAAG;AAC3E,eAAO;;AAEX,cAAO;;AAGf,aAAQ,QAAQ,SAAU,SAAO;AAC7B,oBAAcA,QAAM,OAAOA,QAAM;OACnC;;IAGN,SAAS,WAAW,oBAAoB,cAAc,UAAU,MAAM;KAClE,IAAI,OAAO,UAAU,SAAS,OAAO,aAAa,UAAU,KAAK;AAEjE,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,aAAa,MAAM,cAAc,MAAM;AAE3C,UAAI,YACA;WAAI,MAAM,QAAQ,WAAW,CACzB,QAAO,gBAAgB,YAAY,cAAc,MAAM,MAAM;iBACrD,OAAO,eAAe,cAAc,cAAc,QAAQ,WAAW,MAAM,SACnF,QAAO,cAAc,YAAY,cAAc,MAAM,MAAM;;AAInE,aAAO;;AAGX,YAAO;;AAGK,cAAQ,YAAY;KAChC,QAAQ;KACR,OAAO;KACP,MAAM;KACN,KAAK;KACR;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeL,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,aAAa;IAErB,IAAI,UAAU,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,WAAW,SAAU,KAAK;AAAE,YAAO,OAAO;QAAS,SAAU,KAAK;AAAE,YAAO,OAAO,OAAO,WAAW,cAAc,IAAI,gBAAgB,UAAU,QAAQ,OAAO,YAAY,WAAW,OAAO;;IAgBtQ,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;;IAatC,SAAS,kBAAkB,YAAY,MAAM,OAAO;AAChD,YAAO,WAAW,IAAI,SAAU,SAAS;MACrC,IAAI;AACJ,YAAM,cAAc,KAAK,QAAQ;AACjC,gBAAU,KAAK,SAAS,MAAM;AAC9B,YAAM,cAAc,KAAK;AACzB,aAAO;OACT;;IAGN,SAAS,WAAW,oBAAoB,UAAU,MAAM;KACpD,IAAI,OAAO,UAAU,SAAS,OAAO,cAAc,UAAU,KAAK;AAElE,UAAK,WAAW,SAAU,OAAO;MAC7B,IAAI,aAAa,MAAM,cAAc,MAAM,EACvC,UAAU,EAAE,EACZ;AAEJ,UAAI,MAAM,QAAQ,WAAW,CACzB,QAAO,kBAAkB,YAAY,MAAM,MAAM;gBACzC,OAAO,eAAe,cAAc,cAAc,QAAQ,WAAW,MAAM,UAAU;AAC7F,YAAK,OAAO,WACR,KAAI,WAAW,eAAe,IAAI,CAC9B,SAAQ,KAAK,WAAW,KAAK;AAGrC,cAAO,kBAAkB,SAAS,MAAM,MAAM;;AAGlD,aAAO;;AAGX,YAAO;;AAGM,cAAQ,aAAa,EAClC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,eAAe;IAEvB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAWtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,cAAc,UAAU,MAAM,MAAM;;;;;;;;;AAUzE,UAAK,WAAW,SAAU,OAAO;AAC7B,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,YAAO;;AAiBQ,cAAQ,eAAe,EACtC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,YAAY;IAEpB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;;;;IAWtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,WAAW,UAAU,MAAM,MAAM;;;;;;;;;AAUtE,UAAK,WAAW,SAAU,OAAO;AAC7B,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,YAAO;;AAiBK,cAAQ,YAAY,EAChC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,gBAAgB;IAExB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;IAQtC,SAAS,WAAW,UAAU,MAAM,OAAO;KACvC,IAAI,OAAO,UAAU,SAAS,OAAO,WAAW,UAAU,KAAK;AAE/D,UAAK,WAAW,SAAU,OAAO;AAC7B,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,YAAO;;AAiBS,cAAQ,gBAAgB,EACxC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,gBAAgB;IAExB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;IAQtC,SAAS,WAAW,UAAU,UAAU;KACpC,IAAI,OAAO,UAAU,SAAS,OAAO,WAAW,SAAS;AAEzD,UAAK,WAAW,SAAU,OAAO;AAC7B,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,YAAO;;AAiBS,cAAQ,gBAAgB,EACxC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,aAAa;IAErB,IAAI,YAAY,oBAAoB,EAAE;;;;;;;IAQtC,SAAS,WAAW,gBAAgB,UAAU;KAC1C,IAAI,OAAO,UAAU,SAAS,OAAO,cAAc,SAAS;AAE5D,UAAK,SAAS,WAAY;AACtB,aAAO;;AAGX,UAAK,WAAW,SAAU,OAAO;AAC7B,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,YAAO;;AAiBM,cAAQ,aAAa,EAClC,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,sBAAsB;IAE9B,IAAI,YAAY,oBAAoB,EAAE;IAEtC,SAAS,mBAAmB,KAAK;AAAE,SAAI,MAAM,QAAQ,IAAI,EAAE;AAAE,WAAK,IAAI,IAAI,GAAG,OAAO,MAAM,IAAI,OAAO,EAAE,IAAI,IAAI,QAAQ,IAAO,MAAK,KAAK,IAAI;AAAM,aAAO;WAAe,QAAO,MAAM,KAAK,IAAI;;;;;;;;;;;IAyB9L,SAAS,WAAW,UAAU,QAAQ;KAClC,IAAI,OAAO,UAAU,SAAS,OAAO,MAAM,UAAU,UAAU,CAAC,uBAAuB,SAAS,CAAC,OAAO,mBAAmB,OAAO,CAAC,CAAC;AAEpI,UAAK,SAAS,WAAY;AACtB,aAAO,OAAO,IAAI,SAAU,GAAG;AAC3B,cAAO,EAAE,QAAQ;QACnB;;AAGN,UAAK,WAAW,SAAU,OAAO;AAC7B,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,YAAO;;AAGe,cAAQ,sBAAsB,EACpD,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;AACF,cAAQ,uBAAuB;IAE/B,IAAI,YAAY,oBAAoB,EAAE;IAEtC,IAAI,SAAS,oBAAoB,EAAE;IAEnC,SAAS,mBAAmB,KAAK;AAAE,SAAI,MAAM,QAAQ,IAAI,EAAE;AAAE,WAAK,IAAI,IAAI,GAAG,OAAO,MAAM,IAAI,OAAO,EAAE,IAAI,IAAI,QAAQ,IAAO,MAAK,KAAK,IAAI;AAAM,aAAO;WAAe,QAAO,MAAM,KAAK,IAAI;;IAE9L,SAAS,SAAS,KAAK;AAAE,YAAO,MAAM,QAAQ,IAAI,GAAG,MAAM,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;IA6B1E,SAAS,WAAW,UAAU,YAAY,OAAO;KAC7C,IAAI,UAAU,UAAU;KACxB,IAAI;AACJ,SAAI,QACA,aAAY,WAAW,UAAU,WAAW,MAAM,WAAW,GAAG,SAAS,KAAK,WAAW,WAAW,GAAG,UAAU,GAAG;UACjH;AACH,cAAQ;AACR,mBAAa;;KAGjB,IAAI,SAAS,OACT,UAAU,SAAS,OAAO;AACH,aAAQ;KAFnC,IAGI,OAAO,QAAQ,MAAM,EAAE;KAE3B,IAAI,OAAO,UAAU,SAAS,OAAO,MAAM,UAAU,UAAU,CAAC,kBAAkB,SAAS,CAAC,OAAO,mBAAmB,MAAM,CAAC,CAAC;AAE9H,UAAK,SAAS,WAAY;AACtB,aAAO;;AAGX,UAAK,WAAW,SAAU,OAAO;AAC7B,UAAI,WAAW,KAAK,UAAU,GAAG;OAC7B,IAAI,eAAe,EAAE;AAGrB,YAAK,QAAQ,SAAU,KAAK;QAExB,IAAI,uBAAuB,MAAM;AACjC,cAAM,gBAAgB,IAAI,OAAO,OAAO;AACxC,cAAM,cAAc,KAAK,MAAM,YAAY;AAG3C,qBAAa,KAAK,IAAI,SAAS,MAAM,CAAC;AAGtC,cAAM,gBAAgB;SACxB;AAEF,WAAI,KAAK,WAAW,EAChB,QAAO,aAAa;WAEpB,QAAO,YAAY,IAAI,MAAM,UAAU,GAAG,EAAE;;AAIpD,YAAM;OACF,MAAM;OACN,SAAS;OACZ;;AAGL,YAAO;;AAGgB,cAAQ,uBAAuB,EACtD,QAAQ,YACX;;IAIM,SAAS,UAAQ,WAAS,qBAAqB;AAKtD,WAAO,eAAeA,WAAS,cAAc,EACzC,OAAO,MACV,CAAC;;;;;IAsBF,SAAS,OAAO,gBAAgB,WAAW;KACvC,IAAI,UAAU,EAAE;AAEhB,aAAQ,iBAAiB,kBAAkB,EAAE;AAC7C,aAAQ,YAAY,aAAa,EAAE;AAEnC,aAAQ,UAAU,SAAU,MAAM;MAC9B,IAAI,UAAU;AAEd,UAAI,CAAC,KACD,QAAO;AAEX,UAAI,CAAC,QAAQ,kBAAkB,CAAC,MAAM,QAAQ,QAAQ,eAAe,YAAY,CAC7E,QAAO;AAGX,cAAQ,eAAe,YAAY,QAAQ,SAAU,kBAAkB;AACnE,WAAI,iBAAiB,UAAU,aAAa,KAAK,KAAK,aAAa,CAC/D,WAAU;QAEhB;AAEF,aAAO;;AAGX,aAAQ,gBAAgB,WAAkC;MACtD,IAAI,OAAO,MAAM,UAAU,MAAM,KAAK,UAAU;AAEhD,UAAI,KAAK,WAAW,EAChB,QAAO,QAAQ,QAAQ,KAAK,GAAG;;AAIvC,YAAO;;AAGW,cAAQ,kBAAkB,EACpC,QACX;;GAGS,CAAC;GACT;;;;;;AC5gKF;AACE;;AAEF;AACE;;AAEF;AACE;;AAGF;AAEA;AAEA;AAKA;AAEA;AAEA;AAEA;AAEA;AAEA;AAOA;AAKA;AAMA;AAOA;;;;;;;AAoBE;;;;;;;;;AAUF;AACE;AACE;AACA;AACA;AACA;;AAEF;;;;;;;;;AAYF;;;AAKE;;;;;AAGA;;;;;;AAGF;;;;AAUE;AAEI;;AAEA;AACE;AACA;;;AAGF;AACA;;AAGE;AAGA;AACA;;;AAYN;AAIA;;;;;AClHF,SAAS,UAAU,MAAc,UAA4B,EAAE,EAA2B;CACxF,MAAM,EAAE,QAAQ,wBAAwB,kBAAkB;CAC1D,MAAM,KAAK,CAAC,CAAC;CACb,MAAM,aAAaO,2CAAe,OAAO;CAEzC,MAAM,gBACJ,WACA,UACA,yBAEAC,6CAAiB;EACf;EACA;EACA;EACA;EACA,iBAAiB,SAAS;EAC3B,CAAC;CAEJ,MAAMC,aAAsC;EAC1C,OAAO,EAAE;EACT,GAAI,KAAK,EAAE,GAAG,EAAE,YAAY,OAAO;EACpC;CAED,MAAM,sBACJ,MACA,cAGI,EAAE,KAC+C;EACrD,MAAM,EAAE,iBAAiB,oBAAoB,sBAAsB,OAAO;AAC1E,MAAI,KAAK,SAAS,UAAU;GAC1B,MAAM,cAAc,mBAAmB,KAAK,SAAS,GAAG;;AAExD,OAAI,aAAa;AACf,QACE,CAACC,gCAAY,YAAY,KACxB,YAAY,aAAa,cACxB,YAAY,aAAa,gBACzB,YAAY,aAAa,YAE3B,QAAO;KACL,GAAG;KACH,UAAU,UAAU,YAAY,SAAS,GAAG,aAAa,GAAG,YAAY,SACrE,MAAM,EAAE,CACR,QAAQ,KAAK,GAAG;KACpB;AAEH,WAAO,KACF;KAAE,OAAO,CAAC,YAAY;KAAE,KAAK;KAAM,GACnC;KACC,YAAY;KACZ,OAAO,CAAC,YAAY;KACpB,KAAK;KACN;;aAEE,YAAY,KAAK,IAAI,WAAW,KAAK,EAAE;AAChD,OAAI,IAAI;IAEN,MAAMC,UADY,sBAAsB,KAAK,CACrB,KAAI,MAAK;AAC/B,SAAI,OAAO,MAAM,SACf,QAAO;AAET,YAAO,mBAAmB,EAAE;MAC5B;AAGF,QAAI,CAACA,QAAM,MAAM,QAAQ,CACvB,QAAO;AAET,WAAO,EACL,OAAOA,SACR;;GAEH,MAAM,YAAY,uBAAuB,KAAK;GAC9C,MAAM,aAAa,UAAU;GAM7B,MAAM,QALe,UAClB,QAAO,MAAK,MAAM,QAAQ,EAAE,IAAK,CAAC,CAAC,KAAK,OAAO,MAAM,YAAY,UAAU,EAAG,CAC9E,KAAI,MACH,MAAM,QAAQ,EAAE,GAAG,EAAE,QAAO,OAAM,CAAC,CAAC,KAAK,OAAO,OAAO,YAAY,UAAU,GAAG,GAAG,EACpF,CAEA,KAAK,QAAuD;AAC3D,QAAI,MAAM,QAAQ,IAAI,CACpB,QAAO;KACL,YAAY;KACZ,OAAO,IAAI,KAAI,MAAK,mBAAmB,EAAE,CAAC,CAAC,OAAO,QAAQ;KAC3D;AAEH,WAAO,mBAAmB,IAAI;KAC9B,CACD,OAAO,QAAQ;;AAElB,OAAI,MAAM,SAAS,EACjB,QAAO;IAAE;IAAY;IAAO;aAErB,gBAAgB,KAAK,EAAE;GAChC,MAAM,CAAC,MAAM,SAAS,KAAK;GAC3B,IAAIC,QAAgB;GACpB,IAAIC,QAAgB;GACpB,IAAIC,cAAuC;AAC3C,OAAI,iBAAiB,KAAK,EAAE;AAC1B,YAAQ,KAAK;AACb,QAAI,iBAAiB,MAAM,EAAE;AAC3B,aAAQ,MAAM;AACd,mBAAc;eAGV,gBAAgB,MAAM,CACxB,SAAQ,MAAM;cAKd,iBAAiB,MAAM,IAAI,gBAAgB,KAAK,EAAE;AACpD,YAAQ,MAAM;AACd,YAAQ,KAAK;;AAIjB,OAAI,qBAAqB,KAAK,MAAM,EAElC;;QAAI,aAAa,OAAO,WAAW,CACjC,QAAO;KACL;KACA,UAAU;KACV,OAAO;KACP,GAAI,cAAc,EAAE,aAAa,GAAG,EAAE;KACvC;cAGC,iBAAiB,KAAK,MAAM,EAE9B;;QAAI,aAAa,OAAO,aAAa,CACnC,QAAO;KACL;KACA,UAAU;KACV,OAAO,MAAM,QAAQ,OAAO,GAAG;KAChC;cAIC,gBAAgB,KAAK,MAAM,EAE7B;;QAAI,aAAa,OAAO,WAAW,CACjC,QAAO;KACL;KACA,UAAU;KACV,OAAO,MAAM,QAAQ,OAAO,GAAG;KAChC;;aAKA,oBAAoB,KAAK,IAAI,oBAAoB,KAAK,EAAE;GAEjE,IAAIC,SAAqB,CAAC,MAAM,KAAK;GACrC,IAAID,cAAuC;GAC3C,MAAM,CACJ,EAAE,YAAY,SACd,EACE,UAAU,CAAC,MAAM,YAEjB,KAAK;AAET,OAAI,oBAAoB,KAAK,CAC3B,UAAS,CAAC,KAAK,OAAO,MAAM,MAAM;QAC7B;AACL,aAAS,CAAC,KAAK,YAAY,MAAM,WAAW;AAC5C,kBAAc;;;AAGhB,OACE,SACA,OAAO,OAAM,MAAK,aAAa,OAAO,WAAW,gBAAgB,UAAU,IAAI,OAAU,CAAC,EAC1F;IACA,MAAM,aACJ,OAAO,KAAK,OAAO,MAAM,gBAAgB,UAAU,SAAS,CAAC,OAAO,IAAI,OAAO,GAAG;IACpF,MAAM,QAAQ,gBAAgB,aAAaE,4BAAS,YAAY,IAAI;AACpE,WAAO,cACH;KAAE;KAAO,UAAU;KAAW;KAAO;KAAa,GAClD;KAAE;KAAO,UAAU;KAAW;KAAO;;aAElC,iBAAiB,KAAK,EAAE;GACjC,IAAIC,QAAuB;GAE3B,IAAIC,QAAa;GACjB,IAAIJ,cAAuC;GAC3C,IAAI,OAAO;GACX,MAAM,CAAC,MAAM,SAAS,KAAK;AAE3B,OAAI,iBAAiB,KAAK,EAAE;AAC1B,YAAQ,KAAK;AACb,QAAI,iBAAiB,MAAM,EAAE;AAC3B,aAAQ,MAAM;AACd,mBAAc;eACL,gBAAgB,MAAM,CAC/B,SAAQ,MAAM;cAIZ,iBAAiB,MAAM,IAAI,gBAAgB,KAAK,EAAE;AACpD,WAAO;AACP,YAAQ,MAAM;AACd,YAAQ,KAAK;;GAGjB,IAAI,WAAW,kBAAkB,KAAK,MAAM,KAAK;AACjD,OAAI,UAAU,SAAS,aAAa,OAAO,aAAa,MACtD,YAAW,aAAa,MAAM,SAAS;AAEzC,OACE,SACA,aAAa,OAAO,UAAU,gBAAgB,UAAU,QAAQ,OAAU,IAC1E,UAAU,OAEV,QAAO,cAAc;IAAE;IAAO;IAAU;IAAO;IAAa,GAAG;IAAE;IAAO;IAAU;IAAO;;AAG7F,SAAO;;CAGT,MAAM,UAAU,QAAQ,cAAcK,gDAAuB,MAAS;CAEtE,IAAIC;AACJ,KAAI;AACF,iBAAeC,uCAAwB,QAAQ,KAAK,CAAC;SAC/C;AACN,SAAO,QAAQ,WAAW;;CAG5B,MAAM,gBAAgB,0BAA0B,aAAa;CAE7D,MAAM,SAAS,mBAAmB,cAAc;AAChD,KAAI,QAAQ;AACV,MAAIX,gCAAY,OAAO,CACrB,QAAO,QAAQ,OAAO;AAExB,SAAO,QAAQ;GAAE,OAAO,CAAC,OAAO;GAAE,GAAI,KAAK,EAAE,GAAG,EAAE,YAAY,OAAO;GAAG,CAAC;;AAG3E,QAAO,QAAQ,WAAW"}
|
|
1
|
+
{"version":3,"file":"parseSpEL.js","names":["module","exports","nodeType","t","pos","value","entry","returnArray: (\n | DefaultCombinatorName\n | SpELProcessedExpression\n | ('and' | SpELProcessedExpression)[]\n )[]","getFieldsArray","fieldIsValidUtil","emptyQuery: DefaultRuleGroupTypeAny","isRuleGroup","rules","field: string","regex: string","valueSource: ValueSource | undefined","values: [any, any]","joinWith","field: string | null","value: any","prepareRuleGroup","compiledSpEL: SpELExpressionNode","SpelExpressionEvaluator"],"sources":["../../../node_modules/spel2js/dist/spel2js.js","../src/utils/parseSpEL/utils.ts","../src/utils/parseSpEL/parseSpEL.ts"],"sourcesContent":["/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"spel2js\"] = factory();\n\telse\n\t\troot[\"spel2js\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The common supertype of all AST nodes in a parsed Spring Expression Language\n * format expression.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createSpelNode(nodeType, position) {\n var node = {},\n type = nodeType || 'Abstract',\n children = [],\n parent = null,\n activeContext;\n\n node._type = type;\n\n node.getType = function () {\n return type;\n };\n node.setType = function (nodeType) {\n type = nodeType;\n };\n\n node.getChildren = function () {\n return children;\n };\n node.addChild = function (childNode) {\n if (!childNode) {\n // See OpMinus and OpPlus: right node can be null for unary mode\n return;\n }\n if (!childNode.setParent) {\n throw {\n name: 'Error',\n message: 'Trying to add a child which is not a node: ' + JSON.stringify(childNode)\n };\n }\n childNode.setParent(node);\n children.push(childNode);\n };\n\n node.getParent = function () {\n return parent;\n };\n node.setParent = function (parentNode) {\n parent = parentNode;\n };\n\n node.getContext = function (state) {\n return activeContext || state.activeContext.peek();\n };\n node.setContext = function (nodeContext) {\n activeContext = nodeContext;\n };\n\n node.getStartPosition = function () {\n return position >> 16;\n };\n\n node.getEndPosition = function () {\n return position & 0xffff;\n };\n\n //must override\n node.getValue = function () {\n throw {\n name: 'MethodNotImplementedException',\n message: 'SpelNode#getValue() must be overridden.'\n };\n };\n\n node.toString = function () {\n var s = 'Kind: ' + node.getType();\n //s += ', Value: ' + node.getValue();\n s += ', Children: [';\n for (var i = 0, l = node.getChildren().length; i < l; i += 1) {\n s += '{' + node.getChildren()[i] + '}, ';\n }\n s += ']';\n return s;\n };\n\n //constructor\n if (position === 0) {\n throw {\n name: 'Error',\n message: 'Position cannot be 0'\n };\n }\n\n for (var _len = arguments.length, operands = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n operands[_key - 2] = arguments[_key];\n }\n\n if (operands) {\n operands.forEach(function (operand) {\n node.addChild(operand);\n });\n }\n\n return node;\n}\n\nvar SpelNode = exports.SpelNode = {\n create: createSpelNode\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Stack = Stack;\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction Stack(startingElements) {\n this.elements = startingElements || [];\n}\n\nStack.prototype.push = function (el) {\n this.elements.push(el);\n return el;\n};\n\nStack.prototype.pop = function () {\n return this.elements.pop();\n};\n\nStack.prototype.peek = function () {\n return this.elements[this.elements.length - 1];\n};\n\nStack.prototype.empty = function () {\n return this.elements.length > 0;\n};\n\nStack.prototype.search = function (el) {\n return this.elements.length - this.elements.indexOf(el);\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nvar types = {\n\n LITERAL_INT: 1, //tested\n\n LITERAL_LONG: 2, //tested\n\n LITERAL_HEXINT: 3, //tested\n\n LITERAL_HEXLONG: 4, //tested\n\n LITERAL_STRING: 5, //tested\n\n LITERAL_REAL: 6, //tested\n\n LITERAL_REAL_FLOAT: 7, //tested\n\n LPAREN: '(', //tested\n\n RPAREN: ')', //tested\n\n COMMA: ',', //tested\n\n IDENTIFIER: 0, //tested\n\n COLON: ':', //tested\n\n HASH: '#', //tested\n\n RSQUARE: ']', //tested\n\n LSQUARE: '[', //tested\n\n LCURLY: '{', //tested\n\n RCURLY: '}', //tested\n\n DOT: '.', //tested\n\n PLUS: '+', //tested\n\n STAR: '*', //tested\n\n MINUS: '-', //tested\n\n SELECT_FIRST: '^[', //tested\n\n SELECT_LAST: '$[', //tested\n\n QMARK: '?', //tested\n\n PROJECT: '![', //tested\n\n DIV: '/', //tested\n\n GE: '>=', //tested\n\n GT: '>', //tested\n\n LE: '<=', //tested\n\n LT: '<', //tested\n\n EQ: '==', //tested\n\n NE: '!=', //tested\n\n MOD: '%', //tested\n\n NOT: '!', //tested\n\n ASSIGN: '=', //tested\n\n INSTANCEOF: 'instanceof', //test fails\n\n MATCHES: 'matches', //test fails\n\n BETWEEN: 'between', //test fails\n\n SELECT: '?[', //tested\n\n POWER: '^', //tested\n\n ELVIS: '?:', //tested\n\n SAFE_NAVI: '?.', //tested\n\n BEAN_REF: '@', //tested\n\n SYMBOLIC_OR: '||', //tested\n\n SYMBOLIC_AND: '&&', //tested\n\n INC: '++', //tested\n\n DEC: '--' //tested\n};\n\nfunction TokenKind(type) {\n this.type = type;\n this.tokenChars = types[type];\n this._hasPayload = typeof types[type] !== 'string';\n if (typeof types[type] === 'number') {\n this._ordinal = types[type];\n }\n}\n\n//create enum\nfor (var t in types) {\n if (types.hasOwnProperty(t)) {\n TokenKind[t] = new TokenKind(t);\n }\n}\n\nTokenKind.prototype.toString = function () {\n return this.type + (this.tokenChars.length !== 0 ? '(' + this.tokenChars + ')' : '');\n};\n\nTokenKind.prototype.getLength = function () {\n return this.tokenChars.length;\n};\n\nTokenKind.prototype.hasPayload = function () {\n return this._hasPayload;\n};\n\nTokenKind.prototype.valueOf = function (id) {\n for (var t in types) {\n if (types.hasOwnProperty(t) && types[t] === id) {\n return TokenKind[t];\n }\n }\n};\n\nTokenKind.prototype.ordinal = function () {\n return this._ordinal;\n};\n\nexports.TokenKind = TokenKind;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StandardContext = exports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionEvaluator = __webpack_require__(4);\n\nvar _StandardContext = __webpack_require__(50);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nexports.SpelExpressionEvaluator = _SpelExpressionEvaluator.SpelExpressionEvaluator;\nexports.StandardContext = _StandardContext.StandardContext;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionParser = __webpack_require__(5);\n\nvar _Stack = __webpack_require__(1);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nvar spelExpressionEvaluator = {};\n\nfunction evalCompiled(compiledExpression, context, locals) {\n var activeContext = new _Stack.Stack(),\n state;\n\n if (!context) {\n context = {};\n }\n\n activeContext.push(context);\n\n state = {\n rootContext: context,\n activeContext: activeContext,\n locals: locals\n };\n return compiledExpression.getValue(state);\n}\n\nspelExpressionEvaluator.compile = function (expression) {\n var compiledExpression = (0, _SpelExpressionParser.SpelExpressionParser)().parse(expression);\n return {\n eval: function _eval(context, locals) {\n return evalCompiled(compiledExpression, context, locals);\n },\n _compiledExpression: compiledExpression\n };\n};\n\nspelExpressionEvaluator.eval = function (expression, context, locals) {\n return spelExpressionEvaluator.compile(expression).eval(context, locals);\n};\n\nexports.SpelExpressionEvaluator = spelExpressionEvaluator;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionParser = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nvar _Tokenizer = __webpack_require__(6);\n\nvar _BooleanLiteral = __webpack_require__(8);\n\nvar _NumberLiteral = __webpack_require__(9);\n\nvar _StringLiteral = __webpack_require__(10);\n\nvar _NullLiteral = __webpack_require__(11);\n\nvar _FunctionReference = __webpack_require__(12);\n\nvar _MethodReference = __webpack_require__(13);\n\nvar _PropertyReference = __webpack_require__(14);\n\nvar _VariableReference = __webpack_require__(15);\n\nvar _CompoundExpression = __webpack_require__(16);\n\nvar _Indexer = __webpack_require__(17);\n\nvar _Assign = __webpack_require__(18);\n\nvar _OpEQ = __webpack_require__(19);\n\nvar _OpNE = __webpack_require__(20);\n\nvar _OpGE = __webpack_require__(21);\n\nvar _OpGT = __webpack_require__(22);\n\nvar _OpLE = __webpack_require__(23);\n\nvar _OpLT = __webpack_require__(24);\n\nvar _OpPlus = __webpack_require__(25);\n\nvar _OpMinus = __webpack_require__(26);\n\nvar _OpMultiply = __webpack_require__(27);\n\nvar _OpDivide = __webpack_require__(28);\n\nvar _OpModulus = __webpack_require__(29);\n\nvar _OpPower = __webpack_require__(30);\n\nvar _OpInc = __webpack_require__(31);\n\nvar _OpDec = __webpack_require__(32);\n\nvar _OpNot = __webpack_require__(33);\n\nvar _OpAnd = __webpack_require__(34);\n\nvar _OpOr = __webpack_require__(35);\n\nvar _OpMatches = __webpack_require__(36);\n\nvar _Ternary = __webpack_require__(37);\n\nvar _Elvis = __webpack_require__(38);\n\nvar _InlineList = __webpack_require__(39);\n\nvar _InlineMap = __webpack_require__(40);\n\nvar _Selection = __webpack_require__(41);\n\nvar _Projection = __webpack_require__(42);\n\nvar _OpInstanceof = __webpack_require__(43);\n\nvar _OpBetween = __webpack_require__(44);\n\nvar _TypeReference = __webpack_require__(45);\n\nvar _BeanReference = __webpack_require__(46);\n\nvar _Identifier = __webpack_require__(47);\n\nvar _QualifiedIdentifier = __webpack_require__(48);\n\nvar _ConstructorReference = __webpack_require__(49);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n *\n */\n\nvar SpelExpressionParser = exports.SpelExpressionParser = function SpelExpressionParser() {\n\n var VALID_QUALIFIED_ID_PATTERN = new RegExp('[\\\\p{L}\\\\p{N}_$]+');\n\n var configuration;\n\n // For rules that build nodes, they are stacked here for return\n var constructedNodes = [];\n\n // The expression being parsed\n var expressionString;\n\n // The token stream constructed from that expression string\n var tokenStream;\n\n // length of a populated token stream\n var tokenStreamLength;\n\n // Current location in the token stream when processing tokens\n var tokenStreamPointer;\n\n /**\n * Create a parser with some configured behavior.\n * @param config custom configuration options\n */\n function setConfiguration(config) {\n configuration = config;\n }\n\n function parse(expression, context) {\n try {\n expressionString = expression;\n tokenStream = _Tokenizer.Tokenizer.tokenize(expression);\n tokenStreamLength = tokenStream.length;\n tokenStreamPointer = 0;\n constructedNodes = [];\n var ast = eatExpression();\n if (moreTokens()) {\n raiseInternalException(peekToken().startPos, 'MORE_INPUT', nextToken().toString());\n }\n //Assert.isTrue(this.constructedNodes.isEmpty());\n return ast;\n } catch (e) {\n throw e.message;\n }\n }\n\n //\texpression\n // : logicalOrExpression\n // ( (ASSIGN^ logicalOrExpression)\n //\t | (DEFAULT^ logicalOrExpression)\n //\t | (QMARK^ expression COLON! expression)\n // | (ELVIS^ expression))?;\n function eatExpression() {\n var expr = eatLogicalOrExpression();\n if (moreTokens()) {\n var token = peekToken();\n if (token.getKind() === _TokenKind.TokenKind.ASSIGN) {\n // a=b\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var assignedValue = eatLogicalOrExpression();\n return _Assign.Assign.create(toPosToken(token), expr, assignedValue);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.ELVIS) {\n // a?:b (a if it isn't null, otherwise b)\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 2));\n }\n nextToken(); // elvis has left the building\n var valueIfNull = eatExpression();\n if (valueIfNull === null) {\n valueIfNull = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos + 1, token.endPos + 1));\n }\n return _Elvis.Elvis.create(toPosToken(token), expr, valueIfNull);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.QMARK) {\n // a?b:c\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var ifTrueExprValue = eatExpression();\n eatToken(_TokenKind.TokenKind.COLON);\n var ifFalseExprValue = eatExpression();\n return _Ternary.Ternary.create(toPosToken(token), expr, ifTrueExprValue, ifFalseExprValue);\n }\n }\n return expr;\n }\n\n //logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;\n function eatLogicalOrExpression() {\n var expr = eatLogicalAndExpression();\n while (peekIdentifierToken('or') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n var token = nextToken(); //consume OR\n var rhExpr = eatLogicalAndExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpOr.OpOr.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // logicalAndExpression : relationalExpression (AND^ relationalExpression)*;\n function eatLogicalAndExpression() {\n var expr = eatRelationalExpression();\n while (peekIdentifierToken('and') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n var token = nextToken(); // consume 'AND'\n var rhExpr = eatRelationalExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpAnd.OpAnd.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // relationalExpression : sumExpression (relationalOperator^ sumExpression)?;\n function eatRelationalExpression() {\n var expr = eatSumExpression();\n var relationalOperatorToken = maybeEatRelationalOperator();\n if (relationalOperatorToken !== null) {\n var token = nextToken(); // consume relational operator token\n var rhExpr = eatSumExpression();\n checkOperands(token, expr, rhExpr);\n var tk = relationalOperatorToken.kind;\n\n if (relationalOperatorToken.isNumericRelationalOperator()) {\n var pos = toPosToken(token);\n if (tk === _TokenKind.TokenKind.GT) {\n return _OpGT.OpGT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LT) {\n return _OpLT.OpLT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LE) {\n return _OpLE.OpLE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.GE) {\n return _OpGE.OpGE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.EQ) {\n return _OpEQ.OpEQ.create(pos, expr, rhExpr);\n }\n //Assert.isTrue(tk === TokenKind.NE);\n return _OpNE.OpNE.create(pos, expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.INSTANCEOF) {\n return _OpInstanceof.OpInstanceof.create(toPosToken(token), expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.MATCHES) {\n return _OpMatches.OpMatches.create(toPosToken(token), expr, rhExpr);\n }\n\n //Assert.isTrue(tk === TokenKind.BETWEEN);\n return _OpBetween.OpBetween.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n //sumExpression: productExpression ( (PLUS^ | MINUS^) productExpression)*;\n function eatSumExpression() {\n var expr = eatProductExpression();\n while (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.INC)) {\n var token = nextToken(); //consume PLUS or MINUS or INC\n var rhExpr = eatProductExpression();\n checkRightOperand(token, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n expr = _OpPlus.OpPlus.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.MINUS) {\n expr = _OpMinus.OpMinus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // productExpression: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;\n function eatProductExpression() {\n var expr = eatPowerIncDecExpression();\n while (peekTokenAny(_TokenKind.TokenKind.STAR, _TokenKind.TokenKind.DIV, _TokenKind.TokenKind.MOD)) {\n var token = nextToken(); // consume STAR/DIV/MOD\n var rhExpr = eatPowerIncDecExpression();\n checkOperands(token, expr, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.STAR) {\n expr = _OpMultiply.OpMultiply.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.DIV) {\n expr = _OpDivide.OpDivide.create(toPosToken(token), expr, rhExpr);\n } else {\n //Assert.isTrue(token.getKind() === TokenKind.MOD);\n expr = _OpModulus.OpModulus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // powerExpr : unaryExpression (POWER^ unaryExpression)? (INC || DEC) ;\n function eatPowerIncDecExpression() {\n var expr = eatUnaryExpression(),\n token;\n\n if (peekTokenOne(_TokenKind.TokenKind.POWER)) {\n token = nextToken(); //consume POWER\n var rhExpr = eatUnaryExpression();\n checkRightOperand(token, rhExpr);\n return _OpPower.OpPower.create(toPosToken(token), expr, rhExpr);\n }\n\n if (expr !== null && peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken(); //consume INC/DEC\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), true, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), true, expr);\n }\n\n return expr;\n }\n\n // unaryExpression: (PLUS^ | MINUS^ | BANG^ | INC^ | DEC^) unaryExpression | primaryExpression ;\n function eatUnaryExpression() {\n var token, expr;\n\n if (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.NOT)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.NOT) {\n return _OpNot.OpNot.create(toPosToken(token), expr);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n return _OpPlus.OpPlus.create(toPosToken(token), expr);\n }\n //Assert.isTrue(token.getKind() === TokenKind.MINUS);\n return _OpMinus.OpMinus.create(toPosToken(token), expr);\n }\n if (peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), false, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), false, expr);\n }\n\n return eatPrimaryExpression();\n }\n\n // primaryExpression : startNode (node)? -> ^(EXPRESSION startNode (node)?);\n function eatPrimaryExpression() {\n var nodes = [];\n var start = eatStartNode(); // always a start node\n nodes.push(start);\n while (maybeEatNode()) {\n nodes.push(pop());\n }\n if (nodes.length === 1) {\n return nodes[0];\n }\n return _CompoundExpression.CompoundExpression.create(toPosBounds(start.getStartPosition(), nodes[nodes.length - 1].getEndPosition()), nodes);\n }\n\n // node : ((DOT dottedNode) | (SAFE_NAVI dottedNode) | nonDottedNode)+;\n function maybeEatNode() {\n var expr = null;\n if (peekTokenAny(_TokenKind.TokenKind.DOT, _TokenKind.TokenKind.SAFE_NAVI)) {\n expr = eatDottedNode();\n } else {\n expr = maybeEatNonDottedNode();\n }\n\n if (expr === null) {\n return false;\n } else {\n push(expr);\n return true;\n }\n }\n\n // nonDottedNode: indexer;\n function maybeEatNonDottedNode() {\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n if (maybeEatIndexer()) {\n return pop();\n }\n }\n return null;\n }\n\n //dottedNode\n // : ((methodOrProperty\n //\t | functionOrVar\n // | projection\n // | selection\n // | firstSelection\n // | lastSelection\n // ))\n //\t;\n function eatDottedNode() {\n var token = nextToken(); // it was a '.' or a '?.'\n var nullSafeNavigation = token.getKind() === _TokenKind.TokenKind.SAFE_NAVI;\n if (maybeEatMethodOrProperty(nullSafeNavigation) || maybeEatFunctionOrVar() || maybeEatProjection(nullSafeNavigation) || maybeEatSelection(nullSafeNavigation)) {\n return pop();\n }\n if (peekToken() === null) {\n // unexpectedly ran out of data\n raiseInternalException(token.startPos, 'OOD');\n } else {\n raiseInternalException(token.startPos, 'UNEXPECTED_DATA_AFTER_DOT', toString(peekToken()));\n }\n return null;\n }\n\n // functionOrVar\n // : (POUND ID LPAREN) => function\n // | var\n //\n // function : POUND id=ID methodArgs -> ^(FUNCTIONREF[$id] methodArgs);\n // var : POUND id=ID -> ^(VARIABLEREF[$id]);\n function maybeEatFunctionOrVar() {\n if (!peekTokenOne(_TokenKind.TokenKind.HASH)) {\n return false;\n }\n var token = nextToken();\n var functionOrVariableName = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n var args = maybeEatMethodArgs();\n if (args === null) {\n push(_VariableReference.VariableReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos)));\n return true;\n }\n\n push(_FunctionReference.FunctionReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos), args));\n return true;\n }\n\n // methodArgs : LPAREN! (argument (COMMA! argument)* (COMMA!)?)? RPAREN!;\n function maybeEatMethodArgs() {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n return null;\n }\n var args = [];\n consumeArguments(args);\n eatToken(_TokenKind.TokenKind.RPAREN);\n return args;\n }\n\n function eatConstructorArgs(accumulatedArguments) {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n raiseInternalException(toPosToken(peekToken()), 'MISSING_CONSTRUCTOR_ARGS');\n }\n consumeArguments(accumulatedArguments);\n eatToken(_TokenKind.TokenKind.RPAREN);\n }\n\n /**\n * Used for consuming arguments for either a method or a constructor call\n */\n function consumeArguments(accumulatedArguments) {\n var pos = peekToken().startPos;\n var next;\n do {\n nextToken(); // consume ( (first time through) or comma (subsequent times)\n var token = peekToken();\n if (token === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n if (token.getKind() !== _TokenKind.TokenKind.RPAREN) {\n accumulatedArguments.push(eatExpression());\n }\n next = peekToken();\n } while (next !== null && next.kind === _TokenKind.TokenKind.COMMA);\n\n if (next === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n }\n\n function positionOf(token) {\n if (token === null) {\n // if null assume the problem is because the right token was\n // not found at the end of the expression\n return expressionString.length;\n }\n return token.startPos;\n }\n\n //startNode\n // : parenExpr | literal\n //\t | type\n //\t | methodOrProperty\n //\t | functionOrVar\n //\t | projection\n //\t | selection\n //\t | firstSelection\n //\t | lastSelection\n //\t | indexer\n //\t | constructor\n function eatStartNode() {\n if (maybeEatLiteral()) {\n return pop();\n } else if (maybeEatParenExpression()) {\n return pop();\n } else if (maybeEatTypeReference() || maybeEatNullReference() || maybeEatConstructorReference() || maybeEatMethodOrProperty(false) || maybeEatFunctionOrVar()) {\n return pop();\n } else if (maybeEatBeanReference()) {\n return pop();\n } else if (maybeEatProjection(false) || maybeEatSelection(false) || maybeEatIndexer()) {\n return pop();\n } else if (maybeEatInlineListOrMap()) {\n return pop();\n } else {\n return null;\n }\n }\n\n // parse: @beanname @'bean.name'\n // quoted if dotted\n function maybeEatBeanReference() {\n if (peekTokenOne(_TokenKind.TokenKind.BEAN_REF)) {\n var beanRefToken = nextToken();\n var beanNameToken = null;\n var beanName = null;\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n beanName = beanNameToken.data;\n } else if (peekTokenOne(_TokenKind.TokenKind.LITERAL_STRING)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.LITERAL_STRING);\n beanName = beanNameToken.stringValue();\n beanName = beanName.substring(1, beanName.length() - 1);\n } else {\n raiseInternalException(beanRefToken.startPos, 'INVALID_BEAN_REFERENCE');\n }\n\n var beanReference = _BeanReference.BeanReference.create(toPosToken(beanNameToken), beanName);\n push(beanReference);\n return true;\n }\n return false;\n }\n\n function maybeEatTypeReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var typeName = peekToken();\n if (typeName.stringValue() !== 'T') {\n return false;\n }\n // It looks like a type reference but is T being used as a map key?\n var token = nextToken();\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'T]' (T is map key)\n push(_PropertyReference.PropertyReference.create(token.stringValue(), toPosToken(token)));\n return true;\n }\n eatToken(_TokenKind.TokenKind.LPAREN);\n var node = eatPossiblyQualifiedId();\n // dotted qualified id\n // Are there array dimensions?\n var dims = 0;\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n eatToken(_TokenKind.TokenKind.RSQUARE);\n dims++;\n }\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(_TypeReference.TypeReference.create(toPosToken(typeName), node, dims));\n return true;\n }\n return false;\n }\n\n function maybeEatNullReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var nullToken = peekToken();\n if (nullToken.stringValue().toLowerCase() !== 'null') {\n return false;\n }\n nextToken();\n push(_NullLiteral.NullLiteral.create(toPosToken(nullToken)));\n return true;\n }\n return false;\n }\n\n //projection: PROJECT^ expression RCURLY!;\n function maybeEatProjection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.PROJECT, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Projection.Projection.create(nullSafeNavigation, toPosToken(token), expr));\n return true;\n }\n\n // list = LCURLY (element (COMMA element)*) RCURLY\n // map = LCURLY (key ':' value (COMMA key ':' value)*) RCURLY\n function maybeEatInlineListOrMap() {\n var token = peekToken(),\n listElements = [];\n\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LCURLY, true)) {\n return false;\n }\n var expr = null;\n var closingCurly = peekToken();\n if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.RCURLY, true)) {\n // empty list '{}'\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n // empty map '{:}'\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else {\n var firstExpression = eatExpression();\n // Next is either:\n // '}' - end of list\n // ',' - more expressions in this list\n // ':' - this is a map!\n\n if (peekTokenOne(_TokenKind.TokenKind.RCURLY)) {\n // list with one item in it\n listElements.push(firstExpression);\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n // multi item list\n listElements.push(firstExpression);\n do {\n listElements.push(eatExpression());\n } while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true));\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosToken(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n // map!\n var mapElements = [];\n mapElements.push(firstExpression);\n mapElements.push(eatExpression());\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n mapElements.push(eatExpression());\n eatToken(_TokenKind.TokenKind.COLON);\n mapElements.push(eatExpression());\n }\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos), mapElements);\n } else {\n raiseInternalException(token.startPos, 'OOD');\n }\n }\n push(expr);\n return true;\n }\n\n function maybeEatIndexer() {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Indexer.Indexer.create(toPosToken(token), expr));\n return true;\n }\n\n function maybeEatSelection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekSelectToken()) {\n return false;\n }\n nextToken();\n var expr = eatExpression();\n if (expr === null) {\n raiseInternalException(toPosToken(token), 'MISSING_SELECTION_EXPRESSION');\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n if (token.getKind() === _TokenKind.TokenKind.SELECT_FIRST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.FIRST, toPosToken(token), expr));\n } else if (token.getKind() === _TokenKind.TokenKind.SELECT_LAST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.LAST, toPosToken(token), expr));\n } else {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.ALL, toPosToken(token), expr));\n }\n return true;\n }\n\n /**\n * Eat an identifier, possibly qualified (meaning that it is dotted).\n * TODO AndyC Could create complete identifiers (a.b.c) here rather than a sequence of them? (a, b, c)\n */\n function eatPossiblyQualifiedId() {\n var qualifiedIdPieces = [];\n var node = peekToken();\n while (isValidQualifiedId(node)) {\n nextToken();\n if (node.kind !== _TokenKind.TokenKind.DOT) {\n qualifiedIdPieces.push(_Identifier.Identifier.create(node.stringValue(), toPosToken(node)));\n }\n node = peekToken();\n }\n if (!qualifiedIdPieces.length) {\n if (node === null) {\n raiseInternalException(expressionString.length(), 'OOD');\n }\n raiseInternalException(node.startPos, 'NOT_EXPECTED_TOKEN', 'qualified ID', node.getKind().toString().toLowerCase());\n }\n var pos = toPosBounds(qualifiedIdPieces[0].getStartPosition(), qualifiedIdPieces[qualifiedIdPieces.length - 1].getEndPosition());\n return _QualifiedIdentifier.QualifiedIdentifier.create(pos, qualifiedIdPieces);\n }\n\n function isValidQualifiedId(node) {\n if (node === null || node.kind === _TokenKind.TokenKind.LITERAL_STRING) {\n return false;\n }\n if (node.kind === _TokenKind.TokenKind.DOT || node.kind === _TokenKind.TokenKind.IDENTIFIER) {\n return true;\n }\n var value = node.stringValue();\n return value && value.length && VALID_QUALIFIED_ID_PATTERN.test(value);\n }\n\n // This is complicated due to the support for dollars in identifiers. Dollars are normally separate tokens but\n // there we want to combine a series of identifiers and dollars into a single identifier\n function maybeEatMethodOrProperty(nullSafeNavigation) {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var methodOrPropertyName = nextToken();\n var args = maybeEatMethodArgs();\n if (args === null) {\n // property\n push(_PropertyReference.PropertyReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName)));\n return true;\n }\n // methodreference\n push(_MethodReference.MethodReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName), args));\n // TODO what is the end position for a method reference? the name or the last arg?\n return true;\n }\n return false;\n }\n\n //constructor\n //:\t('new' qualifiedId LPAREN) => 'new' qualifiedId ctorArgs -> ^(CONSTRUCTOR qualifiedId ctorArgs)\n function maybeEatConstructorReference() {\n if (peekIdentifierToken('new')) {\n var newToken = nextToken();\n // It looks like a constructor reference but is NEW being used as a map key?\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'NEW]' (so NEW used as map key)\n push(_PropertyReference.PropertyReference.create(newToken.stringValue(), toPosToken(newToken)));\n return true;\n }\n var possiblyQualifiedConstructorName = eatPossiblyQualifiedId();\n var nodes = [];\n nodes.push(possiblyQualifiedConstructorName);\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n // array initializer\n var dimensions = [];\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n if (!peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n dimensions.push(eatExpression());\n } else {\n dimensions.push(null);\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n }\n if (maybeEatInlineListOrMap()) {\n nodes.push(pop());\n }\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), dimensions, nodes));\n } else {\n // regular constructor invocation\n eatConstructorArgs(nodes);\n // TODO correct end position?\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), nodes));\n }\n return true;\n }\n return false;\n }\n\n function push(newNode) {\n constructedNodes.push(newNode);\n }\n\n function pop() {\n return constructedNodes.pop();\n }\n\n //\tliteral\n // : INTEGER_LITERAL\n //\t| boolLiteral\n //\t| STRING_LITERAL\n // | HEXADECIMAL_INTEGER_LITERAL\n // | REAL_LITERAL\n //\t| DQ_STRING_LITERAL\n //\t| NULL_LITERAL\n function maybeEatLiteral() {\n var token = peekToken();\n if (token === null) {\n return false;\n }\n if (token.getKind() === _TokenKind.TokenKind.LITERAL_INT || token.getKind() === _TokenKind.TokenKind.LITERAL_LONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 10), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_REAL || token.getKind() === _TokenKind.TokenKind.LITERAL_REAL_FLOAT) {\n push(_NumberLiteral.NumberLiteral.create(parseFloat(token.stringValue()), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_HEXINT || token.getKind() === _TokenKind.TokenKind.LITERAL_HEXLONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 16), toPosToken(token)));\n } else if (peekIdentifierToken('true')) {\n push(_BooleanLiteral.BooleanLiteral.create(true, toPosToken(token)));\n } else if (peekIdentifierToken('false')) {\n push(_BooleanLiteral.BooleanLiteral.create(false, toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_STRING) {\n push(_StringLiteral.StringLiteral.create(token.stringValue(), toPosToken(token)));\n } else {\n return false;\n }\n nextToken();\n return true;\n }\n\n //parenExpr : LPAREN! expression RPAREN!;\n function maybeEatParenExpression() {\n if (peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n nextToken();\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(expr);\n return true;\n } else {\n return false;\n }\n }\n\n // relationalOperator\n // : EQUAL | NOT_EQUAL | LESS_THAN | LESS_THAN_OR_EQUAL | GREATER_THAN\n // | GREATER_THAN_OR_EQUAL | INSTANCEOF | BETWEEN | MATCHES\n function maybeEatRelationalOperator() {\n var token = peekToken();\n if (token === null) {\n return null;\n }\n if (token.isNumericRelationalOperator()) {\n return token;\n }\n if (token.isIdentifier()) {\n var idString = token.stringValue();\n if (idString.toLowerCase() === 'instanceof') {\n return token.asInstanceOfToken();\n }\n if (idString.toLowerCase() === 'matches') {\n return token.asMatchesToken();\n }\n if (idString.toLowerCase() === 'between') {\n return token.asBetweenToken();\n }\n }\n return null;\n }\n\n function eatToken(expectedKind) {\n var token = nextToken();\n if (token === null) {\n raiseInternalException(expressionString.length, 'OOD');\n }\n if (token.getKind() !== expectedKind) {\n raiseInternalException(token.startPos, 'NOT_EXPECTED_TOKEN', expectedKind.toString().toLowerCase(), token.getKind().toString().toLowerCase());\n }\n return token;\n }\n\n function peekTokenOne(desiredTokenKind) {\n return peekTokenConsumeIfMatched(desiredTokenKind, false);\n }\n\n function peekTokenConsumeIfMatched(desiredTokenKind, consumeIfMatched) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n if (token.getKind() === desiredTokenKind) {\n if (consumeIfMatched) {\n tokenStreamPointer++;\n }\n return true;\n }\n\n if (desiredTokenKind === _TokenKind.TokenKind.IDENTIFIER) {\n // might be one of the textual forms of the operators (e.g. NE for !== ) - in which case we can treat it as an identifier\n // The list is represented here: Tokenizer.alternativeOperatorNames and those ones are in order in the TokenKind enum\n if (token.getKind().ordinal() >= _TokenKind.TokenKind.DIV.ordinal() && token.getKind().ordinal() <= _TokenKind.TokenKind.NOT.ordinal() && token.data !== null) {\n // if token.data were null, we'd know it wasn'token the textual form, it was the symbol form\n return true;\n }\n }\n return false;\n }\n\n function peekTokenAny() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n var args = Array.prototype.slice.call(arguments);\n for (var i = 0, l = args.length; i < l; i += 1) {\n if (token.getKind() === args[i]) {\n return true;\n }\n }\n return false;\n }\n\n function peekIdentifierToken(identifierString) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.IDENTIFIER && token.stringValue().toLowerCase() === identifierString.toLowerCase();\n }\n\n function peekSelectToken() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.SELECT || token.getKind() === _TokenKind.TokenKind.SELECT_FIRST || token.getKind() === _TokenKind.TokenKind.SELECT_LAST;\n }\n\n function moreTokens() {\n return tokenStreamPointer < tokenStream.length;\n }\n\n function nextToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer++];\n }\n\n function peekToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer];\n }\n\n function raiseInternalException(pos, message, expected, actual) {\n if (expected) {\n message += '\\nExpected: ' + expected;\n }\n if (actual) {\n message += '\\nActual: ' + actual;\n }\n throw {\n name: 'InternalParseException',\n message: 'Error occurred while attempting to parse expression \\'' + expressionString + '\\' at position ' + pos + '. Message: ' + message\n };\n }\n\n function toString(token) {\n if (token.getKind().hasPayload()) {\n return token.stringValue();\n }\n return token.getKind().toString().toLowerCase();\n }\n\n function checkOperands(token, left, right) {\n checkLeftOperand(token, left);\n checkRightOperand(token, right);\n }\n\n function checkLeftOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'LEFT_OPERAND_PROBLEM');\n }\n }\n\n function checkRightOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'RIGHT_OPERAND_PROBLEM');\n }\n }\n\n /**\n * Compress the start and end of a token into a single int.\n */\n function toPosToken(token) {\n return (token.startPos << 16) + token.endPos;\n }\n\n function toPosBounds(start, end) {\n return (start << 16) + end;\n }\n\n return {\n setConfiguration: setConfiguration,\n parse: parse\n };\n};\n\n//not yet implemented\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Tokenizer = undefined;\n\nvar _Token = __webpack_require__(7);\n\nvar _TokenKind = __webpack_require__(2);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Phillip Webb\n * @author Ben March\n * @since 0.2.0\n */\n\nvar ALTERNATIVE_OPERATOR_NAMES = ['DIV', 'EQ', 'GE', 'GT', 'LE', 'LT', 'MOD', 'NE', 'NOT'],\n FLAGS = [],\n IS_DIGIT = 1,\n IS_HEXDIGIT = 2,\n IS_ALPHA = 4;\n\nfunction init() {\n var ch;\n\n for (ch = '0'.charCodeAt(0); ch <= '9'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_DIGIT | IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'F'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'f'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'Z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n}\n\ninit();\n\nfunction tokenize(inputData) {\n var expressionString = inputData,\n toProcess = inputData + '\\0',\n max = toProcess.length,\n pos = 0,\n tokens = [];\n\n function process() {\n var ch;\n\n while (pos < max) {\n ch = toProcess[pos];\n if (isAlphabetic(ch)) {\n lexIdentifier();\n } else {\n switch (ch) {\n case '+':\n if (isTwoCharToken(_TokenKind.TokenKind.INC)) {\n pushPairToken(_TokenKind.TokenKind.INC);\n } else {\n pushCharToken(_TokenKind.TokenKind.PLUS);\n }\n break;\n case '_':\n // the other way to start an identifier\n lexIdentifier();\n break;\n case '-':\n if (isTwoCharToken(_TokenKind.TokenKind.DEC)) {\n pushPairToken(_TokenKind.TokenKind.DEC);\n } else {\n pushCharToken(_TokenKind.TokenKind.MINUS);\n }\n break;\n case ':':\n pushCharToken(_TokenKind.TokenKind.COLON);\n break;\n case '.':\n pushCharToken(_TokenKind.TokenKind.DOT);\n break;\n case ',':\n pushCharToken(_TokenKind.TokenKind.COMMA);\n break;\n case '*':\n pushCharToken(_TokenKind.TokenKind.STAR);\n break;\n case '/':\n pushCharToken(_TokenKind.TokenKind.DIV);\n break;\n case '%':\n pushCharToken(_TokenKind.TokenKind.MOD);\n break;\n case '(':\n pushCharToken(_TokenKind.TokenKind.LPAREN);\n break;\n case ')':\n pushCharToken(_TokenKind.TokenKind.RPAREN);\n break;\n case '[':\n pushCharToken(_TokenKind.TokenKind.LSQUARE);\n break;\n case '#':\n pushCharToken(_TokenKind.TokenKind.HASH);\n break;\n case ']':\n pushCharToken(_TokenKind.TokenKind.RSQUARE);\n break;\n case '{':\n pushCharToken(_TokenKind.TokenKind.LCURLY);\n break;\n case '}':\n pushCharToken(_TokenKind.TokenKind.RCURLY);\n break;\n case '@':\n pushCharToken(_TokenKind.TokenKind.BEAN_REF);\n break;\n case '^':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_FIRST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_FIRST);\n } else {\n pushCharToken(_TokenKind.TokenKind.POWER);\n }\n break;\n case '!':\n if (isTwoCharToken(_TokenKind.TokenKind.NE)) {\n pushPairToken(_TokenKind.TokenKind.NE);\n } else if (isTwoCharToken(_TokenKind.TokenKind.PROJECT)) {\n pushPairToken(_TokenKind.TokenKind.PROJECT);\n } else {\n pushCharToken(_TokenKind.TokenKind.NOT);\n }\n break;\n case '=':\n if (isTwoCharToken(_TokenKind.TokenKind.EQ)) {\n pushPairToken(_TokenKind.TokenKind.EQ);\n } else {\n pushCharToken(_TokenKind.TokenKind.ASSIGN);\n }\n break;\n case '&':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'&\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_AND);\n break;\n case '|':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'|\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_OR);\n break;\n case '?':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT)) {\n pushPairToken(_TokenKind.TokenKind.SELECT);\n } else if (isTwoCharToken(_TokenKind.TokenKind.ELVIS)) {\n pushPairToken(_TokenKind.TokenKind.ELVIS);\n } else if (isTwoCharToken(_TokenKind.TokenKind.SAFE_NAVI)) {\n pushPairToken(_TokenKind.TokenKind.SAFE_NAVI);\n } else {\n pushCharToken(_TokenKind.TokenKind.QMARK);\n }\n break;\n case '$':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_LAST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_LAST);\n } else {\n lexIdentifier();\n }\n break;\n case '>':\n if (isTwoCharToken(_TokenKind.TokenKind.GE)) {\n pushPairToken(_TokenKind.TokenKind.GE);\n } else {\n pushCharToken(_TokenKind.TokenKind.GT);\n }\n break;\n case '<':\n if (isTwoCharToken(_TokenKind.TokenKind.LE)) {\n pushPairToken(_TokenKind.TokenKind.LE);\n } else {\n pushCharToken(_TokenKind.TokenKind.LT);\n }\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n lexNumericLiteral(ch === '0');\n break;\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n // drift over white space\n pos += 1;\n break;\n case '\\'':\n lexQuotedStringLiteral();\n break;\n case '\"':\n lexDoubleQuotedStringLiteral();\n break;\n case '\\0':\n // hit sentinel at end of value\n pos += 1; // will take us to the end\n break;\n case '\\\\':\n throw {\n name: 'SpelParseException',\n message: 'Unexpected escape character in expression (' + expressionString + ') at position ' + pos\n };\n default:\n throw {\n name: 'SpelParseException',\n message: 'Cannot handle character \\'' + ch + '\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n }\n }\n\n function lexQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\\'') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\\'') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n function lexDoubleQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\"') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\"') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating double-quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n\n // REAL_LITERAL :\n // ('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));\n // fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );\n // fragment HEX_DIGIT :\n // '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';\n //\n // fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)*\n // (DECIMAL_DIGIT)+ ;\n // fragment SIGN : '+' | '-' ;\n // fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';\n // INTEGER_LITERAL\n // : (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;\n\n function lexNumericLiteral(firstCharIsZero) {\n var isReal = false,\n start = pos,\n ch = toProcess[pos + 1],\n isHex = ch === 'x' || ch === 'X',\n dotpos,\n endOfNumber,\n possibleSign,\n isFloat;\n\n // deal with hexadecimal\n if (firstCharIsZero && isHex) {\n pos = pos + 1;\n do {\n pos += 1;\n } while (isHexadecimalDigit(toProcess[pos]));\n if (isChar('L', 'l')) {\n pushHexIntToken(subarray(start + 2, pos), true, start, pos);\n pos += 1;\n } else {\n pushHexIntToken(subarray(start + 2, pos), false, start, pos);\n }\n return;\n }\n\n // real numbers must have leading digits\n\n // Consume first part of number\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n\n // a '.' indicates this number is a real\n ch = toProcess[pos];\n if (ch === '.') {\n isReal = true;\n dotpos = pos;\n // carry on consuming digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n if (pos === dotpos + 1) {\n // the number is something like '3.'. It is really an int but may be\n // part of something like '3.toString()'. In this case process it as\n // an int and leave the dot as a separate token.\n pos = dotpos;\n pushIntToken(subarray(start, pos), false, start, pos);\n return;\n }\n }\n\n endOfNumber = pos;\n\n // Now there may or may not be an exponent\n\n // is it a long ?\n if (isChar('L', 'l')) {\n if (isReal) {\n // 3.4L - not allowed\n throw {\n name: 'SpelParseException',\n message: 'Real cannot be long in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushIntToken(subarray(start, endOfNumber), true, start, endOfNumber);\n pos += 1;\n } else if (isExponentChar(toProcess[pos])) {\n isReal = true; // if it wasn't before, it is now\n pos += 1;\n possibleSign = toProcess[pos];\n if (isSign(possibleSign)) {\n pos += 1;\n }\n\n // exponent digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n isFloat = false;\n if (isFloatSuffix(toProcess[pos])) {\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(toProcess[pos])) {\n pos += 1;\n endOfNumber = pos;\n }\n pushRealToken(subarray(start, pos), isFloat, start, pos);\n } else {\n ch = toProcess[pos];\n isFloat = false;\n if (isFloatSuffix(ch)) {\n isReal = true;\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(ch)) {\n isReal = true;\n pos += 1;\n endOfNumber = pos;\n }\n if (isReal) {\n pushRealToken(subarray(start, endOfNumber), isFloat, start, endOfNumber);\n } else {\n pushIntToken(subarray(start, endOfNumber), false, start, endOfNumber);\n }\n }\n }\n\n function lexIdentifier() {\n var start = pos,\n substring,\n asString,\n idx;\n do {\n pos += 1;\n } while (isIdentifier(toProcess[pos]));\n substring = subarray(start, pos);\n\n // Check if this is the alternative (textual) representation of an operator (see\n // alternativeOperatorNames)\n if (pos - start === 2 || pos - start === 3) {\n asString = substring.toUpperCase();\n idx = ALTERNATIVE_OPERATOR_NAMES.indexOf(asString);\n if (idx >= 0) {\n pushOneCharOrTwoCharToken(_TokenKind.TokenKind.valueOf(asString), start, substring);\n return;\n }\n }\n tokens.push(new _Token.Token(_TokenKind.TokenKind.IDENTIFIER, substring.replace('\\0', ''), start, pos));\n }\n\n function pushIntToken(data, isLong, start, end) {\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_LONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_INT, data, start, end));\n }\n }\n\n function pushHexIntToken(data, isLong, start, end) {\n if (data.length === 0) {\n if (isLong) {\n throw {\n name: 'SpelParseException',\n message: 'Not a long in expression (' + expressionString + ') at position ' + pos\n };\n } else {\n throw {\n name: 'SpelParseException',\n message: 'Not an int in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXLONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXINT, data, start, end));\n }\n }\n\n function pushRealToken(data, isFloat, start, end) {\n if (isFloat) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL_FLOAT, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL, data, start, end));\n }\n }\n\n function subarray(start, end) {\n return toProcess.substring(start, end);\n }\n\n /**\n * Check if this might be a two character token.\n */\n function isTwoCharToken(kind) {\n if (kind.tokenChars.length === 2 && toProcess[pos] === kind.tokenChars[0]) {\n return toProcess[pos + 1] === kind.tokenChars[1];\n }\n return false;\n }\n\n /**\n * Push a token of just one character in length.\n */\n function pushCharToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 1));\n pos += 1;\n }\n\n /**\n * Push a token of two characters in length.\n */\n function pushPairToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 2));\n pos += 2;\n }\n\n function pushOneCharOrTwoCharToken(kind, pos, data) {\n tokens.push(new _Token.Token(kind, data, pos, pos + kind.getLength()));\n }\n\n // ID: ('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'_'|'$'|'0'..'9'|DOT_ESCAPED)*;\n function isIdentifier(ch) {\n return isAlphabetic(ch) || isDigit(ch) || ch === '_' || ch === '$';\n }\n\n function isChar(a, b) {\n var ch = toProcess[pos];\n return ch === a || ch === b;\n }\n\n function isExponentChar(ch) {\n return ch === 'e' || ch === 'E';\n }\n\n function isFloatSuffix(ch) {\n return ch === 'f' || ch === 'F';\n }\n\n function isDoubleSuffix(ch) {\n return ch === 'd' || ch === 'D';\n }\n\n function isSign(ch) {\n return ch === '+' || ch === '-';\n }\n\n function isDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_DIGIT) !== 0;\n }\n\n function isAlphabetic(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_ALPHA) !== 0;\n }\n\n function isHexadecimalDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_HEXDIGIT) !== 0;\n }\n\n process();\n\n return tokens;\n}\n\nvar Tokenizer = exports.Tokenizer = {\n tokenize: tokenize\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Token = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nfunction Token(tokenKind, tokenData, startPos, endPos) {\n this.kind = tokenKind;\n this.startPos = startPos;\n this.endPos = endPos;\n if (tokenData) {\n this.data = tokenData;\n }\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nToken.prototype.getKind = function () {\n return this.kind;\n};\n\nToken.prototype.toString = function () {\n var s = '[';\n s += this.kind.toString();\n if (this.kind.hasPayload()) {\n s += ':' + this.data;\n }\n s += ']';\n s += '(' + this.startPos + ',' + this.endPos + ')';\n return s;\n};\n\nToken.prototype.isIdentifier = function () {\n return this.kind === _TokenKind.TokenKind.IDENTIFIER;\n};\n\nToken.prototype.isNumericRelationalOperator = function () {\n return this.kind === _TokenKind.TokenKind.GT || this.kind === _TokenKind.TokenKind.GE || this.kind === _TokenKind.TokenKind.LT || this.kind === _TokenKind.TokenKind.LE || this.kind === _TokenKind.TokenKind.EQ || this.kind === _TokenKind.TokenKind.NE;\n};\n\nToken.prototype.stringValue = function () {\n return this.data;\n};\n\nToken.prototype.asInstanceOfToken = function () {\n return new Token(_TokenKind.TokenKind.INSTANCEOF, this.startPos, this.endPos);\n};\n\nToken.prototype.asMatchesToken = function () {\n return new Token(_TokenKind.TokenKind.MATCHES, this.startPos, this.endPos);\n};\n\nToken.prototype.asBetweenToken = function () {\n return new Token(_TokenKind.TokenKind.BETWEEN, this.startPos, this.endPos);\n};\n\nToken.prototype.getStartPosition = function () {\n return this.startPos;\n};\n\nToken.prototype.getEndPosition = function () {\n return this.endPos;\n};\n\nexports.Token = Token;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BooleanLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the literal values TRUE and FALSE.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('boolean', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BooleanLiteral = exports.BooleanLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NumberLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a literal number of any kind (since JavaScript only supports doubles anyway)\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('number', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NumberLiteral = exports.NumberLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StringLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a string literal.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('string', position);\n\n function stripQuotes(value) {\n if (value[0] === '\\'' && value[value.length - 1] === '\\'' || value[0] === '\"' && value[value.length - 1] === '\"') {\n value = value.substring(1, value.length - 1);\n }\n\n return value.replace(/''/g, '\\'').replace(/\"\"/g, '\"');\n }\n\n //value cannot be null so no check\n value = stripQuotes(value);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar StringLiteral = exports.StringLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NullLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents null.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('null', position);\n\n node.getValue = function () {\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NullLiteral = exports.NullLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FunctionReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * A function reference is of the form \"#someFunction(a,b,c)\". Functions may be defined in\n * the context prior to the expression being evaluated or within the expression itself\n * using a lambda function definition. For example: Lambda function definition in an\n * expression: \"(#max = {|x,y|$x>$y?$x:$y};max(2,3))\" Calling context defined function:\n * \"#isEven(37)\". Functions may also be static java methods, registered in the context\n * prior to invocation of the expression.\n *\n * <p>Functions are very simplistic, the arguments are not part of the definition (right\n * now), so the names must be unique.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(functionName, position, args) {\n var node = _SpelNode.SpelNode.create('function', position);\n\n node.getRaw = function () {\n return {\n functionName: functionName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var locals = state.locals || {},\n context = state.rootContext,\n compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (locals[functionName]) {\n return locals[functionName].apply(context, compiledArgs);\n }\n\n throw {\n name: 'FunctionDoesNotExistException',\n message: 'Function \\'' + functionName + '\\' does not exist.'\n };\n };\n\n return node;\n}\n\nvar FunctionReference = exports.FunctionReference = {\n create: createNode\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MethodReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * Expression language AST node that represents a method reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(nullSafeNavigation, methodName, position, args) {\n var node = _SpelNode.SpelNode.create('method', position);\n\n node.getRaw = function () {\n return {\n methodName: methodName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n compiledArgs = [],\n method;\n\n if (context === null || context === undefined) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + methodName + '\\' for an undefined context.'\n };\n }\n\n //handle safe navigation\n function maybeHandleNullSafeNavigation(member) {\n if (member === undefined || member === null) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Method ' + methodName + ' does not exist.'\n };\n }\n\n return member;\n }\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n //accessors might not be available\n if (methodName.substr(0, 3) === 'get' && !context[methodName]) {\n return maybeHandleNullSafeNavigation(context[methodName.charAt(3).toLowerCase() + methodName.substring(4)]);\n }\n if (methodName.substr(0, 3) === 'set' && !context[methodName]) {\n /*jshint -W093 */\n return context[methodName.charAt(3).toLowerCase() + methodName.substring(4)] = compiledArgs[0];\n /*jshint +W093 */\n }\n\n //array methods\n if (Array.isArray(context)) {\n //size() -> length\n if (methodName === 'size') {\n return context.length;\n }\n\n if (methodName === 'contains') {\n return context.includes(compiledArgs[0]);\n }\n }\n\n method = maybeHandleNullSafeNavigation(context[methodName]);\n if (method) {\n return method.apply(context, compiledArgs);\n }\n return null;\n };\n\n return node;\n}\n\nvar MethodReference = exports.MethodReference = {\n create: createNode\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PropertyReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a simple property or field reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Clark Duplichien\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(nullSafeNavigation, propertyName, position) {\n var node = _SpelNode.SpelNode.create('property', position);\n\n node.getRaw = function () {\n return propertyName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n if (context[propertyName] === undefined || context[propertyName] === null) {\n //handle safe navigation\n if (nullSafeNavigation) {\n return null;\n }\n\n //handle conversion of Java properties to JavaScript properties\n if (propertyName === 'size' && Array.isArray(context)) {\n return context.length;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Property \\'' + propertyName + '\\' does not exist.'\n };\n }\n\n return context[propertyName];\n };\n\n node.setValue = function (value, state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n /*jshint -W093 */\n return context[propertyName] = value;\n /*jshint +W093 */\n };\n\n node.getName = function () {\n return propertyName;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar PropertyReference = exports.PropertyReference = {\n create: createNode\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VariableReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a variable reference, eg. #someVar. Note this is different to a *local*\n * variable like $someVar\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(variableName, position) {\n var node = _SpelNode.SpelNode.create('variable', position);\n\n node.getRaw = function () {\n return variableName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n locals = state.locals;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up variable \\'' + variableName + '\\' for an undefined context.'\n };\n }\n\n //there are 2 keywords (root, this) that need to be dealt with\n if (variableName === 'this') {\n return context;\n }\n if (variableName === 'root') {\n return state.rootContext;\n }\n\n return locals[variableName];\n };\n\n node.setValue = function (value, state) {\n var locals = state.locals;\n\n /*jshint -W093 */\n return locals[variableName] = value;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar VariableReference = exports.VariableReference = {\n create: createNode\n};\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CompoundExpression = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a DOT separated expression sequence, such as 'property1.property2.methodOne()'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['compound', position].concat(expressionComponents));\n\n function buildContextStack(state) {\n var childrenCount = node.getChildren().length,\n i;\n\n for (i = 0; i < childrenCount; i += 1) {\n if (node.getChildren()[i].getType() === 'indexer') {\n state.activeContext.push(state.activeContext.peek()[node.getChildren()[i].getValue(state)]);\n } else {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n }\n\n return function unbuildContextStack() {\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n };\n }\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n value;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n var unbuildContextStack = buildContextStack(state);\n\n value = state.activeContext.peek();\n\n unbuildContextStack();\n\n return value;\n };\n\n node.setValue = function (value, state) {\n var unbuildContextStack = buildContextStack(state),\n childCount = node.getChildren().length;\n\n state.activeContext.pop();\n\n value = node.getChildren()[childCount - 1].setValue(value, state);\n\n state.activeContext.push(null);\n\n unbuildContextStack();\n\n return value;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar CompoundExpression = exports.CompoundExpression = {\n create: createNode\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Indexer = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * An Indexer can index into some proceeding structure to access a particular piece of it.\n * Supported structures are: strings / collections (lists/sets) / arrays.\n *\n * @author Andy Clement\n * @author Phillip Webb\n * @author Stephane Nicoll\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['indexer', position].concat(expressionComponents));\n\n node.getValue = function (state) {\n var activeContext = state.activeContext,\n context,\n childrenCount = node.getChildren().length,\n i,\n value;\n\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n\n value = state.activeContext.peek();\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n\n state.activeContext = activeContext;\n\n return value;\n };\n\n //node.setContext(node.getValue());\n\n return node;\n}\n\nvar Indexer = exports.Indexer = {\n create: createNode\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Assign = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents assignment. An alternative to calling setValue() for an expression is to use\n * an assign.\n *\n * <p>Example: 'someNumberProperty=42'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, property, assignedValue) {\n var node = _SpelNode.SpelNode.create('assign', position, property, assignedValue);\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + property.getValue(state) + '\\' for an undefined context.'\n };\n }\n\n return property.setValue(assignedValue.getValue(state), state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Assign = exports.Assign = {\n create: createNode\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpEQ = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the equality operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-eq', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) === right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpEQ = exports.OpEQ = {\n create: createNode\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the not-equal operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ne', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) !== right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNE = exports.OpNE = {\n create: createNode\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements greater-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ge', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) >= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGE = exports.OpGE = {\n create: createNode\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the greater-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-gt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) > right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGT = exports.OpGT = {\n create: createNode\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-le', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) <= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLE = exports.OpLE = {\n create: createNode\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-lt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) < right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLT = exports.OpLT = {\n create: createNode\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPlus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The plus operator will:\n * <ul>\n * <li>add numbers\n * <li>concatenate strings\n * </ul>\n *\n * <p>It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double+int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ivo Smid\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-plus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return +left.getValue(state);\n }\n //javascript will handle string concatenation or addition depending on types\n return left.getValue(state) + right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPlus = exports.OpPlus = {\n create: createNode\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMinus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The minus operator supports:\n * <ul>\n * <li>subtraction of numbers\n * <li>subtraction of an int from a string of one character\n * (effectively decreasing that character), so 'd'-3='a'\n * </ul>\n *\n * <p>It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double-int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-minus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return -left.getValue(state);\n }\n return left.getValue(state) - right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMinus = exports.OpMinus = {\n create: createNode\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMultiply = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the {@code multiply} operator.\n *\n * <p>Conversions and promotions are handled as defined in\n * <a href=\"http://java.sun.com/docs/books/jls/third_edition/html/conversions.html\">Section 5.6.2 of the\n * Java Language Specification</a>, with the addiction of {@code BigDecimal}/{@code BigInteger} management:\n *\n * <p>If any of the operands is of a reference type, unboxing conversion (Section 5.1.8)\n * is performed. Then:<br>\n * If either operand is of type {@code BigDecimal}, the other is converted to {@code BigDecimal}.<br>\n * If either operand is of type double, the other is converted to double.<br>\n * Otherwise, if either operand is of type float, the other is converted to float.<br>\n * If either operand is of type {@code BigInteger}, the other is converted to {@code BigInteger}.<br>\n * Otherwise, if either operand is of type long, the other is converted to long.<br>\n * Otherwise, both operands are converted to type int.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Sam Brannen\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-multiply', position, left, right);\n\n node.getValue = function (state) {\n var leftValue = left.getValue(state),\n rightValue = right.getValue(state);\n\n if (typeof leftValue === 'number' && typeof rightValue === 'number') {\n return leftValue * rightValue;\n }\n\n //repeats (ex. 'abc' * 2 = 'abcabc')\n if (typeof leftValue === 'string' && typeof rightValue === 'number') {\n var s = '',\n i = 0;\n for (; i < rightValue; i += 1) {\n s += leftValue;\n }\n return s;\n }\n\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMultiply = exports.OpMultiply = {\n create: createNode\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDivide = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements division operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-divide', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) / right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDivide = exports.OpDivide = {\n create: createNode\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpModulus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the modulus operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-modulus', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) % right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpModulus = exports.OpModulus = {\n create: createNode\n};\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPower = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The power operator.\n *\n * @author Andy Clement\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, base, exp) {\n var node = _SpelNode.SpelNode.create('op-power', position, base, exp);\n\n node.getValue = function (state) {\n return Math.pow(base.getValue(state), exp.getValue(state));\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPower = exports.OpPower = {\n create: createNode\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInc = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Increment operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support increment.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-inc', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur + 1, state);\n if (postfix) {\n return cur;\n }\n return cur + 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInc = exports.OpInc = {\n create: createNode\n};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDec = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Decrement operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support decrement.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-dec', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur - 1, state);\n if (postfix) {\n return cur;\n }\n return cur - 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDec = exports.OpDec = {\n create: createNode\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNot = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a NOT operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expr) {\n var node = _SpelNode.SpelNode.create('op-not', position, expr);\n\n node.getValue = function (state) {\n return !expr.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNot = exports.OpNot = {\n create: createNode\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpAnd = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean AND operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-and', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) && !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpAnd = exports.OpAnd = {\n create: createNode\n};\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpOr = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean OR operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-or', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) || !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpOr = exports.OpOr = {\n create: createNode\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMatches = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the matches operator. Matches takes two operands:\n * The first is a String and the second is a Java regex.\n * It will return {@code true} when {@link #getValue} is called\n * if the first operand matches the regex.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Chris Thielen\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('matches', position, left, right);\n\n /**\n * Check the first operand matches the regex specified as the second operand.\n * @param state the expression state\n * @return {@code true} if the first operand matches the regex specified as the\n * second operand, otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n * (e.g. the regex is invalid)\n */\n node.getValue = function (state) {\n var data = left.getValue(state);\n var regexpString = right.getValue(state);\n\n try {\n var regexp = new RegExp(regexpString);\n return !!regexp.exec(data);\n } catch (error) {\n throw {\n name: 'EvaluationException',\n message: error.toString()\n };\n }\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMatches = exports.OpMatches = {\n create: createNode\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Ternary = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a ternary expression, for example: \"someCheck()?true:false\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifTrue, ifFalse) {\n var node = _SpelNode.SpelNode.create('ternary', position, expression, ifTrue, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) ? ifTrue.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Ternary = exports.Ternary = {\n create: createNode\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Elvis = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the elvis operator ?:. For an expression \"a?:b\" if a is not null, the value\n * of the expression is \"a\", if a is null then the value of the expression is \"b\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifFalse) {\n var node = _SpelNode.SpelNode.create('elvis', position, expression, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) !== null ? expression.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Elvis = exports.Elvis = {\n create: createNode\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineList = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a list in an expression, e.g. '{1,2,3}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('list', position),\n list = [].concat(elements || []);\n\n node.getRaw = function () {\n return list;\n };\n\n node.getValue = function (state) {\n return list.map(function (element) {\n return element.getValue(state);\n });\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineList = exports.InlineList = {\n create: createNode\n};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineMap = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a map in an expression, e.g. '{name:'foo',age:12}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('map', position),\n mapPieces = [].concat(elements || []);\n\n node.getValue = function (state) {\n var key = true,\n keyValue = null,\n map = {};\n\n mapPieces.forEach(function (piece) {\n if (key) {\n //unquoted property names come as type \"property\" but should be treated as strings\n if (piece.getType() === 'property') {\n keyValue = piece.getName();\n } else {\n keyValue = piece.getValue(state);\n }\n } else {\n map[keyValue] = piece.getValue(state);\n }\n key = !key;\n });\n\n return map;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineMap = exports.InlineMap = {\n create: createNode\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Selection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents selection over a map or collection.\n * For example: {1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'} returns [2, 4, 6, 8, 10]\n *\n * <p>Basically a subset of the input data is returned based on the\n * evaluation of the expression supplied as selection criteria.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Sam Brannen\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction matches(element, expr, state) {\n var doesMatch = false;\n state.activeContext.push(element);\n doesMatch = expr.getValue(state);\n state.activeContext.pop();\n return doesMatch;\n}\n\nfunction selectFromArray(collection, whichElement, expr, state) {\n var newCollection = collection.filter(function (element) {\n return matches(element, expr, state);\n });\n\n switch (whichElement) {\n case 'ALL':\n return newCollection;\n case 'FIRST':\n return newCollection[0] || null;\n case 'LAST':\n if (newCollection.length) {\n return newCollection[newCollection.length - 1];\n }\n return null;\n }\n}\n\nfunction selectFromMap(collection, whichElement, expr, state) {\n var newCollection = {},\n entry,\n key,\n entries = [],\n returnValue = {};\n\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entry = {\n key: key,\n value: collection[key]\n };\n if (matches(entry, expr, state)) {\n entries.push(entry);\n }\n }\n }\n\n switch (whichElement) {\n case 'ALL':\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n return newCollection;\n case 'FIRST':\n if (entries.length) {\n returnValue[entries[0].key] = entries[0].value;\n return returnValue;\n }\n return null;\n case 'LAST':\n if (entries.length) {\n returnValue[entries[entries.length - 1].key] = entries[entries.length - 1].value;\n return returnValue;\n }\n return null;\n }\n\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n}\n\nfunction createNode(nullSafeNavigation, whichElement, position, expr) {\n var node = _SpelNode.SpelNode.create('selection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek();\n\n if (collection) {\n if (Array.isArray(collection)) {\n return selectFromArray(collection, whichElement, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n return selectFromMap(collection, whichElement, expr, state);\n }\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Selection = exports.Selection = {\n create: createNode,\n FIRST: 'FIRST',\n LAST: 'LAST',\n ALL: 'ALL'\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Projection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents projection, where a given operation is performed on all elements in some\n * input sequence, returning a new sequence of the same size. For example:\n * \"{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}\" returns \"[n, y, n, y, n, y, n, y, n, y]\"\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction projectCollection(collection, expr, state) {\n return collection.map(function (element) {\n var matches;\n state.activeContext.push(element);\n matches = expr.getValue(state);\n state.activeContext.pop();\n return matches;\n });\n}\n\nfunction createNode(nullSafeNavigation, position, expr) {\n var node = _SpelNode.SpelNode.create('projection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek(),\n entries = [],\n key;\n\n if (Array.isArray(collection)) {\n return projectCollection(collection, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entries.push(collection[key]);\n }\n }\n return projectCollection(entries, expr, state);\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Projection = exports.Projection = {\n create: createNode\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInstanceof = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The operator 'instanceof' checks if an object is of the class specified in the right\n * hand operand, in the same way that {@code instanceof} does in Java.\n *\n * THIS OPERATOR IS NOT IMPLEMENTED AND WILL THROW AN EXCEPTION\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('instanceof', position, left, right);\n\n /**\n * Compare the left operand to see it is an instance of the type specified as the\n * right operand. The right operand must be a class.\n * @param state the expression state\n * @return {@code true} if the left operand is an instanceof of the right operand,\n * otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpInstanceOf: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInstanceof = exports.OpInstanceof = {\n create: createNode\n};\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpBetween = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the between operator. The left operand to between must be a single value and\n * the right operand must be a list - this operator returns true if the left operand is\n * between (using the registered comparator) the two elements in the list. The definition\n * of between being inclusive follows the SQL BETWEEN definition.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('between', position, left, right);\n\n /**\n * Returns a boolean based on whether a value is in the range expressed. The first\n * operand is any value whilst the second is a list of two values - those two values\n * being the bounds allowed for the first operand (inclusive).\n * @param state the expression state\n * @return true if the left operand is in the range specified, false otherwise\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpBetween: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpBetween = exports.OpBetween = {\n create: createNode\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TypeReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a reference to a type, for example\n * {@code \"T(String)\" or \"T(com.somewhere.Foo)\"}.\n *\n * @author Andy Clement\n */\nfunction createNode(position, node, _dims) {\n var node = _SpelNode.SpelNode.create('typeref', position, node);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'TypeReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar TypeReference = exports.TypeReference = {\n create: createNode\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BeanReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a bean reference to a type, for example <tt>@foo</tt> or <tt>@'foo.bar'</tt>.\n * For a FactoryBean the syntax <tt>&foo</tt> can be used to access the factory itself.\n *\n * @author Andy Clement\n */\nfunction createNode(position, beanName) {\n var node = _SpelNode.SpelNode.create('beanref', position);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'BeanReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BeanReference = exports.BeanReference = {\n create: createNode\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Identifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * An 'identifier' {@link SpelNode}.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(identifierName, position) {\n var node = _SpelNode.SpelNode.create('identifier', position);\n\n node.getRaw = function () {\n return identifierName;\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'Identifier: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Identifier = exports.Identifier = {\n create: createNode\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.QualifiedIdentifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents a dot separated sequence of strings that indicate a package qualified type\n * reference.\n *\n * <p>Example: \"java.lang.String\" as in the expression \"new java.lang.String('hello')\"\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, pieces) {\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['qualifiedidentifier', position].concat(_toConsumableArray(pieces)));\n\n node.getRaw = function () {\n return pieces.map(function (p) {\n return p.getRaw();\n });\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'QualifiedIdentifier: Not implemented'\n };\n };\n\n return node;\n}\n\nvar QualifiedIdentifier = exports.QualifiedIdentifier = {\n create: createNode\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConstructorReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the invocation of a constructor. Either a constructor on a regular type or\n * construction of an array. When an array is constructed, an initializer can be specified.\n *\n * <p>Examples:<br>\n * new String('hello world')<br>\n * new int[]{1,2,3,4}<br>\n * new int[3] new int[3]{1,2,3}\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @since 3.0\n */\nfunction createNode(position, dimensions, nodes) {\n var isArray = nodes !== undefined;\n var dimension;\n if (isArray) {\n dimension = dimensions.length && dimensions[0] && dimensions[0].getType() === 'number' ? dimensions[0].getValue() : null;\n } else {\n nodes = dimensions;\n dimensions = undefined;\n }\n\n var _nodes = nodes,\n _nodes2 = _toArray(_nodes),\n _qualifiedIdentifier = _nodes2[0],\n args = _nodes2.slice(1);\n\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['constructorref', position].concat(_toConsumableArray(nodes)));\n\n node.getRaw = function () {\n return dimension;\n };\n\n node.getValue = function (state) {\n if (isArray && args.length <= 1) {\n var compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (args.length === 1) {\n return compiledArgs[0];\n } else {\n return dimension ? new Array(dimension) : [];\n }\n }\n\n throw {\n name: 'MethodNotImplementedException',\n message: 'ConstructorReference: Not implemented'\n };\n };\n\n return node;\n}\n\nvar ConstructorReference = exports.ConstructorReference = {\n create: createNode\n};\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction create(authentication, principal) {\n var context = {};\n\n context.authentication = authentication || {};\n context.principal = principal || {};\n\n context.hasRole = function (role) {\n var hasRole = false;\n\n if (!role) {\n return false;\n }\n if (!context.authentication && !Array.isArray(context.authentication.authorities)) {\n return false;\n }\n\n context.authentication.authorities.forEach(function (grantedAuthority) {\n if (grantedAuthority.authority.toLowerCase() === role.toLowerCase()) {\n hasRole = true;\n }\n });\n\n return hasRole;\n };\n\n context.hasPermission = function () /*variable arguments*/{\n var args = Array.prototype.slice.call(arguments);\n\n if (args.length === 1) {\n return context.hasRole(args[0]);\n }\n };\n\n return context;\n}\n\nvar StandardContext = exports.StandardContext = {\n create: create\n};\n\n/***/ })\n/******/ ]);\n});","import type { DefaultCombinatorName, DefaultOperatorName } from '../../types';\nimport type {\n SpELBaseNode,\n SpELBetweenFields,\n SpELBetweenValues,\n SpELBooleanLiteral,\n SpELCompoundNode,\n SpELExpressionNode,\n SpELIdentifier,\n SpELListNode,\n SpELNodeType,\n SpELNullLiteral,\n SpELNumericLiteral,\n SpELOpAnd,\n SpELOpMatches,\n SpELOpOr,\n SpELPrimitive,\n SpELProcessedExpression,\n SpELPropertyNode,\n SpELRelOpType,\n SpELRelation as SpELRelationOp,\n SpELStringLiteral,\n} from './types';\n\nexport const isSpELPropertyNode = (expr: SpELBaseNode<SpELNodeType>): expr is SpELPropertyNode => {\n return expr.getType() === 'property' || expr.getType() === 'variable';\n};\nexport const isSpELCompoundNode = (expr: SpELBaseNode<SpELNodeType>): expr is SpELCompoundNode => {\n return expr.getType() === 'compound' && expr.getChildren().every(c => isSpELPropertyNode(c));\n};\nexport const isSpELListNode = (expr: SpELBaseNode<SpELNodeType>): expr is SpELListNode => {\n return expr.getType() === 'list';\n};\n\nexport const isSpELOpAnd = (expr: SpELProcessedExpression): expr is SpELOpAnd =>\n expr.type === 'op-and';\nexport const isSpELOpOr = (expr: SpELProcessedExpression): expr is SpELOpOr =>\n expr.type === 'op-or';\nexport const isSpELOpMatches = (expr: SpELProcessedExpression): expr is SpELOpMatches =>\n expr.type === 'matches' &&\n ((isSpELIdentifier(expr.children[0]) && isSpELStringLiteral(expr.children[1])) ||\n (isSpELIdentifier(expr.children[1]) && isSpELStringLiteral(expr.children[0])) ||\n (isSpELIdentifier(expr.children[0]) && isSpELIdentifier(expr.children[1])));\nexport const isSpELIdentifier = (expr: SpELProcessedExpression): expr is SpELIdentifier =>\n expr.type === 'property' || expr.type === 'variable' || expr.type === 'compound';\nexport const isSpELStringLiteral = (expr: SpELProcessedExpression): expr is SpELStringLiteral =>\n expr.type === 'string';\nexport const isSpELNumericLiteral = (expr: SpELProcessedExpression): expr is SpELNumericLiteral =>\n expr.type === 'number';\nexport const isSpELBooleanLiteral = (expr: SpELProcessedExpression): expr is SpELBooleanLiteral =>\n expr.type === 'boolean';\nexport const isSpELNullLiteral = (expr: SpELProcessedExpression): expr is SpELNullLiteral =>\n expr.type === 'null';\nexport const isSpELRelationOp = (expr: SpELProcessedExpression): expr is SpELRelationOp =>\n expr.type === 'op-eq' ||\n expr.type === 'op-ne' ||\n expr.type === 'op-gt' ||\n expr.type === 'op-ge' ||\n expr.type === 'op-lt' ||\n expr.type === 'op-le';\nexport const isSpELPrimitive = (expr: SpELProcessedExpression): expr is SpELPrimitive =>\n isSpELNumericLiteral(expr) ||\n isSpELStringLiteral(expr) ||\n isSpELBooleanLiteral(expr) ||\n isSpELNullLiteral(expr);\nexport const isSpELBetweenValues = (expr: SpELProcessedExpression): expr is SpELBetweenValues =>\n expr.type === 'between' &&\n isSpELIdentifier(expr.children[0]) &&\n expr.children[1].type === 'list' &&\n expr.children[1].children.length >= 2 &&\n expr.children[1].children.every(c => isSpELPrimitive(c));\nexport const isSpELBetweenFields = (expr: SpELProcessedExpression): expr is SpELBetweenFields =>\n expr.type === 'between' &&\n isSpELIdentifier(expr.children[0]) &&\n expr.children[1].type === 'list' &&\n expr.children[1].children.length >= 2 &&\n expr.children[1].children.every(c => isSpELIdentifier(c));\n\nexport const processCompiledExpression = (\n ce: SpELPropertyNode | SpELExpressionNode\n): SpELProcessedExpression => {\n const type = ce.getType();\n const identifier = isSpELCompoundNode(ce)\n ? ce\n .getChildren()\n .map(p => (isSpELPropertyNode(p) ? p.getRaw() : /* istanbul ignore next */ ''))\n .join('.')\n : isSpELPropertyNode(ce)\n ? ce.getRaw()\n : null;\n const children =\n type === 'compound'\n ? []\n : (isSpELListNode(ce) ? ce.getRaw : ce.getChildren)().map(c => processCompiledExpression(c));\n const startPosition = ce.getStartPosition();\n const endPosition = ce.getEndPosition();\n const value = ce.getValue.length === 0 ? ce.getValue() : 'N/A';\n\n return {\n type: type === 'compound' && !identifier ? 'invalid' : type,\n children,\n startPosition,\n endPosition,\n value,\n identifier,\n };\n};\n\nexport const normalizeOperator = (opType: SpELRelOpType, flip?: boolean): DefaultOperatorName => {\n if (flip) {\n if (opType === 'op-lt') return '>';\n if (opType === 'op-le') return '>=';\n if (opType === 'op-gt') return '<';\n if (opType === 'op-ge') return '<=';\n }\n return (\n {\n 'op-eq': '=',\n 'op-ge': '>=',\n 'op-gt': '>',\n 'op-le': '<=',\n 'op-lt': '<',\n 'op-ne': '!=',\n } as const\n )[opType];\n};\n\nexport const generateFlatAndOrList = (\n expr: SpELProcessedExpression\n): (DefaultCombinatorName | SpELProcessedExpression)[] => {\n const combinator = expr.type.slice(3) as DefaultCombinatorName;\n const [left, right] = expr.children;\n if (left.type === 'op-and' || left.type === 'op-or') {\n return [...generateFlatAndOrList(left), combinator, right];\n }\n return [left, combinator, right];\n};\n\nexport const generateMixedAndOrList = (\n expr: SpELOpAnd | SpELOpOr\n): (DefaultCombinatorName | SpELProcessedExpression | ('and' | SpELProcessedExpression)[])[] => {\n const arr = generateFlatAndOrList(expr);\n const returnArray: (\n | DefaultCombinatorName\n | SpELProcessedExpression\n | ('and' | SpELProcessedExpression)[]\n )[] = [];\n let startIndex = 0;\n for (let i = 0; i < arr.length; i += 2) {\n if (arr[i + 1] === 'and') {\n startIndex = i;\n let j = 1;\n while (arr[startIndex + j] === 'and') {\n i += 2;\n j += 2;\n }\n const tempAndArray = arr.slice(startIndex, i + 1) as ('and' | SpELProcessedExpression)[];\n returnArray.push(tempAndArray);\n i -= 2;\n } else if (arr[i + 1] === 'or') {\n if (i === 0 || i === arr.length - 3) {\n if (i === 0 || arr[i - 1] === 'or') {\n returnArray.push(arr[i]);\n }\n returnArray.push(arr[i + 1]);\n if (i === arr.length - 3) {\n returnArray.push(arr[i + 2]);\n }\n } else {\n if (arr[i - 1] === 'and') {\n returnArray.push(arr[i + 1]);\n } else {\n returnArray.push(arr[i], arr[i + 1]);\n }\n }\n }\n }\n if (returnArray.length === 1 && Array.isArray(returnArray[0])) {\n // If length is 1, then the only element is an AND array so just return that\n return returnArray[0];\n }\n return returnArray;\n};\n","import { SpelExpressionEvaluator } from 'spel2js';\nimport type { Except } from 'type-fest';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { joinWith } from '../arrayUtils';\nimport { isRuleGroup } from '../isRuleGroup';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport type { SpELExpressionNode, SpELProcessedExpression } from './types';\nimport {\n generateFlatAndOrList,\n generateMixedAndOrList,\n isSpELBetweenFields,\n isSpELBetweenValues,\n isSpELIdentifier,\n isSpELOpAnd,\n isSpELOpMatches,\n isSpELOpOr,\n isSpELPrimitive,\n isSpELRelationOp,\n normalizeOperator,\n processCompiledExpression,\n} from './utils';\n\n/**\n * Options object for {@link parseSpEL!parseSpEL}.\n */\nexport interface ParseSpELOptions extends ParserCommonOptions {}\n\n/**\n * Converts a SpEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseSpEL(spel: string): DefaultRuleGroupType;\n/**\n * Converts a SpEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseSpEL(\n spel: string,\n options: Except<ParseSpELOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a SpEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseSpEL(\n spel: string,\n options: Except<ParseSpELOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseSpEL(spel: string, options: ParseSpELOptions = {}): DefaultRuleGroupTypeAny {\n const { fields, independentCombinators, listsAsArrays } = options;\n const ic = !!independentCombinators;\n const fieldsFlat = getFieldsArray(fields);\n\n const fieldIsValid = (\n fieldName: string,\n operator: DefaultOperatorName,\n subordinateFieldName?: string\n ) =>\n fieldIsValidUtil({\n fieldName,\n fieldsFlat,\n operator,\n subordinateFieldName,\n getValueSources: options?.getValueSources,\n });\n\n const emptyQuery: DefaultRuleGroupTypeAny = {\n rules: [],\n ...(ic ? {} : { combinator: 'and' }),\n };\n\n const parseProcessedSpEL = (\n expr: SpELProcessedExpression,\n processOpts: {\n groupOnlyIfNecessary?: boolean;\n forwardNegation?: boolean;\n } = {}\n ): DefaultRuleType | DefaultRuleGroupTypeAny | null => {\n const { forwardNegation: _forwardedNegation, groupOnlyIfNecessary: _g } = processOpts;\n if (expr.type === 'op-not') {\n const negatedExpr = parseProcessedSpEL(expr.children[0]);\n // istanbul ignore else\n if (negatedExpr) {\n if (\n !isRuleGroup(negatedExpr) &&\n (negatedExpr.operator === 'contains' ||\n negatedExpr.operator === 'beginsWith' ||\n negatedExpr.operator === 'endsWith')\n ) {\n return {\n ...negatedExpr,\n operator: `doesNot${negatedExpr.operator[0].toUpperCase()}${negatedExpr.operator\n .slice(1)\n .replace('s', '')}` as DefaultOperatorName,\n };\n }\n return ic\n ? ({ rules: [negatedExpr], not: true } as DefaultRuleGroupTypeIC)\n : ({\n combinator: 'and',\n rules: [negatedExpr],\n not: true,\n } as DefaultRuleGroupType);\n }\n } else if (isSpELOpAnd(expr) || isSpELOpOr(expr)) {\n if (ic) {\n const andOrList = generateFlatAndOrList(expr);\n const rules = andOrList.map(v => {\n if (typeof v === 'string') {\n return v;\n }\n return parseProcessedSpEL(v);\n });\n // Bail out completely if any rules in the list were invalid\n // so as not to return an incorrect and/or sequence\n if (!rules.every(Boolean)) {\n return null;\n }\n return {\n rules: rules as DefaultRuleGroupICArray,\n };\n }\n const andOrList = generateMixedAndOrList(expr);\n const combinator = andOrList[1] as DefaultCombinatorName;\n const filteredList = andOrList\n .filter(v => Array.isArray(v) || (!!v && typeof v !== 'string' && 'type' in v))\n .map(v =>\n Array.isArray(v) ? v.filter(vf => !!v && typeof vf !== 'string' && 'type' in vf) : v\n ) as (SpELProcessedExpression | SpELProcessedExpression[])[];\n const rules = filteredList\n .map((exp): DefaultRuleGroupType | DefaultRuleType | null => {\n if (Array.isArray(exp)) {\n return {\n combinator: 'and',\n rules: exp.map(e => parseProcessedSpEL(e)).filter(Boolean) as DefaultRuleGroupArray,\n };\n }\n return parseProcessedSpEL(exp) as DefaultRuleType | DefaultRuleGroupType | null;\n })\n .filter(Boolean) as DefaultRuleGroupArray;\n // istanbul ignore else\n if (rules.length > 0) {\n return { combinator, rules };\n }\n } else if (isSpELOpMatches(expr)) {\n const [left, right] = expr.children;\n let field: string = '';\n let regex: string = '';\n let valueSource: ValueSource | undefined = undefined;\n if (isSpELIdentifier(left)) {\n field = left.identifier;\n if (isSpELIdentifier(right)) {\n regex = right.identifier;\n valueSource = 'field';\n } else {\n // istanbul ignore else\n if (isSpELPrimitive(right)) {\n regex = right.value;\n }\n }\n } else {\n // istanbul ignore else\n if (isSpELIdentifier(right) && isSpELPrimitive(left)) {\n field = right.identifier;\n regex = left.value;\n }\n }\n\n if (/^(?!\\^).*?(?<!\\$)$/.test(regex)) {\n // istanbul ignore else\n if (fieldIsValid(field, 'contains')) {\n return {\n field,\n operator: 'contains',\n value: regex,\n ...(valueSource ? { valueSource } : {}),\n };\n }\n } else {\n if (/^\\^.*?(?<!\\$)$/.test(regex)) {\n // istanbul ignore else\n if (fieldIsValid(field, 'beginsWith')) {\n return {\n field,\n operator: 'beginsWith',\n value: regex.replace(/^\\^/, ''),\n };\n }\n } else {\n // istanbul ignore else\n if (/^(?!\\^).*?\\$$/.test(regex)) {\n // istanbul ignore else\n if (fieldIsValid(field, 'endsWith')) {\n return {\n field,\n operator: 'endsWith',\n value: regex.replace(/\\$$/, ''),\n };\n }\n }\n }\n }\n } else if (isSpELBetweenValues(expr) || isSpELBetweenFields(expr)) {\n // oxlint-disable-next-line typescript/no-explicit-any\n let values: [any, any] = [null, null];\n let valueSource: ValueSource | undefined = undefined;\n const [\n { identifier: field },\n {\n children: [left, right],\n },\n ] = expr.children;\n\n if (isSpELBetweenValues(expr)) {\n values = [left.value, right.value];\n } else {\n values = [left.identifier, right.identifier];\n valueSource = 'field';\n }\n // istanbul ignore else\n if (\n field &&\n values.every(v => fieldIsValid(field, 'between', valueSource === 'field' ? v : undefined))\n ) {\n const valueArray =\n values[0] < values[1] || valueSource === 'field' ? values : [values[1], values[0]];\n const value = listsAsArrays ? valueArray : joinWith(valueArray, ',');\n return valueSource\n ? { field, operator: 'between', value, valueSource }\n : { field, operator: 'between', value };\n }\n } else if (isSpELRelationOp(expr)) {\n let field: string | null = null;\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = undefined;\n let valueSource: ValueSource | undefined = undefined;\n let flip = false;\n const [left, right] = expr.children;\n\n if (isSpELIdentifier(left)) {\n field = left.identifier;\n if (isSpELIdentifier(right)) {\n value = right.identifier;\n valueSource = 'field';\n } else if (isSpELPrimitive(right)) {\n value = right.value;\n }\n } else {\n // istanbul ignore else\n if (isSpELIdentifier(right) && isSpELPrimitive(left)) {\n flip = true;\n field = right.identifier;\n value = left.value;\n }\n }\n let operator = normalizeOperator(expr.type, flip);\n if (value === null && (operator === '=' || operator === '!=')) {\n operator = operator === '=' ? 'null' : 'notNull';\n }\n if (\n field &&\n fieldIsValid(field, operator, valueSource === 'field' ? value : undefined) &&\n value !== undefined\n ) {\n return valueSource ? { field, operator, value, valueSource } : { field, operator, value };\n }\n }\n return null;\n };\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let compiledSpEL: SpELExpressionNode;\n try {\n compiledSpEL = SpelExpressionEvaluator.compile(spel)._compiledExpression;\n } catch {\n return prepare(emptyQuery);\n }\n\n const processedSpEL = processCompiledExpression(compiledSpEL);\n\n const result = parseProcessedSpEL(processedSpEL);\n if (result) {\n if (isRuleGroup(result)) {\n return prepare(result);\n }\n return prepare({ rules: [result], ...(ic ? {} : { combinator: 'and' }) });\n }\n\n return prepare(emptyQuery);\n}\n\nexport { parseSpEL };\n"],"x_google_ignoreList":[0],"mappings":"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"}
|