@tricoteuses/assemblee 1.6.1 → 1.7.1

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 (130) hide show
  1. package/README.md +9 -27
  2. package/lib/bugs/acteur-00010/plugin.test.js +4 -4
  3. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  4. package/lib/bugs/acteur-00010.js +15 -16
  5. package/lib/bugs/acteur-00010.mjs +1 -1
  6. package/lib/bugs/agenda-00002/plugin.test.js +4 -4
  7. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  8. package/lib/bugs/agenda-00002.js +27 -28
  9. package/lib/bugs/agenda-00002.mjs +3 -3
  10. package/lib/bugs/agenda-00008/plugin.test.js +4 -4
  11. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  12. package/lib/bugs/agenda-00008.js +15 -16
  13. package/lib/bugs/agenda-00008.mjs +1 -1
  14. package/lib/bugs/agenda-00011/plugin.test.js +5 -5
  15. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  16. package/lib/bugs/agenda-00011.js +21 -22
  17. package/lib/bugs/agenda-00011.mjs +3 -3
  18. package/lib/bugs.js +17 -19
  19. package/lib/bugs.mjs +3 -3
  20. package/lib/cleaners/actes_legislatifs.js +5 -5
  21. package/lib/cleaners/acteurs.js +5 -5
  22. package/lib/cleaners/acteurs.mjs +1 -1
  23. package/lib/cleaners/amendements.js +5 -5
  24. package/lib/cleaners/documents.js +5 -5
  25. package/lib/cleaners/dossiers_legislatifs.js +5 -5
  26. package/lib/cleaners/organes.js +2 -2
  27. package/lib/cleaners/reunions.js +5 -5
  28. package/lib/cleaners/scrutins.js +23 -10
  29. package/lib/cleaners/scrutins.mjs +16 -3
  30. package/lib/cleaners/xml.js +8 -8
  31. package/lib/cleaners/xml.mjs +1 -1
  32. package/lib/datasets.d.ts +2 -2
  33. package/lib/datasets.js +53 -132
  34. package/lib/datasets.mjs +40 -118
  35. package/lib/dates.js +1 -2
  36. package/lib/dossiers_legislatifs.js +8 -8
  37. package/lib/file_systems.js +15 -14
  38. package/lib/file_systems.mjs +3 -3
  39. package/lib/git.d.ts +1 -0
  40. package/lib/git.js +21 -5
  41. package/lib/git.mjs +16 -1
  42. package/lib/inserters.js +3 -3
  43. package/lib/loaders.d.ts +14 -40
  44. package/lib/loaders.js +586 -1091
  45. package/lib/loaders.mjs +115 -357
  46. package/lib/parsers/documents.js +10 -10
  47. package/lib/parsers/documents.mjs +1 -1
  48. package/lib/parsers/recherche_amendements.js +17 -15
  49. package/lib/parsers/recherche_amendements.mjs +1 -1
  50. package/lib/raw_types/acteurs_et_organes.js +9 -9
  51. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  52. package/lib/raw_types/agendas.js +9 -9
  53. package/lib/raw_types/agendas.mjs +1 -1
  54. package/lib/raw_types/amendements.js +9 -9
  55. package/lib/raw_types/amendements.mjs +1 -1
  56. package/lib/raw_types/debats.d.ts +26 -78
  57. package/lib/raw_types/debats.js +49 -242
  58. package/lib/raw_types/debats.mjs +41 -234
  59. package/lib/raw_types/dossiers_legislatifs.js +9 -9
  60. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  61. package/lib/raw_types/questions.js +9 -9
  62. package/lib/raw_types/questions.mjs +1 -1
  63. package/lib/raw_types/scrutins.d.ts +21 -9
  64. package/lib/raw_types/scrutins.js +46 -20
  65. package/lib/raw_types/scrutins.mjs +37 -11
  66. package/lib/scripts/bugs_helper.js +17 -18
  67. package/lib/scripts/bugs_helper.mjs +3 -3
  68. package/lib/scripts/clean_reorganized_data.js +183 -561
  69. package/lib/scripts/clean_reorganized_data.mjs +111 -410
  70. package/lib/scripts/diff_amendements.js +11 -24
  71. package/lib/scripts/diff_amendements.mjs +3 -17
  72. package/lib/scripts/document_dossiers_legislatifs.js +24 -27
  73. package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
  74. package/lib/scripts/get_today_reunions.js +5 -8
  75. package/lib/scripts/get_today_reunions.mjs +3 -7
  76. package/lib/scripts/merge_scrutins.js +11 -24
  77. package/lib/scripts/merge_scrutins.mjs +3 -17
  78. package/lib/scripts/parse_textes_lois.js +8 -38
  79. package/lib/scripts/parse_textes_lois.mjs +3 -33
  80. package/lib/scripts/raw_types_from_amendements.js +14 -27
  81. package/lib/scripts/raw_types_from_amendements.mjs +3 -17
  82. package/lib/scripts/reorganize_data.js +204 -456
  83. package/lib/scripts/reorganize_data.mjs +68 -260
  84. package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
  85. package/lib/scripts/retrieve_deputes_photos.js +146 -172
  86. package/lib/scripts/retrieve_deputes_photos.mjs +74 -98
  87. package/lib/scripts/retrieve_documents.js +207 -156
  88. package/lib/scripts/retrieve_documents.mjs +116 -128
  89. package/lib/scripts/retrieve_open_data.js +272 -249
  90. package/lib/scripts/retrieve_open_data.mjs +109 -123
  91. package/lib/scripts/retrieve_pending_amendments.js +16 -67
  92. package/lib/scripts/retrieve_pending_amendments.mjs +4 -55
  93. package/lib/scripts/retrieve_senateurs_photos.js +20 -77
  94. package/lib/scripts/retrieve_senateurs_photos.mjs +5 -61
  95. package/lib/scripts/retrieve_textes_lois.js +18 -46
  96. package/lib/scripts/retrieve_textes_lois.mjs +3 -33
  97. package/lib/scripts/shared/cli_helpers.d.ts +66 -0
  98. package/lib/scripts/shared/cli_helpers.js +90 -0
  99. package/lib/scripts/shared/cli_helpers.mjs +72 -0
  100. package/lib/scripts/test_iter_load.d.ts +1 -0
  101. package/lib/scripts/test_iter_load.js +154 -0
  102. package/lib/scripts/test_iter_load.mjs +71 -0
  103. package/lib/scripts/test_load.js +4 -15
  104. package/lib/scripts/test_load.mjs +3 -14
  105. package/lib/scripts/test_load_big_files.js +4 -15
  106. package/lib/scripts/test_load_big_files.mjs +3 -14
  107. package/lib/scripts/validate_json.js +15 -16
  108. package/lib/scripts/validate_json.mjs +3 -3
  109. package/lib/types/acteurs_et_organes.js +9 -9
  110. package/lib/types/acteurs_et_organes.mjs +1 -1
  111. package/lib/types/agendas.js +9 -9
  112. package/lib/types/agendas.mjs +1 -1
  113. package/lib/types/amendements.js +9 -9
  114. package/lib/types/amendements.mjs +1 -1
  115. package/lib/types/debats.d.ts +27 -79
  116. package/lib/types/debats.js +48 -241
  117. package/lib/types/debats.mjs +40 -233
  118. package/lib/types/dossiers_legislatifs.js +9 -9
  119. package/lib/types/dossiers_legislatifs.mjs +1 -1
  120. package/lib/types/legislatures.d.ts +4 -4
  121. package/lib/types/legislatures.js +5 -5
  122. package/lib/types/legislatures.mjs +5 -5
  123. package/lib/types/questions.js +9 -9
  124. package/lib/types/questions.mjs +1 -1
  125. package/lib/types/scrutins.d.ts +13 -4
  126. package/lib/types/scrutins.js +29 -15
  127. package/lib/types/scrutins.mjs +20 -6
  128. package/lib/urls.js +2 -2
  129. package/lib/urls.mjs +1 -1
  130. package/package.json +9 -7
