occam-nominal 1.0.515 → 1.0.519

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 (39) hide show
  1. package/lib/element/assertion/contained.js +4 -4
  2. package/lib/element/assertion/defined.js +4 -4
  3. package/lib/element/assertion/schema.js +12 -7
  4. package/lib/element/assertion/signature.js +17 -13
  5. package/lib/element/assertion/type.js +4 -4
  6. package/lib/element/claim/axiom.js +31 -1
  7. package/lib/element/claim/conjecture.js +31 -1
  8. package/lib/element/claim/lemma.js +31 -1
  9. package/lib/element/claim/theorem.js +31 -1
  10. package/lib/element/claim.js +13 -30
  11. package/lib/element/fact/premise.js +19 -19
  12. package/lib/element/fact/supposition.js +24 -18
  13. package/lib/element/fact.js +9 -9
  14. package/lib/element/procedureCall.js +4 -4
  15. package/lib/element/resolution/conclusion.js +5 -5
  16. package/lib/element/resolution/deduction.js +5 -5
  17. package/lib/element/rule.js +39 -25
  18. package/lib/element/statement.js +20 -20
  19. package/lib/process/unification.js +16 -33
  20. package/package.json +8 -8
  21. package/src/element/assertion/contained.js +3 -3
  22. package/src/element/assertion/defined.js +3 -3
  23. package/src/element/assertion/schema.js +19 -10
  24. package/src/element/assertion/signature.js +25 -17
  25. package/src/element/assertion/type.js +3 -3
  26. package/src/element/claim/axiom.js +42 -0
  27. package/src/element/claim/conjecture.js +42 -0
  28. package/src/element/claim/lemma.js +42 -0
  29. package/src/element/claim/theorem.js +42 -0
  30. package/src/element/claim.js +12 -35
  31. package/src/element/fact/premise.js +21 -21
  32. package/src/element/fact/supposition.js +29 -21
  33. package/src/element/fact.js +8 -8
  34. package/src/element/procedureCall.js +3 -3
  35. package/src/element/resolution/conclusion.js +4 -4
  36. package/src/element/resolution/deduction.js +4 -4
  37. package/src/element/rule.js +51 -31
  38. package/src/element/statement.js +21 -21
  39. package/src/process/unification.js +15 -48
@@ -124,12 +124,12 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
124
124
  return forward(state, context, back);
125
125
  }, back);
126
126
  }
127
- unifyIndependently(generalContext, specificContext, forward, back) {
127
+ applyIndependently(generalContext, specificContext, forward, back) {
128
128
  const context = specificContext, containedAssertionString = this.getString(); ///
129
- context.trace(`Unifying the '${containedAssertionString}' contained assertion independently...`);
129
+ context.trace(`Applying the '${containedAssertionString}' contained assertion independently...`);
130
130
  const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context), statement = (0, _substitutions.statementFromStatementAndSubstitutions)(this.statement, context);
131
131
  return validateWhenDerived(term, statement, this.negated, context, (context, back)=>{
132
- context.debug(`...unified the '${containedAssertionString}' contained assertion independently.`);
132
+ context.debug(`...applied the '${containedAssertionString}' contained assertion independently.`);
133
133
  return forward(generalContext, specificContext, back);
134
134
  }, back);
135
135
  }
@@ -175,4 +175,4 @@ function validateWhenDerived(term, statement, negated, context, forward, back) {
175
175
  return forward(context, back);
176
176
  }
