occam-verify-cli 0.0.958 → 0.0.960

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 (132) hide show
  1. package/bin/action/verify.js +16 -5
  2. package/bin/utilities/releaseContext.js +5 -8
  3. package/lib/axiom.js +1 -7
  4. package/lib/combinator.js +1 -19
  5. package/lib/conclusion.js +1 -19
  6. package/lib/conjecture.js +1 -7
  7. package/lib/consequent.js +1 -19
  8. package/lib/constructor.js +1 -28
  9. package/lib/context/file.js +38 -14
  10. package/lib/context/local.js +1 -14
  11. package/lib/context/release.js +82 -52
  12. package/lib/frame.js +3 -3
  13. package/lib/index.js +5 -5
  14. package/lib/label.js +1 -16
  15. package/lib/lemma.js +1 -7
  16. package/lib/metaLemma.js +1 -7
  17. package/lib/metaType.js +1 -10
  18. package/lib/metatheorem.js +1 -7
  19. package/lib/metavariable.js +9 -34
  20. package/lib/premise.js +1 -18
  21. package/lib/proofStep.js +15 -15
  22. package/lib/releaseContext/create.js +8 -9
  23. package/lib/releaseContext/initialise.js +67 -0
  24. package/lib/rule.js +5 -49
  25. package/lib/ruleNames.js +1 -9
  26. package/lib/substitution/statementForMetavariable.js +8 -16
  27. package/lib/substitution/termForVariable.js +6 -6
  28. package/lib/substitution.js +7 -7
  29. package/lib/substitutions.js +7 -33
  30. package/lib/supposition.js +1 -18
  31. package/lib/theorem.js +1 -7
  32. package/lib/topLevelAssertion.js +5 -50
  33. package/lib/type.js +2 -38
  34. package/lib/unifier/equality.js +7 -7
  35. package/lib/unifier/intrinsicLevel.js +4 -4
  36. package/lib/unifier/metaLevel.js +10 -10
  37. package/lib/unifier/statementWithCombinator.js +147 -0
  38. package/lib/unifier/{termAgainstConstructor.js → termWithConstructor.js} +17 -17
  39. package/lib/unify/conclusionWithStatement.js +34 -0
  40. package/lib/unify/consequentWithStatement.js +34 -0
  41. package/lib/unify/metavariableWithStatement.js +74 -0
  42. package/lib/unify/premiseWithProofStep.js +41 -0
  43. package/lib/unify/premisesWithProofSteps.js +31 -0
  44. package/lib/unify/statementAtainstStatement.js +6 -6
  45. package/lib/unify/statementWithMetaType.js +48 -0
  46. package/lib/unify/suppositionWithProffStep.js +41 -0
  47. package/lib/unify/suppositionsWithProofSteps.js +31 -0
  48. package/lib/unify/termWithTerm.js +21 -0
  49. package/lib/unify/termWithType.js +32 -0
  50. package/lib/unify/variableWithTerm.js +54 -0
  51. package/lib/utilities/node.js +3 -42
  52. package/lib/utilities/tokens.js +1 -15
  53. package/lib/variable.js +1 -26
  54. package/lib/verify/error.js +2 -2
  55. package/lib/verify/judgement.js +3 -3
  56. package/lib/verify/metavariable.js +4 -4
  57. package/lib/verify/statement/qualified.js +51 -51
  58. package/lib/verify/statement.js +18 -18
  59. package/lib/verify/statementAsCombinator.js +2 -2
  60. package/lib/verify/term.js +25 -25
  61. package/package.json +1 -1
  62. package/src/axiom.js +0 -2
  63. package/src/combinator.js +0 -26
  64. package/src/conclusion.js +0 -24
  65. package/src/conjecture.js +0 -2
  66. package/src/consequent.js +0 -24
  67. package/src/constructor.js +0 -43
  68. package/src/context/file.js +42 -17
  69. package/src/context/local.js +0 -22
  70. package/src/context/release.js +84 -45
  71. package/src/frame.js +2 -2
  72. package/src/index.js +1 -1
  73. package/src/label.js +0 -18
  74. package/src/lemma.js +0 -2
  75. package/src/metaLemma.js +0 -2
  76. package/src/metaType.js +0 -9
  77. package/src/metatheorem.js +0 -2
  78. package/src/metavariable.js +6 -44
  79. package/src/premise.js +0 -22
  80. package/src/proofStep.js +14 -14
  81. package/src/releaseContext/create.js +8 -16
  82. package/src/releaseContext/{verify.js → initialise.js} +32 -23
  83. package/src/rule.js +4 -69
  84. package/src/ruleNames.js +0 -2
  85. package/src/substitution/statementForMetavariable.js +7 -21
  86. package/src/substitution/termForVariable.js +4 -4
  87. package/src/substitution.js +5 -5
  88. package/src/substitutions.js +5 -32
  89. package/src/supposition.js +0 -22
  90. package/src/theorem.js +0 -2
  91. package/src/topLevelAssertion.js +4 -72
  92. package/src/type.js +0 -44
  93. package/src/unifier/equality.js +6 -6
  94. package/src/unifier/intrinsicLevel.js +3 -3
  95. package/src/unifier/metaLevel.js +9 -9
  96. package/src/unifier/{statementAgainstCombinator.js → statementWithCombinator.js} +12 -12
  97. package/src/unifier/{termAgainstConstructor.js → termWithConstructor.js} +9 -9
  98. package/src/unify/{conclusionAgainstStatement.js → conclusionWithStatement.js} +3 -3
  99. package/src/unify/{consequentAgainstStatement.js → consequentWithStatement.js} +3 -3
  100. package/src/unify/{metavariableAgainstStatement.js → metavariableWithStatement.js} +12 -12
  101. package/src/unify/{premiseAgainstProofStep.js → premiseWithProofStep.js} +5 -5
  102. package/src/unify/{premisesAgainstProofSteps.js → premisesWithProofSteps.js} +3 -3
  103. package/src/unify/statementAtainstStatement.js +4 -4
  104. package/src/unify/{statementAgainstMetaType.js → statementWithMetaType.js} +5 -5
  105. package/src/unify/{suppositionAgainstProofStep.js → suppositionWithProffStep.js} +5 -5
  106. package/src/unify/{suppositionsAgainstProofSteps.js → suppositionsWithProofSteps.js} +3 -3
  107. package/src/unify/{termAgainstTerm.js → termWithTerm.js} +4 -4
  108. package/src/unify/{termAgainstType.js → termWithType.js} +4 -4
  109. package/src/unify/{variableAgainstTerm.js → variableWithTerm.js} +5 -5
  110. package/src/utilities/node.js +2 -48
  111. package/src/utilities/tokens.js +0 -15
  112. package/src/variable.js +0 -36
  113. package/src/verify/error.js +1 -1
  114. package/src/verify/judgement.js +3 -3
  115. package/src/verify/metavariable.js +3 -3
  116. package/src/verify/statement/qualified.js +50 -50
  117. package/src/verify/statement.js +17 -17
  118. package/src/verify/statementAsCombinator.js +1 -1
  119. package/src/verify/term.js +24 -24
  120. package/lib/releaseContext/verify.js +0 -66
  121. package/lib/unifier/statementAgainstCombinator.js +0 -147
  122. package/lib/unify/conclusionAgainstStatement.js +0 -34
  123. package/lib/unify/consequentAgainstStatement.js +0 -34
  124. package/lib/unify/metavariableAgainstStatement.js +0 -74
  125. package/lib/unify/premiseAgainstProofStep.js +0 -41
  126. package/lib/unify/premisesAgainstProofSteps.js +0 -31
  127. package/lib/unify/statementAgainstMetaType.js +0 -48
  128. package/lib/unify/suppositionAgainstProofStep.js +0 -41
  129. package/lib/unify/suppositionsAgainstProofSteps.js +0 -31
  130. package/lib/unify/termAgainstTerm.js +0 -21
  131. package/lib/unify/termAgainstType.js +0 -32
  132. package/lib/unify/variableAgainstTerm.js +0 -54
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "default", {
11
11
  var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
12
12
  var _term = /*#__PURE__*/ _interop_require_default(require("../term"));
13
13
  var _bracketed = /*#__PURE__*/ _interop_require_default(require("../constructor/bracketed"));
14
- var _termAgainstConstructor = /*#__PURE__*/ _interop_require_default(require("../unifier/termAgainstConstructor"));
14
+ var _termWithConstructor = /*#__PURE__*/ _interop_require_default(require("../unifier/termWithConstructor"));
15
15
  var _query = require("../utilities/query");
16
16
  function _interop_require_default(obj) {
17
17
  return obj && obj.__esModule ? obj : {
@@ -25,8 +25,8 @@ function verifyTerm(termNode, terms, localContext, verifyAhead) {
25
25
  localContext.trace("Verifying the '".concat(termString, "' term..."), termNode);
26
26
  var verifyTermFunctions = [
27
27
  verifyTermAsVariable,
28
- unifyTermAgainstConstructors,
29
- unifyTermAgainstBracketedConstructor
28
+ unifyTermWithConstructors,
29
+ unifyTermWithBracketedConstructor
30
30
  ];
31
31
  termVerified = verifyTermFunctions.some(function(verifyTermFunction) {
32
32
  var termVerified = verifyTermFunction(termNode, terms, localContext, verifyAhead);
@@ -64,25 +64,25 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
64
64
  }
65
65
  return termVerifiedAsVariable;
66
66
  }
67
- function unifyTermAgainstConstructors(termNode, terms, localContext, verifyAhead) {
68
- var termUnifiedAgainstConstructors = false;
67
+ function unifyTermWithConstructors(termNode, terms, localContext, verifyAhead) {
68
+ var termUnifiedWithConstructors = false;
69
69
  var variableNode = variableNodeQuery(termNode);
70
70
  if (variableNode === null) {
71
71
  var constructors = localContext.getConstructors();
72
- termUnifiedAgainstConstructors = constructors.some(function(constructor) {
73
- var termUnifiedAgainstConstructor = unifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead);
74
- if (termUnifiedAgainstConstructor) {
72
+ termUnifiedWithConstructors = constructors.some(function(constructor) {
73
+ var termUnifiedWithConstructor = unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead);
74
+ if (termUnifiedWithConstructor) {
75
75
  return true;
76
76
  }
77
77
  });
78
78
  }
79
- return termUnifiedAgainstConstructors;
79
+ return termUnifiedWithConstructors;
80
80
  }
81
- function unifyTermAgainstBracketedConstructor(termNode, terms, localContext, verifyAhead) {
82
- var termUnifiedAgainstBracketedConstructor;
81
+ function unifyTermWithBracketedConstructor(termNode, terms, localContext, verifyAhead) {
82
+ var termUnifiedWithBracketedConstructor;
83
83
  var termString = localContext.nodeAsString(termNode), bracketedTerms = [];
84
- localContext.trace("Unifying the '".concat(termString, "' term against the bracketed constructor..."), termNode);
85
- termUnifiedAgainstBracketedConstructor = unifyTermAgainstConstructor(termNode, bracketedTerms, _bracketed.default, localContext, function() {
84
+ localContext.trace("Unifying the '".concat(termString, "' term with the bracketed constructor..."), termNode);
85
+ termUnifiedWithBracketedConstructor = unifyTermWithConstructor(termNode, bracketedTerms, _bracketed.default, localContext, function() {
86
86
  var verifiedAhead;
87
87
  var bracketedTermNode = termNode; ///
88
88
  termNode = termNodeQuery(bracketedTermNode); ///
@@ -90,28 +90,28 @@ function unifyTermAgainstBracketedConstructor(termNode, terms, localContext, ver
90
90
  verifiedAhead = termVVerified; ///
91
91
  return verifiedAhead;
92
92
  });
93
- if (termUnifiedAgainstBracketedConstructor) {
94
- localContext.debug("...unified the '".concat(termString, "' term against the bracketed constructor."), termNode);
93
+ if (termUnifiedWithBracketedConstructor) {
94
+ localContext.debug("...unified the '".concat(termString, "' term with the bracketed constructor."), termNode);
95
95
  }
96
- return termUnifiedAgainstBracketedConstructor;
96
+ return termUnifiedWithBracketedConstructor;
97
97
  }
98
- function unifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead) {
99
- var termUnifiedAgainstConstructor = false;
98
+ function unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead) {
99
+ var termUnifiedWithConstructor = false;
100
100
  var termString = localContext.nodeAsString(termNode), constructorString = constructor.getString(), constructorTermNode = constructor.getTermNode();
101
- localContext.trace("Unifying the '".concat(termString, "' term against the '").concat(constructorString, "' constructor..."), termNode);
102
- var termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termAgainstConstructor.default.unify(termNodeA, constructorTermNodeB, localContext);
101
+ localContext.trace("Unifying the '".concat(termString, "' term with the '").concat(constructorString, "' constructor..."), termNode);
102
+ var termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termWithConstructor.default.unify(termNodeA, constructorTermNodeB, localContext);
103
103
  if (unified) {
104
104
  var verifiedAhead;
105
105
  var type = constructor.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
106
106
  terms.push(term);
107
107
  verifiedAhead = verifyAhead();
108
108
  terms.pop();
109
- termUnifiedAgainstConstructor = verifiedAhead; ///
109
+ termUnifiedWithConstructor = verifiedAhead; ///
110
110
  }
111
- if (termUnifiedAgainstConstructor) {
112
- localContext.debug("...unified the '".concat(termString, "' term against the '").concat(constructorString, "' constructor."), termNode);
111
+ if (termUnifiedWithConstructor) {
112
+ localContext.debug("...unified the '".concat(termString, "' term with the '").concat(constructorString, "' constructor."), termNode);
113
113
  }
114
- return termUnifiedAgainstConstructor;
114
+ return termUnifiedWithConstructor;
115
115
  }
116
116
 
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1BZ2FpbnN0Q29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VGVybUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlUZXJtQXNWYXJpYWJsZSxcbiAgICB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzLFxuICAgIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvclxuICBdO1xuXG4gIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodmVyaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkVGVybXMgPSBbXTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgdGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIGJyYWNrZXRlZFRlcm1zLCBicmFja2V0ZWRDb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShicmFja2V0ZWRUZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybVZWZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB0ZXJtVlZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgfSk7XG5cbiAgaWYgKHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQpO1xuXG4gIGlmICh1bmlmaWVkKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgdGVybXMucG9wKCk7XG5cbiAgICB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgfVxuXG4gIGlmICh0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYWdhaW5zdCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG59XG5cbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ2ZXJpZnlUZXJtIiwidGVybU5vZGUiLCJ0ZXJtcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidW5pZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsInVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInNvbWUiLCJ2ZXJpZnlUZXJtRnVuY3Rpb24iLCJkZWJ1ZyIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsInZlcmlmaWVkQWhlYWQiLCJ0eXBlIiwiZ2V0VHlwZSIsInRlcm0iLCJUZXJtIiwiZnJvbVRlcm1Ob2RlQW5kVHlwZSIsInB1c2giLCJwb3AiLCJ0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yIiwidW5pZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRUZXJtcyIsImJyYWNrZXRlZENvbnN0cnVjdG9yIiwiYnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtVlZlcmlmaWVkIiwiY29uc3RydWN0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0Q0E7OztlQUFBOzs7MkRBMUNpQjsyREFDQTtnRUFDZ0I7NkVBQ1M7cUJBRWhCOzs7Ozs7QUFFMUIsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLHdCQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXBDLFNBQVNFLFdBQVdDLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxZQUFZLEVBQUVDLFdBQVc7SUFDNUQsSUFBSUM7SUFFSixJQUFNQyxhQUFhSCxhQUFhSSxZQUFZLENBQUNOO0lBRTdDRSxhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBNEIsT0FBWEYsWUFBVyxjQUFZTDtJQUU1RCxJQUFNUSxzQkFBc0I7UUFDMUJDO1FBQ0FDO1FBQ0FDO0tBQ0Q7SUFFRFAsZUFBZUksb0JBQW9CSSxJQUFJLENBQUMsU0FBQ0M7UUFDdkMsSUFBTVQsZUFBZVMsbUJB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
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1XaXRoQ29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VGVybUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlUZXJtQXNWYXJpYWJsZSxcbiAgICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzLFxuICAgIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvclxuICBdO1xuXG4gIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodmVyaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkVGVybXMgPSBbXTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgdGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIGJyYWNrZXRlZFRlcm1zLCBicmFja2V0ZWRDb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShicmFja2V0ZWRUZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybVZWZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB0ZXJtVlZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgfSk7XG5cbiAgaWYgKHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQpO1xuXG4gIGlmICh1bmlmaWVkKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgdGVybXMucG9wKCk7XG5cbiAgICB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvciA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgfVxuXG4gIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3I7XG59XG5cbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ2ZXJpZnlUZXJtIiwidGVybU5vZGUiLCJ0ZXJtcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyIsInVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInNvbWUiLCJ2ZXJpZnlUZXJtRnVuY3Rpb24iLCJkZWJ1ZyIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsInZlcmlmaWVkQWhlYWQiLCJ0eXBlIiwiZ2V0VHlwZSIsInRlcm0iLCJUZXJtIiwiZnJvbVRlcm1Ob2RlQW5kVHlwZSIsInB1c2giLCJwb3AiLCJ0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRUZXJtcyIsImJyYWNrZXRlZENvbnN0cnVjdG9yIiwiYnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtVlZlcmlmaWVkIiwiY29uc3RydWN0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0Q0E7OztlQUFBOzs7MkRBMUNpQjsyREFDQTtnRUFDZ0I7MEVBQ007cUJBRWI7Ozs7OztBQUUxQixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsU0FBU0UsV0FBV0MsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUM1RCxJQUFJQztJQUVKLElBQU1DLGFBQWFILGFBQWFJLFlBQVksQ0FBQ047SUFFN0NFLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLGNBQVlMO0lBRTVELElBQU1RLHNCQUFzQjtRQUMxQkM7UUFDQUM7UUFDQUM7S0FDRDtJQUVEUCxlQUFlSSxvQkFBb0JJLElBQUksQ0FBQyxTQUFDQztRQUN2QyxJQUFNVCxlQUFlUyxtQkFBbUJiLFVBQVVDLE9BQU9DLGNBQWNDO1FBRXZFLElBQUlDLGNBQWM7WUFDaEIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSxjQUFjO1FBQ2hCRixhQUFhWSxLQUFLLENBQUMsQUFB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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.958",
4
+ "version": "0.0.960",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
package/src/axiom.js CHANGED
@@ -3,7 +3,5 @@
3
3
  import TopLevelAssertion from "./topLevelAssertion";
4
4
 
5
5
  export default class Axiom extends TopLevelAssertion {
6
- static fromJSONAndFileContext(json, fileContext) { return TopLevelAssertion.fromJSONAndFileContext(Axiom, json, fileContext); }
7
-
8
6
  static fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions, fileContext) { return TopLevelAssertion.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(Axiom, labels, suppositions, consequent, substitutions, fileContext); }
9
7
  }
package/src/combinator.js CHANGED
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import { nodeAsString } from "./utilities/string";
4
- import { statementNodeFromUnqualifiedStatementTokens } from "./utilities/node";
5
- import { unqualifiedStatementTokensFromStatementString } from "./utilities/tokens";
6
4
 
7
5
  export default class Combinator {
8
6
  constructor(statementNode, string) {
@@ -18,36 +16,12 @@ export default class Combinator {
18
16
  return this.string;
19
17
  }
20
18
 
21
- toJSON(tokens) {
22
- const statementString = nodeAsString(this.statementNode, tokens),
23
- statement = statementString, ///
24
- json = {
25
- statement
26
- };
27
-
28
- return json;
29
- }
30
-
31
19
  static fromStatementNodeAndTokens(statementNode, tokens) {
32
20
  const string = stringFromStatementNodeAndTokens(statementNode, tokens),
33
21
  combinator = new Combinator(statementNode, string);
34
22
 
35
23
  return combinator;
36
24
  }
37
-
38
- static fromJSONAndFileContext(json, fileContext) {
39
- const { statement } = json,
40
- statementString = statement, ///
41
- lexer = fileContext.getLexer(),
42
- parser = fileContext.getParser(),
43
- unqualifiedStatementTokens = unqualifiedStatementTokensFromStatementString(statementString, lexer),
44
- statementNode = statementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
45
- tokens = unqualifiedStatementTokens, //
46
- string = stringFromStatementNodeAndTokens(statementNode, tokens),
47
- combinator = new Combinator(statementNode, string);
48
-
49
- return combinator;
50
- }
51
25
  }
52
26
 
53
27
  function stringFromStatementNodeAndTokens(statementNode, tokens) {
package/src/conclusion.js CHANGED
@@ -2,9 +2,6 @@
2
2
 
3
3
  import metaLevelUnifier from "./unifier/metaLevel";
4
4
 
5
- import { nodeAsString } from "./utilities/string";
6
- import { statementNodeFromStatementString } from "./utilities/node";
7
-
8
5
  export default class Conclusion {
9
6
  constructor(statementNode) {
10
7
  this.statementNode = statementNode;
@@ -28,30 +25,9 @@ export default class Conclusion {
28
25
  return statementUnified;
29
26
  }
30
27
 
31
- toJSON(tokens) {
32
- const statementString = nodeAsString(this.statementNode, tokens),
33
- statement = statementString, ///
34
- json = {
35
- statement
36
- };
37
-
38
- return json;
39
- }
40
-
41
28
  static fromStatementNode(statementNode) {
42
29
  const conclusion = new Conclusion(statementNode);
43
30
 
44
31
  return conclusion;
45
32
  }
46
-
47
- static fromJSONAndFileContext(json, fileContext) {
48
- const { statement } = json,
49
- statementString = statement, ///
50
- lexer = fileContext.getLexer(),
51
- parser = fileContext.getParser(),
52
- statementNode = statementNodeFromStatementString(statementString, lexer, parser),
53
- conclusion = new Conclusion(statementNode);
54
-
55
- return conclusion;
56
- }
57
33
  }
package/src/conjecture.js CHANGED
@@ -3,7 +3,5 @@
3
3
  import TopLevelAssertion from "./topLevelAssertion";
4
4
 
5
5
  export default class Conjecture extends TopLevelAssertion {
6
- static fromJSONAndFileContext(json, fileContext) { return TopLevelAssertion.fromJSONAndFileContext(Conjecture, json, fileContext); }
7
-
8
6
  static fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions, fileContext) { return TopLevelAssertion.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(Conjecture, labels, suppositions, consequent, substitutions, fileContext); }
9
7
  }
package/src/consequent.js CHANGED
@@ -2,9 +2,6 @@
2
2
 
3
3
  import metaLevelUnifier from "./unifier/metaLevel";
4
4
 
5
- import { nodeAsString } from "./utilities/string";
6
- import { statementNodeFromStatementString } from "./utilities/node";
7
-
8
5
  export default class Consequent {
9
6
  constructor(statementNode) {
10
7
  this.statementNode = statementNode;
@@ -28,30 +25,9 @@ export default class Consequent {
28
25
  return statementUnified;
29
26
  }
30
27
 
31
- toJSON(tokens) {
32
- const statementString = nodeAsString(this.statementNode, tokens),
33
- statement = statementString, ///
34
- json = {
35
- statement
36
- };
37
-
38
- return json;
39
- }
40
-
41
28
  static fromStatementNode(statementNode) {
42
29
  const consequent = new Consequent(statementNode);
43
30
 
44
31
  return consequent;
45
32
  }
46
-
47
- static fromJSONAndFileContext(json, fileContext) {
48
- const { statement } = json,
49
- statementString = statement, ///
50
- lexer = fileContext.getLexer(),
51
- parser = fileContext.getParser(),
52
- statementNode = statementNodeFromStatementString(statementString, lexer, parser),
53
- consequent = new Consequent(statementNode);
54
-
55
- return consequent;
56
- }
57
33
  }
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import { nodeAsString } from "./utilities/string";
4
- import { typeFromJSONAndFileContext } from "./type";
5
- import { termNodeFromConstructorDeclarationTokens } from "./utilities/node";
6
- import { constructorDeclarationTokensFromTermString } from "./utilities/tokens";
7
4
 
8
5
  export default class Constructor {
9
6
  constructor(termNode, string, type) {
@@ -24,52 +21,12 @@ export default class Constructor {
24
21
  return this.type;
25
22
  }
26
23
 
27
- toJSON(tokens) {
28
- const termString = nodeAsString(this.termNode, tokens),
29
- typeJSON = (this.type === null) ?
30
- null :
31
- this.type.toJSON(tokens),
32
- term = termString, ///
33
- type = typeJSON, ///
34
- json = {
35
- term,
36
- type
37
- };
38
-
39
- return json;
40
- }
41
-
42
24
  static fromTermNodeTypeAndTokens(termNode, type, tokens) {
43
25
  const string = stringFromTermNodeTypeAndTokens(termNode, type, tokens),
44
26
  constructor = new Constructor(termNode, string, type);
45
27
 
46
28
  return constructor;
47
29
  }
48
-
49
- static fromJSONAndFileContext(json, fileContext) {
50
- const { term } = json,
51
- termString = term, ///
52
- lexer = fileContext.getLexer(),
53
- parser = fileContext.getParser(),
54
- constructorDeclarationTokens = constructorDeclarationTokensFromTermString(termString, lexer),
55
- termNode = termNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser);
56
-
57
- let { type } = json;
58
-
59
- if (type !== null) {
60
- const typeJSON = type; ///
61
-
62
- json = typeJSON; ///
63
-
64
- type = typeFromJSONAndFileContext(json, fileContext);
65
- }
66
-
67
- const tokens = constructorDeclarationTokens, ///
68
- string = stringFromTermNodeTypeAndTokens(termNode, type, tokens),
69
- constructor = new Constructor(termNode, string, type);
70
-
71
- return constructor;
72
- }
73
30
  }
74
31
 
75
32
  function stringFromTermNodeTypeAndTokens(termNode, type, tokens) {
@@ -620,6 +620,45 @@ export default class FileContext {
620
620
 
621
621
  fatal(message, node) { this.releaseContext.fatal(message, node, this.tokens, this.filePath); }
622
622
 
623
+ reset() {
624
+ this.types = [];
625
+ this.rules = [];
626
+ this.axioms = [];
627
+ this.lemmas = [];
628
+ this.theorems = [];
629
+ this.variables = [];
630
+ this.metaLemmas = [];
631
+ this.conjectures = [];
632
+ this.combinators = [];
633
+ this.constructors = [];
634
+ this.metatheorems = [];
635
+ this.metavariables = [];
636
+ }
637
+
638
+ verify() {
639
+ let verified = false;
640
+
641
+ if (this.tokens === null) {
642
+ const lexer = this.getLexer(),
643
+ parser = this.getParser(),
644
+ content = this.fileContent; ///
645
+
646
+ this.tokens = lexer.tokenise(content);
647
+
648
+ this.node = parser.parse(this.tokens);
649
+ }
650
+
651
+ if (this.node !== null) {
652
+ this.reset();
653
+
654
+ const fileContext = this; ///
655
+
656
+ verified = topLevelVerifier.verify(this.node, fileContext);
657
+ }
658
+
659
+ return verified;
660
+ }
661
+
623
662
  toJSON() {
624
663
  const filePath = this.filePath,
625
664
  fileContent = this.fileContent,
@@ -631,23 +670,9 @@ export default class FileContext {
631
670
  return json;
632
671
  }
633
672
 
634
- verify() {
635
- const lexer = this.getLexer(),
636
- parser = this.getParser(),
637
- content = this.fileContent, ///
638
- fileContext = this;
639
-
640
- this.tokens = lexer.tokenise(content);
641
-
642
- this.node = parser.parse(this.tokens);
643
-
644
- const verified = topLevelVerifier.verify(this.node, fileContext);
645
-
646
- return verified;
647
- }
648
-
649
- static fromJSONAndReleaseContext(json, releaseContext) {
650
- const { fileContent, filePath } = json,
673
+ static fromFileAndReleaseContext(file, releaseContext) {
674
+ const fileContent = file.getContent(),
675
+ filePath = file.getPath(),
651
676
  tokens = null,
652
677
  node = null,
653
678
  types = [],
@@ -451,28 +451,6 @@ class LocalContext {
451
451
 
452
452
  return localContext;
453
453
  }
454
-
455
- static fromJSONAndFileContext(json, fileContext) {
456
- let { variables } = json;
457
-
458
- const variablesJSON = variables;
459
-
460
- variables = variablesJSON.map((variableJSON) => {
461
- const json = variableJSON, ///
462
- variable = Variable.fromJSONAndFileContext(json, fileContext);
463
-
464
- return variable;
465
- });
466
-
467
- const context = fileContext, ///
468
- proofSteps = [],
469
- equivalences = [],
470
- judgements = [],
471
- metavariables = [],
472
- localContext = new LocalContext(context, variables, proofSteps, judgements, equivalences, metavariables); ///
473
-
474
- return localContext;
475
- }
476
454
  }
477
455
 
478
456
  export default LocalContext;