@kontur.candy/tools 2.163.0 → 2.164.0

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 (34) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/distr/Common/CandyApiClient/CandyApiClient.js +18 -1
  3. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +10 -1
  4. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
  5. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +15 -0
  6. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +19 -0
  7. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +15 -0
  8. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +15 -0
  9. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +13 -0
  10. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +15 -0
  11. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +15 -0
  12. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +15 -0
  13. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +21 -0
  14. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +15 -0
  15. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +19 -0
  16. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +15 -0
  17. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +6 -0
  18. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +26 -0
  19. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +6 -0
  20. package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +16 -0
  21. package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +16 -0
  22. package/distr/Common/RngSchemeTypes/types.js +6 -0
  23. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +2 -2
  24. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +8 -1
  25. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -2
  26. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -2
  27. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  28. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  29. package/distr/Tools/src/SelfUpdate.js +3 -3
  30. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +35 -30
  31. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  32. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +6 -1
  33. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  34. package/package.json +7 -7
@@ -386,7 +386,7 @@
386
386
  if (this._bodyFormData) throw new Error("could not read FormData body as text");
387
387
  return Promise.resolve(this._bodyText);
388
388
  }, n.formData && (this.formData = function () {
389
- return this.text().then(_);
389
+ return this.text().then(g);
390
390
  }), this.json = function () {
391
391
  return this.text().then(JSON.parse);
392
392
  }, this;
@@ -422,12 +422,12 @@
422
422
  }), l(e);
423
423
  }, n.iterable && (c.prototype[Symbol.iterator] = c.prototype.entries);
424
424
  var h = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
425
- function g(e, r) {
426
- if (!(this instanceof g)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
425
+ function _(e, r) {
426
+ if (!(this instanceof _)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
427
427
  var t,
428
428
  o,
429
429
  n = (r = r || {}).body;
430
- if (e instanceof g) {
430
+ if (e instanceof _) {
431
431
  if (e.bodyUsed) throw new TypeError("Already read");
432
432
  this.url = e.url, this.credentials = e.credentials, r.headers || (this.headers = new c(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, n || null == e._bodyInit || (n = e._bodyInit, e.bodyUsed = !0);
433
433
  } else this.url = String(e);
@@ -437,7 +437,7 @@
437
437
  i.test(this.url) ? this.url = this.url.replace(i, "$1_=" + new Date().getTime()) : this.url += (/\?/.test(this.url) ? "&" : "?") + "_=" + new Date().getTime();
438
438
  }
439
439
  }
440
- function _(e) {
440
+ function g(e) {
441
441
  var r = new FormData();
442
442
  return e.trim().split("&").forEach(function (e) {
443
443
  if (e) {
@@ -452,11 +452,11 @@
452
452
  if (!(this instanceof v)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
453
453
  r || (r = {}), this.type = "default", this.status = void 0 === r.status ? 200 : r.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === r.statusText ? "" : "" + r.statusText, this.headers = new c(r.headers), this.url = r.url || "", this._initBody(e);
454
454
  }
455
- g.prototype.clone = function () {
456
- return new g(this, {
455
+ _.prototype.clone = function () {
456
+ return new _(this, {
457
457
  body: this._bodyInit
458
458
  });
459
- }, m.call(g.prototype), m.call(v.prototype), v.prototype.clone = function () {
459
+ }, m.call(_.prototype), m.call(v.prototype), v.prototype.clone = function () {
460
460
  return new v(this._bodyInit, {
461
461
  status: this.status,
462
462
  statusText: this.statusText,
@@ -492,7 +492,7 @@
492
492
  }
493
493
  function E(e, r) {
494
494
  return new Promise(function (t, i) {
495
- var a = new g(e, r);
495
+ var a = new _(e, r);
496
496
  if (a.signal && a.signal.aborted) return i(new w("Aborted", "AbortError"));
497
497
  var u = new XMLHttpRequest();
498
498
  function l() {
@@ -547,7 +547,7 @@
547
547
  }), u.send(void 0 === a._bodyInit ? null : a._bodyInit);
548
548
  });
549
549
  }
550
- E.polyfill = !0, o.fetch || (o.fetch = E, o.Headers = c, o.Request = g, o.Response = v);
550
+ E.polyfill = !0, o.fetch || (o.fetch = E, o.Headers = c, o.Request = _, o.Response = v);
551
551
  var C,
552
552
  k = t(255),
553
553
  P = t(412),
@@ -608,15 +608,15 @@
608
608
  return o;
609
609
  }
610
610
  function F() {}
611
- function H(e) {
611
+ function M(e) {
612
612
  return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
613
613
  }
614
- function M() {
614
+ function U() {
615
615
  var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
616
616
  r = t.g.CF.keformsUrl || "";
617
617
  return "".concat(r, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
618
618
  }
619
- function U(e, r) {
619
+ function D(e, r) {
620
620
  if (void 0 === r) return e;
621
621
  for (var t = [], o = 0, n = Object.keys(r); o < n.length; o++) {
622
622
  var i = n[o],
@@ -625,7 +625,7 @@
625
625
  }
626
626
  return 0 === t.length ? e : e + "?" + t.join("&");
627
627
  }
628
- function D(e) {
628
+ function H(e) {
629
629
  return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-._]+"), ")$")).test(t.g.location.host);
630
630
  }
631
631
  function G(e) {
@@ -696,13 +696,13 @@
696
696
  resourceZone: e.resourceZone
697
697
  };
698
698
  s.push(function (e) {
699
- return P.e.styleSheet(M(U("static/public/styles/".concat(o).concat(u, ".css"), l)), !0, e);
699
+ return P.e.styleSheet(U(D("static/public/styles/".concat(o).concat(u, ".css"), l)), !0, e);
700
700
  }), s.push(function (e) {
701
- return P.e.script(M(U("static/public/scripts/".concat(o).concat(u, ".js"), l)), e);
701
+ return P.e.script(U(D("static/public/scripts/".concat(o).concat(u, ".js"), l)), e);
702
702
  }), a && s.push(function (e) {
703
- return P.e.styleSheet(M(U("static/public/styles/candy_".concat(n).concat(u, ".css"), l)), !1, e);
703
+ return P.e.styleSheet(U(D("static/public/styles/candy_".concat(n).concat(u, ".css"), l)), !1, e);
704
704
  }, function (e) {
705
- return P.e.script(M(U("static/public/scripts/candy_".concat(n).concat(u, ".js"), l)), e);
705
+ return P.e.script(U(D("static/public/scripts/candy_".concat(n).concat(u, ".js"), l)), e);
706
706
  }), x(s, r);
707
707
  }
708
708
  }
@@ -723,9 +723,9 @@
723
723
  a = null,
724
724
  u = r.ns,
725
725
  s = r.draftId;
726
- if (D(O.Z.konturDomains) ? O.Z.authorized ? s ? u || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
726
+ if (H(O.Z.konturDomains) ? O.Z.authorized ? s ? u || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
727
727
  var l = null !== (o = r.resourceZone) && void 0 !== o ? o : G("resourceZone"),
728
- c = U(M((0, A.m)({
728
+ c = D(U((0, A.m)({
729
729
  ns: u,
730
730
  draftId: s
731
731
  })), {
@@ -789,10 +789,10 @@
789
789
  W = {
790
790
  start: q,
791
791
  entryPoint: {},
792
- partialRenderingForIE8: H("{partialRenderingForIE8}"),
792
+ partialRenderingForIE8: M("{partialRenderingForIE8}"),
793
793
  keformsUrl: "{keformsUrl}"
794
794
  };
795
- t.g.CF = W, (K = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (K.register(F, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(H, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(M, "url", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(U, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(D, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(G, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(x, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(function (e, r) {
795
+ t.g.CF = W, (K = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (K.register(F, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(M, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(U, "url", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(D, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(H, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(G, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(x, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(function (e, r) {
796
796
  try {
797
797
  var t,
798
798
  o,
@@ -915,9 +915,9 @@
915
915
  return this;
916
916
  });
917
917
  var h = Object.getPrototypeOf,
918
- g = h && h(h(A([])));
919
- g && g !== r && t.call(g, i) && (m = g);
920
- var _ = y.prototype = d.prototype = Object.create(m);
918
+ _ = h && h(h(A([])));
919
+ _ && _ !== r && t.call(_, i) && (m = _);
920
+ var g = y.prototype = d.prototype = Object.create(m);
921
921
  function v(e) {
922
922
  ["next", "throw", "return"].forEach(function (r) {
923
923
  s(e, r, function (e) {
@@ -1040,7 +1040,7 @@
1040
1040
  done: !0
1041
1041
  };
1042
1042
  }
1043
- return p.prototype = y, o(_, "constructor", {
1043
+ return p.prototype = y, o(g, "constructor", {
1044
1044
  value: y,
1045
1045
  configurable: !0
1046
1046
  }), o(y, "constructor", {
@@ -1050,7 +1050,7 @@
1050
1050
  var r = "function" == typeof e && e.constructor;
1051
1051
  return !!r && (r === p || "GeneratorFunction" === (r.displayName || r.name));
1052
1052
  }, e.mark = function (e) {
1053
- return Object.setPrototypeOf ? Object.setPrototypeOf(e, y) : (e.__proto__ = y, s(e, u, "GeneratorFunction")), e.prototype = Object.create(_), e;
1053
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, y) : (e.__proto__ = y, s(e, u, "GeneratorFunction")), e.prototype = Object.create(g), e;
1054
1054
  }, e.awrap = function (e) {
1055
1055
  return {
1056
1056
  __await: e
@@ -1063,9 +1063,9 @@
1063
1063
  return e.isGeneratorFunction(t) ? a : a.next().then(function (e) {
1064
1064
  return e.done ? e.value : a.next();
1065
1065
  });
1066
- }, v(_), s(_, u, "Generator"), s(_, i, function () {
1066
+ }, v(g), s(g, u, "Generator"), s(g, i, function () {
1067
1067
  return this;
1068
- }), s(_, "toString", function () {
1068
+ }), s(g, "toString", function () {
1069
1069
  return "[object Generator]";
1070
1070
  }), e.keys = function (e) {
1071
1071
  var r = Object(e),
@@ -1530,6 +1530,11 @@
1530
1530
  value: function (e) {
1531
1531
  throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1532
1532
  }
1533
+ }, {
1534
+ key: "createDnp",
1535
+ value: function () {
1536
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1537
+ }
1533
1538
  }, {
1534
1539
  key: "__reactstandin__regenerateByEval",
1535
1540
  value: function __reactstandin__regenerateByEval(key, code) {
@@ -1650,4 +1655,4 @@
1650
1655
  };
1651
1656
  var __webpack_exports__ = __webpack_require__(133);
1652
1657
  })();
1653
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwidCIsImQiLCJyIiwibSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiTnVtYmVyIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJfY3JlYXRlU3VwZXIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2dldFByb3RvdHlwZU9mIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiTWFwIiwiX2lzTmF0aXZlRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJfY29uc3RydWN0IiwiYmluZCIsInB1c2giLCJGdW5jdGlvbiIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwidG9TdHJpbmciLCJpbmRleE9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsIm5qIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIl9fc2lnbmF0dXJlX18iLCJBcHBsaWNhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3N1cGVyIiwibmFtZSIsIl9fcmVhY3RzdGFuZGluX19yZWdlbmVyYXRlQnlFdmFsIiwiY29kZSIsImV2YWwiLCJFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yIiwiX3N1cGVyMiIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiX3N1cGVyMyIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yMyIsIl9zdXBlcjQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNCIsIl9zdXBlcjUiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsIl9zdXBlcjYiLCJyZWFjdEhvdExvYWRlciIsInUiLCJzIiwibCIsImMiLCJmIiwiZDEiLCJtZXNzYWdlIiwidHJpbSIsInNsaWNlIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiYm9keVVzZWQiLCJQcm9taXNlIiwicmVqZWN0Iiwib25sb2FkIiwicmVzdWx0Iiwib25lcnJvciIsImVycm9yIiwicCIsIkZpbGVSZWFkZXIiLCJyZWFkQXNBcnJheUJ1ZmZlciIsInkiLCJVaW50OEFycmF5IiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJEYXRhVmlldyIsIl9ib2R5QXJyYXlCdWZmZXIiLCJoZWFkZXJzIiwidHlwZSIsInJlc29sdmUiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsIl8iLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiZGVsZXRlIiwiaGFzT3duUHJvcGVydHkiLCJrZXlzIiwidmFsdWVzIiwiZW50cmllcyIsImgiLCJnIiwiYm9keSIsInVybCIsImNyZWRlbnRpYWxzIiwibWV0aG9kIiwibW9kZSIsInNpZ25hbCIsInRvVXBwZXJDYXNlIiwicmVmZXJyZXIiLCJjYWNoZSIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsInNwbGl0IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidiIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwidyIsIkRPTUV4Y2VwdGlvbiIsInN0YWNrIiwiRSIsImFib3J0ZWQiLCJYTUxIdHRwUmVxdWVzdCIsImFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic3Vic3RyIiwicmVzcG9uc2VVUkwiLCJyZXNwb25zZSIsInJlc3BvbnNlVGV4dCIsInNldFRpbWVvdXQiLCJvbnRpbWVvdXQiLCJvbmFib3J0Iiwib3BlbiIsImhyZWYiLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZXNwb25zZVR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsInBvbHlmaWxsIiwiZmV0Y2giLCJIZWFkZXJzIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiQyIsImsiLCJQIiwiQSIsIk8iLCJMIiwiUyIsIkIiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJUIiwiaiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSSIsIkYiLCJIIiwiTSIsIkNGIiwia2Vmb3Jtc1VybCIsIlUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJEIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJOIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwicmVzb3VyY2Vab25lIiwic3R5bGVTaGVldCIsInNjcmlwdCIsIlIiLCJwdWJsaWNGb3JtIiwiY2F0Y2giLCJWIiwicSIsIloiLCJrb250dXJEb21haW5zIiwiYXV0aG9yaXplZCIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsIkF1dGhvcml6YXRpb24iLCJjYXVsZHJvbkFwaVVybCIsImlzVGVzdFNlcnZlciIsInJlbmRlckNhY2hpbmdGb3JJRTgiLCJub3JtYWxpemF0aW9uT25TZXJ2ZXIiLCJub3JtYXRpdmVVcmwiLCJmZWVkYmFja0VuYWJsZWQiLCJpc0Rpc2FibGVkQ2xlYW5Gb3JtIiwiaXNEaXNhYmxlZENsb3NlQnV0dG9uIiwiaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiIsInRoZW1lIiwidGVtcGxhdGVzQXBpIiwicmVuZGVyRm9ybSIsIksiLCJXIiwic3RhcnQiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwicGFyc2VJbnQiLCJjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIiwiX0NvbW1vbl9FcnJvcnNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJhcmciLCJ3cmFwIiwiX2ludm9rZSIsIl9fYXdhaXQiLCJkZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIm93bktleXMiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJtYXBDaHVua1ZhbHVlcyIsInJlZHVjZUNodW5rVmFsdWVzIiwicmVkdWNlIiwiTGVnYWN5UHVibGljRm9ybSIsImZvcm0iLCJfcmVsb2FkSW5uZXIiLCJfSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCJ2YXIgZ2xvYmFsID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpXG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGdsb2JhbCxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGdsb2JhbCAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZ2xvYmFsICYmXG4gICAgJ0Jsb2InIGluIGdsb2JhbCAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZ2xvYmFsLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnbG9iYWxcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbFxuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGdsb2JhbC5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPyBnbG9iYWwubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXIgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykuaW5kZXhPZignYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnbG9iYWwuZmV0Y2gpIHtcbiAgZ2xvYmFsLmZldGNoID0gZmV0Y2hcbiAgZ2xvYmFsLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGdsb2JhbC5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnbG9iYWwuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcbmltcG9ydCB7IEFsbEljb25OYW1lcyB9IGZyb20gXCJyZWFjdC11aVwiO1xuXG5pbXBvcnQgeyBFcnJvckZpcnN0Q2FsbGJhY2ssIHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB7IExvYWRJbnRvRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9Mb2FkSW50b0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50IH0gZnJvbSBcIi4uL1R5cGVzL0lLZVdlYlRlbXBsYXRlc0FwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnREcmFmdEluZm9SZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0NsaWVudERyYWZ0SW5mb1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBnZXRDbGllbnREcmFmdEluZm9VcmwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmxcIjtcbmltcG9ydCB7IEFVT09wdGlvbnMgfSBmcm9tIFwiLi4vVHlwZXMvQVVPT3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRFdmVudHNTdGF0aWMgfSBmcm9tIFwiLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL0xheW91dEV2ZW50cy9MYXlvdXRFdmVudHNcIjtcblxuaW1wb3J0IHsgY2xpZW50U2V0dGluZ3MgfSBmcm9tIFwiLi9DbGllbnRTZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlTGVnYWN5UHVibGljRm9ybSB9IGZyb20gXCIuL0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybVwiO1xuXG50eXBlIEZvcm1Db250YWluZXIgPSBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxudHlwZSBFbmdpbmVFbnRyeVBvaW50ID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25EZXNjcmlwdGlvbiB7XG4gICAgaWNvbjogQWxsSWNvbk5hbWVzO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgICBoaW50PzogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGlkPzogc3RyaW5nO1xuICAgIHdlaWdodDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVuZGVyRm9ybVNldHRpbmdzIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBlbmdpbmVWZXJzaW9uPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZW5kZXJGb3JtOiB1bmRlZmluZWQgfCBFbmdpbmVFbnRyeVBvaW50O1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xufVxuXG50eXBlIFN0YXJ0Rm9ybUZ1bmMgPSAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncykgPT4gUHJvbWlzZTxJRm9ybT47XG5cbmludGVyZmFjZSBDYW5keUdsb2JhbEluamVjdGVkVmFyIHtcbiAgICBzdGFydDogKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLCBjYWxsYmFjaz86IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4pID0+IHZvaWQ7XG4gICAga2Vmb3Jtc1VybD86IHN0cmluZztcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBib29sZWFuO1xuICAgIGVudHJ5UG9pbnQ6IHsgW2tleTogc3RyaW5nXTogU3RhcnRGb3JtRnVuYyB9O1xuICAgIGxvYWRFcnJvcj86IHVua25vd247XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICAgICAgaW50ZXJmYWNlIEdsb2JhbCB7XG4gICAgICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IFdpbmRvdztcblxuZnVuY3Rpb24gZGVmYXVsdENhbGxiYWNrKCk6IHZvaWQge1xuICAgIC8qIGVtcHR5ICovXG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gdXJsKHJlbGF0aXZlVXJsOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2xvYmFsLkNGLmtlZm9ybXNVcmwgfHwgXCJcIjtcblxuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3JlbGF0aXZlVXJsfWAucmVwbGFjZSgvKFteOl0pXFwvezIsfS9nLCBcIiQxL1wiKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogdW5kZWZpbmVkIHwgc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHBhcmFtVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBxdWVyeVBhcnRzLnB1c2goYCR7cGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnlQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCI/XCIgKyBxdWVyeVBhcnRzLmpvaW4oXCImXCIpO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWQoZG9tYWluczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oPzoke2RvbWFpbnMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiW2EtejAtOS0uX10rXCIpfSkkYCkudGVzdChcbiAgICAgICAgZ2xvYmFsLmxvY2F0aW9uLmhvc3RcbiAgICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoZ2xvYmFsLmxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL14oXFw/fCN8JikvLCBcIlwiKVxuICAgICAgICAgICAgLnNwbGl0KFwiJlwiKVxuICAgICAgICAgICAgLm1hcChwYXJhbSA9PiBwYXJhbS5yZXBsYWNlKC9cXCsvZywgXCIgXCIpLnNwbGl0KFwiPVwiKS5tYXAoZGVjb2RlVVJJQ29tcG9uZW50KSlcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp0cmlwbGUtZXF1YWxzXG4gICAgICAgICAgICAuZmluZCgoW2tleV0pID0+IGtleSA9PSBuYW1lKSB8fCBbXSlbMV1cbiAgICApO1xufVxuXG50eXBlIFRhc2sgPSAoY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiBydW5QYXJhbGxlbCh0YXNrczogVGFza1tdLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgY29tcGxldGVkID0gMDtcblxuICAgIHRhc2tzLmZvckVhY2godGFzayA9PiB7XG4gICAgICAgIHRhc2soZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gdGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkID0gdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbXBsZXRlZCArPSAxO1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gdGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmludGVyZmFjZSBTdGFydEZvcm1TZXR0aW5nIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBlbmdpbmVWZXJzaW9uPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBsZWZ0TnVtYmVycyA9IGxlZnRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0TnVtYmVycyA9IHJpZ2h0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGxlZnROdW1iZXJzWzBdID8/IDApID4gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSB8fFxuICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1swXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzFdID8/IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMV0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0TnVtYmVyc1syXSA/PyAwKSA+PSAocmlnaHROdW1iZXJzWzJdID8/IDApKSkpXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvYWRGb3JtKHNldHRpbmdzOiBTdGFydEZvcm1TZXR0aW5nLCBjYWxsYmFjazogKGVycm9yPzogbnVsbCB8IHVuZGVmaW5lZCB8IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgeyBnZnYsIGVuZ2luZVZlcnNpb24sIHJlc291cmNlc1ZlcnNpb24gfSA9IHNldHRpbmdzO1xuXG4gICAgaWYgKGdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc05lZWRFbmdpbmUgPSBlbmdpbmVWZXJzaW9uICYmICFnbG9iYWxbZW5naW5lVmVyc2lvbl07XG4gICAgY29uc3Qgbm9TdHlsZXNGb3JHZnYgPSBmYWxzZTsgLy8gZW5naW5lVmVyc2lvbiAhPSB1bmRlZmluZWQgJiYgKGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChlbmdpbmVWZXJzaW9uLCBcIjQuMjE0LjBcIikgfHwgZW5naW5lVmVyc2lvbiA9PT0gXCJsb2NhbFwiKTtcbiAgICBjb25zdCBuZWVkTG9hZFN0eWxlc0ZvckdmdiA9ICFub1N0eWxlc0ZvckdmdjtcbiAgICBjb25zdCBtaW4gPSBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJkZWJ1Z1wiKSA9PT0gXCJ0cnVlXCIgPyBcIlwiIDogXCIubWluXCI7XG4gICAgY29uc3QgdGFza3M6IFRhc2tbXSA9IFtdO1xuXG4gICAgY29uc3QgcGFyYW1zID0geyB2OiByZXNvdXJjZXNWZXJzaW9uLCByZXNvdXJjZVpvbmU6IHNldHRpbmdzLnJlc291cmNlWm9uZSB9O1xuICAgIGlmIChuZWVkTG9hZFN0eWxlc0Zvckdmdikge1xuICAgICAgICB0YXNrcy5wdXNoKGNiID0+XG4gICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2dmdn0ke21pbn0uY3NzYCwgcGFyYW1zKSksIHRydWUsIGNiKVxuICAgICAgICApO1xuICAgIH1cbiAgICB0YXNrcy5wdXNoKGNiID0+IExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7Z2Z2fSR7bWlufS5qc2AsIHBhcmFtcykpLCBjYikpO1xuXG4gICAgaWYgKGlzTmVlZEVuZ2luZSkge1xuICAgICAgICB0YXNrcy5wdXNoKFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5jc3NgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zY3JpcHQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uanNgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcnVuUGFyYWxsZWwodGFza3MsIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRm9ybShcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT5cbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1FbnRyeVBvaW50ID1cbiAgICAgICAgZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZXh0ZW5kZWRTZXR0aW5ncy5nZnZdID8/IHJlamVjdChgRm9ybSBlbnRyeSBwb2ludCAke2V4dGVuZGVkU2V0dGluZ3MuZ2Z2fSBub3QgZm91bmQuYCk7XG4gICAgZm9ybUVudHJ5UG9pbnQocGFnZUNvbnRlbnQsIGV4dGVuZGVkU2V0dGluZ3MpXG4gICAgICAgIC50aGVuKGZvcm0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcHVibGljRm9ybSA9IGZvcm0ucHVibGljRm9ybSB8fCBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm0pO1xuXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBwdWJsaWNGb3JtKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydEZvcm1PcHRpb25zIGV4dGVuZHMgUGFydGlhbDxBVU9PcHRpb25zPiB7XG4gICAgbnM6IHN0cmluZztcbiAgICBkcmFmdElkOiBzdHJpbmc7XG4gICAgZ2Z2Pzogc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgZmVlZGJhY2tFbmFibGVkPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbGVhbkZvcm0/OiBib29sZWFuO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICBhdXRoZW50aWNhdGlvbj86IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIgfCB7IGF1dGhTaWQ6IHN0cmluZyB9O1xuICAgIGZldGNoPzogdHlwZW9mIGZldGNoO1xuICAgIG1vZGVsPzogeyBbcGF0aDogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIHBhbmVsQWN0aW9ucz86IEFjdGlvbkRlc2NyaXB0aW9uW107XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLi4uY2xpZW50RHJhZnRJbmZvLFxuICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbGVhbkZvcm06IG9wdGlvbnMuaXNEaXNhYmxlZENsZWFuRm9ybSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxvYWRGb3JtKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBleHRlbmRlZFNldHRpbmdzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5lbmdpbmVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlc1ZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAgcmVzb3VyY2VzVmVyc2lvbjogXCJ7cmVzb3VyY2VzVmVyc2lvbn1cIixcbiAgICBrb250dXJEb21haW5zOiBcIntrb250dXJEb21haW5zfVwiLFxufTtcbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0NsaWVudEluaXRPcHRpb25zLCBGaWFzQXBpIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuXG5pbXBvcnQgeyBJTGVnYWN5Rm9ybSB9IGZyb20gXCIuL0lMZWdhY3lGb3JtXCI7XG5cbmV4cG9ydCB0eXBlIE1vZGVsRXZlbnRQYXRoID1cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbENoYW5nZUV2ZW50UGF0aChwYXRoPzogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBNb2RlbEV2ZW50UGF0aCB7XG4gICAgaWYgKGZpZWxkTmFtZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aCwgZmllbGROYW1lXTtcbiAgICB9XG4gICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdO1xufVxuXG5mdW5jdGlvbiBtYXBDaHVua1ZhbHVlcyhjaHVuazogUmVhZG9ubHlNb2RlbENodW5rKTogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNodW5rKVxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gY2h1bmtbcGF0aF0gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNodW5rW3BhdGhdLCBcInZhbHVlXCIpKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2h1bmtbcGF0aF07XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IFtwYXRoXTogcmVzdWx0LnZhbHVlIH07XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VDaHVua1ZhbHVlcyhjaHVua3M6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgIHJldHVybiBjaHVua3MucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjaHVuaykgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIC4uLmNodW5rLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5jbGFzcyBMZWdhY3lQdWJsaWNGb3JtIGltcGxlbWVudHMgSVB1YmxpY0Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogSUxlZ2FjeUZvcm07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybTogSUxlZ2FjeUZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmF0Y2hVcGRhdGUodXBkYXRlUHJvYzogKHVwZGF0ZUFjY2Vzc29yOiBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bkNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IFBhcnRpYWw8U2VydmVyRXJyb3JMb2c+KTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNoaWxkcmVuQnlQYXRoKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9fSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyhcbiAgICAgICAgcGF0aFNwZWM6IHN0cmluZ1xuICAgICk6IFByb21pc2U8KGVtcGxveWVlOiBFbXBsb3llZSkgPT4gYm9vbGVhbj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhlbXBsb3llZXM6IEVtcGxveWVlW10sIG9wdGlvbnM/OiB7IHNjZW5hcmlvPzogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHByaW50VHlwZTogUHJpbnRUeXBlLCBib2R5Pzogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIHB1YmxpYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlHSWQoZ0lkOiBzdHJpbmcsIGZpbHRlcj86IERpZ2VzdFF1ZXJ5RmlsdGVyKTogUHJvbWlzZTxQaWNrbGlzdFF1ZXJ5UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5waWNrbGlzdHNQcm92aWRlci5nZXREaWdlc3RBcGlQaWNrbGlzdChnSWQpLnF1ZXJ5KGZpbHRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYoW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2UocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGxpc3RlbmVyOiB1bmtub3duKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtLm9uTW9kZWxDaGFuZ2UoKSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtLmNoYW5nZVNldC5zdG9wQXV0b3NlbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS51bm1vdW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udW5tb3VudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3VyU3RlcHMoKTogU3RlcFtdIHtcbiAgICAgICAgLy8gRm9yIG9sZCBrZXdlYlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlINCt0YLQviDQsiDRgdGC0LDRgNGL0YUg0LTQstC40LbQutCw0YUg0YLRg9GCINGC0LDQutC+0Lkg0LLRi9C30L7QslxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZGF0b3IudmFsaWRhdGVBbGwoa2V5cyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRBZGRpdGlvbmFsRW1wbG95ZWVJbmZvKGZpbHRlcnM6IEdldEVtcGxveWVlTGlzdFJlcXVlc3QpOiBQcm9taXNlPEVtcGxveWVlTGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZElubmVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdvcmtpbmdFdmVudHNGb3JFbXBsb3llZShmaWx0ZXJzOiBHZXRXb3JraW5nRXZlbnRMaXN0UmVxdWVzdCk6IFByb21pc2U8V29ya2luZ0V2ZW50TGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHRoaXMuZm9ybS5tb2RlbC5nZXQodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpO1xuICAgICAgICByZXR1cm4gZXJyb3JDb3VudCAhPSB1bmRlZmluZWQgJiYgZXJyb3JDb3VudCA+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24obW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9KTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcsIHZhbHVlOiBNb2RlbFZhbHVlKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChcbiAgICAgICAgcGF0aE9yTW9kZWxDaHVuazogc3RyaW5nIHwgeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0sXG4gICAgICAgIHZhbHVlPzogTW9kZWxWYWx1ZVxuICAgICk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGF0aE9yTW9kZWxDaHVuayAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgIT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShwYXRoT3JNb2RlbENodW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2h1bmsgPSBPYmplY3Qua2V5cyhwYXRoT3JNb2RlbENodW5rKS5yZWR1Y2U8UmVhZG9ubHlNb2RlbENodW5rPihcbiAgICAgICAgICAgICAgICAocmVzdWx0LCBwYXRoKSA9PiAoeyBbcGF0aF06IHsgdmFsdWU6IHBhdGhPck1vZGVsQ2h1bmtbcGF0aF0gfSwgLi4ucmVzdWx0IH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuZmlsbChpbm5lckNodW5rKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLnNldChwYXRoT3JNb2RlbENodW5rLCBcInZhbHVlXCIsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uc2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBvYmplY3Qgd2l0aCBwYXRoLXZhbHVlIHBhaXJzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQocGF0aE9yQXJyYXk6IHN0cmluZyB8IHN0cmluZ1tdKTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF0aE9yQXJyYXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMoXG4gICAgICAgICAgICAgICAgcGF0aE9yQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwYXRoID0+IG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoKSkpXG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZTxBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+PigocmVzdWx0LCBhcnJheSkgPT4gcmVzdWx0LmNvbmNhdChhcnJheSksIFtdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yQXJyYXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aE9yQXJyYXkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aE9yQXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5nZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIGFycmF5IG9mIHBhdGhzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZShwYXRoOiBzdHJpbmcpOiBNb2RlbFZhbHVlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ubW9kZWwuZ2V0KHBhdGgsIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlTdWJ0cmVlKFxuICAgICAgICBzb3VyY2VCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICB0YXJnZXRCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICBkb05vdENvcHlQYXRocz86IHN0cmluZ1tdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEluc3RhbmNlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaWxkcmVuKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXVpZEdlbmVyYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dNb2RhbChvcHRpb25zOiBNb2RhbE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU2VjdGlvbihvcHRpb25zOiBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsbEluaXRTZWN0aW9uKG9wdGlvbnM6IENhbGxJbml0U2VjdGlvbkxpZ2h0Ym94UHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmlhc0FwaUNsaWVudChvcHRpb25zOiBGaWFzQ2xpZW50SW5pdE9wdGlvbnMpOiBGaWFzQXBpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkVtcGxveWVlRWRpdG9yKGVtcGxveWVlSWQ6IHN0cmluZykge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZShwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzKHBhdGg6IHN0cmluZywgaW5zdGFuY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c09uQ29udHJvbElmRXhpc3QocGF0aDogQmluZGluZ1BhdGgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0b0ZpZWxkc1RvQXV0b1ZhbHVlKHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnN1cmVJbnN0YW5jZUZ1bGx5TG9hZGVkKFxuICAgICAgICBiaW5kaW5nUGF0aDogc3RyaW5nIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgLi4uaW5zdGFuY2VzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3VzdG9tTm9ybWFsaXplKG5vcm1hbGl6ZXJJZDogc3RyaW5nLCBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXNCeVJ1bGVzKHJ1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9DQyxDQUFBO1FBQTlCLFNBQVNDLEVBQXNCQyxDQUFBO1VBR2xDLE9BQU8sU0FBUEMsTUFBQSxDQUFnQkQsQ0FBQSxDQUFRRSxFQUFBLEVBQUUsWUFBQUQsTUFBQSxDQUFXRCxDQUFBLENBQVFHLE9BQUEsRUFBTyxxQkFDeEQ7UUFBQTtRQUFBQyxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBQyxDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBUixDQUFBO1VBQUE7UUFBQSxJQUFBQyxDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFTLENBQUEseUJBQUFDLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsY0FBQUYsQ0FBQSxDQUFBVCxDQUFBLHlCQUFBVSxvQkFBQSxJQUFBQSxvQkFBQSxDQUFBRSxPQUFBLENBQUFDLFNBQUEsR0FBQ2hCLENBQUEseUJBQUFhLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsY0FBQWYsQ0FBQSxDQUFBaUIsUUFBQSxDQUplZixDQUFBLEVBQXFCLHdKQUFBRCxDQUFBLHlCQUFBWSxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUFqQixDQUFBLENBQUFFLENBQUE7TUFBQTtNQUFBLGVBQUFnQixNQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBO1FBQUEsU0FBQUMsUUFBQW5CLENBQUE7VUFBQSxPQUFBbUIsT0FBQSx3QkFBQUMsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFyQixDQUFBO1lBQUEsY0FBQUEsQ0FBQTtVQUFBLGNBQUFBLENBQUE7WUFBQSxPQUFBQSxDQUFBLHlCQUFBb0IsTUFBQSxJQUFBcEIsQ0FBQSxDQUFBc0IsV0FBQSxLQUFBRixNQUFBLElBQUFwQixDQUFBLEtBQUFvQixNQUFBLENBQUFHLFNBQUEscUJBQUF2QixDQUFBO1VBQUEsR0FBQW1CLE9BQUEsQ0FBQW5CLENBQUE7UUFBQTtRQUFBLElBQUFXLFdBQUE7UUFBQSxTQUFBYSxnQkFBQXhCLENBQUEsRUFBQU0sQ0FBQTtVQUFBLE1BQUFOLENBQUEsWUFBQU0sQ0FBQSxhQUFBbUIsU0FBQTtRQUFBO1FBQUEsU0FBQUMsa0JBQUExQixDQUFBLEVBQUFNLENBQUE7VUFBQSxTQUFBRixDQUFBLE1BQUFBLENBQUEsR0FBQUUsQ0FBQSxDQUFBcUIsTUFBQSxFQUFBdkIsQ0FBQTtZQUFBLElBQUFLLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBO1lBQUFLLENBQUEsQ0FBQW1CLFVBQUEsR0FBQW5CLENBQUEsQ0FBQW1CLFVBQUEsUUFBQW5CLENBQUEsQ0FBQW9CLFlBQUEsa0JBQUFwQixDQUFBLEtBQUFBLENBQUEsQ0FBQXFCLFFBQUEsUUFBQUMsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBLEVBQUFpQyxjQUFBLENBQUF4QixDQUFBLENBQUF5QixHQUFBLEdBQUF6QixDQUFBO1VBQUE7UUFBQTtRQUFBLFNBQUEwQixhQUFBbkMsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxPQUFBRSxDQUFBLElBQUFvQixpQkFBQSxDQUFBMUIsQ0FBQSxDQUFBdUIsU0FBQSxFQUFBakIsQ0FBQSxHQUFBRixDQUFBLElBQUFzQixpQkFBQSxDQUFBMUIsQ0FBQSxFQUFBSSxDQUFBLEdBQUEyQixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUE7WUFBQThCLFFBQUE7VUFBQSxJQUFBOUIsQ0FBQTtRQUFBO1FBQUEsU0FBQWlDLGVBQUFqQyxDQUFBO1VBQUEsSUFBQU0sQ0FBQSxHQUFBOEIsWUFBQSxDQUFBcEMsQ0FBQTtVQUFBLG9CQUFBbUIsT0FBQSxDQUFBYixDQUFBLElBQUFBLENBQUEsR0FBQStCLE1BQUEsQ0FBQS9CLENBQUE7UUFBQTtRQUFBLFNBQUE4QixhQUFBcEMsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsaUJBQUFhLE9BQUEsQ0FBQW5CLENBQUEsY0FBQUEsQ0FBQSxTQUFBQSxDQUFBO1VBQUEsSUFBQUksQ0FBQSxHQUFBSixDQUFBLENBQUFvQixNQUFBLENBQUFrQixXQUFBO1VBQUEsZUFBQWxDLENBQUE7WUFBQSxJQUFBSyxDQUFBLEdBQUFMLENBQUEsQ0FBQW1DLElBQUEsQ0FBQXZDLENBQUEsRUFBQU0sQ0FBQTtZQUFBLGlCQUFBYSxPQUFBLENBQUFWLENBQUEsVUFBQUEsQ0FBQTtZQUFBLFVBQUFnQixTQUFBO1VBQUE7VUFBQSxxQkFBQW5CLENBQUEsR0FBQStCLE1BQUEsR0FBQUcsTUFBQSxFQUFBeEMsQ0FBQTtRQUFBO1FBQUEsU0FBQXlDLFVBQUF6QyxDQUFBLEVBQUFNLENBQUE7VUFBQSx5QkFBQUEsQ0FBQSxhQUFBQSxDQUFBLFlBQUFtQixTQUFBO1VBQUF6QixDQUFBLENBQUF1QixTQUFBLEdBQUFRLE1BQUEsQ0FBQVcsTUFBQSxDQUFBcEMsQ0FBQSxJQUFBQSxDQUFBLENBQUFpQixTQUFBO1lBQUFELFdBQUE7Y0FBQXFCLEtBQUEsRUFBQTNDLENBQUE7Y0FBQThCLFFBQUE7Y0FBQUQsWUFBQTtZQUFBO1VBQUEsSUFBQUUsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBO1lBQUE4QixRQUFBO1VBQUEsSUFBQXhCLENBQUEsSUFBQXNDLGVBQUEsQ0FBQTVDLENBQUEsRUFBQU0sQ0FBQTtRQUFBO1FBQUEsU0FBQXVDLGFBQUE3QyxDQUFBO1VBQUEsSUFBQU0sQ0FBQSxHQUFBd0MseUJBQUE7VUFBQTtZQUFBLElBQUExQyxDQUFBO2NBQUFLLENBQUEsR0FBQXNDLGVBQUEsQ0FBQS9DLENBQUE7WUFBQSxJQUFBTSxDQUFBO2NBQUEsSUFBQVQsQ0FBQSxHQUFBa0QsZUFBQSxPQUFBekIsV0FBQTtjQUFBbEIsQ0FBQSxHQUFBNEMsT0FBQSxDQUFBQyxTQUFBLENBQUF4QyxDQUFBLEVBQUF5QyxTQUFBLEVBQUFyRCxDQUFBO1lBQUEsT0FBQU8sQ0FBQSxHQUFBSyxDQUFBLENBQUEwQyxLQUFBLE9BQUFELFNBQUE7WUFBQSxPQUFBRSwwQkFBQSxPQUFBaEQsQ0FBQTtVQUFBO1FBQUE7UUFBQSxTQUFBZ0QsMkJBQUFwRCxDQUFBLEVBQUFNLENBQUE7VUFBQSxJQUFBQSxDQUFBLGtCQUFBYSxPQUFBLENBQUFiLENBQUEsMEJBQUFBLENBQUEsVUFBQUEsQ0FBQTtVQUFBLGVBQUFBLENBQUEsWUFBQW1CLFNBQUE7VUFBQSxPQUFBNEIsc0JBQUEsQ0FBQXJELENBQUE7UUFBQTtRQUFBLFNBQUFxRCx1QkFBQXJELENBQUE7VUFBQSxlQUFBQSxDQUFBLFlBQUFzRCxjQUFBO1VBQUEsT0FBQXRELENBQUE7UUFBQTtRQUFBLFNBQUF1RCxpQkFBQXZELENBQUE7VUFBQSxJQUFBTSxDQUFBLHdCQUFBa0QsR0FBQSxPQUFBQSxHQUFBO1VBQUEsT0FBQUQsZ0JBQUEsWUFBQUEsQ0FBQXZELENBQUE7WUFBQSxhQUFBQSxDQUFBLEtBQUF5RCxpQkFBQSxDQUFBekQsQ0FBQSxVQUFBQSxDQUFBO1lBQUEseUJBQUFBLENBQUEsWUFBQXlCLFNBQUE7WUFBQSxlQUFBbkIsQ0FBQTtjQUFBLElBQUFBLENBQUEsQ0FBQW9ELEdBQUEsQ0FBQTFELENBQUEsVUFBQU0sQ0FBQSxDQUFBcUQsR0FBQSxDQUFBM0QsQ0FBQTtjQUFBTSxDQUFBLENBQUFzRCxHQUFBLENBQUE1RCxDQUFBLEVBQUFJLENBQUE7WUFBQTtZQUFBLFNBQUFBLEVBQUE7Y0FBQSxPQUFBeUQsVUFBQSxDQUFBN0QsQ0FBQSxFQUFBa0QsU0FBQSxFQUFBSCxlQUFBLE9BQUF6QixXQUFBO1lBQUE7WUFBQSxPQUFBbEIsQ0FBQSxDQUFBbUIsU0FBQSxHQUFBUSxNQUFBLENBQUFXLE1BQUEsQ0FBQTFDLENBQUEsQ0FBQXVCLFNBQUE7Y0FBQUQsV0FBQTtnQkFBQXFCLEtBQUEsRUFBQXZDLENBQUE7Z0JBQUF3QixVQUFBO2dCQUFBRSxRQUFBO2dCQUFBRCxZQUFBO2NBQUE7WUFBQSxJQUFBZSxlQUFBLENBQUF4QyxDQUFBLEVBQUFKLENBQUE7VUFBQSxHQUFBdUQsZ0JBQUEsQ0FBQXZELENBQUE7UUFBQTtRQUFBLFNBQUE2RCxXQUFBN0QsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxPQUFBeUQsVUFBQSxHQUFBZix5QkFBQSxLQUFBRSxPQUFBLENBQUFDLFNBQUEsQ0FBQWEsSUFBQSxlQUFBOUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7WUFBQSxJQUFBSyxDQUFBO1lBQUFBLENBQUEsQ0FBQXNELElBQUEsQ0FBQVosS0FBQSxDQUFBMUMsQ0FBQSxFQUFBSCxDQUFBO1lBQUEsSUFBQVQsQ0FBQSxRQUFBbUUsUUFBQSxDQUFBRixJQUFBLENBQUFYLEtBQUEsQ0FBQW5ELENBQUEsRUFBQVMsQ0FBQTtZQUFBLE9BQUFMLENBQUEsSUFBQXdDLGVBQUEsQ0FBQS9DLENBQUEsRUFBQU8sQ0FBQSxDQUFBbUIsU0FBQSxHQUFBMUIsQ0FBQTtVQUFBLEdBQUFnRSxVQUFBLENBQUFWLEtBQUEsT0FBQUQsU0FBQTtRQUFBO1FBQUEsU0FBQUosMEJBQUE7VUFBQSwwQkFBQUUsT0FBQSxLQUFBQSxPQUFBLENBQUFDLFNBQUE7VUFBQSxJQUFBRCxPQUFBLENBQUFDLFNBQUEsQ0FBQWdCLElBQUE7VUFBQSx5QkFBQUMsS0FBQTtVQUFBO1lBQUEsT0FBQUMsT0FBQSxDQUFBNUMsU0FBQSxDQUFBNkMsT0FBQSxDQUFBN0IsSUFBQSxDQUFBUyxPQUFBLENBQUFDLFNBQUEsQ0FBQWtCLE9BQUE7VUFBQSxTQUFBbkUsQ0FBQTtZQUFBO1VBQUE7UUFBQTtRQUFBLFNBQUF5RCxrQkFBQXpELENBQUE7VUFBQSxjQUFBZ0UsUUFBQSxDQUFBSyxRQUFBLENBQUE5QixJQUFBLENBQUF2QyxDQUFBLEVBQUFzRSxPQUFBO1FBQUE7UUFBQSxTQUFBMUIsZ0JBQUE1QyxDQUFBLEVBQUFNLENBQUE7VUFBQSxPQUFBc0MsZUFBQSxHQUFBYixNQUFBLENBQUF3QyxjQUFBLEdBQUF4QyxNQUFBLENBQUF3QyxjQUFBLENBQUFULElBQUEsZUFBQTlELENBQUEsRUFBQU0sQ0FBQTtZQUFBLE9BQUFOLENBQUEsQ0FBQXdFLFNBQUEsR0FBQWxFLENBQUEsRUFBQU4sQ0FBQTtVQUFBLEdBQUE0QyxlQUFBLENBQUE1QyxDQUFBLEVBQUFNLENBQUE7UUFBQTtRQUFBLFNBQUF5QyxnQkFBQS9DLENBQUE7VUFBQSxPQUFBK0MsZUFBQSxHQUFBaEIsTUFBQSxDQUFBd0MsY0FBQSxHQUFBeEMsTUFBQSxDQUFBMEMsY0FBQSxDQUFBWCxJQUFBLGVBQUE5RCxDQUFBO1lBQUEsT0FBQUEsQ0FBQSxDQUFBd0UsU0FBQSxJQUFBekMsTUFBQSxDQUFBMEMsY0FBQSxDQUFBekUsQ0FBQTtVQUFBLEdBQUErQyxlQUFBLENBQUEvQyxDQUFBO1FBQUE7UUFBQWtCLG1CQUFBLENBQUFiLENBQUEsQ0FBQVksbUJBQUE7VUFBQXlELEVBQUEsV0FBQUEsQ0FBQTtZQUFBLE9BQUFDLG1CQUFBO1VBQUE7UUFBQSxJQUFBM0QsTUFBQSxHQUFBRSxtQkFBQSxDQUFBVixHQUFBLENBQUFRLE1BQUEsR0FBQUwsV0FBQSx5QkFBQUQsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLElBQUFBLFdBQUEsQ0FBQUssTUFBQTtRQUFBLElBQUE0RCxhQUFBLHlCQUFBbEUsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBLGFBQUFiLENBQUE7WUFBQSxPQUFBQSxDQUFBO1VBQUE7VUNGeEI2RSxnQkFBQSxHQUFnQixVQUFBQyxNQUFBO1lBQUFyQyxTQUFBLENBQUFvQyxnQkFBQSxFQUFBQyxNQUFBO1lBQUEsSUFBQUMsTUFBQSxHQUFBbEMsWUFBQSxDQUFBZ0MsZ0JBQUE7WUFDekIsU0FBQUEsaUJBQW1CN0UsQ0FBQTtjQUFpQixJQUFBTSxDQUFBO2NBRUUsT0FGRmtCLGVBQUEsT0FBQXFELGdCQUFBLElBQ2hDdkUsQ0FBQSxHQUFBeUUsTUFBQSxDQUFBeEMsSUFBQSxPQUFNdkMsQ0FBQSxHQUNEZ0YsSUFBQSxHQUFPMUUsQ0FBQSxDQUFLZ0IsV0FBQSxDQUFZMEQsSUFBQSxFQUFLMUUsQ0FDdEM7WUFBQTtZQUFDLE9BQUE2QixZQUFBLENBQUEwQyxnQkFBQTtjQUFBM0MsR0FBQTtjQUFBUyxLQUFBLFdBQUFzQyxpQ0FBQS9DLEdBQUEsRUFBQWdELElBQUE7Z0JBQUEsS0FBQWhELEdBQUEsSUFBQWlELElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUEsS0FBQUwsZ0JBQUE7VUFBQSxDQUp3QixDQUl4QnRCLGdCQUFBLENBSmlDNkIsS0FBQTtVQU96QlQsbUJBQUEsR0FBbUIsVUFBQVUsaUJBQUE7WUFBQTVDLFNBQUEsQ0FBQWtDLG1CQUFBLEVBQUFVLGlCQUFBO1lBQUEsSUFBQUMsT0FBQSxHQUFBekMsWUFBQSxDQUFBOEIsbUJBQUE7WUFDNUIsU0FBQUEsb0JBQUE7Y0FBcUIsT0FBQW5ELGVBQUEsT0FBQW1ELG1CQUFBLEdBQUFXLE9BQUEsQ0FBQS9DLElBQUEsT0FDWCw0QkFDVjtZQUFBO1lBQUMsT0FBQUosWUFBQSxDQUFBd0MsbUJBQUE7Y0FBQXpDLEdBQUE7Y0FBQVMsS0FBQSxXQUFBc0MsaUNBQUEvQyxHQUFBLEVBQUFnRCxJQUFBO2dCQUFBLEtBQUFoRCxHQUFBLElBQUFpRCxJQUFBLENBQUFELElBQUE7Y0FBQTtZQUFBLEtBQUFQLG1CQUFBO1VBQUEsQ0FIMkIsQ0FBU0UsZ0JBQUE7VUFNNUJVLGlCQUFBLEdBQWlCLFVBQUFDLGtCQUFBO1lBQUEvQyxTQUFBLENBQUE4QyxpQkFBQSxFQUFBQyxrQkFBQTtZQUFBLElBQUFDLE9BQUEsR0FBQTVDLFlBQUEsQ0FBQTBDLGlCQUFBO1lBQzFCLFNBQUFBLGtCQUFtQnZGLENBQUE7Y0FBa0IsT0FBQXdCLGVBQUEsT0FBQStELGlCQUFBLEdBQUFFLE9BQUEsQ0FBQWxELElBQUEsT0FDM0IsUUFBQXZDLENBQUEsR0FBQUEsQ0FBQSxHQUFXLDBCQUNyQjtZQUFBO1lBQUMsT0FBQW1DLFlBQUEsQ0FBQW9ELGlCQUFBO2NBQUFyRCxHQUFBO2NBQUFTLEtBQUEsV0FBQXNDLGlDQUFBL0MsR0FBQSxFQUFBZ0QsSUFBQTtnQkFBQSxLQUFBaEQsR0FBQSxJQUFBaUQsSUFBQSxDQUFBRCxJQUFBO2NBQUE7WUFBQSxLQUFBSyxpQkFBQTtVQUFBLENBSHlCLENBQVNWLGdCQUFBO1VBTTFCYSx3QkFBQSxHQUF3QixVQUFBQyxrQkFBQTtZQUFBbEQsU0FBQSxDQUFBaUQsd0JBQUEsRUFBQUMsa0JBQUE7WUFBQSxJQUFBQyxPQUFBLEdBQUEvQyxZQUFBLENBQUE2Qyx3QkFBQTtZQUNqQyxTQUFBQSx5QkFBbUIxRixDQUFBO2NBQWtCLE9BQUF3QixlQUFBLE9BQUFrRSx3QkFBQSxHQUFBRSxPQUFBLENBQUFyRCxJQUFBLE9BQzNCLDJCQUFzQyxRQUFYdkMsQ0FBQSxHQUF1QixPQUFPQSxDQUFBLEdBQVUsSUFDN0U7WUFBQTtZQUFDLE9BQUFtQyxZQUFBLENBQUF1RCx3QkFBQTtjQUFBeEQsR0FBQTtjQUFBUyxLQUFBLFdBQUFzQyxpQ0FBQS9DLEdBQUEsRUFBQWdELElBQUE7Z0JBQUEsS0FBQWhELEdBQUEsSUFBQWlELElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUEsS0FBQVEsd0JBQUE7VUFBQSxDQUhnQyxDQUFTYixnQkFBQTtVQU1qQ2dCLG9CQUFBLEdBQW9CLFVBQUFDLGtCQUFBO1lBQUFyRCxTQUFBLENBQUFvRCxvQkFBQSxFQUFBQyxrQkFBQTtZQUFBLElBQUFDLE9BQUEsR0FBQWxELFlBQUEsQ0FBQWdELG9CQUFBO1lBQzdCLFNBQUFBLHFCQUFtQjdGLENBQUEsRUFBc0JNLENBQUE7Y0FBa0IsT0FBQWtCLGVBQUEsT0FBQXFFLG9CQUFBLEdBQUFFLE9BQUEsQ0FBQXhELElBQUEsT0FFeEMsUUFBWGpDLENBQUEsR0FBdUIsR0FBSEwsTUFBQSxDQUFNSyxDQUFBLEVBQU8sZ0JBQUFMLE1BQUEsQ0FBZUQsQ0FBQSxFQUFZLGtDQUFBQyxNQUFBLENBQWlDRCxDQUFBLEVBRXJHO1lBQUE7WUFBQyxPQUFBbUMsWUFBQSxDQUFBMEQsb0JBQUE7Y0FBQTNELEdBQUE7Y0FBQVMsS0FBQSxXQUFBc0MsaUNBQUEvQyxHQUFBLEVBQUFnRCxJQUFBO2dCQUFBLEtBQUFoRCxHQUFBLElBQUFpRCxJQUFBLENBQUFELElBQUE7Y0FBQTtZQUFBLEtBQUFXLG9CQUFBO1VBQUEsQ0FMNEIsQ0FBU2hCLGdCQUFBO1VBUTdCbUIsV0FBQSxHQUFXLFVBQUFDLGtCQUFBO1lBQUF4RCxTQUFBLENBQUF1RCxXQUFBLEVBQUFDLGtCQUFBO1lBQUEsSUFBQUMsT0FBQSxHQUFBckQsWUFBQSxDQUFBbUQsV0FBQTtZQUNwQixTQUFBQSxZQUFBO2NBQXFCLE9BQUF4RSxlQUFBLE9BQUF3RSxXQUFBLEdBQUFFLE9BQUEsQ0FBQTNELElBQUEsT0FDWCxpQkFDVjtZQUFBO1lBQUMsT0FBQUosWUFBQSxDQUFBNkQsV0FBQTtjQUFBOUQsR0FBQTtjQUFBUyxLQUFBLFdBQUFzQyxpQ0FBQS9DLEdBQUEsRUFBQWdELElBQUE7Z0JBQUEsS0FBQWhELEdBQUEsSUFBQWlELElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUEsS0FBQWMsV0FBQTtVQUFBLENBSG1CLENBQVNuQixnQkFBQTtVQUloQ3NCLGNBQUE7VUFKdUJwRixXQUFBO1FBSXZCb0YsY0FBQSx5QkFBQXpGLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsV0FBQXVGLGNBQUEsS0FBQUEsY0FBQSxDQUFBckYsUUFBQSxDQXJDWStELGdCQUFBLEVBQWdCLGtHQUFBc0IsY0FBQSxDQUFBckYsUUFBQSxDQU9oQjZELG1CQUFBLEVBQW1CLHFHQUFBd0IsY0FBQSxDQUFBckYsUUFBQSxDQU1uQnlFLGlCQUFBLEVBQWlCLG1HQUFBWSxjQUFBLENBQUFyRixRQUFBLENBTWpCNEUsd0JBQUEsRUFBd0IsMEdBQUFTLGNBQUEsQ0FBQXJGLFFBQUEsQ0FNeEIrRSxvQkFBQSxFQUFvQixzR0FBQU0sY0FBQSxDQUFBckYsUUFBQSxDQVFwQmtGLFdBQUEsRUFBVyw4RkFBQWpGLFdBQUEseUJBQUFMLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFLLFdBQUEsV0FBQUEsV0FBQSxJQUFBQSxXQUFBLENBQUFDLE1BQUE7TUFBQTtNQUFBLGVBQUFoQixDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtRQUFBLElBQUFLLENBQUEsRUNpR3ZCWixDQUFBLEVBRnVCQyxDQUFBO1FBQUEsU0FBQUMsRUFBQUMsQ0FBQTtVQUFBLE9BQUFELENBQUEsd0JBQUFxQixNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBRCxDQUFBLENBQUFDLENBQUE7UUFBQTtRQTVIakIsU0FBU29HLEVBQXdCcEcsQ0FBQTtVQUNwQyxPQUFnQixRQUFUQSxDQUNYO1FBQUE7UUFtQk8sU0FBU3FHLEVBQU9yRyxDQUFBO1VBQ25CLE1BQXVCLG1CQUFaQSxDQUFBLElBQW1DLFFBQVhBLENBQUEsR0FDekIsSUFBSW9GLEtBQUEsQ0FBTSxRQUFBcEYsQ0FBQSxHQUFBQSxDQUFBLEdBQVcsOEJBRXJCQSxDQUVkO1FBQUE7UUFZTyxTQUFTc0csRUFDWnRHLENBQUEsRUFDQU0sQ0FBQTtVQUVBLE9BQU9OLENBQUEsQ0FBTTJCLE1BQUEsSUFBVXJCLENBQzNCO1FBQUE7UUFZTyxTQUFTaUcsRUFDWnZHLENBQUEsRUFDQU0sQ0FBQTtVQUVBLE9BQU9OLENBQUEsQ0FBTTJCLE1BQUEsS0FBV3JCLENBQzVCO1FBQUE7UUFFTyxTQUFTa0csRUFBbUJ4RyxDQUFBO1VBQy9CLE9BQU9BLENBQUEsQ0FBTTJCLE1BQUEsR0FBUyxDQUMxQjtRQUFBO1FBMkNPLFNBQVN0QixFQUFjTCxDQUFBO1VBQzFCLE9BQWdCLFFBQVRBLENBQUEsSUFBZ0MsT0FBVkEsQ0FDakM7UUFBQTtRQUFBSSxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBbUcsRUFBQSxXQUFBQSxDQUFBO1lBQUEsT0FBQUosQ0FBQTtVQUFBO1FBQUEsSUFBQXJHLENBQUEsR0FBQUksQ0FBQSxDQUFBSSxHQUFBLENBQUFSLENBQUEsSUFBQVMsQ0FBQSx5QkFBQUMsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBRixDQUFBLENBQUFULENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQSxHQWdCQ2hCLENBQUEseUJBQUFhLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsZUFBQWYsQ0FBQSxDQUFBaUIsUUFBQSxDQTlIZXNGLENBQUEsRUFBb0IsMkdBQUF2RyxDQUFBLENBQUFpQixRQUFBLENBSTdCLFVBQStCZCxDQUFBO1VBRWxDLE9BQXdCLGFBQWpCRCxDQUFBLENBQU9DLENBQUEsTUFBc0IsUUFBQUEsQ0FBQSxRQUFLLElBQUxBLENBQUEsQ0FBaUIwRyxPQUFBLENBQ3pEO1FBQUEsR0FIcUMsNEdBQUE3RyxDQUFBLENBQUFpQixRQUFBLENBSzlCLFVBQXFDZCxDQUFBO1VBQ3hDLEtBQUtvRyxDQUFBLENBQXFCcEcsQ0FBQSxHQUN0QixNQUFNLElBQUlvRixLQUFBLENBQU0sd0JBRXhCO1FBQUEsR0FKd0MsK0dBQUF2RixDQUFBLENBQUFpQixRQUFBLENBTWpDLGFBQ0gsR0FEZ0IsMkZBQUFqQixDQUFBLENBQUFpQixRQUFBLENBTUp1RixDQUFBLEVBQU0sNkZBQUF4RyxDQUFBLENBQUFpQixRQUFBLENBa0JOd0YsQ0FBQSxFQUEwQixpSEFBQXpHLENBQUEsQ0FBQWlCLFFBQUEsQ0FPbkMsVUFDSGQsQ0FBQSxFQUNBTSxDQUFBO1VBRUEsSUFBSWdHLENBQUEsQ0FBMkJ0RyxDQUFBLEVBQU9NLENBQUEsR0FDbEMsT0FBT04sQ0FHZjtRQUFBLEdBUm9DLDJHQUFBSCxDQUFBLENBQUFpQixRQUFBLENBVXBCeUYsQ0FBQSxFQUFjLHFHQUFBMUcsQ0FBQSxDQUFBaUIsUUFBQSxDQU9kMEYsQ0FBQSxFQUFlLHNHQUFBM0csQ0FBQSxDQUFBaUIsUUFBQSxDQUl4QixVQUFtQ2QsQ0FBQTtVQUN0QyxPQUFPQSxDQUFBLENBQU0yQixNQUFBLEdBQVMsQ0FDMUI7UUFBQSxHQUZzQyw2R0FBQTlCLENBQUEsQ0FBQWlCLFFBQUEsQ0FJL0IsVUFBa0NkLENBQUE7VUFDckMsS0FBS3dHLENBQUEsQ0FBZ0J4RyxDQUFBLEdBQ2pCLE1BQU0sSUFBSW9GLEtBQUEsQ0FBTSwwQkFFeEI7UUFBQSxHQUpxQyw0R0FBQXZGLENBQUEsQ0FBQWlCLFFBQUEsQ0FNOUIsVUFDSGQsQ0FBQSxFQUNBTSxDQUFBO1VBRUEsS0FBS2lHLENBQUEsQ0FBZXZHLENBQUEsRUFBT00sQ0FBQSxHQUN2QixNQUFNLElBQUk4RSxLQUFBLENBQU0sMkJBQURuRixNQUFBLENBQTRCSyxDQUFBLEVBRW5EO1FBQUEsR0FQb0MsMkdBQUFULENBQUEsQ0FBQWlCLFFBQUEsQ0FTN0IsVUFDSGQsQ0FBQSxFQUNBTSxDQUFBO1VBRUEsS0FBS2dHLENBQUEsQ0FBMkJ0RyxDQUFBLEVBQU9NLENBQUEsR0FDbkMsTUFBTSxJQUFJOEUsS0FBQSxDQUFNLGtDQUFEbkYsTUFBQSxDQUFtQ0ssQ0FBQSxFQUUxRDtRQUFBLEdBUG1ELDBIQUFBVCxDQUFBLENBQUFpQixRQUFBLENBUzVDLFVBQXFCZCxDQUFBLEdBQ3hCLEdBRHVCLGtHQUFBSCxDQUFBLENBQUFpQixRQUFBLENBSXBCLFVBQTRCZCxDQUFBO1VBQy9CLE9BQU8sR0FBUEMsTUFBQSxDQUFVRCxDQUFBLENBQ2Q7UUFBQSxHQUZrQyx5R0FBQUgsQ0FBQSxDQUFBaUIsUUFBQSxDQUkzQixVQUF3QmQsQ0FBQTtVQUUzQkEsQ0FBQSxFQUNKO1FBQUEsR0FIOEIscUdBQUFILENBQUEsQ0FBQWlCLFFBQUEsQ0FLZFQsQ0FBQSxFQUFhLG9HQUFBUixDQUFBLENBQUFpQixRQUFBLENBSXRCLFVBQTBCZCxDQUFBO1VBQzdCLFFBQVFLLENBQUEsQ0FBY0wsQ0FBQSxDQUMxQjtRQUFBLEdBRmdDLHVHQUFBSCxDQUFBLENBQUFpQixRQUFBLENBSXpCLFVBQTRCZCxDQUFBO1VBQy9CLE9BQWdCLFFBQVRBLENBQUEsSUFBdUMsT0FBakJBLENBQUEsQ0FBTTJHLElBQUEsRUFDdkM7UUFBQSxHQUZrQyx5R0FBQTlHLENBQUEsQ0FBQWlCLFFBQUEsQ0FJM0IsVUFBdUJkLENBQUE7VUFDMUIsT0FBeUIsUUFBbEJBLENBQUEsQ0FBSTRHLEtBQUEsRUFBTyxLQUFhNUcsQ0FBQSxDQUFJNEcsS0FBQSxDQUFNLElBQUksS0FBSzVHLENBQ3REO1FBQUEsR0FGNkIsb0dBQUFILENBQUEsQ0FBQWlCLFFBQUEsQ0FJdEIsVUFBcUJkLENBQUEsR0FDeEIsR0FEb0IsaUdBQUFGLENBQUEseUJBQUFZLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFLLFdBQUEsY0FBQWpCLENBQUEsQ0FBQUUsQ0FBQTtNQUFBO01BQUEsZUFBQUEsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7UUNoSXhCLElBQUlLLENBQUEsR0FDcUIsc0JBQWZvRyxVQUFBLElBQThCQSxVQUFBLElBQ3JCLHNCQUFUQyxJQUFBLElBQXdCQSxJQUFBLFNBQ2IsTUFBWHJHLENBQUEsSUFBMEJBLENBQUE7VUFFaENaLENBQUEsR0FBVTtZQUNaa0gsWUFBQSxFQUFjLHFCQUFxQnRHLENBQUE7WUFDbkN1RyxRQUFBLEVBQVUsWUFBWXZHLENBQUEsSUFBVSxjQUFjVyxNQUFBO1lBQzlDNkYsSUFBQSxFQUNFLGdCQUFnQnhHLENBQUEsSUFDaEIsVUFBVUEsQ0FBQSxJQUNWO2NBQ0U7Z0JBRUUsT0FEQSxJQUFJeUcsSUFBQSxLQUNHLENBQ1Q7Y0FBQSxDQUFFLFFBQU9sSCxDQUFBO2dCQUNQLFFBQU8sQ0FDVDtjQUFBO1lBQ0QsQ0FQRDtZQVFGbUgsUUFBQSxFQUFVLGNBQWMxRyxDQUFBO1lBQ3hCMkcsV0FBQSxFQUFhLGlCQUFpQjNHO1VBQUE7UUFPaEMsSUFBSVosQ0FBQSxDQUFRdUgsV0FBQSxFQUNWLElBQUl0SCxDQUFBLEdBQWMsQ0FDaEIsc0JBQ0EsdUJBQ0EsOEJBQ0EsdUJBQ0Esd0JBQ0EsdUJBQ0Esd0JBQ0EseUJBQ0E7VUFHRUMsQ0FBQSxHQUNGc0gsV0FBQSxDQUFZQyxNQUFBLElBQ1osVUFBU3RILENBQUE7WUFDUCxPQUFPQSxDQUFBLElBQU9GLENBQUEsQ0FBWXdFLE9BQUEsQ0FBUXZDLE1BQUEsQ0FBT1IsU0FBQSxDQUFVOEMsUUFBQSxDQUFTOUIsSUFBQSxDQUFLdkMsQ0FBQSxNQUFTLENBQzVFO1VBQUE7UUFHSixTQUFTb0csRUFBY3BHLENBQUE7VUFJckIsSUFIb0IsbUJBQVRBLENBQUEsS0FDVEEsQ0FBQSxHQUFPcUMsTUFBQSxDQUFPckMsQ0FBQSxJQUVaLDZCQUE2QnVILElBQUEsQ0FBS3ZILENBQUEsS0FBa0IsT0FBVEEsQ0FBQSxFQUM3QyxNQUFNLElBQUl5QixTQUFBLENBQVUsOENBQThDekIsQ0FBQSxHQUFPO1VBRTNFLE9BQU9BLENBQUEsQ0FBS3dILFdBQUEsRUFDZDtRQUFBO1FBRUEsU0FBU25CLEVBQWVyRyxDQUFBO1VBSXRCLE9BSHFCLG1CQUFWQSxDQUFBLEtBQ1RBLENBQUEsR0FBUXFDLE1BQUEsQ0FBT3JDLENBQUEsSUFFVkEsQ0FDVDtRQUFBO1FBR0EsU0FBU3NHLEVBQVl0RyxDQUFBO1VBQ25CLElBQUlNLENBQUEsR0FBVztZQUNibUgsSUFBQSxFQUFNLFNBQUFBLENBQUE7Y0FDSixJQUFJbkgsQ0FBQSxHQUFRTixDQUFBLENBQU0wSCxLQUFBO2NBQ2xCLE9BQU87Z0JBQUNDLElBQUEsT0FBZ0IsTUFBVnJILENBQUE7Z0JBQXFCcUMsS0FBQSxFQUFPckM7Y0FBQSxDQUM1QztZQUFBO1VBQUE7VUFTRixPQU5JVCxDQUFBLENBQVFtSCxRQUFBLEtBQ1YxRyxDQUFBLENBQVNjLE1BQUEsQ0FBT0MsUUFBQSxJQUFZO1lBQzFCLE9BQU9mLENBQ1Q7VUFBQSxJQUdLQSxDQUNUO1FBQUE7UUFFTyxTQUFTaUcsRUFBUXZHLENBQUE7VUFDdEIsS0FBSzRILEdBQUEsR0FBTSxDQUFDLEdBRVI1SCxDQUFBLFlBQW1CdUcsQ0FBQSxHQUNyQnZHLENBQUEsQ0FBUTZILE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQSxFQUFPTSxDQUFBO1lBQzlCLEtBQUt3SCxNQUFBLENBQU94SCxDQUFBLEVBQU1OLENBQUEsQ0FDcEI7VUFBQSxHQUFHLFFBQ00rSCxLQUFBLENBQU1DLE9BQUEsQ0FBUWhJLENBQUEsSUFDdkJBLENBQUEsQ0FBUTZILE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQTtZQUN2QixLQUFLOEgsTUFBQSxDQUFPOUgsQ0FBQSxDQUFPLElBQUlBLENBQUEsQ0FBTyxHQUNoQztVQUFBLEdBQUcsUUFDTUEsQ0FBQSxJQUNUK0IsTUFBQSxDQUFPa0csbUJBQUEsQ0FBb0JqSSxDQUFBLEVBQVM2SCxPQUFBLENBQVEsVUFBU3ZILENBQUE7WUFDbkQsS0FBS3dILE1BQUEsQ0FBT3hILENBQUEsRUFBTU4sQ0FBQSxDQUFRTSxDQUFBLEVBQzVCO1VBQUEsR0FBRyxLQUVQO1FBQUE7UUE4REEsU0FBU2tHLEVBQVN4RyxDQUFBO1VBQ2hCLElBQUlBLENBQUEsQ0FBS2tJLFFBQUEsRUFDUCxPQUFPQyxPQUFBLENBQVFDLE1BQUEsQ0FBTyxJQUFJM0csU0FBQSxDQUFVO1VBRXRDekIsQ0FBQSxDQUFLa0ksUUFBQSxJQUFXLENBQ2xCO1FBQUE7UUFFQSxTQUFTN0gsRUFBZ0JMLENBQUE7VUFDdkIsT0FBTyxJQUFJbUksT0FBQSxDQUFRLFVBQVM3SCxDQUFBLEVBQVNGLENBQUE7WUFDbkNKLENBQUEsQ0FBT3FJLE1BQUEsR0FBUztjQUNkL0gsQ0FBQSxDQUFRTixDQUFBLENBQU9zSSxNQUFBLENBQ2pCO1lBQUEsR0FDQXRJLENBQUEsQ0FBT3VJLE9BQUEsR0FBVTtjQUNmbkksQ0FBQSxDQUFPSixDQUFBLENBQU93SSxLQUFBLENBQ2hCO1lBQUEsQ0FDRjtVQUFBLEVBQ0Y7UUFBQTtRQUVBLFNBQVNDLEVBQXNCekksQ0FBQTtVQUM3QixJQUFJTSxDQUFBLEdBQVMsSUFBSW9JLFVBQUE7WUFDYnRJLENBQUEsR0FBVUMsQ0FBQSxDQUFnQkMsQ0FBQTtVQUU5QixPQURBQSxDQUFBLENBQU9xSSxpQkFBQSxDQUFrQjNJLENBQUEsR0FDbEJJLENBQ1Q7UUFBQTtRQW1CQSxTQUFTd0ksRUFBWTVJLENBQUE7VUFDbkIsSUFBSUEsQ0FBQSxDQUFJNEcsS0FBQSxFQUNOLE9BQU81RyxDQUFBLENBQUk0RyxLQUFBLENBQU07VUFFakIsSUFBSXRHLENBQUEsR0FBTyxJQUFJdUksVUFBQSxDQUFXN0ksQ0FBQSxDQUFJOEksVUFBQTtVQUU5QixPQURBeEksQ0FBQSxDQUFLc0QsR0FBQSxDQUFJLElBQUlpRixVQUFBLENBQVc3SSxDQUFBLElBQ2pCTSxDQUFBLENBQUt5SSxNQUVoQjtRQUFBO1FBRUEsU0FBU3hJLEVBQUE7VUFrSFAsT0FqSEEsS0FBSzJILFFBQUEsSUFBVyxHQUVoQixLQUFLYyxTQUFBLEdBQVksVUFBU2hKLENBQUE7WUFoTTVCLElBQW9CTSxDQUFBO1lBMk1oQixLQUFLNEgsUUFBQSxHQUFXLEtBQUtBLFFBQUEsRUFDckIsS0FBS2UsU0FBQSxHQUFZakosQ0FBQSxFQUNaQSxDQUFBLEdBRXNCLG1CQUFUQSxDQUFBLEdBQ2hCLEtBQUtrSixTQUFBLEdBQVlsSixDQUFBLEdBQ1JILENBQUEsQ0FBUW9ILElBQUEsSUFBUUMsSUFBQSxDQUFLM0YsU0FBQSxDQUFVNEgsYUFBQSxDQUFjbkosQ0FBQSxJQUN0RCxLQUFLb0osU0FBQSxHQUFZcEosQ0FBQSxHQUNSSCxDQUFBLENBQVFzSCxRQUFBLElBQVlrQyxRQUFBLENBQVM5SCxTQUFBLENBQVU0SCxhQUFBLENBQWNuSixDQUFBLElBQzlELEtBQUtzSixhQUFBLEdBQWdCdEosQ0FBQSxHQUNaSCxDQUFBLENBQVFrSCxZQUFBLElBQWdCd0MsZUFBQSxDQUFnQmhJLFNBQUEsQ0FBVTRILGFBQUEsQ0FBY25KLENBQUEsSUFDekUsS0FBS2tKLFNBQUEsR0FBWWxKLENBQUEsQ0FBS3FFLFFBQUEsS0FDYnhFLENBQUEsQ0FBUXVILFdBQUEsSUFBZXZILENBQUEsQ0FBUW9ILElBQUEsS0F2TjFCM0csQ0FBQSxHQXVONkNOLENBQUEsS0F0TmpEd0osUUFBQSxDQUFTakksU0FBQSxDQUFVNEgsYUFBQSxDQUFjN0ksQ0FBQSxLQXVOM0MsS0FBS21KLGdCQUFBLEdBQW1CYixDQUFBLENBQVk1SSxDQUFBLENBQUsrSSxNQUFBLEdBRXpDLEtBQUtFLFNBQUEsR0FBWSxJQUFJL0IsSUFBQSxDQUFLLENBQUMsS0FBS3VDLGdCQUFBLE1BQ3ZCNUosQ0FBQSxDQUFRdUgsV0FBQSxLQUFnQkMsV0FBQSxDQUFZOUYsU0FBQSxDQUFVNEgsYUFBQSxDQUFjbkosQ0FBQSxLQUFTRCxDQUFBLENBQWtCQyxDQUFBLEtBQ2hHLEtBQUt5SixnQkFBQSxHQUFtQmIsQ0FBQSxDQUFZNUksQ0FBQSxJQUVwQyxLQUFLa0osU0FBQSxHQUFZbEosQ0FBQSxHQUFPK0IsTUFBQSxDQUFPUixTQUFBLENBQVU4QyxRQUFBLENBQVM5QixJQUFBLENBQUt2QyxDQUFBLElBaEJ2RCxLQUFLa0osU0FBQSxHQUFZLElBbUJkLEtBQUtRLE9BQUEsQ0FBUS9GLEdBQUEsQ0FBSSxvQkFDQSxtQkFBVDNELENBQUEsR0FDVCxLQUFLMEosT0FBQSxDQUFROUYsR0FBQSxDQUFJLGdCQUFnQiw4QkFDeEIsS0FBS3dGLFNBQUEsSUFBYSxLQUFLQSxTQUFBLENBQVVPLElBQUEsR0FDMUMsS0FBS0QsT0FBQSxDQUFROUYsR0FBQSxDQUFJLGdCQUFnQixLQUFLd0YsU0FBQSxDQUFVTyxJQUFBLElBQ3ZDOUosQ0FBQSxDQUFRa0gsWUFBQSxJQUFnQndDLGVBQUEsQ0FBZ0JoSSxTQUFBLENBQVU0SCxhQUFBLENBQWNuSixDQUFBLEtBQ3pFLEtBQUswSixPQUFBLENBQVE5RixHQUFBLENBQUksZ0JBQWdCLG1EQUd2QztVQUFBLEdBRUkvRCxDQUFBLENBQVFvSCxJQUFBLEtBQ1YsS0FBS0EsSUFBQSxHQUFPO1lBQ1YsSUFBSWpILENBQUEsR0FBV3dHLENBQUEsQ0FBUztZQUN4QixJQUFJeEcsQ0FBQSxFQUNGLE9BQU9BLENBQUE7WUFHVCxJQUFJLEtBQUtvSixTQUFBLEVBQ1AsT0FBT2pCLE9BQUEsQ0FBUXlCLE9BQUEsQ0FBUSxLQUFLUixTQUFBO1lBQ3ZCLElBQUksS0FBS0ssZ0JBQUEsRUFDZCxPQUFPdEIsT0FBQSxDQUFReUIsT0FBQSxDQUFRLElBQUkxQyxJQUFBLENBQUssQ0FBQyxLQUFLdUMsZ0JBQUE7WUFDakMsSUFBSSxLQUFLSCxhQUFBLEVBQ2QsTUFBTSxJQUFJbEUsS0FBQSxDQUFNO1lBRWhCLE9BQU8rQyxPQUFBLENBQVF5QixPQUFBLENBQVEsSUFBSTFDLElBQUEsQ0FBSyxDQUFDLEtBQUtnQyxTQUFBLEdBRTFDO1VBQUEsR0FFQSxLQUFLOUIsV0FBQSxHQUFjO1lBQ2pCLE9BQUksS0FBS3FDLGdCQUFBLEdBQ1VqRCxDQUFBLENBQVMsVUFJdEJhLFdBQUEsQ0FBWUMsTUFBQSxDQUFPLEtBQUttQyxnQkFBQSxJQUNuQnRCLE9BQUEsQ0FBUXlCLE9BQUEsQ0FDYixLQUFLSCxnQkFBQSxDQUFpQlYsTUFBQSxDQUFPbkMsS0FBQSxDQUMzQixLQUFLNkMsZ0JBQUEsQ0FBaUJJLFVBQUEsRUFDdEIsS0FBS0osZ0JBQUEsQ0FBaUJJLFVBQUEsR0FBYSxLQUFLSixnQkFBQSxDQUFpQlgsVUFBQSxLQUl0RFgsT0FBQSxDQUFReUIsT0FBQSxDQUFRLEtBQUtILGdCQUFBLEtBR3ZCLEtBQUt4QyxJQUFBLEdBQU82QyxJQUFBLENBQUtyQixDQUFBLENBRTVCO1VBQUEsSUFHRixLQUFLc0IsSUFBQSxHQUFPO1lBQ1YsSUFuSG9CL0osQ0FBQTtjQUNsQk0sQ0FBQTtjQUNBRixDQUFBO2NBaUhFSyxDQUFBLEdBQVcrRixDQUFBLENBQVM7WUFDeEIsSUFBSS9GLENBQUEsRUFDRixPQUFPQSxDQUFBO1lBR1QsSUFBSSxLQUFLMkksU0FBQSxFQUNQLE9BekhrQnBKLENBQUEsR0F5SEksS0FBS29KLFNBQUEsRUF2SDNCaEosQ0FBQSxHQUFVQyxDQUFBLENBRFZDLENBQUEsR0FBUyxJQUFJb0ksVUFBQSxLQUVqQnBJLENBQUEsQ0FBTzBKLFVBQUEsQ0FBV2hLLENBQUEsR0FDWEksQ0FBQTtZQXNIRSxJQUFJLEtBQUtxSixnQkFBQSxFQUNkLE9BQU90QixPQUFBLENBQVF5QixPQUFBLENBcEhyQixVQUErQjVKLENBQUE7Y0FJN0IsS0FIQSxJQUFJTSxDQUFBLEdBQU8sSUFBSXVJLFVBQUEsQ0FBVzdJLENBQUEsR0FDdEJJLENBQUEsR0FBUSxJQUFJMkgsS0FBQSxDQUFNekgsQ0FBQSxDQUFLcUIsTUFBQSxHQUVsQmxCLENBQUEsR0FBSSxHQUFHQSxDQUFBLEdBQUlILENBQUEsQ0FBS3FCLE1BQUEsRUFBUWxCLENBQUEsSUFDL0JMLENBQUEsQ0FBTUssQ0FBQSxJQUFLNEIsTUFBQSxDQUFPNEgsWUFBQSxDQUFhM0osQ0FBQSxDQUFLRyxDQUFBO2NBRXRDLE9BQU9MLENBQUEsQ0FBTThKLElBQUEsQ0FBSyxHQUNwQjtZQUFBLENBNEc2QixDQUFzQixLQUFLVCxnQkFBQTtZQUM3QyxJQUFJLEtBQUtILGFBQUEsRUFDZCxNQUFNLElBQUlsRSxLQUFBLENBQU07WUFFaEIsT0FBTytDLE9BQUEsQ0FBUXlCLE9BQUEsQ0FBUSxLQUFLVixTQUFBLENBRWhDO1VBQUEsR0FFSXJKLENBQUEsQ0FBUXNILFFBQUEsS0FDVixLQUFLQSxRQUFBLEdBQVc7WUFDZCxPQUFPLEtBQUs0QyxJQUFBLEdBQU9ELElBQUEsQ0FBS0ssQ0FBQSxDQUMxQjtVQUFBLElBR0YsS0FBS0MsSUFBQSxHQUFPO1lBQ1YsT0FBTyxLQUFLTCxJQUFBLEdBQU9ELElBQUEsQ0FBS08sSUFBQSxDQUFLQyxLQUFBLENBQy9CO1VBQUEsR0FFTyxJQUNUO1FBQUE7UUFuT0EvRCxDQUFBLENBQVFoRixTQUFBLENBQVV1RyxNQUFBLEdBQVMsVUFBUzlILENBQUEsRUFBTU0sQ0FBQTtVQUN4Q04sQ0FBQSxHQUFPb0csQ0FBQSxDQUFjcEcsQ0FBQSxHQUNyQk0sQ0FBQSxHQUFRK0YsQ0FBQSxDQUFlL0YsQ0FBQTtVQUN2QixJQUFJRixDQUFBLEdBQVcsS0FBS3dILEdBQUEsQ0FBSTVILENBQUE7VUFDeEIsS0FBSzRILEdBQUEsQ0FBSTVILENBQUEsSUFBUUksQ0FBQSxHQUFXQSxDQUFBLEdBQVcsT0FBT0UsQ0FBQSxHQUFRQSxDQUN4RDtRQUFBLEdBRUFpRyxDQUFBLENBQVFoRixTQUFBLENBQWtCZ0osTUFBQSxHQUFJLFVBQVN2SyxDQUFBO1VBQUEsT0FDOUIsS0FBSzRILEdBQUEsQ0FBSXhCLENBQUEsQ0FBY3BHLENBQUEsRUFDaEM7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVb0MsR0FBQSxHQUFNLFVBQVMzRCxDQUFBO1VBRS9CLE9BREFBLENBQUEsR0FBT29HLENBQUEsQ0FBY3BHLENBQUEsR0FDZCxLQUFLMEQsR0FBQSxDQUFJMUQsQ0FBQSxJQUFRLEtBQUs0SCxHQUFBLENBQUk1SCxDQUFBLElBQVEsSUFDM0M7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVbUMsR0FBQSxHQUFNLFVBQVMxRCxDQUFBO1VBQy9CLE9BQU8sS0FBSzRILEdBQUEsQ0FBSTRDLGNBQUEsQ0FBZXBFLENBQUEsQ0FBY3BHLENBQUEsRUFDL0M7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVcUMsR0FBQSxHQUFNLFVBQVM1RCxDQUFBLEVBQU1NLENBQUE7VUFDckMsS0FBS3NILEdBQUEsQ0FBSXhCLENBQUEsQ0FBY3BHLENBQUEsS0FBU3FHLENBQUEsQ0FBZS9GLENBQUEsQ0FDakQ7UUFBQSxHQUVBaUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVc0csT0FBQSxHQUFVLFVBQVM3SCxDQUFBLEVBQVVNLENBQUE7VUFDN0MsS0FBSyxJQUFJRixDQUFBLElBQVEsS0FBS3dILEdBQUEsRUFDaEIsS0FBS0EsR0FBQSxDQUFJNEMsY0FBQSxDQUFlcEssQ0FBQSxLQUMxQkosQ0FBQSxDQUFTdUMsSUFBQSxDQUFLakMsQ0FBQSxFQUFTLEtBQUtzSCxHQUFBLENBQUl4SCxDQUFBLEdBQU9BLENBQUEsRUFBTSxLQUduRDtRQUFBLEdBRUFtRyxDQUFBLENBQVFoRixTQUFBLENBQVVrSixJQUFBLEdBQU87VUFDdkIsSUFBSXpLLENBQUEsR0FBUTtVQUlaLE9BSEEsS0FBSzZILE9BQUEsQ0FBUSxVQUFTdkgsQ0FBQSxFQUFPRixDQUFBO1lBQzNCSixDQUFBLENBQU0rRCxJQUFBLENBQUszRCxDQUFBLENBQ2I7VUFBQSxJQUNPa0csQ0FBQSxDQUFZdEcsQ0FBQSxDQUNyQjtRQUFBLEdBRUF1RyxDQUFBLENBQVFoRixTQUFBLENBQVVtSixNQUFBLEdBQVM7VUFDekIsSUFBSTFLLENBQUEsR0FBUTtVQUlaLE9BSEEsS0FBSzZILE9BQUEsQ0FBUSxVQUFTdkgsQ0FBQTtZQUNwQk4sQ0FBQSxDQUFNK0QsSUFBQSxDQUFLekQsQ0FBQSxDQUNiO1VBQUEsSUFDT2dHLENBQUEsQ0FBWXRHLENBQUEsQ0FDckI7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVb0osT0FBQSxHQUFVO1VBQzFCLElBQUkzSyxDQUFBLEdBQVE7VUFJWixPQUhBLEtBQUs2SCxPQUFBLENBQVEsVUFBU3ZILENBQUEsRUFBT0YsQ0FBQTtZQUMzQkosQ0FBQSxDQUFNK0QsSUFBQSxDQUFLLENBQUMzRCxDQUFBLEVBQU1FLENBQUEsRUFDcEI7VUFBQSxJQUNPZ0csQ0FBQSxDQUFZdEcsQ0FBQSxDQUNyQjtRQUFBLEdBRUlILENBQUEsQ0FBUW1ILFFBQUEsS0FDVlQsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVSCxNQUFBLENBQU9DLFFBQUEsSUFBWWtGLENBQUEsQ0FBUWhGLFNBQUEsQ0FBVW9KLE9BQUE7UUE2S3pELElBQUlDLENBQUEsR0FBVSxDQUFDLFVBQVUsT0FBTyxRQUFRLFdBQVcsUUFBUTtRQU9wRCxTQUFTQyxFQUFRN0ssQ0FBQSxFQUFPTSxDQUFBO1VBQzdCLE1BQU0sZ0JBQWdCdUssQ0FBQSxHQUNwQixNQUFNLElBQUlwSixTQUFBLENBQVU7VUFJdEIsSUFYdUJyQixDQUFBO1lBQ25CSyxDQUFBO1lBVUFaLENBQUEsSUFESlMsQ0FBQSxHQUFVQSxDQUFBLElBQVcsQ0FBQyxHQUNId0ssSUFBQTtVQUVuQixJQUFJOUssQ0FBQSxZQUFpQjZLLENBQUEsRUFBUztZQUM1QixJQUFJN0ssQ0FBQSxDQUFNa0ksUUFBQSxFQUNSLE1BQU0sSUFBSXpHLFNBQUEsQ0FBVTtZQUV0QixLQUFLc0osR0FBQSxHQUFNL0ssQ0FBQSxDQUFNK0ssR0FBQSxFQUNqQixLQUFLQyxXQUFBLEdBQWNoTCxDQUFBLENBQU1nTCxXQUFBLEVBQ3BCMUssQ0FBQSxDQUFRb0osT0FBQSxLQUNYLEtBQUtBLE9BQUEsR0FBVSxJQUFJbkQsQ0FBQSxDQUFRdkcsQ0FBQSxDQUFNMEosT0FBQSxJQUVuQyxLQUFLdUIsTUFBQSxHQUFTakwsQ0FBQSxDQUFNaUwsTUFBQSxFQUNwQixLQUFLQyxJQUFBLEdBQU9sTCxDQUFBLENBQU1rTCxJQUFBLEVBQ2xCLEtBQUtDLE1BQUEsR0FBU25MLENBQUEsQ0FBTW1MLE1BQUEsRUFDZnRMLENBQUEsSUFBMkIsUUFBbkJHLENBQUEsQ0FBTWlKLFNBQUEsS0FDakJwSixDQUFBLEdBQU9HLENBQUEsQ0FBTWlKLFNBQUEsRUFDYmpKLENBQUEsQ0FBTWtJLFFBQUEsSUFBVyxFQUVyQjtVQUFBLE9BQ0UsS0FBSzZDLEdBQUEsR0FBTTFJLE1BQUEsQ0FBT3JDLENBQUE7VUFZcEIsSUFUQSxLQUFLZ0wsV0FBQSxHQUFjMUssQ0FBQSxDQUFRMEssV0FBQSxJQUFlLEtBQUtBLFdBQUEsSUFBZSxnQkFDMUQxSyxDQUFBLENBQVFvSixPQUFBLElBQVksS0FBS0EsT0FBQSxLQUMzQixLQUFLQSxPQUFBLEdBQVUsSUFBSW5ELENBQUEsQ0FBUWpHLENBQUEsQ0FBUW9KLE9BQUEsSUFFckMsS0FBS3VCLE1BQUEsSUFwQ0R4SyxDQUFBLElBRG1CTCxDQUFBLEdBcUNPRSxDQUFBLENBQVEySyxNQUFBLElBQVUsS0FBS0EsTUFBQSxJQUFVLE9BcEMxQ0csV0FBQSxJQUNkUixDQUFBLENBQVF0RyxPQUFBLENBQVE3RCxDQUFBLEtBQVksSUFBSUEsQ0FBQSxHQUFVTCxDQUFBLEdBb0NqRCxLQUFLOEssSUFBQSxHQUFPNUssQ0FBQSxDQUFRNEssSUFBQSxJQUFRLEtBQUtBLElBQUEsSUFBUSxNQUN6QyxLQUFLQyxNQUFBLEdBQVM3SyxDQUFBLENBQVE2SyxNQUFBLElBQVUsS0FBS0EsTUFBQSxFQUNyQyxLQUFLRSxRQUFBLEdBQVcsT0FFSyxVQUFoQixLQUFLSixNQUFBLElBQW9DLFdBQWhCLEtBQUtBLE1BQUEsS0FBc0JwTCxDQUFBLEVBQ3ZELE1BQU0sSUFBSTRCLFNBQUEsQ0FBVTtVQUl0QixJQUZBLEtBQUt1SCxTQUFBLENBQVVuSixDQUFBLEtBRUssVUFBaEIsS0FBS29MLE1BQUEsSUFBb0MsV0FBaEIsS0FBS0EsTUFBQSxJQUNWLGVBQWxCM0ssQ0FBQSxDQUFRZ0wsS0FBQSxJQUEwQyxlQUFsQmhMLENBQUEsQ0FBUWdMLEtBQUEsR0FBc0I7WUFFaEUsSUFBSXhMLENBQUEsR0FBZ0I7WUFDaEJBLENBQUEsQ0FBY3lILElBQUEsQ0FBSyxLQUFLd0QsR0FBQSxJQUUxQixLQUFLQSxHQUFBLEdBQU0sS0FBS0EsR0FBQSxDQUFJUSxPQUFBLENBQVF6TCxDQUFBLEVBQWUsU0FBUyxJQUFJMEwsSUFBQSxHQUFPQyxPQUFBLE1BSS9ELEtBQUtWLEdBQUEsS0FEZSxLQUNPeEQsSUFBQSxDQUFLLEtBQUt3RCxHQUFBLElBQU8sTUFBTSxPQUFPLE9BQU8sSUFBSVMsSUFBQSxHQUFPQyxPQUFBLEVBRS9FO1VBQUE7UUFFSjtRQU1BLFNBQVN0QixFQUFPbkssQ0FBQTtVQUNkLElBQUlNLENBQUEsR0FBTyxJQUFJK0ksUUFBQTtVQVlmLE9BWEFySixDQUFBLENBQ0cyRyxJQUFBLEdBQ0ErRSxLQUFBLENBQU0sS0FDTjdELE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQTtZQUNoQixJQUFJQSxDQUFBLEVBQU87Y0FDVCxJQUFJSSxDQUFBLEdBQVFKLENBQUEsQ0FBTTBMLEtBQUEsQ0FBTTtnQkFDcEJqTCxDQUFBLEdBQU9MLENBQUEsQ0FBTXNILEtBQUEsR0FBUTZELE9BQUEsQ0FBUSxPQUFPO2dCQUNwQzFMLENBQUEsR0FBUU8sQ0FBQSxDQUFNOEosSUFBQSxDQUFLLEtBQUtxQixPQUFBLENBQVEsT0FBTztjQUMzQ2pMLENBQUEsQ0FBS3dILE1BQUEsQ0FBTzZELGtCQUFBLENBQW1CbEwsQ0FBQSxHQUFPa0wsa0JBQUEsQ0FBbUI5TCxDQUFBLEVBQzNEO1lBQUE7VUFDRixJQUNLUyxDQUNUO1FBQUE7UUE0Qk8sU0FBU3NMLEVBQVM1TCxDQUFBLEVBQVVNLENBQUE7VUFDakMsTUFBTSxnQkFBZ0JzTCxDQUFBLEdBQ3BCLE1BQU0sSUFBSW5LLFNBQUEsQ0FBVTtVQUVqQm5CLENBQUEsS0FDSEEsQ0FBQSxHQUFVLENBQUMsSUFHYixLQUFLcUosSUFBQSxHQUFPLFdBQ1osS0FBS2tDLE1BQUEsUUFBNEIsTUFBbkJ2TCxDQUFBLENBQVF1TCxNQUFBLEdBQXVCLE1BQU12TCxDQUFBLENBQVF1TCxNQUFBLEVBQzNELEtBQUtDLEVBQUEsR0FBSyxLQUFLRCxNQUFBLElBQVUsT0FBTyxLQUFLQSxNQUFBLEdBQVMsS0FDOUMsS0FBS0UsVUFBQSxRQUFvQyxNQUF2QnpMLENBQUEsQ0FBUXlMLFVBQUEsR0FBMkIsS0FBSyxLQUFLekwsQ0FBQSxDQUFReUwsVUFBQSxFQUN2RSxLQUFLckMsT0FBQSxHQUFVLElBQUluRCxDQUFBLENBQVFqRyxDQUFBLENBQVFvSixPQUFBLEdBQ25DLEtBQUtxQixHQUFBLEdBQU16SyxDQUFBLENBQVF5SyxHQUFBLElBQU8sSUFDMUIsS0FBSy9CLFNBQUEsQ0FBVWhKLENBQUEsQ0FDakI7UUFBQTtRQTdEQTZLLENBQUEsQ0FBUXRKLFNBQUEsQ0FBVXlLLEtBQUEsR0FBUTtVQUN4QixPQUFPLElBQUluQixDQUFBLENBQVEsTUFBTTtZQUFDQyxJQUFBLEVBQU0sS0FBSzdCO1VBQUEsRUFDdkM7UUFBQSxHQTBDQTFJLENBQUEsQ0FBS2dDLElBQUEsQ0FBS3NJLENBQUEsQ0FBUXRKLFNBQUEsR0FtQmxCaEIsQ0FBQSxDQUFLZ0MsSUFBQSxDQUFLcUosQ0FBQSxDQUFTckssU0FBQSxHQUVuQnFLLENBQUEsQ0FBU3JLLFNBQUEsQ0FBVXlLLEtBQUEsR0FBUTtVQUN6QixPQUFPLElBQUlKLENBQUEsQ0FBUyxLQUFLM0MsU0FBQSxFQUFXO1lBQ2xDNEMsTUFBQSxFQUFRLEtBQUtBLE1BQUE7WUFDYkUsVUFBQSxFQUFZLEtBQUtBLFVBQUE7WUFDakJyQyxPQUFBLEVBQVMsSUFBSW5ELENBQUEsQ0FBUSxLQUFLbUQsT0FBQTtZQUMxQnFCLEdBQUEsRUFBSyxLQUFLQTtVQUFBLEVBRWQ7UUFBQSxHQUVBYSxDQUFBLENBQVNwRCxLQUFBLEdBQVE7VUFDZixJQUFJeEksQ0FBQSxHQUFXLElBQUk0TCxDQUFBLENBQVMsTUFBTTtZQUFDQyxNQUFBLEVBQVE7WUFBR0UsVUFBQSxFQUFZO1VBQUE7VUFFMUQsT0FEQS9MLENBQUEsQ0FBUzJKLElBQUEsR0FBTyxTQUNUM0osQ0FDVDtRQUFBO1FBRUEsSUFBSWlNLENBQUEsR0FBbUIsQ0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLO1FBRTVDTCxDQUFBLENBQVNNLFFBQUEsR0FBVyxVQUFTbE0sQ0FBQSxFQUFLTSxDQUFBO1VBQ2hDLEtBQTBDLE1BQXRDMkwsQ0FBQSxDQUFpQjNILE9BQUEsQ0FBUWhFLENBQUEsR0FDM0IsTUFBTSxJQUFJNkwsVUFBQSxDQUFXO1VBR3ZCLE9BQU8sSUFBSVAsQ0FBQSxDQUFTLE1BQU07WUFBQ0MsTUFBQSxFQUFRdkwsQ0FBQTtZQUFRb0osT0FBQSxFQUFTO2NBQUMwQyxRQUFBLEVBQVVwTTtZQUFBO1VBQUEsRUFDakU7UUFBQTtRQUVPLElBQUlxTSxDQUFBLEdBQWU1TCxDQUFBLENBQU82TCxZQUFBO1FBQ2pDO1VBQ0UsSUFBSUQsQ0FDTixDQURNLENBQ047UUFBQSxDQUFFLFFBQU9yTSxDQUFBO1VBQUEsQ0FDUHFNLENBQUEsR0FBZSxTQUFBQyxDQUFTdE0sQ0FBQSxFQUFTTSxDQUFBO1lBQy9CLEtBQUtvRyxPQUFBLEdBQVUxRyxDQUFBLEVBQ2YsS0FBS2dGLElBQUEsR0FBTzFFLENBQUE7WUFDWixJQUFJRixDQUFBLEdBQVFnRixLQUFBLENBQU1wRixDQUFBO1lBQ2xCLEtBQUt1TSxLQUFBLEdBQVFuTSxDQUFBLENBQU1tTSxLQUNyQjtVQUFBLEdBQ2FoTCxTQUFBLEdBQVlRLE1BQUEsQ0FBT1csTUFBQSxDQUFPMEMsS0FBQSxDQUFNN0QsU0FBQSxHQUM3QzhLLENBQUEsQ0FBYTlLLFNBQUEsQ0FBVUQsV0FBQSxHQUFjK0ssQ0FDdkM7UUFBQTtRQUVPLFNBQVNHLEVBQU14TSxDQUFBLEVBQU9NLENBQUE7VUFDM0IsT0FBTyxJQUFJNkgsT0FBQSxDQUFRLFVBQVMvSCxDQUFBLEVBQVNOLENBQUE7WUFDbkMsSUFBSUMsQ0FBQSxHQUFVLElBQUk4SyxDQUFBLENBQVE3SyxDQUFBLEVBQU9NLENBQUE7WUFFakMsSUFBSVAsQ0FBQSxDQUFRb0wsTUFBQSxJQUFVcEwsQ0FBQSxDQUFRb0wsTUFBQSxDQUFPc0IsT0FBQSxFQUNuQyxPQUFPM00sQ0FBQSxDQUFPLElBQUl1TSxDQUFBLENBQWEsV0FBVztZQUc1QyxJQUFJakcsQ0FBQSxHQUFNLElBQUlzRyxjQUFBO1lBRWQsU0FBU3BHLEVBQUE7Y0FDUEYsQ0FBQSxDQUFJdUcsS0FBQSxFQUNOO1lBQUE7WUFFQXZHLENBQUEsQ0FBSWlDLE1BQUEsR0FBUztjQUNYLElBbkdnQnJJLENBQUE7Z0JBQ2hCTSxDQUFBO2dCQWtHSUcsQ0FBQSxHQUFVO2tCQUNab0wsTUFBQSxFQUFRekYsQ0FBQSxDQUFJeUYsTUFBQTtrQkFDWkUsVUFBQSxFQUFZM0YsQ0FBQSxDQUFJMkYsVUFBQTtrQkFDaEJyQyxPQUFBLEdBdEdjMUosQ0FBQSxHQXNHUW9HLENBQUEsQ0FBSXdHLHFCQUFBLE1BQTJCLElBckd2RHRNLENBQUEsR0FBVSxJQUFJaUcsQ0FBQSxJQUdRdkcsQ0FBQSxDQUFXdUwsT0FBQSxDQUFRLGdCQUFnQixLQUsxREcsS0FBQSxDQUFNLE1BQ045RCxHQUFBLENBQUksVUFBUzVILENBQUE7b0JBQ1osT0FBZ0MsTUFBekJBLENBQUEsQ0FBT3NFLE9BQUEsQ0FBUSxRQUFjdEUsQ0FBQSxDQUFPNk0sTUFBQSxDQUFPLEdBQUc3TSxDQUFBLENBQU8yQixNQUFBLElBQVUzQixDQUN4RTtrQkFBQSxHQUNDNkgsT0FBQSxDQUFRLFVBQVM3SCxDQUFBO29CQUNoQixJQUFJSSxDQUFBLEdBQVFKLENBQUEsQ0FBSzBMLEtBQUEsQ0FBTTtzQkFDbkJqTCxDQUFBLEdBQU1MLENBQUEsQ0FBTXNILEtBQUEsR0FBUWYsSUFBQTtvQkFDeEIsSUFBSWxHLENBQUEsRUFBSztzQkFDUCxJQUFJWixDQUFBLEdBQVFPLENBQUEsQ0FBTThKLElBQUEsQ0FBSyxLQUFLdkQsSUFBQTtzQkFDNUJyRyxDQUFBLENBQVF3SCxNQUFBLENBQU9ySCxDQUFBLEVBQUtaLENBQUEsQ0FDdEI7b0JBQUE7a0JBQ0YsSUFDS1MsQ0FBQTtnQkFBQTtjQW1GSEcsQ0FBQSxDQUFRc0ssR0FBQSxHQUFNLGlCQUFpQjNFLENBQUEsR0FBTUEsQ0FBQSxDQUFJMEcsV0FBQSxHQUFjck0sQ0FBQSxDQUFRaUosT0FBQSxDQUFRL0YsR0FBQSxDQUFJO2NBQzNFLElBQUk5RCxDQUFBLEdBQU8sY0FBY3VHLENBQUEsR0FBTUEsQ0FBQSxDQUFJMkcsUUFBQSxHQUFXM0csQ0FBQSxDQUFJNEcsWUFBQTtjQUNsREMsVUFBQSxDQUFXO2dCQUNUN00sQ0FBQSxDQUFRLElBQUl3TCxDQUFBLENBQVMvTCxDQUFBLEVBQU1ZLENBQUEsRUFDN0I7Y0FBQSxHQUFHLEVBQ0w7WUFBQSxHQUVBMkYsQ0FBQSxDQUFJbUMsT0FBQSxHQUFVO2NBQ1owRSxVQUFBLENBQVc7Z0JBQ1RuTixDQUFBLENBQU8sSUFBSTJCLFNBQUEsQ0FBVSwwQkFDdkI7Y0FBQSxHQUFHLEVBQ0w7WUFBQSxHQUVBMkUsQ0FBQSxDQUFJOEcsU0FBQSxHQUFZO2NBQ2RELFVBQUEsQ0FBVztnQkFDVG5OLENBQUEsQ0FBTyxJQUFJMkIsU0FBQSxDQUFVLDBCQUN2QjtjQUFBLEdBQUcsRUFDTDtZQUFBLEdBRUEyRSxDQUFBLENBQUkrRyxPQUFBLEdBQVU7Y0FDWkYsVUFBQSxDQUFXO2dCQUNUbk4sQ0FBQSxDQUFPLElBQUl1TSxDQUFBLENBQWEsV0FBVyxjQUNyQztjQUFBLEdBQUcsRUFDTDtZQUFBLEdBVUFqRyxDQUFBLENBQUlnSCxJQUFBLENBQUtyTixDQUFBLENBQVFrTCxNQUFBLEVBUmpCLFVBQWdCakwsQ0FBQTtjQUNkO2dCQUNFLE9BQWUsT0FBUkEsQ0FBQSxJQUFjUyxDQUFBLENBQU8yTCxRQUFBLENBQVNpQixJQUFBLEdBQU81TSxDQUFBLENBQU8yTCxRQUFBLENBQVNpQixJQUFBLEdBQU9yTixDQUNyRTtjQUFBLENBQUUsUUFBT00sQ0FBQTtnQkFDUCxPQUFPTixDQUNUO2NBQUE7WUFDRixDQUV5QixDQUFPRCxDQUFBLENBQVFnTCxHQUFBLElBQU0sSUFFbEIsY0FBeEJoTCxDQUFBLENBQVFpTCxXQUFBLEdBQ1Y1RSxDQUFBLENBQUlrSCxlQUFBLElBQWtCLElBQ1csV0FBeEJ2TixDQUFBLENBQVFpTCxXQUFBLEtBQ2pCNUUsQ0FBQSxDQUFJa0gsZUFBQSxJQUFrQixJQUdwQixrQkFBa0JsSCxDQUFBLEtBQ2hCdkcsQ0FBQSxDQUFRb0gsSUFBQSxHQUNWYixDQUFBLENBQUltSCxZQUFBLEdBQWUsU0FFbkIxTixDQUFBLENBQVF1SCxXQUFBLElBQ1JySCxDQUFBLENBQVEySixPQUFBLENBQVEvRixHQUFBLENBQUksb0JBQ3lELE1BQTdFNUQsQ0FBQSxDQUFRMkosT0FBQSxDQUFRL0YsR0FBQSxDQUFJLGdCQUFnQlcsT0FBQSxDQUFRLGdDQUU1QzhCLENBQUEsQ0FBSW1ILFlBQUEsR0FBZSxrQkFJbkJqTixDQUFBLElBQWdDLG1CQUFqQkEsQ0FBQSxDQUFLb0osT0FBQSxJQUEwQnBKLENBQUEsQ0FBS29KLE9BQUEsWUFBbUJuRCxDQUFBLEdBS3hFeEcsQ0FBQSxDQUFRMkosT0FBQSxDQUFRN0IsT0FBQSxDQUFRLFVBQVM3SCxDQUFBLEVBQU9NLENBQUE7Y0FDdEM4RixDQUFBLENBQUlvSCxnQkFBQSxDQUFpQmxOLENBQUEsRUFBTU4sQ0FBQSxDQUM3QjtZQUFBLEtBTkErQixNQUFBLENBQU9rRyxtQkFBQSxDQUFvQjNILENBQUEsQ0FBS29KLE9BQUEsRUFBUzdCLE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQTtjQUN4RG9HLENBQUEsQ0FBSW9ILGdCQUFBLENBQWlCeE4sQ0FBQSxFQUFNcUcsQ0FBQSxDQUFlL0YsQ0FBQSxDQUFLb0osT0FBQSxDQUFRMUosQ0FBQSxHQUN6RDtZQUFBLElBT0VELENBQUEsQ0FBUW9MLE1BQUEsS0FDVnBMLENBQUEsQ0FBUW9MLE1BQUEsQ0FBT3NDLGdCQUFBLENBQWlCLFNBQVNuSCxDQUFBLEdBRXpDRixDQUFBLENBQUlzSCxrQkFBQSxHQUFxQjtjQUVBLE1BQW5CdEgsQ0FBQSxDQUFJdUgsVUFBQSxJQUNONU4sQ0FBQSxDQUFRb0wsTUFBQSxDQUFPeUMsbUJBQUEsQ0FBb0IsU0FBU3RILENBQUEsQ0FFaEQ7WUFBQSxJQUdGRixDQUFBLENBQUl5SCxJQUFBLE1BQWtDLE1BQXRCOU4sQ0FBQSxDQUFRa0osU0FBQSxHQUE0QixPQUFPbEosQ0FBQSxDQUFRa0osU0FBQSxDQUNyRTtVQUFBLEVBQ0Y7UUFBQTtRQUVBdUQsQ0FBQSxDQUFNc0IsUUFBQSxJQUFXLEdBRVpyTixDQUFBLENBQU9zTixLQUFBLEtBQ1Z0TixDQUFBLENBQU9zTixLQUFBLEdBQVF2QixDQUFBLEVBQ2YvTCxDQUFBLENBQU91TixPQUFBLEdBQVV6SCxDQUFBLEVBQ2pCOUYsQ0FBQSxDQUFPd04sT0FBQSxHQUFVcEQsQ0FBQSxFQUNqQnBLLENBQUEsQ0FBT3lOLFFBQUEsR0FBV3RDLENBQUE7UUFBQSxJQUFBdUMsQ0FBQTtVQUFBQyxDQUFBLEdBQUFoTyxDQUFBO1VBQUFpTyxDQUFBLEdBQUFqTyxDQUFBO1VBQUFrTyxDQUFBLEdBQUFsTyxDQUFBO1VBQUFtTyxDQUFBLEdBQUFuTyxDQUFBO1VBQUFvTyxDQUFBLEdBQUFwTyxDQUFBO1FBQUEsU0FBQXFPLEVBQUF6TyxDQUFBO1VBQUEsT0FBQXlPLENBQUEsd0JBQUFyTixNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBeU8sQ0FBQSxDQUFBek8sQ0FBQTtRQUFBO1FBQUEsU0FBQTBPLEVBQUExTyxDQUFBLEVBQUFNLENBQUE7VUFBQSxJQUFBRixDQUFBLEdBQUEyQixNQUFBLENBQUEwSSxJQUFBLENBQUF6SyxDQUFBO1VBQUEsSUFBQStCLE1BQUEsQ0FBQTRNLHFCQUFBO1lBQUEsSUFBQWxPLENBQUEsR0FBQXNCLE1BQUEsQ0FBQTRNLHFCQUFBLENBQUEzTyxDQUFBO1lBQUFNLENBQUEsS0FBQUcsQ0FBQSxHQUFBQSxDQUFBLENBQUFtTyxNQUFBLFdBQUF0TyxDQUFBO2NBQUEsT0FBQXlCLE1BQUEsQ0FBQThNLHdCQUFBLENBQUE3TyxDQUFBLEVBQUFNLENBQUEsRUFBQXNCLFVBQUE7WUFBQSxLQUFBeEIsQ0FBQSxDQUFBMkQsSUFBQSxDQUFBWixLQUFBLENBQUEvQyxDQUFBLEVBQUFLLENBQUE7VUFBQTtVQUFBLE9BQUFMLENBQUE7UUFBQTtRQUFBLFNBQUEwTyxFQUFBOU8sQ0FBQTtVQUFBLFNBQUFNLENBQUEsTUFBQUEsQ0FBQSxHQUFBNEMsU0FBQSxDQUFBdkIsTUFBQSxFQUFBckIsQ0FBQTtZQUFBLElBQUFGLENBQUEsV0FBQThDLFNBQUEsQ0FBQTVDLENBQUEsSUFBQTRDLFNBQUEsQ0FBQTVDLENBQUE7WUFBQUEsQ0FBQSxPQUFBb08sQ0FBQSxDQUFBM00sTUFBQSxDQUFBM0IsQ0FBQSxPQUFBeUgsT0FBQSxXQUFBdkgsQ0FBQTtjQUFBeU8sQ0FBQSxDQUFBL08sQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUEsQ0FBQUUsQ0FBQTtZQUFBLEtBQUF5QixNQUFBLENBQUFpTix5QkFBQSxHQUFBak4sTUFBQSxDQUFBa04sZ0JBQUEsQ0FBQWpQLENBQUEsRUFBQStCLE1BQUEsQ0FBQWlOLHlCQUFBLENBQUE1TyxDQUFBLEtBQUFzTyxDQUFBLENBQUEzTSxNQUFBLENBQUEzQixDQUFBLEdBQUF5SCxPQUFBLFdBQUF2SCxDQUFBO2NBQUF5QixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsRUFBQU0sQ0FBQSxFQUFBeUIsTUFBQSxDQUFBOE0sd0JBQUEsQ0FBQXpPLENBQUEsRUFBQUUsQ0FBQTtZQUFBO1VBQUE7VUFBQSxPQUFBTixDQUFBO1FBQUE7UUFBQSxTQUFBK08sRUFBQS9PLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1VBQUEsUUFBQUUsQ0FBQSxhQUFBTixDQUFBO1lBQUEsSUFBQU0sQ0FBQSxhQUFBTixDQUFBLEVBQUFNLENBQUE7Y0FBQSxpQkFBQW1PLENBQUEsQ0FBQXpPLENBQUEsY0FBQUEsQ0FBQSxTQUFBQSxDQUFBO2NBQUEsSUFBQUksQ0FBQSxHQUFBSixDQUFBLENBQUFvQixNQUFBLENBQUFrQixXQUFBO2NBQUEsZUFBQWxDLENBQUE7Z0JBQUEsSUFBQUssQ0FBQSxHQUFBTCxDQUFBLENBQUFtQyxJQUFBLENBQUF2QyxDQUFBO2dCQUFBLGlCQUFBeU8sQ0FBQSxDQUFBaE8sQ0FBQSxVQUFBQSxDQUFBO2dCQUFBLFVBQUFnQixTQUFBO2NBQUE7Y0FBQSxPQUFBWSxNQUFBLENBQUFyQyxDQUFBO1lBQUEsRUFBQUEsQ0FBQTtZQUFBLG9CQUFBeU8sQ0FBQSxDQUFBbk8sQ0FBQSxJQUFBQSxDQUFBLEdBQUErQixNQUFBLENBQUEvQixDQUFBO1VBQUEsRUFBQUEsQ0FBQSxNQUFBTixDQUFBLEdBQUErQixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsRUFBQU0sQ0FBQTtZQUFBcUMsS0FBQSxFQUFBdkMsQ0FBQTtZQUFBd0IsVUFBQTtZQUFBQyxZQUFBO1lBQUFDLFFBQUE7VUFBQSxLQUFBOUIsQ0FBQSxDQUFBTSxDQUFBLElBQUFGLENBQUEsRUFBQUosQ0FBQTtRQUFBO1FBQUEsU0FBQWtQLEVBQUFsUCxDQUFBLEVBQUFNLENBQUE7VUFBQSxTQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQU4sQ0FBQSxDQUFBMkIsTUFBQSxNQUFBckIsQ0FBQSxHQUFBTixDQUFBLENBQUEyQixNQUFBO1VBQUEsU0FBQXZCLENBQUEsTUFBQUssQ0FBQSxPQUFBc0gsS0FBQSxDQUFBekgsQ0FBQSxHQUFBRixDQUFBLEdBQUFFLENBQUEsRUFBQUYsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsSUFBQUosQ0FBQSxDQUFBSSxDQUFBO1VBQUEsT0FBQUssQ0FBQTtRQUFBO1FDeGhCcEIsU0FBUzBPLEVBQUEsR0FDTDtRQUdKLFNBQVNDLEVBQVVwUCxDQUFBO1VBQ2YsT0FBcUIsbUJBQVZBLENBQUEsR0FDTyxZQUFWQSxDQUFBLElBR1UsV0FBVkEsQ0FBQSxHQUtEbUUsT0FBQSxDQUFRbkUsQ0FBQSxDQUNuQjtRQUFBO1FBRUEsU0FBU3FQLEVBQUE7VUFBc0MsSUFBbENyUCxDQUFBLEdBQW1Ca0QsU0FBQSxDQUFBdkIsTUFBQSxtQkFBQXVCLFNBQUEsTUFBQUEsU0FBQSxNQUFHO1lBQ3pCNUMsQ0FBQSxHQUFVRixDQUFBLENBQUF5SyxDQUFBLENBQU95RSxFQUFBLENBQUdDLFVBQUEsSUFBYztVQUV4QyxPQUFPLEdBQUF0UCxNQUFBLENBQUdLLENBQUEsRUFBTyxLQUFBTCxNQUFBLENBQUlELENBQUEsRUFBY3VMLE9BQUEsQ0FBUSxpQkFBaUIsTUFDaEU7UUFBQTtRQUVBLFNBQVNpRSxFQUFTeFAsQ0FBQSxFQUFjTSxDQUFBO1VBQzVCLFNBQWUsTUFBWEEsQ0FBQSxFQUNBLE9BQU9OLENBQUE7VUFHWCxLQURBLElBQU1JLENBQUEsR0FBdUIsSUFDN0JLLENBQUEsTUFBQVosQ0FBQSxHQUF3QmtDLE1BQUEsQ0FBTzBJLElBQUEsQ0FBS25LLENBQUEsR0FBT0csQ0FBQSxHQUFBWixDQUFBLENBQUE4QixNQUFBLEVBQUFsQixDQUFBLElBQUU7WUFBeEMsSUFBTVgsQ0FBQSxHQUFTRCxDQUFBLENBQUFZLENBQUE7Y0FDVlYsQ0FBQSxHQUFhTyxDQUFBLENBQU9SLENBQUE7WUFDUixRQUFkQyxDQUFBLElBQ0FLLENBQUEsQ0FBVzJELElBQUEsQ0FBSyxHQUFEOUQsTUFBQSxDQUFJSCxDQUFBLEVBQVMsS0FBQUcsTUFBQSxDQUFJd1Asa0JBQUEsQ0FBbUIxUCxDQUFBLEdBRTNEO1VBQUE7VUFDQSxPQUEwQixNQUF0QkssQ0FBQSxDQUFXdUIsTUFBQSxHQUNKM0IsQ0FBQSxHQUVKQSxDQUFBLEdBQU8sTUFBTUksQ0FBQSxDQUFXOEosSUFBQSxDQUFLLElBQ3hDO1FBQUE7UUFFQSxTQUFTd0YsRUFBVTFQLENBQUE7VUFDZixPQUFPLElBQUkyUCxNQUFBLENBQU8sT0FBRDFQLE1BQUEsQ0FBUUQsQ0FBQSxDQUFRdUwsT0FBQSxDQUFRLE9BQU8sT0FBT0EsT0FBQSxDQUFRLE9BQU8saUJBQWUsT0FBTWhFLElBQUEsQ0FDdkZuSCxDQUFBLENBQUF5SyxDQUFBLENBQU91QixRQUFBLENBQVN3RCxJQUFBLENBRXhCO1FBQUE7UUFFQSxTQUFTQyxFQUFtQjdQLENBQUE7VUFDeEIsUUFDS0ksQ0FBQSxDQUFBeUssQ0FBQSxDQUFPdUIsUUFBQSxDQUFTMEQsTUFBQSxDQUNabkosSUFBQSxHQUNBNEUsT0FBQSxDQUFRLGFBQWEsSUFDckJHLEtBQUEsQ0FBTSxLQUNOOUQsR0FBQSxDQUFJLFVBQUE1SCxDQUFBO1lBQUssT0FBSUEsQ0FBQSxDQUFNdUwsT0FBQSxDQUFRLE9BQU8sS0FBS0csS0FBQSxDQUFNLEtBQUs5RCxHQUFBLENBQUkrRCxrQkFBQSxDQUFtQjtVQUFBLEdBRXpFb0UsSUFBQSxDQUFLLFVBQUF6UCxDQUFBO1lBQUssUUFBQUYsQ0FBQSxHQUFMRSxDQUFBLEVBQUFHLENBQUEsZ0JBQUFULENBQUE7Y0FBQSxJQUFBK0gsS0FBQSxDQUFBQyxPQUFBLENBQUFoSSxDQUFBLFVBQUFBLENBQUE7WUFBQSxFQUFBSSxDQUFBLGVBQUFKLENBQUEsRUFBQU0sQ0FBQTtjQUFBLElBQUFGLENBQUEsV0FBQUosQ0FBQSxnQ0FBQW9CLE1BQUEsSUFBQXBCLENBQUEsQ0FBQW9CLE1BQUEsQ0FBQUMsUUFBQSxLQUFBckIsQ0FBQTtjQUFBLFlBQUFJLENBQUE7Z0JBQUEsSUFBQUssQ0FBQTtrQkFBQVosQ0FBQTtrQkFBQUMsQ0FBQTtrQkFBQUMsQ0FBQTtrQkFBQXFHLENBQUE7a0JBQUFDLENBQUE7a0JBQUFDLENBQUE7Z0JBQUE7a0JBQUEsSUFBQXhHLENBQUEsSUFBQU0sQ0FBQSxHQUFBQSxDQUFBLENBQUFtQyxJQUFBLENBQUF2QyxDQUFBLEdBQUF5SCxJQUFBLFFBQUFuSCxDQUFBO29CQUFBLElBQUF5QixNQUFBLENBQUEzQixDQUFBLE1BQUFBLENBQUE7b0JBQUFpRyxDQUFBO2tCQUFBLGdCQUFBQSxDQUFBLElBQUE1RixDQUFBLEdBQUFYLENBQUEsQ0FBQXlDLElBQUEsQ0FBQW5DLENBQUEsR0FBQXVILElBQUEsTUFBQXZCLENBQUEsQ0FBQXJDLElBQUEsQ0FBQXRELENBQUEsQ0FBQWtDLEtBQUEsR0FBQXlELENBQUEsQ0FBQXpFLE1BQUEsS0FBQXJCLENBQUEsR0FBQStGLENBQUE7Z0JBQUEsU0FBQXJHLENBQUE7a0JBQUFzRyxDQUFBLE9BQUF6RyxDQUFBLEdBQUFHLENBQUE7Z0JBQUE7a0JBQUE7b0JBQUEsS0FBQXFHLENBQUEsWUFBQWpHLENBQUEsQ0FBQTRQLE1BQUEsS0FBQWpRLENBQUEsR0FBQUssQ0FBQSxDQUFBNFAsTUFBQSxJQUFBak8sTUFBQSxDQUFBaEMsQ0FBQSxNQUFBQSxDQUFBO2tCQUFBO29CQUFBLElBQUF1RyxDQUFBLFFBQUF6RyxDQUFBO2tCQUFBO2dCQUFBO2dCQUFBLE9BQUF1RyxDQUFBO2NBQUE7WUFBQSxFQUFBaEcsQ0FBQSxFQUFBSyxDQUFBLGVBQUFULENBQUEsRUFBQU0sQ0FBQTtjQUFBLElBQUFOLENBQUE7Z0JBQUEsdUJBQUFBLENBQUEsU0FBQWtQLENBQUEsQ0FBQWxQLENBQUEsRUFBQU0sQ0FBQTtnQkFBQSxJQUFBRixDQUFBLEdBQUEyQixNQUFBLENBQUFSLFNBQUEsQ0FBQThDLFFBQUEsQ0FBQTlCLElBQUEsQ0FBQXZDLENBQUEsRUFBQTRHLEtBQUE7Z0JBQUEsb0JBQUF4RyxDQUFBLElBQUFKLENBQUEsQ0FBQXNCLFdBQUEsS0FBQWxCLENBQUEsR0FBQUosQ0FBQSxDQUFBc0IsV0FBQSxDQUFBMEQsSUFBQSxhQUFBNUUsQ0FBQSxjQUFBQSxDQUFBLEdBQUEySCxLQUFBLENBQUFrSSxJQUFBLENBQUFqUSxDQUFBLG9CQUFBSSxDQUFBLCtDQUFBbUgsSUFBQSxDQUFBbkgsQ0FBQSxJQUFBOE8sQ0FBQSxDQUFBbFAsQ0FBQSxFQUFBTSxDQUFBO2NBQUE7WUFBQSxFQUFBRixDQUFBLEVBQUFLLENBQUE7Y0FBQSxVQUFBZ0IsU0FBQTtZQUFBLEtBQUssTUFBYXpCLENBQUE7WUFBQSxJQUFBSSxDQUFBLEVBQUFLLENBQUk7VUFBQSxNQUFLLElBQUksRUFFakQ7UUFBQTtRQUlBLFNBQVN5UCxFQUFZbFEsQ0FBQSxFQUFlTSxDQUFBO1VBQ2hDLElBQUlGLENBQUEsR0FBWTtVQUVoQkosQ0FBQSxDQUFNNkgsT0FBQSxDQUFRLFVBQUFwSCxDQUFBO1lBQ1ZBLENBQUEsQ0FBSyxVQUFBQSxDQUFBO2NBQ0QsSUFBSUwsQ0FBQSxLQUFjSixDQUFBLENBQU0yQixNQUFBLEVBQXhCO2dCQUdBLElBQUlsQixDQUFBLEVBSUEsT0FIQUwsQ0FBQSxHQUFZSixDQUFBLENBQU0yQixNQUFBLE9BQ2xCckIsQ0FBQSxDQUFTRyxDQUFBO2dCQUFBLENBSWJMLENBQUEsSUFBYSxPQUNLSixDQUFBLENBQU0yQixNQUFBLElBQ3BCckIsQ0FBQSxFQVRKO2NBQUE7WUFXSixFQUNKO1VBQUEsRUFDSjtRQUFBO1FBZ0NBLFNBQVM2UCxFQUFTblEsQ0FBQSxFQUE0Qk0sQ0FBQTtVQUMxQyxJQUFRRyxDQUFBLEdBQXlDVCxDQUFBLENBQXpDb1EsR0FBQTtZQUFLdlEsQ0FBQSxHQUFvQ0csQ0FBQSxDQUFwQ3FRLGFBQUE7WUFBZXZRLENBQUEsR0FBcUJFLENBQUEsQ0FBckJzUSxnQkFBQTtVQUU1QixJQUFJbFEsQ0FBQSxDQUFBeUssQ0FBQSxDQUFPeUUsRUFBQSxDQUFHaUIsVUFBQSxDQUFXOVAsQ0FBQSxHQUNyQkgsQ0FBQSxRQURKO1lBSUEsSUFBTVAsQ0FBQSxHQUFlRixDQUFBLEtBQWtCTyxDQUFBLENBQUF5SyxDQUFBLENBQU9oTCxDQUFBO2NBR3hDdUcsQ0FBQSxHQUFzQyxXQUFoQ3lKLENBQUEsQ0FBbUIsV0FBc0IsS0FBSztjQUNwRHhKLENBQUEsR0FBZ0I7Y0FFaEJDLENBQUEsR0FBUztnQkFBRXNGLENBQUEsRUFBRzlMLENBQUE7Z0JBQWtCMFEsWUFBQSxFQUFjeFEsQ0FBQSxDQUFTd1E7Y0FBQTtZQUV6RG5LLENBQUEsQ0FBTXRDLElBQUEsQ0FBSyxVQUFBL0QsQ0FBQTtjQUFFLE9BQ1RxTyxDQUFBLENBQUFyTyxDQUFBLENBQWlCeVEsVUFBQSxDQUFXcEIsQ0FBQSxDQUFJRyxDQUFBLENBQVMsd0JBQUR2UCxNQUFBLENBQXlCUSxDQUFBLEVBQUdSLE1BQUEsQ0FBR21HLENBQUEsRUFBRyxTQUFRRSxDQUFBLEtBQVUsR0FBTXRHLENBQUEsQ0FBRztZQUFBLElBRzdHcUcsQ0FBQSxDQUFNdEMsSUFBQSxDQUFLLFVBQUEvRCxDQUFBO2NBQUUsT0FBSXFPLENBQUEsQ0FBQXJPLENBQUEsQ0FBaUIwUSxNQUFBLENBQU9yQixDQUFBLENBQUlHLENBQUEsQ0FBUyx5QkFBRHZQLE1BQUEsQ0FBMEJRLENBQUEsRUFBR1IsTUFBQSxDQUFHbUcsQ0FBQSxFQUFHLFFBQU9FLENBQUEsSUFBVXRHLENBQUEsQ0FBRztZQUFBLElBRXhHRCxDQUFBLElBQ0FzRyxDQUFBLENBQU10QyxJQUFBLENBQ0YsVUFBQS9ELENBQUE7Y0FBRSxPQUNFcU8sQ0FBQSxDQUFBck8sQ0FBQSxDQUFpQnlRLFVBQUEsQ0FDYnBCLENBQUEsQ0FBSUcsQ0FBQSxDQUFTLDhCQUFEdlAsTUFBQSxDQUErQkosQ0FBQSxFQUFhSSxNQUFBLENBQUdtRyxDQUFBLEVBQUcsU0FBUUUsQ0FBQSxLQUN0RSxHQUNBdEcsQ0FBQSxDQUNIO1lBQUEsR0FDTCxVQUFBQSxDQUFBO2NBQUUsT0FDRXFPLENBQUEsQ0FBQXJPLENBQUEsQ0FBaUIwUSxNQUFBLENBQ2JyQixDQUFBLENBQUlHLENBQUEsQ0FBUywrQkFBRHZQLE1BQUEsQ0FBZ0NKLENBQUEsRUFBYUksTUFBQSxDQUFHbUcsQ0FBQSxFQUFHLFFBQU9FLENBQUEsSUFDdEV0RyxDQUFBLENBQ0g7WUFBQSxJQUlia1EsQ0FBQSxDQUFZN0osQ0FBQSxFQUFPL0YsQ0FBQSxDQS9CbkI7VUFBQTtRQWdDSjtRQUVBLFNBQVNxUSxFQUNMM1EsQ0FBQSxFQUNBTSxDQUFBLEVBQ0FHLENBQUE7VUFDSSxJQUFBWixDQUFBO1VBQUEsQ0FFMEMsVUFEMUJBLENBQUEsR0FDaEJPLENBQUEsQ0FBQXlLLENBQUEsQ0FBT3lFLEVBQUEsQ0FBR2lCLFVBQUEsQ0FBV2pRLENBQUEsQ0FBaUI4UCxHQUFBLFdBQUksTUFBQXZRLENBQUEsR0FBQUEsQ0FBQSxJQUFJLEdBQUF1TyxDQUFBLENBQUEzSCxFQUFBLEVBQU8sb0JBQUR4RyxNQUFBLENBQXFCSyxDQUFBLENBQWlCOFAsR0FBQSxFQUFHLGlCQUNsRnBRLENBQUEsRUFBYU0sQ0FBQSxFQUN2QndKLElBQUEsQ0FBSyxVQUFBOUosQ0FBQTtZQUNGLElBQU1NLENBQUEsR0FBYU4sQ0FBQSxDQUFLNFEsVUFBQSxLQUFjLEdBQUFwQyxDQUFBLENBQUFILENBQUEsRUFBdUJyTyxDQUFBO1lBRTdEUyxDQUFBLENBQVMsTUFBTUgsQ0FBQSxDQUNuQjtVQUFBLEdBQUV1USxLQUFBLENBQ0twUSxDQUFBLENBQ2Y7UUFBQTtRQXFCQSxTQUFTcVEsRUFBb0I5USxDQUFBO1VBQ3pCLElBQXFCLFFBQWpCQSxDQUFBLEVBSUosT0FBT0ksQ0FBQSxDQUFBeUssQ0FBQSxDQUFPN0ssQ0FBQSxLQUFrQkksQ0FBQSxDQUFBeUssQ0FBQSxDQUFPN0ssQ0FBQSxFQUFjWSxPQUN6RDtRQUFBO1FBRUEsU0FBU21RLEVBQ0wvUSxDQUFBLEVBQ0FNLENBQUE7VUFFSSxJQUFBRyxDQUFBO1lBQUFaLENBQUE7WUFESkMsQ0FBQSxHQUF5Q29ELFNBQUEsQ0FBQXZCLE1BQUEsbUJBQUF1QixTQUFBLE1BQUFBLFNBQUEsTUFBR2lNLENBQUE7WUFFeENwUCxDQUFBLEdBQVE7WUFDSnFHLENBQUEsR0FBZ0I5RixDQUFBLENBQWhCSixFQUFBO1lBQUltRyxDQUFBLEdBQVkvRixDQUFBLENBQVpILE9BQUE7VUFZWixJQVZLdVAsQ0FBQSxDQUFVbkIsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlQyxhQUFBLElBRWxCMUMsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlRSxVQUFBLEdBRWY3SyxDQUFBLEdBRUFELENBQUEsS0FDUnJHLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLDZCQUZsQnJGLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLGlDQUZsQnJGLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLDBCQUZsQnJGLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLHFCQVNsQnJGLENBQUEsRUFDQUQsQ0FBQSxDQUFTQyxDQUFBLE9BRGI7WUFLQSxJQUFNdUcsQ0FBQSxHQUFtQyxVQUF2QjdGLENBQUEsR0FBR0gsQ0FBQSxDQUFRa1EsWUFBQSxVQUFZLE1BQUEvUCxDQUFBLEdBQUFBLENBQUEsR0FBSW9QLENBQUEsQ0FBbUI7Y0FDMUR0SixDQUFBLEdBQWlCaUosQ0FBQSxDQUFTSCxDQUFBLEVBQUksR0FBQWYsQ0FBQSxDQUFBL04sQ0FBQSxFQUFzQjtnQkFBRUwsRUFBQSxFQUFJa0csQ0FBQTtnQkFBSWpHLE9BQUEsRUFBU2tHO2NBQUEsS0FBYTtnQkFDdEZtSyxZQUFBLEVBQWNsSztjQUFBO2NBR1pFLENBQUEsR0FBOEI7Z0JBQUV5RSxNQUFBLEVBQVE7Y0FBQTtZQUM5QyxJQUE4QixRQUExQjNLLENBQUEsQ0FBUTZRLGNBQUEsSUFBMEQsa0NBQTNCN1EsQ0FBQSxDQUFRNlEsY0FBQSxFQUMvQzNLLENBQUEsQ0FBZXdFLFdBQUEsR0FBYyxlQUMxQixJQUFJLGFBQWExSyxDQUFBLENBQVE2USxjQUFBLElBQW9ELFFBQWxDN1EsQ0FBQSxDQUFRNlEsY0FBQSxDQUFlQyxPQUFBLEVBQXNCO2NBQUEsSUFBQS9RLENBQUE7Y0FDM0ZtRyxDQUFBLENBQWV3RSxXQUFBLEdBQWMsUUFDN0J4RSxDQUFBLENBQWVrRCxPQUFBLEdBQWdDLFVBQXpCckosQ0FBQSxHQUFHbUcsQ0FBQSxDQUFla0QsT0FBQSxVQUFPLE1BQUFySixDQUFBLEdBQUFBLENBQUEsR0FBSSxDQUFDLEdBQ3BEbUcsQ0FBQSxDQUFla0QsT0FBQSxDQUF1QjJILGFBQUEsR0FBSSxZQUFIcFIsTUFBQSxDQUFlSyxDQUFBLENBQVE2USxjQUFBLENBQWVDLE9BQUEsQ0FDakY7WUFBQSxPQUNJNUssQ0FBQSxDQUFld0UsV0FBQSxHQUFjO1lBQUEsQ0FFRixVQUFoQm5MLENBQUEsR0FBR1MsQ0FBQSxDQUFReU4sS0FBQSxVQUFLLE1BQUFsTyxDQUFBLEdBQUFBLENBQUEsR0FBSTJNLENBQUEsRUFFekJqRyxDQUFBLEVBQWdCQyxDQUFBLEVBQ3JCc0QsSUFBQSxDQUFLLFVBQUE5SixDQUFBO2NBQUMsT0FBSUEsQ0FBQSxDQUFFb0ssSUFBQSxFQUFNO1lBQUEsR0FDbEJOLElBQUEsQ0FBSyxVQUFDckosQ0FBQTtjQUE2QyxJQUFBWixDQUFBO2dCQUFBRSxDQUFBO2dCQUFBcUcsQ0FBQTtnQkFBQUMsQ0FBQTtnQkFDMUNFLENBQUEsR0FBTTlGLENBQUEsQ0FBZ0IyUCxHQUFBO2dCQUN0QjVKLENBQUEsR0FBZ0IvRixDQUFBLENBQWdCNFAsYUFBQTtnQkFDaENoUSxDQUFBLEdBQWdCeU8sQ0FBQSxDQUFBQSxDQUFBLENBQUFBLENBQUE7a0JBQ2xCb0MsVUFBQSxFQUFZM0MsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlRSxVQUFBO2tCQUMzQkksY0FBQSxFQUFnQi9DLENBQUEsQ0FBQXlDLENBQUEsQ0FBZU0sY0FBQTtrQkFDL0JDLFlBQUEsRUFBY2hELENBQUEsQ0FBQXlDLENBQUEsQ0FBZU8sWUFBQTtrQkFDN0JDLG1CQUFBLEVBQXFCakQsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlUSxtQkFBQTtrQkFDcENDLHFCQUFBLEVBQXVCbEQsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlUyxxQkFBQTtrQkFDdENDLFlBQUEsRUFBY25ELENBQUEsQ0FBQXlDLENBQUEsQ0FBZVUsWUFBQTtrQkFDN0JwQixnQkFBQSxFQUFrQi9CLENBQUEsQ0FBQXlDLENBQUEsQ0FBZVYsZ0JBQUE7a0JBQ2pDVyxhQUFBLEVBQWUxQyxDQUFBLENBQUF5QyxDQUFBLENBQWVDO2dCQUFBLEdBQzNCM1EsQ0FBQSxHQUNBRyxDQUFBLEdBQWU7a0JBQ2xCMlAsR0FBQSxFQUFLN0osQ0FBQTtrQkFDTDhKLGFBQUEsRUFBZTdKLENBQUE7a0JBQ2ZtTCxlQUFBLEVBQXdDLFVBQXpCOVIsQ0FBQSxHQUFFUyxDQUFBLENBQVFxUixlQUFBLFVBQWUsTUFBQTlSLENBQUEsR0FBQUEsQ0FBQSxHQUFJWSxDQUFBLENBQWdCa1IsZUFBQTtrQkFDNURDLG1CQUFBLEVBQWdELFVBQTdCN1IsQ0FBQSxHQUFFTyxDQUFBLENBQVFzUixtQkFBQSxVQUFtQixNQUFBN1IsQ0FBQSxJQUFBQSxDQUFBO2tCQUNoRDhSLHFCQUFBLEVBQW9ELFVBQS9CekwsQ0FBQSxHQUFFOUYsQ0FBQSxDQUFRdVIscUJBQUEsVUFBcUIsTUFBQXpMLENBQUEsSUFBQUEsQ0FBQTtrQkFDcEQwTCw0QkFBQSxFQUFrRSxVQUF0Q3pMLENBQUEsR0FBRS9GLENBQUEsQ0FBUXdSLDRCQUFBLFVBQTRCLE1BQUF6TCxDQUFBLElBQUFBLENBQUE7a0JBQ2xFbUssWUFBQSxFQUFjbEs7Z0JBQUE7Y0FHbEI2SixDQUFBLENBQ0k7Z0JBQ0lDLEdBQUEsRUFBSy9QLENBQUEsQ0FBaUIrUCxHQUFBO2dCQUN0QkMsYUFBQSxFQUFlaFEsQ0FBQSxDQUFpQmdRLGFBQUE7Z0JBQ2hDRyxZQUFBLEVBQWNuUSxDQUFBLENBQWlCbVEsWUFBQTtnQkFDL0JGLGdCQUFBLEVBQWtCalEsQ0FBQSxDQUFpQmlRLGdCQUFBO2dCQUNuQ3lCLEtBQUEsRUFBTzFSLENBQUEsQ0FBaUIwUjtjQUFBLEdBRTVCLFVBQUF0UixDQUFBO2dCQUNJLEtBQUlBLENBQUEsSUFBY0wsQ0FBQSxDQUFBeUssQ0FBQSxDQUFPeUUsRUFBQSxDQUFHaUIsVUFBQSxDQUFXaEssQ0FBQSxHQUF2QztrQkFJQSxJQUFNMUcsQ0FBQSxHQUFTaVIsQ0FBQSxDQUFvQnRLLENBQUE7a0JBRW5DbUssQ0FBQSxDQUNJM1EsQ0FBQSxFQUFXOE8sQ0FBQSxDQUFBQSxDQUFBLEtBRUp6TyxDQUFBLEdBQWdCO29CQUNuQjJSLFlBQUEsRUFBYzFSLENBQUEsQ0FBUTBSLFlBQUE7b0JBQ3RCQyxVQUFBLEVBQVlwUztrQkFBQSxJQUVoQkMsQ0FBQSxDQVZKO2dCQUFBLE9BRklBLENBQUEsQ0FBUyxJQUFJc0YsS0FBQSxDQUFNLDRDQUFEbkYsTUFBQSxDQUE2Q3NHLENBQUEsR0FjdkU7Y0FBQSxFQUVSO1lBQUEsR0FBRXNLLEtBQUEsQ0FDSy9RLENBQUEsQ0F2RVg7VUFBQTtRQXdFSjtRQUFBRSxDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFtTyxDQUFBLHlCQUFBek4sb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBd04sQ0FBQSxDQUFBbk8sQ0FBQSx5QkFBQVUsb0JBQUEsSUFBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBO1FBRUEsSUFTOEJxUixDQUFBO1VBVGtCbEIsQ0FBQTtVQUExQ21CLENBQUEsR0FBNkM7WUFDL0NDLEtBQUEsRUFBT3JCLENBQUE7WUFDUFIsVUFBQSxFQUFZLENBQUM7WUFDYjhCLHNCQUFBLEVBQXdCakQsQ0FBQSxDQUFVO1lBQ2xDRyxVQUFBLEVBQVk7VUFBQTtRQUdoQm5QLENBQUEsQ0FBQXlLLENBQUEsQ0FBT3lFLEVBQUEsR0FBSzZDLENBQUEsR0FFa0JELENBQUEseUJBQUF4UixvQkFBQSxHQUFBQSxvQkFBQSxDQUFBRSxPQUFBLGVBQUFzUixDQUFBLENBQUFwUixRQUFBLENBM1NyQnFPLENBQUEsRUFBZSxxSEFBQStDLENBQUEsQ0FBQXBSLFFBQUEsQ0FJZnNPLENBQUEsRUFBUywrR0FBQThDLENBQUEsQ0FBQXBSLFFBQUEsQ0FhVHVPLENBQUEsRUFBRyx5R0FBQTZDLENBQUEsQ0FBQXBSLFFBQUEsQ0FNSDBPLENBQUEsRUFBUSw4R0FBQTBDLENBQUEsQ0FBQXBSLFFBQUEsQ0FpQlI0TyxDQUFBLEVBQVMsK0dBQUF3QyxDQUFBLENBQUFwUixRQUFBLENBTVQrTyxDQUFBLEVBQWtCLHdIQUFBcUMsQ0FBQSxDQUFBcFIsUUFBQSxDQWNsQm9QLENBQUEsRUFBVyxpSEFBQWdDLENBQUEsQ0FBQXBSLFFBQUEsQ0E4QmIsVUFBMkNkLENBQUEsRUFBY00sQ0FBQTtVQUM1RDtZQUFJLElBQUFGLENBQUE7Y0FBQUssQ0FBQTtjQUFBWixDQUFBO2NBQUFDLENBQUE7Y0FBQUMsQ0FBQTtjQUFBcUcsQ0FBQTtjQUFBQyxDQUFBO2NBQUFDLENBQUE7Y0FBQUMsQ0FBQTtjQUFBQyxDQUFBO2NBQ01uRyxDQUFBLEdBQWNMLENBQUEsQ0FDZjBMLEtBQUEsQ0FBTSxLQUNOOUUsS0FBQSxDQUFNLEdBQUcsR0FDVGdCLEdBQUEsQ0FBSSxVQUFBNUgsQ0FBQTtnQkFBQyxPQUFJc1MsUUFBQSxDQUFTdFMsQ0FBQSxFQUFHLEdBQUc7Y0FBQTtjQUN2QnlJLENBQUEsR0FBZW5JLENBQUEsQ0FDaEJvTCxLQUFBLENBQU0sS0FDTjlFLEtBQUEsQ0FBTSxHQUFHLEdBQ1RnQixHQUFBLENBQUksVUFBQTVILENBQUE7Z0JBQUMsT0FBSXNTLFFBQUEsQ0FBU3RTLENBQUEsRUFBRyxHQUFHO2NBQUE7WUFDN0IsUUFDbUIsVUFBZkksQ0FBQSxHQUFDQyxDQUFBLENBQVksWUFBRSxNQUFBRCxDQUFBLEdBQUFBLENBQUEsR0FBSSxNQUFxQixVQUFwQkssQ0FBQSxHQUFLZ0ksQ0FBQSxDQUFhLFlBQUUsTUFBQWhJLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE9BQzVCLFVBQWZaLENBQUEsR0FBQ1EsQ0FBQSxDQUFZLFlBQUUsTUFBQVIsQ0FBQSxHQUFBQSxDQUFBLEdBQUksUUFBdUIsVUFBdEJDLENBQUEsR0FBTzJJLENBQUEsQ0FBYSxZQUFFLE1BQUEzSSxDQUFBLEdBQUFBLENBQUEsR0FBSSxRQUMzQixVQUFmQyxDQUFBLEdBQUNNLENBQUEsQ0FBWSxZQUFFLE1BQUFOLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE1BQXFCLFVBQXBCcUcsQ0FBQSxHQUFLcUMsQ0FBQSxDQUFhLFlBQUUsTUFBQXJDLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE9BQ3pCLFVBQWZDLENBQUEsR0FBQ2hHLENBQUEsQ0FBWSxZQUFFLE1BQUFnRyxDQUFBLEdBQUFBLENBQUEsR0FBSSxRQUF1QixVQUF0QkMsQ0FBQSxHQUFPbUMsQ0FBQSxDQUFhLFlBQUUsTUFBQW5DLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE9BQzVCLFVBQWZDLENBQUEsR0FBQ2xHLENBQUEsQ0FBWSxZQUFFLE1BQUFrRyxDQUFBLEdBQUFBLENBQUEsR0FBSSxPQUFzQixVQUFyQkMsQ0FBQSxHQUFNaUMsQ0FBQSxDQUFhLFlBQUUsTUFBQWpDLENBQUEsR0FBQUEsQ0FBQSxHQUFJLEdBRWpFO1VBQUEsQ0FBRSxRQUFBeEcsQ0FBQTtZQUNFLFFBQU8sQ0FDWDtVQUFBO1FBQ0osR0FwQmlELHVJQUFBa1MsQ0FBQSxDQUFBcFIsUUFBQSxDQXNCeENxUCxDQUFBLEVBQVEsOEdBQUErQixDQUFBLENBQUFwUixRQUFBLENBd0NSNlAsQ0FBQSxFQUFVLGdIQUFBdUIsQ0FBQSxDQUFBcFIsUUFBQSxDQW1DVmdRLENBQUEsRUFBbUIseUhBQUFvQixDQUFBLENBQUFwUixRQUFBLENBUW5CaVEsQ0FBQSxFQUFLLDJHQUFBbUIsQ0FBQSxDQUFBcFIsUUFBQSxDQStGUnFSLENBQUEsRUFBMEMsMEhBQUFuQixDQUFBLHlCQUFBdFEsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUssV0FBQSxjQUFBaVEsQ0FBQSxDQUFBaFIsQ0FBQTtNQUFBO01BQUEsY0FBQUEsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7UUFBQSxJQUFBSyxDQUFBO1FDcldoRCxTQUFTWixFQUFVRyxDQUFBO1VBQ2YsT0FBcUIsbUJBQVZBLENBQUEsR0FDTyxZQUFWQSxDQUFBLElBR1UsV0FBVkEsQ0FBQSxHQUtEbUUsT0FBQSxDQUFRbkUsQ0FBQSxDQUNuQjtRQUFBO1FBQUFJLENBQUEsQ0FBQUMsQ0FBQSxDQUFBQyxDQUFBO1VBQUEwUSxDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBNUssQ0FBQTtVQUFBO1FBQUEsSUFBQXBHLENBQUEsR0FBQUksQ0FBQSxDQUFBSSxHQUFBLENBQUFSLENBQUEsSUFBQVMsQ0FBQSx5QkFBQUMsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBRixDQUFBLENBQUFULENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQTtRQUVPLElBU0xmLENBQUE7VUFUeUJDLENBQUE7VUFBZHFHLENBQUEsR0FBaUI7WUFDMUI4SyxVQUFBLEVBQVlyUixDQUFBLENBQVU7WUFDdEJ5UixjQUFBLEVBQWdCO1lBQ2hCQyxZQUFBLEVBQWMxUixDQUFBLENBQVU7WUFDeEIyUixtQkFBQSxFQUFxQjNSLENBQUEsQ0FBVTtZQUMvQjRSLHFCQUFBLEVBQXVCNVIsQ0FBQSxDQUFVO1lBQ2pDNlIsWUFBQSxFQUFjO1lBQ2RwQixnQkFBQSxFQUFrQjtZQUNsQlcsYUFBQSxFQUFlO1VBQUE7UUFBQSxDQUNqQm5SLENBQUEseUJBQUFZLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsZUFBQWQsQ0FBQSxDQUFBZ0IsUUFBQSxDQXRCT2pCLENBQUEsRUFBUyx1SEFBQUMsQ0FBQSxDQUFBZ0IsUUFBQSxDQWFMc0YsQ0FBQSxFQUFjLDhIQUFBckcsQ0FBQSx5QkFBQVcsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUssV0FBQSxjQUFBaEIsQ0FBQSxDQUFBQyxDQUFBO01BQUE7TUFBQSxlQUFBZ0IsTUFBQSxFQUFBQyxtQkFBQSxFQUFBQyxtQkFBQTtRQUFBQSxtQkFBQSxDQUFBYixDQUFBLENBQUFZLG1CQUFBO1VBQUFvTixDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBa0Usc0JBQUE7VUFBQTtRQUFBO1FBQUEsSUFBQUMsMkNBQUEsR0FBQXRSLG1CQUFBO1VBQUFQLFdBQUE7UUFBQSxTQUFBUSxRQUFBbkIsQ0FBQTtVQUFBLE9BQUFtQixPQUFBLHdCQUFBQyxNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBbUIsT0FBQSxDQUFBbkIsQ0FBQTtRQUFBO1FBQUEsU0FBQXlTLG9CQUFBO1VDWjNCQSxtQkFBQSxZQUFBQSxDQUFBO1lBQUEsT0FBQXpTLENBQUE7VUFBQTtVQUFBLElBQUFBLENBQUE7WUFBQU0sQ0FBQSxHQUFBeUIsTUFBQSxDQUFBUixTQUFBO1lBQUFuQixDQUFBLEdBQUFFLENBQUEsQ0FBQWtLLGNBQUE7WUFBQS9KLENBQUEsR0FBQXNCLE1BQUEsQ0FBQUMsY0FBQSxjQUFBaEMsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7Y0FBQUosQ0FBQSxDQUFBTSxDQUFBLElBQUFGLENBQUEsQ0FBQXVDLEtBQUE7WUFBQTtZQUFBOUMsQ0FBQSx3QkFBQXVCLE1BQUEsR0FBQUEsTUFBQTtZQUFBdEIsQ0FBQSxHQUFBRCxDQUFBLENBQUF3QixRQUFBO1lBQUF0QixDQUFBLEdBQUFGLENBQUEsQ0FBQTZTLGFBQUE7WUFBQXRNLENBQUEsR0FBQXZHLENBQUEsQ0FBQThTLFdBQUE7VUFBQSxTQUFBdE0sRUFBQXJHLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1lBQUEsT0FBQTJCLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBTSxDQUFBO2NBQUFxQyxLQUFBLEVBQUF2QyxDQUFBO2NBQUF3QixVQUFBO2NBQUFDLFlBQUE7Y0FBQUMsUUFBQTtZQUFBLElBQUE5QixDQUFBLENBQUFNLENBQUE7VUFBQTtVQUFBO1lBQUErRixDQUFBO1VBQUEsU0FBQXJHLENBQUE7WUFBQXFHLENBQUEsWUFBQXVNLENBQUE1UyxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtjQUFBLE9BQUFKLENBQUEsQ0FBQU0sQ0FBQSxJQUFBRixDQUFBO1lBQUE7VUFBQTtVQUFBLFNBQUFrRyxFQUFBdEcsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUEsRUFBQVAsQ0FBQTtZQUFBLElBQUFDLENBQUEsR0FBQVEsQ0FBQSxJQUFBQSxDQUFBLENBQUFpQixTQUFBLFlBQUFsQixDQUFBLEdBQUFDLENBQUEsR0FBQUQsQ0FBQTtjQUFBTixDQUFBLEdBQUFnQyxNQUFBLENBQUFXLE1BQUEsQ0FBQTVDLENBQUEsQ0FBQXlCLFNBQUE7Y0FBQTZFLENBQUEsT0FBQWlJLENBQUEsQ0FBQXhPLENBQUE7WUFBQSxPQUFBWSxDQUFBLENBQUFWLENBQUE7Y0FBQTRDLEtBQUEsRUFBQTBKLENBQUEsQ0FBQXJNLENBQUEsRUFBQUksQ0FBQSxFQUFBZ0csQ0FBQTtZQUFBLElBQUFyRyxDQUFBO1VBQUE7VUFBQSxTQUFBd0csRUFBQXZHLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1lBQUE7Y0FBQTtnQkFBQXVKLElBQUE7Z0JBQUFrSixHQUFBLEVBQUE3UyxDQUFBLENBQUF1QyxJQUFBLENBQUFqQyxDQUFBLEVBQUFGLENBQUE7Y0FBQTtZQUFBLFNBQUFKLENBQUE7Y0FBQTtnQkFBQTJKLElBQUE7Z0JBQUFrSixHQUFBLEVBQUE3UztjQUFBO1lBQUE7VUFBQTtVQUFBQSxDQUFBLENBQUE4UyxJQUFBLEdBQUF4TSxDQUFBO1VBQUEsSUFBQUUsQ0FBQTtVQUFBLFNBQUFuRyxFQUFBO1VBQUEsU0FBQW9JLEVBQUE7VUFBQSxTQUFBRyxFQUFBO1VBQUEsSUFBQXJJLENBQUE7VUFBQThGLENBQUEsQ0FBQTlGLENBQUEsRUFBQVQsQ0FBQTtZQUFBO1VBQUE7VUFBQSxJQUFBOEssQ0FBQSxHQUFBN0ksTUFBQSxDQUFBMEMsY0FBQTtZQUFBb0csQ0FBQSxHQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUEsQ0FBQSxDQUFBMEQsQ0FBQTtVQUFBekQsQ0FBQSxJQUFBQSxDQUFBLEtBQUF2SyxDQUFBLElBQUFGLENBQUEsQ0FBQW1DLElBQUEsQ0FBQXNJLENBQUEsRUFBQS9LLENBQUEsTUFBQVMsQ0FBQSxHQUFBc0ssQ0FBQTtVQUFBLElBQUFWLENBQUEsR0FBQXZCLENBQUEsQ0FBQXJILFNBQUEsR0FBQWxCLENBQUEsQ0FBQWtCLFNBQUEsR0FBQVEsTUFBQSxDQUFBVyxNQUFBLENBQUFuQyxDQUFBO1VBQUEsU0FBQXFMLEVBQUE1TCxDQUFBO1lBQUEsNEJBQUE2SCxPQUFBLFdBQUF2SCxDQUFBO2NBQUErRixDQUFBLENBQUFyRyxDQUFBLEVBQUFNLENBQUEsWUFBQU4sQ0FBQTtnQkFBQSxZQUFBK1MsT0FBQSxDQUFBelMsQ0FBQSxFQUFBTixDQUFBO2NBQUE7WUFBQTtVQUFBO1VBQUEsU0FBQWlNLEVBQUFqTSxDQUFBLEVBQUFNLENBQUE7WUFBQSxTQUFBVCxFQUFBWSxDQUFBLEVBQUFYLENBQUEsRUFBQUMsQ0FBQSxFQUFBcUcsQ0FBQTtjQUFBLElBQUFDLENBQUEsR0FBQUUsQ0FBQSxDQUFBdkcsQ0FBQSxDQUFBUyxDQUFBLEdBQUFULENBQUEsRUFBQUYsQ0FBQTtjQUFBLGdCQUFBdUcsQ0FBQSxDQUFBc0QsSUFBQTtnQkFBQSxJQUFBckQsQ0FBQSxHQUFBRCxDQUFBLENBQUF3TSxHQUFBO2tCQUFBck0sQ0FBQSxHQUFBRixDQUFBLENBQUEzRCxLQUFBO2dCQUFBLE9BQUE2RCxDQUFBLGdCQUFBckYsT0FBQSxDQUFBcUYsQ0FBQSxLQUFBcEcsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBaUUsQ0FBQSxlQUFBbEcsQ0FBQSxDQUFBc0osT0FBQSxDQUFBcEQsQ0FBQSxDQUFBd00sT0FBQSxFQUFBbEosSUFBQSxXQUFBOUosQ0FBQTtrQkFBQUgsQ0FBQSxTQUFBRyxDQUFBLEVBQUFELENBQUEsRUFBQXFHLENBQUE7Z0JBQUEsYUFBQXBHLENBQUE7a0JBQUFILENBQUEsVUFBQUcsQ0FBQSxFQUFBRCxDQUFBLEVBQUFxRyxDQUFBO2dCQUFBLEtBQUE5RixDQUFBLENBQUFzSixPQUFBLENBQUFwRCxDQUFBLEVBQUFzRCxJQUFBLFdBQUE5SixDQUFBO2tCQUFBc0csQ0FBQSxDQUFBM0QsS0FBQSxHQUFBM0MsQ0FBQSxFQUFBRCxDQUFBLENBQUF1RyxDQUFBO2dCQUFBLGFBQUF0RyxDQUFBO2tCQUFBLE9BQUFILENBQUEsVUFBQUcsQ0FBQSxFQUFBRCxDQUFBLEVBQUFxRyxDQUFBO2dCQUFBO2NBQUE7Y0FBQUEsQ0FBQSxDQUFBQyxDQUFBLENBQUF3TSxHQUFBO1lBQUE7WUFBQSxJQUFBL1MsQ0FBQTtZQUFBVyxDQUFBO2NBQUFrQyxLQUFBLFdBQUFBLENBQUEzQyxDQUFBLEVBQUFJLENBQUE7Z0JBQUEsU0FBQUssRUFBQTtrQkFBQSxXQUFBSCxDQUFBLFdBQUFBLENBQUEsRUFBQUcsQ0FBQTtvQkFBQVosQ0FBQSxDQUFBRyxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBO2tCQUFBO2dCQUFBO2dCQUFBLE9BQUFYLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBLENBQUFnSyxJQUFBLENBQUFySixDQUFBLEVBQUFBLENBQUEsSUFBQUEsQ0FBQTtjQUFBO1lBQUE7VUFBQTtVQUFBLFNBQUE0TCxFQUFBck0sQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7WUFBQSxJQUFBSyxDQUFBO1lBQUEsaUJBQUFaLENBQUEsRUFBQUMsQ0FBQTtjQUFBLG9CQUFBVyxDQUFBLFlBQUEyRSxLQUFBO2NBQUEsb0JBQUEzRSxDQUFBO2dCQUFBLGdCQUFBWixDQUFBLFFBQUFDLENBQUE7Z0JBQUE7a0JBQUE2QyxLQUFBO2tCQUFBZ0YsSUFBQTtnQkFBQTtjQUFBO2NBQUEsS0FBQXZILENBQUEsQ0FBQTZLLE1BQUEsR0FBQXBMLENBQUEsRUFBQU8sQ0FBQSxDQUFBeVMsR0FBQSxHQUFBL1MsQ0FBQTtnQkFBQSxJQUFBQyxDQUFBLEdBQUFLLENBQUEsQ0FBQTZTLFFBQUE7Z0JBQUEsSUFBQWxULENBQUE7a0JBQUEsSUFBQXFHLENBQUEsR0FBQW9HLENBQUEsQ0FBQXpNLENBQUEsRUFBQUssQ0FBQTtrQkFBQSxJQUFBZ0csQ0FBQTtvQkFBQSxJQUFBQSxDQUFBLEtBQUFJLENBQUE7b0JBQUEsT0FBQUosQ0FBQTtrQkFBQTtnQkFBQTtnQkFBQSxlQUFBaEcsQ0FBQSxDQUFBNkssTUFBQSxFQUFBN0ssQ0FBQSxDQUFBOFMsSUFBQSxHQUFBOVMsQ0FBQSxDQUFBK1MsS0FBQSxHQUFBL1MsQ0FBQSxDQUFBeVMsR0FBQSxzQkFBQXpTLENBQUEsQ0FBQTZLLE1BQUE7a0JBQUEseUJBQUF4SyxDQUFBLFFBQUFBLENBQUEsZ0JBQUFMLENBQUEsQ0FBQXlTLEdBQUE7a0JBQUF6UyxDQUFBLENBQUFnVCxpQkFBQSxDQUFBaFQsQ0FBQSxDQUFBeVMsR0FBQTtnQkFBQSxvQkFBQXpTLENBQUEsQ0FBQTZLLE1BQUEsSUFBQTdLLENBQUEsQ0FBQWlULE1BQUEsV0FBQWpULENBQUEsQ0FBQXlTLEdBQUE7Z0JBQUFwUyxDQUFBO2dCQUFBLElBQUE0RixDQUFBLEdBQUFFLENBQUEsQ0FBQXZHLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO2dCQUFBLGlCQUFBaUcsQ0FBQSxDQUFBc0QsSUFBQTtrQkFBQSxJQUFBbEosQ0FBQSxHQUFBTCxDQUFBLENBQUF1SCxJQUFBLG1DQUFBdEIsQ0FBQSxDQUFBd00sR0FBQSxLQUFBck0sQ0FBQTtrQkFBQTtvQkFBQTdELEtBQUEsRUFBQTBELENBQUEsQ0FBQXdNLEdBQUE7b0JBQUFsTCxJQUFBLEVBQUF2SCxDQUFBLENBQUF1SDtrQkFBQTtnQkFBQTtnQkFBQSxZQUFBdEIsQ0FBQSxDQUFBc0QsSUFBQSxLQUFBbEosQ0FBQSxnQkFBQUwsQ0FBQSxDQUFBNkssTUFBQSxZQUFBN0ssQ0FBQSxDQUFBeVMsR0FBQSxHQUFBeE0sQ0FBQSxDQUFBd00sR0FBQTtjQUFBO1lBQUE7VUFBQTtVQUFBLFNBQUFyRyxFQUFBeE0sQ0FBQSxFQUFBTSxDQUFBO1lBQUEsSUFBQUYsQ0FBQSxHQUFBRSxDQUFBLENBQUEySyxNQUFBO2NBQUF4SyxDQUFBLEdBQUFULENBQUEsQ0FBQXFCLFFBQUEsQ0FBQWpCLENBQUE7WUFBQSxlQUFBSyxDQUFBLFNBQUFILENBQUEsQ0FBQTJTLFFBQUEscUJBQUE3UyxDQUFBLElBQUFKLENBQUEsQ0FBQXFCLFFBQUEsQ0FBQTJPLE1BQUEsS0FBQTFQLENBQUEsQ0FBQTJLLE1BQUEsYUFBQTNLLENBQUEsQ0FBQXVTLEdBQUEsV0FBQXJHLENBQUEsQ0FBQXhNLENBQUEsRUFBQU0sQ0FBQSxlQUFBQSxDQUFBLENBQUEySyxNQUFBLGtCQUFBN0ssQ0FBQSxLQUFBRSxDQUFBLENBQUEySyxNQUFBLFlBQUEzSyxDQUFBLENBQUF1UyxHQUFBLE9BQUFwUixTQUFBLHVDQUFBckIsQ0FBQSxpQkFBQW9HLENBQUE7WUFBQSxJQUFBM0csQ0FBQSxHQUFBMEcsQ0FBQSxDQUFBOUYsQ0FBQSxFQUFBVCxDQUFBLENBQUFxQixRQUFBLEVBQUFmLENBQUEsQ0FBQXVTLEdBQUE7WUFBQSxnQkFBQWhULENBQUEsQ0FBQThKLElBQUEsU0FBQXJKLENBQUEsQ0FBQTJLLE1BQUEsWUFBQTNLLENBQUEsQ0FBQXVTLEdBQUEsR0FBQWhULENBQUEsQ0FBQWdULEdBQUEsRUFBQXZTLENBQUEsQ0FBQTJTLFFBQUEsU0FBQXpNLENBQUE7WUFBQSxJQUFBMUcsQ0FBQSxHQUFBRCxDQUFBLENBQUFnVCxHQUFBO1lBQUEsT0FBQS9TLENBQUEsR0FBQUEsQ0FBQSxDQUFBNkgsSUFBQSxJQUFBckgsQ0FBQSxDQUFBTixDQUFBLENBQUFzVCxVQUFBLElBQUF4VCxDQUFBLENBQUE2QyxLQUFBLEVBQUFyQyxDQUFBLENBQUFtSCxJQUFBLEdBQUF6SCxDQUFBLENBQUF1VCxPQUFBLGVBQUFqVCxDQUFBLENBQUEySyxNQUFBLEtBQUEzSyxDQUFBLENBQUEySyxNQUFBLFdBQUEzSyxDQUFBLENBQUF1UyxHQUFBLFlBQUF2UyxDQUFBLENBQUEyUyxRQUFBLFNBQUF6TSxDQUFBLElBQUExRyxDQUFBLElBQUFRLENBQUEsQ0FBQTJLLE1BQUEsWUFBQTNLLENBQUEsQ0FBQXVTLEdBQUEsT0FBQXBSLFNBQUEsc0NBQUFuQixDQUFBLENBQUEyUyxRQUFBLFNBQUF6TSxDQUFBO1VBQUE7VUFBQSxTQUFBMkgsRUFBQW5PLENBQUE7WUFBQSxJQUFBTSxDQUFBO2NBQUFrVCxNQUFBLEVBQUF4VCxDQUFBO1lBQUE7WUFBQSxLQUFBQSxDQUFBLEtBQUFNLENBQUEsQ0FBQW1ULFFBQUEsR0FBQXpULENBQUEsV0FBQUEsQ0FBQSxLQUFBTSxDQUFBLENBQUFvVCxVQUFBLEdBQUExVCxDQUFBLEtBQUFNLENBQUEsQ0FBQXFULFFBQUEsR0FBQTNULENBQUEsV0FBQTRULFVBQUEsQ0FBQTdQLElBQUEsQ0FBQXpELENBQUE7VUFBQTtVQUFBLFNBQUE4TixFQUFBcE8sQ0FBQTtZQUFBLElBQUFNLENBQUEsR0FBQU4sQ0FBQSxDQUFBNlQsVUFBQTtZQUFBdlQsQ0FBQSxDQUFBcUosSUFBQSxvQkFBQXJKLENBQUEsQ0FBQXVTLEdBQUEsRUFBQTdTLENBQUEsQ0FBQTZULFVBQUEsR0FBQXZULENBQUE7VUFBQTtVQUFBLFNBQUErTixFQUFBck8sQ0FBQTtZQUFBLEtBQUE0VCxVQUFBO2NBQUFKLE1BQUE7WUFBQSxJQUFBeFQsQ0FBQSxDQUFBNkgsT0FBQSxDQUFBc0csQ0FBQSxjQUFBMkYsS0FBQTtVQUFBO1VBQUEsU0FBQXhGLEVBQUF0TyxDQUFBO1lBQUEsSUFBQUEsQ0FBQTtjQUFBLElBQUFNLENBQUEsR0FBQU4sQ0FBQSxDQUFBRixDQUFBO2NBQUEsSUFBQVEsQ0FBQSxTQUFBQSxDQUFBLENBQUFpQyxJQUFBLENBQUF2QyxDQUFBO2NBQUEseUJBQUFBLENBQUEsQ0FBQXlILElBQUEsU0FBQXpILENBQUE7Y0FBQSxLQUFBK1QsS0FBQSxDQUFBL1QsQ0FBQSxDQUFBMkIsTUFBQTtnQkFBQSxJQUFBbEIsQ0FBQTtrQkFBQVosQ0FBQSxZQUFBUyxFQUFBO29CQUFBLFNBQUFHLENBQUEsR0FBQVQsQ0FBQSxDQUFBMkIsTUFBQSxPQUFBdkIsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBdkMsQ0FBQSxFQUFBUyxDQUFBLFVBQUFILENBQUEsQ0FBQXFDLEtBQUEsR0FBQTNDLENBQUEsQ0FBQVMsQ0FBQSxHQUFBSCxDQUFBLENBQUFxSCxJQUFBLE9BQUFySCxDQUFBO29CQUFBLE9BQUFBLENBQUEsQ0FBQXFDLEtBQUEsV0FBQXJDLENBQUEsQ0FBQXFILElBQUEsT0FBQXJILENBQUE7a0JBQUE7Z0JBQUEsT0FBQVQsQ0FBQSxDQUFBNEgsSUFBQSxHQUFBNUgsQ0FBQTtjQUFBO1lBQUE7WUFBQTtjQUFBNEgsSUFBQSxFQUFBOEc7WUFBQTtVQUFBO1VBQUEsU0FBQUEsRUFBQTtZQUFBO2NBQUE1TCxLQUFBO2NBQUFnRixJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFjLENBQUEsQ0FBQWxILFNBQUEsR0FBQXFILENBQUEsRUFBQW5JLENBQUEsQ0FBQTBKLENBQUE7WUFBQXhILEtBQUEsRUFBQWlHLENBQUE7WUFBQS9HLFlBQUE7VUFBQSxJQUFBcEIsQ0FBQSxDQUFBbUksQ0FBQTtZQUFBakcsS0FBQSxFQUFBOEYsQ0FBQTtZQUFBNUcsWUFBQTtVQUFBLElBQUE0RyxDQUFBLENBQUF1TCxXQUFBLEdBQUEzTixDQUFBLENBQUF1QyxDQUFBLEVBQUF4QyxDQUFBLHdCQUFBcEcsQ0FBQSxDQUFBaVUsbUJBQUEsYUFBQWpVLENBQUE7WUFBQSxJQUFBTSxDQUFBLHdCQUFBTixDQUFBLElBQUFBLENBQUEsQ0FBQXNCLFdBQUE7WUFBQSxTQUFBaEIsQ0FBQSxLQUFBQSxDQUFBLEtBQUFtSSxDQUFBLDZCQUFBbkksQ0FBQSxDQUFBMFQsV0FBQSxJQUFBMVQsQ0FBQSxDQUFBMEUsSUFBQTtVQUFBLEdBQUFoRixDQUFBLENBQUFrVSxJQUFBLGFBQUFsVSxDQUFBO1lBQUEsT0FBQStCLE1BQUEsQ0FBQXdDLGNBQUEsR0FBQXhDLE1BQUEsQ0FBQXdDLGNBQUEsQ0FBQXZFLENBQUEsRUFBQTRJLENBQUEsS0FBQTVJLENBQUEsQ0FBQXdFLFNBQUEsR0FBQW9FLENBQUEsRUFBQXZDLENBQUEsQ0FBQXJHLENBQUEsRUFBQW9HLENBQUEseUJBQUFwRyxDQUFBLENBQUF1QixTQUFBLEdBQUFRLE1BQUEsQ0FBQVcsTUFBQSxDQUFBeUgsQ0FBQSxHQUFBbkssQ0FBQTtVQUFBLEdBQUFBLENBQUEsQ0FBQW1VLEtBQUEsYUFBQW5VLENBQUE7WUFBQTtjQUFBZ1QsT0FBQSxFQUFBaFQ7WUFBQTtVQUFBLEdBQUE0TCxDQUFBLENBQUFLLENBQUEsQ0FBQTFLLFNBQUEsR0FBQThFLENBQUEsQ0FBQTRGLENBQUEsQ0FBQTFLLFNBQUEsRUFBQXhCLENBQUE7WUFBQTtVQUFBLElBQUFDLENBQUEsQ0FBQW9VLGFBQUEsR0FBQW5JLENBQUEsRUFBQWpNLENBQUEsQ0FBQXFVLEtBQUEsYUFBQS9ULENBQUEsRUFBQUYsQ0FBQSxFQUFBSyxDQUFBLEVBQUFaLENBQUEsRUFBQUMsQ0FBQTtZQUFBLFdBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBcUksT0FBQTtZQUFBLElBQUFwSSxDQUFBLE9BQUFrTSxDQUFBLENBQUEzRixDQUFBLENBQUFoRyxDQUFBLEVBQUFGLENBQUEsRUFBQUssQ0FBQSxFQUFBWixDQUFBLEdBQUFDLENBQUE7WUFBQSxPQUFBRSxDQUFBLENBQUFpVSxtQkFBQSxDQUFBN1QsQ0FBQSxJQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQTBILElBQUEsR0FBQXFDLElBQUEsV0FBQTlKLENBQUE7Y0FBQSxPQUFBQSxDQUFBLENBQUEySCxJQUFBLEdBQUEzSCxDQUFBLENBQUEyQyxLQUFBLEdBQUE1QyxDQUFBLENBQUEwSCxJQUFBO1lBQUE7VUFBQSxHQUFBbUUsQ0FBQSxDQUFBekIsQ0FBQSxHQUFBOUQsQ0FBQSxDQUFBOEQsQ0FBQSxFQUFBL0QsQ0FBQSxnQkFBQUMsQ0FBQSxDQUFBOEQsQ0FBQSxFQUFBckssQ0FBQTtZQUFBO1VBQUEsSUFBQXVHLENBQUEsQ0FBQThELENBQUE7WUFBQTtVQUFBLElBQUFuSyxDQUFBLENBQUF5SyxJQUFBLGFBQUF6SyxDQUFBO1lBQUEsSUFBQU0sQ0FBQSxHQUFBeUIsTUFBQSxDQUFBL0IsQ0FBQTtjQUFBSSxDQUFBO1lBQUEsU0FBQUssQ0FBQSxJQUFBSCxDQUFBLEVBQUFGLENBQUEsQ0FBQTJELElBQUEsQ0FBQXRELENBQUE7WUFBQSxPQUFBTCxDQUFBLENBQUFrVSxPQUFBLGFBQUF0VSxFQUFBO2NBQUEsT0FBQUksQ0FBQSxDQUFBdUIsTUFBQTtnQkFBQSxJQUFBbEIsQ0FBQSxHQUFBTCxDQUFBLENBQUFtVSxHQUFBO2dCQUFBLElBQUE5VCxDQUFBLElBQUFILENBQUEsU0FBQU4sQ0FBQSxDQUFBMkMsS0FBQSxHQUFBbEMsQ0FBQSxFQUFBVCxDQUFBLENBQUEySCxJQUFBLE9BQUEzSCxDQUFBO2NBQUE7Y0FBQSxPQUFBQSxDQUFBLENBQUEySCxJQUFBLE9BQUEzSCxDQUFBO1lBQUE7VUFBQSxHQUFBQSxDQUFBLENBQUEwSyxNQUFBLEdBQUE0RCxDQUFBLEVBQUFELENBQUEsQ0FBQTlNLFNBQUE7WUFBQUQsV0FBQSxFQUFBK00sQ0FBQTtZQUFBeUYsS0FBQSxXQUFBQSxDQUFBOVQsQ0FBQTtjQUFBLFNBQUF3VSxJQUFBLFdBQUEvTSxJQUFBLFdBQUF5TCxJQUFBLFFBQUFDLEtBQUEsZ0JBQUF4TCxJQUFBLFlBQUFzTCxRQUFBLGNBQUFoSSxNQUFBLGdCQUFBNEgsR0FBQSxnQkFBQWUsVUFBQSxDQUFBL0wsT0FBQSxDQUFBdUcsQ0FBQSxJQUFBcE8sQ0FBQSxXQUFBTSxDQUFBLGtCQUFBQSxDQUFBLENBQUFtVSxNQUFBLE9BQUFyVSxDQUFBLENBQUFtQyxJQUFBLE9BQUFqQyxDQUFBLE1BQUF5VCxLQUFBLEVBQUF6VCxDQUFBLENBQUFzRyxLQUFBLGNBQUF0RyxDQUFBO1lBQUE7WUFBQW9VLElBQUEsV0FBQUEsQ0FBQTtjQUFBLEtBQUEvTSxJQUFBO2NBQUEsSUFBQTNILENBQUEsUUFBQTRULFVBQUEsSUFBQUMsVUFBQTtjQUFBLGdCQUFBN1QsQ0FBQSxDQUFBMkosSUFBQSxRQUFBM0osQ0FBQSxDQUFBNlMsR0FBQTtjQUFBLFlBQUE4QixJQUFBO1lBQUE7WUFBQXZCLGlCQUFBLFdBQUFBLENBQUFwVCxDQUFBO2NBQUEsU0FBQTJILElBQUEsUUFBQTNILENBQUE7Y0FBQSxJQUFBTSxDQUFBO2NBQUEsU0FBQUcsRUFBQUwsQ0FBQSxFQUFBSyxDQUFBO2dCQUFBLE9BQUFWLENBQUEsQ0FBQTRKLElBQUEsWUFBQTVKLENBQUEsQ0FBQThTLEdBQUEsR0FBQTdTLENBQUEsRUFBQU0sQ0FBQSxDQUFBbUgsSUFBQSxHQUFBckgsQ0FBQSxFQUFBSyxDQUFBLEtBQUFILENBQUEsQ0FBQTJLLE1BQUEsV0FBQTNLLENBQUEsQ0FBQXVTLEdBQUEsY0FBQXBTLENBQUE7Y0FBQTtjQUFBLFNBQUFaLENBQUEsUUFBQStULFVBQUEsQ0FBQWpTLE1BQUEsTUFBQTlCLENBQUEsU0FBQUEsQ0FBQTtnQkFBQSxJQUFBQyxDQUFBLFFBQUE4VCxVQUFBLENBQUEvVCxDQUFBO2tCQUFBRSxDQUFBLEdBQUFELENBQUEsQ0FBQStULFVBQUE7Z0JBQUEsZUFBQS9ULENBQUEsQ0FBQTBULE1BQUEsU0FBQS9TLENBQUE7Z0JBQUEsSUFBQVgsQ0FBQSxDQUFBMFQsTUFBQSxTQUFBZ0IsSUFBQTtrQkFBQSxJQUFBcE8sQ0FBQSxHQUFBaEcsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBekMsQ0FBQTtvQkFBQXVHLENBQUEsR0FBQWpHLENBQUEsQ0FBQW1DLElBQUEsQ0FBQXpDLENBQUE7a0JBQUEsSUFBQXNHLENBQUEsSUFBQUMsQ0FBQTtvQkFBQSxTQUFBbU8sSUFBQSxHQUFBMVUsQ0FBQSxDQUFBMlQsUUFBQSxTQUFBaFQsQ0FBQSxDQUFBWCxDQUFBLENBQUEyVCxRQUFBO29CQUFBLFNBQUFlLElBQUEsR0FBQTFVLENBQUEsQ0FBQTRULFVBQUEsU0FBQWpULENBQUEsQ0FBQVgsQ0FBQSxDQUFBNFQsVUFBQTtrQkFBQSxXQUFBdE4sQ0FBQTtvQkFBQSxTQUFBb08sSUFBQSxHQUFBMVUsQ0FBQSxDQUFBMlQsUUFBQSxTQUFBaFQsQ0FBQSxDQUFBWCxDQUFBLENBQUEyVCxRQUFBO2tCQUFBO29CQUFBLEtBQUFwTixDQUFBLFlBQUFqQixLQUFBO29CQUFBLFNBQUFvUCxJQUFBLEdBQUExVSxDQUFBLENBQUE0VCxVQUFBLFNBQUFqVCxDQUFBLENBQUFYLENBQUEsQ0FBQTRULFVBQUE7a0JBQUE7Z0JBQUE7Y0FBQTtZQUFBO1lBQUFMLE1BQUEsV0FBQUEsQ0FBQXJULENBQUEsRUFBQU0sQ0FBQTtjQUFBLFNBQUFHLENBQUEsUUFBQW1ULFVBQUEsQ0FBQWpTLE1BQUEsTUFBQWxCLENBQUEsU0FBQUEsQ0FBQTtnQkFBQSxJQUFBWixDQUFBLFFBQUErVCxVQUFBLENBQUFuVCxDQUFBO2dCQUFBLElBQUFaLENBQUEsQ0FBQTJULE1BQUEsU0FBQWdCLElBQUEsSUFBQXBVLENBQUEsQ0FBQW1DLElBQUEsQ0FBQTFDLENBQUEsd0JBQUEyVSxJQUFBLEdBQUEzVSxDQUFBLENBQUE2VCxVQUFBO2tCQUFBLElBQUE1VCxDQUFBLEdBQUFELENBQUE7a0JBQUE7Z0JBQUE7Y0FBQTtjQUFBQyxDQUFBLGlCQUFBRSxDQUFBLG1CQUFBQSxDQUFBLEtBQUFGLENBQUEsQ0FBQTBULE1BQUEsSUFBQWxULENBQUEsSUFBQUEsQ0FBQSxJQUFBUixDQUFBLENBQUE0VCxVQUFBLEtBQUE1VCxDQUFBO2NBQUEsSUFBQUMsQ0FBQSxHQUFBRCxDQUFBLEdBQUFBLENBQUEsQ0FBQStULFVBQUE7Y0FBQSxPQUFBOVQsQ0FBQSxDQUFBNEosSUFBQSxHQUFBM0osQ0FBQSxFQUFBRCxDQUFBLENBQUE4UyxHQUFBLEdBQUF2UyxDQUFBLEVBQUFSLENBQUEsU0FBQW1MLE1BQUEsZ0JBQUF4RCxJQUFBLEdBQUEzSCxDQUFBLENBQUE0VCxVQUFBLEVBQUFsTixDQUFBLFNBQUFvTyxRQUFBLENBQUE3VSxDQUFBO1lBQUE7WUFBQTZVLFFBQUEsV0FBQUEsQ0FBQTVVLENBQUEsRUFBQU0sQ0FBQTtjQUFBLGdCQUFBTixDQUFBLENBQUEySixJQUFBLFFBQUEzSixDQUFBLENBQUE2UyxHQUFBO2NBQUEsbUJBQUE3UyxDQUFBLENBQUEySixJQUFBLG1CQUFBM0osQ0FBQSxDQUFBMkosSUFBQSxRQUFBbEMsSUFBQSxHQUFBekgsQ0FBQSxDQUFBNlMsR0FBQSxnQkFBQTdTLENBQUEsQ0FBQTJKLElBQUEsU0FBQWdMLElBQUEsUUFBQTlCLEdBQUEsR0FBQTdTLENBQUEsQ0FBQTZTLEdBQUEsT0FBQTVILE1BQUEsa0JBQUF4RCxJQUFBLHlCQUFBekgsQ0FBQSxDQUFBMkosSUFBQSxJQUFBckosQ0FBQSxVQUFBbUgsSUFBQSxHQUFBbkgsQ0FBQSxHQUFBa0csQ0FBQTtZQUFBO1lBQUFxTyxNQUFBLFdBQUFBLENBQUE3VSxDQUFBO2NBQUEsU0FBQU0sQ0FBQSxRQUFBc1QsVUFBQSxDQUFBalMsTUFBQSxNQUFBckIsQ0FBQSxTQUFBQSxDQUFBO2dCQUFBLElBQUFGLENBQUEsUUFBQXdULFVBQUEsQ0FBQXRULENBQUE7Z0JBQUEsSUFBQUYsQ0FBQSxDQUFBc1QsVUFBQSxLQUFBMVQsQ0FBQSxjQUFBNFUsUUFBQSxDQUFBeFUsQ0FBQSxDQUFBeVQsVUFBQSxFQUFBelQsQ0FBQSxDQUFBdVQsUUFBQSxHQUFBdkYsQ0FBQSxDQUFBaE8sQ0FBQSxHQUFBb0csQ0FBQTtjQUFBO1lBQUE7WUFBQXFLLEtBQUEsV0FBQUEsQ0FBQTdRLENBQUE7Y0FBQSxTQUFBTSxDQUFBLFFBQUFzVCxVQUFBLENBQUFqUyxNQUFBLE1BQUFyQixDQUFBLFNBQUFBLENBQUE7Z0JBQUEsSUFBQUYsQ0FBQSxRQUFBd1QsVUFBQSxDQUFBdFQsQ0FBQTtnQkFBQSxJQUFBRixDQUFBLENBQUFvVCxNQUFBLEtBQUF4VCxDQUFBO2tCQUFBLElBQUFTLENBQUEsR0FBQUwsQ0FBQSxDQUFBeVQsVUFBQTtrQkFBQSxnQkFBQXBULENBQUEsQ0FBQWtKLElBQUE7b0JBQUEsSUFBQTlKLENBQUEsR0FBQVksQ0FBQSxDQUFBb1MsR0FBQTtvQkFBQXpFLENBQUEsQ0FBQWhPLENBQUE7a0JBQUE7a0JBQUEsT0FBQVAsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsVUFBQXVGLEtBQUE7WUFBQTtZQUFBMFAsYUFBQSxXQUFBQSxDQUFBOVUsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7Y0FBQSxZQUFBNlMsUUFBQTtnQkFBQTVSLFFBQUEsRUFBQWlOLENBQUEsQ0FBQXRPLENBQUE7Z0JBQUFzVCxVQUFBLEVBQUFoVCxDQUFBO2dCQUFBaVQsT0FBQSxFQUFBblQ7Y0FBQSxtQkFBQTZLLE1BQUEsVUFBQTRILEdBQUEsWUFBQXJNLENBQUE7WUFBQTtVQUFBLEdBQUF4RyxDQUFBO1FBQUE7UUFBQSxTQUFBK1UsbUJBQUEvVSxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQSxFQUFBSyxDQUFBLEVBQUFaLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBO1VBQUE7WUFBQSxJQUFBcUcsQ0FBQSxHQUFBcEcsQ0FBQSxDQUFBRixDQUFBLEVBQUFDLENBQUE7Y0FBQXNHLENBQUEsR0FBQUQsQ0FBQSxDQUFBekQsS0FBQTtVQUFBLFNBQUEzQyxDQUFBO1lBQUEsWUFBQUksQ0FBQSxDQUFBSixDQUFBO1VBQUE7VUFBQW9HLENBQUEsQ0FBQXVCLElBQUEsR0FBQXJILENBQUEsQ0FBQStGLENBQUEsSUFBQThCLE9BQUEsQ0FBQXlCLE9BQUEsQ0FBQXZELENBQUEsRUFBQXlELElBQUEsQ0FBQXJKLENBQUEsRUFBQVosQ0FBQTtRQUFBO1FBQUEsU0FBQW1WLGtCQUFBaFYsQ0FBQTtVQUFBO1lBQUEsSUFBQU0sQ0FBQTtjQUFBRixDQUFBLEdBQUE4QyxTQUFBO1lBQUEsV0FBQWlGLE9BQUEsV0FBQTFILENBQUEsRUFBQVosQ0FBQTtjQUFBLElBQUFDLENBQUEsR0FBQUUsQ0FBQSxDQUFBbUQsS0FBQSxDQUFBN0MsQ0FBQSxFQUFBRixDQUFBO2NBQUEsU0FBQUwsRUFBQUMsQ0FBQTtnQkFBQStVLGtCQUFBLENBQUFqVixDQUFBLEVBQUFXLENBQUEsRUFBQVosQ0FBQSxFQUFBRSxDQUFBLEVBQUFxRyxDQUFBLFVBQUFwRyxDQUFBO2NBQUE7Y0FBQSxTQUFBb0csRUFBQXBHLENBQUE7Z0JBQUErVSxrQkFBQSxDQUFBalYsQ0FBQSxFQUFBVyxDQUFBLEVBQUFaLENBQUEsRUFBQUUsQ0FBQSxFQUFBcUcsQ0FBQSxXQUFBcEcsQ0FBQTtjQUFBO2NBQUFELENBQUE7WUFBQTtVQUFBO1FBQUE7UUFBQSxTQUFBeUIsZ0JBQUF4QixDQUFBLEVBQUFNLENBQUE7VUFBQSxNQUFBTixDQUFBLFlBQUFNLENBQUEsYUFBQW1CLFNBQUE7UUFBQTtRQUFBLFNBQUFDLGtCQUFBMUIsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsU0FBQUYsQ0FBQSxNQUFBQSxDQUFBLEdBQUFFLENBQUEsQ0FBQXFCLE1BQUEsRUFBQXZCLENBQUE7WUFBQSxJQUFBSyxDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQTtZQUFBSyxDQUFBLENBQUFtQixVQUFBLEdBQUFuQixDQUFBLENBQUFtQixVQUFBLFFBQUFuQixDQUFBLENBQUFvQixZQUFBLGtCQUFBcEIsQ0FBQSxLQUFBQSxDQUFBLENBQUFxQixRQUFBLFFBQUFDLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBaUMsY0FBQSxDQUFBeEIsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBekIsQ0FBQTtVQUFBO1FBQUE7UUFBQSxTQUFBMEIsYUFBQW5DLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1VBQUEsT0FBQUUsQ0FBQSxJQUFBb0IsaUJBQUEsQ0FBQTFCLENBQUEsQ0FBQXVCLFNBQUEsRUFBQWpCLENBQUEsR0FBQUYsQ0FBQSxJQUFBc0IsaUJBQUEsQ0FBQTFCLENBQUEsRUFBQUksQ0FBQSxHQUFBMkIsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBO1lBQUE4QixRQUFBO1VBQUEsSUFBQTlCLENBQUE7UUFBQTtRQUFBLFNBQUFpVixRQUFBalYsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsSUFBQUYsQ0FBQSxHQUFBMkIsTUFBQSxDQUFBMEksSUFBQSxDQUFBekssQ0FBQTtVQUFBLElBQUErQixNQUFBLENBQUE0TSxxQkFBQTtZQUFBLElBQUFsTyxDQUFBLEdBQUFzQixNQUFBLENBQUE0TSxxQkFBQSxDQUFBM08sQ0FBQTtZQUFBTSxDQUFBLEtBQUFHLENBQUEsR0FBQUEsQ0FBQSxDQUFBbU8sTUFBQSxXQUFBdE8sQ0FBQTtjQUFBLE9BQUF5QixNQUFBLENBQUE4TSx3QkFBQSxDQUFBN08sQ0FBQSxFQUFBTSxDQUFBLEVBQUFzQixVQUFBO1lBQUEsS0FBQXhCLENBQUEsQ0FBQTJELElBQUEsQ0FBQVosS0FBQSxDQUFBL0MsQ0FBQSxFQUFBSyxDQUFBO1VBQUE7VUFBQSxPQUFBTCxDQUFBO1FBQUE7UUFBQSxTQUFBOFUsY0FBQWxWLENBQUE7VUFBQSxTQUFBTSxDQUFBLE1BQUFBLENBQUEsR0FBQTRDLFNBQUEsQ0FBQXZCLE1BQUEsRUFBQXJCLENBQUE7WUFBQSxJQUFBRixDQUFBLFdBQUE4QyxTQUFBLENBQUE1QyxDQUFBLElBQUE0QyxTQUFBLENBQUE1QyxDQUFBO1lBQUFBLENBQUEsT0FBQTJVLE9BQUEsQ0FBQWxULE1BQUEsQ0FBQTNCLENBQUEsT0FBQXlILE9BQUEsV0FBQXZILENBQUE7Y0FBQTZVLGVBQUEsQ0FBQW5WLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUE7WUFBQSxLQUFBeUIsTUFBQSxDQUFBaU4seUJBQUEsR0FBQWpOLE1BQUEsQ0FBQWtOLGdCQUFBLENBQUFqUCxDQUFBLEVBQUErQixNQUFBLENBQUFpTix5QkFBQSxDQUFBNU8sQ0FBQSxLQUFBNlUsT0FBQSxDQUFBbFQsTUFBQSxDQUFBM0IsQ0FBQSxHQUFBeUgsT0FBQSxXQUFBdkgsQ0FBQTtjQUFBeUIsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBLEVBQUFNLENBQUEsRUFBQXlCLE1BQUEsQ0FBQThNLHdCQUFBLENBQUF6TyxDQUFBLEVBQUFFLENBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQU4sQ0FBQTtRQUFBO1FBQUEsU0FBQW1WLGdCQUFBblYsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxRQUFBRSxDQUFBLEdBQUEyQixjQUFBLENBQUEzQixDQUFBLE1BQUFOLENBQUEsR0FBQStCLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBTSxDQUFBO1lBQUFxQyxLQUFBLEVBQUF2QyxDQUFBO1lBQUF3QixVQUFBO1lBQUFDLFlBQUE7WUFBQUMsUUFBQTtVQUFBLEtBQUE5QixDQUFBLENBQUFNLENBQUEsSUFBQUYsQ0FBQSxFQUFBSixDQUFBO1FBQUE7UUFBQSxTQUFBaUMsZUFBQWpDLENBQUE7VUFBQSxJQUFBTSxDQUFBLEdBQUE4QixZQUFBLENBQUFwQyxDQUFBO1VBQUEsb0JBQUFtQixPQUFBLENBQUFiLENBQUEsSUFBQUEsQ0FBQSxHQUFBK0IsTUFBQSxDQUFBL0IsQ0FBQTtRQUFBO1FBQUEsU0FBQThCLGFBQUFwQyxDQUFBLEVBQUFNLENBQUE7VUFBQSxpQkFBQWEsT0FBQSxDQUFBbkIsQ0FBQSxjQUFBQSxDQUFBLFNBQUFBLENBQUE7VUFBQSxJQUFBSSxDQUFBLEdBQUFKLENBQUEsQ0FBQW9CLE1BQUEsQ0FBQWtCLFdBQUE7VUFBQSxlQUFBbEMsQ0FBQTtZQUFBLElBQUFLLENBQUEsR0FBQUwsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBdkMsQ0FBQSxFQUFBTSxDQUFBO1lBQUEsaUJBQUFhLE9BQUEsQ0FBQVYsQ0FBQSxVQUFBQSxDQUFBO1lBQUEsVUFBQWdCLFNBQUE7VUFBQTtVQUFBLHFCQUFBbkIsQ0FBQSxHQUFBK0IsTUFBQSxHQUFBRyxNQUFBLEVBQUF4QyxDQUFBO1FBQUE7UUFBQWdCLE1BQUEsR0FBQUUsbUJBQUEsQ0FBQVYsR0FBQSxDQUFBUSxNQUFBLEdBQUFMLFdBQUEseUJBQUFELG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxJQUFBQSxXQUFBLENBQUFLLE1BQUE7UUFBQSxJQUFBNEQsYUFBQSx5QkFBQWxFLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQSxhQUFBYixDQUFBO1VBQUEsT0FBQUEsQ0FBQTtRQUFBO1FBc0NPLFNBQVNvVixxQkFBcUJwVixDQUFBLEVBQWVNLENBQUE7VUFDaEQsSUFBaUIsUUFBYkEsQ0FBQSxFQUF3QjtZQUN4QixJQUFZLFFBQVJOLENBQUEsRUFDQSxNQUFNLElBQUlvRixLQUFBLENBQU07WUFFcEIsT0FBTyxDQUFDLFNBQVMsVUFBVXBGLENBQUEsRUFBTU0sQ0FBQSxDQUNyQztVQUFBO1VBQ0EsT0FBWSxRQUFSTixDQUFBLEdBQ08sQ0FBQyxTQUFTLFVBQVVBLENBQUEsSUFFeEIsQ0FBQyxTQUFTLFNBQ3JCO1FBQUE7UUFFQSxTQUFTcVYsZUFBZXJWLENBQUE7VUFDcEIsT0FBTytCLE1BQUEsQ0FBTzBJLElBQUEsQ0FBS3pLLENBQUEsRUFDZDRPLE1BQUEsQ0FBTyxVQUFBdE8sQ0FBQTtZQUFJLE9BQUlOLENBQUEsQ0FBTU0sQ0FBQSxLQUFTeUIsTUFBQSxDQUFPUixTQUFBLENBQVVpSixjQUFBLENBQWVqSSxJQUFBLENBQUt2QyxDQUFBLENBQU1NLENBQUEsR0FBTyxRQUFRO1VBQUEsR0FDeEZzSCxHQUFBLENBQUksVUFBQXRILENBQUE7WUFDRCxJQUFNRixDQUFBLEdBQVNKLENBQUEsQ0FBTU0sQ0FBQTtZQUNyQixPQUFjLFFBQVZGLENBQUEsR0FDTyxDQUFDLElBRVorVSxlQUFBLEtBQVU3VSxDQUFBLEVBQU9GLENBQUEsQ0FBT3VDLEtBQUEsQ0FDNUI7VUFBQSxFQUNSO1FBQUE7UUFFQSxTQUFTMlMsa0JBQWtCdFYsQ0FBQTtVQUN2QixPQUFPQSxDQUFBLENBQU91VixNQUFBLENBQ1YsVUFBQ3ZWLENBQUEsRUFBUU0sQ0FBQTtZQUFLLE9BQUE0VSxhQUFBLENBQUFBLGFBQUEsS0FDUGxWLENBQUEsR0FDQU0sQ0FBQSxDQUFLO1VBQUEsR0FFWixDQUFDLEVBRVQ7UUFBQTtRQUFDLElBRUtrVixnQkFBQSxHQUFnQjtZQUdsQixTQUFBQSxpQkFBbUJ4VixDQUFBO2NBQW1Cd0IsZUFBQSxPQUFBZ1UsZ0JBQUEsUUFGckJDLElBQUEsUUFBSSxHQUdqQixLQUFLQSxJQUFBLEdBQU96VixDQUNoQjtZQUFBO1lBaUZDLElBQUEwVixZQUFBLEVBN0RBQyxrREFBQSxFQVJBQyx1QkFBQTtZQXNOQSxPQWxPQXpULFlBQUEsQ0FBQXFULGdCQUFBO2NBQUF0VCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFtQjNDLENBQUE7Z0JBQ2YsTUFBTSxJQUFJb0YsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxNQUFNLElBQUl5QyxLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUFsRCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFtQjNDLENBQUE7Z0JBQ2YsTUFBTSxJQUFJb0YsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEdBQUFpVCx1QkFBQSxHQUFBWixpQkFBQSxDQUFBdkMsbUJBQUEsR0FBQXlCLElBQUEsQ0FFRCxTQUFBbFUsRUFBb0NNLENBQUE7Z0JBQVksT0FBQW1TLG1CQUFBLEdBQUFLLElBQUEsV0FBQTlTLENBQUE7a0JBQUEsaUJBQUFBLENBQUEsQ0FBQXdVLElBQUEsR0FBQXhVLENBQUEsQ0FBQXlILElBQUE7b0JBQUE7c0JBQUEsTUFDdEMsSUFBSXJDLEtBQUEsQ0FBTTtvQkFBMEI7b0JBQUE7c0JBQUEsT0FBQXBGLENBQUEsQ0FBQTBVLElBQUE7a0JBQUE7Z0JBQUEsR0FBQTFVLENBQUE7Y0FBQSxLQUM3QyxVQUFBQSxDQUFBO2dCQUFBLE9BQUE0Vix1QkFBQSxDQUFBelMsS0FBQSxPQUFBRCxTQUFBO2NBQUE7WUFBQTtjQUFBaEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxNQUFNLElBQUl5QyxLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUFsRCxHQUFBO2NBQUFTLEtBQUEsR0FBQWdULGtEQUFBLEdBQUFYLGlCQUFBLENBQUF2QyxtQkFBQSxHQUFBeUIsSUFBQSxDQUVELFNBQUFsVSxFQUNJTSxDQUFBO2dCQUFnQixPQUFBbVMsbUJBQUEsR0FBQUssSUFBQSxXQUFBOVMsQ0FBQTtrQkFBQSxpQkFBQUEsQ0FBQSxDQUFBd1UsSUFBQSxHQUFBeFUsQ0FBQSxDQUFBeUgsSUFBQTtvQkFBQTtzQkFBQSxNQUVWLElBQUlyQyxLQUFBLENBQU07b0JBQTBCO29CQUFBO3NCQUFBLE9BQUFwRixDQUFBLENBQUEwVSxJQUFBO2tCQUFBO2dCQUFBLEdBQUExVSxDQUFBO2NBQUEsS0FDN0MsVUFBQUEsQ0FBQTtnQkFBQSxPQUFBMlYsa0RBQUEsQ0FBQXhTLEtBQUEsT0FBQUQsU0FBQTtjQUFBO1lBQUE7Y0FBQWhCLEdBQUE7Y0FBQVMsS0FBQSxFQUNELFNBQUFBLENBQXVCM0MsQ0FBQSxFQUF1Qk0sQ0FBQTtnQkFDMUMsTUFBTSxJQUFJOEUsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBYTNDLENBQUEsRUFBc0JNLENBQUE7Z0JBQy9CLE1BQU0sSUFBSThFLEtBQUEsQ0FBTSwwQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUNELFNBQUFBLENBQXFCM0MsQ0FBQSxFQUFrQk0sQ0FBQTtnQkFDbkMsTUFBTSxJQUFJOEUsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBZ0IzQyxDQUFBLEVBQWFNLENBQUE7Z0JBQ3pCLE9BQU8sS0FBS21WLElBQUEsQ0FBS0ksaUJBQUEsQ0FBa0JDLG9CQUFBLENBQXFCOVYsQ0FBQSxFQUFLK1YsS0FBQSxDQUFNelYsQ0FBQSxDQUN2RTtjQUFBO1lBQUEsR0FBQztjQUFBNEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBVTNDLENBQUEsRUFBbUJNLENBQUE7Z0JBQ3pCLEtBQUttVixJQUFBLENBQUtPLFlBQUEsQ0FBYUMsRUFBQSxDQUFHLENBQUMsUUFBUWpXLENBQUEsR0FBWU0sQ0FBQSxDQUNuRDtjQUFBO1lBQUEsR0FBQztjQUFBNEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBVzNDLENBQUEsRUFBbUJNLENBQUE7Z0JBQzFCLEtBQUttVixJQUFBLENBQUtPLFlBQUEsQ0FBYUUsR0FBQSxDQUFJLENBQUMsUUFBUWxXLENBQUEsR0FBWU0sQ0FBQSxDQUNwRDtjQUFBO1lBQUEsR0FBQztjQUFBNEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBcUIzQyxDQUFBLEVBQXlCTSxDQUFBO2dCQUUxQyxNQUFNOEUsS0FBQSxDQUFNLDRDQUNoQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxPQUFPLEtBQUs4UyxJQUFBLENBQUtVLFNBQUEsQ0FBVXRJLElBQUEsRUFDL0I7Y0FBQTtZQUFBLEdBQUM7Y0FBQTNMLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBTUksT0FMQSxLQUFLOFMsSUFBQSxDQUFLVSxTQUFBLENBQVVDLFlBQUEsSUFDaEIsS0FBS1gsSUFBQSxDQUFLWSxPQUFBLElBQ1YsS0FBS1osSUFBQSxDQUFLWSxPQUFBLElBR1AsS0FBS1osSUFBQSxDQUFLVSxTQUFBLENBQVV0SSxJQUFBLEVBQy9CO2NBQUE7WUFBQSxHQUFDO2NBQUEzTCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUVJLE9BQU8sRUFDWDtjQUFBO1lBQUEsR0FBQztjQUFBVCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLElBQU0zQyxDQUFBLEdBQU8rQixNQUFBLENBQU8wSSxJQUFBLENBQUssS0FBS2dMLElBQUEsQ0FBS2EsS0FBQSxDQUFNQyxRQUFBLENBQVMsS0FBS2QsSUFBQSxDQUFLZSxRQUFBLENBQVNDLFFBQUE7Z0JBR3JFLE9BQU8sS0FBS2hCLElBQUEsQ0FBS2lCLFNBQUEsQ0FBVUMsV0FBQSxDQUFZM1csQ0FBQSxDQUMzQztjQUFBO1lBQUEsR0FBQztjQUFBa0MsR0FBQTtjQUFBUyxLQUFBLEVBQ0QsU0FBQUEsQ0FBaUMzQyxDQUFBO2dCQUM3QixNQUFNLElBQUlvRixLQUFBLENBQU0sa0JBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUFsRCxHQUFBO2NBQUFTLEtBQUEsR0FBQStTLFlBQUEsR0FBQVYsaUJBQUEsQ0FBQXZDLG1CQUFBLEdBQUF5QixJQUFBLENBRUQsU0FBQWxVLEVBQUE7Z0JBQUEsT0FBQXlTLG1CQUFBLEdBQUFLLElBQUEsV0FBQTlTLENBQUE7a0JBQUEsaUJBQUFBLENBQUEsQ0FBQXdVLElBQUEsR0FBQXhVLENBQUEsQ0FBQXlILElBQUE7b0JBQUE7c0JBQUEsTUFDVSxJQUFJckMsS0FBQSxDQUFNO29CQUFrQjtvQkFBQTtzQkFBQSxPQUFBcEYsQ0FBQSxDQUFBMFUsSUFBQTtrQkFBQTtnQkFBQSxHQUFBMVUsQ0FBQTtjQUFBLEtBQ3JDO2dCQUFBLE9BQUEwVixZQUFBLENBQUF2UyxLQUFBLE9BQUFELFNBQUE7Y0FBQTtZQUFBO2NBQUFoQixHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFtQzNDLENBQUE7Z0JBQy9CLE1BQU0sSUFBSW9GLEtBQUEsQ0FBTSxrQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksSUFBTTNDLENBQUEsR0FBYSxLQUFLeVYsSUFBQSxDQUFLYSxLQUFBLENBQU0zUyxHQUFBLENBQUksS0FBSzhSLElBQUEsQ0FBS2UsUUFBQSxDQUFTQyxRQUFBLEVBQVU7Z0JBQ3BFLE9BQXFCLFFBQWR6VyxDQUFBLElBQTJCQSxDQUFBLEdBQWEsQ0FDbkQ7Y0FBQTtZQUFBLEdBQUM7Y0FBQWtDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQTRCM0MsQ0FBQTtnQkFDeEIsS0FBS3lWLElBQUEsQ0FBS08sWUFBQSxDQUFhQyxFQUFBLENBQUdiLG9CQUFBLENBQXFCLEtBQUtLLElBQUEsQ0FBS2UsUUFBQSxDQUFTQyxRQUFBLEVBQVUsZ0JBQWdCelcsQ0FBQSxDQUNoRztjQUFBO1lBQUEsR0FBQztjQUFBa0MsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBNkIzQyxDQUFBO2dCQUN6QixLQUFLeVYsSUFBQSxDQUFLTyxZQUFBLENBQWFFLEdBQUEsQ0FBSWQsb0JBQUEsQ0FBcUIsS0FBS0ssSUFBQSxDQUFLZSxRQUFBLENBQVNDLFFBQUEsRUFBVSxnQkFBZ0J6VyxDQUFBLENBQ2pHO2NBQUE7WUFBQSxHQUFDO2NBQUFrQyxHQUFBO2NBQUFTLEtBQUEsRUFJRCxTQUFBQSxDQUNJM0MsQ0FBQSxFQUNBTSxDQUFBO2dCQUVBLElBQ3lCLFNBQXJCTixDQUFBLElBQzRCLG1CQUFyQkEsQ0FBQSxJQUNxQixhQUE1Qm1CLE9BQUEsQ0FBT25CLENBQUEsS0FDTitILEtBQUEsQ0FBTUMsT0FBQSxDQUFRaEksQ0FBQSxHQUpuQjtrQkFlQSxJQUFnQyxtQkFBckJBLENBQUEsRUFLWCxNQUFNLElBQUlvRixLQUFBLENBQU07a0JBSlosS0FBS3FRLElBQUEsQ0FBS2EsS0FBQSxDQUFNMVMsR0FBQSxDQUFJNUQsQ0FBQSxFQUFrQixTQUFTTSxDQUFBLENBSG5EO2dCQUFBLE9BYkE7a0JBTUksSUFBTUYsQ0FBQSxHQUFhMkIsTUFBQSxDQUFPMEksSUFBQSxDQUFLekssQ0FBQSxFQUFrQnVWLE1BQUEsQ0FDN0MsVUFBQ2pWLENBQUEsRUFBUUYsQ0FBQTtvQkFBSSxPQUFBOFUsYUFBQSxDQUFBQyxlQUFBLEtBQVMvVSxDQUFBLEVBQU87c0JBQUV1QyxLQUFBLEVBQU8zQyxDQUFBLENBQWlCSSxDQUFBO29CQUFBLElBQVlFLENBQUEsQ0FBTTtrQkFBQSxHQUN6RSxDQUFDO2tCQUdMLEtBQUttVixJQUFBLENBQUthLEtBQUEsQ0FBTU0sSUFBQSxDQUFLeFcsQ0FBQSxDQUV6QjtnQkFBQTtjQVFKO1lBQUEsR0FBQztjQUFBOEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBVzNDLENBQUE7Z0JBQWdFLElBQUFNLENBQUE7Z0JBQ3ZFLElBQUl5SCxLQUFBLENBQU1DLE9BQUEsQ0FBUWhJLENBQUEsR0FDZCxPQUFPc1YsaUJBQUEsQ0FDSHRWLENBQUEsQ0FDSzRILEdBQUEsQ0FBSSxVQUFBNUgsQ0FBQTtrQkFBSSxPQUFJcVYsY0FBQSxDQUFlL1UsQ0FBQSxDQUFLbVYsSUFBQSxDQUFLYSxLQUFBLENBQU1DLFFBQUEsQ0FBU3ZXLENBQUEsRUFBTTtnQkFBQSxHQUUxRHVWLE1BQUEsQ0FBOEMsVUFBQ3ZWLENBQUEsRUFBUU0sQ0FBQTtrQkFBSyxPQUFLTixDQUFBLENBQU9DLE1BQUEsQ0FBT0ssQ0FBQSxDQUFNO2dCQUFBLEdBQUU7Z0JBSXBHLElBQTJCLG1CQUFoQk4sQ0FBQSxFQUNQLE9BQU9zVixpQkFBQSxDQUFrQkQsY0FBQSxDQUFlLEtBQUtJLElBQUEsQ0FBS2EsS0FBQSxDQUFNQyxRQUFBLENBQVN2VyxDQUFBO2dCQUdyRSxTQUFvQixNQUFoQkEsQ0FBQSxFQUNBLE9BQU9zVixpQkFBQSxDQUFrQkQsY0FBQSxDQUFlLEtBQUtJLElBQUEsQ0FBS2EsS0FBQSxDQUFNQyxRQUFBLENBQVMsS0FBS2QsSUFBQSxDQUFLZSxRQUFBLENBQVNDLFFBQUE7Z0JBRXhGLE1BQU0sSUFBSXJSLEtBQUEsQ0FBTSwrREFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQWdCM0MsQ0FBQTtnQkFFWixPQUFPLEtBQUt5VixJQUFBLENBQUthLEtBQUEsQ0FBTTNTLEdBQUEsQ0FBSTNELENBQUEsRUFBTSxRQUNyQztjQUFBO1lBQUEsR0FBQztjQUFBa0MsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FDSTNDLENBQUEsRUFDQU0sQ0FBQSxFQUNBRixDQUFBO2dCQUVBLE1BQU0sSUFBSW9TLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBbUIzQyxDQUFBO2dCQUNmLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBbUIzQyxDQUFBO2dCQUNmLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxNQUFNLElBQUk2UCwyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQWlCM0MsQ0FBQTtnQkFDYixNQUFNLElBQUl3UywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQWtCM0MsQ0FBQTtnQkFDZCxNQUFNLElBQUl3UywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXVCM0MsQ0FBQTtnQkFDbkIsTUFBTSxJQUFJd1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF4QyxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUEyQjNDLENBQUE7Z0JBQ3ZCLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBMEIzQyxDQUFBO2dCQUN0QixNQUFNLElBQUl3UywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXNCM0MsQ0FBQSxFQUFjTSxDQUFBO2dCQUNoQyxNQUFNLElBQUlrUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXVCM0MsQ0FBQSxFQUFjTSxDQUFBO2dCQUNqQyxNQUFNLElBQUlrUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQTZCM0MsQ0FBQTtnQkFDekIsTUFBTSxJQUFJd1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF4QyxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFnQzNDLENBQUE7Z0JBQzVCLE9BQU9tSSxPQUFBLENBQVF5QixPQUFBLE1BQVEsRUFDM0I7Y0FBQTtZQUFBLEdBQUM7Y0FBQTFILEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQ0kzQyxDQUFBO2dCQUdBLE1BQU0sSUFBSW9GLEtBQUEsQ0FBTSwwQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXVCM0MsQ0FBQSxFQUFzQk0sQ0FBQTtnQkFDekMsTUFBTSxJQUFJa1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF4QyxHQUFBO2NBQUFTLEtBQUEsRUFDRCxTQUFBQSxDQUE4QjNDLENBQUE7Z0JBQzFCLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLFdBQUFzQyxpQ0FBQS9DLEdBQUEsRUFBQWdELElBQUE7Z0JBQUEsS0FBQWhELEdBQUEsSUFBQWlELElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUEsS0FBQXNRLGdCQUFBO1VBQUEsQ0F2T2lCO1VBNk9yQnJQLGNBQUE7VUFIcUNwRixXQUFBO1FBQS9CLFNBQVN3Uix1QkFBdUJ2UyxDQUFBO1VBRW5DLE9BQU8sSUFBSXdWLGdCQUFBLENBQWlCeFYsQ0FBQSxDQUNoQztRQUFBO1FBQUNtRyxjQUFBLHlCQUFBekYsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxXQUFBdUYsY0FBQSxLQUFBQSxjQUFBLENBQUFyRixRQUFBLENBaFJlc1Usb0JBQUEsRUFBb0IsNEpBQUFqUCxjQUFBLENBQUFyRixRQUFBLENBYTNCdVUsY0FBQSxFQUFjLHNKQUFBbFAsY0FBQSxDQUFBckYsUUFBQSxDQVlkd1UsaUJBQUEsRUFBaUIseUpBQUFuUCxjQUFBLENBQUFyRixRQUFBLENBVXBCMFUsZ0JBQUEsRUFBZ0Isd0pBQUFyUCxjQUFBLENBQUFyRixRQUFBLENBME9OeVIsc0JBQUEsRUFBc0IsK0pBQUF4UixXQUFBLHlCQUFBTCxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLFdBQUFBLFdBQUEsSUFBQUEsV0FBQSxDQUFBQyxNQUFBO01BQUE7TUFBQSxlQUFBaEIsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7UUFBQSxJQUFBSyxDQUFBO1FBQUEsU0FBQVosRUFBQUcsQ0FBQTtVQUFBLE9BQUFILENBQUEsd0JBQUF1QixNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBSCxDQUFBLENBQUFHLENBQUE7UUFBQTtRQUFBLFNBQUFGLEVBQUFFLENBQUEsRUFBQU0sQ0FBQTtVQUFBLFNBQUFGLENBQUEsTUFBQUEsQ0FBQSxHQUFBRSxDQUFBLENBQUFxQixNQUFBLEVBQUF2QixDQUFBO1lBQUEsSUFBQUssQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUE7WUFBQUssQ0FBQSxDQUFBbUIsVUFBQSxHQUFBbkIsQ0FBQSxDQUFBbUIsVUFBQSxRQUFBbkIsQ0FBQSxDQUFBb0IsWUFBQSxrQkFBQXBCLENBQUEsS0FBQUEsQ0FBQSxDQUFBcUIsUUFBQSxRQUFBQyxNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsV0FBQUYsQ0FBQSxhQUFBRSxDQUFBLEVBQUFNLENBQUE7Y0FBQSxpQkFBQVQsQ0FBQSxDQUFBRyxDQUFBLGNBQUFBLENBQUEsU0FBQUEsQ0FBQTtjQUFBLElBQUFJLENBQUEsR0FBQUosQ0FBQSxDQUFBb0IsTUFBQSxDQUFBa0IsV0FBQTtjQUFBLGVBQUFsQyxDQUFBO2dCQUFBLElBQUFLLENBQUEsR0FBQUwsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBdkMsQ0FBQTtnQkFBQSxpQkFBQUgsQ0FBQSxDQUFBWSxDQUFBLFVBQUFBLENBQUE7Z0JBQUEsVUFBQWdCLFNBQUE7Y0FBQTtjQUFBLE9BQUFZLE1BQUEsQ0FBQXJDLENBQUE7WUFBQSxFQUFBUyxDQUFBLENBQUF5QixHQUFBLGdCQUFBckMsQ0FBQSxDQUFBQyxDQUFBLElBQUFBLENBQUEsR0FBQXVDLE1BQUEsQ0FBQXZDLENBQUEsSUFBQVcsQ0FBQTtVQUFBO1VBQUEsSUFBQVgsQ0FBQTtRQUFBO1FBQUFNLENBQUEsQ0FBQUMsQ0FBQSxDQUFBQyxDQUFBO1VBQUFOLENBQUEsV0FBQUEsQ0FBQTtZQUFBLE9BQUFxRyxDQUFBO1VBQUE7UUFBQSxJQUFBckcsQ0FBQSxHQUFBSSxDQUFBLENBQUFJLEdBQUEsQ0FBQVIsQ0FBQSxJQUFBUyxDQUFBLHlCQUFBQyxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBQyxXQUFBLGNBQUFGLENBQUEsQ0FBQVQsQ0FBQSx5QkFBQVUsb0JBQUEsSUFBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBO1FBQUEsSUNyUHJDZCxDQUFBO1VBOUQ0QnFHLENBQUE7VUFBaEJDLENBQUEsR0FBZ0I7WUFBQSxTQUFBckcsRUFBQTtjQUFBLFdBQUFBLENBQUEsRUFBQU0sQ0FBQTtnQkFBQSxNQUFBTixDQUFBLFlBQUFNLENBQUEsYUFBQW1CLFNBQUE7Y0FBQSxRQUFBekIsQ0FBQTtZQUFBO1lBQUEsSUFBQU0sQ0FBQSxFQUFBRixDQUFBO1lBNkR4QixPQUFBRSxDQUFBLEdBN0R3Qk4sQ0FBQSxFQUFBSSxDQUFBO2NBQUE4QixHQUFBO2NBQUFTLEtBQUEsRUFDekIsU0FBQUEsQ0FBcUIzQyxDQUFBLEVBQWFNLENBQUE7Z0JBQzlCLElBQUlGLENBQUEsSUFBZTtrQkFDYkssQ0FBQSxHQUFPb1csUUFBQSxDQUFTQyxvQkFBQSxDQUFxQixRQUFRLE1BQU1ELFFBQUEsQ0FBU0UsZUFBQTtrQkFFNURsWCxDQUFBLEdBQWNnWCxRQUFBLENBQVNHLGFBQUEsQ0FBYztnQkFFM0MsU0FBU2xYLEVBQUE7a0JBQ0RNLENBQUEsSUFJQ1AsQ0FBQSxDQUFPOE4sVUFBQSxJQUFvQyxhQUF0QjlOLENBQUEsQ0FBTzhOLFVBQUEsSUFBaUQsZUFBdEI5TixDQUFBLENBQU84TixVQUFBLEtBQy9Edk4sQ0FBQSxJQUFlLEdBQ2ZFLENBQUEsR0FFUjtnQkFBQTtnQkFNQVQsQ0FBQSxDQUFPd0ksTUFBQSxHQUFTdkksQ0FBQSxFQUNoQkQsQ0FBQSxDQUFPNk4sa0JBQUEsR0FBcUI1TixDQUFBLEVBSTVCRCxDQUFBLENBQU8wSSxPQUFBLEdBQVU7a0JBQ1QxSSxDQUFBLENBQU9vWCxVQUFBLElBQ1BwWCxDQUFBLENBQU9vWCxVQUFBLENBQVdDLFdBQUEsQ0FBWXJYLENBQUEsR0FFbENTLENBQUEsQ0FBUyxJQUFJOEUsS0FBQSxDQUFNLCtCQUN2QjtnQkFBQSxHQUtBdkYsQ0FBQSxDQUFPc1gsR0FBQSxHQUFNblgsQ0FBQSxFQUNiSCxDQUFBLENBQU91WCxZQUFBLENBQWEsZUFBZSxvQkFDbkMzVyxDQUFBLENBQUs0VyxXQUFBLENBQVl4WCxDQUFBLENBQ3JCO2NBQUE7WUFBQSxHQUFDO2NBQUFxQyxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUF5QjNDLENBQUEsRUFBYU0sQ0FBQSxFQUFzQkYsQ0FBQTtnQkFBeUMsSUFBQUssQ0FBQTtrQkFVM0ZaLENBQUEsR0FBK0MsVUFBM0NZLENBQUEsR0FBR29XLFFBQUEsQ0FBU0Msb0JBQUEsQ0FBcUIsUUFBUSxZQUFFLE1BQUFyVyxDQUFBLEdBQUFBLENBQUEsR0FBSW9XLFFBQUEsQ0FBU0UsZUFBQTtrQkFDNURqWCxDQUFBLEdBQU8rVyxRQUFBLENBQVNHLGFBQUEsQ0FBYztnQkFFcENsWCxDQUFBLENBQUtzWCxZQUFBLENBQWEsT0FBTyxlQUN6QnRYLENBQUEsQ0FBS3NYLFlBQUEsQ0FBYSxRQUFRLGFBQzFCdFgsQ0FBQSxDQUFLMk4sZ0JBQUEsQ0FBaUIsUUFkTjtrQkFBSCxPQUFTck4sQ0FBQSxNQUFTLEVBQVU7Z0JBQUEsSUFlekNOLENBQUEsQ0FBSzJOLGdCQUFBLENBQWlCLFNBZFA7a0JBRVByTixDQUFBLENBREFFLENBQUEsUUFDUyxJQUVBLElBQUk4RSxLQUFBLENBQU0sbUNBRTNCO2dCQUFBLElBU0F2RixDQUFBLENBQUt3WCxXQUFBLENBQVl2WCxDQUFBLEdBQ2pCQSxDQUFBLENBQUtzWCxZQUFBLENBQWEsUUFBUXBYLENBQUEsQ0FDOUI7Y0FBQTtZQUFBLElBN0R5QixRQUFBRixDQUFBLENBQUFRLENBQUEsQ0FBQWlCLFNBQUEsU0FBQW5CLENBQUEsSUFBQU4sQ0FBQSxDQUFBUSxDQUFBLEVBQUFGLENBQUEsR0FBQTJCLE1BQUEsQ0FBQUMsY0FBQSxDQUFBMUIsQ0FBQTtjQUFBd0IsUUFBQTtZQUFBLElBNkR4QjlCLENBQUE7VUFBQSxDQTdEd0I7UUFBQSxDQThENUJELENBQUEseUJBQUFXLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsY0FBQWIsQ0FBQSxDQUFBZSxRQUFBLENBOURZdUYsQ0FBQSxFQUFnQiwySEFBQUQsQ0FBQSx5QkFBQTFGLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFLLFdBQUEsY0FBQXFGLENBQUEsQ0FBQXBHLENBQUE7TUFBQTtJQUFBO0lDQXpCc1gsd0JBQUEsR0FBMkIsQ0FBQztFQUdoQyxTQUFTcFcsb0JBQW9CbEIsQ0FBQTtJQUU1QixJQUFJTSxDQUFBLEdBQWVnWCx3QkFBQSxDQUF5QnRYLENBQUE7SUFDNUMsU0FBcUIsTUFBakJNLENBQUEsRUFDSCxPQUFPQSxDQUFBLENBQWFpWCxPQUFBO0lBR3JCLElBQUluWCxDQUFBLEdBQVNrWCx3QkFBQSxDQUF5QnRYLENBQUEsSUFBWTtNQUNqRHdYLEVBQUEsRUFBSXhYLENBQUE7TUFDSnlYLE1BQUEsR0FBUTtNQUNSRixPQUFBLEVBQVMsQ0FBQztJQUFBO0lBVVgsT0FOQUcsbUJBQUEsQ0FBb0IxWCxDQUFBLEVBQVVJLENBQUEsRUFBUUEsQ0FBQSxDQUFPbVgsT0FBQSxFQUFTclcsbUJBQUEsR0FHdERkLENBQUEsQ0FBT3FYLE1BQUEsSUFBUyxHQUdUclgsQ0FBQSxDQUFPbVgsT0FDZjtFQUFBO0VDeEJBclcsbUJBQUEsQ0FBb0JiLENBQUEsR0FBSSxVQUFTTCxDQUFBLEVBQVNNLENBQUE7SUFDekMsS0FBSSxJQUFJRixDQUFBLElBQU9FLENBQUEsRUFDWFksbUJBQUEsQ0FBb0JULENBQUEsQ0FBRUgsQ0FBQSxFQUFZRixDQUFBLE1BQVNjLG1CQUFBLENBQW9CVCxDQUFBLENBQUVULENBQUEsRUFBU0ksQ0FBQSxLQUM1RTJCLE1BQUEsQ0FBT0MsY0FBQSxDQUFlaEMsQ0FBQSxFQUFTSSxDQUFBLEVBQUs7TUFBRXdCLFVBQUEsR0FBWTtNQUFNK0IsR0FBQSxFQUFLckQsQ0FBQSxDQUFXRixDQUFBO0lBQUEsRUFHM0U7RUFBQSxHQ1BBYyxtQkFBQSxDQUFvQjJKLENBQUEsR0FBSTtJQUN2QixJQUEwQixtQkFBZmhFLFVBQUEsRUFBeUIsT0FBT0EsVUFBQTtJQUMzQztNQUNDLE9BQU8sUUFBUSxJQUFJN0MsUUFBQSxDQUFTLGNBQWIsRUFDaEI7SUFBQSxDQUFFLFFBQU9oRSxDQUFBO01BQ1IsSUFBc0IsbUJBQVgyWCxNQUFBLEVBQXFCLE9BQU9BLE1BQ3hDO0lBQUE7RUFDQSxDQVB1QixJQ0F4QnpXLG1CQUFBLENBQW9CVixHQUFBLEdBQU0sVUFBU1IsQ0FBQTtJQVNsQyxRQVJBQSxDQUFBLEdBQVMrQixNQUFBLENBQU9XLE1BQUEsQ0FBTzFDLENBQUEsR0FDWDRYLFFBQUEsS0FBVTVYLENBQUEsQ0FBTzRYLFFBQUEsR0FBVyxLQUN4QzdWLE1BQUEsQ0FBT0MsY0FBQSxDQUFlaEMsQ0FBQSxFQUFRLFdBQVc7TUFDeEM0QixVQUFBLEdBQVk7TUFDWmdDLEdBQUEsRUFBSyxTQUFBQSxDQUFBO1FBQ0osTUFBTSxJQUFJd0IsS0FBQSxDQUFNLDRGQUE0RnBGLENBQUEsQ0FBT3dYLEVBQUEsQ0FDcEg7TUFBQTtJQUFBLElBRU14WCxDQUNSO0VBQUEsR0NWQWtCLG1CQUFBLENBQW9CVCxDQUFBLEdBQUksVUFBU1QsQ0FBQSxFQUFLTSxDQUFBO0lBQVEsT0FBT3lCLE1BQUEsQ0FBT1IsU0FBQSxDQUFVaUosY0FBQSxDQUFlakksSUFBQSxDQUFLdkMsQ0FBQSxFQUFLTSxDQUFBLENBQU87RUFBQTtFQ0d0RyxJQUFJVyxtQkFBQSxHQUFzQkMsbUJBQUEsQ0FBb0I7QUFBQSJ9
1658
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwidCIsImQiLCJyIiwibSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiTnVtYmVyIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJfY3JlYXRlU3VwZXIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2dldFByb3RvdHlwZU9mIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiTWFwIiwiX2lzTmF0aXZlRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJfY29uc3RydWN0IiwiYmluZCIsInB1c2giLCJGdW5jdGlvbiIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwidG9TdHJpbmciLCJpbmRleE9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsIm5qIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIl9fc2lnbmF0dXJlX18iLCJBcHBsaWNhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3N1cGVyIiwibmFtZSIsIl9fcmVhY3RzdGFuZGluX19yZWdlbmVyYXRlQnlFdmFsIiwiY29kZSIsImV2YWwiLCJFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yIiwiX3N1cGVyMiIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiX3N1cGVyMyIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yMyIsIl9zdXBlcjQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNCIsIl9zdXBlcjUiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsIl9zdXBlcjYiLCJyZWFjdEhvdExvYWRlciIsInUiLCJzIiwibCIsImMiLCJmIiwiZDEiLCJtZXNzYWdlIiwidHJpbSIsInNsaWNlIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiYm9keVVzZWQiLCJQcm9taXNlIiwicmVqZWN0Iiwib25sb2FkIiwicmVzdWx0Iiwib25lcnJvciIsImVycm9yIiwicCIsIkZpbGVSZWFkZXIiLCJyZWFkQXNBcnJheUJ1ZmZlciIsInkiLCJVaW50OEFycmF5IiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJEYXRhVmlldyIsIl9ib2R5QXJyYXlCdWZmZXIiLCJoZWFkZXJzIiwidHlwZSIsInJlc29sdmUiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImciLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiZGVsZXRlIiwiaGFzT3duUHJvcGVydHkiLCJrZXlzIiwidmFsdWVzIiwiZW50cmllcyIsImgiLCJfIiwiYm9keSIsInVybCIsImNyZWRlbnRpYWxzIiwibWV0aG9kIiwibW9kZSIsInNpZ25hbCIsInRvVXBwZXJDYXNlIiwicmVmZXJyZXIiLCJjYWNoZSIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsInNwbGl0IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidiIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwidyIsIkRPTUV4Y2VwdGlvbiIsInN0YWNrIiwiRSIsImFib3J0ZWQiLCJYTUxIdHRwUmVxdWVzdCIsImFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic3Vic3RyIiwicmVzcG9uc2VVUkwiLCJyZXNwb25zZSIsInJlc3BvbnNlVGV4dCIsInNldFRpbWVvdXQiLCJvbnRpbWVvdXQiLCJvbmFib3J0Iiwib3BlbiIsImhyZWYiLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZXNwb25zZVR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsInBvbHlmaWxsIiwiZmV0Y2giLCJIZWFkZXJzIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiQyIsImsiLCJQIiwiQSIsIk8iLCJMIiwiUyIsIkIiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJUIiwiaiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSSIsIkYiLCJNIiwiVSIsIkNGIiwia2Vmb3Jtc1VybCIsIkQiLCJlbmNvZGVVUklDb21wb25lbnQiLCJIIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJOIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwicmVzb3VyY2Vab25lIiwic3R5bGVTaGVldCIsInNjcmlwdCIsIlIiLCJwdWJsaWNGb3JtIiwiY2F0Y2giLCJWIiwicSIsIloiLCJrb250dXJEb21haW5zIiwiYXV0aG9yaXplZCIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsIkF1dGhvcml6YXRpb24iLCJjYXVsZHJvbkFwaVVybCIsImlzVGVzdFNlcnZlciIsInJlbmRlckNhY2hpbmdGb3JJRTgiLCJub3JtYWxpemF0aW9uT25TZXJ2ZXIiLCJub3JtYXRpdmVVcmwiLCJmZWVkYmFja0VuYWJsZWQiLCJpc0Rpc2FibGVkQ2xlYW5Gb3JtIiwiaXNEaXNhYmxlZENsb3NlQnV0dG9uIiwiaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiIsInRoZW1lIiwidGVtcGxhdGVzQXBpIiwicmVuZGVyRm9ybSIsIksiLCJXIiwic3RhcnQiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwicGFyc2VJbnQiLCJjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIiwiX0NvbW1vbl9FcnJvcnNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJhcmciLCJ3cmFwIiwiX2ludm9rZSIsIl9fYXdhaXQiLCJkZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIm93bktleXMiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJtYXBDaHVua1ZhbHVlcyIsInJlZHVjZUNodW5rVmFsdWVzIiwicmVkdWNlIiwiTGVnYWN5UHVibGljRm9ybSIsImZvcm0iLCJfcmVsb2FkSW5uZXIiLCJfSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCJ2YXIgZ2xvYmFsID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpXG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGdsb2JhbCxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGdsb2JhbCAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZ2xvYmFsICYmXG4gICAgJ0Jsb2InIGluIGdsb2JhbCAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZ2xvYmFsLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnbG9iYWxcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbFxuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGdsb2JhbC5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPyBnbG9iYWwubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXIgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykuaW5kZXhPZignYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnbG9iYWwuZmV0Y2gpIHtcbiAgZ2xvYmFsLmZldGNoID0gZmV0Y2hcbiAgZ2xvYmFsLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGdsb2JhbC5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnbG9iYWwuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcbmltcG9ydCB7IEFsbEljb25OYW1lcyB9IGZyb20gXCJyZWFjdC11aVwiO1xuXG5pbXBvcnQgeyBFcnJvckZpcnN0Q2FsbGJhY2ssIHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB7IExvYWRJbnRvRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9Mb2FkSW50b0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50IH0gZnJvbSBcIi4uL1R5cGVzL0lLZVdlYlRlbXBsYXRlc0FwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnREcmFmdEluZm9SZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0NsaWVudERyYWZ0SW5mb1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBnZXRDbGllbnREcmFmdEluZm9VcmwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmxcIjtcbmltcG9ydCB7IEFVT09wdGlvbnMgfSBmcm9tIFwiLi4vVHlwZXMvQVVPT3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRFdmVudHNTdGF0aWMgfSBmcm9tIFwiLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL0xheW91dEV2ZW50cy9MYXlvdXRFdmVudHNcIjtcblxuaW1wb3J0IHsgY2xpZW50U2V0dGluZ3MgfSBmcm9tIFwiLi9DbGllbnRTZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlTGVnYWN5UHVibGljRm9ybSB9IGZyb20gXCIuL0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybVwiO1xuXG50eXBlIEZvcm1Db250YWluZXIgPSBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxudHlwZSBFbmdpbmVFbnRyeVBvaW50ID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25EZXNjcmlwdGlvbiB7XG4gICAgaWNvbjogQWxsSWNvbk5hbWVzO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgICBoaW50PzogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGlkPzogc3RyaW5nO1xuICAgIHdlaWdodDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVuZGVyRm9ybVNldHRpbmdzIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBlbmdpbmVWZXJzaW9uPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZW5kZXJGb3JtOiB1bmRlZmluZWQgfCBFbmdpbmVFbnRyeVBvaW50O1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xufVxuXG50eXBlIFN0YXJ0Rm9ybUZ1bmMgPSAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncykgPT4gUHJvbWlzZTxJRm9ybT47XG5cbmludGVyZmFjZSBDYW5keUdsb2JhbEluamVjdGVkVmFyIHtcbiAgICBzdGFydDogKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLCBjYWxsYmFjaz86IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4pID0+IHZvaWQ7XG4gICAga2Vmb3Jtc1VybD86IHN0cmluZztcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBib29sZWFuO1xuICAgIGVudHJ5UG9pbnQ6IHsgW2tleTogc3RyaW5nXTogU3RhcnRGb3JtRnVuYyB9O1xuICAgIGxvYWRFcnJvcj86IHVua25vd247XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICAgICAgaW50ZXJmYWNlIEdsb2JhbCB7XG4gICAgICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IFdpbmRvdztcblxuZnVuY3Rpb24gZGVmYXVsdENhbGxiYWNrKCk6IHZvaWQge1xuICAgIC8qIGVtcHR5ICovXG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gdXJsKHJlbGF0aXZlVXJsOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2xvYmFsLkNGLmtlZm9ybXNVcmwgfHwgXCJcIjtcblxuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3JlbGF0aXZlVXJsfWAucmVwbGFjZSgvKFteOl0pXFwvezIsfS9nLCBcIiQxL1wiKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogdW5kZWZpbmVkIHwgc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHBhcmFtVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBxdWVyeVBhcnRzLnB1c2goYCR7cGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnlQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCI/XCIgKyBxdWVyeVBhcnRzLmpvaW4oXCImXCIpO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWQoZG9tYWluczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oPzoke2RvbWFpbnMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiW2EtejAtOS0uX10rXCIpfSkkYCkudGVzdChcbiAgICAgICAgZ2xvYmFsLmxvY2F0aW9uLmhvc3RcbiAgICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoZ2xvYmFsLmxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL14oXFw/fCN8JikvLCBcIlwiKVxuICAgICAgICAgICAgLnNwbGl0KFwiJlwiKVxuICAgICAgICAgICAgLm1hcChwYXJhbSA9PiBwYXJhbS5yZXBsYWNlKC9cXCsvZywgXCIgXCIpLnNwbGl0KFwiPVwiKS5tYXAoZGVjb2RlVVJJQ29tcG9uZW50KSlcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp0cmlwbGUtZXF1YWxzXG4gICAgICAgICAgICAuZmluZCgoW2tleV0pID0+IGtleSA9PSBuYW1lKSB8fCBbXSlbMV1cbiAgICApO1xufVxuXG50eXBlIFRhc2sgPSAoY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiBydW5QYXJhbGxlbCh0YXNrczogVGFza1tdLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgY29tcGxldGVkID0gMDtcblxuICAgIHRhc2tzLmZvckVhY2godGFzayA9PiB7XG4gICAgICAgIHRhc2soZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gdGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkID0gdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbXBsZXRlZCArPSAxO1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gdGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmludGVyZmFjZSBTdGFydEZvcm1TZXR0aW5nIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBlbmdpbmVWZXJzaW9uPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBsZWZ0TnVtYmVycyA9IGxlZnRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0TnVtYmVycyA9IHJpZ2h0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGxlZnROdW1iZXJzWzBdID8/IDApID4gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSB8fFxuICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1swXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzFdID8/IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMV0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0TnVtYmVyc1syXSA/PyAwKSA+PSAocmlnaHROdW1iZXJzWzJdID8/IDApKSkpXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvYWRGb3JtKHNldHRpbmdzOiBTdGFydEZvcm1TZXR0aW5nLCBjYWxsYmFjazogKGVycm9yPzogbnVsbCB8IHVuZGVmaW5lZCB8IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgeyBnZnYsIGVuZ2luZVZlcnNpb24sIHJlc291cmNlc1ZlcnNpb24gfSA9IHNldHRpbmdzO1xuXG4gICAgaWYgKGdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc05lZWRFbmdpbmUgPSBlbmdpbmVWZXJzaW9uICYmICFnbG9iYWxbZW5naW5lVmVyc2lvbl07XG4gICAgY29uc3Qgbm9TdHlsZXNGb3JHZnYgPSBmYWxzZTsgLy8gZW5naW5lVmVyc2lvbiAhPSB1bmRlZmluZWQgJiYgKGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChlbmdpbmVWZXJzaW9uLCBcIjQuMjE0LjBcIikgfHwgZW5naW5lVmVyc2lvbiA9PT0gXCJsb2NhbFwiKTtcbiAgICBjb25zdCBuZWVkTG9hZFN0eWxlc0ZvckdmdiA9ICFub1N0eWxlc0ZvckdmdjtcbiAgICBjb25zdCBtaW4gPSBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJkZWJ1Z1wiKSA9PT0gXCJ0cnVlXCIgPyBcIlwiIDogXCIubWluXCI7XG4gICAgY29uc3QgdGFza3M6IFRhc2tbXSA9IFtdO1xuXG4gICAgY29uc3QgcGFyYW1zID0geyB2OiByZXNvdXJjZXNWZXJzaW9uLCByZXNvdXJjZVpvbmU6IHNldHRpbmdzLnJlc291cmNlWm9uZSB9O1xuICAgIGlmIChuZWVkTG9hZFN0eWxlc0Zvckdmdikge1xuICAgICAgICB0YXNrcy5wdXNoKGNiID0+XG4gICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2dmdn0ke21pbn0uY3NzYCwgcGFyYW1zKSksIHRydWUsIGNiKVxuICAgICAgICApO1xuICAgIH1cbiAgICB0YXNrcy5wdXNoKGNiID0+IExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7Z2Z2fSR7bWlufS5qc2AsIHBhcmFtcykpLCBjYikpO1xuXG4gICAgaWYgKGlzTmVlZEVuZ2luZSkge1xuICAgICAgICB0YXNrcy5wdXNoKFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5jc3NgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zY3JpcHQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uanNgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcnVuUGFyYWxsZWwodGFza3MsIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRm9ybShcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT5cbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1FbnRyeVBvaW50ID1cbiAgICAgICAgZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZXh0ZW5kZWRTZXR0aW5ncy5nZnZdID8/IHJlamVjdChgRm9ybSBlbnRyeSBwb2ludCAke2V4dGVuZGVkU2V0dGluZ3MuZ2Z2fSBub3QgZm91bmQuYCk7XG4gICAgZm9ybUVudHJ5UG9pbnQocGFnZUNvbnRlbnQsIGV4dGVuZGVkU2V0dGluZ3MpXG4gICAgICAgIC50aGVuKGZvcm0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcHVibGljRm9ybSA9IGZvcm0ucHVibGljRm9ybSB8fCBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm0pO1xuXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBwdWJsaWNGb3JtKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydEZvcm1PcHRpb25zIGV4dGVuZHMgUGFydGlhbDxBVU9PcHRpb25zPiB7XG4gICAgbnM6IHN0cmluZztcbiAgICBkcmFmdElkOiBzdHJpbmc7XG4gICAgZ2Z2Pzogc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgZmVlZGJhY2tFbmFibGVkPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbGVhbkZvcm0/OiBib29sZWFuO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICBhdXRoZW50aWNhdGlvbj86IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIgfCB7IGF1dGhTaWQ6IHN0cmluZyB9O1xuICAgIGZldGNoPzogdHlwZW9mIGZldGNoO1xuICAgIG1vZGVsPzogeyBbcGF0aDogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIHBhbmVsQWN0aW9ucz86IEFjdGlvbkRlc2NyaXB0aW9uW107XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLi4uY2xpZW50RHJhZnRJbmZvLFxuICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbGVhbkZvcm06IG9wdGlvbnMuaXNEaXNhYmxlZENsZWFuRm9ybSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxvYWRGb3JtKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBleHRlbmRlZFNldHRpbmdzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5lbmdpbmVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlc1ZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAgcmVzb3VyY2VzVmVyc2lvbjogXCJ7cmVzb3VyY2VzVmVyc2lvbn1cIixcbiAgICBrb250dXJEb21haW5zOiBcIntrb250dXJEb21haW5zfVwiLFxufTtcbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0FwaSwgRmlhc0NsaWVudEluaXRPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcblxuaW1wb3J0IHsgSUxlZ2FjeUZvcm0gfSBmcm9tIFwiLi9JTGVnYWN5Rm9ybVwiO1xuXG5leHBvcnQgdHlwZSBNb2RlbEV2ZW50UGF0aCA9XG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl1cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxDaGFuZ2VFdmVudFBhdGgocGF0aD86IHN0cmluZywgZmllbGROYW1lPzogc3RyaW5nKTogTW9kZWxFdmVudFBhdGgge1xuICAgIGlmIChmaWVsZE5hbWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IGJlIGRlZmluZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGgsIGZpZWxkTmFtZV07XG4gICAgfVxuICAgIGlmIChwYXRoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aF07XG4gICAgfVxuICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXTtcbn1cblxuZnVuY3Rpb24gbWFwQ2h1bmtWYWx1ZXMoY2h1bms6IFJlYWRvbmx5TW9kZWxDaHVuayk6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjaHVuaylcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IGNodW5rW3BhdGhdICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaHVua1twYXRoXSwgXCJ2YWx1ZVwiKSlcbiAgICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNodW5rW3BhdGhdO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBbcGF0aF06IHJlc3VsdC52YWx1ZSB9O1xuICAgICAgICB9KTtcbn1cblxuZnVuY3Rpb24gcmVkdWNlQ2h1bmtWYWx1ZXMoY2h1bmtzOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+KTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICByZXR1cm4gY2h1bmtzLnJlZHVjZShcbiAgICAgICAgKHJlc3VsdCwgY2h1bmspID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICAuLi5jaHVuayxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgKTtcbn1cblxuY2xhc3MgTGVnYWN5UHVibGljRm9ybSBpbXBsZW1lbnRzIElQdWJsaWNGb3JtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm06IElMZWdhY3lGb3JtO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZvcm06IElMZWdhY3lGb3JtKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XG4gICAgfVxuXG4gICAgcHVibGljIGJhdGNoVXBkYXRlKHVwZGF0ZVByb2M6ICh1cGRhdGVBY2Nlc3NvcjogSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yKSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5DaGVjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBQYXJ0aWFsPFNlcnZlckVycm9yTG9nPik6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIF9fSU5URVJOQUxfX2ltcG9ydEZyb21FbXBsb3llZVNlcnZpY2UoKTogUHJvbWlzZTxFbXBsb3llZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MoXG4gICAgICAgIHBhdGhTcGVjOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPChlbXBsb3llZTogRW1wbG95ZWUpID0+IGJvb2xlYW4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llZXMoZW1wbG95ZWVzOiBFbXBsb3llZVtdLCBvcHRpb25zPzogeyBzY2VuYXJpbz86IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludChwcmludFR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgcnVuTWFzc0FjdGlvbihhY3Rpb25JZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogTWFzc0FjdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5R0lkKGdJZDogc3RyaW5nLCBmaWx0ZXI/OiBEaWdlc3RRdWVyeUZpbHRlcik6IFByb21pc2U8UGlja2xpc3RRdWVyeVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ucGlja2xpc3RzUHJvdmlkZXIuZ2V0RGlnZXN0QXBpUGlja2xpc3QoZ0lkKS5xdWVyeShmaWx0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24oW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBsaXN0ZW5lcjogdW5rbm93bik6IFN1YnNjcmlwdGlvbiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIHRocm93IEVycm9yKFwiZm9ybS5vbk1vZGVsQ2hhbmdlKCkgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc3RvcEF1dG9zZW5kKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udW5tb3VudCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnVubW91bnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VG91clN0ZXBzKCk6IFN0ZXBbXSB7XG4gICAgICAgIC8vIEZvciBvbGQga2V3ZWJcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSDQrdGC0L4g0LIg0YHRgtCw0YDRi9GFINC00LLQuNC20LrQsNGFINGC0YPRgiDRgtCw0LrQvtC5INCy0YvQt9C+0LJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWRhdG9yLnZhbGlkYXRlQWxsKGtleXMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0QWRkaXRpb25hbEVtcGxveWVlSW5mbyhmaWx0ZXJzOiBHZXRFbXBsb3llZUxpc3RSZXF1ZXN0KTogUHJvbWlzZTxFbXBsb3llZUxpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRJbm5lcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXb3JraW5nRXZlbnRzRm9yRW1wbG95ZWUoZmlsdGVyczogR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QpOiBQcm9taXNlPFdvcmtpbmdFdmVudExpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVycm9yQ291bnQgPSB0aGlzLmZvcm0ubW9kZWwuZ2V0KHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKTtcbiAgICAgICAgcmV0dXJuIGVycm9yQ291bnQgIT0gdW5kZWZpbmVkICYmIGVycm9yQ291bnQgPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmZFcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYobW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogc3RyaW5nLCB2YWx1ZTogTW9kZWxWYWx1ZSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQoXG4gICAgICAgIHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZyB8IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9LFxuICAgICAgICB2YWx1ZT86IE1vZGVsVmFsdWVcbiAgICApOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhdGhPck1vZGVsQ2h1bmsgIT09IG51bGwgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rICE9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkocGF0aE9yTW9kZWxDaHVuaylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5lckNodW5rID0gT2JqZWN0LmtleXMocGF0aE9yTW9kZWxDaHVuaykucmVkdWNlPFJlYWRvbmx5TW9kZWxDaHVuaz4oXG4gICAgICAgICAgICAgICAgKHJlc3VsdCwgcGF0aCkgPT4gKHsgW3BhdGhdOiB7IHZhbHVlOiBwYXRoT3JNb2RlbENodW5rW3BhdGhdIH0sIC4uLnJlc3VsdCB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLmZpbGwoaW5uZXJDaHVuayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5zZXQocGF0aE9yTW9kZWxDaHVuaywgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLnNldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3Igb2JqZWN0IHdpdGggcGF0aC12YWx1ZSBwYWlyc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHBhdGhPckFycmF5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGhPckFycmF5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKFxuICAgICAgICAgICAgICAgIHBhdGhPckFycmF5XG4gICAgICAgICAgICAgICAgICAgIC5tYXAocGF0aCA9PiBtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aCkpKVxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2U8QXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pj4oKHJlc3VsdCwgYXJyYXkpID0+IHJlc3VsdC5jb25jYXQoYXJyYXkpLCBbXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPckFycmF5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGhPckFycmF5KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhdGhPckFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uZ2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBhcnJheSBvZiBwYXRoc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUocGF0aDogc3RyaW5nKTogTW9kZWxWYWx1ZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLm1vZGVsLmdldChwYXRoLCBcInZhbHVlXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5U3VidHJlZShcbiAgICAgICAgc291cmNlQmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgdGFyZ2V0QmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgZG9Ob3RDb3B5UGF0aHM/OiBzdHJpbmdbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlsZHJlbihwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHV1aWRHZW5lcmF0ZSgpOiBzdHJpbmcge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93TW9kYWwob3B0aW9uczogTW9kYWxPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNlY3Rpb24ob3B0aW9uczogSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxJbml0U2VjdGlvbihvcHRpb25zOiBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUZpYXNBcGlDbGllbnQob3B0aW9uczogRmlhc0NsaWVudEluaXRPcHRpb25zKTogRmlhc0FwaSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5FbXBsb3llZUVkaXRvcihlbXBsb3llZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2UocGF0aDogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlcyhwYXRoOiBzdHJpbmcsIGluc3RhbmNlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPbkNvbnRyb2xJZkV4aXN0KHBhdGg6IEJpbmRpbmdQYXRoKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dG9GaWVsZHNUb0F1dG9WYWx1ZShwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5zdXJlSW5zdGFuY2VGdWxseUxvYWRlZChcbiAgICAgICAgYmluZGluZ1BhdGg6IHN0cmluZyB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIC4uLmluc3RhbmNlczogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzQnlSdWxlcyhydWxlczogSW5zdGFuY2VzRGVsZXRpbmdSdWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRG5wKCk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9DQyxDQUFBO1FBQTlCLFNBQVNDLEVBQXNCQyxDQUFBO1VBR2xDLE9BQU8sU0FBUEMsTUFBQSxDQUFnQkQsQ0FBQSxDQUFRRSxFQUFBLEVBQUUsWUFBQUQsTUFBQSxDQUFXRCxDQUFBLENBQVFHLE9BQUEsRUFBTyxxQkFDeEQ7UUFBQTtRQUFBQyxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBQyxDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBUixDQUFBO1VBQUE7UUFBQSxJQUFBQyxDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFTLENBQUEseUJBQUFDLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsY0FBQUYsQ0FBQSxDQUFBVCxDQUFBLHlCQUFBVSxvQkFBQSxJQUFBQSxvQkFBQSxDQUFBRSxPQUFBLENBQUFDLFNBQUEsR0FBQ2hCLENBQUEseUJBQUFhLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsY0FBQWYsQ0FBQSxDQUFBaUIsUUFBQSxDQUplZixDQUFBLEVBQXFCLHdKQUFBRCxDQUFBLHlCQUFBWSxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUFqQixDQUFBLENBQUFFLENBQUE7TUFBQTtNQUFBLGVBQUFnQixNQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBO1FBQUEsU0FBQUMsUUFBQW5CLENBQUE7VUFBQSxPQUFBbUIsT0FBQSx3QkFBQUMsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFyQixDQUFBO1lBQUEsY0FBQUEsQ0FBQTtVQUFBLGNBQUFBLENBQUE7WUFBQSxPQUFBQSxDQUFBLHlCQUFBb0IsTUFBQSxJQUFBcEIsQ0FBQSxDQUFBc0IsV0FBQSxLQUFBRixNQUFBLElBQUFwQixDQUFBLEtBQUFvQixNQUFBLENBQUFHLFNBQUEscUJBQUF2QixDQUFBO1VBQUEsR0FBQW1CLE9BQUEsQ0FBQW5CLENBQUE7UUFBQTtRQUFBLElBQUFXLFdBQUE7UUFBQSxTQUFBYSxnQkFBQXhCLENBQUEsRUFBQU0sQ0FBQTtVQUFBLE1BQUFOLENBQUEsWUFBQU0sQ0FBQSxhQUFBbUIsU0FBQTtRQUFBO1FBQUEsU0FBQUMsa0JBQUExQixDQUFBLEVBQUFNLENBQUE7VUFBQSxTQUFBRixDQUFBLE1BQUFBLENBQUEsR0FBQUUsQ0FBQSxDQUFBcUIsTUFBQSxFQUFBdkIsQ0FBQTtZQUFBLElBQUFLLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBO1lBQUFLLENBQUEsQ0FBQW1CLFVBQUEsR0FBQW5CLENBQUEsQ0FBQW1CLFVBQUEsUUFBQW5CLENBQUEsQ0FBQW9CLFlBQUEsa0JBQUFwQixDQUFBLEtBQUFBLENBQUEsQ0FBQXFCLFFBQUEsUUFBQUMsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBLEVBQUFpQyxjQUFBLENBQUF4QixDQUFBLENBQUF5QixHQUFBLEdBQUF6QixDQUFBO1VBQUE7UUFBQTtRQUFBLFNBQUEwQixhQUFBbkMsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxPQUFBRSxDQUFBLElBQUFvQixpQkFBQSxDQUFBMUIsQ0FBQSxDQUFBdUIsU0FBQSxFQUFBakIsQ0FBQSxHQUFBRixDQUFBLElBQUFzQixpQkFBQSxDQUFBMUIsQ0FBQSxFQUFBSSxDQUFBLEdBQUEyQixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUE7WUFBQThCLFFBQUE7VUFBQSxJQUFBOUIsQ0FBQTtRQUFBO1FBQUEsU0FBQWlDLGVBQUFqQyxDQUFBO1VBQUEsSUFBQU0sQ0FBQSxHQUFBOEIsWUFBQSxDQUFBcEMsQ0FBQTtVQUFBLG9CQUFBbUIsT0FBQSxDQUFBYixDQUFBLElBQUFBLENBQUEsR0FBQStCLE1BQUEsQ0FBQS9CLENBQUE7UUFBQTtRQUFBLFNBQUE4QixhQUFBcEMsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsaUJBQUFhLE9BQUEsQ0FBQW5CLENBQUEsY0FBQUEsQ0FBQSxTQUFBQSxDQUFBO1VBQUEsSUFBQUksQ0FBQSxHQUFBSixDQUFBLENBQUFvQixNQUFBLENBQUFrQixXQUFBO1VBQUEsZUFBQWxDLENBQUE7WUFBQSxJQUFBSyxDQUFBLEdBQUFMLENBQUEsQ0FBQW1DLElBQUEsQ0FBQXZDLENBQUEsRUFBQU0sQ0FBQTtZQUFBLGlCQUFBYSxPQUFBLENBQUFWLENBQUEsVUFBQUEsQ0FBQTtZQUFBLFVBQUFnQixTQUFBO1VBQUE7VUFBQSxxQkFBQW5CLENBQUEsR0FBQStCLE1BQUEsR0FBQUcsTUFBQSxFQUFBeEMsQ0FBQTtRQUFBO1FBQUEsU0FBQXlDLFVBQUF6QyxDQUFBLEVBQUFNLENBQUE7VUFBQSx5QkFBQUEsQ0FBQSxhQUFBQSxDQUFBLFlBQUFtQixTQUFBO1VBQUF6QixDQUFBLENBQUF1QixTQUFBLEdBQUFRLE1BQUEsQ0FBQVcsTUFBQSxDQUFBcEMsQ0FBQSxJQUFBQSxDQUFBLENBQUFpQixTQUFBO1lBQUFELFdBQUE7Y0FBQXFCLEtBQUEsRUFBQTNDLENBQUE7Y0FBQThCLFFBQUE7Y0FBQUQsWUFBQTtZQUFBO1VBQUEsSUFBQUUsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBO1lBQUE4QixRQUFBO1VBQUEsSUFBQXhCLENBQUEsSUFBQXNDLGVBQUEsQ0FBQTVDLENBQUEsRUFBQU0sQ0FBQTtRQUFBO1FBQUEsU0FBQXVDLGFBQUE3QyxDQUFBO1VBQUEsSUFBQU0sQ0FBQSxHQUFBd0MseUJBQUE7VUFBQTtZQUFBLElBQUExQyxDQUFBO2NBQUFLLENBQUEsR0FBQXNDLGVBQUEsQ0FBQS9DLENBQUE7WUFBQSxJQUFBTSxDQUFBO2NBQUEsSUFBQVQsQ0FBQSxHQUFBa0QsZUFBQSxPQUFBekIsV0FBQTtjQUFBbEIsQ0FBQSxHQUFBNEMsT0FBQSxDQUFBQyxTQUFBLENBQUF4QyxDQUFBLEVBQUF5QyxTQUFBLEVBQUFyRCxDQUFBO1lBQUEsT0FBQU8sQ0FBQSxHQUFBSyxDQUFBLENBQUEwQyxLQUFBLE9BQUFELFNBQUE7WUFBQSxPQUFBRSwwQkFBQSxPQUFBaEQsQ0FBQTtVQUFBO1FBQUE7UUFBQSxTQUFBZ0QsMkJBQUFwRCxDQUFBLEVBQUFNLENBQUE7VUFBQSxJQUFBQSxDQUFBLGtCQUFBYSxPQUFBLENBQUFiLENBQUEsMEJBQUFBLENBQUEsVUFBQUEsQ0FBQTtVQUFBLGVBQUFBLENBQUEsWUFBQW1CLFNBQUE7VUFBQSxPQUFBNEIsc0JBQUEsQ0FBQXJELENBQUE7UUFBQTtRQUFBLFNBQUFxRCx1QkFBQXJELENBQUE7VUFBQSxlQUFBQSxDQUFBLFlBQUFzRCxjQUFBO1VBQUEsT0FBQXRELENBQUE7UUFBQTtRQUFBLFNBQUF1RCxpQkFBQXZELENBQUE7VUFBQSxJQUFBTSxDQUFBLHdCQUFBa0QsR0FBQSxPQUFBQSxHQUFBO1VBQUEsT0FBQUQsZ0JBQUEsWUFBQUEsQ0FBQXZELENBQUE7WUFBQSxhQUFBQSxDQUFBLEtBQUF5RCxpQkFBQSxDQUFBekQsQ0FBQSxVQUFBQSxDQUFBO1lBQUEseUJBQUFBLENBQUEsWUFBQXlCLFNBQUE7WUFBQSxlQUFBbkIsQ0FBQTtjQUFBLElBQUFBLENBQUEsQ0FBQW9ELEdBQUEsQ0FBQTFELENBQUEsVUFBQU0sQ0FBQSxDQUFBcUQsR0FBQSxDQUFBM0QsQ0FBQTtjQUFBTSxDQUFBLENBQUFzRCxHQUFBLENBQUE1RCxDQUFBLEVBQUFJLENBQUE7WUFBQTtZQUFBLFNBQUFBLEVBQUE7Y0FBQSxPQUFBeUQsVUFBQSxDQUFBN0QsQ0FBQSxFQUFBa0QsU0FBQSxFQUFBSCxlQUFBLE9BQUF6QixXQUFBO1lBQUE7WUFBQSxPQUFBbEIsQ0FBQSxDQUFBbUIsU0FBQSxHQUFBUSxNQUFBLENBQUFXLE1BQUEsQ0FBQTFDLENBQUEsQ0FBQXVCLFNBQUE7Y0FBQUQsV0FBQTtnQkFBQXFCLEtBQUEsRUFBQXZDLENBQUE7Z0JBQUF3QixVQUFBO2dCQUFBRSxRQUFBO2dCQUFBRCxZQUFBO2NBQUE7WUFBQSxJQUFBZSxlQUFBLENBQUF4QyxDQUFBLEVBQUFKLENBQUE7VUFBQSxHQUFBdUQsZ0JBQUEsQ0FBQXZELENBQUE7UUFBQTtRQUFBLFNBQUE2RCxXQUFBN0QsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxPQUFBeUQsVUFBQSxHQUFBZix5QkFBQSxLQUFBRSxPQUFBLENBQUFDLFNBQUEsQ0FBQWEsSUFBQSxlQUFBOUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7WUFBQSxJQUFBSyxDQUFBO1lBQUFBLENBQUEsQ0FBQXNELElBQUEsQ0FBQVosS0FBQSxDQUFBMUMsQ0FBQSxFQUFBSCxDQUFBO1lBQUEsSUFBQVQsQ0FBQSxRQUFBbUUsUUFBQSxDQUFBRixJQUFBLENBQUFYLEtBQUEsQ0FBQW5ELENBQUEsRUFBQVMsQ0FBQTtZQUFBLE9BQUFMLENBQUEsSUFBQXdDLGVBQUEsQ0FBQS9DLENBQUEsRUFBQU8sQ0FBQSxDQUFBbUIsU0FBQSxHQUFBMUIsQ0FBQTtVQUFBLEdBQUFnRSxVQUFBLENBQUFWLEtBQUEsT0FBQUQsU0FBQTtRQUFBO1FBQUEsU0FBQUosMEJBQUE7VUFBQSwwQkFBQUUsT0FBQSxLQUFBQSxPQUFBLENBQUFDLFNBQUE7VUFBQSxJQUFBRCxPQUFBLENBQUFDLFNBQUEsQ0FBQWdCLElBQUE7VUFBQSx5QkFBQUMsS0FBQTtVQUFBO1lBQUEsT0FBQUMsT0FBQSxDQUFBNUMsU0FBQSxDQUFBNkMsT0FBQSxDQUFBN0IsSUFBQSxDQUFBUyxPQUFBLENBQUFDLFNBQUEsQ0FBQWtCLE9BQUE7VUFBQSxTQUFBbkUsQ0FBQTtZQUFBO1VBQUE7UUFBQTtRQUFBLFNBQUF5RCxrQkFBQXpELENBQUE7VUFBQSxjQUFBZ0UsUUFBQSxDQUFBSyxRQUFBLENBQUE5QixJQUFBLENBQUF2QyxDQUFBLEVBQUFzRSxPQUFBO1FBQUE7UUFBQSxTQUFBMUIsZ0JBQUE1QyxDQUFBLEVBQUFNLENBQUE7VUFBQSxPQUFBc0MsZUFBQSxHQUFBYixNQUFBLENBQUF3QyxjQUFBLEdBQUF4QyxNQUFBLENBQUF3QyxjQUFBLENBQUFULElBQUEsZUFBQTlELENBQUEsRUFBQU0sQ0FBQTtZQUFBLE9BQUFOLENBQUEsQ0FBQXdFLFNBQUEsR0FBQWxFLENBQUEsRUFBQU4sQ0FBQTtVQUFBLEdBQUE0QyxlQUFBLENBQUE1QyxDQUFBLEVBQUFNLENBQUE7UUFBQTtRQUFBLFNBQUF5QyxnQkFBQS9DLENBQUE7VUFBQSxPQUFBK0MsZUFBQSxHQUFBaEIsTUFBQSxDQUFBd0MsY0FBQSxHQUFBeEMsTUFBQSxDQUFBMEMsY0FBQSxDQUFBWCxJQUFBLGVBQUE5RCxDQUFBO1lBQUEsT0FBQUEsQ0FBQSxDQUFBd0UsU0FBQSxJQUFBekMsTUFBQSxDQUFBMEMsY0FBQSxDQUFBekUsQ0FBQTtVQUFBLEdBQUErQyxlQUFBLENBQUEvQyxDQUFBO1FBQUE7UUFBQWtCLG1CQUFBLENBQUFiLENBQUEsQ0FBQVksbUJBQUE7VUFBQXlELEVBQUEsV0FBQUEsQ0FBQTtZQUFBLE9BQUFDLG1CQUFBO1VBQUE7UUFBQSxJQUFBM0QsTUFBQSxHQUFBRSxtQkFBQSxDQUFBVixHQUFBLENBQUFRLE1BQUEsR0FBQUwsV0FBQSx5QkFBQUQsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLElBQUFBLFdBQUEsQ0FBQUssTUFBQTtRQUFBLElBQUE0RCxhQUFBLHlCQUFBbEUsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBLGFBQUFiLENBQUE7WUFBQSxPQUFBQSxDQUFBO1VBQUE7VUNGeEI2RSxnQkFBQSxHQUFnQixVQUFBQyxNQUFBO1lBQUFyQyxTQUFBLENBQUFvQyxnQkFBQSxFQUFBQyxNQUFBO1lBQUEsSUFBQUMsTUFBQSxHQUFBbEMsWUFBQSxDQUFBZ0MsZ0JBQUE7WUFDekIsU0FBQUEsaUJBQW1CN0UsQ0FBQTtjQUFpQixJQUFBTSxDQUFBO2NBRUUsT0FGRmtCLGVBQUEsT0FBQXFELGdCQUFBLElBQ2hDdkUsQ0FBQSxHQUFBeUUsTUFBQSxDQUFBeEMsSUFBQSxPQUFNdkMsQ0FBQSxHQUNEZ0YsSUFBQSxHQUFPMUUsQ0FBQSxDQUFLZ0IsV0FBQSxDQUFZMEQsSUFBQSxFQUFLMUUsQ0FDdEM7WUFBQTtZQUFDLE9BQUE2QixZQUFBLENBQUEwQyxnQkFBQTtjQUFBM0MsR0FBQTtjQUFBUyxLQUFBLFdBQUFzQyxpQ0FBQS9DLEdBQUEsRUFBQWdELElBQUE7Z0JBQUEsS0FBQWhELEdBQUEsSUFBQWlELElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUEsS0FBQUwsZ0JBQUE7VUFBQSxDQUp3QixDQUl4QnRCLGdCQUFBLENBSmlDNkIsS0FBQTtVQU96QlQsbUJBQUEsR0FBbUIsVUFBQVUsaUJBQUE7WUFBQTVDLFNBQUEsQ0FBQWtDLG1CQUFBLEVBQUFVLGlCQUFBO1lBQUEsSUFBQUMsT0FBQSxHQUFBekMsWUFBQSxDQUFBOEIsbUJBQUE7WUFDNUIsU0FBQUEsb0JBQUE7Y0FBcUIsT0FBQW5ELGVBQUEsT0FBQW1ELG1CQUFBLEdBQUFXLE9BQUEsQ0FBQS9DLElBQUEsT0FDWCw0QkFDVjtZQUFBO1lBQUMsT0FBQUosWUFBQSxDQUFBd0MsbUJBQUE7Y0FBQXpDLEdBQUE7Y0FBQVMsS0FBQSxXQUFBc0MsaUNBQUEvQyxHQUFBLEVBQUFnRCxJQUFBO2dCQUFBLEtBQUFoRCxHQUFBLElBQUFpRCxJQUFBLENBQUFELElBQUE7Y0FBQTtZQUFBLEtBQUFQLG1CQUFBO1VBQUEsQ0FIMkIsQ0FBU0UsZ0JBQUE7VUFNNUJVLGlCQUFBLEdBQWlCLFVBQUFDLGtCQUFBO1lBQUEvQyxTQUFBLENBQUE4QyxpQkFBQSxFQUFBQyxrQkFBQTtZQUFBLElBQUFDLE9BQUEsR0FBQTVDLFlBQUEsQ0FBQTBDLGlCQUFBO1lBQzFCLFNBQUFBLGtCQUFtQnZGLENBQUE7Y0FBa0IsT0FBQXdCLGVBQUEsT0FBQStELGlCQUFBLEdBQUFFLE9BQUEsQ0FBQWxELElBQUEsT0FDM0IsUUFBQXZDLENBQUEsR0FBQUEsQ0FBQSxHQUFXLDBCQUNyQjtZQUFBO1lBQUMsT0FBQW1DLFlBQUEsQ0FBQW9ELGlCQUFBO2NBQUFyRCxHQUFBO2NBQUFTLEtBQUEsV0FBQXNDLGlDQUFBL0MsR0FBQSxFQUFBZ0QsSUFBQTtnQkFBQSxLQUFBaEQsR0FBQSxJQUFBaUQsSUFBQSxDQUFBRCxJQUFBO2NBQUE7WUFBQSxLQUFBSyxpQkFBQTtVQUFBLENBSHlCLENBQVNWLGdCQUFBO1VBTTFCYSx3QkFBQSxHQUF3QixVQUFBQyxrQkFBQTtZQUFBbEQsU0FBQSxDQUFBaUQsd0JBQUEsRUFBQUMsa0JBQUE7WUFBQSxJQUFBQyxPQUFBLEdBQUEvQyxZQUFBLENBQUE2Qyx3QkFBQTtZQUNqQyxTQUFBQSx5QkFBbUIxRixDQUFBO2NBQWtCLE9BQUF3QixlQUFBLE9BQUFrRSx3QkFBQSxHQUFBRSxPQUFBLENBQUFyRCxJQUFBLE9BQzNCLDJCQUFzQyxRQUFYdkMsQ0FBQSxHQUF1QixPQUFPQSxDQUFBLEdBQVUsSUFDN0U7WUFBQTtZQUFDLE9BQUFtQyxZQUFBLENBQUF1RCx3QkFBQTtjQUFBeEQsR0FBQTtjQUFBUyxLQUFBLFdBQUFzQyxpQ0FBQS9DLEdBQUEsRUFBQWdELElBQUE7Z0JBQUEsS0FBQWhELEdBQUEsSUFBQWlELElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUEsS0FBQVEsd0JBQUE7VUFBQSxDQUhnQyxDQUFTYixnQkFBQTtVQU1qQ2dCLG9CQUFBLEdBQW9CLFVBQUFDLGtCQUFBO1lBQUFyRCxTQUFBLENBQUFvRCxvQkFBQSxFQUFBQyxrQkFBQTtZQUFBLElBQUFDLE9BQUEsR0FBQWxELFlBQUEsQ0FBQWdELG9CQUFBO1lBQzdCLFNBQUFBLHFCQUFtQjdGLENBQUEsRUFBc0JNLENBQUE7Y0FBa0IsT0FBQWtCLGVBQUEsT0FBQXFFLG9CQUFBLEdBQUFFLE9BQUEsQ0FBQXhELElBQUEsT0FFeEMsUUFBWGpDLENBQUEsR0FBdUIsR0FBSEwsTUFBQSxDQUFNSyxDQUFBLEVBQU8sZ0JBQUFMLE1BQUEsQ0FBZUQsQ0FBQSxFQUFZLGtDQUFBQyxNQUFBLENBQWlDRCxDQUFBLEVBRXJHO1lBQUE7WUFBQyxPQUFBbUMsWUFBQSxDQUFBMEQsb0JBQUE7Y0FBQTNELEdBQUE7Y0FBQVMsS0FBQSxXQUFBc0MsaUNBQUEvQyxHQUFBLEVBQUFnRCxJQUFBO2dCQUFBLEtBQUFoRCxHQUFBLElBQUFpRCxJQUFBLENBQUFELElBQUE7Y0FBQTtZQUFBLEtBQUFXLG9CQUFBO1VBQUEsQ0FMNEIsQ0FBU2hCLGdCQUFBO1VBUTdCbUIsV0FBQSxHQUFXLFVBQUFDLGtCQUFBO1lBQUF4RCxTQUFBLENBQUF1RCxXQUFBLEVBQUFDLGtCQUFBO1lBQUEsSUFBQUMsT0FBQSxHQUFBckQsWUFBQSxDQUFBbUQsV0FBQTtZQUNwQixTQUFBQSxZQUFBO2NBQXFCLE9BQUF4RSxlQUFBLE9BQUF3RSxXQUFBLEdBQUFFLE9BQUEsQ0FBQTNELElBQUEsT0FDWCxpQkFDVjtZQUFBO1lBQUMsT0FBQUosWUFBQSxDQUFBNkQsV0FBQTtjQUFBOUQsR0FBQTtjQUFBUyxLQUFBLFdBQUFzQyxpQ0FBQS9DLEdBQUEsRUFBQWdELElBQUE7Z0JBQUEsS0FBQWhELEdBQUEsSUFBQWlELElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUEsS0FBQWMsV0FBQTtVQUFBLENBSG1CLENBQVNuQixnQkFBQTtVQUloQ3NCLGNBQUE7VUFKdUJwRixXQUFBO1FBSXZCb0YsY0FBQSx5QkFBQXpGLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsV0FBQXVGLGNBQUEsS0FBQUEsY0FBQSxDQUFBckYsUUFBQSxDQXJDWStELGdCQUFBLEVBQWdCLGtHQUFBc0IsY0FBQSxDQUFBckYsUUFBQSxDQU9oQjZELG1CQUFBLEVBQW1CLHFHQUFBd0IsY0FBQSxDQUFBckYsUUFBQSxDQU1uQnlFLGlCQUFBLEVBQWlCLG1HQUFBWSxjQUFBLENBQUFyRixRQUFBLENBTWpCNEUsd0JBQUEsRUFBd0IsMEdBQUFTLGNBQUEsQ0FBQXJGLFFBQUEsQ0FNeEIrRSxvQkFBQSxFQUFvQixzR0FBQU0sY0FBQSxDQUFBckYsUUFBQSxDQVFwQmtGLFdBQUEsRUFBVyw4RkFBQWpGLFdBQUEseUJBQUFMLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFLLFdBQUEsV0FBQUEsV0FBQSxJQUFBQSxXQUFBLENBQUFDLE1BQUE7TUFBQTtNQUFBLGVBQUFoQixDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtRQUFBLElBQUFLLENBQUEsRUNpR3ZCWixDQUFBLEVBRnVCQyxDQUFBO1FBQUEsU0FBQUMsRUFBQUMsQ0FBQTtVQUFBLE9BQUFELENBQUEsd0JBQUFxQixNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBRCxDQUFBLENBQUFDLENBQUE7UUFBQTtRQTVIakIsU0FBU29HLEVBQXdCcEcsQ0FBQTtVQUNwQyxPQUFnQixRQUFUQSxDQUNYO1FBQUE7UUFtQk8sU0FBU3FHLEVBQU9yRyxDQUFBO1VBQ25CLE1BQXVCLG1CQUFaQSxDQUFBLElBQW1DLFFBQVhBLENBQUEsR0FDekIsSUFBSW9GLEtBQUEsQ0FBTSxRQUFBcEYsQ0FBQSxHQUFBQSxDQUFBLEdBQVcsOEJBRXJCQSxDQUVkO1FBQUE7UUFZTyxTQUFTc0csRUFDWnRHLENBQUEsRUFDQU0sQ0FBQTtVQUVBLE9BQU9OLENBQUEsQ0FBTTJCLE1BQUEsSUFBVXJCLENBQzNCO1FBQUE7UUFZTyxTQUFTaUcsRUFDWnZHLENBQUEsRUFDQU0sQ0FBQTtVQUVBLE9BQU9OLENBQUEsQ0FBTTJCLE1BQUEsS0FBV3JCLENBQzVCO1FBQUE7UUFFTyxTQUFTa0csRUFBbUJ4RyxDQUFBO1VBQy9CLE9BQU9BLENBQUEsQ0FBTTJCLE1BQUEsR0FBUyxDQUMxQjtRQUFBO1FBMkNPLFNBQVN0QixFQUFjTCxDQUFBO1VBQzFCLE9BQWdCLFFBQVRBLENBQUEsSUFBZ0MsT0FBVkEsQ0FDakM7UUFBQTtRQUFBSSxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBbUcsRUFBQSxXQUFBQSxDQUFBO1lBQUEsT0FBQUosQ0FBQTtVQUFBO1FBQUEsSUFBQXJHLENBQUEsR0FBQUksQ0FBQSxDQUFBSSxHQUFBLENBQUFSLENBQUEsSUFBQVMsQ0FBQSx5QkFBQUMsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBRixDQUFBLENBQUFULENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQSxHQWdCQ2hCLENBQUEseUJBQUFhLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsZUFBQWYsQ0FBQSxDQUFBaUIsUUFBQSxDQTlIZXNGLENBQUEsRUFBb0IsMkdBQUF2RyxDQUFBLENBQUFpQixRQUFBLENBSTdCLFVBQStCZCxDQUFBO1VBRWxDLE9BQXdCLGFBQWpCRCxDQUFBLENBQU9DLENBQUEsTUFBc0IsUUFBQUEsQ0FBQSxRQUFLLElBQUxBLENBQUEsQ0FBaUIwRyxPQUFBLENBQ3pEO1FBQUEsR0FIcUMsNEdBQUE3RyxDQUFBLENBQUFpQixRQUFBLENBSzlCLFVBQXFDZCxDQUFBO1VBQ3hDLEtBQUtvRyxDQUFBLENBQXFCcEcsQ0FBQSxHQUN0QixNQUFNLElBQUlvRixLQUFBLENBQU0sd0JBRXhCO1FBQUEsR0FKd0MsK0dBQUF2RixDQUFBLENBQUFpQixRQUFBLENBTWpDLGFBQ0gsR0FEZ0IsMkZBQUFqQixDQUFBLENBQUFpQixRQUFBLENBTUp1RixDQUFBLEVBQU0sNkZBQUF4RyxDQUFBLENBQUFpQixRQUFBLENBa0JOd0YsQ0FBQSxFQUEwQixpSEFBQXpHLENBQUEsQ0FBQWlCLFFBQUEsQ0FPbkMsVUFDSGQsQ0FBQSxFQUNBTSxDQUFBO1VBRUEsSUFBSWdHLENBQUEsQ0FBMkJ0RyxDQUFBLEVBQU9NLENBQUEsR0FDbEMsT0FBT04sQ0FHZjtRQUFBLEdBUm9DLDJHQUFBSCxDQUFBLENBQUFpQixRQUFBLENBVXBCeUYsQ0FBQSxFQUFjLHFHQUFBMUcsQ0FBQSxDQUFBaUIsUUFBQSxDQU9kMEYsQ0FBQSxFQUFlLHNHQUFBM0csQ0FBQSxDQUFBaUIsUUFBQSxDQUl4QixVQUFtQ2QsQ0FBQTtVQUN0QyxPQUFPQSxDQUFBLENBQU0yQixNQUFBLEdBQVMsQ0FDMUI7UUFBQSxHQUZzQyw2R0FBQTlCLENBQUEsQ0FBQWlCLFFBQUEsQ0FJL0IsVUFBa0NkLENBQUE7VUFDckMsS0FBS3dHLENBQUEsQ0FBZ0J4RyxDQUFBLEdBQ2pCLE1BQU0sSUFBSW9GLEtBQUEsQ0FBTSwwQkFFeEI7UUFBQSxHQUpxQyw0R0FBQXZGLENBQUEsQ0FBQWlCLFFBQUEsQ0FNOUIsVUFDSGQsQ0FBQSxFQUNBTSxDQUFBO1VBRUEsS0FBS2lHLENBQUEsQ0FBZXZHLENBQUEsRUFBT00sQ0FBQSxHQUN2QixNQUFNLElBQUk4RSxLQUFBLENBQU0sMkJBQURuRixNQUFBLENBQTRCSyxDQUFBLEVBRW5EO1FBQUEsR0FQb0MsMkdBQUFULENBQUEsQ0FBQWlCLFFBQUEsQ0FTN0IsVUFDSGQsQ0FBQSxFQUNBTSxDQUFBO1VBRUEsS0FBS2dHLENBQUEsQ0FBMkJ0RyxDQUFBLEVBQU9NLENBQUEsR0FDbkMsTUFBTSxJQUFJOEUsS0FBQSxDQUFNLGtDQUFEbkYsTUFBQSxDQUFtQ0ssQ0FBQSxFQUUxRDtRQUFBLEdBUG1ELDBIQUFBVCxDQUFBLENBQUFpQixRQUFBLENBUzVDLFVBQXFCZCxDQUFBLEdBQ3hCLEdBRHVCLGtHQUFBSCxDQUFBLENBQUFpQixRQUFBLENBSXBCLFVBQTRCZCxDQUFBO1VBQy9CLE9BQU8sR0FBUEMsTUFBQSxDQUFVRCxDQUFBLENBQ2Q7UUFBQSxHQUZrQyx5R0FBQUgsQ0FBQSxDQUFBaUIsUUFBQSxDQUkzQixVQUF3QmQsQ0FBQTtVQUUzQkEsQ0FBQSxFQUNKO1FBQUEsR0FIOEIscUdBQUFILENBQUEsQ0FBQWlCLFFBQUEsQ0FLZFQsQ0FBQSxFQUFhLG9HQUFBUixDQUFBLENBQUFpQixRQUFBLENBSXRCLFVBQTBCZCxDQUFBO1VBQzdCLFFBQVFLLENBQUEsQ0FBY0wsQ0FBQSxDQUMxQjtRQUFBLEdBRmdDLHVHQUFBSCxDQUFBLENBQUFpQixRQUFBLENBSXpCLFVBQTRCZCxDQUFBO1VBQy9CLE9BQWdCLFFBQVRBLENBQUEsSUFBdUMsT0FBakJBLENBQUEsQ0FBTTJHLElBQUEsRUFDdkM7UUFBQSxHQUZrQyx5R0FBQTlHLENBQUEsQ0FBQWlCLFFBQUEsQ0FJM0IsVUFBdUJkLENBQUE7VUFDMUIsT0FBeUIsUUFBbEJBLENBQUEsQ0FBSTRHLEtBQUEsRUFBTyxLQUFhNUcsQ0FBQSxDQUFJNEcsS0FBQSxDQUFNLElBQUksS0FBSzVHLENBQ3REO1FBQUEsR0FGNkIsb0dBQUFILENBQUEsQ0FBQWlCLFFBQUEsQ0FJdEIsVUFBcUJkLENBQUEsR0FDeEIsR0FEb0IsaUdBQUFGLENBQUEseUJBQUFZLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFLLFdBQUEsY0FBQWpCLENBQUEsQ0FBQUUsQ0FBQTtNQUFBO01BQUEsZUFBQUEsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7UUNoSXhCLElBQUlLLENBQUEsR0FDcUIsc0JBQWZvRyxVQUFBLElBQThCQSxVQUFBLElBQ3JCLHNCQUFUQyxJQUFBLElBQXdCQSxJQUFBLFNBQ2IsTUFBWHJHLENBQUEsSUFBMEJBLENBQUE7VUFFaENaLENBQUEsR0FBVTtZQUNaa0gsWUFBQSxFQUFjLHFCQUFxQnRHLENBQUE7WUFDbkN1RyxRQUFBLEVBQVUsWUFBWXZHLENBQUEsSUFBVSxjQUFjVyxNQUFBO1lBQzlDNkYsSUFBQSxFQUNFLGdCQUFnQnhHLENBQUEsSUFDaEIsVUFBVUEsQ0FBQSxJQUNWO2NBQ0U7Z0JBRUUsT0FEQSxJQUFJeUcsSUFBQSxLQUNHLENBQ1Q7Y0FBQSxDQUFFLFFBQU9sSCxDQUFBO2dCQUNQLFFBQU8sQ0FDVDtjQUFBO1lBQ0QsQ0FQRDtZQVFGbUgsUUFBQSxFQUFVLGNBQWMxRyxDQUFBO1lBQ3hCMkcsV0FBQSxFQUFhLGlCQUFpQjNHO1VBQUE7UUFPaEMsSUFBSVosQ0FBQSxDQUFRdUgsV0FBQSxFQUNWLElBQUl0SCxDQUFBLEdBQWMsQ0FDaEIsc0JBQ0EsdUJBQ0EsOEJBQ0EsdUJBQ0Esd0JBQ0EsdUJBQ0Esd0JBQ0EseUJBQ0E7VUFHRUMsQ0FBQSxHQUNGc0gsV0FBQSxDQUFZQyxNQUFBLElBQ1osVUFBU3RILENBQUE7WUFDUCxPQUFPQSxDQUFBLElBQU9GLENBQUEsQ0FBWXdFLE9BQUEsQ0FBUXZDLE1BQUEsQ0FBT1IsU0FBQSxDQUFVOEMsUUFBQSxDQUFTOUIsSUFBQSxDQUFLdkMsQ0FBQSxNQUFTLENBQzVFO1VBQUE7UUFHSixTQUFTb0csRUFBY3BHLENBQUE7VUFJckIsSUFIb0IsbUJBQVRBLENBQUEsS0FDVEEsQ0FBQSxHQUFPcUMsTUFBQSxDQUFPckMsQ0FBQSxJQUVaLDZCQUE2QnVILElBQUEsQ0FBS3ZILENBQUEsS0FBa0IsT0FBVEEsQ0FBQSxFQUM3QyxNQUFNLElBQUl5QixTQUFBLENBQVUsOENBQThDekIsQ0FBQSxHQUFPO1VBRTNFLE9BQU9BLENBQUEsQ0FBS3dILFdBQUEsRUFDZDtRQUFBO1FBRUEsU0FBU25CLEVBQWVyRyxDQUFBO1VBSXRCLE9BSHFCLG1CQUFWQSxDQUFBLEtBQ1RBLENBQUEsR0FBUXFDLE1BQUEsQ0FBT3JDLENBQUEsSUFFVkEsQ0FDVDtRQUFBO1FBR0EsU0FBU3NHLEVBQVl0RyxDQUFBO1VBQ25CLElBQUlNLENBQUEsR0FBVztZQUNibUgsSUFBQSxFQUFNLFNBQUFBLENBQUE7Y0FDSixJQUFJbkgsQ0FBQSxHQUFRTixDQUFBLENBQU0wSCxLQUFBO2NBQ2xCLE9BQU87Z0JBQUNDLElBQUEsT0FBZ0IsTUFBVnJILENBQUE7Z0JBQXFCcUMsS0FBQSxFQUFPckM7Y0FBQSxDQUM1QztZQUFBO1VBQUE7VUFTRixPQU5JVCxDQUFBLENBQVFtSCxRQUFBLEtBQ1YxRyxDQUFBLENBQVNjLE1BQUEsQ0FBT0MsUUFBQSxJQUFZO1lBQzFCLE9BQU9mLENBQ1Q7VUFBQSxJQUdLQSxDQUNUO1FBQUE7UUFFTyxTQUFTaUcsRUFBUXZHLENBQUE7VUFDdEIsS0FBSzRILEdBQUEsR0FBTSxDQUFDLEdBRVI1SCxDQUFBLFlBQW1CdUcsQ0FBQSxHQUNyQnZHLENBQUEsQ0FBUTZILE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQSxFQUFPTSxDQUFBO1lBQzlCLEtBQUt3SCxNQUFBLENBQU94SCxDQUFBLEVBQU1OLENBQUEsQ0FDcEI7VUFBQSxHQUFHLFFBQ00rSCxLQUFBLENBQU1DLE9BQUEsQ0FBUWhJLENBQUEsSUFDdkJBLENBQUEsQ0FBUTZILE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQTtZQUN2QixLQUFLOEgsTUFBQSxDQUFPOUgsQ0FBQSxDQUFPLElBQUlBLENBQUEsQ0FBTyxHQUNoQztVQUFBLEdBQUcsUUFDTUEsQ0FBQSxJQUNUK0IsTUFBQSxDQUFPa0csbUJBQUEsQ0FBb0JqSSxDQUFBLEVBQVM2SCxPQUFBLENBQVEsVUFBU3ZILENBQUE7WUFDbkQsS0FBS3dILE1BQUEsQ0FBT3hILENBQUEsRUFBTU4sQ0FBQSxDQUFRTSxDQUFBLEVBQzVCO1VBQUEsR0FBRyxLQUVQO1FBQUE7UUE4REEsU0FBU2tHLEVBQVN4RyxDQUFBO1VBQ2hCLElBQUlBLENBQUEsQ0FBS2tJLFFBQUEsRUFDUCxPQUFPQyxPQUFBLENBQVFDLE1BQUEsQ0FBTyxJQUFJM0csU0FBQSxDQUFVO1VBRXRDekIsQ0FBQSxDQUFLa0ksUUFBQSxJQUFXLENBQ2xCO1FBQUE7UUFFQSxTQUFTN0gsRUFBZ0JMLENBQUE7VUFDdkIsT0FBTyxJQUFJbUksT0FBQSxDQUFRLFVBQVM3SCxDQUFBLEVBQVNGLENBQUE7WUFDbkNKLENBQUEsQ0FBT3FJLE1BQUEsR0FBUztjQUNkL0gsQ0FBQSxDQUFRTixDQUFBLENBQU9zSSxNQUFBLENBQ2pCO1lBQUEsR0FDQXRJLENBQUEsQ0FBT3VJLE9BQUEsR0FBVTtjQUNmbkksQ0FBQSxDQUFPSixDQUFBLENBQU93SSxLQUFBLENBQ2hCO1lBQUEsQ0FDRjtVQUFBLEVBQ0Y7UUFBQTtRQUVBLFNBQVNDLEVBQXNCekksQ0FBQTtVQUM3QixJQUFJTSxDQUFBLEdBQVMsSUFBSW9JLFVBQUE7WUFDYnRJLENBQUEsR0FBVUMsQ0FBQSxDQUFnQkMsQ0FBQTtVQUU5QixPQURBQSxDQUFBLENBQU9xSSxpQkFBQSxDQUFrQjNJLENBQUEsR0FDbEJJLENBQ1Q7UUFBQTtRQW1CQSxTQUFTd0ksRUFBWTVJLENBQUE7VUFDbkIsSUFBSUEsQ0FBQSxDQUFJNEcsS0FBQSxFQUNOLE9BQU81RyxDQUFBLENBQUk0RyxLQUFBLENBQU07VUFFakIsSUFBSXRHLENBQUEsR0FBTyxJQUFJdUksVUFBQSxDQUFXN0ksQ0FBQSxDQUFJOEksVUFBQTtVQUU5QixPQURBeEksQ0FBQSxDQUFLc0QsR0FBQSxDQUFJLElBQUlpRixVQUFBLENBQVc3SSxDQUFBLElBQ2pCTSxDQUFBLENBQUt5SSxNQUVoQjtRQUFBO1FBRUEsU0FBU3hJLEVBQUE7VUFrSFAsT0FqSEEsS0FBSzJILFFBQUEsSUFBVyxHQUVoQixLQUFLYyxTQUFBLEdBQVksVUFBU2hKLENBQUE7WUFoTTVCLElBQW9CTSxDQUFBO1lBMk1oQixLQUFLNEgsUUFBQSxHQUFXLEtBQUtBLFFBQUEsRUFDckIsS0FBS2UsU0FBQSxHQUFZakosQ0FBQSxFQUNaQSxDQUFBLEdBRXNCLG1CQUFUQSxDQUFBLEdBQ2hCLEtBQUtrSixTQUFBLEdBQVlsSixDQUFBLEdBQ1JILENBQUEsQ0FBUW9ILElBQUEsSUFBUUMsSUFBQSxDQUFLM0YsU0FBQSxDQUFVNEgsYUFBQSxDQUFjbkosQ0FBQSxJQUN0RCxLQUFLb0osU0FBQSxHQUFZcEosQ0FBQSxHQUNSSCxDQUFBLENBQVFzSCxRQUFBLElBQVlrQyxRQUFBLENBQVM5SCxTQUFBLENBQVU0SCxhQUFBLENBQWNuSixDQUFBLElBQzlELEtBQUtzSixhQUFBLEdBQWdCdEosQ0FBQSxHQUNaSCxDQUFBLENBQVFrSCxZQUFBLElBQWdCd0MsZUFBQSxDQUFnQmhJLFNBQUEsQ0FBVTRILGFBQUEsQ0FBY25KLENBQUEsSUFDekUsS0FBS2tKLFNBQUEsR0FBWWxKLENBQUEsQ0FBS3FFLFFBQUEsS0FDYnhFLENBQUEsQ0FBUXVILFdBQUEsSUFBZXZILENBQUEsQ0FBUW9ILElBQUEsS0F2TjFCM0csQ0FBQSxHQXVONkNOLENBQUEsS0F0TmpEd0osUUFBQSxDQUFTakksU0FBQSxDQUFVNEgsYUFBQSxDQUFjN0ksQ0FBQSxLQXVOM0MsS0FBS21KLGdCQUFBLEdBQW1CYixDQUFBLENBQVk1SSxDQUFBLENBQUsrSSxNQUFBLEdBRXpDLEtBQUtFLFNBQUEsR0FBWSxJQUFJL0IsSUFBQSxDQUFLLENBQUMsS0FBS3VDLGdCQUFBLE1BQ3ZCNUosQ0FBQSxDQUFRdUgsV0FBQSxLQUFnQkMsV0FBQSxDQUFZOUYsU0FBQSxDQUFVNEgsYUFBQSxDQUFjbkosQ0FBQSxLQUFTRCxDQUFBLENBQWtCQyxDQUFBLEtBQ2hHLEtBQUt5SixnQkFBQSxHQUFtQmIsQ0FBQSxDQUFZNUksQ0FBQSxJQUVwQyxLQUFLa0osU0FBQSxHQUFZbEosQ0FBQSxHQUFPK0IsTUFBQSxDQUFPUixTQUFBLENBQVU4QyxRQUFBLENBQVM5QixJQUFBLENBQUt2QyxDQUFBLElBaEJ2RCxLQUFLa0osU0FBQSxHQUFZLElBbUJkLEtBQUtRLE9BQUEsQ0FBUS9GLEdBQUEsQ0FBSSxvQkFDQSxtQkFBVDNELENBQUEsR0FDVCxLQUFLMEosT0FBQSxDQUFROUYsR0FBQSxDQUFJLGdCQUFnQiw4QkFDeEIsS0FBS3dGLFNBQUEsSUFBYSxLQUFLQSxTQUFBLENBQVVPLElBQUEsR0FDMUMsS0FBS0QsT0FBQSxDQUFROUYsR0FBQSxDQUFJLGdCQUFnQixLQUFLd0YsU0FBQSxDQUFVTyxJQUFBLElBQ3ZDOUosQ0FBQSxDQUFRa0gsWUFBQSxJQUFnQndDLGVBQUEsQ0FBZ0JoSSxTQUFBLENBQVU0SCxhQUFBLENBQWNuSixDQUFBLEtBQ3pFLEtBQUswSixPQUFBLENBQVE5RixHQUFBLENBQUksZ0JBQWdCLG1EQUd2QztVQUFBLEdBRUkvRCxDQUFBLENBQVFvSCxJQUFBLEtBQ1YsS0FBS0EsSUFBQSxHQUFPO1lBQ1YsSUFBSWpILENBQUEsR0FBV3dHLENBQUEsQ0FBUztZQUN4QixJQUFJeEcsQ0FBQSxFQUNGLE9BQU9BLENBQUE7WUFHVCxJQUFJLEtBQUtvSixTQUFBLEVBQ1AsT0FBT2pCLE9BQUEsQ0FBUXlCLE9BQUEsQ0FBUSxLQUFLUixTQUFBO1lBQ3ZCLElBQUksS0FBS0ssZ0JBQUEsRUFDZCxPQUFPdEIsT0FBQSxDQUFReUIsT0FBQSxDQUFRLElBQUkxQyxJQUFBLENBQUssQ0FBQyxLQUFLdUMsZ0JBQUE7WUFDakMsSUFBSSxLQUFLSCxhQUFBLEVBQ2QsTUFBTSxJQUFJbEUsS0FBQSxDQUFNO1lBRWhCLE9BQU8rQyxPQUFBLENBQVF5QixPQUFBLENBQVEsSUFBSTFDLElBQUEsQ0FBSyxDQUFDLEtBQUtnQyxTQUFBLEdBRTFDO1VBQUEsR0FFQSxLQUFLOUIsV0FBQSxHQUFjO1lBQ2pCLE9BQUksS0FBS3FDLGdCQUFBLEdBQ1VqRCxDQUFBLENBQVMsVUFJdEJhLFdBQUEsQ0FBWUMsTUFBQSxDQUFPLEtBQUttQyxnQkFBQSxJQUNuQnRCLE9BQUEsQ0FBUXlCLE9BQUEsQ0FDYixLQUFLSCxnQkFBQSxDQUFpQlYsTUFBQSxDQUFPbkMsS0FBQSxDQUMzQixLQUFLNkMsZ0JBQUEsQ0FBaUJJLFVBQUEsRUFDdEIsS0FBS0osZ0JBQUEsQ0FBaUJJLFVBQUEsR0FBYSxLQUFLSixnQkFBQSxDQUFpQlgsVUFBQSxLQUl0RFgsT0FBQSxDQUFReUIsT0FBQSxDQUFRLEtBQUtILGdCQUFBLEtBR3ZCLEtBQUt4QyxJQUFBLEdBQU82QyxJQUFBLENBQUtyQixDQUFBLENBRTVCO1VBQUEsSUFHRixLQUFLc0IsSUFBQSxHQUFPO1lBQ1YsSUFuSG9CL0osQ0FBQTtjQUNsQk0sQ0FBQTtjQUNBRixDQUFBO2NBaUhFSyxDQUFBLEdBQVcrRixDQUFBLENBQVM7WUFDeEIsSUFBSS9GLENBQUEsRUFDRixPQUFPQSxDQUFBO1lBR1QsSUFBSSxLQUFLMkksU0FBQSxFQUNQLE9BekhrQnBKLENBQUEsR0F5SEksS0FBS29KLFNBQUEsRUF2SDNCaEosQ0FBQSxHQUFVQyxDQUFBLENBRFZDLENBQUEsR0FBUyxJQUFJb0ksVUFBQSxLQUVqQnBJLENBQUEsQ0FBTzBKLFVBQUEsQ0FBV2hLLENBQUEsR0FDWEksQ0FBQTtZQXNIRSxJQUFJLEtBQUtxSixnQkFBQSxFQUNkLE9BQU90QixPQUFBLENBQVF5QixPQUFBLENBcEhyQixVQUErQjVKLENBQUE7Y0FJN0IsS0FIQSxJQUFJTSxDQUFBLEdBQU8sSUFBSXVJLFVBQUEsQ0FBVzdJLENBQUEsR0FDdEJJLENBQUEsR0FBUSxJQUFJMkgsS0FBQSxDQUFNekgsQ0FBQSxDQUFLcUIsTUFBQSxHQUVsQmxCLENBQUEsR0FBSSxHQUFHQSxDQUFBLEdBQUlILENBQUEsQ0FBS3FCLE1BQUEsRUFBUWxCLENBQUEsSUFDL0JMLENBQUEsQ0FBTUssQ0FBQSxJQUFLNEIsTUFBQSxDQUFPNEgsWUFBQSxDQUFhM0osQ0FBQSxDQUFLRyxDQUFBO2NBRXRDLE9BQU9MLENBQUEsQ0FBTThKLElBQUEsQ0FBSyxHQUNwQjtZQUFBLENBNEc2QixDQUFzQixLQUFLVCxnQkFBQTtZQUM3QyxJQUFJLEtBQUtILGFBQUEsRUFDZCxNQUFNLElBQUlsRSxLQUFBLENBQU07WUFFaEIsT0FBTytDLE9BQUEsQ0FBUXlCLE9BQUEsQ0FBUSxLQUFLVixTQUFBLENBRWhDO1VBQUEsR0FFSXJKLENBQUEsQ0FBUXNILFFBQUEsS0FDVixLQUFLQSxRQUFBLEdBQVc7WUFDZCxPQUFPLEtBQUs0QyxJQUFBLEdBQU9ELElBQUEsQ0FBS0ssQ0FBQSxDQUMxQjtVQUFBLElBR0YsS0FBS0MsSUFBQSxHQUFPO1lBQ1YsT0FBTyxLQUFLTCxJQUFBLEdBQU9ELElBQUEsQ0FBS08sSUFBQSxDQUFLQyxLQUFBLENBQy9CO1VBQUEsR0FFTyxJQUNUO1FBQUE7UUFuT0EvRCxDQUFBLENBQVFoRixTQUFBLENBQVV1RyxNQUFBLEdBQVMsVUFBUzlILENBQUEsRUFBTU0sQ0FBQTtVQUN4Q04sQ0FBQSxHQUFPb0csQ0FBQSxDQUFjcEcsQ0FBQSxHQUNyQk0sQ0FBQSxHQUFRK0YsQ0FBQSxDQUFlL0YsQ0FBQTtVQUN2QixJQUFJRixDQUFBLEdBQVcsS0FBS3dILEdBQUEsQ0FBSTVILENBQUE7VUFDeEIsS0FBSzRILEdBQUEsQ0FBSTVILENBQUEsSUFBUUksQ0FBQSxHQUFXQSxDQUFBLEdBQVcsT0FBT0UsQ0FBQSxHQUFRQSxDQUN4RDtRQUFBLEdBRUFpRyxDQUFBLENBQVFoRixTQUFBLENBQWtCZ0osTUFBQSxHQUFJLFVBQVN2SyxDQUFBO1VBQUEsT0FDOUIsS0FBSzRILEdBQUEsQ0FBSXhCLENBQUEsQ0FBY3BHLENBQUEsRUFDaEM7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVb0MsR0FBQSxHQUFNLFVBQVMzRCxDQUFBO1VBRS9CLE9BREFBLENBQUEsR0FBT29HLENBQUEsQ0FBY3BHLENBQUEsR0FDZCxLQUFLMEQsR0FBQSxDQUFJMUQsQ0FBQSxJQUFRLEtBQUs0SCxHQUFBLENBQUk1SCxDQUFBLElBQVEsSUFDM0M7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVbUMsR0FBQSxHQUFNLFVBQVMxRCxDQUFBO1VBQy9CLE9BQU8sS0FBSzRILEdBQUEsQ0FBSTRDLGNBQUEsQ0FBZXBFLENBQUEsQ0FBY3BHLENBQUEsRUFDL0M7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVcUMsR0FBQSxHQUFNLFVBQVM1RCxDQUFBLEVBQU1NLENBQUE7VUFDckMsS0FBS3NILEdBQUEsQ0FBSXhCLENBQUEsQ0FBY3BHLENBQUEsS0FBU3FHLENBQUEsQ0FBZS9GLENBQUEsQ0FDakQ7UUFBQSxHQUVBaUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVc0csT0FBQSxHQUFVLFVBQVM3SCxDQUFBLEVBQVVNLENBQUE7VUFDN0MsS0FBSyxJQUFJRixDQUFBLElBQVEsS0FBS3dILEdBQUEsRUFDaEIsS0FBS0EsR0FBQSxDQUFJNEMsY0FBQSxDQUFlcEssQ0FBQSxLQUMxQkosQ0FBQSxDQUFTdUMsSUFBQSxDQUFLakMsQ0FBQSxFQUFTLEtBQUtzSCxHQUFBLENBQUl4SCxDQUFBLEdBQU9BLENBQUEsRUFBTSxLQUduRDtRQUFBLEdBRUFtRyxDQUFBLENBQVFoRixTQUFBLENBQVVrSixJQUFBLEdBQU87VUFDdkIsSUFBSXpLLENBQUEsR0FBUTtVQUlaLE9BSEEsS0FBSzZILE9BQUEsQ0FBUSxVQUFTdkgsQ0FBQSxFQUFPRixDQUFBO1lBQzNCSixDQUFBLENBQU0rRCxJQUFBLENBQUszRCxDQUFBLENBQ2I7VUFBQSxJQUNPa0csQ0FBQSxDQUFZdEcsQ0FBQSxDQUNyQjtRQUFBLEdBRUF1RyxDQUFBLENBQVFoRixTQUFBLENBQVVtSixNQUFBLEdBQVM7VUFDekIsSUFBSTFLLENBQUEsR0FBUTtVQUlaLE9BSEEsS0FBSzZILE9BQUEsQ0FBUSxVQUFTdkgsQ0FBQTtZQUNwQk4sQ0FBQSxDQUFNK0QsSUFBQSxDQUFLekQsQ0FBQSxDQUNiO1VBQUEsSUFDT2dHLENBQUEsQ0FBWXRHLENBQUEsQ0FDckI7UUFBQSxHQUVBdUcsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVb0osT0FBQSxHQUFVO1VBQzFCLElBQUkzSyxDQUFBLEdBQVE7VUFJWixPQUhBLEtBQUs2SCxPQUFBLENBQVEsVUFBU3ZILENBQUEsRUFBT0YsQ0FBQTtZQUMzQkosQ0FBQSxDQUFNK0QsSUFBQSxDQUFLLENBQUMzRCxDQUFBLEVBQU1FLENBQUEsRUFDcEI7VUFBQSxJQUNPZ0csQ0FBQSxDQUFZdEcsQ0FBQSxDQUNyQjtRQUFBLEdBRUlILENBQUEsQ0FBUW1ILFFBQUEsS0FDVlQsQ0FBQSxDQUFRaEYsU0FBQSxDQUFVSCxNQUFBLENBQU9DLFFBQUEsSUFBWWtGLENBQUEsQ0FBUWhGLFNBQUEsQ0FBVW9KLE9BQUE7UUE2S3pELElBQUlDLENBQUEsR0FBVSxDQUFDLFVBQVUsT0FBTyxRQUFRLFdBQVcsUUFBUTtRQU9wRCxTQUFTQyxFQUFRN0ssQ0FBQSxFQUFPTSxDQUFBO1VBQzdCLE1BQU0sZ0JBQWdCdUssQ0FBQSxHQUNwQixNQUFNLElBQUlwSixTQUFBLENBQVU7VUFJdEIsSUFYdUJyQixDQUFBO1lBQ25CSyxDQUFBO1lBVUFaLENBQUEsSUFESlMsQ0FBQSxHQUFVQSxDQUFBLElBQVcsQ0FBQyxHQUNId0ssSUFBQTtVQUVuQixJQUFJOUssQ0FBQSxZQUFpQjZLLENBQUEsRUFBUztZQUM1QixJQUFJN0ssQ0FBQSxDQUFNa0ksUUFBQSxFQUNSLE1BQU0sSUFBSXpHLFNBQUEsQ0FBVTtZQUV0QixLQUFLc0osR0FBQSxHQUFNL0ssQ0FBQSxDQUFNK0ssR0FBQSxFQUNqQixLQUFLQyxXQUFBLEdBQWNoTCxDQUFBLENBQU1nTCxXQUFBLEVBQ3BCMUssQ0FBQSxDQUFRb0osT0FBQSxLQUNYLEtBQUtBLE9BQUEsR0FBVSxJQUFJbkQsQ0FBQSxDQUFRdkcsQ0FBQSxDQUFNMEosT0FBQSxJQUVuQyxLQUFLdUIsTUFBQSxHQUFTakwsQ0FBQSxDQUFNaUwsTUFBQSxFQUNwQixLQUFLQyxJQUFBLEdBQU9sTCxDQUFBLENBQU1rTCxJQUFBLEVBQ2xCLEtBQUtDLE1BQUEsR0FBU25MLENBQUEsQ0FBTW1MLE1BQUEsRUFDZnRMLENBQUEsSUFBMkIsUUFBbkJHLENBQUEsQ0FBTWlKLFNBQUEsS0FDakJwSixDQUFBLEdBQU9HLENBQUEsQ0FBTWlKLFNBQUEsRUFDYmpKLENBQUEsQ0FBTWtJLFFBQUEsSUFBVyxFQUVyQjtVQUFBLE9BQ0UsS0FBSzZDLEdBQUEsR0FBTTFJLE1BQUEsQ0FBT3JDLENBQUE7VUFZcEIsSUFUQSxLQUFLZ0wsV0FBQSxHQUFjMUssQ0FBQSxDQUFRMEssV0FBQSxJQUFlLEtBQUtBLFdBQUEsSUFBZSxnQkFDMUQxSyxDQUFBLENBQVFvSixPQUFBLElBQVksS0FBS0EsT0FBQSxLQUMzQixLQUFLQSxPQUFBLEdBQVUsSUFBSW5ELENBQUEsQ0FBUWpHLENBQUEsQ0FBUW9KLE9BQUEsSUFFckMsS0FBS3VCLE1BQUEsSUFwQ0R4SyxDQUFBLElBRG1CTCxDQUFBLEdBcUNPRSxDQUFBLENBQVEySyxNQUFBLElBQVUsS0FBS0EsTUFBQSxJQUFVLE9BcEMxQ0csV0FBQSxJQUNkUixDQUFBLENBQVF0RyxPQUFBLENBQVE3RCxDQUFBLEtBQVksSUFBSUEsQ0FBQSxHQUFVTCxDQUFBLEdBb0NqRCxLQUFLOEssSUFBQSxHQUFPNUssQ0FBQSxDQUFRNEssSUFBQSxJQUFRLEtBQUtBLElBQUEsSUFBUSxNQUN6QyxLQUFLQyxNQUFBLEdBQVM3SyxDQUFBLENBQVE2SyxNQUFBLElBQVUsS0FBS0EsTUFBQSxFQUNyQyxLQUFLRSxRQUFBLEdBQVcsT0FFSyxVQUFoQixLQUFLSixNQUFBLElBQW9DLFdBQWhCLEtBQUtBLE1BQUEsS0FBc0JwTCxDQUFBLEVBQ3ZELE1BQU0sSUFBSTRCLFNBQUEsQ0FBVTtVQUl0QixJQUZBLEtBQUt1SCxTQUFBLENBQVVuSixDQUFBLEtBRUssVUFBaEIsS0FBS29MLE1BQUEsSUFBb0MsV0FBaEIsS0FBS0EsTUFBQSxJQUNWLGVBQWxCM0ssQ0FBQSxDQUFRZ0wsS0FBQSxJQUEwQyxlQUFsQmhMLENBQUEsQ0FBUWdMLEtBQUEsR0FBc0I7WUFFaEUsSUFBSXhMLENBQUEsR0FBZ0I7WUFDaEJBLENBQUEsQ0FBY3lILElBQUEsQ0FBSyxLQUFLd0QsR0FBQSxJQUUxQixLQUFLQSxHQUFBLEdBQU0sS0FBS0EsR0FBQSxDQUFJUSxPQUFBLENBQVF6TCxDQUFBLEVBQWUsU0FBUyxJQUFJMEwsSUFBQSxHQUFPQyxPQUFBLE1BSS9ELEtBQUtWLEdBQUEsS0FEZSxLQUNPeEQsSUFBQSxDQUFLLEtBQUt3RCxHQUFBLElBQU8sTUFBTSxPQUFPLE9BQU8sSUFBSVMsSUFBQSxHQUFPQyxPQUFBLEVBRS9FO1VBQUE7UUFFSjtRQU1BLFNBQVN0QixFQUFPbkssQ0FBQTtVQUNkLElBQUlNLENBQUEsR0FBTyxJQUFJK0ksUUFBQTtVQVlmLE9BWEFySixDQUFBLENBQ0cyRyxJQUFBLEdBQ0ErRSxLQUFBLENBQU0sS0FDTjdELE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQTtZQUNoQixJQUFJQSxDQUFBLEVBQU87Y0FDVCxJQUFJSSxDQUFBLEdBQVFKLENBQUEsQ0FBTTBMLEtBQUEsQ0FBTTtnQkFDcEJqTCxDQUFBLEdBQU9MLENBQUEsQ0FBTXNILEtBQUEsR0FBUTZELE9BQUEsQ0FBUSxPQUFPO2dCQUNwQzFMLENBQUEsR0FBUU8sQ0FBQSxDQUFNOEosSUFBQSxDQUFLLEtBQUtxQixPQUFBLENBQVEsT0FBTztjQUMzQ2pMLENBQUEsQ0FBS3dILE1BQUEsQ0FBTzZELGtCQUFBLENBQW1CbEwsQ0FBQSxHQUFPa0wsa0JBQUEsQ0FBbUI5TCxDQUFBLEVBQzNEO1lBQUE7VUFDRixJQUNLUyxDQUNUO1FBQUE7UUE0Qk8sU0FBU3NMLEVBQVM1TCxDQUFBLEVBQVVNLENBQUE7VUFDakMsTUFBTSxnQkFBZ0JzTCxDQUFBLEdBQ3BCLE1BQU0sSUFBSW5LLFNBQUEsQ0FBVTtVQUVqQm5CLENBQUEsS0FDSEEsQ0FBQSxHQUFVLENBQUMsSUFHYixLQUFLcUosSUFBQSxHQUFPLFdBQ1osS0FBS2tDLE1BQUEsUUFBNEIsTUFBbkJ2TCxDQUFBLENBQVF1TCxNQUFBLEdBQXVCLE1BQU12TCxDQUFBLENBQVF1TCxNQUFBLEVBQzNELEtBQUtDLEVBQUEsR0FBSyxLQUFLRCxNQUFBLElBQVUsT0FBTyxLQUFLQSxNQUFBLEdBQVMsS0FDOUMsS0FBS0UsVUFBQSxRQUFvQyxNQUF2QnpMLENBQUEsQ0FBUXlMLFVBQUEsR0FBMkIsS0FBSyxLQUFLekwsQ0FBQSxDQUFReUwsVUFBQSxFQUN2RSxLQUFLckMsT0FBQSxHQUFVLElBQUluRCxDQUFBLENBQVFqRyxDQUFBLENBQVFvSixPQUFBLEdBQ25DLEtBQUtxQixHQUFBLEdBQU16SyxDQUFBLENBQVF5SyxHQUFBLElBQU8sSUFDMUIsS0FBSy9CLFNBQUEsQ0FBVWhKLENBQUEsQ0FDakI7UUFBQTtRQTdEQTZLLENBQUEsQ0FBUXRKLFNBQUEsQ0FBVXlLLEtBQUEsR0FBUTtVQUN4QixPQUFPLElBQUluQixDQUFBLENBQVEsTUFBTTtZQUFDQyxJQUFBLEVBQU0sS0FBSzdCO1VBQUEsRUFDdkM7UUFBQSxHQTBDQTFJLENBQUEsQ0FBS2dDLElBQUEsQ0FBS3NJLENBQUEsQ0FBUXRKLFNBQUEsR0FtQmxCaEIsQ0FBQSxDQUFLZ0MsSUFBQSxDQUFLcUosQ0FBQSxDQUFTckssU0FBQSxHQUVuQnFLLENBQUEsQ0FBU3JLLFNBQUEsQ0FBVXlLLEtBQUEsR0FBUTtVQUN6QixPQUFPLElBQUlKLENBQUEsQ0FBUyxLQUFLM0MsU0FBQSxFQUFXO1lBQ2xDNEMsTUFBQSxFQUFRLEtBQUtBLE1BQUE7WUFDYkUsVUFBQSxFQUFZLEtBQUtBLFVBQUE7WUFDakJyQyxPQUFBLEVBQVMsSUFBSW5ELENBQUEsQ0FBUSxLQUFLbUQsT0FBQTtZQUMxQnFCLEdBQUEsRUFBSyxLQUFLQTtVQUFBLEVBRWQ7UUFBQSxHQUVBYSxDQUFBLENBQVNwRCxLQUFBLEdBQVE7VUFDZixJQUFJeEksQ0FBQSxHQUFXLElBQUk0TCxDQUFBLENBQVMsTUFBTTtZQUFDQyxNQUFBLEVBQVE7WUFBR0UsVUFBQSxFQUFZO1VBQUE7VUFFMUQsT0FEQS9MLENBQUEsQ0FBUzJKLElBQUEsR0FBTyxTQUNUM0osQ0FDVDtRQUFBO1FBRUEsSUFBSWlNLENBQUEsR0FBbUIsQ0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLO1FBRTVDTCxDQUFBLENBQVNNLFFBQUEsR0FBVyxVQUFTbE0sQ0FBQSxFQUFLTSxDQUFBO1VBQ2hDLEtBQTBDLE1BQXRDMkwsQ0FBQSxDQUFpQjNILE9BQUEsQ0FBUWhFLENBQUEsR0FDM0IsTUFBTSxJQUFJNkwsVUFBQSxDQUFXO1VBR3ZCLE9BQU8sSUFBSVAsQ0FBQSxDQUFTLE1BQU07WUFBQ0MsTUFBQSxFQUFRdkwsQ0FBQTtZQUFRb0osT0FBQSxFQUFTO2NBQUMwQyxRQUFBLEVBQVVwTTtZQUFBO1VBQUEsRUFDakU7UUFBQTtRQUVPLElBQUlxTSxDQUFBLEdBQWU1TCxDQUFBLENBQU82TCxZQUFBO1FBQ2pDO1VBQ0UsSUFBSUQsQ0FDTixDQURNLENBQ047UUFBQSxDQUFFLFFBQU9yTSxDQUFBO1VBQUEsQ0FDUHFNLENBQUEsR0FBZSxTQUFBQyxDQUFTdE0sQ0FBQSxFQUFTTSxDQUFBO1lBQy9CLEtBQUtvRyxPQUFBLEdBQVUxRyxDQUFBLEVBQ2YsS0FBS2dGLElBQUEsR0FBTzFFLENBQUE7WUFDWixJQUFJRixDQUFBLEdBQVFnRixLQUFBLENBQU1wRixDQUFBO1lBQ2xCLEtBQUt1TSxLQUFBLEdBQVFuTSxDQUFBLENBQU1tTSxLQUNyQjtVQUFBLEdBQ2FoTCxTQUFBLEdBQVlRLE1BQUEsQ0FBT1csTUFBQSxDQUFPMEMsS0FBQSxDQUFNN0QsU0FBQSxHQUM3QzhLLENBQUEsQ0FBYTlLLFNBQUEsQ0FBVUQsV0FBQSxHQUFjK0ssQ0FDdkM7UUFBQTtRQUVPLFNBQVNHLEVBQU14TSxDQUFBLEVBQU9NLENBQUE7VUFDM0IsT0FBTyxJQUFJNkgsT0FBQSxDQUFRLFVBQVMvSCxDQUFBLEVBQVNOLENBQUE7WUFDbkMsSUFBSUMsQ0FBQSxHQUFVLElBQUk4SyxDQUFBLENBQVE3SyxDQUFBLEVBQU9NLENBQUE7WUFFakMsSUFBSVAsQ0FBQSxDQUFRb0wsTUFBQSxJQUFVcEwsQ0FBQSxDQUFRb0wsTUFBQSxDQUFPc0IsT0FBQSxFQUNuQyxPQUFPM00sQ0FBQSxDQUFPLElBQUl1TSxDQUFBLENBQWEsV0FBVztZQUc1QyxJQUFJakcsQ0FBQSxHQUFNLElBQUlzRyxjQUFBO1lBRWQsU0FBU3BHLEVBQUE7Y0FDUEYsQ0FBQSxDQUFJdUcsS0FBQSxFQUNOO1lBQUE7WUFFQXZHLENBQUEsQ0FBSWlDLE1BQUEsR0FBUztjQUNYLElBbkdnQnJJLENBQUE7Z0JBQ2hCTSxDQUFBO2dCQWtHSUcsQ0FBQSxHQUFVO2tCQUNab0wsTUFBQSxFQUFRekYsQ0FBQSxDQUFJeUYsTUFBQTtrQkFDWkUsVUFBQSxFQUFZM0YsQ0FBQSxDQUFJMkYsVUFBQTtrQkFDaEJyQyxPQUFBLEdBdEdjMUosQ0FBQSxHQXNHUW9HLENBQUEsQ0FBSXdHLHFCQUFBLE1BQTJCLElBckd2RHRNLENBQUEsR0FBVSxJQUFJaUcsQ0FBQSxJQUdRdkcsQ0FBQSxDQUFXdUwsT0FBQSxDQUFRLGdCQUFnQixLQUsxREcsS0FBQSxDQUFNLE1BQ045RCxHQUFBLENBQUksVUFBUzVILENBQUE7b0JBQ1osT0FBZ0MsTUFBekJBLENBQUEsQ0FBT3NFLE9BQUEsQ0FBUSxRQUFjdEUsQ0FBQSxDQUFPNk0sTUFBQSxDQUFPLEdBQUc3TSxDQUFBLENBQU8yQixNQUFBLElBQVUzQixDQUN4RTtrQkFBQSxHQUNDNkgsT0FBQSxDQUFRLFVBQVM3SCxDQUFBO29CQUNoQixJQUFJSSxDQUFBLEdBQVFKLENBQUEsQ0FBSzBMLEtBQUEsQ0FBTTtzQkFDbkJqTCxDQUFBLEdBQU1MLENBQUEsQ0FBTXNILEtBQUEsR0FBUWYsSUFBQTtvQkFDeEIsSUFBSWxHLENBQUEsRUFBSztzQkFDUCxJQUFJWixDQUFBLEdBQVFPLENBQUEsQ0FBTThKLElBQUEsQ0FBSyxLQUFLdkQsSUFBQTtzQkFDNUJyRyxDQUFBLENBQVF3SCxNQUFBLENBQU9ySCxDQUFBLEVBQUtaLENBQUEsQ0FDdEI7b0JBQUE7a0JBQ0YsSUFDS1MsQ0FBQTtnQkFBQTtjQW1GSEcsQ0FBQSxDQUFRc0ssR0FBQSxHQUFNLGlCQUFpQjNFLENBQUEsR0FBTUEsQ0FBQSxDQUFJMEcsV0FBQSxHQUFjck0sQ0FBQSxDQUFRaUosT0FBQSxDQUFRL0YsR0FBQSxDQUFJO2NBQzNFLElBQUk5RCxDQUFBLEdBQU8sY0FBY3VHLENBQUEsR0FBTUEsQ0FBQSxDQUFJMkcsUUFBQSxHQUFXM0csQ0FBQSxDQUFJNEcsWUFBQTtjQUNsREMsVUFBQSxDQUFXO2dCQUNUN00sQ0FBQSxDQUFRLElBQUl3TCxDQUFBLENBQVMvTCxDQUFBLEVBQU1ZLENBQUEsRUFDN0I7Y0FBQSxHQUFHLEVBQ0w7WUFBQSxHQUVBMkYsQ0FBQSxDQUFJbUMsT0FBQSxHQUFVO2NBQ1owRSxVQUFBLENBQVc7Z0JBQ1RuTixDQUFBLENBQU8sSUFBSTJCLFNBQUEsQ0FBVSwwQkFDdkI7Y0FBQSxHQUFHLEVBQ0w7WUFBQSxHQUVBMkUsQ0FBQSxDQUFJOEcsU0FBQSxHQUFZO2NBQ2RELFVBQUEsQ0FBVztnQkFDVG5OLENBQUEsQ0FBTyxJQUFJMkIsU0FBQSxDQUFVLDBCQUN2QjtjQUFBLEdBQUcsRUFDTDtZQUFBLEdBRUEyRSxDQUFBLENBQUkrRyxPQUFBLEdBQVU7Y0FDWkYsVUFBQSxDQUFXO2dCQUNUbk4sQ0FBQSxDQUFPLElBQUl1TSxDQUFBLENBQWEsV0FBVyxjQUNyQztjQUFBLEdBQUcsRUFDTDtZQUFBLEdBVUFqRyxDQUFBLENBQUlnSCxJQUFBLENBQUtyTixDQUFBLENBQVFrTCxNQUFBLEVBUmpCLFVBQWdCakwsQ0FBQTtjQUNkO2dCQUNFLE9BQWUsT0FBUkEsQ0FBQSxJQUFjUyxDQUFBLENBQU8yTCxRQUFBLENBQVNpQixJQUFBLEdBQU81TSxDQUFBLENBQU8yTCxRQUFBLENBQVNpQixJQUFBLEdBQU9yTixDQUNyRTtjQUFBLENBQUUsUUFBT00sQ0FBQTtnQkFDUCxPQUFPTixDQUNUO2NBQUE7WUFDRixDQUV5QixDQUFPRCxDQUFBLENBQVFnTCxHQUFBLElBQU0sSUFFbEIsY0FBeEJoTCxDQUFBLENBQVFpTCxXQUFBLEdBQ1Y1RSxDQUFBLENBQUlrSCxlQUFBLElBQWtCLElBQ1csV0FBeEJ2TixDQUFBLENBQVFpTCxXQUFBLEtBQ2pCNUUsQ0FBQSxDQUFJa0gsZUFBQSxJQUFrQixJQUdwQixrQkFBa0JsSCxDQUFBLEtBQ2hCdkcsQ0FBQSxDQUFRb0gsSUFBQSxHQUNWYixDQUFBLENBQUltSCxZQUFBLEdBQWUsU0FFbkIxTixDQUFBLENBQVF1SCxXQUFBLElBQ1JySCxDQUFBLENBQVEySixPQUFBLENBQVEvRixHQUFBLENBQUksb0JBQ3lELE1BQTdFNUQsQ0FBQSxDQUFRMkosT0FBQSxDQUFRL0YsR0FBQSxDQUFJLGdCQUFnQlcsT0FBQSxDQUFRLGdDQUU1QzhCLENBQUEsQ0FBSW1ILFlBQUEsR0FBZSxrQkFJbkJqTixDQUFBLElBQWdDLG1CQUFqQkEsQ0FBQSxDQUFLb0osT0FBQSxJQUEwQnBKLENBQUEsQ0FBS29KLE9BQUEsWUFBbUJuRCxDQUFBLEdBS3hFeEcsQ0FBQSxDQUFRMkosT0FBQSxDQUFRN0IsT0FBQSxDQUFRLFVBQVM3SCxDQUFBLEVBQU9NLENBQUE7Y0FDdEM4RixDQUFBLENBQUlvSCxnQkFBQSxDQUFpQmxOLENBQUEsRUFBTU4sQ0FBQSxDQUM3QjtZQUFBLEtBTkErQixNQUFBLENBQU9rRyxtQkFBQSxDQUFvQjNILENBQUEsQ0FBS29KLE9BQUEsRUFBUzdCLE9BQUEsQ0FBUSxVQUFTN0gsQ0FBQTtjQUN4RG9HLENBQUEsQ0FBSW9ILGdCQUFBLENBQWlCeE4sQ0FBQSxFQUFNcUcsQ0FBQSxDQUFlL0YsQ0FBQSxDQUFLb0osT0FBQSxDQUFRMUosQ0FBQSxHQUN6RDtZQUFBLElBT0VELENBQUEsQ0FBUW9MLE1BQUEsS0FDVnBMLENBQUEsQ0FBUW9MLE1BQUEsQ0FBT3NDLGdCQUFBLENBQWlCLFNBQVNuSCxDQUFBLEdBRXpDRixDQUFBLENBQUlzSCxrQkFBQSxHQUFxQjtjQUVBLE1BQW5CdEgsQ0FBQSxDQUFJdUgsVUFBQSxJQUNONU4sQ0FBQSxDQUFRb0wsTUFBQSxDQUFPeUMsbUJBQUEsQ0FBb0IsU0FBU3RILENBQUEsQ0FFaEQ7WUFBQSxJQUdGRixDQUFBLENBQUl5SCxJQUFBLE1BQWtDLE1BQXRCOU4sQ0FBQSxDQUFRa0osU0FBQSxHQUE0QixPQUFPbEosQ0FBQSxDQUFRa0osU0FBQSxDQUNyRTtVQUFBLEVBQ0Y7UUFBQTtRQUVBdUQsQ0FBQSxDQUFNc0IsUUFBQSxJQUFXLEdBRVpyTixDQUFBLENBQU9zTixLQUFBLEtBQ1Z0TixDQUFBLENBQU9zTixLQUFBLEdBQVF2QixDQUFBLEVBQ2YvTCxDQUFBLENBQU91TixPQUFBLEdBQVV6SCxDQUFBLEVBQ2pCOUYsQ0FBQSxDQUFPd04sT0FBQSxHQUFVcEQsQ0FBQSxFQUNqQnBLLENBQUEsQ0FBT3lOLFFBQUEsR0FBV3RDLENBQUE7UUFBQSxJQUFBdUMsQ0FBQTtVQUFBQyxDQUFBLEdBQUFoTyxDQUFBO1VBQUFpTyxDQUFBLEdBQUFqTyxDQUFBO1VBQUFrTyxDQUFBLEdBQUFsTyxDQUFBO1VBQUFtTyxDQUFBLEdBQUFuTyxDQUFBO1VBQUFvTyxDQUFBLEdBQUFwTyxDQUFBO1FBQUEsU0FBQXFPLEVBQUF6TyxDQUFBO1VBQUEsT0FBQXlPLENBQUEsd0JBQUFyTixNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBeU8sQ0FBQSxDQUFBek8sQ0FBQTtRQUFBO1FBQUEsU0FBQTBPLEVBQUExTyxDQUFBLEVBQUFNLENBQUE7VUFBQSxJQUFBRixDQUFBLEdBQUEyQixNQUFBLENBQUEwSSxJQUFBLENBQUF6SyxDQUFBO1VBQUEsSUFBQStCLE1BQUEsQ0FBQTRNLHFCQUFBO1lBQUEsSUFBQWxPLENBQUEsR0FBQXNCLE1BQUEsQ0FBQTRNLHFCQUFBLENBQUEzTyxDQUFBO1lBQUFNLENBQUEsS0FBQUcsQ0FBQSxHQUFBQSxDQUFBLENBQUFtTyxNQUFBLFdBQUF0TyxDQUFBO2NBQUEsT0FBQXlCLE1BQUEsQ0FBQThNLHdCQUFBLENBQUE3TyxDQUFBLEVBQUFNLENBQUEsRUFBQXNCLFVBQUE7WUFBQSxLQUFBeEIsQ0FBQSxDQUFBMkQsSUFBQSxDQUFBWixLQUFBLENBQUEvQyxDQUFBLEVBQUFLLENBQUE7VUFBQTtVQUFBLE9BQUFMLENBQUE7UUFBQTtRQUFBLFNBQUEwTyxFQUFBOU8sQ0FBQTtVQUFBLFNBQUFNLENBQUEsTUFBQUEsQ0FBQSxHQUFBNEMsU0FBQSxDQUFBdkIsTUFBQSxFQUFBckIsQ0FBQTtZQUFBLElBQUFGLENBQUEsV0FBQThDLFNBQUEsQ0FBQTVDLENBQUEsSUFBQTRDLFNBQUEsQ0FBQTVDLENBQUE7WUFBQUEsQ0FBQSxPQUFBb08sQ0FBQSxDQUFBM00sTUFBQSxDQUFBM0IsQ0FBQSxPQUFBeUgsT0FBQSxXQUFBdkgsQ0FBQTtjQUFBeU8sQ0FBQSxDQUFBL08sQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUEsQ0FBQUUsQ0FBQTtZQUFBLEtBQUF5QixNQUFBLENBQUFpTix5QkFBQSxHQUFBak4sTUFBQSxDQUFBa04sZ0JBQUEsQ0FBQWpQLENBQUEsRUFBQStCLE1BQUEsQ0FBQWlOLHlCQUFBLENBQUE1TyxDQUFBLEtBQUFzTyxDQUFBLENBQUEzTSxNQUFBLENBQUEzQixDQUFBLEdBQUF5SCxPQUFBLFdBQUF2SCxDQUFBO2NBQUF5QixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsRUFBQU0sQ0FBQSxFQUFBeUIsTUFBQSxDQUFBOE0sd0JBQUEsQ0FBQXpPLENBQUEsRUFBQUUsQ0FBQTtZQUFBO1VBQUE7VUFBQSxPQUFBTixDQUFBO1FBQUE7UUFBQSxTQUFBK08sRUFBQS9PLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1VBQUEsUUFBQUUsQ0FBQSxhQUFBTixDQUFBO1lBQUEsSUFBQU0sQ0FBQSxhQUFBTixDQUFBLEVBQUFNLENBQUE7Y0FBQSxpQkFBQW1PLENBQUEsQ0FBQXpPLENBQUEsY0FBQUEsQ0FBQSxTQUFBQSxDQUFBO2NBQUEsSUFBQUksQ0FBQSxHQUFBSixDQUFBLENBQUFvQixNQUFBLENBQUFrQixXQUFBO2NBQUEsZUFBQWxDLENBQUE7Z0JBQUEsSUFBQUssQ0FBQSxHQUFBTCxDQUFBLENBQUFtQyxJQUFBLENBQUF2QyxDQUFBO2dCQUFBLGlCQUFBeU8sQ0FBQSxDQUFBaE8sQ0FBQSxVQUFBQSxDQUFBO2dCQUFBLFVBQUFnQixTQUFBO2NBQUE7Y0FBQSxPQUFBWSxNQUFBLENBQUFyQyxDQUFBO1lBQUEsRUFBQUEsQ0FBQTtZQUFBLG9CQUFBeU8sQ0FBQSxDQUFBbk8sQ0FBQSxJQUFBQSxDQUFBLEdBQUErQixNQUFBLENBQUEvQixDQUFBO1VBQUEsRUFBQUEsQ0FBQSxNQUFBTixDQUFBLEdBQUErQixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsRUFBQU0sQ0FBQTtZQUFBcUMsS0FBQSxFQUFBdkMsQ0FBQTtZQUFBd0IsVUFBQTtZQUFBQyxZQUFBO1lBQUFDLFFBQUE7VUFBQSxLQUFBOUIsQ0FBQSxDQUFBTSxDQUFBLElBQUFGLENBQUEsRUFBQUosQ0FBQTtRQUFBO1FBQUEsU0FBQWtQLEVBQUFsUCxDQUFBLEVBQUFNLENBQUE7VUFBQSxTQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQU4sQ0FBQSxDQUFBMkIsTUFBQSxNQUFBckIsQ0FBQSxHQUFBTixDQUFBLENBQUEyQixNQUFBO1VBQUEsU0FBQXZCLENBQUEsTUFBQUssQ0FBQSxPQUFBc0gsS0FBQSxDQUFBekgsQ0FBQSxHQUFBRixDQUFBLEdBQUFFLENBQUEsRUFBQUYsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsSUFBQUosQ0FBQSxDQUFBSSxDQUFBO1VBQUEsT0FBQUssQ0FBQTtRQUFBO1FDeGhCcEIsU0FBUzBPLEVBQUEsR0FDTDtRQUdKLFNBQVNDLEVBQVVwUCxDQUFBO1VBQ2YsT0FBcUIsbUJBQVZBLENBQUEsR0FDTyxZQUFWQSxDQUFBLElBR1UsV0FBVkEsQ0FBQSxHQUtEbUUsT0FBQSxDQUFRbkUsQ0FBQSxDQUNuQjtRQUFBO1FBRUEsU0FBU3FQLEVBQUE7VUFBc0MsSUFBbENyUCxDQUFBLEdBQW1Ca0QsU0FBQSxDQUFBdkIsTUFBQSxtQkFBQXVCLFNBQUEsTUFBQUEsU0FBQSxNQUFHO1lBQ3pCNUMsQ0FBQSxHQUFVRixDQUFBLENBQUErSixDQUFBLENBQU9tRixFQUFBLENBQUdDLFVBQUEsSUFBYztVQUV4QyxPQUFPLEdBQUF0UCxNQUFBLENBQUdLLENBQUEsRUFBTyxLQUFBTCxNQUFBLENBQUlELENBQUEsRUFBY3VMLE9BQUEsQ0FBUSxpQkFBaUIsTUFDaEU7UUFBQTtRQUVBLFNBQVNpRSxFQUFTeFAsQ0FBQSxFQUFjTSxDQUFBO1VBQzVCLFNBQWUsTUFBWEEsQ0FBQSxFQUNBLE9BQU9OLENBQUE7VUFHWCxLQURBLElBQU1JLENBQUEsR0FBdUIsSUFDN0JLLENBQUEsTUFBQVosQ0FBQSxHQUF3QmtDLE1BQUEsQ0FBTzBJLElBQUEsQ0FBS25LLENBQUEsR0FBT0csQ0FBQSxHQUFBWixDQUFBLENBQUE4QixNQUFBLEVBQUFsQixDQUFBLElBQUU7WUFBeEMsSUFBTVgsQ0FBQSxHQUFTRCxDQUFBLENBQUFZLENBQUE7Y0FDVlYsQ0FBQSxHQUFhTyxDQUFBLENBQU9SLENBQUE7WUFDUixRQUFkQyxDQUFBLElBQ0FLLENBQUEsQ0FBVzJELElBQUEsQ0FBSyxHQUFEOUQsTUFBQSxDQUFJSCxDQUFBLEVBQVMsS0FBQUcsTUFBQSxDQUFJd1Asa0JBQUEsQ0FBbUIxUCxDQUFBLEdBRTNEO1VBQUE7VUFDQSxPQUEwQixNQUF0QkssQ0FBQSxDQUFXdUIsTUFBQSxHQUNKM0IsQ0FBQSxHQUVKQSxDQUFBLEdBQU8sTUFBTUksQ0FBQSxDQUFXOEosSUFBQSxDQUFLLElBQ3hDO1FBQUE7UUFFQSxTQUFTd0YsRUFBVTFQLENBQUE7VUFDZixPQUFPLElBQUkyUCxNQUFBLENBQU8sT0FBRDFQLE1BQUEsQ0FBUUQsQ0FBQSxDQUFRdUwsT0FBQSxDQUFRLE9BQU8sT0FBT0EsT0FBQSxDQUFRLE9BQU8saUJBQWUsT0FBTWhFLElBQUEsQ0FDdkZuSCxDQUFBLENBQUErSixDQUFBLENBQU9pQyxRQUFBLENBQVN3RCxJQUFBLENBRXhCO1FBQUE7UUFFQSxTQUFTQyxFQUFtQjdQLENBQUE7VUFDeEIsUUFDS0ksQ0FBQSxDQUFBK0osQ0FBQSxDQUFPaUMsUUFBQSxDQUFTMEQsTUFBQSxDQUNabkosSUFBQSxHQUNBNEUsT0FBQSxDQUFRLGFBQWEsSUFDckJHLEtBQUEsQ0FBTSxLQUNOOUQsR0FBQSxDQUFJLFVBQUE1SCxDQUFBO1lBQUssT0FBSUEsQ0FBQSxDQUFNdUwsT0FBQSxDQUFRLE9BQU8sS0FBS0csS0FBQSxDQUFNLEtBQUs5RCxHQUFBLENBQUkrRCxrQkFBQSxDQUFtQjtVQUFBLEdBRXpFb0UsSUFBQSxDQUFLLFVBQUF6UCxDQUFBO1lBQUssUUFBQUYsQ0FBQSxHQUFMRSxDQUFBLEVBQUFHLENBQUEsZ0JBQUFULENBQUE7Y0FBQSxJQUFBK0gsS0FBQSxDQUFBQyxPQUFBLENBQUFoSSxDQUFBLFVBQUFBLENBQUE7WUFBQSxFQUFBSSxDQUFBLGVBQUFKLENBQUEsRUFBQU0sQ0FBQTtjQUFBLElBQUFGLENBQUEsV0FBQUosQ0FBQSxnQ0FBQW9CLE1BQUEsSUFBQXBCLENBQUEsQ0FBQW9CLE1BQUEsQ0FBQUMsUUFBQSxLQUFBckIsQ0FBQTtjQUFBLFlBQUFJLENBQUE7Z0JBQUEsSUFBQUssQ0FBQTtrQkFBQVosQ0FBQTtrQkFBQUMsQ0FBQTtrQkFBQUMsQ0FBQTtrQkFBQXFHLENBQUE7a0JBQUFDLENBQUE7a0JBQUFDLENBQUE7Z0JBQUE7a0JBQUEsSUFBQXhHLENBQUEsSUFBQU0sQ0FBQSxHQUFBQSxDQUFBLENBQUFtQyxJQUFBLENBQUF2QyxDQUFBLEdBQUF5SCxJQUFBLFFBQUFuSCxDQUFBO29CQUFBLElBQUF5QixNQUFBLENBQUEzQixDQUFBLE1BQUFBLENBQUE7b0JBQUFpRyxDQUFBO2tCQUFBLGdCQUFBQSxDQUFBLElBQUE1RixDQUFBLEdBQUFYLENBQUEsQ0FBQXlDLElBQUEsQ0FBQW5DLENBQUEsR0FBQXVILElBQUEsTUFBQXZCLENBQUEsQ0FBQXJDLElBQUEsQ0FBQXRELENBQUEsQ0FBQWtDLEtBQUEsR0FBQXlELENBQUEsQ0FBQXpFLE1BQUEsS0FBQXJCLENBQUEsR0FBQStGLENBQUE7Z0JBQUEsU0FBQXJHLENBQUE7a0JBQUFzRyxDQUFBLE9BQUF6RyxDQUFBLEdBQUFHLENBQUE7Z0JBQUE7a0JBQUE7b0JBQUEsS0FBQXFHLENBQUEsWUFBQWpHLENBQUEsQ0FBQTRQLE1BQUEsS0FBQWpRLENBQUEsR0FBQUssQ0FBQSxDQUFBNFAsTUFBQSxJQUFBak8sTUFBQSxDQUFBaEMsQ0FBQSxNQUFBQSxDQUFBO2tCQUFBO29CQUFBLElBQUF1RyxDQUFBLFFBQUF6RyxDQUFBO2tCQUFBO2dCQUFBO2dCQUFBLE9BQUF1RyxDQUFBO2NBQUE7WUFBQSxFQUFBaEcsQ0FBQSxFQUFBSyxDQUFBLGVBQUFULENBQUEsRUFBQU0sQ0FBQTtjQUFBLElBQUFOLENBQUE7Z0JBQUEsdUJBQUFBLENBQUEsU0FBQWtQLENBQUEsQ0FBQWxQLENBQUEsRUFBQU0sQ0FBQTtnQkFBQSxJQUFBRixDQUFBLEdBQUEyQixNQUFBLENBQUFSLFNBQUEsQ0FBQThDLFFBQUEsQ0FBQTlCLElBQUEsQ0FBQXZDLENBQUEsRUFBQTRHLEtBQUE7Z0JBQUEsb0JBQUF4RyxDQUFBLElBQUFKLENBQUEsQ0FBQXNCLFdBQUEsS0FBQWxCLENBQUEsR0FBQUosQ0FBQSxDQUFBc0IsV0FBQSxDQUFBMEQsSUFBQSxhQUFBNUUsQ0FBQSxjQUFBQSxDQUFBLEdBQUEySCxLQUFBLENBQUFrSSxJQUFBLENBQUFqUSxDQUFBLG9CQUFBSSxDQUFBLCtDQUFBbUgsSUFBQSxDQUFBbkgsQ0FBQSxJQUFBOE8sQ0FBQSxDQUFBbFAsQ0FBQSxFQUFBTSxDQUFBO2NBQUE7WUFBQSxFQUFBRixDQUFBLEVBQUFLLENBQUE7Y0FBQSxVQUFBZ0IsU0FBQTtZQUFBLEtBQUssTUFBYXpCLENBQUE7WUFBQSxJQUFBSSxDQUFBLEVBQUFLLENBQUk7VUFBQSxNQUFLLElBQUksRUFFakQ7UUFBQTtRQUlBLFNBQVN5UCxFQUFZbFEsQ0FBQSxFQUFlTSxDQUFBO1VBQ2hDLElBQUlGLENBQUEsR0FBWTtVQUVoQkosQ0FBQSxDQUFNNkgsT0FBQSxDQUFRLFVBQUFwSCxDQUFBO1lBQ1ZBLENBQUEsQ0FBSyxVQUFBQSxDQUFBO2NBQ0QsSUFBSUwsQ0FBQSxLQUFjSixDQUFBLENBQU0yQixNQUFBLEVBQXhCO2dCQUdBLElBQUlsQixDQUFBLEVBSUEsT0FIQUwsQ0FBQSxHQUFZSixDQUFBLENBQU0yQixNQUFBLE9BQ2xCckIsQ0FBQSxDQUFTRyxDQUFBO2dCQUFBLENBSWJMLENBQUEsSUFBYSxPQUNLSixDQUFBLENBQU0yQixNQUFBLElBQ3BCckIsQ0FBQSxFQVRKO2NBQUE7WUFXSixFQUNKO1VBQUEsRUFDSjtRQUFBO1FBZ0NBLFNBQVM2UCxFQUFTblEsQ0FBQSxFQUE0Qk0sQ0FBQTtVQUMxQyxJQUFRRyxDQUFBLEdBQXlDVCxDQUFBLENBQXpDb1EsR0FBQTtZQUFLdlEsQ0FBQSxHQUFvQ0csQ0FBQSxDQUFwQ3FRLGFBQUE7WUFBZXZRLENBQUEsR0FBcUJFLENBQUEsQ0FBckJzUSxnQkFBQTtVQUU1QixJQUFJbFEsQ0FBQSxDQUFBK0osQ0FBQSxDQUFPbUYsRUFBQSxDQUFHaUIsVUFBQSxDQUFXOVAsQ0FBQSxHQUNyQkgsQ0FBQSxRQURKO1lBSUEsSUFBTVAsQ0FBQSxHQUFlRixDQUFBLEtBQWtCTyxDQUFBLENBQUErSixDQUFBLENBQU90SyxDQUFBO2NBR3hDdUcsQ0FBQSxHQUFzQyxXQUFoQ3lKLENBQUEsQ0FBbUIsV0FBc0IsS0FBSztjQUNwRHhKLENBQUEsR0FBZ0I7Y0FFaEJDLENBQUEsR0FBUztnQkFBRXNGLENBQUEsRUFBRzlMLENBQUE7Z0JBQWtCMFEsWUFBQSxFQUFjeFEsQ0FBQSxDQUFTd1E7Y0FBQTtZQUV6RG5LLENBQUEsQ0FBTXRDLElBQUEsQ0FBSyxVQUFBL0QsQ0FBQTtjQUFFLE9BQ1RxTyxDQUFBLENBQUFyTyxDQUFBLENBQWlCeVEsVUFBQSxDQUFXcEIsQ0FBQSxDQUFJRyxDQUFBLENBQVMsd0JBQUR2UCxNQUFBLENBQXlCUSxDQUFBLEVBQUdSLE1BQUEsQ0FBR21HLENBQUEsRUFBRyxTQUFRRSxDQUFBLEtBQVUsR0FBTXRHLENBQUEsQ0FBRztZQUFBLElBRzdHcUcsQ0FBQSxDQUFNdEMsSUFBQSxDQUFLLFVBQUEvRCxDQUFBO2NBQUUsT0FBSXFPLENBQUEsQ0FBQXJPLENBQUEsQ0FBaUIwUSxNQUFBLENBQU9yQixDQUFBLENBQUlHLENBQUEsQ0FBUyx5QkFBRHZQLE1BQUEsQ0FBMEJRLENBQUEsRUFBR1IsTUFBQSxDQUFHbUcsQ0FBQSxFQUFHLFFBQU9FLENBQUEsSUFBVXRHLENBQUEsQ0FBRztZQUFBLElBRXhHRCxDQUFBLElBQ0FzRyxDQUFBLENBQU10QyxJQUFBLENBQ0YsVUFBQS9ELENBQUE7Y0FBRSxPQUNFcU8sQ0FBQSxDQUFBck8sQ0FBQSxDQUFpQnlRLFVBQUEsQ0FDYnBCLENBQUEsQ0FBSUcsQ0FBQSxDQUFTLDhCQUFEdlAsTUFBQSxDQUErQkosQ0FBQSxFQUFhSSxNQUFBLENBQUdtRyxDQUFBLEVBQUcsU0FBUUUsQ0FBQSxLQUN0RSxHQUNBdEcsQ0FBQSxDQUNIO1lBQUEsR0FDTCxVQUFBQSxDQUFBO2NBQUUsT0FDRXFPLENBQUEsQ0FBQXJPLENBQUEsQ0FBaUIwUSxNQUFBLENBQ2JyQixDQUFBLENBQUlHLENBQUEsQ0FBUywrQkFBRHZQLE1BQUEsQ0FBZ0NKLENBQUEsRUFBYUksTUFBQSxDQUFHbUcsQ0FBQSxFQUFHLFFBQU9FLENBQUEsSUFDdEV0RyxDQUFBLENBQ0g7WUFBQSxJQUlia1EsQ0FBQSxDQUFZN0osQ0FBQSxFQUFPL0YsQ0FBQSxDQS9CbkI7VUFBQTtRQWdDSjtRQUVBLFNBQVNxUSxFQUNMM1EsQ0FBQSxFQUNBTSxDQUFBLEVBQ0FHLENBQUE7VUFDSSxJQUFBWixDQUFBO1VBQUEsQ0FFMEMsVUFEMUJBLENBQUEsR0FDaEJPLENBQUEsQ0FBQStKLENBQUEsQ0FBT21GLEVBQUEsQ0FBR2lCLFVBQUEsQ0FBV2pRLENBQUEsQ0FBaUI4UCxHQUFBLFdBQUksTUFBQXZRLENBQUEsR0FBQUEsQ0FBQSxJQUFJLEdBQUF1TyxDQUFBLENBQUEzSCxFQUFBLEVBQU8sb0JBQUR4RyxNQUFBLENBQXFCSyxDQUFBLENBQWlCOFAsR0FBQSxFQUFHLGlCQUNsRnBRLENBQUEsRUFBYU0sQ0FBQSxFQUN2QndKLElBQUEsQ0FBSyxVQUFBOUosQ0FBQTtZQUNGLElBQU1NLENBQUEsR0FBYU4sQ0FBQSxDQUFLNFEsVUFBQSxLQUFjLEdBQUFwQyxDQUFBLENBQUFILENBQUEsRUFBdUJyTyxDQUFBO1lBRTdEUyxDQUFBLENBQVMsTUFBTUgsQ0FBQSxDQUNuQjtVQUFBLEdBQUV1USxLQUFBLENBQ0twUSxDQUFBLENBQ2Y7UUFBQTtRQXFCQSxTQUFTcVEsRUFBb0I5USxDQUFBO1VBQ3pCLElBQXFCLFFBQWpCQSxDQUFBLEVBSUosT0FBT0ksQ0FBQSxDQUFBK0osQ0FBQSxDQUFPbkssQ0FBQSxLQUFrQkksQ0FBQSxDQUFBK0osQ0FBQSxDQUFPbkssQ0FBQSxFQUFjWSxPQUN6RDtRQUFBO1FBRUEsU0FBU21RLEVBQ0wvUSxDQUFBLEVBQ0FNLENBQUE7VUFFSSxJQUFBRyxDQUFBO1lBQUFaLENBQUE7WUFESkMsQ0FBQSxHQUF5Q29ELFNBQUEsQ0FBQXZCLE1BQUEsbUJBQUF1QixTQUFBLE1BQUFBLFNBQUEsTUFBR2lNLENBQUE7WUFFeENwUCxDQUFBLEdBQVE7WUFDSnFHLENBQUEsR0FBZ0I5RixDQUFBLENBQWhCSixFQUFBO1lBQUltRyxDQUFBLEdBQVkvRixDQUFBLENBQVpILE9BQUE7VUFZWixJQVZLdVAsQ0FBQSxDQUFVbkIsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlQyxhQUFBLElBRWxCMUMsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlRSxVQUFBLEdBRWY3SyxDQUFBLEdBRUFELENBQUEsS0FDUnJHLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLDZCQUZsQnJGLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLGlDQUZsQnJGLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLDBCQUZsQnJGLENBQUEsR0FBUSxJQUFJcUYsS0FBQSxDQUFNLHFCQVNsQnJGLENBQUEsRUFDQUQsQ0FBQSxDQUFTQyxDQUFBLE9BRGI7WUFLQSxJQUFNdUcsQ0FBQSxHQUFtQyxVQUF2QjdGLENBQUEsR0FBR0gsQ0FBQSxDQUFRa1EsWUFBQSxVQUFZLE1BQUEvUCxDQUFBLEdBQUFBLENBQUEsR0FBSW9QLENBQUEsQ0FBbUI7Y0FDMUR0SixDQUFBLEdBQWlCaUosQ0FBQSxDQUFTSCxDQUFBLEVBQUksR0FBQWYsQ0FBQSxDQUFBL04sQ0FBQSxFQUFzQjtnQkFBRUwsRUFBQSxFQUFJa0csQ0FBQTtnQkFBSWpHLE9BQUEsRUFBU2tHO2NBQUEsS0FBYTtnQkFDdEZtSyxZQUFBLEVBQWNsSztjQUFBO2NBR1pFLENBQUEsR0FBOEI7Z0JBQUV5RSxNQUFBLEVBQVE7Y0FBQTtZQUM5QyxJQUE4QixRQUExQjNLLENBQUEsQ0FBUTZRLGNBQUEsSUFBMEQsa0NBQTNCN1EsQ0FBQSxDQUFRNlEsY0FBQSxFQUMvQzNLLENBQUEsQ0FBZXdFLFdBQUEsR0FBYyxlQUMxQixJQUFJLGFBQWExSyxDQUFBLENBQVE2USxjQUFBLElBQW9ELFFBQWxDN1EsQ0FBQSxDQUFRNlEsY0FBQSxDQUFlQyxPQUFBLEVBQXNCO2NBQUEsSUFBQS9RLENBQUE7Y0FDM0ZtRyxDQUFBLENBQWV3RSxXQUFBLEdBQWMsUUFDN0J4RSxDQUFBLENBQWVrRCxPQUFBLEdBQWdDLFVBQXpCckosQ0FBQSxHQUFHbUcsQ0FBQSxDQUFla0QsT0FBQSxVQUFPLE1BQUFySixDQUFBLEdBQUFBLENBQUEsR0FBSSxDQUFDLEdBQ3BEbUcsQ0FBQSxDQUFla0QsT0FBQSxDQUF1QjJILGFBQUEsR0FBSSxZQUFIcFIsTUFBQSxDQUFlSyxDQUFBLENBQVE2USxjQUFBLENBQWVDLE9BQUEsQ0FDakY7WUFBQSxPQUNJNUssQ0FBQSxDQUFld0UsV0FBQSxHQUFjO1lBQUEsQ0FFRixVQUFoQm5MLENBQUEsR0FBR1MsQ0FBQSxDQUFReU4sS0FBQSxVQUFLLE1BQUFsTyxDQUFBLEdBQUFBLENBQUEsR0FBSTJNLENBQUEsRUFFekJqRyxDQUFBLEVBQWdCQyxDQUFBLEVBQ3JCc0QsSUFBQSxDQUFLLFVBQUE5SixDQUFBO2NBQUMsT0FBSUEsQ0FBQSxDQUFFb0ssSUFBQSxFQUFNO1lBQUEsR0FDbEJOLElBQUEsQ0FBSyxVQUFDckosQ0FBQTtjQUE2QyxJQUFBWixDQUFBO2dCQUFBRSxDQUFBO2dCQUFBcUcsQ0FBQTtnQkFBQUMsQ0FBQTtnQkFDMUNFLENBQUEsR0FBTTlGLENBQUEsQ0FBZ0IyUCxHQUFBO2dCQUN0QjVKLENBQUEsR0FBZ0IvRixDQUFBLENBQWdCNFAsYUFBQTtnQkFDaENoUSxDQUFBLEdBQWdCeU8sQ0FBQSxDQUFBQSxDQUFBLENBQUFBLENBQUE7a0JBQ2xCb0MsVUFBQSxFQUFZM0MsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlRSxVQUFBO2tCQUMzQkksY0FBQSxFQUFnQi9DLENBQUEsQ0FBQXlDLENBQUEsQ0FBZU0sY0FBQTtrQkFDL0JDLFlBQUEsRUFBY2hELENBQUEsQ0FBQXlDLENBQUEsQ0FBZU8sWUFBQTtrQkFDN0JDLG1CQUFBLEVBQXFCakQsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlUSxtQkFBQTtrQkFDcENDLHFCQUFBLEVBQXVCbEQsQ0FBQSxDQUFBeUMsQ0FBQSxDQUFlUyxxQkFBQTtrQkFDdENDLFlBQUEsRUFBY25ELENBQUEsQ0FBQXlDLENBQUEsQ0FBZVUsWUFBQTtrQkFDN0JwQixnQkFBQSxFQUFrQi9CLENBQUEsQ0FBQXlDLENBQUEsQ0FBZVYsZ0JBQUE7a0JBQ2pDVyxhQUFBLEVBQWUxQyxDQUFBLENBQUF5QyxDQUFBLENBQWVDO2dCQUFBLEdBQzNCM1EsQ0FBQSxHQUNBRyxDQUFBLEdBQWU7a0JBQ2xCMlAsR0FBQSxFQUFLN0osQ0FBQTtrQkFDTDhKLGFBQUEsRUFBZTdKLENBQUE7a0JBQ2ZtTCxlQUFBLEVBQXdDLFVBQXpCOVIsQ0FBQSxHQUFFUyxDQUFBLENBQVFxUixlQUFBLFVBQWUsTUFBQTlSLENBQUEsR0FBQUEsQ0FBQSxHQUFJWSxDQUFBLENBQWdCa1IsZUFBQTtrQkFDNURDLG1CQUFBLEVBQWdELFVBQTdCN1IsQ0FBQSxHQUFFTyxDQUFBLENBQVFzUixtQkFBQSxVQUFtQixNQUFBN1IsQ0FBQSxJQUFBQSxDQUFBO2tCQUNoRDhSLHFCQUFBLEVBQW9ELFVBQS9CekwsQ0FBQSxHQUFFOUYsQ0FBQSxDQUFRdVIscUJBQUEsVUFBcUIsTUFBQXpMLENBQUEsSUFBQUEsQ0FBQTtrQkFDcEQwTCw0QkFBQSxFQUFrRSxVQUF0Q3pMLENBQUEsR0FBRS9GLENBQUEsQ0FBUXdSLDRCQUFBLFVBQTRCLE1BQUF6TCxDQUFBLElBQUFBLENBQUE7a0JBQ2xFbUssWUFBQSxFQUFjbEs7Z0JBQUE7Y0FHbEI2SixDQUFBLENBQ0k7Z0JBQ0lDLEdBQUEsRUFBSy9QLENBQUEsQ0FBaUIrUCxHQUFBO2dCQUN0QkMsYUFBQSxFQUFlaFEsQ0FBQSxDQUFpQmdRLGFBQUE7Z0JBQ2hDRyxZQUFBLEVBQWNuUSxDQUFBLENBQWlCbVEsWUFBQTtnQkFDL0JGLGdCQUFBLEVBQWtCalEsQ0FBQSxDQUFpQmlRLGdCQUFBO2dCQUNuQ3lCLEtBQUEsRUFBTzFSLENBQUEsQ0FBaUIwUjtjQUFBLEdBRTVCLFVBQUF0UixDQUFBO2dCQUNJLEtBQUlBLENBQUEsSUFBY0wsQ0FBQSxDQUFBK0osQ0FBQSxDQUFPbUYsRUFBQSxDQUFHaUIsVUFBQSxDQUFXaEssQ0FBQSxHQUF2QztrQkFJQSxJQUFNMUcsQ0FBQSxHQUFTaVIsQ0FBQSxDQUFvQnRLLENBQUE7a0JBRW5DbUssQ0FBQSxDQUNJM1EsQ0FBQSxFQUFXOE8sQ0FBQSxDQUFBQSxDQUFBLEtBRUp6TyxDQUFBLEdBQWdCO29CQUNuQjJSLFlBQUEsRUFBYzFSLENBQUEsQ0FBUTBSLFlBQUE7b0JBQ3RCQyxVQUFBLEVBQVlwUztrQkFBQSxJQUVoQkMsQ0FBQSxDQVZKO2dCQUFBLE9BRklBLENBQUEsQ0FBUyxJQUFJc0YsS0FBQSxDQUFNLDRDQUFEbkYsTUFBQSxDQUE2Q3NHLENBQUEsR0FjdkU7Y0FBQSxFQUVSO1lBQUEsR0FBRXNLLEtBQUEsQ0FDSy9RLENBQUEsQ0F2RVg7VUFBQTtRQXdFSjtRQUFBRSxDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFtTyxDQUFBLHlCQUFBek4sb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBd04sQ0FBQSxDQUFBbk8sQ0FBQSx5QkFBQVUsb0JBQUEsSUFBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBO1FBRUEsSUFTOEJxUixDQUFBO1VBVGtCbEIsQ0FBQTtVQUExQ21CLENBQUEsR0FBNkM7WUFDL0NDLEtBQUEsRUFBT3JCLENBQUE7WUFDUFIsVUFBQSxFQUFZLENBQUM7WUFDYjhCLHNCQUFBLEVBQXdCakQsQ0FBQSxDQUFVO1lBQ2xDRyxVQUFBLEVBQVk7VUFBQTtRQUdoQm5QLENBQUEsQ0FBQStKLENBQUEsQ0FBT21GLEVBQUEsR0FBSzZDLENBQUEsR0FFa0JELENBQUEseUJBQUF4UixvQkFBQSxHQUFBQSxvQkFBQSxDQUFBRSxPQUFBLGVBQUFzUixDQUFBLENBQUFwUixRQUFBLENBM1NyQnFPLENBQUEsRUFBZSxxSEFBQStDLENBQUEsQ0FBQXBSLFFBQUEsQ0FJZnNPLENBQUEsRUFBUywrR0FBQThDLENBQUEsQ0FBQXBSLFFBQUEsQ0FhVHVPLENBQUEsRUFBRyx5R0FBQTZDLENBQUEsQ0FBQXBSLFFBQUEsQ0FNSDBPLENBQUEsRUFBUSw4R0FBQTBDLENBQUEsQ0FBQXBSLFFBQUEsQ0FpQlI0TyxDQUFBLEVBQVMsK0dBQUF3QyxDQUFBLENBQUFwUixRQUFBLENBTVQrTyxDQUFBLEVBQWtCLHdIQUFBcUMsQ0FBQSxDQUFBcFIsUUFBQSxDQWNsQm9QLENBQUEsRUFBVyxpSEFBQWdDLENBQUEsQ0FBQXBSLFFBQUEsQ0E4QmIsVUFBMkNkLENBQUEsRUFBY00sQ0FBQTtVQUM1RDtZQUFJLElBQUFGLENBQUE7Y0FBQUssQ0FBQTtjQUFBWixDQUFBO2NBQUFDLENBQUE7Y0FBQUMsQ0FBQTtjQUFBcUcsQ0FBQTtjQUFBQyxDQUFBO2NBQUFDLENBQUE7Y0FBQUMsQ0FBQTtjQUFBQyxDQUFBO2NBQ01uRyxDQUFBLEdBQWNMLENBQUEsQ0FDZjBMLEtBQUEsQ0FBTSxLQUNOOUUsS0FBQSxDQUFNLEdBQUcsR0FDVGdCLEdBQUEsQ0FBSSxVQUFBNUgsQ0FBQTtnQkFBQyxPQUFJc1MsUUFBQSxDQUFTdFMsQ0FBQSxFQUFHLEdBQUc7Y0FBQTtjQUN2QnlJLENBQUEsR0FBZW5JLENBQUEsQ0FDaEJvTCxLQUFBLENBQU0sS0FDTjlFLEtBQUEsQ0FBTSxHQUFHLEdBQ1RnQixHQUFBLENBQUksVUFBQTVILENBQUE7Z0JBQUMsT0FBSXNTLFFBQUEsQ0FBU3RTLENBQUEsRUFBRyxHQUFHO2NBQUE7WUFDN0IsUUFDbUIsVUFBZkksQ0FBQSxHQUFDQyxDQUFBLENBQVksWUFBRSxNQUFBRCxDQUFBLEdBQUFBLENBQUEsR0FBSSxNQUFxQixVQUFwQkssQ0FBQSxHQUFLZ0ksQ0FBQSxDQUFhLFlBQUUsTUFBQWhJLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE9BQzVCLFVBQWZaLENBQUEsR0FBQ1EsQ0FBQSxDQUFZLFlBQUUsTUFBQVIsQ0FBQSxHQUFBQSxDQUFBLEdBQUksUUFBdUIsVUFBdEJDLENBQUEsR0FBTzJJLENBQUEsQ0FBYSxZQUFFLE1BQUEzSSxDQUFBLEdBQUFBLENBQUEsR0FBSSxRQUMzQixVQUFmQyxDQUFBLEdBQUNNLENBQUEsQ0FBWSxZQUFFLE1BQUFOLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE1BQXFCLFVBQXBCcUcsQ0FBQSxHQUFLcUMsQ0FBQSxDQUFhLFlBQUUsTUFBQXJDLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE9BQ3pCLFVBQWZDLENBQUEsR0FBQ2hHLENBQUEsQ0FBWSxZQUFFLE1BQUFnRyxDQUFBLEdBQUFBLENBQUEsR0FBSSxRQUF1QixVQUF0QkMsQ0FBQSxHQUFPbUMsQ0FBQSxDQUFhLFlBQUUsTUFBQW5DLENBQUEsR0FBQUEsQ0FBQSxHQUFJLE9BQzVCLFVBQWZDLENBQUEsR0FBQ2xHLENBQUEsQ0FBWSxZQUFFLE1BQUFrRyxDQUFBLEdBQUFBLENBQUEsR0FBSSxPQUFzQixVQUFyQkMsQ0FBQSxHQUFNaUMsQ0FBQSxDQUFhLFlBQUUsTUFBQWpDLENBQUEsR0FBQUEsQ0FBQSxHQUFJLEdBRWpFO1VBQUEsQ0FBRSxRQUFBeEcsQ0FBQTtZQUNFLFFBQU8sQ0FDWDtVQUFBO1FBQ0osR0FwQmlELHVJQUFBa1MsQ0FBQSxDQUFBcFIsUUFBQSxDQXNCeENxUCxDQUFBLEVBQVEsOEdBQUErQixDQUFBLENBQUFwUixRQUFBLENBd0NSNlAsQ0FBQSxFQUFVLGdIQUFBdUIsQ0FBQSxDQUFBcFIsUUFBQSxDQW1DVmdRLENBQUEsRUFBbUIseUhBQUFvQixDQUFBLENBQUFwUixRQUFBLENBUW5CaVEsQ0FBQSxFQUFLLDJHQUFBbUIsQ0FBQSxDQUFBcFIsUUFBQSxDQStGUnFSLENBQUEsRUFBMEMsMEhBQUFuQixDQUFBLHlCQUFBdFEsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUssV0FBQSxjQUFBaVEsQ0FBQSxDQUFBaFIsQ0FBQTtNQUFBO01BQUEsY0FBQUEsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7UUFBQSxJQUFBSyxDQUFBO1FDcldoRCxTQUFTWixFQUFVRyxDQUFBO1VBQ2YsT0FBcUIsbUJBQVZBLENBQUEsR0FDTyxZQUFWQSxDQUFBLElBR1UsV0FBVkEsQ0FBQSxHQUtEbUUsT0FBQSxDQUFRbkUsQ0FBQSxDQUNuQjtRQUFBO1FBQUFJLENBQUEsQ0FBQUMsQ0FBQSxDQUFBQyxDQUFBO1VBQUEwUSxDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBNUssQ0FBQTtVQUFBO1FBQUEsSUFBQXBHLENBQUEsR0FBQUksQ0FBQSxDQUFBSSxHQUFBLENBQUFSLENBQUEsSUFBQVMsQ0FBQSx5QkFBQUMsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBRixDQUFBLENBQUFULENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQTtRQUVPLElBU0xmLENBQUE7VUFUeUJDLENBQUE7VUFBZHFHLENBQUEsR0FBaUI7WUFDMUI4SyxVQUFBLEVBQVlyUixDQUFBLENBQVU7WUFDdEJ5UixjQUFBLEVBQWdCO1lBQ2hCQyxZQUFBLEVBQWMxUixDQUFBLENBQVU7WUFDeEIyUixtQkFBQSxFQUFxQjNSLENBQUEsQ0FBVTtZQUMvQjRSLHFCQUFBLEVBQXVCNVIsQ0FBQSxDQUFVO1lBQ2pDNlIsWUFBQSxFQUFjO1lBQ2RwQixnQkFBQSxFQUFrQjtZQUNsQlcsYUFBQSxFQUFlO1VBQUE7UUFBQSxDQUNqQm5SLENBQUEseUJBQUFZLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsZUFBQWQsQ0FBQSxDQUFBZ0IsUUFBQSxDQXRCT2pCLENBQUEsRUFBUyx1SEFBQUMsQ0FBQSxDQUFBZ0IsUUFBQSxDQWFMc0YsQ0FBQSxFQUFjLDhIQUFBckcsQ0FBQSx5QkFBQVcsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUssV0FBQSxjQUFBaEIsQ0FBQSxDQUFBQyxDQUFBO01BQUE7TUFBQSxlQUFBZ0IsTUFBQSxFQUFBQyxtQkFBQSxFQUFBQyxtQkFBQTtRQUFBQSxtQkFBQSxDQUFBYixDQUFBLENBQUFZLG1CQUFBO1VBQUFvTixDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBa0Usc0JBQUE7VUFBQTtRQUFBO1FBQUEsSUFBQUMsMkNBQUEsR0FBQXRSLG1CQUFBO1VBQUFQLFdBQUE7UUFBQSxTQUFBUSxRQUFBbkIsQ0FBQTtVQUFBLE9BQUFtQixPQUFBLHdCQUFBQyxNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBbUIsT0FBQSxDQUFBbkIsQ0FBQTtRQUFBO1FBQUEsU0FBQXlTLG9CQUFBO1VDWjNCQSxtQkFBQSxZQUFBQSxDQUFBO1lBQUEsT0FBQXpTLENBQUE7VUFBQTtVQUFBLElBQUFBLENBQUE7WUFBQU0sQ0FBQSxHQUFBeUIsTUFBQSxDQUFBUixTQUFBO1lBQUFuQixDQUFBLEdBQUFFLENBQUEsQ0FBQWtLLGNBQUE7WUFBQS9KLENBQUEsR0FBQXNCLE1BQUEsQ0FBQUMsY0FBQSxjQUFBaEMsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7Y0FBQUosQ0FBQSxDQUFBTSxDQUFBLElBQUFGLENBQUEsQ0FBQXVDLEtBQUE7WUFBQTtZQUFBOUMsQ0FBQSx3QkFBQXVCLE1BQUEsR0FBQUEsTUFBQTtZQUFBdEIsQ0FBQSxHQUFBRCxDQUFBLENBQUF3QixRQUFBO1lBQUF0QixDQUFBLEdBQUFGLENBQUEsQ0FBQTZTLGFBQUE7WUFBQXRNLENBQUEsR0FBQXZHLENBQUEsQ0FBQThTLFdBQUE7VUFBQSxTQUFBdE0sRUFBQXJHLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1lBQUEsT0FBQTJCLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBTSxDQUFBO2NBQUFxQyxLQUFBLEVBQUF2QyxDQUFBO2NBQUF3QixVQUFBO2NBQUFDLFlBQUE7Y0FBQUMsUUFBQTtZQUFBLElBQUE5QixDQUFBLENBQUFNLENBQUE7VUFBQTtVQUFBO1lBQUErRixDQUFBO1VBQUEsU0FBQXJHLENBQUE7WUFBQXFHLENBQUEsWUFBQXVNLENBQUE1UyxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtjQUFBLE9BQUFKLENBQUEsQ0FBQU0sQ0FBQSxJQUFBRixDQUFBO1lBQUE7VUFBQTtVQUFBLFNBQUFrRyxFQUFBdEcsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUEsRUFBQVAsQ0FBQTtZQUFBLElBQUFDLENBQUEsR0FBQVEsQ0FBQSxJQUFBQSxDQUFBLENBQUFpQixTQUFBLFlBQUFsQixDQUFBLEdBQUFDLENBQUEsR0FBQUQsQ0FBQTtjQUFBTixDQUFBLEdBQUFnQyxNQUFBLENBQUFXLE1BQUEsQ0FBQTVDLENBQUEsQ0FBQXlCLFNBQUE7Y0FBQTZFLENBQUEsT0FBQWlJLENBQUEsQ0FBQXhPLENBQUE7WUFBQSxPQUFBWSxDQUFBLENBQUFWLENBQUE7Y0FBQTRDLEtBQUEsRUFBQTBKLENBQUEsQ0FBQXJNLENBQUEsRUFBQUksQ0FBQSxFQUFBZ0csQ0FBQTtZQUFBLElBQUFyRyxDQUFBO1VBQUE7VUFBQSxTQUFBd0csRUFBQXZHLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1lBQUE7Y0FBQTtnQkFBQXVKLElBQUE7Z0JBQUFrSixHQUFBLEVBQUE3UyxDQUFBLENBQUF1QyxJQUFBLENBQUFqQyxDQUFBLEVBQUFGLENBQUE7Y0FBQTtZQUFBLFNBQUFKLENBQUE7Y0FBQTtnQkFBQTJKLElBQUE7Z0JBQUFrSixHQUFBLEVBQUE3UztjQUFBO1lBQUE7VUFBQTtVQUFBQSxDQUFBLENBQUE4UyxJQUFBLEdBQUF4TSxDQUFBO1VBQUEsSUFBQUUsQ0FBQTtVQUFBLFNBQUFuRyxFQUFBO1VBQUEsU0FBQW9JLEVBQUE7VUFBQSxTQUFBRyxFQUFBO1VBQUEsSUFBQXJJLENBQUE7VUFBQThGLENBQUEsQ0FBQTlGLENBQUEsRUFBQVQsQ0FBQTtZQUFBO1VBQUE7VUFBQSxJQUFBOEssQ0FBQSxHQUFBN0ksTUFBQSxDQUFBMEMsY0FBQTtZQUFBb0csQ0FBQSxHQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUEsQ0FBQSxDQUFBMEQsQ0FBQTtVQUFBekQsQ0FBQSxJQUFBQSxDQUFBLEtBQUF2SyxDQUFBLElBQUFGLENBQUEsQ0FBQW1DLElBQUEsQ0FBQXNJLENBQUEsRUFBQS9LLENBQUEsTUFBQVMsQ0FBQSxHQUFBc0ssQ0FBQTtVQUFBLElBQUFWLENBQUEsR0FBQXZCLENBQUEsQ0FBQXJILFNBQUEsR0FBQWxCLENBQUEsQ0FBQWtCLFNBQUEsR0FBQVEsTUFBQSxDQUFBVyxNQUFBLENBQUFuQyxDQUFBO1VBQUEsU0FBQXFMLEVBQUE1TCxDQUFBO1lBQUEsNEJBQUE2SCxPQUFBLFdBQUF2SCxDQUFBO2NBQUErRixDQUFBLENBQUFyRyxDQUFBLEVBQUFNLENBQUEsWUFBQU4sQ0FBQTtnQkFBQSxZQUFBK1MsT0FBQSxDQUFBelMsQ0FBQSxFQUFBTixDQUFBO2NBQUE7WUFBQTtVQUFBO1VBQUEsU0FBQWlNLEVBQUFqTSxDQUFBLEVBQUFNLENBQUE7WUFBQSxTQUFBVCxFQUFBWSxDQUFBLEVBQUFYLENBQUEsRUFBQUMsQ0FBQSxFQUFBcUcsQ0FBQTtjQUFBLElBQUFDLENBQUEsR0FBQUUsQ0FBQSxDQUFBdkcsQ0FBQSxDQUFBUyxDQUFBLEdBQUFULENBQUEsRUFBQUYsQ0FBQTtjQUFBLGdCQUFBdUcsQ0FBQSxDQUFBc0QsSUFBQTtnQkFBQSxJQUFBckQsQ0FBQSxHQUFBRCxDQUFBLENBQUF3TSxHQUFBO2tCQUFBck0sQ0FBQSxHQUFBRixDQUFBLENBQUEzRCxLQUFBO2dCQUFBLE9BQUE2RCxDQUFBLGdCQUFBckYsT0FBQSxDQUFBcUYsQ0FBQSxLQUFBcEcsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBaUUsQ0FBQSxlQUFBbEcsQ0FBQSxDQUFBc0osT0FBQSxDQUFBcEQsQ0FBQSxDQUFBd00sT0FBQSxFQUFBbEosSUFBQSxXQUFBOUosQ0FBQTtrQkFBQUgsQ0FBQSxTQUFBRyxDQUFBLEVBQUFELENBQUEsRUFBQXFHLENBQUE7Z0JBQUEsYUFBQXBHLENBQUE7a0JBQUFILENBQUEsVUFBQUcsQ0FBQSxFQUFBRCxDQUFBLEVBQUFxRyxDQUFBO2dCQUFBLEtBQUE5RixDQUFBLENBQUFzSixPQUFBLENBQUFwRCxDQUFBLEVBQUFzRCxJQUFBLFdBQUE5SixDQUFBO2tCQUFBc0csQ0FBQSxDQUFBM0QsS0FBQSxHQUFBM0MsQ0FBQSxFQUFBRCxDQUFBLENBQUF1RyxDQUFBO2dCQUFBLGFBQUF0RyxDQUFBO2tCQUFBLE9BQUFILENBQUEsVUFBQUcsQ0FBQSxFQUFBRCxDQUFBLEVBQUFxRyxDQUFBO2dCQUFBO2NBQUE7Y0FBQUEsQ0FBQSxDQUFBQyxDQUFBLENBQUF3TSxHQUFBO1lBQUE7WUFBQSxJQUFBL1MsQ0FBQTtZQUFBVyxDQUFBO2NBQUFrQyxLQUFBLFdBQUFBLENBQUEzQyxDQUFBLEVBQUFJLENBQUE7Z0JBQUEsU0FBQUssRUFBQTtrQkFBQSxXQUFBSCxDQUFBLFdBQUFBLENBQUEsRUFBQUcsQ0FBQTtvQkFBQVosQ0FBQSxDQUFBRyxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBO2tCQUFBO2dCQUFBO2dCQUFBLE9BQUFYLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBLENBQUFnSyxJQUFBLENBQUFySixDQUFBLEVBQUFBLENBQUEsSUFBQUEsQ0FBQTtjQUFBO1lBQUE7VUFBQTtVQUFBLFNBQUE0TCxFQUFBck0sQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7WUFBQSxJQUFBSyxDQUFBO1lBQUEsaUJBQUFaLENBQUEsRUFBQUMsQ0FBQTtjQUFBLG9CQUFBVyxDQUFBLFlBQUEyRSxLQUFBO2NBQUEsb0JBQUEzRSxDQUFBO2dCQUFBLGdCQUFBWixDQUFBLFFBQUFDLENBQUE7Z0JBQUE7a0JBQUE2QyxLQUFBO2tCQUFBZ0YsSUFBQTtnQkFBQTtjQUFBO2NBQUEsS0FBQXZILENBQUEsQ0FBQTZLLE1BQUEsR0FBQXBMLENBQUEsRUFBQU8sQ0FBQSxDQUFBeVMsR0FBQSxHQUFBL1MsQ0FBQTtnQkFBQSxJQUFBQyxDQUFBLEdBQUFLLENBQUEsQ0FBQTZTLFFBQUE7Z0JBQUEsSUFBQWxULENBQUE7a0JBQUEsSUFBQXFHLENBQUEsR0FBQW9HLENBQUEsQ0FBQXpNLENBQUEsRUFBQUssQ0FBQTtrQkFBQSxJQUFBZ0csQ0FBQTtvQkFBQSxJQUFBQSxDQUFBLEtBQUFJLENBQUE7b0JBQUEsT0FBQUosQ0FBQTtrQkFBQTtnQkFBQTtnQkFBQSxlQUFBaEcsQ0FBQSxDQUFBNkssTUFBQSxFQUFBN0ssQ0FBQSxDQUFBOFMsSUFBQSxHQUFBOVMsQ0FBQSxDQUFBK1MsS0FBQSxHQUFBL1MsQ0FBQSxDQUFBeVMsR0FBQSxzQkFBQXpTLENBQUEsQ0FBQTZLLE1BQUE7a0JBQUEseUJBQUF4SyxDQUFBLFFBQUFBLENBQUEsZ0JBQUFMLENBQUEsQ0FBQXlTLEdBQUE7a0JBQUF6UyxDQUFBLENBQUFnVCxpQkFBQSxDQUFBaFQsQ0FBQSxDQUFBeVMsR0FBQTtnQkFBQSxvQkFBQXpTLENBQUEsQ0FBQTZLLE1BQUEsSUFBQTdLLENBQUEsQ0FBQWlULE1BQUEsV0FBQWpULENBQUEsQ0FBQXlTLEdBQUE7Z0JBQUFwUyxDQUFBO2dCQUFBLElBQUE0RixDQUFBLEdBQUFFLENBQUEsQ0FBQXZHLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO2dCQUFBLGlCQUFBaUcsQ0FBQSxDQUFBc0QsSUFBQTtrQkFBQSxJQUFBbEosQ0FBQSxHQUFBTCxDQUFBLENBQUF1SCxJQUFBLG1DQUFBdEIsQ0FBQSxDQUFBd00sR0FBQSxLQUFBck0sQ0FBQTtrQkFBQTtvQkFBQTdELEtBQUEsRUFBQTBELENBQUEsQ0FBQXdNLEdBQUE7b0JBQUFsTCxJQUFBLEVBQUF2SCxDQUFBLENBQUF1SDtrQkFBQTtnQkFBQTtnQkFBQSxZQUFBdEIsQ0FBQSxDQUFBc0QsSUFBQSxLQUFBbEosQ0FBQSxnQkFBQUwsQ0FBQSxDQUFBNkssTUFBQSxZQUFBN0ssQ0FBQSxDQUFBeVMsR0FBQSxHQUFBeE0sQ0FBQSxDQUFBd00sR0FBQTtjQUFBO1lBQUE7VUFBQTtVQUFBLFNBQUFyRyxFQUFBeE0sQ0FBQSxFQUFBTSxDQUFBO1lBQUEsSUFBQUYsQ0FBQSxHQUFBRSxDQUFBLENBQUEySyxNQUFBO2NBQUF4SyxDQUFBLEdBQUFULENBQUEsQ0FBQXFCLFFBQUEsQ0FBQWpCLENBQUE7WUFBQSxlQUFBSyxDQUFBLFNBQUFILENBQUEsQ0FBQTJTLFFBQUEscUJBQUE3UyxDQUFBLElBQUFKLENBQUEsQ0FBQXFCLFFBQUEsQ0FBQTJPLE1BQUEsS0FBQTFQLENBQUEsQ0FBQTJLLE1BQUEsYUFBQTNLLENBQUEsQ0FBQXVTLEdBQUEsV0FBQXJHLENBQUEsQ0FBQXhNLENBQUEsRUFBQU0sQ0FBQSxlQUFBQSxDQUFBLENBQUEySyxNQUFBLGtCQUFBN0ssQ0FBQSxLQUFBRSxDQUFBLENBQUEySyxNQUFBLFlBQUEzSyxDQUFBLENBQUF1UyxHQUFBLE9BQUFwUixTQUFBLHVDQUFBckIsQ0FBQSxpQkFBQW9HLENBQUE7WUFBQSxJQUFBM0csQ0FBQSxHQUFBMEcsQ0FBQSxDQUFBOUYsQ0FBQSxFQUFBVCxDQUFBLENBQUFxQixRQUFBLEVBQUFmLENBQUEsQ0FBQXVTLEdBQUE7WUFBQSxnQkFBQWhULENBQUEsQ0FBQThKLElBQUEsU0FBQXJKLENBQUEsQ0FBQTJLLE1BQUEsWUFBQTNLLENBQUEsQ0FBQXVTLEdBQUEsR0FBQWhULENBQUEsQ0FBQWdULEdBQUEsRUFBQXZTLENBQUEsQ0FBQTJTLFFBQUEsU0FBQXpNLENBQUE7WUFBQSxJQUFBMUcsQ0FBQSxHQUFBRCxDQUFBLENBQUFnVCxHQUFBO1lBQUEsT0FBQS9TLENBQUEsR0FBQUEsQ0FBQSxDQUFBNkgsSUFBQSxJQUFBckgsQ0FBQSxDQUFBTixDQUFBLENBQUFzVCxVQUFBLElBQUF4VCxDQUFBLENBQUE2QyxLQUFBLEVBQUFyQyxDQUFBLENBQUFtSCxJQUFBLEdBQUF6SCxDQUFBLENBQUF1VCxPQUFBLGVBQUFqVCxDQUFBLENBQUEySyxNQUFBLEtBQUEzSyxDQUFBLENBQUEySyxNQUFBLFdBQUEzSyxDQUFBLENBQUF1UyxHQUFBLFlBQUF2UyxDQUFBLENBQUEyUyxRQUFBLFNBQUF6TSxDQUFBLElBQUExRyxDQUFBLElBQUFRLENBQUEsQ0FBQTJLLE1BQUEsWUFBQTNLLENBQUEsQ0FBQXVTLEdBQUEsT0FBQXBSLFNBQUEsc0NBQUFuQixDQUFBLENBQUEyUyxRQUFBLFNBQUF6TSxDQUFBO1VBQUE7VUFBQSxTQUFBMkgsRUFBQW5PLENBQUE7WUFBQSxJQUFBTSxDQUFBO2NBQUFrVCxNQUFBLEVBQUF4VCxDQUFBO1lBQUE7WUFBQSxLQUFBQSxDQUFBLEtBQUFNLENBQUEsQ0FBQW1ULFFBQUEsR0FBQXpULENBQUEsV0FBQUEsQ0FBQSxLQUFBTSxDQUFBLENBQUFvVCxVQUFBLEdBQUExVCxDQUFBLEtBQUFNLENBQUEsQ0FBQXFULFFBQUEsR0FBQTNULENBQUEsV0FBQTRULFVBQUEsQ0FBQTdQLElBQUEsQ0FBQXpELENBQUE7VUFBQTtVQUFBLFNBQUE4TixFQUFBcE8sQ0FBQTtZQUFBLElBQUFNLENBQUEsR0FBQU4sQ0FBQSxDQUFBNlQsVUFBQTtZQUFBdlQsQ0FBQSxDQUFBcUosSUFBQSxvQkFBQXJKLENBQUEsQ0FBQXVTLEdBQUEsRUFBQTdTLENBQUEsQ0FBQTZULFVBQUEsR0FBQXZULENBQUE7VUFBQTtVQUFBLFNBQUErTixFQUFBck8sQ0FBQTtZQUFBLEtBQUE0VCxVQUFBO2NBQUFKLE1BQUE7WUFBQSxJQUFBeFQsQ0FBQSxDQUFBNkgsT0FBQSxDQUFBc0csQ0FBQSxjQUFBMkYsS0FBQTtVQUFBO1VBQUEsU0FBQXhGLEVBQUF0TyxDQUFBO1lBQUEsSUFBQUEsQ0FBQTtjQUFBLElBQUFNLENBQUEsR0FBQU4sQ0FBQSxDQUFBRixDQUFBO2NBQUEsSUFBQVEsQ0FBQSxTQUFBQSxDQUFBLENBQUFpQyxJQUFBLENBQUF2QyxDQUFBO2NBQUEseUJBQUFBLENBQUEsQ0FBQXlILElBQUEsU0FBQXpILENBQUE7Y0FBQSxLQUFBK1QsS0FBQSxDQUFBL1QsQ0FBQSxDQUFBMkIsTUFBQTtnQkFBQSxJQUFBbEIsQ0FBQTtrQkFBQVosQ0FBQSxZQUFBUyxFQUFBO29CQUFBLFNBQUFHLENBQUEsR0FBQVQsQ0FBQSxDQUFBMkIsTUFBQSxPQUFBdkIsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBdkMsQ0FBQSxFQUFBUyxDQUFBLFVBQUFILENBQUEsQ0FBQXFDLEtBQUEsR0FBQTNDLENBQUEsQ0FBQVMsQ0FBQSxHQUFBSCxDQUFBLENBQUFxSCxJQUFBLE9BQUFySCxDQUFBO29CQUFBLE9BQUFBLENBQUEsQ0FBQXFDLEtBQUEsV0FBQXJDLENBQUEsQ0FBQXFILElBQUEsT0FBQXJILENBQUE7a0JBQUE7Z0JBQUEsT0FBQVQsQ0FBQSxDQUFBNEgsSUFBQSxHQUFBNUgsQ0FBQTtjQUFBO1lBQUE7WUFBQTtjQUFBNEgsSUFBQSxFQUFBOEc7WUFBQTtVQUFBO1VBQUEsU0FBQUEsRUFBQTtZQUFBO2NBQUE1TCxLQUFBO2NBQUFnRixJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFjLENBQUEsQ0FBQWxILFNBQUEsR0FBQXFILENBQUEsRUFBQW5JLENBQUEsQ0FBQTBKLENBQUE7WUFBQXhILEtBQUEsRUFBQWlHLENBQUE7WUFBQS9HLFlBQUE7VUFBQSxJQUFBcEIsQ0FBQSxDQUFBbUksQ0FBQTtZQUFBakcsS0FBQSxFQUFBOEYsQ0FBQTtZQUFBNUcsWUFBQTtVQUFBLElBQUE0RyxDQUFBLENBQUF1TCxXQUFBLEdBQUEzTixDQUFBLENBQUF1QyxDQUFBLEVBQUF4QyxDQUFBLHdCQUFBcEcsQ0FBQSxDQUFBaVUsbUJBQUEsYUFBQWpVLENBQUE7WUFBQSxJQUFBTSxDQUFBLHdCQUFBTixDQUFBLElBQUFBLENBQUEsQ0FBQXNCLFdBQUE7WUFBQSxTQUFBaEIsQ0FBQSxLQUFBQSxDQUFBLEtBQUFtSSxDQUFBLDZCQUFBbkksQ0FBQSxDQUFBMFQsV0FBQSxJQUFBMVQsQ0FBQSxDQUFBMEUsSUFBQTtVQUFBLEdBQUFoRixDQUFBLENBQUFrVSxJQUFBLGFBQUFsVSxDQUFBO1lBQUEsT0FBQStCLE1BQUEsQ0FBQXdDLGNBQUEsR0FBQXhDLE1BQUEsQ0FBQXdDLGNBQUEsQ0FBQXZFLENBQUEsRUFBQTRJLENBQUEsS0FBQTVJLENBQUEsQ0FBQXdFLFNBQUEsR0FBQW9FLENBQUEsRUFBQXZDLENBQUEsQ0FBQXJHLENBQUEsRUFBQW9HLENBQUEseUJBQUFwRyxDQUFBLENBQUF1QixTQUFBLEdBQUFRLE1BQUEsQ0FBQVcsTUFBQSxDQUFBeUgsQ0FBQSxHQUFBbkssQ0FBQTtVQUFBLEdBQUFBLENBQUEsQ0FBQW1VLEtBQUEsYUFBQW5VLENBQUE7WUFBQTtjQUFBZ1QsT0FBQSxFQUFBaFQ7WUFBQTtVQUFBLEdBQUE0TCxDQUFBLENBQUFLLENBQUEsQ0FBQTFLLFNBQUEsR0FBQThFLENBQUEsQ0FBQTRGLENBQUEsQ0FBQTFLLFNBQUEsRUFBQXhCLENBQUE7WUFBQTtVQUFBLElBQUFDLENBQUEsQ0FBQW9VLGFBQUEsR0FBQW5JLENBQUEsRUFBQWpNLENBQUEsQ0FBQXFVLEtBQUEsYUFBQS9ULENBQUEsRUFBQUYsQ0FBQSxFQUFBSyxDQUFBLEVBQUFaLENBQUEsRUFBQUMsQ0FBQTtZQUFBLFdBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBcUksT0FBQTtZQUFBLElBQUFwSSxDQUFBLE9BQUFrTSxDQUFBLENBQUEzRixDQUFBLENBQUFoRyxDQUFBLEVBQUFGLENBQUEsRUFBQUssQ0FBQSxFQUFBWixDQUFBLEdBQUFDLENBQUE7WUFBQSxPQUFBRSxDQUFBLENBQUFpVSxtQkFBQSxDQUFBN1QsQ0FBQSxJQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQTBILElBQUEsR0FBQXFDLElBQUEsV0FBQTlKLENBQUE7Y0FBQSxPQUFBQSxDQUFBLENBQUEySCxJQUFBLEdBQUEzSCxDQUFBLENBQUEyQyxLQUFBLEdBQUE1QyxDQUFBLENBQUEwSCxJQUFBO1lBQUE7VUFBQSxHQUFBbUUsQ0FBQSxDQUFBekIsQ0FBQSxHQUFBOUQsQ0FBQSxDQUFBOEQsQ0FBQSxFQUFBL0QsQ0FBQSxnQkFBQUMsQ0FBQSxDQUFBOEQsQ0FBQSxFQUFBckssQ0FBQTtZQUFBO1VBQUEsSUFBQXVHLENBQUEsQ0FBQThELENBQUE7WUFBQTtVQUFBLElBQUFuSyxDQUFBLENBQUF5SyxJQUFBLGFBQUF6SyxDQUFBO1lBQUEsSUFBQU0sQ0FBQSxHQUFBeUIsTUFBQSxDQUFBL0IsQ0FBQTtjQUFBSSxDQUFBO1lBQUEsU0FBQUssQ0FBQSxJQUFBSCxDQUFBLEVBQUFGLENBQUEsQ0FBQTJELElBQUEsQ0FBQXRELENBQUE7WUFBQSxPQUFBTCxDQUFBLENBQUFrVSxPQUFBLGFBQUF0VSxFQUFBO2NBQUEsT0FBQUksQ0FBQSxDQUFBdUIsTUFBQTtnQkFBQSxJQUFBbEIsQ0FBQSxHQUFBTCxDQUFBLENBQUFtVSxHQUFBO2dCQUFBLElBQUE5VCxDQUFBLElBQUFILENBQUEsU0FBQU4sQ0FBQSxDQUFBMkMsS0FBQSxHQUFBbEMsQ0FBQSxFQUFBVCxDQUFBLENBQUEySCxJQUFBLE9BQUEzSCxDQUFBO2NBQUE7Y0FBQSxPQUFBQSxDQUFBLENBQUEySCxJQUFBLE9BQUEzSCxDQUFBO1lBQUE7VUFBQSxHQUFBQSxDQUFBLENBQUEwSyxNQUFBLEdBQUE0RCxDQUFBLEVBQUFELENBQUEsQ0FBQTlNLFNBQUE7WUFBQUQsV0FBQSxFQUFBK00sQ0FBQTtZQUFBeUYsS0FBQSxXQUFBQSxDQUFBOVQsQ0FBQTtjQUFBLFNBQUF3VSxJQUFBLFdBQUEvTSxJQUFBLFdBQUF5TCxJQUFBLFFBQUFDLEtBQUEsZ0JBQUF4TCxJQUFBLFlBQUFzTCxRQUFBLGNBQUFoSSxNQUFBLGdCQUFBNEgsR0FBQSxnQkFBQWUsVUFBQSxDQUFBL0wsT0FBQSxDQUFBdUcsQ0FBQSxJQUFBcE8sQ0FBQSxXQUFBTSxDQUFBLGtCQUFBQSxDQUFBLENBQUFtVSxNQUFBLE9BQUFyVSxDQUFBLENBQUFtQyxJQUFBLE9BQUFqQyxDQUFBLE1BQUF5VCxLQUFBLEVBQUF6VCxDQUFBLENBQUFzRyxLQUFBLGNBQUF0RyxDQUFBO1lBQUE7WUFBQW9VLElBQUEsV0FBQUEsQ0FBQTtjQUFBLEtBQUEvTSxJQUFBO2NBQUEsSUFBQTNILENBQUEsUUFBQTRULFVBQUEsSUFBQUMsVUFBQTtjQUFBLGdCQUFBN1QsQ0FBQSxDQUFBMkosSUFBQSxRQUFBM0osQ0FBQSxDQUFBNlMsR0FBQTtjQUFBLFlBQUE4QixJQUFBO1lBQUE7WUFBQXZCLGlCQUFBLFdBQUFBLENBQUFwVCxDQUFBO2NBQUEsU0FBQTJILElBQUEsUUFBQTNILENBQUE7Y0FBQSxJQUFBTSxDQUFBO2NBQUEsU0FBQUcsRUFBQUwsQ0FBQSxFQUFBSyxDQUFBO2dCQUFBLE9BQUFWLENBQUEsQ0FBQTRKLElBQUEsWUFBQTVKLENBQUEsQ0FBQThTLEdBQUEsR0FBQTdTLENBQUEsRUFBQU0sQ0FBQSxDQUFBbUgsSUFBQSxHQUFBckgsQ0FBQSxFQUFBSyxDQUFBLEtBQUFILENBQUEsQ0FBQTJLLE1BQUEsV0FBQTNLLENBQUEsQ0FBQXVTLEdBQUEsY0FBQXBTLENBQUE7Y0FBQTtjQUFBLFNBQUFaLENBQUEsUUFBQStULFVBQUEsQ0FBQWpTLE1BQUEsTUFBQTlCLENBQUEsU0FBQUEsQ0FBQTtnQkFBQSxJQUFBQyxDQUFBLFFBQUE4VCxVQUFBLENBQUEvVCxDQUFBO2tCQUFBRSxDQUFBLEdBQUFELENBQUEsQ0FBQStULFVBQUE7Z0JBQUEsZUFBQS9ULENBQUEsQ0FBQTBULE1BQUEsU0FBQS9TLENBQUE7Z0JBQUEsSUFBQVgsQ0FBQSxDQUFBMFQsTUFBQSxTQUFBZ0IsSUFBQTtrQkFBQSxJQUFBcE8sQ0FBQSxHQUFBaEcsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBekMsQ0FBQTtvQkFBQXVHLENBQUEsR0FBQWpHLENBQUEsQ0FBQW1DLElBQUEsQ0FBQXpDLENBQUE7a0JBQUEsSUFBQXNHLENBQUEsSUFBQUMsQ0FBQTtvQkFBQSxTQUFBbU8sSUFBQSxHQUFBMVUsQ0FBQSxDQUFBMlQsUUFBQSxTQUFBaFQsQ0FBQSxDQUFBWCxDQUFBLENBQUEyVCxRQUFBO29CQUFBLFNBQUFlLElBQUEsR0FBQTFVLENBQUEsQ0FBQTRULFVBQUEsU0FBQWpULENBQUEsQ0FBQVgsQ0FBQSxDQUFBNFQsVUFBQTtrQkFBQSxXQUFBdE4sQ0FBQTtvQkFBQSxTQUFBb08sSUFBQSxHQUFBMVUsQ0FBQSxDQUFBMlQsUUFBQSxTQUFBaFQsQ0FBQSxDQUFBWCxDQUFBLENBQUEyVCxRQUFBO2tCQUFBO29CQUFBLEtBQUFwTixDQUFBLFlBQUFqQixLQUFBO29CQUFBLFNBQUFvUCxJQUFBLEdBQUExVSxDQUFBLENBQUE0VCxVQUFBLFNBQUFqVCxDQUFBLENBQUFYLENBQUEsQ0FBQTRULFVBQUE7a0JBQUE7Z0JBQUE7Y0FBQTtZQUFBO1lBQUFMLE1BQUEsV0FBQUEsQ0FBQXJULENBQUEsRUFBQU0sQ0FBQTtjQUFBLFNBQUFHLENBQUEsUUFBQW1ULFVBQUEsQ0FBQWpTLE1BQUEsTUFBQWxCLENBQUEsU0FBQUEsQ0FBQTtnQkFBQSxJQUFBWixDQUFBLFFBQUErVCxVQUFBLENBQUFuVCxDQUFBO2dCQUFBLElBQUFaLENBQUEsQ0FBQTJULE1BQUEsU0FBQWdCLElBQUEsSUFBQXBVLENBQUEsQ0FBQW1DLElBQUEsQ0FBQTFDLENBQUEsd0JBQUEyVSxJQUFBLEdBQUEzVSxDQUFBLENBQUE2VCxVQUFBO2tCQUFBLElBQUE1VCxDQUFBLEdBQUFELENBQUE7a0JBQUE7Z0JBQUE7Y0FBQTtjQUFBQyxDQUFBLGlCQUFBRSxDQUFBLG1CQUFBQSxDQUFBLEtBQUFGLENBQUEsQ0FBQTBULE1BQUEsSUFBQWxULENBQUEsSUFBQUEsQ0FBQSxJQUFBUixDQUFBLENBQUE0VCxVQUFBLEtBQUE1VCxDQUFBO2NBQUEsSUFBQUMsQ0FBQSxHQUFBRCxDQUFBLEdBQUFBLENBQUEsQ0FBQStULFVBQUE7Y0FBQSxPQUFBOVQsQ0FBQSxDQUFBNEosSUFBQSxHQUFBM0osQ0FBQSxFQUFBRCxDQUFBLENBQUE4UyxHQUFBLEdBQUF2UyxDQUFBLEVBQUFSLENBQUEsU0FBQW1MLE1BQUEsZ0JBQUF4RCxJQUFBLEdBQUEzSCxDQUFBLENBQUE0VCxVQUFBLEVBQUFsTixDQUFBLFNBQUFvTyxRQUFBLENBQUE3VSxDQUFBO1lBQUE7WUFBQTZVLFFBQUEsV0FBQUEsQ0FBQTVVLENBQUEsRUFBQU0sQ0FBQTtjQUFBLGdCQUFBTixDQUFBLENBQUEySixJQUFBLFFBQUEzSixDQUFBLENBQUE2UyxHQUFBO2NBQUEsbUJBQUE3UyxDQUFBLENBQUEySixJQUFBLG1CQUFBM0osQ0FBQSxDQUFBMkosSUFBQSxRQUFBbEMsSUFBQSxHQUFBekgsQ0FBQSxDQUFBNlMsR0FBQSxnQkFBQTdTLENBQUEsQ0FBQTJKLElBQUEsU0FBQWdMLElBQUEsUUFBQTlCLEdBQUEsR0FBQTdTLENBQUEsQ0FBQTZTLEdBQUEsT0FBQTVILE1BQUEsa0JBQUF4RCxJQUFBLHlCQUFBekgsQ0FBQSxDQUFBMkosSUFBQSxJQUFBckosQ0FBQSxVQUFBbUgsSUFBQSxHQUFBbkgsQ0FBQSxHQUFBa0csQ0FBQTtZQUFBO1lBQUFxTyxNQUFBLFdBQUFBLENBQUE3VSxDQUFBO2NBQUEsU0FBQU0sQ0FBQSxRQUFBc1QsVUFBQSxDQUFBalMsTUFBQSxNQUFBckIsQ0FBQSxTQUFBQSxDQUFBO2dCQUFBLElBQUFGLENBQUEsUUFBQXdULFVBQUEsQ0FBQXRULENBQUE7Z0JBQUEsSUFBQUYsQ0FBQSxDQUFBc1QsVUFBQSxLQUFBMVQsQ0FBQSxjQUFBNFUsUUFBQSxDQUFBeFUsQ0FBQSxDQUFBeVQsVUFBQSxFQUFBelQsQ0FBQSxDQUFBdVQsUUFBQSxHQUFBdkYsQ0FBQSxDQUFBaE8sQ0FBQSxHQUFBb0csQ0FBQTtjQUFBO1lBQUE7WUFBQXFLLEtBQUEsV0FBQUEsQ0FBQTdRLENBQUE7Y0FBQSxTQUFBTSxDQUFBLFFBQUFzVCxVQUFBLENBQUFqUyxNQUFBLE1BQUFyQixDQUFBLFNBQUFBLENBQUE7Z0JBQUEsSUFBQUYsQ0FBQSxRQUFBd1QsVUFBQSxDQUFBdFQsQ0FBQTtnQkFBQSxJQUFBRixDQUFBLENBQUFvVCxNQUFBLEtBQUF4VCxDQUFBO2tCQUFBLElBQUFTLENBQUEsR0FBQUwsQ0FBQSxDQUFBeVQsVUFBQTtrQkFBQSxnQkFBQXBULENBQUEsQ0FBQWtKLElBQUE7b0JBQUEsSUFBQTlKLENBQUEsR0FBQVksQ0FBQSxDQUFBb1MsR0FBQTtvQkFBQXpFLENBQUEsQ0FBQWhPLENBQUE7a0JBQUE7a0JBQUEsT0FBQVAsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsVUFBQXVGLEtBQUE7WUFBQTtZQUFBMFAsYUFBQSxXQUFBQSxDQUFBOVUsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7Y0FBQSxZQUFBNlMsUUFBQTtnQkFBQTVSLFFBQUEsRUFBQWlOLENBQUEsQ0FBQXRPLENBQUE7Z0JBQUFzVCxVQUFBLEVBQUFoVCxDQUFBO2dCQUFBaVQsT0FBQSxFQUFBblQ7Y0FBQSxtQkFBQTZLLE1BQUEsVUFBQTRILEdBQUEsWUFBQXJNLENBQUE7WUFBQTtVQUFBLEdBQUF4RyxDQUFBO1FBQUE7UUFBQSxTQUFBK1UsbUJBQUEvVSxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQSxFQUFBSyxDQUFBLEVBQUFaLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBO1VBQUE7WUFBQSxJQUFBcUcsQ0FBQSxHQUFBcEcsQ0FBQSxDQUFBRixDQUFBLEVBQUFDLENBQUE7Y0FBQXNHLENBQUEsR0FBQUQsQ0FBQSxDQUFBekQsS0FBQTtVQUFBLFNBQUEzQyxDQUFBO1lBQUEsWUFBQUksQ0FBQSxDQUFBSixDQUFBO1VBQUE7VUFBQW9HLENBQUEsQ0FBQXVCLElBQUEsR0FBQXJILENBQUEsQ0FBQStGLENBQUEsSUFBQThCLE9BQUEsQ0FBQXlCLE9BQUEsQ0FBQXZELENBQUEsRUFBQXlELElBQUEsQ0FBQXJKLENBQUEsRUFBQVosQ0FBQTtRQUFBO1FBQUEsU0FBQW1WLGtCQUFBaFYsQ0FBQTtVQUFBO1lBQUEsSUFBQU0sQ0FBQTtjQUFBRixDQUFBLEdBQUE4QyxTQUFBO1lBQUEsV0FBQWlGLE9BQUEsV0FBQTFILENBQUEsRUFBQVosQ0FBQTtjQUFBLElBQUFDLENBQUEsR0FBQUUsQ0FBQSxDQUFBbUQsS0FBQSxDQUFBN0MsQ0FBQSxFQUFBRixDQUFBO2NBQUEsU0FBQUwsRUFBQUMsQ0FBQTtnQkFBQStVLGtCQUFBLENBQUFqVixDQUFBLEVBQUFXLENBQUEsRUFBQVosQ0FBQSxFQUFBRSxDQUFBLEVBQUFxRyxDQUFBLFVBQUFwRyxDQUFBO2NBQUE7Y0FBQSxTQUFBb0csRUFBQXBHLENBQUE7Z0JBQUErVSxrQkFBQSxDQUFBalYsQ0FBQSxFQUFBVyxDQUFBLEVBQUFaLENBQUEsRUFBQUUsQ0FBQSxFQUFBcUcsQ0FBQSxXQUFBcEcsQ0FBQTtjQUFBO2NBQUFELENBQUE7WUFBQTtVQUFBO1FBQUE7UUFBQSxTQUFBeUIsZ0JBQUF4QixDQUFBLEVBQUFNLENBQUE7VUFBQSxNQUFBTixDQUFBLFlBQUFNLENBQUEsYUFBQW1CLFNBQUE7UUFBQTtRQUFBLFNBQUFDLGtCQUFBMUIsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsU0FBQUYsQ0FBQSxNQUFBQSxDQUFBLEdBQUFFLENBQUEsQ0FBQXFCLE1BQUEsRUFBQXZCLENBQUE7WUFBQSxJQUFBSyxDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQTtZQUFBSyxDQUFBLENBQUFtQixVQUFBLEdBQUFuQixDQUFBLENBQUFtQixVQUFBLFFBQUFuQixDQUFBLENBQUFvQixZQUFBLGtCQUFBcEIsQ0FBQSxLQUFBQSxDQUFBLENBQUFxQixRQUFBLFFBQUFDLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBaUMsY0FBQSxDQUFBeEIsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBekIsQ0FBQTtVQUFBO1FBQUE7UUFBQSxTQUFBMEIsYUFBQW5DLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1VBQUEsT0FBQUUsQ0FBQSxJQUFBb0IsaUJBQUEsQ0FBQTFCLENBQUEsQ0FBQXVCLFNBQUEsRUFBQWpCLENBQUEsR0FBQUYsQ0FBQSxJQUFBc0IsaUJBQUEsQ0FBQTFCLENBQUEsRUFBQUksQ0FBQSxHQUFBMkIsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBO1lBQUE4QixRQUFBO1VBQUEsSUFBQTlCLENBQUE7UUFBQTtRQUFBLFNBQUFpVixRQUFBalYsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsSUFBQUYsQ0FBQSxHQUFBMkIsTUFBQSxDQUFBMEksSUFBQSxDQUFBekssQ0FBQTtVQUFBLElBQUErQixNQUFBLENBQUE0TSxxQkFBQTtZQUFBLElBQUFsTyxDQUFBLEdBQUFzQixNQUFBLENBQUE0TSxxQkFBQSxDQUFBM08sQ0FBQTtZQUFBTSxDQUFBLEtBQUFHLENBQUEsR0FBQUEsQ0FBQSxDQUFBbU8sTUFBQSxXQUFBdE8sQ0FBQTtjQUFBLE9BQUF5QixNQUFBLENBQUE4TSx3QkFBQSxDQUFBN08sQ0FBQSxFQUFBTSxDQUFBLEVBQUFzQixVQUFBO1lBQUEsS0FBQXhCLENBQUEsQ0FBQTJELElBQUEsQ0FBQVosS0FBQSxDQUFBL0MsQ0FBQSxFQUFBSyxDQUFBO1VBQUE7VUFBQSxPQUFBTCxDQUFBO1FBQUE7UUFBQSxTQUFBOFUsY0FBQWxWLENBQUE7VUFBQSxTQUFBTSxDQUFBLE1BQUFBLENBQUEsR0FBQTRDLFNBQUEsQ0FBQXZCLE1BQUEsRUFBQXJCLENBQUE7WUFBQSxJQUFBRixDQUFBLFdBQUE4QyxTQUFBLENBQUE1QyxDQUFBLElBQUE0QyxTQUFBLENBQUE1QyxDQUFBO1lBQUFBLENBQUEsT0FBQTJVLE9BQUEsQ0FBQWxULE1BQUEsQ0FBQTNCLENBQUEsT0FBQXlILE9BQUEsV0FBQXZILENBQUE7Y0FBQTZVLGVBQUEsQ0FBQW5WLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUE7WUFBQSxLQUFBeUIsTUFBQSxDQUFBaU4seUJBQUEsR0FBQWpOLE1BQUEsQ0FBQWtOLGdCQUFBLENBQUFqUCxDQUFBLEVBQUErQixNQUFBLENBQUFpTix5QkFBQSxDQUFBNU8sQ0FBQSxLQUFBNlUsT0FBQSxDQUFBbFQsTUFBQSxDQUFBM0IsQ0FBQSxHQUFBeUgsT0FBQSxXQUFBdkgsQ0FBQTtjQUFBeUIsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBLEVBQUFNLENBQUEsRUFBQXlCLE1BQUEsQ0FBQThNLHdCQUFBLENBQUF6TyxDQUFBLEVBQUFFLENBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQU4sQ0FBQTtRQUFBO1FBQUEsU0FBQW1WLGdCQUFBblYsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxRQUFBRSxDQUFBLEdBQUEyQixjQUFBLENBQUEzQixDQUFBLE1BQUFOLENBQUEsR0FBQStCLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBTSxDQUFBO1lBQUFxQyxLQUFBLEVBQUF2QyxDQUFBO1lBQUF3QixVQUFBO1lBQUFDLFlBQUE7WUFBQUMsUUFBQTtVQUFBLEtBQUE5QixDQUFBLENBQUFNLENBQUEsSUFBQUYsQ0FBQSxFQUFBSixDQUFBO1FBQUE7UUFBQSxTQUFBaUMsZUFBQWpDLENBQUE7VUFBQSxJQUFBTSxDQUFBLEdBQUE4QixZQUFBLENBQUFwQyxDQUFBO1VBQUEsb0JBQUFtQixPQUFBLENBQUFiLENBQUEsSUFBQUEsQ0FBQSxHQUFBK0IsTUFBQSxDQUFBL0IsQ0FBQTtRQUFBO1FBQUEsU0FBQThCLGFBQUFwQyxDQUFBLEVBQUFNLENBQUE7VUFBQSxpQkFBQWEsT0FBQSxDQUFBbkIsQ0FBQSxjQUFBQSxDQUFBLFNBQUFBLENBQUE7VUFBQSxJQUFBSSxDQUFBLEdBQUFKLENBQUEsQ0FBQW9CLE1BQUEsQ0FBQWtCLFdBQUE7VUFBQSxlQUFBbEMsQ0FBQTtZQUFBLElBQUFLLENBQUEsR0FBQUwsQ0FBQSxDQUFBbUMsSUFBQSxDQUFBdkMsQ0FBQSxFQUFBTSxDQUFBO1lBQUEsaUJBQUFhLE9BQUEsQ0FBQVYsQ0FBQSxVQUFBQSxDQUFBO1lBQUEsVUFBQWdCLFNBQUE7VUFBQTtVQUFBLHFCQUFBbkIsQ0FBQSxHQUFBK0IsTUFBQSxHQUFBRyxNQUFBLEVBQUF4QyxDQUFBO1FBQUE7UUFBQWdCLE1BQUEsR0FBQUUsbUJBQUEsQ0FBQVYsR0FBQSxDQUFBUSxNQUFBLEdBQUFMLFdBQUEseUJBQUFELG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxJQUFBQSxXQUFBLENBQUFLLE1BQUE7UUFBQSxJQUFBNEQsYUFBQSx5QkFBQWxFLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQSxhQUFBYixDQUFBO1VBQUEsT0FBQUEsQ0FBQTtRQUFBO1FBdUNPLFNBQVNvVixxQkFBcUJwVixDQUFBLEVBQWVNLENBQUE7VUFDaEQsSUFBaUIsUUFBYkEsQ0FBQSxFQUF3QjtZQUN4QixJQUFZLFFBQVJOLENBQUEsRUFDQSxNQUFNLElBQUlvRixLQUFBLENBQU07WUFFcEIsT0FBTyxDQUFDLFNBQVMsVUFBVXBGLENBQUEsRUFBTU0sQ0FBQSxDQUNyQztVQUFBO1VBQ0EsT0FBWSxRQUFSTixDQUFBLEdBQ08sQ0FBQyxTQUFTLFVBQVVBLENBQUEsSUFFeEIsQ0FBQyxTQUFTLFNBQ3JCO1FBQUE7UUFFQSxTQUFTcVYsZUFBZXJWLENBQUE7VUFDcEIsT0FBTytCLE1BQUEsQ0FBTzBJLElBQUEsQ0FBS3pLLENBQUEsRUFDZDRPLE1BQUEsQ0FBTyxVQUFBdE8sQ0FBQTtZQUFJLE9BQUlOLENBQUEsQ0FBTU0sQ0FBQSxLQUFTeUIsTUFBQSxDQUFPUixTQUFBLENBQVVpSixjQUFBLENBQWVqSSxJQUFBLENBQUt2QyxDQUFBLENBQU1NLENBQUEsR0FBTyxRQUFRO1VBQUEsR0FDeEZzSCxHQUFBLENBQUksVUFBQXRILENBQUE7WUFDRCxJQUFNRixDQUFBLEdBQVNKLENBQUEsQ0FBTU0sQ0FBQTtZQUNyQixPQUFjLFFBQVZGLENBQUEsR0FDTyxDQUFDLElBRVorVSxlQUFBLEtBQVU3VSxDQUFBLEVBQU9GLENBQUEsQ0FBT3VDLEtBQUEsQ0FDNUI7VUFBQSxFQUNSO1FBQUE7UUFFQSxTQUFTMlMsa0JBQWtCdFYsQ0FBQTtVQUN2QixPQUFPQSxDQUFBLENBQU91VixNQUFBLENBQ1YsVUFBQ3ZWLENBQUEsRUFBUU0sQ0FBQTtZQUFLLE9BQUE0VSxhQUFBLENBQUFBLGFBQUEsS0FDUGxWLENBQUEsR0FDQU0sQ0FBQSxDQUFLO1VBQUEsR0FFWixDQUFDLEVBRVQ7UUFBQTtRQUFDLElBRUtrVixnQkFBQSxHQUFnQjtZQUdsQixTQUFBQSxpQkFBbUJ4VixDQUFBO2NBQW1Cd0IsZUFBQSxPQUFBZ1UsZ0JBQUEsUUFGckJDLElBQUEsUUFBSSxHQUdqQixLQUFLQSxJQUFBLEdBQU96VixDQUNoQjtZQUFBO1lBaUZDLElBQUEwVixZQUFBLEVBN0RBQyxrREFBQSxFQVJBQyx1QkFBQTtZQTBOQSxPQXRPQXpULFlBQUEsQ0FBQXFULGdCQUFBO2NBQUF0VCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFtQjNDLENBQUE7Z0JBQ2YsTUFBTSxJQUFJb0YsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxNQUFNLElBQUl5QyxLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUFsRCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFtQjNDLENBQUE7Z0JBQ2YsTUFBTSxJQUFJb0YsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEdBQUFpVCx1QkFBQSxHQUFBWixpQkFBQSxDQUFBdkMsbUJBQUEsR0FBQXlCLElBQUEsQ0FFRCxTQUFBbFUsRUFBb0NNLENBQUE7Z0JBQVksT0FBQW1TLG1CQUFBLEdBQUFLLElBQUEsV0FBQTlTLENBQUE7a0JBQUEsaUJBQUFBLENBQUEsQ0FBQXdVLElBQUEsR0FBQXhVLENBQUEsQ0FBQXlILElBQUE7b0JBQUE7c0JBQUEsTUFDdEMsSUFBSXJDLEtBQUEsQ0FBTTtvQkFBMEI7b0JBQUE7c0JBQUEsT0FBQXBGLENBQUEsQ0FBQTBVLElBQUE7a0JBQUE7Z0JBQUEsR0FBQTFVLENBQUE7Y0FBQSxLQUM3QyxVQUFBQSxDQUFBO2dCQUFBLE9BQUE0Vix1QkFBQSxDQUFBelMsS0FBQSxPQUFBRCxTQUFBO2NBQUE7WUFBQTtjQUFBaEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxNQUFNLElBQUl5QyxLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUFsRCxHQUFBO2NBQUFTLEtBQUEsR0FBQWdULGtEQUFBLEdBQUFYLGlCQUFBLENBQUF2QyxtQkFBQSxHQUFBeUIsSUFBQSxDQUVELFNBQUFsVSxFQUNJTSxDQUFBO2dCQUFnQixPQUFBbVMsbUJBQUEsR0FBQUssSUFBQSxXQUFBOVMsQ0FBQTtrQkFBQSxpQkFBQUEsQ0FBQSxDQUFBd1UsSUFBQSxHQUFBeFUsQ0FBQSxDQUFBeUgsSUFBQTtvQkFBQTtzQkFBQSxNQUVWLElBQUlyQyxLQUFBLENBQU07b0JBQTBCO29CQUFBO3NCQUFBLE9BQUFwRixDQUFBLENBQUEwVSxJQUFBO2tCQUFBO2dCQUFBLEdBQUExVSxDQUFBO2NBQUEsS0FDN0MsVUFBQUEsQ0FBQTtnQkFBQSxPQUFBMlYsa0RBQUEsQ0FBQXhTLEtBQUEsT0FBQUQsU0FBQTtjQUFBO1lBQUE7Y0FBQWhCLEdBQUE7Y0FBQVMsS0FBQSxFQUNELFNBQUFBLENBQXVCM0MsQ0FBQSxFQUF1Qk0sQ0FBQTtnQkFDMUMsTUFBTSxJQUFJOEUsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBYTNDLENBQUEsRUFBc0JNLENBQUE7Z0JBQy9CLE1BQU0sSUFBSThFLEtBQUEsQ0FBTSwwQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUNELFNBQUFBLENBQXFCM0MsQ0FBQSxFQUFrQk0sQ0FBQTtnQkFDbkMsTUFBTSxJQUFJOEUsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBZ0IzQyxDQUFBLEVBQWFNLENBQUE7Z0JBQ3pCLE9BQU8sS0FBS21WLElBQUEsQ0FBS0ksaUJBQUEsQ0FBa0JDLG9CQUFBLENBQXFCOVYsQ0FBQSxFQUFLK1YsS0FBQSxDQUFNelYsQ0FBQSxDQUN2RTtjQUFBO1lBQUEsR0FBQztjQUFBNEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBVTNDLENBQUEsRUFBbUJNLENBQUE7Z0JBQ3pCLEtBQUttVixJQUFBLENBQUtPLFlBQUEsQ0FBYUMsRUFBQSxDQUFHLENBQUMsUUFBUWpXLENBQUEsR0FBWU0sQ0FBQSxDQUNuRDtjQUFBO1lBQUEsR0FBQztjQUFBNEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBVzNDLENBQUEsRUFBbUJNLENBQUE7Z0JBQzFCLEtBQUttVixJQUFBLENBQUtPLFlBQUEsQ0FBYUUsR0FBQSxDQUFJLENBQUMsUUFBUWxXLENBQUEsR0FBWU0sQ0FBQSxDQUNwRDtjQUFBO1lBQUEsR0FBQztjQUFBNEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBcUIzQyxDQUFBLEVBQXlCTSxDQUFBO2dCQUUxQyxNQUFNOEUsS0FBQSxDQUFNLDRDQUNoQjtjQUFBO1lBQUEsR0FBQztjQUFBbEQsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxPQUFPLEtBQUs4UyxJQUFBLENBQUtVLFNBQUEsQ0FBVXRJLElBQUEsRUFDL0I7Y0FBQTtZQUFBLEdBQUM7Y0FBQTNMLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBTUksT0FMQSxLQUFLOFMsSUFBQSxDQUFLVSxTQUFBLENBQVVDLFlBQUEsSUFDaEIsS0FBS1gsSUFBQSxDQUFLWSxPQUFBLElBQ1YsS0FBS1osSUFBQSxDQUFLWSxPQUFBLElBR1AsS0FBS1osSUFBQSxDQUFLVSxTQUFBLENBQVV0SSxJQUFBLEVBQy9CO2NBQUE7WUFBQSxHQUFDO2NBQUEzTCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUVJLE9BQU8sRUFDWDtjQUFBO1lBQUEsR0FBQztjQUFBVCxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLElBQU0zQyxDQUFBLEdBQU8rQixNQUFBLENBQU8wSSxJQUFBLENBQUssS0FBS2dMLElBQUEsQ0FBS2EsS0FBQSxDQUFNQyxRQUFBLENBQVMsS0FBS2QsSUFBQSxDQUFLZSxRQUFBLENBQVNDLFFBQUE7Z0JBR3JFLE9BQU8sS0FBS2hCLElBQUEsQ0FBS2lCLFNBQUEsQ0FBVUMsV0FBQSxDQUFZM1csQ0FBQSxDQUMzQztjQUFBO1lBQUEsR0FBQztjQUFBa0MsR0FBQTtjQUFBUyxLQUFBLEVBQ0QsU0FBQUEsQ0FBaUMzQyxDQUFBO2dCQUM3QixNQUFNLElBQUlvRixLQUFBLENBQU0sa0JBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUFsRCxHQUFBO2NBQUFTLEtBQUEsR0FBQStTLFlBQUEsR0FBQVYsaUJBQUEsQ0FBQXZDLG1CQUFBLEdBQUF5QixJQUFBLENBRUQsU0FBQWxVLEVBQUE7Z0JBQUEsT0FBQXlTLG1CQUFBLEdBQUFLLElBQUEsV0FBQTlTLENBQUE7a0JBQUEsaUJBQUFBLENBQUEsQ0FBQXdVLElBQUEsR0FBQXhVLENBQUEsQ0FBQXlILElBQUE7b0JBQUE7c0JBQUEsTUFDVSxJQUFJckMsS0FBQSxDQUFNO29CQUFrQjtvQkFBQTtzQkFBQSxPQUFBcEYsQ0FBQSxDQUFBMFUsSUFBQTtrQkFBQTtnQkFBQSxHQUFBMVUsQ0FBQTtjQUFBLEtBQ3JDO2dCQUFBLE9BQUEwVixZQUFBLENBQUF2UyxLQUFBLE9BQUFELFNBQUE7Y0FBQTtZQUFBO2NBQUFoQixHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFtQzNDLENBQUE7Z0JBQy9CLE1BQU0sSUFBSW9GLEtBQUEsQ0FBTSxrQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksSUFBTTNDLENBQUEsR0FBYSxLQUFLeVYsSUFBQSxDQUFLYSxLQUFBLENBQU0zUyxHQUFBLENBQUksS0FBSzhSLElBQUEsQ0FBS2UsUUFBQSxDQUFTQyxRQUFBLEVBQVU7Z0JBQ3BFLE9BQXFCLFFBQWR6VyxDQUFBLElBQTJCQSxDQUFBLEdBQWEsQ0FDbkQ7Y0FBQTtZQUFBLEdBQUM7Y0FBQWtDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQTRCM0MsQ0FBQTtnQkFDeEIsS0FBS3lWLElBQUEsQ0FBS08sWUFBQSxDQUFhQyxFQUFBLENBQUdiLG9CQUFBLENBQXFCLEtBQUtLLElBQUEsQ0FBS2UsUUFBQSxDQUFTQyxRQUFBLEVBQVUsZ0JBQWdCelcsQ0FBQSxDQUNoRztjQUFBO1lBQUEsR0FBQztjQUFBa0MsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBNkIzQyxDQUFBO2dCQUN6QixLQUFLeVYsSUFBQSxDQUFLTyxZQUFBLENBQWFFLEdBQUEsQ0FBSWQsb0JBQUEsQ0FBcUIsS0FBS0ssSUFBQSxDQUFLZSxRQUFBLENBQVNDLFFBQUEsRUFBVSxnQkFBZ0J6VyxDQUFBLENBQ2pHO2NBQUE7WUFBQSxHQUFDO2NBQUFrQyxHQUFBO2NBQUFTLEtBQUEsRUFJRCxTQUFBQSxDQUNJM0MsQ0FBQSxFQUNBTSxDQUFBO2dCQUVBLElBQ3lCLFNBQXJCTixDQUFBLElBQzRCLG1CQUFyQkEsQ0FBQSxJQUNxQixhQUE1Qm1CLE9BQUEsQ0FBT25CLENBQUEsS0FDTitILEtBQUEsQ0FBTUMsT0FBQSxDQUFRaEksQ0FBQSxHQUpuQjtrQkFlQSxJQUFnQyxtQkFBckJBLENBQUEsRUFLWCxNQUFNLElBQUlvRixLQUFBLENBQU07a0JBSlosS0FBS3FRLElBQUEsQ0FBS2EsS0FBQSxDQUFNMVMsR0FBQSxDQUFJNUQsQ0FBQSxFQUFrQixTQUFTTSxDQUFBLENBSG5EO2dCQUFBLE9BYkE7a0JBTUksSUFBTUYsQ0FBQSxHQUFhMkIsTUFBQSxDQUFPMEksSUFBQSxDQUFLekssQ0FBQSxFQUFrQnVWLE1BQUEsQ0FDN0MsVUFBQ2pWLENBQUEsRUFBUUYsQ0FBQTtvQkFBSSxPQUFBOFUsYUFBQSxDQUFBQyxlQUFBLEtBQVMvVSxDQUFBLEVBQU87c0JBQUV1QyxLQUFBLEVBQU8zQyxDQUFBLENBQWlCSSxDQUFBO29CQUFBLElBQVlFLENBQUEsQ0FBTTtrQkFBQSxHQUN6RSxDQUFDO2tCQUdMLEtBQUttVixJQUFBLENBQUthLEtBQUEsQ0FBTU0sSUFBQSxDQUFLeFcsQ0FBQSxDQUV6QjtnQkFBQTtjQVFKO1lBQUEsR0FBQztjQUFBOEIsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBVzNDLENBQUE7Z0JBQWdFLElBQUFNLENBQUE7Z0JBQ3ZFLElBQUl5SCxLQUFBLENBQU1DLE9BQUEsQ0FBUWhJLENBQUEsR0FDZCxPQUFPc1YsaUJBQUEsQ0FDSHRWLENBQUEsQ0FDSzRILEdBQUEsQ0FBSSxVQUFBNUgsQ0FBQTtrQkFBSSxPQUFJcVYsY0FBQSxDQUFlL1UsQ0FBQSxDQUFLbVYsSUFBQSxDQUFLYSxLQUFBLENBQU1DLFFBQUEsQ0FBU3ZXLENBQUEsRUFBTTtnQkFBQSxHQUUxRHVWLE1BQUEsQ0FBOEMsVUFBQ3ZWLENBQUEsRUFBUU0sQ0FBQTtrQkFBSyxPQUFLTixDQUFBLENBQU9DLE1BQUEsQ0FBT0ssQ0FBQSxDQUFNO2dCQUFBLEdBQUU7Z0JBSXBHLElBQTJCLG1CQUFoQk4sQ0FBQSxFQUNQLE9BQU9zVixpQkFBQSxDQUFrQkQsY0FBQSxDQUFlLEtBQUtJLElBQUEsQ0FBS2EsS0FBQSxDQUFNQyxRQUFBLENBQVN2VyxDQUFBO2dCQUdyRSxTQUFvQixNQUFoQkEsQ0FBQSxFQUNBLE9BQU9zVixpQkFBQSxDQUFrQkQsY0FBQSxDQUFlLEtBQUtJLElBQUEsQ0FBS2EsS0FBQSxDQUFNQyxRQUFBLENBQVMsS0FBS2QsSUFBQSxDQUFLZSxRQUFBLENBQVNDLFFBQUE7Z0JBRXhGLE1BQU0sSUFBSXJSLEtBQUEsQ0FBTSwrREFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQWdCM0MsQ0FBQTtnQkFFWixPQUFPLEtBQUt5VixJQUFBLENBQUthLEtBQUEsQ0FBTTNTLEdBQUEsQ0FBSTNELENBQUEsRUFBTSxRQUNyQztjQUFBO1lBQUEsR0FBQztjQUFBa0MsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FDSTNDLENBQUEsRUFDQU0sQ0FBQSxFQUNBRixDQUFBO2dCQUVBLE1BQU0sSUFBSW9TLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBbUIzQyxDQUFBO2dCQUNmLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBbUIzQyxDQUFBO2dCQUNmLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxNQUFNLElBQUk2UCwyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQWlCM0MsQ0FBQTtnQkFDYixNQUFNLElBQUl3UywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQWtCM0MsQ0FBQTtnQkFDZCxNQUFNLElBQUl3UywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXVCM0MsQ0FBQTtnQkFDbkIsTUFBTSxJQUFJd1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF4QyxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUEyQjNDLENBQUE7Z0JBQ3ZCLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBMEIzQyxDQUFBO2dCQUN0QixNQUFNLElBQUl3UywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXNCM0MsQ0FBQSxFQUFjTSxDQUFBO2dCQUNoQyxNQUFNLElBQUlrUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXVCM0MsQ0FBQSxFQUFjTSxDQUFBO2dCQUNqQyxNQUFNLElBQUlrUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQTZCM0MsQ0FBQTtnQkFDekIsTUFBTSxJQUFJd1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF4QyxHQUFBO2NBQUFTLEtBQUEsRUFFRCxTQUFBQSxDQUFnQzNDLENBQUE7Z0JBQzVCLE9BQU9tSSxPQUFBLENBQVF5QixPQUFBLE1BQVEsRUFDM0I7Y0FBQTtZQUFBLEdBQUM7Y0FBQTFILEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQ0kzQyxDQUFBO2dCQUdBLE1BQU0sSUFBSW9GLEtBQUEsQ0FBTSwwQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQWxELEdBQUE7Y0FBQVMsS0FBQSxFQUVELFNBQUFBLENBQXVCM0MsQ0FBQSxFQUFzQk0sQ0FBQTtnQkFDekMsTUFBTSxJQUFJa1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF4QyxHQUFBO2NBQUFTLEtBQUEsRUFDRCxTQUFBQSxDQUE4QjNDLENBQUE7Z0JBQzFCLE1BQU0sSUFBSXdTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBeEMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFDSSxNQUFNLElBQUk2UCwyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXhDLEdBQUE7Y0FBQVMsS0FBQSxXQUFBc0MsaUNBQUEvQyxHQUFBLEVBQUFnRCxJQUFBO2dCQUFBLEtBQUFoRCxHQUFBLElBQUFpRCxJQUFBLENBQUFELElBQUE7Y0FBQTtZQUFBLEtBQUFzUSxnQkFBQTtVQUFBLENBM09pQjtVQWlQckJyUCxjQUFBO1VBSHFDcEYsV0FBQTtRQUEvQixTQUFTd1IsdUJBQXVCdlMsQ0FBQTtVQUVuQyxPQUFPLElBQUl3VixnQkFBQSxDQUFpQnhWLENBQUEsQ0FDaEM7UUFBQTtRQUFDbUcsY0FBQSx5QkFBQXpGLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsV0FBQXVGLGNBQUEsS0FBQUEsY0FBQSxDQUFBckYsUUFBQSxDQXBSZXNVLG9CQUFBLEVBQW9CLDRKQUFBalAsY0FBQSxDQUFBckYsUUFBQSxDQWEzQnVVLGNBQUEsRUFBYyxzSkFBQWxQLGNBQUEsQ0FBQXJGLFFBQUEsQ0FZZHdVLGlCQUFBLEVBQWlCLHlKQUFBblAsY0FBQSxDQUFBckYsUUFBQSxDQVVwQjBVLGdCQUFBLEVBQWdCLHdKQUFBclAsY0FBQSxDQUFBckYsUUFBQSxDQThPTnlSLHNCQUFBLEVBQXNCLCtKQUFBeFIsV0FBQSx5QkFBQUwsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUssV0FBQSxXQUFBQSxXQUFBLElBQUFBLFdBQUEsQ0FBQUMsTUFBQTtNQUFBO01BQUEsZUFBQWhCLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1FBQUEsSUFBQUssQ0FBQTtRQUFBLFNBQUFaLEVBQUFHLENBQUE7VUFBQSxPQUFBSCxDQUFBLHdCQUFBdUIsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFyQixDQUFBO1lBQUEsY0FBQUEsQ0FBQTtVQUFBLGNBQUFBLENBQUE7WUFBQSxPQUFBQSxDQUFBLHlCQUFBb0IsTUFBQSxJQUFBcEIsQ0FBQSxDQUFBc0IsV0FBQSxLQUFBRixNQUFBLElBQUFwQixDQUFBLEtBQUFvQixNQUFBLENBQUFHLFNBQUEscUJBQUF2QixDQUFBO1VBQUEsR0FBQUgsQ0FBQSxDQUFBRyxDQUFBO1FBQUE7UUFBQSxTQUFBRixFQUFBRSxDQUFBLEVBQUFNLENBQUE7VUFBQSxTQUFBRixDQUFBLE1BQUFBLENBQUEsR0FBQUUsQ0FBQSxDQUFBcUIsTUFBQSxFQUFBdkIsQ0FBQTtZQUFBLElBQUFLLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBO1lBQUFLLENBQUEsQ0FBQW1CLFVBQUEsR0FBQW5CLENBQUEsQ0FBQW1CLFVBQUEsUUFBQW5CLENBQUEsQ0FBQW9CLFlBQUEsa0JBQUFwQixDQUFBLEtBQUFBLENBQUEsQ0FBQXFCLFFBQUEsUUFBQUMsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBLFdBQUFGLENBQUEsYUFBQUUsQ0FBQSxFQUFBTSxDQUFBO2NBQUEsaUJBQUFULENBQUEsQ0FBQUcsQ0FBQSxjQUFBQSxDQUFBLFNBQUFBLENBQUE7Y0FBQSxJQUFBSSxDQUFBLEdBQUFKLENBQUEsQ0FBQW9CLE1BQUEsQ0FBQWtCLFdBQUE7Y0FBQSxlQUFBbEMsQ0FBQTtnQkFBQSxJQUFBSyxDQUFBLEdBQUFMLENBQUEsQ0FBQW1DLElBQUEsQ0FBQXZDLENBQUE7Z0JBQUEsaUJBQUFILENBQUEsQ0FBQVksQ0FBQSxVQUFBQSxDQUFBO2dCQUFBLFVBQUFnQixTQUFBO2NBQUE7Y0FBQSxPQUFBWSxNQUFBLENBQUFyQyxDQUFBO1lBQUEsRUFBQVMsQ0FBQSxDQUFBeUIsR0FBQSxnQkFBQXJDLENBQUEsQ0FBQUMsQ0FBQSxJQUFBQSxDQUFBLEdBQUF1QyxNQUFBLENBQUF2QyxDQUFBLElBQUFXLENBQUE7VUFBQTtVQUFBLElBQUFYLENBQUE7UUFBQTtRQUFBTSxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBTixDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBcUcsQ0FBQTtVQUFBO1FBQUEsSUFBQXJHLENBQUEsR0FBQUksQ0FBQSxDQUFBSSxHQUFBLENBQUFSLENBQUEsSUFBQVMsQ0FBQSx5QkFBQUMsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBRixDQUFBLENBQUFULENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQTtRQUFBLElDMVByQ2QsQ0FBQTtVQTlENEJxRyxDQUFBO1VBQWhCQyxDQUFBLEdBQWdCO1lBQUEsU0FBQXJHLEVBQUE7Y0FBQSxXQUFBQSxDQUFBLEVBQUFNLENBQUE7Z0JBQUEsTUFBQU4sQ0FBQSxZQUFBTSxDQUFBLGFBQUFtQixTQUFBO2NBQUEsUUFBQXpCLENBQUE7WUFBQTtZQUFBLElBQUFNLENBQUEsRUFBQUYsQ0FBQTtZQTZEeEIsT0FBQUUsQ0FBQSxHQTdEd0JOLENBQUEsRUFBQUksQ0FBQTtjQUFBOEIsR0FBQTtjQUFBUyxLQUFBLEVBQ3pCLFNBQUFBLENBQXFCM0MsQ0FBQSxFQUFhTSxDQUFBO2dCQUM5QixJQUFJRixDQUFBLElBQWU7a0JBQ2JLLENBQUEsR0FBT29XLFFBQUEsQ0FBU0Msb0JBQUEsQ0FBcUIsUUFBUSxNQUFNRCxRQUFBLENBQVNFLGVBQUE7a0JBRTVEbFgsQ0FBQSxHQUFjZ1gsUUFBQSxDQUFTRyxhQUFBLENBQWM7Z0JBRTNDLFNBQVNsWCxFQUFBO2tCQUNETSxDQUFBLElBSUNQLENBQUEsQ0FBTzhOLFVBQUEsSUFBb0MsYUFBdEI5TixDQUFBLENBQU84TixVQUFBLElBQWlELGVBQXRCOU4sQ0FBQSxDQUFPOE4sVUFBQSxLQUMvRHZOLENBQUEsSUFBZSxHQUNmRSxDQUFBLEdBRVI7Z0JBQUE7Z0JBTUFULENBQUEsQ0FBT3dJLE1BQUEsR0FBU3ZJLENBQUEsRUFDaEJELENBQUEsQ0FBTzZOLGtCQUFBLEdBQXFCNU4sQ0FBQSxFQUk1QkQsQ0FBQSxDQUFPMEksT0FBQSxHQUFVO2tCQUNUMUksQ0FBQSxDQUFPb1gsVUFBQSxJQUNQcFgsQ0FBQSxDQUFPb1gsVUFBQSxDQUFXQyxXQUFBLENBQVlyWCxDQUFBLEdBRWxDUyxDQUFBLENBQVMsSUFBSThFLEtBQUEsQ0FBTSwrQkFDdkI7Z0JBQUEsR0FLQXZGLENBQUEsQ0FBT3NYLEdBQUEsR0FBTW5YLENBQUEsRUFDYkgsQ0FBQSxDQUFPdVgsWUFBQSxDQUFhLGVBQWUsb0JBQ25DM1csQ0FBQSxDQUFLNFcsV0FBQSxDQUFZeFgsQ0FBQSxDQUNyQjtjQUFBO1lBQUEsR0FBQztjQUFBcUMsR0FBQTtjQUFBUyxLQUFBLEVBRUQsU0FBQUEsQ0FBeUIzQyxDQUFBLEVBQWFNLENBQUEsRUFBc0JGLENBQUE7Z0JBQXlDLElBQUFLLENBQUE7a0JBVTNGWixDQUFBLEdBQStDLFVBQTNDWSxDQUFBLEdBQUdvVyxRQUFBLENBQVNDLG9CQUFBLENBQXFCLFFBQVEsWUFBRSxNQUFBclcsQ0FBQSxHQUFBQSxDQUFBLEdBQUlvVyxRQUFBLENBQVNFLGVBQUE7a0JBQzVEalgsQ0FBQSxHQUFPK1csUUFBQSxDQUFTRyxhQUFBLENBQWM7Z0JBRXBDbFgsQ0FBQSxDQUFLc1gsWUFBQSxDQUFhLE9BQU8sZUFDekJ0WCxDQUFBLENBQUtzWCxZQUFBLENBQWEsUUFBUSxhQUMxQnRYLENBQUEsQ0FBSzJOLGdCQUFBLENBQWlCLFFBZE47a0JBQUgsT0FBU3JOLENBQUEsTUFBUyxFQUFVO2dCQUFBLElBZXpDTixDQUFBLENBQUsyTixnQkFBQSxDQUFpQixTQWRQO2tCQUVQck4sQ0FBQSxDQURBRSxDQUFBLFFBQ1MsSUFFQSxJQUFJOEUsS0FBQSxDQUFNLG1DQUUzQjtnQkFBQSxJQVNBdkYsQ0FBQSxDQUFLd1gsV0FBQSxDQUFZdlgsQ0FBQSxHQUNqQkEsQ0FBQSxDQUFLc1gsWUFBQSxDQUFhLFFBQVFwWCxDQUFBLENBQzlCO2NBQUE7WUFBQSxJQTdEeUIsUUFBQUYsQ0FBQSxDQUFBUSxDQUFBLENBQUFpQixTQUFBLFNBQUFuQixDQUFBLElBQUFOLENBQUEsQ0FBQVEsQ0FBQSxFQUFBRixDQUFBLEdBQUEyQixNQUFBLENBQUFDLGNBQUEsQ0FBQTFCLENBQUE7Y0FBQXdCLFFBQUE7WUFBQSxJQTZEeEI5QixDQUFBO1VBQUEsQ0E3RHdCO1FBQUEsQ0E4RDVCRCxDQUFBLHlCQUFBVyxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBRSxPQUFBLGNBQUFiLENBQUEsQ0FBQWUsUUFBQSxDQTlEWXVGLENBQUEsRUFBZ0IsMkhBQUFELENBQUEseUJBQUExRixvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUFxRixDQUFBLENBQUFwRyxDQUFBO01BQUE7SUFBQTtJQ0F6QnNYLHdCQUFBLEdBQTJCLENBQUM7RUFHaEMsU0FBU3BXLG9CQUFvQmxCLENBQUE7SUFFNUIsSUFBSU0sQ0FBQSxHQUFlZ1gsd0JBQUEsQ0FBeUJ0WCxDQUFBO0lBQzVDLFNBQXFCLE1BQWpCTSxDQUFBLEVBQ0gsT0FBT0EsQ0FBQSxDQUFhaVgsT0FBQTtJQUdyQixJQUFJblgsQ0FBQSxHQUFTa1gsd0JBQUEsQ0FBeUJ0WCxDQUFBLElBQVk7TUFDakR3WCxFQUFBLEVBQUl4WCxDQUFBO01BQ0p5WCxNQUFBLEdBQVE7TUFDUkYsT0FBQSxFQUFTLENBQUM7SUFBQTtJQVVYLE9BTkFHLG1CQUFBLENBQW9CMVgsQ0FBQSxFQUFVSSxDQUFBLEVBQVFBLENBQUEsQ0FBT21YLE9BQUEsRUFBU3JXLG1CQUFBLEdBR3REZCxDQUFBLENBQU9xWCxNQUFBLElBQVMsR0FHVHJYLENBQUEsQ0FBT21YLE9BQ2Y7RUFBQTtFQ3hCQXJXLG1CQUFBLENBQW9CYixDQUFBLEdBQUksVUFBU0wsQ0FBQSxFQUFTTSxDQUFBO0lBQ3pDLEtBQUksSUFBSUYsQ0FBQSxJQUFPRSxDQUFBLEVBQ1hZLG1CQUFBLENBQW9CVCxDQUFBLENBQUVILENBQUEsRUFBWUYsQ0FBQSxNQUFTYyxtQkFBQSxDQUFvQlQsQ0FBQSxDQUFFVCxDQUFBLEVBQVNJLENBQUEsS0FDNUUyQixNQUFBLENBQU9DLGNBQUEsQ0FBZWhDLENBQUEsRUFBU0ksQ0FBQSxFQUFLO01BQUV3QixVQUFBLEdBQVk7TUFBTStCLEdBQUEsRUFBS3JELENBQUEsQ0FBV0YsQ0FBQTtJQUFBLEVBRzNFO0VBQUEsR0NQQWMsbUJBQUEsQ0FBb0JpSixDQUFBLEdBQUk7SUFDdkIsSUFBMEIsbUJBQWZ0RCxVQUFBLEVBQXlCLE9BQU9BLFVBQUE7SUFDM0M7TUFDQyxPQUFPLFFBQVEsSUFBSTdDLFFBQUEsQ0FBUyxjQUFiLEVBQ2hCO0lBQUEsQ0FBRSxRQUFPaEUsQ0FBQTtNQUNSLElBQXNCLG1CQUFYMlgsTUFBQSxFQUFxQixPQUFPQSxNQUN4QztJQUFBO0VBQ0EsQ0FQdUIsSUNBeEJ6VyxtQkFBQSxDQUFvQlYsR0FBQSxHQUFNLFVBQVNSLENBQUE7SUFTbEMsUUFSQUEsQ0FBQSxHQUFTK0IsTUFBQSxDQUFPVyxNQUFBLENBQU8xQyxDQUFBLEdBQ1g0WCxRQUFBLEtBQVU1WCxDQUFBLENBQU80WCxRQUFBLEdBQVcsS0FDeEM3VixNQUFBLENBQU9DLGNBQUEsQ0FBZWhDLENBQUEsRUFBUSxXQUFXO01BQ3hDNEIsVUFBQSxHQUFZO01BQ1pnQyxHQUFBLEVBQUssU0FBQUEsQ0FBQTtRQUNKLE1BQU0sSUFBSXdCLEtBQUEsQ0FBTSw0RkFBNEZwRixDQUFBLENBQU93WCxFQUFBLENBQ3BIO01BQUE7SUFBQSxJQUVNeFgsQ0FDUjtFQUFBLEdDVkFrQixtQkFBQSxDQUFvQlQsQ0FBQSxHQUFJLFVBQVNULENBQUEsRUFBS00sQ0FBQTtJQUFRLE9BQU95QixNQUFBLENBQU9SLFNBQUEsQ0FBVWlKLGNBQUEsQ0FBZWpJLElBQUEsQ0FBS3ZDLENBQUEsRUFBS00sQ0FBQSxDQUFPO0VBQUE7RUNHdEcsSUFBSVcsbUJBQUEsR0FBc0JDLG1CQUFBLENBQW9CO0FBQUEifQ==