occam-nominal 1.0.522 → 1.0.525

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 (53) hide show
  1. package/lib/element/assertion/schema.js +20 -13
  2. package/lib/element/assertion/signature.js +1 -1
  3. package/lib/element/assumption/implicit.js +5 -11
  4. package/lib/element/assumption.js +34 -47
  5. package/lib/element/claim/conjecture.js +1 -1
  6. package/lib/element/claim/lemma.js +1 -1
  7. package/lib/element/claim/theorem.js +1 -1
  8. package/lib/element/claim.js +1 -1
  9. package/lib/element/constraint.js +53 -66
  10. package/lib/element/constructor.js +2 -2
  11. package/lib/element/fact/step.js +2 -2
  12. package/lib/element/frame.js +22 -26
  13. package/lib/element/generator.js +2 -2
  14. package/lib/element/hypothesis.js +4 -4
  15. package/lib/element/label.js +20 -11
  16. package/lib/element/metavariable.js +9 -11
  17. package/lib/element/reference.js +18 -30
  18. package/lib/element/resolution.js +7 -9
  19. package/lib/element/rule.js +2 -2
  20. package/lib/element/schema.js +121 -119
  21. package/lib/element/signature.js +2 -2
  22. package/lib/element/subproof.js +2 -2
  23. package/lib/element/variable.js +2 -2
  24. package/lib/node/frame.js +7 -7
  25. package/lib/utilities/element.js +14 -14
  26. package/lib/utilities/string.js +16 -12
  27. package/package.json +1 -1
  28. package/src/element/assertion/schema.js +21 -15
  29. package/src/element/assertion/signature.js +1 -1
  30. package/src/element/assumption/implicit.js +4 -14
  31. package/src/element/assumption.js +36 -56
  32. package/src/element/claim/conjecture.js +1 -1
  33. package/src/element/claim/lemma.js +1 -1
  34. package/src/element/claim/theorem.js +1 -1
  35. package/src/element/claim.js +1 -1
  36. package/src/element/constraint.js +74 -80
  37. package/src/element/constructor.js +1 -1
  38. package/src/element/fact/step.js +2 -2
  39. package/src/element/frame.js +25 -31
  40. package/src/element/generator.js +1 -1
  41. package/src/element/hypothesis.js +3 -3
  42. package/src/element/label.js +32 -13
  43. package/src/element/metavariable.js +8 -10
  44. package/src/element/reference.js +19 -36
  45. package/src/element/resolution.js +8 -10
  46. package/src/element/rule.js +2 -2
  47. package/src/element/schema.js +147 -135
  48. package/src/element/signature.js +1 -1
  49. package/src/element/subproof.js +2 -2
  50. package/src/element/variable.js +1 -1
  51. package/src/node/frame.js +10 -10
  52. package/src/utilities/element.js +15 -15
  53. package/src/utilities/string.js +23 -17
@@ -59,7 +59,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
59
59
  }
60
60
  return newObj;
61
61
  }