@@ -11,6 +11,7 @@ require("core-js/modules/es.array.from.js");
11
11
  require("core-js/modules/es.array.is-array.js");
12
12
  require("core-js/modules/es.array.reverse.js");
13
13
  require("core-js/modules/es.array.slice.js");
14
+ require("core-js/modules/es.date.to-string.js");
14
15
  require("core-js/modules/es.function.name.js");
15
16
  require("core-js/modules/es.json.to-string-tag.js");
16
17
  require("core-js/modules/es.math.to-string-tag.js");
@@ -18,28 +19,21 @@ require("core-js/modules/es.object.create.js");
18
19
  require("core-js/modules/es.object.define-property.js");
19
20
  require("core-js/modules/es.object.get-prototype-of.js");
20
21
  require("core-js/modules/es.object.set-prototype-of.js");
22
+ require("core-js/modules/es.regexp.to-string.js");
21
23
  require("core-js/modules/web.dom-collections.for-each.js");
22
24
  require("core-js/modules/es.array.concat.js");
23
25
  require("core-js/modules/es.array.filter.js");
24
- require("core-js/modules/es.array.includes.js");
25
26
  require("core-js/modules/es.array.iterator.js");
26
27
  require("core-js/modules/es.array.join.js");
27
- require("core-js/modules/es.array.map.js");
28
- require("core-js/modules/es.array.reduce.js");
29
- require("core-js/modules/es.array.some.js");
30
- require("core-js/modules/es.date.to-string.js");
31
- require("core-js/modules/es.number.constructor.js");
28
+ require("core-js/modules/es.date.to-json.js");
32
29
  require("core-js/modules/es.object.keys.js");
33
30
  require("core-js/modules/es.object.to-string.js");
34
31
  require("core-js/modules/es.promise.js");
35
32
  require("core-js/modules/es.regexp.exec.js");
36
- require("core-js/modules/es.regexp.to-string.js");
37
33
  require("core-js/modules/es.string.ends-with.js");
38
- require("core-js/modules/es.string.includes.js");
39
34
  require("core-js/modules/es.string.iterator.js");
40
35
  require("core-js/modules/es.string.replace.js");
41
36
  require("core-js/modules/web.dom-collections.iterator.js");
42
- var _assert = _interopRequireDefault(require("assert"));
43
37
  var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
44
38
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
45
39
  var _path = _interopRequireDefault(require("path"));
@@ -49,272 +43,301 @@ var _util = _interopRequireDefault(require("util"));
49
43
  var _datasets = require("../datasets");
50
44
  var _file_systems = require("../file_systems");
51
45
  var _legislatures = require("../types/legislatures");
52
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
53
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
54
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
55
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
46
+ var _cli_helpers = require("./shared/cli_helpers");
47
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
48
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
49
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
56
50
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
57
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
58
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
59
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
60
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
61
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
62
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
63
- var xml2js = require("xml2js");
64
- var optionsDefinitions = [{
65
- alias: "f",
66
- help: "fetch datasets instead of retrieving them from files",
67
- name: "fetch",
68
- type: Boolean
69
- }, {
70
- alias: "k",
71
- defaultValue: ["All"],
72
- help: "categories of datasets to retrieve",
73
- multiple: true,
74
- name: "categories",
75
- type: String
76
- }, {
77
- alias: "l",
78
- help: "legislatures of categories of datasets to retrieve; leave empty or use 0 for all",
79
- multiple: true,
80
- name: "legislature",
81
- type: Number
82
- }, {
83
- alias: "s",
84
- help: "don't log anything",
85
- name: "silent",
86
- type: Boolean
87
- }, {
88
- defaultOption: true,
89
- help: "directory containing Assemblée open data files",
90
- name: "dataDir",
91
- type: String
92
- }];
51
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
52
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
53
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
54
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
55
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
56
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
57
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
58
+ var _require = require("fast-xml-parser"),
59
+ XMLParser = _require.XMLParser;
60
+ var optionsDefinitions = [_cli_helpers.categoriesOption, _cli_helpers.legislatureOption, _cli_helpers.silentOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.fetchOption];
93
61
  var options = (0, _commandLineArgs["default"])(optionsDefinitions);
94
62
  var pipeline = _util["default"].promisify(_stream["default"].pipeline);
