occam-verify-cli 1.0.641 → 1.0.648

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 (59) hide show
  1. package/lib/context/file/nominal.js +14 -14
  2. package/lib/context/liminal.js +2 -2
  3. package/lib/context/scoped.js +4 -4
  4. package/lib/context.js +22 -8
  5. package/lib/element/assertion/type.js +9 -6
  6. package/lib/element/combinator.js +11 -6
  7. package/lib/element/constructor.js +43 -8
  8. package/lib/element/declaration/combinator.js +25 -15
  9. package/lib/element/declaration/complexType.js +46 -36
  10. package/lib/element/declaration/constructor.js +45 -100
  11. package/lib/element/declaration/simpleType.js +101 -72
  12. package/lib/element/declaration/typePrefix.js +32 -22
  13. package/lib/element/declaration/variable.js +4 -6
  14. package/lib/element/frame.js +2 -2
  15. package/lib/element/judgement.js +2 -2
  16. package/lib/element/procedureCall.js +3 -3
  17. package/lib/element/rule.js +2 -2
  18. package/lib/element/term.js +1 -1
  19. package/lib/element/topLevelAssertion/axiom.js +2 -2
  20. package/lib/element/topLevelAssertion.js +2 -2
  21. package/lib/element/topLevelMetaAssertion.js +2 -2
  22. package/lib/element/type.js +9 -8
  23. package/lib/node/declaration/complexType.js +1 -8
  24. package/lib/node/declaration/simpleType.js +1 -8
  25. package/lib/process/assign.js +11 -24
  26. package/lib/process/unify.js +41 -1
  27. package/lib/process/verify.js +61 -13
  28. package/lib/utilities/element.js +53 -19
  29. package/lib/utilities/type.js +3 -3
  30. package/package.json +4 -4
  31. package/src/context/file/nominal.js +13 -13
  32. package/src/context/liminal.js +1 -1
  33. package/src/context/scoped.js +3 -3
  34. package/src/context.js +24 -10
  35. package/src/element/assertion/type.js +10 -6
  36. package/src/element/combinator.js +11 -7
  37. package/src/element/constructor.js +54 -3
  38. package/src/element/declaration/combinator.js +5 -2
  39. package/src/element/declaration/complexType.js +12 -9
  40. package/src/element/declaration/constructor.js +33 -99
  41. package/src/element/declaration/simpleType.js +94 -64
  42. package/src/element/declaration/typePrefix.js +7 -4
  43. package/src/element/declaration/variable.js +4 -9
  44. package/src/element/frame.js +1 -1
  45. package/src/element/judgement.js +1 -1
  46. package/src/element/procedureCall.js +2 -2
  47. package/src/element/rule.js +1 -1
  48. package/src/element/term.js +7 -7
  49. package/src/element/topLevelAssertion/axiom.js +1 -1
  50. package/src/element/topLevelAssertion.js +1 -1
  51. package/src/element/topLevelMetaAssertion.js +1 -1
  52. package/src/element/type.js +7 -7
  53. package/src/node/declaration/complexType.js +0 -7
  54. package/src/node/declaration/simpleType.js +0 -7
  55. package/src/process/assign.js +15 -23
  56. package/src/process/unify.js +32 -0
  57. package/src/process/verify.js +48 -18
  58. package/src/utilities/element.js +59 -18
  59. package/src/utilities/type.js +2 -3
@@ -10,6 +10,8 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _declaration = /*#__PURE__*/ _interop_require_default(require("../declaration"));
12
12
  var _elements = require("../../elements");