177
177
 
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGFpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybSxcbiAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtU2luZ3VsYXIgPSB0aGlzLnRlcm0uaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCF0ZXJtU2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBub3Qgc2luZ3VsYXIuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudGVybSAgPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFNpbmd1bGFyID0gdGhpcy5zdGF0ZW1lbnQuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCFzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnRhaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnRhaW5lZEFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb250YWluZWRBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHN0YXRlbWVudCwgbmVnYXRlZCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB0ZXJtQ29udGFpbmVkID0gc3RhdGVtZW50LmlzVGVybUNvbnRhaW5lZCh0ZXJtLCBjb250ZXh0KTtcblxuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAoIW5lZ2F0ZWQgJiYgdGVybUNvbnRhaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuZWdhdGVkICYmICF0ZXJtQ29udGFpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbn0iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInVuaWZ5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUFBOzs7Z0NBaEJzQztrRUFFaEI7MEJBRUM7eUJBQ0s7dUJBQ1U7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
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGFpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybSxcbiAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtU2luZ3VsYXIgPSB0aGlzLnRlcm0uaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCF0ZXJtU2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBub3Qgc2luZ3VsYXIuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudGVybSAgPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFNpbmd1bGFyID0gdGhpcy5zdGF0ZW1lbnQuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCFzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGFwcGx5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnRhaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnRhaW5lZEFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb250YWluZWRBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHN0YXRlbWVudCwgbmVnYXRlZCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB0ZXJtQ29udGFpbmVkID0gc3RhdGVtZW50LmlzVGVybUNvbnRhaW5lZCh0ZXJtLCBjb250ZXh0KTtcblxuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAoIW5lZ2F0ZWQgJiYgdGVybUNvbnRhaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuZWdhdGVkICYmICF0ZXJtQ29udGFpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbn0iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUFBOzs7Z0NBaEJzQztrRUFFaEI7MEJBRUM7eUJBQ0s7dUJBQ1U7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
@@ -104,12 +104,12 @@ const _default = (0, _elements.define)(class DefinedAssertion extends _assertion
104
104
  return forward(state, context, back);
105
105
  }, back);
106
106
  }
107
- unifyIndependently(generalContext, specificContext, forward, back) {
107
+ applyIndependently(generalContext, specificContext, forward, back) {
108
108
  const context = specificContext, definedAssertionString = this.getString(); ///
109
- context.trace(`Unifying the '${definedAssertionString}' defined assertion independently...`);
109
+ context.trace(`Ap0lying the '${definedAssertionString}' defined assertion independently...`);
110
110
  const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context);
111
111
  return validateWhenDerived(term, this.negated, context, (context, back)=>{
112
- context.debug(`...unified the '${definedAssertionString}' defined assertion independently.`);
112
+ context.debug(`...applied the '${definedAssertionString}' defined assertion independently.`);
113
113
  return forward(generalContext, specificContext, back);
114
114
  }, back);
115
115
  }
@@ -166,4 +166,4 @@ function validateWhenDerived(term, negated, context, forward, back) {
166
166
  return forward(context, back);
167
167
  }
