occam-verify-cli 1.0.220 → 1.0.224

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 (161) hide show
  1. package/lib/context/file.js +19 -19
  2. package/lib/context/local.js +5 -43
  3. package/lib/context/release.js +11 -11
  4. package/lib/dom/assertion/contained.js +44 -44
  5. package/lib/dom/assertion/defined.js +40 -40
  6. package/lib/dom/assertion/property.js +37 -35
  7. package/lib/dom/assertion/satisfies.js +26 -25
  8. package/lib/dom/assertion/subproof.js +16 -16
  9. package/lib/dom/assertion/type.js +34 -32
  10. package/lib/dom/axiom.js +52 -52
  11. package/lib/dom/combinator/bracketed.js +5 -5
  12. package/lib/dom/combinator.js +6 -6
  13. package/lib/dom/conclusion.js +10 -10
  14. package/lib/dom/conjecture.js +5 -5
  15. package/lib/dom/constructor/bracketed.js +12 -12
  16. package/lib/dom/constructor.js +9 -9
  17. package/lib/dom/declaration/combinator.js +11 -11
  18. package/lib/dom/declaration/complexType.js +133 -63
  19. package/lib/dom/declaration/constructor.js +17 -17
  20. package/lib/dom/declaration/metavariable.js +17 -17
  21. package/lib/dom/declaration/simpleType.js +229 -0
  22. package/lib/dom/declaration/variable.js +17 -17
  23. package/lib/dom/declaration.js +54 -52
  24. package/lib/dom/deduction.js +15 -15
  25. package/lib/dom/derivation.js +8 -8
  26. package/lib/dom/equality.js +49 -34
  27. package/lib/dom/error.js +3 -3
  28. package/lib/dom/frame.js +38 -38
  29. package/lib/dom/judgement.js +31 -29
  30. package/lib/dom/label.js +5 -5
  31. package/lib/dom/lemma.js +5 -5
  32. package/lib/dom/metaLemma.js +5 -5
  33. package/lib/dom/metatheorem.js +5 -5
  34. package/lib/dom/metavariable.js +55 -55
  35. package/lib/dom/premise.js +36 -34
  36. package/lib/dom/procedureCall.js +9 -9
  37. package/lib/dom/proof.js +6 -6
  38. package/lib/dom/propertyRelation.js +18 -18
  39. package/lib/dom/reference.js +28 -28
  40. package/lib/dom/rule.js +63 -48
  41. package/lib/dom/signature.js +17 -17
  42. package/lib/dom/statement.js +36 -36
  43. package/lib/dom/step.js +32 -35
  44. package/lib/dom/subDerivation.js +8 -8
  45. package/lib/dom/subproof.js +27 -30
  46. package/lib/dom/substitution/statement.js +7 -7
  47. package/lib/dom/substitution/term.js +2 -16
  48. package/lib/dom/substitution.js +1 -15
  49. package/lib/dom/supposition.js +39 -39
  50. package/lib/dom/term.js +15 -15
  51. package/lib/dom/theorem.js +5 -5
  52. package/lib/dom/topLevelAssertion.js +60 -71
  53. package/lib/dom/topLevelMetaAssertion.js +28 -20
  54. package/lib/dom/type.js +18 -24
  55. package/lib/dom/variable.js +16 -16
  56. package/lib/equivalence.js +54 -33
  57. package/lib/equivalences.js +57 -101
  58. package/lib/index.js +2 -2
  59. package/lib/mixins/statement/verify.js +52 -52
  60. package/lib/mixins/step/unify.js +79 -61
  61. package/lib/mixins/term/verify.js +17 -17
  62. package/lib/substitutions.js +7 -7
  63. package/lib/unifier/equantional.js +170 -0
  64. package/lib/unifier/intrinsicLevel.js +8 -8
  65. package/lib/unifier/metaLevel.js +21 -21
  66. package/lib/unifier/metavariable.js +9 -9
  67. package/lib/unifier/statementWithCombinator.js +18 -18
  68. package/lib/unifier/termWithConstructor.js +10 -10
  69. package/lib/unifier.js +41 -41
  70. package/lib/utilities/brackets.js +2 -2
  71. package/lib/utilities/release.js +18 -17
  72. package/lib/utilities/subproof.js +2 -2
  73. package/lib/utilities/type.js +2 -2
  74. package/lib/utilities/unification.js +28 -34
  75. package/lib/verifier/combinator.js +14 -14
  76. package/lib/verifier/constructor.js +18 -18
  77. package/lib/verifier/topLevel.js +38 -38
  78. package/lib/verifier.js +30 -30
  79. package/package.json +1 -1
  80. package/src/context/file.js +18 -18
  81. package/src/context/local.js +5 -48
  82. package/src/context/release.js +11 -11
  83. package/src/dom/assertion/contained.js +46 -46
  84. package/src/dom/assertion/defined.js +41 -41
  85. package/src/dom/assertion/property.js +37 -35
  86. package/src/dom/assertion/satisfies.js +26 -25
  87. package/src/dom/assertion/subproof.js +15 -15
  88. package/src/dom/assertion/type.js +34 -32
  89. package/src/dom/axiom.js +56 -54
  90. package/src/dom/combinator/bracketed.js +4 -4
  91. package/src/dom/combinator.js +5 -5
  92. package/src/dom/conclusion.js +9 -9
  93. package/src/dom/conjecture.js +4 -4
  94. package/src/dom/constructor/bracketed.js +11 -11
  95. package/src/dom/constructor.js +8 -8
  96. package/src/dom/declaration/combinator.js +10 -10
  97. package/src/dom/declaration/complexType.js +129 -64
  98. package/src/dom/declaration/constructor.js +16 -16
  99. package/src/dom/declaration/metavariable.js +16 -16
  100. package/src/dom/declaration/simpleType.js +179 -0
  101. package/src/dom/declaration/variable.js +16 -16
  102. package/src/dom/declaration.js +54 -52
  103. package/src/dom/deduction.js +14 -14
  104. package/src/dom/derivation.js +7 -7
  105. package/src/dom/equality.js +55 -38
  106. package/src/dom/error.js +2 -2
  107. package/src/dom/frame.js +38 -38
  108. package/src/dom/judgement.js +31 -29
  109. package/src/dom/label.js +4 -4
  110. package/src/dom/lemma.js +4 -4
  111. package/src/dom/metaLemma.js +4 -4
  112. package/src/dom/metatheorem.js +4 -4
  113. package/src/dom/metavariable.js +54 -54
  114. package/src/dom/premise.js +35 -33
  115. package/src/dom/procedureCall.js +8 -8
  116. package/src/dom/proof.js +5 -5
  117. package/src/dom/propertyRelation.js +17 -17
  118. package/src/dom/reference.js +27 -27
  119. package/src/dom/rule.js +72 -49
  120. package/src/dom/signature.js +15 -15
  121. package/src/dom/statement.js +34 -34
  122. package/src/dom/step.js +42 -48
  123. package/src/dom/subDerivation.js +7 -7
  124. package/src/dom/subproof.js +30 -40
  125. package/src/dom/substitution/statement.js +6 -6
  126. package/src/dom/substitution/term.js +1 -19
  127. package/src/dom/substitution.js +0 -13
  128. package/src/dom/supposition.js +38 -38
  129. package/src/dom/term.js +14 -14
  130. package/src/dom/theorem.js +4 -4
  131. package/src/dom/topLevelAssertion.js +62 -81
  132. package/src/dom/topLevelMetaAssertion.js +35 -20
  133. package/src/dom/type.js +23 -33
  134. package/src/dom/variable.js +16 -15
  135. package/src/equivalence.js +69 -46
  136. package/src/equivalences.js +53 -115
  137. package/src/index.js +1 -1
  138. package/src/mixins/statement/verify.js +51 -51
  139. package/src/mixins/step/unify.js +88 -67
  140. package/src/mixins/term/verify.js +16 -16
  141. package/src/substitutions.js +5 -6
  142. package/src/unifier/equantional.js +90 -0
  143. package/src/unifier/intrinsicLevel.js +7 -7
  144. package/src/unifier/metaLevel.js +20 -21
  145. package/src/unifier/metavariable.js +8 -8
  146. package/src/unifier/statementWithCombinator.js +17 -17
  147. package/src/unifier/termWithConstructor.js +9 -9
  148. package/src/unifier.js +40 -40
  149. package/src/utilities/brackets.js +1 -1
  150. package/src/utilities/release.js +18 -18
  151. package/src/utilities/subproof.js +1 -1
  152. package/src/utilities/type.js +1 -1
  153. package/src/utilities/unification.js +27 -37
  154. package/src/verifier/combinator.js +13 -13
  155. package/src/verifier/constructor.js +17 -17
  156. package/src/verifier/topLevel.js +41 -41
  157. package/src/verifier.js +29 -29
  158. package/lib/dom/declaration/type.js +0 -209
  159. package/lib/unifier/equality.js +0 -155
  160. package/src/dom/declaration/type.js +0 -150
  161. package/src/unifier/equality.js +0 -70
