occam-verify-cli 0.0.1137 → 0.0.1138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/lib/context/bracketed/combinator.js +4 -3
  2. package/lib/context/bracketed/constructor.js +4 -3
  3. package/lib/context/bracketted.js +4 -16
  4. package/lib/{nodeAndTokens → context/partial}/metavariable.js +18 -18
  5. package/lib/{nodeAndTokens → context/partial}/statement.js +18 -18
  6. package/lib/{nodeAndTokens/substitution/statement.js → context/partial/substitution/frame.js} +16 -16
  7. package/lib/{nodeAndTokens/substitution/term.js → context/partial/substitution/reference.js} +16 -16
  8. package/lib/{nodeAndTokens/substitution/frame.js → context/partial/substitution/statement.js} +16 -16
  9. package/lib/{nodeAndTokens/substitution/reference.js → context/partial/substitution/term.js} +16 -16
  10. package/lib/{nodeAndTokens → context/partial}/term.js +19 -19
  11. package/lib/{nodeAndTokens → context/partial}/variable.js +19 -19
  12. package/lib/context/partial.js +93 -0
  13. package/lib/dom/metavariable.js +10 -10
  14. package/lib/dom/statement.js +3 -3
  15. package/lib/dom/term.js +2 -2
  16. package/lib/dom/variable.js +3 -3
  17. package/lib/log.js +1 -2
  18. package/lib/substitution/frame.js +3 -3
  19. package/lib/substitution/reference.js +3 -3
  20. package/lib/substitution/statement.js +5 -5
  21. package/lib/substitution/term.js +3 -3
  22. package/package.json +1 -1
  23. package/src/context/bracketed/combinator.js +7 -3
  24. package/src/context/bracketed/constructor.js +7 -3
  25. package/src/context/bracketted.js +3 -23
  26. package/src/context/partial/metavariable.js +39 -0
  27. package/src/context/partial/statement.js +39 -0
  28. package/src/context/partial/substitution/frame.js +18 -0
  29. package/src/context/partial/substitution/reference.js +18 -0
  30. package/src/context/partial/substitution/statement.js +18 -0
  31. package/src/context/partial/substitution/term.js +18 -0
  32. package/src/context/partial/term.js +49 -0
  33. package/src/context/partial/variable.js +49 -0
  34. package/src/{nodeAndTokens.js → context/partial.js} +5 -7
  35. package/src/dom/metavariable.js +14 -13
  36. package/src/dom/statement.js +6 -5
  37. package/src/dom/term.js +1 -1
  38. package/src/dom/variable.js +2 -2
  39. package/src/log.js +0 -2
  40. package/src/substitution/frame.js +6 -4
  41. package/src/substitution/reference.js +6 -4
  42. package/src/substitution/statement.js +16 -11
  43. package/src/substitution/term.js +6 -4
  44. package/lib/nodeAndTokens.js +0 -93
  45. package/lib/utilities/message.js +0 -52
  46. package/src/nodeAndTokens/metavariable.js +0 -37
  47. package/src/nodeAndTokens/statement.js +0 -37
  48. package/src/nodeAndTokens/substitution/frame.js +0 -18
  49. package/src/nodeAndTokens/substitution/reference.js +0 -18
  50. package/src/nodeAndTokens/substitution/statement.js +0 -18
  51. package/src/nodeAndTokens/substitution/term.js +0 -18
  52. package/src/nodeAndTokens/term.js +0 -45
  53. package/src/nodeAndTokens/variable.js +0 -45
  54. package/src/utilities/message.js +0 -49
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
12
12
  var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
13
- var _statement = /*#__PURE__*/ _interop_require_default(require("../nodeAndTokens/substitution/statement"));
13
+ var _statement = /*#__PURE__*/ _interop_require_default(require("../context/partial/substitution/statement"));
14
14
  var _unification = require("../utilities/unification");
15
15
  var _brackets = require("../utilities/brackets");
16
16
  var _json = require("../utilities/json");
@@ -242,7 +242,7 @@ var StatementSubstitution = /*#__PURE__*/ function(Substitution) {
242
242
  {
243
243
  key: "fromJSON",
244
244
  value: function fromJSON(json, fileContext) {
245
- var string = json.string, context = fileContext, statementSubstitutionNodeAndTokens = _statement.default.fromString(string, context), node = statementSubstitutionNodeAndTokens.getNode(), tokens = statementSubstitutionNodeAndTokens.getTokens(), resolved = true, statement = (0, _json.statementFromJSON)(json, fileContext), metavariable = (0, _json.metavariableFromJSON)(json, fileContext), substitution = null, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
245
+ var string = json.string, lexer = fileContext.getLexer(), parser = fileContext.getParser(), statementSubstitutionPartialContext = _statement.default.fromStringLexerAndParser(string, lexer, parser), node = statementSubstitutionPartialContext.getNode(), tokens = statementSubstitutionPartialContext.getTokens(), resolved = true, statement = (0, _json.statementFromJSON)(json, fileContext), metavariable = (0, _json.metavariableFromJSON)(json, fileContext), substitution = null, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
246
246
  return statementSubstitution;
247
247
  }
248
248
  },
@@ -250,7 +250,7 @@ var StatementSubstitution = /*#__PURE__*/ function(Substitution) {
250
250
  key: "fromStatementAndMetavariable",
251
251
  value: function fromStatementAndMetavariable(statement, metavariable, context) {
252
252
  statement = (0, _brackets.stripBracketsFromStatement)(statement, context); ///
253
- var string = stringFromStatementAndMetavariable(statement, metavariable), statementSubstitutionNodeAndTokens = _statement.default.fromString(string, context), node = statementSubstitutionNodeAndTokens.getNode(), tokens = statementSubstitutionNodeAndTokens.getTokens(), resolved = true, substitution = null, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
253
+ var string = stringFromStatementAndMetavariable(statement, metavariable), lexer = context.getLexer(), parser = context.getParser(), statementSubstitutionPartialContext = _statement.default.fromStringLexerAndParser(string, lexer, parser), node = statementSubstitutionPartialContext.getNode(), tokens = statementSubstitutionPartialContext.getTokens(), resolved = true, substitution = null, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
254
254
  return statementSubstitution;
255
255
  }
256
256
  },
@@ -258,7 +258,7 @@ var StatementSubstitution = /*#__PURE__*/ function(Substitution) {
258
258
  key: "fromStatementMetavariableAndSubstitution",
259
259
  value: function fromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context) {
260
260
  statement = (0, _brackets.stripBracketsFromStatement)(statement, context); ///
261
- var string = stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context), statementSubstitutionNodeAndTokens = _statement.default.fromString(string, context), node = statementSubstitutionNodeAndTokens.getNode(), tokens = statementSubstitutionNodeAndTokens.getTokens(), resolved = false, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
261
+ var string = stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context), lexer = context.getLexer(), parser = context.getParser(), statementSubstitutionPartialContext = _statement.default.fromStringLexerAndParser(string, lexer, parser), node = statementSubstitutionPartialContext.getNode(), tokens = statementSubstitutionPartialContext.getTokens(), resolved = false, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
262
262
  return statementSubstitution;
263
263
  }
264
264
  }
@@ -281,4 +281,4 @@ function stringFromStatementMetavariableAndSubstitution(statement, metavariable,
281
281
  return string;
282
282
  }
