occam-nominal 1.0.307 → 1.0.309

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 (51) hide show
  1. package/lib/element/assertion/contained.js +5 -8
  2. package/lib/element/assertion/subproof.js +9 -12
  3. package/lib/element/combinator/bracketed.js +2 -2
  4. package/lib/element/combinator.js +2 -2
  5. package/lib/element/declaration/combinator.js +3 -3
  6. package/lib/element/declaration/metavariable.js +2 -2
  7. package/lib/element/declaration/variable.js +4 -4
  8. package/lib/element/deduction.js +5 -6
  9. package/lib/element/equality.js +3 -4
  10. package/lib/element/frame.js +3 -3
  11. package/lib/element/goal.js +5 -8
  12. package/lib/element/judgement.js +4 -5
  13. package/lib/element/label.js +5 -6
  14. package/lib/element/metavariable.js +67 -67
  15. package/lib/element/proofAssertion/step.js +2 -2
  16. package/lib/element/proofAssertion.js +6 -13
  17. package/lib/element/rule.js +2 -2
  18. package/lib/element/statement.js +5 -5
  19. package/lib/element/subproof.js +2 -2
  20. package/lib/element/substitution/frame.js +3 -5
  21. package/lib/element/substitution/term.js +3 -5
  22. package/lib/element/term.js +22 -22
  23. package/lib/process/unify.js +1 -1
  24. package/lib/process/validation.js +2 -2
  25. package/lib/utilities/compression.js +137 -0
  26. package/package.json +3 -3
  27. package/src/element/assertion/contained.js +4 -10
  28. package/src/element/assertion/subproof.js +8 -14
  29. package/src/element/combinator/bracketed.js +1 -1
  30. package/src/element/combinator.js +1 -1
  31. package/src/element/declaration/combinator.js +2 -2
  32. package/src/element/declaration/metavariable.js +1 -1
  33. package/src/element/declaration/variable.js +3 -3
  34. package/src/element/deduction.js +4 -6
  35. package/src/element/equality.js +2 -4
  36. package/src/element/frame.js +2 -2
  37. package/src/element/goal.js +4 -10
  38. package/src/element/judgement.js +4 -6
  39. package/src/element/label.js +4 -6
  40. package/src/element/metavariable.js +79 -80
  41. package/src/element/proofAssertion/step.js +2 -2
  42. package/src/element/proofAssertion.js +7 -19
  43. package/src/element/rule.js +1 -1
  44. package/src/element/statement.js +6 -4
  45. package/src/element/subproof.js +1 -1
  46. package/src/element/substitution/frame.js +4 -6
  47. package/src/element/substitution/term.js +4 -6
  48. package/src/element/term.js +25 -27
  49. package/src/process/unify.js +0 -1
  50. package/src/process/validation.js +1 -1
  51. package/src/utilities/compression.js +115 -0
@@ -119,8 +119,7 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
119
119
  if (!frameSingular) {
120
120
  const frameValidates = false;
121
121
  context.debug(`The '${frameString}' frame is not singular.`);
122
- continuation(frameValidates);
123
- return;
122
+ return continuation(frameValidates);
124
123
  }