168
168
 
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgbmVnYXRlZEZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUsIGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZWZpbmVkQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzO1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGRlZmluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uJ3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVNpbmd1bGFyID0gdGhpcy50ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghdGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAganNvbiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVmaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZmluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gbmV3IERlZmluZWRBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gaXNWYXJpYWJsZURlZmluZWQodmFyaWFibGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgZ3JvdW5kZWRUZXJtcyA9IFtdLFxuICAgICAgICBkZWZpbmVkVmFyaWFibGVzID0gW107XG5cbiAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuc29tZSgoZGVmaW5lZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlRXF1YWxUb1ZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlLmlzRXF1YWxUbyh2YXJpYWJsZSk7XG5cbiAgICAgICAgICBpZiAoZGVmaW5lZFZhcmlhYmxlRXF1YWxUb1ZhcmlhYmxlID09PSB2YXJpYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdmFyaWFibGVEZWZpbmVkID0gdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlOyAvLy9cblxuICByZXR1cm4gdmFyaWFibGVEZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGVybS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgZGVjbGFyZWREYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCA9IGlzVmFyaWFibGVEZWZpbmVkKGRlY2xhcmVkRGFyaWFibGUsIGNvbnRleHQpO1xuXG4gIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gIGlmICghbmVnYXRlZCAmJiBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuZWdhdGVkICYmICFkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVmaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJuZWdhdGVkIiwiZ2V0VGVybSIsImlzTmVnYXRlZCIsImdldERlZmluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZmluZEFzc2VydGlvbiIsImRlZmluZWRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiaXNWYXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZSIsImVxdWl2YWxlbmNlcyIsImdldEVxdWl2YWxlbmNlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSIsInNvbWUiLCJkZWZpbmVkVmFyaWFibGUiLCJkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUiLCJpc0VxdWFsVG8iLCJ2YXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZERhcmlhYmxlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGVEZWZpbmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkc0M7a0VBRWhCOzBCQUVDO3lCQUNLO3VCQUNVOzZCQUNNOytCQUNDOzhCQUNZO3lCQUMwRDs7Ozs7O0FBRW5ILE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMseUJBQXlCQyxrQkFBUztJQUM1RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsT0FBTyxDQUFFO1FBQzVELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdB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
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgbmVnYXRlZEZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUsIGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZWZpbmVkQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzO1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGRlZmluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uJ3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVNpbmd1bGFyID0gdGhpcy50ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghdGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwMGx5aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAganNvbiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVmaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZmluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gbmV3IERlZmluZWRBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gaXNWYXJpYWJsZURlZmluZWQodmFyaWFibGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgZ3JvdW5kZWRUZXJtcyA9IFtdLFxuICAgICAgICBkZWZpbmVkVmFyaWFibGVzID0gW107XG5cbiAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuc29tZSgoZGVmaW5lZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlRXF1YWxUb1ZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlLmlzRXF1YWxUbyh2YXJpYWJsZSk7XG5cbiAgICAgICAgICBpZiAoZGVmaW5lZFZhcmlhYmxlRXF1YWxUb1ZhcmlhYmxlID09PSB2YXJpYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdmFyaWFibGVEZWZpbmVkID0gdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlOyAvLy9cblxuICByZXR1cm4gdmFyaWFibGVEZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGVybS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgZGVjbGFyZWREYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCA9IGlzVmFyaWFibGVEZWZpbmVkKGRlY2xhcmVkRGFyaWFibGUsIGNvbnRleHQpO1xuXG4gIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gIGlmICghbmVnYXRlZCAmJiBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuZWdhdGVkICYmICFkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVmaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJuZWdhdGVkIiwiZ2V0VGVybSIsImlzTmVnYXRlZCIsImdldERlZmluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZmluZEFzc2VydGlvbiIsImRlZmluZWRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJhcHBseUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiaXNWYXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZSIsImVxdWl2YWxlbmNlcyIsImdldEVxdWl2YWxlbmNlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSIsInNvbWUiLCJkZWZpbmVkVmFyaWFibGUiLCJkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUiLCJpc0VxdWFsVG8iLCJ2YXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZERhcmlhYmxlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGVEZWZpbmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkc0M7a0VBRWhCOzBCQUVDO3lCQUNLO3VCQUNVOzZCQUNNOytCQUNDOzhCQUNZO3lCQUMwRDs7Ozs7O0FBRW5ILE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMseUJBQXlCQyxrQkFBUztJQUM1RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsT0FBTyxDQUFFO1FBQzVELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdB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
@@ -104,6 +104,17 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
104
104
  }, back);
105
105
  });
106
106
  });
107
+ apply = unbreakable(function(step, context, forward, back) {
108
+ forward = cut(forward, back); ///
109
+ const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this, schemaAssertionString = this.getString();
110
+ context.trace(`Applying the '${schemaAssertionString}' schema assertion...`);
111
+ return some(schemas, (schema, forward, back)=>{
112
+ return schema.unifyStatementAndSchemaAssertion(statement, schemaAssertion, context, (context, back)=>{
113
+ context.debug(`...applied the '${schemaAssertionString}' schema assertion.`);
114
+ return forward(context, back);
115
+ }, back);
116
+ }, forward, back);
117
+ });
107
118
  validate(state, context, forward, back) {
108
119
  let validates;
109
120
  const schameAssertionString = this.getString(); ///
@@ -162,13 +173,7 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
162
173
  }
163
174
  return linkValidates;
164
175
  }
165
- unifyStep(step, context, forward, back) {
166
- const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this; ///
167
- return some(schemas, (schema, forward, back)=>{
168
- return schema.unifyStatementAndSchemaAssertion(statement, schemaAssertion, context, forward, back);
169
- }, forward, back);
170
- }
171
176
  static name = "SchemaAssertion";
172
177
  });
