occam-verify-cli 0.0.968 → 0.0.971

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 (145) hide show
  1. package/bin/action/verify.js +6 -8
  2. package/lib/constants.js +5 -1
  3. package/lib/context/file.js +48 -53
  4. package/lib/context/local.js +45 -39
  5. package/lib/context/release.js +3 -3
  6. package/lib/declaration.js +9 -7
  7. package/lib/equivalence.js +23 -21
  8. package/lib/judgement.js +3 -3
  9. package/lib/label.js +3 -3
  10. package/lib/log.js +3 -3
  11. package/lib/metaType.js +7 -7
  12. package/lib/metavariable.js +7 -7
  13. package/lib/node/term/bracketed.js +16 -0
  14. package/lib/proofStep.js +3 -29
  15. package/lib/releaseContext/initialise.js +11 -17
  16. package/lib/resolve/substitutions.js +99 -0
  17. package/lib/rule.js +10 -6
  18. package/lib/substitution/statementForMetavariable.js +93 -98
  19. package/lib/substitution/termForVariable.js +45 -54
  20. package/lib/substitution.js +51 -9
  21. package/lib/substitutions.js +165 -12
  22. package/lib/term.js +8 -1
  23. package/lib/topLevelAssertion.js +10 -6
  24. package/lib/type.js +5 -5
  25. package/lib/unifier/metaLevel.js +10 -3
  26. package/lib/unifier/statementWithCombinator.js +6 -6
  27. package/lib/unifier.js +2 -2
  28. package/lib/unify/metavariableWithStatement.js +13 -48
  29. package/lib/unify/metavariableWithStatementGivenSubstitution.js +39 -0
  30. package/lib/unify/premiseWithProofStep.js +3 -3
  31. package/lib/unify/statement/qualified.js +117 -0
  32. package/lib/unify/statement/unqualified.js +25 -0
  33. package/lib/unify/statementWithBracketedCombinator.js +3 -3
  34. package/lib/unify/statementWithCombinators.js +5 -5
  35. package/lib/unify/statementWithMetaType.js +3 -3
  36. package/lib/unify/statementWithSttaemetnGivenEquivalences.js +45 -0
  37. package/lib/unify/suppositionWithProffStep.js +3 -3
  38. package/lib/unify/variableWithTerm.js +11 -26
  39. package/lib/utilities/array.js +5 -14
  40. package/lib/utilities/assertion.js +24 -0
  41. package/lib/utilities/brackets.js +60 -0
  42. package/lib/utilities/message.js +52 -0
  43. package/lib/utilities/name.js +7 -7
  44. package/lib/utilities/node.js +10 -17
  45. package/lib/utilities/string.js +1 -7
  46. package/lib/utilities/subproof.js +19 -0
  47. package/lib/utilities/unify.js +30 -11
  48. package/lib/variable.js +8 -8
  49. package/lib/verifier/metaLevel.js +6 -6
  50. package/lib/verifier/statementAsCombinator.js +2 -2
  51. package/lib/verify/assertion/contained.js +66 -32
  52. package/lib/verify/assertion/defined.js +51 -46
  53. package/lib/verify/assertion/subproof.js +9 -9
  54. package/lib/verify/assertion/type.js +11 -11
  55. package/lib/verify/conclusion.js +6 -6
  56. package/lib/verify/consequent.js +6 -6
  57. package/lib/verify/declaration/metavariable.js +2 -2
  58. package/lib/verify/declaration.js +34 -20
  59. package/lib/verify/equality.js +13 -13
  60. package/lib/verify/frame.js +38 -24
  61. package/lib/verify/judgement.js +13 -13
  62. package/lib/verify/metavariable.js +2 -2
  63. package/lib/verify/premise.js +5 -5
  64. package/lib/verify/proofStep.js +15 -24
  65. package/lib/verify/statement/qualified.js +15 -124
  66. package/lib/verify/statement/unqualified.js +23 -24
  67. package/lib/verify/statement.js +24 -24
  68. package/lib/verify/statementGivenMetaType.js +3 -3
  69. package/lib/verify/supposition.js +5 -5
  70. package/package.json +2 -2
  71. package/src/constants.js +1 -0
  72. package/src/context/file.js +49 -55
  73. package/src/context/local.js +34 -31
  74. package/src/context/release.js +2 -2
  75. package/src/declaration.js +12 -10
  76. package/src/equivalence.js +27 -26
  77. package/src/judgement.js +2 -2
  78. package/src/label.js +2 -2
  79. package/src/log.js +1 -1
  80. package/src/metaType.js +7 -7
  81. package/src/metavariable.js +7 -7
  82. package/src/node/term/bracketed.js +9 -0
  83. package/src/proofStep.js +3 -48
  84. package/src/releaseContext/initialise.js +13 -24
  85. package/src/resolve/substitutions.js +134 -0
  86. package/src/rule.js +10 -5
  87. package/src/substitution/statementForMetavariable.js +99 -85
  88. package/src/substitution/termForVariable.js +50 -65
  89. package/src/substitution.js +46 -8
  90. package/src/substitutions.js +176 -10
  91. package/src/term.js +6 -0
  92. package/src/topLevelAssertion.js +10 -5
  93. package/src/type.js +4 -4
  94. package/src/unifier/metaLevel.js +11 -3
  95. package/src/unifier/statementWithCombinator.js +5 -5
  96. package/src/unifier.js +1 -1
  97. package/src/unify/metavariableWithStatement.js +17 -71
  98. package/src/unify/metavariableWithStatementGivenSubstitution.js +39 -0
  99. package/src/unify/premiseWithProofStep.js +1 -1
  100. package/src/unify/statement/qualified.js +183 -0
  101. package/src/unify/statement/unqualified.js +24 -0
  102. package/src/unify/statementWithBracketedCombinator.js +2 -2
  103. package/src/unify/statementWithCombinators.js +4 -4
  104. package/src/unify/statementWithMetaType.js +2 -2
  105. package/src/unify/statementWithSttaemetnGivenEquivalences.js +51 -0
  106. package/src/unify/suppositionWithProffStep.js +1 -1
  107. package/src/unify/variableWithTerm.js +14 -35
  108. package/src/utilities/array.js +1 -16
  109. package/src/utilities/assertion.js +19 -0
  110. package/src/utilities/brackets.js +56 -0
  111. package/src/utilities/name.js +8 -8
  112. package/src/utilities/node.js +14 -17
  113. package/src/utilities/string.js +2 -2
  114. package/src/utilities/subproof.js +18 -0
  115. package/src/utilities/unify.js +24 -12
  116. package/src/variable.js +11 -11
  117. package/src/verifier/metaLevel.js +5 -5
  118. package/src/verifier/statementAsCombinator.js +2 -2
  119. package/src/verify/assertion/contained.js +80 -38
  120. package/src/verify/assertion/defined.js +64 -55
  121. package/src/verify/assertion/subproof.js +8 -8
  122. package/src/verify/assertion/type.js +11 -11
  123. package/src/verify/conclusion.js +8 -8
  124. package/src/verify/consequent.js +8 -8
  125. package/src/verify/declaration/metavariable.js +4 -3
  126. package/src/verify/declaration.js +46 -23
  127. package/src/verify/equality.js +13 -13
  128. package/src/verify/frame.js +48 -28
  129. package/src/verify/judgement.js +13 -13
  130. package/src/verify/metavariable.js +3 -3
  131. package/src/verify/premise.js +6 -6
  132. package/src/verify/proofStep.js +14 -31
  133. package/src/verify/statement/qualified.js +18 -199
  134. package/src/verify/statement/unqualified.js +25 -31
  135. package/src/verify/statement.js +23 -23
  136. package/src/verify/statementGivenMetaType.js +2 -2
  137. package/src/verify/supposition.js +6 -6
  138. package/lib/unify/statementAtainstStatement.js +0 -49
  139. package/lib/utilities/lineIndex.js +0 -52
  140. package/lib/utilities/match.js +0 -59
  141. package/lib/utilities/verify.js +0 -19
  142. package/src/unify/statementAtainstStatement.js +0 -56
  143. package/src/utilities/match.js +0 -53
  144. package/src/utilities/verify.js +0 -14
  145. /package/src/utilities/{lineIndex.js → message.js} +0 -0