125
124
  this.frame.validate(context, (frame)=>{
126
125
  let frameValidates = false;
@@ -152,8 +151,7 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
152
151
  const stated = context.isStated();
153
152
  if (!stated) {
154
153
  const validatesWhenStated = false;
155
- continuation(validatesWhenStated);
156
- return;
154
+ return continuation(validatesWhenStated);
157
155
  }
158
156
  let validatesWhenStated;
159
157
  const containedAssertionString = this.getString(); ///
@@ -162,14 +160,13 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
162
160
  if (validatesWhenStated) {
163
161
  context.debug(`...validated the '${containedAssertionString}' stated contained assertion.`);
164
162
  }
165
- continuation(validatesWhenStated);
163
+ return continuation(validatesWhenStated);
166
164
  }
167
165
  validateWhenDerived(context, continuation) {
168
166
  const stated = context.isStated();
169
167
  if (stated) {
170
168
  const validatesWhenDerived = false;
171
- continuation(validatesWhenDerived);
172
- return;
169
+ return continuation(validatesWhenDerived);
173
170
  }
174
171
  const containedAssertionString = this.getString(); ///
175
172
  context.trace(`Validating the '${containedAssertionString}' derived contained assertion...`);
@@ -236,4 +233,4 @@ function validateWhenDerived(term, frame, statement, negated, context, continuat
236
233
  continuation(validatesWhenDerived);
237
234
  }
238
235
 
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkQXNzZXJ0aW9uID0gdGhpcy5maW5kVmFsaWRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAodmFsaWRBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IHZhbGlkQXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgdmFsaWQuYCk7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGFpbmVkQXNzZXJ0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICBdLCBjb250ZXh0LCAodmFsaWRhZXRzKSA9PiB7XG4gICAgICBpZiAoIXZhbGlkYWV0cykge1xuICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGFpbmVkQXNzZXJ0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkLFxuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZFxuICAgICAgXSwgY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgY29udGFpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBpZiAodGhpcy50ZXJtID09PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzID0gdHJ1ZTsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybVZhbGlkYXRlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgY29udGluYWVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGluYWVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGluYWVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXRlcm1TaW5ndWxhcikge1xuICAgICAgY29uc3QgdGVybVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1WYWxpZGF0ZXMpO1xuICAgIH1cblxuICAgIHRoaXMudGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1WYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdGVybTsgLy8vXG5cbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUnJHtjb250aW5hZWRBc3NlcnRpb25TdHJpbmd9JyBjb250aW5hZWQgYXNzZXJ0aW9uJ3MgdGVybS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVmFsaWRhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgaWYgKHRoaXMuZnJhbWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZyYW1lVmFsaWRhdGVzID0gdHJ1ZTsgIC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGZyYW1lVmFsaWRhdGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuZnJhbWUuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGNvbnRpbmFlZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlJyR7Y29udGluYWVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGluYWVkIGFzc2VydGlvbidzICcke2ZyYW1lU3RyaW5nfScgZnJhbWUuLi5gKTtcblxuICAgIGNvbnN0IGZyYW1lU2luZ3VsYXIgPSB0aGlzLmZyYW1lLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghZnJhbWVTaW5ndWxhcikge1xuICAgICAgY29uc3QgZnJhbWVWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICBjb250aW51YXRpb24oZnJhbWVWYWxpZGF0ZXMpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mcmFtZS52YWxpZGF0ZShjb250ZXh0LCAoZnJhbWUpID0+IHtcbiAgICAgIGxldCBmcmFtZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICAgIGZyYW1lVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZyYW1lVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUnJHtjb250aW5hZWRBc3NlcnRpb25TdHJpbmd9JyBjb250aW5hZWQgYXNzZXJ0aW9uJ3MgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKGZyYW1lVmFsaWRhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKHN0YXRlbWVudFZhbGlkYXRlcyk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKCFzdGF0ZWQpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBmYWxzZTtcblxuICAgICAgY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRlc1doZW5TdGF0ZWQ7XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIHN0YXRlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdHJ1ZTtcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIHN0YXRlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuU3RhdGVkKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKHN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgICAgY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5EZXJpdmVkKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5mcmFtZSwgdGhpcy5zdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSA9PiB7XG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuRGVyaXZlZCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpLFxuICAgICAgICAgIGZyYW1lID0gZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zKHRoaXMuZnJhbWUsIGNvbnRleHQpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zKHRoaXMuc3RhdGVtZW50LCBjb250ZXh0KSxcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgZnJhbWUsIHN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVzSW5kZXBlbmRlbnRseTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb250YWluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IG5ldyBDb250YWluZWRBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBmcmFtZSwgbmVnYXRlZCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIGZyYW1lLCBzdGF0ZW1lbnQsIG5lZ2F0ZWQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1Db250YWluZWQgPSBzdGF0ZW1lbnQuaXNUZXJtQ29udGFpbmVkKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoIW5lZ2F0ZWQgJiYgdGVybUNvbnRhaW5lZCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWdhdGVkICYmICF0ZXJtQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZyYW1lQ29udGFpbmVkID0gc3RhdGVtZW50LmlzRnJhbWVDb250YWluZWQoZnJhbWUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoIW5lZ2F0ZWQgJiYgZnJhbWVDb250YWluZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVnYXRlZCAmJiAhZnJhbWVDb250YWluZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuRGVyaXZlZCk7XG59Il0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb250YWluZWRBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwiZnJhbWUiLCJuZWdhdGVkIiwic3RhdGVtZW50IiwiZ2V0VGVybSIsImdldEZyYW1lIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJjb250YWluZWRBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZhbGlkQXNzZXJ0aW9uIiwiZmluZFZhbGlkQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVGcmFtZSIsInZhbGlkYXRlU3RhdGVtZW50IiwiYWxsIiwidmFsaWRhZXRzIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInZhbGlkYXRlV2hlblN0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImV4aXN0cyIsInZhbGlkYXRlcyIsImFzc2VydGlvbiIsImFkZEFzc2VydGlvbiIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU3RyaW5nIiwiY29udGluYWVkQXNzZXJ0aW9uU3RyaW5nIiwidGVybVNpbmd1bGFyIiwiaXNTaW5ndWxhciIsImZyYW1lVmFsaWRhdGVzIiwiZnJhbWVTdHJpbmciLCJmcmFtZVNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwic3RhdGVtZW50VmFsaWRhdGVzIiwic3RhdGVkIiwiaXNTdGF0ZWQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsImZyYW1lRnJvbUZyYW1lQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwibmFtZSIsImZyb21KU09OIiwianNvbiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsImZyYW1lQ29udGFpbmVkIiwiaXNGcmFtZUNvbnRhaW5lZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBbUJBOzs7ZUFBQTs7O2dDQWpCb0M7a0VBRWQ7MEJBRUM7eUJBQ0s7OEJBQ0E7NkJBQ2tCOytCQUN1RTt5QkFLakU7Ozs7OztBQUVwRCxNQUFNLEVBQUVBLGtCQUFrQixFQUFFLEdBQUdDLG1DQUFtQjtNQUVsRCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsa0JBQVM7SUFDOUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUks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
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkQXNzZXJ0aW9uID0gdGhpcy5maW5kVmFsaWRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAodmFsaWRBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IHZhbGlkQXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgdmFsaWQuYCk7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGFpbmVkQXNzZXJ0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICBdLCBjb250ZXh0LCAodmFsaWRhZXRzKSA9PiB7XG4gICAgICBpZiAoIXZhbGlkYWV0cykge1xuICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGFpbmVkQXNzZXJ0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkLFxuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZFxuICAgICAgXSwgY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgY29udGFpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBpZiAodGhpcy50ZXJtID09PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzID0gdHJ1ZTsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybVZhbGlkYXRlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgY29udGluYWVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGluYWVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGluYWVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXRlcm1TaW5ndWxhcikge1xuICAgICAgY29uc3QgdGVybVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1WYWxpZGF0ZXMpO1xuICAgIH1cblxuICAgIHRoaXMudGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1WYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdGVybTsgLy8vXG5cbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUnJHtjb250aW5hZWRBc3NlcnRpb25TdHJpbmd9JyBjb250aW5hZWQgYXNzZXJ0aW9uJ3MgdGVybS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVmFsaWRhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgaWYgKHRoaXMuZnJhbWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZyYW1lVmFsaWRhdGVzID0gdHJ1ZTsgIC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGZyYW1lVmFsaWRhdGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuZnJhbWUuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGNvbnRpbmFlZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlJyR7Y29udGluYWVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGluYWVkIGFzc2VydGlvbidzICcke2ZyYW1lU3RyaW5nfScgZnJhbWUuLi5gKTtcblxuICAgIGNvbnN0IGZyYW1lU2luZ3VsYXIgPSB0aGlzLmZyYW1lLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghZnJhbWVTaW5ndWxhcikge1xuICAgICAgY29uc3QgZnJhbWVWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGZyYW1lVmFsaWRhdGVzKTtcbiAgICB9XG5cbiAgICB0aGlzLmZyYW1lLnZhbGlkYXRlKGNvbnRleHQsIChmcmFtZSkgPT4ge1xuICAgICAgbGV0IGZyYW1lVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChmcmFtZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgICAgZnJhbWVWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZScke2NvbnRpbmFlZEFzc2VydGlvblN0cmluZ30nIGNvbnRpbmFlZCBhc3NlcnRpb24ncyAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oZnJhbWVWYWxpZGF0ZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQsIChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oc3RhdGVtZW50VmFsaWRhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQpO1xuICAgIH1cblxuICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRydWU7XG5cbiAgICBpZiAodmFsaWRhdGVzV2hlblN0YXRlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQpO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoc3RhdGVkKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5EZXJpdmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMuZnJhbWUsIHRoaXMuc3RhdGVtZW50LCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkgPT4ge1xuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24odmFsaWRhdGVzV2hlbkRlcml2ZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUZyYW1lQW5kU3Vic3RpdHV0aW9ucyh0aGlzLmZyYW1lLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCksXG4gICAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIGZyYW1lLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCk7XG5cbiAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5pZmllc0luZGVwZW5kZW50bHk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29udGFpbmVkQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29udGFpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBmcmFtZSwgc3RhdGVtZW50LCBuZWdhdGVkLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtQ29udGFpbmVkID0gc3RhdGVtZW50LmlzVGVybUNvbnRhaW5lZCh0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKCFuZWdhdGVkICYmIHRlcm1Db250YWluZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVnYXRlZCAmJiAhdGVybUNvbnRhaW5lZCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmcmFtZUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc0ZyYW1lQ29udGFpbmVkKGZyYW1lLCBjb250ZXh0KTtcblxuICAgICAgaWYgKCFuZWdhdGVkICYmIGZyYW1lQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZ2F0ZWQgJiYgIWZyYW1lQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb250aW51YXRpb24odmFsaWRhdGVzV2hlbkRlcml2ZWQpO1xufSJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsImZyYW1lIiwibmVnYXRlZCIsInN0YXRlbWVudCIsImdldFRlcm0iLCJnZXRGcmFtZSIsImlzTmVnYXRlZCIsImdldFN0YXRlbWVudCIsImdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsInZhbGlkYXRlIiwiY29udGludWF0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZEFzc2VydGlvbiIsImZpbmRWYWxpZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtIiwiYmluZCIsInZhbGlkYXRlRnJhbWUiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImFsbCIsInZhbGlkYWV0cyIsInZhbGlkYXRlc1doZW5TdGF0ZWQiLCJ2YWxpZGF0ZVdoZW5TdGF0ZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJ2YWxpZGF0ZXMiLCJhc3NlcnRpb24iLCJhZGRBc3NlcnRpb24iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsImNvbnRpbmFlZEFzc2VydGlvblN0cmluZyIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJmcmFtZVZhbGlkYXRlcyIsImZyYW1lU3RyaW5nIiwiZnJhbWVTaW5ndWxhciIsInN0YXRlbWVudFN0cmluZyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInN0YXRlZCIsImlzU3RhdGVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwiZnJhbWVGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsInN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1Db250YWluZWQiLCJpc1Rlcm1Db250YWluZWQiLCJmcmFtZUNvbnRhaW5lZCIsImlzRnJhbWVDb250YWluZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQW1CQTs7O2VBQUE7OztnQ0FqQm9DO2tFQUVkOzBCQUVDO3lCQUNLOzhCQUNBOzZCQUNrQjsrQkFDdUU7eUJBS2pFOzs7Ozs7QUFFcEQsTUFBTSxFQUFFQSxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFbEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxF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
@@ -52,8 +52,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
52
52
  if (validAssertion !== null) {
53
53
  const subproofAssertion = validAssertion; ///
54
54
  context.debug(`...the '${subproofAssertionString}' subproof assertion is already valid.`);
55
- continuation(subproofAssertion);
56
- return;
55
+ return continuation(subproofAssertion);
57
56
  }
58
57
  let subproofAssertion = null;
59
58
  this.validateStatements(context, (statementsValidate)=>{
@@ -69,7 +68,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
69
68
  if (validates) {
70
69
  context.debug(`...validated the '${subproofAssertionString}' subproof assertion.`);
71
70
  }
72
- continuation(subproofAssertion);
71
+ return continuation(subproofAssertion);
73
72
  });
74
73
  }
75
74
  validateStatements(context, continuation) {
@@ -80,7 +79,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
80
79
  if (statement !== null) {
81
80
  statementValidates = true;
82
81
  }
83
- continuation(statementValidates);
82
+ return continuation(statementValidates);
84
83
  });