62
- const { unbreakable } = _occamlanguages.breakPointUtilities, { cut, all, some, isolate } = _occamlanguages.continuationUtilities;
62
+ const { unbreakable } = _occamlanguages.breakPointUtilities, { cut, all, some, every, isolate } = _occamlanguages.continuationUtilities;
63
63
  const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.default {
64
64
  constructor(context, string, node, breakPoint, link, frame){
65
65
  super(context, string, node, breakPoint);
@@ -76,23 +76,30 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
76
76
  const node = this.getNode(), schemaAssertionNode = node; ///
77
77
  return schemaAssertionNode;
78
78
  }
79
+ isSingular() {
80
+ return this.frame.isSingular();
81
+ }
79
82
  getAssumptions() {
80
83
  return this.frame.getAssumptions();
81
84
  }
82
85
  getMetavariable() {
83
86
  return this.frame.getMetavariable();
84
87
  }
85
- getImplicitAssumptions(context) {
88
+ getImplicitAssumptions(context, forward, back) {
86
89
  const implicitAssumptions = [], metavariable = this.getMetavariable();
87
- if (metavariable !== null) {
88
- const { ImplicitAssumption } = _elements.default, facts = context.getFacts();
89
- facts.forEach((fact)=>{
90
- const statement = fact.getStatement(), implicitAssumption = ImplicitAssumption.fromStatement(statement, context);
91
- implicitAssumption.verify(context, (implicitAssumption, context)=>true); ///
92
- implicitAssumptions.push(implicitAssumption);
93
- });
90
+ if (metavariable === null) {
91
+ return forward(implicitAssumptions, context, back);
94
92
  }
95
- return implicitAssumptions;
93
+ const facts = context.getFacts();
94
+ facts.forEach((fact)=>{
95
+ const { ImplicitAssumption } = _elements.default, statement = fact.getStatement(), implicitAssumption = ImplicitAssumption.fromStatement(statement, context);
96
+ implicitAssumptions.push(implicitAssumption);
97
+ });
98
+ return every(implicitAssumptions, (implicitAssumption, context, forward, back)=>{
99
+ return implicitAssumption.verify(context, forward, back);
100
+ }, context, (context, back)=>{
101
+ return forward(implicitAssumptions, context, back);
102
+ }, back);
96
103
  }
97
104
  verify = unbreakable(function(context, forward, back) {
98
105
  forward = cut(forward, back); ///
@@ -117,10 +124,10 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
117
124
  });
118
125
  apply = unbreakable(function(step, context, forward, back) {
119
126
  forward = cut(forward, back); ///
120
- const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this, schemaAssertionString = this.getString();
127
+ const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this, schemaAssertionString = this.getString(); ///
121
128
  context.trace(`Applying the '${schemaAssertionString}' schema assertion...`);
122
129
  return some(schemas, (schema, forward, back)=>{
123
- return schema.unifyStatementAndSchemaAssertion(statement, schemaAssertion, context, (context, back)=>{
130
+ return schema.apply(statement, schemaAssertion, context, (context, back)=>{
124
131
  context.debug(`...applied the '${schemaAssertionString}' schema assertion.`);
125
132
  return forward(context, back);
126
133
  }, back);
@@ -166,4 +173,4 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
166
173
  static name = "SchemaAssertion";
167
174
  });
168
175
 
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIHNvbWUsIGlzb2xhdGUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgZnJhbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZTtcbiAgfVxuXG4gIGdldFNjaGVtYUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRBc3N1bXB0aW9ucygpOyB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbnMoY29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBJbXBsaWNpdEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgZmFjdHMgPSBjb250ZXh0LmdldEZhY3RzKCk7XG5cbiAgICAgIGZhY3RzLmZvckVhY2goKGZhY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gSW1wbGljaXRBc3N1bXB0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24udmVyaWZ5KGNvbnRleHQsIChpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQpID0+IHRydWUpICAvLy9cblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25zLnB1c2goaW1wbGljaXRBc3N1bXB0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25zO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNjaGVtYXMgPSBjb250ZXh0LmdldFNjaGVtYXMoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS51bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbihzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVGcmFtZSA9IHRoaXMudmFsaWRhdGVGcmFtZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlTGluayxcbiAgICAgICAgICB2YWxpZGF0ZUZyYW1lXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbidzIGxpbmsuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmZyYW1lLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTY2hlbWFBc3NlcnRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsInNvbWUiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiU2NoZW1hQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsImZyYW1lIiwiZ2V0TGluayIsImdldEZyYW1lIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsInZlcmlmeSIsInB1c2giLCJmb3J3YXJkIiwiYmFjayIsInNjaGVtYUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJzY2hlbWFBc3NlcnRpb24iLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic2NoZW1hIiwidW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24iLCJhdHRlbXB0IiwidmFsaWRhdGVMaW5rIiwiYmluZCIsInZhbGlkYXRlRnJhbWUiLCJjb21taXQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7a0VBRXRDO2tFQUNDO3VCQUdFO3lCQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4QixNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6RCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHdCQUF3QkMsa0JBQVM7SUFDM0QsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJ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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIHNvbWUsIGV2ZXJ5LCBpc29sYXRlIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIGZyYW1lKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRTY2hlbWFBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNjaGVtYUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBpc1Npbmd1bGFyKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5pc1Npbmd1bGFyKCk7IH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXNzdW1wdGlvbnMoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25zKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25zID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGZhY3RzID0gY29udGV4dC5nZXRGYWN0cygpO1xuXG4gICAgZmFjdHMuZm9yRWFjaCgoZmFjdCkgPT4ge1xuICAgICAgY29uc3QgeyBJbXBsaWNpdEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IEltcGxpY2l0QXNzdW1wdGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICAgIGltcGxpY2l0QXNzdW1wdGlvbnMucHVzaChpbXBsaWNpdEFzc3VtcHRpb24pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KGltcGxpY2l0QXNzdW1wdGlvbnMsIChpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb24udmVyaWZ5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZm9yd2FyZChpbXBsaWNpdEFzc3VtcHRpb25zLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb24gPSB0aGlzLCAvLy9cbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gc2NoZW1hLmFwcGx5KHN0YXRlbWVudCwgc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgICAgIHZhbGlkYXRlRnJhbWVcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBsaW5rLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5saW5rLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobGluaywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgbGluay5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwic29tZSIsImV2ZXJ5IiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJmcmFtZSIsImdldExpbmsiLCJnZXRGcmFtZSIsImdldFNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2NoZW1hQXNzZXJ0aW9uTm9kZSIsImlzU2luZ3VsYXIiLCJnZXRBc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZSIsImdldEltcGxpY2l0QXNzdW1wdGlvbnMiLCJmb3J3YXJkIiwiYmFjayIsImltcGxpY2l0QXNzdW1wdGlvbnMiLCJtZXRhdmFyaWFibGUiLCJmYWN0cyIsImdldEZhY3RzIiwiZm9yRWFjaCIsImZhY3QiLCJJbXBsaWNpdEFzc3VtcHRpb24iLCJlbGVtZW50cyIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImltcGxpY2l0QXNzdW1wdGlvbiIsImZyb21TdGF0ZW1lbnQiLCJwdXNoIiwidmVyaWZ5Iiwic2NoZW1hQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNjaGVtYUFzc2VydGlvbiIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzY2hlbWEiLCJhdHRlbXB0IiwidmFsaWRhdGVMaW5rIiwiYmluZCIsInZhbGlkYXRlRnJhbWUiLCJjb21taXQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7a0VBRXRDO2tFQUNDO3VCQUdFO3lCQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -173,4 +173,4 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
173
173
  }
174
174
  });
175
175
 
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBjdXQgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQgLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlTaWduYXR1cmVBc3NlcnRpb24oc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCAoc2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBhcHBsaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIGF4aW9tLnVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zLFxuICAgICAgdmFsaWRhdGVMaW5rXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybXMsIHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGxpbmtWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgbGlua1ZhbGlkYXRlcyA9IHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayhsaW5rKTtcblxuICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGF4aW9tU2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKGF4aW9tU2F0aXNmaWFibGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpZ25hdHVyZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiY3V0IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2lnbmF0dXJlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsInRlcm1zIiwiZ2V0VGVybXMiLCJnZXRMaW5rIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwiZGVidWciLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJyZWNvbmNpbGUiLCJheGlvbSIsImZpbmRBeGlvbUJ5TGluayIsInVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyIsImNvbnRpbnVhdGlvbiIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsImFzc2VydGlvbiIsInZhbGlkYXRlVGVybXMiLCJiaW5kIiwidmFsaWRhdGVMaW5rIiwidmFsaWRhdGVzIiwiYWxsIiwiYWRkQXNzZXJ0aW9uIiwidmFsaWRhdGVUZXJtIiwidGVybSIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU3RyaW5nIiwicHVzaCIsInRlcm1zVmFsaWRhdGUiLCJldmVyeSIsImxpbmtWYWxpZGF0ZXMiLCJheGlvbVNhdGlzZmlhYmxlIiwiaXNTYXRpc2ZpYWJsZSIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwidW5pZnlUZXJtcyIsInRlcm1zVW5pZnkiLCJjbGFpbVVuaWZpZXMiLCJjb21taXQiLCJuYW1lIiwiZnJvbVN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWjJEO2tFQUVyQzswQkFFQzt1QkFDQzt5QkFDRTt5QkFDMEI7Ozs7OztBQUVwRCxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsa0JBQVM7SUFDOUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssQ0FBRTtRQUMxRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtJQUNmO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0QsS0FBSztJQUNuQjtJQUVBRSxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksNEJBQTRCO1FBQzFCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx5QkFBeUJSLE1BQU8sR0FBRztRQUV6QyxPQUFPUTtJQUNUO0lBRUFDLFNBQVNoQixZQUFZLFNBQVVLLE9BQU8sRUFBRVksT0FBTyxFQUFFQyxJQUFJO1FBQ25ERCxVQUFVbkIsSUFBSW1CLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQywyQkFBMkIsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUV0RGYsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYseUJBQXlCLHdCQUF3QixDQUFDO1FBRWxGLE9BQU9HLElBQUFBLGNBQU8sRUFBQyxDQUFDQztZQUNkLE9BQU8sSUFBSSxDQUFDQyxR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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBjdXQgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQgLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgYXBwbGllZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICBheGlvbS51bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlTGluayA9IHRoaXMudmFsaWRhdGVMaW5rLmJpbmQodGhpcyk7XG5cbiAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtcyxcbiAgICAgIHZhbGlkYXRlTGlua1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0odGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHRlcm1zVmFsaWRhdGUgPSBldmVyeSh0aGlzLnRlcm1zLCB2YWxpZGF0ZVRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgKHRlcm1zLCBzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICAgIHRlcm1zVmFsaWRhdGUgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpe1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1zVmFsaWRhdGVcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBsaW5rVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuLi5gKTtcblxuICAgIGxpbmtWYWxpZGF0ZXMgPSB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsobGluayk7XG5cbiAgICAgIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBheGlvbVNhdGlzZmlhYmxlID0gYXhpb20uaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgICAgIGlmIChheGlvbVNhdGlzZmlhYmxlKSB7XG4gICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChsaW5rVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyBsaW5rLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKTtcblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5VGVybXModGhpcy50ZXJtcywgY29udGV4dCwgKHRlcm1zVW5pZnkpID0+IHtcbiAgICAgICAgaWYgKCF0ZXJtc1VuaWZ5KSB7XG4gICAgICAgICAgY29uc3QgY2xhaW1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNsYWltVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXhpb20udW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgKGNsYWltVW5pZmllcykgPT4ge1xuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwic3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5IiwicmVjb25jaWxlIiwiYXhpb20iLCJmaW5kQXhpb21CeUxpbmsiLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMiLCJhc3NlcnRpb24iLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsInZhbGlkYXRlTGluayIsInZhbGlkYXRlcyIsImFsbCIsImFkZEFzc2VydGlvbiIsInZhbGlkYXRlVGVybSIsInRlcm0iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ0ZXJtc1ZhbGlkYXRlIiwiZXZlcnkiLCJsaW5rVmFsaWRhdGVzIiwiYXhpb21TYXRpc2ZpYWJsZSIsImlzU2F0aXNmaWFibGUiLCJ1bmlmeUNsYWltIiwiY2xhaW0iLCJjbGFpbVN0cmluZyIsInVuaWZ5VGVybXMiLCJ0ZXJtc1VuaWZ5IiwiY2xhaW1VbmlmaWVzIiwiY29tbWl0IiwibmFtZSIsImZyb21TdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDtrRUFFckM7MEJBRUM7dUJBQ0M7eUJBQ0U7eUJBQzBCOzs7Ozs7QUFFcEQsTUFBTSxFQUFFQSxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQy9CLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFM0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLENBQUU7UUFDMUQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLDRCQUE0QjtRQUMxQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMseUJBQXlCUixNQUFPLEdBQUc7UUFFekMsT0FBT1E7SUFDVDtJQUVBQyxTQUFTaEIsWUFBWSxTQUFVSyxPQUFPLEVBQUVZLE9BQU8sRUFBRUMsSUFBSTtRQUNuREQsVUFBVW5CLElBQUltQixTQUFTQyxPQUFPLEdBQUc7UUFFakMsTUFBTUMsMkJBQTJCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFdERmLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLHlCQUF5Qix3QkFBd0IsQ0FBQztRQUVsRixPQUFPRyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7WUFDZCxPQUFPLElBQUksQ0FBQ0MsUUFBUSxDQUFDRCxPQUFPbEIsU0FBUyxDQUFDb0Isb0JBQW9CcEIsU0FBVWE7Z0JBQ2xFYixRQUFRcUIsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVQLHlCQUF5QixzQkFBc0IsQ0FBQztnQkFFbEYsT0FBT0YsUUFBUVosU0FBU2E7WUFDMUIsR0FBR0E7UUFDTDtJQUNGLEdBQUc7SUFFSFMsUUFBUTNCLFlBQVksU0FBVTRCLElBQUksRUFBRUMsZUFBZSxFQUFFeEIsT0FBTyxFQUFFWSxPQUFPLEVBQUVDLElBQUk7UUFDekVELFVBQVVuQixJQUFJbUIsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLElBQUlZLDhCQUE4QjtRQUVsQyxNQUFNWCwyQkFBMkIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUV2RGYsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUYseUJBQXlCLHdCQUF3QixDQUFDO1FBRWpGLE9BQU9ZLElBQUFBLGtCQUFTLEVBQUMsQ0FBQzFCO1lBQ2hCLE1BQU0yQixRQUFRM0IsUUFBUTRCLGVBQWUsQ0FBQyxJQUFJLENBQUN4QixJQUFJLEdBQ3pDZ0IscUJBQXFCLElBQUksRUFBRyxHQUFHO1lBRXJDLE9BQU9PLE1BQU1FLHVCQUF1QixDQUFDVCxvQkFBb0JwQixTQUFTLENBQUM4QjtnQkFDakUsSUFBSSxDQUFDQSwyQkFBMkI7b0JBQzlCLE9BQU9DLGFBQWFOO2dCQUN0QjtnQkFFQXpCLFFBQVFxQixLQUFLLENBQUMsQ0FBQyxhQUFhLEVBQUVQLHlCQUF5QixzQkFBc0IsQ0FBQztnQkFFOUVhLE1BQU1LLDJCQUEyQixDQUFDVCxNQUFNQyxpQkFBaUJ4QixTQUFTWSxTQUFTQztZQUM3RTtRQUNGLEdBQUdiO0lBQ0wsR0FBRztJQUVIbUIsU0FBU0QsS0FBSyxFQUFFbEIsT0FBTyxFQUFFWSxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN0QyxNQUFNQywyQkFBMkIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUV2RGYsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix5QkFBeUIsd0JBQXdCLENBQUM7UUFFbkZtQixZQUFZLElBQUksRUFBRSxHQUFHO1FBRXJCLE1BQU1DLGdCQUFnQixJQUFJLENBQUNBLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDLElBQUksR0FDNUNDLGVBQWUsSUFBSSxDQUFDQSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJO1FBRWhERSxZQUFZQyxJQUFJO1lBQ2RKO1lBQ0FFO1NBQ0QsRUFBRWxCLE9BQU9sQixTQUFTLENBQUNrQixPQUFPbEI7WUFDekIsSUFBSXFDO1lBRUpyQyxRQUFRdUMsWUFBWSxDQUFDTjtZQUVyQixNQUFNYixxQkFBcUJhLFdBQVcsR0FBRztZQUV6Q0ksYUFBWU4sYUFBYVgsb0JBQW9CcEI7WUFFN0MsT0FBT3FDO1FBQ1Q7UUFFQSxJQUFJQSxXQUFXO1lBQ2JyQyxRQUFRcUIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVQLHlCQUF5QixzQkFBc0IsQ0FBQztRQUNyRjtRQUVBLE9BQU91QjtJQUNUO0lBRUFHLGFBQWFDLElBQUksRUFBRXBDLEtBQUssRUFBRWEsS0FBSyxFQUFFbEIsT0FBTyxFQUFFWSxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN2RCxJQUFJNkI7UUFFSixNQUFNQyxhQUFhRixLQUFLMUIsU0FBUyxJQUMzQkQsMkJBQTJCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFdkRmLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYseUJBQXlCLHlCQUF5QixFQUFFNkIsV0FBVyxTQUFTLENBQUM7UUFFMUdELGdCQUFnQkQsS0FBS3RCLFFBQVEsQ0FBQ0QsT0FBT2xCLFNBQVMsQ0FBQ3lDLE1BQU16QztZQUNuRCxJQUFJcUM7WUFFSmhDLE1BQU11QyxJQUFJLENBQUNIO1lBRVhKLGFBQVlOLGFBQWExQixPQUFPYSxPQUFPbEI7WUFFdkMsT0FBT3FDO1FBQ1Q7UUFFQSxJQUFJSyxlQUFlO1lBQ2pCMUMsUUFBUXFCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFUCx5QkFBeUIseUJBQXlCLEVBQUU2QixXQUFXLE9BQU8sQ0FBQztRQUM1RztRQUVBLE9BQU9EO0lBQ1Q7SUFFQVIsY0FBY2hCLEtBQUssRUFBRWxCLE9BQU8sRUFBRVksT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDM0MsSUFBSWdDO1FBRUosTUFBTS9CLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEZixRQUFRZ0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHlCQUF5QixnQ0FBZ0MsQ0FBQztRQUUzRixNQUFNVCxRQUFRLEVBQUUsRUFDVm1DLGVBQWUsSUFBSSxDQUFDQSxZQUFZLENBQUNMLElBQUksQ0FBQyxJQUFJO1FBRWhEVSxnQkFBZ0JDLE1BQU0sSUFBSSxDQUFDekMsS0FBSyxFQUFFbUMsY0FBY25DLE9BQU9hLE9BQU9sQixTQUFTLENBQUNLLE9BQU9hLE9BQU9sQjtZQUNwRixJQUFJNkM7WUFFSkEsZ0JBQWdCZCxhQUFhYixPQUFPbEI7WUFFcEMsSUFBSTZDLGVBQWU7Z0JBQ2pCLElBQUksQ0FBQ3hDLEtBQUssR0FBR0E7WUFDZjtZQUVBLE9BQU93QztRQUNUO1FBRUEsSUFBSUEsZUFBYztZQUNoQjdDLFFBQVFxQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVAseUJBQXlCLDhCQUE4QixDQUFDO1FBQzdGO1FBRUEsT0FBTytCO0lBQ1Q7SUFFQVQsYUFBYWxCLEtBQUssRUFBRWxCLE9BQU8sRUFBRVksT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDMUMsSUFBSWtDO1FBRUosTUFBTWpDLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEZixRQUFRZ0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHlCQUF5QiwrQkFBK0IsQ0FBQztRQUUxRmlDLGdCQUFnQixJQUFJLENBQUMzQyxJQUFJLENBQUNlLFFBQVEsQ0FBQ0QsT0FBT2xCLFNBQVMsQ0FBQ0ksTUFBTUo7WUFDeEQsSUFBSXFDLGFBQVk7WUFFaEIsTUFBTVYsUUFBUTNCLFFBQVE0QixlQUFlLENBQUN4QjtZQUV0QyxJQUFJdUIsVUFBVSxNQUFNO2dCQUNsQixNQUFNcUIsbUJBQW1CckIsTUFBTXNCLGFBQWE7Z0JBRTVDLElBQUlELGtCQUFrQjtvQkFDcEJYLGFBQVk7Z0JBQ2Q7WUFDRjtZQUVBLElBQUlBLFlBQVc7Z0JBQ2IsSUFBSSxDQUFDakMsSUFBSSxHQUFHQTtnQkFFWmlDLGFBQVlOLGFBQWFiLE9BQU9sQjtZQUNsQztZQUVBLE9BQU9xQztRQUNUO1FBRUEsSUFBSVUsZUFBZTtZQUNqQi9DLFFBQVFxQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVAseUJBQXlCLDZCQUE2QixDQUFDO1FBQzVGO1FBRUEsT0FBT2lDO0lBQ1Q7SUFFQUcsV0FBV0MsS0FBSyxFQUFFbkQsT0FBTyxFQUFFWSxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN4QyxNQUFNdUMsY0FBY0QsTUFBTXBDLFNBQVMsSUFDN0JELDJCQUEyQixJQUFJLENBQUNDLFNBQVM7UUFFL0NmLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVvQyxZQUFZLGtCQUFrQixFQUFFdEMseUJBQXlCLHdCQUF3QixDQUFDO1FBRWpILE9BQU9ZLElBQUFBLGtCQUFTLEVBQUMsQ0FBQzFCO1lBQ2hCLE1BQU0yQixRQUFRM0IsUUFBUTRCLGVBQWUsQ0FBQyxJQUFJLENBQUN4QixJQUFJO1lBRS9DLE9BQU91QixNQUFNMEIsVUFBVSxDQUFDLElBQUksQ0FBQ2hELEtBQUssRUFBRUwsU0FBUyxDQUFDc0Q7Z0JBQzVDLElBQUksQ0FBQ0EsWUFBWTtvQkFDZixNQUFNQyxlQUFlO29CQUVyQixPQUFPeEIsYUFBYXdCO2dCQUN0QjtnQkFFQSxPQUFPNUIsTUFBTXVCLFVBQVUsQ0FBQ0MsT0FBT25ELFNBQVMsQ0FBQ3VEO29CQUN2QyxJQUFJQSxjQUFjO3dCQUNoQnZELFFBQVFxQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRStCLFlBQVksa0JBQWtCLEVBQUV0Qyx5QkFBeUIsc0JBQXNCLENBQUM7b0JBQ25IO29CQUVBLElBQUl5QyxjQUFjO3dCQUNoQnZELFFBQVF3RCxNQUFNO29CQUNoQjtvQkFFQSxPQUFPekIsYUFBYXdCO2dCQUN0QjtZQUNGO1FBQ0YsR0FBR3ZEO0lBQ0w7SUFFQSxPQUFPeUQsT0FBTyxxQkFBcUI7SUFFbkMsT0FBT0MsU0FBU25DLElBQUksRUFBRXZCLE9BQU8sRUFBRTtRQUM3QixNQUFNMkQsZ0JBQWdCcEMsS0FBS3FDLGdCQUFnQixJQUNyQ3hDLHFCQUFxQnlDLElBQUFBLDRDQUFtQyxFQUFDRixlQUFlM0Q7UUFFOUUsT0FBT29CO0lBQ1Q7SUFFQSxPQUFPMEMsY0FBY0MsU0FBUyxFQUFFL0QsT0FBTyxFQUFFO1FBQ3ZDLE1BQU0yRCxnQkFBZ0JJLFVBQVV0RCxPQUFPLElBQ2pDVyxxQkFBcUJ5QyxJQUFBQSw0Q0FBbUMsRUFBQ0YsZUFBZTNEO1FBRTlFLE9BQU9vQjtJQUNUO0FBQ0YifQ==
@@ -71,19 +71,13 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
71
71
  }, back);
72
72
  }
73
73
  validateStatement(state, context, forward, back) {
74
- let statementValidates;
75
74
  const implicitAssumptionString = this.getString(); ///
76
75
  context.trace(`Validating the '${implicitAssumptionString}' implicit assumption's statement...`);
77
- statementValidates = this.statement.validate(state, context, (statement, context)=>{
78
- let validates;
76
+ return this.statement.validate(state, context, (statement, context, back)=>{
79
77
  this.statement = statement;
80
- validates = continuation(state, context);
81
- return validates;
82
- });
83
- if (statementValidates) {
84
- context.debug(`...validated the '${implicitAssumptionString}' implicit assumption's statement.`);
85
- }
86
- return statementValidates;
78
+ context.trace(`...validated the '${implicitAssumptionString}' implicit assumption's statement.`);
79
+ return forward(state, context, back);
80
+ }, back);
87
81
  }
88
82
  unifyStatement(statement, generalContext, specificContext) {
89
83
  debugger;
@@ -109,4 +103,4 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
109
103
  }
110
104
  });