@@ -0,0 +1,99 @@
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 resolveSubstitutions;
9
+ }
10
+ });
11
+ var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
12
+ var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
13
+ var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../unifier/metaLevel"));
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ function resolveSubstitutions(substitutions, fileContextA, localContextB) {
20
+ var substitutionsResolved = substitutions.areResolved();
21
+ if (!substitutionsResolved) {
22
+ var localContextA = _local.default.fromFileContext(fileContextA), metavariableNodes = substitutions.getMetavariableNodes();
23
+ substitutionsResolved = metavariableNodes.every(function(metavariableNode) {
24
+ var complexSubstitutions = substitutions.findComplexSubstitutionsByMetavariableNode(metavariableNode), complexSubstitutionsResolved = resolveComplexSubstitutions(complexSubstitutions, substitutions, localContextA, localContextB);
25
+ if (complexSubstitutionsResolved) {
26
+ return true;
27
+ }
28
+ });
29
+ }
30
+ return substitutionsResolved;
31
+ }
32
+ function resolveComplexSubstitution(complexSubstitution, substitutions, localContextA, localContextB) {
33
+ var complexSubstitutionResolved = false;
34
+ var metavariableNode = complexSubstitution.getMetavariableNode(), simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariableNode(metavariableNode);
35
+ if (simpleSubstitution !== null) {
36
+ var complexSubstitutionResolvedAgainstSimpleSubstitution = resolveComplexSubstitutionAgainstSimpleSubstitution(complexSubstitution, simpleSubstitution, substitutions, localContextA, localContextB);
37
+ complexSubstitutionResolved = complexSubstitutionResolvedAgainstSimpleSubstitution; ///
38
+ }
39
+ return complexSubstitutionResolved;
40
+ }
41
+ function resolveComplexSubstitutions(complexSubstitutions, substitutions, localContextA, localContextB) {
42
+ var complexSubstitutionsResolved = complexSubstitutions.everySubstitution(function(complexSubstitution) {
43
+ var complexSubstitutionResolved = resolveComplexSubstitution(complexSubstitution, substitutions, localContextA, localContextB);
44
+ if (complexSubstitutionResolved) {
45
+ return true;
46
+ }
47
+ });
48
+ return complexSubstitutionsResolved;
49
+ }
50
+ function resolveComplexSubstitutionAgainstSimpleSubstitution(complexSubstitution, simpleSubstitution, substitutions, localContextA, localContextB) {
51
+ var complexSubstitutionResolvedAgainstSimpleSubstitution = false;
52
+ var statementNode = complexSubstitution.getStatementNode(), simpleSubstitutionString = simpleSubstitution.asString(localContextA, localContextB), complexSubstitutionString = complexSubstitution.asString(localContextA, localContextB);
53
+ localContextB.trace("Resolving the complex ".concat(complexSubstitutionString, " substitution against the simple ").concat(simpleSubstitutionString, " substitution..."), statementNode);
54
+ var transformedSubstitution = transformedSubstitutionFromComplexSubstitutionSimpleSubstitutionAndSubstitutions(complexSubstitution, simpleSubstitution, substitutions, localContextA, localContextB);
55
+ if (transformedSubstitution !== null) {
56
+ var variableNode = transformedSubstitution.getVariableNode(), substitution = substitutions.findSubstitutionByVariableNode(variableNode);
57
+ if (substitution === null) {
58
+ simpleSubstitution = transformedSubstitution; ///
59
+ substitutions.addSubstitution(simpleSubstitution, localContextA, localContextB);
60
+ substitutions.removeSubstitution(complexSubstitution, localContextA, localContextB);
61
+ complexSubstitutionResolvedAgainstSimpleSubstitution = true;
62
+ } else {
63
+ var termNode = transformedSubstitution.getTermNode(), termNodeMatches = substitution.matchTermNode(termNode);
64
+ if (termNodeMatches) {
65
+ substitutions.removeSubstitution(complexSubstitution, localContextA, localContextB);
66
+ complexSubstitutionResolvedAgainstSimpleSubstitution = true;
67
+ }
68
+ }
69
+ }
70
+ if (complexSubstitutionResolvedAgainstSimpleSubstitution) {
71
+ localContextB.debug("...resolved the complex ".concat(complexSubstitutionString, " substitution against the simple ").concat(simpleSubstitutionString, " substitution."), statementNode);
72
+ }
73
+ return complexSubstitutionResolvedAgainstSimpleSubstitution;
74
+ }
75
+ function unifyComplexSubstitutionStatementWithSimpleSubstitutionStatement(complexSubstitutionStatementNode, simpleSubstitutionStatementNode, substitutions, localContextA, localContextB) {
76
+ var complexSubstitutionStatementWithSimpleSubstitutionStatement;
77
+ var nodeA = complexSubstitutionStatementNode, nodeB = simpleSubstitutionStatementNode; ///
78
+ localContextA = localContextB; ///
79
+ var unified = _metaLevel.default.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
80
+ complexSubstitutionStatementWithSimpleSubstitutionStatement = unified; ///
81
+ return complexSubstitutionStatementWithSimpleSubstitutionStatement;
82
+ }
83
+ function transformedSubstitutionFromComplexSubstitutionSimpleSubstitutionAndSubstitutions(complexSubstitution, simpleSubstitution, substitutions, localContextA, localContextB) {
84
+ var transformedSubstitution;
85
+ var substitution = complexSubstitution.getSubstitution();
86
+ transformedSubstitution = substitution.transformed(substitutions);
87
+ if (transformedSubstitution !== null) {
88
+ var simpleSubstitutionStatementNode = simpleSubstitution.getStatementNode(), complexSubstitutionStatementNode = complexSubstitution.getStatementNode();
89
+ substitutions = _substitutions.default.fromNothing(); ///
90
+ var complexSubstitutionStatementWithSimpleSubstitutionStatement = unifyComplexSubstitutionStatementWithSimpleSubstitutionStatement(complexSubstitutionStatementNode, simpleSubstitutionStatementNode, substitutions, localContextA, localContextB);
91
+ if (complexSubstitutionStatementWithSimpleSubstitutionStatement) {
92
+ var substitution1 = transformedSubstitution; ///
93
+ transformedSubstitution = substitution1.transformed(substitutions);
94
+ }
95
+ }
96
+ return transformedSubstitution;
97
+ }
98
+
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXNvbHZlL3N1YnN0aXR1dGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCBTdWJzdGl0dXRpb25zIGZyb20gXCIuLi9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgbWV0YUxldmVsVW5pZmllciBmcm9tIFwiLi4vdW5pZmllci9tZXRhTGV2ZWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gIGxldCBzdWJzdGl0dXRpb25zUmVzb2x2ZWQgPSBzdWJzdGl0dXRpb25zLmFyZVJlc29sdmVkKCk7XG5cbiAgaWYgKCFzdWJzdGl0dXRpb25zUmVzb2x2ZWQpIHtcbiAgICBjb25zdCBsb2NhbENvbnRleHRBID0gTG9jYWxDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dEEpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVzID0gc3Vic3RpdHV0aW9ucy5nZXRNZXRhdmFyaWFibGVOb2RlcygpO1xuXG4gICAgc3Vic3RpdHV0aW9uc1Jlc29sdmVkID0gbWV0YXZhcmlhYmxlTm9kZXMuZXZlcnkoKG1ldGF2YXJpYWJsZU5vZGUpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9ucy5maW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkID0gcmVzb2x2ZUNvbXBsZXhTdWJzdGl0dXRpb25zKGNvbXBsZXhTdWJzdGl0dXRpb25zLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zUmVzb2x2ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc1Jlc29sdmVkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29tcGxleFN1YnN0aXR1dGlvbihjb21wbGV4U3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gIGxldCBjb21wbGV4U3Vic3RpdHV0aW9uUmVzb2x2ZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gY29tcGxleFN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgIHNpbXBsZVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAoc2ltcGxlU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkQWdhaW5zdFNpbXBsZVN1YnN0aXR1dGlvbiA9IHJlc29sdmVDb21wbGV4U3Vic3RpdHV0aW9uQWdhaW5zdFNpbXBsZVN1YnN0aXR1dGlvbihjb21wbGV4U3Vic3RpdHV0aW9uLCBzaW1wbGVTdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkID0gY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkQWdhaW5zdFNpbXBsZVN1YnN0aXR1dGlvbjsgLy8vXG4gIH1cblxuICByZXR1cm4gY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29tcGxleFN1YnN0aXR1dGlvbnMoY29tcGxleFN1YnN0aXR1dGlvbnMsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnNSZXNvbHZlZCA9IGNvbXBsZXhTdWJzdGl0dXRpb25zLmV2ZXJ5U3Vic3RpdHV0aW9uKChjb21wbGV4U3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkID0gcmVzb2x2ZUNvbXBsZXhTdWJzdGl0dXRpb24oY29tcGxleFN1YnN0aXR1dGlvbiwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG5cbiAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29tcGxleFN1YnN0aXR1dGlvbkFnYWluc3RTaW1wbGVTdWJzdGl0dXRpb24oY29tcGxleFN1YnN0aXR1dGlvbiwgc2ltcGxlU3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gIGxldCBjb21wbGV4U3Vic3RpdHV0aW9uUmVzb2x2ZWRBZ2FpbnN0U2ltcGxlU3Vic3RpdHV0aW9uID0gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGNvbXBsZXhTdWJzdGl0dXRpb24uZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzaW1wbGVTdWJzdGl0dXRpb25TdHJpbmcgPSBzaW1wbGVTdWJzdGl0dXRpb24uYXNTdHJpbmcobG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0QiksXG4gICAgICAgIGNvbXBsZXhTdWJzdGl0dXRpb25TdHJpbmcgPSBjb21wbGV4U3Vic3RpdHV0aW9uLmFzU3RyaW5nKGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gIGxvY2FsQ29udGV4dEIudHJhY2UoYFJlc29sdmluZyB0aGUgY29tcGxleCAke2NvbXBsZXhTdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbiBhZ2FpbnN0IHRoZSBzaW1wbGUgJHtzaW1wbGVTdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbi4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uID0gdHJhbnNmb3JtZWRTdWJzdGl0dXRpb25Gcm9tQ29tcGxleFN1YnN0aXR1dGlvblNpbXBsZVN1YnN0aXR1dGlvbkFuZFN1YnN0aXR1dGlvbnMoY29tcGxleFN1YnN0aXR1dGlvbiwgc2ltcGxlU3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICBpZiAodHJhbnNmb3JtZWRTdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbiA9PT0gbnVsbCkge1xuICAgICAgc2ltcGxlU3Vic3RpdHV0aW9uID0gdHJhbnNmb3JtZWRTdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzaW1wbGVTdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgICBzdWJzdGl0dXRpb25zLnJlbW92ZVN1YnN0aXR1dGlvbihjb21wbGV4U3Vic3RpdHV0aW9uLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgICAgY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkQWdhaW5zdFNpbXBsZVN1YnN0aXR1dGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdHJhbnNmb3JtZWRTdWJzdGl0dXRpb24uZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IHN1YnN0aXR1dGlvbi5tYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgICBzdWJzdGl0dXRpb25zLnJlbW92ZVN1YnN0aXR1dGlvbihjb21wbGV4U3Vic3RpdHV0aW9uLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uUmVzb2x2ZWRBZ2FpbnN0U2ltcGxlU3Vic3RpdHV0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkQWdhaW5zdFNpbXBsZVN1YnN0aXR1dGlvbikge1xuICAgIGxvY2FsQ29udGV4dEIuZGVidWcoYC4uLnJlc29sdmVkIHRoZSBjb21wbGV4ICR7Y29tcGxleFN1YnN0aXR1dGlvblN0cmluZ30gc3Vic3RpdHV0aW9uIGFnYWluc3QgdGhlIHNpbXBsZSAke3NpbXBsZVN1YnN0aXR1dGlvblN0cmluZ30gc3Vic3RpdHV0aW9uLmAsIHN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBsZXhTdWJzdGl0dXRpb25SZXNvbHZlZEFnYWluc3RTaW1wbGVTdWJzdGl0dXRpb247XG59XG5cbmZ1bmN0aW9uIHVuaWZ5Q29tcGxleFN1YnN0aXR1dGlvblN0YXRlbWVudFdpdGhTaW1wbGVTdWJzdGl0dXRpb25TdGF0ZW1lbnQoY29tcGxleFN1YnN0aXR1dGlvblN0YXRlbWVudE5vZGUsIHNpbXBsZVN1YnN0aXR1dGlvblN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgbGV0IGNvbXBsZXhTdWJzdGl0dXRpb25TdGF0ZW1lbnRXaXRoU2ltcGxlU3Vic3RpdHV0aW9uU3RhdGVtZW50O1xuXG4gIGNvbnN0IG5vZGVBID0gY29tcGxleFN1YnN0aXR1dGlvblN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgbm9kZUIgPSBzaW1wbGVTdWJzdGl0dXRpb25TdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgbG9jYWxDb250ZXh0QSA9IGxvY2FsQ29udGV4dEI7ICAvLy9cblxuICBjb25zdCB1bmlmaWVkID0gbWV0YUxldmVsVW5pZmllci51bmlmeShub2RlQSwgbm9kZUIsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gIGNvbXBsZXhTdWJzdGl0dXRpb25TdGF0ZW1lbnRXaXRoU2ltcGxlU3Vic3RpdHV0aW9uU3RhdGVtZW50ID0gdW5pZmllZDsgIC8vL1xuXG4gIHJldHVybiBjb21wbGV4U3Vic3RpdHV0aW9uU3RhdGVtZW50V2l0aFNpbXBsZVN1YnN0aXR1dGlvblN0YXRlbWVudDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtZWRTdWJzdGl0dXRpb25Gcm9tQ29tcGxleFN1YnN0aXR1dGlvblNpbXBsZVN1YnN0aXR1dGlvbkFuZFN1YnN0aXR1dGlvbnMoY29tcGxleFN1YnN0aXR1dGlvbiwgc2ltcGxlU3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gIGxldCB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbjtcblxuICBjb25zdCBzdWJzdGl0dXRpb24gPSBjb21wbGV4U3Vic3RpdHV0aW9uLmdldFN1YnN0aXR1dGlvbigpO1xuXG4gIHRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uLnRyYW5zZm9ybWVkKHN1YnN0aXR1dGlvbnMpO1xuXG4gIGlmICh0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHNpbXBsZVN1YnN0aXR1dGlvblN0YXRlbWVudE5vZGUgPSBzaW1wbGVTdWJzdGl0dXRpb24uZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgIGNvbXBsZXhTdWJzdGl0dXRpb25TdGF0ZW1lbnROb2RlID0gY29tcGxleFN1YnN0aXR1dGlvbi5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBzdWJzdGl0dXRpb25zID0gU3Vic3RpdHV0aW9ucy5mcm9tTm90aGluZygpOyAgLy8vXG5cbiAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9uU3RhdGVtZW50V2l0aFNpbXBsZVN1YnN0aXR1dGlvblN0YXRlbWVudCA9IHVuaWZ5Q29tcGxleFN1YnN0aXR1dGlvblN0YXRlbWVudFdpdGhTaW1wbGVTdWJzdGl0dXRpb25TdGF0ZW1lbnQoY29tcGxleFN1YnN0aXR1dGlvblN0YXRlbWVudE5vZGUsIHNpbXBsZVN1YnN0aXR1dGlvblN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25TdGF0ZW1lbnRXaXRoU2ltcGxlU3Vic3RpdHV0aW9uU3RhdGVtZW50KSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgICAgIHRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uLnRyYW5zZm9ybWVkKHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJyZXNvbHZlU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJmaWxlQ29udGV4dEEiLCJsb2NhbENvbnRleHRCIiwic3Vic3RpdHV0aW9uc1Jlc29sdmVkIiwiYXJlUmVzb2x2ZWQiLCJsb2NhbENvbnRleHRBIiwiTG9jYWxDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwibWV0YXZhcmlhYmxlTm9kZXMiLCJnZXRNZXRhdmFyaWFibGVOb2RlcyIsImV2ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZSIsImNvbXBsZXhTdWJzdGl0dXRpb25zIiwiZmluZENvbXBsZXhTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGVOb2RlIiwiY29tcGxleFN1YnN0aXR1dGlvbnNSZXNvbHZlZCIsInJlc29sdmVDb21wbGV4U3Vic3RpdHV0aW9ucyIsInJlc29sdmVDb21wbGV4U3Vic3RpdHV0aW9uIiwiY29tcGxleFN1YnN0aXR1dGlvbiIsImNvbXBsZXhTdWJzdGl0dXRpb25SZXNvbHZlZCIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJzaW1wbGVTdWJzdGl0dXRpb24iLCJmaW5kU2ltcGxlU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlIiwiY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkQWdhaW5zdFNpbXBsZVN1YnN0aXR1dGlvbiIsInJlc29sdmVDb21wbGV4U3Vic3RpdHV0aW9uQWdhaW5zdFNpbXBsZVN1YnN0aXR1dGlvbiIsImV2ZXJ5U3Vic3RpdHV0aW9uIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaW1wbGVTdWJzdGl0dXRpb25TdHJpbmciLCJhc1N0cmluZyIsImNvbXBsZXhTdWJzdGl0dXRpb25TdHJpbmciLCJ0cmFjZSIsInRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uIiwidHJhbnNmb3JtZWRTdWJzdGl0dXRpb25Gcm9tQ29tcGxleFN1YnN0aXR1dGlvblNpbXBsZVN1YnN0aXR1dGlvbkFuZFN1YnN0aXR1dGlvbnMiLCJ2YXJpYWJsZU5vZGUiLCJnZXRWYXJpYWJsZU5vZGUiLCJzdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUiLCJhZGRTdWJzdGl0dXRpb24iLCJyZW1vdmVTdWJzdGl0dXRpb24iLCJ0ZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwidGVybU5vZGVNYXRjaGVzIiwibWF0Y2hUZXJtTm9kZSIsImRlYnVnIiwidW5pZnlDb21wbGV4U3Vic3RpdHV0aW9uU3RhdGVtZW50V2l0aFNpbXBsZVN1YnN0aXR1dGlvblN0YXRlbWVudCIsImNvbXBsZXhTdWJzdGl0dXRpb25TdGF0ZW1lbnROb2RlIiwic2ltcGxlU3Vic3RpdHV0aW9uU3RhdGVtZW50Tm9kZSIsImNvbXBsZXhTdWJzdGl0dXRpb25TdGF0ZW1lbnRXaXRoU2ltcGxlU3Vic3RpdHV0aW9uU3RhdGVtZW50Iiwibm9kZUEiLCJub2RlQiIsInVuaWZpZWQiLCJtZXRhTGV2ZWxVbmlmaWVyIiwidW5pZnkiLCJnZXRTdWJzdGl0dXRpb24iLCJ0cmFuc2Zvcm1lZCIsIlN1YnN0aXR1dGlvbnMiLCJmcm9tTm90aGluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUF3QkE7Ozs0REFKQztvRUFDQztnRUFDRzs7Ozs7O0FBRWQsU0FBU0EscUJBQXFCQyxhQUFhLEVBQUVDLFlBQVksRUFBRUMsYUFBYTtJQUNyRixJQUFJQyx3QkFBd0JILGNBQWNJLFdBQVc7SUFFckQsSUFBSSxDQUFDRCx1QkFBdUI7UUFDMUIsSUFBTUUsZ0JBQWdCQyxjQUFZLENBQUNDLGVBQWUsQ0FBQ04sZUFDN0NPLG9CQUFvQlIsY0FBY1Msb0JBQW9CO1FBRTVETix3QkFBd0JLLGtCQUFrQkUsS0FBSyxDQUFDLFNBQUNDO1lBQy9DLElBQU1DLHVCQUF1QlosY0FBY2EsMENBQTBDLENBQUNGLG1CQUNoRkcsK0JBQStCQyw0QkFBNEJILHNCQUFzQlosZUFBZUssZUFBZUg7WUFFckgsSUFBSVksOEJBQThCO2dCQUNoQyxPQUFPO1lBQ1Q7UUFDRjtJQUNGO0lBRUEsT0FBT1g7QUFDVDtBQUVBLFNBQVNhLDJCQUEyQkMsbUJBQW1CLEVBQUVqQixhQUFhLEVBQUVLLGFBQWEsRUFBRUgsYUFBYTtJQUNsRyxJQUFJZ0IsOEJBQThCO0lBRWxDLElBQU1QLG1CQUFtQk0sb0JBQW9CRSxtQkFBbUIsSUFDMURDLHFCQUFxQnBCLGNBQWNxQix3Q0FBd0MsQ0FBQ1Y7SUFFbEYsSUFBSVMsdUJBQXVCLE1BQU07UUFDL0IsSUFBTUUs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
package/lib/rule.js CHANGED
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _substitutions = /*#__PURE__*/ _interop_require_default(require("./substitutions"));
12
+ var _substitutions1 = /*#__PURE__*/ _interop_require_default(require("./resolve/substitutions"));
12
13
  var _premisesWithProofSteps = /*#__PURE__*/ _interop_require_default(require("./unify/premisesWithProofSteps"));