85
84
  }, context);
86
85
  }, continuation);
@@ -108,8 +107,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
108
107
  this.unifyLastStep(lastStep, generalContext, specificContext, (lastStepUnifies)=>{
109
108
  let subproofUnifies = false;
110
109
  if (!lastStepUnifies) {
111
- continuation(subproofUnifies);
112
- return;
110
+ return continuation(subproofUnifies);
113
111
  }
114
112
  const suppositions = subproof.getSuppositions();
115
113
  this.unifySuppositions(suppositions, generalContext, specificContext, (suppositionsUnify)=>{
@@ -119,7 +117,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
119
117
  if (subproofUnifies) {
120
118
  context.debug(`...unified the '${subproofString}' subproof with the '${subproofAssertionString}' subproof assertion.`);
121
119
  }
122
- continuation(subproofUnifies);
120
+ return continuation(subproofUnifies);
123
121
  });
124
122
  });
125
123
  }
@@ -139,7 +137,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
139
137
  if (lastStepUnifies) {
140
138
  context.debug(`...unified the '${lastStepString}' last step with the '${deducedStatementString}' deduced statement.`);
141
139
  }
142
- continuation(lastStepUnifies);
140
+ return continuation(lastStepUnifies);
143
141
  });
144
142
  }, specificContext);
145
143
  }
@@ -177,7 +175,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
177
175
  if (suppositionUnifies) {
178
176
  context.debug(`...unified the '${suppositionString}' supposition with the '${supposedStatementString}' supposed statement.`);
179
177
  }
180
- continuation(suppositionUnifies);
178
+ return continuation(suppositionUnifies);
181
179
  });
182
180
  }, specificContext);
183
181
  }
@@ -185,8 +183,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
185
183
  const supposedStatements = this.getSupposedStatements(), suppositionsLength = suppositions.length, supposedStatementsLength = supposedStatements.length;
186
184
  if (suppositionsLength !== supposedStatementsLength) {
187
185
  const suppositionsUnify = false;
188
- continuation(suppositionsUnify);
189
- return;
186
+ return continuation(suppositionsUnify);
190
187
  }
191
188
  let index = -1;
