occam-verify-cli 0.0.501 → 0.0.503

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 (43) hide show
  1. package/lib/axiom.js +4 -4
  2. package/lib/axiomLemmaTheorem.js +58 -58
  3. package/lib/consequence.js +157 -0
  4. package/lib/lemma.js +4 -4
  5. package/lib/metaSupposition.js +214 -0
  6. package/lib/supposition.js +214 -0
  7. package/lib/theorem.js +4 -4
  8. package/lib/verify/axiom.js +11 -11
  9. package/lib/verify/consequence.js +35 -0
  10. package/lib/verify/derivation.js +7 -7
  11. package/lib/verify/lemma.js +12 -12
  12. package/lib/verify/metaDerivation.js +7 -7
  13. package/lib/verify/metaSupposition.js +41 -0
  14. package/lib/verify/supposition.js +41 -0
  15. package/lib/verify/theorem.js +12 -12
  16. package/package.json +3 -3
  17. package/src/axiom.js +1 -1
  18. package/src/axiomLemmaTheorem.js +57 -57
  19. package/src/consequence.js +187 -0
  20. package/src/lemma.js +1 -1
  21. package/src/metaSupposition.js +235 -0
  22. package/src/supposition.js +235 -0
  23. package/src/theorem.js +1 -1
  24. package/src/verify/axiom.js +17 -17
  25. package/src/verify/consequence.js +34 -0
  26. package/src/verify/derivation.js +8 -8
  27. package/src/verify/lemma.js +18 -18
  28. package/src/verify/metaDerivation.js +8 -8
  29. package/src/verify/metaSupposition.js +44 -0
  30. package/src/verify/supposition.js +44 -0
  31. package/src/verify/theorem.js +18 -18
  32. package/lib/antecedent.js +0 -214
  33. package/lib/consequent.js +0 -157
  34. package/lib/metaAntecedent.js +0 -214
  35. package/lib/verify/antecedent.js +0 -41
  36. package/lib/verify/consequent.js +0 -35
  37. package/lib/verify/metaAntecedent.js +0 -41
  38. package/src/antecedent.js +0 -235
  39. package/src/consequent.js +0 -187
  40. package/src/metaAntecedent.js +0 -235
  41. package/src/verify/antecedent.js +0 -44
  42. package/src/verify/consequent.js +0 -34
  43. package/src/verify/metaAntecedent.js +0 -44
package/lib/axiom.js CHANGED
@@ -128,9 +128,9 @@ var Axiom = /*#__PURE__*/ function(AxiomLemmaTheorem) {
128
128
  }
129
129
  },
130
130
  {
131
- key: "fromLabelsAntecedentsAndConsequent",
132
- value: function fromLabelsAntecedentsAndConsequent(labels, antecedents, consequent) {
133
- return _axiomLemmaTheorem.default.fromLabelsAntecedentsAndConsequent(Axiom, labels, antecedents, consequent);
131
+ key: "fromLabelsSuppositionsAndConsequence",
132
+ value: function fromLabelsSuppositionsAndConsequence(labels, suppositions, consequence) {
133
+ return _axiomLemmaTheorem.default.fromLabelsSuppositionsAndConsequence(Axiom, labels, suppositions, consequence);
134
134
  }
135
135
  }
136
136
  ]);
@@ -138,4 +138,4 @@ var Axiom = /*#__PURE__*/ function(AxiomLemmaTheorem) {
138
138
  }(_axiomLemmaTheorem.default);
139
139
  _defineProperty(Axiom, "kind", _kinds.AXIOM_KIND);
140
140
 
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGlvbS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEF4aW9tTGVtbWFUaGVvcmVtIGZyb20gXCIuL2F4aW9tTGVtbWFUaGVvcmVtXCI7XG5cbmltcG9ydCB7IEFYSU9NX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBeGlvbSBleHRlbmRzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgc3RhdGljIGtpbmQgPSBBWElPTV9LSU5EO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCkgeyByZXR1cm4gQXhpb21MZW1tYVRoZW9yZW0uZnJvbUpTT04oQXhpb20sIGpzb24sIHJlbGVhc2VDb250ZXh0KTsgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50KGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpIHsgcmV0dXJuIEF4aW9tTGVtbWFUaGVvcmVtLmZyb21MYWJlbHNBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQoQXhpb20sIGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpOyB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkF4aW9tIiwiZnJvbUpTT04iLCJqc29uIiwicmVsZWFzZUNvbnRleHQiLCJBeGlvbUxlbW1hVGhlb3JlbSIsImZyb21MYWJlbHNBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQiLCJsYWJlbHMiLCJhbnRlY2VkZW50cyIsImNvbnNlcXVlbnQiLCJraW5kIiwiQVhJT01fS0lORCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7c0VBSlM7cUJBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVosSUFBQSxBQUFNQSxzQkFBTjtjQUFNQTs4QkFBQUE7YUFBQUE7OEJBQUFBOzs7aUJBQUFBOztZQUdaQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTQyxJQUFJLEVBQUVDLGNBQWMsRUFBRTtnQkFBRSxPQUFPQywwQkFBaUIsQ0FBQ0gsUUFBUSxDQUh0REQsT0FHOERFLE1BQU1DO1lBQWlCOzs7WUFFakdFLEtBQUFBO21CQUFQLFNBQU9BLG1DQUFtQ0MsTUFBTSxFQUFFQyxXQUFXLEVBQUVDLFVBQVUsRUFBRTtnQkFBRSxPQUFPSiwwQkFBaUIsQ0FBQ0Msa0NBQWtDLENBTHJITCxPQUs2SE0sUUFBUUMsYUFBYUM7WUFBYTs7O1dBTC9KUjtFQUFjSSwwQkFBaUI7QUFDbEQsZ0JBRG1CSixPQUNaUyxRQUFPQyxpQkFBVSJ9
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGlvbS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEF4aW9tTGVtbWFUaGVvcmVtIGZyb20gXCIuL2F4aW9tTGVtbWFUaGVvcmVtXCI7XG5cbmltcG9ydCB7IEFYSU9NX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBeGlvbSBleHRlbmRzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgc3RhdGljIGtpbmQgPSBBWElPTV9LSU5EO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCkgeyByZXR1cm4gQXhpb21MZW1tYVRoZW9yZW0uZnJvbUpTT04oQXhpb20sIGpzb24sIHJlbGVhc2VDb250ZXh0KTsgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kQ29uc2VxdWVuY2UobGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbmNlKSB7IHJldHVybiBBeGlvbUxlbW1hVGhlb3JlbS5mcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kQ29uc2VxdWVuY2UoQXhpb20sIGxhYmVscywgc3VwcG9zaXRpb25zLCBjb25zZXF1ZW5jZSk7IH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiQXhpb20iLCJmcm9tSlNPTiIsImpzb24iLCJyZWxlYXNlQ29udGV4dCIsIkF4aW9tTGVtbWFUaGVvcmVtIiwiZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZENvbnNlcXVlbmNlIiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiY29uc2VxdWVuY2UiLCJraW5kIiwiQVhJT01fS0lORCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7c0VBSlM7cUJBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVosSUFBQSxBQUFNQSxzQkFBTjtjQUFNQTs4QkFBQUE7YUFBQUE7OEJBQUFBOzs7aUJBQUFBOztZQUdaQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTQyxJQUFJLEVBQUVDLGNBQWMsRUFBRTtnQkFBRSxPQUFPQywwQkFBaUIsQ0FBQ0gsUUFBUSxDQUh0REQsT0FHOERFLE1BQU1DO1lBQWlCOzs7WUFFakdFLEtBQUFBO21CQUFQLFNBQU9BLHFDQUFxQ0MsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFdBQVcsRUFBRTtnQkFBRSxPQUFPSiwwQkFBaUIsQ0FBQ0Msb0NBQW9DLENBTDNITCxPQUttSU0sUUFBUUMsY0FBY0M7WUFBYzs7O1dBTHZLUjtFQUFjSSwwQkFBaUI7QUFDbEQsZ0JBRG1CSixPQUNaUyxRQUFPQyxpQkFBVSJ9
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _label = /*#__PURE__*/ _interopRequireDefault(require("./label"));
12
- var _antecedent = /*#__PURE__*/ _interopRequireDefault(require("./antecedent"));
13
- var _consequent = /*#__PURE__*/ _interopRequireDefault(require("./consequent"));
12
+ var _consequence = /*#__PURE__*/ _interopRequireDefault(require("./consequence"));
13
+ var _supposition = /*#__PURE__*/ _interopRequireDefault(require("./supposition"));
14
14
  var _array = require("./utilities/array");
