occam-verify-cli 0.0.1089 → 0.0.1091

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 (126) hide show
  1. package/bin/action/verify.js +2 -2
  2. package/lib/assertion/contained.js +35 -41
  3. package/lib/assertion/defined.js +24 -24
  4. package/lib/assertion/subproof.js +24 -24
  5. package/lib/assertion/type.js +23 -23
  6. package/lib/assignment/equality.js +4 -10
  7. package/lib/assignment/judgement.js +4 -4
  8. package/lib/assignment/variable.js +4 -4
  9. package/lib/combinator/bracketed.js +3 -3
  10. package/lib/conclusion.js +11 -13
  11. package/lib/consequent.js +11 -13
  12. package/lib/constructor/bracketed.js +3 -3
  13. package/lib/constructor.js +2 -2
  14. package/lib/context/file.js +28 -27
  15. package/lib/context/local.js +31 -32
  16. package/lib/context/release.js +6 -3
  17. package/lib/declaration.js +18 -18
  18. package/lib/derivation.js +3 -3
  19. package/lib/equality.js +24 -24
  20. package/lib/equivalence.js +13 -13
  21. package/lib/frame.js +43 -43
  22. package/lib/index.js +2 -1
  23. package/lib/judgement.js +20 -20
  24. package/lib/label.js +9 -1
  25. package/lib/metaType.js +2 -2
  26. package/lib/metavariable.js +40 -39
  27. package/lib/mixins/statement/qualified/unify.js +19 -19
  28. package/lib/mixins/statement/resolve.js +11 -11
  29. package/lib/mixins/statement/unify.js +12 -12
  30. package/lib/mixins/statement/verify.js +36 -36
  31. package/lib/mixins/term/verify.js +2 -2
  32. package/lib/premise.js +31 -40
  33. package/lib/proof.js +6 -5
  34. package/lib/proofStep.js +17 -17
  35. package/lib/reference.js +8 -8
  36. package/lib/rule.js +21 -21
  37. package/lib/statement/qualified.js +17 -17
  38. package/lib/statement/unqualified.js +19 -19
  39. package/lib/statement.js +52 -54
  40. package/lib/subDerivation.js +3 -3
  41. package/lib/subproof.js +6 -5
  42. package/lib/substitution/frameForMetavariable.js +16 -39
  43. package/lib/substitution/statementForMetavariable.js +88 -74
  44. package/lib/substitution/termForVariable.js +15 -41
  45. package/lib/substitution.js +20 -6
  46. package/lib/substitutions.js +13 -13
  47. package/lib/supposition.js +31 -40
  48. package/lib/term.js +28 -28
  49. package/lib/topLevelAssertion.js +33 -21
  50. package/lib/unifier/equality.js +8 -8
  51. package/lib/unifier/intrinsicLevel.js +149 -0
  52. package/lib/unifier/metaLevel.js +41 -31
  53. package/lib/unifier/metavariable.js +14 -8
  54. package/lib/unifier/statementWithCombinator.js +16 -16
  55. package/lib/unifier/termWithConstructor.js +6 -6
  56. package/lib/unifier.js +47 -47
  57. package/lib/utilities/assignments.js +3 -3
  58. package/lib/utilities/equivalences.js +14 -14
  59. package/lib/utilities/json.js +22 -21
  60. package/lib/utilities/unifier.js +7 -8
  61. package/lib/variable.js +33 -33
  62. package/lib/verifier/statementAsCombinator.js +2 -2
  63. package/lib/verifier/termAsConstructor.js +2 -2
  64. package/package.json +2 -2
  65. package/src/assertion/contained.js +37 -45
  66. package/src/assertion/defined.js +25 -25
  67. package/src/assertion/subproof.js +25 -28
  68. package/src/assertion/type.js +23 -23
  69. package/src/assignment/equality.js +4 -6
  70. package/src/assignment/judgement.js +4 -4
  71. package/src/assignment/variable.js +4 -4
  72. package/src/combinator/bracketed.js +2 -2
  73. package/src/conclusion.js +14 -15
  74. package/src/consequent.js +14 -15
  75. package/src/constructor/bracketed.js +2 -2
  76. package/src/constructor.js +3 -2
  77. package/src/context/file.js +26 -25
  78. package/src/context/local.js +21 -23
  79. package/src/context/release.js +5 -3
  80. package/src/declaration.js +20 -20
  81. package/src/derivation.js +2 -2
  82. package/src/equality.js +26 -26
  83. package/src/equivalence.js +12 -12
  84. package/src/frame.js +42 -42
  85. package/src/index.js +1 -0
  86. package/src/judgement.js +25 -25
  87. package/src/label.js +14 -0
  88. package/src/metaType.js +1 -1
  89. package/src/metavariable.js +51 -43
  90. package/src/mixins/statement/qualified/unify.js +21 -21
  91. package/src/mixins/statement/resolve.js +12 -12
  92. package/src/mixins/statement/unify.js +11 -11
  93. package/src/mixins/statement/verify.js +35 -35
  94. package/src/mixins/term/verify.js +1 -1
  95. package/src/premise.js +42 -53
  96. package/src/proof.js +6 -4
  97. package/src/proofStep.js +21 -21
  98. package/src/reference.js +12 -11
  99. package/src/rule.js +20 -20
  100. package/src/statement/qualified.js +18 -17
  101. package/src/statement/unqualified.js +19 -18
  102. package/src/statement.js +63 -66
  103. package/src/subDerivation.js +2 -3
  104. package/src/subproof.js +6 -4
  105. package/src/substitution/frameForMetavariable.js +29 -45
  106. package/src/substitution/statementForMetavariable.js +136 -86
  107. package/src/substitution/termForVariable.js +28 -49
  108. package/src/substitution.js +15 -5
  109. package/src/substitutions.js +12 -12
  110. package/src/supposition.js +41 -53
  111. package/src/term.js +27 -27
  112. package/src/topLevelAssertion.js +32 -19
  113. package/src/unifier/equality.js +7 -7
  114. package/src/unifier/intrinsicLevel.js +61 -0
  115. package/src/unifier/metaLevel.js +60 -46
  116. package/src/unifier/metavariable.js +22 -13
  117. package/src/unifier/statementWithCombinator.js +28 -28
  118. package/src/unifier/termWithConstructor.js +8 -8
  119. package/src/unifier.js +55 -55
  120. package/src/utilities/assignments.js +2 -2
  121. package/src/utilities/equivalences.js +13 -13
  122. package/src/utilities/json.js +76 -66
  123. package/src/utilities/unifier.js +10 -12
  124. package/src/variable.js +43 -40
  125. package/src/verifier/statementAsCombinator.js +2 -1
  126. package/src/verifier/termAsConstructor.js +2 -1
package/lib/metaType.js CHANGED
@@ -169,7 +169,7 @@ var MetaType = /*#__PURE__*/ function() {
169
169
  },