192
189
  backwardsEvery(suppositions, (supposition, continuation)=>{
@@ -220,4 +217,4 @@ function statementsFromSubproofAssertionNode(subproofAssertionNode, context) {
220
217
  return statements;
221
218
  }
222
219
 
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgZGVzY2VuZCwgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGxhc3QsIGZyb250IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBldmVyeSwgYmFja3dhcmRzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN1YnByb29mQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnRzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudHM7XG4gIH1cblxuICBnZXREZWR1Y2VkU3RhdGVtZW50KCkge1xuICAgIGNvbnN0IGxhc3RTdGF0ZW1lbnQgPSBsYXN0KHRoaXMuc3RhdGVtZW50cyksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IGxhc3RTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlZHVjZWRTdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdXBwb3NlZFN0YXRlbWVudChpbmRleCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50c1tpbmRleF0sXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIHJldHVybiBzdXBwb3NlZFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN1cHBvc2VkU3RhdGVtZW50cygpIHtcbiAgICBjb25zdCBmcm9udFN0YXRlbWVudHMgPSBmcm9udCh0aGlzLnN0YXRlbWVudHMpLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50cyA9IGZyb250U3RhdGVtZW50czsgIC8vL1xuXG4gICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50cztcbiAgfVxuXG4gIGdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmFsaWRBc3NlcnRpb24gPSB0aGlzLmZpbmRWYWxpZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb24gPSB2YWxpZEFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbiBpcyBhbHJlYWR5IHZhbGlkLmApO1xuXG4gICAgICBjb250aW51YXRpb24oc3VicHJvb2ZBc3NlcnRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIHRoaXMudmFsaWRhdGVTdGF0ZW1lbnRzKGNvbnRleHQsIChzdGF0ZW1lbnRzVmFsaWRhdGUpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudHNWYWxpZGF0ZSkge1xuICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oc3VicHJvb2ZBc3NlcnRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRzKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGV2ZXJ5KHRoaXMuc3RhdGVtZW50cywgKHN0YXRlbWVudCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250aW51YXRpb24oc3RhdGVtZW50VmFsaWRhdGVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgdW5pZnlTY2hlbWEoc2NoZW1hLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHNjaGVtYVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzY2hlbWFTdHJpbmcgPSBzY2hlbWEuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgZGVkdWN0aW9uID0gc2NoZW1hLmdldERlZHVjdGlvbigpLFxuICAgICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0aGlzLnVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWN0aW9uVW5pZmllcykge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zID0gc2NoZW1hLmdldFN1cHBvc2l0aW9ucygpLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zVW5pZnkgPSB0aGlzLnVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdXBwb3NpdGlvbnNVbmlmeSkge1xuICAgICAgICBzY2hlbWFVbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIHdpdGggdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWFVbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1YnByb29mU3RyaW5nID0gc3VicHJvb2YuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBsYXN0U3RlcCA9IHN1YnByb29mLmdldExhc3RTdGVwKCk7XG5cbiAgICB0aGlzLnVuaWZ5TGFzdFN0ZXAobGFzdFN0ZXAsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChsYXN0U3RlcFVuaWZpZXMpID0+IHtcbiAgICAgIGxldCBzdWJwcm9vZlVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKCFsYXN0U3RlcFVuaWZpZXMpIHtcbiAgICAgICAgY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBzdWJwcm9vZi5nZXRTdXBwb3NpdGlvbnMoKTtcblxuICAgICAgdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICBzdWJwcm9vZlVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24oc3VicHJvb2ZVbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlMYXN0U3RlcChsYXN0U3RlcCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGxhc3RTdGVwU3RyaW5nID0gbGFzdFN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZ2V0RGVkdWNlZFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2xhc3RTdGVwU3RyaW5nfScgbGFzdCBzdGVwIHdpdGggdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudC4uLmApXG5cbiAgICBjb25zdCBsYXN0U3RlcENvbnRleHQgPSBsYXN0U3RlcC5nZXRDb250ZXh0KCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQgPSBsYXN0U3RlcENvbnRleHQ7ICAvLy9cblxuICAgIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBsYXN0U3RlcFN0YXRlbWVudCA9IGxhc3RTdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KGxhc3RTdGVwU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobGFzdFN0ZXBTdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgIGxldCBsYXN0U3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAobGFzdFN0ZXBTdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgbGFzdFN0ZXBVbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGFzdFN0ZXBVbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bGFzdFN0ZXBTdHJpbmd9JyBsYXN0IHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50LmApXG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24obGFzdFN0ZXBVbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH1cblxuICB1bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgZGVkdWN0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50ID0gdGhpcy5nZXREZWR1Y2VkU3RhdGVtZW50KCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudFN0cmluZyA9IGRlZHVjZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHdpdGggdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudC4uLmApXG5cbiAgICBjb25zdCBkZWR1Y3Rpb25Db250ZXh0ID0gZGVkdWN0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQ7ICAvLy9cblxuICAgIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBkZWR1Y3Rpb25TdGF0ZW1lbnQgPSBkZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICBkZWR1Y3Rpb25TdGF0ZW1lbnRVbmlmaWVzID0gZGVkdWNlZFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChkZWR1Y3Rpb25TdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoZGVkdWN0aW9uU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWN0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHdpdGggdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudC5gKVxuICAgIH1cblxuICAgIHJldHVybiBkZWR1Y3Rpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudCA9IHRoaXMuZ2V0U3VwcG9zZWRTdGF0ZW1lbnQoaW5kZXgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50Li4uYClcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uQ29udGV4dCA9IHN1cHBvc2l0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgIC8vL1xuXG4gICAgcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RhdGVtZW50ID0gc3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIHN1cHBvc2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN1cHBvc2l0aW9uU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudC5gKVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudHMgPSB0aGlzLmdldFN1cHBvc2VkU3RhdGVtZW50cygpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0xlbmd0aCA9IHN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoID0gc3VwcG9zZWRTdGF0ZW1lbnRzLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggIT09IHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCkge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgY29udGludWF0aW9uKHN1cHBvc2l0aW9uc1VuaWZ5KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9IC0xO1xuXG4gICAgYmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgaW5kZXgrKztcblxuICAgICAgdGhpcy51bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBpbmRleCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN1YnByb29mQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb3JBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBzdWJwcm9vckFzc2VydGlvbiA9IG5ldyBTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29yQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGVzID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGVzKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnROb2Rlcy5tYXAoKHN0YXRlbWV0Tm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1ldE5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG4iXSwibmFtZXMiOlsibGFzdCIsImZyb250IiwiYXJyYXlVdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlN1YnByb29mQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50cyIsImdldFN0YXRlbWVudHMiLCJnZXREZWR1Y2VkU3RhdGVtZW50IiwibGFzdFN0YXRlbWVudCIsImRlZHVjZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudCIsImluZGV4Iiwic3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudHMiLCJmcm9udFN0YXRlbWVudHMiLCJzdXBwb3NlZFN0YXRlbWVudHMiLCJnZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJzdWJwcm9vZkFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWRBc3NlcnRpb24iLCJmaW5kVmFsaWRBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVTdGF0ZW1lbnRzIiwic3RhdGVtZW50c1ZhbGlkYXRlIiwidmFsaWRhdGVzIiwiYXNzZXJ0aW9uIiwiYWRkQXNzZXJ0aW9uIiwiZGVzY2VuZCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInVuaWZ5U2NoZW1hIiwic2NoZW1hIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzY2hlbWFVbmlmaWVzIiwic2NoZW1hU3RyaW5nIiwiZGVkdWN0aW9uIiwiZ2V0RGVkdWN0aW9uIiwiZGVkdWN0aW9uVW5pZmllcyIsInVuaWZ5RGVkdWN0aW9uIiwic3VwcG9zaXRpb25zIiwiZ2V0U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsInVuaWZ5U3VicHJvb2YiLCJzdWJwcm9vZiIsInN1YnByb29mU3RyaW5nIiwibGFzdFN0ZXAiLCJnZXRMYXN0U3RlcCIsInVuaWZ5TGFzdFN0ZXAiLCJsYXN0U3RlcFVuaWZpZXMiLCJzdWJwcm9vZlVuaWZpZXMiLCJsYXN0U3RlcFN0cmluZyIsImRlZHVjZWRTdGF0ZW1lbnRTdHJpbmciLCJsYXN0U3RlcENvbnRleHQiLCJnZXRDb250ZXh0IiwicmVjb25jaWxlIiwibGFzdFN0ZXBTdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsImxhc3RTdGVwU3RhdGVtZW50VW5pZmllcyIsImNvbW1pdCIsImRlZHVjdGlvblN0cmluZyIsImRlZHVjdGlvbkNvbnRleHQiLCJkZWR1Y3Rpb25TdGF0ZW1lbnQiLCJkZWR1Y3Rpb25TdGF0ZW1lbnRVbmlmaWVzIiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJzdXBwb3NlZFN0YXRlbWVudFN0cmluZyIsInN1cHBvc2l0aW9uQ29udGV4dCIsInN1cHBvc2l0aW9uU3RhdGVtZW50Iiwic3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzIiwic3VwcG9zaXRpb25VbmlmaWVzIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwic3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoIiwibmFtZSIsImZyb21KU09OIiwianNvbiIsInN1YnByb29yQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwic3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlcyIsImdldFN0YXRlbWVudE5vZGVz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
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgZGVzY2VuZCwgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGxhc3QsIGZyb250IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBldmVyeSwgYmFja3dhcmRzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN1YnByb29mQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnRzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudHM7XG4gIH1cblxuICBnZXREZWR1Y2VkU3RhdGVtZW50KCkge1xuICAgIGNvbnN0IGxhc3RTdGF0ZW1lbnQgPSBsYXN0KHRoaXMuc3RhdGVtZW50cyksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IGxhc3RTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlZHVjZWRTdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdXBwb3NlZFN0YXRlbWVudChpbmRleCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50c1tpbmRleF0sXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIHJldHVybiBzdXBwb3NlZFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN1cHBvc2VkU3RhdGVtZW50cygpIHtcbiAgICBjb25zdCBmcm9udFN0YXRlbWVudHMgPSBmcm9udCh0aGlzLnN0YXRlbWVudHMpLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50cyA9IGZyb250U3RhdGVtZW50czsgIC8vL1xuXG4gICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50cztcbiAgfVxuXG4gIGdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmFsaWRBc3NlcnRpb24gPSB0aGlzLmZpbmRWYWxpZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb24gPSB2YWxpZEFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbiBpcyBhbHJlYWR5IHZhbGlkLmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mQXNzZXJ0aW9uKTtcbiAgICB9XG5cbiAgICBsZXQgc3VicHJvb2ZBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgdGhpcy52YWxpZGF0ZVN0YXRlbWVudHMoY29udGV4dCwgKHN0YXRlbWVudHNWYWxpZGF0ZSkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RhdGVtZW50c1ZhbGlkYXRlKSB7XG4gICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZBc3NlcnRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRzKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGV2ZXJ5KHRoaXMuc3RhdGVtZW50cywgKHN0YXRlbWVudCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFZhbGlkYXRlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHVuaWZ5U2NoZW1hKHNjaGVtYSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbiA9IHNjaGVtYS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdGhpcy51bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHNjaGVtYS5nZXRTdXBwb3NpdGlvbnMoKSxcbiAgICAgICAgICAgIHN1cHBvc2l0aW9uc1VuaWZ5ID0gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgc2NoZW1hVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgbGFzdFN0ZXAgPSBzdWJwcm9vZi5nZXRMYXN0U3RlcCgpO1xuXG4gICAgdGhpcy51bmlmeUxhc3RTdGVwKGxhc3RTdGVwLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobGFzdFN0ZXBVbmlmaWVzKSA9PiB7XG4gICAgICBsZXQgc3VicHJvb2ZVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIGlmICghbGFzdFN0ZXBVbmlmaWVzKSB7XG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZVbmlmaWVzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zID0gc3VicHJvb2YuZ2V0U3VwcG9zaXRpb25zKCk7XG5cbiAgICAgIHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VwcG9zaXRpb25zVW5pZnkpID0+IHtcbiAgICAgICAgaWYgKHN1cHBvc2l0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgc3VicHJvb2ZVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJwcm9vZlVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWJwcm9vZlVuaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeUxhc3RTdGVwKGxhc3RTdGVwLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgbGFzdFN0ZXBTdHJpbmcgPSBsYXN0U3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50ID0gdGhpcy5nZXREZWR1Y2VkU3RhdGVtZW50KCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudFN0cmluZyA9IGRlZHVjZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7bGFzdFN0ZXBTdHJpbmd9JyBsYXN0IHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50Li4uYClcblxuICAgIGNvbnN0IGxhc3RTdGVwQ29udGV4dCA9IGxhc3RTdGVwLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IGxhc3RTdGVwQ29udGV4dDsgIC8vL1xuXG4gICAgcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGxhc3RTdGVwU3RhdGVtZW50ID0gbGFzdFN0ZXAuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIGRlZHVjZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQobGFzdFN0ZXBTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChsYXN0U3RlcFN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgbGV0IGxhc3RTdGVwVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChsYXN0U3RlcFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBsYXN0U3RlcFVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0U3RlcFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtsYXN0U3RlcFN0cmluZ30nIGxhc3Qgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuYClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24obGFzdFN0ZXBVbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH1cblxuICB1bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgZGVkdWN0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50ID0gdGhpcy5nZXREZWR1Y2VkU3RhdGVtZW50KCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudFN0cmluZyA9IGRlZHVjZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHdpdGggdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudC4uLmApXG5cbiAgICBjb25zdCBkZWR1Y3Rpb25Db250ZXh0ID0gZGVkdWN0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQ7ICAvLy9cblxuICAgIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBkZWR1Y3Rpb25TdGF0ZW1lbnQgPSBkZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICBkZWR1Y3Rpb25TdGF0ZW1lbnRVbmlmaWVzID0gZGVkdWNlZFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChkZWR1Y3Rpb25TdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoZGVkdWN0aW9uU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWN0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHdpdGggdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudC5gKVxuICAgIH1cblxuICAgIHJldHVybiBkZWR1Y3Rpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudCA9IHRoaXMuZ2V0U3VwcG9zZWRTdGF0ZW1lbnQoaW5kZXgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50Li4uYClcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uQ29udGV4dCA9IHN1cHBvc2l0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgIC8vL1xuXG4gICAgcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RhdGVtZW50ID0gc3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIHN1cHBvc2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN1cHBvc2l0aW9uU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudC5gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvblVuaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3VwcG9zZWRTdGF0ZW1lbnRzID0gdGhpcy5nZXRTdXBwb3NlZFN0YXRlbWVudHMoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNMZW5ndGggPSBzdXBwb3NpdGlvbnMubGVuZ3RoLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCA9IHN1cHBvc2VkU3RhdGVtZW50cy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zTGVuZ3RoICE9PSBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VwcG9zaXRpb25zVW5pZnkpO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9IC0xO1xuXG4gICAgYmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgaW5kZXgrKztcblxuICAgICAgdGhpcy51bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBpbmRleCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN1YnByb29mQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb3JBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBzdWJwcm9vckFzc2VydGlvbiA9IG5ldyBTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29yQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGVzID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGVzKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnROb2Rlcy5tYXAoKHN0YXRlbWV0Tm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1ldE5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG4iXSwibmFtZXMiOlsibGFzdCIsImZyb250IiwiYXJyYXlVdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlN1YnByb29mQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50cyIsImdldFN0YXRlbWVudHMiLCJnZXREZWR1Y2VkU3RhdGVtZW50IiwibGFzdFN0YXRlbWVudCIsImRlZHVjZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudCIsImluZGV4Iiwic3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudHMiLCJmcm9udFN0YXRlbWVudHMiLCJzdXBwb3NlZFN0YXRlbWVudHMiLCJnZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJzdWJwcm9vZkFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWRBc3NlcnRpb24iLCJmaW5kVmFsaWRBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVTdGF0ZW1lbnRzIiwic3RhdGVtZW50c1ZhbGlkYXRlIiwidmFsaWRhdGVzIiwiYXNzZXJ0aW9uIiwiYWRkQXNzZXJ0aW9uIiwiZGVzY2VuZCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInVuaWZ5U2NoZW1hIiwic2NoZW1hIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzY2hlbWFVbmlmaWVzIiwic2NoZW1hU3RyaW5nIiwiZGVkdWN0aW9uIiwiZ2V0RGVkdWN0aW9uIiwiZGVkdWN0aW9uVW5pZmllcyIsInVuaWZ5RGVkdWN0aW9uIiwic3VwcG9zaXRpb25zIiwiZ2V0U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsInVuaWZ5U3VicHJvb2YiLCJzdWJwcm9vZiIsInN1YnByb29mU3RyaW5nIiwibGFzdFN0ZXAiLCJnZXRMYXN0U3RlcCIsInVuaWZ5TGFzdFN0ZXAiLCJsYXN0U3RlcFVuaWZpZXMiLCJzdWJwcm9vZlVuaWZpZXMiLCJsYXN0U3RlcFN0cmluZyIsImRlZHVjZWRTdGF0ZW1lbnRTdHJpbmciLCJsYXN0U3RlcENvbnRleHQiLCJnZXRDb250ZXh0IiwicmVjb25jaWxlIiwibGFzdFN0ZXBTdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsImxhc3RTdGVwU3RhdGVtZW50VW5pZmllcyIsImNvbW1pdCIsImRlZHVjdGlvblN0cmluZyIsImRlZHVjdGlvbkNvbnRleHQiLCJkZWR1Y3Rpb25TdGF0ZW1lbnQiLCJkZWR1Y3Rpb25TdGF0ZW1lbnRVbmlmaWVzIiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJzdXBwb3NlZFN0YXRlbWVudFN0cmluZyIsInN1cHBvc2l0aW9uQ29udGV4dCIsInN1cHBvc2l0aW9uU3RhdGVtZW50Iiwic3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzIiwic3VwcG9zaXRpb25VbmlmaWVzIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwic3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoIiwibmFtZSIsImZyb21KU09OIiwianNvbiIsInN1YnByb29yQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwic3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlcyIsImdldFN0YXRlbWVudE5v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
@@ -27,10 +27,10 @@ const _default = (0, _elements.define)(class BracketedCombinator extends _combin
27
27
  if (statementUnifies) {
28
28
  context.debug(`...unified the '${statementString}' statement with the bracketed combinator.`);
29
29
  }
30
- continuation(statementUnifies);
30
+ return continuation(statementUnifies);
31
31
  });
32
32
  }