95
- function retrieveOpenData(_x) {
96
- return _retrieveOpenData.apply(this, arguments);
63
+
64
+ // Function to fetch zip files with retry mechanism
65
+ function fetchZipFile(_x, _x2) {
66
+ return _fetchZipFile.apply(this, arguments);
97
67
  }
98
- function _retrieveOpenData() {
99
- _retrieveOpenData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(dataDir) {
100
- var _options$legislature;
101
- var enabledDatasets, chosenDatasets, legislatures, enabledLegislatures, _iterator, _step, _loop;
102
- return _regeneratorRuntime().wrap(function _callee$(_context3) {
103
- while (1) switch (_context3.prev = _context3.next) {
68
+ function _fetchZipFile() {
69
+ _fetchZipFile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(url, zipFilePath) {
70
+ var retries,
71
+ attempt,
72
+ response,
73
+ _args = arguments;
74
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
75
+ while (1) switch (_context.prev = _context.next) {
104
76
  case 0:
105
- options.categories.map(function (datasetName) {
106
- return _assert["default"].notStrictEqual(_datasets.EnabledDatasets[datasetName], undefined, "Unknown name of dataset: ".concat(datasetName));
107
- });
108
- enabledDatasets = options.categories.reduce(function (enabledDatasets, datasetName) {
109
- return enabledDatasets | _datasets.EnabledDatasets[datasetName];
110
- }, _datasets.EnabledDatasets.None);
111
- chosenDatasets = [].concat(_toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes ? _datasets.datasets.acteursEtOrganes : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Agendas ? _datasets.datasets.agendas : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Amendements ? _datasets.datasets.amendements : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs ? _datasets.datasets.dossiersLegislatifs : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Scrutins ? _datasets.datasets.scrutins : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Questions ? _datasets.datasets.questions : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances ? _datasets.datasets.comptesRendusSeances : [])); // When a given legislature is 0, it is the same as giving no legislature:
112
- // It means "every legislatures".
113
- legislatures = (_options$legislature = options.legislature) !== null && _options$legislature !== void 0 && _options$legislature.some(function (legislature) {
114
- return legislature === 0;
115
- }) ? undefined : options.legislature;
116
- if (legislatures !== undefined) {
117
- enabledLegislatures = legislatures.map(function (legislature) {
118
- return legislature.toString();
77
+ retries = _args.length > 2 && _args[2] !== undefined ? _args[2] : 3;
78
+ attempt = 0;
79
+ case 2:
80
+ if (!(attempt < retries)) {
81
+ _context.next = 21;
82
+ break;
83
+ }
84
+ _context.next = 5;
85
+ return fetch(url);
86
+ case 5:
87
+ response = _context.sent;
88
+ if (!response.ok) {
89
+ _context.next = 12;
90
+ break;
91
+ }
92
+ _context.next = 9;
93
+ return pipeline(response.body, _fsExtra["default"].createWriteStream(zipFilePath));
94
+ case 9:
95
+ return _context.abrupt("return");
96
+ case 12:
97
+ if (!(attempt < retries - 1)) {
98
+ _context.next = 16;
99
+ break;
100
+ }
101
+ console.warn("Retrying fetch for ".concat(url, ": ").concat(response.statusText));
102
+ _context.next = 18;
103
+ break;
104
+ case 16:
105
+ console.error("Failed to fetch ".concat(url, " after ").concat(retries, " attempts"));
106
+ throw new Error("Fetch failed: ".concat(url));
107
+ case 18:
108
+ attempt++;
109
+ _context.next = 2;
110
+ break;
111
+ case 21:
112
+ case "end":
113
+ return _context.stop();
114
+ }
115
+ }, _callee);
116
+ }));
117
+ return _fetchZipFile.apply(this, arguments);
118
+ }
119
+ function extractZip(_x3, _x4) {
120
+ return _extractZip.apply(this, arguments);
121
+ }
122
+ function _extractZip() {
123
+ _extractZip = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(zipFilePath, outputDir) {
124
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
125
+ while (1) switch (_context2.prev = _context2.next) {
126
+ case 0:
127
+ return _context2.abrupt("return", new Promise(function (resolve, reject) {
128
+ var zip = new _nodeStreamZip["default"]({
129
+ file: zipFilePath,
130
+ storeEntries: true
119
131
  });
120
- chosenDatasets = chosenDatasets.filter(function (dataset) {
121
- return dataset.legislature === _legislatures.Legislature.All || enabledLegislatures.includes(dataset.legislature);
132
+ zip.on("ready", function () {
133
+ zip.extract(null, outputDir, function (err) {
134
+ zip.close();
135
+ if (err) {
136
+ reject(err);
137
+ } else {
138
+ resolve();
139
+ }
140
+ });
122
141
  });
142
+ }));
143
+ case 1:
144
+ case "end":
145
+ return _context2.stop();
146
+ }
147
+ }, _callee2);
148
+ }));
149
+ return _extractZip.apply(this, arguments);
150
+ }
151
+ function reindentJsonFiles(dataDirOrFilePath) {
152
+ if (_fsExtra["default"].statSync(dataDirOrFilePath).isDirectory()) {
153
+ var _iterator = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath)),
154
+ _step;
155
+ try {
156
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
157
+ var dataFileSplitPath = _step.value;
158
+ var dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
159
+ if (dataFilePath.endsWith(".json")) {
160
+ var data = JSON.parse(_fsExtra["default"].readFileSync(dataFilePath, {
161
+ encoding: "utf-8"
162
+ }));
163
+ _fsExtra["default"].writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
164
+ }
165
+ }
166
+ } catch (err) {
167
+ _iterator.e(err);
168
+ } finally {
169
+ _iterator.f();
170
+ }
171
+ } else {
172
+ var _data = JSON.parse(_fsExtra["default"].readFileSync(dataDirOrFilePath, {
173
+ encoding: "utf-8"
174
+ }));
175
+ _fsExtra["default"].writeFileSync(dataDirOrFilePath, JSON.stringify(_data, null, 2));
176
+ }
177
+ }
178
+ function processDataset(_x5, _x6, _x7, _x8) {
179
+ return _processDataset.apply(this, arguments);
180
+ }
181
+ function _processDataset() {
182
+ _processDataset = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(dataset, dataDir, parser, options) {
183
+ var zipFilePath, dataDirOrFilePath, _iterator2, _step2, _loop;
184
+ return _regeneratorRuntime().wrap(function _callee3$(_context4) {
185
+ while (1) switch (_context4.prev = _context4.next) {
186
+ case 0:
187
+ zipFilePath = _path["default"].join(dataDir, "".concat(dataset.filename, ".zip"));
188
+ dataDirOrFilePath = _path["default"].join(dataDir, dataset.filename);
189
+ _fsExtra["default"].removeSync(dataDirOrFilePath);
190
+ if (!options.fetch) {
191
+ _context4.next = 7;
192
+ break;
123
193
  }
124
- _iterator = _createForOfIteratorHelper(chosenDatasets);
125
- _context3.prev = 6;
194
+ // Fetch & save ZIP file.
195
+ if (!options.silent) {
196
+ console.log("Loading ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
197
+ }
198
+ _context4.next = 7;
199
+ return fetchZipFile(dataset.url, zipFilePath);
200
+ case 7:
201
+ if (!options.silent) {
202
+ console.log("Unzipping ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
203
+ }
204
+ _context4.next = 10;
205
+ return extractZip(zipFilePath, dataDir);
206
+ case 10:
207
+ if (dataset.repairZip !== undefined) {
208
+ if (!options.silent) {
209
+ console.log("Repairing ".concat(dataset.title, ": ").concat(dataset.filename));
210
+ }
211
+ dataset.repairZip(dataset, dataDir);
212
+ }
213
+
214
+ // Convert xml to JSON.
215
+ if (!dataset.filename.endsWith(".xml")) {
216
+ _context4.next = 28;
217
+ break;
218
+ }
219
+ _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath));
220
+ _context4.prev = 13;
126
221
  _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
127
- var dataset, zipFilePath, response, dataDirOrFilePath, zip, _iterator2, _step2, _loop2, _iterator3, _step3, dataFileSplitPath, dataFilePath, data, _data;
128
- return _regeneratorRuntime().wrap(function _loop$(_context2) {
129
- while (1) switch (_context2.prev = _context2.next) {
222
+ var dataFileSplitPath, dataFilePath;
223
+ return _regeneratorRuntime().wrap(function _loop$(_context3) {
224
+ while (1) switch (_context3.prev = _context3.next) {
130
225
  case 0:
131
- dataset = _step.value;
132
- zipFilePath = _path["default"].join(dataDir, "".concat(dataset.filename, ".zip"));
133
- if (!options.fetch) {
134
- _context2.next = 17;
135
- break;
136
- }
137
- // Fetch & save ZIP file.
138
- if (!options.silent) {
139
- console.log("Loading ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
140
- }
141
- _context2.next = 6;
142
- return fetch(dataset.url);
143
- case 6:
144
- response = _context2.sent;
145
- if (response.ok) {
146
- _context2.next = 15;
147
- break;
148
- }
149
- console.error(response.status, response.statusText);
150
- _context2.t0 = console;
151
- _context2.next = 12;
152
- return response.text();
153
- case 12:
154
- _context2.t1 = _context2.sent;
155
- _context2.t0.error.call(_context2.t0, _context2.t1);
156
- throw new Error("Fetch failed: ".concat(dataset.url));
157
- case 15:
158
- _context2.next = 17;
159
- return pipeline(response.body, _fsExtra["default"].createWriteStream(zipFilePath));
160
- case 17:
161
- if (!options.silent) {
162
- console.log("Unzipping ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
163
- }
164
- dataDirOrFilePath = _path["default"].join(dataDir, dataset.filename);
165
- _fsExtra["default"].removeSync(dataDirOrFilePath);
166
- zip = new _nodeStreamZip["default"]({
167
- file: zipFilePath,
168
- storeEntries: true
169
- });
170
- _context2.next = 23;
171
- return new Promise(function (resolve, reject) {
172
- zip.on("ready", function () {
173
- // Patch following line, because of wrong TypeScript definition for zip.extract.
174
- // zip.extract(null, dataDir, (err: any, _count: number) => {
175
- zip.extract(null, dataDir, function (err) {
176
- zip.close();
177
- if (err) {
178
- reject(err);
179
- } else {
180
- resolve(null);
181
- }
226
+ dataFileSplitPath = _step2.value;
227
+ dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
228
+ if (dataFilePath.endsWith(".xml")) {
229
+ _fsExtra["default"].readFile(dataFilePath, function (err, data) {
230
+ if (err) return console.error(err);
231
+ var result = parser.parse(data);
232
+ var newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
233
+ _fsExtra["default"].copy(dataFilePath, newDataFilePath, function (err) {
234
+ _fsExtra["default"].writeFileSync(newDataFilePath, JSON.stringify(result, null, 2));
235
+ if (err) return console.error(err);
182
236
  });
183
237
  });
184
- });
185
- case 23:
186
- if (dataset.repairZip !== undefined) {
187
- if (!options.silent) {
188
- console.log("Repairing ".concat(dataset.title, ": ").concat(dataset.filename));
189
- }
190
- dataset.repairZip(dataset, dataDir);
191
- }
192
-
193
- // Convert xml to JSON.
194
- if (!dataset.filename.endsWith(".xml")) {
195
- _context2.next = 41;
196
- break;
197
- }
198
- _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath));
199
- _context2.prev = 26;
200
- _loop2 = /*#__PURE__*/_regeneratorRuntime().mark(function _loop2() {
201
- var dataFileSplitPath, dataFilePath, format, parser;
202
- return _regeneratorRuntime().wrap(function _loop2$(_context) {
203
- while (1) switch (_context.prev = _context.next) {
204
- case 0:
205
- dataFileSplitPath = _step2.value;
206
- dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
207
- if (dataFilePath.endsWith(".xml")) {
208
- format = function format(key, value) {
209
- if (key === "br" || key === "italique" || key === "exposant") {
210
- return undefined;
211
- }
212
- return value;
213
- };
214
- parser = new xml2js.Parser({
215
- mergeAttrs: true,
216
- explicitArray: false
217
- });
218
- _fsExtra["default"].readFile(dataFilePath, function (err, data) {
219
- if (err) return console.error(err);
220
- parser.parseString(data, function (err, result) {
221
- var newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
222
- if (err) return console.error(err);
223
- _fsExtra["default"].copy(dataFilePath, newDataFilePath, function (err) {
224
- _fsExtra["default"].writeFileSync(newDataFilePath, JSON.stringify(result, format, 2));
225
- if (err) return console.error(err);
226
- });
227
- });
228
- });
229
- }
230
- case 3:
231
- case "end":
232
- return _context.stop();
233
- }
234
- }, _loop2);
235
- });
236
- _iterator2.s();
237
- case 29:
238
- if ((_step2 = _iterator2.n()).done) {
239
- _context2.next = 33;
240
- break;
241
238
  }
242
- return _context2.delegateYield(_loop2(), "t2", 31);
243
- case 31:
244
- _context2.next = 29;
245
- break;
246
- case 33:
247
- _context2.next = 38;
248
- break;
249
- case 35:
250
- _context2.prev = 35;
251
- _context2.t3 = _context2["catch"](26);
252
- _iterator2.e(_context2.t3);
253
- case 38:
254
- _context2.prev = 38;
255
- _iterator2.f();
256
- return _context2.finish(38);
257
- case 41:
258
- // Reindent JSON file.
259
- if (!options.silent) {
260
- console.log("Reidenting ".concat(dataset.title, ": ").concat(dataset.filename));
261
- }
262
- if (_fsExtra["default"].statSync(dataDirOrFilePath).isDirectory()) {
263
- _iterator3 = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath));
264
- try {
265
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
266
- dataFileSplitPath = _step3.value;
267
- dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
268
- if (dataFilePath.endsWith(".json")) {
269
- data = JSON.parse(_fsExtra["default"].readFileSync(dataFilePath, {
270
- encoding: "utf-8"
271
- }));
272
- _fsExtra["default"].writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
273
- }
274
- }
275
- } catch (err) {
276
- _iterator3.e(err);
277
- } finally {
278
- _iterator3.f();
279
- }
280
- } else {
281
- _data = JSON.parse(_fsExtra["default"].readFileSync(dataDirOrFilePath, {
282
- encoding: "utf-8"
283
- }));
284
- _fsExtra["default"].writeFileSync(dataDirOrFilePath, JSON.stringify(_data, null, 2));
285
- }
286
- case 43:
239
+ case 3:
287
240
  case "end":
288
- return _context2.stop();
241
+ return _context3.stop();
289
242
  }
290
- }, _loop, null, [[26, 35, 38, 41]]);
243
+ }, _loop);
291
244
  });
292
- _iterator.s();
293
- case 9:
294
- if ((_step = _iterator.n()).done) {
295
- _context3.next = 13;
245
+ _iterator2.s();
246
+ case 16:
247
+ if ((_step2 = _iterator2.n()).done) {
248
+ _context4.next = 20;
249
+ break;
250
+ }
251
+ return _context4.delegateYield(_loop(), "t0", 18);
252
+ case 18:
253
+ _context4.next = 16;
254
+ break;
255
+ case 20:
256
+ _context4.next = 25;
257
+ break;
258
+ case 22:
259
+ _context4.prev = 22;
260
+ _context4.t1 = _context4["catch"](13);
261
+ _iterator2.e(_context4.t1);
262
+ case 25:
263
+ _context4.prev = 25;
264
+ _iterator2.f();
265
+ return _context4.finish(25);
266
+ case 28:
267
+ // Reindent JSON file.
268
+ if (!options.silent) {
269
+ console.log("Reidenting ".concat(dataset.title, ": ").concat(dataset.filename));
270
+ }
271
+ reindentJsonFiles(dataDirOrFilePath);
272
+ case 30:
273
+ case "end":
274
+ return _context4.stop();
275
+ }
276
+ }, _callee3, null, [[13, 22, 25, 28]]);
277
+ }));
278
+ return _processDataset.apply(this, arguments);
279
+ }
280
+ function retrieveOpenData(_x9) {
281
+ return _retrieveOpenData.apply(this, arguments);
282
+ }
283
+ function _retrieveOpenData() {
284
+ _retrieveOpenData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(dataDir) {
285
+ var enabledDatasets, chosenDatasets, parser, _iterator3, _step3, dataset;
286
+ return _regeneratorRuntime().wrap(function _callee4$(_context5) {
287
+ while (1) switch (_context5.prev = _context5.next) {
288
+ case 0:
289
+ enabledDatasets = (0, _datasets.getEnabledDatasets)(options.categories);
290
+ chosenDatasets = [].concat(_toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes ? _datasets.datasets.acteursEtOrganes : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Agendas ? _datasets.datasets.agendas : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Amendements ? _datasets.datasets.amendements : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs ? _datasets.datasets.dossiersLegislatifs : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Scrutins ? _datasets.datasets.scrutins : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Questions ? _datasets.datasets.questions : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances ? _datasets.datasets.comptesRendusSeances : []));
291
+ if (options.legislature !== 0 && options.legislature !== undefined) {
292
+ chosenDatasets = chosenDatasets.filter(function (dataset) {
293
+ return dataset.legislature === _legislatures.Legislature.All || options.legislature === dataset.legislature;
294
+ });
295
+ }
296
+ parser = new XMLParser({
297
+ ignoreDeclaration: true,
298
+ ignoreAttributes: false,
299
+ ignorePiTags: true,
300
+ attributeNamePrefix: "",
301
+ textNodeName: "_",
302
+ processEntities: false,
303
+ trimValues: true,
304
+ stopNodes: ["*.texte", "*.intitule"],
305
+ parseTagValue: false,
306
+ parseAttributeValue: false,
307
+ transformTagName: function transformTagName(tagName) {
308
+ return tagName === "Para" ? "para" : tagName;
309
+ }
310
+ });
311
+ _iterator3 = _createForOfIteratorHelper(chosenDatasets);
312
+ _context5.prev = 5;
313
+ _iterator3.s();
314
+ case 7:
315
+ if ((_step3 = _iterator3.n()).done) {
316
+ _context5.next = 13;
296
317
  break;
297
318
  }
298
- return _context3.delegateYield(_loop(), "t0", 11);
319
+ dataset = _step3.value;
320
+ _context5.next = 11;
321
+ return processDataset(dataset, dataDir, parser, options);
299
322
  case 11:
300
- _context3.next = 9;
323
+ _context5.next = 7;
301
324
  break;
302
325
  case 13:
303
- _context3.next = 18;
326
+ _context5.next = 18;
304
327
  break;
305
328
  case 15:
306
- _context3.prev = 15;
307
- _context3.t1 = _context3["catch"](6);
308
- _iterator.e(_context3.t1);
329
+ _context5.prev = 15;
330
+ _context5.t0 = _context5["catch"](5);
331
+ _iterator3.e(_context5.t0);
309
332
  case 18:
310
- _context3.prev = 18;
311
- _iterator.f();
312
- return _context3.finish(18);
333
+ _context5.prev = 18;
334
+ _iterator3.f();
335
+ return _context5.finish(18);
313
336
  case 21:
314
337
  case "end":
315
- return _context3.stop();
338
+ return _context5.stop();
316
339
  }
317
- }, _callee, null, [[6, 15, 18, 21]]);
340
+ }, _callee4, null, [[5, 15, 18, 21]]);
318
341
  }));