111
105
 
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYWJsYXRlLCBhdHRlbXB0LCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wbGljaXRBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0VxdWFsVG8oaW1wbGljaXRBc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlcztcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGRlYnVnZ2VyXG5cbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcm9vZkFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBpbXBsaWNpdEFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJJbXBsaWNpdEFzc3VtcHRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgaW1wbGljaXRBc3N1bXB0aW9uO1xuXG4gICAgYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50KHN0YXRlbWVudCksXG4gICAgICAgICAgICAgIHN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlID0gaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24oc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZ2V0Tm9kZSIsImltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiaXNFcXVhbFRvIiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJkZWJ1ZyIsImdldENvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwiY29tbWl0Iiwic3RhdGVtZW50VmFsaWRhdGVzIiwidmFsaWRhdGVzIiwiY29udGludWF0aW9uIiwidW5pZnlTdGF0ZW1lbnQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdGF0ZW1lbnRTdHJpbmciLCJwcm9vZkFzc2VydGlvblN0cmluZyIsIm5hbWUiLCJmcm9tU3RhdGVtZW50IiwiYWJsYXRlIiwiaW5zdGFudGlhdGUiLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50IiwiaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9FOzBCQUU3Qzt1QkFDQzt5QkFDcUI7NkJBQ0M7d0JBQ1E7eUJBQ087QUFFN0QsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxPQUFPLEVBQUUsR0FBR0MscUNB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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYWJsYXRlLCBhdHRlbXB0LCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wbGljaXRBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0VxdWFsVG8oaW1wbGljaXRBc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgZGVidWdnZXJcblxuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgaW1wbGljaXRBc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkltcGxpY2l0QXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGxldCBpbXBsaWNpdEFzc3VtcHRpb247XG5cbiAgICBhYmxhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IGltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiSW1wbGljaXRBc3N1bXB0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJnZXROb2RlIiwiaW1wbGljaXRBc3N1bXB0aW9uTm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJpc0VxdWFsVG8iLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsImRlYnVnIiwiZ2V0Q29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJjb21taXQiLCJ1bmlmeVN0YXRlbWVudCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllcyIsInN0YXRlbWVudFN0cmluZyIsInByb29mQXNzZXJ0aW9uU3RyaW5nIiwibmFtZSIsImZyb21TdGF0ZW1lbnQiLCJhYmxhdGUiLCJpbnN0YW50aWF0ZSIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQiLCJpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fab0U7MEJBRTdDO3VCQUNDO3lCQUNxQjs2QkFDQzt3QkFDUTt5QkFDTztBQUU3RCxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFbkQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLHVCQUFPO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxDQUFFO1FBQ3hELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLGVBQWU7UUFDYixPQUFP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
@@ -87,72 +87,59 @@ const _default = (0, _elements.define)(class Assumption extends _occamlanguages.
87
87
  }, back);