33
33
  static name = "BracketedCombinator";
34
34
  });
35
35
 
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IvYnJhY2tldGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZENvbWJpbmF0b3IgZXh0ZW5kcyBDb21iaW5hdG9yIHtcbiAgZ2V0QnJhY2tldGVkQ29tYmluYXRvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGJyYWNrZXRlZENvbWJpbmF0b3JOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gYnJhY2tldGVkQ29tYmluYXRvck5vZGU7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgYnJhY2tldGVkIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIHN1cGVyLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSBicmFja2V0ZWQgY29tYmluYXRvci5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkJyYWNrZXRlZENvbWJpbmF0b3JcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkJyYWNrZXRlZENvbWJpbmF0b3IiLCJDb21iaW5hdG9yIiwiZ2V0QnJhY2tldGVkQ29tYmluYXRvck5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImJyYWNrZXRlZENvbWJpbmF0b3JOb2RlIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJjb250ZXh0IiwiY29udGludWF0aW9uIiwic3RhdGVtZW50U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiZGVidWciLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7OzttRUFKdUI7MEJBRUE7Ozs7OztNQUV2QixXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDRCQUE0QkMsbUJBQVU7SUFDaEVDLDZCQUE2QjtRQUMzQixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsMEJBQTBCRixNQUFNLEdBQUc7UUFFekMsT0FBT0U7SUFDVDtJQUVBQyxlQUFlQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFO1FBQy9DLE1BQU1DLGtCQUFrQkgsVUFBVUksU0FBUztRQUUzQ0gsUUFBUUksS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFRixnQkFBZ0IsNENBQTRDLENBQUM7UUFFNUYsS0FBSyxDQUFDSixlQUFlQyxXQUFXQyxTQUFTLENBQUNLO1lBQ3hDLElBQUlBLGtCQUFrQjtnQkFDcEJMLFFBQVFNLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFSixnQkFBZ0IsMENBQTBDLENBQUM7WUFDOUY7WUFFQUQsYUFBYUk7UUFDZjtJQUNGO0lBRUEsT0FBT0UsT0FBTyxzQkFBc0I7QUFDdEMifQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IvYnJhY2tldGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZENvbWJpbmF0b3IgZXh0ZW5kcyBDb21iaW5hdG9yIHtcbiAgZ2V0QnJhY2tldGVkQ29tYmluYXRvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGJyYWNrZXRlZENvbWJpbmF0b3JOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gYnJhY2tldGVkQ29tYmluYXRvck5vZGU7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgYnJhY2tldGVkIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIHN1cGVyLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSBicmFja2V0ZWQgY29tYmluYXRvci5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRVbmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJCcmFja2V0ZWRDb21iaW5hdG9yXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJCcmFja2V0ZWRDb21iaW5hdG9yIiwiQ29tYmluYXRvciIsImdldEJyYWNrZXRlZENvbWJpbmF0b3JOb2RlIiwibm9kZSIsImdldE5vZGUiLCJicmFja2V0ZWRDb21iaW5hdG9yTm9kZSIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50IiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsInN0YXRlbWVudFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwic3RhdGVtZW50VW5pZmllcyIsImRlYnVnIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFBOzs7bUVBSnVCOzBCQUVBOzs7Ozs7TUFFdkIsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyw0QkFBNEJDLG1CQUFVO0lBQ2hFQyw2QkFBNkI7UUFDM0IsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLDBCQUEwQkYsTUFBTSxHQUFHO1FBRXpDLE9BQU9FO0lBQ1Q7SUFFQUMsZUFBZUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFBRTtRQUMvQyxNQUFNQyxrQkFBa0JILFVBQVVJLFNBQVM7UUFFM0NILFFBQVFJLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUYsZ0JBQWdCLDRDQUE0QyxDQUFDO1FBRTVGLEtBQUssQ0FBQ0osZUFBZUMsV0FBV0MsU0FBUyxDQUFDSztZQUN4QyxJQUFJQSxrQkFBa0I7Z0JBQ3BCTCxRQUFRTSxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUosZ0JBQWdCLDBDQUEwQyxDQUFDO1lBQzlGO1lBRUEsT0FBT0QsYUFBYUk7UUFDdEI7SUFDRjtJQUVBLE9BQU9FLE9BQU8sc0JBQXNCO0FBQ3RDIn0=
@@ -71,7 +71,7 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
71
71
  if (statementUnifies) {
72
72
  context.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`);
73
73
  }
74
- continuation(statementUnifies);
74
+ return continuation(statementUnifies);
75
75
  });
76
76
  }
77
77
  toJSON() {
@@ -103,4 +103,4 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
103
103
  }
104
104
  });
105
105
 
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb21iaW5hdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3J5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29tYmluYXRvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29tYmluYXRvck5vZGU7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgKHN0YXRlbWVudFZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dClcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvcidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQsIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3IpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvcikge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRWYWxpZGF0ZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbWJpbmF0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yQ29udGV4dCA9IGNvbWJpbmF0b3IuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29tYmluYXRvckNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmlDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yKHN0YXRlbWVudCwgY29tYmluYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yKSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50VW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yKSB7XG4gICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRVbmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21iaW5hdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29tYmluYXRvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29tYmluYXRvck5vZGUgPSBpbnN0YW50aWF0ZUNvbWJpbmF0b3Ioc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmF0b3JOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZShjb21iaW5hdG9yTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29tYmluYXRvciA9IG5ldyBDb21iaW5hdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbWJpbmF0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29tYmluYXRvcnlOb2RlIiwiZ2V0Tm9kZSIsImNvbWJpbmF0b3JOb2RlIiwidmVyaWZ5IiwiY29udGludWF0aW9uIiwiY29tYmluYXRvclN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50Iiwic3RhdGVtZW50VmFsaWRhdGVzIiwidmVyaWZpZXMiLCJjb21taXQiLCJkZWJ1ZyIsInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwic3RhdGVtZW50VmFsaWRhdGVzQXNDb21iaW5hdG9yIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJjb21iaW5hdG9yIiwiY29tYmluYXRvckNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpQ29udGV4dCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IiLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IiLCJzdGF0ZW1lbnRVbmlmaWVzIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVg2QzswQkFFdEI7NkJBQ2U7eUJBQ007dUJBQ0M7MEJBQ0M7eUJBQ2U7QUFFN0QsTUFBTSxFQUFFQSxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsQ0FBRTtRQUN4RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNE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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb21iaW5hdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3J5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29tYmluYXRvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29tYmluYXRvck5vZGU7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgKHN0YXRlbWVudFZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dClcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvcidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQsIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3IpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvcikge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRWYWxpZGF0ZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbWJpbmF0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yQ29udGV4dCA9IGNvbWJpbmF0b3IuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29tYmluYXRvckNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmlDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yKHN0YXRlbWVudCwgY29tYmluYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yKSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50VW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yKSB7XG4gICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUoY29tYmluYXRvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbWJpbmF0b3IgPSBuZXcgQ29tYmluYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldENvbWJpbmF0b3J5Tm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yTm9kZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsImNvbWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZlcmlmaWVzIiwiY29tbWl0IiwiZGVidWciLCJ2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciIsInN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvciIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiY29tYmluYXRvciIsImNvbWJpbmF0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIiwic3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yIiwic3RhdGVtZW50VW5pZmllcyIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwic3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7OztnQ0FYNkM7MEJBRXRCOzZCQUNlO3lCQUNNO3VCQUNDOzBCQUNDO3lCQUNlO0FBRTdELE1BQU0sRUFBRUEsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLENBQUU7UUFDeEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFB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
@@ -41,7 +41,7 @@ const _default = (0, _elements.define)(class CombinatorDeclaration extends _decl
41
41
  if (verifies) {
42
42
  context.debug(`...verified the '${combinatorDeclarationString}' combinator declaration.`);
43
43
  }
44
- continuation(verifies);
44
+ return continuation(verifies);
45
45
  });
46
46
  });
47
47
  verifyCombinator(context, continuation) {
@@ -51,10 +51,10 @@ const _default = (0, _elements.define)(class CombinatorDeclaration extends _decl
51
51
  if (combinatorVerifies) {
52
52
  context.debug(`...verified the '${combinatorDeclarationString}' combinator declaration's combinator.`);
53
53
  }