170
170
  {
171
171
  key: "fromMetaTypeNode",
172
- value: function fromMetaTypeNode(metaTypeNode, localContext) {
172
+ value: function fromMetaTypeNode(metaTypeNode, context) {
173
173
  var metaTypeName = (0, _name.metaTypeNameFromMetaTypeNode)(metaTypeNode), metaType = metaTypeFromMetaTypeName(metaTypeName);
174
174
  return metaType;
175
175
  }
@@ -257,4 +257,4 @@ function metaTypeFromMetaTypeName(metaTypeName) {
257
257
  return metaType;
258
258
  }
259
259
 
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhVHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4vc2hpbVwiO1xuXG5pbXBvcnQgeyBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25hbWVcIjtcbmltcG9ydCB7IEZSQU1FX01FVEFfVFlQRV9OQU1FLCBSRUZFUkVOQ0VfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuL21ldGFUeXBlTmFtZXNcIjtcblxuY2xhc3MgTWV0YVR5cGUge1xuICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLm5hbWU7IC8vL1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIGlzRXF1YWxUbyhtZXRhVHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSAodGhpcyA9PT0gbWV0YVR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaE5hbWUobmFtZSkge1xuICAgIGNvbnN0IG5hbWVNYXRjaGVzID0gKHRoaXMubmFtZSA9PT0gbmFtZSk7XG5cbiAgICByZXR1cm4gbmFtZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWVNYXRjaGVzID0gKHRoaXMubmFtZSA9PT0gbWV0YVR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtZXRhVHlwZU5hbWVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhVHlwZU5vZGUobWV0YVR5cGVOb2RlKSB7XG4gICAgY29uc3QgbWV0YVR5cGVOYW1lID0gbWV0YVR5cGVOYW1lRnJvbU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUpLFxuICAgICAgICAgIG1ldGFUeXBlTmFtZU1hdGNoZXMgPSB0aGlzLm1hdGNoTWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSksXG4gICAgICAgICAgbWV0YVR5cGVOb2RlTWF0Y2hlcyA9IG1ldGFUeXBlTmFtZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBtZXRhVHlwZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWUsXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb24sXG4gICAgICAgICAgbWV0YVR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICAgIG1ldGFUeXBlID0gbWV0YVR5cGVGcm9tTWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlTmFtZUZyb21NZXRhVHlwZU5vZGUobWV0YVR5cGVOb2RlKSxcbiAgICAgICAgICBtZXRhVHlwZSA9IG1ldGFUeXBlRnJvbU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGFUeXBlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICBNZXRhVHlwZVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1ldGFUeXBlO1xuXG5jbGFzcyBGcmFtZU1ldGFUeXBlIGV4dGVuZHMgTWV0YVR5cGUge1xuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgbmFtZSA9IEZSQU1FX01FVEFfVFlQRV9OQU1FLFxuICAgICAgICAgIGZyYW1lTWV0YVR5cGUgPSBuZXcgRnJhbWVNZXRhVHlwZShuYW1lKTtcblxuICAgIHJldHVybiBmcmFtZU1ldGFUeXBlO1xuICB9XG59XG5cbmNsYXNzIFJlZmVyZW5jZU1ldGFUeXBlIGV4dGVuZHMgTWV0YVR5cGUge1xuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgbmFtZSA9IFJFRkVSRU5DRV9NRVRBX1RZUEVfTkFNRSxcbiAgICAgICAgICByZWZlcmVuY2VNZXRhVHlwZSA9IG5ldyBSZWZlcmVuY2VNZXRhVHlwZShuYW1lKTtcblxuICAgIHJldHVybiByZWZlcmVuY2VNZXRhVHlwZTtcbiAgfVxufVxuXG5jbGFzcyBTdGF0ZW1lbnRNZXRhVHlwZSBleHRlbmRzIE1ldGFUeXBlIHtcbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IG5hbWUgPSBTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUsXG4gICAgICAgICAgc3RhdGVtZW50TWV0YVR5cGUgPSBuZXcgU3RhdGVtZW50TWV0YVR5cGUobmFtZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50TWV0YVR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZyYW1lTWV0YVR5cGUgPSBGcmFtZU1ldGFUeXBlLmZyb21Ob3RoaW5nKCk7XG5leHBvcnQgY29uc3QgcmVmZXJlbmNlTWV0YVR5cGUgPSBSZWZlcmVuY2VNZXRhVHlwZS5mcm9tTm90aGluZygpO1xuZXhwb3J0IGNvbnN0IHN0YXRlbWVudE1ldGFUeXBlID0gU3RhdGVtZW50TWV0YVR5cGUuZnJvbU5vdGhpbmcoKTtcblxuZnVuY3Rpb24gbWV0YVR5cGVGcm9tTWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSkge1xuICBsZXQgbWV0YVR5cGU7XG5cbiAgc3dpdGNoIChtZXRhVHlwZU5hbWUpIHtcbiAgICBjYXNlIEZSQU1FX01FVEFfVFlQRV9OQU1FOiB7XG4gICAgICBtZXRhVHlwZSA9IGZyYW1lTWV0YVR5cGU7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFJFRkVSRU5DRV9NRVRBX1RZUEVfTkFNRToge1xuICAgICAgbWV0YVR5cGUgPSByZWZlcmVuY2VNZXRhVHlwZTsgLy8vXG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FOiB7XG4gICAgICBtZXRhVHlwZSA9IHN0YXRlbWVudE1ldGFUeXBlOyAvLy9cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuIl0sIm5hbWVzIjpbImZyYW1lTWV0YVR5cGUiLCJyZWZlcmVuY2VNZXRhVHlwZSIsInN0YXRlbWVudE1ldGFUeXBlIiwiTWV0YVR5cGUiLCJuYW1lIiwiZ2V0TmFtZSIsImdldFN0cmluZyIsInN0cmluZyIsImlzRXF1YWxUbyIsIm1ldGFUeXBlIiwiZXF1YWxUbyIsIm1hdGNoTmFtZSIsIm5hbWVNYXRjaGVzIiwibWF0Y2hNZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWVNYXRjaGVzIiwibWF0Y2hNZXRhVHlwZU5vZGUiLCJtZXRhVHlwZU5vZGUiLCJtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOb2RlTWF0Y2hlcyIsInRvSlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImZpbGVDb250ZXh0IiwibWV0YVR5cGVGcm9tTWV0YVR5cGVOYW1lIiwiZnJvbU1ldGFUeXBlTm9kZSIsImxvY2FsQ29udGV4dCIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iLCJGcmFtZU1ldGFUeXBlIiwiZnJvbU5vdGhpbmciLCJGUkFNRV9NRVRBX1RZUEVfTkFNRSIsIlJlZmVyZW5jZU1ldGFUeXBlIiwiUkVGRVJFTkNFX01FVEFfVFlQRV9OQU1FIiwiU3RhdGVtZW50TWV0YVR5cGUiLCJTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7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
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhVHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4vc2hpbVwiO1xuXG5pbXBvcnQgeyBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25hbWVcIjtcbmltcG9ydCB7IEZSQU1FX01FVEFfVFlQRV9OQU1FLCBSRUZFUkVOQ0VfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuL21ldGFUeXBlTmFtZXNcIjtcblxuY2xhc3MgTWV0YVR5cGUge1xuICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLm5hbWU7IC8vL1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIGlzRXF1YWxUbyhtZXRhVHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSAodGhpcyA9PT0gbWV0YVR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaE5hbWUobmFtZSkge1xuICAgIGNvbnN0IG5hbWVNYXRjaGVzID0gKHRoaXMubmFtZSA9PT0gbmFtZSk7XG5cbiAgICByZXR1cm4gbmFtZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWVNYXRjaGVzID0gKHRoaXMubmFtZSA9PT0gbWV0YVR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtZXRhVHlwZU5hbWVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhVHlwZU5vZGUobWV0YVR5cGVOb2RlKSB7XG4gICAgY29uc3QgbWV0YVR5cGVOYW1lID0gbWV0YVR5cGVOYW1lRnJvbU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUpLFxuICAgICAgICAgIG1ldGFUeXBlTmFtZU1hdGNoZXMgPSB0aGlzLm1hdGNoTWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSksXG4gICAgICAgICAgbWV0YVR5cGVOb2RlTWF0Y2hlcyA9IG1ldGFUeXBlTmFtZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBtZXRhVHlwZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWUsXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb24sXG4gICAgICAgICAgbWV0YVR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICAgIG1ldGFUeXBlID0gbWV0YVR5cGVGcm9tTWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSksXG4gICAgICAgICAgbWV0YVR5cGUgPSBtZXRhVHlwZUZyb21NZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtZXRhVHlwZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgTWV0YVR5cGVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBNZXRhVHlwZTtcblxuY2xhc3MgRnJhbWVNZXRhVHlwZSBleHRlbmRzIE1ldGFUeXBlIHtcbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IG5hbWUgPSBGUkFNRV9NRVRBX1RZUEVfTkFNRSxcbiAgICAgICAgICBmcmFtZU1ldGFUeXBlID0gbmV3IEZyYW1lTWV0YVR5cGUobmFtZSk7XG5cbiAgICByZXR1cm4gZnJhbWVNZXRhVHlwZTtcbiAgfVxufVxuXG5jbGFzcyBSZWZlcmVuY2VNZXRhVHlwZSBleHRlbmRzIE1ldGFUeXBlIHtcbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IG5hbWUgPSBSRUZFUkVOQ0VfTUVUQV9UWVBFX05BTUUsXG4gICAgICAgICAgcmVmZXJlbmNlTWV0YVR5cGUgPSBuZXcgUmVmZXJlbmNlTWV0YVR5cGUobmFtZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlTWV0YVR5cGU7XG4gIH1cbn1cblxuY2xhc3MgU3RhdGVtZW50TWV0YVR5cGUgZXh0ZW5kcyBNZXRhVHlwZSB7XG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBuYW1lID0gU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FLFxuICAgICAgICAgIHN0YXRlbWVudE1ldGFUeXBlID0gbmV3IFN0YXRlbWVudE1ldGFUeXBlKG5hbWUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudE1ldGFUeXBlO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBmcmFtZU1ldGFUeXBlID0gRnJhbWVNZXRhVHlwZS5mcm9tTm90aGluZygpO1xuZXhwb3J0IGNvbnN0IHJlZmVyZW5jZU1ldGFUeXBlID0gUmVmZXJlbmNlTWV0YVR5cGUuZnJvbU5vdGhpbmcoKTtcbmV4cG9ydCBjb25zdCBzdGF0ZW1lbnRNZXRhVHlwZSA9IFN0YXRlbWVudE1ldGFUeXBlLmZyb21Ob3RoaW5nKCk7XG5cbmZ1bmN0aW9uIG1ldGFUeXBlRnJvbU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgbGV0IG1ldGFUeXBlO1xuXG4gIHN3aXRjaCAobWV0YVR5cGVOYW1lKSB7XG4gICAgY2FzZSBGUkFNRV9NRVRBX1RZUEVfTkFNRToge1xuICAgICAgbWV0YVR5cGUgPSBmcmFtZU1ldGFUeXBlOyAvLy9cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBSRUZFUkVOQ0VfTUVUQV9UWVBFX05BTUU6IHtcbiAgICAgIG1ldGFUeXBlID0gcmVmZXJlbmNlTWV0YVR5cGU7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRToge1xuICAgICAgbWV0YVR5cGUgPSBzdGF0ZW1lbnRNZXRhVHlwZTsgLy8vXG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJmcmFtZU1ldGFUeXBlIiwicmVmZXJlbmNlTWV0YVR5cGUiLCJzdGF0ZW1lbnRNZXRhVHlwZSIsIk1ldGFUeXBlIiwibmFtZSIsImdldE5hbWUiLCJnZXRTdHJpbmciLCJzdHJpbmciLCJpc0VxdWFsVG8iLCJtZXRhVHlwZSIsImVxdWFsVG8iLCJtYXRjaE5hbWUiLCJuYW1lTWF0Y2hlcyIsIm1hdGNoTWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lTWF0Y2hlcyIsIm1hdGNoTWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOYW1lRnJvbU1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmaWxlQ29udGV4dCIsIm1ldGFUeXBlRnJvbU1ldGFUeXBlTmFtZSIsImZyb21NZXRhVHlwZU5vZGUiLCJjb250ZXh0IiwiT2JqZWN0IiwiYXNzaWduIiwic2hpbSIsIkZyYW1lTWV0YVR5cGUiLCJmcm9tTm90aGluZyIsIkZSQU1FX01FVEFfVFlQRV9OQU1FIiwiUmVmZXJlbmNlTWV0YVR5cGUiLCJSRUZFUkVOQ0VfTUVUQV9UWVBFX05BTUUiLCJTdGF0ZW1lbnRNZXRhVHlwZSIsIlNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBNkVB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
@@ -112,10 +112,10 @@ var Metavariable = /*#__PURE__*/ function() {
112
112
  },
113
113
  {
114
114
  key: "unifyFrame",
115
- value: function unifyFrame(frame, substitutions, localContext) {
115
+ value: function unifyFrame(frame, substitutions, generalContext, specificContext) {
116
116
  var frameUnified = false;
117
117
  var frameNode = frame.getNode(), frameString = frame.getString(), metavariableString = this.string; ///
118
- localContext.trace("Unifying the '".concat(frameString, "' frame with the '").concat(metavariableString, "' metavariable..."));
118
+ specificContext.trace("Unifying the '".concat(frameString, "' frame with the '").concat(metavariableString, "' metavariable..."));
119
119
  var metavariableNode = this.node, simpleSubstitutionPresent = substitutions.isSimpleSubstitutionPresentByMetavariableNode(metavariableNode);
120
120
  if (simpleSubstitutionPresent) {
121
121
  var simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariableNode(metavariableNode), substitution = simpleSubstitution, frameNodeMatches = substitution.matchFrameNode(frameNode);
@@ -123,27 +123,27 @@ var Metavariable = /*#__PURE__*/ function() {
123
123
  frameUnified = true;
124
124
  }
125
125
  } else {
126
- var metavariableNode1 = this.node, metavariable = metavariableFromMetavariableNode(metavariableNode1, localContext), frameMetavariable = frameMetavariableFromStatementNode(frameNode, localContext);
127
- if (metavariable === frameMetavariable) {
126
+ var metavariableNode1 = this.node, metavariable = metavariableFromMetavariableNode(metavariableNode1, generalContext, specificContext), frameMetavariable = frameMetavariableFromStatementNode(frameNode, generalContext, specificContext);
127
+ if (metavariable !== null && metavariable === frameMetavariable) {
128
128
  frameUnified = true;
129
129
  } else {
130
- var metavariable1 = this, frameForMetavariableSubstitution = _frameForMetavariable.default.fromFrameAndMetavariable(frame, metavariable1, localContext), substitution1 = frameForMetavariableSubstitution; ///
131
- substitutions.addSubstitution(substitution1, localContext);
130
+ var metavariable1 = this, context = specificContext, frameForMetavariableSubstitution = _frameForMetavariable.default.fromFrameAndMetavariable(frame, metavariable1, context), substitution1 = frameForMetavariableSubstitution; ///
131
+ substitutions.addSubstitution(substitution1, context);
132
132
  frameUnified = true;
133
133
  }
134
134
  }
135
135
  if (frameUnified) {
136
- localContext.debug("...unified the '".concat(frameString, "' frame with the '").concat(metavariableString, "' metavariable."));
136
+ specificContext.debug("...unified the '".concat(frameString, "' frame with the '").concat(metavariableString, "' metavariable."));
137
137
  }
138
138
  return frameUnified;
139
139
  }
140
140
  },
141
141
  {
142
142
  key: "unifyStatement",
143
- value: function unifyStatement(statement, substitution, substitutions, localContext) {
143
+ value: function unifyStatement(statement, substitution, substitutions, generalContext, specificContext) {
144
144
  var statementUnified = false;
145
145
  var statementString = statement.getString(), metavariableString = this.string, substitutionString = substitution !== null ? substitution.getString() : _constants.EMPTY_STRING;
146
- localContext.trace("Unifying the '".concat(statementString, "' statement with the '").concat(metavariableString).concat(substitutionString, "' metavariable..."));
146
+ specificContext.trace("Unifying the '".concat(statementString, "' statement with the '").concat(metavariableString).concat(substitutionString, "' metavariable..."));
147
147
  var statementNode = statement.getNode(), metavariableNode = this.node, substitutionNode = substitution !== null ? substitution.getSubstitutionNode() : null, substitutionPresent = substitutions.isSubstitutionPresentByMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode);
148
148
  if (substitutionPresent) {
149
149
  var _$substitution = substitutions.findSubstitutionByMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode), statementNodeMatches = _$substitution.matchStatementNode(statementNode);
@@ -151,49 +151,49 @@ var Metavariable = /*#__PURE__*/ function() {
151
151
  statementUnified = true;
152
152
  }
153
153
  } else {
154
- var metavariableNode1 = this.node, metavariable = metavariableFromMetavariableNode(metavariableNode1, localContext), statementMetavariable = statementMetavariableFromStatementNode(statementNode, localContext);
154
+ var metavariableNode1 = this.node, metavariable = metavariableFromMetavariableNode(metavariableNode1, generalContext, specificContext), statementMetavariable = statementMetavariableFromStatementNode(statementNode, generalContext, specificContext);
155
155
  if (metavariable !== null && metavariable === statementMetavariable) {
156
156
  statementUnified = true;
157
157
  } else {
158
- var metavariable1 = this, statementForMetavariableSubstitution = _statementForMetavariable.default.fromStatementMetavariableAndSubstitution(statement, metavariable1, substitution, localContext);
158
+ var context = specificContext, metavariable1 = this, statementForMetavariableSubstitution = _statementForMetavariable.default.fromStatementMetavariableAndSubstitution(statement, metavariable1, substitution, context);
159
159
  substitution = statementForMetavariableSubstitution; ///
160
- substitutions.addSubstitution(substitution, localContext);
160
+ substitutions.addSubstitution(substitution, context);
161
161
  statementUnified = true;
162
162
  }
163
163
  }
164
164
  if (statementUnified) {
165
- localContext.debug("...unified the '".concat(statementString, "' statement with the '").concat(metavariableString).concat(substitutionString, "' metavariable."));
165
+ specificContext.debug("...unified the '".concat(statementString, "' statement with the '").concat(metavariableString).concat(substitutionString, "' metavariable."));
166
166
  }
167
167
  return statementUnified;
168
168
  }
169
169
  },
170
170
  {
171
171
  key: "unifySubstitution",
172
- value: function unifySubstitution(substitution, localContext) {
172
+ value: function unifySubstitution(substitution, context) {
173
173
  var substitutionUnified = false;
174
174
  var metavariableString = this.string, substitutionString = substitution.getString();
175
- localContext.trace("Unifying the '".concat(substitutionString, "' substitution with the '").concat(metavariableString, "' metavariable..."));
176
- var metavariableNode = this.node, judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
175
+ context.trace("Unifying the '".concat(substitutionString, "' substitution with the '").concat(metavariableString, "' metavariable..."));
176
+ var metavariableNode = this.node, judgement = context.findJudgementByMetavariableNode(metavariableNode);
177
177
  if (judgement !== null) {
178
178
  var declaration = judgement.getDeclaration();
179
- substitutionUnified = declaration.unifySubstitution(substitution, localContext);
179
+ substitutionUnified = declaration.unifySubstitution(substitution, context);
180
180
  }
181
181
  if (substitutionUnified) {
182
- localContext.debug("...unified the '".concat(substitutionString, "' substitution with the '").concat(metavariableString, "' metavariable."));
182
+ context.debug("...unified the '".concat(substitutionString, "' substitution with the '").concat(metavariableString, "' metavariable."));
183
183
  }
184
184
  return substitutionUnified;
185
185
  }
186
186
  },
187
187
  {
188
188
  key: "verify",
189
- value: function verify(localContext) {
189
+ value: function verify(context) {
190
190
  var verified;
191
191
  var metavariableString = this.string; ///
192
- localContext.trace("Verifying the '".concat(metavariableString, "' metavariable..."));
193
- var metavariableNode = this.node, metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode, localContext);
192
+ context.trace("Verifying the '".concat(metavariableString, "' metavariable..."));
193
+ var metavariableNode = this.node, metavariablePresent = context.isMetavariablePresentByMetavariableNode(metavariableNode);
194
194
  verified = metavariablePresent; ///
195
195
  if (verified) {
196
- localContext.debug("...verified the '".concat(metavariableString, "' metavariable."));
196
+ context.debug("...verified the '".concat(metavariableString, "' metavariable."));
197
197
  }
198
198
  return verified;
199
199
  }
@@ -210,8 +210,7 @@ var Metavariable = /*#__PURE__*/ function() {
210
210
  } else {
211
211
  var termNode = termNodeQuery(this.node);
212
212
  if (termNode !== null) {
213
- var termString = this.fileContext.nodeAsString(termNode);
214
- this.fileContext.debug("The '".concat(termString, "' term was found when a type should have been present."));
213
+ this.fileContext.debug("A term was found in the '".concat(metavariableString, "' metavariable when a type should have been present."));
215
214
  } else {
216
215
  var typeNode = typeNodeQuery(this.node);
217
216
  if (typeNode !== null) {
@@ -234,17 +233,17 @@ var Metavariable = /*#__PURE__*/ function() {
234
233
  },
235
234
  {
236
235
  key: "verifyGivenMetaType",
237
- value: function verifyGivenMetaType(metaType, localContext) {
236
+ value: function verifyGivenMetaType(metaType, context) {
238
237
  var verifiedGivenMetaType = false;
239
238
  var metavariableString = this.string, metaTypeString = metaType.getString();
240
- localContext.trace("Verifying the '".concat(metavariableString, "' metavariable given the '").concat(metaTypeString, "' meta-type..."));
241
- var metavariableNode = this.node, metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
239
+ context.trace("Verifying the '".concat(metavariableString, "' metavariable given the '").concat(metaTypeString, "' meta-type..."));
240
+ var metavariableNode = this.node, specificContext = context, generalContext = context, metavariable = generalContext.findMetavariableByMetavariableNode(metavariableNode, specificContext);
242
241
  if (metavariable !== null) {
243
242
  var metaTypeMatches = metavariable.matchMetaType(metaType);
244
243
  verifiedGivenMetaType = metaTypeMatches; ///
245
244
  }
246
245
  if (verifiedGivenMetaType) {
247
- localContext.debug("...verified the '".concat(metavariableString, "' metavariable given the '").concat(metaTypeString, "' meta-type."));
246
+ context.debug("...verified the '".concat(metavariableString, "' metavariable given the '").concat(metaTypeString, "' meta-type."));
248
247
  }
249
248
  return verifiedGivenMetaType;
250
249
  }
@@ -269,11 +268,11 @@ var Metavariable = /*#__PURE__*/ function() {
269
268
  },
270
269
  {
271
270
  key: "fromMetavariableNode",
272
- value: function fromMetavariableNode(metavariableNode, localContext) {
271
+ value: function fromMetavariableNode(metavariableNode, context) {
273
272
  var metavariable = null;
274
273
  if (metavariableNode !== null) {
275
- var metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), node = metavariableNode, name = metavariableName, string = localContext.nodeAsString(node), metaType = null;
276
- metavariable = new Metavariable(localContext, string, node, name, metaType);
274
+ var metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), node = metavariableNode, name = metavariableName, string = context.nodeAsString(node), metaType = null;
275
+ metavariable = new Metavariable(context, string, node, name, metaType);
277
276
  }
278
277
  return metavariable;
279
278
  }
@@ -281,7 +280,7 @@ var Metavariable = /*#__PURE__*/ function() {
281
280
  {
282
281
  key: "fromMetavariableDeclarationNode",
283
282
  value: function fromMetavariableDeclarationNode(metavariableDeclarationNode, fileContext) {
284
- var MetaType = _shim.default.MetaType, metaTypeNode = metaTypeNodeQuery(metavariableDeclarationNode), metavariableNode = metavariableNodeQuery(metavariableDeclarationNode), metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), localContext = _local.default.fromFileContext(fileContext), metavariableString = fileContext.nodeAsString(metavariableNode), string = metavariableString, node = metavariableNode, name = metavariableName, metaType = MetaType.fromMetaTypeNode(metaTypeNode, localContext), metavariable = new Metavariable(fileContext, string, node, name, metaType);
283
+ var MetaType = _shim.default.MetaType, metaTypeNode = metaTypeNodeQuery(metavariableDeclarationNode), metavariableNode = metavariableNodeQuery(metavariableDeclarationNode), metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), metavariableString = fileContext.nodeAsString(metavariableNode), localContext = _local.default.fromFileContext(fileContext), context = localContext, string = metavariableString, node = metavariableNode, name = metavariableName, metaType = MetaType.fromMetaTypeNode(metaTypeNode, context), metavariable = new Metavariable(fileContext, string, node, name, metaType);
285
284
  return metavariable;
286
285
  }
287
286
  }
@@ -292,25 +291,27 @@ Object.assign(_shim.default, {
292
291
  Metavariable: Metavariable
293
292
  });
294
293
  var _default = Metavariable;
295
- function metavariableFromMetavariableNode(metavariableNode, localContext) {
296
- var metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
294
+ function metavariableFromMetavariableNode(metavariableNode, generalContext, specificContext) {
295
+ var context = generalContext, metavariable = context.findMetavariableByMetavariableNode(metavariableNode, specificContext);
297
296
  return metavariable;
298
297
  }
299
- function frameMetavariableFromStatementNode(frameNode, localContext) {
298
+ function frameMetavariableFromStatementNode(frameNode, generalContext, specificContext) {
300
299
  var frameMetavariable = null;
301
300
  var frameMetavariableNode = frameMetavariableNodeQuery(frameNode);
302
301
  if (frameMetavariableNode !== null) {
303
- frameMetavariable = localContext.findMetavariableByMetavariableNode(frameMetavariableNode, localContext);
302
+ var context = generalContext; ///
303
+ frameMetavariable = context.findMetavariableByMetavariableNode(frameMetavariableNode, specificContext);
304
304
  }
305
305
  return frameMetavariable;
306
306
  }
307
- function statementMetavariableFromStatementNode(statementNode, localContext) {
307
+ function statementMetavariableFromStatementNode(statementNode, generalContext, specificContext) {
308
308
  var statementMetavariable = null;
309
309
  var statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
310
310
  if (statementMetavariableNode !== null) {
311
- statementMetavariable = localContext.findMetavariableByMetavariableNode(statementMetavariableNode, localContext);
311
+ var context = generalContext;
312
+ statementMetavariable = context.findMetavariableByMetavariableNode(statementMetavariableNode, specificContext);
312
313
  }
313
314
  return statementMetavariable;
314
315
  }
315
316
 
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuL3NoaW1cIjtcbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4vY29udGV4dC9sb2NhbFwiO1xuaW1wb3J0IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIGZyb20gXCIuL3N1YnN0aXR1dGlvbi9mcmFtZUZvck1ldGF2YXJpYWJsZVwiO1xuaW1wb3J0IFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb24vc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZVN0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5pbXBvcnQgeyBtZXRhVHlwZUZyb21KU09OLCBtZXRhVHlwZVRvTWV0YVR5cGVKU09OIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2pzb25cIjtcbmltcG9ydCB7IHR5cGVOYW1lRnJvbVR5cGVOb2RlLCBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvbmFtZVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZS9hcmd1bWVudC90ZXJtXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGUvYXJndW1lbnQvdHlwZVwiKSxcbiAgICAgIG1ldGFUeXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uL21ldGFUeXBlXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uL21ldGF2YXJpYWJsZVwiKSxcbiAgICAgIGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lL21ldGF2YXJpYWJsZSFcIiksXG4gICAgICBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L21ldGF2YXJpYWJsZSFcIik7XG5cbmNsYXNzIE1ldGF2YXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGZpbGVDb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIG1ldGFUeXBlKSB7XG4gICAgdGhpcy5maWxlQ29udGV4dCA9IGZpbGVDb250ZXh0O1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1ldGFUeXBlID0gbWV0YVR5cGU7XG4gIH1cblxuICBnZXRGaWxlQ29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlQ29udGV4dDtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRNZXRhVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhVHlwZTtcbiAgfVxuXG4gIGdldE1ldGFUeXBlTmFtZSgpIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSB0aGlzLm1ldGFUeXBlLmdldE5hbWUoKTtcblxuICAgIHJldHVybiBtZXRhVHlwZU5hbWU7XG4gIH1cblxuICBtYXRjaE1ldGFUeXBlKG1ldGFUeXBlKSB7XG4gICAgY29uc3QgbWV0YVR5cGVNYXRjaGVzID0gKHRoaXMubWV0YVR5cGUgPT09IG1ldGFUeXBlKTtcblxuICAgIHJldHVybiBtZXRhVHlwZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzID0gKHRoaXMubmFtZSA9PT0gbWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTmFtZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5ub2RlLm1hdGNoKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdW5pZnlGcmFtZShmcmFtZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IGZyYW1lVW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZnJhbWVOb2RlID0gZnJhbWUuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGZyYW1lU3RyaW5nID0gZnJhbWUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIHNpbXBsZVN1YnN0aXR1dGlvblByZXNlbnQgPSBzdWJzdGl0dXRpb25zLmlzU2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIGlmIChzaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50KSB7XG4gICAgICBjb25zdCBzaW1wbGVTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzaW1wbGVTdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgIGZyYW1lTm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb24ubWF0Y2hGcmFtZU5vZGUoZnJhbWVOb2RlKTtcblxuICAgICAgaWYgKGZyYW1lTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgZnJhbWVVbmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMubm9kZSwgIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KSxcbiAgICAgICAgICAgIGZyYW1lTWV0YXZhcmlhYmxlICA9IGZyYW1lTWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUoZnJhbWVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlID09PSBmcmFtZU1ldGF2YXJpYWJsZSkge1xuICAgICAgICBmcmFtZVVuaWZpZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcywgIC8vL1xuICAgICAgICAgICAgICBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21GcmFtZUFuZE1ldGF2YXJpYWJsZShmcmFtZSwgbWV0YXZhcmlhYmxlLCBsb2NhbENvbnRleHQpLFxuICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICAgIHN1YnN0aXR1dGlvbnMuYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBmcmFtZVVuaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcmFtZVVuaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lVW5pZmllZDtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uLmdldFN0cmluZygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JHtzdWJzdGl0dXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbk5vZGUgPSAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbi5nZXRTdWJzdGl0dXRpb25Ob2RlKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgc3Vic3RpdHV0aW9uUHJlc2VudCA9IHN1YnN0aXR1dGlvbnMuaXNTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIGlmIChzdWJzdGl0dXRpb25QcmVzZW50KSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb24ubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50Tm9kZU1hdGNoZXMpIHtcbiAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsICAvLy9cbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCksXG4gICAgICAgICAgICBzdGF0ZW1lbnRNZXRhdmFyaWFibGUgPSBzdGF0ZW1lbnRNZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAoKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkgJiYgKG1ldGF2YXJpYWJsZSA9PT0gc3RhdGVtZW50TWV0YXZhcmlhYmxlKSkge1xuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbiwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBzdWJzdGl0dXRpb24gPSBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247ICAvLy9cblxuICAgICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30ke3N1YnN0aXR1dGlvblN0cmluZ30nIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllZDtcbiAgfVxuXG4gIHVuaWZ5U3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHN1YnN0aXR1dGlvblVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uIHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMubm9kZSwgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gbG9jYWxDb250ZXh0LmZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAoanVkZ2VtZW50ICE9PSBudWxsKXtcbiAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0ganVkZ2VtZW50LmdldERlY2xhcmF0aW9uKCk7XG5cbiAgICAgIHN1YnN0aXR1dGlvblVuaWZpZWQgPSBkZWNsYXJhdGlvbi51bmlmeVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHN1YnN0aXR1dGlvblVuaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uIHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uVW5pZmllZDtcbiAgfVxuXG4gIHZlcmlmeShsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWQ7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5ub2RlLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBsb2NhbENvbnRleHQuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICB2ZXJpZmllZCA9IG1ldGF2YXJpYWJsZVByZXNlbnQ7IC8vL1xuXG4gICAgaWYgKHZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5V2hlbkRlY2xhcmVkKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkQXRUb3BMZXZlbCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlIG1ldGF2YXJpYWJsZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0aGlzLm5vZGUpO1xuXG4gICAgICBpZiAodGVybU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICAgICAgICB0aGlzLmZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2FzIGZvdW5kIHdoZW4gYSB0eXBlIHNob3VsZCBoYXZlIGJlZW4gcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0aGlzLm5vZGUpO1xuXG4gICAgICAgIGlmICh0eXBlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gdGhpcy5maWxlQ29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICAgIHZlcmlmaWVkQXRUb3BMZXZlbCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlTmFtZX0nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZlcmlmaWVkQXRUb3BMZXZlbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRBdFRvcExldmVsKSB7XG4gICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aGVuIGRlY2xhcmVkLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZEF0VG9wTGV2ZWw7XG4gIH1cblxuICB2ZXJpZnlHaXZlbk1ldGFUeXBlKG1ldGFUeXBlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWRHaXZlbk1ldGFUeXBlID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSB0aGlzLnN0cmluZywgIC8vL1xuICAgICAgICAgIG1ldGFUeXBlU3RyaW5nID0gbWV0YVR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMubm9kZSwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhVHlwZU1hdGNoZXMgPSBtZXRhdmFyaWFibGUubWF0Y2hNZXRhVHlwZShtZXRhVHlwZSk7XG5cbiAgICAgIHZlcmlmaWVkR2l2ZW5NZXRhVHlwZSA9IG1ldGFUeXBlTWF0Y2hlczsgIC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZEdpdmVuTWV0YVR5cGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSBnaXZlbiB0aGUgJyR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhLXR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkR2l2ZW5NZXRhVHlwZTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBtZXRhVHlwZUpTT04gPSBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKHRoaXMubWV0YVR5cGUpLFxuICAgICAgICAgIG1ldGFUeXBlID0gbWV0YVR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5zdHJpbmcsXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIG1ldGFUeXBlXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbGV4ZXIgID0gZmlsZUNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgICBwYXJzZXIgPSBmaWxlQ29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZUZyb21NZXRhdmFyaWFibGVTdHJpbmcobWV0YXZhcmlhYmxlU3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgbmFtZSA9IG1ldGF2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICBtZXRhVHlwZSA9IG1ldGFUeXBlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG5ldyBNZXRhdmFyaWFibGUoZmlsZUNvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgbWV0YVR5cGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICAgIGlmIChtZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgbm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgIG5hbWUgPSBtZXRhdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICBzdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICAgICAgbWV0YVR5cGUgPSBudWxsO1xuXG4gICAgICBtZXRhdmFyaWFibGUgPSBuZXcgTWV0YXZhcmlhYmxlKGxvY2FsQ29udGV4dCwgc3RyaW5nLCBub2RlLCBuYW1lLCBtZXRhVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IE1ldGFUeXBlIH0gPSBzaGltLFxuICAgICAgICAgIG1ldGFUeXBlTm9kZSA9IG1ldGFUeXBlTm9kZVF1ZXJ5KG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHN0cmluZyA9IG1ldGF2YXJpYWJsZVN0cmluZywgIC8vL1xuICAgICAgICAgIG5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgbmFtZSA9IG1ldGF2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICBtZXRhVHlwZSA9IE1ldGFUeXBlLmZyb21NZXRhVHlwZU5vZGUobWV0YVR5cGVOb2RlLCBsb2NhbENvbnRleHQpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG5ldyBNZXRhdmFyaWFibGUoZmlsZUNvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgbWV0YVR5cGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgTWV0YXZhcmlhYmxlXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgTWV0YXZhcmlhYmxlO1xuXG5mdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlO1xufVxuXG5mdW5jdGlvbiBmcmFtZU1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnROb2RlKGZyYW1lTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBmcmFtZU1ldGF2YXJpYWJsZSA9IG51bGw7XG5cbiAgY29uc3QgZnJhbWVNZXRhdmFyaWFibGVOb2RlID0gZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkoZnJhbWVOb2RlKTtcblxuICBpZiAoZnJhbWVNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgZnJhbWVNZXRhdmFyaWFibGUgPSBsb2NhbENvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZShmcmFtZU1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gZnJhbWVNZXRhdmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHN0YXRlbWVudE1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50TWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICBjb25zdCBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlID0gc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50TWV0YXZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUoc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRNZXRhdmFyaWFibGU7XG59XG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJtZXRhVHlwZU5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsImZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiTWV0YXZhcmlhYmxlIiwiZmlsZUNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwibmFtZSIsIm1ldGFUeXBlIiwiZ2V0RmlsZUNvbnRleHQiLCJnZXRTdHJpbmciLCJnZXROb2RlIiwiZ2V0TmFtZSIsImdldE1ldGFUeXBlIiwiZ2V0TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwibWF0Y2hNZXRhVHlwZSIsIm1ldGFUeXBlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoIiwidW5pZnlGcmFtZSIsImZyYW1lIiwic3Vic3RpdHV0aW9ucyIsImxvY2FsQ29udGV4dCIsImZyYW1lVW5pZmllZCIsImZyYW1lTm9kZSIsImZyYW1lU3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwidHJhY2UiLCJzaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50IiwiaXNTaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwic2ltcGxlU3Vic3RpdHV0aW9uIiwiZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImZyYW1lTm9kZU1hdGNoZXMiLCJtYXRjaEZyYW1lTm9kZSIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUZyb21NZXRhdmFyaWFibGVOb2RlIiwiZnJhbWVNZXRhdmFyaWFibGUiLCJmcmFtZU1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnROb2RlIiwiZnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJGcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiIsImZyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImFkZFN1YnN0aXR1dGlvbiIsImRlYnVnIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVkIiwic3RhdGVtZW50U3RyaW5nIiwic3Vic3RpdHV0aW9uU3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwic3RhdGVtZW50Tm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJnZXRTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uUHJlc2VudCIsImlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJmaW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50TWV0YXZhcmlhYmxlIiwic3RhdGVtZW50TWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJmcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwidW5pZnlTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25VbmlmaWVkIiwianVkZ2VtZW50IiwiZmluZEp1ZGdlbWVudEJ5TWV0YXZhcmlhYmxlTm9kZSIsImRlY2xhcmF0aW9uIiwiZ2V0RGVjbGFyYXRpb24iLCJ2ZXJpZnkiLCJ2ZXJpZmllZCIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJ2ZXJpZnlXaGVuRGVjbGFyZWQiLCJ2ZXJpZmllZEF0VG9wTGV2ZWwiLCJtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJ0ZXJtTm9kZSIsInRlcm1TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidmVyaWZ5R2l2ZW5NZXRhVHlwZSIsInZlcmlmaWVkR2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsInRvSlNPTiIsIm1ldGFUeXBlSlNPTiIsIm1ldGFUeXBlVG9NZXRhVHlwZUpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwibWV0YXZhcmlhYmxlTm9kZUZyb21NZXRhdmFyaWFibGVTdHJpbmciLCJtZXRhVHlwZUZyb21KU09OIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiTWV0YVR5cGUiLCJzaGltIiwibWV0YVR5cGVOb2RlIiwiTG9jYWxDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwiZnJvbU1ldGFUeXBlTm9kZSIsIk9iamVjdCIsImFzc2lnbiIsImZyYW1lTWV0YXZhcmlhYmxlTm9kZSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXlWQTs7O2VBQUE7OzsyREF2VmlCOzREQUNROzJFQUNvQjsrRUFDSTtxQkFFdkI7eUJBQ0c7b0JBQzBCO29CQUNFO29CQUNrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzRSxJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsZ0NBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsZ0NBQzFCRSxvQkFBb0JGLElBQUFBLGdCQUFTLEVBQUMsc0NBQzlCRyx3QkFBd0JILElBQUFBLGdCQUFTLEVBQUMsMENBQ2xDSSw2QkFBNkJKLElBQUFBLGdCQUFTLEVBQUMs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
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuL3NoaW1cIjtcbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4vY29udGV4dC9sb2NhbFwiO1xuaW1wb3J0IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIGZyb20gXCIuL3N1YnN0aXR1dGlvbi9mcmFtZUZvck1ldGF2YXJpYWJsZVwiO1xuaW1wb3J0IFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb24vc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZVN0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5pbXBvcnQgeyBtZXRhVHlwZUZyb21KU09OLCBtZXRhVHlwZVRvTWV0YVR5cGVKU09OIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2pzb25cIjtcbmltcG9ydCB7IHR5cGVOYW1lRnJvbVR5cGVOb2RlLCBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvbmFtZVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZS9hcmd1bWVudC90ZXJtXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGUvYXJndW1lbnQvdHlwZVwiKSxcbiAgICAgIG1ldGFUeXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uL21ldGFUeXBlXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uL21ldGF2YXJpYWJsZVwiKSxcbiAgICAgIGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lL21ldGF2YXJpYWJsZSFcIiksXG4gICAgICBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L21ldGF2YXJpYWJsZSFcIik7XG5cbmNsYXNzIE1ldGF2YXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGZpbGVDb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIG1ldGFUeXBlKSB7XG4gICAgdGhpcy5maWxlQ29udGV4dCA9IGZpbGVDb250ZXh0O1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1ldGFUeXBlID0gbWV0YVR5cGU7XG4gIH1cblxuICBnZXRGaWxlQ29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlQ29udGV4dDtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRNZXRhVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhVHlwZTtcbiAgfVxuXG4gIGdldE1ldGFUeXBlTmFtZSgpIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSB0aGlzLm1ldGFUeXBlLmdldE5hbWUoKTtcblxuICAgIHJldHVybiBtZXRhVHlwZU5hbWU7XG4gIH1cblxuICBtYXRjaE1ldGFUeXBlKG1ldGFUeXBlKSB7XG4gICAgY29uc3QgbWV0YVR5cGVNYXRjaGVzID0gKHRoaXMubWV0YVR5cGUgPT09IG1ldGFUeXBlKTtcblxuICAgIHJldHVybiBtZXRhVHlwZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzID0gKHRoaXMubmFtZSA9PT0gbWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTmFtZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5ub2RlLm1hdGNoKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdW5pZnlGcmFtZShmcmFtZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBmcmFtZVVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lTm9kZSA9IGZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICBmcmFtZVN0cmluZyA9IGZyYW1lLmdldFN0cmluZygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5ub2RlLCAvLy9cbiAgICAgICAgICBzaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50ID0gc3Vic3RpdHV0aW9ucy5pc1NpbXBsZVN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAoc2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudCkge1xuICAgICAgY29uc3Qgc2ltcGxlU3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kU2ltcGxlU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gc2ltcGxlU3Vic3RpdHV0aW9uLCAgLy8vXG4gICAgICAgICAgICBmcmFtZU5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uLm1hdGNoRnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICAgIGlmIChmcmFtZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgIGZyYW1lVW5pZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsICAvLy9cbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpLFxuICAgICAgICAgICAgZnJhbWVNZXRhdmFyaWFibGUgID0gZnJhbWVNZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50Tm9kZShmcmFtZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkgJiYgKG1ldGF2YXJpYWJsZSA9PT0gZnJhbWVNZXRhdmFyaWFibGUpKSB7XG4gICAgICAgIGZyYW1lVW5pZmllZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgICAgICBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21GcmFtZUFuZE1ldGF2YXJpYWJsZShmcmFtZSwgbWV0YXZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gZnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247ICAvLy9cblxuICAgICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGZyYW1lVW5pZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYW1lVW5pZmllZCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVVbmlmaWVkO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uLmdldFN0cmluZygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JHtzdWJzdGl0dXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbk5vZGUgPSAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbi5nZXRTdWJzdGl0dXRpb25Ob2RlKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgc3Vic3RpdHV0aW9uUHJlc2VudCA9IHN1YnN0aXR1dGlvbnMuaXNTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIGlmIChzdWJzdGl0dXRpb25QcmVzZW50KSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb24ubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50Tm9kZU1hdGNoZXMpIHtcbiAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsICAvLy9cbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpLFxuICAgICAgICAgICAgc3RhdGVtZW50TWV0YXZhcmlhYmxlID0gc3RhdGVtZW50TWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmICgobWV0YXZhcmlhYmxlICE9PSBudWxsKSAmJiAobWV0YXZhcmlhYmxlID09PSBzdGF0ZW1lbnRNZXRhdmFyaWFibGUpKSB7XG4gICAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9ucy5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllZCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfScgbWV0YXZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgdW5pZnlTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnN0aXR1dGlvblVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIGp1ZGdlbWVudCA9IGNvbnRleHQuZmluZEp1ZGdlbWVudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpe1xuICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSBqdWRnZW1lbnQuZ2V0RGVjbGFyYXRpb24oKTtcblxuICAgICAgc3Vic3RpdHV0aW9uVW5pZmllZCA9IGRlY2xhcmF0aW9uLnVuaWZ5U3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHN1YnN0aXR1dGlvblVuaWZpZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvblVuaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZDtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5ub2RlLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHZlcmlmaWVkID0gbWV0YXZhcmlhYmxlUHJlc2VudDsgLy8vXG5cbiAgICBpZiAodmVyaWZpZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5V2hlbkRlY2xhcmVkKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkQXRUb3BMZXZlbCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlIG1ldGF2YXJpYWJsZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0aGlzLm5vZGUpO1xuXG4gICAgICBpZiAodGVybU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5maWxlQ29udGV4dC5kZWJ1ZyhgQSB0ZXJtIHdhcyBmb3VuZCBpbiB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdoZW4gYSB0eXBlIHNob3VsZCBoYXZlIGJlZW4gcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0aGlzLm5vZGUpO1xuXG4gICAgICAgIGlmICh0eXBlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gdGhpcy5maWxlQ29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICAgIHZlcmlmaWVkQXRUb3BMZXZlbCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlTmFtZX0nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZlcmlmaWVkQXRUb3BMZXZlbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRBdFRvcExldmVsKSB7XG4gICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aGVuIGRlY2xhcmVkLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZEF0VG9wTGV2ZWw7XG4gIH1cblxuICB2ZXJpZnlHaXZlbk1ldGFUeXBlKG1ldGFUeXBlLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkR2l2ZW5NZXRhVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmcsICAvLy9cbiAgICAgICAgICBtZXRhVHlwZVN0cmluZyA9IG1ldGFUeXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgZ2l2ZW4gdGhlICcke21ldGFUeXBlU3RyaW5nfScgbWV0YS10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5ub2RlLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gZ2VuZXJhbENvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YVR5cGVNYXRjaGVzID0gbWV0YXZhcmlhYmxlLm1hdGNoTWV0YVR5cGUobWV0YVR5cGUpO1xuXG4gICAgICB2ZXJpZmllZEdpdmVuTWV0YVR5cGUgPSBtZXRhVHlwZU1hdGNoZXM7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRHaXZlbk1ldGFUeXBlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRHaXZlbk1ldGFUeXBlO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IG1ldGFUeXBlSlNPTiA9IG1ldGFUeXBlVG9NZXRhVHlwZUpTT04odGhpcy5tZXRhVHlwZSksXG4gICAgICAgICAgbWV0YVR5cGUgPSBtZXRhVHlwZUpTT04sICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLnN0cmluZyxcbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgbWV0YVR5cGVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBsZXhlciAgPSBmaWxlQ29udGV4dC5nZXRMZXhlcigpLFxuICAgICAgICAgIHBhcnNlciA9IGZpbGVDb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IHN0cmluZywgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZVN0cmluZyhtZXRhdmFyaWFibGVTdHJpbmcsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICBuYW1lID0gbWV0YXZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgIG1ldGFUeXBlID0gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gbmV3IE1ldGF2YXJpYWJsZShmaWxlQ29udGV4dCwgc3RyaW5nLCBub2RlLCBuYW1lLCBtZXRhVHlwZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICAgIGlmIChtZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgbm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgIG5hbWUgPSBtZXRhdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIG1ldGFUeXBlID0gbnVsbDtcblxuICAgICAgbWV0YXZhcmlhYmxlID0gbmV3IE1ldGF2YXJpYWJsZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIG1ldGFUeXBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgTWV0YVR5cGUgfSA9IHNoaW0sXG4gICAgICAgICAgbWV0YVR5cGVOb2RlID0gbWV0YVR5cGVOb2RlUXVlcnkobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCksXG4gICAgICAgICAgY29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RyaW5nID0gbWV0YXZhcmlhYmxlU3RyaW5nLCAgLy8vXG4gICAgICAgICAgbm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICBuYW1lID0gbWV0YXZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgIG1ldGFUeXBlID0gTWV0YVR5cGUuZnJvbU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG5ldyBNZXRhdmFyaWFibGUoZmlsZUNvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgbWV0YVR5cGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgTWV0YXZhcmlhYmxlXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgTWV0YXZhcmlhYmxlO1xuXG5mdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dCwgLy8vXG4gICAgICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIGZyYW1lTWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUoZnJhbWVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCBmcmFtZU1ldGF2YXJpYWJsZSA9IG51bGw7XG5cbiAgY29uc3QgZnJhbWVNZXRhdmFyaWFibGVOb2RlID0gZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkoZnJhbWVOb2RlKTtcblxuICBpZiAoZnJhbWVNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgIGZyYW1lTWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKGZyYW1lTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZU1ldGF2YXJpYWJsZTtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50TWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50TWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICBjb25zdCBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlID0gc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0O1xuXG4gICAgc3RhdGVtZW50TWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljQ29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50TWV0YXZhcmlhYmxlO1xufVxuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwibWV0YVR5cGVOb2RlUXVlcnkiLCJtZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsIk1ldGF2YXJpYWJsZSIsImZpbGVDb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsIm5hbWUiLCJtZXRhVHlwZSIsImdldEZpbGVDb250ZXh0IiwiZ2V0U3RyaW5nIiwiZ2V0Tm9kZSIsImdldE5hbWUiLCJnZXRNZXRhVHlwZSIsImdldE1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsIm1hdGNoTWV0YVR5cGUiLCJtZXRhVHlwZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtYXRjaCIsInVuaWZ5RnJhbWUiLCJmcmFtZSIsInN1YnN0aXR1dGlvbnMiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImZyYW1lVW5pZmllZCIsImZyYW1lTm9kZSIsImZyYW1lU3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwidHJhY2UiLCJzaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50IiwiaXNTaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwic2ltcGxlU3Vic3RpdHV0aW9uIiwiZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImZyYW1lTm9kZU1hdGNoZXMiLCJtYXRjaEZyYW1lTm9kZSIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUZyb21NZXRhdmFyaWFibGVOb2RlIiwiZnJhbWVNZXRhdmFyaWFibGUiLCJmcmFtZU1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnROb2RlIiwiY29udGV4dCIsImZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiRnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJmcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUiLCJhZGRTdWJzdGl0dXRpb24iLCJkZWJ1ZyIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllZCIsInN0YXRlbWVudFN0cmluZyIsInN1YnN0aXR1dGlvblN0cmluZyIsIkVNUFRZX1NUUklORyIsInN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwiZ2V0U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvblByZXNlbnQiLCJpc1N1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlIiwiZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInVuaWZ5U3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uVW5pZmllZCIsImp1ZGdlbWVudCIsImZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJkZWNsYXJhdGlvbiIsImdldERlY2xhcmF0aW9uIiwidmVyaWZ5IiwidmVyaWZpZWQiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwidmVyaWZ5V2hlbkRlY2xhcmVkIiwidmVyaWZpZWRBdFRvcExldmVsIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwidGVybU5vZGUiLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidmVyaWZ5R2l2ZW5NZXRhVHlwZSIsInZlcmlmaWVkR2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsInRvSlNPTiIsIm1ldGFUeXBlSlNPTiIsIm1ldGFUeXBlVG9NZXRhVHlwZUpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwibWV0YXZhcmlhYmxlTm9kZUZyb21NZXRhdmFyaWFibGVTdHJpbmciLCJtZXRhVHlwZUZyb21KU09OIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGUiLCJub2RlQXNTdHJpbmciLCJmcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiTWV0YVR5cGUiLCJzaGltIiwibWV0YVR5cGVOb2RlIiwibG9jYWxDb250ZXh0IiwiTG9jYWxDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwiZnJvbU1ldGFUeXBlTm9kZSIsIk9iamVjdCIsImFzc2lnbiIsImZyYW1lTWV0YXZhcmlhYmxlTm9kZSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTRWQTs7O2VBQUE7OzsyREExVmlCOzREQUNROzJFQUNvQjsrRUFDSTtxQkFFdkI7eUJBQ0c7b0JBQzBCO29CQUNFO29CQUNrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzRSxJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsZ0NBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsZ0NBQzFCRSxvQkFBb0JGLElBQUFBLGdCQUFTLEVBQUMsc0NBQzlCRyx3QkFBd0JILElBQUFBLGdCQUFTLEVBQUMsMENBQ2xDSSw2QkFBNkJKLElBQUFBLGdCQUFTLEVBQUMseUJBQ3ZDSyxpQ0FBaUNMLElBQUFBLGdCQUFTLEVBQUM7QUFFakQsSUFBQSxBQUFNTSw2QkFBTjthQUFNQSxhQUNRQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFFBQVE7Z0NBRGpETDtRQUVGLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtRQUNuQixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFFBQVEsR0FBR0E7O2tCQU5kTDs7WUFTSk0sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDTCxXQUFXO1lBQ3pCOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDTCxNQUFNO1lBQ3BCOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDTCxJQUFJO1lBQ2xCOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNF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
@@ -15,49 +15,49 @@ function _interop_require_default(obj) {
15
15
  default: obj
16
16
  };
17
17
  }
18
- function unifyAWithRule(qualifiedStatement, substitutions, localContext) {
18
+ function unifyAWithRule(qualifiedStatement, substitutions, context) {
19
19
  var unifiedWithRule = false;
20
- var reference = qualifiedStatement.getReference(), rule = localContext.findRuleByReference(reference);
20
+ var reference = qualifiedStatement.getReference(), rule = context.findRuleByReference(reference);
21
21
  if (rule !== null) {
22
22
  var referenceString = reference.getString(), qualifiedStatementString = (0, _string.trim)(qualifiedStatement.getString()); ///
23
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' rule..."));
24
- var statement = qualifiedStatement.getStatement(), statementUnified = rule.unifyStatement(statement, localContext);
23
+ context.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' rule..."));
24
+ var statement = qualifiedStatement.getStatement(), statementUnified = rule.unifyStatement(statement, context);
25
25
  unifiedWithRule = statementUnified; ///
26
26
  if (unifiedWithRule) {
27
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' rule."));
27
+ context.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' rule."));
28
28
  }
29
29
  }
30
30
  return unifiedWithRule;
31
31
  }
32
- function unifyAWithReference(qualifiedStatement, substitutions, localContext) {
32
+ function unifyAWithReference(qualifiedStatement, substitutions, context) {
33
33
  var unifiedWithReference = false;
34
- var reference = qualifiedStatement.getReference(), metavariableNode = reference.getMetavariableNode(), metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode, localContext);
34
+ var reference = qualifiedStatement.getReference(), metavariableNode = reference.getMetavariableNode(), metavariablePresent = context.isMetavariablePresentByMetavariableNode(metavariableNode);
35
35
  if (metavariablePresent) {
36
36
  var statement = qualifiedStatement.getStatement(), statementString = statement.getString(), referenceString = reference.getString();
37
- localContext.trace("Unifying the '".concat(statementString, "' qualified statement with the '").concat(referenceString, "' reference..."));
38
- var metavariable = reference.getMetavariable(), statementForMetavariableSubstitution = _statementForMetavariable.default.fromStatementAndMetavariable(statement, metavariable, localContext), substitution = statementForMetavariableSubstitution; ///
39
- substitutions.addSubstitution(substitution, localContext);
37
+ context.trace("Unifying the '".concat(statementString, "' qualified statement with the '").concat(referenceString, "' reference..."));
38
+ var metavariable = reference.getMetavariable(), statementForMetavariableSubstitution = _statementForMetavariable.default.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementForMetavariableSubstitution; ///
39
+ substitutions.addSubstitution(substitution, context);
40
40
  unifiedWithReference = true;
41
41
  if (unifiedWithReference) {
42
- localContext.debug("...unified the '".concat(statementString, "' qualified statement with the '").concat(referenceString, "' reference."));
42
+ context.debug("...unified the '".concat(statementString, "' qualified statement with the '").concat(referenceString, "' reference."));
43
43
  }
44
44
  }
45
45
  return unifiedWithReference;
46
46
  }
47
- function unifyAWithAxiomLemmaTheoremOrConjecture(qualifiedStatement, substitutions, localContext) {
47
+ function unifyAWithAxiomLemmaTheoremOrConjecture(qualifiedStatement, substitutions, context) {
48
48
  var unifiedWithAxiomLemmaTheoremOrConjecture = false;
49
- var reference = qualifiedStatement.getReference(), axiom = localContext.findAxiomByReference(reference), lemma = localContext.findLemmaByReference(reference), theorem = localContext.findTheoremByReference(reference), conjecture = localContext.findConjectureByReference(reference), axiomLemmaTheoremConjecture = axiom || lemma || theorem || conjecture;
49
+ var reference = qualifiedStatement.getReference(), axiom = context.findAxiomByReference(reference), lemma = context.findLemmaByReference(reference), theorem = context.findTheoremByReference(reference), conjecture = context.findConjectureByReference(reference), axiomLemmaTheoremConjecture = axiom || lemma || theorem || conjecture;
50
50
  if (axiomLemmaTheoremConjecture !== null) {
51
51
  var referenceString = reference.getString(), qualifiedStatementString = (0, _string.trim)(qualifiedStatement.getString()); ///
52
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' axiom, lemma, theorem or conjecture..."));
53
- var statement = qualifiedStatement.getStatement(), statementUnified = axiomLemmaTheoremConjecture.unifyStatement(statement, localContext);
52
+ context.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' axiom, lemma, theorem or conjecture..."));
53
+ var statement = qualifiedStatement.getStatement(), statementUnified = axiomLemmaTheoremConjecture.unifyStatement(statement, context);
54
54
  if (statementUnified) {
55
- var metavariable = reference.getMetavariable(), statementForMetavariableSubstitution = _statementForMetavariable.default.fromStatementAndMetavariable(statement, metavariable, localContext), substitution = statementForMetavariableSubstitution; ///
56
- substitutions.addSubstitution(substitution, localContext);
55
+ var metavariable = reference.getMetavariable(), statementForMetavariableSubstitution = _statementForMetavariable.default.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementForMetavariableSubstitution; ///
56
+ substitutions.addSubstitution(substitution, context);
57
57
  unifiedWithAxiomLemmaTheoremOrConjecture = true;
58
58
  }
59
59
  if (unifiedWithAxiomLemmaTheoremOrConjecture) {
60
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' axiom, lemma, theorem or conjecture."));
60
+ context.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(referenceString, "' axiom, lemma, theorem or conjecture."));
61
61
  }
62
62
  }
63
63
  return unifiedWithAxiomLemmaTheoremOrConjecture;
@@ -69,4 +69,4 @@ var unifyMixins = [
69
69
  ];
70
70
  var _default = unifyMixins;
71
71
 
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9taXhpbnMvc3RhdGVtZW50L3F1YWxpZmllZC91bmlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vLi4vLi4vc3Vic3RpdHV0aW9uL3N0YXRlbWVudEZvck1ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyB0cmltIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZnVuY3Rpb24gdW5pZnlBV2l0aFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHVuaWZpZWRXaXRoUnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgcnVsZSA9IGxvY2FsQ29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gdHJpbShxdWFsaWZpZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCkpOyAgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJ1bGUuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gcnVsZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICB1bmlmaWVkV2l0aFJ1bGUgPSBzdGF0ZW1lbnRVbmlmaWVkOyAgLy8vXG5cbiAgICBpZiAodW5pZmllZFdpdGhSdWxlKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcnVsZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5pZmllZFdpdGhSdWxlO1xufVxuXG5mdW5jdGlvbiB1bmlmeUFXaXRoUmVmZXJlbmNlKHF1YWxpZmllZFN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCB1bmlmaWVkV2l0aFJlZmVyZW5jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBsb2NhbENvbnRleHQuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBxdWFsaWZpZWRTdGF0ZW1lbnQuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIGxvY2FsQ29udGV4dCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uOyAvLy9cblxuICAgIHN1YnN0aXR1dGlvbnMuYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgbG9jYWxDb250ZXh0KTtcblxuICAgIHVuaWZpZWRXaXRoUmVmZXJlbmNlID0gdHJ1ZTtcblxuICAgIGlmICh1bmlmaWVkV2l0aFJlZmVyZW5jZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5pZmllZFdpdGhSZWZlcmVuY2U7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5QVdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZShxdWFsaWZpZWRTdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgYXhpb20gPSBsb2NhbENvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgbGVtbWEgPSBsb2NhbENvbnRleHQuZmluZExlbW1hQnlSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgdGhlb3JlbSA9IGxvY2FsQ29udGV4dC5maW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICAgIGNvbmplY3R1cmUgPSBsb2NhbENvbnRleHQuZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpLFxuICAgICAgICBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUgPSAoYXhpb20gfHwgbGVtbWEgfHwgdGhlb3JlbSB8fCBjb25qZWN0dXJlKTtcblxuICBpZiAoYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IHRyaW0ocXVhbGlmaWVkU3RhdGVtZW50LmdldFN0cmluZygpKTsgIC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBheGlvbSwgbGVtbWEsIHRoZW9yZW0gb3IgY29uamVjdHVyZS4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gcXVhbGlmaWVkU3RhdGVtZW50LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICAgIHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBsb2NhbENvbnRleHQpLFxuICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uOyAvLy9cblxuICAgICAgc3Vic3RpdHV0aW9ucy5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICB1bmlmaWVkV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSBvciBjb25qZWN0dXJlLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmlmaWVkV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlO1xufVxuXG5jb25zdCB1bmlmeU1peGlucyA9IFtcbiAgdW5pZnlBV2l0aFJ1bGUsXG4gIHVuaWZ5QVdpdGhSZWZlcmVuY2UsXG4gIHVuaWZ5QVdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgdW5pZnlNaXhpbnM7XG5cbiJdLCJuYW1lcyI6WyJ1bmlmeUFXaXRoUnVsZSIsInF1YWxpZmllZFN0YXRlbWVudCIsInN1YnN0aXR1dGlvbnMiLCJsb2NhbENvbnRleHQiLCJ1bmlmaWVkV2l0aFJ1bGUiLCJyZWZlcmVuY2UiLCJnZXRSZWZlcmVuY2UiLCJydWxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsImdldFN0cmluZyIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsInRyaW0iLCJ0cmFjZSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZWQiLCJ1bmlmeVN0YXRlbWVudCIsImRlYnVnIiwidW5pZnlBV2l0aFJlZmVyZW5jZSIsInVuaWZpZWRXaXRoUmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwic3RhdGVtZW50U3RyaW5nIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwic3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsInN1YnN0aXR1dGlvbiIsImFkZFN1YnN0aXR1dGlvbiIsInVuaWZ5QVdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSIsInVuaWZpZWRXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUiLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwibGVtbWEiLCJmaW5kTGVtbWFCeVJlZmVyZW5jZSIsInRoZW9yZW0iLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlIiwiY29uamVjdHVyZSIsImZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2UiLCJheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUiLCJ1bmlmeU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBd0dBOzs7ZUFBQTs7OytFQXRHaUQ7c0JBRTVCOzs7Ozs7QUFFckIsU0FBU0EsZUFBZUMsa0JBQWtCLEVBQUVD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
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9taXhpbnMvc3RhdGVtZW50L3F1YWxpZmllZC91bmlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vLi4vLi4vc3Vic3RpdHV0aW9uL3N0YXRlbWVudEZvck1ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyB0cmltIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZnVuY3Rpb24gdW5pZnlBV2l0aFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCB1bmlmaWVkV2l0aFJ1bGUgPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBxdWFsaWZpZWRTdGF0ZW1lbnQuZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgIHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSB0cmltKHF1YWxpZmllZFN0YXRlbWVudC5nZXRTdHJpbmcoKSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJ1bGUuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gcnVsZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgdW5pZmllZFdpdGhSdWxlID0gc3RhdGVtZW50VW5pZmllZDsgIC8vL1xuXG4gICAgaWYgKHVuaWZpZWRXaXRoUnVsZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBydWxlLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmlmaWVkV2l0aFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5QVdpdGhSZWZlcmVuY2UocXVhbGlmaWVkU3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCB1bmlmaWVkV2l0aFJlZmVyZW5jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIGNvbnRleHQpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgdW5pZmllZFdpdGhSZWZlcmVuY2UgPSB0cnVlO1xuXG4gICAgaWYgKHVuaWZpZWRXaXRoUmVmZXJlbmNlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5pZmllZFdpdGhSZWZlcmVuY2U7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5QVdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZShxdWFsaWZpZWRTdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHVuaWZpZWRXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUgPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBxdWFsaWZpZWRTdGF0ZW1lbnQuZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgIGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeVJlZmVyZW5jZShyZWZlcmVuY2UpLFxuICAgICAgICBsZW1tYSA9IGNvbnRleHQuZmluZExlbW1hQnlSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgdGhlb3JlbSA9IGNvbnRleHQuZmluZFRoZW9yZW1CeVJlZmVyZW5jZShyZWZlcmVuY2UpLFxuICAgICAgICBjb25qZWN0dXJlID0gY29udGV4dC5maW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICAgIGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZSA9IChheGlvbSB8fCBsZW1tYSB8fCB0aGVvcmVtIHx8IGNvbmplY3R1cmUpO1xuXG4gIGlmIChheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gdHJpbShxdWFsaWZpZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCkpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBheGlvbSwgbGVtbWEsIHRoZW9yZW0gb3IgY29uamVjdHVyZS4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gcXVhbGlmaWVkU3RhdGVtZW50LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVkKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgY29udGV4dCksXG4gICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICB1bmlmaWVkV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBheGlvbSwgbGVtbWEsIHRoZW9yZW0gb3IgY29uamVjdHVyZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZTtcbn1cblxuY29uc3QgdW5pZnlNaXhpbnMgPSBbXG4gIHVuaWZ5QVdpdGhSdWxlLFxuICB1bmlmeUFXaXRoUmVmZXJlbmNlLFxuICB1bmlmeUFXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVcbl07XG5cbmV4cG9ydCBkZWZhdWx0IHVuaWZ5TWl4aW5zO1xuXG4iXSwibmFtZXMiOlsidW5pZnlBV2l0aFJ1bGUiLCJxdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdWJzdGl0dXRpb25zIiwiY29udGV4dCIsInVuaWZpZWRXaXRoUnVsZSIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsInJ1bGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlU3RyaW5nIiwiZ2V0U3RyaW5nIiwicXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nIiwidHJpbSIsInRyYWNlIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllZCIsInVuaWZ5U3RhdGVtZW50IiwiZGVidWciLCJ1bmlmeUFXaXRoUmVmZXJlbmNlIiwidW5pZmllZFdpdGhSZWZlcmVuY2UiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnRTdHJpbmciLCJtZXRhdmFyaWFibGUiLCJnZXRNZXRhdmFyaWFibGUiLCJzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJmcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwic3Vic3RpdHV0aW9uIiwiYWRkU3Vic3RpdHV0aW9uIiwidW5pZnlBV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlIiwidW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSIsImF4aW9tIiwiZmluZEF4aW9tQnlSZWZlcmVuY2UiLCJsZW1tYSIsImZpbmRMZW1tYUJ5UmVmZXJlbmNlIiwidGhlb3JlbSIsImZpbmRUaGVvcmVtQnlSZWZlcmVuY2UiLCJjb25qZWN0dXJlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZSIsImF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZSIsInVuaWZ5TWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF3R0E7OztlQUFBOzs7K0VBdEdpRDtzQkFFNUI7Ozs7OztBQUVyQixTQUFTQSxlQUFlQyxrQkFBa0IsRUFBRUMsYUFBYSxFQUFFQyxPQUFPO0lBQ2hFLElBQUlDLGtCQUFrQjtJQUV0QixJQUFNQyxZQUFZSixtQkFBbUJLLFlBQVksSUFDM0NDLE9BQU9KLFFBQVFLLG1CQUFtQixDQUFDSDtJQUV6QyxJQUFJRSxTQUFTLE1BQU07UUFD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
@@ -17,30 +17,30 @@ function _interop_require_default(obj) {
17
17
  };
18
18
  }
19
19
  var definedAssertionNodeQuery = (0, _query.nodeQuery)("/statement/definedAssertion"), containedAssertionNodeQuery = (0, _query.nodeQuery)("/statement/containedAssertion");
20
- function resolveAsDefinedAssertion(statement, substitutions, localContextA, localContextB) {
20
+ function resolveAsDefinedAssertion(statement, substitutions, generalContext, specificContext) {
21
21
  var resolvedAsDefinedAssertion = false;
22
- var localContext = localContextA, statementNode = statement.getNode(), definedAssertionNode = definedAssertionNodeQuery(statementNode), definedAssertion = _defined.default.fromDefinedAssertionNode(definedAssertionNode, localContext);
22
+ var context = generalContext, statementNode = statement.getNode(), definedAssertionNode = definedAssertionNodeQuery(statementNode), definedAssertion = _defined.default.fromDefinedAssertionNode(definedAssertionNode, context);
23
23
  if (definedAssertion !== null) {
24
24
  var statementString = statement.getString();
25
- localContextB.trace("Resolving the '".concat(statementString, "' statement as a defined assertion..."));
26
- var localContext1 = localContextB, definedAssertionVerified = definedAssertion.resolve(substitutions, localContext1);
25
+ specificContext.trace("Resolving the '".concat(statementString, "' statement as a defined assertion..."));
26
+ var localContext = specificContext, definedAssertionVerified = definedAssertion.resolve(substitutions, localContext);
27
27
  resolvedAsDefinedAssertion = definedAssertionVerified; ///
28
28
  if (resolvedAsDefinedAssertion) {
29
- localContextB.debug("...resolved the '".concat(statementString, "' statement as a defined assertion."));
29
+ specificContext.debug("...resolved the '".concat(statementString, "' statement as a defined assertion."));
30
30
  }
31
31
  }
32
32
  return resolvedAsDefinedAssertion;
33
33
  }
34
- function resolveAsContainedAssertion(statement, substitutions, localContextA, localContextB) {
34
+ function resolveAsContainedAssertion(statement, substitutions, generalContext, specificContext) {
35
35
  var resolvedAsContainedAssertion = false;
36
- var localContext = localContextA, statementNode = statement.getNode(), containedAssertionNode = containedAssertionNodeQuery(statementNode), containedAssertion = _contained.default.fromContainedAssertionNode(containedAssertionNode, localContext);
36
+ var context = generalContext, statementNode = statement.getNode(), containedAssertionNode = containedAssertionNodeQuery(statementNode), containedAssertion = _contained.default.fromContainedAssertionNode(containedAssertionNode, context);
37
37
  if (containedAssertion !== null) {
38
38
  var statementString = statement.getString();
39
- localContextB.trace("Resolving the '".concat(statementString, "' statement as a contained assertion..."));
40
- var localContext1 = localContextB, containedAssertionVerified = containedAssertion.resolve(substitutions, localContext1);
39
+ specificContext.trace("Resolving the '".concat(statementString, "' statement as a contained assertion..."));
40
+ var localContext = specificContext, containedAssertionVerified = containedAssertion.resolve(substitutions, localContext);
41
41
  resolvedAsContainedAssertion = containedAssertionVerified; ///
42
42
  if (resolvedAsContainedAssertion) {
43
- localContextB.debug("...resolved the '".concat(statementString, "' statement as a contained assertion."));
43
+ specificContext.debug("...resolved the '".concat(statementString, "' statement as a contained assertion."));
44
44
  }
45
45
  }
46
46
  return resolvedAsContainedAssertion;
@@ -51,4 +51,4 @@ var resolveMixins = [
51
51
  ];
52
52
  var _default = resolveMixins;
53
53
 
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9taXhpbnMvc3RhdGVtZW50L3Jlc29sdmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWZpbmVkQXNzZXJ0aW9uIGZyb20gXCIuLi8uLi9hc3NlcnRpb24vZGVmaW5lZFwiO1xuaW1wb3J0IENvbnRhaW5lZEFzc2VydGlvbiBmcm9tIFwiLi4vLi4vYXNzZXJ0aW9uL2NvbnRhaW5lZFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGRlZmluZWRBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L2RlZmluZWRBc3NlcnRpb25cIiksXG4gICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L2NvbnRhaW5lZEFzc2VydGlvblwiKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUFzRGVmaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgbGV0IHJlc29sdmVkQXNEZWZpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgbG9jYWxDb250ZXh0ID0gbG9jYWxDb250ZXh0QSwgLy8vXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IGRlZmluZWRBc3NlcnRpb25Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBEZWZpbmVkQXNzZXJ0aW9uLmZyb21EZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICBpZiAoZGVmaW5lZEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGxvY2FsQ29udGV4dEIudHJhY2UoYFJlc29sdmluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGxvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dEIsIC8vL1xuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25WZXJpZmllZCA9IGRlZmluZWRBc3NlcnRpb24ucmVzb2x2ZShzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcmVzb2x2ZWRBc0RlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHJlc29sdmVkQXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHRCLmRlYnVnKGAuLi5yZXNvbHZlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVkQXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQXNDb250YWluZWRBc3NlcnRpb24oc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gIGxldCByZXNvbHZlZEFzQ29udGFpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgbG9jYWxDb250ZXh0ID0gbG9jYWxDb250ZXh0QSwgLy8vXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBDb250YWluZWRBc3NlcnRpb24uZnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0Qi50cmFjZShgUmVzb2x2aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBsb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHRCLCAvLy9cbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25WZXJpZmllZCA9IGNvbnRhaW5lZEFzc2VydGlvbi5yZXNvbHZlKHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dCk7XG5cbiAgICByZXNvbHZlZEFzQ29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHJlc29sdmVkQXNDb250YWluZWRBc3NlcnRpb24pIHtcbiAgICAgIGxvY2FsQ29udGV4dEIuZGVidWcoYC4uLnJlc29sdmVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZEFzQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5jb25zdCByZXNvbHZlTWl4aW5zID0gW1xuICByZXNvbHZlQXNEZWZpbmVkQXNzZXJ0aW9uLFxuICByZXNvbHZlQXNDb250YWluZWRBc3NlcnRpb25cbl07XG5cbmV4cG9ydCBkZWZhdWx0IHJlc29sdmVNaXhpbnM7XG4iXSwibmFtZXMiOlsiZGVmaW5lZEFzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGVRdWVyeSIsInJlc29sdmVBc0RlZmluZWRBc3NlcnRpb24iLCJzdGF0ZW1lbnQiLCJzdWJzdGl0dXRpb25zIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJyZXNvbHZlZEFzRGVmaW5lZEFzc2VydGlvbiIsImxvY2FsQ29udGV4dCIsInN0YXRlbWVudE5vZGUiLCJnZXROb2RlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uIiwiRGVmaW5lZEFzc2VydGlvbiIsImZyb21EZWZpbmVkQXNzZXJ0aW9uTm9kZSIsInN0YXRlbWVudFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVmaW5lZEFzc2VydGlvblZlcmlmaWVkIiwicmVzb2x2ZSIsImRlYnVnIiwicmVzb2x2ZUFzQ29udGFpbmVkQXNzZXJ0aW9uIiwicmVzb2x2ZWRBc0NvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJjb250YWluZWRBc3NlcnRpb24iLCJDb250YWluZWRBc3NlcnRpb24iLCJmcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImNvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkIiwicmVzb2x2ZU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBbUVBOzs7ZUFBQTs7OzhEQWpFNkI7Z0VBQ0U7cUJBRUw7Ozs7OztBQUUxQixJQUFNQSw0QkFBNEJDLElBQUFBLGdCQUFTLEVBQUMsZ0NBQ3RDQyw4QkFBOEJELElBQUFBLGdCQUFTLEVBQUM7QUFFOUMsU0FBU0UsMEJBQTBCQyxTQUFTLEVBQUVDLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxhQUFhO0lBQ3ZGLElBQUlDLDZCQUE2QjtJQUVqQyxJQUFNQyxlQUFlSCxlQUNmSSxnQkFBZ0JOLFVBQVVPLE9BQU8sSUFDakNDLHVCQUF1QlosMEJBQTBCVSxnQkFDakRHLG1CQUFtQkMsZ0JBQWdCLENBQUNDLHdCQUF3QixDQUFDSCxzQkFBc0JIO0lBRXpGLElBQUlJLHFCQUFxQixNQUFNO1FBQzdCLElBQU1HLGtCQUFrQlosVUFBVWEsU0FBUztRQUUzQ1YsY0FBY1csS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCRixpQkFBZ0I7UUFFdEQsSUFBTVAsZ0JBQWVGLGVBQ2ZZLDJCQUEyQk4saUJBQWlCTyxPQUFPLENBQUNmLGVBQWVJO1FBRXpFRCw2QkFBNkJXLDBCQUEwQixHQUFHO1FBRTFELElBQUlYLDRCQUE0QjtZQUM5QkQsY0FBY2MsS0FBSyxDQUFDLEFBQUMsb0JBQW1DLE9BQWhCTCxpQkFBZ0I7UUFDMUQ7SUFDRjtJQUVBLE9BQU9SO0FBQ1Q7QUFFQSxTQUFTYyw0QkFBNEJsQixTQUFTLEVBQUVDLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxhQUFhO0lBQ3pGLElBQUlnQiwrQkFBK0I7SUFFbkMsSUFBTWQsZUFBZUgsZUFDZkksZ0JBQWdCTixVQUFVTyxPQUFPLElBQ2pDYSx5QkFBeUJ0Qiw0QkFBNEJRLGdCQUNyRGUscUJBQXFCQyxrQkFBa0IsQ0FBQ0MsMEJBQTBCLENBQUNILHdCQUF3QmY7SUFFakcsSUFBSWdCLHVCQUF1QixNQUFNO1FBQy9CLElBQU1ULGtCQUFrQlosVUFBVWEsU0FBUztRQUUzQ1YsY0FBY1csS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCRixpQkFBZ0I7UUFFdEQsSUFBTVAsZ0JBQWVGLGVBQ2ZxQiw2QkFBNkJILG1CQUFtQkwsT0FBTyxDQUFDZixlQUFlSTtRQUU3RWMsK0JBQStCSyw0QkFBNEIsR0FBRztRQUU5RCxJQUFJTCw4QkFBOEI7WUFDaENoQixjQUFjYyxLQUFLLENBQUMsQUFBQyxvQkFBbUMsT0FBaEJMLGlCQUFnQjtRQUMxRDtJQUNGO0lBRUEsT0FBT087QUFDVDtBQUVBLElBQU1NLGdCQUFnQjtJQUNwQjFCO0lBQ0FtQjtDQUNEO0lBRUQsV0FBZU8ifQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9taXhpbnMvc3RhdGVtZW50L3Jlc29sdmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWZpbmVkQXNzZXJ0aW9uIGZyb20gXCIuLi8uLi9hc3NlcnRpb24vZGVmaW5lZFwiO1xuaW1wb3J0IENvbnRhaW5lZEFzc2VydGlvbiBmcm9tIFwiLi4vLi4vYXNzZXJ0aW9uL2NvbnRhaW5lZFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGRlZmluZWRBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L2RlZmluZWRBc3NlcnRpb25cIiksXG4gICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L2NvbnRhaW5lZEFzc2VydGlvblwiKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUFzRGVmaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgbGV0IHJlc29sdmVkQXNEZWZpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0LCAvLy9cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IERlZmluZWRBc3NlcnRpb24uZnJvbURlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICBpZiAoZGVmaW5lZEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgUmVzb2x2aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgbG9jYWxDb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uVmVyaWZpZWQgPSBkZWZpbmVkQXNzZXJ0aW9uLnJlc29sdmUoc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgIHJlc29sdmVkQXNEZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvblZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChyZXNvbHZlZEFzRGVmaW5lZEFzc2VydGlvbikge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi5yZXNvbHZlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVkQXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQXNDb250YWluZWRBc3NlcnRpb24oc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCByZXNvbHZlZEFzQ29udGFpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0LCAvLy9cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBjb250YWluZWRBc3NlcnRpb25Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IENvbnRhaW5lZEFzc2VydGlvbi5mcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBSZXNvbHZpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGxvY2FsQ29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uVmVyaWZpZWQgPSBjb250YWluZWRBc3NlcnRpb24ucmVzb2x2ZShzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcmVzb2x2ZWRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IGNvbnRhaW5lZEFzc2VydGlvblZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChyZXNvbHZlZEFzQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBzcGVjaWZpY0NvbnRleHQuZGVidWcoYC4uLnJlc29sdmVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZEFzQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5jb25zdCByZXNvbHZlTWl4aW5zID0gW1xuICByZXNvbHZlQXNEZWZpbmVkQXNzZXJ0aW9uLFxuICByZXNvbHZlQXNDb250YWluZWRBc3NlcnRpb25cbl07XG5cbmV4cG9ydCBkZWZhdWx0IHJlc29sdmVNaXhpbnM7XG4iXSwibmFtZXMiOlsiZGVmaW5lZEFzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGVRdWVyeSIsInJlc29sdmVBc0RlZmluZWRBc3NlcnRpb24iLCJzdGF0ZW1lbnQiLCJzdWJzdGl0dXRpb25zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZXNvbHZlZEFzRGVmaW5lZEFzc2VydGlvbiIsImNvbnRleHQiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0Tm9kZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZGVmaW5lZEFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJmcm9tRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJzdGF0ZW1lbnRTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImxvY2FsQ29udGV4dCIsImRlZmluZWRBc3NlcnRpb25WZXJpZmllZCIsInJlc29sdmUiLCJkZWJ1ZyIsInJlc29sdmVBc0NvbnRhaW5lZEFzc2VydGlvbiIsInJlc29sdmVkQXNDb250YWluZWRBc3NlcnRpb24iLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiZnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJjb250YWluZWRBc3NlcnRpb25WZXJpZmllZCIsInJlc29sdmVNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQW1FQTs7O2VBQUE7Ozs4REFqRTZCO2dFQUNFO3FCQUVMOzs7Ozs7QUFFMUIsSUFBTUEsNEJBQTRCQyxJQUFBQSxnQkFBUyxFQUFDLGdDQUN0Q0MsOEJBQThCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRTlDLFNBQVNFLDBCQUEwQkMsU0FBUyxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRUMsZUFBZTtJQUMxRixJQUFJQyw2QkFBNkI7SUFFakMsSUFBTUMsVUFBVUgsZ0JBQ1ZJLGdCQUFnQk4sVUFBVU8sT0FBTyxJQUNqQ0MsdUJBQXVCWiwwQkFBMEJVLGdCQUNqREcsbUJBQW1CQyxnQkFBZ0IsQ0FBQ0Msd0JBQXdCLENBQUNILHNCQUFzQkg7SUFFekYsSUFBSUkscUJBQXFCLE1BQU07UUFDN0IsSUFBTUcsa0JBQWtCWixVQUFVYSxTQUFTO1FBRTNDVixnQkFBZ0JXLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQkYsaUJBQWdCO1FBRXhELElBQU1HLGVBQWVaLGlCQUNmYSwyQkFBMkJQLGlCQUFpQlEsT0FBTyxDQUFDaEIsZUFBZWM7UUFFekVYLDZCQUE2QlksMEJBQTBCLEdBQUc7UUFFMUQsSUFBSVosNEJBQTRCO1lBQzlCRCxnQkFBZ0JlLEtBQUssQ0FBQyxBQUFDLG9CQUFtQyxPQUFoQk4saUJBQWdCO1FBQzVEO0lBQ0Y7SUFFQSxPQUFPUjtBQUNUO0FBRUEsU0FBU2UsNEJBQTRCbkIsU0FBUyxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRUMsZUFBZTtJQUM1RixJQUFJaUIsK0JBQStCO0lBRW5DLElBQU1mLFVBQVVILGdCQUNWSSxnQkFBZ0JOLFVBQVVPLE9BQU8sSUFDakNjLHlCQUF5QnZCLDRCQUE0QlEsZ0JBQ3JEZ0IscUJBQXFCQyxrQkFBa0IsQ0FBQ0MsMEJBQTBCLENBQUNILHdCQUF3QmhCO0lBRWpHLElBQUlpQix1QkFBdUIsTUFBTTtRQUMvQixJQUFNVixrQkFBa0JaLFVBQVVhLFNBQVM7UUFFM0NWLGdCQUFnQlcsS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCRixpQkFBZ0I7UUFFeEQsSUFBTUcsZUFBZVosaUJBQ2ZzQiw2QkFBNkJILG1CQUFtQkwsT0FBTyxDQUFDaEIsZUFBZWM7UUFFN0VLLCtCQUErQkssNEJBQTRCLEdBQUc7UUFFOUQsSUFBSUwsOEJBQThCO1lBQ2hDakIsZ0JBQWdCZSxLQUFLLENBQUMsQUFBQyxvQkFBbUMsT0FBaEJOLGlCQUFnQjtRQUM1RDtJQUNGO0lBRUEsT0FBT1E7QUFDVDtBQUVBLElBQU1NLGdCQUFnQjtJQUNwQjNCO0lBQ0FvQjtDQUNEO0lBRUQsV0FBZU8ifQ==