occam-verify-cli 0.0.844 → 0.0.846

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 (79) hide show
  1. package/lib/assignment/equality.js +4 -4
  2. package/lib/assignment/variable.js +4 -4
  3. package/lib/conclusion.js +5 -5
  4. package/lib/context/local.js +14 -1
  5. package/lib/equality.js +5 -3
  6. package/lib/equivalence.js +17 -17
  7. package/lib/mixins/nodesVerifier/intrinsiclevel.js +2 -2
  8. package/lib/mixins/nodesVerifier/metaLevel.js +2 -2
  9. package/lib/premise.js +6 -5
  10. package/lib/substitution/statementForMetavariable.js +29 -9
  11. package/lib/substitution/termForVariable.js +8 -1
  12. package/lib/term.js +9 -9
  13. package/lib/utilities/array.js +1 -11
  14. package/lib/utilities/equivalences.js +14 -14
  15. package/lib/verifier/node/metastatement.js +5 -4
  16. package/lib/verifier/node/statementAsCombinator.js +6 -6
  17. package/lib/verifier/node/termAsConstructor.js +5 -5
  18. package/lib/verifier/nodes/metaLevel.js +7 -7
  19. package/lib/verifier/nodes/metaLevelToIntrinsicLevel.js +30 -31
  20. package/lib/verifier/nodes/statementAgainstCombinator.js +11 -11
  21. package/lib/verifier/nodes/substitution.js +223 -0
  22. package/lib/verifier/nodes/termAgainstConstructor.js +10 -10
  23. package/lib/verify/containment.js +29 -10
  24. package/lib/verify/defining.js +6 -6
  25. package/lib/verify/equality.js +17 -17
  26. package/lib/verify/givenType.js +6 -6
  27. package/lib/verify/givenVariable.js +6 -6
  28. package/lib/verify/metavariable.js +6 -6
  29. package/lib/verify/statement/qualified.js +13 -13
  30. package/lib/verify/statement/unqualified.js +2 -2
  31. package/lib/verify/statement.js +40 -40
  32. package/lib/verify/statementAsCombinator.js +2 -1
  33. package/lib/verify/term.js +30 -30
  34. package/lib/verify/termAndGivenType.js +7 -7
  35. package/lib/verify/termAsConstructor.js +3 -2
  36. package/lib/verify/terms.js +7 -7
  37. package/lib/verify/type.js +7 -7
  38. package/lib/verify/typeAssertion.js +19 -19
  39. package/lib/verify/variable.js +6 -6
  40. package/package.json +1 -1
  41. package/src/assignment/equality.js +5 -5
  42. package/src/assignment/variable.js +5 -5
  43. package/src/conclusion.js +6 -6
  44. package/src/context/local.js +12 -0
  45. package/src/equality.js +6 -4
  46. package/src/equivalence.js +16 -16
  47. package/src/mixins/nodesVerifier/intrinsiclevel.js +2 -2
  48. package/src/mixins/nodesVerifier/metaLevel.js +1 -1
  49. package/src/premise.js +9 -4
  50. package/src/substitution/statementForMetavariable.js +44 -12
  51. package/src/substitution/termForVariable.js +10 -0
  52. package/src/term.js +8 -8
  53. package/src/utilities/array.js +0 -6
  54. package/src/utilities/equivalences.js +13 -13
  55. package/src/verifier/node/metastatement.js +8 -9
  56. package/src/verifier/node/statementAsCombinator.js +8 -11
  57. package/src/verifier/node/termAsConstructor.js +6 -8
  58. package/src/verifier/nodes/metaLevel.js +6 -6
  59. package/src/verifier/nodes/metaLevelToIntrinsicLevel.js +37 -41
  60. package/src/verifier/nodes/statementAgainstCombinator.js +10 -10
  61. package/src/verifier/nodes/substitution.js +125 -0
  62. package/src/verifier/nodes/termAgainstConstructor.js +9 -9
  63. package/src/verify/containment.js +38 -12
  64. package/src/verify/defining.js +5 -5
  65. package/src/verify/equality.js +16 -16
  66. package/src/verify/givenType.js +5 -5
  67. package/src/verify/givenVariable.js +5 -5
  68. package/src/verify/metavariable.js +5 -5
  69. package/src/verify/statement/qualified.js +12 -13
  70. package/src/verify/statement/unqualified.js +1 -2
  71. package/src/verify/statement.js +39 -39
  72. package/src/verify/statementAsCombinator.js +1 -0
  73. package/src/verify/term.js +29 -29
  74. package/src/verify/termAndGivenType.js +7 -7
  75. package/src/verify/termAsConstructor.js +3 -1
  76. package/src/verify/terms.js +7 -7
  77. package/src/verify/type.js +6 -6
  78. package/src/verify/typeAssertion.js +18 -18
  79. package/src/verify/variable.js +5 -5
@@ -19,38 +19,38 @@ function _interop_require_default(obj) {
19
19
  };
20
20
  }
21
21
  var leftTermNodeQuery = (0, _query.nodeQuery)("/equality/argument[0]/term!"), rightTermNodeQuery = (0, _query.nodeQuery)("/equality/argument[1]/term!");