13
+ var _string = require("../../utilities/string");
14
+ var _type = require("../../utilities/type");
13
15
  function _assert_this_initialized(self) {
14
16
  if (self === void 0) {
15
17
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -224,7 +226,7 @@ function _ts_generator(thisArg, body) {
224
226
  var _SimpleTypeDeclaration;
225
227
  var _default = (0, _elements.define)((_SimpleTypeDeclaration = /*#__PURE__*/ function(Declaration) {
226
228
  _inherits(SimpleTypeDeclaration, Declaration);
227
- function SimpleTypeDeclaration(context, string, node, type, prefixed) {
229
+ function SimpleTypeDeclaration(context, string, node, type, superTypes, provisional) {
228
230
  _class_call_check(this, SimpleTypeDeclaration);
229
231
  var _this;
230
232
  _this = _call_super(this, SimpleTypeDeclaration, [
@@ -233,7 +235,8 @@ var _default = (0, _elements.define)((_SimpleTypeDeclaration = /*#__PURE__*/ fun
233
235
  node
234
236
  ]);
235
237
  _this.type = type;
236
- _this.prefixed = prefixed;
238
+ _this.superTypes = superTypes;
239
+ _this.provisional = provisional;
237
240
  return _this;
238
241
  }
239
242
  _create_class(SimpleTypeDeclaration, [
@@ -243,6 +246,18 @@ var _default = (0, _elements.define)((_SimpleTypeDeclaration = /*#__PURE__*/ fun
243
246
  return this.type;
244
247
  }
245
248
  },
249
+ {
250
+ key: "getSuperTypes",
251
+ value: function getSuperTypes() {
252
+ return this.superTypes;
253
+ }
254
+ },
255
+ {
256
+ key: "isProvisional",
257
+ value: function isProvisional() {
258
+ return this.provisional;
259
+ }
260
+ },
246
261
  {
247
262
  key: "getSimpleTypeDeclarationNode",
248
263
  value: function getSimpleTypeDeclarationNode() {
@@ -250,56 +265,50 @@ var _default = (0, _elements.define)((_SimpleTypeDeclaration = /*#__PURE__*/ fun
250
265
  return simpleTypeDeclarationNode;
251
266
  }
252
267
  },
253
- {
254
- key: "isPrefixed",
255
- value: function isPrefixed() {
256
- return this.prefixed;
257
- }
258
- },
259
268
  {
260
269
  key: "verifyType",
261
270
  value: function verifyType() {
262
271
  var typeVerifies = false;
263
- var context = this.getContext(), typeString = this.type.getString();
264
- context.trace("Verifying the '".concat(typeString, "' simple type..."));
272
+ var context = this.getContext(), typeString = this.type.getString(), simpleTypeDeclarationString = this.getString(); ///
273
+ context.trace("Verifying the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(typeString, "' type..."));
265
274
  var typeName = this.type.getName(), includeRelease = true, includeDependencies = false, typePresent = context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies);
266
- if (typePresent) {
267
- context.trace("The '".concat(typeString, "' type is already present."));
268
- } else {
275
+ if (!typePresent) {
269
276
  var prefixedTypeName = typeName, typePresent1 = context.isTypePresentByPrefixedTypeName(prefixedTypeName);
270
- if (typePresent1) {
271
- context.trace("The '".concat(typeString, "' type is already present."));
272
- } else {
277
+ if (!typePresent1) {
278
+ this.type.setProvisional(this.provisional);
273
279
  typeVerifies = true;
280
+ } else {
281
+ context.debug("The '".concat(typeString, "' type is already present."));
274
282
  }
283
+ } else {
284
+ context.debug("The '".concat(typeString, "' type is already present."));
275
285
  }
276
286
  if (typeVerifies) {
277
- context.trace("...verified the '".concat(typeString, "' simple type."));
287
+ context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(typeString, "' type"));
278
288
  }
279
289
  return typeVerifies;
280
290
  }
281
291
  },
282
292
  {
283
293
  key: "verifySuperType",
284
- value: function verifySuperType(superType) {
294
+ value: function verifySuperType(superType, superTypes) {
285
295
  var superTypeVerifies = false;
286
- var context = this.getContext(), superTypeString = superType.getString();
287
- context.trace("Verifying the '".concat(superTypeString, "' super-type..."));
296
+ var context = this.getContext(), superTypeString = superType.getString(), simpleTypeDeclarationString = this.getString(); ///;
297
+ context.trace("Verifying the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(superTypeString, "' super-type..."));
288
298
  var nominalTypeName = superType.getNominalTypeName(), typeName = nominalTypeName, typeComparesToTypeName = this.type.compareTypeName(typeName);
289
- if (typeComparesToTypeName) {
290
- context.trace("The super-type's name compares to the ".concat(typeName, "' simple type's name."));
291
- } else {
292
- var oldSuperType = superType;
299
+ if (!typeComparesToTypeName) {
293
300
  superType = context.findTypeByNominalTypeName(nominalTypeName);
294
- var superTypePresent = superType !== null;
295
- if (superTypePresent) {
296
- var newSuperType = superType; ///
297
- this.type.replaceSuperType(oldSuperType, newSuperType);
301
+ if (superType !== null) {
302
+ superTypes.push(superType);
298
303
  superTypeVerifies = true;
304
+ } else {
305
+ context.debug("The '".concat(superTypeString, "' super-type is not present."));
299
306
  }
307
+ } else {
308
+ context.debug("The '".concat(superTypeString, "' super-type's name compares to the ").concat(typeName, "' type's name."));
300
309
  }
301
310
  if (superTypeVerifies) {
302
- context.debug("...verified the '".concat(superTypeString, "' super-type."));
311
+ context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(superTypeString, "' super-type."));
303
312
  }
304
313
  return superTypeVerifies;
305
314
  }
@@ -309,61 +318,81 @@ var _default = (0, _elements.define)((_SimpleTypeDeclaration = /*#__PURE__*/ fun
309
318
  value: function verifySuperTypes() {
310
319
  var _this = this;
311
320
  var superTypesVerify;
312
- var context = this.getContext(), typeString = this.type.getString();
313
- context.trace("Verifying the '".concat(typeString, "' simple type's super-types..."));
314
- var typeBasic = this.type.isBasic();
315
- if (typeBasic) {
316
- superTypesVerify = true;
317
- context.trace("The '".concat(typeString, "' simple type is basic."));
318
- } else {
319
- var superTypes = this.type.getSuperTypes();
320
- superTypesVerify = superTypes.every(function(superType) {
321
- var superTypeVerifies = _this.verifySuperType(superType);
322
- if (superTypeVerifies) {
323
- return true;
324
- }
325
- });
326
- }
321
+ var context = this.getContext(), superTypes = [], superTypesString = (0, _string.superTypesStringFromSuperTypes)(this.superTypes), simpleTypeDeclarationString = this.getString(); ///;
322
+ superTypesString !== null ? context.trace("Verifying the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(superTypesString, "' super-types...")) : context.trace("Verifying the '".concat(simpleTypeDeclarationString, "' simple type declaration's super-types..."));
323
+ superTypesVerify = this.superTypes.every(function(superType) {
324
+ var superTypeVerifies = _this.verifySuperType(superType, superTypes);
325
+ if (superTypeVerifies) {
326
+ return true;
327
+ }
328
+ });
327
329
  if (superTypesVerify) {
328
- context.debug("...verified the '".concat(typeString, "' simple type's super-types."));
330
+ var superTypesLength = superTypes.length;
331
+ if (superTypesLength === 0) {
332
+ var baseType = (0, _type.baseTypeFromNothing)(), superTyupe = baseType; ///
333
+ superTypes.push(superTyupe);
334
+ }
335
+ this.type.setSuperTypes(superTypes);
336
+ superTypesString !== null ? context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(superTypesString, "' super-types.")) : context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration's super-types."));
329
337
  }
330
338
  return superTypesVerify;
331
339
  }
332
340
  },
341
+ {
342
+ key: "verifyTypePrefix",
343
+ value: function verifyTypePrefix() {
344
+ var typePrefixVerifies = false;
345
+ var context = this.getContext(), typeString = this.type.getString(), simpleTypeDeclarationString = this.getString(); ///;
346
+ context.trace("Verifying the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(typeString, "' type's prefix..."));
347
+ var typePrefixed = this.type.isPrefixed();
348
+ if (!typePrefixed) {
349
+ typePrefixVerifies = true;
350
+ } else {
351
+ context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(typeString, "' type is prefixed."));
352
+ }
353
+ if (typePrefixVerifies) {
354
+ context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration's '").concat(typeString, "' type's prefix."));
355
+ }
356
+ return typePrefixVerifies;
357
+ }
358
+ },
333
359
  {
334
360
  key: "verify",
335
361
  value: function verify() {
336
362
  return _async_to_generator(function() {
337
- var verifies, context, simpleTypeDeclarationString, typeString, typeVerifies, superTypesVerify, typePrefix, typePrefixName, prefixName;
363
+ var verifies, context, simpleTypeDeclarationString, typeVerifies, superTypesVerify, typePrefixVerifies;
338
364
  return _ts_generator(this, function(_state) {
339
- verifies = false;
340
- context = this.getContext(), simpleTypeDeclarationString = this.getString(); ///
341
- context.trace("Verifying the '".concat(simpleTypeDeclarationString, "' simple type declaration..."));
342
- if (this.prefixed) {
343
- typeString = this.type.getString();
344
- context.trace("The '".concat(typeString, "' type is prefixed."));
345
- } else {
346
- typeVerifies = this.verifyType();
347
- if (typeVerifies) {
348
- superTypesVerify = this.verifySuperTypes();
349
- if (superTypesVerify) {
350
- typePrefix = context.getTypePrefix();
351
- if (typePrefix !== null) {
352
- typePrefixName = typePrefix.getName(), prefixName = typePrefixName; ///
353
- this.type.setPrefixName(prefixName);
365
+ switch(_state.label){
366
+ case 0:
367
+ verifies = false;
368
+ context = this.getContext();
369
+ return [
370
+ 4,
371
+ this.break(context)
372
+ ];
373
+ case 1:
374
+ _state.sent();
375
+ simpleTypeDeclarationString = this.getString(); ///
376
+ context.trace("Verifying the '".concat(simpleTypeDeclarationString, "' simple type declaration..."));
377
+ typeVerifies = this.verifyType();
378
+ if (typeVerifies) {
379
+ superTypesVerify = this.verifySuperTypes();
380
+ if (superTypesVerify) {
381
+ typePrefixVerifies = this.verifyTypePrefix();
382
+ if (typePrefixVerifies) {
383
+ context.addType(this.type);
384
+ verifies = true;
385
+ }
354
386
  }
355
- context.addType(this.type);
356
- verifies = true;
357
387
  }
358
- }
359
- }
360
- if (verifies) {
361
- context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration."));
388
+ if (verifies) {
389
+ context.debug("...verified the '".concat(simpleTypeDeclarationString, "' simple type declaration."));
390
+ }
391
+ return [
392
+ 2,
393
+ verifies
394
+ ];
362
395
  }
363
- return [
364
- 2,
365
- verifies
366
- ];
367
396
  });
368
397
  }).call(this);
369
398
  }
@@ -372,4 +401,4 @@ var _default = (0, _elements.define)((_SimpleTypeDeclaration = /*#__PURE__*/ fun
372
401
  return SimpleTypeDeclaration;
373
402
  }(_declaration.default), _define_property(_SimpleTypeDeclaration, "name", "SimpleTypeDeclaration"), _SimpleTypeDeclaration));
374
403
 
375
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3NpbXBsZVR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaW1wbGVUeXBlRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdHlwZSwgcHJlZml4ZWQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByZWZpeGVkID0gcHJlZml4ZWQ7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIGlzUHJlZml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4ZWQ7XG4gIH1cblxuICB2ZXJpZnlUeXBlKCkge1xuICAgIGxldCB0eXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgc2ltcGxlIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IHRydWUsXG4gICAgICAgICAgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UsIGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFR5cGVOYW1lID0gdHlwZU5hbWUsIC8vL1xuICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZVN0cmluZ30nIHNpbXBsZSB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZU5hbWUgPSBub21pbmFsVHlwZU5hbWUsIC8vL1xuICAgICAgICAgIHR5cGVDb21wYXJlc1RvVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlQ29tcGFyZXNUb1R5cGVOYW1lKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgc3VwZXItdHlwZSdzIG5hbWUgY29tcGFyZXMgdG8gdGhlICR7dHlwZU5hbWV9JyBzaW1wbGUgdHlwZSdzIG5hbWUuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9sZFN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcblxuICAgICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgIGNvbnN0IHN1cGVyVHlwZVByZXNlbnQgPSAoc3VwZXJUeXBlICE9PSBudWxsKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZVByZXNlbnQpIHtcbiAgICAgICAgY29uc3QgbmV3U3VwZXJUeXBlID0gc3VwZXJUeXBlOyAvLy9cblxuICAgICAgICB0aGlzLnR5cGUucmVwbGFjZVN1cGVyVHlwZShvbGRTdXBlclR5cGUsIG5ld1N1cGVyVHlwZSk7XG5cbiAgICAgICAgc3VwZXJUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcygpIHtcbiAgICBsZXQgc3VwZXJUeXBlc1ZlcmlmeTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgc2ltcGxlIHR5cGUncyBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgY29uc3QgdHlwZUJhc2ljID0gdGhpcy50eXBlLmlzQmFzaWMoKTtcblxuICAgIGlmICh0eXBlQmFzaWMpIHtcbiAgICAgIHN1cGVyVHlwZXNWZXJpZnkgPSB0cnVlO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZVN0cmluZ30nIHNpbXBsZSB0eXBlIGlzIGJhc2ljLmApXG4gICAgfSBlbHNlICB7XG4gICAgICBjb25zdCBzdXBlclR5cGVzID0gdGhpcy50eXBlLmdldFN1cGVyVHlwZXMoKTtcblxuICAgICAgc3VwZXJUeXBlc1ZlcmlmeSA9IHN1cGVyVHlwZXMuZXZlcnkoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBzdXBlclR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSk7XG5cbiAgICAgICAgaWYgKHN1cGVyVHlwZVZlcmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzdXBlclR5cGVzVmVyaWZ5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZVN0cmluZ30nIHNpbXBsZSB0eXBlJ3Mgc3VwZXItdHlwZXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZXNWZXJpZnk7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgaWYgKHRoaXMucHJlZml4ZWQpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVmaXhlZC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlUeXBlKCk7XG5cbiAgICAgIGlmICh0eXBlVmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3Qgc3VwZXJUeXBlc1ZlcmlmeSA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlcygpO1xuXG4gICAgICAgIGlmIChzdXBlclR5cGVzVmVyaWZ5KSB7XG4gICAgICAgICAgY29uc3QgdHlwZVByZWZpeCA9IGNvbnRleHQuZ2V0VHlwZVByZWZpeCgpO1xuXG4gICAgICAgICAgaWYgKHR5cGVQcmVmaXggIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVQcmVmaXhOYW1lID0gdHlwZVByZWZpeC5nZXROYW1lKCksXG4gICAgICAgICAgICAgIHByZWZpeE5hbWUgPSB0eXBlUHJlZml4TmFtZTsgIC8vL1xuXG4gICAgICAgICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaW1wbGVUeXBlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlNpbXBsZVR5cGVEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsInByZWZpeGVkIiwiZ2V0VHlwZSIsImdldFNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwic2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZSIsImlzUHJlZml4ZWQiLCJ2ZXJpZnlUeXBlIiwidHlwZVZlcmlmaWVzIiwiZ2V0Q29udGV4dCIsInR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInR5cGVOYW1lIiwiZ2V0TmFtZSIsImluY2x1ZGVSZWxlYXNlIiwiaW5jbHVkZURlcGVuZGVuY2llcyIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZSIsInZlcmlmeVN1cGVyVHlwZSIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVZlcmlmaWVzIiwic3VwZXJUeXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsIm9sZFN1cGVyVHlwZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJzdXBlclR5cGVQcmVzZW50IiwibmV3U3VwZXJUeXBlIiwicmVwbGFjZVN1cGVyVHlwZSIsImRlYnVnIiwidmVyaWZ5U3VwZXJUeXBlcyIsInN1cGVyVHlwZXNWZXJpZnkiLCJ0eXBlQmFzaWMiLCJpc0Jhc2ljIiwic3VwZXJUeXBlcyIsImdldFN1cGVyVHlwZXMiLCJldmVyeSIsInZlcmlmeSIsInZlcmlmaWVzIiwic2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nIiwidHlwZVByZWZpeCIsInR5cGVQcmVmaXhOYW1lIiwicHJlZml4TmFtZSIsImdldFR5cGVQcmVmaXgiLCJzZXRQcmVmaXhOYW1lIiwiYWRkVHlwZSIsIkRlY2xhcmF0aW9uIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFBOzs7a0VBSndCO3dCQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFdkIsV0FBZUEsSUFBQUEsZ0JBQU0sMENBQUM7O2FBQU1DLHNCQUNkQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFFBQVE7Z0NBRHZCTDs7Z0JBRXhCLGtCQUZ3QkE7WUFFbEJDO1lBQVNDO1lBQVFDOztRQUV2QixNQUFLQyxJQUFJLEdBQUdBO1FBQ1osTUFBS0MsUUFBUSxHQUFHQTs7Ozs7WUFHbEJDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsSUFBSTtZQUNsQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNSixPQUFPLElBQUksQ0FBQ0ssT0FBTyxJQUNuQkMsNEJBQTRCTixNQUFNLEdBQUc7Z0JBRTNDLE9BQU9NO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JB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
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3NpbXBsZVR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHtiYXNlVHlwZUZyb21Ob3RoaW5nfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpbXBsZVR5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5VHlwZSgpIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSxcbiAgICAgICAgICBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSwgaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFR5cGVOYW1lID0gdHlwZU5hbWUsIC8vL1xuICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgICAgdGhpcy50eXBlLnNldFByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIHR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmICh0eXBlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUsIHN1cGVyVHlwZXMpIHtcbiAgICBsZXQgc3VwZXJUeXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5vbWluYWxUeXBlTmFtZSwgLy8vXG4gICAgICAgICAgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHRoaXMudHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKCF0eXBlQ29tcGFyZXNUb1R5cGVOYW1lKSB7XG4gICAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcblxuICAgICAgICBzdXBlclR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUncyBuYW1lIGNvbXBhcmVzIHRvIHRoZSAke3R5cGVOYW1lfScgdHlwZSdzIG5hbWUuYCk7XG4gICAgfVxuXG4gICAgaWYgKHN1cGVyVHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZXMoKSB7XG4gICAgbGV0IHN1cGVyVHlwZXNWZXJpZnk7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3VwZXJUeXBlcyA9IFtdLFxuICAgICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXModGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy87XG5cbiAgICAoc3VwZXJUeXBlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZXNTdHJpbmd9JyBzdXBlci10eXBlcy4uLmApIDpcbiAgICAgICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBzdXBlclR5cGVzVmVyaWZ5ID0gdGhpcy5zdXBlclR5cGVzLmV2ZXJ5KChzdXBlclR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHN1cGVyVHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlLCBzdXBlclR5cGVzKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZVZlcmlmaWVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgIGNvbnN0IHN1cGVyVHlwZXNMZW5ndGggPSBzdXBlclR5cGVzLmxlbmd0aDtcblxuICAgICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgc3VwZXJUeXVwZSA9IGJhc2VUeXBlOyAgLy8vXG5cbiAgICAgICAgc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHl1cGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKTtcblxuICAgICAgKHN1cGVyVHlwZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlc1N0cmluZ30nIHN1cGVyLXR5cGVzLmApIDpcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nfScgc2ltcGxlIHR5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlc1ZlcmlmeTtcbiAgfVxuXG4gIHZlcmlmeVR5cGVQcmVmaXgoKSB7XG4gICAgbGV0IHR5cGVQcmVmaXhWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4Li4uYCk7XG5cbiAgICBjb25zdCB0eXBlUHJlZml4ZWQgPSB0aGlzLnR5cGUuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKCF0eXBlUHJlZml4ZWQpIHtcbiAgICAgIHR5cGVQcmVmaXhWZXJpZmllcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuICAgIH1cblxuICAgIGlmICh0eXBlUHJlZml4VmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlUHJlZml4VmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc2ltcGxlVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaW1wbGVUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBzaW1wbGUgdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlUeXBlKCk7XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVzVmVyaWZ5ID0gdGhpcy52ZXJpZnlTdXBlclR5cGVzKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGVzVmVyaWZ5KSB7XG4gICAgICAgIGNvbnN0IHR5cGVQcmVmaXhWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZVByZWZpeCgpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlZml4VmVyaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZ30nIHNpbXBsZSB0eXBlIGRlY2xhcmF0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaW1wbGVUeXBlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlNpbXBsZVR5cGVEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsInN1cGVyVHlwZXMiLCJwcm92aXNpb25hbCIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldFNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwic2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZSIsInZlcmlmeVR5cGUiLCJ0eXBlVmVyaWZpZXMiLCJnZXRDb250ZXh0IiwidHlwZVN0cmluZyIsImdldFN0cmluZyIsInNpbXBsZVR5cGVEZWNsYXJhdGlvblN0cmluZyIsInRyYWNlIiwidHlwZU5hbWUiLCJnZXROYW1lIiwiaW5jbHVkZVJlbGVhc2UiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJkZWJ1ZyIsInZlcmlmeVN1cGVyVHlwZSIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVZlcmlmaWVzIiwic3VwZXJUeXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJwdXNoIiwidmVyaWZ5U3VwZXJUeXBlcyIsInN1cGVyVHlwZXNWZXJpZnkiLCJzdXBlclR5cGVzU3RyaW5nIiwic3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzIiwiZXZlcnkiLCJzdXBlclR5cGVzTGVuZ3RoIiwibGVuZ3RoIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwic3VwZXJUeXVwZSIsInNldFN1cGVyVHlwZXMiLCJ2ZXJpZnlUeXBlUHJlZml4IiwidHlwZVByZWZpeFZlcmlmaWVzIiwidHlwZVByZWZpeGVkIiwiaXNQcmVmaXhlZCIsInZlcmlmeSIsInZlcmlmaWVzIiwiYnJlYWsiLCJhZGRUeXBlIiwiRGVjbGFyYXRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OztrRUFOd0I7d0JBRUQ7c0JBQ3dCO29CQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFbEMsV0FBZUEsSUFBQUEsZ0JBQU0sMENBQUM7O2FBQU1DLHNCQUNkQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsV0FBVztnQ0FEdENOOztnQkFFeEIsa0JBRndCQTtZQUVsQkM7WUFBU0M7WUFBUUM7O1FBRXZCLE1BQUtDLElBQUksR0FBR0E7UUFDWixNQUFLQyxVQUFVLEdBQUdBO1FBQ2xCLE1BQUtDLFdBQVcsR0FBR0E7Ozs7O1lBR3JCQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILFVBQVU7WUFDeEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JB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
@@ -261,11 +261,11 @@ var _default = (0, _elements.define)((_TypePrefixDeclaration = /*#__PURE__*/ fun
261
261
  } else {
262
262
  var typePrefixName = this.typePrefix.getName(), typePrefixPresent = context.isTypePrefixPresentByTypePrefixName(typePrefixName);
263
263
  if (typePrefixPresent) {
264
- context.trace("The '".concat(typePrefixString, "' type prefix is already present."));
264
+ context.debug("The '".concat(typePrefixString, "' type prefix is already present."));
265
265
  } else {
266
266
  var nominalTypeName = typePrefixName, typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
267
267
  if (typePresent) {
268
- context.trace("The '".concat(typePrefixString, "' type is already present."));
268
+ context.debug("The '".concat(typePrefixString, "' type is already present."));
269
269
  } else {
270
270
  typePrefixVerifies = true;
271
271
  }
@@ -283,26 +283,36 @@ var _default = (0, _elements.define)((_TypePrefixDeclaration = /*#__PURE__*/ fun
283
283
  return _async_to_generator(function() {
284
284
  var verifies, context, typePrefixDeclarationString, includeRelease, includeDependencies, types, typesLength, typePrefixVerifies;
285
285
  return _ts_generator(this, function(_state) {
286
- verifies = false;
287
- context = this.getContext(), typePrefixDeclarationString = this.getString(); ///
288
- context.trace("Verifying the '".concat(typePrefixDeclarationString, "' type prefix declaration..."));
289
- includeRelease = true, includeDependencies = false, types = context.getTypes(includeRelease, includeDependencies), typesLength = types.length;
290
- if (typesLength > 0) {
291
- context.debug("Unable to verify the '".concat(typePrefixDeclarationString, "' type prefix declaration because types have already been declared."));
292
- } else {
293
- typePrefixVerifies = this.verifyTypePrefix();
294
- if (typePrefixVerifies) {
295
- context.addTypePrefix(this.typePrefix);
296
- verifies = true;
297
- }
298
- }
299
- if (verifies) {
300
- context.debug("...verified the '".concat(typePrefixDeclarationString, "' type prefix declaration."));
286
+ switch(_state.label){
287
+ case 0:
288
+ verifies = false;
289
+ context = this.getContext();
290
+ return [
291
+ 4,
292
+ this.break(context)
293
+ ];
294
+ case 1:
295
+ _state.sent();
296
+ typePrefixDeclarationString = this.getString(); ///
297
+ context.trace("Verifying the '".concat(typePrefixDeclarationString, "' type prefix declaration..."));
298
+ includeRelease = true, includeDependencies = false, types = context.getTypes(includeRelease, includeDependencies), typesLength = types.length;
299
+ if (typesLength > 0) {
300
+ context.debug("Unable to verify the '".concat(typePrefixDeclarationString, "' type prefix declaration because types have already been declared."));
301
+ } else {
302
+ typePrefixVerifies = this.verifyTypePrefix();
303
+ if (typePrefixVerifies) {
304
+ context.addTypePrefix(this.typePrefix);
305
+ verifies = true;
306
+ }
307
+ }
308
+ if (verifies) {
309
+ context.debug("...verified the '".concat(typePrefixDeclarationString, "' type prefix declaration."));
310
+ }
311
+ return [
312
+ 2,
313
+ verifies
314
+ ];
301
315
  }
302
- return [
303
- 2,
304
- verifies
305
- ];
306
316
  });
307
317
  }).call(this);
308
318
  }
@@ -311,4 +321,4 @@ var _default = (0, _elements.define)((_TypePrefixDeclaration = /*#__PURE__*/ fun
311
321
  return TypePrefixDeclaration;
312
322
  }(_declaration.default), _define_property(_TypePrefixDeclaration, "name", "TypePrefixDeclaration"), _TypePrefixDeclaration));
313
323
 
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGVQcmVmaXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBUeXBlUHJlZml4RGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdHlwZVByZWZpeCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGVQcmVmaXggPSB0eXBlUHJlZml4O1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlUHJlZml4O1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnlUeXBlUHJlZml4KCkge1xuICAgIGxldCB0eXBlUHJlZml4VmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlUHJlZml4U3RyaW5nID0gdGhpcy50eXBlUHJlZml4LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlUHJlZml4U3RyaW5nfScgdHlwZSBwcmVmaXguLi5gKTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXggPSBjb250ZXh0LmdldFR5cGVQcmVmaXgoKTtcblxuICAgIGlmICh0eXBlUHJlZml4ICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgcGFja2FnZSBhbHJlYWR5IGhhcyBhICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeC5gKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICBjb25zdCB0eXBlUHJlZml4TmFtZSA9IHRoaXMudHlwZVByZWZpeC5nZXROYW1lKCksXG4gICAgICAgICAgICB0eXBlUHJlZml4UHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpO1xuXG4gICAgICBpZiAodHlwZVByZWZpeFByZXNlbnQpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeCBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlUHJlZml4TmFtZSwgIC8vL1xuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0eXBlUHJlZml4VmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVQcmVmaXhWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeFZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGVQcmVmaXhEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZVByZWZpeERlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBwcmVmaXggZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSxcbiAgICAgICAgICBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKSxcbiAgICAgICAgICB0eXBlc0xlbmd0aCA9IHR5cGVzLmxlbmd0aDtcblxuICAgIGlmICh0eXBlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3R5cGVQcmVmaXhEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgcHJlZml4IGRlY2xhcmF0aW9uIGJlY2F1c2UgdHlwZXMgaGF2ZSBhbHJlYWR5IGJlZW4gZGVjbGFyZWQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVQcmVmaXhWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZVByZWZpeCgpO1xuXG4gICAgICBpZiAodHlwZVByZWZpeFZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuYWRkVHlwZVByZWZpeCh0aGlzLnR5cGVQcmVmaXgpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlUHJlZml4RGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIHByZWZpeCBkZWNsYXJhdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZVByZWZpeERlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJUeXBlUHJlZml4RGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsInR5cGVQcmVmaXgiLCJnZXRUeXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJ0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5VHlwZVByZWZpeCIsInR5cGVQcmVmaXhWZXJpZmllcyIsImdldENvbnRleHQiLCJ0eXBlUHJlZml4U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0eXBlUHJlZml4TmFtZSIsImdldE5hbWUiLCJ0eXBlUHJlZml4UHJlc2VudCIsImlzVHlwZVByZWZpeFByZXNlbnRCeVR5cGVQcmVmaXhOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJkZWJ1ZyIsInZlcmlmeSIsInZlcmlmaWVzIiwidHlwZVByZWZpeERlY2xhcmF0aW9uU3RyaW5nIiwiaW5jbHVkZVJlbGVhc2UiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwidHlwZXMiLCJ0eXBlc0xlbmd0aCIsImdldFR5cGVzIiwibGVuZ3RoIiwiYWRkVHlwZVByZWZpeCIsIkRlY2xhcmF0aW9uIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFBOzs7a0VBSndCO3dCQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGVQcmVmaXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBUeXBlUHJlZml4RGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdHlwZVByZWZpeCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGVQcmVmaXggPSB0eXBlUHJlZml4O1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlUHJlZml4O1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnlUeXBlUHJlZml4KCkge1xuICAgIGxldCB0eXBlUHJlZml4VmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlUHJlZml4U3RyaW5nID0gdGhpcy50eXBlUHJlZml4LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlUHJlZml4U3RyaW5nfScgdHlwZSBwcmVmaXguLi5gKTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXggPSBjb250ZXh0LmdldFR5cGVQcmVmaXgoKTtcblxuICAgIGlmICh0eXBlUHJlZml4ICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgcGFja2FnZSBhbHJlYWR5IGhhcyBhICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeC5gKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICBjb25zdCB0eXBlUHJlZml4TmFtZSA9IHRoaXMudHlwZVByZWZpeC5nZXROYW1lKCksXG4gICAgICAgICAgICB0eXBlUHJlZml4UHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpO1xuXG4gICAgICBpZiAodHlwZVByZWZpeFByZXNlbnQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeCBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlUHJlZml4TmFtZSwgIC8vL1xuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0eXBlUHJlZml4VmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVQcmVmaXhWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeFZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXhEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZVByZWZpeERlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBwcmVmaXggZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSxcbiAgICAgICAgICBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKSxcbiAgICAgICAgICB0eXBlc0xlbmd0aCA9IHR5cGVzLmxlbmd0aDtcblxuICAgIGlmICh0eXBlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3R5cGVQcmVmaXhEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgcHJlZml4IGRlY2xhcmF0aW9uIGJlY2F1c2UgdHlwZXMgaGF2ZSBhbHJlYWR5IGJlZW4gZGVjbGFyZWQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVQcmVmaXhWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZVByZWZpeCgpO1xuXG4gICAgICBpZiAodHlwZVByZWZpeFZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuYWRkVHlwZVByZWZpeCh0aGlzLnR5cGVQcmVmaXgpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlUHJlZml4RGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIHByZWZpeCBkZWNsYXJhdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZVByZWZpeERlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJUeXBlUHJlZml4RGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsInR5cGVQcmVmaXgiLCJnZXRUeXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJ0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5VHlwZVByZWZpeCIsInR5cGVQcmVmaXhWZXJpZmllcyIsImdldENvbnRleHQiLCJ0eXBlUHJlZml4U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0eXBlUHJlZml4TmFtZSIsImdldE5hbWUiLCJ0eXBlUHJlZml4UHJlc2VudCIsImlzVHlwZVByZWZpeFByZXNlbnRCeVR5cGVQcmVmaXhOYW1lIiwiZGVidWciLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZSIsInZlcmlmeSIsInZlcmlmaWVzIiwidHlwZVByZWZpeERlY2xhcmF0aW9uU3RyaW5nIiwiaW5jbHVkZVJlbGVhc2UiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwidHlwZXMiLCJ0eXBlc0xlbmd0aCIsImJyZWFrIiwiZ2V0VHlwZXMiLCJsZW5ndGgiLCJhZGRUeXBlUHJlZml4IiwiRGVjbGFyYXRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7OztrRUFKd0I7d0JBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -294,16 +294,14 @@ var _default = (0, _elements.define)((_VariableDeclaration = /*#__PURE__*/ funct
294
294
  var variableVerifies = false;
295
295
  var context = this.getContext(), variableString = this.variable.getString(), variableDeclarationString = this.getString(); ///
296
296
  context.trace("Verifying the '".concat(variableDeclarationString, "' variable declaration's '").concat(variableString, "' variable..."));
297
- var variableIdentifier = this.variable.getIdentifier(), variable = context.findVariableByVariableIdentifier(variableIdentifier), variablePresent = variable !== null;
297
+ var variableIdentifier = this.variable.getIdentifier(), variablePresent = context.isVariablePresentByVariableIdentifier(variableIdentifier);
298
298
  if (variablePresent) {
299
- var variableIdentifier1 = variable.getIdentifier();
300
- context.debug("The '".concat(variableIdentifier1, "' variable is already present."));
299
+ context.debug("The '".concat(variableString, "' variable is already present."));
301
300
  } else {
302
- this.variable.setType(this.type);
303
301
  variableVerifies = true;
304
302
  }
305
303
  if (variableVerifies) {
306
- context.trace("...verified the '".concat(variableDeclarationString, "' variable declaration's '").concat(variableString, "' variable."));
304
+ context.debug("...verified the '".concat(variableDeclarationString, "' variable declaration's '").concat(variableString, "' variable."));
307
305
  }
308
306
  return variableVerifies;
309
307
  }
@@ -350,4 +348,4 @@ var _default = (0, _elements.define)((_VariableDeclaration = /*#__PURE__*/ funct
350
348
  return VariableDeclaration;
351
349
  }(_declaration.default), _define_property(_VariableDeclaration, "name", "VariableDeclaration"), _VariableDeclaration));
352
350
 
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCB2YXJpYWJsZSwgcHJvdmlzaW9uYWwpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnZhcmlhYmxlID0gdmFyaWFibGU7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5VHlwZSgpIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSAodHlwZSAhPT0gbnVsbClcblxuICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCA9IHR5cGUuY29tcGFyZVByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgdGhpcy5wcm92aXNpb25hbCA/XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IG5vdCBwcm92aXNpb25hbC5gKSA6XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgcHJvdmlzaW9uYWwuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhcmlhYmxlLnNldFR5cGUodHlwZSk7XG5cbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVZhcmlhYmxlKCkge1xuICAgIGxldCAgdmFyaWFibGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdGhpcy52YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRoaXMudmFyaWFibGUuZ2V0SWRlbnRpZmllcigpLFxuICAgICAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9ICh2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICBpZiAodmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZUlkZW50aWZpZXJ9JyB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFyaWFibGUuc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICB2YXJpYWJsZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIHZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZVZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGUoKTtcblxuICAgIGlmICh0eXBlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVZhcmlhYmxlKCk7XG5cbiAgICAgIGlmICh2YXJpYWJsZVZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuYWRkVmFyaWFibGUodGhpcy52YXJpYWJsZSk7XG5cbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiVmFyaWFibGVEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsInZhcmlhYmxlIiwicHJvdmlzaW9uYWwiLCJnZXRUeXBlIiwiZ2V0VmFyaWFibGUiLCJpc1Byb3Zpc2lvbmFsIiwiZ2V0VmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwidHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSIsInZlcmlmeVR5cGUiLCJ0eXBlVmVyaWZpZXMiLCJnZXRDb250ZXh0IiwidHlwZVN0cmluZyIsImdldFN0cmluZyIsInZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmciLCJ0cmFjZSIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImRlYnVnIiwidHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcm92aXNpb25hbCIsInNldFR5cGUiLCJ2ZXJpZnlWYXJpYWJsZSIsInZhcmlhYmxlVmVyaWZpZXMiLCJ2YXJpYWJsZVN0cmluZyIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlUHJlc2VudCIsInZlcmlmeSIsInZlcmlmaWVzIiwiYnJlYWsiLCJhZGRW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
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCB2YXJpYWJsZSwgcHJvdmlzaW9uYWwpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnZhcmlhYmxlID0gdmFyaWFibGU7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5VHlwZSgpIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSAodHlwZSAhPT0gbnVsbClcblxuICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCA9IHR5cGUuY29tcGFyZVByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgdGhpcy5wcm92aXNpb25hbCA/XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IG5vdCBwcm92aXNpb25hbC5gKSA6XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgcHJvdmlzaW9uYWwuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhcmlhYmxlLnNldFR5cGUodHlwZSk7XG5cbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVZhcmlhYmxlKCkge1xuICAgIGxldCAgdmFyaWFibGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdGhpcy52YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRoaXMudmFyaWFibGUuZ2V0SWRlbnRpZmllcigpLFxuICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJpYWJsZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFyaWFibGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlVmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZSgpO1xuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29uc3QgdmFyaWFibGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VmFyaWFibGUoKTtcblxuICAgICAgaWYgKHZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5hZGRWYXJpYWJsZSh0aGlzLnZhcmlhYmxlKTtcblxuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJWYXJpYWJsZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJWYXJpYWJsZURlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0eXBlIiwidmFyaWFibGUiLCJwcm92aXNpb25hbCIsImdldFR5cGUiLCJnZXRWYXJpYWJsZSIsImlzUHJvdmlzaW9uYWwiLCJnZXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJ0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5VHlwZSIsInR5cGVWZXJpZmllcyIsImdldENvbnRleHQiLCJ0eXBlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyIsInRyYWNlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVQcmVzZW50IiwiZGVidWciLCJ0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsIiwiY29tcGFyZVByb3Zpc2lvbmFsIiwic2V0VHlwZSIsInZlcmlmeVZhcmlhYmxlIiwidmFyaWFibGVWZXJpZmllcyIsInZhcmlhYmxlU3RyaW5nIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllciIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImJyZWFrIiwiYWRkVmFyaWFibGUiLCJEZWNsYXJhdGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBQTs7O2tFQUp3Qjt3QkFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXZCLFdBQWVBLElBQUFBLGdCQUFNLHdDQUFDOzthQUFNQyxvQkFDZEMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLFdBQVc7Z0NBRHBDTjs7Z0JBRXhCLGtCQUZ3QkE7WUFFbEJDO1lBQVNDO1lBQVFDOztRQUV2QixNQUFLQyxJQUFJLEdBQUdBO1FBQ1osTUFBS0MsUUFBUSxHQUFHQTtRQUNoQixNQUFLQyxXQUFXLEdBQUdBOzs7OztZQUdyQkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSCxJQUFJO1lBQ2xCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSCxRQUFRO1lBQ3RCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSCxXQUFXO1lBQ3pCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1QLE9BQU8sSUFBSSxDQUFDUSxPQUFPLElBQ25CQyw0QkFBNEJULE1BQU0sR0FBRztnQkFFM0MsT0FBT1M7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJQyxlQUFlO2dCQUVuQixJQUFNYixVQUFVLElBQUksQ0FBQ2MsVUFBVTtnQkFFL0IsSUFBTUMsYUFBYSxJQUFJLENBQUNaLElBQUksQ0FBQ2EsU0FBUyxJQUNoQ0MsNEJBQTRCLElBQUksQ0FBQ0QsU0FBUyxJQUFJLEdBQUc7Z0JBRXZEaEIsUUFBUWtCLEtBQUssQ0FBQyxBQUFDLGtCQUF1RUgsT0FBdERFLDJCQUEwQiw4QkFBdUMsT0FBWEYsWUFBVztnQkFFakcsSUFBTUksa0JBQWtCLElBQUksQ0FBQ2hCLElBQUksQ0FBQ2lCLGtCQUFrQixJQUM5Q2pCLE9BQU9ILFFBQVFxQix5QkFBeUIsQ0FBQ0Ysa0JBQ3pDRyxjQUFlbkIsU0FBUztnQkFFOUIsSUFBSSxDQUFDbUIsYUFBYTtvQkFDaEJ0QixRQUFRdUIsS0FBSyxDQUFDLEFBQUMsUUFBa0IsT0FBWFIsWUFBVztnQkFDbkMsT0FBTztvQkFDTCxJQUFNUyw0QkFBNEJyQixLQUFLc0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDcEIsV0FBVztvQkFFMUUsSUFBSSxDQUFDbUIsMkJBQTJCO3dCQUM5QixJQUFJLENBQUNuQixXQUFXLEdBQ2RMLFFBQVF1QixLQUFLLENBQUMsQUFBQyxRQUE2RFIsT0FBdERFLDJCQUEwQiw4QkFBdUMsT0FBWEYsWUFBVyw2Q0FDckZmLFFBQVF1QixLQUFLLENBQUMsQUFBQyxRQUE2RFIsT0FBdERFLDJCQUEwQiw4QkFBdUMsT0FBWEYsWUFBVztvQkFDN0YsT0FBTzt3QkFDTCxJQUFJLENBQUNYLFFBQVEsQ0FBQ3NCLE9BQU8sQ0FBQ3ZCO3dCQUV0QlUsZUFBZTtvQkFDakI7Z0JBQ0Y7Z0JBRUEsSUFBSUEsY0FBYztvQkFDaEJiLFFBQVF1QixLQUFLLENBQUMsQUFBQyxvQkFBeUVSLE9BQXRERSwyQkFBMEIsOEJBQXVDLE9BQVhGLFlBQVc7Z0JBQ3JHO2dCQUVBLE9BQU9GO1lBQ1Q7OztZQUVBYyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBS0MsbUJBQW1CO2dCQUV4QixJQUFNNUIsVUFBVSxJQUFJLENBQUNjLFVBQVUsSUFDekJlLGlCQUFpQixJQUFJLENBQUN6QixRQUFRLENBQUNZLFNBQVMsSUFDeENDLDRCQUE0QixJQUFJLENBQUNELFNBQVMsSUFBSSxHQUFHO2dCQUV2RGhCLFFBQVFrQixLQUFLLENBQUMsQUFBQyxrQkFBdUVXLE9BQXREWiwyQkFBMEIsOEJBQTJDLE9BQWZZLGdCQUFlO2dCQUVyRyxJQUFNQyxxQkFBcUIsSUFBSSxDQUFDMUIsUUFBUSxDQUFDMkIsYUFBYSxJQUNoREMsa0JBQWtCaEMsUUFBUWlDLHFDQUFxQyxDQUFDSDtnQkFFdEUsSUFBSUUsaUJBQWlCO29CQUNuQmhDLFFBQVF1QixLQUFLLENBQUMsQUFBQyxRQUFzQixPQUFmTSxnQkFBZTtnQkFDdkMsT0FBTztvQkFDTEQsbUJBQW1CO2dCQUNyQjtnQkFFQSxJQUFJQSxrQkFBa0I7b0JBQ3BCNUIsUUFBUXVCLEtBQUssQ0FBQyxBQUFDLG9CQUF5RU0sT0FBdERaLDJCQUEwQiw4QkFBMkMsT0FBZlksZ0JBQWU7Z0JBQ3pHO2dCQUVBLE9BQU9EO1lBQ1Q7OztZQUVNTSxLQUFBQTttQkFBTixTQUFNQTs7d0JBQ0FDLFVBRUVuQyxTQUlBaUIsMkJBSUFKLGNBR0VlOzs7O2dDQWJKTyxXQUFXO2dDQUVUbkMsVUFBVSxJQUFJLENBQUNjLFVBQVU7Z0NBRS9COztvQ0FBTSxJQUFJLENBQUNzQixLQUFLLENBQUNwQzs7O2dDQUFqQjtnQ0FFTWlCLDRCQUE0QixJQUFJLENBQUNELFNBQVMsSUFBSSxHQUFHO2dDQUV2RGhCLFFBQVFrQixLQUFLLENBQUMsQUFBQyxrQkFBMkMsT0FBMUJELDJCQUEwQjtnQ0FFcERKLGVBQWUsSUFBSSxDQUFDRCxVQUFVO2dDQUVwQyxJQUFJQyxjQUFjO29DQUNWZSxtQkFBbUIsSUFBSSxDQUFDRCxjQUFjO29DQUU1QyxJQUFJQyxrQkFBa0I7d0NBQ3BCNUIsUUFBUXFDLFdBQVcsQ0FBQyxJQUFJLENBQUNqQyxRQUFRO3dDQUVqQytCLFdBQVc7b0NBQ2I7Z0NBQ0Y7Z0NBRUEsSUFBSUEsVUFBVTtvQ0FDWm5DLFFBQVF1QixLQUFLLENBQUMsQUFBQyxvQkFBNkMsT0FBMUJOLDJCQUEwQjtnQ0FDOUQ7Z0NBRUE7O29DQUFPa0I7Ozs7Z0JBQ1Q7Ozs7O0VBdEhzREcsb0JBQVcsR0F3SGpFLHVDQUFPQyxRQUFPIn0=