283
283
 
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcbmltcG9ydCBTdWJzdGl0dXRpb25zIGZyb20gXCIuLi9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgU3RhdGVtZW50U3Vic3RpdHV0aW9uTm9kZUFuZFRva2VucyBmcm9tIFwiLi4vbm9kZUFuZFRva2Vucy9zdWJzdGl0dXRpb24vc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IHVuaWZ5U3Vic3RpdHV0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy91bmlmaWNhdGlvblwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBzdGF0ZW1lbnRGcm9tSlNPTiwgc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OLCBtZXRhdmFyaWFibGVGcm9tSlNPTiwgbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlbWVudFN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICAgIHN1cGVyKHN0cmluZywgbm9kZSwgdG9rZW5zKTtcblxuICAgIHRoaXMucmVzb2x2ZWQgPSByZXNvbHZlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgICB0aGlzLnN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGlzUmVzb2x2ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzdGl0dXRpb247XG4gIH1cblxuICBpc1N0YXRlbWVudEVxdWFsVG8oc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCBzdGF0ZW1lbnRFcXVhbFRvID0gdGhpcy5zdGF0ZW1lbnQuaXNFcXVhbFRvKHN0YXRlbWVudCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50RXF1YWxUbztcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlRXF1YWxUbyhtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmlzRXF1YWxUbyhtZXRhdmFyaWFibGUpOyB9XG5cbiAgaXNTdWJzdGl0dXRpb25FcXVhbFRvKHN1YnN0aXR1dGlvbikge1xuICAgIGxldCBzdWJzdGl0dXRpb25FcXVhbFRvO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKChzdWJzdGl0dXRpb24gPT09IG51bGwpICYmICh0aGlzLnN1YnN0aXR1dGlvbiA9PT0gbnVsbCkpIHtcbiAgICAgIHN1YnN0aXR1dGlvbkVxdWFsVG8gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkgJiYgKHRoaXMuc3Vic3RpdHV0aW9uID09PSBudWxsKSkge1xuICAgICAgc3Vic3RpdHV0aW9uRXF1YWxUbyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoKHN1YnN0aXR1dGlvbiA9PT0gbnVsbCkgJiYgKHRoaXMuc3Vic3RpdHV0aW9uICE9PSBudWxsKSkge1xuICAgICAgc3Vic3RpdHV0aW9uRXF1YWxUbyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJzdGl0dXRpb25FcXVhbFRvID0gdGhpcy5zdWJzdGl0dXRpb24uaXNFcXVhbFRvKHN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkVxdWFsVG87XG4gIH1cblxuICBpc1NpbXBsZSgpIHtcbiAgICBjb25zdCBzaW1wbGUgPSAodGhpcy5zdWJzdGl0dXRpb24gPT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHNpbXBsZTtcbiAgfVxuXG4gIHJlc29sdmUoc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHRoaXMuc3RyaW5nO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICBzaW1wbGVTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpO1xuXG4gICAgaWYgKHNpbXBsZVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBSZXNvbHZpbmcgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uID0gc2ltcGxlU3Vic3RpdHV0aW9uLCAgLy8vXG4gICAgICAgICAgICBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IHN1YnN0aXR1dGlvbi5yZXNvbHZlU3Vic3RpdHV0aW9uKHRoaXMuc3Vic3RpdHV0aW9uLCB0aGlzLnN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIHRoaXMucmVzb2x2ZWQgPSBzdWJzdGl0dXRpb25SZXNvbHZlZDsgLy8vXG5cbiAgICAgIGlmICh0aGlzLnJlc29sdmVkKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4ucmVzb2x2ZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBSZXNvbHZpbmcgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3Vic3RpdHV0aW9uID0gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHNwZWNpZmljQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKHNwZWNpZmljU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBzdWJzdGl0dXRpb25zLnNuYXBzaG90KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxTdWJzdGl0dXRpb25TdHJpbmcgPSBnZW5lcmFsU3Vic3RpdHV0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgICAgc3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmcgPSBzcGVjaWZpY1N1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25VbmlmaWVkID0gdW5pZnlTdWJzdGl0dXRpb24oZ2VuZXJhbFN1YnN0aXR1dGlvbiwgc3BlY2lmaWNTdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25VbmlmaWVkKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25VbmlmaWVkID9cbiAgICAgICAgc3Vic3RpdHV0aW9ucy5jb250aW51ZSgpIDpcbiAgICAgICAgICBzdWJzdGl0dXRpb25zLnJvbGxiYWNrKGNvbnRleHQpO1xuXG4gICAgICBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IHN1YnN0aXR1dGlvblVuaWZpZWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uUmVzb2x2ZWQpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4ucmVzb2x2ZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvblJlc29sdmVkO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHNwZWNpZmljU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllZCkge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uc0xlbmd0aCA9IHN1YnN0aXR1dGlvbnMuZ2V0TGVuZ3RoKCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25zTGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0U3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5nZXRGaXJzdFN1YnN0aXR1dGlvbigpO1xuXG4gICAgICAgIHNwZWNpZmljU3Vic3RpdHV0aW9uID0gZmlyc3RTdWJzdGl0dXRpb247IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcGVjaWZpY1N1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKHRoaXMubWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OKHRoaXMuc3RhdGVtZW50KSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIHN0cmluZyA9IHRoaXMuc3RyaW5nLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBzdGF0ZW1lbnQsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25Ob2RlQW5kVG9rZW5zID0gU3RhdGVtZW50U3Vic3RpdHV0aW9uTm9kZUFuZFRva2Vucy5mcm9tU3RyaW5nKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgbm9kZSA9IHN0YXRlbWVudFN1YnN0aXR1dGlvbk5vZGVBbmRUb2tlbnMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRva2VucyA9IHN0YXRlbWVudFN1YnN0aXR1dGlvbk5vZGVBbmRUb2tlbnMuZ2V0VG9rZW5zKCksXG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gbnVsbCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24oc3RyaW5nLCBub2RlLCB0b2tlbnMsIHJlc29sdmVkLCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIHN0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gICAgY29uc3Qgc3RyaW5nID0gc3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uTm9kZUFuZFRva2VucyA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbk5vZGVBbmRUb2tlbnMuZnJvbVN0cmluZyhzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgIG5vZGUgPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb25Ob2RlQW5kVG9rZW5zLmdldE5vZGUoKSxcbiAgICAgICAgICB0b2tlbnMgPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb25Ob2RlQW5kVG9rZW5zLmdldFRva2VucygpLFxuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24oc3RyaW5nLCBub2RlLCB0b2tlbnMsIHJlc29sdmVkLCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uLCBjb250ZXh0KSB7XG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbk5vZGVBbmRUb2tlbnMgPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb25Ob2RlQW5kVG9rZW5zLmZyb21TdHJpbmcoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICBub2RlID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uTm9kZUFuZFRva2Vucy5nZXROb2RlKCksXG4gICAgICAgICAgdG9rZW5zID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uTm9kZUFuZFRva2Vucy5nZXRUb2tlbnMoKSxcbiAgICAgICAgICByZXNvbHZlZCA9IGZhbHNlLFxuICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24oc3RyaW5nLCBub2RlLCB0b2tlbnMsIHJlc29sdmVkLCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICBsZXQgc3RyaW5nO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gIGlmIChzdWJzdGl0dXRpb24gPT09IG51bGwpIHtcbiAgICBzdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJzdHJpbmciLCJub2RlIiwidG9rZW5zIiwicmVzb2x2ZWQiLCJzdGF0ZW1lbnQiLCJtZXRhdmFyaWFibGUiLCJzdWJzdGl0dXRpb24iLCJpc1Jlc29sdmVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0U3Vic3RpdHV0aW9uIiwiaXNTdGF0ZW1lbnRFcXVhbFRvIiwiY29udGV4dCIsInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50RXF1YWxUbyIsImlzRXF1YWxUbyIsImlzTWV0YXZhcmlhYmxlRXF1YWxUbyIsImlzU3Vic3RpdHV0aW9uRXF1YWxUbyIsInN1YnN0aXR1dGlvbkVxdWFsVG8iLCJpc1NpbXBsZSIsInNpbXBsZSIsInJlc29sdmUiLCJzdWJzdGl0dXRpb25zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdWJzdGl0dXRpb25TdHJpbmciLCJzaW1wbGVTdWJzdGl0dXRpb24iLCJmaW5kU2ltcGxlU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGUiLCJ0cmFjZSIsInN1YnN0aXR1dGlvblJlc29sdmVkIiwicmVzb2x2ZVN1YnN0aXR1dGlvbiIsImRlYnVnIiwiZ2V0U3RyaW5nIiwiZ2VuZXJhbFN1YnN0aXR1dGlvbiIsInNwZWNpZmljU3Vic3RpdHV0aW9uIiwidW5pZnlTdGF0ZW1lbnQiLCJzbmFwc2hvdCIsImdlbmVyYWxTdWJzdGl0dXRpb25TdHJpbmciLCJzcGVjaWZpY1N1YnN0aXR1dGlvblN0cmluZyIsInN1YnN0aXR1dGlvblVuaWZpZWQiLCJ1bmlmeVN1YnN0aXR1dGlvbiIsImNvbnRpbnVlIiwicm9sbGJhY2siLCJTdWJzdGl0dXRpb25zIiwiZnJvbU5vdGhpbmciLCJzdGF0ZW1lbnRVbmlmaWVkIiwic3Vic3RpdHV0aW9uc0xlbmd0aCIsImdldExlbmd0aCIsImZpcnN0U3Vic3RpdHV0aW9uIiwiZ2V0Rmlyc3RTdWJzdGl0dXRpb24iLCJ0b0pTT04iLCJtZXRhdmFyaWFibGVKU09OIiwibWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImZpbGVDb250ZXh0Iiwic3RhdGVtZW50U3Vic3RpdHV0aW9uTm9kZUFuZFRva2VucyIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbk5vZGVBbmRUb2tlbnMiLCJmcm9tU3RyaW5nIiwiZ2V0Tm9kZSIsImdldFRva2VucyIsInN0YXRlbWVudEZyb21KU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJmcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwic3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsImZyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24iLCJzdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwiU3Vic3RpdHV0aW9uIiwic3RhdGVtZW50U3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVVxQkE7OzttRUFSSTtvRUFDQztnRUFDcUI7MkJB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
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcbmltcG9ydCBTdWJzdGl0dXRpb25zIGZyb20gXCIuLi9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgU3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcGFydGlhbC9zdWJzdGl0dXRpb24vc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IHVuaWZ5U3Vic3RpdHV0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy91bmlmaWNhdGlvblwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBzdGF0ZW1lbnRGcm9tSlNPTiwgc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OLCBtZXRhdmFyaWFibGVGcm9tSlNPTiwgbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlbWVudFN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICAgIHN1cGVyKHN0cmluZywgbm9kZSwgdG9rZW5zKTtcblxuICAgIHRoaXMucmVzb2x2ZWQgPSByZXNvbHZlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgICB0aGlzLnN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGlzUmVzb2x2ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzdGl0dXRpb247XG4gIH1cblxuICBpc1N0YXRlbWVudEVxdWFsVG8oc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCBzdGF0ZW1lbnRFcXVhbFRvID0gdGhpcy5zdGF0ZW1lbnQuaXNFcXVhbFRvKHN0YXRlbWVudCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50RXF1YWxUbztcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlRXF1YWxUbyhtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmlzRXF1YWxUbyhtZXRhdmFyaWFibGUpOyB9XG5cbiAgaXNTdWJzdGl0dXRpb25FcXVhbFRvKHN1YnN0aXR1dGlvbikge1xuICAgIGxldCBzdWJzdGl0dXRpb25FcXVhbFRvO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKChzdWJzdGl0dXRpb24gPT09IG51bGwpICYmICh0aGlzLnN1YnN0aXR1dGlvbiA9PT0gbnVsbCkpIHtcbiAgICAgIHN1YnN0aXR1dGlvbkVxdWFsVG8gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkgJiYgKHRoaXMuc3Vic3RpdHV0aW9uID09PSBudWxsKSkge1xuICAgICAgc3Vic3RpdHV0aW9uRXF1YWxUbyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoKHN1YnN0aXR1dGlvbiA9PT0gbnVsbCkgJiYgKHRoaXMuc3Vic3RpdHV0aW9uICE9PSBudWxsKSkge1xuICAgICAgc3Vic3RpdHV0aW9uRXF1YWxUbyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJzdGl0dXRpb25FcXVhbFRvID0gdGhpcy5zdWJzdGl0dXRpb24uaXNFcXVhbFRvKHN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkVxdWFsVG87XG4gIH1cblxuICBpc1NpbXBsZSgpIHtcbiAgICBjb25zdCBzaW1wbGUgPSAodGhpcy5zdWJzdGl0dXRpb24gPT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHNpbXBsZTtcbiAgfVxuXG4gIHJlc29sdmUoc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHRoaXMuc3RyaW5nO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICBzaW1wbGVTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpO1xuXG4gICAgaWYgKHNpbXBsZVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBSZXNvbHZpbmcgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uID0gc2ltcGxlU3Vic3RpdHV0aW9uLCAgLy8vXG4gICAgICAgICAgICBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IHN1YnN0aXR1dGlvbi5yZXNvbHZlU3Vic3RpdHV0aW9uKHRoaXMuc3Vic3RpdHV0aW9uLCB0aGlzLnN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIHRoaXMucmVzb2x2ZWQgPSBzdWJzdGl0dXRpb25SZXNvbHZlZDsgLy8vXG5cbiAgICAgIGlmICh0aGlzLnJlc29sdmVkKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4ucmVzb2x2ZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBSZXNvbHZpbmcgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3Vic3RpdHV0aW9uID0gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHNwZWNpZmljQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKHNwZWNpZmljU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBzdWJzdGl0dXRpb25zLnNuYXBzaG90KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxTdWJzdGl0dXRpb25TdHJpbmcgPSBnZW5lcmFsU3Vic3RpdHV0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgICAgc3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmcgPSBzcGVjaWZpY1N1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25VbmlmaWVkID0gdW5pZnlTdWJzdGl0dXRpb24oZ2VuZXJhbFN1YnN0aXR1dGlvbiwgc3BlY2lmaWNTdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25VbmlmaWVkKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25VbmlmaWVkID9cbiAgICAgICAgc3Vic3RpdHV0aW9ucy5jb250aW51ZSgpIDpcbiAgICAgICAgICBzdWJzdGl0dXRpb25zLnJvbGxiYWNrKGNvbnRleHQpO1xuXG4gICAgICBzdWJzdGl0dXRpb25SZXNvbHZlZCA9IHN1YnN0aXR1dGlvblVuaWZpZWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uUmVzb2x2ZWQpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4ucmVzb2x2ZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvblJlc29sdmVkO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHNwZWNpZmljU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllZCkge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uc0xlbmd0aCA9IHN1YnN0aXR1dGlvbnMuZ2V0TGVuZ3RoKCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25zTGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0U3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5nZXRGaXJzdFN1YnN0aXR1dGlvbigpO1xuXG4gICAgICAgIHNwZWNpZmljU3Vic3RpdHV0aW9uID0gZmlyc3RTdWJzdGl0dXRpb247IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcGVjaWZpY1N1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKHRoaXMubWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OKHRoaXMuc3RhdGVtZW50KSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIHN0cmluZyA9IHRoaXMuc3RyaW5nLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBzdGF0ZW1lbnQsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBsZXhlciA9IGZpbGVDb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gZmlsZUNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQgPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5mcm9tU3RyaW5nTGV4ZXJBbmRQYXJzZXIoc3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBub2RlID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRva2VucyA9IHN0YXRlbWVudFN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IG51bGwsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50U3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbik7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBzdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICAgIGNvbnN0IHN0cmluZyA9IHN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUpLFxuICAgICAgICAgIGxleGVyID0gY29udGV4dC5nZXRMZXhlcigpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQgPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5mcm9tU3RyaW5nTGV4ZXJBbmRQYXJzZXIoc3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBub2RlID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRva2VucyA9IHN0YXRlbWVudFN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24oc3RyaW5nLCBub2RlLCB0b2tlbnMsIHJlc29sdmVkLCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uLCBjb250ZXh0KSB7XG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24sIGNvbnRleHQpLFxuICAgICAgICAgIGxleGVyID0gY29udGV4dC5nZXRMZXhlcigpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQgPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5mcm9tU3RyaW5nTGV4ZXJBbmRQYXJzZXIoc3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBub2RlID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRva2VucyA9IHN0YXRlbWVudFN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICAgIHJlc29sdmVkID0gZmFsc2UsXG4gICAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uID0gbmV3IFN0YXRlbWVudFN1YnN0aXR1dGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgcmVzb2x2ZWQsIHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFN1YnN0aXR1dGlvbjtcbiAgfVxufVxuXG5mdW5jdGlvbiBzdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgaWYgKHN1YnN0aXR1dGlvbiA9PT0gbnVsbCkge1xuICAgIHN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBzdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9JHtzdWJzdGl0dXRpb25TdHJpbmd9XWA7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInN0cmluZyIsIm5vZGUiLCJ0b2tlbnMiLCJyZXNvbHZlZCIsInN0YXRlbWVudCIsIm1ldGF2YXJpYWJsZSIsInN1YnN0aXR1dGlvbiIsImlzUmVzb2x2ZWQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRTdWJzdGl0dXRpb24iLCJpc1N0YXRlbWVudEVxdWFsVG8iLCJjb250ZXh0Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnRFcXVhbFRvIiwiaXNFcXVhbFRvIiwiaXNNZXRhdmFyaWFibGVFcXVhbFRvIiwiaXNTdWJzdGl0dXRpb25FcXVhbFRvIiwic3Vic3RpdHV0aW9uRXF1YWxUbyIsImlzU2ltcGxlIiwic2ltcGxlIiwicmVzb2x2ZSIsInN1YnN0aXR1dGlvbnMiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN1YnN0aXR1dGlvblN0cmluZyIsInNpbXBsZVN1YnN0aXR1dGlvbiIsImZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZSIsInRyYWNlIiwic3Vic3RpdHV0aW9uUmVzb2x2ZWQiLCJyZXNvbHZlU3Vic3RpdHV0aW9uIiwiZGVidWciLCJnZXRTdHJpbmciLCJnZW5lcmFsU3Vic3RpdHV0aW9uIiwic3BlY2lmaWNTdWJzdGl0dXRpb24iLCJ1bmlmeVN0YXRlbWVudCIsInNuYXBzaG90IiwiZ2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZyIsInNwZWNpZmljU3Vic3RpdHV0aW9uU3RyaW5nIiwic3Vic3RpdHV0aW9uVW5pZmllZCIsInVuaWZ5U3Vic3RpdHV0aW9uIiwiY29udGludWUiLCJyb2xsYmFjayIsIlN1YnN0aXR1dGlvbnMiLCJmcm9tTm90aGluZyIsInN0YXRlbWVudFVuaWZpZWQiLCJzdWJzdGl0dXRpb25zTGVuZ3RoIiwiZ2V0TGVuZ3RoIiwiZmlyc3RTdWJzdGl0dXRpb24iLCJnZXRGaXJzdFN1YnN0aXR1dGlvbiIsInRvSlNPTiIsIm1ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJzdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiZmlsZUNvbnRleHQiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQiLCJTdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCIsImZyb21TdHJpbmdMZXhlckFuZFBhcnNlciIsImdldE5vZGUiLCJnZXRUb2tlbnMiLCJzdGF0ZW1lbnRGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZUZyb21KU09OIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsInN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJmcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsIlN1YnN0aXR1dGlvbiIsInN0YXRlbWVudFN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFVcUJBOzs7bUVBUkk7b0VBQ0M7Z0VBQ3NCOzJCQUVkO3dCQUNTO29CQUN1RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuRyxJQUFBLEFBQU1BLHNDQUFOO2NBQU1BO2FBQUFBLHNCQUNQQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsWUFBWSxFQUFFQyxZQUFZO2dDQUQ5RFA7O2dCQUVqQixrQkFGaUJBO1lBRVhDO1lBQVFDO1lBQU1DOztRQUVwQixNQUFLQyxRQUFRLEdBQUdBO1FBQ2hCLE1BQUtDLFNBQVMsR0FBR0E7UUFDakIsTUFBS0MsWUFBWSxHQUFHQTtRQUNwQixNQUFLQyxZQUFZLEdBQUdBOzs7a0JBUEhQOztZQVVuQlEsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixRQUFRO1lBQ3RCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixTQUFTO1lBQ3ZCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixZQUFZO1lBQzFCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixZQUFZO1lBQzFCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQlAsU0FBUyxFQUFFUSxPQUFPO2dCQUNuQ1IsWUFBWVMsSUFBQUEsb0NBQTBCLEVBQUNULFdBQVdRLFVBQVUsR0FBRztnQkFFL0QsSUFBTUUsbUJBQW1CLElBQUksQ0FBQ1YsU0FBUyxDQUFDVyxTQUFTLENBQUNYO2dCQUVsRCxPQUFPVTtZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQlgsWUFBWTtnQkFBSSxPQUFPLElBQUksQ0FBQ0EsWUFBWSxDQUFDVSxTQUFTLENBQUNWO1lBQWU7OztZQUV4RlksS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQlgsWUFBWTtnQkFDaEMsSUFBSVk7Z0JBRUosSUFBSSxPQUFPO2dCQUNULEdBQUc7Z0JBQ0wsT0FBTyxJQUFJLEFBQUNaLGlCQUFpQixRQUFVLElBQUksQ0FBQ0EsWUFBWSxLQUFLLE1BQU87b0JBQ2xFWSxzQkFBc0I7Z0JBQ3hCLE9BQU8sSUFBSSxBQUFDWixpQkFBaUIsUUFBVSxJQUFJLENBQUNBLFlBQVksS0FBSyxNQUFPO29CQUNsRVksc0JBQXNCO2dCQUN4QixPQUFPLElBQUksQUFBQ1osaUJBQWlCLFFBQVUsSUFBSSxDQUFDQSxZQUFZLEtBQUssTUFBTztvQkFDbEVZLHNCQUFzQjtnQkFDeEIsT0FBTztvQkFDTEEsc0JBQXNCLElBQUksQ0FBQ1osWUFBWSxDQUFDUyxTQUFTLENBQUNUO2dCQUNwRDtnQkFFQSxPQUFPWTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLFNBQVUsSUFBSSxDQUFDZCxZQUFZLEtBQUs7Z0JBRXRDLE9BQU9jO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsUUFBUUMsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLGVBQWU7Z0JBQ3BELElBQU1DLHFCQUFxQixJQUFJLENBQUN6QixNQUFNO2dCQUV0QyxJQUFNSyxlQUFlLElBQUksQ0FBQ0ksZUFBZSxJQUNuQ2lCLHFCQUFxQkosY0FBY0ssb0NBQW9DLENBQUN0QjtnQkFFOUUsSUFBSXFCLHVCQUF1QixNQUFNO29CQUMvQkYsZ0JBQWdCSSxLQUFLLENBQUMsQUFBQyxpQkFBbUMsT0FBbkJILG9CQUFtQjtvQkFFMUQsSUFBTW5CLGVBQWVvQixvQkFDZkcsdUJBQXVCdkIsYUFBYXdCLG1CQUFtQixDQUFDLElBQUksQ0FBQ3hCLFlBQVksRUFBRSxJQUFJLENBQUNGLFNBQVMsRUFBRWtCLGVBQWVDLGdCQUFnQkM7b0JBRWhJLElBQUksQ0FBQ3JCLFFBQVEsR0FBRzBCLHNCQUFzQixHQUFHO29CQUV6QyxJQUFJLElBQUksQ0FBQzFCLFFBQVEsRUFBRTt3QkFDakJxQixnQkFBZ0JPLEtBQUssQ0FBQyxBQUFDLG1CQUFxQyxPQUFuQk4sb0JBQW1CO29CQUM5RDtnQkFDRjtZQUNGOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLG9CQUFvQnhCLFlBQVksRUFBRUYsU0FBUyxFQUFFa0IsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLGVBQWU7Z0JBQ3pGLElBQUlLLHVCQUF1QjtnQkFFM0IsSUFBTUoscUJBQXFCbkIsYUFBYTBCLFNBQVM7Z0JBRWpEUixnQkFBZ0JJLEtBQUssQ0FBQyxBQUFDLGlCQUFtQyxPQUFuQkgsb0JBQW1CO2dCQUUxRCxJQUFNUSxzQkFBc0IzQixjQUN0QjRCLHVCQUF1QixJQUFJLENBQUNDLGNBQWMsQ0FBQy9CLFdBQVdvQixpQkFBaUJBLGtCQUFtQixHQUFHO2dCQUVuRyxJQUFJVSx5QkFBeUIsTUFBTTtvQkFDakNaLGNBQWNjLFFBQVE7b0JBRXRCLElBQU1DLDRCQUE0Qkosb0JBQW9CRCxTQUFTLElBQ3pETSw2QkFBNkJKLHFCQUFxQkYsU0FBUztvQkFFakVSLGdCQUFnQkksS0FBSyxDQUFDLEFBQUMsaUJBQXNFUyxPQUF0REMsNEJBQTJCLDZCQUFxRCxPQUExQkQsMkJBQTBCO29CQUV2SCxJQUFNRSxzQkFBc0JDLElBQUFBLDhCQUFpQixFQUFDUCxxQkFBcUJDLHNCQUFzQlosZUFBZUMsZ0JBQWdCQztvQkFHeEgsSUFBSWUscUJBQXFCO3dCQUN2QmYsZ0JBQWdCSSxLQUFLLENBQUMsQUFBQyxtQkFBd0VTLE9BQXREQyw0QkFBMkIsNkJBQXFELE9BQTFCRCwyQkFBMEI7b0JBQzNIO29CQUVBLElBQU16QixVQUFVWSxpQkFBa0IsR0FBRztvQkFFckNlLHNCQUNFakIsY0FBY21CLFFBQVEsS0FDcEJuQixjQUFjb0IsUUFBUSxDQUFDOUI7b0JBRTNCaUIsdUJBQXVCVSxxQkFBc0IsR0FBRztnQkFDbEQ7Z0JBRUEsSUFBSVYsc0JBQXNCO29CQUN4QkwsZ0JBQWdCTyxLQUFLLENBQUMsQUFBQyxtQkFBcUMsT0FBbkJOLG9CQUFtQjtnQkFDOUQ7Z0JBRUEsT0FBT0k7WUFDVDs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlL0IsU0FBUyxFQUFFbUIsY0FBYyxFQUFFQyxlQUFlO2dCQUN2RCxJQUFJVSx1QkFBdUI7Z0JBRTNCLElBQU1aLGdCQUFnQnFCLHNCQUFhLENBQUNDLFdBQVcsSUFDekNDLG1CQUFtQixJQUFJLENBQUN6QyxTQUFTLENBQUMrQixjQUFjLENBQUMvQixXQUFXa0IsZUFBZUMsZ0JBQWdCQztnQkFFakcsSUFBSXFCLGtCQUFrQjtvQkFDcEIsSUFBTUMsc0JBQXNCeEIsY0FBY3lCLFNBQVM7b0JBRW5ELElBQUlELHdCQUF3QixHQUFHO3dCQUM3QixJQUFNRSxvQkFBb0IxQixjQUFjMkIsb0JBQW9CO3dCQUU1RGYsdUJBQXVCYyxtQkFBbUIsR0FBRztvQkFDL0M7Z0JBQ0Y7Z0JBRUEsT0FBT2Q7WUFDVDs7O1lBRUFnQixLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsbUJBQW1CQyxJQUFBQSxvQ0FBOEIsRUFBQyxJQUFJLENBQUMvQyxZQUFZLEdBQ25FZ0QsZ0JBQWdCQyxJQUFBQSw4QkFBd0IsRUFBQyxJQUFJLENBQUNsRCxTQUFTLEdBQ3ZEQyxlQUFlOEMsa0JBQ2YvQyxZQUFZaUQsZUFDWnJELFNBQVMsSUFBSSxDQUFDQSxNQUFNLEVBQ3BCdUQsT0FBTztvQkFDTHZELFFBQUFBO29CQUNBSSxXQUFBQTtvQkFDQUMsY0FBQUE7Z0JBQ0Y7Z0JBRU4sT0FBT2tEO1lBQ1Q7Ozs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsU0FBU0QsSUFBSSxFQUFFRSxXQUFXO2dCQUMvQixJQUFNLEFBQUV6RCxTQUFXdUQsS0FBWHZELFFBQ0YwRCxRQUFRRCxZQUFZRSxRQUFRLElBQzVCQyxTQUFTSCxZQUFZSSxTQUFTLElBQzlCQyxzQ0FBc0NDLGtCQUFtQyxDQUFDQyx3QkFBd0IsQ0FBQ2hFLFFBQVEwRCxPQUFPRSxTQUNsSDNELE9BQU82RCxvQ0FBb0NHLE9BQU8sSUFDbEQvRCxTQUFTNEQsb0NBQW9DSSxTQUFTLElBQ3REL0QsV0FBVyxNQUNYQyxZQUFZK0QsSUFBQUEsdUJBQWlCLEVBQUNaLE1BQU1FLGNBQ3BDcEQsZUFBZStELElBQUFBLDBCQUFvQixFQUFDYixNQUFNRSxjQUMxQ25ELGVBQWUsTUFDZitELHdCQUF3QixJQXRLYnRFLHNCQXNLdUNDLFFBQVFDLE1BQU1DLFFBQVFDLFVBQVVDLFdBQVdDLGNBQWNDO2dCQUVqSCxPQUFPK0Q7WUFDVDs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLDZCQUE2QmxFLFNBQVMsRUFBRUMsWUFBWSxFQUFFTyxPQUFPO2dCQUNsRVIsWUFBWVMsSUFBQUEsb0NBQTBCLEVBQUNULFdBQVdRLFVBQVUsR0FBRztnQkFFL0QsSUFBTVosU0FBU3VFLG1DQUFtQ25FLFdBQVdDLGVBQ3ZEcUQsUUFBUTlDLFFBQVErQyxRQUFRLElBQ3hCQyxTQUFTaEQsUUFBUWlELFNBQVMsSUFDMUJDLHNDQUFzQ0Msa0JBQW1DLENBQUNDLHdCQUF3QixDQUFDaEUsUUFBUTBELE9BQU9FLFNBQ2xIM0QsT0FBTzZELG9DQUFvQ0csT0FBTyxJQUNsRC9ELFNBQVM0RCxvQ0FBb0NJLFNBQVMsSUFDdEQvRCxXQUFXLE1BQ1hHLGVBQWUsTUFDZitELHdCQUF3QixJQXRMYnRFLHNCQXNMdUNDLFFBQVFDLE1BQU1DLFFBQVFDLFVBQVVDLFdBQVdDLGNBQWNDO2dCQUVqSCxPQUFPK0Q7WUFDVDs7O1lBRU9HLEtBQUFBO21CQUFQLFNBQU9BLHlDQUF5Q3BFLFNBQVMsRUFBRUMsWUFBWSxFQUFFQyxZQUFZLEVBQUVNLE9BQU87Z0JBQzVGUixZQUFZUyxJQUFBQSxvQ0FBMEIsRUFBQ1QsV0FBV1EsVUFBVSxHQUFHO2dCQUUvRCxJQUFNWixTQUFTeUUsK0NBQStDckUsV0FBV0MsY0FBY0MsY0FBY00sVUFDL0Y4QyxRQUFROUMsUUFBUStDLFFBQVEsSUFDeEJDLFNBQVNoRCxRQUFRaUQsU0FBUyxJQUMxQkMsc0NBQXNDQyxrQkFBbUMsQ0FBQ0Msd0JBQXdCLENBQUNoRSxRQUFRMEQsT0FBT0UsU0FDbEgzRCxPQUFPNkQsb0NBQW9DRyxPQUFPLElBQ2xEL0QsU0FBUzRELG9DQUFvQ0ksU0FBUyxJQUN0RC9ELFdBQVcsT0FDWGtFLHdCQUF3QixJQXJNYnRFLHNCQXFNdUNDLFFBQVFDLE1BQU1DLFFBQVFDLFVBQVVDLFdBQVdDLGNBQWNDO2dCQUVqSCxPQUFPK0Q7WUFDVDs7O1dBeE1tQnRFO0VBQThCMkUscUJBQVk7QUEyTS9ELFNBQVNILG1DQUFtQ25FLFNBQVMsRUFBRUMsWUFBWTtJQUNqRSxJQUFNc0Usa0JBQWtCdkUsVUFBVTRCLFNBQVMsSUFDckM0QyxxQkFBcUJ2RSxhQUFhMkIsU0FBUyxJQUMzQ2hDLFNBQVMsQUFBQyxJQUEwQjRFLE9BQXZCRCxpQkFBZ0IsU0FBMEIsT0FBbkJDLG9CQUFtQjtJQUU3RCxPQUFPNUU7QUFDVDtBQUVBLFNBQVN5RSwrQ0FBK0NyRSxTQUFTLEVBQUVDLFlBQVksRUFBRUMsWUFBWTtJQUMzRixJQUFJTjtJQUVKLElBQU0yRSxrQkFBa0J2RSxVQUFVNEIsU0FBUyxJQUNyQzRDLHFCQUFxQnZFLGFBQWEyQixTQUFTO0lBRWpELElBQUkxQixpQkFBaUIsTUFBTTtRQUN6Qk4sU0FBUyxBQUFDLElBQTBCNEUsT0FBdkJELGlCQUFnQixTQUEwQixPQUFuQkMsb0JBQW1CO0lBQ3pELE9BQU87UUFDTCxJQUFNbkQscUJBQXFCbkIsYUFBYTBCLFNBQVM7UUFFakRoQyxTQUFTLEFBQUMsSUFBMEI0RSxPQUF2QkQsaUJBQWdCLFNBQTRCbEQsT0FBckJtRCxvQkFBd0MsT0FBbkJuRCxvQkFBbUI7SUFDOUU7SUFFQSxPQUFPekI7QUFDVCJ9
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
12
12
  var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
