occam-verify-cli 1.0.388 → 1.0.396

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 (119) hide show
  1. package/lib/action/verify.js +3 -3
  2. package/lib/context/file.js +8 -7
  3. package/lib/context/local.js +23 -57
  4. package/lib/context/temporary.js +705 -0
  5. package/lib/mixins/statement/verify.js +38 -16
  6. package/lib/mixins/step/unify.js +3 -3
  7. package/lib/node/substitution/frame.js +23 -1
  8. package/lib/node/substitution/term.js +23 -1
  9. package/lib/ontology/assertion/contained.js +77 -35
  10. package/lib/ontology/assertion/defined.js +76 -34
  11. package/lib/ontology/assertion/property.js +71 -29
  12. package/lib/ontology/assertion/satisfies.js +70 -22
  13. package/lib/ontology/assertion/subproof.js +95 -41
  14. package/lib/ontology/assertion/type.js +74 -18
  15. package/lib/ontology/assertion.js +66 -0
  16. package/lib/ontology/axiom.js +8 -11
  17. package/lib/ontology/combinator/bracketed.js +17 -3
  18. package/lib/ontology/combinator.js +17 -3
  19. package/lib/ontology/conclusion.js +38 -9
  20. package/lib/ontology/constructor/bracketed.js +17 -3
  21. package/lib/ontology/constructor.js +17 -3
  22. package/lib/ontology/declaration.js +27 -2
  23. package/lib/ontology/deduction.js +38 -9
  24. package/lib/ontology/frame.js +50 -13
  25. package/lib/ontology/hypothesis.js +11 -11
  26. package/lib/ontology/judgement.js +1 -1
  27. package/lib/ontology/label.js +5 -6
  28. package/lib/ontology/metavariable.js +11 -12
  29. package/lib/ontology/premise.js +47 -17
  30. package/lib/ontology/procedureCall.js +15 -15
  31. package/lib/ontology/procedureReference.js +1 -1
  32. package/lib/ontology/proof.js +2 -2
  33. package/lib/ontology/reference.js +4 -5
  34. package/lib/ontology/rule.js +68 -69
  35. package/lib/ontology/section.js +2 -2
  36. package/lib/ontology/signature.js +2 -2
  37. package/lib/ontology/statement.js +9 -1
  38. package/lib/ontology/step.js +37 -24
  39. package/lib/ontology/subproof.js +11 -11
  40. package/lib/ontology/substitution/frame.js +69 -21
  41. package/lib/ontology/substitution/reference.js +24 -9
  42. package/lib/ontology/substitution/statement.js +99 -79
  43. package/lib/ontology/substitution/term.js +89 -29
  44. package/lib/ontology/substitution.js +37 -30
  45. package/lib/ontology/supposition.js +56 -25
  46. package/lib/ontology/term.js +4 -3
  47. package/lib/ontology/topLevelAssertion.js +15 -15
  48. package/lib/ontology/topLevelMetaAssertion.js +2 -2
  49. package/lib/ontology/variable.js +42 -14
  50. package/lib/substitutions.js +25 -25
  51. package/lib/unifier/intrinsicLevel.js +14 -7
  52. package/lib/unifier/metaLevel.js +25 -17
  53. package/lib/utilities/brackets.js +4 -21
  54. package/lib/utilities/context.js +6 -6
  55. package/lib/utilities/json.js +24 -1
  56. package/lib/utilities/metavariable.js +18 -0
  57. package/lib/utilities/substitutions.js +3 -3
  58. package/lib/utilities/unification.js +10 -16
  59. package/lib/utilities/variable.js +30 -0
  60. package/package.json +2 -2
  61. package/src/action/verify.js +2 -2
  62. package/src/context/file.js +8 -7
  63. package/src/context/local.js +13 -61
  64. package/src/context/temporary.js +394 -0
  65. package/src/mixins/statement/verify.js +60 -23
  66. package/src/mixins/step/unify.js +2 -2
  67. package/src/node/substitution/frame.js +26 -0
  68. package/src/node/substitution/term.js +26 -0
  69. package/src/ontology/assertion/contained.js +12 -23
  70. package/src/ontology/assertion/defined.js +12 -23
  71. package/src/ontology/assertion/property.js +7 -20
  72. package/src/ontology/assertion/satisfies.js +7 -16
  73. package/src/ontology/assertion/subproof.js +36 -42
  74. package/src/ontology/assertion/type.js +10 -11
  75. package/src/ontology/assertion.js +23 -0
  76. package/src/ontology/axiom.js +7 -16
  77. package/src/ontology/combinator/bracketed.js +2 -0
  78. package/src/ontology/combinator.js +2 -0
  79. package/src/ontology/conclusion.js +51 -10
  80. package/src/ontology/constructor/bracketed.js +2 -0
  81. package/src/ontology/constructor.js +2 -0
  82. package/src/ontology/declaration.js +34 -1
  83. package/src/ontology/deduction.js +51 -10
  84. package/src/ontology/frame.js +58 -21
  85. package/src/ontology/hypothesis.js +8 -8
  86. package/src/ontology/judgement.js +1 -1
  87. package/src/ontology/label.js +2 -7
  88. package/src/ontology/metavariable.js +12 -15
  89. package/src/ontology/premise.js +64 -21
  90. package/src/ontology/procedureCall.js +14 -14
  91. package/src/ontology/procedureReference.js +2 -2
  92. package/src/ontology/proof.js +1 -1
  93. package/src/ontology/reference.js +1 -6
  94. package/src/ontology/rule.js +76 -80
  95. package/src/ontology/section.js +1 -1
  96. package/src/ontology/signature.js +1 -1
  97. package/src/ontology/statement.js +6 -0
  98. package/src/ontology/step.js +43 -26
  99. package/src/ontology/subproof.js +8 -8
  100. package/src/ontology/substitution/frame.js +72 -26
  101. package/src/ontology/substitution/reference.js +8 -6
  102. package/src/ontology/substitution/statement.js +93 -77
  103. package/src/ontology/substitution/term.js +108 -42
  104. package/src/ontology/substitution.js +27 -22
  105. package/src/ontology/supposition.js +70 -24
  106. package/src/ontology/term.js +5 -5
  107. package/src/ontology/topLevelAssertion.js +14 -16
  108. package/src/ontology/topLevelMetaAssertion.js +1 -1
  109. package/src/ontology/variable.js +64 -17
  110. package/src/substitutions.js +25 -25
  111. package/src/unifier/intrinsicLevel.js +18 -8
  112. package/src/unifier/metaLevel.js +35 -21
  113. package/src/utilities/brackets.js +3 -29
  114. package/src/utilities/context.js +5 -5
  115. package/src/utilities/json.js +28 -0
  116. package/src/utilities/metavariable.js +13 -0
  117. package/src/utilities/substitutions.js +2 -4
  118. package/src/utilities/unification.js +8 -24
  119. package/src/utilities/variable.js +22 -0
@@ -80,17 +80,6 @@ var Substitutions = /*#__PURE__*/ function() {
80
80
  return this.array.length;
81
81
  }
82
82
  },