173
178
 
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcblxuY29uc3QgeyBjdXQsIHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIGZyYW1lKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRTY2hlbWFBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNjaGVtYUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXNzdW1wdGlvbnMoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25zKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25zID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgSW1wbGljaXRBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgIGZhY3RzID0gY29udGV4dC5nZXRGYWN0cygpO1xuXG4gICAgICBmYWN0cy5mb3JFYWNoKChmYWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGZhY3QuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IEltcGxpY2l0QXNzdW1wdGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZlcmlmeShjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKSAgLy8vXG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9ucy5wdXNoKGltcGxpY2l0QXNzdW1wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9ucztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlTGluayA9IHRoaXMudmFsaWRhdGVMaW5rLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlRnJhbWUsXG4gICAgICAgIHZhbGlkYXRlTGlua1xuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgZnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIGZyYW1lVmFsaWRhdGVzID0gdGhpcy5mcmFtZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBsaW5rVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGxpbmsuLi5gKTtcblxuICAgIGxpbmtWYWxpZGF0ZXMgPSB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmxpbmsgPSBsaW5rO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBjb250ZXh0LmdldFNjaGVtYXMoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgcmV0dXJuIHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS51bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbihzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2NoZW1hQXNzZXJ0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJzb21lIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2NoZW1hQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsImZyYW1lIiwiZ2V0TGluayIsImdldEZyYW1lIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsInZlcmlmeSIsInB1c2giLCJmb3J3YXJkIiwiYmFjayIsInNjaGVtYUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJzY2hlbWFBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlcyIsInNjaGFtZUFzc2VydGlvblN0cmluZyIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJzY2hhbWVBc3NlcnRpb24iLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZUZyYW1lIiwiYmluZCIsInZhbGlkYXRlTGluayIsImFsbCIsImZyYW1lVmFsaWRhdGVzIiwibGlua1ZhbGlkYXRlcyIsInVuaWZ5U3RlcCIsInN0ZXAiLCJzY2hlbWFzIiwiZ2V0U2NoZW1hcyIsInNjaGVtYSIsInVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEO2tFQUV0QztrRUFDQzt1QkFHRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeEIsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLElBQUksRUFBRSxHQUFHQyxxQ0FBcUIsRUFDckMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHdCQUF3QkMsa0JBQVM7SUFDM0QsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssQ0FBRTtRQUMxRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtJQUNmO0lBRUFD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
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcblxuY29uc3QgeyBjdXQsIHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIGZyYW1lKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRTY2hlbWFBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNjaGVtYUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXNzdW1wdGlvbnMoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25zKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25zID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgSW1wbGljaXRBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgIGZhY3RzID0gY29udGV4dC5nZXRGYWN0cygpO1xuXG4gICAgICBmYWN0cy5mb3JFYWNoKChmYWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGZhY3QuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IEltcGxpY2l0QXNzdW1wdGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZlcmlmeShjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKSAgLy8vXG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9ucy5wdXNoKGltcGxpY2l0QXNzdW1wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9ucztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXBwbHkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gc2NoZW1hLnVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uKHN0YXRlbWVudCwgc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZUxpbmtcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGZyYW1lVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLi4uYCk7XG5cbiAgICBmcmFtZVZhbGlkYXRlcyA9IHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGZyYW1lVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgbGlua1ZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBsaW5rLi4uYCk7XG5cbiAgICBsaW5rVmFsaWRhdGVzID0gdGhpcy5saW5rLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobGluaywgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChsaW5rVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBsaW5rLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rVmFsaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiY3V0Iiwic29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJmcmFtZSIsImdldExpbmsiLCJnZXRGcmFtZSIsImdldFNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyIsImltcGxpY2l0QXNzdW1wdGlvbnMiLCJtZXRhdmFyaWFibGUiLCJJbXBsaWNpdEFzc3VtcHRpb24iLCJlbGVtZW50cyIsImZhY3RzIiwiZ2V0RmFjdHMiLCJmb3JFYWNoIiwiZmFjdCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImltcGxpY2l0QXNzdW1wdGlvbiIsImZyb21TdGF0ZW1lbnQiLCJ2ZXJpZnkiLCJwdXNoIiwiZm9yd2FyZCIsImJhY2siLCJzY2hlbWFBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwic2NoZW1hQXNzZXJ0aW9uIiwiZGVidWciLCJhcHBseSIsInN0ZXAiLCJzY2hlbWFzIiwiZ2V0U2NoZW1hcyIsInNjaGVtYSIsInVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uIiwidmFsaWRhdGVzIiwic2NoYW1lQXNzZXJ0aW9uU3RyaW5nIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInNjaGFtZUFzc2VydGlvbiIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlRnJhbWUiLCJiaW5kIiwidmFsaWRhdGVMaW5rIiwiYWxsIiwiZnJhbWVWYWxpZGF0ZXMiLCJsaW5rVmFsaWRhdGVzIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEO2tFQUV0QztrRUFDQzt1QkFHRTs7Ozs7Ozs7Ozs7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
@@ -47,6 +47,22 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
47
47
  }, back);