13
- var _term = /*#__PURE__*/ _interop_require_default(require("../nodeAndTokens/substitution/term"));
13
+ var _term = /*#__PURE__*/ _interop_require_default(require("../context/partial/substitution/term"));
14
14
  var _query = require("../utilities/query");
15
15
  var _brackets = require("../utilities/brackets");
16
16
  function _assert_this_initialized(self) {
@@ -170,7 +170,7 @@ var TermSubstitution = /*#__PURE__*/ function(Substitution) {
170
170
  termNode = (0, _brackets.stripBracketsFromTermNode)(termNode); ///
171
171
  var Term = _dom.default.Term;
172
172
  term = Term.fromTermNode(termNode, context);
173
- var string = stringFromTermAndVariable(term, variable), termSubstitutionNodeAndTokens = _term.default.fromString(string, context), node = termSubstitutionNodeAndTokens.getNode(), tokens = termSubstitutionNodeAndTokens.getTokens(), termSubstitution = new TermSubstitution(string, node, tokens, term, variable);
173
+ var string = stringFromTermAndVariable(term, variable), lexer = context.getLexer(), parser = context.getParser(), termSubstitutionPartialContext = _term.default.fromStringLexerAndParser(string, lexer, parser), node = termSubstitutionPartialContext.getNode(), tokens = termSubstitutionPartialContext.getTokens(), termSubstitution = new TermSubstitution(string, node, tokens, term, variable);
174
174
  return termSubstitution;
175
175
  }
176
176
  }