54
- continuation(combinatorVerifies);
54
+ return continuation(combinatorVerifies);
55
55
  });
56
56
  }
57
57
  static name = "CombinatorDeclaration";
58
58
  });
59
59
 
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvckRlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGNvbWJpbmF0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5jb21iaW5hdG9yID0gY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIHRoaXMudmVyaWZ5Q29tYmluYXRvcihjb250ZXh0LCAoY29tYmluYXRvclZlcmlmaWVzKSA9PiB7XG4gICAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKGNvbWJpbmF0b3JWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmFkZENvbWJpbmF0b3IodGhpcy5jb21iaW5hdG9yKTtcblxuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29tYmluYXRvckRlY2xhcmF0aW9uU3RyaW5nfScgY29tYmluYXRvciBkZWNsYXJhdGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKHZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5Q29tYmluYXRvcihjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24ncyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICB0aGlzLmNvbWJpbmF0b3IudmVyaWZ5KGNvbnRleHQsIChjb21iaW5hdG9yVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChjb21iaW5hdG9yVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24ncyBjb21iaW5hdG9yLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oY29tYmluYXRvclZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21iaW5hdG9yRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImNvbWJpbmF0b3IiLCJnZXRDb21iaW5hdG9yIiwiZ2V0Q29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5IiwiY29udGludWF0aW9uIiwiY29tYmluYXRvckRlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlDb21iaW5hdG9yIiwiY29tYmluYXRvclZlcmlmaWVzIiwidmVyaWZpZXMiLCJhZGRDb21iaW5hdG9yIiwiZGVidWciLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OztnQ0FSb0M7b0VBRVo7MEJBRUQ7Ozs7OztBQUV2QixNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyw4QkFBOEJDLG9CQUFXO0lBQ25FLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxDQUFFO1FBQ3pELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRCxVQUFVO0lBQ3hCO0lBRUFFLCtCQUErQjtRQUM3QixNQUFNSixPQUFPLElBQUksQ0FBQ0ssT0FBTyxJQUNuQkMsNEJBQTRCTixNQUFNLEdBQUc7UUFFM0MsT0FBT007SUFDVDtJQUVBQyxTQUFTZCxVQUFVLFNBQVVLLE9BQU8sRUFBRVUsWUFBWTtRQUNoRCxNQUFNQyw4QkFBOEIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUxRFosUUFBUWEsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRiw0QkFBNEIsMkJBQTJCLENBQUM7UUFFeEYsSUFBSSxDQUFDRyxnQkFBZ0IsQ0FBQ2QsU0FBUyxDQUFDZTtZQUM5QixJQUFJQyxXQUFXO1lBRWYsSUFBSUQsb0JBQW9CO2dCQUN0QmYsUUFBUWlCLGFBQWEsQ0FBQyxJQUFJLENBQUNiLFVBQVU7Z0JBRXJDWSxXQUFXO1lBQ2I7WUFFQSxJQUFJQSxVQUFVO2dCQUNaaEIsUUFBUWtCLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFUCw0QkFBNEIseUJBQXlCLENBQUM7WUFDMUY7WUFFQUQsYUFBYU07UUFDZjtJQUNGLEdBQUc7SUFFSEYsaUJBQWlCZCxPQUFPLEVBQUVVLFlBQVksRUFBRTtRQUN0QyxNQUFNQyw4QkFBOEIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUxRFosUUFBUWEsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRiw0QkFBNEIsd0NBQXdDLENBQUM7UUFFckcsSUFBSSxDQUFDUCxVQUFVLENBQUNLLE1BQU0sQ0FBQ1QsU0FBUyxDQUFDZTtZQUMvQixJQUFJQSxvQkFBb0I7Z0JBQ3RCZixRQUFRa0IsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVQLDRCQUE0QixzQ0FBc0MsQ0FBQztZQUN2RztZQUVBRCxhQUFhSztRQUNmO0lBQ0Y7SUFFQSxPQUFPSSxPQUFPLHdCQUF3QjtBQUN4QyJ9
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvckRlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGNvbWJpbmF0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5jb21iaW5hdG9yID0gY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIHRoaXMudmVyaWZ5Q29tYmluYXRvcihjb250ZXh0LCAoY29tYmluYXRvclZlcmlmaWVzKSA9PiB7XG4gICAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKGNvbWJpbmF0b3JWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmFkZENvbWJpbmF0b3IodGhpcy5jb21iaW5hdG9yKTtcblxuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29tYmluYXRvckRlY2xhcmF0aW9uU3RyaW5nfScgY29tYmluYXRvciBkZWNsYXJhdGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZlcmlmeUNvbWJpbmF0b3IoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29tYmluYXRvckRlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb21iaW5hdG9yIGRlY2xhcmF0aW9uJ3MgY29tYmluYXRvci4uLmApO1xuXG4gICAgdGhpcy5jb21iaW5hdG9yLnZlcmlmeShjb250ZXh0LCAoY29tYmluYXRvclZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAoY29tYmluYXRvclZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb21iaW5hdG9yIGRlY2xhcmF0aW9uJ3MgY29tYmluYXRvci5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb21iaW5hdG9yVmVyaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbWJpbmF0b3JEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbWJpbmF0b3JEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwiY29tYmluYXRvciIsImdldENvbWJpbmF0b3IiLCJnZXRDb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeUNvbWJpbmF0b3IiLCJjb21iaW5hdG9yVmVyaWZpZXMiLCJ2ZXJpZmllcyIsImFkZENvbWJpbmF0b3IiLCJkZWJ1ZyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBQTs7O2dDQVJvQztvRUFFWjswQkFFRDs7Ozs7O0FBRXZCLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQjtNQUV6QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDhCQUE4QkMsb0JBQVc7SUFDbkUsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxVQUFVLENBQUU7UUFDekQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNELFVBQVU7SUFDeEI7SUFFQUUsK0JBQStCO1FBQzdCLE1BQU1KLE9BQU8sSUFBSSxDQUFDSyxPQUFPLElBQ25CQyw0QkFBNEJOLE1BQU0sR0FBRztRQUUzQyxPQUFPTTtJQUNUO0lBRUFDLFNBQVNkLFVBQVUsU0FBVUssT0FBTyxFQUFFVSxZQUFZO1FBQ2hELE1BQU1DLDhCQUE4QixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTFEWixRQUFRYSxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLDRCQUE0QiwyQkFBMkIsQ0FBQztRQUV4RixJQUFJLENBQUNHLGdCQUFnQixDQUFDZCxTQUFTLENBQUNlO1lBQzlCLElBQUlDLFdBQVc7WUFFZixJQUFJRCxvQkFBb0I7Z0JBQ3RCZixRQUFRaUIsYUFBYSxDQUFDLElBQUksQ0FBQ2IsVUFBVTtnQkFFckNZLFdBQVc7WUFDYjtZQUVBLElBQUlBLFVBQVU7Z0JBQ1poQixRQUFRa0IsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVQLDRCQUE0Qix5QkFBeUIsQ0FBQztZQUMxRjtZQUVBLE9BQU9ELGFBQWFNO1FBQ3RCO0lBQ0YsR0FBRztJQUVIRixpQkFBaUJkLE9BQU8sRUFBRVUsWUFBWSxFQUFFO1FBQ3RDLE1BQU1DLDhCQUE4QixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTFEWixRQUFRYSxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLDRCQUE0Qix3Q0FBd0MsQ0FBQztRQUVyRyxJQUFJLENBQUNQLFVBQVUsQ0FBQ0ssTUFBTSxDQUFDVCxTQUFTLENBQUNlO1lBQy9CLElBQUlBLG9CQUFvQjtnQkFDdEJmLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVAsNEJBQTRCLHNDQUFzQyxDQUFDO1lBQ3ZHO1lBRUEsT0FBT0QsYUFBYUs7UUFDdEI7SUFDRjtJQUVBLE9BQU9JLE9BQU8sd0JBQXdCO0FBQ3hDIn0=
@@ -45,7 +45,7 @@ const _default = (0, _elements.define)(class MetavariableDeclaration extends _de
45
45
  if (verifies) {
46
46
  context.debug(`...verified the '${metavariableDeclarationString}' metavariable declaration.`);
47
47
  }
48
- continuation(verifies);
48
+ return continuation(verifies);
49
49
  });