48
48
  });
49
49
  });
50
+ apply = unbreakable(function(step, factOrSubproofs, context, forward, back) {
51
+ forward = cut(forward, back); ///
52
+ let stepAndFactOrSubproofsUnify = false;
53
+ const signatureAssertionString = this.getString(); ///
54
+ context.trace(`Applying the '${signatureAssertionString}' signature assertion...`);
55
+ return (0, _context.reconcile)((context)=>{
56
+ const axiom = context.findAxiomByLink(this.link), signatureAssertion = this; ///
57
+ return axiom.unifySignatureAssertion(signatureAssertion, context, (signatureAssertionUnifies)=>{
58
+ if (!signatureAssertionUnifies) {
59
+ return continuation(stepAndFactOrSubproofsUnify);
60
+ }
61
+ context.debug(`applied the '${signatureAssertionString}' signature assertion.`);
62
+ axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context, forward, back);
63
+ });
64
+ }, context);
65
+ });
50
66
  validate(state, context, forward, back) {
51
67
  const signatureAssertionString = this.getString(); ///
52
68
  context.trace(`Validating the '${signatureAssertionString}' signature assertion...`);
@@ -146,18 +162,6 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
146
162
  });
147
163
  }, context);
148
164
  }
149
- unifyStepAndFactOrSubproofs(step, factOrSubproofs, context, forward, back) {
150
- let stepAndFactOrSubproofsUnify = false;
151
- return (0, _context.reconcile)((context)=>{
152
- const axiom = context.findAxiomByLink(this.link), signatureAssertion = this; ///
153
- return axiom.unifySignatureAssertion(signatureAssertion, context, (signatureAssertionUnifies)=>{
154
- if (!signatureAssertionUnifies) {
155
- return continuation(stepAndFactOrSubproofsUnify);
156
- }
157
- axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context, forward, back);
158
- });
159
- }, context);
160
- }
161
165
  static name = "SignatureAssertion";
162
166
  static fromStep(step, context) {
163
167
  const statementNode = step.getStatementNode(), signatureAssertion = (0, _element.signatureAssertionFromStatementNode)(statementNode, context);
@@ -169,4 +173,4 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
169
173
  }
170
174
  });