@@ -182,4 +182,4 @@ function stringFromTermAndVariable(term, variable) {
182
182
  return string;
183
183
  }
184
184
 
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcbmltcG9ydCBUZXJtU3Vic3RpdHV0aW9uTm9kZUFuZFRva2VucyBmcm9tIFwiLi4vbm9kZUFuZFRva2Vucy9zdWJzdGl0dXRpb24vdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBzdHJpcEJyYWNrZXRzRnJvbVRlcm0gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1TdWJzdGl0dXRpb24vdGVybVswXVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1TdWJzdGl0dXRpb24vdGVybVsxXS92YXJpYWJsZSFcIiksXG4gICAgICB0ZXJtU3Vic3RpdHV0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC90ZXJtU3Vic3RpdHV0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXJtU3Vic3RpdHV0aW9uIGV4dGVuZHMgU3Vic3RpdHV0aW9uIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlLCB0b2tlbnMsIHRlcm0sIHZhcmlhYmxlKSB7XG4gICAgc3VwZXIoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnZhcmlhYmxlID0gdmFyaWFibGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRWYXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZTtcbiAgfVxuXG4gIGlzVGVybUVxdWFsVG8odGVybSwgY29udGV4dCkge1xuICAgIHRlcm0gPSBzdHJpcEJyYWNrZXRzRnJvbVRlcm0odGVybSk7IC8vL1xuXG4gICAgY29uc3QgdGVybUVxdWFsVG8gPSB0aGlzLnRlcm0uaXNFcXVhbFRvKHRlcm0pO1xuXG4gICAgcmV0dXJuIHRlcm1FcXVhbFRvO1xuICB9XG5cbiAgaXNWYXJpYWJsZUVxdWFsVG8odmFyaWFibGUpIHsgcmV0dXJuIHRoaXMudmFyaWFibGUuaXNFcXVhbFRvKHZhcmlhYmxlKTsgfVxuXG4gIHVuaWZ5V2l0aEVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlKSB7XG4gICAgbGV0IHVuaWZpZWRXaXRoRXF1aXZhbGVuY2U7XG5cbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRoaXMudGVybS5nZXROb2RlKCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VNYXRjaGVzVGVybU5vZGUgPSBlcXVpdmFsZW5jZS5tYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIGlmIChlcXVpdmFsZW5jZU1hdGNoZXNUZXJtTm9kZSkge1xuICAgICAgY29uc3QgdmFyaWFibGVOb2RlID0gdGhpcy52YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgICAgICBlcXVpdmFsZW5jZU1hdGNoZXNWYXJpYWJsZU5vZGUgPSBlcXVpdmFsZW5jZS5tYXRjaFZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAoZXF1aXZhbGVuY2VNYXRjaGVzVmFyaWFibGVOb2RlKSB7XG4gICAgICAgICAgdW5pZmllZFdpdGhFcXVpdmFsZW5jZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5pZmllZFdpdGhFcXVpdmFsZW5jZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHRlcm1TdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgdGVybVN1YnN0aXR1dGlvbk5vZGUgPSB0ZXJtU3Vic3RpdHV0aW9uTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgaWYgKHRlcm1TdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodGVybVN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybVN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgICBpZiAoKHRlcm1Ob2RlICE9PSBudWxsKSAmJiAodmFyaWFibGVOb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCB7IFRlcm0sIFZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gdGVybVN1YnN0aXR1dGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgdG9rZW5zID0gY29udGV4dC5ub2RlQXNUb2tlbnMobm9kZSksXG4gICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUpO1xuXG4gICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSBuZXcgVGVybVN1YnN0aXR1dGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgdGVybSwgdmFyaWFibGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21UZXJuQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKTtcblxuICAgIHRlcm1Ob2RlID0gc3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSh0ZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgeyBUZXJtIH0gPSBkb207XG5cbiAgICB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc3RyaW5nID0gc3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSksXG4gICAgICAgICAgdGVybVN1YnN0aXR1dGlvbk5vZGVBbmRUb2tlbnMgPSBUZXJtU3Vic3RpdHV0aW9uTm9kZUFuZFRva2Vucy5mcm9tU3RyaW5nKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgbm9kZSA9IHRlcm1TdWJzdGl0dXRpb25Ob2RlQW5kVG9rZW5zLmdldE5vZGUoKSxcbiAgICAgICAgICB0b2tlbnMgPSB0ZXJtU3Vic3RpdHV0aW9uTm9kZUFuZFRva2Vucy5nZXRUb2tlbnMoKSxcbiAgICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gbmV3IFRlcm1TdWJzdGl0dXRpb24oc3RyaW5nLCBub2RlLCB0b2tlbnMsIHRlcm0sIHZhcmlhYmxlKTtcblxuICAgIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUpIHtcbiAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0cmluZyA9IGBbJHt0ZXJtU3RyaW5nfSBmb3IgJHt2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIlRlcm1TdWJzdGl0dXRpb24iLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ0ZXJtU3Vic3RpdHV0aW9uTm9kZVF1ZXJ5Iiwic3RyaW5nIiwibm9kZSIsInRva2VucyIsInRlcm0iLCJ2YXJpYWJsZSIsImdldFRlcm0iLCJnZXRWYXJpYWJsZSIsImlzVGVybUVxdWFsVG8iLCJjb250ZXh0Iiwic3RyaXBCcmFja2V0c0Zyb21UZXJtIiwidGVybUVxdWFsVG8iLCJpc0VxdWFsVG8iLCJpc1ZhcmlhYmxlRXF1YWxUbyIsInVuaWZ5V2l0aEVxdWl2YWxlbmNlIiwiZXF1aXZhbGVuY2UiLCJ1bmlmaWVkV2l0aEVxdWl2YWxlbmNlIiwidGVybU5vZGUiLCJnZXROb2RlIiwiZXF1aXZhbGVuY2VNYXRjaGVzVGVybU5vZGUiLCJtYXRjaFRlcm1Ob2RlIiwidmFyaWFibGVOb2RlIiwiZXF1aXZhbGVuY2VNYXRjaGVzVmFyaWFibGVOb2RlIiwibWF0Y2hWYXJpYWJsZU5vZGUiLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJ0ZXJtU3Vic3RpdHV0aW9uIiwidGVybVN1YnN0aXR1dGlvbk5vZGUiLCJUZXJtIiwiZG9tIiwiVmFyaWFibGUiLCJmcm9tVGVybU5vZGUiLCJmcm9tVmFyaWFibGVOb2RlIiwibm9kZUFzVG9rZW5zIiwic3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSIsImZyb21UZXJuQW5kVmFyaWFibGUiLCJzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlIiwidGVybVN1YnN0aXR1dGlvbk5vZGVBbmRUb2tlbnMiLCJUZXJtU3Vic3RpdHV0aW9uTm9kZUFuZFRva2VucyIsImZyb21TdHJpbmciLCJnZXRUb2tlbnMiLCJTdWJzdGl0dXRpb24iLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidmFyaWFibGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBY3FCQTs7OzBEQVpMO21FQUNTOzJEQUNpQjtxQkFFaEI7d0JBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHdEMsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLDhCQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDLHdDQUM5QkUsNEJBQTRCRixJQUFBQSxnQkFBUyxFQUFDO0FBRTdCLElBQUEsQUFBTUYsaUNBQU47Y0FBTUE7YUFBQUEsaUJBQ1BLLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsUUFBUTtnQ0FEN0JUOztnQkFFakIsa0JBRmlCQTtZQUVYSztZQUFRQztZQUFNQzs7UUFFcEIsTUFBS0MsSUFBSSxHQUFHQTtRQUNaLE1BQUtDLFFBQVEsR0FBR0E7OztrQkFMQ1Q7O1lBUW5CVSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLElBQUk7WUFDbEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFFBQVE7WUFDdEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsY0FBY0osSUFBSSxFQUFFSyxPQUFPO2dCQUN6QkwsT0FBT00sSUFBQUEsK0JBQXFCLEVBQUNOLE9BQU8sR0FBRztnQkFFdkMsSUFBTU8sY0FBYyxJQUFJLENBQUNQLElBQUksQ0FBQ1EsU0FBUyxDQUFDUjtnQkFFeEMsT0FBT087WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0JSLFFBQVE7Z0JBQUksT0FBTyxJQUFJLENBQUNBLFFBQVEsQ0FBQ08sU0FBUyxDQUFDUDtZQUFXOzs7WUFFeEVTLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUJDLFdBQVc7Z0JBQzlCLElBQUlDO2dCQUVKLElBQU1DLFdBQVcsSUFBSSxDQUFDYixJQUFJLENBQUNjLE9BQU8sSUFDNUJDLDZCQUE2QkosWUFBWUssYUFBYSxDQUFDSDtnQkFFN0QsSUFBSUUsNEJBQTRCO29CQUM5QixJQUFNRSxlQUFlLElBQUksQ0FBQ2hCLFFBQVEsQ0FBQ2EsT0FBTyxJQUNwQ0ksaUNBQWlDUCxZQUFZUSxpQkFBaUIsQ0FBQ0Y7b0JBRXJFLElBQUlDLGdDQUFnQzt3QkFDaENOLHlCQUF5QjtvQkFDM0I7Z0JBQ0o7Z0JBRUEsT0FBT0E7WUFDVDs7OztZQUVPUSxLQUFBQTttQkFBUCxTQUFPQSxrQkFBa0JDLGFBQWEsRUFBRWhCLE9BQU87Z0JBQzdDLElBQUlpQixtQkFBbUI7Z0JBRXZCLElBQU1DLHVCQUF1QjNCLDBCQUEwQnlCO2dCQUV2RCxJQUFJRSx5QkFBeUIsTUFBTTtvQkFDakMsSUFBTVYsV0FBV3BCLGNBQWM4Qix1QkFDekJOLGVBQWV0QixrQkFBa0I0QjtvQkFFdkMsSUFBSSxBQUFDVixhQUFhLFFBQVVJLGlCQUFpQixNQUFPO3dCQUNsRCxJQUFRTyxPQUFtQkMsWUFBRyxDQUF0QkQsTUFBTUUsV0FBYUQsWUFBRyxDQUFoQkMsVUFDUjFCLE9BQU93QixLQUFLRyxZQUFZLENBQUNkLFVBQVVSLFVBQ25DSixXQUFXeUIsU0FBU0UsZ0JBQWdCLENBQUNYLGNBQWNaLFVBQ25EUCxPQUFPeUIsc0JBQ1B4QixTQUFTTSxRQUFRd0IsWUFBWSxDQUFDL0IsT0FDOUJELFNBQVNpQywwQkFBMEI5QixNQUFNQzt3QkFFL0NxQixtQkFBbUIsSUE3RE45QixpQkE2RDJCSyxRQUFRQyxNQUFNQyxRQUFRQyxNQUFNQztvQkFDdEU7Z0JBQ0Y7Z0JBRUEsT0FBT3FCO1lBQ1Q7OztZQUVPUyxLQUFBQTttQkFBUCxTQUFPQSxvQkFBb0IvQixJQUFJLEVBQUVDLFFBQVEsRUFBRUksT0FBTztnQkFDaEQsSUFBSVEsV0FBV2IsS0FBS2MsT0FBTztnQkFFM0JELFdBQVdtQixJQUFBQSxtQ0FBeUIsRUFBQ25CLFdBQVcsR0FBRztnQkFFbkQsSUFBTSxBQUFFVyxPQUFTQyxZQUFHLENBQVpEO2dCQUVSeEIsT0FBT3dCLEtBQUtHLFlBQVksQ0FBQ2QsVUFBVVI7Z0JBRW5DLElBQU1SLFNBQVNpQywwQkFBMEI5QixNQUFNQyxXQUN6Q2dDLGdDQUFnQ0MsYUFBNkIsQ0FBQ0MsVUFBVSxDQUFDdEMsUUFBUVEsVUFDakZQLE9BQU9tQyw4QkFBOEJuQixPQUFPLElBQzVDZixTQUFTa0MsOEJBQThCRyxTQUFTLElBQ2hEZCxtQkFBbUIsSUFqRlI5QixpQkFpRjZCSyxRQUFRQyxNQUFNQyxRQUFRQyxNQUFNQztnQkFFMUUsT0FBT3FCO1lBQ1Q7OztXQXBGbUI5QjtFQUF5QjZDLHFCQUFZO0FBdUYxRCxTQUFTUCwwQkFBMEI5QixJQUFJLEVBQUVDLFFBQVE7SUFDL0MsSUFBTXFDLGFBQWF0QyxLQUFLdUMsU0FBUyxJQUMzQkMsaUJBQWlCdkMsU0FBU3NDLFNBQVMsSUFDbkMxQyxTQUFTLEFBQUMsSUFBcUIyQyxPQUFsQkYsWUFBVyxTQUFzQixPQUFmRSxnQkFBZTtJQUVwRCxPQUFPM0M7QUFDVCJ9
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcbmltcG9ydCBUZXJtU3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcGFydGlhbC9zdWJzdGl0dXRpb24vdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBzdHJpcEJyYWNrZXRzRnJvbVRlcm0gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1TdWJzdGl0dXRpb24vdGVybVswXVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1TdWJzdGl0dXRpb24vdGVybVsxXS92YXJpYWJsZSFcIiksXG4gICAgICB0ZXJtU3Vic3RpdHV0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC90ZXJtU3Vic3RpdHV0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXJtU3Vic3RpdHV0aW9uIGV4dGVuZHMgU3Vic3RpdHV0aW9uIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlLCB0b2tlbnMsIHRlcm0sIHZhcmlhYmxlKSB7XG4gICAgc3VwZXIoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnZhcmlhYmxlID0gdmFyaWFibGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRWYXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZTtcbiAgfVxuXG4gIGlzVGVybUVxdWFsVG8odGVybSwgY29udGV4dCkge1xuICAgIHRlcm0gPSBzdHJpcEJyYWNrZXRzRnJvbVRlcm0odGVybSk7IC8vL1xuXG4gICAgY29uc3QgdGVybUVxdWFsVG8gPSB0aGlzLnRlcm0uaXNFcXVhbFRvKHRlcm0pO1xuXG4gICAgcmV0dXJuIHRlcm1FcXVhbFRvO1xuICB9XG5cbiAgaXNWYXJpYWJsZUVxdWFsVG8odmFyaWFibGUpIHsgcmV0dXJuIHRoaXMudmFyaWFibGUuaXNFcXVhbFRvKHZhcmlhYmxlKTsgfVxuXG4gIHVuaWZ5V2l0aEVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlKSB7XG4gICAgbGV0IHVuaWZpZWRXaXRoRXF1aXZhbGVuY2U7XG5cbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRoaXMudGVybS5nZXROb2RlKCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VNYXRjaGVzVGVybU5vZGUgPSBlcXVpdmFsZW5jZS5tYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIGlmIChlcXVpdmFsZW5jZU1hdGNoZXNUZXJtTm9kZSkge1xuICAgICAgY29uc3QgdmFyaWFibGVOb2RlID0gdGhpcy52YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgICAgICBlcXVpdmFsZW5jZU1hdGNoZXNWYXJpYWJsZU5vZGUgPSBlcXVpdmFsZW5jZS5tYXRjaFZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAoZXF1aXZhbGVuY2VNYXRjaGVzVmFyaWFibGVOb2RlKSB7XG4gICAgICAgICAgdW5pZmllZFdpdGhFcXVpdmFsZW5jZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5pZmllZFdpdGhFcXVpdmFsZW5jZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHRlcm1TdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgdGVybVN1YnN0aXR1dGlvbk5vZGUgPSB0ZXJtU3Vic3RpdHV0aW9uTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgaWYgKHRlcm1TdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodGVybVN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybVN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgICBpZiAoKHRlcm1Ob2RlICE9PSBudWxsKSAmJiAodmFyaWFibGVOb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCB7IFRlcm0sIFZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gdGVybVN1YnN0aXR1dGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgdG9rZW5zID0gY29udGV4dC5ub2RlQXNUb2tlbnMobm9kZSksXG4gICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUpO1xuXG4gICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSBuZXcgVGVybVN1YnN0aXR1dGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgdGVybSwgdmFyaWFibGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21UZXJuQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKTtcblxuICAgIHRlcm1Ob2RlID0gc3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSh0ZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgeyBUZXJtIH0gPSBkb207XG5cbiAgICB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc3RyaW5nID0gc3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQgPSBUZXJtU3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZnJvbVN0cmluZ0xleGVyQW5kUGFyc2VyKHN0cmluZywgbGV4ZXIsIHBhcnNlciksXG4gICAgICAgICAgbm9kZSA9IHRlcm1TdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5nZXROb2RlKCksXG4gICAgICAgICAgdG9rZW5zID0gdGVybVN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSBuZXcgVGVybVN1YnN0aXR1dGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgdGVybSwgdmFyaWFibGUpO1xuXG4gICAgcmV0dXJuIHRlcm1TdWJzdGl0dXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RyaW5nID0gYFske3Rlcm1TdHJpbmd9IGZvciAke3ZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiVGVybVN1YnN0aXR1dGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsInRlcm1TdWJzdGl0dXRpb25Ob2RlUXVlcnkiLCJzdHJpbmciLCJub2RlIiwidG9rZW5zIiwidGVybSIsInZhcmlhYmxlIiwiZ2V0VGVybSIsImdldFZhcmlhYmxlIiwiaXNUZXJtRXF1YWxUbyIsImNvbnRleHQiLCJzdHJpcEJyYWNrZXRzRnJvbVRlcm0iLCJ0ZXJtRXF1YWxUbyIsImlzRXF1YWxUbyIsImlzVmFyaWFibGVFcXVhbFRvIiwidW5pZnlXaXRoRXF1aXZhbGVuY2UiLCJlcXVpdmFsZW5jZSIsInVuaWZpZWRXaXRoRXF1aXZhbGVuY2UiLCJ0ZXJtTm9kZSIsImdldE5vZGUiLCJlcXVpdmFsZW5jZU1hdGNoZXNUZXJtTm9kZSIsIm1hdGNoVGVybU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJlcXVpdmFsZW5jZU1hdGNoZXNWYXJpYWJsZU5vZGUiLCJtYXRjaFZhcmlhYmxlTm9kZSIsImZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInRlcm1TdWJzdGl0dXRpb24iLCJ0ZXJtU3Vic3RpdHV0aW9uTm9kZSIsIlRlcm0iLCJkb20iLCJWYXJpYWJsZSIsImZyb21UZXJtTm9kZSIsImZyb21WYXJpYWJsZU5vZGUiLCJub2RlQXNUb2tlbnMiLCJzdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlIiwiZnJvbVRlcm5BbmRWYXJpYWJsZSIsInN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwidGVybVN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0IiwiVGVybVN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0IiwiZnJvbVN0cmluZ0xleGVyQW5kUGFyc2VyIiwiZ2V0VG9rZW5zIiwiU3Vic3RpdHV0aW9uIiwidGVybVN0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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.1137",
4
+ "version": "0.0.1138",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  import BracketedContext from "../../context/bracketted";
4
- import StatementNodeAndTokens from "../../nodeAndTokens/statement";
4
+ import StatementPartialContext from "../../context/partial/statement";
5
5
 