22
- function verifyEquality(equalityNode, assignments, derived, context, verifyAhead) {
22
+ function verifyEquality(equalityNode, assignments, derived, localContext, verifyAhead) {
23
23
  var equalityVerified;
24
- var equalityString = context.nodeAsString(equalityNode);
25
- context.trace("Verifying the '".concat(equalityString, "' equality..."), equalityNode);
24
+ var equalityString = localContext.nodeAsString(equalityNode);
25
+ localContext.trace("Verifying the '".concat(equalityString, "' equality..."), equalityNode);
26
26
  var verifyEqualityFunctions = [
27
27
  verifyDerivedEquality,
28
28
  verifyGivenEquality
29
29
  ];
30
30
  equalityVerified = verifyEqualityFunctions.some(function(verifyEqualityFunction) {
31
- var equalityVerified = verifyEqualityFunction(equalityNode, assignments, derived, context, verifyAhead);
31
+ var equalityVerified = verifyEqualityFunction(equalityNode, assignments, derived, localContext, verifyAhead);
32
32
  if (equalityVerified) {
33
33
  return true;
34
34
  }
35
35
  });
36
36
  if (equalityVerified) {
37
- context.debug("...verified the '".concat(equalityString, "' equality."), equalityNode);
37
+ localContext.debug("...verified the '".concat(equalityString, "' equality."), equalityNode);
38
38
  }
39
39
  return equalityVerified;
40
40
  }
41
- function verifyDerivedEquality(equalityNode, assignments, derived, context, verifyAhead) {
41
+ function verifyDerivedEquality(equalityNode, assignments, derived, localContext, verifyAhead) {
42
42
  var derivedEqualityVerified = false;
43
43
  if (derived) {
44
- var equalityString = context.nodeAsString(equalityNode);
45
- context.trace("Verifying the '".concat(equalityString, "' derived equality..."), equalityNode);
44
+ var equalityString = localContext.nodeAsString(equalityNode);
45
+ localContext.trace("Verifying the '".concat(equalityString, "' derived equality..."), equalityNode);
46
46
  var terms = [], leftTermNode = leftTermNodeQuery(equalityNode), rightTermNode = rightTermNodeQuery(equalityNode), termNodes = [
47
47
  leftTermNode,
48
48
  rightTermNode
49
- ], termsVerified = (0, _terms.default)(termNodes, terms, context, function() {
49
+ ], termsVerified = (0, _terms.default)(termNodes, terms, localContext, function() {
50
50
  var verifiedAhead = false;
51
51
  var firstTerm = (0, _array.first)(terms), secondTerm = (0, _array.second)(terms), leftTerm = firstTerm, rightTerm = secondTerm, equality = _equality.default.fromLeftTermRightTermAndEqualityNode(leftTerm, rightTerm, equalityNode);
52
52
  if (equality !== null) {
53
- var equalityEqual = equality.isEqual(context);
53
+ var equalityEqual = equality.isEqual(localContext);
54
54
  if (equalityEqual) {
55
55
  var equalityAssignment = _equality1.default.fromEquality(equality), assignment = equalityAssignment; ///
56
56
  assignments.push(assignment);
@@ -64,20 +64,20 @@ function verifyDerivedEquality(equalityNode, assignments, derived, context, veri
64
64
  });
65
65
  derivedEqualityVerified = termsVerified; ///
66
66
  if (derivedEqualityVerified) {
67
- context.trace("...verified the '".concat(equalityString, "' derived equality."), equalityNode);
67
+ localContext.trace("...verified the '".concat(equalityString, "' derived equality."), equalityNode);
68
68
  }
69
69
  }
70
70
  return derivedEqualityVerified;
71
71
  }
72
- function verifyGivenEquality(equalityNode, assignments, derived, context, verifyAhead) {
72
+ function verifyGivenEquality(equalityNode, assignments, derived, localContext, verifyAhead) {
73
73
  var givenEqualityVerified = false;
74
74
  if (!derived) {
75
- var equalityString = context.nodeAsString(equalityNode);
76
- context.trace("Verifying the '".concat(equalityString, "' given equality..."), equalityNode);
75
+ var equalityString = localContext.nodeAsString(equalityNode);
76
+ localContext.trace("Verifying the '".concat(equalityString, "' given equality..."), equalityNode);
77
77
  var terms = [], leftTermNode = leftTermNodeQuery(equalityNode), rightTermNode = rightTermNodeQuery(equalityNode), termNodes = [
78
78
  leftTermNode,
79
79
  rightTermNode
80
- ], termsVerified = (0, _terms.default)(termNodes, terms, context, function() {
80
+ ], termsVerified = (0, _terms.default)(termNodes, terms, localContext, function() {
81
81
  var verifiedAhead = false;
82
82
  var firstTerm = (0, _array.first)(terms), secondTerm = (0, _array.second)(terms), leftTerm = firstTerm, rightTerm = secondTerm, equality = _equality.default.fromLeftTermRightTermAndEqualityNode(leftTerm, rightTerm, equalityNode);
83
83
  if (equality !== null) {
@@ -92,10 +92,10 @@ function verifyGivenEquality(equalityNode, assignments, derived, context, verify
92
92
  });
93
93
  givenEqualityVerified = termsVerified; ///
94
94
  if (givenEqualityVerified) {
95
- context.trace("...verified the '".concat(equalityString, "' given equality."), equalityNode);
95
+ localContext.trace("...verified the '".concat(equalityString, "' given equality."), equalityNode);
96
96
  }
97
97
  }
98
98
  return givenEqualityVerified;
99
99
  }
100
100
 
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZXF1YWxpdHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBFcXVhbGl0eSBmcm9tIFwiLi4vZXF1YWxpdHlcIjtcbmltcG9ydCB2ZXJpZnlUZXJtcyBmcm9tIFwiLi4vdmVyaWZ5L3Rlcm1zXCI7XG5pbXBvcnQgRXF1YWxpdHlBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L2VxdWFsaXR5XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IGZpcnN0LCBzZWNvbmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmNvbnN0IGxlZnRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2VxdWFsaXR5L2FyZ3VtZW50WzBdL3Rlcm0hXCIpLFxuICAgICAgcmlnaHRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2VxdWFsaXR5L2FyZ3VtZW50WzFdL3Rlcm0hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZXF1YWxpdHlWZXJpZmllZDtcblxuICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKGVxdWFsaXR5Tm9kZSk7XG5cbiAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5Li4uYCwgZXF1YWxpdHlOb2RlKTtcblxuICBjb25zdCB2ZXJpZnlFcXVhbGl0eUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlEZXJpdmVkRXF1YWxpdHksXG4gICAgdmVyaWZ5R2l2ZW5FcXVhbGl0eVxuICBdO1xuXG4gIGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eUZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlFcXVhbGl0eUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5RnVuY3Rpb24oZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgaWYgKGVxdWFsaXR5VmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGVxdWFsaXR5VmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS5gLCBlcXVhbGl0eU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGVxdWFsaXR5VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeURlcml2ZWRFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZGVyaXZlZEVxdWFsaXR5VmVyaWZpZWQgPSBmYWxzZTtcblxuICBpZiAoZGVyaXZlZCkge1xuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoZXF1YWxpdHlOb2RlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5Li4uYCwgZXF1YWxpdHlOb2RlKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgbGVmdFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlUXVlcnkoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHRUZXJtTm9kZVF1ZXJ5KGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgdGVybU5vZGVzID0gW1xuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlLFxuICAgICAgICAgICAgcmlnaHRUZXJtTm9kZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgdGVybXNWZXJpZmllZCA9IHZlcmlmeVRlcm1zKHRlcm1Ob2RlcywgdGVybXMsIGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgIHNlY29uZFRlcm0gPSBzZWNvbmQodGVybXMpLFxuICAgICAgICAgICAgICAgICAgbGVmdFRlcm0gPSBmaXJzdFRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRUZXJtID0gc2Vjb25kVGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21MZWZ0VGVybVJpZ2h0VGVybUFuZEVxdWFsaXR5Tm9kZShsZWZ0VGVybSwgcmlnaHRUZXJtLCBlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29uc3QgZXF1YWxpdHlFcXVhbCA9IGVxdWFsaXR5LmlzRXF1YWwoY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgaWYgKGVxdWFsaXR5RXF1YWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcXVhbGl0eUFzc2lnbm1lbnQgPSBFcXVhbGl0eUFzc2lnbm1lbnQuZnJvbUVxdWFsaXR5KGVxdWFsaXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50ID0gZXF1YWxpdHlBc3NpZ25tZW50OyAvLy9cblxuICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgICAgICAgICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgICAgICAgICAgICAgYXNzaWdubWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICAgIH0pO1xuXG4gICAgZGVyaXZlZEVxdWFsaXR5VmVyaWZpZWQgPSB0ZXJtc1ZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChkZXJpdmVkRXF1YWxpdHlWZXJpZmllZCkge1xuICAgICAgY29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS5gLCBlcXVhbGl0eU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkRXF1YWxpdHlWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5R2l2ZW5FcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZ2l2ZW5FcXVhbGl0eVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhlcXVhbGl0eU5vZGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGdpdmVuIGVxdWFsaXR5Li4uYCwgZXF1YWxpdHlOb2RlKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgbGVmdFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlUXVlcnkoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHRUZXJtTm9kZVF1ZXJ5KGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgdGVybU5vZGVzID0gW1xuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlLFxuICAgICAgICAgICAgcmlnaHRUZXJtTm9kZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgdGVybXNWZXJpZmllZCA9IHZlcmlmeVRlcm1zKHRlcm1Ob2RlcywgdGVybXMsIGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgIHNlY29uZFRlcm0gPSBzZWNvbmQodGVybXMpLFxuICAgICAgICAgICAgICAgICAgbGVmdFRlcm0gPSBmaXJzdFRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRUZXJtID0gc2Vjb25kVGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21MZWZ0VGVybVJpZ2h0VGVybUFuZEVxdWFsaXR5Tm9kZShsZWZ0VGVybSwgcmlnaHRUZXJtLCBlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29uc3QgZXF1YWxpdHlBc3NpZ25tZW50ID0gRXF1YWxpdHlBc3NpZ25tZW50LmZyb21FcXVhbGl0eShlcXVhbGl0eSksXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgPSBlcXVhbGl0eUFzc2lnbm1lbnQ7IC8vL1xuXG4gICAgICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICAgICAgaWYgKCF2ZXJpZmllZEFoZWFkKSB7XG4gICAgICAgICAgICAgICAgYXNzaWdubWVudHMucG9wKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBnaXZlbkVxdWFsaXR5VmVyaWZpZWQgPSB0ZXJtc1ZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChnaXZlbkVxdWFsaXR5VmVyaWZpZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZlcmlmaWVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGdpdmVuIGVxdWFsaXR5LmAsIGVxdWFsaXR5Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdpdmVuRXF1YWxpdHlWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlFcXVhbGl0eSIsImxlZnRUZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicmlnaHRUZXJtTm9kZVF1ZXJ5IiwiZXF1YWxpdHlOb2RlIiwiYXNzaWdubWVudHMiLCJkZXJpdmVkIiwiY29udGV4dCIsInZlcmlmeUFoZWFkIiwiZXF1YWxpdHlWZXJpZmllZCIsImVxdWFsaXR5U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlFcXVhbGl0eUZ1bmN0aW9ucyIsInZlcmlmeURlcml2ZWRFcXVhbGl0eSIsInZlcmlmeUdpdmVuRXF1YWxpdHkiLCJzb21lIiwidmVyaWZ5RXF1YWxpdHlGdW5jdGlvbiIsImRlYnVnIiwiZGVyaXZlZEVxdWFsaXR5VmVyaWZpZWQiLCJ0ZXJtcyIsImxlZnRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJ0ZXJtTm9kZXMiLCJ0ZXJtc1ZlcmlmaWVkIiwidmVyaWZ5VGVybXMiLCJ2ZXJpZmllZEFoZWFkIiwiZmlyc3RUZXJtIiwiZmlyc3QiLCJzZWNvbmRUZXJtIiwic2Vjb25kIiwibGVmdFRlcm0iLCJyaWdodFRlcm0iLCJlcXVhbGl0eSIsIkVxdWFsaXR5IiwiZnJvbUxlZnRUZXJtUmlnaHRUZXJtQW5kRXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlFcXVhbCIsImlzRXF1YWwiLCJlcXVhbGl0eUFzc2lnbm1lbnQiLCJFcXVhbGl0eUFzc2lnbm1lbnQiLCJmcm9tRXF1YWxpdHkiLCJhc3NpZ25tZW50IiwicHVzaCIsInBvcCIsImdpdmVuRXF1YWxpdHlWZXJpZmllZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7OzsrREFW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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZXF1YWxpdHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBFcXVhbGl0eSBmcm9tIFwiLi4vZXF1YWxpdHlcIjtcbmltcG9ydCB2ZXJpZnlUZXJtcyBmcm9tIFwiLi4vdmVyaWZ5L3Rlcm1zXCI7XG5pbXBvcnQgRXF1YWxpdHlBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L2VxdWFsaXR5XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IGZpcnN0LCBzZWNvbmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmNvbnN0IGxlZnRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2VxdWFsaXR5L2FyZ3VtZW50WzBdL3Rlcm0hXCIpLFxuICAgICAgcmlnaHRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2VxdWFsaXR5L2FyZ3VtZW50WzFdL3Rlcm0hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBlcXVhbGl0eVZlcmlmaWVkO1xuXG4gIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhlcXVhbGl0eU5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5Li4uYCwgZXF1YWxpdHlOb2RlKTtcblxuICBjb25zdCB2ZXJpZnlFcXVhbGl0eUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlEZXJpdmVkRXF1YWxpdHksXG4gICAgdmVyaWZ5R2l2ZW5FcXVhbGl0eVxuICBdO1xuXG4gIGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eUZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlFcXVhbGl0eUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5RnVuY3Rpb24oZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAoZXF1YWxpdHlWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAoZXF1YWxpdHlWZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCwgZXF1YWxpdHlOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBlcXVhbGl0eVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkRXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZGVyaXZlZEVxdWFsaXR5VmVyaWZpZWQgPSBmYWxzZTtcblxuICBpZiAoZGVyaXZlZCkge1xuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhlcXVhbGl0eU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS4uLmAsIGVxdWFsaXR5Tm9kZSk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZVF1ZXJ5KGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGVRdWVyeShlcXVhbGl0eU5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlcyA9IFtcbiAgICAgICAgICAgIGxlZnRUZXJtTm9kZSxcbiAgICAgICAgICAgIHJpZ2h0VGVybU5vZGVcbiAgICAgICAgICBdLFxuICAgICAgICAgIHRlcm1zVmVyaWZpZWQgPSB2ZXJpZnlUZXJtcyh0ZXJtTm9kZXMsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgIHNlY29uZFRlcm0gPSBzZWNvbmQodGVybXMpLFxuICAgICAgICAgICAgICAgICAgbGVmdFRlcm0gPSBmaXJzdFRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRUZXJtID0gc2Vjb25kVGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21MZWZ0VGVybVJpZ2h0VGVybUFuZEVxdWFsaXR5Tm9kZShsZWZ0VGVybSwgcmlnaHRUZXJtLCBlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29uc3QgZXF1YWxpdHlFcXVhbCA9IGVxdWFsaXR5LmlzRXF1YWwobG9jYWxDb250ZXh0KTtcblxuICAgICAgICAgICAgICBpZiAoZXF1YWxpdHlFcXVhbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5QXNzaWdubWVudCA9IEVxdWFsaXR5QXNzaWdubWVudC5mcm9tRXF1YWxpdHkoZXF1YWxpdHkpLFxuICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgPSBlcXVhbGl0eUFzc2lnbm1lbnQ7IC8vL1xuXG4gICAgICAgICAgICAgICAgYXNzaWdubWVudHMucHVzaChhc3NpZ25tZW50KTtcblxuICAgICAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF2ZXJpZmllZEFoZWFkKSB7XG4gICAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBkZXJpdmVkRXF1YWxpdHlWZXJpZmllZCA9IHRlcm1zVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRFcXVhbGl0eVZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQudHJhY2UoYC4uLnZlcmlmaWVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGRlcml2ZWQgZXF1YWxpdHkuYCwgZXF1YWxpdHlOb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZEVxdWFsaXR5VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUdpdmVuRXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZ2l2ZW5FcXVhbGl0eVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBnaXZlbiBlcXVhbGl0eS4uLmAsIGVxdWFsaXR5Tm9kZSk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZVF1ZXJ5KGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGVRdWVyeShlcXVhbGl0eU5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlcyA9IFtcbiAgICAgICAgICAgIGxlZnRUZXJtTm9kZSxcbiAgICAgICAgICAgIHJpZ2h0VGVybU5vZGVcbiAgICAgICAgICBdLFxuICAgICAgICAgIHRlcm1zVmVyaWZpZWQgPSB2ZXJpZnlUZXJtcyh0ZXJtTm9kZXMsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgIHNlY29uZFRlcm0gPSBzZWNvbmQodGVybXMpLFxuICAgICAgICAgICAgICAgICAgbGVmdFRlcm0gPSBmaXJzdFRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRUZXJtID0gc2Vjb25kVGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21MZWZ0VGVybVJpZ2h0VGVybUFuZEVxdWFsaXR5Tm9kZShsZWZ0VGVybSwgcmlnaHRUZXJtLCBlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29uc3QgZXF1YWxpdHlBc3NpZ25tZW50ID0gRXF1YWxpdHlBc3NpZ25tZW50LmZyb21FcXVhbGl0eShlcXVhbGl0eSksXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgPSBlcXVhbGl0eUFzc2lnbm1lbnQ7IC8vL1xuXG4gICAgICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICAgICAgaWYgKCF2ZXJpZmllZEFoZWFkKSB7XG4gICAgICAgICAgICAgICAgYXNzaWdubWVudHMucG9wKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBnaXZlbkVxdWFsaXR5VmVyaWZpZWQgPSB0ZXJtc1ZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChnaXZlbkVxdWFsaXR5VmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZ2l2ZW4gZXF1YWxpdHkuYCwgZXF1YWxpdHlOb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ2l2ZW5FcXVhbGl0eVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeUVxdWFsaXR5IiwibGVmdFRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJyaWdodFRlcm1Ob2RlUXVlcnkiLCJlcXVhbGl0eU5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsImVxdWFsaXR5VmVyaWZpZWQiLCJlcXVhbGl0eVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5RXF1YWxpdHlGdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkRXF1YWxpdHkiLCJ2ZXJpZnlHaXZlbkVxdWFsaXR5Iiwic29tZSIsInZlcmlmeUVxdWFsaXR5RnVuY3Rpb24iLCJkZWJ1ZyIsImRlcml2ZWRFcXVhbGl0eVZlcmlmaWVkIiwidGVybXMiLCJsZWZ0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwidGVybU5vZGVzIiwidGVybXNWZXJpZmllZCIsInZlcmlmeVRlcm1zIiwidmVyaWZpZWRBaGVhZCIsImZpcnN0VGVybSIsImZpcnN0Iiwic2Vjb25kVGVybSIsInNlY29uZCIsImxlZnRUZXJtIiwicmlnaHRUZXJtIiwiZXF1YWxpdHkiLCJFcXVhbGl0eSIsImZyb21MZWZ0VGVybVJpZ2h0VGVybUFuZEVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5RXF1YWwiLCJpc0VxdWFsIiwiZXF1YWxpdHlBc3NpZ25tZW50IiwiRXF1YWxpdHlBc3NpZ25tZW50IiwiZnJvbUVxdWFsaXR5IiwiYXNzaWdubWVudCIsInB1c2giLCJwb3AiLCJnaXZlbkVxdWFsaXR5VmVyaWZpZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBd0JBOzs7K0RBVkg7NERBQ0c7Z0VBQ087cUJBRUw7cUJBQ0k7Ozs7OztBQUU5QixJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUMsZ0NBQzlCQyxxQkFBcUJELElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsU0FBU0YsZUFBZUksWUFBWSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQ2xHLElBQUlDO0lBRUosSUFBTUMsaUJBQWlCSCxhQUFhSSxZQUFZLENBQUNQO0lBRWpERyxhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBZ0MsT0FBZkYsZ0JBQWUsa0JBQWdCTjtJQUVwRSxJQUFNUywwQkFBMEI7UUFDOUJDO1FBQ0FDO0tBQ0Q7SUFFRE4sbUJBQW1CSSx3QkFBd0JHLElBQUksQ0FBQyxTQUFDQztRQUMvQyxJQUFNUixtQkFBbUJRLHVCQUF1QmIsY0FBY0MsYUFBYUMsU0FBU0MsY0FBY0M7UUFFbEcsSUFBSUMsa0JBQWtCO1lBQ3BCLE9BQU87UUFDVDtJQUNGO0lBRUEsSUFBSUEsa0JBQWtCO1FBQ3BCRixhQUFhVyxLQUFLLENBQUMsQUFBQyxvQkFBa0MsT0FBZlIsZ0JBQWUsZ0JBQWNOO0lBQ3RFO0lBRUEsT0FBT0s7QUFDVDtBQUVBLFNBQVNLLHNCQUFzQlYsWUFBWSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQzFGLElBQUlXLDBCQUEwQjtJQUU5QixJQUFJYixTQUFTO1FBQ1gsSUFBTUksaUJBQWlCSCxhQUFhSSxZQUFZLENBQUNQO1FBRWpERyxhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBZ0MsT0FBZkYsZ0JBQWUsMEJBQXdCTjtRQUU1RSxJQUFNZ0IsUUFBUSxFQUFFLEVBQ1ZDLGVBQWVwQixrQkFBa0JHLGVBQ2pDa0IsZ0JBQWdCbkIsbUJBQW1CQyxlQUNuQ21CLFlBQVk7WUFDVkY7WUFDQUM7U0FDRCxFQUNERSxnQkFBZ0JDLElBQUFBLGNBQVcsRUFBQ0YsV0FBV0gsT0FBT2IsY0FBYztZQUMxRCxJQUFJbUIsZ0JBQWdCO1lBRXBCLElBQU1DLFlBQVlDLElBQUFBLFlBQUssRUFBQ1IsUUFDbEJTLGFBQWFDLElBQUFBLGFBQU0sRUFBQ1YsUUFDcEJXLFdBQVdKLFdBQ1hLLFlBQVlILFlBQ1pJLFdBQVdDLGlCQUFRLENBQUNDLG9DQUFvQyxDQUFDSixVQUFVQyxXQUFXNUI7WUFFcEYsSUFBSTZCLGFBQWEsTUFBTTtnQkFDckIsSUFBTUcsZ0JBQWdCSCxTQUFTSSxPQUFPLENBQUM5QjtnQkFFdkMsSUFBSTZCLGVBQWU7b0JBQ2pCLElBQU1FLHFCQUFxQkMsa0JBQWtCLENBQUNDLFlBQVksQ0FBQ1AsV0FDckRRLGFBQWFILG9CQUFvQixHQUFHO29CQUUxQ2pDLFlBQVlxQyxJQUFJLENBQUNEO29CQUVqQmYsZ0JBQWdCbEI7b0JBRWhCLElBQUksQ0FBQ2tCLGVBQWU7d0JBQ2xCckIsWUFBWXNDLEdBQUc7b0JBQ2pCO2dCQUNGO1lBQ0Y7WUFFQSxPQUFPakI7UUFDVDtRQUVOUCwwQkFBMEJLLGVBQWUsR0FBRztRQUU1QyxJQUFJTCx5QkFBeUI7WUFDM0JaLGFBQWFLLEtBQUssQ0FBQyxBQUFDLG9CQUFrQyxPQUFmRixnQkFBZSx3QkFBc0JOO1FBQzlFO0lBQ0Y7SUFFQSxPQUFPZTtBQUNUO0FBRUEsU0FBU0osb0JBQW9CWCxZQUFZLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZLEVBQUVDLFdBQVc7SUFDeEYsSUFBSW9DLHdCQUF3QjtJQUU1QixJQUFJLENBQUN0QyxTQUFTO1FBQ1osSUFBTUksaUJBQWlCSCxhQUFhSSxZQUFZLENBQUNQO1FBRWpERyxhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBZ0MsT0FBZkYsZ0JBQWUsd0JBQXNCTjtRQUUxRSxJQUFNZ0IsUUFBUSxFQUFFLEVBQ1ZDLGVBQWVwQixrQkFBa0JHLGVBQ2pDa0IsZ0JBQWdCbkIsbUJBQW1CQyxlQUNuQ21CLFlBQVk7WUFDVkY7WUFDQUM7U0FDRCxFQUNERSxnQkFBZ0JDLElBQUFBLGNBQVcsRUFBQ0YsV0FBV0gsT0FBT2IsY0FBYztZQUMxRCxJQUFJbUIsZ0JBQWdCO1lBRXBCLElBQU1DLFlBQVlDLElBQUFBLFlBQUssRUFBQ1IsUUFDbEJTLGFBQWFDLElBQUFBLGFBQU0sRUFBQ1YsUUFDcEJXLFdBQVdKLFdBQ1hLLFlBQVlILFlBQ1pJLFdBQVdDLGlCQUFRLENBQUNDLG9DQUFvQyxDQUFDSixVQUFVQyxXQUFXNUI7WUFFcEYsSUFBSTZCLGFBQWEsTUFBTTtnQkFDckIsSUFBTUsscUJBQXFCQyxrQkFBa0IsQ0FBQ0MsWUFBWSxDQUFDUCxXQUNyRFEsYUFBYUgsb0JBQW9CLEdBQUc7Z0JBRTFDakMsWUFBWXFDLElBQUksQ0FBQ0Q7Z0JBRWpCZixnQkFBZ0JsQjtnQkFFaEIsSUFBSSxDQUFDa0IsZUFBZTtvQkFDbEJyQixZQUFZc0MsR0FBRztnQkFDakI7WUFDRjtZQUVBLE9BQU9qQjtRQUNUO1FBRU5rQix3QkFBd0JwQixlQUFlLEdBQUc7UUFFMUMsSUFBSW9CLHVCQUF1QjtZQUN6QnJDLGFBQWFLLEtBQUssQ0FBQyxBQUFDLG9CQUFrQyxPQUFmRixnQkFBZSxzQkFBb0JOO1FBQzVFO0lBQ0Y7SUFFQSxPQUFPd0M7QUFDVCJ9
@@ -9,11 +9,11 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _query = require("../utilities/query");
12
- function verifyGivenType(typeNode, types, context, verifyAhead) {
12
+ function verifyGivenType(typeNode, types, localContext, verifyAhead) {
13
13
  var givenTypeVerified = false;
14
- var typeString = context.nodeAsString(typeNode);
15
- context.trace("Verifying the given '".concat(typeString, "' type..."), typeNode);
16
- var typeName = (0, _query.typeNameFromTypeNode)(typeNode), type = context.findTypeByTypeName(typeName);
14
+ var typeString = localContext.nodeAsString(typeNode);
15
+ localContext.trace("Verifying the given '".concat(typeString, "' type..."), typeNode);
16
+ var typeName = (0, _query.typeNameFromTypeNode)(typeNode), type = localContext.findTypeByTypeName(typeName);
17
17
  if (type !== null) {
18
18
  var verifiedAhead;
19
19
  types.push(type);
@@ -24,9 +24,9 @@ function verifyGivenType(typeNode, types, context, verifyAhead) {
24
24
  givenTypeVerified = verifiedAhead; ///
25
25
  }
26
26
  if (givenTypeVerified) {
27
- context.debug("...verified the given '".concat(typeString, "' type."), typeNode);
27
+ localContext.debug("...verified the given '".concat(typeString, "' type."), typeNode);
28
28
  }
29
29
  return givenTypeVerified;
30
30
  }
31
31
 
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZ2l2ZW5UeXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5R2l2ZW5UeXBlKHR5cGVOb2RlLCB0eXBlcywgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IGdpdmVuVHlwZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVOb2RlKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlIGdpdmVuICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCwgdHlwZU5vZGUpO1xuXG4gIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpXG5cbiAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgdHlwZXMucG9wKCk7XG4gICAgfVxuXG4gICAgZ2l2ZW5UeXBlVmVyaWZpZWQgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgfVxuXG4gIGlmIChnaXZlblR5cGVWZXJpZmllZCkge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBnaXZlbiAnJHt0eXBlU3RyaW5nfScgdHlwZS5gLCB0eXBlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gZ2l2ZW5UeXBlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5R2l2ZW5UeXBlIiwidHlwZU5vZGUiLCJ0eXBlcyIsImNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsImdpdmVuVHlwZVZlcmlmaWVkIiwidHlwZVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsInR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ2ZXJpZmllZEFoZWFkIiwicHVzaCIsInBvcCIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXdCQTs7O3FCQUZhO0FBRXRCLFNBQVNBLGdCQUFnQkMsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsV0FBVztJQUMzRSxJQUFJQyxvQkFBb0I7SUFFeEIsSUFBTUMsYUFBYUgsUUFBUUksWUFBWSxDQUFDTjtJQUV4Q0UsUUFBUUssS0FBSyxDQUFDLEFBQUMsd0JBQWtDLE9BQVhGLFlBQVcsY0FBWUw7SUFFN0QsSUFBTVEsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNULFdBQ2hDVSxPQUFPUixRQUFRUyxrQkFBa0IsQ0FBQ0g7SUFFeEMsSUFBSUUsU0FBUyxNQUFNO1FBQ2pCLElBQUlFO1FBRUpYLE1BQU1ZLElBQUksQ0FBQ0g7UUFFWEUsZ0JBQWdCVDtRQUVoQixJQUFJLENBQUNTLGVBQWU7WUFDbEJYLE1BQU1hLEdBQUc7UUFDWDtRQUVBVixvQkFBb0JRLGVBQWUsR0FBRztJQUN4QztJQUVBLElBQUlSLG1CQUFtQjtRQUNyQkYsUUFBUWEsS0FBSyxDQUFDLEFBQUMsMEJBQW9DLE9BQVhWLFlBQVcsWUFBVUw7SUFDL0Q7SUFFQSxPQUFPSTtBQUNUIn0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZ2l2ZW5UeXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5R2l2ZW5UeXBlKHR5cGVOb2RlLCB0eXBlcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZ2l2ZW5UeXBlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlIGdpdmVuICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCwgdHlwZU5vZGUpO1xuXG4gIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICB0eXBlID0gbG9jYWxDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgIHR5cGVzLnB1c2godHlwZSlcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgaWYgKCF2ZXJpZmllZEFoZWFkKSB7XG4gICAgICB0eXBlcy5wb3AoKTtcbiAgICB9XG5cbiAgICBnaXZlblR5cGVWZXJpZmllZCA9IHZlcmlmaWVkQWhlYWQ7IC8vL1xuICB9XG5cbiAgaWYgKGdpdmVuVHlwZVZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgZ2l2ZW4gJyR7dHlwZVN0cmluZ30nIHR5cGUuYCwgdHlwZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGdpdmVuVHlwZVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeUdpdmVuVHlwZSIsInR5cGVOb2RlIiwidHlwZXMiLCJsb2NhbENvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsImdpdmVuVHlwZVZlcmlmaWVkIiwidHlwZVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsInR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ2ZXJpZmllZEFoZWFkIiwicHVzaCIsInBvcCIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXdCQTs7O3FCQUZhO0FBRXRCLFNBQVNBLGdCQUFnQkMsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUNoRixJQUFJQyxvQkFBb0I7SUFFeEIsSUFBTUMsYUFBYUgsYUFBYUksWUFBWSxDQUFDTjtJQUU3Q0UsYUFBYUssS0FBSyxDQUFDLEFBQUMsd0JBQWtDLE9BQVhGLFlBQVcsY0FBWUw7SUFFbEUsSUFBTVEsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNULFdBQ2hDVSxPQUFPUixhQUFhUyxrQkFBa0IsQ0FBQ0g7SUFFN0MsSUFBSUUsU0FBUyxNQUFNO1FBQ2pCLElBQUlFO1FBRUpYLE1BQU1ZLElBQUksQ0FBQ0g7UUFFWEUsZ0JBQWdCVDtRQUVoQixJQUFJLENBQUNTLGVBQWU7WUFDbEJYLE1BQU1hLEdBQUc7UUFDWDtRQUVBVixvQkFBb0JRLGVBQWUsR0FBRztJQUN4QztJQUVBLElBQUlSLG1CQUFtQjtRQUNyQkYsYUFBYWEsS0FBSyxDQUFDLEFBQUMsMEJBQW9DLE9BQVhWLFlBQVcsWUFBVUw7SUFDcEU7SUFFQSxPQUFPSTtBQUNUIn0=
@@ -8,11 +8,11 @@ Object.defineProperty(exports, "default", {
8
8
  return verifyGivenVariable;
9
9
  }
10
10
  });
11
- function verifyGivenVariable(variableNode, variables, context, verifyAhead) {
11
+ function verifyGivenVariable(variableNode, variables, localContext, verifyAhead) {
12
12
  var givenVariableVerified = false;
13
- var variableString = context.nodeAsString(variableNode);
14
- context.trace("Verifying the '".concat(variableString, "' given variable..."), variableNode);
15
- var variable = context.findVariableByVariableNode(variableNode);
13
+ var variableString = localContext.nodeAsString(variableNode);
14
+ localContext.trace("Verifying the '".concat(variableString, "' given variable..."), variableNode);
15
+ var variable = localContext.findVariableByVariableNode(variableNode);
16
16
  if (variable !== null) {
17
17
  var verifiedAhead;
18
18
  variables.push(variable);
@@ -23,9 +23,9 @@ function verifyGivenVariable(variableNode, variables, context, verifyAhead) {
23
23
  givenVariableVerified = verifiedAhead; ///
24
24
  }
25
25
  if (givenVariableVerified) {
26
- context.debug("...verified the '".concat(variableString, "' given variable."), variableNode);
26
+ localContext.debug("...verified the '".concat(variableString, "' given variable."), variableNode);
27
27
  }
28
28
  return givenVariableVerified;
29
29
  }
30
30
 
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZ2l2ZW5WYXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5R2l2ZW5WYXJpYWJsZSh2YXJpYWJsZU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IGdpdmVuVmFyaWFibGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodmFyaWFibGVOb2RlKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgZ2l2ZW4gdmFyaWFibGUuLi5gLCB2YXJpYWJsZU5vZGUpO1xuXG4gIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gIGlmICh2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgIGxldCB2ZXJpZmllZEFoZWFkO1xuXG4gICAgdmFyaWFibGVzLnB1c2godmFyaWFibGUpO1xuXG4gICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICBpZiAoIXZlcmlmaWVkQWhlYWQpIHtcbiAgICAgIHZhcmlhYmxlcy5wb3AoKTtcbiAgICB9XG5cbiAgICBnaXZlblZhcmlhYmxlVmVyaWZpZWQgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgfVxuXG4gIGlmIChnaXZlblZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyBnaXZlbiB2YXJpYWJsZS5gLCB2YXJpYWJsZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGdpdmVuVmFyaWFibGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlHaXZlblZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVzIiwiY29udGV4dCIsInZlcmlmeUFoZWFkIiwiZ2l2ZW5WYXJpYWJsZVZlcmlmaWVkIiwidmFyaWFibGVTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInZhcmlhYmxlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUiLCJ2ZXJpZmllZEFoZWFkIiwicHVzaCIsInBvcCIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFFQTs7O2VBQXdCQTs7O0FBQVQsU0FBU0Esb0JBQW9CQyxZQUFZLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxXQUFXO0lBQ3ZGLElBQUlDLHdCQUF3QjtJQUU1QixJQUFNQyxpQkFBaUJILFFBQVFJLFlBQVksQ0FBQ047SUFFNUNFLFFBQVFLLEtBQUssQ0FBQyxBQUFDLGtCQUFnQyxPQUFmRixnQkFBZSx3QkFBc0JMO0lBRXJFLElBQU1RLFdBQVdOLFFBQVFPLDBCQUEwQixDQUFDVDtJQUVwRCxJQUFJUSxhQUFhLE1BQU07UUFDckIsSUFBSUU7UUFFSlQsVUFBVVUsSUFBSSxDQUFDSDtRQUVmRSxnQkFBZ0JQO1FBRWhCLElBQUksQ0FBQ08sZUFBZTtZQUNsQlQsVUFBVVcsR0FBRztRQUNmO1FBRUFSLHdCQUF3Qk0sZUFBZSxHQUFHO0lBQzVDO0lBRUEsSUFBSU4sdUJBQXVCO1FBQ3pCRixRQUFRVyxLQUFLLENBQUMsQUFBQyxvQkFBa0MsT0FBZlIsZ0JBQWUsc0JBQW9CTDtJQUN2RTtJQUVBLE9BQU9JO0FBQ1QifQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZ2l2ZW5WYXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5R2l2ZW5WYXJpYWJsZSh2YXJpYWJsZU5vZGUsIHZhcmlhYmxlcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZ2l2ZW5WYXJpYWJsZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHZhcmlhYmxlTm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgZ2l2ZW4gdmFyaWFibGUuLi5gLCB2YXJpYWJsZU5vZGUpO1xuXG4gIGNvbnN0IHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICB2YXJpYWJsZXMucHVzaCh2YXJpYWJsZSk7XG5cbiAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgdmFyaWFibGVzLnBvcCgpO1xuICAgIH1cblxuICAgIGdpdmVuVmFyaWFibGVWZXJpZmllZCA9IHZlcmlmaWVkQWhlYWQ7IC8vL1xuICB9XG5cbiAgaWYgKGdpdmVuVmFyaWFibGVWZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgZ2l2ZW4gdmFyaWFibGUuYCwgdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBnaXZlblZhcmlhYmxlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5R2l2ZW5WYXJpYWJsZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwiZ2l2ZW5WYXJpYWJsZVZlcmlmaWVkIiwidmFyaWFibGVTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInZhcmlhYmxlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUiLCJ2ZXJpZmllZEFoZWFkIiwicHVzaCIsInBvcCIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFFQTs7O2VBQXdCQTs7O0FBQVQsU0FBU0Esb0JBQW9CQyxZQUFZLEVBQUVDLFNBQVMsRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQzVGLElBQUlDLHdCQUF3QjtJQUU1QixJQUFNQyxpQkFBaUJILGFBQWFJLFlBQVksQ0FBQ047SUFFakRFLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUFnQyxPQUFmRixnQkFBZSx3QkFBc0JMO0lBRTFFLElBQU1RLFdBQVdOLGFBQWFPLDBCQUEwQixDQUFDVDtJQUV6RCxJQUFJUSxhQUFhLE1BQU07UUFDckIsSUFBSUU7UUFFSlQsVUFBVVUsSUFBSSxDQUFDSDtRQUVmRSxnQkFBZ0JQO1FBRWhCLElBQUksQ0FBQ08sZUFBZTtZQUNsQlQsVUFBVVcsR0FBRztRQUNmO1FBRUFSLHdCQUF3Qk0sZUFBZSxHQUFHO0lBQzVDO0lBRUEsSUFBSU4sdUJBQXVCO1FBQ3pCRixhQUFhVyxLQUFLLENBQUMsQUFBQyxvQkFBa0MsT0FBZlIsZ0JBQWUsc0JBQW9CTDtJQUM1RTtJQUVBLE9BQU9JO0FBQ1QifQ==
@@ -42,19 +42,19 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
42
42
  }
43
43
  return metavariableVerified;
44
44
  }
45
- function verifyStandaloneMetavariable(metavariableNode, contexct, verifyAhead) {
45
+ function verifyStandaloneMetavariable(metavariableNode, localMetaContext, verifyAhead) {
46
46
  var standaloneMetavariableVerified = false;
47
- var metavariableString = contexct.nodeAsString(metavariableNode);
48
- contexct.trace("Verifying the '".concat(metavariableString, "' standalone metavariable..."), metavariableNode);
49
- var metavariablePresent = contexct.isMetavariablePresentByMetavariableNode(metavariableNode);
47
+ var metavariableString = localMetaContext.nodeAsString(metavariableNode);
48
+ localMetaContext.trace("Verifying the '".concat(metavariableString, "' standalone metavariable..."), metavariableNode);
49
+ var metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode);
50
50
  if (metavariablePresent) {
51
51
  var verifiedAhead = verifyAhead();
52
52
  standaloneMetavariableVerified = verifiedAhead; ///
53
53
  }
54
54
  if (standaloneMetavariableVerified) {
55
- contexct.debug("...verified the '".concat(metavariableString, "' standalone metavariable."), metavariableNode);
55
+ localMetaContext.debug("...verified the '".concat(metavariableString, "' standalone metavariable."), metavariableNode);
56
56
  }
57
57
  return standaloneMetavariableVerified;
58
58
  }
59
59
 
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgbWV0YXZhcmlhYmxlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGlzIGFscmVhZHkgcHJlc2VudC5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSksXG4gICAgICAgICAgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZUFuZE1ldGFUeXBlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFUeXBlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVBc3NpZ25tZW50ID0gTWV0YXZhcmlhYmxlQXNzaWdubWVudC5mcm9tTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWduZWQgPSBtZXRhdmFyaWFibGVBc3NpZ25tZW50LmFzc2lnbihmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlQXNzaWduZWQpIHtcbiAgICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVN0YW5kYWxvbmVNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgY29udGV4Y3QsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBjb250ZXhjdC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgY29udGV4Y3QudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgc3RhbmRhbG9uZSBtZXRhdmFyaWFibGUuLi5gLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4Y3QuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChtZXRhdmFyaWFibGVQcmVzZW50KSB7XG4gICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgfVxuXG4gIGlmIChzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBjb250ZXhjdC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHN0YW5kYWxvbmUgbWV0YXZhcmlhYmxlLmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhdmFyaWFibGUiLCJ2ZXJpZnlTdGFuZGFsb25lTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFUeXBlTm9kZSIsImZpbGVDb250ZXh0IiwibWV0YXZhcmlhYmxlVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJkZWJ1ZyIsIm1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZUZyb21NZXRhVHlwZU5vZGUiLCJtZXRhVHlwZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YXZhcmlhYmxlIiwiTWV0YXZhcmlhYmxlIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGVBbmRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZUFzc2lnbm1lbnQiLCJNZXRhdmFyaWFibGVBc3NpZ25tZW50IiwiZnJvbU1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUFzc2lnbmVkIiwiYXNzaWduIiwiY29udGV4Y3QiLCJ2ZXJpZnlBaGVhZCIsInN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCIsInZlcmlmaWVkQWhlYWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQU9BLE9BNEJDO2VBNUJ1QkE7O0lBOEJSQyw0QkFBNEI7ZUFBNUJBOzs7bUVBbkNTO29FQUNVO3FCQUVVOzs7Ozs7QUFFOUIsU0FBU0QsbUJBQW1CRSxnQkFBZ0IsRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQ3BGLElBQUlDLHVCQUF1QjtJQUUzQixJQUFNQyxxQkFBcUJGLFlBQVlHLFlBQVksQ0FBQ0w7SUFFcERFLFlBQVlJLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLHNCQUFvQko7SUFFM0UsSUFBTU8sc0JBQXNCTCxZQUFZTSx1Q0FBdUMsQ0FBQ1I7SUFFaEYsSUFBSU8scUJBQXFCO1FBQ3ZCTCxZQUFZTyxLQUFLLENBQUMsQUFBQyxxQkFBdUMsT0FBbkJMLG9CQUFtQiwwQkFBd0JKO0lBQ3BGLE9BQU87UUFDTCxJQUFNVSxlQUFlQyxJQUFBQSxtQ0FBNEIsRUFBQ1YsZUFDNUNXLFdBQVdWLFlBQVlXLDBCQUEwQixDQUFDSCxlQUNsREksZUFBZUMscUJBQVksQ0FBQ0MsK0JBQStCLENBQUNoQixrQkFBa0JZLFdBQzlFSyx5QkFBeUJDLHNCQUFzQixDQUFDQyxnQkFBZ0IsQ0FBQ0wsZUFDakVNLHVCQUF1QkgsdUJBQXVCSSxNQUFNLENBQUNuQjtRQUUzRCxJQUFJa0Isc0JBQXNCO1lBQ3hCakIsdUJBQXVCO1FBQ3pCO0lBQ0Y7SUFFQSxJQUFJQSxzQkFBc0I7UUFDeEJELFlBQVlPLEtBQUssQ0FBQyxBQUFDLG9CQUFzQyxPQUFuQkwsb0JBQW1CLG9CQUFrQko7SUFDN0U7SUFFQSxPQUFPRztBQUNUO0FBRU8sU0FBU0osNkJBQTZCQyxnQkFBZ0IsRUFBRXNCLFFBQVEsRUFBRUMsV0FBVztJQUNsRixJQUFJQyxpQ0FBaUM7SUFFckMsSUFBTXBCLHFCQUFxQmtCLFNBQVNqQixZQUFZLENBQUNMO0lBRWpEc0IsU0FBU2hCLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLGlDQUErQko7SUFFbkYsSUFBTU8sc0JBQXNCZSxTQUFTZCx1Q0FBdUMsQ0FBQ1I7SUFFN0UsSUFBSU8scUJBQXFCO1FBQ3ZCLElBQU1rQixnQkFBZ0JGO1FBRXRCQyxpQ0FBaUNDLGVBQWUsR0FBRztJQUNyRDtJQUVBLElBQUlELGdDQUFnQztRQUNsQ0YsU0FBU2IsS0FBSyxDQUFDLEFBQUMsb0JBQXNDLE9BQW5CTCxvQkFBbUIsK0JBQTZCSjtJQUNyRjtJQUVBLE9BQU93QjtBQUNUIn0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgbWV0YXZhcmlhYmxlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGlzIGFscmVhZHkgcHJlc2VudC5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSksXG4gICAgICAgICAgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZUFuZE1ldGFUeXBlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFUeXBlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVBc3NpZ25tZW50ID0gTWV0YXZhcmlhYmxlQXNzaWdubWVudC5mcm9tTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWduZWQgPSBtZXRhdmFyaWFibGVBc3NpZ25tZW50LmFzc2lnbihmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlQXNzaWduZWQpIHtcbiAgICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVN0YW5kYWxvbmVNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsTWV0YUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGxvY2FsTWV0YUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgc3RhbmRhbG9uZSBtZXRhdmFyaWFibGUuLi5gLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVQcmVzZW50ID0gbG9jYWxNZXRhQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgIHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmaWVkQWhlYWQ7IC8vL1xuICB9XG5cbiAgaWYgKHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCkge1xuICAgIGxvY2FsTWV0YUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBzdGFuZGFsb25lIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TWV0YXZhcmlhYmxlIiwidmVyaWZ5U3RhbmRhbG9uZU1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhVHlwZU5vZGUiLCJmaWxlQ29udGV4dCIsIm1ldGF2YXJpYWJsZVZlcmlmaWVkIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwiZGVidWciLCJtZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIiwibWV0YVR5cGUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsImZyb21NZXRhdmFyaWFibGVOb2RlQW5kTWV0YVR5cGUiLCJtZXRhdmFyaWFibGVBc3NpZ25tZW50IiwiTWV0YXZhcmlhYmxlQXNzaWdubWVudCIsImZyb21NZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVBc3NpZ25lZCIsImFzc2lnbiIsImxvY2FsTWV0YUNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsInN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCIsInZlcmlmaWVkQWhlYWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQU9BLE9BNEJDO2VBNUJ1QkE7O0lBOEJSQyw0QkFBNEI7ZUFBNUJBOzs7bUVBbkNTO29FQUNVO3FCQUVVOzs7Ozs7QUFFOUIsU0FBU0QsbUJBQW1CRSxnQkFBZ0IsRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQ3BGLElBQUlDLHVCQUF1QjtJQUUzQixJQUFNQyxxQkFBcUJGLFlBQVlHLFlBQVksQ0FBQ0w7SUFFcERFLFlBQVlJLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLHNCQUFvQko7SUFFM0UsSUFBTU8sc0JBQXNCTCxZQUFZTSx1Q0FBdUMsQ0FBQ1I7SUFFaEYsSUFBSU8scUJBQXFCO1FBQ3ZCTCxZQUFZTyxLQUFLLENBQUMsQUFBQyxxQkFBdUMsT0FBbkJMLG9CQUFtQiwwQkFBd0JKO0lBQ3BGLE9BQU87UUFDTCxJQUFNVSxlQUFlQyxJQUFBQSxtQ0FBNEIsRUFBQ1YsZUFDNUNXLFdBQVdWLFlBQVlXLDBCQUEwQixDQUFDSCxlQUNsREksZUFBZUMscUJBQVksQ0FBQ0MsK0JBQStCLENBQUNoQixrQkFBa0JZLFdBQzlFSyx5QkFBeUJDLHNCQUFzQixDQUFDQyxnQkFBZ0IsQ0FBQ0wsZUFDakVNLHVCQUF1QkgsdUJBQXVCSSxNQUFNLENBQUNuQjtRQUUzRCxJQUFJa0Isc0JBQXNCO1lBQ3hCakIsdUJBQXVCO1FBQ3pCO0lBQ0Y7SUFFQSxJQUFJQSxzQkFBc0I7UUFDeEJELFlBQVlPLEtBQUssQ0FBQyxBQUFDLG9CQUFzQyxPQUFuQkwsb0JBQW1CLG9CQUFrQko7SUFDN0U7SUFFQSxPQUFPRztBQUNUO0FBRU8sU0FBU0osNkJBQTZCQyxnQkFBZ0IsRUFBRXNCLGdCQUFnQixFQUFFQyxXQUFXO0lBQzFGLElBQUlDLGlDQUFpQztJQUVyQyxJQUFNcEIscUJBQXFCa0IsaUJBQWlCakIsWUFBWSxDQUFDTDtJQUV6RHNCLGlCQUFpQmhCLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLGlDQUErQko7SUFFM0YsSUFBTU8sc0JBQXNCZSxpQkFBaUJkLHVDQUF1QyxDQUFDUjtJQUVyRixJQUFJTyxxQkFBcUI7UUFDdkIsSUFBTWtCLGdCQUFnQkY7UUFFdEJDLGlDQUFpQ0MsZUFBZSxHQUFHO0lBQ3JEO0lBRUEsSUFBSUQsZ0NBQWdDO1FBQ2xDRixpQkFBaUJiLEtBQUssQ0FBQyxBQUFDLG9CQUFzQyxPQUFuQkwsb0JBQW1CLCtCQUE2Qko7SUFDN0Y7SUFFQSxPQUFPd0I7QUFDVCJ9
@@ -38,12 +38,12 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
38
38
  });
39
39
  if (qualifiedStatementVerified) {
40
40
  derived = false; ///
41
- var context = localContext, verifyQualifiedStatementFunctions1 = [
41
+ var verifyQualifiedStatementFunctions1 = [
42
42
  verifyQualifiedStatementAsEquality,
43
43
  verifyQualifiedStatementAsTypeAssertion
44
44
  ];
45
45
  qualifiedStatementVerified = verifyQualifiedStatementFunctions1.every(function(verifyQualifiedStatementFunction) {
46
- var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, assignments, derived, context, function() {
46
+ var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, assignments, derived, localContext, function() {
47
47
  var verifiedAhead = true;
48
48
  return verifiedAhead;
49
49
  });
@@ -128,33 +128,33 @@ function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, refe
128
128
  }
129
129
  return qualifiedStatementVerifiedAgainstConjecture;
130
130
  }
131
- function verifyQualifiedStatementAsEquality(qualifiedStatementNode, assignments, derived, context, verifyAhead) {
131
+ function verifyQualifiedStatementAsEquality(qualifiedStatementNode, assignments, derived, localContext, verifyAhead) {
132
132
  var statementVerifiedAsEquality = true; ///
133
133
  var equalityNode = equalityNodeQuery(qualifiedStatementNode);
134
134
  if (equalityNode !== null) {
135
- var qualifiedStatementString = context.nodeAsString(qualifiedStatementNode);
136
- context.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement as an equality..."), qualifiedStatementNode);
137
- var equalityVerified = (0, _equality.default)(equalityNode, assignments, derived, context, verifyAhead);
135
+ var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
136
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement as an equality..."), qualifiedStatementNode);
137
+ var equalityVerified = (0, _equality.default)(equalityNode, assignments, derived, localContext, verifyAhead);
138
138
  statementVerifiedAsEquality = equalityVerified; ///
139
139
  if (statementVerifiedAsEquality) {
140
- context.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement as an equality."), qualifiedStatementNode);
140
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement as an equality."), qualifiedStatementNode);
141
141
  }
142
142
  }
143
143
  return statementVerifiedAsEquality;
144
144
  }
145
- function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignments, derived, context, verifyAhead) {
145
+ function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignments, derived, localContext, verifyAhead) {
146
146
  var statementVerifiedAsTypeAssertion = true; ///
147
147
  var typeAssertionNode = typeAssertionNodeQuery(qualifiedStatementNode);
148
148
  if (typeAssertionNode !== null) {
149
- var qualifiedStatementString = context.nodeAsString(qualifiedStatementNode);
150
- context.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement as a type assertion..."), qualifiedStatementNode);
151
- var typeAssertionVerified = (0, _typeAssertion.default)(typeAssertionNode, assignments, derived, context, verifyAhead);
149
+ var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
150
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement as a type assertion..."), qualifiedStatementNode);
151
+ var typeAssertionVerified = (0, _typeAssertion.default)(typeAssertionNode, assignments, derived, localContext, verifyAhead);
152
152
  statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
153
153
  if (statementVerifiedAsTypeAssertion) {
154
- context.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement as a type assertion."), qualifiedStatementNode);
154
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement as a type assertion."), qualifiedStatementNode);
155
155
  }
156
156
  }
157
157
  return statementVerifiedAsTypeAssertion;
158
158
  }
159
159
 
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5LCByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGVxdWFsaXR5Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50L3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSksXG4gICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEsXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0sXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmVcbiAgICAgICAgICBdO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuc29tZSgodmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24pID0+IHsgIC8vL1xuICAgICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VOYW1lLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGRlcml2ZWQgPSBmYWxzZTsgIC8vL1xuXG4gICAgICBjb25zdCBjb250ZXh0ID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uXG4gICAgICAgICAgICBdO1xuXG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5ldmVyeSgodmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24pID0+IHsgLy8vXG4gICAgICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGUgPSBsb2NhbENvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBydWxlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBydWxlTWF0Y2hlc1N0YXRlbWVudCA9IHJ1bGUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUgPSBydWxlTWF0Y2hlc1N0YXRlbWVudDsgIC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIHJ1bGUuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0QXhpb20ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTmFtZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSA9IGZhbHNlO1xuXG4gIGNvbnN0IGF4aW9tID0gbG9jYWxDb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlTmFtZShyZWZlcmVuY2VOYW1lKTtcblxuICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBheGlvbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgYXhpb20uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdExlbW1hKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEgPSBmYWxzZTtcblxuICBjb25zdCBsZW1tYSA9IGxvY2FsQ29udGV4dC5maW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGxlbW1hICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgbGVtbWEuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGxlbW1hTWF0Y2hlc1N0YXRlbWVudCA9IGxlbW1hLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGxlbW1hTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIGxlbW1hLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RUaGVvcmVtKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSA9IGZhbHNlO1xuXG4gIGNvbnN0IHRoZW9yZW0gPSBsb2NhbENvbnRleHQuZmluZFRoZW9yZW1CeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHRoZW9yZW0gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyB0aGVvcmVtLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCA9IHRoZW9yZW0ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0gPSB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgdGhlb3JlbS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RDb25qZWN0dXJlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbmplY3R1cmUgPSBsb2NhbENvbnRleHQuZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBjb25qZWN0dXJlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCA9IGNvbmplY3R1cmUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgY29uamVjdHVyZS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IHRydWU7IC8vL1xuXG4gIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IGVxdWFsaXR5Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChlcXVhbGl0eU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5KGVxdWFsaXR5Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0cnVlOyAgLy8vXG5cbiAgY29uc3QgdHlwZUFzc2VydGlvbk5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmICh0eXBlQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25WZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudCIsImVxdWFsaXR5Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicmVmZXJlbmNlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudE5vZGUiLCJxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOYW1lIiwicmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0iLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmUiLCJzb21lIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24iLCJjb250ZXh0IiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbiIsImV2ZXJ5IiwidmVyaWZpZWRBaGVhZCIsImRlYnVnIiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZSIsInJ1bGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlTmFtZSIsInN0YXRlbWVudExvY2FsQ29udGV4dCIsInJ1bGVNYXRjaGVzU3RhdGVtZW50IiwibWF0Y2hTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSIsImF4aW9tIiwiZmluZEF4aW9tQnlSZWZlcmVuY2VOYW1lIiwiYXhpb21NYXRjaGVzU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEiLCJsZW1tYSIsImZpbmRMZW1tYUJ5UmVmZXJlbmNlTmFtZSIsImxlbW1hTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0iLCJ0aGVvcmVtIiwiZmluZFRoZW9yZW1CeVJlZmVyZW5jZU5hbWUiLCJ0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUiLCJjb25qZWN0dXJlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZU5hbWUiLCJjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCIsInZlcmlmeUFoZWFkIiwic3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5IiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlWZXJpZmllZCIsInZlcmlmeUVxdWFsaXR5Iiwic3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBd0JBOzs7K0RBVkc7b0VBQ0s7cUJBRTBCOzs7Ozs7QUFFMUQsSUFBTUMsb0JBQW9CQyxJQUFB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
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5LCByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGVxdWFsaXR5Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50L3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSksXG4gICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEsXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0sXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmVcbiAgICAgICAgICBdO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuc29tZSgodmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24pID0+IHsgIC8vL1xuICAgICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VOYW1lLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGRlcml2ZWQgPSBmYWxzZTsgIC8vL1xuXG4gICAgICBjb25zdCB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvblxuICAgICAgICAgICAgXTtcblxuICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuZXZlcnkoKHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7IC8vL1xuICAgICAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGUgPSBsb2NhbENvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBydWxlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBydWxlTWF0Y2hlc1N0YXRlbWVudCA9IHJ1bGUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUgPSBydWxlTWF0Y2hlc1N0YXRlbWVudDsgIC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIHJ1bGUuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0QXhpb20ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTmFtZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSA9IGZhbHNlO1xuXG4gIGNvbnN0IGF4aW9tID0gbG9jYWxDb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlTmFtZShyZWZlcmVuY2VOYW1lKTtcblxuICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBheGlvbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgYXhpb20uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdExlbW1hKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEgPSBmYWxzZTtcblxuICBjb25zdCBsZW1tYSA9IGxvY2FsQ29udGV4dC5maW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGxlbW1hICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgbGVtbWEuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGxlbW1hTWF0Y2hlc1N0YXRlbWVudCA9IGxlbW1hLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGxlbW1hTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIGxlbW1hLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RUaGVvcmVtKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSA9IGZhbHNlO1xuXG4gIGNvbnN0IHRoZW9yZW0gPSBsb2NhbENvbnRleHQuZmluZFRoZW9yZW1CeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHRoZW9yZW0gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyB0aGVvcmVtLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCA9IHRoZW9yZW0ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0gPSB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgdGhlb3JlbS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RDb25qZWN0dXJlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbmplY3R1cmUgPSBsb2NhbENvbnRleHQuZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBjb25qZWN0dXJlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCA9IGNvbmplY3R1cmUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgY29uamVjdHVyZS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gdHJ1ZTsgLy8vXG5cbiAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHlOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5KGVxdWFsaXR5Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gZXF1YWxpdHlWZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5KSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0cnVlOyAgLy8vXG5cbiAgY29uc3QgdHlwZUFzc2VydGlvbk5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmICh0eXBlQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25WZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24pIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb247XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50IiwiZXF1YWxpdHlOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5IiwicXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwicmVmZXJlbmNlTm9kZSIsInJlZmVyZW5jZU5hbWUiLCJyZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdEF4aW9tIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0VGhlb3JlbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0Q29uamVjdHVyZSIsInNvbWUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbiIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHkiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJldmVyeSIsInZlcmlmaWVkQWhlYWQiLCJkZWJ1ZyIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUiLCJydWxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUiLCJzdGF0ZW1lbnRMb2NhbENvbnRleHQiLCJydWxlTWF0Y2hlc1N0YXRlbWVudCIsIm1hdGNoU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb20iLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlTmFtZSIsImF4aW9tTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hIiwibGVtbWEiLCJmaW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtIiwidGhlb3JlbSIsImZpbmRUaGVvcmVtQnlSZWZlcmVuY2VOYW1lIiwidGhlb3JlbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlIiwiY29uamVjdHVyZSIsImZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2VOYW1lIiwiY29uamVjdHVyZU1hdGNoZXNTdGF0ZW1lbnQiLCJ2ZXJpZnlBaGVhZCIsInN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5VmVyaWZpZWQiLCJ2ZXJpZnlFcXVhbGl0eSIsInN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQXdCQTs7OytEQVZHO29FQUNLO3FCQUUwQjs7Ozs7O0FBRTFELElBQU1DLG9CQUFvQkMs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
@@ -27,7 +27,7 @@ function verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, deriv
27
27
  unqualifiedStatementVerified = statementMatches; ///
28
28
  }
29
29
  if (!unqualifiedStatementVerified) {
30
- var context = localContext, statementVerified = (0, _statement.default)(statementNode, assignments, derived, context, function() {
30
+ var statementVerified = (0, _statement.default)(statementNode, assignments, derived, localContext, function() {
31
31
  var verifiedAhead = true;
32
32
  return verifiedAhead;
33
33
  });
@@ -40,4 +40,4 @@ function verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, deriv
40
40
  return unqualifiedStatementVerified;
41
41
  }
42
42
 
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgdW5xdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRNYXRjaGVzID0gbG9jYWxDb250ZXh0Lm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50TWF0Y2hlczsgIC8vL1xuICAgIH1cblxuICAgIGlmICghdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VmVyaWZpZWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgdW5xdWFsaWZpZWQgc3RhdGVtZW50LmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic3RhdGVtZW50TWF0Y2hlcyIsIm1hdGNoU3RhdGVtZW50IiwiY29udGV4dCIsInN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50IiwidmVyaWZpZWRBaGVhZCIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQXdCQTs7O2dFQU5JO3FCQUVGOzs7Ozs7QUFFMUIsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDO0FBRXRCLFNBQVNGLDJCQUEyQkcsd0JBQXdCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQzdHLElBQUlDLCtCQUErQjtJQUVuQyxJQUFNQyxnQkFBZ0JQLG1CQUFtQkU7SUFFekMsSUFBSUssa0JBQWtCLE1BQU07UUFDMUIsSUFBTUMsa0JBQWtCSCxhQUFhSSxZQUFZLENBQUNGO1FBRWxERixhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBaUMsT0FBaEJGLGlCQUFnQiwrQkFBNkJOO1FBRWxGLElBQUlFLFNBQVM7WUFDWCxJQUFNTyxtQkFBbUJOLGFBQWFPLGNBQWMsQ0FBQ0w7WUFFckRELCtCQUErQkssa0JBQW1CLEdBQUc7UUFDdkQ7UUFFQSxJQUFJLENBQUNMLDhCQUE4QjtZQUNqQyxJQUFNTyxVQUFVUixjQUNWUyxvQkFBb0JDLElBQUFBLGtCQUFlLEVBQUNSLGVBQWVKLGFBQWFDLFNBQVNTLFNBQVM7Z0JBQ2hGLElBQU1HLGdCQUFnQjtnQkFFdEIsT0FBT0E7WUFDVDtZQUVOViwrQkFBK0JRLG1CQUFvQixHQUFHO1FBQ3hEO1FBRUEsSUFBSVIsOEJBQThCO1lBQ2hDRCxhQUFhWSxLQUFLLENBQUMsQUFBQyxvQkFBbUMsT0FBaEJULGlCQUFnQiw2QkFBMkJOO1FBQ3BGO0lBQ0Y7SUFFQSxPQUFPSTtBQUNUIn0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgdW5xdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRNYXRjaGVzID0gbG9jYWxDb250ZXh0Lm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50TWF0Y2hlczsgIC8vL1xuICAgIH1cblxuICAgIGlmICghdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VmVyaWZpZWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgdW5xdWFsaWZpZWQgc3RhdGVtZW50LmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic3RhdGVtZW50TWF0Y2hlcyIsIm1hdGNoU3RhdGVtZW50Iiwic3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlTdGF0ZW1lbnQiLCJ2ZXJpZmllZEFoZWFkIiwiZGVidWciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBd0JBOzs7Z0VBTkk7cUJBRUY7Ozs7OztBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsU0FBU0YsMkJBQTJCRyx3QkFBd0IsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDN0csSUFBSUMsK0JBQStCO0lBRW5DLElBQU1DLGdCQUFnQlAsbUJBQW1CRTtJQUV6QyxJQUFJSyxrQkFBa0IsTUFBTTtRQUMxQixJQUFNQyxrQkFBa0JILGFBQWFJLFlBQVksQ0FBQ0Y7UUFFbERGLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQkYsaUJBQWdCLCtCQUE2Qk47UUFFbEYsSUFBSUUsU0FBUztZQUNYLElBQU1PLG1CQUFtQk4sYUFBYU8sY0FBYyxDQUFDTDtZQUVyREQsK0JBQStCSyxrQkFBbUIsR0FBRztRQUN2RDtRQUVBLElBQUksQ0FBQ0wsOEJBQThCO1lBQ2pDLElBQU1PLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ1AsZUFBZUosYUFBYUMsU0FBU0MsY0FBYztnQkFDckYsSUFBTVUsZ0JBQWdCO2dCQUV0QixPQUFPQTtZQUNUO1lBRU5ULCtCQUErQk8sbUJBQW9CLEdBQUc7UUFDeEQ7UUFFQSxJQUFJUCw4QkFBOEI7WUFDaENELGFBQWFXLEtBQUssQ0FBQyxBQUFDLG9CQUFtQyxPQUFoQlIsaUJBQWdCLDZCQUEyQk47UUFDcEY7SUFDRjtJQUVBLE9BQU9JO0FBQ1QifQ==