171
175
 
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBjdXQgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQgLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zLFxuICAgICAgdmFsaWRhdGVMaW5rXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybXMsIHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGxpbmtWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgbGlua1ZhbGlkYXRlcyA9IHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayhsaW5rKTtcblxuICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGF4aW9tU2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKGF4aW9tU2F0aXNmaWFibGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXhpb20udW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwiYXNzZXJ0aW9uIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJ2YWxpZGF0ZUxpbmsiLCJ2YWxpZGF0ZXMiLCJhbGwiLCJhZGRBc3NlcnRpb24iLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZVRlcm0iLCJ0ZXJtIiwidGVybVZhbGlkYXRlcyIsInRlcm1TdHJpbmciLCJwdXNoIiwidGVybXNWYWxpZGF0ZSIsImV2ZXJ5IiwibGlua1ZhbGlkYXRlcyIsImF4aW9tIiwiZmluZEF4aW9tQnlMaW5rIiwiYXhpb21TYXRpc2ZpYWJsZSIsImlzU2F0aXNmaWFibGUiLCJ1bmlmeUNsYWltIiwiY2xhaW0iLCJjbGFpbVN0cmluZyIsInJlY29uY2lsZSIsInVuaWZ5VGVybXMiLCJ0ZXJtc1VuaWZ5IiwiY2xhaW1VbmlmaWVzIiwiY29tbWl0IiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsInN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSIsInVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyIsIm5hbWUiLCJmcm9tU3RlcCIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7a0VBRXJDOzBCQUVDO3VCQUNDO3lCQUNFO3lCQUMwQjs7Ozs7O0FBRXBELE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CO01BRTNDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMkJB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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBjdXQgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQgLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlTaWduYXR1cmVBc3NlcnRpb24oc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCAoc2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBhcHBsaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIGF4aW9tLnVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zLFxuICAgICAgdmFsaWRhdGVMaW5rXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybXMsIHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGxpbmtWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgbGlua1ZhbGlkYXRlcyA9IHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayhsaW5rKTtcblxuICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGF4aW9tU2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKGF4aW9tU2F0aXNmaWFibGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpZ25hdHVyZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiY3V0IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2lnbmF0dXJlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsInRlcm1zIiwiZ2V0VGVybXMiLCJnZXRMaW5rIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwiZGVidWciLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJyZWNvbmNpbGUiLCJheGlvbSIsImZpbmRBeGlvbUJ5TGluayIsInVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyIsImNvbnRpbnVhdGlvbiIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsImFzc2VydGlvbiIsInZhbGlkYXRlVGVybXMiLCJiaW5kIiwidmFsaWRhdGVMaW5rIiwidmFsaWRhdGVzIiwiYWxsIiwiYWRkQXNzZXJ0aW9uIiwidmFsaWRhdGVUZXJtIiwidGVybSIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU3RyaW5nIiwicHVzaCIsInRlcm1zVmFsaWRhdGUiLCJldmVyeSIsImxpbmtWYWxpZGF0ZXMiLCJheGlvbVNhdGlzZmlhYmxlIiwiaXNTYXRpc2ZpYWJsZSIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwidW5pZnlUZXJtcyIsInRlcm1zVW5pZnkiLCJjbGFpbVVuaWZpZXMiLCJjb21taXQiLCJuYW1lIiwiZnJvbVN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWjJEO2tFQUVyQzswQkFFQzt1QkFDQzt5QkFDRTt5QkFDMEI7Ozs7OztBQUVwRCxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsa0JBQVM7SUFDOUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssQ0FBRTtRQUMxRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtJQUNmO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0QsS0FBSztJQUNuQjtJQUVBRSxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksNEJBQTRCO1FBQzFCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx5QkFBeUJSLE1BQU8sR0FBRztRQUV6QyxPQUFPUTtJQUNUO0lBRUFDLFNBQVNoQixZQUFZLFNBQVVLLE9BQU8sRUFBRVksT0FBTyxFQUFFQyxJQUFJO1FBQ25ERCxVQUFVbkIsSUFBSW1CLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQywyQkFBMkIsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUV0RGYsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYseUJBQXlCLHdCQUF3QixDQUFDO1FBRWxGLE9BQU9HLElBQUFBLGNBQU8sRUFBQyxDQUFDQztZQUNkLE9BQU8sSUFBSSxDQUFDQyxR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
@@ -144,10 +144,10 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
144
144
  return forward(state, context, back);
145
145
  }, back);
146
146
  }
147
- unifyIndependently(generalContext, specificContext, forward, back) {
147
+ applyIndependently(generalContext, specificContext, forward, back) {
148
148
  let unifiesIndependently = false;
149
149
  const context = specificContext, typeAssertionString = this.getString(); ///
150
- context.trace(`Unifying the '${typeAssertionString}' type assertion independently...`);
150
+ context.trace(`Applying the '${typeAssertionString}' type assertion independently...`);
151
151
  const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context);
152
152
  (0, _state.derive)((state)=>{
153
153
  validateWhenDerived(term, this.type, state, context, (term, context)=>{
@@ -158,7 +158,7 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
158
158
  });
159
159
  });
160
160
  if (unifiesIndependently) {
161
- context.debug(`...unified the '${typeAssertionString}' type assertion independently.`);
161
+ context.debug(`...applied the '${typeAssertionString}' type assertion independently.`);
162
162
  }
163
163
  return continuation(unifiesIndependently);
164
164
  }
@@ -217,4 +217,4 @@ function validateWhenDerived(term, type, state, context, forward, back) {
217
217
  }, back);
218
218
  }