50
50
  verifyMetaType(context) {
51
51
  let metaTypeVerifies = true;
@@ -75,4 +75,4 @@ const _default = (0, _elements.define)(class MetavariableDeclaration extends _de
75
75
  static name = "MetavariableDeclaration";
76
76
  });
77
77
 
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL21ldGF2YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBtZXRhVHlwZSwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubWV0YVR5cGUgPSBtZXRhVHlwZTtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldE1ldGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFUeXBlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZlcmlmaWVzO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGUoY29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IG1ldGFUeXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeU1ldGFUeXBlKGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YVR5cGVWZXJpZmllcykge1xuICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMubWV0YXZhcmlhYmxlOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZERlY2xhcmVkTWV0YXZhcmlhYmxlKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uYCk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uKHZlcmlmaWVzKTtcbiAgfSk7XG5cbiAgdmVyaWZ5TWV0YVR5cGUoY29udGV4dCkge1xuICAgIGxldCBtZXRhVHlwZVZlcmlmaWVzID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIG1ldGF2YXJpYWJsZSBkZWNsYXJhdGlvbidzIG1ldGFUeXBlLi4uYCk7XG5cbiAgICB0aGlzLm1ldGF2YXJpYWJsZS5zZXRNZXRhVHlwZSh0aGlzLm1ldGFUeXBlKTtcblxuICAgIGlmIChtZXRhVHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIG1ldGF2YXJpYWJsZSBkZWNsYXJhdGlvbidzIG1ldGFUeXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhVHlwZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5TWV0YXZhcmlhYmxlKGNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke21ldGF2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgbWV0YXZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gdGhpcy5tZXRhdmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgbWV0YXZhcmlhYmxlVmVyaWZpZXMgPSB0aGlzLm1ldGF2YXJpYWJsZS52ZXJpZnkoY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHttZXRhdmFyaWFibGVOYW1lfScgZGVjbGFyZWQgbWV0YXZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIG1ldGF2YXJpYWJsZSBkZWNsYXJhdGlvbidzIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlVmVyaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibWV0YVR5cGUiLCJtZXRhdmFyaWFibGUiLCJnZXRNZXRhVHlwZSIsImdldE1ldGF2YXJpYWJsZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsInZlcmlmaWVzIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsIm1ldGF2YXJpYWJsZVZlcmlmaWVzIiwidmVyaWZ5TWV0YXZhcmlhYmxlIiwibWV0YVR5cGVWZXJpZmllcyIsInZlcmlmeU1ldGFUeXBlIiwiZGVjbGFyZWRNZXRhdmFyaWFibGUiLCJhZGREZWNsYXJlZE1ldGF2YXJpYWJsZSIsImRlYnVnIiwibWV0YVR5cGVEZWNsYXJhdGlvblN0cmluZyIsInNldE1ldGFUeXBlIiwibWV0YXZhcmlhYmxlTmFtZSIsImdldE5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBQTs7O2dDQVJvQztvRUFFWjswQkFFRDs7Ozs7O0FBRXZCLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQjtNQUV6QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGdDQUFnQ0Msb0JBQVc7SUFD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
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL21ldGF2YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBtZXRhVHlwZSwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubWV0YVR5cGUgPSBtZXRhVHlwZTtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldE1ldGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFUeXBlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZlcmlmaWVzO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGUoY29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IG1ldGFUeXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeU1ldGFUeXBlKGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YVR5cGVWZXJpZmllcykge1xuICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMubWV0YXZhcmlhYmxlOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZERlY2xhcmVkTWV0YXZhcmlhYmxlKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gIH0pO1xuXG4gIHZlcmlmeU1ldGFUeXBlKGNvbnRleHQpIHtcbiAgICBsZXQgbWV0YVR5cGVWZXJpZmllcyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRhVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke21ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhVHlwZS4uLmApO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGUuc2V0TWV0YVR5cGUodGhpcy5tZXRhVHlwZSk7XG5cbiAgICBpZiAobWV0YVR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhVHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YVR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeU1ldGF2YXJpYWJsZShjb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIG1ldGF2YXJpYWJsZSBkZWNsYXJhdGlvbidzIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IHRoaXMubWV0YXZhcmlhYmxlLmdldE5hbWUoKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gdGhpcy5tZXRhdmFyaWFibGUudmVyaWZ5KGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7bWV0YXZhcmlhYmxlTmFtZX0nIGRlY2xhcmVkIG1ldGF2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKG1ldGF2YXJpYWJsZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVZlcmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIk1ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiTWV0YXZhcmlhYmxlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm1ldGFUeXBlIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YVR5cGUiLCJnZXRNZXRhdmFyaWFibGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVWZXJpZmllcyIsInZlcmlmeU1ldGF2YXJpYWJsZSIsIm1ldGFUeXBlVmVyaWZpZXMiLCJ2ZXJpZnlNZXRhVHlwZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWJ1ZyIsIm1ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmciLCJzZXRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXROYW1lIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OztnQ0FSb0M7b0VBRVo7MEJBRUQ7Ozs7OztBQUV2QixNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxnQ0FBZ0NDLG9C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
@@ -53,7 +53,7 @@ const _default = (0, _elements.define)(class VariableDeclaration extends _declar
53
53
  if (verifies) {
54
54
  context.debug(`...verified the '${variableDeclarationString}' variable declaration.`);
55
55
  }
56
- continuation(verifies);
56
+ return continuation(verifies);
57
57
  });