6
6
  import { STATEMENT_META_TYPE_NAME } from "../../metaTypeNames";
7
+ import { nominalLexer, nominalParser } from "../../utilities/nominal";
7
8
 
8
9
  class CombinatorBracketedContext extends BracketedContext {
9
10
  getBracketedStatementNode() {
@@ -15,8 +16,11 @@ class CombinatorBracketedContext extends BracketedContext {
15
16
 
16
17
  static fromNothing() {
17
18
  const string = `(${STATEMENT_META_TYPE_NAME})`,
18
- NodeAndTokens = StatementNodeAndTokens,
19
- combinatorBracketedContext = BracketedContext.fromStringAndNodeAndTokens(CombinatorBracketedContext, string, NodeAndTokens);
19
+ lexer = nominalLexer, ///
20
+ parser = nominalParser, ///
21
+ statementPartialContext = StatementPartialContext.fromStringLexerAndParser(string, lexer, parser),
22
+ context = statementPartialContext, ///
23
+ combinatorBracketedContext = BracketedContext.fromString(CombinatorBracketedContext, string, context);
20
24
 
21
25
  return combinatorBracketedContext;
22
26
  }
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  import BracketedContext from "../../context/bracketted";
4
- import TermNodeAndTokens from "../../nodeAndTokens/term";
4
+ import TermPartialContext from "../../context/partial/term";
5
5
 
6
6
  import { OBJECT_TYPE_NAME } from "../../typeNames";
7
+ import { nominalLexer, nominalParser } from "../../utilities/nominal";
7
8
 
8
9
  class ConstructorBracketedContext extends BracketedContext {
9
10
  getBracketedTermNode() {
@@ -15,8 +16,11 @@ class ConstructorBracketedContext extends BracketedContext {
15
16
 
16
17
  static fromNothing() {
17
18
  const string = `(${OBJECT_TYPE_NAME})`,
18
- NodeAndTokens = TermNodeAndTokens,
19
- constructorBracketedContext = BracketedContext.fromStringAndNodeAndTokens(ConstructorBracketedContext, string, NodeAndTokens);
19
+ lexer = nominalLexer, ///
20
+ parser = nominalParser, ///
21
+ termPartialContext = TermPartialContext.fromStringLexerAndParser(string, lexer, parser),
22
+ context = termPartialContext,
23
+ constructorBracketedContext = BracketedContext.fromString(ConstructorBracketedContext, string, context);
20
24
 
21
25
  return constructorBracketedContext;
22
26
  }
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import { nominalLexer, nominalParser } from "../utilities/nominal";
4
-
5
3
  export default class BracketedContext {
6
4
  constructor(string, node, tokens) {
7
5
  this.string = string;
@@ -33,29 +31,11 @@ export default class BracketedContext {
33
31
  return this.string;
34
32
  }
35
33
 
36
- static fromStringAndNodeAndTokens(Class, string, NodeAndTokens) {
37
- const context = { ///
38
- getLexer,
39
- getParser
40
- },
41
- nodeAndTokens = NodeAndTokens.fromString(string, context),
42
- node = nodeAndTokens.getNode(),
43
- tokens = nodeAndTokens.getTokens(),
34
+ static fromString(Class, string, context) {
35
+ const node = context.getNode(),
36
+ tokens = context.getTokens(),
44
37
  bracketedContext = new Class(string, node, tokens);
45
38
 
46
39
  return bracketedContext;
47
40
  }
48
41
  }
49
-
50
- function getLexer() {
51
- const lexer = nominalLexer; //'
52
-
53
- return lexer;
54
- }
55
-
56
- function getParser() {
57
- const parser = nominalParser; //'
58
-
59
- return parser;
60
- }
61
-
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= metavariable... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class MetavariablePartialContext extends PartialContext {
15
+ getMetavariableNode() {
16
+ const metavariableNode = this.node; ///
17
+
18
+ return metavariableNode;
19
+ }
20
+
21
+ getMetavariableTokens() {
22
+ const metavariableTokens = this.tokens; ///
23
+
24
+ return metavariableTokens;
25
+ }
26
+
27
+ static rule = rule;
28
+
29
+ static fromMetavariable(metavariable, context) {
30
+ const string = metavariable.getString(),
31
+ lexer = context.getLexer(),
32
+ parser = context.getParser(),
33
+ metavariablePartialContext = PartialContext.fromStringLexerAndParser(MetavariablePartialContext, string, lexer, parser);
34
+
35
+ return metavariablePartialContext;
36
+ }
37
+
38
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(MetavariablePartialContext, string, lexer, parser); }
39
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= statement... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class StatementPartialContext extends PartialContext {
15
+ getStatementNode() {
16
+ const statementNode = this.node; ///
17
+
18
+ return statementNode;
19
+ }
20
+
21
+ getStatementTokens() {
22
+ const statementTokens = this.tokens; ///
23
+
24
+ return statementTokens;
25
+ }
26
+
27
+ static rule = rule;
28
+
29
+ static fromStatement(statement, context) {
30
+ const string = statement.getString(),
31
+ lexer = context.getLexer(),
32
+ parser = context.getParser(),
33
+ statementPartialContext = PartialContext.fromStringLexerAndParser(StatementPartialContext, string, lexer, parser);
34
+
35
+ return statementPartialContext;
36
+ }
37
+
38
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(StatementPartialContext, string, lexer, parser); }
39
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= frameSubstitution... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class FrameSubstitutionPartialContext extends PartialContext {
15
+ static rule = rule;
16
+
17
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(FrameSubstitutionPartialContext, string, lexer, parser); }
18
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= referenceSubstitution... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class ReferenceSubstitutionPartialContext extends PartialContext {
15
+ static rule = rule;
16
+
17
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(ReferenceSubstitutionPartialContext, string, lexer, parser); }
18
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= statementSubstitution... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class StatementSubstitutionPartialContext extends PartialContext {
15
+ static rule = rule;
16
+
17
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(StatementSubstitutionPartialContext, string, lexer, parser); }
18
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= termSubstitution... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class TermSubstitutionPartialContext extends PartialContext {
15
+ static rule = rule;
16
+
17
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(TermSubstitutionPartialContext, string, lexer, parser); }
18
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= term... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class TermPartialContext extends PartialContext {
15
+ getTermNode() {
16
+ const termNode = this.node; ///
17
+
18
+ return termNode;
19
+ }
20
+
21
+ getTermTokens() {
22
+ const termTokens = this.tokens; ///
23
+
24
+ return termTokens;
25
+ }
26
+
27
+ static rule = rule;
28
+
29
+ static fromTerm(term, context) {
30
+ const string = term.getString(),
31
+ lexer = context.getLexer(),
32
+ parser = context.getParser(),
33
+ termPartialContext = PartialContext.fromStringLexerAndParser(TermPartialContext, string, lexer, parser);
34
+
35
+ return termPartialContext;
36
+ }
37
+
38
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(TermPartialContext, string, lexer, parser); }
39
+ }
40
+
41
+ export function termNodeFromTermString(termString, context) {
42
+ const string = termString, ///
43
+ lexer = context.getLexer(),
44
+ parser = context.getParser(),
45
+ termPartialContext = TermPartialContext.fromStringLexerAndParser(string, lexer, parser),
46
+ termNode = termPartialContext.getTermNode();
47
+
48
+ return termNode;
49
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ import PartialContext from "../../context/partial";
4
+
5
+ import { ruleFromBNF } from "../../context/partial";
6
+
7
+ const bnf = `
8
+
9
+ _ ::= variable... <END_OF_LINE> ;
10
+
11
+ `,
12
+ rule = ruleFromBNF(bnf);
13
+
14
+ export default class VariablePartialContext extends PartialContext {
15
+ getVariableNode() {
16
+ const variableNode = this.node; ///
17
+
18
+ return variableNode;
19
+ }
20
+
21
+ getVariableTokens() {
22
+ const variableTokens = this.tokens; ///
23
+
24
+ return variableTokens;
25
+ }
26
+
27
+ static rule = rule;
28
+
29
+ static fromVariable(variable, context) {
30
+ const string = variable.getString(),
31
+ lexer = context.getLexer(),
32
+ parser = context.getParser(),
33
+ variablePartialContext = PartialContext.fromStringLexerAndParser(VariablePartialContext, string, context, lexer, parser);
34
+
35
+ return variablePartialContext;
36
+ }
37
+
38
+ static fromStringLexerAndParser(string, lexer, parser) { return PartialContext.fromStringLexerAndParser(VariablePartialContext, string, lexer, parser); }
39
+ }
40
+
41
+ export function variableNodeFromVariableString(variableString, context) {
42
+ const string = variableString, ///
43
+ lexer = context.getLexer(),
44
+ parser = context.getParser(),
45
+ variablePartialContext = VariablePartialContext.fromStringLexerAndParser(string, lexer, parser),
46
+ variableNode = variablePartialContext.getVariableNode();
47
+
48
+ return variableNode;
49
+ }
@@ -4,7 +4,7 @@ import { BNFLexer } from "occam-lexers";
4
4
  import { BNFParser } from "occam-parsers";
5
5
  import { arrayUtilities } from "necessary";
6
6
 
7
- import { nodeQuery } from "./utilities/query";
7
+ import { nodeQuery } from "../utilities/query";
8
8
 
9
9
  const { first } = arrayUtilities;
10
10
 
@@ -13,7 +13,7 @@ const bnfLexer = BNFLexer.fromNothing(),
13
13
 
14
14
  const childNodeQuery = nodeQuery("/*/*!");
15
15
 
16
- export default class NodeAndTokens {
16
+ export default class PartialContext {
17
17
  constructor(node, tokens) {
18
18
  this.node = node;
19
19
  this.tokens = tokens;
@@ -27,10 +27,8 @@ export default class NodeAndTokens {
27
27
  return this.tokens;
28
28
  }
29
29
 
30
- static fromString(Class, string, context) {
30
+ static fromStringLexerAndParser(Class, string, lexer, parser) {
31
31
  const { rule } = Class,
32
- lexer = context.getLexer(),
33
- parser = context.getParser(),
34
32
  ruleMap = parser.getRuleMap(),
35
33
  ruleName = rule.getName();
36
34
 
@@ -51,9 +49,9 @@ export default class NodeAndTokens {
51
49
 
52
50
  tokens = tokensFromTokensAndNode(tokens, node); ///
53
51
 
54
- const nodeAndTokens = new Class(node, tokens);
52
+ const partialContext = new Class(node, tokens);
55
53
 
56
- return nodeAndTokens;
54
+ return partialContext;
57
55
  }
58
56
  }
59
57