13
14
  var _conclusionWithStatement = /*#__PURE__*/ _interop_require_default(require("./unify/conclusionWithStatement"));
14
15
  function _class_call_check(instance, Constructor) {
@@ -75,7 +76,10 @@ var Rule = /*#__PURE__*/ function() {
75
76
  var substitutions = _substitutions.default.fromNothing(), proofSteps = localContext.getProofSteps(), premisesA = this.premises, proofStepsB = proofSteps, fileContextA = this.fileContext, localContextB = localContext, premisesUnified = (0, _premisesWithProofSteps.default)(premisesA, proofStepsB, substitutions, fileContextA, localContextB);
76
77
  if (premisesUnified) {
77
78
  var conclusionA = this.conclusion, conclusionUnified = (0, _conclusionWithStatement.default)(conclusionA, statementNode, substitutions, fileContextA, localContextB);
78
- statementUnified = conclusionUnified; ///
79
+ if (conclusionUnified) {
80
+ var substitutionsResolved = (0, _substitutions1.default)(substitutions, fileContextA, localContextB);
81
+ statementUnified = substitutionsResolved; ///
82
+ }
79
83
  }
80
84
  return statementUnified;
81
85
  }
@@ -83,13 +87,13 @@ var Rule = /*#__PURE__*/ function() {
83
87
  {
84
88
  key: "matchMetavariableNode",
85
89
  value: function matchMetavariableNode(metavariableNode) {
86
- var matchesMetavariableNode = this.labels.some(function(label) {
87
- var labelMatchesMetavariableNode = label.matchMetavariableNode(metavariableNode);
88
- if (labelMatchesMetavariableNode) {
90
+ var metavariableNodeMatches = this.labels.some(function(label) {
91
+ var metavariableNodeMatches = label.matchMetavariableNode(metavariableNode);
92
+ if (metavariableNodeMatches) {
89
93
  return true;
90
94
  }
91
95
  });
92
- return matchesMetavariableNode;
96
+ return metavariableNodeMatches;
93
97
  }
94
98
  }
95
99
  ], [
@@ -104,4 +108,4 @@ var Rule = /*#__PURE__*/ function() {
104
108
  return Rule;
105
109
  }();
106
110
 
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9ucyBmcm9tIFwiLi9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgdW5pZnlQcmVtaXNlc1dpdGhQcm9vZlN0ZXBzIGZyb20gXCIuL3VuaWZ5L3ByZW1pc2VzV2l0aFByb29mU3RlcHNcIjtcbmltcG9ydCB1bmlmeUNvbmNsdXNpb25XaXRoU3RhdGVtZW50IGZyb20gXCIuL3VuaWZ5L2NvbmNsdXNpb25XaXRoU3RhdGVtZW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ1bGUge1xuICBjb25zdHJ1Y3RvcihsYWJlbHMsIHByZW1pc2VzLCBjb25jbHVzaW9uLCBmaWxlQ29udGV4dCkge1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMucHJlbWlzZXMgPSBwcmVtaXNlcztcbiAgICB0aGlzLmNvbmNsdXNpb24gPSBjb25jbHVzaW9uO1xuICAgIHRoaXMuZmlsZUNvbnRleHQgPSBmaWxlQ29udGV4dDtcbiAgfVxuXG4gIGdldExhYmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHM7XG4gIH1cblxuICBnZXRQcmVtaXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVtaXNlcztcbiAgfVxuXG4gIGdldENvbmNsdXNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uY2x1c2lvbjtcbiAgfVxuXG4gIGdldEZpbGVDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVDb250ZXh0O1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgcHJvb2ZTdGVwcyA9IGxvY2FsQ29udGV4dC5nZXRQcm9vZlN0ZXBzKCksXG4gICAgICAgICAgcHJlbWlzZXNBID0gdGhpcy5wcmVtaXNlcyxcbiAgICAgICAgICBwcm9vZlN0ZXBzQiA9IHByb29mU3RlcHMsIC8vL1xuICAgICAgICAgIGZpbGVDb250ZXh0QSA9IHRoaXMuZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgICBsb2NhbENvbnRleHRCID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBwcmVtaXNlc1VuaWZpZWQgPSB1bmlmeVByZW1pc2VzV2l0aFByb29mU3RlcHMocHJlbWlzZXNBLCBwcm9vZlN0ZXBzQiwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgIGlmIChwcmVtaXNlc1VuaWZpZWQpIHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25BID0gdGhpcy5jb25jbHVzaW9uLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uVW5pZmllZCA9IHVuaWZ5Q29uY2x1c2lvbldpdGhTdGF0ZW1lbnQoY29uY2x1c2lvbkEsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG5cbiAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSBjb25jbHVzaW9uVW5pZmllZDsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMubGFiZWxzLnNvbWUoKGxhYmVsKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbE1hdGNoZXNNZXRhdmFyaWFibGVOb2RlID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobGFiZWxNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtYXRjaGVzTWV0YXZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzUHJlbWlzZXNDb25jbHVzaW9uQW5kRmlsZUNvbnRleHQobGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCBydWxlID0gbmV3IFJ1bGUobGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJSdWxlIiwibGFiZWxzIiwicHJlbWlzZXMiLCJjb25jbHVzaW9uIiwiZmlsZUNvbnRleHQiLCJnZXRMYWJlbHMiLCJnZXRQcmVtaXNlcyIsImdldENvbmNsdXNpb24iLCJnZXRGaWxlQ29udGV4dCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImxvY2FsQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZWQiLCJzdWJzdGl0dXRpb25zIiwiU3Vic3RpdHV0aW9ucyIsImZyb21Ob3RoaW5nIiwicHJvb2ZTdGVwcyIsImdldFByb29mU3RlcHMiLCJwcmVtaXNlc0EiLCJwcm9vZlN0ZXBzQiIsImZpbGVDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJwcmVtaXNlc1VuaWZpZWQiLCJ1bmlmeVByZW1pc2VzV2l0aFByb29mU3RlcHMiLCJjb25jbHVzaW9uQSIsImNvbmNsdXNpb25VbmlmaWVkIiwidW5pZnlDb25jbHVzaW9uV2l0aFN0YXRlbWVudCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSIsInNvbWUiLCJsYWJlbCIsImxhYmVsTWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUiLCJmcm9tTGFiZWxzUHJlbWlzZXNDb25jbHVzaW9uQW5kRmlsZUNvbnRleHQiLCJydWxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU1xQkE7OztvRUFKSzs2RUFDYzs4RUFDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixJQUFBLEFBQU1BLHFCQUFOO2FBQU1BLEtBQ1BDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFdBQVc7Z0NBRGxDSjtRQUVqQixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTs7a0JBTEZKOztZQVFuQkssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixNQUFNO1lBQ3BCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixRQUFRO1lBQ3RCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixVQUFVO1lBQ3hCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixXQUFXO1lBQ3pCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVDLGFBQWEsRUFBRUMsWUFBWTtnQkFDeEMsSUFBSUMsbUJBQW1CO2dCQUV2QixJQUFNQyxnQkFBZ0JDLHNCQUFhLENBQUNDLFdBQVcsSUFDekNDLGFBQWFMLGFBQWFNLGFBQWEsSUFDdkNDLFlBQVksSUFBSSxDQUFDaEIsUUFBUSxFQUN6QmlCLGNBQWNILFlBQ2RJLGVBQWUsSUFBSSxDQUFDaEIsV0FBVyxFQUMvQmlCLGdCQUFnQlYsY0FDaEJXLGtCQUFrQkMsSUFBQUEsK0JBQTJCLEVBQUNMLFdBQVdDLGFBQWFOLGVBQWVPLGNBQWNDO2dCQUV6RyxJQUFJQyxpQkFBaUI7b0JBQ25CLElBQU1FLGNBQWMsSUFBSSxDQUFDckIsVUFBVSxFQUM3QnNCLG9CQUFvQkMsSUFBQUEsZ0NBQTRCLEVBQUNGLGFBQWFkLGVBQWVHLGVBQWVPLGNBQWNDO29CQUVoSFQsbUJBQW1CYSxtQkFBb0IsR0FBRztnQkFDNUM7Z0JBRUEsT0FBT2I7WUFDVDs7O1lBRUFlLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JDLGdCQUFnQjtnQkFDcEMsSUFBTUMsMEJBQTBCLElBQUksQ0FBQzVCLE1BQU0sQ0FBQzZCLElBQUksQ0FBQyxTQUFDQztvQkFDaEQsSUFBTUMsK0JBQStCRCxNQUFNSixxQkFBcUIsQ0FBQ0M7b0JBRWpFLElBQUlJLDhCQUE4Qjt3QkFDaEMsT0FBTztvQkFDVDtnQkFDRjtnQkFFQSxPQUFPSDtZQUNUOzs7O1lBRU9JLEtBQUFBO21CQUFQLFNBQU9BLDJDQUEyQ2hDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFdBQVc7Z0JBQ3pGLElBQU04QixPQUFPLElBMURJbEMsS0EwREtDLFFBQVFDLFVBQVVDLFlBQVlDO2dCQUVwRCxPQUFPOEI7WUFDVDs7O1dBN0RtQmxDIn0=
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9ucyBmcm9tIFwiLi9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgcmVzb2x2ZVN1YnN0aXR1dGlvbnMgZnJvbSBcIi4vcmVzb2x2ZS9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgdW5pZnlQcmVtaXNlc1dpdGhQcm9vZlN0ZXBzIGZyb20gXCIuL3VuaWZ5L3ByZW1pc2VzV2l0aFByb29mU3RlcHNcIjtcbmltcG9ydCB1bmlmeUNvbmNsdXNpb25XaXRoU3RhdGVtZW50IGZyb20gXCIuL3VuaWZ5L2NvbmNsdXNpb25XaXRoU3RhdGVtZW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ1bGUge1xuICBjb25zdHJ1Y3RvcihsYWJlbHMsIHByZW1pc2VzLCBjb25jbHVzaW9uLCBmaWxlQ29udGV4dCkge1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMucHJlbWlzZXMgPSBwcmVtaXNlcztcbiAgICB0aGlzLmNvbmNsdXNpb24gPSBjb25jbHVzaW9uO1xuICAgIHRoaXMuZmlsZUNvbnRleHQgPSBmaWxlQ29udGV4dDtcbiAgfVxuXG4gIGdldExhYmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHM7XG4gIH1cblxuICBnZXRQcmVtaXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVtaXNlcztcbiAgfVxuXG4gIGdldENvbmNsdXNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uY2x1c2lvbjtcbiAgfVxuXG4gIGdldEZpbGVDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVDb250ZXh0O1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgcHJvb2ZTdGVwcyA9IGxvY2FsQ29udGV4dC5nZXRQcm9vZlN0ZXBzKCksXG4gICAgICAgICAgcHJlbWlzZXNBID0gdGhpcy5wcmVtaXNlcyxcbiAgICAgICAgICBwcm9vZlN0ZXBzQiA9IHByb29mU3RlcHMsIC8vL1xuICAgICAgICAgIGZpbGVDb250ZXh0QSA9IHRoaXMuZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgICBsb2NhbENvbnRleHRCID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBwcmVtaXNlc1VuaWZpZWQgPSB1bmlmeVByZW1pc2VzV2l0aFByb29mU3RlcHMocHJlbWlzZXNBLCBwcm9vZlN0ZXBzQiwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgIGlmIChwcmVtaXNlc1VuaWZpZWQpIHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25BID0gdGhpcy5jb25jbHVzaW9uLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uVW5pZmllZCA9IHVuaWZ5Q29uY2x1c2lvbldpdGhTdGF0ZW1lbnQoY29uY2x1c2lvbkEsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG5cbiAgICAgIGlmIChjb25jbHVzaW9uVW5pZmllZCkge1xuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25zUmVzb2x2ZWQgPSByZXNvbHZlU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSBzdWJzdGl0dXRpb25zUmVzb2x2ZWQ7IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoaXMubGFiZWxzLnNvbWUoKGxhYmVsKSA9PiB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGxhYmVsLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21MYWJlbHNQcmVtaXNlc0NvbmNsdXNpb25BbmRGaWxlQ29udGV4dChsYWJlbHMsIHByZW1pc2VzLCBjb25jbHVzaW9uLCBmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZShsYWJlbHMsIHByZW1pc2VzLCBjb25jbHVzaW9uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlJ1bGUiLCJsYWJlbHMiLCJwcmVtaXNlcyIsImNvbmNsdXNpb24iLCJmaWxlQ29udGV4dCIsImdldExhYmVscyIsImdldFByZW1pc2VzIiwiZ2V0Q29uY2x1c2lvbiIsImdldEZpbGVDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwibG9jYWxDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllZCIsInN1YnN0aXR1dGlvbnMiLCJTdWJzdGl0dXRpb25zIiwiZnJvbU5vdGhpbmciLCJwcm9vZlN0ZXBzIiwiZ2V0UHJvb2ZTdGVwcyIsInByZW1pc2VzQSIsInByb29mU3RlcHNCIiwiZmlsZUNvbnRleHRBIiwibG9jYWxDb250ZXh0QiIsInByZW1pc2VzVW5pZmllZCIsInVuaWZ5UHJlbWlzZXNXaXRoUHJvb2ZTdGVwcyIsImNvbmNsdXNpb25BIiwiY29uY2x1c2lvblVuaWZpZWQiLCJ1bmlmeUNvbmNsdXNpb25XaXRoU3RhdGVtZW50Iiwic3Vic3RpdHV0aW9uc1Jlc29sdmVkIiwicmVzb2x2ZVN1YnN0aXR1dGlvbnMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJmcm9tTGFiZWxzUHJlbWlzZXNDb25jbHVzaW9uQW5kRmlsZUNvbnRleHQiLCJydWxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU9xQkE7OztvRUFMSztxRUFDTzs2RUFDTzs4RUFDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixJQUFBLEFBQU1BLHFCQUFOO2FBQU1BLEtBQ1BDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFdBQVc7Z0NBRGxDSjtRQUVqQixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTs7a0JBTEZKOztZQVFuQkssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixNQUFNO1lBQ3BCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixRQUFRO1lBQ3RCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixVQUFVO1lBQ3hCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixXQUFXO1lBQ3pCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVDLGFBQWEsRUFBRUMsWUFBWTtnQkFDeEMsSUFBSUMsbUJBQW1CO2dCQUV2QixJQUFNQyxnQkFBZ0JDLHNCQUFhLENBQUNDLFdBQVcsSUFDekNDLGFBQWFMLGFBQWFNLGFBQWEsSUFDdkNDLFlBQVksSUFBSSxDQUFDaEIsUUFBUSxFQUN6QmlCLGNBQWNILFlBQ2RJLGVBQWUsSUFBSSxDQUFDaEIsV0FBVyxFQUMvQmlCLGdCQUFnQlYsY0FDaEJXLGtCQUFrQkMsSUFBQUEsK0JBQTJCLEVBQUNMLFdBQVdDLGFBQWFOLGVBQWVPLGNBQWNDO2dCQUV6RyxJQUFJQyxpQkFBaUI7b0JBQ25CLElBQU1FLGNBQWMsSUFBSSxDQUFDckIsVUFBVSxFQUM3QnNCLG9CQUFvQkMsSUFBQUEsZ0NBQTRCLEVBQUNGLGFBQWFkLGVBQWVHLGVBQWVPLGNBQWNDO29CQUVoSCxJQUFJSSxtQkFBbUI7d0JBQ3JCLElBQU1FLHdCQUF3QkMsSUFBQUEsdUJBQW9CLEVBQUNmLGVBQWVPLGNBQWNDO3dCQUVoRlQsbUJBQW1CZSx1QkFBdUIsR0FBRztvQkFDL0M7Z0JBQ0Y7Z0JBRUEsT0FBT2Y7WUFDVDs7O1lBRUFpQixLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCQyxnQkFBZ0I7Z0JBQ3BDLElBQU1DLDBCQUEwQixJQUFJLENBQUM5QixNQUFNLENBQUMrQixJQUFJLENBQUMsU0FBQ0M7b0JBQ2hELElBQU1GLDBCQUEwQkUsTUFBTUoscUJBQXFCLENBQUNDO29CQUU1RCxJQUFJQyx5QkFBeUI7d0JBQzNCLE9BQU87b0JBQ1Q7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDs7OztZQUVPRyxLQUFBQTttQkFBUCxTQUFPQSwyQ0FBMkNqQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxXQUFXO2dCQUN6RixJQUFNK0IsT0FBTyxJQTlESW5DLEtBOERLQyxRQUFRQyxVQUFVQyxZQUFZQztnQkFFcEQsT0FBTytCO1lBQ1Q7OztXQWpFbUJuQyJ9
@@ -8,20 +8,10 @@ Object.defineProperty(exports, "default", {
8
8
  return StatementForMetavariableSubstitution;
9
9
  }
10
10
  });
11
- var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
12
11
  var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
13
- var _termForVariable = /*#__PURE__*/ _interop_require_default(require("./termForVariable"));
14
- var _statementAtainstStatement = /*#__PURE__*/ _interop_require_default(require("../unify/statementAtainstStatement"));
12
+ var _termForVariable = /*#__PURE__*/ _interop_require_default(require("../substitution/termForVariable"));
15
13
  var _query = require("../utilities/query");
16
- var _match = require("../utilities/match");
17
- function _array_like_to_array(arr, len) {
18
- if (len == null || len > arr.length) len = arr.length;
19
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
20
- return arr2;
21
- }
22
- function _array_without_holes(arr) {
23
- if (Array.isArray(arr)) return _array_like_to_array(arr);
24
- }
14
+ var _brackets = require("../utilities/brackets");
25
15
  function _assert_this_initialized(self) {
26
16
  if (self === void 0) {
27
17
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -75,12 +65,6 @@ function _interop_require_default(obj) {
75
65
  default: obj
76
66
  };
77
67
  }
78
- function _iterable_to_array(iter) {
79
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
80
- }
81
- function _non_iterable_spread() {
82
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
83
- }
84
68
  function _possible_constructor_return(self, call) {
85
69
  if (call && (_type_of(call) === "object" || typeof call === "function")) {
86
70
  return call;
@@ -94,21 +78,10 @@ function _set_prototype_of(o, p) {
94
78
  };
95
79
  return _set_prototype_of(o, p);
96
80
  }
97
- function _to_consumable_array(arr) {
98
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
99
- }
100
81
  function _type_of(obj) {
101
82
  "@swc/helpers - typeof";
102
83
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
103
84
  }
104
- function _unsupported_iterable_to_array(o, minLen) {
105
- if (!o) return;
106
- if (typeof o === "string") return _array_like_to_array(o, minLen);
107
- var n = Object.prototype.toString.call(o).slice(8, -1);
108
- if (n === "Object" && o.constructor) n = o.constructor.name;
109
- if (n === "Map" || n === "Set") return Array.from(n);
110
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
111
- }
112
85
  function _is_native_reflect_construct() {
113
86
  try {
114
87
  var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
@@ -117,31 +90,31 @@ function _is_native_reflect_construct() {
117
90
  return !!result;
118
91
  })();
119
92
  }
120
- var metavariableNodeQuery = (0, _query.nodeQuery)("/statement/metavariable!");
93
+ var statementNodeQuery = (0, _query.nodeQuery)("/substitution/statement!"), metavariableNodeQuery = (0, _query.nodeQuery)("/*/metavariable!");
121
94
  var StatementForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
122
95
  _inherits(StatementForMetavariableSubstitution, Substitution);
123
- function StatementForMetavariableSubstitution(metavariableNode, statementNode, substitution) {
96
+ function StatementForMetavariableSubstitution(statementNode, metavariableNode, substitution) {
124
97
  _class_call_check(this, StatementForMetavariableSubstitution);
125
98
  var _this;
126
99
  _this = _call_super(this, StatementForMetavariableSubstitution);
127
- _this.metavariableNode = metavariableNode;
128
100
  _this.statementNode = statementNode;
101
+ _this.metavariableNode = metavariableNode;
129
102
  _this.substitution = substitution;
130
103
  return _this;
131
104
  }
132
105
  _create_class(StatementForMetavariableSubstitution, [
133
- {
134
- key: "getMetavariableNode",
135
- value: function getMetavariableNode() {
136
- return this.metavariableNode;
137
- }
138
- },
139
106
  {
140
107
  key: "getStatementNode",
141
108
  value: function getStatementNode() {
142
109
  return this.statementNode;
143
110
  }
144
111
  },
112
+ {
113
+ key: "getMetavariableNode",
114
+ value: function getMetavariableNode() {
115
+ return this.metavariableNode;
116
+ }
117
+ },
145
118
  {
146
119
  key: "getSubstitution",
147
120
  value: function getSubstitution() {
@@ -155,10 +128,30 @@ var StatementForMetavariableSubstitution = /*#__PURE__*/ function(Substitution)
155
128
  return node;
156
129
  }
157
130
  },
131
+ {
132
+ key: "isSimple",
133
+ value: function isSimple() {
134
+ var simple = this.substitution === null;
135
+ return simple;
136
+ }
137
+ },
138
+ {
139
+ key: "transformed",
140
+ value: function transformed(substitutions) {
141
+ var transformedSubstitution = null;
142
+ var transformedStatementNode = transformStatementNode(this.statementNode, substitutions);
143
+ if (transformedStatementNode !== null) {
144
+ var substitution = null, statementNode = transformedStatementNode, metavariableNode = this.metavariableNode, statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(statementNode, metavariableNode, substitution);
145
+ transformedSubstitution = statementForMetavariableSubstitution; ///
146
+ }
147
+ return transformedSubstitution;
148
+ }
149
+ },
158
150
  {
159
151
  key: "matchStatementNode",
160
152
  value: function matchStatementNode(statementNode) {
161
- var statementNodeA = statementNode, statementNodeB = this.statementNode, statementNodesMatch = (0, _match.matchStatementModuloBrackets)(statementNodeA, statementNodeB), statementNodeMatches = statementNodesMatch; ///
153
+ statementNode = (0, _brackets.stripBracketsFromStatement)(statementNode); ///
154
+ var statementNodeMatches = this.statementNode.match(statementNode);
162
155
  return statementNodeMatches;
163
156
  }
164
157
  },
@@ -170,87 +163,89 @@ var StatementForMetavariableSubstitution = /*#__PURE__*/ function(Substitution)
170
163
  }
171
164
  },
172
165
  {
173
- key: "unifyStatement",
174
- value: function unifyStatement1(statementNode, substitutions, localContextA, localContextB) {
175
- var statementNodeMatches;
176
- var substitution = this.substitution, statementNodeA = statementNode, statementNodeB = this.statementNode; ///
177
- statementNodeMatches = unifyStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB);
178
- if (!statementNodeMatches) {
179
- var bracketedStatementChildNode = (0, _match.bracketedStatementChildNodeFromStatementNode)(statementNode);
180
- if (bracketedStatementChildNode !== null) {
181
- var statementNodeA1 = bracketedStatementChildNode; ///
182
- statementNodeMatches = unifyStatement(statementNodeA1, statementNodeB, substitution, substitutions, localContextA, localContextB);
183
- }
184
- }
185
- return statementNodeMatches;
186
- }
187
- },
188
- {
189
- key: "unifyWithEquivalence",
190
- value: function unifyWithEquivalence(equivalence, substitutions, localContextA, localContextB) {
191
- var unifiedWithEquivalence = false; ///
192
- var metavariableNode = metavariableNodeQuery(this.statementNode);
193
- if (metavariableNode !== null) {
194
- substitutions = _to_consumable_array(substitutions);
195
- var metaLevelUnifier = _shim.default.metaLevelUnifier, nodeA = this.metavariableNode, nodeB = metavariableNode, unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
196
- unifiedWithEquivalence = unified; ///
197
- }
198
- return unifiedWithEquivalence;
166
+ key: "matchMetavariableNodeAndSubstitutionNode",
167
+ value: function matchMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode) {
168
+ var metavariableNodeAndSubstitutionNodeMatches = false;
169
+ return metavariableNodeAndSubstitutionNodeMatches;
199
170
  }
200
171
  },
201
172
  {
202
173
  key: "asString",
203
174
  value: function asString(localContextA, localContextB) {
204
- var statementNodeB = this.statementNode, statementStringB = localContextB.nodeAsString(statementNodeB), metavariableNodeA = this.metavariableNode, metavariableStringA = localContextA.nodeAsString(metavariableNodeA), string = "[".concat(statementStringB, " for ").concat(metavariableStringA, "]");
175
+ var string;
176
+ var statementNodeB = this.statementNode, statementStringB = localContextB.nodeAsString(statementNodeB), metavariableNodeA = this.metavariableNode, metavariableStringA = localContextA.nodeAsString(metavariableNodeA);
177
+ if (this.substitution === null) {
178
+ string = "[".concat(statementStringB, " for ").concat(metavariableStringA, "]");
179
+ } else {
180
+ var substitutionString = this.substitution.asString(localContextA, localContextA);
181
+ string = "[".concat(statementStringB, " for ").concat(metavariableStringA).concat(substitutionString, "]");
182
+ }
205
183
  return string;
206
184
  }
207
185
  }
208
186
  ], [
209
187
  {
210
- key: "fromMetavariableNodeAndStatementNode",
211
- value: function fromMetavariableNodeAndStatementNode(metavariableNode, statementNode) {
212
- var statementForMetavariableSubstitution;
213
- var substitution = null;
214
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(metavariableNode, statementNode, substitution);
215
- var bracketedStatementChildNode = (0, _match.bracketedStatementChildNodeFromStatementNode)(statementNode);
216
- if (bracketedStatementChildNode !== null) {
217
- var _$statementNode = bracketedStatementChildNode; ///
218
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(metavariableNode, _$statementNode, substitution);
188
+ key: "fromSubstitutionNode",
189
+ value: function fromSubstitutionNode(substitutionNode) {
190
+ var statementForMetavariableSubstitution = null;
191
+ var statementNode = statementNodeQuery(substitutionNode), metavariableNode = metavariableNodeQuery(substitutionNode);
192
+ if (statementNode !== null) {
193
+ statementNode = (0, _brackets.stripBracketsFromStatement)(statementNode); ///
194
+ var substitution = null;
195
+ statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(statementNode, metavariableNode, substitution);
219
196
  }
220
197
  return statementForMetavariableSubstitution;
221
198
  }
222
199
  },
223
200
  {
224
- key: "fromMetavariableNodeStatementNodeAndSubstitutionNode",
225
- value: function fromMetavariableNodeStatementNodeAndSubstitutionNode(metavariableNode, statementNode, substitutionNode) {
226
- var statementForMetavariableSubstitution;
227
- var substitution = null;
228
- if (substitutionNode !== null) {
229
- var termForVariableSubstitution = _termForVariable.default.fromSubstitutionNode(substitutionNode);
230
- substitution = termForVariableSubstitution; ///
231
- }
232
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(metavariableNode, statementNode, substitution);
233
- var bracketedStatementChildNode = (0, _match.bracketedStatementChildNodeFromStatementNode)(statementNode);
234
- if (bracketedStatementChildNode !== null) {
235
- var _$statementNode = bracketedStatementChildNode; ///
236
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(metavariableNode, _$statementNode, substitution);
237
- }
201
+ key: "fromStatementNodeAndMetavariableNode",
202
+ value: function fromStatementNodeAndMetavariableNode(statementNode, metavariableNode) {
203
+ statementNode = (0, _brackets.stripBracketsFromStatement)(statementNode); ///
204
+ var substitution = null, statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(statementNode, metavariableNode, substitution);
205
+ return statementForMetavariableSubstitution;
206
+ }
207
+ },
208
+ {
209
+ key: "fromStatementNodeMetavariableNodeAndSubstitutionNode",
210
+ value: function fromStatementNodeMetavariableNodeAndSubstitutionNode(statementNode, metavariableNode, substitutionNode) {
211
+ statementNode = (0, _brackets.stripBracketsFromStatement)(statementNode); ///
212
+ var substitution = substitutionFromSubstitutionNode(substitutionNode), statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(statementNode, metavariableNode, substitution);
238
213
  return statementForMetavariableSubstitution;
239
214
  }
240
215
  }
241
216
  ]);
242
217
  return StatementForMetavariableSubstitution;
243
218
  }(_substitution.default);
244
- function unifyStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB) {
245
- var statementUnified;
219
+ function substitutionFromSubstitutionNode(substitutionNode) {
220
+ var substitution = null;
246
221
  if (substitution === null) {
247
- var statementNodeAMatchesStatementNodeB = statementNodeB.match(statementNodeA);
248
- statementUnified = statementNodeAMatchesStatementNodeB; ///
249
- } else {
250
- var statementUnifiedWithStatement = (0, _statementAtainstStatement.default)(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB);
251
- statementUnified = statementUnifiedWithStatement; ///
222
+ var termForVariableSubstitution = _termForVariable.default.fromSubstitutionNode(substitutionNode);
223
+ if (termForVariableSubstitution !== null) {
224
+ substitution = termForVariableSubstitution; ///
225
+ }
226
+ }
227
+ if (substitution === null) {
228
+ var statementForMetavariableSubstitution = StatementForMetavariableSubstitution.fromSubstitutionNode(substitutionNode);
229
+ if (statementForMetavariableSubstitution !== null) {
230
+ substitution = statementForMetavariableSubstitution; ///
231
+ }
232
+ }
233
+ return substitution;
234
+ }
235
+ function transformStatementNode(statementNode, substitutions) {
236
+ var transformedStatementNode = null;
237
+ var metavariableNode = metavariableNodeQuery(statementNode);
238
+ if (metavariableNode !== null) {
239
+ substitutions.someSubstitution(function(substitution) {
240
+ var substitutionMatchesVariableNode = substitution.matchVariableNode(metavariableNode);
241
+ if (substitutionMatchesVariableNode) {
242
+ var _$statementNode = substitution.getStatementNode();
243
+ transformedStatementNode = _$statementNode; ////
244
+ return true;
245
+ }
246
+ });
252
247
  }
253
- return statementUnified;
248
+ return transformedStatementNode;
254
249
  }
255
250
 
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgc2hpbSBmcm9tIFwiLi4vc2hpbVwiO1xuaW1wb3J0IFN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uXCI7XG5pbXBvcnQgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIGZyb20gXCIuL3Rlcm1Gb3JWYXJpYWJsZVwiO1xuaW1wb3J0IHVuaWZ5U3RhdGVtZW50V2l0aFN0YXRlbWVudCBmcm9tIFwiLi4vdW5pZnkvc3RhdGVtZW50QXRhaW5zdFN0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBtYXRjaFN0YXRlbWVudE1vZHVsb0JyYWNrZXRzLCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvbWF0Y2hcIjtcblxuY29uc3QgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9tZXRhdmFyaWFibGUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gZXh0ZW5kcyBTdWJzdGl0dXRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXRhdmFyaWFibGVOb2RlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb24pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZTtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICAgIHRoaXMuc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGVBID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZUIgPSB0aGlzLnN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnROb2Rlc01hdGNoID0gbWF0Y2hTdGF0ZW1lbnRNb2R1bG9CcmFja2V0cyhzdGF0ZW1lbnROb2RlQSwgc3RhdGVtZW50Tm9kZUIpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGVNYXRjaGVzID0gc3RhdGVtZW50Tm9kZXNNYXRjaDsgLy8vXG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5tZXRhdmFyaWFibGVOb2RlLm1hdGNoKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICAgIGxldCBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHRoaXMuc3Vic3RpdHV0aW9uLCAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnROb2RlQSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnROb2RlQiA9IHRoaXMuc3RhdGVtZW50Tm9kZTsgLy8vXG5cbiAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGVBLCBzdGF0ZW1lbnROb2RlQiwgc3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgIGlmICghc3RhdGVtZW50Tm9kZU1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGVBID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlOyAvLy9cblxuICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGVBLCBzdGF0ZW1lbnROb2RlQiwgc3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICB1bmlmeVdpdGhFcXVpdmFsZW5jZShlcXVpdmFsZW5jZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICAgIGxldCB1bmlmaWVkV2l0aEVxdWl2YWxlbmNlID0gZmFsc2U7ICAvLy9cblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkodGhpcy5zdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBzdWJzdGl0dXRpb25zID0gWyAvLy9cbiAgICAgICAgLi4uc3Vic3RpdHV0aW9uc1xuICAgICAgXTtcblxuICAgICAgY29uc3QgeyBtZXRhTGV2ZWxVbmlmaWVyIH0gPSBzaGltLFxuICAgICAgICAgICAgbm9kZUEgPSB0aGlzLm1ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgbm9kZUIgPSBtZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICAgIHVuaWZpZWQgPSBtZXRhTGV2ZWxVbmlmaWVyLnVuaWZ5KG5vZGVBLCBub2RlQiwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG5cbiAgICAgIHVuaWZpZWRXaXRoRXF1aXZhbGVuY2UgPSB1bmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gdW5pZmllZFdpdGhFcXVpdmFsZW5jZTtcbiAgfVxuXG4gIGFzU3RyaW5nKGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlQiA9IHRoaXMuc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZ0IgPSBsb2NhbENvbnRleHRCLm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlQiksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZUEgPSB0aGlzLm1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmdBID0gbG9jYWxDb250ZXh0QS5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZUEpLFxuICAgICAgICAgIHN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmdCfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmdBfV1gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXZhcmlhYmxlTm9kZUFuZFN0YXRlbWVudE5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3RhdGVtZW50Tm9kZSkge1xuICAgIGxldCBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247XG5cbiAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbmV3IFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGVOb2RlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb24pO1xuXG4gICAgY29uc3QgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBpZiAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlOyAvLy9cblxuICAgICAgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbmV3IFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGVOb2RlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbU1ldGF2YXJpYWJsZU5vZGVTdGF0ZW1lbnROb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgbGV0IHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjtcblxuICAgIGxldCBzdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiA9IFRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbi5mcm9tU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgc3Vic3RpdHV0aW9uID0gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uOyAvLy9cbiAgICB9XG5cbiAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbik7XG5cbiAgICBjb25zdCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGU7IC8vL1xuXG4gICAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjtcbiAgfVxufVxuXG5mdW5jdGlvbiB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlQSwgc3RhdGVtZW50Tm9kZUIsIHN1YnN0aXR1dGlvbiwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICBsZXQgc3RhdGVtZW50VW5pZmllZDtcblxuICBpZiAoc3Vic3RpdHV0aW9uID09PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZUFNYXRjaGVzU3RhdGVtZW50Tm9kZUIgPSBzdGF0ZW1lbnROb2RlQi5tYXRjaChzdGF0ZW1lbnROb2RlQSk7XG5cbiAgICBzdGF0ZW1lbnRVbmlmaWVkID0gc3RhdGVtZW50Tm9kZUFNYXRjaGVzU3RhdGVtZW50Tm9kZUI7IC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50ID0gdW5pZnlTdGF0ZW1lbnRXaXRoU3RhdGVtZW50KHN0YXRlbWVudE5vZGVBLCBzdGF0ZW1lbnROb2RlQiwgc3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZWQgPSBzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudDsgLy8vXG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllZDtcbn0iXSwibmFtZXMiOlsiU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZSIsInN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb24iLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImdldFN1YnN0aXR1dGlvbiIsImdldE5vZGUiLCJub2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZUEiLCJzdGF0ZW1lbnROb2RlQiIsInN0YXRlbWVudE5vZGVzTWF0Y2giLCJtYXRjaFN0YXRlbWVudE1vZHVsb0JyYWNrZXRzIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoIiwidW5pZnlTdGF0ZW1lbnQiLCJzdWJzdGl0dXRpb25zIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUiLCJicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZSIsInVuaWZ5V2l0aEVxdWl2YWxlbmNlIiwiZXF1aXZhbGVuY2UiLCJ1bmlmaWVkV2l0aEVxdWl2YWxlbmNlIiwibWV0YUxldmVsVW5pZmllciIsInNoaW0iLCJub2RlQSIsIm5vZGVCIiwidW5pZmllZCIsInVuaWZ5IiwiYXNTdHJpbmciLCJzdGF0ZW1lbnRTdHJpbmdCIiwibm9kZUFzU3RyaW5nIiwibWV0YXZhcmlhYmxlTm9kZUEiLCJtZXRhdmFyaWFibGVTdHJpbmdBIiwic3RyaW5nIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGVBbmRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGVTdGF0ZW1lbnROb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJ0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24iLCJUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24iLCJmcm9tU3Vic3RpdHV0aW9uTm9kZSIsIlN1YnN0aXR1dGlvbiIsInN0YXRlbWVudFVuaWZpZWQiLCJzdGF0ZW1lbnROb2RlQU1hdGNoZXNTdGF0ZW1lbnROb2RlQiIsInN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnRXaXRoU3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVlxQkE7OzsyREFWSjttRUFDUTtzRUFDZTtnRkFDQTtxQkFFZDtxQkFDaUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTNGLElBQU1DLHdCQUF3QkMs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
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcbmltcG9ydCBUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24gZnJvbSBcIi4uL3N1YnN0aXR1dGlvbi90ZXJtRm9yVmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5cbmNvbnN0IHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdWJzdGl0dXRpb24vc3RhdGVtZW50IVwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qL21ldGF2YXJpYWJsZSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudE5vZGUsIG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbikge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGU7XG4gICAgdGhpcy5zdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb247XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGlzU2ltcGxlKCkge1xuICAgIGNvbnN0IHNpbXBsZSA9ICh0aGlzLnN1YnN0aXR1dGlvbiA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2ltcGxlO1xuICB9XG5cbiAgdHJhbnNmb3JtZWQoc3Vic3RpdHV0aW9ucykge1xuICAgIGxldCB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZFN0YXRlbWVudE5vZGUgPSB0cmFuc2Zvcm1TdGF0ZW1lbnROb2RlKHRoaXMuc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICBpZiAodHJhbnNmb3JtZWRTdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBudWxsLFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHRyYW5zZm9ybWVkU3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5tZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24oc3RhdGVtZW50Tm9kZSwgbWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgICAgdHJhbnNmb3JtZWRTdWJzdGl0dXRpb24gPSBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIHN0YXRlbWVudE5vZGUgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnROb2RlKTsgLy8vXG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHRoaXMuc3RhdGVtZW50Tm9kZS5tYXRjaChzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSB0aGlzLm1ldGF2YXJpYWJsZU5vZGUubWF0Y2gobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXM7XG4gIH1cblxuICBhc1N0cmluZyhsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGVCID0gdGhpcy5zdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nQiA9IGxvY2FsQ29udGV4dEIubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGVCKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlQSA9IHRoaXMubWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZ0EgPSBsb2NhbENvbnRleHRBLm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlQSk7XG5cbiAgICBpZiAodGhpcy5zdWJzdGl0dXRpb24gPT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmdCfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmdBfV1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25TdHJpbmcgPSB0aGlzLnN1YnN0aXR1dGlvbi5hc1N0cmluZyhsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRBKTtcblxuICAgICAgc3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ0J9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ0F9JHtzdWJzdGl0dXRpb25TdHJpbmd9XWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgbGV0IHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBsZXQgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZW1lbnROb2RlID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSk7IC8vL1xuXG4gICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0YXRlbWVudE5vZGUsIG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50Tm9kZUFuZE1ldGF2YXJpYWJsZU5vZGUoc3RhdGVtZW50Tm9kZSwgbWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIHN0YXRlbWVudE5vZGUgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnROb2RlKTsgLy8vXG5cbiAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24oc3RhdGVtZW50Tm9kZSwgbWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGVNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShzdGF0ZW1lbnROb2RlLCBtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgc3RhdGVtZW50Tm9kZSA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudE5vZGUpOyAvLy9cblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbkZyb21TdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24oc3RhdGVtZW50Tm9kZSwgbWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkge1xuICBsZXQgc3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICBpZiAoc3Vic3RpdHV0aW9uID09PSBudWxsKSB7XG4gICAgY29uc3QgdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uID0gVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21TdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgaWYgKHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3Vic3RpdHV0aW9uID0gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uOyAvLy9cbiAgICB9XG4gIH1cblxuICBpZiAoc3Vic3RpdHV0aW9uID09PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21TdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgaWYgKHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uOyAgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCB0cmFuc2Zvcm1lZFN0YXRlbWVudE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICBzdWJzdGl0dXRpb25zLnNvbWVTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uTWF0Y2hlc1ZhcmlhYmxlTm9kZSA9IHN1YnN0aXR1dGlvbi5tYXRjaFZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbk1hdGNoZXNWYXJpYWJsZU5vZGUpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN1YnN0aXR1dGlvbi5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICAgICAgdHJhbnNmb3JtZWRTdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZTsgLy8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkU3RhdGVtZW50Tm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImdldFN0YXRlbWVudE5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZ2V0U3Vic3RpdHV0aW9uIiwiZ2V0Tm9kZSIsIm5vZGUiLCJpc1NpbXBsZSIsInNpbXBsZSIsInRyYW5zZm9ybWVkIiwic3Vic3RpdHV0aW9ucyIsInRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uIiwidHJhbnNmb3JtZWRTdGF0ZW1lbnROb2RlIiwidHJhbnNmb3JtU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJtZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJhc1N0cmluZyIsImxvY2FsQ29udGV4dEEiLCJsb2NhbENvbnRleHRCIiwic3RyaW5nIiwic3RhdGVtZW50Tm9kZUIiLCJzdGF0ZW1lbnRTdHJpbmdCIiwibm9kZUFzU3RyaW5nIiwibWV0YXZhcmlhYmxlTm9kZUEiLCJtZXRhdmFyaWFibGVTdHJpbmdBIiwic3Vic3RpdHV0aW9uU3RyaW5nIiwiZnJvbVN1YnN0aXR1dGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Tm9kZUFuZE1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tU3RhdGVtZW50Tm9kZU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbk5vZGUiLCJTdWJzdGl0dXRpb24iLCJ0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24iLCJUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24iLCJzb21lU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uTWF0Y2hlc1ZhcmlhYmxlTm9kZSIsIm1hdGNoVmFyaWFibGVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVdxQkE7OzttRUFUSTtzRUFDZTtxQkFFZDt3QkFDaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFM0MsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLDZCQUMvQkMsd0JBQXdCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXpCLElBQUEsQUFBTUYscURBQU47Y0FBTUE7YUFBQUEscUNBQ1BJLGFBQWEsRUFBRUMsZ0JB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