83
- {
84
- key: "getFirstSubstitution",
85
- value: function getFirstSubstitution() {
86
- var firstSubstitution = null;
87
- var length = this.getLength();
88
- if (length > 0) {
89
- firstSubstitution = first(this.array);
90
- }
91
- return firstSubstitution;
92
- }
93
- },
94
83
  {
95
84
  key: "getMetavariables",
96
85
  value: function getMetavariables() {
@@ -123,6 +112,17 @@ var Substitutions = /*#__PURE__*/ function() {
123
112
  return nonTrivialLength;
124
113
  }
125
114
  },
115
+ {
116
+ key: "getFirstSubstitution",
117
+ value: function getFirstSubstitution() {
118
+ var firstSubstitution = null;
119
+ var length = this.getLength();
120
+ if (length > 0) {
121
+ firstSubstitution = first(this.array);
122
+ }
123
+ return firstSubstitution;
124
+ }
125
+ },
126
126
  {
127
127
  key: "mapSubstitution",
128
128
  value: function mapSubstitution(callback) {
@@ -185,7 +185,7 @@ var Substitutions = /*#__PURE__*/ function() {
185
185
  key: "findSubstitutionsByMetavariable",
186
186
  value: function findSubstitutionsByMetavariable(metavariable) {
187
187
  var substitutions = this.findSubstitutions(function(substitution) {
188
- var substitutionMetavariableEqualToMetavariable = substitution.isMetavariableEqualTo(metavariable);
188
+ var substitutionMetavariableEqualToMetavariable = substitution.isMetavariableEqualToMetavariable(metavariable);
189
189
  if (substitutionMetavariableEqualToMetavariable) {
190
190
  return true;
191
191
  }
@@ -199,7 +199,7 @@ var Substitutions = /*#__PURE__*/ function() {
199
199
  var simpleSubstitution = this.findSubstitution(function(substitution) {
200
200
  var substitutionSimple = substitution.isSimple();
201
201
  if (substitutionSimple) {
202
- var simpleSubstitution = substitution, simpleSubstitutionMetavariableEqualToMetavariable = simpleSubstitution.isMetavariableEqualTo(metavariable);
202
+ var simpleSubstitution = substitution, simpleSubstitutionMetavariableEqualToMetavariable = simpleSubstitution.isMetavariableEqualToMetavariable(metavariable);
203
203
  if (simpleSubstitutionMetavariableEqualToMetavariable) {
204
204
  return true;
205
205
  }
@@ -214,7 +214,7 @@ var Substitutions = /*#__PURE__*/ function() {
214
214
  var complexSubstitutions = this.findSubstitutions(function(substitution) {
215
215
  var substitutionComplex = substitution.isComplex();
216
216
  if (substitutionComplex) {
217
- var complexSubstitution = substitution, complexSubstitutionMetavariableEqualToMetavariable = complexSubstitution.isMetavariableEqualTo(metavariable);
217
+ var complexSubstitution = substitution, complexSubstitutionMetavariableEqualToMetavariable = complexSubstitution.isMetavariableEqualToMetavariable(metavariable);
218
218
  if (complexSubstitutionMetavariableEqualToMetavariable) {
219
219
  return true;
220
220
  }
@@ -228,9 +228,9 @@ var Substitutions = /*#__PURE__*/ function() {
228
228
  value: function findSubstitutionByMetavariableAndSubstitution(metavariable, substitution) {
229
229
  var substitutionA = substitution; ///
230
230
  substitution = this.findSubstitution(function(substitution) {
231
- var substitutionMetavariableEqualToMetavariable = substitution.isMetavariableEqualTo(metavariable);
231
+ var substitutionMetavariableEqualToMetavariable = substitution.isMetavariableEqualToMetavariable(metavariable);
232
232
  if (substitutionMetavariableEqualToMetavariable) {
233
- var substitutionB = substitution, substitutionBSubstitutionEqualToSubstitutionA = substitutionB.isSubstitutionEqualTo(substitutionA);
233
+ var substitutionB = substitution, substitutionBSubstitutionEqualToSubstitutionA = substitutionB.isSubstitutionEqualToSubstitution(substitutionA);
234
234
  if (substitutionBSubstitutionEqualToSubstitutionA) {
235
235
  return true;
236
236
  }
@@ -263,15 +263,15 @@ var Substitutions = /*#__PURE__*/ function() {
263
263
  },
264
264
  {
265
265
  key: "addSubstitution",
266
- value: function addSubstitution(substitution, specificContext) {
266
+ value: function addSubstitution(substitution, context) {
267
267
  this.array.push(substitution);
268
268
  var substitutionString = substitution.getString();
269
- specificContext.trace("Added the ".concat(substitutionString, " substitution."));
269
+ context.trace("Added the ".concat(substitutionString, " substitution."));
270
270
  }
271
271
  },
272
272
  {
273
273
  key: "removeSubstitution",
274
- value: function removeSubstitution(substitution, specificContext) {
274
+ value: function removeSubstitution(substitution, context) {
275
275
  var substitutionA = substitution; ///
276
276
  prune(this.array, function(substitution) {
277
277
  var substitutionB = substitution; ///
@@ -280,7 +280,7 @@ var Substitutions = /*#__PURE__*/ function() {
280
280
  }
281
281
  });
282
282
  var substitutionString = substitution.getString();
283
- specificContext.trace("Removed the ".concat(substitutionString, " substitution."));
283
+ context.trace("Removed the ".concat(substitutionString, " substitution."));
284
284
  }
285
285
  },
286
286
  {
@@ -315,7 +315,7 @@ var Substitutions = /*#__PURE__*/ function() {
315
315
  },
316
316
  {
317
317
  key: "resolve",
318
- value: function resolve(generalContext, specificContext) {
318
+ value: function resolve(context) {
319
319
  var _this = this;
320
320
  var metavariables = this.getMetavariables();
321
321
  metavariables.forEach(function(metavariable) {
@@ -324,7 +324,7 @@ var Substitutions = /*#__PURE__*/ function() {
324
324
  var substitutions = _this, substitution = complexSubstitution; ///
325
325
  resolved = substitution.isResolved();
326
326
  if (!resolved) {
327
- substitution.resolve(substitutions, generalContext, specificContext);
327
+ substitution.resolve(substitutions, context);
328
328
  }
329
329
  });
330
330
  if (complexSubstitutionsResolved) {
@@ -359,12 +359,12 @@ var Substitutions = /*#__PURE__*/ function() {
359
359
  },
360
360
  {
361
361
  key: "rollback",
362
- value: function rollback(specificContext) {
362
+ value: function rollback(context) {
363
363
  var _this = this;
364
364
  var array = _to_consumable_array(this.array);
365
365
  leftDifference(array, this.savedArray);
366
366
  array.forEach(function(substitution) {
367
- _this.removeSubstitution(substitution, specificContext);
367
+ _this.removeSubstitution(substitution, context);
368
368
  });
369
369
  this.array = _to_consumable_array(this.savedArray);
370
370
  this.savedArray = null;
@@ -421,4 +421,4 @@ function leftDifference(arrayA, arrayB) {
421
421
  });
422
422
  }
423
423
 
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWJzdGl0dXRpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgZmluZCwgZmlyc3QsIGNsZWFyLCBwcnVuZSwgZmlsdGVyLCBjb21wcmVzcywgY29ycmVsYXRlIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3Vic3RpdHV0aW9ucyB7XG4gIGNvbnN0cnVjdG9yKGFycmF5LCBzYXZlZEFycmF5KSB7XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xuICAgIHRoaXMuc2F2ZWRBcnJheSA9IHNhdmVkQXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldFNhdmVkQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRBcnJheTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHsgcmV0dXJuIHRoaXMuYXJyYXkubGVuZ3RoOyB9XG5cbiAgZ2V0Rmlyc3RTdWJzdGl0dXRpb24oKSB7XG4gICAgbGV0IGZpcnN0U3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCk7XG5cbiAgICBpZiAobGVuZ3RoID4gMCkge1xuICAgICAgZmlyc3RTdWJzdGl0dXRpb24gPSBmaXJzdCh0aGlzLmFycmF5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3RTdWJzdGl0dXRpb247XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVzKCkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSBbXTtcblxuICAgIHRoaXMuZm9yRWFjaFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBzdWJzdGl0dXRpb24uZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgICAgbWV0YXZhcmlhYmxlcy5wdXNoKG1ldGF2YXJpYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb21wcmVzcyhtZXRhdmFyaWFibGVzLCAobWV0YXZhcmlhYmxlQSwgbWV0YXZhcmlhYmxlQikgPT4ge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCID0gbWV0YXZhcmlhYmxlQi5pc0VxdWFsVG8obWV0YXZhcmlhYmxlQSk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldE5vblRyaXZpYWxMZW5ndGgoKSB7XG4gICAgY29uc3Qgbm9uVHJpdmlhbExlbmd0aCA9IHRoaXMucmVkdWNlU3Vic3RpdHV0aW9uKChub25Ucml2aWFsTGVuZ3RoLCBzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvblRyaXZpYWwgPSBzdWJzdGl0dXRpb24uaXNUcml2aWFsKCk7XG5cbiAgICAgIGlmICghc3Vic3RpdHV0aW9uVHJpdmlhbCkge1xuICAgICAgICBub25Ucml2aWFsTGVuZ3RoICs9IDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub25Ucml2aWFsTGVuZ3RoO1xuICAgIH0sIDApO1xuXG4gICAgcmV0dXJuIG5vblRyaXZpYWxMZW5ndGg7XG4gIH1cblxuICBtYXBTdWJzdGl0dXRpb24oY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuYXJyYXkubWFwKGNhbGxiYWNrKTsgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb24oY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuYXJyYXkuZmluZChjYWxsYmFjaykgfHwgbnVsbDsgfSAgLy8vXG5cbiAgc29tZVN1YnN0aXR1dGlvbihjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5zb21lKGNhbGxiYWNrKTsgfVxuXG4gIGV2ZXJ5U3Vic3RpdHV0aW9uKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LmV2ZXJ5KGNhbGxiYWNrKTsgfVxuXG4gIHJlZHVjZVN1YnN0aXR1dGlvbihjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7IHJldHVybiB0aGlzLmFycmF5LnJlZHVjZShjYWxsYmFjaywgaW5pdGlhbFZhbHVlKTsgfVxuXG4gIGZvckVhY2hTdWJzdGl0dXRpb24oY2FsbGJhY2spIHsgdGhpcy5hcnJheS5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25zKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYXJyYXkgPSBmaW5kKHRoaXMuYXJyYXksIGNhbGxiYWNrKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gU3Vic3RpdHV0aW9ucy5mcm9tQXJyYXkoYXJyYXkpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25WYXJpYWJsZSA9IHN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZSgpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uVmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uVmFyaWFibGVFcXVhbFRvVmFyaWFibGUgPSBzdWJzdGl0dXRpb25WYXJpYWJsZS5pc0VxdWFsVG8odmFyaWFibGUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25WYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gdGhpcy5maW5kU3Vic3RpdHV0aW9ucygoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlID0gc3Vic3RpdHV0aW9uLmlzTWV0YXZhcmlhYmxlRXF1YWxUbyhtZXRhdmFyaWFibGUpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IHNpbXBsZVN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25TaW1wbGUgPSBzdWJzdGl0dXRpb24uaXNTaW1wbGUoKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvblNpbXBsZSkge1xuICAgICAgICBjb25zdCBzaW1wbGVTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgICAgc2ltcGxlU3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSA9IHNpbXBsZVN1YnN0aXR1dGlvbi5pc01ldGF2YXJpYWJsZUVxdWFsVG8obWV0YXZhcmlhYmxlKTtcblxuICAgICAgICBpZiAoc2ltcGxlU3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2ltcGxlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZENvbXBsZXhTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSB7XG4gICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnMgPSB0aGlzLmZpbmRTdWJzdGl0dXRpb25zKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkNvbXBsZXggPSBzdWJzdGl0dXRpb24uaXNDb21wbGV4KCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25Db21wbGV4KSB7XG4gICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSA9IGNvbXBsZXhTdWJzdGl0dXRpb24uaXNNZXRhdmFyaWFibGVFcXVhbFRvKG1ldGF2YXJpYWJsZSk7XG5cbiAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb21wbGV4U3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkEgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgc3Vic3RpdHV0aW9uID0gdGhpcy5maW5kU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHsgIC8vL1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSA9IHN1YnN0aXR1dGlvbi5pc01ldGF2YXJpYWJsZUVxdWFsVG8obWV0YXZhcmlhYmxlKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uQiA9IHN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgICAgIHN1YnN0aXR1dGlvbkJTdWJzdGl0dXRpb25FcXVhbFRvU3Vic3RpdHV0aW9uQSA9IHN1YnN0aXR1dGlvbkIuaXNTdWJzdGl0dXRpb25FcXVhbFRvKHN1YnN0aXR1dGlvbkEpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25CU3Vic3RpdHV0aW9uRXF1YWxUb1N1YnN0aXR1dGlvbkEpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5VmFyaWFibGUodmFyaWFibGUpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlKHZhcmlhYmxlKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25QcmVzZW50ID0gKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uUHJlc2VudDtcbiAgfVxuXG4gIGlzU2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IHNpbXBsZVN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgc2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudCA9IChzaW1wbGVTdWJzdGl0dXRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHNpbXBsZVN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc1N1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICAgIHN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTsgIC8vL1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uUHJlc2VudCA9IChzdWJzdGl0dXRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICB0aGlzLmFycmF5LnB1c2goc3Vic3RpdHV0aW9uKTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgQWRkZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gIH1cblxuICByZW1vdmVTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25BID0gc3Vic3RpdHV0aW9uOyAvLy9cblxuICAgIHBydW5lKHRoaXMuYXJyYXksIChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uQSAhPT0gc3Vic3RpdHV0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgUmVtb3ZlZCB0aGUgJHtzdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbi5gKTtcbiAgfVxuXG4gIGNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IGFycmF5ID0gc3Vic3RpdHV0aW9ucy5nZXRBcnJheSgpLFxuICAgICAgICAgIGFycmF5QSA9IGFycmF5LCAvLy9cbiAgICAgICAgICBhcnJheUIgPSB0aGlzLmFycmF5LCAgLy8vXG4gICAgICAgICAgY29ycmVsYXRlcyA9IGNvcnJlbGF0ZShhcnJheUEsIGFycmF5QiwgKHN1YnN0aXR1dGlvbkEsIHN1YnN0aXR1dGlvbkIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkFJc0VRdWFsVG9TdWJzdGl0dXRpb25CID0gc3Vic3RpdHV0aW9uQS5pc0VxdWFsVG8oc3Vic3RpdHV0aW9uQik7XG5cbiAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25BSXNFUXVhbFRvU3Vic3RpdHV0aW9uQikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBjb3JyZWxhdGVzO1xuICB9XG5cbiAgcmVtb3ZlVHJpdmlhbFN1YnN0aXR1dGlvbnMoKSAge1xuICAgIGZpbHRlcih0aGlzLmFycmF5LCAoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCB0cml2aWFsID0gc3Vic3RpdHV0aW9uLmlzVHJpdmlhbCgpO1xuXG4gICAgICBpZiAoIXRyaXZpYWwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBjbGVhcih0aGlzLmFycmF5KTtcblxuICAgIHRoaXMuc2F2ZWRBcnJheSA9IG51bGw7XG4gIH1cblxuICByZXNvbHZlKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVzID0gdGhpcy5nZXRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICBtZXRhdmFyaWFibGVzLmZvckVhY2goKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnMgPSB0aGlzLmZpbmRDb21wbGV4U3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkID0gY29tcGxleFN1YnN0aXR1dGlvbnMuZXZlcnlTdWJzdGl0dXRpb24oKGNvbXBsZXhTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgICAgbGV0IHJlc29sdmVkO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gY29tcGxleFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgICAgICAgICAgICAgcmVzb2x2ZWQgPSBzdWJzdGl0dXRpb24uaXNSZXNvbHZlZCgpO1xuXG4gICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb24ucmVzb2x2ZShzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXJlUmVzb2x2ZWQoKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIHJlc29sdmVkID0gbWV0YXZhcmlhYmxlcy5ldmVyeSgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9ucyA9IHRoaXMuZmluZENvbXBsZXhTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICAgICAgICAgIGNvbXBsZXhTdWJzdGl0dXRpb25zUmVzb2x2ZWQgPSBjb21wbGV4U3Vic3RpdHV0aW9ucy5ldmVyeVN1YnN0aXR1dGlvbigoY29tcGxleFN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkID0gY29tcGxleFN1YnN0aXR1dGlvbi5pc1Jlc29sdmVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gIH1cblxuICBzbmFwc2hvdCgpIHtcbiAgICB0aGlzLnNhdmVkQXJyYXkgPSBbXG4gICAgICAuLi50aGlzLmFycmF5XG4gICAgXTtcbiAgfVxuXG4gIHJvbGxiYWNrKHNwZWNpZmljQ29udGV4dCkge1xuICAgIGNvbnN0IGFycmF5ID0gW1xuICAgICAgLi4udGhpcy5hcnJheVxuICAgIF07XG5cbiAgICBsZWZ0RGlmZmVyZW5jZShhcnJheSwgdGhpcy5zYXZlZEFycmF5KTtcblxuICAgIGFycmF5LmZvckVhY2goKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hcnJheSA9IFtcbiAgICAgIC4uLnRoaXMuc2F2ZWRBcnJheVxuICAgIF07XG5cbiAgICB0aGlzLnNhdmVkQXJyYXkgPSBudWxsO1xuICB9XG5cbiAgY29udGludWUoKSB7XG4gICAgdGhpcy5zYXZlZEFycmF5ID0gbnVsbDtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgc3RyaW5nID0gRU1QVFlfU1RSSU5HO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zU3RyaW5nID0gdGhpcy5hcnJheS5yZWR1Y2UoKHN1YnN0aXR1dGlvbnNTdHJpbmcsIHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgc3Vic3RpdHV0aW9uc1N0cmluZyA9IChzdWJzdGl0dXRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1YnN0aXR1dGlvbnNTdHJpbmd9LCAke3N1YnN0aXR1dGlvblN0cmluZ31gO1xuXG4gICAgICAgIHJldHVybiBzdWJzdGl0dXRpb25zU3RyaW5nO1xuICAgICAgfSwgbnVsbCk7XG5cbiAgICAgIHN0cmluZyA9IHN1YnN0aXR1dGlvbnNTdHJpbmc7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbUFycmF5KGFycmF5KSB7XG4gICAgY29uc3Qgc2F2ZWRBcnJheSA9IFtdLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBuZXcgU3Vic3RpdHV0aW9ucyhhcnJheSwgc2F2ZWRBcnJheSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBhcnJheSA9IFtdLFxuICAgICAgICAgIHNhdmVkQXJyYXkgPSBudWxsLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBuZXcgU3Vic3RpdHV0aW9ucyhhcnJheSwgc2F2ZWRBcnJheSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbiAgfVxufVxuXG5mdW5jdGlvbiBsZWZ0RGlmZmVyZW5jZShhcnJheUEsIGFycmF5Qikge1xuICBmaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJTdWJzdGl0dXRpb25zIiwiZmluZCIsImFycmF5VXRpbGl0aWVzIiwiZmlyc3QiLCJjbGVhciIsInBydW5lIiwiZmlsdGVyIiwiY29tcHJlc3MiLCJjb3JyZWxhdGUiLCJhcnJheSIsInNhdmVkQXJyYXkiLCJnZXRBcnJheSIsImdldFNhdmVkQXJyYXkiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJnZXRGaXJzdFN1YnN0aXR1dGlvbiIsImZpcnN0U3Vic3RpdHV0aW9uIiwiZ2V0TWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXMiLCJmb3JFYWNoU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwicHVzaCIsIm1ldGF2YXJpYWJsZUEiLCJtZXRhdmFyaWFibGVCIiwibWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCIiwiaXNFcXVhbFRvIiwiZ2V0Tm9uVHJpdmlhbExlbmd0aCIsIm5vblRyaXZpYWxMZW5ndGgiLCJyZWR1Y2VTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25Ucml2aWFsIiwiaXNUcml2aWFsIiwibWFwU3Vic3RpdHV0aW9uIiwiY2FsbGJhY2siLCJtYXAiLCJmaW5kU3Vic3RpdHV0aW9uIiwic29tZVN1YnN0aXR1dGlvbiIsInNvbWUiLCJldmVyeVN1YnN0aXR1dGlvbiIsImV2ZXJ5IiwiaW5pdGlhbFZhbHVlIiwicmVkdWNlIiwiZm9yRWFjaCIsImZpbmRTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsImZyb21BcnJheSIsImZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlIiwidmFyaWFibGUiLCJzdWJzdGl0dXRpb25WYXJpYWJsZSIsImdldFZhcmlhYmxlIiwic3Vic3RpdHV0aW9uVmFyaWFibGVFcXVhbFRvVmFyaWFibGUiLCJmaW5kU3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlIiwic3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsImlzTWV0YXZhcmlhYmxlRXF1YWxUbyIsImZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZSIsInNpbXBsZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblNpbXBsZSIsImlzU2ltcGxlIiwic2ltcGxlU3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsImZpbmRDb21wbGV4U3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlIiwiY29tcGxleFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25Db21wbGV4IiwiaXNDb21wbGV4IiwiY29tcGxleFN1YnN0aXR1dGlvbiIsImNvbXBsZXhTdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlIiwiZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uQSIsInN1YnN0aXR1dGlvbkIiLCJzdWJzdGl0dXRpb25CU3Vic3RpdHV0aW9uRXF1YWxUb1N1YnN0aXR1dGlvbkEiLCJpc1N1YnN0aXR1dGlvbkVxdWFsVG8iLCJpc1N1YnN0aXR1dGlvblByZXNlbnRCeVZhcmlhYmxlIiwic3Vic3RpdHV0aW9uUHJlc2VudCIsImlzU2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlIiwic2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudCIsImlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwiYWRkU3Vic3RpdHV0aW9uIiwic3BlY2lmaWNDb250ZXh0Iiwic3Vic3RpdHV0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJyZW1vdmVTdWJzdGl0dXRpb24iLCJjb3JyZWxhdGVTdWJzdGl0dXRpb25zIiwiYXJyYXlBIiwiYXJyYXlCIiwiY29ycmVsYXRlcyIsInN1YnN0aXR1dGlvbkFJc0VRdWFsVG9TdWJzdGl0dXRpb25CIiwicmVtb3ZlVHJpdmlhbFN1YnN0aXR1dGlvbnMiLCJ0cml2aWFsIiwicmVzb2x2ZSIsImdlbmVyYWxDb250ZXh0IiwiY29tcGxleFN1YnN0aXR1dGlvbnNSZXNvbHZlZCIsInJlc29sdmVkIiwiaXNSZXNvbHZlZCIsImFyZVJlc29sdmVkIiwiY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkIiwic25hcHNob3QiLCJyb2xsYmFjayIsImxlZnREaWZmZXJlbmNlIiwiY29udGludWUiLCJhc1N0cmluZyIsInN0cmluZyIsIkVNUFRZX1NUUklORyIsInN1YnN0aXR1dGlvbnNTdHJpbmciLCJmcm9tTm90aGluZyIsImVsZW1lbnRBIiwiYXJyYXlCSW5jbHVkZXNFbGVtZW50QSIsImluY2x1ZGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVFxQkE7Ozt5QkFOVTt5QkFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQVFDLE9BQTJEQyx5QkFBYyxDQUF6RUQsTUFB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
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWJzdGl0dXRpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgZmluZCwgZmlyc3QsIGNsZWFyLCBwcnVuZSwgZmlsdGVyLCBjb21wcmVzcywgY29ycmVsYXRlIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3Vic3RpdHV0aW9ucyB7XG4gIGNvbnN0cnVjdG9yKGFycmF5LCBzYXZlZEFycmF5KSB7XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xuICAgIHRoaXMuc2F2ZWRBcnJheSA9IHNhdmVkQXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldFNhdmVkQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRBcnJheTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHsgcmV0dXJuIHRoaXMuYXJyYXkubGVuZ3RoOyB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcygpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVzID0gW107XG5cbiAgICB0aGlzLmZvckVhY2hTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gc3Vic3RpdHV0aW9uLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIG1ldGF2YXJpYWJsZXMucHVzaChtZXRhdmFyaWFibGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29tcHJlc3MobWV0YXZhcmlhYmxlcywgKG1ldGF2YXJpYWJsZUEsIG1ldGF2YXJpYWJsZUIpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZUFFcXVhbFRvTWV0YXZhcmlhYmxlQiA9IG1ldGF2YXJpYWJsZUIuaXNFcXVhbFRvKG1ldGF2YXJpYWJsZUEpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXROb25Ucml2aWFsTGVuZ3RoKCkge1xuICAgIGNvbnN0IG5vblRyaXZpYWxMZW5ndGggPSB0aGlzLnJlZHVjZVN1YnN0aXR1dGlvbigobm9uVHJpdmlhbExlbmd0aCwgc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25Ucml2aWFsID0gc3Vic3RpdHV0aW9uLmlzVHJpdmlhbCgpO1xuXG4gICAgICBpZiAoIXN1YnN0aXR1dGlvblRyaXZpYWwpIHtcbiAgICAgICAgbm9uVHJpdmlhbExlbmd0aCArPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9uVHJpdmlhbExlbmd0aDtcbiAgICB9LCAwKTtcblxuICAgIHJldHVybiBub25Ucml2aWFsTGVuZ3RoO1xuICB9XG5cbiAgZ2V0Rmlyc3RTdWJzdGl0dXRpb24oKSB7XG4gICAgbGV0IGZpcnN0U3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCk7XG5cbiAgICBpZiAobGVuZ3RoID4gMCkge1xuICAgICAgZmlyc3RTdWJzdGl0dXRpb24gPSBmaXJzdCh0aGlzLmFycmF5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3RTdWJzdGl0dXRpb247XG4gIH1cblxuICBtYXBTdWJzdGl0dXRpb24oY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuYXJyYXkubWFwKGNhbGxiYWNrKTsgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb24oY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuYXJyYXkuZmluZChjYWxsYmFjaykgfHwgbnVsbDsgfSAgLy8vXG5cbiAgc29tZVN1YnN0aXR1dGlvbihjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5zb21lKGNhbGxiYWNrKTsgfVxuXG4gIGV2ZXJ5U3Vic3RpdHV0aW9uKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LmV2ZXJ5KGNhbGxiYWNrKTsgfVxuXG4gIHJlZHVjZVN1YnN0aXR1dGlvbihjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7IHJldHVybiB0aGlzLmFycmF5LnJlZHVjZShjYWxsYmFjaywgaW5pdGlhbFZhbHVlKTsgfVxuXG4gIGZvckVhY2hTdWJzdGl0dXRpb24oY2FsbGJhY2spIHsgdGhpcy5hcnJheS5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25zKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYXJyYXkgPSBmaW5kKHRoaXMuYXJyYXksIGNhbGxiYWNrKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gU3Vic3RpdHV0aW9ucy5mcm9tQXJyYXkoYXJyYXkpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25WYXJpYWJsZSA9IHN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZSgpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uVmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uVmFyaWFibGVFcXVhbFRvVmFyaWFibGUgPSBzdWJzdGl0dXRpb25WYXJpYWJsZS5pc0VxdWFsVG8odmFyaWFibGUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25WYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gdGhpcy5maW5kU3Vic3RpdHV0aW9ucygoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlID0gc3Vic3RpdHV0aW9uLmlzTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IHNpbXBsZVN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25TaW1wbGUgPSBzdWJzdGl0dXRpb24uaXNTaW1wbGUoKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvblNpbXBsZSkge1xuICAgICAgICBjb25zdCBzaW1wbGVTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgICAgc2ltcGxlU3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSA9IHNpbXBsZVN1YnN0aXR1dGlvbi5pc01ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTtcblxuICAgICAgICBpZiAoc2ltcGxlU3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2ltcGxlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZENvbXBsZXhTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSB7XG4gICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnMgPSB0aGlzLmZpbmRTdWJzdGl0dXRpb25zKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkNvbXBsZXggPSBzdWJzdGl0dXRpb24uaXNDb21wbGV4KCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25Db21wbGV4KSB7XG4gICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSA9IGNvbXBsZXhTdWJzdGl0dXRpb24uaXNNZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7XG5cbiAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb21wbGV4U3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkEgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgc3Vic3RpdHV0aW9uID0gdGhpcy5maW5kU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHsgIC8vL1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSA9IHN1YnN0aXR1dGlvbi5pc01ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uQiA9IHN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgICAgIHN1YnN0aXR1dGlvbkJTdWJzdGl0dXRpb25FcXVhbFRvU3Vic3RpdHV0aW9uQSA9IHN1YnN0aXR1dGlvbkIuaXNTdWJzdGl0dXRpb25FcXVhbFRvU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbkEpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25CU3Vic3RpdHV0aW9uRXF1YWxUb1N1YnN0aXR1dGlvbkEpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5VmFyaWFibGUodmFyaWFibGUpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlKHZhcmlhYmxlKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25QcmVzZW50ID0gKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uUHJlc2VudDtcbiAgfVxuXG4gIGlzU2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IHNpbXBsZVN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgc2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudCA9IChzaW1wbGVTdWJzdGl0dXRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHNpbXBsZVN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc1N1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICAgIHN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTsgIC8vL1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uUHJlc2VudCA9IChzdWJzdGl0dXRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KSB7XG4gICAgdGhpcy5hcnJheS5wdXNoKHN1YnN0aXR1dGlvbik7XG5cbiAgICBjb25zdCBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRlZCB0aGUgJHtzdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbi5gKTtcbiAgfVxuXG4gIHJlbW92ZVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25BID0gc3Vic3RpdHV0aW9uOyAvLy9cblxuICAgIHBydW5lKHRoaXMuYXJyYXksIChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uQSAhPT0gc3Vic3RpdHV0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlICR7c3Vic3RpdHV0aW9uU3RyaW5nfSBzdWJzdGl0dXRpb24uYCk7XG4gIH1cblxuICBjb3JyZWxhdGVTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpIHtcbiAgICBjb25zdCBhcnJheSA9IHN1YnN0aXR1dGlvbnMuZ2V0QXJyYXkoKSxcbiAgICAgICAgICBhcnJheUEgPSBhcnJheSwgLy8vXG4gICAgICAgICAgYXJyYXlCID0gdGhpcy5hcnJheSwgIC8vL1xuICAgICAgICAgIGNvcnJlbGF0ZXMgPSBjb3JyZWxhdGUoYXJyYXlBLCBhcnJheUIsIChzdWJzdGl0dXRpb25BLCBzdWJzdGl0dXRpb25CKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25BSXNFUXVhbFRvU3Vic3RpdHV0aW9uQiA9IHN1YnN0aXR1dGlvbkEuaXNFcXVhbFRvKHN1YnN0aXR1dGlvbkIpO1xuXG4gICAgICAgICAgICBpZiAoc3Vic3RpdHV0aW9uQUlzRVF1YWxUb1N1YnN0aXR1dGlvbkIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gY29ycmVsYXRlcztcbiAgfVxuXG4gIHJlbW92ZVRyaXZpYWxTdWJzdGl0dXRpb25zKCkgIHtcbiAgICBmaWx0ZXIodGhpcy5hcnJheSwgKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3QgdHJpdmlhbCA9IHN1YnN0aXR1dGlvbi5pc1RyaXZpYWwoKTtcblxuICAgICAgaWYgKCF0cml2aWFsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgY2xlYXIodGhpcy5hcnJheSk7XG5cbiAgICB0aGlzLnNhdmVkQXJyYXkgPSBudWxsO1xuICB9XG5cbiAgcmVzb2x2ZShjb250ZXh0KSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlcygpO1xuXG4gICAgbWV0YXZhcmlhYmxlcy5mb3JFYWNoKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25zID0gdGhpcy5maW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpLFxuICAgICAgICAgICAgY29tcGxleFN1YnN0aXR1dGlvbnNSZXNvbHZlZCA9IGNvbXBsZXhTdWJzdGl0dXRpb25zLmV2ZXJ5U3Vic3RpdHV0aW9uKChjb21wbGV4U3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIGxldCByZXNvbHZlZDtcblxuICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gdGhpcywgLy8vXG4gICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbXBsZXhTdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICAgICAgICAgIHJlc29sdmVkID0gc3Vic3RpdHV0aW9uLmlzUmVzb2x2ZWQoKTtcblxuICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uLnJlc29sdmUoc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvbnNSZXNvbHZlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFyZVJlc29sdmVkKCkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgICByZXNvbHZlZCA9IG1ldGF2YXJpYWJsZXMuZXZlcnkoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnMgPSB0aGlzLmZpbmRDb21wbGV4U3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkID0gY29tcGxleFN1YnN0aXR1dGlvbnMuZXZlcnlTdWJzdGl0dXRpb24oKGNvbXBsZXhTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25SZXNvbHZlZCA9IGNvbXBsZXhTdWJzdGl0dXRpb24uaXNSZXNvbHZlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc29sdmVkO1xuICB9XG5cbiAgc25hcHNob3QoKSB7XG4gICAgdGhpcy5zYXZlZEFycmF5ID0gW1xuICAgICAgLi4udGhpcy5hcnJheVxuICAgIF07XG4gIH1cblxuICByb2xsYmFjayhjb250ZXh0KSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXG4gICAgICAuLi50aGlzLmFycmF5XG4gICAgXTtcblxuICAgIGxlZnREaWZmZXJlbmNlKGFycmF5LCB0aGlzLnNhdmVkQXJyYXkpO1xuXG4gICAgYXJyYXkuZm9yRWFjaCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hcnJheSA9IFtcbiAgICAgIC4uLnRoaXMuc2F2ZWRBcnJheVxuICAgIF07XG5cbiAgICB0aGlzLnNhdmVkQXJyYXkgPSBudWxsO1xuICB9XG5cbiAgY29udGludWUoKSB7XG4gICAgdGhpcy5zYXZlZEFycmF5ID0gbnVsbDtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgc3RyaW5nID0gRU1QVFlfU1RSSU5HO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zU3RyaW5nID0gdGhpcy5hcnJheS5yZWR1Y2UoKHN1YnN0aXR1dGlvbnNTdHJpbmcsIHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgc3Vic3RpdHV0aW9uc1N0cmluZyA9IChzdWJzdGl0dXRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1YnN0aXR1dGlvbnNTdHJpbmd9LCAke3N1YnN0aXR1dGlvblN0cmluZ31gO1xuXG4gICAgICAgIHJldHVybiBzdWJzdGl0dXRpb25zU3RyaW5nO1xuICAgICAgfSwgbnVsbCk7XG5cbiAgICAgIHN0cmluZyA9IHN1YnN0aXR1dGlvbnNTdHJpbmc7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbUFycmF5KGFycmF5KSB7XG4gICAgY29uc3Qgc2F2ZWRBcnJheSA9IFtdLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBuZXcgU3Vic3RpdHV0aW9ucyhhcnJheSwgc2F2ZWRBcnJheSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBhcnJheSA9IFtdLFxuICAgICAgICAgIHNhdmVkQXJyYXkgPSBudWxsLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBuZXcgU3Vic3RpdHV0aW9ucyhhcnJheSwgc2F2ZWRBcnJheSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbiAgfVxufVxuXG5mdW5jdGlvbiBsZWZ0RGlmZmVyZW5jZShhcnJheUEsIGFycmF5Qikge1xuICBmaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJTdWJzdGl0dXRpb25zIiwiZmluZCIsImFycmF5VXRpbGl0aWVzIiwiZmlyc3QiLCJjbGVhciIsInBydW5lIiwiZmlsdGVyIiwiY29tcHJlc3MiLCJjb3JyZWxhdGUiLCJhcnJheSIsInNhdmVkQXJyYXkiLCJnZXRBcnJheSIsImdldFNhdmVkQXJyYXkiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImZvckVhY2hTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGUiLCJnZXRNZXRhdmFyaWFibGUiLCJwdXNoIiwibWV0YXZhcmlhYmxlQSIsIm1ldGF2YXJpYWJsZUIiLCJtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIiLCJpc0VxdWFsVG8iLCJnZXROb25Ucml2aWFsTGVuZ3RoIiwibm9uVHJpdmlhbExlbmd0aCIsInJlZHVjZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblRyaXZpYWwiLCJpc1RyaXZpYWwiLCJnZXRGaXJzdFN1YnN0aXR1dGlvbiIsImZpcnN0U3Vic3RpdHV0aW9uIiwibWFwU3Vic3RpdHV0aW9uIiwiY2FsbGJhY2siLCJtYXAiLCJmaW5kU3Vic3RpdHV0aW9uIiwic29tZVN1YnN0aXR1dGlvbiIsInNvbWUiLCJldmVyeVN1YnN0aXR1dGlvbiIsImV2ZXJ5IiwiaW5pdGlhbFZhbHVlIiwicmVkdWNlIiwiZm9yRWFjaCIsImZpbmRTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsImZyb21BcnJheSIsImZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlIiwidmFyaWFibGUiLCJzdWJzdGl0dXRpb25WYXJpYWJsZSIsImdldFZhcmlhYmxlIiwic3Vic3RpdHV0aW9uVmFyaWFibGVFcXVhbFRvVmFyaWFibGUiLCJmaW5kU3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlIiwic3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsImlzTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsImZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZSIsInNpbXBsZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblNpbXBsZSIsImlzU2ltcGxlIiwic2ltcGxlU3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsImZpbmRDb21wbGV4U3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlIiwiY29tcGxleFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25Db21wbGV4IiwiaXNDb21wbGV4IiwiY29tcGxleFN1YnN0aXR1dGlvbiIsImNvbXBsZXhTdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlIiwiZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uQSIsInN1YnN0aXR1dGlvbkIiLCJzdWJzdGl0dXRpb25CU3Vic3RpdHV0aW9uRXF1YWxUb1N1YnN0aXR1dGlvbkEiLCJpc1N1YnN0aXR1dGlvbkVxdWFsVG9TdWJzdGl0dXRpb24iLCJpc1N1YnN0aXR1dGlvblByZXNlbnRCeVZhcmlhYmxlIiwic3Vic3RpdHV0aW9uUHJlc2VudCIsImlzU2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlIiwic2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudCIsImlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwiYWRkU3Vic3RpdHV0aW9uIiwiY29udGV4dCIsInN1YnN0aXR1dGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwicmVtb3ZlU3Vic3RpdHV0aW9uIiwiY29ycmVsYXRlU3Vic3RpdHV0aW9ucyIsImFycmF5QSIsImFycmF5QiIsImNvcnJlbGF0ZXMiLCJzdWJzdGl0dXRpb25BSXNFUXVhbFRvU3Vic3RpdHV0aW9uQiIsInJlbW92ZVRyaXZpYWxTdWJzdGl0dXRpb25zIiwidHJpdmlhbCIsInJlc29sdmUiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkIiwicmVzb2x2ZWQiLCJpc1Jlc29sdmVkIiwiYXJlUmVzb2x2ZWQiLCJjb21wbGV4U3Vic3RpdHV0aW9uUmVzb2x2ZWQiLCJzbmFwc2hvdCIsInJvbGxiYWNrIiwibGVmdERpZmZlcmVuY2UiLCJjb250aW51ZSIsImFzU3RyaW5nIiwic3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwic3Vic3RpdHV0aW9uc1N0cmluZyIsImZyb21Ob3RoaW5nIiwiZWxlbWVudEEiLCJhcnJheUJJbmNsdWRlc0VsZW1lbnRBIiwiaW5jbHVkZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBUXFCQTs7O3lCQU5VO3lCQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFN0IsSUFBUUMsT0FBMkRDLHlCQUFjLENBQXpFRCxNQUFNRSxRQUFxREQseUJBQWMsQ0FBbkVDLE9BQU9DLFFBQThDRix5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
@@ -8,9 +8,9 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- var _ontology = /*#__PURE__*/ _interop_require_default(require("../ontology"));
12
11
  var _unifier = /*#__PURE__*/ _interop_require_default(require("../unifier"));
13
12
  var _query = require("../utilities/query");
13
+ var _variable = require("../utilities/variable");
14
14
  function _assert_this_initialized(self) {
15
15
  if (self === void 0) {
16
16
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -127,14 +127,21 @@ _define_property(IntrinsicLevelUnifier, "maps", [
127
127
  generalNodeQuery: termVariableNodeQuery,
128
128
  specificNodeQuery: termNodeQuery,
129
129
  unify: function(generalTermVariableNode, specificTermNode, substitutions, generalContext, specificContext) {
130
- var termUnifies;
131
- var Term = _ontology.default.Term, Variable = _ontology.default.Variable, termNode = specificTermNode, variableNode = generalTermVariableNode; ///
130
+ var termUnifies = false;
131
+ var termNode = specificTermNode, variableNode = generalTermVariableNode, variableIdentifier = (0, _variable.variableIdentifierFromVariableNode)(variableNode);
132
132
  var context;
133
133
  context = generalContext; ///
134
- var variable = Variable.fromVariableNode(variableNode, context);
134
+ var variable = context.findVariableByVariableIdentifier(variableIdentifier);
135
135
  context = specificContext; ///
136
- var term = Term.fromTermNode(termNode, context);
137
- termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
136
+ var term = context.findTermByTermNode(termNode);
137
+ if (term !== null) {
138
+ termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
139
+ } else {
140
+ var termVariaibleIdentifer = (0, _variable.termVariableIdentifierFromTermNode)(termNode), termVariable = context.findVariableByVariableIdentifier(termVariaibleIdentifer), termVariableUnifies = variable.unifyTermVariable(termVariable, substitutions, generalContext, specificContext);
141
+ if (termVariableUnifies) {
142
+ termUnifies = true;
143
+ }
144
+ }
138
145
  return termUnifies;
139
146
  }
140
147
  }
@@ -142,4 +149,4 @@ _define_property(IntrinsicLevelUnifier, "maps", [
142
149
  var intrinsicLevelUnifier = new IntrinsicLevelUnifier();
143
150
  var _default = intrinsicLevelUnifier;
144
151
 
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL2ludHJpbnNpY0xldmVsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgb250b2xvZ3kgZnJvbSBcIi4uL29udG9sb2d5XCI7XG5pbXBvcnQgVW5pZmllciBmcm9tIFwiLi4vdW5pZmllclwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKSxcbiAgICAgIHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuY2xhc3MgSW50cmluc2ljTGV2ZWxVbmlmaWVyIGV4dGVuZHMgVW5pZmllciB7XG4gIHVuaWZ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHVuaWZpZXNBdEludHJpbnNpY0xldmVsO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlVW5pZmllcyA9IHRoaXMudW5pZnlOb25UZXJtaW5hbE5vZGUoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgdW5pZmllc0F0SW50cmluc2ljTGV2ZWwgPSBub25UZXJtaW5hbE5vZGVVbmlmaWVzOyAvLy9cblxuICAgIHJldHVybiB1bmlmaWVzQXRJbnRyaW5zaWNMZXZlbDtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgdW5pZnk6IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdGVybVVuaWZpZXM7XG5cbiAgICAgICAgY29uc3QgeyBUZXJtLCBWYXJpYWJsZSB9ID0gb250b2xvZ3ksXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHRlcm1VbmlmaWVzID0gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0ZXJtVW5pZmllcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IGludHJpbnNpY0xldmVsVW5pZmllciA9IG5ldyBJbnRyaW5zaWNMZXZlbFVuaWZpZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgaW50cmluc2ljTGV2ZWxVbmlmaWVyO1xuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0ZXJtVmFyaWFibGVOb2RlUXVlcnkiLCJJbnRyaW5zaWNMZXZlbFVuaWZpZXIiLCJ1bmlmeSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsInN1YnN0aXR1dGlvbnMiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNBdEludHJpbnNpY0xldmVsIiwibm9uVGVybWluYWxOb2RlVW5pZmllcyIsInVuaWZ5Tm9uVGVybWluYWxOb2RlIiwiVW5pZmllciIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwic3BlY2lmaWNOb2RlUXVlcnkiLCJnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSIsInNwZWNpZmljVGVybU5vZGUiLCJ0ZXJtVW5pZmllcyIsIlRlcm0iLCJvbnRvbG9neSIsIlZhcmlhYmxlIiwidGVybU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJjb250ZXh0IiwidmFyaWFibGUiLCJmcm9tVmFyaWFibGVOb2RlIiwidGVybSIsImZyb21UZXJtTm9kZSIsInVuaWZ5VGVybSIsImludHJpbnNpY0xldmVsVW5pZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBb0RBOzs7ZUFBQTs7OytEQWxEcUI7OERBQ0Q7cUJBRU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyxVQUMxQkMsd0JBQXdCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXhDLElBQUEsQUFBTUUsc0NBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO1FBQU4sT0FBQSxrQkFBTUE7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU1DLHNCQUFzQixFQUFFQyx1QkFBdUIsRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLGVBQWU7Z0JBQ25HLElBQUlDO2dCQUVKLElBQU1DLHlCQUF5QixJQUFJLENBQUNDLG9CQUFvQixDQUFDUCx3QkFBd0JDLHlCQUF5QkMsZUFBZUMsZ0JBQWdCQztnQkFFeklDLDBCQUEwQkMsd0JBQXdCLEdBQUc7Z0JBRXJELE9BQU9EO1lBQ1Q7OztXQVRJUDtFQUE4QlUsZ0JBQU87QUFXekMsaUJBWElWLHVCQVdHVyxRQUFPO0lBQ1o7UUFDRUMsa0JBQWtCYjtRQUNsQmMsbUJBQW1CaEI7UUFDbkJJLE9BQU8sU0FBQ2EseUJBQXlCQyxrQkFBa0JYLGVBQWVDLGdCQUFnQkM7WUFDaEYsSUFBSVU7WUFFSixJQUFRQyxPQUFtQkMsaUJBQVEsQ0FBM0JELE1BQU1FLFdBQWFELGlCQUFRLENBQXJCQyxVQUNSQyxXQUFXTCxrQkFDWE0sZUFBZVAseUJBQXlCLEdBQUc7WUFFakQsSUFBSVE7WUFFSkEsVUFBVWpCLGdCQUFnQixHQUFHO1lBRTdCLElBQU1rQixXQUFXSixTQUFTSyxnQkFBZ0IsQ0FBQ0gsY0FBY0M7WUFFekRBLFVBQVVoQixpQkFBa0IsR0FBRztZQUUvQixJQUFNbUIsT0FBT1IsS0FBS1MsWUFBWSxDQUFDTixVQUFVRTtZQUV6Q04sY0FBY08sU0FBU0ksU0FBUyxDQUFDRixNQUFNckIsZUFBZUMsZ0JBQWdCQztZQUV0RSxPQUFPVTtRQUNUO0lBQ0Y7Q0FDRDtBQUdILElBQU1ZLHdCQUF3QixJQUFJNUI7SUFFbEMsV0FBZTRCIn0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL2ludHJpbnNpY0xldmVsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVW5pZmllciBmcm9tIFwiLi4vdW5pZmllclwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyB2YXJpYWJsZUlkZW50aWZpZXJGcm9tVmFyaWFibGVOb2RlLCB0ZXJtVmFyaWFibGVJZGVudGlmaWVyRnJvbVRlcm1Ob2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy92YXJpYWJsZVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIiksXG4gICAgICB0ZXJtVmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmNsYXNzIEludHJpbnNpY0xldmVsVW5pZmllciBleHRlbmRzIFVuaWZpZXIge1xuICB1bmlmeShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCB1bmlmaWVzQXRJbnRyaW5zaWNMZXZlbDtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZVVuaWZpZXMgPSB0aGlzLnVuaWZ5Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIHVuaWZpZXNBdEludHJpbnNpY0xldmVsID0gbm9uVGVybWluYWxOb2RlVW5pZmllczsgLy8vXG5cbiAgICByZXR1cm4gdW5pZmllc0F0SW50cmluc2ljTGV2ZWw7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0ZXJtVmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZUlkZW50aWZpZXJGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRlcm1VbmlmaWVzID0gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRlcm1WYXJpYWlibGVJZGVudGlmZXIgPSB0ZXJtVmFyaWFibGVJZGVudGlmaWVyRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKSxcbiAgICAgICAgICAgICAgICB0ZXJtVmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHRlcm1WYXJpYWlibGVJZGVudGlmZXIpLFxuICAgICAgICAgICAgICAgIHRlcm1WYXJpYWJsZVVuaWZpZXMgPSB2YXJpYWJsZS51bmlmeVRlcm1WYXJpYWJsZSh0ZXJtVmFyaWFibGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHRlcm1WYXJpYWJsZVVuaWZpZXMpIHtcbiAgICAgICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCBpbnRyaW5zaWNMZXZlbFVuaWZpZXIgPSBuZXcgSW50cmluc2ljTGV2ZWxVbmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGludHJpbnNpY0xldmVsVW5pZmllcjtcbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidGVybVZhcmlhYmxlTm9kZVF1ZXJ5IiwiSW50cmluc2ljTGV2ZWxVbmlmaWVyIiwidW5pZnkiLCJnZW5lcmFsTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGUiLCJzdWJzdGl0dXRpb25zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVzQXRJbnRyaW5zaWNMZXZlbCIsIm5vblRlcm1pbmFsTm9kZVVuaWZpZXMiLCJ1bmlmeU5vblRlcm1pbmFsTm9kZSIsIlVuaWZpZXIiLCJtYXBzIiwiZ2VuZXJhbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwidGVybVVuaWZpZXMiLCJ0ZXJtTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllckZyb21WYXJpYWJsZU5vZGUiLCJjb250ZXh0IiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInRlcm0iLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ1bmlmeVRlcm0iLCJ0ZXJtVmFyaWFpYmxlSWRlbnRpZmVyIiwidGVybVZhcmlhYmxlSWRlbnRpZmllckZyb21UZXJtTm9kZSIsInRlcm1WYXJpYWJsZSIsInRlcm1WYXJpYWJsZVVuaWZpZXMiLCJ1bmlmeVRlcm1WYXJpYWJsZSIsImludHJpbnNpY0xldmVsVW5pZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBOERBOzs7ZUFBQTs7OzhEQTVEb0I7cUJBRU07d0JBQzZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsVUFDMUJDLHdCQUF3QkQsSUFBQUEsZ0JBQVMsRUFBQztBQUV4QyxJQUFBLEFBQU1FLHNDQUFOO2NBQU1BO2FBQUFBO2dDQUFBQTtRQUFOLE9BQUEsa0JBQU1BOztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxNQUFNQyxzQkFBc0IsRUFBRUMsdUJBQXVCLEVBQUVDLGFBQWEsRUFBRUMsY0FBYyxFQUFFQyxlQUFlO2dCQUNuRyxJQUFJQztnQkFFSixJQUFNQyx5QkFBeUIsSUFBSSxDQUFDQyxvQkFBb0IsQ0FBQ1Asd0JBQXdCQyx5QkFBeUJDLGVBQWVDLGdCQUFnQkM7Z0JBRXpJQywwQkFBMEJDLHdCQUF3QixHQUFHO2dCQUVyRCxPQUFPRDtZQUNUOzs7V0FUSVA7RUFBOEJVLGdCQUFPO0FBV3pDLGlCQVhJVix1QkFXR1csUUFBTztJQUNaO1FBQ0VDLGtCQUFrQmI7UUFDbEJjLG1CQUFtQmhCO1FBQ25CSSxPQUFPLFNBQUNhLHlCQUF5QkMsa0JBQWtCWCxlQUFlQyxnQkFBZ0JDO1lBQ2hGLElBQUlVLGNBQWM7WUFFbEIsSUFBTUMsV0FBV0Ysa0JBQ1hHLGVBQWVKLHlCQUNmSyxxQkFBcUJDLElBQUFBLDRDQUFrQyxFQUFDRjtZQUU5RCxJQUFJRztZQUVKQSxVQUFVaEIsZ0JBQWdCLEdBQUc7WUFFN0IsSUFBTWlCLFdBQVdELFFBQVFFLGdDQUFnQyxDQUFDSjtZQUUxREUsVUFBVWYsaUJBQWtCLEdBQUc7WUFFL0IsSUFBTWtCLE9BQU9ILFFBQVFJLGtCQUFrQixDQUFDUjtZQUV4QyxJQUFJTyxTQUFTLE1BQU07Z0JBQ2pCUixjQUFjTSxTQUFTSSxTQUFTLENBQUNGLE1BQU1wQixlQUFlQyxnQkFBZ0JDO1lBQ3hFLE9BQU87Z0JBQ0wsSUFBTXFCLHlCQUF5QkMsSUFBQUEsNENBQWtDLEVBQUNYLFdBQzVEWSxlQUFlUixRQUFRRSxnQ0FBZ0MsQ0FBQ0kseUJBQ3hERyxzQkFBc0JSLFNBQVNTLGlCQUFpQixDQUFDRixjQUFjekIsZUFBZUMsZ0JBQWdCQztnQkFFcEcsSUFBSXdCLHFCQUFxQjtvQkFDdkJkLGNBQWM7Z0JBQ2hCO1lBQ0Y7WUFFQSxPQUFPQTtRQUNUO0lBQ0Y7Q0FDRDtBQUdILElBQU1nQix3QkFBd0IsSUFBSWhDO0lBRWxDLFdBQWVnQyJ9
@@ -11,7 +11,8 @@ Object.defineProperty(exports, "default", {
11
11
  var _ontology = /*#__PURE__*/ _interop_require_default(require("../ontology"));
12
12
  var _unifier = /*#__PURE__*/ _interop_require_default(require("../unifier"));
13
13
  var _query = require("../utilities/query");
14
- var _metavariable = /*#__PURE__*/ _interop_require_default(require("./metavariable"));
14
+ var _metavariable = require("../utilities/metavariable");
15
+ var _variable = require("../utilities/variable");
15
16
  function _assert_this_initialized(self) {
16
17
  if (self === void 0) {
17
18
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -129,16 +130,16 @@ _define_property(MetaLevelUnifier, "maps", [
129
130
  specificNodeQuery: statementNodeQuery,
130
131
  unify: function(generalStatementMetavariableNode, specificStatementNode, substitutions, generalContext, specificContext) {
131
132
  var statementUnifies;
132
- var Metavariable = _ontology.default.Metavariable, Statement = _ontology.default.Statement; ///
133
- var context, statementNode;
133
+ var context, statement, statementNode;
134
134
  context = generalContext; ///
135
- var metavariableNode = generalStatementMetavariableNode, metavariable = Metavariable.fromMetavariableNode(metavariableNode, context);
135
+ var metavariableNode = generalStatementMetavariableNode, metavariableName = (0, _metavariable.metavariableNameFromMetavariableNode)(metavariableNode), metavariable = context.findMetavariableByMetavariableName(metavariableName);
136
136
  var metavariableNodeParentNode = metavariableNode.getParentNode();
137
137
  statementNode = metavariableNodeParentNode; ///
138
- var TermSubstitution = _ontology.default.TermSubstitution, FrameSubstitution = _ontology.default.FrameSubstitution, frameSubstitution = FrameSubstitution.fromStatementNode(statementNode, context), termSubstitution = TermSubstitution.fromStatementNode(statementNode, context), substitution = frameSubstitution || termSubstitution;
138
+ statement = context.findStatementByStatementNode(statementNode);
139
+ var TermSubstitution = _ontology.default.TermSubstitution, FrameSubstitution = _ontology.default.FrameSubstitution, frameSubstitution = FrameSubstitution.fromStatement(statement, context), termSubstitution = TermSubstitution.fromStatement(statement, context), substitution = frameSubstitution || termSubstitution;
139
140
  context = specificContext; ///
140
141
  statementNode = specificStatementNode; ///
141
- var statement = Statement.fromStatementNode(statementNode, context);
142
+ statement = context.findStatementByStatementNode(statementNode);
142
143
  statementUnifies = metavariable.unifyStatement(statement, substitution, substitutions, generalContext, specificContext);
143
144
  return statementUnifies;
144
145
  }
@@ -148,12 +149,12 @@ _define_property(MetaLevelUnifier, "maps", [
148
149
  specificNodeQuery: frameNodeQuery,
149
150
  unify: function(generalFrameDeclarationMetavariableNode, specificFrameNode, substitutions, generalContext, specificContext) {
150
151
  var frameUnifies;
151
- var Frame = _ontology.default.Frame, Metavariable = _ontology.default.Metavariable, frameNode = specificFrameNode, metavariableNode = generalFrameDeclarationMetavariableNode; ///
152
+ var frameNode = specificFrameNode, metavariableNode = generalFrameDeclarationMetavariableNode, metavariableName = (0, _metavariable.metavariableNameFromMetavariableNode)(metavariableNode);
152
153
  var context;
153
154
  context = generalContext; ///
154
- var metavariable = Metavariable.fromMetavariableNode(metavariableNode, context);
155
+ var metavariable = context.findMetavariableByMetavariableName(metavariableName);
155
156
  context = specificContext; ///
156
- var frame = Frame.fromFrameNode(frameNode, context);
157
+ var frame = context.findFrameByFrameNode(frameNode);
157
158
  frameUnifies = metavariable.unifyFrame(frame, substitutions, generalContext, specificContext);
158
159
  return frameUnifies;
159
160
  }
@@ -162,14 +163,21 @@ _define_property(MetaLevelUnifier, "maps", [
162
163
  generalNodeQuery: termVariableNodeQuery,
163
164
  specificNodeQuery: termNodeQuery,
164
165
  unify: function(generalTermVariableNode, specificTermNode, substitutions, generalContext, specificContext) {
165
- var termUnifies;
166
- var Term = _ontology.default.Term, Variable = _ontology.default.Variable, termNode = specificTermNode, variableNode = generalTermVariableNode; ///
166
+ var termUnifies = false;
167
+ var termNode = specificTermNode, variableNode = generalTermVariableNode, variableIdentifier = (0, _variable.variableIdentifierFromVariableNode)(variableNode);
167
168
  var context;
168
169
  context = generalContext; ///
169
- var variable = Variable.fromVariableNode(variableNode, context);
170
+ var variable = context.findVariableByVariableIdentifier(variableIdentifier);
170
171
  context = specificContext; ///
171
- var term = Term.fromTermNode(termNode, context);
172
- termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
172
+ var term = context.findTermByTermNode(termNode);
173
+ if (term !== null) {
174
+ termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
175
+ } else {
176
+ var termVariaibleIdentifer = (0, _variable.termVariableIdentifierFromTermNode)(termNode), termVariable = context.findVariableByVariableIdentifier(termVariaibleIdentifer), termVariableUnifies = variable.unifyTermVariable(termVariable, substitutions, generalContext, specificContext);
177
+ if (termVariableUnifies) {
178
+ termUnifies = true;
179
+ }
180
+ }
173
181
  return termUnifies;
174
182
  }
175
183
  },
@@ -178,11 +186,11 @@ _define_property(MetaLevelUnifier, "maps", [
178
186
  specificNodeQuery: declarationMetavariableNodeQuery,
179
187
  unify: function(generalDeclarationMetavariableNode, specificDeclarationMetavariableNode, substitutions, generalContext, specificContext) {
180
188
  var referenceUnifies;
181
- var Metavariable = _ontology.default.Metavariable, Reference = _ontology.default.Reference;
189
+ var Reference = _ontology.default.Reference;
182
190
  var context, metavariableNode;
183
191
  context = generalContext; ///
184
192
  metavariableNode = generalDeclarationMetavariableNode; ///
185
- var metavariable = Metavariable.fromMetavariableNode(metavariableNode, context); ///
193
+ var metavariableName = (0, _metavariable.metavariableNameFromMetavariableNode)(metavariableNode), metavariable = context.findMetavariableByMetavariableName(metavariableName);
186
194
  context = specificContext; ///
187
195
  metavariableNode = specificDeclarationMetavariableNode; ///
188
196
  var reference = Reference.fromMetavariableNode(metavariableNode, context);
@@ -194,4 +202,4 @@ _define_property(MetaLevelUnifier, "maps", [
194
202
  var metaLevelUnifier = new MetaLevelUnifier();
195
203
  var _default = metaLevelUnifier;
196
204
 
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL21ldGFMZXZlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG9udG9sb2d5IGZyb20gXCIuLi9vbnRvbG9neVwiO1xuaW1wb3J0IFVuaWZpZXIgZnJvbSBcIi4uL3VuaWZpZXJcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IE1ldGF2YXJpYWJsZSBmcm9tIFwiLi9tZXRhdmFyaWFibGVcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgZnJhbWVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgdGVybVZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpLFxuICAgICAgc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9tZXRhdmFyaWFibGUhXCIpLFxuICAgICAgZGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZGVjbGFyYXRpb24vbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIGZyYW1lRGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWUvZGVjbGFyYXRpb24hL21ldGF2YXJpYWJsZSFcIik7XG5cbmNsYXNzIE1ldGFMZXZlbFVuaWZpZXIgZXh0ZW5kcyBVbmlmaWVyIHtcbiAgdW5pZnkoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgdW5pZmllc0F0TWV0YUxldmVsO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlVW5pZmllcyA9IHRoaXMudW5pZnlOb25UZXJtaW5hbE5vZGUoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgdW5pZmllc0F0TWV0YUxldmVsID0gbm9uVGVybWluYWxOb2RlVW5pZmllczsgLy8vXG5cbiAgICByZXR1cm4gdW5pZmllc0F0TWV0YUxldmVsO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHN0YXRlbWVudE5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAoZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3RhdGVtZW50VW5pZmllcztcblxuICAgICAgICBjb25zdCB7IE1ldGF2YXJpYWJsZSwgU3RhdGVtZW50IH0gPSBvbnRvbG9neTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICBzdGF0ZW1lbnROb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlUGFyZW50Tm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0UGFyZW50Tm9kZSgpO1xuXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUGFyZW50Tm9kZTsgLy8vXG5cbiAgICAgICAgY29uc3QgeyBUZXJtU3Vic3RpdHV0aW9uLCBGcmFtZVN1YnN0aXR1dGlvbiB9ID0gb250b2xvZ3ksXG4gICAgICAgICAgICAgIGZyYW1lU3Vic3RpdHV0aW9uID0gRnJhbWVTdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSAoZnJhbWVTdWJzdGl0dXRpb24gfHwgdGVybVN1YnN0aXR1dGlvbik7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IGZyYW1lRGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogZnJhbWVOb2RlUXVlcnksXG4gICAgICB1bmlmeTogKGdlbmVyYWxGcmFtZURlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IGZyYW1lVW5pZmllcztcblxuICAgICAgICBjb25zdCB7IEZyYW1lLCBNZXRhdmFyaWFibGUgfSA9IG9udG9sb2d5LFxuICAgICAgICAgICAgICBmcmFtZU5vZGUgPSBzcGVjaWZpY0ZyYW1lTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsRnJhbWVEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGU7ICAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgZnJhbWUgPSBGcmFtZS5mcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgZnJhbWVVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5RnJhbWUoZnJhbWUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBmcmFtZVVuaWZpZXM7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0ZXJtVmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgICAgIGNvbnN0IHsgVGVybSwgVmFyaWFibGUgfSA9IG9udG9sb2d5LFxuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtVW5pZmllcyA9IHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBkZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBkZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAoZ2VuZXJhbERlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZVVuaWZpZXM7XG5cbiAgICAgICAgY29uc3QgeyBNZXRhdmFyaWFibGUsIFJlZmVyZW5jZSB9ID0gb250b2xvZ3k7XG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGU7ICAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgY29udGV4dCk7ICAvLy9cblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHNwZWNpZmljRGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmVmZXJlbmNlVW5pZmllcyA9IG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiByZWZlcmVuY2VVbmlmaWVzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgbWV0YUxldmVsVW5pZmllciA9IG5ldyBNZXRhTGV2ZWxVbmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGFMZXZlbFVuaWZpZXI7XG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImZyYW1lTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwidGVybVZhcmlhYmxlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiZGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJmcmFtZURlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiTWV0YUxldmVsVW5pZmllciIsInVuaWZ5IiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlIiwic3Vic3RpdHV0aW9ucyIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidW5pZmllc0F0TWV0YUxldmVsIiwibm9uVGVybWluYWxOb2RlVW5pZmllcyIsInVuaWZ5Tm9uVGVybWluYWxOb2RlIiwiVW5pZmllciIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwic3BlY2lmaWNOb2RlUXVlcnkiLCJnZW5lcmFsU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFVuaWZpZXMiLCJNZXRhdmFyaWFibGUiLCJvbnRvbG9neSIsIlN0YXRlbWVudCIsImNvbnRleHQiLCJzdGF0ZW1lbnROb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZSIsImZyb21NZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZVBhcmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiVGVybVN1YnN0aXR1dGlvbiIsIkZyYW1lU3Vic3RpdHV0aW9uIiwiZnJhbWVTdWJzdGl0dXRpb24iLCJmcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1TdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsImdlbmVyYWxGcmFtZURlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljRnJhbWVOb2RlIiwiZnJhbWVVbmlmaWVzIiwiRnJhbWUiLCJmcmFtZU5vZGUiLCJmcmFtZSIsImZyb21GcmFtZU5vZGUiLCJ1bmlmeUZyYW1lIiwiZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwidGVybVVuaWZpZXMiLCJUZXJtIiwiVmFyaWFibGUiLCJ0ZXJtTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlIiwiZnJvbVZhcmlhYmxlTm9kZSIsInRlcm0iLCJmcm9tVGVybU5vZGUiLCJ1bmlmeVRlcm0iLCJnZW5lcmFsRGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VVbmlmaWVzIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlIiwidW5pZnlSZWZlcmVuY2UiLCJtZXRhTGV2ZWxVbmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFtSkE7OztlQUFBOzs7K0RBakpxQjs4REFDRDtxQkFFTTttRUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekIsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLFVBQzFCQyxpQkFBaUJELElBQUFBLGdCQUFTLEVBQUMsV0FDM0JFLHFCQUFxQkYsSUFBQUEsZ0JBQVMsRUFBQyxlQUMvQkcsd0JBQXdCSCxJQUFBQSxnQkFBUyxFQUFDLG9CQUNsQ0ksaUNBQWlDSixJQUFBQSxnQkFBUyxFQUFDLDZCQUMzQ0ssbUNBQW1DTCxJQUFBQSxnQkFBUyxFQUFDLCtCQUM3Q00sd0NBQXdDTixJQUFBQSxnQkFBUyxFQUFDO0FBRXhELElBQUEsQUFBTU8saUNBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO1FBQU4sT0FBQSxrQkFBTUE7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU1DLHNCQUFzQixFQUFFQyx1QkFBdUIsRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLGVBQWU7Z0JBQ25HLElBQUlDO2dCQUVKLElBQU1DLHlCQUF5QixJQUFJLENBQUNDLG9CQUFvQixDQUFDUCx3QkFBd0JDLHlCQUF5QkMsZUFBZUMsZ0JBQWdCQztnQkFFeklDLHFCQUFxQkMsd0JBQXdCLEdBQUc7Z0JBRWhELE9BQU9EO1lBQ1Q7OztXQVRJUDtFQUF5QlUsZ0JBQU87QUFXcEMsaUJBWElWLGtCQVdHVyxRQUFPO0lBQ1o7UUFDRUMsa0JBQWtCZjtRQUNsQmdCLG1CQUFtQmxCO1FBQ25CTSxPQUFPLFNBQUNhLGtDQUFrQ0MsdUJBQXVCWCxlQUFlQyxnQkFBZ0JDO1lBQzlGLElBQUlVO1lBRUosSUFBUUMsZUFBNEJDLGlCQUFRLENBQXBDRCxjQUFjRSxZQUFjRCxpQkFBUSxDQUF0QkMsV0FBd0IsR0FBRztZQUVqRCxJQUFJQyxTQUNBQztZQUVKRCxVQUFVZixnQkFBZ0IsR0FBRztZQUU3QixJQUFNaUIsbUJBQW1CUixrQ0FDbkJTLGVBQWVOLGFBQWFPLG9CQUFvQixDQUFDRixrQkFBa0JGO1lBRXpFLElBQU1LLDZCQUE2QkgsaUJBQWlCSSxhQUFhO1lBRWpFTCxnQkFBZ0JJLDRCQUE0QixHQUFHO1lBRS9DLElBQVFFLG1CQUF3Q1QsaUJBQVEsQ0FBaERTLGtCQUFrQkMsb0JBQXNCVixpQkFBUSxDQUE5QlUsbUJBQ3BCQyxvQkFBb0JELGtCQUFrQkUsaUJBQWlCLENBQUNULGVBQWVELFVBQ3ZFVyxtQkFBbUJKLGlCQUFpQkcsaUJBQWlCLENBQUNULGVBQWVELFVBQ3JFWSxlQUFnQkgscUJBQXFCRTtZQUUzQ1gsVUFBVWQsaUJBQWlCLEdBQUc7WUFFOUJlLGdCQUFnQk4sdUJBQXdCLEdBQUc7WUFFM0MsSUFBTWtCLFlBQVlkLFVBQVVXLGlCQUFpQixDQUFDVCxlQUFlRDtZQUU3REosbUJBQW1CTyxhQUFhVyxjQUFjLENBQUNELFdBQVdELGNBQWM1QixlQUFlQyxnQkFBZ0JDO1lBRXZHLE9BQU9VO1FBQ1Q7SUFDRjtJQUNBO1FBQ0VKLGtCQUFrQmI7UUFDbEJjLG1CQUFtQm5CO1FBQ25CTyxPQUFPLFNBQUNrQyx5Q0FBeUNDLG1CQUFtQmhDLGVBQWVDLGdCQUFnQkM7WUFDakcsSUFBSStCO1lBRUosSUFBUUMsUUFBd0JwQixpQkFBUSxDQUFoQ29CLE9BQU9yQixlQUFpQkMsaUJBQVEsQ0FBekJELGNBQ1RzQixZQUFZSCxtQkFDWmQsbUJBQW1CYSx5Q0FBMEMsR0FBRztZQUV0RSxJQUFJZjtZQUVKQSxVQUFVZixnQkFBZ0IsR0FBRztZQUU3QixJQUFNa0IsZUFBZU4sYUFBYU8sb0JBQW9CLENBQUNGLGtCQUFrQkY7WUFFekVBLFVBQVVkLGlCQUFrQixHQUFHO1lBRS9CLElBQU1rQyxRQUFRRixNQUFNRyxhQUFhLENBQUNGLFdBQVduQjtZQUU3Q2lCLGVBQWVkLGFBQWFtQixVQUFVLENBQUNGLE9BQU9wQyxlQUFlQyxnQkFBZ0JDO1lBRTdFLE9BQU8rQjtRQUNUO0lBQ0Y7SUFDQTtRQUNFekIsa0JBQWtCaEI7UUFDbEJpQixtQkFBbUJyQjtRQUNuQlMsT0FBTyxTQUFDMEMseUJBQXlCQyxrQkFBa0J4QyxlQUFlQyxnQkFBZ0JDO1lBQ2hGLElBQUl1QztZQUVKLElBQVFDLE9BQW1CNUIsaUJBQVEsQ0FBM0I0QixNQUFNQyxXQUFhN0IsaUJBQVEsQ0FBckI2QixVQUNSQyxXQUFXSixrQkFDWEssZUFBZU4seUJBQXlCLEdBQUc7WUFFakQsSUFBSXZCO1lBRUpBLFVBQVVmLGdCQUFnQixHQUFHO1lBRTdCLElBQU02QyxXQUFXSCxTQUFTSSxnQkFBZ0IsQ0FBQ0YsY0FBYzdCO1lBRXpEQSxVQUFVZCxpQkFBa0IsR0FBRztZQUUvQixJQUFNOEMsT0FBT04sS0FBS08sWUFBWSxDQUFDTCxVQUFVNUI7WUFFekN5QixjQUFjSyxTQUFTSSxTQUFTLENBQUNGLE1BQU1oRCxlQUFlQyxnQkFBZ0JDO1lBRXRFLE9BQU91QztRQUNUO0lBQ0Y7SUFDQTtRQUNFakMsa0JBQWtCZDtRQUNsQmUsbUJBQW1CZjtRQUNuQkcsT0FBTyxTQUFDc0Qsb0NBQW9DQyxxQ0FBcUNwRCxlQUFlQyxnQkFBZ0JDO1lBQzlHLElBQUltRDtZQUVKLElBQVF4QyxlQUE0QkMsaUJBQVEsQ0FBcENELGNBQWN5QyxZQUFjeEMsaUJBQVEsQ0FBdEJ3QztZQUV0QixJQUFJdEMsU0FDQUU7WUFFSkYsVUFBVWYsZ0JBQWdCLEdBQUc7WUFFN0JpQixtQkFBbUJpQyxvQ0FBcUMsR0FBRztZQUUzRCxJQUFNaEMsZUFBZU4sYUFBYU8sb0JBQW9CLENBQUNGLGtCQUFrQkYsVUFBVyxHQUFHO1lBRXZGQSxVQUFVZCxpQkFBa0IsR0FBRztZQUUvQmdCLG1CQUFtQmtDLHFDQUFxQyxHQUFHO1lBRTNELElBQU1HLFlBQVlELFVBQVVsQyxvQkFBb0IsQ0FBQ0Ysa0JBQWtCRjtZQUVuRXFDLG1CQUFtQmxDLGFBQWFxQyxjQUFjLENBQUNELFdBQVd2RCxlQUFlQyxnQkFBZ0JDO1lBRXpGLE9BQU9tRDtRQUNUO0lBQ0Y7Q0FDRDtBQUdILElBQU1JLG1CQUFtQixJQUFJN0Q7SUFFN0IsV0FBZTZEIn0=
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL21ldGFMZXZlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG9udG9sb2d5IGZyb20gXCIuLi9vbnRvbG9neVwiO1xuaW1wb3J0IFVuaWZpZXIgZnJvbSBcIi4uL3VuaWZpZXJcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCB7IHZhcmlhYmxlSWRlbnRpZmllckZyb21WYXJpYWJsZU5vZGUsIHRlcm1WYXJpYWJsZUlkZW50aWZpZXJGcm9tVGVybU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhcmlhYmxlXCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKSxcbiAgICAgIGZyYW1lTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudFwiKSxcbiAgICAgIHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKSxcbiAgICAgIHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIGRlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2RlY2xhcmF0aW9uL21ldGF2YXJpYWJsZSFcIiksXG4gICAgICBmcmFtZURlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lL2RlY2xhcmF0aW9uIS9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBNZXRhTGV2ZWxVbmlmaWVyIGV4dGVuZHMgVW5pZmllciB7XG4gIHVuaWZ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHVuaWZpZXNBdE1ldGFMZXZlbDtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZVVuaWZpZXMgPSB0aGlzLnVuaWZ5Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIHVuaWZpZXNBdE1ldGFMZXZlbCA9IG5vblRlcm1pbmFsTm9kZVVuaWZpZXM7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZpZXNBdE1ldGFMZXZlbDtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICB1bmlmeTogKGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN0YXRlbWVudFVuaWZpZXM7XG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICBzdGF0ZW1lbnQsXG4gICAgICAgICAgICBzdGF0ZW1lbnROb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlUGFyZW50Tm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0UGFyZW50Tm9kZSgpO1xuXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUGFyZW50Tm9kZTsgLy8vXG5cbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24gfSA9IG9udG9sb2d5LFxuICAgICAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbiA9IEZyYW1lU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdGVybVN1YnN0aXR1dGlvbiA9IFRlcm1TdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSAoZnJhbWVTdWJzdGl0dXRpb24gfHwgdGVybVN1YnN0aXR1dGlvbik7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IGZyYW1lRGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogZnJhbWVOb2RlUXVlcnksXG4gICAgICB1bmlmeTogKGdlbmVyYWxGcmFtZURlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IGZyYW1lVW5pZmllcztcblxuICAgICAgICBjb25zdCBmcmFtZU5vZGUgPSBzcGVjaWZpY0ZyYW1lTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsRnJhbWVEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgZnJhbWUgPSBjb250ZXh0LmZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICAgICAgZnJhbWVVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5RnJhbWUoZnJhbWUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBmcmFtZVVuaWZpZXM7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0ZXJtVmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZUlkZW50aWZpZXJGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRlcm1VbmlmaWVzID0gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRlcm1WYXJpYWlibGVJZGVudGlmZXIgPSB0ZXJtVmFyaWFibGVJZGVudGlmaWVyRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKSxcbiAgICAgICAgICAgICAgICB0ZXJtVmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHRlcm1WYXJpYWlibGVJZGVudGlmZXIpLFxuICAgICAgICAgICAgICAgIHRlcm1WYXJpYWJsZVVuaWZpZXMgPSB2YXJpYWJsZS51bmlmeVRlcm1WYXJpYWJsZSh0ZXJtVmFyaWFibGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHRlcm1WYXJpYWJsZVVuaWZpZXMpIHtcbiAgICAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXJtVW5pZmllcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IGRlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGRlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgdW5pZnk6IChnZW5lcmFsRGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0RlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgcmVmZXJlbmNlVW5pZmllcztcblxuICAgICAgICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gb250b2xvZ3k7XG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGU7ICAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY0RlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJlZmVyZW5jZVVuaWZpZXMgPSBtZXRhdmFyaWFibGUudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlVW5pZmllcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IG1ldGFMZXZlbFVuaWZpZXIgPSBuZXcgTWV0YUxldmVsVW5pZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhTGV2ZWxVbmlmaWVyO1xuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJmcmFtZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsInRlcm1WYXJpYWJsZU5vZGVRdWVyeSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsImRlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiZnJhbWVEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsIk1ldGFMZXZlbFVuaWZpZXIiLCJ1bmlmeSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsInN1YnN0aXR1dGlvbnMiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNBdE1ldGFMZXZlbCIsIm5vblRlcm1pbmFsTm9kZVVuaWZpZXMiLCJ1bmlmeU5vblRlcm1pbmFsTm9kZSIsIlVuaWZpZXIiLCJtYXBzIiwiZ2VuZXJhbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY1N0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiY29udGV4dCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOb2RlUGFyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwiVGVybVN1YnN0aXR1dGlvbiIsIm9udG9sb2d5IiwiRnJhbWVTdWJzdGl0dXRpb24iLCJmcmFtZVN1YnN0aXR1dGlvbiIsImZyb21TdGF0ZW1lbnQiLCJ0ZXJtU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uIiwidW5pZnlTdGF0ZW1lbnQiLCJnZW5lcmFsRnJhbWVEZWNsYXJhdGlvbk1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY0ZyYW1lTm9kZSIsImZyYW1lVW5pZmllcyIsImZyYW1lTm9kZSIsImZyYW1lIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJ1bmlmeUZyYW1lIiwiZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwidGVybVVuaWZpZXMiLCJ0ZXJtTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllckZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidGVybSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInVuaWZ5VGVybSIsInRlcm1WYXJpYWlibGVJZGVudGlmZXIiLCJ0ZXJtVmFyaWFibGVJZGVudGlmaWVyRnJvbVRlcm1Ob2RlIiwidGVybVZhcmlhYmxlIiwidGVybVZhcmlhYmxlVW5pZmllcyIsInVuaWZ5VGVybVZhcmlhYmxlIiwiZ2VuZXJhbERlY2xhcmF0aW9uTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljRGVjbGFyYXRpb25NZXRhdmFyaWFibGVOb2RlIiwicmVmZXJlbmNlVW5pZmllcyIsIlJlZmVyZW5jZSIsInJlZmVyZW5jZSIsImZyb21NZXRhdmFyaWFibGVOb2RlIiwidW5pZnlSZWZlcmVuY2UiLCJtZXRhTGV2ZWxVbmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpS0E7OztlQUFBOzs7K0RBL0pxQjs4REFDRDtxQkFFTTs0QkFDMkI7d0JBQ2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsVUFDMUJDLGlCQUFpQkQsSUFBQUEsZ0JBQVMsRUFBQyxXQUMzQkUscUJBQXFCRixJQUFBQSxnQkFB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
@@ -15,9 +15,6 @@ _export(exports, {
15
15
  get bracketedTermChildNodeFromTermNode () {
16
16
  return bracketedTermChildNodeFromTermNode;
17
17
  },
18
- get stripBracketsFromReference () {
19
- return stripBracketsFromReference;
20
- },
21
18
  get stripBracketsFromStatement () {
22
19
  return stripBracketsFromStatement;
23
20
  },
@@ -32,7 +29,7 @@ _export(exports, {
32
29
  }
33
30
  });
34
31
  var _ontology = /*#__PURE__*/ _interop_require_default(require("../ontology"));
35
- var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
32
+ var _temporary = /*#__PURE__*/ _interop_require_default(require("../context/temporary"));
36
33
  var _combinator = /*#__PURE__*/ _interop_require_default(require("../context/bracketed/combinator"));
37
34
  var _constructor = /*#__PURE__*/ _interop_require_default(require("../context/bracketed/constructor"));
38
35
  var _constants = require("../constants");
@@ -49,15 +46,6 @@ function stripBracketsFromTerm(term, context) {
49
46
  }
50
47
  return term;
51
48
  }
52
- function stripBracketsFromReference(reference, context) {
53
- var referenceNode = reference.getNode(), bracketedReferenceChildNode = bracketedReferenceChildNodeFromReferenceNode(referenceNode);
54
- if (bracketedReferenceChildNode !== null) {
55
- context = contextFromReference(reference, context); ///
56
- var Reference = _ontology.default.Reference, referenceNode1 = bracketedReferenceChildNode; ///
57
- reference = Reference.fromReferenceNode(referenceNode1, context);
58
- }
59
- return reference;
60
- }
61
49
  function stripBracketsFromStatement(statement, context) {
62
50
  var statementNode = statement.getNode(), bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
63
51
  if (bracketedStatementChildNode !== null) {
@@ -99,15 +87,10 @@ function bracketedStatementChildNodeFromStatementNode(statementNode) {
99
87
  }
100
88
  return bracketedStatementChildNode;
101
89
  }
102
- function contextFromReference(reference, context) {
103
- var referenceTokens = reference.getTokens(), tokens = referenceTokens, localContext = _local.default.fromContextAndTokens(context, tokens);
104
- context = localContext; ///
105
- return context;
106
- }
107
90
  function contextFromStatement(statement, context) {
108
- var statementTokens = statement.getTokens(), tokens = statementTokens, localContext = _local.default.fromContextAndTokens(context, tokens);
109
- context = localContext; ///
91
+ var statementTokens = statement.getTokens(), tokens = statementTokens, temporaryContext = _temporary.default.fromContextAndTokens(context, tokens);
92
+ context = temporaryContext; ///
110
93
  return context;
111
94
  }
112
95
 
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJhY2tldHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBvbnRvbG9neSBmcm9tIFwiLi4vb250b2xvZ3lcIjtcbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCBjb21iaW5hdG9yQnJhY2tldGVkQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9icmFja2V0ZWQvY29tYmluYXRvclwiO1xuaW1wb3J0IGNvbnN0cnVjdG9yQnJhY2tldGVkQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9icmFja2V0ZWQvY29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgQlJBQ0tFVEVEX1RFUk1fREVQVEgsIEJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEggfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVRlcm0odGVybSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgaWYgKGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFRlcm0gfSA9IG9udG9sb2d5LFxuICAgICAgICAgIHRlcm1Ob2RlID0gYnJhY2tldGVkVGVybUNoaWxkTm9kZTsgIC8vL1xuXG4gICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBCcmFja2V0c0Zyb21SZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSByZWZlcmVuY2UuZ2V0Tm9kZSgpLFxuICAgIGJyYWNrZXRlZFJlZmVyZW5jZUNoaWxkTm9kZSA9IGJyYWNrZXRlZFJlZmVyZW5jZUNoaWxkTm9kZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRSZWZlcmVuY2VDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dEZyb21SZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gb250b2xvZ3ksXG4gICAgICAgICAgcmVmZXJlbmNlTm9kZSA9IGJyYWNrZXRlZFJlZmVyZW5jZUNoaWxkTm9kZTsgIC8vL1xuXG4gICAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBvbnRvbG9neSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlOyAgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSh0ZXJtTm9kZSkge1xuICBjb25zdCBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgaWYgKGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICB0ZXJtTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiB0ZXJtTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGNvbnN0IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBzdGF0ZW1lbnROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpIHtcbiAgbGV0IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGRlcHRoID0gQlJBQ0tFVEVEX1RFUk1fREVQVEgsXG4gICAgICAgIGJyYWNrZXRlZFRlcm1Ob2RlID0gY29uc3RydWN0b3JCcmFja2V0ZWRDb250ZXh0LmdldEJyYWNrZXRlZFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm1Ob2RlTWF0Y2hCcmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlLm1hdGNoKGJyYWNrZXRlZFRlcm1Ob2RlLCBkZXB0aCk7XG5cbiAgaWYgKHRlcm1Ob2RlTWF0Y2hCcmFja2V0ZWRUZXJtTm9kZSkge1xuICAgIGNvbnN0IHNpbmd1bGFyVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXRTaW5ndWxhclRlcm1Ob2RlKCk7XG5cbiAgICBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gc2luZ3VsYXJUZXJtTm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGRlcHRoID0gQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCxcbiAgICAgICAgYnJhY2tldGVkU3RhdGVtZW50Tm9kZSA9IGNvbWJpbmF0b3JCcmFja2V0ZWRDb250ZXh0LmdldEJyYWNrZXRlZFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoQnJhY2tldGVkU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGUubWF0Y2goYnJhY2tldGVkU3RhdGVtZW50Tm9kZSwgZGVwdGgpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlTWF0Y2hCcmFja2V0ZWRTdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc2luZ3VsYXJTdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTaW5ndWxhclN0YXRlbWVudE5vZGUoKTtcblxuICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IHNpbmd1bGFyU3RhdGVtZW50Tm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTtcbn1cblxuZnVuY3Rpb24gY29udGV4dEZyb21SZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZVRva2VucyA9IHJlZmVyZW5jZS5nZXRUb2tlbnMoKSxcbiAgICAgICAgdG9rZW5zID0gcmVmZXJlbmNlVG9rZW5zLCAvLy9cbiAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Db250ZXh0QW5kVG9rZW5zKGNvbnRleHQsIHRva2Vucyk7XG5cbiAgY29udGV4dCA9IGxvY2FsQ29udGV4dDsgLy8vXG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnRUb2tlbnMgPSBzdGF0ZW1lbnQuZ2V0VG9rZW5zKCksXG4gICAgICAgIHRva2VucyA9IHN0YXRlbWVudFRva2VucywgLy8vXG4gICAgICAgIGxvY2FsQ29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tQ29udGV4dEFuZFRva2Vucyhjb250ZXh0LCB0b2tlbnMpO1xuXG4gIGNvbnRleHQgPSBsb2NhbENvbnRleHQ7IC8vL1xuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIl0sIm5hbWVzIjpbImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlIiwiYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSIsInN0cmlwQnJhY2tldHNGcm9tUmVmZXJlbmNlIiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQiLCJzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudE5vZGUiLCJzdHJpcEJyYWNrZXRzRnJvbVRlcm0iLCJzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlIiwidGVybSIsImNvbnRleHQiLCJ0ZXJtTm9kZSIsImdldE5vZGUiLCJicmFja2V0ZWRUZXJtQ2hpbGROb2RlIiwiVGVybSIsIm9udG9sb2d5IiwiZnJvbVRlcm1Ob2RlIiwicmVmZXJlbmNlIiwicmVmZXJlbmNlTm9kZSIsImJyYWNrZXRlZFJlZmVyZW5jZUNoaWxkTm9kZSIsImJyYWNrZXRlZFJlZmVyZW5jZUNoaWxkTm9kZUZyb21SZWZlcmVuY2VOb2RlIiwiY29udGV4dEZyb21SZWZlcmVuY2UiLCJSZWZlcmVuY2UiLCJmcm9tUmVmZXJlbmNlTm9kZSIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUiLCJjb250ZXh0RnJvbVN0YXRlbWVudCIsIlN0YXRlbWVudCIsImZyb21TdGF0ZW1lbnROb2RlIiwiZGVwdGgiLCJCUkFDS0VURURfVEVSTV9ERVBUSCIsImJyYWNrZXRlZFRlcm1Ob2RlIiwiY29uc3RydWN0b3JCcmFja2V0ZWRDb250ZXh0IiwiZ2V0QnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtTm9kZU1hdGNoQnJhY2tldGVkVGVybU5vZGUiLCJtYXRjaCIsInNpbmd1bGFyVGVybU5vZGUiLCJnZXRTaW5ndWxhclRlcm1Ob2RlIiwiQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCIsImJyYWNrZXRlZFN0YXRlbWVudE5vZGUiLCJjb21iaW5hdG9yQnJhY2tldGVkQ29udGV4dCIsImdldEJyYWNrZXRlZFN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlTWF0Y2hCcmFja2V0ZWRTdGF0ZW1lbnROb2RlIiwic2luZ3VsYXJTdGF0ZW1lbnROb2RlIiwiZ2V0U2luZ3VsYXJTdGF0ZW1lbnROb2RlIiwicmVmZXJlbmNlVG9rZW5zIiwiZ2V0VG9rZW5zIiwidG9rZW5zIiwibG9jYWxDb250ZXh0IiwiTG9jYWxDb250ZXh0IiwiZnJvbUNvbnRleHRBbmRUb2tlbnMiLCJzdGF0ZW1lbnRUb2tlbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTJGZ0JBO2VBQUFBOztRQWhCQUM7ZUFBQUE7O1FBcERBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQTBCQUM7ZUFBQUE7O1FBeERBQztlQUFBQTs7UUE4Q0FDO2VBQUFBOzs7K0RBckRLOzREQUNJO2lFQUNjO2tFQUNDO3lCQUV3Qjs7Ozs7O0FBRXpELFNBQVNELHNCQUFzQkUsSUFBSSxFQUFFQyxPQUFP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
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJhY2tldHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBvbnRvbG9neSBmcm9tIFwiLi4vb250b2xvZ3lcIjtcbmltcG9ydCBUZW1wb3JhcnlDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3RlbXBvcmFyeVwiO1xuaW1wb3J0IGNvbWJpbmF0b3JCcmFja2V0ZWRDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2JyYWNrZXRlZC9jb21iaW5hdG9yXCI7XG5pbXBvcnQgY29uc3RydWN0b3JCcmFja2V0ZWRDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2JyYWNrZXRlZC9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBCUkFDS0VURURfVEVSTV9ERVBUSCwgQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICBpZiAoYnJhY2tldGVkVGVybUNoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgVGVybSB9ID0gb250b2xvZ3ksXG4gICAgICAgICAgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlOyAgLy8vXG5cbiAgICB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCB7IFN0YXRlbWVudCB9ID0gb250b2xvZ3ksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgIC8vL1xuXG4gICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUodGVybU5vZGUpIHtcbiAgY29uc3QgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRUZXJtQ2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gdGVybU5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICBjb25zdCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicmFja2V0ZWRUZXJtQ2hpbGROb2RlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gIGxldCBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gbnVsbDtcblxuICBjb25zdCBkZXB0aCA9IEJSQUNLRVRFRF9URVJNX0RFUFRILFxuICAgICAgICBicmFja2V0ZWRUZXJtTm9kZSA9IGNvbnN0cnVjdG9yQnJhY2tldGVkQ29udGV4dC5nZXRCcmFja2V0ZWRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtTm9kZU1hdGNoQnJhY2tldGVkVGVybU5vZGUgPSB0ZXJtTm9kZS5tYXRjaChicmFja2V0ZWRUZXJtTm9kZSwgZGVwdGgpO1xuXG4gIGlmICh0ZXJtTm9kZU1hdGNoQnJhY2tldGVkVGVybU5vZGUpIHtcbiAgICBjb25zdCBzaW5ndWxhclRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0U2luZ3VsYXJUZXJtTm9kZSgpO1xuXG4gICAgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IHNpbmd1bGFyVGVybU5vZGU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtQ2hpbGROb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICBsZXQgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gbnVsbDtcblxuICBjb25zdCBkZXB0aCA9IEJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEgsXG4gICAgICAgIGJyYWNrZXRlZFN0YXRlbWVudE5vZGUgPSBjb21iaW5hdG9yQnJhY2tldGVkQ29udGV4dC5nZXRCcmFja2V0ZWRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudE5vZGVNYXRjaEJyYWNrZXRlZFN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlLm1hdGNoKGJyYWNrZXRlZFN0YXRlbWVudE5vZGUsIGRlcHRoKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZU1hdGNoQnJhY2tldGVkU3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHNpbmd1bGFyU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0U2luZ3VsYXJTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBzaW5ndWxhclN0YXRlbWVudE5vZGU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGU7XG59XG5cbmZ1bmN0aW9uIGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnRUb2tlbnMgPSBzdGF0ZW1lbnQuZ2V0VG9rZW5zKCksXG4gICAgICAgIHRva2VucyA9IHN0YXRlbWVudFRva2VucywgLy8vXG4gICAgICAgIHRlbXBvcmFyeUNvbnRleHQgPSBUZW1wb3JhcnlDb250ZXh0LmZyb21Db250ZXh0QW5kVG9rZW5zKGNvbnRleHQsIHRva2Vucyk7XG5cbiAgY29udGV4dCA9IHRlbXBvcmFyeUNvbnRleHQ7IC8vL1xuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIl0sIm5hbWVzIjpbImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlIiwiYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSIsInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnROb2RlIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSIsInRlcm0iLCJjb250ZXh0IiwidGVybU5vZGUiLCJnZXROb2RlIiwiYnJhY2tldGVkVGVybUNoaWxkTm9kZSIsIlRlcm0iLCJvbnRvbG9neSIsImZyb21UZXJtTm9kZSIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUiLCJjb250ZXh0RnJvbVN0YXRlbWVudCIsIlN0YXRlbWVudCIsImZyb21TdGF0ZW1lbnROb2RlIiwiZGVwdGgiLCJCUkFDS0VURURfVEVSTV9ERVBUSCIsImJyYWNrZXRlZFRlcm1Ob2RlIiwiY29uc3RydWN0b3JCcmFja2V0ZWRDb250ZXh0IiwiZ2V0QnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtTm9kZU1hdGNoQnJhY2tldGVkVGVybU5vZGUiLCJtYXRjaCIsInNpbmd1bGFyVGVybU5vZGUiLCJnZXRTaW5ndWxhclRlcm1Ob2RlIiwiQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCIsImJyYWNrZXRlZFN0YXRlbWVudE5vZGUiLCJjb21iaW5hdG9yQnJhY2tldGVkQ29udGV4dCIsImdldEJyYWNrZXRlZFN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlTWF0Y2hCcmFja2V0ZWRTdGF0ZW1lbnROb2RlIiwic2luZ3VsYXJTdGF0ZW1lbnROb2RlIiwiZ2V0U2luZ3VsYXJTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50VG9rZW5zIiwiZ2V0VG9rZW5zIiwidG9rZW5zIiwidGVtcG9yYXJ5Q29udGV4dCIsIlRlbXBvcmFyeUNvbnRleHQiLCJmcm9tQ29udGV4dEFuZFRva2VucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBMkVnQkE7ZUFBQUE7O1FBaEJBQztlQUFBQTs7UUFwQ0FDO2VBQUFBOztRQTBCQUM7ZUFBQUE7O1FBeENBQztlQUFBQTs7UUE4QkFDO2VBQUFBOzs7K0RBckNLO2dFQUNRO2lFQUNVO2tFQUNDO3lCQUV3Qjs7Ozs7O0FBRXpELFNBQVNELHNCQUFzQkUsSUFBSSxFQUFFQyxPQUFPO0lBQ2pELElBQU1DLFdBQVdGLEtBQUtHLE9BQU8sSUFDdkJDLHlCQUF5QlQsbUNBQW1DTztJQUVsRSxJQUFJRSwyQkFBMkIsTUFBTTtRQUNuQyxJQUFNLEFBQUVDLE9BQVNDLGlCQUFRLENBQWpCRCxNQUNGSCxZQUFXRSx3QkFBeUIsR0FBRztRQUU3Q0osT0FBT0ssS0FBS0UsWUFBWSxDQUFDTCxXQUFVRDtJQUNyQztJQUVBLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTSiwyQkFBMkJZLFNBQVMsRUFBRVAsT0FBTztJQUMzRCxJQUFNUSxnQkFBZ0JELFVBQVVMLE9BQU8sSUFDakNPLDhCQUE4QmhCLDZDQUE2Q2U7SUFFakYsSUFBSUMsZ0NBQWdDLE1BQU07UUFDeENULFVBQVVVLHFCQUFxQkgsV0FBV1AsVUFBVSxHQUFHO1FBRXZELElBQU0sQUFBRVcsWUFBY04saUJBQVEsQ0FBdEJNLFdBQ0ZILGlCQUFnQkMsNkJBQThCLEdBQUc7UUFFdkRGLFlBQVlJLFVBQVVDLGlCQUFpQixDQUFDSixnQkFBZVI7SUFDekQ7SUFFQSxPQUFPTztBQUNUO0FBRU8sU0FBU1QsMEJBQTBCRyxRQUFRO0lBQ2hELElBQU1FLHlCQUF5QlQsbUNBQW1DTztJQUVsRSxJQUFJRSwyQkFBMkIsTUFBTTtRQUNuQ0YsV0FBV0Usd0JBQXlCLEdBQUc7SUFDekM7SUFFQSxPQUFPRjtBQUNUO0FBRU8sU0FBU0wsK0JBQStCWSxhQUFhO0lBQzFELElBQU1DLDhCQUE4QmhCLDZDQUE2Q2U7SUFFakYsSUFBSUMsZ0NBQWdDLE1BQU07UUFDeENELGdCQUFnQkMsNkJBQThCLEdBQUc7SUFDbkQ7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU2QsbUNBQW1DTyxRQUFRO0lBQ3pELElBQUlFLHlCQUF5QjtJQUU3QixJQUFNVSxRQUFRQywrQkFBb0IsRUFDNUJDLG9CQUFvQkMsb0JBQTJCLENBQUNDLG9CQUFvQixJQUNwRUMsaUNBQWlDakIsU0FBU2tCLEtBQUssQ0FBQ0osbUJBQW1CRjtJQUV6RSxJQUFJSyxnQ0FBZ0M7UUFDbEMsSUFBTUUsbUJBQW1CbkIsU0FBU29CLG1CQUFtQjtRQUVyRGxCLHlCQUF5QmlCLGtCQUFtQixHQUFHO0lBQ2pEO0lBRUEsT0FBT2pCO0FBQ1Q7QUFFTyxTQUFTViw2Q0FBNkNlLGFBQWE7SUFDeEUsSUFBSUMsOEJBQThCO0lBRWxDLElBQU1JLFFBQVFTLG9DQUF5QixFQUNqQ0MseUJBQXlCQyxtQkFBMEIsQ0FBQ0MseUJBQXlCLElBQzdFQywyQ0FBMkNsQixjQUFjVyxLQUFLLENBQUNJLHdCQUF3QlY7SUFFN0YsSUFBSWEsMENBQTBDO1FBQzVDLElBQU1DLHdCQUF3Qm5CLGNBQWNvQix3QkFBd0I7UUFFcEVuQiw4QkFBOEJrQix1QkFBd0IsR0FBRztJQUMzRDtJQUVBLE9BQU9sQjtBQUNUO0FBRUEsU0FBU0MscUJBQXFCSCxTQUFTLEVBQUVQLE9BQU87SUFDOUMsSUFBTTZCLGtCQUFrQnRCLFVBQVV1QixTQUFTLElBQ3JDQyxTQUFTRixpQkFDVEcsbUJBQW1CQyxrQkFBZ0IsQ0FBQ0Msb0JBQW9CLENBQUNsQyxTQUFTK0I7SUFFeEUvQixVQUFVZ0Msa0JBQWtCLEdBQUc7SUFFL0IsT0FBT2hDO0FBQ1QifQ==