319
342
  return _retrieveOpenData.apply(this, arguments);
320
343
  }
@@ -322,4 +345,4 @@ retrieveOpenData(options.dataDir)["catch"](function (error) {
322
345
  console.log(error);
323
346
  process.exit(1);
324
347
  });
325
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9zdHJlYW0iLCJfbm9kZVN0cmVhbVppcCIsIl91dGlsIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9sZWdpc2xhdHVyZXMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJzdGVwIiwiX2UyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJsZW4iLCJhcnIyIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsInVuZGVmaW5lZCIsInhtbDJqcyIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJtdWx0aXBsZSIsIlN0cmluZyIsIk51bWJlciIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwicGlwZWxpbmUiLCJ1dGlsIiwicHJvbWlzaWZ5Iiwic3RyZWFtIiwicmV0cmlldmVPcGVuRGF0YSIsIl94IiwiX3JldHJpZXZlT3BlbkRhdGEiLCJfY2FsbGVlIiwiZGF0YURpciIsIl9vcHRpb25zJGxlZ2lzbGF0dXJlIiwiZW5hYmxlZERhdGFzZXRzIiwiY2hvc2VuRGF0YXNldHMiLCJsZWdpc2xhdHVyZXMiLCJlbmFibGVkTGVnaXNsYXR1cmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfbG9vcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQzIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJFbmFibGVkRGF0YXNldHMiLCJjb25jYXQiLCJyZWR1Y2UiLCJOb25lIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiU2NydXRpbnMiLCJzY3J1dGlucyIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJsZWdpc2xhdHVyZSIsInNvbWUiLCJmaWx0ZXIiLCJkYXRhc2V0IiwiTGVnaXNsYXR1cmUiLCJBbGwiLCJpbmNsdWRlcyIsInppcEZpbGVQYXRoIiwicmVzcG9uc2UiLCJkYXRhRGlyT3JGaWxlUGF0aCIsInppcCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfbG9vcDIiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiZGF0YUZpbGVTcGxpdFBhdGgiLCJkYXRhRmlsZVBhdGgiLCJkYXRhIiwiX2RhdGEiLCJfbG9vcCQiLCJfY29udGV4dDIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwiZmV0Y2giLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwidGl0bGUiLCJ1cmwiLCJvayIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJ0MCIsInRleHQiLCJ0MSIsImJvZHkiLCJmcyIsImNyZWF0ZVdyaXRlU3RyZWFtIiwicmVtb3ZlU3luYyIsIlN0cmVhbVppcCIsImZpbGUiLCJzdG9yZUVudHJpZXMiLCJvbiIsImV4dHJhY3QiLCJjbG9zZSIsInJlcGFpclppcCIsImVuZHNXaXRoIiwid2Fsa0RpciIsImZvcm1hdCIsInBhcnNlciIsIl9sb29wMiQiLCJfY29udGV4dCIsIlBhcnNlciIsIm1lcmdlQXR0cnMiLCJleHBsaWNpdEFycmF5IiwicmVhZEZpbGUiLCJwYXJzZVN0cmluZyIsInJlc3VsdCIsIm5ld0RhdGFGaWxlUGF0aCIsInJlcGxhY2UiLCJjb3B5Iiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0MyIsInN0YXRTeW5jIiwiaXNEaXJlY3RvcnkiLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV9vcGVuX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbmltcG9ydCBTdHJlYW1aaXAgZnJvbSBcIm5vZGUtc3RyZWFtLXppcFwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcblxubGV0IHhtbDJqcyA9IHJlcXVpcmUoXCJ4bWwyanNcIilcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiZlwiLFxuICAgIGhlbHA6IFwiZmV0Y2ggZGF0YXNldHMgaW5zdGVhZCBvZiByZXRyaWV2aW5nIHRoZW0gZnJvbSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZmV0Y2hcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwia1wiLFxuICAgIGRlZmF1bHRWYWx1ZTogW1wiQWxsXCJdLFxuICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwiY2F0ZWdvcmllc1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImxcIixcbiAgICBoZWxwOiBcImxlZ2lzbGF0dXJlcyBvZiBjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJldHJpZXZlOyBsZWF2ZSBlbXB0eSBvciB1c2UgMCBmb3IgYWxsXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgIHR5cGU6IE51bWJlcixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5jb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVPcGVuRGF0YShkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgb3B0aW9ucy5jYXRlZ29yaWVzLm1hcCgoZGF0YXNldE5hbWU6IHN0cmluZykgPT5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYFVua25vd24gbmFtZSBvZiBkYXRhc2V0OiAke2RhdGFzZXROYW1lfWAsXG4gICAgKSxcbiAgKVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBvcHRpb25zLmNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcblxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBbXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzXG4gICAgICA/IGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXNcbiAgICAgIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcyA/IGRhdGFzZXRzLmFnZW5kYXMgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50c1xuICAgICAgPyBkYXRhc2V0cy5hbWVuZGVtZW50c1xuICAgICAgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzXG4gICAgICA/IGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnNcbiAgICAgIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMgPyBkYXRhc2V0cy5zY3J1dGlucyA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucyA/IGRhdGFzZXRzLnF1ZXN0aW9ucyA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzXG4gICAgICA/IGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzXG4gICAgICA6IFtdKSxcbiAgXVxuXG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGNvbnN0IGxlZ2lzbGF0dXJlcyA9IG9wdGlvbnMubGVnaXNsYXR1cmU/LnNvbWUoXG4gICAgKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+IGxlZ2lzbGF0dXJlID09PSAwLFxuICApXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IG9wdGlvbnMubGVnaXNsYXR1cmVcbiAgaWYgKGxlZ2lzbGF0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZW5hYmxlZExlZ2lzbGF0dXJlcyA9IGxlZ2lzbGF0dXJlcy5tYXAoKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+XG4gICAgICBsZWdpc2xhdHVyZS50b1N0cmluZygpLFxuICAgIClcbiAgICBjaG9zZW5EYXRhc2V0cyA9IGNob3NlbkRhdGFzZXRzLmZpbHRlcihcbiAgICAgIChkYXRhc2V0KSA9PlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgfHxcbiAgICAgICAgZW5hYmxlZExlZ2lzbGF0dXJlcy5pbmNsdWRlcyhkYXRhc2V0LmxlZ2lzbGF0dXJlKSxcbiAgICApXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMpIHtcbiAgICBjb25zdCB6aXBGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBgJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICAgIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgICAvLyBGZXRjaCAmIHNhdmUgWklQIGZpbGUuXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goZGF0YXNldC51cmwpXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgICBjb25zb2xlLmVycm9yKGF3YWl0IHJlc3BvbnNlLnRleHQoKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGZXRjaCBmYWlsZWQ6ICR7ZGF0YXNldC51cmx9YClcbiAgICAgIH1cbiAgICAgIGF3YWl0IHBpcGVsaW5lKFxuICAgICAgICByZXNwb25zZS5ib2R5IGFzIHVua25vd24gYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLFxuICAgICAgICBmcy5jcmVhdGVXcml0ZVN0cmVhbSh6aXBGaWxlUGF0aCksXG4gICAgICApXG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBVbnppcHBpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICAgIH1cbiAgICBjb25zdCBkYXRhRGlyT3JGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIGZzLnJlbW92ZVN5bmMoZGF0YURpck9yRmlsZVBhdGgpXG4gICAgY29uc3QgemlwID0gbmV3IFN0cmVhbVppcCh7XG4gICAgICBmaWxlOiB6aXBGaWxlUGF0aCxcbiAgICAgIHN0b3JlRW50cmllczogdHJ1ZSxcbiAgICB9KVxuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHppcC5vbihcInJlYWR5XCIsICgpID0+IHtcbiAgICAgICAgLy8gUGF0Y2ggZm9sbG93aW5nIGxpbmUsIGJlY2F1c2Ugb2Ygd3JvbmcgVHlwZVNjcmlwdCBkZWZpbml0aW9uIGZvciB6aXAuZXh0cmFjdC5cbiAgICAgICAgLy8gemlwLmV4dHJhY3QobnVsbCwgZGF0YURpciwgKGVycjogYW55LCBfY291bnQ6IG51bWJlcikgPT4ge1xuICAgICAgICB6aXAuZXh0cmFjdChudWxsISwgZGF0YURpciwgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgemlwLmNsb3NlKClcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgaWYgKGRhdGFzZXQucmVwYWlyWmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlcGFpcmluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9YClcbiAgICAgIH1cbiAgICAgIGRhdGFzZXQucmVwYWlyWmlwKGRhdGFzZXQsIGRhdGFEaXIpXG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB4bWwgdG8gSlNPTi5cbiAgICBpZiAoZGF0YXNldC5maWxlbmFtZS5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgICAgY29uc3QgZGF0YUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXJPckZpbGVQYXRoLCAuLi5kYXRhRmlsZVNwbGl0UGF0aClcbiAgICAgICAgaWYgKGRhdGFGaWxlUGF0aC5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICAgICAgICBmdW5jdGlvbiBmb3JtYXQoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IFwiYnJcIiB8fCBrZXkgPT09IFwiaXRhbGlxdWVcIiB8fCBrZXkgPT09IFwiZXhwb3NhbnRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcGFyc2VyID0gbmV3IHhtbDJqcy5QYXJzZXIoe1xuICAgICAgICAgICAgbWVyZ2VBdHRyczogdHJ1ZSxcbiAgICAgICAgICAgIGV4cGxpY2l0QXJyYXk6IGZhbHNlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZnMucmVhZEZpbGUoZGF0YUZpbGVQYXRoLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgICBwYXJzZXIucGFyc2VTdHJpbmcoZGF0YSwgZnVuY3Rpb24gKGVycjogYW55LCByZXN1bHQ6IGFueSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdEYXRhRmlsZVBhdGggPSBkYXRhRmlsZVBhdGgucmVwbGFjZSgvXFwuW14uXSskLywgXCIuanNvblwiKVxuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgICAgIGZzLmNvcHkoZGF0YUZpbGVQYXRoLCBuZXdEYXRhRmlsZVBhdGgsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgbmV3RGF0YUZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBmb3JtYXQsIDIpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZWluZGVudCBKU09OIGZpbGUuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYFJlaWRlbnRpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfWApXG4gICAgfVxuICAgIGlmIChmcy5zdGF0U3luYyhkYXRhRGlyT3JGaWxlUGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgZm9yIChjb25zdCBkYXRhRmlsZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFEaXJPckZpbGVQYXRoKSkge1xuICAgICAgICBjb25zdCBkYXRhRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpck9yRmlsZVBhdGgsIC4uLmRhdGFGaWxlU3BsaXRQYXRoKVxuICAgICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhkYXRhRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgICAgICAgICApXG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkYXRhRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMoZGF0YURpck9yRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgICAgIClcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZGF0YURpck9yRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKVxuICAgIH1cbiAgfVxufVxuXG5yZXRyaWV2ZU9wZW5EYXRhKG9wdGlvbnMuZGF0YURpcikuY2F0Y2goKGVycm9yKSA9PiB7XG4gIGNvbnNvbGUubG9nKGVycm9yKVxuICBwcm9jZXNzLmV4aXQoMSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFPLFNBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtB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
348
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX3N0cmVhbSIsIl9ub2RlU3RyZWFtWmlwIiwiX3V0aWwiLCJfZGF0YXNldHMiLCJfZmlsZV9zeXN0ZW1zIiwiX2xlZ2lzbGF0dXJlcyIsIl9jbGlfaGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiX3JlcXVpcmUiLCJYTUxQYXJzZXIiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJjYXRlZ29yaWVzT3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsImZldGNoT3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsInBpcGVsaW5lIiwidXRpbCIsInByb21pc2lmeSIsInN0cmVhbSIsImZldGNoWmlwRmlsZSIsIl94IiwiX3gyIiwiX2ZldGNoWmlwRmlsZSIsIl9jYWxsZWUiLCJ1cmwiLCJ6aXBGaWxlUGF0aCIsInJldHJpZXMiLCJhdHRlbXB0IiwicmVzcG9uc2UiLCJfYXJncyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJ1bmRlZmluZWQiLCJmZXRjaCIsIm9rIiwiYm9keSIsImZzIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJjb25zb2xlIiwid2FybiIsImNvbmNhdCIsInN0YXR1c1RleHQiLCJlcnJvciIsImV4dHJhY3RaaXAiLCJfeDMiLCJfeDQiLCJfZXh0cmFjdFppcCIsIl9jYWxsZWUyIiwib3V0cHV0RGlyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicmVqZWN0IiwiemlwIiwiU3RyZWFtWmlwIiwiZmlsZSIsInN0b3JlRW50cmllcyIsIm9uIiwiZXh0cmFjdCIsImVyciIsImNsb3NlIiwicmVpbmRlbnRKc29uRmlsZXMiLCJkYXRhRGlyT3JGaWxlUGF0aCIsInN0YXRTeW5jIiwiaXNEaXJlY3RvcnkiLCJfaXRlcmF0b3IiLCJ3YWxrRGlyIiwiX3N0ZXAiLCJkYXRhRmlsZVNwbGl0UGF0aCIsImRhdGFGaWxlUGF0aCIsInBhdGgiLCJqb2luIiwiZW5kc1dpdGgiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5IiwicHJvY2Vzc0RhdGFzZXQiLCJfeDUiLCJfeDYiLCJfeDciLCJfeDgiLCJfcHJvY2Vzc0RhdGFzZXQiLCJfY2FsbGVlMyIsImRhdGFzZXQiLCJkYXRhRGlyIiwicGFyc2VyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9sb29wIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQ0IiwiZmlsZW5hbWUiLCJyZW1vdmVTeW5jIiwic2lsZW50IiwibG9nIiwidGl0bGUiLCJyZXBhaXJaaXAiLCJfbG9vcCQiLCJfY29udGV4dDMiLCJyZWFkRmlsZSIsInJlc3VsdCIsIm5ld0RhdGFGaWxlUGF0aCIsInJlcGxhY2UiLCJjb3B5IiwidDEiLCJyZXRyaWV2ZU9wZW5EYXRhIiwiX3g5IiwiX3JldHJpZXZlT3BlbkRhdGEiLCJfY2FsbGVlNCIsImVuYWJsZWREYXRhc2V0cyIsImNob3NlbkRhdGFzZXRzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NSIsImdldEVuYWJsZWREYXRhc2V0cyIsImNhdGVnb3JpZXMiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJBbWVuZGVtZW50cyIsImFtZW5kZW1lbnRzIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJTY3J1dGlucyIsInNjcnV0aW5zIiwiUXVlc3Rpb25zIiwicXVlc3Rpb25zIiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsImxlZ2lzbGF0dXJlIiwiZmlsdGVyIiwiTGVnaXNsYXR1cmUiLCJBbGwiLCJpZ25vcmVEZWNsYXJhdGlvbiIsImlnbm9yZUF0dHJpYnV0ZXMiLCJpZ25vcmVQaVRhZ3MiLCJhdHRyaWJ1dGVOYW1lUHJlZml4IiwidGV4dE5vZGVOYW1lIiwicHJvY2Vzc0VudGl0aWVzIiwidHJpbVZhbHVlcyIsInN0b3BOb2RlcyIsInBhcnNlVGFnVmFsdWUiLCJwYXJzZUF0dHJpYnV0ZVZhbHVlIiwidHJhbnNmb3JtVGFnTmFtZSIsInRhZ05hbWUiLCJ0MCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfb3Blbl9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbmltcG9ydCBTdHJlYW1aaXAgZnJvbSBcIm5vZGUtc3RyZWFtLXppcFwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzLCBnZXRFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7XG4gIGNhdGVnb3JpZXNPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBmZXRjaE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcbmNvbnN0IHsgWE1MUGFyc2VyIH0gPSByZXF1aXJlKFwiZmFzdC14bWwtcGFyc2VyXCIpXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIGZldGNoT3B0aW9uLFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5jb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuLy8gRnVuY3Rpb24gdG8gZmV0Y2ggemlwIGZpbGVzIHdpdGggcmV0cnkgbWVjaGFuaXNtXG5hc3luYyBmdW5jdGlvbiBmZXRjaFppcEZpbGUoXG4gIHVybDogc3RyaW5nLFxuICB6aXBGaWxlUGF0aDogc3RyaW5nLFxuICByZXRyaWVzID0gMyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IHJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgYXdhaXQgcGlwZWxpbmUoXG4gICAgICAgIHJlc3BvbnNlLmJvZHkgYXMgdW5rbm93biBhcyBOb2RlSlMuUmVhZGFibGVTdHJlYW0sXG4gICAgICAgIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHppcEZpbGVQYXRoKSxcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoYXR0ZW1wdCA8IHJldHJpZXMgLSAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIGZldGNoIGZvciAke3VybH06ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9IGFmdGVyICR7cmV0cmllc30gYXR0ZW1wdHNgKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGZXRjaCBmYWlsZWQ6ICR7dXJsfWApXG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RaaXAoXG4gIHppcEZpbGVQYXRoOiBzdHJpbmcsXG4gIG91dHB1dERpcjogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgemlwID0gbmV3IFN0cmVhbVppcCh7XG4gICAgICBmaWxlOiB6aXBGaWxlUGF0aCxcbiAgICAgIHN0b3JlRW50cmllczogdHJ1ZSxcbiAgICB9KVxuXG4gICAgemlwLm9uKFwicmVhZHlcIiwgKCkgPT4ge1xuICAgICAgemlwLmV4dHJhY3QobnVsbCEsIG91dHB1dERpciwgKGVycikgPT4ge1xuICAgICAgICB6aXAuY2xvc2UoKVxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWluZGVudEpzb25GaWxlcyhkYXRhRGlyT3JGaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChmcy5zdGF0U3luYyhkYXRhRGlyT3JGaWxlUGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRhdGFGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyT3JGaWxlUGF0aCwgLi4uZGF0YUZpbGVTcGxpdFBhdGgpXG4gICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgZnMucmVhZEZpbGVTeW5jKGRhdGFGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pLFxuICAgICAgICApXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZGF0YUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSlcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMoZGF0YURpck9yRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgICApXG4gICAgZnMud3JpdGVGaWxlU3luYyhkYXRhRGlyT3JGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RhdGFzZXQoXG4gIGRhdGFzZXQ6IGFueSxcbiAgZGF0YURpcjogc3RyaW5nLFxuICBwYXJzZXI6IGFueSxcbiAgb3B0aW9uczogYW55LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHppcEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIGAke2RhdGFzZXQuZmlsZW5hbWV9LnppcGApXG4gIGNvbnN0IGRhdGFEaXJPckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gIGZzLnJlbW92ZVN5bmMoZGF0YURpck9yRmlsZVBhdGgpXG5cbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICAvLyBGZXRjaCAmIHNhdmUgWklQIGZpbGUuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICAgIH1cbiAgICBhd2FpdCBmZXRjaFppcEZpbGUoZGF0YXNldC51cmwsIHppcEZpbGVQYXRoKVxuICB9XG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgVW56aXBwaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgfVxuICBhd2FpdCBleHRyYWN0WmlwKHppcEZpbGVQYXRoLCBkYXRhRGlyKVxuXG4gIGlmIChkYXRhc2V0LnJlcGFpclppcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYFJlcGFpcmluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9YClcbiAgICB9XG4gICAgZGF0YXNldC5yZXBhaXJaaXAoZGF0YXNldCwgZGF0YURpcilcbiAgfVxuXG4gIC8vIENvbnZlcnQgeG1sIHRvIEpTT04uXG4gIGlmIChkYXRhc2V0LmZpbGVuYW1lLmVuZHNXaXRoKFwiLnhtbFwiKSkge1xuICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRhdGFGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyT3JGaWxlUGF0aCwgLi4uZGF0YUZpbGVTcGxpdFBhdGgpXG4gICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLnhtbFwiKSkge1xuICAgICAgICBmcy5yZWFkRmlsZShkYXRhRmlsZVBhdGgsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHBhcnNlci5wYXJzZShkYXRhKVxuICAgICAgICAgIGNvbnN0IG5ld0RhdGFGaWxlUGF0aCA9IGRhdGFGaWxlUGF0aC5yZXBsYWNlKC9cXC5bXi5dKyQvLCBcIi5qc29uXCIpXG4gICAgICAgICAgZnMuY29weShkYXRhRmlsZVBhdGgsIG5ld0RhdGFGaWxlUGF0aCwgKGVycikgPT4ge1xuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhuZXdEYXRhRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpXG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZWluZGVudCBKU09OIGZpbGUuXG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgUmVpZGVudGluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9YClcbiAgfVxuICByZWluZGVudEpzb25GaWxlcyhkYXRhRGlyT3JGaWxlUGF0aClcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVPcGVuRGF0YShkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gZ2V0RW5hYmxlZERhdGFzZXRzKG9wdGlvbnMuY2F0ZWdvcmllcylcblxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBbXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzXG4gICAgICA/IGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXNcbiAgICAgIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcyA/IGRhdGFzZXRzLmFnZW5kYXMgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50c1xuICAgICAgPyBkYXRhc2V0cy5hbWVuZGVtZW50c1xuICAgICAgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzXG4gICAgICA/IGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnNcbiAgICAgIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMgPyBkYXRhc2V0cy5zY3J1dGlucyA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucyA/IGRhdGFzZXRzLnF1ZXN0aW9ucyA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzXG4gICAgICA/IGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzXG4gICAgICA6IFtdKSxcbiAgXVxuXG4gIGlmIChvcHRpb25zLmxlZ2lzbGF0dXJlICE9PSAwICYmIG9wdGlvbnMubGVnaXNsYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNob3NlbkRhdGFzZXRzID0gY2hvc2VuRGF0YXNldHMuZmlsdGVyKFxuICAgICAgKGRhdGFzZXQpID0+XG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCB8fFxuICAgICAgICBvcHRpb25zLmxlZ2lzbGF0dXJlID09PSBkYXRhc2V0LmxlZ2lzbGF0dXJlLFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHBhcnNlciA9IG5ldyBYTUxQYXJzZXIoe1xuICAgIGlnbm9yZURlY2xhcmF0aW9uOiB0cnVlLFxuICAgIGlnbm9yZUF0dHJpYnV0ZXM6IGZhbHNlLFxuICAgIGlnbm9yZVBpVGFnczogdHJ1ZSxcbiAgICBhdHRyaWJ1dGVOYW1lUHJlZml4OiBcIlwiLFxuICAgIHRleHROb2RlTmFtZTogXCJfXCIsXG4gICAgcHJvY2Vzc0VudGl0aWVzOiBmYWxzZSxcbiAgICB0cmltVmFsdWVzOiB0cnVlLFxuICAgIHN0b3BOb2RlczogW1wiKi50ZXh0ZVwiLCBcIiouaW50aXR1bGVcIl0sXG4gICAgcGFyc2VUYWdWYWx1ZTogZmFsc2UsXG4gICAgcGFyc2VBdHRyaWJ1dGVWYWx1ZTogZmFsc2UsXG4gICAgdHJhbnNmb3JtVGFnTmFtZTogKHRhZ05hbWU6IHN0cmluZykgPT5cbiAgICAgIHRhZ05hbWUgPT09IFwiUGFyYVwiID8gXCJwYXJhXCIgOiB0YWdOYW1lLFxuICB9KVxuXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cykge1xuICAgIGF3YWl0IHByb2Nlc3NEYXRhc2V0KGRhdGFzZXQsIGRhdGFEaXIsIHBhcnNlciwgb3B0aW9ucylcbiAgfVxufVxuXG5yZXRyaWV2ZU9wZW5EYXRhKG9wdGlvbnMuZGF0YURpcikuY2F0Y2goKGVycm9yKSA9PiB7XG4gIGNvbnNvbGUubG9nKGVycm9yKVxuICBwcm9jZXNzLmV4aXQoMSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFB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QUNqQkMsZUFBZSxFQUFFLEtBQUs7WUFDdEJDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDO1lBQ3BDQyxhQUFhLEVBQUUsS0FBSztZQUNwQkMsbUJBQW1CLEVBQUUsS0FBSztZQUMxQkMsZ0JBQWdCLEVBQUUsU0FBQUEsaUJBQUNDLE9BQWU7Y0FBQSxPQUNoQ0EsT0FBTyxLQUFLLE1BQU0sR0FBRyxNQUFNLEdBQUdBLE9BQU87WUFBQTtVQUN6QyxDQUFDLENBQUM7VUFBQXJDLFVBQUEsR0FBQXhILDBCQUFBLENBRW9CdUgsY0FBYztVQUFBSSxTQUFBLENBQUE5SSxJQUFBO1VBQUEySSxVQUFBLENBQUFyTSxDQUFBO1FBQUE7VUFBQSxLQUFBc00sTUFBQSxHQUFBRCxVQUFBLENBQUFsTyxDQUFBLElBQUFrRCxJQUFBO1lBQUFtTCxTQUFBLENBQUF6SyxJQUFBO1lBQUE7VUFBQTtVQUF6QjBJLE9BQU8sR0FBQTZCLE1BQUEsQ0FBQS9OLEtBQUE7VUFBQWlPLFNBQUEsQ0FBQXpLLElBQUE7VUFBQSxPQUNWbUksY0FBYyxDQUFDTyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFM0UsT0FBTyxDQUFDO1FBQUE7VUFBQXdHLFNBQUEsQ0FBQXpLLElBQUE7VUFBQTtRQUFBO1VBQUF5SyxTQUFBLENBQUF6SyxJQUFBO1VBQUE7UUFBQTtVQUFBeUssU0FBQSxDQUFBOUksSUFBQTtVQUFBOEksU0FBQSxDQUFBbUMsRUFBQSxHQUFBbkMsU0FBQTtVQUFBSCxVQUFBLENBQUF6TyxDQUFBLENBQUE0TyxTQUFBLENBQUFtQyxFQUFBO1FBQUE7VUFBQW5DLFNBQUEsQ0FBQTlJLElBQUE7VUFBQTJJLFVBQUEsQ0FBQXRNLENBQUE7VUFBQSxPQUFBeU0sU0FBQSxDQUFBdkksTUFBQTtRQUFBO1FBQUE7VUFBQSxPQUFBdUksU0FBQSxDQUFBM0ksSUFBQTtNQUFBO0lBQUEsR0FBQXFJLFFBQUE7RUFBQSxDQUUxRDtFQUFBLE9BQUFELGlCQUFBLENBQUE1RyxLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUVEMkcsZ0JBQWdCLENBQUMvRixPQUFPLENBQUMwRSxPQUFPLENBQUMsU0FBTSxDQUFDLFVBQUM3QyxLQUFLLEVBQUs7RUFDakRKLE9BQU8sQ0FBQzJELEdBQUcsQ0FBQ3ZELEtBQUssQ0FBQztFQUNsQitHLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=