88
88
  }
89
89
  validateWhenDeclared(state, context, forward, back) {
90
- let validatesWhenDeclared = false;
91
90
  const declared = (0, _state.isDeclared)(state);
92
- if (declared) {
93
- const assumptionString = this.getString(); ///
94
- context.trace(`Validating the '${assumptionString}' declared assumption...`);
95
- validatesWhenDeclared = continuation(state, context);
96
- if (validatesWhenDeclared) {
97
- context.debug(`...validated the '${assumptionString}' declared assumption.`);
98
- }
91
+ if (!declared) {
92
+ return back();
99
93
  }
100
- return validatesWhenDeclared;
94
+ const assumptionString = this.getString(); ///
95
+ context.trace(`Validating the '${assumptionString}' declared assumption...`);
96
+ ///
97
+ context.debug(`...validated the '${assumptionString}' declared assumption.`);
98
+ return forward(state, context, back);
101
99
  }
102
100
  validateWhenDerived(state, context, forward, back) {
103
101
  let validatesWhenDerived = false;
104
102
  const derived = (0, _state.isDerived)(state);
105
- if (derived) {
106
- const assumptionString = this.getString(); ///
107
- context.trace(`Validating the '${assumptionString}' derived assumption...`);
108
- const schemas = context.getSchemas();
109
- validatesWhenDerived = some(schemas, (schema, context)=>{
110
- let success = false;
111
- this.unifySchema(schema, context, (schemaUnifies)=>{
112
- if (schemaUnifies) {
113
- success = true;
114
- }
115
- });
116
- return success;
117
- }, context, (context)=>true); ///
118
- if (validatesWhenDerived) {
119
- validatesWhenDerived = continuation(state, context);
120
- }
121
- if (validatesWhenDerived) {
122
- context.debug(`...validated the '${assumptionString}' derived assumption.`);
123
- }
103
+ if (!derived) {
104
+ return back();
105
+ }
106
+ const assumptionString = this.getString(); ///
107
+ context.trace(`Validating the '${assumptionString}' derived assumption...`);
108
+ const schemas = context.getSchemas();
109
+ validatesWhenDerived = some(schemas, (schema, context)=>{
110
+ let success = false;
111
+ this.unifySchema(schema, context, (schemaUnifies)=>{
112
+ if (schemaUnifies) {
113
+ success = true;
114
+ }
115
+ });
116
+ return success;
117
+ }, context, (context)=>true); ///
118
+ if (validatesWhenDerived) {
119
+ validatesWhenDerived = continuation(state, context);
120
+ }
121
+ if (validatesWhenDerived) {
122
+ context.debug(`...validated the '${assumptionString}' derived assumption.`);
124
123
  }
125
124
  return validatesWhenDerived;
126
125
  }
127
126
  validateLink(state, context, forward, back) {
128
- let linkValidates;
129
127
  const assumptionString = this.getString(); ///
130
128
  context.trace(`Validating the '${assumptionString}' assumption's link...`);
131
- linkValidates = this.link.validate(state, context, (link, context)=>{
132
- let validates;
129
+ return this.link.validate(state, context, (link, context, back)=>{
133
130
  this.link = link;
134
- validates = continuation(state, context);
135
- return validates;
136
- });
137
- if (linkValidates) {
138
131
  context.debug(`...validates the '${assumptionString}' assumption's link.`);
139
- }
140
- return linkValidates;
132
+ return forward(state, context, back);
133
+ }, back);
141
134
  }
142
135
  validateStatement(state, context, forward, back) {
143
- let statementValidates;
144
136
  const assumptionString = this.getString(); ///
145
137
  context.trace(`Validating the '${assumptionString}' assumption's statement...`);
146
- statementValidates = this.statement.validate(state, context, (statement, context)=>{
147
- let validates;
138
+ return this.statement.validate(state, context, (statement, context, back)=>{
148
139
  this.statement = statement;
149
- validates = continuation(state, context);
150
- return validates;
151
- });
152
- if (statementValidates) {
153
140
  context.debug(`...validates the '${assumptionString}' assumption's statement.`);
154
- }
155
- return statementValidates;
141
+ return forward(state, context, back);
142
+ }, back);
156
143
  }
157
144
  unifySchema(schema, context, forward, back) {
158
145
  const assumptionString = this.getString(), schemaString = schema.getString();
@@ -278,4 +265,4 @@ function statementFromAssumptionNode(assumptionNode, context) {
278
265
  return statement;
279
266
  }
280
267
 
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgam9pbiwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUFzc3VtcHRpb24gfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzLCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQXNzdW1wdGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxpbmsgPSBsaW5rO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMubGluay5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0NvbmRpdGlvbmFsKCkgeyByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuaXNDb25kaXRpb25hbCgpIH1cblxuICBnZXRBc3N1bXB0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgYXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbk5vZGU7XG4gIH1cblxuICBpc0VxdWFsVG8oYXNzdW1wdGlvbikge1xuICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlID0gYXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgYXNzdW1wdGlvbk5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaEFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gYXNzdW1wdGlvbk5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gYXNzdW1wdGlvbk5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgYXNzdW1wdGlvbk5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uKGNvbnRleHQpIHtcbiAgICBjb25zdCBhc3N1bXB0aW9uTm9kZSA9IHRoaXMuZ2V0QXNzdW1wdGlvbk5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uID0gY29udGV4dC5maW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cblxuICBmaW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KTsgfVxuXG4gIGZpbmRTdXBwb3NlZFN0YXRlbWVudHMoY29udGV4dCkgeyByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KTsgfVxuXG4gIGZpbmRTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kU3VicHJvb2ZBc3NlcnRpb24oY29udGV4dCk7IH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3N1bXB0aW9uO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBhc3N1bXB0aW9uID0gdGhpcy5maW5kQXNzdW1wdGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3N1bXB0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChhc3N1bXB0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGFzc3VtcHRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlY2xhcmVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZWNsYXJlZCBhc3N1bXB0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudW5pZnlTY2hlbWEoc2NoZW1hLCBjb250ZXh0LCAoc2NoZW1hVW5pZmllcykgPT4ge1xuICAgICAgICAgIGlmIChzY2hlbWFVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfSwgY29udGV4dCwgKGNvbnRleHQpID0+IHRydWUpOyAvLy9cblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlcml2ZWQgYXNzdW1wdGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgbGlua1ZhbGlkYXRlcztcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzIGxpbmsuLi5gKTtcblxuICAgIGxpbmtWYWxpZGF0ZXMgPSB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmxpbmsgPSBsaW5rO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyBsaW5rLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVNjaGVtYShzY2hlbWEsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzY2hlbWFTdHJpbmcgPSBzY2hlbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gc2NoZW1hLmdldExhYmVsKCk7XG5cbiAgICAgIHJldHVybiB0aGlzLmxpbmsudW5pZnlMYWJlbChsYWJlbCwgY29udGV4dCwgKGxhYmVsVW5pZmllcykgPT4ge1xuICAgICAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgaWYgKCFsYWJlbFVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGVtYVVuaWZpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVkdWN0aW9uID0gc2NoZW1hLmdldERlZHVjdGlvbigpLFxuICAgICAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50ID0gdGhpcy5maW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGRlZHVjZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChkZWR1Y3Rpb25VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHNjaGVtYVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICghZGVkdWN0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb25kaXRpb25hbCA9IHRoaXMuaXNDb25kaXRpb25hbCgpLFxuICAgICAgICAgICAgICAgIHNjaGVtYUNvbmRpdGlvbmFsID0gc2NoZW1hLmlzQ29uZGl0aW9uYWwoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25hbCAhPT0gc2NoZW1hQ29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgIGNvbnRleHQudHJhY2UoYEVpdGhlciB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIGlzIHVuY29uZGl0aW9uYWwgd2hpbHN0IHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiBpcyBjb25kaXRpb25hbCBvciB2aWNlIHZlcnNlLmApO1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGVtYVVuaWZpZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHNjaGVtYS5nZXRTdXBwb3NpdGlvbnMoKSxcbiAgICAgICAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHMgPSB0aGlzLmZpbmRTdXBwb3NlZFN0YXRlbWVudHMoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIHN1cHBvc2VkU3RhdGVtZW50cywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN1cHBvc2l0aW9uc1VuaWZ5KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICAgICAgc2NoZW1hVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzY2hlbWFVbmlmaWVzKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgZGVkdWNlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQgIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgJyR7YXNzdW1wdGlvblN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gZGVkdWN0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjdGlvbkNvbnRleHQgPSBkZWR1Y3Rpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGRlZHVjZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBkZWR1Y3Rpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgZGVkdWN0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudCB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdGF0ZW1lbnQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWR1Y3Rpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBzdXBwb3NlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50U3RyaW5nID0gc3VwcG9zZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbidzIHN0YXRlbWVudCAgd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHN1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uQ29udGV4dCA9IHN1cHBvc2l0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudC5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBzdXBwb3NlZFN0YXRlbWVudHMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbnNMZW5ndGggPSBzdXBwb3NpdGlvbnMubGVuZ3RoLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCA9IHN1cHBvc2VkU3RhdGVtZW50cy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zTGVuZ3RoICE9PSBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VwcG9zaXRpb25zVW5pZnkpO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9IHN1cHBvc2l0aW9uc0xlbmd0aDsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGluZGV4LS07XG5cbiAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50ID0gc3VwcG9zZWRTdGF0ZW1lbnRzW2luZGV4XTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgc3VwcG9zZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGFzc3VtcHRpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IGluc3RhbnRpYXRlQXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IGFzc3VtcHRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgbGluayA9IGxpbmtGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgYXNzdW1wdGlvbiA9IG5ldyBBc3N1bXB0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgc3RhdGVtZW50KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gbGlua0Zyb21Bc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsaW5rTm9kZSA9IGFzc3VtcHRpb25Ob2RlLmdldExpbmtOb2RlKGNvbnRleHQpLFxuICAgICAgICBsaW5rID0gY29udGV4dC5maW5kTGlua0J5TGlua05vZGUobGlua05vZGUpO1xuXG4gIHJldHVybiBsaW5rO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGFzc3VtcHRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJBc3N1bXB0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJzdGF0ZW1lbnQiLCJnZXRMaW5rIiwiZ2V0U3RhdGVtZW50IiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImlzQ29uZGl0aW9uYWwiLCJnZXRBc3N1bXB0aW9uTm9kZSIsImdldE5vZGUiLCJhc3N1bXB0aW9uTm9kZSIsImlzRXF1YWxUbyIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc3VtcHRpb25Ob2RlIiwiZXF1YWxUbyIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwiZmluZEFzc3VtcHRpb24iLCJmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUiLCJmaW5kRGVkdWNlZFN0YXRlbWVudCIsImZpbmRTdXBwb3NlZFN0YXRlbWVudHMiLCJmaW5kU3VicHJvb2ZBc3NlcnRpb24iLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3N1bXB0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInZhbGlkYXRlTGluayIsImJpbmQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFkZEFzc3VtcHRpb24iLCJ2YWxpZGF0ZXNXaGVuRGVjbGFyZWQiLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJzY2hlbWFzIiwiZ2V0U2NoZW1hcyIsInNvbWUiLCJzY2hlbWEiLCJzdWNjZXNzIiwidW5pZnlTY2hlbWEiLCJzY2hlbWFVbmlmaWVzIiwibGlua1ZhbGlkYXRlcyIsInZhbGlkYXRlcyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInNjaGVtYVN0cmluZyIsImdlbmVyYWxDb250ZXh0IiwicmVjb25jaWxlIiwibGFiZWwiLCJnZXRMYWJlbCIsInVuaWZ5TGFiZWwiLCJsYWJlbFVuaWZpZXMiLCJzcGVjaWZpY0NvbnRleHQiLCJkZWR1Y3Rpb24iLCJnZXREZWR1Y3Rpb24iLCJkZWR1Y2VkU3RhdGVtZW50IiwidW5pZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25VbmlmaWVzIiwiY29uZGl0aW9uYWwiLCJzY2hlbWFDb25kaXRpb25hbCIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInN1cHBvc2VkU3RhdGVtZW50cyIsInVuaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJkZWR1Y3Rpb25TdHJpbmciLCJkZWR1Y3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsImpvaW4iLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJjb21taXQiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJzdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmciLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgiLCJpbmRleCIsInRvSlNPTiIsImpzb24iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQXNzdW1wdGlvbiIsImxpbmtGcm9tQXNzdW1wdGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tQXNzdW1wdGlvbk5vZGUiLCJsaW5rTm9kZSIsImdldExpbmtOb2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwic3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVhvRTswQkFFN0M7eUJBQ0s7dUJBRVU7NkJBQ0E7QUFFdEMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRUMsY0FBYyxFQUFFLEdBQUdDLHFDQUFxQixFQUN2RCxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsU0FBUyxDQUFFO1FBQzlELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsa0JBQWtCO1FBQUUsT0FBTyxJQUFJLENBQUNKLElBQUksQ0FBQ0ksZUFB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
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgam9pbiwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUFzc3VtcHRpb24gfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzLCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQXNzdW1wdGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxpbmsgPSBsaW5rO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMubGluay5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0NvbmRpdGlvbmFsKCkgeyByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuaXNDb25kaXRpb25hbCgpIH1cblxuICBnZXRBc3N1bXB0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgYXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbk5vZGU7XG4gIH1cblxuICBpc0VxdWFsVG8oYXNzdW1wdGlvbikge1xuICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlID0gYXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgYXNzdW1wdGlvbk5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaEFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gYXNzdW1wdGlvbk5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gYXNzdW1wdGlvbk5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgYXNzdW1wdGlvbk5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uKGNvbnRleHQpIHtcbiAgICBjb25zdCBhc3N1bXB0aW9uTm9kZSA9IHRoaXMuZ2V0QXNzdW1wdGlvbk5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uID0gY29udGV4dC5maW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cblxuICBmaW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KTsgfVxuXG4gIGZpbmRTdXBwb3NlZFN0YXRlbWVudHMoY29udGV4dCkgeyByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KTsgfVxuXG4gIGZpbmRTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kU3VicHJvb2ZBc3NlcnRpb24oY29udGV4dCk7IH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3N1bXB0aW9uO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBhc3N1bXB0aW9uID0gdGhpcy5maW5kQXNzdW1wdGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3N1bXB0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChhc3N1bXB0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGFzc3VtcHRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZWNsYXJlZCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICAvLy9cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlY2xhcmVkIGFzc3VtcHRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgZGVyaXZlZCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCk7XG5cbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgdGhpcy51bmlmeVNjaGVtYShzY2hlbWEsIGNvbnRleHQsIChzY2hlbWFVbmlmaWVzKSA9PiB7XG4gICAgICAgIGlmIChzY2hlbWFVbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCkgPT4gdHJ1ZSk7IC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGFzc3VtcHRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyBsaW5rLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTY2hlbWEoc2NoZW1hLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IHNjaGVtYS5nZXRMYWJlbCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy5saW5rLnVuaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIChsYWJlbFVuaWZpZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGlmICghbGFiZWxVbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3Qgc2NoZW1hVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlZHVjdGlvbiA9IHNjaGVtYS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZmluZERlZHVjZWRTdGF0ZW1lbnQoY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBkZWR1Y2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZGVkdWN0aW9uVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIWRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uYWwgPSB0aGlzLmlzQ29uZGl0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICBzY2hlbWFDb25kaXRpb25hbCA9IHNjaGVtYS5pc0NvbmRpdGlvbmFsKCk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uYWwgIT09IHNjaGVtYUNvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRyYWNlKGBFaXRoZXIgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSBpcyB1bmNvbmRpdGlvbmFsIHdoaWxzdCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gaXMgY29uZGl0aW9uYWwgb3IgdmljZSB2ZXJzZS5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBzY2hlbWEuZ2V0U3VwcG9zaXRpb25zKCksXG4gICAgICAgICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzID0gdGhpcy5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBzdXBwb3NlZFN0YXRlbWVudHMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICAgICAgaWYgKHN1cHBvc2l0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgICAgIHNjaGVtYVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2NoZW1hVW5pZmllcykge1xuICAgICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGRlZHVjZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IGRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Db250ZXh0ID0gZGVkdWN0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgZGVkdWN0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHthc3N1bXB0aW9uU3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVkdWN0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgc3VwcG9zZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudFN0cmluZyA9IHN1cHBvc2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24ncyBzdGF0ZW1lbnQgIHdpdGggdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbkNvbnRleHQgPSBzdXBwb3NpdGlvbi5nZXRDb250ZXh0KCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQgPSBzdXBwb3NpdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NlZFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHN1cHBvc2l0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN1cHBvc2l0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbidzIHN0YXRlbWVudCAgd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvblVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgc3VwcG9zZWRTdGF0ZW1lbnRzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25zTGVuZ3RoID0gc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGggPSBzdXBwb3NlZFN0YXRlbWVudHMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCAhPT0gc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvbnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uc1VuaWZ5KTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSBzdXBwb3NpdGlvbnNMZW5ndGg7IC8vL1xuXG4gICAgcmV0dXJuIGJhY2t3YXJkc0V2ZXJ5KHN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBpbmRleC0tO1xuXG4gICAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudCA9IHN1cHBvc2VkU3RhdGVtZW50c1tpbmRleF07XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIHN1cHBvc2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICBzdHJpbmcsXG4gICAgICBicmVha1BvaW50XG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkFzc3VtcHRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBhc3N1bXB0aW9uO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgYXNzdW1wdGlvbk5vZGUgPSBpbnN0YW50aWF0ZUFzc3VtcHRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBhc3N1bXB0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGxpbmsgPSBsaW5rRnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Bc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGFzc3VtcHRpb24gPSBuZXcgQXNzdW1wdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHN0YXRlbWVudCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGxpbmtGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGlua05vZGUgPSBhc3N1bXB0aW9uTm9kZS5nZXRMaW5rTm9kZShjb250ZXh0KSxcbiAgICAgICAgbGluayA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBhc3N1bXB0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImFsbCIsImV4aXN0cyIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQXNzdW1wdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsaW5rIiwic3RhdGVtZW50IiwiZ2V0TGluayIsImdldFN0YXRlbWVudCIsImdldE1ldGF2YXJpYWJsZSIsImdldFN0YXRlbWVudE5vZGUiLCJpc0NvbmRpdGlvbmFsIiwiZ2V0QXNzdW1wdGlvbk5vZGUiLCJnZXROb2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJpc0VxdWFsVG8iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hBc3N1bXB0aW9uTm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRBc3N1bXB0aW9uIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiZmluZERlZHVjZWRTdGF0ZW1lbnQiLCJmaW5kU3VwcG9zZWRTdGF0ZW1lbnRzIiwiZmluZFN1YnByb29mQXNzZXJ0aW9uIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzdW1wdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJ2YWxpZGF0ZUxpbmsiLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3N1bXB0aW9uIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzb21lIiwic2NoZW1hIiwic3VjY2VzcyIsInVuaWZ5U2NoZW1hIiwic2NoZW1hVW5pZmllcyIsImNvbnRpbnVhdGlvbiIsInNjaGVtYVN0cmluZyIsImdlbmVyYWxDb250ZXh0IiwicmVjb25jaWxlIiwibGFiZWwiLCJnZXRMYWJlbCIsInVuaWZ5TGFiZWwiLCJsYWJlbFVuaWZpZXMiLCJzcGVjaWZpY0NvbnRleHQiLCJkZWR1Y3Rpb24iLCJnZXREZWR1Y3Rpb24iLCJkZWR1Y2VkU3RhdGVtZW50IiwidW5pZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25VbmlmaWVzIiwiY29uZGl0aW9uYWwiLCJzY2hlbWFDb25kaXRpb25hbCIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInN1cHBvc2VkU3RhdGVtZW50cyIsInVuaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJkZWR1Y3Rpb25TdHJpbmciLCJkZWR1Y3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsImpvaW4iLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJjb21taXQiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJzdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmciLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgiLCJpbmRleCIsInRvSlNPTiIsImpzb24iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQXNzdW1wdGlvbiIsImxpbmtGcm9tQXNzdW1wdGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tQXNzdW1wdGlvbk5vZGUiLCJsaW5rTm9kZSIsImdldExpbmtOb2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwic3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVhvRTswQkFFN0M7eUJBQ0s7dUJBRVU7NkJBQ0E7QUFFdEMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRUMsY0FBYyxFQUFFLEdBQUdDLHFDQUFxQixFQUN2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
@@ -88,4 +88,4 @@ const _default = (0, _elements.define)(class Conjecture extends _claim.default {
88
88
  }
89
89
  });
90
90
 
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2NvbmplY3R1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENsYWltIGZyb20gXCIuLi9jbGFpbVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVuY2xvc2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBpc29sYXRlIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25qZWN0dXJlIGV4dGVuZHMgQ2xhaW0ge1xuICBnZXRDb25qZWN0dXJlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uamVjdHVyZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uamVjdHVyZU5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvbmplY3R1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyxcbiAgICAgICAgICB2ZXJpZnlEZWR1Y3Rpb24sXG4gICAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29uamVjdHVyZSA9IHRoaXM7IC8vL1xuXG4gICAgICBjb250ZXh0LmFkZENvbmplY3R1cmUoY29uamVjdHVyZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXBwbHkgPSBicmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29uamVjdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgYXBwbHlEZWR1Y3Rpb24gPSB0aGlzLmFwcGx5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgIGFwcGx5U3VwcG9zaXRpb25zID0gdGhpcy5hcHBseVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIGFwcGx5RGVkdWN0aW9uLFxuICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zXG4gICAgICAgIF0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQgPSBjb250ZXh0LmFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQoKTtcblxuICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGVyZSBhcmUgdW5zb2x2ZWQgY29tcGxleCBzdWJzdGl0dXRpb25zLmApO1xuXG4gICAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpXG4gICAgfSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uamVjdHVyZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7IHJldHVybiBDbGFpbS5mcm9tSlNPTihDb25qZWN0dXJlLCBqc29uLCBjb250ZXh0KTsgfVxufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImlzb2xhdGUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25qZWN0dXJlIiwiQ2xhaW0iLCJnZXRDb25qZWN0dXJlTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiY29uamVjdHVyZU5vZGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJjb25qZWN0dXJlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5RGVkdWN0aW9uIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiY29uamVjdHVyZSIsImFkZENvbmplY3R1cmUiLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImFwcGx5RGVkdWN0aW9uIiwiYXBwbHlTdXBwb3NpdGlvbnMiLCJyZWNvbmNpbGUiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwiYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVYyRDs4REFFekM7MEJBRUs7eUJBQ0M7Ozs7OztBQUV4QixNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDbkMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFbkQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxtQkFBbUJDLGNBQUs7SUFDbERDLG9CQUFvQjtRQUNsQixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsaUJBQWlCRixNQUFPLEdBQUc7UUFFakMsT0FBT0U7SUFDVDtJQUVBQyxTQUFTYixVQUFVLFNBQVVjLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO1FBQ2pERCxVQUFVYixJQUFJYSxTQUFTQyxPQUFPLEdBQUc7UUFFakMsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFL0NKLFFBQVFLLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsaUJBQWlCLGVBQWUsQ0FBQztRQUVqRSxPQUFPYixRQUFRLENBQUNVLFNBQVNDLFNBQVNDO1lBQ2hDLE9BQU9JLElB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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2NvbmplY3R1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENsYWltIGZyb20gXCIuLi9jbGFpbVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVuY2xvc2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBpc29sYXRlIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25qZWN0dXJlIGV4dGVuZHMgQ2xhaW0ge1xuICBnZXRDb25qZWN0dXJlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uamVjdHVyZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uamVjdHVyZU5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvbmplY3R1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyxcbiAgICAgICAgICB2ZXJpZnlEZWR1Y3Rpb24sXG4gICAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29uamVjdHVyZSA9IHRoaXM7IC8vL1xuXG4gICAgICBjb250ZXh0LmFkZENvbmplY3R1cmUoY29uamVjdHVyZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXBwbHkgPSBicmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29uamVjdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgYXBwbHlEZWR1Y3Rpb24gPSB0aGlzLmFwcGx5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICBhcHBseVN1cHBvc2l0aW9ucyA9IHRoaXMuYXBwbHlTdXBwb3NpdGlvbnMuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICBhcHBseURlZHVjdGlvbixcbiAgICAgICAgICBhcHBseVN1cHBvc2l0aW9uc1xuICAgICAgICBdLCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkID0gY29udGV4dC5hcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCkge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlcmUgYXJlIHVuc29sdmVkIGNvbXBsZXggc3Vic3RpdHV0aW9ucy5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KVxuICAgIH0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7Y29uamVjdHVyZVN0cmluZ30nIGNvbmplY3R1cmUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIGFwcGx5IHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbmplY3R1cmVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkgeyByZXR1cm4gQ2xhaW0uZnJvbUpTT04oQ29uamVjdHVyZSwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uamVjdHVyZSIsIkNsYWltIiwiZ2V0Q29uamVjdHVyZU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImNvbmplY3R1cmVOb2RlIiwidmVyaWZ5IiwiY29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwiY29uamVjdHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImNvbmplY3R1cmUiLCJhZGRDb25qZWN0dXJlIiwiZGVidWciLCJleGNlcHRpb24iLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJhcHBseURlZHVjdGlvbiIsImFwcGx5U3VwcG9zaXRpb25zIiwicmVjb25jaWxlIiwiY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsImFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7OztnQ0FWMkQ7OERBRXpDOzBCQUVLO3lCQUNDOzs7Ozs7QUFFeEIsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ25DLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxPQUFPLEVBQUUsR0FBR0MscUNBQXFCO01BRW5ELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyxjQUFLO0lBQ2xEQyxvQkFBb0I7UUFDbEIsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLGlCQUFpQkYsTUFBTyxHQUFHO1FBRWpDLE9BQU9FO0lBQ1Q7SUFFQUMsU0FBU2IsVUFBVSxTQUFVYyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtRQUNqREQsVUFBVWIsSUFBSWEsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGlCQUFpQixlQUFlLENBQUM7UUFFakUsT0FBT2IsUUFBUSxDQUFDVSxTQUFTQyxTQUFTQztZQUNoQyxPQUFP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