219
219
 
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSwgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZGlzY2hhcmdlKGNvbnRleHQpIHtcbiAgICBsZXQgZGlzY2hhcmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGRpc2NoYXJnZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGRpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY2hhcmdlcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodHlwZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUeXBlID0gdGhpcy52YWxpZGF0ZVR5cGUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUeXBlXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUeXBlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjaylcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9UeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvKHRoaXMudHlwZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNTdXBlclR5cGVPZih0aGlzLnR5cGUpO1xuXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIC8vL1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlRXF1YWxUb1R5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG5cbiAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZyxcbiAgICAgIHR5cGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgdHlwZUFzc2VydGlvbiA9IG5ldyBUeXBlQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdHlwZSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgcmV0dXJuIHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgICAgIGlmICh0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJUeXBlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldFR5cGVBc3NlcnRpb25OQm9kZSIsImdldE5vZGUiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImRpc2NoYXJnZSIsImRpc2NoYXJnZXMiLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZGVyaXZlIiwic3RhdGUiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJkZWJ1ZyIsInZhbGlkYXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInZhbGlkYXRlVHlwZSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsImFzc2lnbiIsImFkZEFzc2VydGlvbiIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9UeXBlIiwiaXNFcXVhbFRvIiwidGVybVR5cGVTdXBlclR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwidGVybUVzdGFibGlzaGVkIiwiaXNFc3RhYmxpc2hlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwiY29udGludWF0aW9uIiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJ2YXJpYWJsZUFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uIiwiYWRkQXNzaWdubWVudCIsInRvSlNPTiIsImpzb24iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIiwidGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVGcm9tSlNPTiIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQUE7OztnQ0Fmc0M7a0VBRWhCOzBCQUVDO3lCQUNLOzZCQUNhO3NCQUNJOytCQUNBO3dCQUNPO3VCQUNNO3lCQUNnQjs7Ozs7O0FBRTFFLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsc0JBQXNCQyxrQkFBUztJQUN6RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3pELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO0lBQ2xCO0lBRUFHLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyx3QkFBd0I7UUFDdEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLG9CQUFvQlIsTUFBTSxHQUFHO1FBRW5DLE9BQU9RO0lBQ1Q7SUFFQUMsVUFBVVgsT0FBTyxFQUFFO1FBQ2pCLElBQUlZLGFBQWE7UUFFakIsTUFBTUMsc0JBQXNCLElBQUksQ0FBQ0MsU0FBUyxJ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
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSwgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZGlzY2hhcmdlKGNvbnRleHQpIHtcbiAgICBsZXQgZGlzY2hhcmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGRpc2NoYXJnZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGRpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY2hhcmdlcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodHlwZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUeXBlID0gdGhpcy52YWxpZGF0ZVR5cGUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUeXBlXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUeXBlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjaylcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9UeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvKHRoaXMudHlwZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNTdXBlclR5cGVPZih0aGlzLnR5cGUpO1xuXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIC8vL1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlRXF1YWxUb1R5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG5cbiAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZyxcbiAgICAgIHR5cGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgdHlwZUFzc2VydGlvbiA9IG5ldyBUeXBlQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdHlwZSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgcmV0dXJuIHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgICAgIGlmICh0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJUeXBlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldFR5cGVBc3NlcnRpb25OQm9kZSIsImdldE5vZGUiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImRpc2NoYXJnZSIsImRpc2NoYXJnZXMiLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZGVyaXZlIiwic3RhdGUiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJkZWJ1ZyIsInZhbGlkYXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInZhbGlkYXRlVHlwZSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsImFzc2lnbiIsImFkZEFzc2VydGlvbiIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9UeXBlIiwiaXNFcXVhbFRvIiwidGVybVR5cGVTdXBlclR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwidGVybUVzdGFibGlzaGVkIiwiaXNFc3RhYmxpc2hlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJhcHBseUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwiY29udGludWF0aW9uIiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJ2YXJpYWJsZUFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uIiwiYWRkQXNzaWdubWVudCIsInRvSlNPTiIsImpzb24iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIiwidGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVGcm9tSlNPTiIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQUE7OztnQ0Fmc0M7a0VBRWhCOzBCQUVDO3lCQUNLOzZCQUNhO3NCQUNJOytCQUNBO3dCQUNPO3VCQUNNO3lCQUNnQjs7Ozs7O0FBRTFFLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsc0JBQXNCQyxrQkFBUztJQUN6RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3pELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO0lBQ2xCO0lBRUFHLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyx3QkFBd0I7UUFDdEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLG9CQUFvQlIsTUFBTSxHQUFHO1FBRW5DLE9BQU9RO0lBQ1Q7SUFFQUMsVUFBVVgsT0FBTyxFQUFFO1FBQ2pCLElBQUlZLGFBQWE7UUFFakIsTUFBTUMsc0JBQXNCLElBQUksQ0FBQ0MsU0FBUyxJ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