15
15
  function _classCallCheck(instance, Constructor) {
16
16
  if (!(instance instanceof Constructor)) {
@@ -37,11 +37,11 @@ function _interopRequireDefault(obj) {
37
37
  };
38
38
  }
39
39
  var AxiomLemmaTheorem = /*#__PURE__*/ function() {
40
- function AxiomLemmaTheorem(labels, antecedents, consequent) {
40
+ function AxiomLemmaTheorem(labels, suppositions, consequence) {
41
41
  _classCallCheck(this, AxiomLemmaTheorem);
42
42
  this.labels = labels;
43
- this.antecedents = antecedents;
44
- this.consequent = consequent;
43
+ this.suppositions = suppositions;
44
+ this.consequence = consequence;
45
45
  }
46
46
  _createClass(AxiomLemmaTheorem, [
47
47
  {
@@ -51,15 +51,15 @@ var AxiomLemmaTheorem = /*#__PURE__*/ function() {
51
51
  }
52
52
  },
53
53
  {
54
- key: "getAntecedents",
55
- value: function getAntecedents() {
56
- return this.antecedents;
54
+ key: "getSuppositions",
55
+ value: function getSuppositions() {
56
+ return this.suppositions;
57
57
  }
58
58
  },
59
59
  {
60
- key: "getConsequent",
61
- value: function getConsequent() {
62
- return this.consequent;
60
+ key: "getConsequence",
61
+ value: function getConsequence() {
62
+ return this.consequence;
63
63
  }
64
64
  },
65
65
  {
@@ -79,15 +79,15 @@ var AxiomLemmaTheorem = /*#__PURE__*/ function() {
79
79
  value: function matchStatement(statementNode, proofContext) {
80
80
  var _this = this;
81
81
  var statementNatches;
82
- var antecedentsLength = this.antecedents.length;
83
- if (antecedentsLength === 0) {
84
- var substitutions = [], consequentMatches = matchConsequent(this.consequent, statementNode, substitutions);
85
- statementNatches = consequentMatches; ///
82
+ var suppositionsLength = this.suppositions.length;
83
+ if (suppositionsLength === 0) {
84
+ var substitutions = [], consequenceMatches = matchConsequence(this.consequence, statementNode, substitutions);
85
+ statementNatches = consequenceMatches; ///
86
86
  } else {
87
87
  var proofSteps = proofContext.getProofSteps();
88
- statementNatches = (0, _array.someSubArray)(proofSteps, antecedentsLength, function(proofSteps) {
89
- var antecedentsMatchConsequent = matchAntecedentsAndConsequent(_this.antecedents, _this.consequent, proofSteps, statementNode);
90
- if (antecedentsMatchConsequent) {
88
+ statementNatches = (0, _array.someSubArray)(proofSteps, suppositionsLength, function(proofSteps) {
89
+ var suppositionsMatchConsequence = matchSuppositionsAndConsequence(_this.suppositions, _this.consequence, proofSteps, statementNode);
90
+ if (suppositionsMatchConsequence) {
91
91
  return true;
92
92
  }
93
93
  });
@@ -101,14 +101,14 @@ var AxiomLemmaTheorem = /*#__PURE__*/ function() {
101
101
  var kind = this.constructor.kind, labelsJSON = this.labels.map(function(label) {
102
102
  var labelJSON = label.toJSON();
103
103
  return labelJSON;
104
- }), antecedentsJSON = this.antecedents.map(function(antecedent) {
105
- var antecedentJSON = antecedent.toJSON();
106
- return antecedentJSON;
107
- }), consequentJSON = this.consequent.toJSON(), labels = labelsJSON, antecedents = antecedentsJSON, consequent = consequentJSON, json = {
104
+ }), suppositionsJSON = this.suppositions.map(function(supposition) {
105
+ var suppositionJSON = supposition.toJSON();
106
+ return suppositionJSON;
107
+ }), consequenceJSON = this.consequence.toJSON(), labels = labelsJSON, suppositions = suppositionsJSON, consequence = consequenceJSON, json = {
108
108
  kind: kind,
109
109
  labels: labels,
110
- antecedents: antecedents,
111
- consequent: consequent
110
+ suppositions: suppositions,
111
+ consequence: consequence
112
112
  };
113
113
  return json;
114
114
  }
@@ -123,68 +123,68 @@ var AxiomLemmaTheorem = /*#__PURE__*/ function() {
123
123
  var _$json = labelJSON, label = _label.default.fromJSON(_$json, releaseContext);
124
124
  return label;
125
125
  });
126
- var antecedents = json.antecedents;
127
- var antecedentsJSON = antecedents; ///
128
- antecedents = antecedentsJSON.map(function(antecedentJSON) {
129
- var _$json = antecedentJSON, antecedent = _antecedent.default.fromJSON(_$json, releaseContext);
130
- return antecedent;
126
+ var suppositions = json.suppositions;
127
+ var suppositionsJSON = suppositions; ///
128
+ suppositions = suppositionsJSON.map(function(suppositionJSON) {
129
+ var _$json = suppositionJSON, supposition = _supposition.default.fromJSON(_$json, releaseContext);
130
+ return supposition;
131
131
  });
132
- var consequent = json.consequent;
133
- var consequentJSON = consequent; ///
134
- json = consequentJSON; ///
135
- consequent = _consequent.default.fromJSON(json, releaseContext);
136
- return new Class(labels, antecedents, consequent); ///
132
+ var consequence = json.consequence;
133
+ var consequenceJSON = consequence; ///
134
+ json = consequenceJSON; ///
135
+ consequence = _consequence.default.fromJSON(json, releaseContext);
136
+ return new Class(labels, suppositions, consequence); ///
137
137
  }
138
138
  },
139
139
  {
140
- key: "fromLabelsAntecedentsAndConsequent",
141
- value: function fromLabelsAntecedentsAndConsequent(Class, labels, antecedents, consequent) {
142
- return new Class(labels, antecedents, consequent);
140
+ key: "fromLabelsSuppositionsAndConsequence",
141
+ value: function fromLabelsSuppositionsAndConsequence(Class, labels, suppositions, consequence) {
142
+ return new Class(labels, suppositions, consequence);
143
143
  }
144
144
  }
145
145
  ]);
146
146
  return AxiomLemmaTheorem;
147
147
  }();
148
- function matchAntecedent(antecedent, proofSteps, substitutions) {
148
+ function matchSupposition(supposition, proofSteps, substitutions) {
149
149
  var proofStep = (0, _array.prune)(proofSteps, function(proofStep) {
150
150
  var subproofNode = proofStep.getSubproofNode(), statementNode = proofStep.getStatementNode();
151
151
  if (subproofNode !== null) {
152
- var subProofMatches = antecedent.matchSubproofNode(subproofNode, substitutions);
152
+ var subProofMatches = supposition.matchSubproofNode(subproofNode, substitutions);
153
153
  if (!subProofMatches) {
154
154
  return true;
155
155
  }
156
156
  }
157
157
  if (statementNode !== null) {
158
- var statementMatches = antecedent.matchStatementNode(statementNode, substitutions);
158
+ var statementMatches = supposition.matchStatementNode(statementNode, substitutions);
159
159
  if (!statementMatches) {
160
160
  return true;
161
161
  }
162
162
  }
163
163
  }) || null;
164
- var antecedentMatches = proofStep !== null;
165
- return antecedentMatches;
164
+ var suppositionMatches = proofStep !== null;
165
+ return suppositionMatches;
166
166
  }
167
- function matchAntecedents(antecedent, proofSteps, substitutions) {
168
- var antecedentsMatches = antecedent.every(function(antecedent) {
169
- var antecedentMatches = matchAntecedent(antecedent, proofSteps, substitutions);
170
- if (antecedentMatches) {
167
+ function matchSuppositions(supposition, proofSteps, substitutions) {
168
+ var suppositionsMatches = supposition.every(function(supposition) {
169
+ var suppositionMatches = matchSupposition(supposition, proofSteps, substitutions);
170
+ if (suppositionMatches) {
171
171
  return true;
172
172
  }
173
173
  });
174
- return antecedentsMatches;
174
+ return suppositionsMatches;
175
175
  }
176
- function matchConsequent(consequent, statementNode, substitutions) {
177
- var nonTerminalNodeMatches = consequent.matchStatementNode(statementNode, substitutions), consequentMatches = nonTerminalNodeMatches; ///
178
- return consequentMatches;
176
+ function matchConsequence(consequence, statementNode, substitutions) {
177
+ var nonTerminalNodeMatches = consequence.matchStatementNode(statementNode, substitutions), consequenceMatches = nonTerminalNodeMatches; ///
178
+ return consequenceMatches;
179
179
  }
180
- function matchAntecedentsAndConsequent(antecedents, consequent, proofSteps, statementNode) {
181
- var antecedentsMatchConsequent = false;
182
- var substitutions = [], antecedentsMatches = matchAntecedents(antecedents, proofSteps, substitutions);
183
- if (antecedentsMatches) {
184
- var consequentMatches = matchConsequent(consequent, statementNode, substitutions);
185
- antecedentsMatchConsequent = consequentMatches; ///
180
+ function matchSuppositionsAndConsequence(suppositions, consequence, proofSteps, statementNode) {
181
+ var suppositionsMatchConsequence = false;
182
+ var substitutions = [], suppositionsMatches = matchSuppositions(suppositions, proofSteps, substitutions);
183
+ if (suppositionsMatches) {
184
+ var consequenceMatches = matchConsequence(consequence, statementNode, substitutions);
185
+ suppositionsMatchConsequence = consequenceMatches; ///
186
186
  }
187
- return antecedentsMatchConsequent;
187
+ return suppositionsMatchConsequence;
188
188
  }
189
189
 
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGlvbUxlbW1hVGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IExhYmVsIGZyb20gXCIuL2xhYmVsXCI7XG5pbXBvcnQgQW50ZWNlZGVudCBmcm9tIFwiLi9hbnRlY2VkZW50XCI7XG5pbXBvcnQgQ29uc2VxdWVudCBmcm9tIFwiLi9jb25zZXF1ZW50XCI7XG5cbmltcG9ydCB7IHBydW5lIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBzb21lU3ViQXJyYXkgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXhpb21MZW1tYVRoZW9yZW0ge1xuICBjb25zdHJ1Y3RvcihsYWJlbHMsIGFudGVjZWRlbnRzLCBjb25zZXF1ZW50KSB7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5hbnRlY2VkZW50cyA9IGFudGVjZWRlbnRzO1xuICAgIHRoaXMuY29uc2VxdWVudCA9IGNvbnNlcXVlbnQ7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0QW50ZWNlZGVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW50ZWNlZGVudHM7XG4gIH1cblxuICBnZXRDb25zZXF1ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnNlcXVlbnQ7XG4gIH1cblxuICBtYXRjaExhYmVsTmFtZShsYWJlbE5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTGFiZWxOYW1lID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBsYWJlbE5hbWUsIC8vL1xuICAgICAgICAgICAgbGFiZWxNYXRjaGVzTmFtZSA9IGxhYmVsLm1hdGNoTmFtZShuYW1lKTtcblxuICAgICAgaWYgKGxhYmVsTWF0Y2hlc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlc0xhYmVsTmFtZTtcbiAgfVxuXG4gIG1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHByb29mQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnROYXRjaGVzO1xuXG4gICAgY29uc3QgYW50ZWNlZGVudHNMZW5ndGggPSB0aGlzLmFudGVjZWRlbnRzLmxlbmd0aDtcblxuICAgIGlmIChhbnRlY2VkZW50c0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgICAgY29uc2VxdWVudE1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbnQodGhpcy5jb25zZXF1ZW50LCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgc3RhdGVtZW50TmF0Y2hlcyA9IGNvbnNlcXVlbnRNYXRjaGVzOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJvb2ZTdGVwcyA9IHByb29mQ29udGV4dC5nZXRQcm9vZlN0ZXBzKCk7XG5cbiAgICAgIHN0YXRlbWVudE5hdGNoZXMgPSBzb21lU3ViQXJyYXkocHJvb2ZTdGVwcywgYW50ZWNlZGVudHNMZW5ndGgsIChwcm9vZlN0ZXBzKSA9PiB7XG4gICAgICAgIGNvbnN0IGFudGVjZWRlbnRzTWF0Y2hDb25zZXF1ZW50ID0gbWF0Y2hBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQodGhpcy5hbnRlY2VkZW50cywgdGhpcy5jb25zZXF1ZW50LCBwcm9vZlN0ZXBzLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBpZiAoYW50ZWNlZGVudHNNYXRjaENvbnNlcXVlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5hdGNoZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgeyBraW5kIH0gPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIGxhYmVsc0pTT04gPSB0aGlzLmxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgICAgICAgICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBhbnRlY2VkZW50c0pTT04gPSB0aGlzLmFudGVjZWRlbnRzLm1hcCgoYW50ZWNlZGVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW50ZWNlZGVudEpTT04gPSBhbnRlY2VkZW50LnRvSlNPTigpO1xuXG4gICAgICAgICAgICByZXR1cm4gYW50ZWNlZGVudEpTT047XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29uc2VxdWVudEpTT04gPSB0aGlzLmNvbnNlcXVlbnQudG9KU09OKCksXG4gICAgICAgICAgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGFudGVjZWRlbnRzID0gYW50ZWNlZGVudHNKU09OLCAgLy8vXG4gICAgICAgICAgY29uc2VxdWVudCA9IGNvbnNlcXVlbnRKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBhbnRlY2VkZW50cyxcbiAgICAgICAgICAgIGNvbnNlcXVlbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oQ2xhc3MsIGpzb24sIHJlbGVhc2VDb250ZXh0KSB7XG4gICAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gICAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gICAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgcmV0dXJuIGxhYmVsO1xuICAgIH0pO1xuXG4gICAgbGV0IHsgYW50ZWNlZGVudHMgfSA9IGpzb247XG5cbiAgICBjb25zdCBhbnRlY2VkZW50c0pTT04gPSBhbnRlY2VkZW50czsgIC8vL1xuXG4gICAgYW50ZWNlZGVudHMgPSBhbnRlY2VkZW50c0pTT04ubWFwKChhbnRlY2VkZW50SlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGFudGVjZWRlbnRKU09OLCAvLy9cbiAgICAgICAgICAgIGFudGVjZWRlbnQgPSBBbnRlY2VkZW50LmZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgcmV0dXJuIGFudGVjZWRlbnQ7XG4gICAgfSk7XG5cbiAgICBsZXQgeyBjb25zZXF1ZW50IH0gPSBqc29uO1xuXG4gICAgY29uc3QgY29uc2VxdWVudEpTT04gPSBjb25zZXF1ZW50OyAgLy8vXG5cbiAgICBqc29uID0gY29uc2VxdWVudEpTT047ICAvLy9cblxuICAgIGNvbnNlcXVlbnQgPSBDb25zZXF1ZW50LmZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3MobGFiZWxzLCBhbnRlY2VkZW50cywgY29uc2VxdWVudCk7ICAvLy9cbiAgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50KENsYXNzLCBsYWJlbHMsIGFudGVjZWRlbnRzLCBjb25zZXF1ZW50KSB7IHJldHVybiBuZXcgQ2xhc3MobGFiZWxzLCBhbnRlY2VkZW50cywgY29uc2VxdWVudCk7IH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hBbnRlY2VkZW50KGFudGVjZWRlbnQsIHByb29mU3RlcHMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3QgcHJvb2ZTdGVwID0gcHJ1bmUocHJvb2ZTdGVwcywgKHByb29mU3RlcCkgPT4ge1xuICAgIGNvbnN0IHN1YnByb29mTm9kZSA9IHByb29mU3RlcC5nZXRTdWJwcm9vZk5vZGUoKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gcHJvb2ZTdGVwLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIGlmIChzdWJwcm9vZk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YlByb29mTWF0Y2hlcyA9IGFudGVjZWRlbnQubWF0Y2hTdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgaWYgKCFzdWJQcm9vZk1hdGNoZXMpIHsgIC8vL1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50TWF0Y2hlcyA9IGFudGVjZWRlbnQubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoIXN0YXRlbWVudE1hdGNoZXMpIHsgIC8vL1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfSkgfHwgbnVsbDtcblxuICBjb25zdCBhbnRlY2VkZW50TWF0Y2hlcyA9IChwcm9vZlN0ZXAgIT09IG51bGwpO1xuXG4gIHJldHVybiBhbnRlY2VkZW50TWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBbnRlY2VkZW50cyhhbnRlY2VkZW50LCBwcm9vZlN0ZXBzLCBzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IGFudGVjZWRlbnRzTWF0Y2hlcyA9IGFudGVjZWRlbnQuZXZlcnkoKGFudGVjZWRlbnQpID0+IHtcbiAgICBjb25zdCBhbnRlY2VkZW50TWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudChhbnRlY2VkZW50LCBwcm9vZlN0ZXBzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIGlmIChhbnRlY2VkZW50TWF0Y2hlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gYW50ZWNlZGVudHNNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnQoY29uc2VxdWVudCwgc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBub25UZXJtaW5hbE5vZGVNYXRjaGVzID0gY29uc2VxdWVudC5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgIGNvbnNlcXVlbnRNYXRjaGVzID0gbm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG5cbiAgcmV0dXJuIGNvbnNlcXVlbnRNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaEFudGVjZWRlbnRzQW5kQ29uc2VxdWVudChhbnRlY2VkZW50cywgY29uc2VxdWVudCwgcHJvb2ZTdGVwcywgc3RhdGVtZW50Tm9kZSkge1xuICBsZXQgYW50ZWNlZGVudHNNYXRjaENvbnNlcXVlbnQgPSBmYWxzZTtcblxuICBjb25zdCBzdWJzdGl0dXRpb25zID0gW10sXG4gICAgICAgIGFudGVjZWRlbnRzTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudHMoYW50ZWNlZGVudHMsIHByb29mU3RlcHMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gIGlmIChhbnRlY2VkZW50c01hdGNoZXMpIHtcbiAgICBjb25zdCBjb25zZXF1ZW50TWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVudChjb25zZXF1ZW50LCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIGFudGVjZWRlbnRzTWF0Y2hDb25zZXF1ZW50ID0gY29uc2VxdWVudE1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBhbnRlY2VkZW50c01hdGNoQ29uc2VxdWVudDtcbn1cbiJdLCJuYW1lcyI6WyJBeGlvbUxlbW1hVGhlb3JlbSIsImxhYmVscyIsImFudGVjZWRlbnRzIiwiY29uc2VxdWVudCIsImdldExhYmVscyIsImdldEFudGVjZWRlbnRzIiwiZ2V0Q29uc2VxdWVudCIsIm1hdGNoTGFiZWxOYW1lIiwibGFiZWxOYW1lIiwibWF0Y2hlc0xhYmVsTmFtZSIsInNvbWUiLCJsYWJlbCIsIm5hbWUiLCJsYWJlbE1hdGNoZXNOYW1lIiwibWF0Y2hOYW1lIiwibWF0Y2hTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0Iiwic3RhdGVtZW50TmF0Y2hlcyIsImFudGVjZWRlbnRzTGVuZ3RoIiwibGVuZ3RoIiwic3Vic3RpdHV0aW9ucyIsImNvbnNlcXVlbnRNYXRjaGVzIiwibWF0Y2hDb25zZXF1ZW50IiwicHJvb2ZTdGVwcyIsImdldFByb29mU3RlcHMiLCJzb21lU3ViQXJyYXkiLCJhbnRlY2VkZW50c01hdGNoQ29uc2VxdWVudCIsIm1hdGNoQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50IiwidG9KU09OIiwia2luZCIsImNvbnN0cnVjdG9yIiwibGFiZWxzSlNPTiIsIm1hcCIsImxhYmVsSlNPTiIsImFudGVjZWRlbnRzSlNPTiIsImFudGVjZWRlbnQiLCJhbnRlY2VkZW50SlNPTiIsImNvbnNlcXVlbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJyZWxlYXNlQ29udGV4dCIsIkxhYmVsIiwiQW50ZWNlZGVudCIsIkNvbnNlcXVlbnQiLCJmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50IiwibWF0Y2hBbnRlY2VkZW50IiwicHJvb2ZTdGVwIiwicHJ1bmUiLCJzdWJwcm9vZk5vZGUiLCJnZXRTdWJwcm9vZk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic3ViUHJvb2ZNYXRjaGVzIiwibWF0Y2hTdWJwcm9vZk5vZGUiLCJzdGF0ZW1lbnRNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwiYW50ZWNlZGVudE1hdGNoZXMiLCJtYXRjaEFudGVjZWRlbnRzIiwiYW50ZWNlZGVudHNNYXRjaGVzIiwiZXZlcnkiLCJub25UZXJtaW5hbE5vZGVNYXRjaGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVNxQkE7OzswREFQSDsrREFDSzsrREFDQTtxQkFFRDs7Ozs7Ozs7Ozs7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
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGlvbUxlbW1hVGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IExhYmVsIGZyb20gXCIuL2xhYmVsXCI7XG5pbXBvcnQgQ29uc2VxdWVuY2UgZnJvbSBcIi4vY29uc2VxdWVuY2VcIjtcbmltcG9ydCBTdXBwb3NpdGlvbiBmcm9tIFwiLi9zdXBwb3NpdGlvblwiO1xuXG5pbXBvcnQgeyBwcnVuZSB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgc29tZVN1YkFycmF5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgY29uc3RydWN0b3IobGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbmNlKSB7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5jb25zZXF1ZW5jZSA9IGNvbnNlcXVlbmNlO1xuICB9XG5cbiAgZ2V0TGFiZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVscztcbiAgfVxuXG4gIGdldFN1cHBvc2l0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3NpdGlvbnM7XG4gIH1cblxuICBnZXRDb25zZXF1ZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zZXF1ZW5jZTtcbiAgfVxuXG4gIG1hdGNoTGFiZWxOYW1lKGxhYmVsTmFtZSkge1xuICAgIGNvbnN0IG1hdGNoZXNMYWJlbE5hbWUgPSB0aGlzLmxhYmVscy5zb21lKChsYWJlbCkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGxhYmVsTmFtZSwgLy8vXG4gICAgICAgICAgICBsYWJlbE1hdGNoZXNOYW1lID0gbGFiZWwubWF0Y2hOYW1lKG5hbWUpO1xuXG4gICAgICBpZiAobGFiZWxNYXRjaGVzTmFtZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtYXRjaGVzTGFiZWxOYW1lO1xuICB9XG5cbiAgbWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudE5hdGNoZXM7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbnNMZW5ndGggPSB0aGlzLnN1cHBvc2l0aW9ucy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gW10sXG4gICAgICAgICAgICBjb25zZXF1ZW5jZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbmNlKHRoaXMuY29uc2VxdWVuY2UsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBzdGF0ZW1lbnROYXRjaGVzID0gY29uc2VxdWVuY2VNYXRjaGVzOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJvb2ZTdGVwcyA9IHByb29mQ29udGV4dC5nZXRQcm9vZlN0ZXBzKCk7XG5cbiAgICAgIHN0YXRlbWVudE5hdGNoZXMgPSBzb21lU3ViQXJyYXkocHJvb2ZTdGVwcywgc3VwcG9zaXRpb25zTGVuZ3RoLCAocHJvb2ZTdGVwcykgPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnNNYXRjaENvbnNlcXVlbmNlID0gbWF0Y2hTdXBwb3NpdGlvbnNBbmRDb25zZXF1ZW5jZSh0aGlzLnN1cHBvc2l0aW9ucywgdGhpcy5jb25zZXF1ZW5jZSwgcHJvb2ZTdGVwcywgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgaWYgKHN1cHBvc2l0aW9uc01hdGNoQ29uc2VxdWVuY2UpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5hdGNoZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgeyBraW5kIH0gPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIGxhYmVsc0pTT04gPSB0aGlzLmxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgICAgICAgICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gdGhpcy5zdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25KU09OID0gc3VwcG9zaXRpb24udG9KU09OKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29uc2VxdWVuY2VKU09OID0gdGhpcy5jb25zZXF1ZW5jZS50b0pTT04oKSxcbiAgICAgICAgICBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnNlcXVlbmNlID0gY29uc2VxdWVuY2VKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBzdXBwb3NpdGlvbnMsXG4gICAgICAgICAgICBjb25zZXF1ZW5jZVxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihDbGFzcywganNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfSk7XG5cbiAgICBsZXQgeyBzdXBwb3NpdGlvbnMgfSA9IGpzb247XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLm1hcCgoc3VwcG9zaXRpb25KU09OKSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gICAgfSk7XG5cbiAgICBsZXQgeyBjb25zZXF1ZW5jZSB9ID0ganNvbjtcblxuICAgIGNvbnN0IGNvbnNlcXVlbmNlSlNPTiA9IGNvbnNlcXVlbmNlOyAgLy8vXG5cbiAgICBqc29uID0gY29uc2VxdWVuY2VKU09OOyAgLy8vXG5cbiAgICBjb25zZXF1ZW5jZSA9IENvbnNlcXVlbmNlLmZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3MobGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbmNlKTsgIC8vL1xuICB9XG5cbiAgc3RhdGljIGZyb21MYWJlbHNTdXBwb3NpdGlvbnNBbmRDb25zZXF1ZW5jZShDbGFzcywgbGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbmNlKSB7IHJldHVybiBuZXcgQ2xhc3MobGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbmNlKTsgfVxufVxuXG5mdW5jdGlvbiBtYXRjaFN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBwcm9vZlN0ZXBzLCBzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHByb29mU3RlcCA9IHBydW5lKHByb29mU3RlcHMsIChwcm9vZlN0ZXApID0+IHtcbiAgICBjb25zdCBzdWJwcm9vZk5vZGUgPSBwcm9vZlN0ZXAuZ2V0U3VicHJvb2ZOb2RlKCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHByb29mU3RlcC5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBpZiAoc3VicHJvb2ZOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJQcm9vZk1hdGNoZXMgPSBzdXBwb3NpdGlvbi5tYXRjaFN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoIXN1YlByb29mTWF0Y2hlcykgeyAgLy8vXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRNYXRjaGVzID0gc3VwcG9zaXRpb24ubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoIXN0YXRlbWVudE1hdGNoZXMpIHsgIC8vL1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfSkgfHwgbnVsbDtcblxuICBjb25zdCBzdXBwb3NpdGlvbk1hdGNoZXMgPSAocHJvb2ZTdGVwICE9PSBudWxsKTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25NYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaFN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbiwgcHJvb2ZTdGVwcywgc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNNYXRjaGVzID0gc3VwcG9zaXRpb24uZXZlcnkoKHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25NYXRjaGVzID0gbWF0Y2hTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgcHJvb2ZTdGVwcywgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25NYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbmNlKGNvbnNlcXVlbmNlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBjb25zZXF1ZW5jZS5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgIGNvbnNlcXVlbmNlTWF0Y2hlcyA9IG5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuXG4gIHJldHVybiBjb25zZXF1ZW5jZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoU3VwcG9zaXRpb25zQW5kQ29uc2VxdWVuY2Uoc3VwcG9zaXRpb25zLCBjb25zZXF1ZW5jZSwgcHJvb2ZTdGVwcywgc3RhdGVtZW50Tm9kZSkge1xuICBsZXQgc3VwcG9zaXRpb25zTWF0Y2hDb25zZXF1ZW5jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBbXSxcbiAgICAgICAgc3VwcG9zaXRpb25zTWF0Y2hlcyA9IG1hdGNoU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgcHJvb2ZTdGVwcywgc3Vic3RpdHV0aW9ucyk7XG5cbiAgaWYgKHN1cHBvc2l0aW9uc01hdGNoZXMpIHtcbiAgICBjb25zdCBjb25zZXF1ZW5jZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbmNlKGNvbnNlcXVlbmNlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIHN1cHBvc2l0aW9uc01hdGNoQ29uc2VxdWVuY2UgPSBjb25zZXF1ZW5jZU1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNNYXRjaENvbnNlcXVlbmNlO1xufVxuIl0sIm5hbWVzIjpbIkF4aW9tTGVtbWFUaGVvcmVtIiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiY29uc2VxdWVuY2UiLCJnZXRMYWJlbHMiLCJnZXRTdXBwb3NpdGlvbnMiLCJnZXRDb25zZXF1ZW5jZSIsIm1hdGNoTGFiZWxOYW1lIiwibGFiZWxOYW1lIiwibWF0Y2hlc0xhYmVsTmFtZSIsInNvbWUiLCJsYWJlbCIsIm5hbWUiLCJsYWJlbE1hdGNoZXNOYW1lIiwibWF0Y2hOYW1lIiwibWF0Y2hTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0Iiwic3RhdGVtZW50TmF0Y2hlcyIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImxlbmd0aCIsInN1YnN0aXR1dGlvbnMiLCJjb25zZXF1ZW5jZU1hdGNoZXMiLCJtYXRjaENvbnNlcXVlbmNlIiwicHJvb2ZTdGVwcyIsImdldFByb29mU3RlcHMiLCJzb21lU3ViQXJyYXkiLCJzdXBwb3NpdGlvbnNNYXRjaENvbnNlcXVlbmNlIiwibWF0Y2hTdXBwb3NpdGlvbnNBbmRDb25zZXF1ZW5jZSIsInRvSlNPTiIsImtpbmQiLCJjb25zdHJ1Y3RvciIsImxhYmVsc0pTT04iLCJtYXAiLCJsYWJlbEpTT04iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbkpTT04iLCJjb25zZXF1ZW5jZUpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJDbGFzcyIsInJlbGVhc2VDb250ZXh0IiwiTGFiZWwiLCJTdXBwb3NpdGlvbiIsIkNvbnNlcXVlbmNlIiwiZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZENvbnNlcXVlbmNlIiwibWF0Y2hTdXBwb3NpdGlvbiIsInByb29mU3RlcCIsInBydW5lIiwic3VicHJvb2ZOb2RlIiwiZ2V0U3VicHJvb2ZOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInN1YlByb29mTWF0Y2hlcyIsIm1hdGNoU3VicHJvb2ZOb2RlIiwic3RhdGVtZW50TWF0Y2hlcyIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsInN1cHBvc2l0aW9uTWF0Y2hlcyIsIm1hdGNoU3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zTWF0Y2hlcyIsImV2ZXJ5Iiwibm9uVGVybWluYWxOb2RlTWF0Y2hlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFTcUJBOzs7MERBUEg7Z0VBQ007Z0VBQ0E7cUJBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHUCxJQUFBLEFBQU1BLGtDQXdIbEIsQUF4SFk7YUFBTUEsa0JBQ1BDLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxXQUFXOzhCQUQxQkg7UUFFakIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxZQUFZLEdBQUdBO1FBQ3BCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTs7aUJBSkZIOztZQU9uQkksS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVk7Z0JBQ1YsT0FBTyxJQUFJLENBQUNILE1BQU07WUFDcEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCO2dCQUNoQixPQUFPLElBQUksQ0FBQ0gsWUFBWTtZQUMxQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUI7Z0JBQ2YsT0FBTyxJQUFJLENBQUNILFdBQVc7WUFDekI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZUMsU0FBUyxFQUFFO2dCQUN4QixJQUFNQyxtQkFBbUIsSUFBSSxDQUFDUixNQUFNLENBQUNTLElBQUksQ0FBQyxTQUFDQyxPQUFVO29CQUNuRCxJQUFNQyxPQUFPSixXQUNQSyxtQkFBbUJGLE1BQU1HLFNBQVMsQ0FBQ0Y7b0JBRXpDLElBQUlDLGtCQUFrQjt3QkFDcEIsT0FBTyxJQUFJO29CQUNiLENBQUM7Z0JBQ0g7Z0JBRUEsT0FBT0o7WUFDVDs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlQyxhQUFhLEVBQUVDLFlBQVksRUFBRTs7Z0JBQzFDLElBQUlDO2dCQUVKLElBQU1DLHFCQUFxQixJQUFJLENBQUNqQixZQUFZLENBQUNrQixNQUFNO2dCQUVuRCxJQUFJRCx1QkFBdUIsR0FBRztvQkFDNUIsSUFBTUUsZ0JBQWdCLEVBQUUsRUFDbEJDLHFCQUFxQkMsaUJBQWlCLElBQUksQ0FBQ3BCLFdBQVcsRUFBRWEsZUFBZUs7b0JBRTdFSCxtQkFBbUJJLG9CQUFvQixHQUFHO2dCQUM1QyxPQUFPO29CQUNMLElBQU1FLGFBQWFQLGFBQWFRLGFBQWE7b0JBRTdDUCxtQkFBbUJRLElBQUFBLG1CQUFZLEVBQUNGLFlBQVlMLG9CQUFvQixTQUFDSyxZQUFlO3dCQUM5RSxJQUFNRywrQkFBK0JDLGdDQUFnQyxNQUFLMUIsWUFBWSxFQUFFLE1BQUtDLFdBQVcsRUFBRXFCLFlBQVlSO3dCQUV0SCxJQUFJVyw4QkFBOEI7NEJBQ2hDLE9BQU8sSUFBSTt3QkFDYixDQUFDO29CQUNIO2dCQUNGLENBQUM7Z0JBRUQsT0FBT1Q7WUFDVDs7O1lBRUFXLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTO2dCQUNQLElBQU0sQUFBRUMsT0FBUyxJQUFJLENBQUNDLFdBQVcsQ0FBekJELE1BQ0ZFLGFBQWEsSUFBSSxDQUFDL0IsTUFBTSxDQUFDZ0MsR0FBRyxDQUFDLFNBQUN0QixPQUFVO29CQUN0QyxJQUFNdUIsWUFBWXZCLE1BQU1rQixNQUFNO29CQUU5QixPQUFPSztnQkFDVCxJQUNBQyxtQkFBbUIsSUFBSSxDQUFDakMsWUFBWSxDQUFDK0IsR0FBRyxDQUFDLFNBQUNHLGFBQWdCO29CQUN4RCxJQUFNQyxrQkFBa0JELFlBQVlQLE1BQU07b0JBRTFDLE9BQU9RO2dCQUNULElBQ0FDLGtCQUFrQixJQUFJLENBQUNuQyxXQUFXLENBQUMwQixNQUFNLElBQ3pDNUIsU0FBUytCLFlBQ1Q5QixlQUFlaUMsa0JBQ2ZoQyxjQUFjbUMsaUJBQ2RDLE9BQU87b0JBQ0xULE1BQUFBO29CQUNBN0IsUUFBQUE7b0JBQ0FDLGNBQUFBO29CQUNBQyxhQUFBQTtnQkFDRjtnQkFFTixPQUFPb0M7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTQyxLQUFLLEVBQUVGLElBQUksRUFBRUcsY0FBYyxFQUFFO2dCQUMzQyxJQUFJLEFBQUV6QyxTQUFXc0MsS0FBWHRDO2dCQUVOLElBQU0rQixhQUFhL0IsUUFBUyxHQUFHO2dCQUUvQkEsU0FBUytCLFdBQVdDLEdBQUcsQ0FBQyxTQUFDQyxXQUFjO29CQUNyQyxJQUFNSyxTQUFPTCxXQUNQdkIsUUFBUWdDLGNBQUssQ0FBQ0gsUUFBUSxDQUFDRCxRQUFNRztvQkFFbkMsT0FBTy9CO2dCQUNUO2dCQUVBLElBQUksQUFBRVQsZUFBaUJxQyxLQUFqQnJDO2dCQUVOLElBQU1pQyxtQkFBbUJqQyxjQUFlLEdBQUc7Z0JBRTNDQSxlQUFlaUMsaUJBQWlCRixHQUFHLENBQUMsU0FBQ0ksaUJBQW9CO29CQUN2RCxJQUFNRSxTQUFPRixpQkFDUEQsY0FBY1Esb0JBQVcsQ0FBQ0osUUFBUSxDQUFDRCxRQUFNRztvQkFFL0MsT0FBT047Z0JBQ1Q7Z0JBRUEsSUFBSSxBQUFFakMsY0FBZ0JvQyxLQUFoQnBDO2dCQUVOLElBQU1tQyxrQkFBa0JuQyxhQUFjLEdBQUc7Z0JBRXpDb0MsT0FBT0QsaUJBQWtCLEdBQUc7Z0JBRTVCbkMsY0FBYzBDLG9CQUFXLENBQUNMLFFBQVEsQ0FBQ0QsTUFBTUc7Z0JBRXpDLE9BQU8sSUFBSUQsTUFBTXhDLFFBQVFDLGNBQWNDLGNBQWUsR0FBRztZQUMzRDs7O1lBRU8yQyxLQUFBQTttQkFBUCxTQUFPQSxxQ0FBcUNMLEtBQUssRUFBRXhDLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxXQUFXLEVBQUU7Z0JBQUUsT0FBTyxJQUFJc0MsTUFBTXhDLFFBQVFDLGNBQWNDO1lBQWM7OztXQXJIMUhIOztBQXdIckIsU0FBUytDLGlCQUFpQlgsV0FBVyxFQUFFWixVQUFVLEVBQUVILGFBQWEsRUFBRTtJQUNoRSxJQUFNMkIsWUFBWUMsSUFBQUEsWUFBSyxFQUFDekIsWUFBWSxTQUFDd0IsV0FBYztRQUNqRCxJQUFNRSxlQUFlRixVQUFVRyxlQUFlLElBQ3hDbkMsZ0JBQWdCZ0MsVUFBVUksZ0JBQWdCO1FBRWhELElBQUlGLGlCQUFpQixJQUFJLEVBQUU7WUFDekIsSUFBTUcsa0JBQWtCakIsWUFBWWtCLGlCQUFpQixDQUFDSixjQUFjN0I7WUFFcEUsSUFBSSxDQUFDZ0MsaUJBQWlCO2dCQUNwQixPQUFPLElBQUk7WUFDYixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUlyQyxrQkFBa0IsSUFBSSxFQUFFO1lBQzFCLElBQU11QyxtQkFBbUJuQixZQUFZb0Isa0JBQWtCLENBQUN4QyxlQUFlSztZQUV2RSxJQUFJLENBQUNrQyxrQkFBa0I7Z0JBQ3JCLE9BQU8sSUFBSTtZQUNiLENBQUM7UUFDSCxDQUFDO0lBRUgsTUFBTSxJQUFJO0lBRVYsSUFBTUUscUJBQXNCVCxjQUFjLElBQUk7SUFFOUMsT0FBT1M7QUFDVDtBQUVBLFNBQVNDLGtCQUFrQnRCLFdBQVcsRUFBRVosVUFBVSxFQUFFSCxhQUFhLEVBQUU7SUFDakUsSUFBTXNDLHNCQUFzQnZCLFlBQVl3QixLQUFLLENBQUMsU0FBQ3hCLGFBQWdCO1FBQzdELElBQU1xQixxQkFBcUJWLGlCQUFpQlgsYUFBYVosWUFBWUg7UUFFckUsSUFBSW9DLG9CQUFvQjtZQUN0QixPQUFPLElBQUk7UUFDYixDQUFDO0lBQ0g7SUFFQSxPQUFPRTtBQUNUO0FBRUEsU0FBU3BDLGlCQUFpQnBCLFdBQVcsRUFBRWEsYUFBYSxFQUFFSyxhQUFhLEVBQUU7SUFDbkUsSUFBTXdDLHlCQUF5QjFELFlBQVlxRCxrQkFBa0IsQ0FBQ3hDLGVBQWVLLGdCQUN2RUMscUJBQXFCdUMsd0JBQXdCLEdBQUc7SUFFdEQsT0FBT3ZDO0FBQ1Q7QUFFQSxTQUFTTSxnQ0FBZ0MxQixZQUFZLEVBQUVDLFdBQVcsRUFBRXFCLFVBQVUsRUFBRVIsYUFBYSxFQUFFO0lBQzdGLElBQUlXLCtCQUErQixLQUFLO0lBRXhDLElBQU1OLGdCQUFnQixFQUFFLEVBQ2xCc0Msc0JBQXNCRCxrQkFBa0J4RCxjQUFjc0IsWUFBWUg7SUFFeEUsSUFBSXNDLHFCQUFxQjtRQUN2QixJQUFNckMscUJBQXFCQyxpQkFBaUJwQixhQUFhYSxlQUFlSztRQUV4RU0sK0JBQStCTCxvQkFBcUIsR0FBRztJQUN6RCxDQUFDO0lBRUQsT0FBT0s7QUFDVCJ9
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Consequence;
9
+ }
10
+ });
11
+ var _array = require("./utilities/array");
12
+ var _string = require("./utilities/string");
13
+ var _query = require("./utilities/query");
14
+ var _ruleNames = require("./ruleNames");
15
+ function _classCallCheck(instance, Constructor) {
16
+ if (!(instance instanceof Constructor)) {
17
+ throw new TypeError("Cannot call a class as a function");
18
+ }
19
+ }
20
+ function _defineProperties(target, props) {
21
+ for(var i = 0; i < props.length; i++){
22
+ var descriptor = props[i];
23
+ descriptor.enumerable = descriptor.enumerable || false;
24
+ descriptor.configurable = true;
25
+ if ("value" in descriptor) descriptor.writable = true;
26
+ Object.defineProperty(target, descriptor.key, descriptor);
27
+ }
28
+ }
29
+ function _createClass(Constructor, protoProps, staticProps) {
30
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+ if (staticProps) _defineProperties(Constructor, staticProps);
32
+ return Constructor;
33
+ }
34
+ var Consequence = /*#__PURE__*/ function() {
35
+ function Consequence(statementNode) {
36
+ _classCallCheck(this, Consequence);
37
+ this.statementNode = statementNode;
38
+ }
39
+ _createClass(Consequence, [
40
+ {
41
+ key: "getStatementNode",
42
+ value: function getStatementNode() {
43
+ return this.statementNode;
44
+ }
45
+ },
46
+ {
47
+ key: "matchStatementNode",
48
+ value: function matchStatementNode(statementNode, metaSubstitutions) {
49
+ var nonTerminalNode = statementNode, consequenceNonTerminalNode = this.statementNode, consequenceNonTerminalNodeMatches = matchConsequenceNonTerminalNode(consequenceNonTerminalNode, nonTerminalNode, metaSubstitutions), statementNodeMatches = consequenceNonTerminalNodeMatches; ///
50
+ return statementNodeMatches;
51
+ }
52
+ },
53
+ {
54
+ key: "toJSON",
55
+ value: function toJSON() {
56
+ var statementString = (0, _string.nodeAsString)(this.statementNode), statement = statementString, json = {
57
+ statement: statement
58
+ };
59
+ return json;
60
+ }
61
+ }
62
+ ], [
63
+ {
64
+ key: "fromJSON",
65
+ value: function fromJSON(json, releaseContext) {
66
+ var statement = json.statement, statementString = statement, statementNode = (0, _string.statementNodeFromStatementString)(statementString, releaseContext), consequence = new Consequence(statementNode);
67
+ return consequence;
68
+ }
69
+ },
70
+ {
71
+ key: "fromStatementNode",
72
+ value: function fromStatementNode(statementNode) {
73
+ var consequence = new Consequence(statementNode);
74
+ return consequence;
75
+ }
76
+ }
77
+ ]);
78
+ return Consequence;
79
+ }();
80
+ function matchConsequenceNode(consequenceNode, node, metaSubstitutions) {
81
+ var consequenceNodeMatches = false;
82
+ var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = consequenceNode.isTerminalNode();
83
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
84
+ if (nodeTerminalNode) {
85
+ var terminalNode = node, consequenceTerminalNode = consequenceNode, consequenceTerminalNodeMatches = matchConsequenceTerminalNode(consequenceTerminalNode, terminalNode, metaSubstitutions);
86
+ consequenceNodeMatches = consequenceTerminalNodeMatches; ///
87
+ } else {
88
+ var nonTerminalNode = node, consequenceNonTerminalNode = consequenceNode, consequenceNonTerminalNodeMatches = matchConsequenceNonTerminalNode(consequenceNonTerminalNode, nonTerminalNode, metaSubstitutions);
89
+ consequenceNodeMatches = consequenceNonTerminalNodeMatches; ///
90
+ }
91
+ }
92
+ return consequenceNodeMatches;
93
+ }
94
+ function matchConsequenceNodes(consequenceNodes, nodes, metaSubstitutions) {
95
+ var consequenceNodesMatches = false;
96
+ var nodesLength = nodes.length, consequenceNodesLength = consequenceNodes.length;
97
+ if (nodesLength === consequenceNodesLength) {
98
+ consequenceNodesMatches = nodes.every(function(node, index) {
99
+ var consequenceNode = consequenceNodes[index], consequenceNodeMatches = matchConsequenceNode(consequenceNode, node, metaSubstitutions);
100
+ if (consequenceNodeMatches) {
101
+ return true;
102
+ }
103
+ });
104
+ }
105
+ return consequenceNodesMatches;
106
+ }
107
+ function matchConsequenceVariable(consequenceVariableNode, nodes, metaSubstitutions) {
108
+ var consequenceVariableMatches = true;
109
+ var consequenceVariableName = (0, _query.variableNameFromVariableNode)(consequenceVariableNode), metaSubstitution = metaSubstitutions.find(function(metaSubstitution) {
110
+ var variableName = metaSubstitution.getVariableName();
111
+ if (variableName === consequenceVariableName) {
112
+ return true;
113
+ }
114
+ }) || null;
115
+ if (metaSubstitution !== null) {
116
+ var metaSubstitutionNodesMatch = metaSubstitution.matchNodes(nodes);
117
+ consequenceVariableMatches = metaSubstitutionNodesMatch; ///
118
+ }
119
+ return consequenceVariableMatches;
120
+ }
121
+ function matchConsequenceTerminalNode(consequenceTerminalNode, terminalNode, metaSubstitutions) {
122
+ var matches = consequenceTerminalNode.match(terminalNode), consequenceTerminalNodeMatches = matches; ///
123
+ return consequenceTerminalNodeMatches;
124
+ }
125
+ function matchConsequenceNonTerminalNode(consequenceNonTerminalNode, nonTerminalNode, metaSubstitutions) {
126
+ var consequenceNonTerminalNodeMatches = false;
127
+ var ruleName = nonTerminalNode.getRuleName(), consequenceRuleName = consequenceNonTerminalNode.getRuleName(); ///
128
+ if (ruleName === consequenceRuleName) {
129
+ var childNodes = nonTerminalNode.getChildNodes(), consequenceChildNodes = consequenceNonTerminalNode.getChildNodes(), nodes = childNodes, consequenceNodes = consequenceChildNodes, consequenceChildNodesMatches = matchConsequenceNodes(consequenceNodes, nodes, metaSubstitutions);
130
+ consequenceNonTerminalNodeMatches = consequenceChildNodesMatches; ///
131
+ if (!consequenceNonTerminalNodeMatches) {
132
+ var ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME;
133
+ if (ruleNameStatementRuleName) {
134
+ var statementNode = nonTerminalNode, consequenceStatementNode = consequenceNonTerminalNode, consequenceStatementNodeMatches = matchConsequenceStatementNode(consequenceStatementNode, statementNode, metaSubstitutions);
135
+ consequenceNonTerminalNodeMatches = consequenceStatementNodeMatches; ///
136
+ }
137
+ }
138
+ }
139
+ return consequenceNonTerminalNodeMatches;
140
+ }
141
+ function matchConsequenceStatementNode(consequenceStatementNode, statementNode, metaSubstitutions) {
142
+ var consequenceStatementNodeMatches = false;
143
+ var consequenceNonTerminalNode = consequenceStatementNode, consequenceChildNodes = consequenceNonTerminalNode.getChildNodes(), consequenceChildNodesLength = consequenceChildNodes.length;
144
+ if (consequenceChildNodesLength === 1) {
145
+ var firstConsequenceChildNode = (0, _array.first)(consequenceChildNodes), consequenceChildNode = firstConsequenceChildNode, consequenceChildNodeNonTerminalNode = consequenceChildNode.isNonTerminalNode();
146
+ if (consequenceChildNodeNonTerminalNode) {
147
+ var consequenceNonTerminalChildNode = consequenceChildNode, consequenceNonTerminalChildNodeRuleName = consequenceNonTerminalChildNode.getRuleName(), consequenceNonTerminalChildNodeRuleNameVariableRuleName = consequenceNonTerminalChildNodeRuleName === _ruleNames.VARIABLE_RULE_NAME;
148
+ if (consequenceNonTerminalChildNodeRuleNameVariableRuleName) {
149
+ var consequenceVariableNode = consequenceNonTerminalChildNode, nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, consequenceMetaVariableMatches = matchConsequenceVariable(consequenceVariableNode, nodes, metaSubstitutions);
150
+ consequenceStatementNodeMatches = consequenceMetaVariableMatches; ///
151
+ }
152
+ }
153
+ }
154
+ return consequenceStatementNodeMatches;
155
+ }
156
+
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zZXF1ZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgVkFSSUFCTEVfUlVMRV9OQU1FLCBTVEFURU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4vcnVsZU5hbWVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNlcXVlbmNlIHtcbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50Tm9kZSkge1xuICAgIHRoaXMuc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY29uc2VxdWVuY2VOb25UZXJtaW5hbE5vZGUgPSB0aGlzLnN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25zZXF1ZW5jZU5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlKGNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKHRoaXMuc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50U3RyaW5nLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0YXRlbWVudFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgc3RhdGVtZW50IH0gPSBqc29uLFxuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyhzdGF0ZW1lbnRTdHJpbmcsIHJlbGVhc2VDb250ZXh0KSxcbiAgICAgICAgICBjb25zZXF1ZW5jZSA9IG5ldyBDb25zZXF1ZW5jZShzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBjb25zZXF1ZW5jZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3QgY29uc2VxdWVuY2UgPSBuZXcgQ29uc2VxdWVuY2Uoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc2VxdWVuY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25zZXF1ZW5jZU5vZGUoY29uc2VxdWVuY2VOb2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVuY2VOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gY29uc2VxdWVuY2VOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IHJ1bGVOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbmNlVGVybWluYWxOb2RlID0gY29uc2VxdWVuY2VOb2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zZXF1ZW5jZVRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbmNlVGVybWluYWxOb2RlKGNvbnNlcXVlbmNlVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgY29uc2VxdWVuY2VOb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbmNlVGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlID0gY29uc2VxdWVuY2VOb2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zZXF1ZW5jZU5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlKGNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgY29uc2VxdWVuY2VOb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbmNlTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uc2VxdWVuY2VOb2Rlcyhjb25zZXF1ZW5jZU5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbnNlcXVlbmNlTm9kZXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZXNMZW5ndGggPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIGNvbnNlcXVlbmNlTm9kZXNMZW5ndGggPSBjb25zZXF1ZW5jZU5vZGVzLmxlbmd0aDtcblxuICBpZiAobm9kZXNMZW5ndGggPT09IGNvbnNlcXVlbmNlTm9kZXNMZW5ndGgpIHtcbiAgICBjb25zZXF1ZW5jZU5vZGVzTWF0Y2hlcyA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uc2VxdWVuY2VOb2RlID0gY29uc2VxdWVuY2VOb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICBjb25zZXF1ZW5jZU5vZGVNYXRjaGVzID0gbWF0Y2hDb25zZXF1ZW5jZU5vZGUoY29uc2VxdWVuY2VOb2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGlmIChjb25zZXF1ZW5jZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbmNlTm9kZXNNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbmNlVmFyaWFibGUoY29uc2VxdWVuY2VWYXJpYWJsZU5vZGUsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVuY2VWYXJpYWJsZU1hdGNoZXMgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnNlcXVlbmNlVmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZShjb25zZXF1ZW5jZVZhcmlhYmxlTm9kZSksXG4gICAgICAgIG1ldGFTdWJzdGl0dXRpb24gPSBtZXRhU3Vic3RpdHV0aW9ucy5maW5kKChtZXRhU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gbWV0YVN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZU5hbWUoKTtcblxuICAgICAgICAgIGlmICh2YXJpYWJsZU5hbWUgPT09IGNvbnNlcXVlbmNlVmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKG1ldGFTdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaCA9IG1ldGFTdWJzdGl0dXRpb24ubWF0Y2hOb2Rlcyhub2Rlcyk7XG5cbiAgICBjb25zZXF1ZW5jZVZhcmlhYmxlTWF0Y2hlcyA9IG1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoOyAgLy8vXG4gIH1cblxuICByZXR1cm4gY29uc2VxdWVuY2VWYXJpYWJsZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uc2VxdWVuY2VUZXJtaW5hbE5vZGUoY29uc2VxdWVuY2VUZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IGNvbnNlcXVlbmNlVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIGNvbnNlcXVlbmNlVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gY29uc2VxdWVuY2VUZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlKGNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25zZXF1ZW5jZU5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjb25zZXF1ZW5jZVJ1bGVOYW1lID0gY29uc2VxdWVuY2VOb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBjb25zZXF1ZW5jZVJ1bGVOYW1lKSB7XG4gICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY29uc2VxdWVuY2VDaGlsZE5vZGVzID0gY29uc2VxdWVuY2VOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgY29uc2VxdWVuY2VOb2RlcyA9IGNvbnNlcXVlbmNlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgY29uc2VxdWVuY2VDaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVuY2VOb2Rlcyhjb25zZXF1ZW5jZU5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29uc2VxdWVuY2VOb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gY29uc2VxdWVuY2VDaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG5cbiAgICBpZiAoIWNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlTWF0Y2hlcykge1xuICAgICAgY29uc3QgcnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY29uc2VxdWVuY2VTdGF0ZW1lbnROb2RlID0gY29uc2VxdWVuY2VOb25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY29uc2VxdWVuY2VTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVuY2VTdGF0ZW1lbnROb2RlKGNvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25zZXF1ZW5jZU5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uc2VxdWVuY2VTdGF0ZW1lbnROb2RlKGNvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBjb25zZXF1ZW5jZU5vblRlcm1pbmFsTm9kZSA9IGNvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBjb25zZXF1ZW5jZUNoaWxkTm9kZXMgPSBjb25zZXF1ZW5jZU5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGNvbnNlcXVlbmNlQ2hpbGROb2Rlc0xlbmd0aCA9IGNvbnNlcXVlbmNlQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNvbnNlcXVlbmNlQ2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0Q29uc2VxdWVuY2VDaGlsZE5vZGUgPSBmaXJzdChjb25zZXF1ZW5jZUNoaWxkTm9kZXMpLFxuICAgICAgICAgIGNvbnNlcXVlbmNlQ2hpbGROb2RlID0gZmlyc3RDb25zZXF1ZW5jZUNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgIGNvbnNlcXVlbmNlQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlID0gY29uc2VxdWVuY2VDaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChjb25zZXF1ZW5jZUNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgY29uc2VxdWVuY2VOb25UZXJtaW5hbENoaWxkTm9kZSA9IGNvbnNlcXVlbmNlQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zZXF1ZW5jZU5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUgPSBjb25zZXF1ZW5jZU5vblRlcm1pbmFsQ2hpbGROb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICBjb25zZXF1ZW5jZU5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lID0gKGNvbnNlcXVlbmNlTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9PT0gVkFSSUFCTEVfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGNvbnNlcXVlbmNlTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZVZhcmlhYmxlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgY29uc2VxdWVuY2VWYXJpYWJsZU5vZGUgPSBjb25zZXF1ZW5jZU5vblRlcm1pbmFsQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGNvbnNlcXVlbmNlTWV0YVZhcmlhYmxlTWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVuY2VWYXJpYWJsZShjb25zZXF1ZW5jZVZhcmlhYmxlTm9kZSwgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25zZXF1ZW5jZVN0YXRlbWVudE5vZGVNYXRjaGVzID0gY29uc2VxdWVuY2VNZXRhVmFyaWFibGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uc2VxdWVuY2VTdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJDb25zZXF1ZW5jZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwibWV0YVN1YnN0aXR1dGlvbnMiLCJub25UZXJtaW5hbE5vZGUiLCJjb25zZXF1ZW5jZU5vblRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbmNlTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc2VxdWVuY2VOb25UZXJtaW5hbE5vZGUiLCJzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsInRvSlNPTiIsInN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInN0YXRlbWVudCIsImpzb24iLCJmcm9tSlNPTiIsInJlbGVhc2VDb250ZXh0Iiwic3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmciLCJjb25zZXF1ZW5jZSIsImZyb21TdGF0ZW1lbnROb2RlIiwibWF0Y2hDb25zZXF1ZW5jZU5vZGUiLCJjb25zZXF1ZW5jZU5vZGUiLCJub2RlIiwiY29uc2VxdWVuY2VOb2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiY29uc2VxdWVuY2VUZXJtaW5hbE5vZGUiLCJjb25zZXF1ZW5jZVRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaENvbnNlcXVlbmNlVGVybWluYWxOb2RlIiwibWF0Y2hDb25zZXF1ZW5jZU5vZGVzIiwiY29uc2VxdWVuY2VOb2RlcyIsIm5vZGVzIiwiY29uc2VxdWVuY2VOb2Rlc01hdGNoZXMiLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImNvbnNlcXVlbmNlTm9kZXNMZW5ndGgiLCJldmVyeSIsImluZGV4IiwibWF0Y2hDb25zZXF1ZW5jZVZhcmlhYmxlIiwiY29uc2VxdWVuY2VWYXJpYWJsZU5vZGUiLCJjb25zZXF1ZW5jZVZhcmlhYmxlTWF0Y2hlcyIsImNvbnNlcXVlbmNlVmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsIm1ldGFTdWJzdGl0dXRpb24iLCJmaW5kIiwidmFyaWFibGVOYW1lIiwiZ2V0VmFyaWFibGVOYW1lIiwibWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2giLCJtYXRjaE5vZGVzIiwibWF0Y2hlcyIsIm1hdGNoIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsImNvbnNlcXVlbmNlUnVsZU5hbWUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbnNlcXVlbmNlQ2hpbGROb2RlcyIsImNvbnNlcXVlbmNlQ2hpbGROb2Rlc01hdGNoZXMiLCJydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsImNvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZSIsImNvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbnNlcXVlbmNlU3RhdGVtZW50Tm9kZSIsImNvbnNlcXVlbmNlQ2hpbGROb2Rlc0xlbmd0aCIsImZpcnN0Q29uc2VxdWVuY2VDaGlsZE5vZGUiLCJmaXJzdCIsImNvbnNlcXVlbmNlQ2hpbGROb2RlIiwiY29uc2VxdWVuY2VDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbmNlTm9uVGVybWluYWxDaGlsZE5vZGUiLCJjb25zZXF1ZW5jZU5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUiLCJjb25zZXF1ZW5jZU5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lIiwiVkFSSUFCTEVfUlVMRV9OQU1FIiwiY29uc2VxdWVuY2VNZXRhVmFyaWFibGVNYXRjaGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVFxQkE7OztxQkFOQztzQkFDTztxQkFDZ0I7eUJBRVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXpDLElBQUEsQUFBTUEsNEJBNENsQixBQTVDWTthQUFNQSxZQUNQQyxhQUFhOzhCQURORDtRQUVqQixJQUFJLENBQUNDLGFBQWEs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
package/lib/lemma.js CHANGED
@@ -128,9 +128,9 @@ var Lemma = /*#__PURE__*/ function(AxiomLemmaTheorem) {
128
128
  }
129
129
  },
130
130
  {
131
- key: "fromLabelsAntecedentsAndConsequent",
132
- value: function fromLabelsAntecedentsAndConsequent(labels, antecedents, consequent) {
133
- return _axiomLemmaTheorem.default.fromLabelsAntecedentsAndConsequent(Lemma, labels, antecedents, consequent);
131
+ key: "fromLabelsSuppositionsAndConsequence",
132
+ value: function fromLabelsSuppositionsAndConsequence(labels, suppositions, consequence) {
133
+ return _axiomLemmaTheorem.default.fromLabelsSuppositionsAndConsequence(Lemma, labels, suppositions, consequence);
134
134
  }
135
135
  }
136
136
  ]);
@@ -138,4 +138,4 @@ var Lemma = /*#__PURE__*/ function(AxiomLemmaTheorem) {
138
138
  }(_axiomLemmaTheorem.default);
139
139
  _defineProperty(Lemma, "kind", _kinds.LEMMA_KIND);
140
140
 
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sZW1tYS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEF4aW9tTGVtbWFUaGVvcmVtIGZyb20gXCIuL2F4aW9tTGVtbWFUaGVvcmVtXCI7XG5cbmltcG9ydCB7IExFTU1BX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMZW1tYSBleHRlbmRzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgc3RhdGljIGtpbmQgPSBMRU1NQV9LSU5EO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCkgeyByZXR1cm4gQXhpb21MZW1tYVRoZW9yZW0uZnJvbUpTT04oTGVtbWEsIGpzb24sIHJlbGVhc2VDb250ZXh0KTsgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50KGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpIHsgcmV0dXJuIEF4aW9tTGVtbWFUaGVvcmVtLmZyb21MYWJlbHNBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQoTGVtbWEsIGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpOyB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkxlbW1hIiwiZnJvbUpTT04iLCJqc29uIiwicmVsZWFzZUNvbnRleHQiLCJBeGlvbUxlbW1hVGhlb3JlbSIsImZyb21MYWJlbHNBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQiLCJsYWJlbHMiLCJhbnRlY2VkZW50cyIsImNvbnNlcXVlbnQiLCJraW5kIiwiTEVNTUFfS0lORCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7c0VBSlM7cUJBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVosSUFBQSxBQUFNQSxzQkFBTjtjQUFNQTs4QkFBQUE7YUFBQUE7OEJBQUFBOzs7aUJBQUFBOztZQUdaQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTQyxJQUFJLEVBQUVDLGNBQWMsRUFBRTtnQkFBRSxPQUFPQywwQkFBaUIsQ0FBQ0gsUUFBUSxDQUh0REQsT0FHOERFLE1BQU1DO1lBQWlCOzs7WUFFakdFLEtBQUFBO21CQUFQLFNBQU9BLG1DQUFtQ0MsTUFBTSxFQUFFQyxXQUFXLEVBQUVDLFVBQVUsRUFBRTtnQkFBRSxPQUFPSiwwQkFBaUIsQ0FBQ0Msa0NBQWtDLENBTHJITCxPQUs2SE0sUUFBUUMsYUFBYUM7WUFBYTs7O1dBTC9KUjtFQUFjSSwwQkFBaUI7QUFDbEQsZ0JBRG1CSixPQUNaUyxRQUFPQyxpQkFBVSJ9
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sZW1tYS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEF4aW9tTGVtbWFUaGVvcmVtIGZyb20gXCIuL2F4aW9tTGVtbWFUaGVvcmVtXCI7XG5cbmltcG9ydCB7IExFTU1BX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMZW1tYSBleHRlbmRzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgc3RhdGljIGtpbmQgPSBMRU1NQV9LSU5EO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCkgeyByZXR1cm4gQXhpb21MZW1tYVRoZW9yZW0uZnJvbUpTT04oTGVtbWEsIGpzb24sIHJlbGVhc2VDb250ZXh0KTsgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kQ29uc2VxdWVuY2UobGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbmNlKSB7IHJldHVybiBBeGlvbUxlbW1hVGhlb3JlbS5mcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kQ29uc2VxdWVuY2UoTGVtbWEsIGxhYmVscywgc3VwcG9zaXRpb25zLCBjb25zZXF1ZW5jZSk7IH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiTGVtbWEiLCJmcm9tSlNPTiIsImpzb24iLCJyZWxlYXNlQ29udGV4dCIsIkF4aW9tTGVtbWFUaGVvcmVtIiwiZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZENvbnNlcXVlbmNlIiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiY29uc2VxdWVuY2UiLCJraW5kIiwiTEVNTUFfS0lORCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7c0VBSlM7cUJBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVosSUFBQSxBQUFNQSxzQkFBTjtjQUFNQTs4QkFBQUE7YUFBQUE7OEJBQUFBOzs7aUJBQUFBOztZQUdaQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTQyxJQUFJLEVBQUVDLGNBQWMsRUFBRTtnQkFBRSxPQUFPQywwQkFBaUIsQ0FBQ0gsUUFBUSxDQUh0REQsT0FHOERFLE1BQU1DO1lBQWlCOzs7WUFFakdFLEtBQUFBO21CQUFQLFNBQU9BLHFDQUFxQ0MsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFdBQVcsRUFBRTtnQkFBRSxPQUFPSiwwQkFBaUIsQ0FBQ0Msb0NBQW9DLENBTDNITCxPQUttSU0sUUFBUUMsY0FBY0M7WUFBYzs7O1dBTHZLUjtFQUFjSSwwQkFBaUI7QUFDbEQsZ0JBRG1CSixPQUNaUyxRQUFPQyxpQkFBVSJ9