58
58
  });
59
59
  verifyType(context, continuation) {
@@ -78,7 +78,7 @@ const _default = (0, _elements.define)(class VariableDeclaration extends _declar
78
78
  if (typeVerifies) {
79
79
  context.debug(`...verified the '${variableDeclarationString}' variable declaration's type.`);
80
80
  }
81
- continuation(typeVerifies);
81
+ return continuation(typeVerifies);
82
82
  }
83
83
  verifyVariable(context, continuation) {
84
84
  let variableVerifies = false;
@@ -93,9 +93,9 @@ const _default = (0, _elements.define)(class VariableDeclaration extends _declar
93
93
  if (variableVerifies) {
94
94
  context.debug(`...verified the '${variableDeclarationString}' variable declaration's '${variableString}' variable.`);
95
95
  }
96
- continuation(variableVerifies);
96
+ return continuation(variableVerifies);
97
97
  }
98
98
  static name = "VariableDeclaration";
99
99
  });
100
100
 
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGFsbCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHZhcmlhYmxlLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMudmFyaWFibGUgPSB2YXJpYWJsZTtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZTtcbiAgfVxuXG4gIGlzUHJvdmlzaW9uYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhcmlhYmxlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVZhcmlhYmxlLmJpbmQodGhpcyk7XG5cbiAgICBhbGwoW1xuICAgICAgdHlwZVZlcmlmaWVzLFxuICAgICAgdmFyaWFibGVWZXJpZmllc1xuICAgIF0sICBjb250ZXh0LCAodmVyaWZpZXMpID0+IHtcbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlID0gdGhpcy52YXJpYWJsZTtcblxuICAgICAgICBjb250ZXh0LmFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlUeXBlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0eXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKVxuXG4gICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gdHlwZS5jb21wYXJlUHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgIGlmICghdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCkge1xuICAgICAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICAgIHRoaXMucHJvdmlzaW9uYWwgP1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBub3QgcHJvdmlzaW9uYWwuYCkgOlxuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IHByb3Zpc2lvbmFsLmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YXJpYWJsZS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICAgIHRoaXMudmFyaWFibGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgdHlwZS5gKTtcbiAgICB9XG5cbiAgICBjb250aW51YXRpb24odHlwZVZlcmlmaWVzKTtcbiAgfVxuXG4gIHZlcmlmeVZhcmlhYmxlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCAgdmFyaWFibGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB0aGlzLnZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy52YXJpYWJsZS5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgaWYgKGRlY2xhcmVkVmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhYmxlVmVyaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2YXJpYWJsZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICBjb250aW51YXRpb24odmFyaWFibGVWZXJpZmllcyk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlZhcmlhYmxlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJ2YXJpYWJsZSIsInByb3Zpc2lvbmFsIiwiZ2V0VHlwZSIsImdldFZhcmlhYmxlIiwiaXNQcm92aXNpb25hbCIsImdldFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5IiwiY29udGludWF0aW9uIiwidmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidHlwZVZlcmlmaWVzIiwidmVyaWZ5VHlwZSIsImJpbmQiLCJ2YXJpYWJsZVZlcmlmaWVzIiwidmVyaWZ5VmFyaWFibGUiLCJhbGwiLCJ2ZXJpZmllcyIsImRlY2xhcmVkVmFyaWFibGUiLCJhZGREZWNsYXJlZFZhcmlhYmxlIiwiZGVidWciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJ0eXBlU3RyaW5nIiwidHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcm92aXNpb25hbCIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsInZhcmlhYmxlU3RyaW5nIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFBOzs7Z0NBVG9DO29FQUVaOzhCQUVKOzBCQUNHOzs7Ozs7QUFFdkIsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsNEJBQTRCQyxvQkFBVztJQUNqRSxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxXQUFXLENBQUU7UUFDMUUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUNILFFBQVE7SUFDdEI7SUFFQUksZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNILFdBQVc7SUFDekI7SUFFQUksNkJBQTZCO1FBQzNCLE1BQU1SLE9BQU8sSUFBSSxDQUFDUyxPQUFPLElBQ25CQywwQkFBMEJWLE1BQU0sR0FBRztRQUV6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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGFsbCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHZhcmlhYmxlLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMudmFyaWFibGUgPSB2YXJpYWJsZTtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZTtcbiAgfVxuXG4gIGlzUHJvdmlzaW9uYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhcmlhYmxlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVZhcmlhYmxlLmJpbmQodGhpcyk7XG5cbiAgICBhbGwoW1xuICAgICAgdHlwZVZlcmlmaWVzLFxuICAgICAgdmFyaWFibGVWZXJpZmllc1xuICAgIF0sICBjb250ZXh0LCAodmVyaWZpZXMpID0+IHtcbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlID0gdGhpcy52YXJpYWJsZTtcblxuICAgICAgICBjb250ZXh0LmFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSAodHlwZSAhPT0gbnVsbClcblxuICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCA9IHR5cGUuY29tcGFyZVByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICB0aGlzLnByb3Zpc2lvbmFsID9cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgbm90IHByb3Zpc2lvbmFsLmApIDpcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBwcm92aXNpb25hbC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFyaWFibGUuc2V0VHlwZSh0eXBlKTtcblxuICAgICAgICB0aGlzLnZhcmlhYmxlLnNldFByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIHR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0eXBlVmVyaWZpZXMpO1xuICB9XG5cbiAgdmVyaWZ5VmFyaWFibGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0ICB2YXJpYWJsZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHRoaXMudmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0aGlzLnZhcmlhYmxlLmdldElkZW50aWZpZXIoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICBpZiAoZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyaWFibGVWZXJpZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odmFyaWFibGVWZXJpZmllcyk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlZhcmlhYmxlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJ2YXJpYWJsZSIsInByb3Zpc2lvbmFsIiwiZ2V0VHlwZSIsImdldFZhcmlhYmxlIiwiaXNQcm92aXNpb25hbCIsImdldFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5IiwiY29udGludWF0aW9uIiwidmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidHlwZVZlcmlmaWVzIiwidmVyaWZ5VHlwZSIsImJpbmQiLCJ2YXJpYWJsZVZlcmlmaWVzIiwidmVyaWZ5VmFyaWFibGUiLCJhbGwiLCJ2ZXJpZmllcyIsImRlY2xhcmVkVmFyaWFibGUiLCJhZGREZWNsYXJlZFZhcmlhYmxlIiwiZGVidWciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJ0eXBlU3RyaW5nIiwidHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcm92aXNpb25hbCIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsInZhcmlhYmxlU3RyaW5nIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFBOzs7Z0NBVG9DO29FQUVaOzhCQUVKOzBCQUNHOzs7Ozs7QUFFdkIsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsNEJBQTRCQyxvQkFBVztJQUNqRSxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxXQUFXLENBQUU7UUFDMUUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUNILFFBQVE7SUFDdEI7SUFFQUksZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNILFdBQVc7SUFDekI7SUFFQUksNkJBQTZCO1FBQzNCLE1BQU1SLE9BQU8sSUFBSSxDQUFDUyxPQUFPLElBQ25CQyww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