@@ -9,7 +9,6 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _necessary = require("necessary");
12
- var _equivalence = /*#__PURE__*/ _interop_require_default(require("./equivalence"));
13
12
  function _array_like_to_array(arr, len) {
14
13
  if (len == null || len > arr.length) len = arr.length;
15
14
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -37,11 +36,6 @@ function _create_class(Constructor, protoProps, staticProps) {
37
36
  if (staticProps) _defineProperties(Constructor, staticProps);
38
37
  return Constructor;
39
38
  }
40
- function _interop_require_default(obj) {
41
- return obj && obj.__esModule ? obj : {
42
- default: obj
43
- };
44
- }
45
39
  function _iterable_to_array(iter) {
46
40
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
47
41
  }
@@ -59,7 +53,7 @@ function _unsupported_iterable_to_array(o, minLen) {
59
53
  if (n === "Map" || n === "Set") return Array.from(n);
60
54
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
61
55
  }
62
- var push = _necessary.arrayUtilities.push, compress = _necessary.arrayUtilities.compress, separate = _necessary.arrayUtilities.separate;
56
+ var push = _necessary.arrayUtilities.push, separate = _necessary.arrayUtilities.separate;
63
57
  var Equivalences = /*#__PURE__*/ function() {
64
58
  function Equivalences(array) {
65
59
  _class_call_check(this, Equivalences);
@@ -89,51 +83,34 @@ var Equivalences = /*#__PURE__*/ function() {
89
83
  }
90
84
  },
91
85
  {
92
- key: "pushEquivalences",
93
- value: function pushEquivalences(equivalences) {
94
- var array = equivalences.getArray();
95
- push(this.array, array);
96
- }
97
- },
98
- {
99
- key: "forEachEquivalence",
100
- value: function forEachEquivalence(callback) {
101
- this.array.forEach(callback);
86
+ key: "addEquivalence",
87
+ value: function addEquivalence(equivalence) {
88
+ this.array.push(equivalence);
102
89
  }
103
90
  },
104
91
  {
105
- key: "separateEquivalences",
106
- value: function separateEquivalences(equivalencesA, equivalencesB, callback) {
107
- var arrayA = equivalencesA.getArray(), arrayB = equivalencesB.getArray();
108
- separate(this.array, arrayA, arrayB, callback);
92
+ key: "addEquivalences",
93
+ value: function addEquivalences(equivalences) {
94
+ var array = equivalences.getArray();
95
+ push(this.array, array);
109
96
  }
110
97
  },
111
98
  {
112
- key: "addEquivalence",
113
- value: function addEquivalence(equivalence, context) {
114
- var equivalenceString = equivalence.asString();
115
- context.trace("Added the '".concat(equivalenceString, "' equivalence."));
116
- this.array.push(equivalence);
99
+ key: "someEquivalence",
100
+ value: function someEquivalence(callback) {
101
+ return this.array.some(callback);
117
102
  }
118
103
  },
119
104
  {
120
- key: "removeEquivalence",
121
- value: function removeEquivalence(equivalence, context) {
122
- var index = this.array.indexOf(equivalence), start = index, deleteCount = 1, equivalenceString = equivalence.asString();
123
- context.trace("Removed the '".concat(equivalenceString, "' equivalence."));
124
- this.array.splice(start, deleteCount);
105
+ key: "everyEquivalence",
106
+ value: function everyEquivalence(callback) {
107
+ return this.array.every(callback);
125
108
  }
126
109
  },
127
110
  {
128
- key: "findEquivalenceByType",
129
- value: function findEquivalenceByType(type) {
130
- var equivalence = this.array.find(function(equivalence) {
131
- var equivalenceMatchesType = equivalence.matchType(type);
132
- if (equivalenceMatchesType) {
133
- return true;
134
- }
135
- }) || null;
136
- return equivalence;
111
+ key: "forEachEquivalence",
112
+ value: function forEachEquivalence(callback) {
113
+ this.array.forEach(callback);
137
114
  }
138
115
  },
139
116
  {
@@ -160,6 +137,41 @@ var Equivalences = /*#__PURE__*/ function() {
160
137
  return equivalence;
161
138
  }
162
139
  },
140
+ {
141
+ key: "mergedWith",
142
+ value: function mergedWith(equivalences) {
143
+ var mergedEquivalences = this.clone(); ///
144
+ equivalences.forEachEquivalence(function(equivalence) {
145
+ mergedEquivalences = mergedEquivalences.mergedWithEquivalence(equivalence);
146
+ });
147
+ return mergedEquivalences;
148
+ }
149
+ },
150
+ {
151
+ key: "mergedWithEquivalence",
152
+ value: function mergedWithEquivalence(equivalence) {
153
+ var equivalences = Equivalences.fromNothing();
154
+ var mergedEquivalence = equivalence; ///
155
+ this.forEachEquivalence(function(equivalence) {
156
+ var mergedEquivalenceDisjointFromEquivalence = mergedEquivalence.isDisjointFrom(equivalence);
157
+ if (mergedEquivalenceDisjointFromEquivalence) {
158
+ equivalences.addEquivalence(equivalence);
159
+ } else {
160
+ mergedEquivalence = mergedEquivalence.mergedWith(equivalence);
161
+ }
162
+ });
163
+ equivalence = mergedEquivalence; ///
164
+ equivalences.addEquivalence(equivalence);
165
+ return equivalences;
166
+ }
167
+ },
168
+ {
169
+ key: "separateEquivalences",
170
+ value: function separateEquivalences(equivalencesA, equivalencesB, callback) {
171
+ var equivalencesAArray = equivalencesA.getArray(), equivalencesBArray = equivalencesB.getArray();
172
+ separate(this.array, equivalencesAArray, equivalencesBArray, callback);
173
+ }
174
+ },
163
175
  {
164
176
  key: "separateInitiallyGroundedEquivalences",
165
177
  value: function separateInitiallyGroundedEquivalences(remainingEquivalences, initiallyGroundedEquivalences, context) {
@@ -205,53 +217,20 @@ var Equivalences = /*#__PURE__*/ function() {
205
217
  remainingEquivalences = [];
206
218
  implicitlyGroundedEquivalences = [];
207
219
  equivalences.separateImplicitlyGroundedEquivalences(remainingEquivalences, implicitlyGroundedEquivalences, definedVariables, context);
208
- groundedEquivalences.pushEquivalences(implicitlyGroundedEquivalences);
220
+ groundedEquivalences.addEquivalences(implicitlyGroundedEquivalences);
209
221
  implicitlyGroundedEquivalencesLength = implicitlyGroundedEquivalences.getLength(); ///
210
222
  }
211
223
  }
212
224
  }
213
225
  },
214
226
  {
215
- key: "unifySubstitutions",
216
- value: function unifySubstitutions(substitutions) {
217
- var _this = this;
218
- var substitutionsUnified = substitutions.everySubstitution(function(substitution) {
219
- var substitutionUnified = _this.unifySubstitution(substitution);
220
- if (substitutionUnified) {
221
- return true;
222
- }
223
- });
224
- return substitutionsUnified;
225
- }
226
- },
227
- {
228
- key: "unifySubstitution",
229
- value: function unifySubstitution(substitution) {
230
- var substitutionUnified = this.array.some(function(equivalence) {
231
- var substitutionUnifiedWithEquivalence = substitution.unifyWithEquivalence(equivalence);
232
- if (substitutionUnifiedWithEquivalence) {
233
- return true;
234
- }
235
- });
236
- return substitutionUnified;
237
- }
238
- },
239
- {
240
- key: "mergedWith",
241
- value: function mergedWith(equivalences) {
242
- var equivalencesA = this, equivalencesB = equivalences;
243
- equivalences = mergeEquivalences(equivalencesA, equivalencesB); ///
227
+ key: "clone",
228
+ value: function clone() {
229
+ var array = _to_consumable_array(this.array), equivalences = new Equivalences(array);
244
230
  return equivalences;
245
231
  }
246
232
  }
247
233
  ], [
248
- {
249
- key: "fromArray",
250
- value: function fromArray(array) {
251
- var equivalences = new Equivalences(array);
252
- return equivalences;
253
- }
254
- },
255
234
  {
256
235
  key: "fromNothing",
257
236
  value: function fromNothing() {
@@ -262,29 +241,6 @@ var Equivalences = /*#__PURE__*/ function() {
262
241
  ]);
263
242
  return Equivalences;
264
243
  }();
265
- function mergeEquivalences(equivalencesA, equivalencesB) {
266
- var typesA = equivalencesA.getTypes(), typesB = equivalencesB.getTypes(), types = _to_consumable_array(typesA).concat(_to_consumable_array(typesB));
267
- compress(types, function(typeA, typeB) {
268
- if (typeA === typeB) {
269
- return true;
270
- }
271
- });
272
- var array = types.map(function(type) {
273
- var equivalence;
274
- var equivalenceA = equivalencesA.findEquivalenceByType(type), equivalenceB = equivalencesB.findEquivalenceByType(type); ///
275
- if (equivalenceA !== null && equivalenceB !== null) {
276
- var leftEquivalence = equivalenceA, rightEquivalence = equivalenceB; ///
277
- equivalence = _equivalence.default.merge(leftEquivalence, rightEquivalence);
278
- } else if (equivalenceA !== null) {
279
- equivalence = equivalenceA; ///
280
- } else if (equivalenceB !== null) {
281
- equivalence = equivalenceB; ///
282
- }
283
- return equivalence;
284
- });
285
- var equivalences = Equivalences.fromArray(array);
286
- return equivalences;
287
- }
288
244
  function definedVariablesFromGroundedTerms(groundedTerms, definedVariables, context) {
289
245
  var terms = groundedTerms, variables = definedVariables; ///
290
246
  terms.forEach(function(term) {
@@ -304,4 +260,4 @@ function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquiva
304
260
  });
305
261
  }
306
262
 
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVpdmFsZW5jZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgRXF1aXZhbGVuY2UgZnJvbSBcIi4vZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBjb21wcmVzcywgc2VwYXJhdGUgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcXVpdmFsZW5jZXMge1xuICBjb25zdHJ1Y3RvcihhcnJheSkge1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbiAgfVxuXG4gIGdldEFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5O1xuICB9XG5cbiAgZ2V0TGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5hcnJheS5sZW5ndGg7IH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuYXJyYXkubWFwKChlcXVpdmFsZW5jZSkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGVxdWl2YWxlbmNlLmdldFR5cGUoKTtcblxuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBwdXNoRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIGNvbnN0IGFycmF5ID0gZXF1aXZhbGVuY2VzLmdldEFycmF5KCk7XG5cbiAgICBwdXNoKHRoaXMuYXJyYXksIGFycmF5KTtcbiAgfVxuXG4gIGZvckVhY2hFcXVpdmFsZW5jZShjYWxsYmFjaykgeyB0aGlzLmFycmF5LmZvckVhY2goY2FsbGJhY2spOyB9XG5cbiAgc2VwYXJhdGVFcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzQSwgZXF1aXZhbGVuY2VzQiwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBhcnJheUEgPSBlcXVpdmFsZW5jZXNBLmdldEFycmF5KCksXG4gICAgICAgICAgYXJyYXlCID0gZXF1aXZhbGVuY2VzQi5nZXRBcnJheSgpO1xuXG4gICAgc2VwYXJhdGUodGhpcy5hcnJheSwgYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGFkZEVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgZXF1aXZhbGVuY2VTdHJpbmcgPSBlcXVpdmFsZW5jZS5hc1N0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkZWQgdGhlICcke2VxdWl2YWxlbmNlU3RyaW5nfScgZXF1aXZhbGVuY2UuYCk7XG5cbiAgICB0aGlzLmFycmF5LnB1c2goZXF1aXZhbGVuY2UpO1xuICB9XG5cbiAgcmVtb3ZlRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UsIGNvbnRleHQpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYXJyYXkuaW5kZXhPZihlcXVpdmFsZW5jZSksXG4gICAgICAgICAgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICBlcXVpdmFsZW5jZVN0cmluZyA9IGVxdWl2YWxlbmNlLmFzU3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSAnJHtlcXVpdmFsZW5jZVN0cmluZ30nIGVxdWl2YWxlbmNlLmApO1xuXG4gICAgdGhpcy5hcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgfVxuXG4gIGZpbmRFcXVpdmFsZW5jZUJ5VHlwZSh0eXBlKSB7XG4gICAgY29uc3QgZXF1aXZhbGVuY2UgPSB0aGlzLmFycmF5LmZpbmQoKGVxdWl2YWxlbmNlKSA9PiB7XG4gICAgICBjb25zdCBlcXVpdmFsZW5jZU1hdGNoZXNUeXBlID0gZXF1aXZhbGVuY2UubWF0Y2hUeXBlKHR5cGUpO1xuXG4gICAgICBpZiAoZXF1aXZhbGVuY2VNYXRjaGVzVHlwZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlO1xuICB9XG5cbiAgZmluZEVxdWl2YWxlbmNlQnlUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZSA9IHRoaXMuYXJyYXkuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICAgIGNvbnN0IHRlcm1FcXVhdGVzID0gZXF1aXZhbGVuY2UuZXF1YXRlVGVybSh0ZXJtKTtcblxuICAgICAgaWYgKHRlcm1FcXVhdGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2U7XG4gIH1cblxuICBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2Rlcyh0ZXJtTm9kZXMpIHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZSA9IHRoaXMuYXJyYXkuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICAgIGNvbnN0IGVxdWl2YWxlbmNlTWF0Y2hlc1Rlcm1zID0gZXF1aXZhbGVuY2UubWF0Y2hUZXJtTm9kZXModGVybU5vZGVzKTtcblxuICAgICAgaWYgKGVxdWl2YWxlbmNlTWF0Y2hlc1Rlcm1zKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2U7XG4gIH1cblxuICBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIGNvbnRleHQpIHtcbiAgICB0aGlzLnNlcGFyYXRlRXF1aXZhbGVuY2VzKHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgICAgY29uc3QgZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCA9IGVxdWl2YWxlbmNlLmlzSW5pdGlhbGx5R3JvdW5kZWQoY29udGV4dCk7XG5cbiAgICAgIGlmICghZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgdGhpcy5zZXBhcmF0ZUVxdWl2YWxlbmNlcyhyZW1haW5pbmdFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcywgKGVxdWl2YWxlbmNlKSA9PiB7XG4gICAgICBjb25zdCBlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCA9IGVxdWl2YWxlbmNlLmlzSW1wbGljaXRseUdyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoIWVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgbGV0IGVxdWl2YWxlbmNlcyA9IHRoaXMsXG4gICAgICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgICByZW1haW5pbmdFcXVpdmFsZW5jZXMsXG4gICAgICAgIGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7XG5cbiAgICByZW1haW5pbmdFcXVpdmFsZW5jZXMgPUVxdWl2YWxlbmNlcy5mcm9tTm90aGluZygpO1xuXG4gICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBFcXVpdmFsZW5jZXMuZnJvbU5vdGhpbmcoKTtcblxuICAgIGVxdWl2YWxlbmNlcy5zZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcy5nZXRMZW5ndGgoKTtcblxuICAgIGlmIChpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgICBsZXQgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gMTtcblxuICAgICAgd2hpbGUgKGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAwLFxuICAgICAgICAgICAgcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gLTE7XG5cbiAgICAgICAgd2hpbGUgKGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPiBwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGgpIHtcbiAgICAgICAgICBwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoOyAgLy8vXG5cbiAgICAgICAgICBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gZGVmaW5lZFZhcmlhYmxlcy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBlcXVpdmFsZW5jZXMgPSByZW1haW5pbmdFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgICAgIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICAgIGVxdWl2YWxlbmNlcy5zZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhyZW1haW5pbmdFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgICAgZ3JvdW5kZWRFcXVpdmFsZW5jZXMucHVzaEVxdWl2YWxlbmNlcyhpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMpO1xuXG4gICAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcy5nZXRMZW5ndGgoKTsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVuaWZ5U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uc1VuaWZpZWQgPSBzdWJzdGl0dXRpb25zLmV2ZXJ5U3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvblVuaWZpZWQgPSB0aGlzLnVuaWZ5U3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbik7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25VbmlmaWVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNVbmlmaWVkO1xuICB9XG5cbiAgdW5pZnlTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uVW5pZmllZCA9IHRoaXMuYXJyYXkuc29tZSgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvblVuaWZpZWRXaXRoRXF1aXZhbGVuY2UgPSBzdWJzdGl0dXRpb24udW5pZnlXaXRoRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uVW5pZmllZFdpdGhFcXVpdmFsZW5jZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25VbmlmaWVkO1xuICB9XG5cbiAgbWVyZ2VkV2l0aChlcXVpdmFsZW5jZXMpIHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZXNBID0gdGhpcywgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VzQiA9IGVxdWl2YWxlbmNlcztcblxuICAgIGVxdWl2YWxlbmNlcyA9IG1lcmdlRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlc0IpOyAvLy9cblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbUFycmF5KGFycmF5KSB7XG4gICAgY29uc3QgZXF1aXZhbGVuY2VzID0gbmV3IEVxdWl2YWxlbmNlcyhhcnJheSk7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGFycmF5ID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gbmV3IEVxdWl2YWxlbmNlcyhhcnJheSk7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2VzO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlc0IpIHtcbiAgY29uc3QgdHlwZXNBID0gZXF1aXZhbGVuY2VzQS5nZXRUeXBlcygpLFxuICAgICAgICB0eXBlc0IgPSBlcXVpdmFsZW5jZXNCLmdldFR5cGVzKCksXG4gICAgICAgIHR5cGVzID0gW1xuICAgICAgICAgIC4uLnR5cGVzQSxcbiAgICAgICAgICAuLi50eXBlc0JcbiAgICAgICAgXTtcblxuICBjb21wcmVzcyh0eXBlcywgKHR5cGVBLCB0eXBlQikgPT4ge1xuICAgIGlmICh0eXBlQSA9PT0gdHlwZUIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgYXJyYXkgPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBsZXQgZXF1aXZhbGVuY2U7XG5cbiAgICBjb25zdCBlcXVpdmFsZW5jZUEgPSBlcXVpdmFsZW5jZXNBLmZpbmRFcXVpdmFsZW5jZUJ5VHlwZSh0eXBlKSwgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VCID0gZXF1aXZhbGVuY2VzQi5maW5kRXF1aXZhbGVuY2VCeVR5cGUodHlwZSk7IC8vL1xuXG4gICAgaWYgKChlcXVpdmFsZW5jZUEgIT09IG51bGwpICYmIChlcXVpdmFsZW5jZUIgIT09IG51bGwpKSB7XG4gICAgICBjb25zdCBsZWZ0RXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUEsIC8vL1xuICAgICAgICAgICAgcmlnaHRFcXVpdmFsZW5jZSA9IGVxdWl2YWxlbmNlQjsgIC8vL1xuXG4gICAgICBlcXVpdmFsZW5jZSA9IEVxdWl2YWxlbmNlLm1lcmdlKGxlZnRFcXVpdmFsZW5jZSwgcmlnaHRFcXVpdmFsZW5jZSk7XG4gICAgfSBlbHNlIGlmIChlcXVpdmFsZW5jZUEgIT09IG51bGwpIHtcbiAgICAgIGVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VBOyAvLy9cbiAgICB9IGVsc2UgaWYgKGVxdWl2YWxlbmNlQiAhPT0gbnVsbCkge1xuICAgICAgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBlcXVpdmFsZW5jZTtcbiAgfSk7XG5cbiAgY29uc3QgZXF1aXZhbGVuY2VzID0gRXF1aXZhbGVuY2VzLmZyb21BcnJheShhcnJheSk7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbn1cblxuZnVuY3Rpb24gZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybXMgPSBncm91bmRlZFRlcm1zLCAgLy8vXG4gICAgICAgIHZhcmlhYmxlcyA9IGRlZmluZWRWYXJpYWJsZXM7IC8vL1xuXG4gIHRlcm1zLmZvckVhY2goKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtVmFyaWFibGVzID0gdGVybS5nZXRWYXJpYWJsZXMoY29udGV4dCk7XG5cbiAgICB0ZXJtVmFyaWFibGVzLmZvckVhY2goKHRlcm1WYXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgdmFyaWFibGVzSW5jbHVkZXNUZXJtVmFyaWFibGUgPSB2YXJpYWJsZXMuaW5jbHVkZXModGVybVZhcmlhYmxlKTtcblxuICAgICAgaWYgKCF2YXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IHRlcm1WYXJpYWJsZTsgIC8vL1xuXG4gICAgICAgIHZhcmlhYmxlcy5wdXNoKHZhcmlhYmxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdyb3VuZGVkVGVybXNGcm9tR3JvdW5kZWRFcXVpdmFsZW5jZXNBbmREZWZpbmVkVmFyaWFibGVzKGdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBncm91bmRlZFRlcm1zLCBjb250ZXh0KSB7XG4gIGdyb3VuZGVkRXF1aXZhbGVuY2VzLmZvckVhY2hFcXVpdmFsZW5jZSgoZ3JvdW5kZWRFcXVpdmFsZW5jZSkgPT4ge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2UuZ2V0R3JvdW5kZWRUZXJtcyhkZWZpbmVkVmFyaWFibGVzLCBncm91bmRlZFRlcm1zLCBjb250ZXh0KTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiRXF1aXZhbGVuY2VzIiwicHVzaCIsImFycmF5VXRpbGl0aWVzIiwiY29tcHJlc3MiLCJzZXBhcmF0ZSIsImFycmF5IiwiZ2V0QXJyYXkiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJnZXRUeXBlcyIsInR5cGVzIiwibWFwIiwiZXF1aXZhbGVuY2UiLCJ0eXBlIiwiZ2V0VHlwZSIsInB1c2hFcXVpdmFsZW5jZXMiLCJlcXVpdmFsZW5jZXMiLCJmb3JFYWNoRXF1aXZhbGVuY2UiLCJjYWxsYmFjayIsImZvckVhY2giLCJzZXBhcmF0ZUVxdWl2YWxlbmNlcyIsImVxdWl2YWxlbmNlc0EiLCJlcXVpdmFsZW5jZXNCIiwiYXJyYXlBIiwiYXJyYXlCIiwiYWRkRXF1aXZhbGVuY2UiLCJjb250ZXh0IiwiZXF1aXZhbGVuY2VTdHJpbmciLCJhc1N0cmluZyIsInRyYWNlIiwicmVtb3ZlRXF1aXZhbGVuY2UiLCJpbmRleCIsImluZGV4T2YiLCJzdGFydCIsImRlbGV0ZUNvdW50Iiwic3BsaWNlIiwiZmluZEVxdWl2YWxlbmNlQnlUeXBlIiwiZmluZCIsImVxdWl2YWxlbmNlTWF0Y2hlc1R5cGUiLCJtYXRjaFR5cGUiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm0iLCJ0ZXJtIiwidGVybUVxdWF0ZXMiLCJlcXVhdGVUZXJtIiwiZmluZEVxdWl2YWxlbmNlQnlUZXJtTm9kZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZU1hdGNoZXNUZXJtcyIsIm1hdGNoVGVybU5vZGVzIiwic2VwYXJhdGVJbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsInJlbWFpbmluZ0VxdWl2YWxlbmNlcyIsImluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImRlZmluZWRWYXJpYWJsZXMiLCJlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsImdyb3VuZGVkVGVybXMiLCJncm91bmRlZEVxdWl2YWxlbmNlcyIsImZyb21Ob3RoaW5nIiwiaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGgiLCJpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGgiLCJkZWZpbmVkVmFyaWFibGVzTGVuZ3RoIiwicHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoIiwiZ3JvdW5kZWRUZXJtc0Zyb21Hcm91bmRlZEVxdWl2YWxlbmNlc0FuZERlZmluZWRWYXJpYWJsZXMiLCJkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMiLCJ1bmlmeVN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9uc1VuaWZpZWQiLCJldmVyeVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblVuaWZpZWQiLCJ1bmlmeVN1YnN0aXR1dGlvbiIsInNvbWUiLCJzdWJzdGl0dXRpb25VbmlmaWVkV2l0aEVxdWl2YWxlbmNlIiwidW5pZnlXaXRoRXF1aXZhbGVuY2UiLCJtZXJnZWRXaXRoIiwibWVyZ2VFcXVpdmFsZW5jZXMiLCJmcm9tQXJyYXkiLCJ0eXBlc0EiLCJ0eXBlc0IiLCJ0eXBlQSIsInR5cGVCIiwiZXF1aXZhbGVuY2VBIiwiZXF1aXZhbGVuY2VCIiwibGVmdEVxdWl2YWxlbmNlIiwicmlnaHRFcXVpdmFsZW5jZSIsIkVxdWl2YWxlbmNlIiwibWVyZ2UiLCJ0ZXJtcyIsInZhcmlhYmxlcyIsInRlcm1WYXJpYWJsZXMiLCJnZXRWYXJpYWJsZXMiLCJ0ZXJtVmFyaWFibGUiLCJ2YXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSIsImluY2x1ZGVzIiwidmFyaWFibGUiLCJncm91bmRl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
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVpdmFsZW5jZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IHB1c2gsIHNlcGFyYXRlIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXF1aXZhbGVuY2VzIHtcbiAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHsgcmV0dXJuIHRoaXMuYXJyYXkubGVuZ3RoOyB9XG5cbiAgZ2V0VHlwZXMoKSB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmFycmF5Lm1hcCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBlcXVpdmFsZW5jZS5nZXRUeXBlKCk7XG5cbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGVzO1xuICB9XG5cbiAgYWRkRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpIHtcbiAgICB0aGlzLmFycmF5LnB1c2goZXF1aXZhbGVuY2UpO1xuICB9XG5cbiAgYWRkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIGNvbnN0IGFycmF5ID0gZXF1aXZhbGVuY2VzLmdldEFycmF5KCk7XG5cbiAgICBwdXNoKHRoaXMuYXJyYXksIGFycmF5KTtcbiAgfVxuXG4gIHNvbWVFcXVpdmFsZW5jZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5zb21lKGNhbGxiYWNrKTsgfVxuXG4gIGV2ZXJ5RXF1aXZhbGVuY2UoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuYXJyYXkuZXZlcnkoY2FsbGJhY2spOyB9XG5cbiAgZm9yRWFjaEVxdWl2YWxlbmNlKGNhbGxiYWNrKSB7IHRoaXMuYXJyYXkuZm9yRWFjaChjYWxsYmFjayk7IH1cblxuICBmaW5kRXF1aXZhbGVuY2VCeVRlcm0odGVybSkge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlID0gdGhpcy5hcnJheS5maW5kKChlcXVpdmFsZW5jZSkgPT4ge1xuICAgICAgY29uc3QgdGVybUVxdWF0ZXMgPSBlcXVpdmFsZW5jZS5lcXVhdGVUZXJtKHRlcm0pO1xuXG4gICAgICBpZiAodGVybUVxdWF0ZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZTtcbiAgfVxuXG4gIGZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGVzKHRlcm1Ob2Rlcykge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlID0gdGhpcy5hcnJheS5maW5kKChlcXVpdmFsZW5jZSkgPT4ge1xuICAgICAgY29uc3QgZXF1aXZhbGVuY2VNYXRjaGVzVGVybXMgPSBlcXVpdmFsZW5jZS5tYXRjaFRlcm1Ob2Rlcyh0ZXJtTm9kZXMpO1xuXG4gICAgICBpZiAoZXF1aXZhbGVuY2VNYXRjaGVzVGVybXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZTtcbiAgfVxuXG4gIG1lcmdlZFdpdGgoZXF1aXZhbGVuY2VzKSB7XG4gICAgbGV0ICBtZXJnZWRFcXVpdmFsZW5jZXMgPSB0aGlzLmNsb25lKCk7IC8vL1xuXG4gICAgZXF1aXZhbGVuY2VzLmZvckVhY2hFcXVpdmFsZW5jZSgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICAgIG1lcmdlZEVxdWl2YWxlbmNlcyA9IG1lcmdlZEVxdWl2YWxlbmNlcy5tZXJnZWRXaXRoRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlZEVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIG1lcmdlZFdpdGhFcXVpdmFsZW5jZShlcXVpdmFsZW5jZSkge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IEVxdWl2YWxlbmNlcy5mcm9tTm90aGluZygpO1xuXG4gICAgbGV0IG1lcmdlZEVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2U7IC8vL1xuXG4gICAgdGhpcy5mb3JFYWNoRXF1aXZhbGVuY2UoKGVxdWl2YWxlbmNlKSA9PiB7XG4gICAgICBjb25zdCBtZXJnZWRFcXVpdmFsZW5jZURpc2pvaW50RnJvbUVxdWl2YWxlbmNlID0gbWVyZ2VkRXF1aXZhbGVuY2UuaXNEaXNqb2ludEZyb20oZXF1aXZhbGVuY2UpO1xuXG4gICAgICBpZiAobWVyZ2VkRXF1aXZhbGVuY2VEaXNqb2ludEZyb21FcXVpdmFsZW5jZSkge1xuICAgICAgICBlcXVpdmFsZW5jZXMuYWRkRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkRXF1aXZhbGVuY2UgPSBtZXJnZWRFcXVpdmFsZW5jZS5tZXJnZWRXaXRoKGVxdWl2YWxlbmNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGVxdWl2YWxlbmNlID0gbWVyZ2VkRXF1aXZhbGVuY2U7ICAvLy9cblxuICAgIGVxdWl2YWxlbmNlcy5hZGRFcXVpdmFsZW5jZShlcXVpdmFsZW5jZSk7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgc2VwYXJhdGVFcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzQSwgZXF1aXZhbGVuY2VzQiwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZXNBQXJyYXkgPSBlcXVpdmFsZW5jZXNBLmdldEFycmF5KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzQkFycmF5ID0gZXF1aXZhbGVuY2VzQi5nZXRBcnJheSgpO1xuXG4gICAgc2VwYXJhdGUodGhpcy5hcnJheSwgZXF1aXZhbGVuY2VzQUFycmF5LCBlcXVpdmFsZW5jZXNCQXJyYXksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMocmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCkge1xuICAgIHRoaXMuc2VwYXJhdGVFcXVpdmFsZW5jZXMocmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgKGVxdWl2YWxlbmNlKSA9PiB7XG4gICAgICBjb25zdCBlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbml0aWFsbHlHcm91bmRlZChjb250ZXh0KTtcblxuICAgICAgaWYgKCFlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2VwYXJhdGVJbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMocmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICB0aGlzLnNlcGFyYXRlRXF1aXZhbGVuY2VzKHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCAoZXF1aXZhbGVuY2UpID0+IHtcbiAgICAgIGNvbnN0IGVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICghZXF1aXZhbGVuY2VJbXBsaWNpdGx5R3JvdW5kZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBsZXQgZXF1aXZhbGVuY2VzID0gdGhpcyxcbiAgICAgICAgZ3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICAgIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyxcbiAgICAgICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcztcblxuICAgIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyA9RXF1aXZhbGVuY2VzLmZyb21Ob3RoaW5nKCk7XG5cbiAgICBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IEVxdWl2YWxlbmNlcy5mcm9tTm90aGluZygpO1xuXG4gICAgZXF1aXZhbGVuY2VzLnNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMocmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCk7XG5cbiAgICBjb25zdCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgZ3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlczsgLy8vXG5cbiAgICAgIGxldCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSAxO1xuXG4gICAgICB3aGlsZSAoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IDAsXG4gICAgICAgICAgICBwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAtMTtcblxuICAgICAgICB3aGlsZSAoZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA+IHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCkge1xuICAgICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IGRlZmluZWRWYXJpYWJsZXNMZW5ndGg7ICAvLy9cblxuICAgICAgICAgIGdyb3VuZGVkVGVybXNGcm9tR3JvdW5kZWRFcXVpdmFsZW5jZXNBbmREZWZpbmVkVmFyaWFibGVzKGdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBncm91bmRlZFRlcm1zLCBjb250ZXh0KTtcblxuICAgICAgICAgIGRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyhncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgICAgIGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGVxdWl2YWxlbmNlcyA9IHJlbWFpbmluZ0VxdWl2YWxlbmNlczsgLy8vXG5cbiAgICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgICAgZXF1aXZhbGVuY2VzLnNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgICBncm91bmRlZEVxdWl2YWxlbmNlcy5hZGRFcXVpdmFsZW5jZXMoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKTtcblxuICAgICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMuZ2V0TGVuZ3RoKCk7ICAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBhcnJheSA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuYXJyYXlcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVxdWl2YWxlbmNlcyA9IG5ldyBFcXVpdmFsZW5jZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBhcnJheSA9IFtdLFxuICAgICAgICAgIGVxdWl2YWxlbmNlcyA9IG5ldyBFcXVpdmFsZW5jZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBjb25zdCB0ZXJtcyA9IGdyb3VuZGVkVGVybXMsICAvLy9cbiAgICAgICAgdmFyaWFibGVzID0gZGVmaW5lZFZhcmlhYmxlczsgLy8vXG5cbiAgdGVybXMuZm9yRWFjaCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1WYXJpYWJsZXMgPSB0ZXJtLmdldFZhcmlhYmxlcyhjb250ZXh0KTtcblxuICAgIHRlcm1WYXJpYWJsZXMuZm9yRWFjaCgodGVybVZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCB2YXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSA9IHZhcmlhYmxlcy5pbmNsdWRlcyh0ZXJtVmFyaWFibGUpO1xuXG4gICAgICBpZiAoIXZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gdGVybVZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgdmFyaWFibGVzLnB1c2godmFyaWFibGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ3JvdW5kZWRUZXJtc0Zyb21Hcm91bmRlZEVxdWl2YWxlbmNlc0FuZERlZmluZWRWYXJpYWJsZXMoZ3JvdW5kZWRFcXVpdmFsZW5jZXMsIGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpIHtcbiAgZ3JvdW5kZWRFcXVpdmFsZW5jZXMuZm9yRWFjaEVxdWl2YWxlbmNlKChncm91bmRlZEVxdWl2YWxlbmNlKSA9PiB7XG4gICAgZ3JvdW5kZWRFcXVpdmFsZW5jZS5nZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJFcXVpdmFsZW5jZXMiLCJwdXNoIiwiYXJyYXlVdGlsaXRpZXMiLCJzZXBhcmF0ZSIsImFycmF5IiwiZ2V0QXJyYXkiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJnZXRUeXBlcyIsInR5cGVzIiwibWFwIiwiZXF1aXZhbGVuY2UiLCJ0eXBlIiwiZ2V0VHlwZSIsImFkZEVxdWl2YWxlbmNlIiwiYWRkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwic29tZUVxdWl2YWxlbmNlIiwiY2FsbGJhY2siLCJzb21lIiwiZXZlcnlFcXVpdmFsZW5jZSIsImV2ZXJ5IiwiZm9yRWFjaEVxdWl2YWxlbmNlIiwiZm9yRWFjaCIsImZpbmRFcXVpdmFsZW5jZUJ5VGVybSIsInRlcm0iLCJmaW5kIiwidGVybUVxdWF0ZXMiLCJlcXVhdGVUZXJtIiwiZmluZEVxdWl2YWxlbmNlQnlUZXJtTm9kZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZU1hdGNoZXNUZXJtcyIsIm1hdGNoVGVybU5vZGVzIiwibWVyZ2VkV2l0aCIsIm1lcmdlZEVxdWl2YWxlbmNlcyIsImNsb25lIiwibWVyZ2VkV2l0aEVxdWl2YWxlbmNlIiwiZnJvbU5vdGhpbmciLCJtZXJnZWRFcXVpdmFsZW5jZSIsIm1lcmdlZEVxdWl2YWxlbmNlRGlzam9pbnRGcm9tRXF1aXZhbGVuY2UiLCJpc0Rpc2pvaW50RnJvbSIsInNlcGFyYXRlRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzQSIsImVxdWl2YWxlbmNlc0IiLCJlcXVpdmFsZW5jZXNBQXJyYXkiLCJlcXVpdmFsZW5jZXNCQXJyYXkiLCJzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwicmVtYWluaW5nRXF1aXZhbGVuY2VzIiwiaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJjb250ZXh0IiwiZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImRlZmluZWRWYXJpYWJsZXMiLCJlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsImdyb3VuZGVkVGVybXMiLCJncm91bmRlZEVxdWl2YWxlbmNlcyIsImluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoIiwiaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoIiwiZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsInByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsImdyb3VuZGVkVGVybXNGcm9tR3JvdW5kZWRFcXVpdmFsZW5jZXNBbmREZWZpbmVkVmFyaWFibGVzIiwiZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zIiwidGVybXMiLCJ2YXJpYWJsZXMiLCJ0ZXJtVmFyaWFibGVzIiwiZ2V0VmFyaWFibGVzIiwidGVybVZhcmlhYmxlIiwidmFyaWFibGVzSW5jbHVkZXNUZXJtVmFyaWFibGUiLCJpbmNsdWRlcyIsInZhcmlhYmxlIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZSIsImdldEdyb3VuZGVkVGVybXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3lCQUpVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0IsSUFBUUMsT0FBbUJDLHlCQUFj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
package/lib/index.js CHANGED
@@ -61,7 +61,6 @@ var _metavariable = /*#__PURE__*/ _interop_require_default(require("./dom/metava
61
61
  var _procedureCall = /*#__PURE__*/ _interop_require_default(require("./dom/procedureCall"));
62
62
  var _subDerivation = /*#__PURE__*/ _interop_require_default(require("./dom/subDerivation"));
63
63
  var _type1 = /*#__PURE__*/ _interop_require_default(require("./dom/assertion/type"));
64
- var _type2 = /*#__PURE__*/ _interop_require_default(require("./dom/declaration/type"));
65
64
  var _defined = /*#__PURE__*/ _interop_require_default(require("./dom/assertion/defined"));
66
65
  var _propertyRelation = /*#__PURE__*/ _interop_require_default(require("./dom/propertyRelation"));
67
66
  var _term1 = /*#__PURE__*/ _interop_require_default(require("./dom/substitution/term"));
@@ -73,6 +72,7 @@ var _satisfies = /*#__PURE__*/ _interop_require_default(require("./dom/assertion
73
72
  var _variable1 = /*#__PURE__*/ _interop_require_default(require("./dom/declaration/variable"));
74
73
  var _bracketed = /*#__PURE__*/ _interop_require_default(require("./dom/combinator/bracketed"));
75
74
  var _bracketed1 = /*#__PURE__*/ _interop_require_default(require("./dom/constructor/bracketed"));
75
+ var _simpleType = /*#__PURE__*/ _interop_require_default(require("./dom/declaration/simpleType"));
76
76
  var _reference1 = /*#__PURE__*/ _interop_require_default(require("./dom/substitution/reference"));
77
77
  var _statement1 = /*#__PURE__*/ _interop_require_default(require("./dom/substitution/statement"));
78
78
  var _combinator1 = /*#__PURE__*/ _interop_require_default(require("./dom/declaration/combinator"));
@@ -90,4 +90,4 @@ function _interop_require_default(obj) {
90
90
  };
91
91
  }
92
92
 
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFR5cGUgZnJvbSBcIi4vZG9tL3R5cGVcIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuL2RvbS90ZXJtXCI7XG5pbXBvcnQgUnVsZSBmcm9tIFwiLi9kb20vcnVsZVwiO1xuaW1wb3J0IFN0ZXAgZnJvbSBcIi4vZG9tL3N0ZXBcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwiLi9kb20vbGFiZWxcIjtcbmltcG9ydCBBeGlvbSBmcm9tIFwiLi9kb20vYXhpb21cIjtcbmltcG9ydCBMZW1tYSBmcm9tIFwiLi9kb20vbGVtbWFcIjtcbmltcG9ydCBGcmFtZSBmcm9tIFwiLi9kb20vZnJhbWVcIjtcbmltcG9ydCBQcm9vZiBmcm9tIFwiLi9kb20vcHJvb2ZcIjtcbmltcG9ydCBFcnJvciBmcm9tIFwiLi9kb20vZXJyb3JcIjtcbmltcG9ydCBQcmVtaXNlIGZyb20gXCIuL2RvbS9wcmVtaXNlXCI7XG5pbXBvcnQgVGhlb3JlbSBmcm9tIFwiLi9kb20vdGhlb3JlbVwiO1xuaW1wb3J0IEVxdWFsaXR5IGZyb20gXCIuL2RvbS9lcXVhbGl0eVwiO1xuaW1wb3J0IE1ldGFUeXBlIGZyb20gXCIuL2RvbS9tZXRhVHlwZVwiO1xuaW1wb3J0IFN1YnByb29mIGZyb20gXCIuL2RvbS9zdWJwcm9vZlwiO1xuaW1wb3J0IFZhcmlhYmxlIGZyb20gXCIuL2RvbS92YXJpYWJsZVwiO1xuaW1wb3J0IFByb3BlcnR5IGZyb20gXCIuL2RvbS9wcm9wZXJ0eVwiO1xuaW1wb3J0IFBhcmFtZXRlciBmcm9tIFwiLi9kb20vcGFyYW1ldGVyXCI7XG5pbXBvcnQgUmVmZXJlbmNlIGZyb20gXCIuL2RvbS9yZWZlcmVuY2VcIjtcbmltcG9ydCBTdGF0ZW1lbnQgZnJvbSBcIi4vZG9tL3N0YXRlbWVudFwiO1xuaW1wb3J0IEp1ZGdlbWVudCBmcm9tIFwiLi9kb20vanVkZ2VtZW50XCI7XG5pbXBvcnQgTWV0YUxlbW1hIGZyb20gXCIuL2RvbS9tZXRhTGVtbWFcIjtcbmltcG9ydCBEZWR1Y3Rpb24gZnJvbSBcIi4vZG9tL2RlZHVjdGlvblwiO1xuaW1wb3J0IFNpZ25hdHVyZSBmcm9tIFwiLi9kb20vc2lnbmF0dXJlXCI7XG5pbXBvcnQgQ29uamVjdHVyZSBmcm9tIFwiLi9kb20vY29uamVjdHVyZVwiO1xuaW1wb3J0IENvbmNsdXNpb24gZnJvbSBcIi4vZG9tL2NvbmNsdXNpb25cIjtcbmltcG9ydCBEZXJpdmF0aW9uIGZyb20gXCIuL2RvbS9kZXJpdmF0aW9uXCI7XG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi9kb20vY29tYmluYXRvclwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuL2RvbS9jb25zdHJ1Y3RvclwiO1xuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuL2RvbS9kZWNsYXJhdGlvblwiO1xuaW1wb3J0IFN1cHBvc2l0aW9uIGZyb20gXCIuL2RvbS9zdXBwb3NpdGlvblwiO1xuaW1wb3J0IE1ldGF0aGVvcmVtIGZyb20gXCIuL2RvbS9tZXRhdGhlb3JlbVwiO1xuaW1wb3J0IE1ldGF2YXJpYWJsZSBmcm9tIFwiLi9kb20vbWV0YXZhcmlhYmxlXCI7XG5pbXBvcnQgUHJvY2VkdXJlQ2FsbCBmcm9tIFwiLi9kb20vcHJvY2VkdXJlQ2FsbFwiO1xuaW1wb3J0IFN1YkRlcml2YXRpb24gZnJvbSBcIi4vZG9tL3N1YkRlcml2YXRpb25cIjtcbmltcG9ydCBUeXBlQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vdHlwZVwiO1xuaW1wb3J0IFR5cGVEZWNsYXJhdGlvbiBmcm9tIFwiLi9kb20vZGVjbGFyYXRpb24vdHlwZVwiO1xuaW1wb3J0IERlZmluZWRBc3NlcnRpb24gZnJvbSBcIi4vZG9tL2Fzc2VydGlvbi9kZWZpbmVkXCI7XG5pbXBvcnQgUHJvcGVydHlSZWxhdGlvbiBmcm9tIFwiLi9kb20vcHJvcGVydHlSZWxhdGlvblwiO1xuaW1wb3J0IFRlcm1TdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi90ZXJtXCI7XG5pbXBvcnQgRnJhbWVTdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi9mcmFtZVwiO1xuaW1wb3J0IFN1YnByb29mQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vc3VicHJvb2ZcIjtcbmltcG9ydCBQcm9wZXJ0eUFzc2VydGlvbiBmcm9tIFwiLi9kb20vYXNzZXJ0aW9uL3Byb3BlcnR5XCI7XG5pbXBvcnQgQ29udGFpbmVkQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vY29udGFpbmVkXCI7XG5pbXBvcnQgU2F0aXNmaWVzQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vc2F0aXNmaWVzXCI7XG5pbXBvcnQgVmFyaWFibGVEZWNsYXJhdGlvbiBmcm9tIFwiLi9kb20vZGVjbGFyYXRpb24vdmFyaWFibGVcIjtcbmltcG9ydCBCcmFja2V0ZWRDb21iaW5hdG9yIGZyb20gXCIuL2RvbS9jb21iaW5hdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IEJyYWNrZXRlZENvbnN0cnVjdG9yIGZyb20gXCIuL2RvbS9jb25zdHJ1Y3Rvci9icmFja2V0ZWRcIjtcbmltcG9ydCBSZWZlcmVuY2VTdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi9yZWZlcmVuY2VcIjtcbmltcG9ydCBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi9zdGF0ZW1lbnRcIjtcbmltcG9ydCBDb21iaW5hdG9yRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL2NvbWJpbmF0b3JcIjtcbmltcG9ydCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIGZyb20gXCIuL2RvbS9kZWNsYXJhdGlvbi9jb25zdHJ1Y3RvclwiO1xuaW1wb3J0IENvbXBsZXhUeXBlRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL2NvbXBsZXhUeXBlXCI7XG5pbXBvcnQgTWV0YXZhcmlhYmxlRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL21ldGF2YXJpYWJsZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIExvZyB9IGZyb20gXCIuL2xvZ1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSZWxlYXNlQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQvcmVsZWFzZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWxlYXNlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3VzdG9tR3JhbW1hclV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9jdXN0b21HcmFtbWFyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiTG9nIiwiUmVsZWFzZUNvbnRleHQiLCJjdXN0b21HcmFtbWFyVXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJyZWxlYXNlVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF5RG9CQTtlQUFBQSxZQUFHOztRQUNIQztlQUFBQSxnQkFBYzs7UUFFZEM7ZUFBQUEsc0JBQXNCOztRQUN0QkM7ZUFBQUEsdUJBQXVCOztRQUZ2QkM7ZUFBQUEsaUJBQWdCOzs7MkRBekRuQjsyREFDQTsyREFDQTsyREFDQTs0REFDQzs0REFDQTs0REFDQTs0REFDQTs0REFDQTs0REFDQTs4REFDRTs4REFDQTsrREFDQzsrREFDQTsrREFDQTsrREFDQTsrREFDQTtnRUFDQztnRUFDQTtnRUFDQTtnRUFDQTtnRUFDQTtnRUFDQTtnRUFDQTtpRUFDQztpRUFDQTtpRUFDQTtpRUFDQTtrRUFDQztrRUFDQTtrRUFDQTtrRUFDQTttRUFDQztvRUFDQztvRUFDQTs0REFDQTs0REFDRTs4REFDQzt1RUFDQTs0REFDQTs2REFDQztnRUFDQTtnRUFDQTtnRUFDQztnRUFDQTtnRUFDQztnRUFDQTtpRUFDQztpRUFDQztpRUFDQTtrRUFDQTttRUFDQztrRUFDQTtvRUFDQzswREFFTDs4REFDVzsrREFDRTtvRUFDTTtxRUFDQyJ9
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFR5cGUgZnJvbSBcIi4vZG9tL3R5cGVcIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuL2RvbS90ZXJtXCI7XG5pbXBvcnQgUnVsZSBmcm9tIFwiLi9kb20vcnVsZVwiO1xuaW1wb3J0IFN0ZXAgZnJvbSBcIi4vZG9tL3N0ZXBcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwiLi9kb20vbGFiZWxcIjtcbmltcG9ydCBBeGlvbSBmcm9tIFwiLi9kb20vYXhpb21cIjtcbmltcG9ydCBMZW1tYSBmcm9tIFwiLi9kb20vbGVtbWFcIjtcbmltcG9ydCBGcmFtZSBmcm9tIFwiLi9kb20vZnJhbWVcIjtcbmltcG9ydCBQcm9vZiBmcm9tIFwiLi9kb20vcHJvb2ZcIjtcbmltcG9ydCBFcnJvciBmcm9tIFwiLi9kb20vZXJyb3JcIjtcbmltcG9ydCBQcmVtaXNlIGZyb20gXCIuL2RvbS9wcmVtaXNlXCI7XG5pbXBvcnQgVGhlb3JlbSBmcm9tIFwiLi9kb20vdGhlb3JlbVwiO1xuaW1wb3J0IEVxdWFsaXR5IGZyb20gXCIuL2RvbS9lcXVhbGl0eVwiO1xuaW1wb3J0IE1ldGFUeXBlIGZyb20gXCIuL2RvbS9tZXRhVHlwZVwiO1xuaW1wb3J0IFN1YnByb29mIGZyb20gXCIuL2RvbS9zdWJwcm9vZlwiO1xuaW1wb3J0IFZhcmlhYmxlIGZyb20gXCIuL2RvbS92YXJpYWJsZVwiO1xuaW1wb3J0IFByb3BlcnR5IGZyb20gXCIuL2RvbS9wcm9wZXJ0eVwiO1xuaW1wb3J0IFBhcmFtZXRlciBmcm9tIFwiLi9kb20vcGFyYW1ldGVyXCI7XG5pbXBvcnQgUmVmZXJlbmNlIGZyb20gXCIuL2RvbS9yZWZlcmVuY2VcIjtcbmltcG9ydCBTdGF0ZW1lbnQgZnJvbSBcIi4vZG9tL3N0YXRlbWVudFwiO1xuaW1wb3J0IEp1ZGdlbWVudCBmcm9tIFwiLi9kb20vanVkZ2VtZW50XCI7XG5pbXBvcnQgTWV0YUxlbW1hIGZyb20gXCIuL2RvbS9tZXRhTGVtbWFcIjtcbmltcG9ydCBEZWR1Y3Rpb24gZnJvbSBcIi4vZG9tL2RlZHVjdGlvblwiO1xuaW1wb3J0IFNpZ25hdHVyZSBmcm9tIFwiLi9kb20vc2lnbmF0dXJlXCI7XG5pbXBvcnQgQ29uamVjdHVyZSBmcm9tIFwiLi9kb20vY29uamVjdHVyZVwiO1xuaW1wb3J0IENvbmNsdXNpb24gZnJvbSBcIi4vZG9tL2NvbmNsdXNpb25cIjtcbmltcG9ydCBEZXJpdmF0aW9uIGZyb20gXCIuL2RvbS9kZXJpdmF0aW9uXCI7XG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi9kb20vY29tYmluYXRvclwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuL2RvbS9jb25zdHJ1Y3RvclwiO1xuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuL2RvbS9kZWNsYXJhdGlvblwiO1xuaW1wb3J0IFN1cHBvc2l0aW9uIGZyb20gXCIuL2RvbS9zdXBwb3NpdGlvblwiO1xuaW1wb3J0IE1ldGF0aGVvcmVtIGZyb20gXCIuL2RvbS9tZXRhdGhlb3JlbVwiO1xuaW1wb3J0IE1ldGF2YXJpYWJsZSBmcm9tIFwiLi9kb20vbWV0YXZhcmlhYmxlXCI7XG5pbXBvcnQgUHJvY2VkdXJlQ2FsbCBmcm9tIFwiLi9kb20vcHJvY2VkdXJlQ2FsbFwiO1xuaW1wb3J0IFN1YkRlcml2YXRpb24gZnJvbSBcIi4vZG9tL3N1YkRlcml2YXRpb25cIjtcbmltcG9ydCBUeXBlQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vdHlwZVwiO1xuaW1wb3J0IERlZmluZWRBc3NlcnRpb24gZnJvbSBcIi4vZG9tL2Fzc2VydGlvbi9kZWZpbmVkXCI7XG5pbXBvcnQgUHJvcGVydHlSZWxhdGlvbiBmcm9tIFwiLi9kb20vcHJvcGVydHlSZWxhdGlvblwiO1xuaW1wb3J0IFRlcm1TdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi90ZXJtXCI7XG5pbXBvcnQgRnJhbWVTdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi9mcmFtZVwiO1xuaW1wb3J0IFN1YnByb29mQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vc3VicHJvb2ZcIjtcbmltcG9ydCBQcm9wZXJ0eUFzc2VydGlvbiBmcm9tIFwiLi9kb20vYXNzZXJ0aW9uL3Byb3BlcnR5XCI7XG5pbXBvcnQgQ29udGFpbmVkQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vY29udGFpbmVkXCI7XG5pbXBvcnQgU2F0aXNmaWVzQXNzZXJ0aW9uIGZyb20gXCIuL2RvbS9hc3NlcnRpb24vc2F0aXNmaWVzXCI7XG5pbXBvcnQgVmFyaWFibGVEZWNsYXJhdGlvbiBmcm9tIFwiLi9kb20vZGVjbGFyYXRpb24vdmFyaWFibGVcIjtcbmltcG9ydCBCcmFja2V0ZWRDb21iaW5hdG9yIGZyb20gXCIuL2RvbS9jb21iaW5hdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IEJyYWNrZXRlZENvbnN0cnVjdG9yIGZyb20gXCIuL2RvbS9jb25zdHJ1Y3Rvci9icmFja2V0ZWRcIjtcbmltcG9ydCBTaW1wbGVUeXBlRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL3NpbXBsZVR5cGVcIjtcbmltcG9ydCBSZWZlcmVuY2VTdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi9yZWZlcmVuY2VcIjtcbmltcG9ydCBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gZnJvbSBcIi4vZG9tL3N1YnN0aXR1dGlvbi9zdGF0ZW1lbnRcIjtcbmltcG9ydCBDb21iaW5hdG9yRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL2NvbWJpbmF0b3JcIjtcbmltcG9ydCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIGZyb20gXCIuL2RvbS9kZWNsYXJhdGlvbi9jb25zdHJ1Y3RvclwiO1xuaW1wb3J0IENvbXBsZXhUeXBlRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL2NvbXBsZXhUeXBlXCI7XG5pbXBvcnQgTWV0YXZhcmlhYmxlRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL21ldGF2YXJpYWJsZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIExvZyB9IGZyb20gXCIuL2xvZ1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSZWxlYXNlQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQvcmVsZWFzZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWxlYXNlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3VzdG9tR3JhbW1hclV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9jdXN0b21HcmFtbWFyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiTG9nIiwiUmVsZWFzZUNvbnRleHQiLCJjdXN0b21HcmFtbWFyVXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJyZWxlYXNlVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF5RG9CQTtlQUFBQSxZQUFHOztRQUNIQztlQUFBQSxnQkFBYzs7UUFFZEM7ZUFBQUEsc0JBQXNCOztRQUN0QkM7ZUFBQUEsdUJBQXVCOztRQUZ2QkM7ZUFBQUEsaUJBQWdCOzs7MkRBekRuQjsyREFDQTsyREFDQTsyREFDQTs0REFDQzs0REFDQTs0REFDQTs0REFDQTs0REFDQTs0REFDQTs4REFDRTs4REFDQTsrREFDQzsrREFDQTsrREFDQTsrREFDQTsrREFDQTtnRUFDQztnRUFDQTtnRUFDQTtnRUFDQTtnRUFDQTtnRUFDQTtnRUFDQTtpRUFDQztpRUFDQTtpRUFDQTtpRUFDQTtrRUFDQztrRUFDQTtrRUFDQTtrRUFDQTttRUFDQztvRUFDQztvRUFDQTs0REFDQTs4REFDRzt1RUFDQTs0REFDQTs2REFDQztnRUFDQTtnRUFDQTtnRUFDQztnRUFDQTtnRUFDQztnRUFDQTtpRUFDQztpRUFDQztpRUFDQTtpRUFDQTtrRUFDQTttRUFDQztrRUFDQTtvRUFDQzswREFFTDs4REFDVzsrREFDRTtvRUFDTTtxRUFDQyJ9