@tricoteuses/senat 1.3.1 → 1.3.4

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 (254) hide show
  1. package/lib/config.d.ts +1 -0
  2. package/lib/config.js +14 -45
  3. package/lib/databases.js +86 -143
  4. package/lib/datasets.js +78 -83
  5. package/lib/index.d.ts +12 -4
  6. package/lib/index.js +42 -419
  7. package/lib/loaders.js +149 -654
  8. package/lib/model/ameli.js +83 -21
  9. package/lib/model/debats.js +0 -1
  10. package/lib/model/dosleg.d.ts +1 -1
  11. package/lib/model/dosleg.js +179 -73
  12. package/lib/model/index.d.ts +3 -3
  13. package/lib/model/index.js +12 -46
  14. package/lib/model/questions.js +68 -39
  15. package/lib/model/sens.d.ts +1 -1
  16. package/lib/model/sens.js +383 -113
  17. package/lib/model/texte.js +220 -290
  18. package/lib/model/util.js +9 -26
  19. package/lib/raw_types/ameli.js +5 -6
  20. package/lib/raw_types/debats.js +5 -6
  21. package/lib/raw_types/dosleg.js +5 -6
  22. package/lib/raw_types/questions.js +5 -6
  23. package/lib/raw_types/sens.js +5 -6
  24. package/lib/raw_types_schemats/ameli.js +1 -43
  25. package/lib/raw_types_schemats/debats.js +1 -22
  26. package/lib/raw_types_schemats/dosleg.js +1 -96
  27. package/lib/raw_types_schemats/questions.js +1 -22
  28. package/lib/raw_types_schemats/sens.js +1 -112
  29. package/lib/scripts/convert_data.js +181 -631
  30. package/lib/scripts/datautil.js +17 -60
  31. package/lib/scripts/parse_textes.js +46 -129
  32. package/lib/scripts/retrieve_documents.js +247 -513
  33. package/lib/scripts/retrieve_open_data.js +211 -368
  34. package/lib/scripts/retrieve_senateurs_photos.js +144 -239
  35. package/lib/scripts/shared/cli_helpers.js +30 -30
  36. package/lib/scripts/shared/util.js +28 -94
  37. package/lib/strings.js +20 -45
  38. package/lib/types/ameli.d.ts +1 -1
  39. package/lib/types/ameli.js +14 -25
  40. package/lib/types/debats.d.ts +1 -1
  41. package/lib/types/debats.js +3 -21
  42. package/lib/types/dosleg.d.ts +1 -1
  43. package/lib/types/dosleg.js +152 -119
  44. package/lib/types/questions.d.ts +1 -1
  45. package/lib/types/questions.js +1 -13
  46. package/lib/types/sens.d.ts +1 -1
  47. package/lib/types/sens.js +1 -13
  48. package/lib/types/sessions.js +44 -49
  49. package/lib/types/texte.js +17 -22
  50. package/lib/validators/config.js +47 -111
  51. package/lib/validators/senat.js +1 -5
  52. package/package.json +18 -40
  53. package/lib/aggregates.d.ts +0 -52
  54. package/lib/aggregates.mjs +0 -930
  55. package/lib/aggregates.ts +0 -833
  56. package/lib/config.mjs +0 -16
  57. package/lib/config.ts +0 -26
  58. package/lib/data/legislatures.json +0 -38
  59. package/lib/databases.mjs +0 -57
  60. package/lib/databases.ts +0 -71
  61. package/lib/datasets.mjs +0 -78
  62. package/lib/datasets.ts +0 -118
  63. package/lib/fields.d.ts +0 -10
  64. package/lib/fields.mjs +0 -68
  65. package/lib/fields.ts +0 -29
  66. package/lib/index.mjs +0 -4
  67. package/lib/index.ts +0 -42
  68. package/lib/inserters.d.ts +0 -98
  69. package/lib/inserters.mjs +0 -500
  70. package/lib/inserters.ts +0 -521
  71. package/lib/loaders.mjs +0 -158
  72. package/lib/loaders.ts +0 -271
  73. package/lib/model/ameli.mjs +0 -84
  74. package/lib/model/ameli.ts +0 -100
  75. package/lib/model/debats.mjs +0 -1
  76. package/lib/model/debats.ts +0 -0
  77. package/lib/model/dosleg.mjs +0 -196
  78. package/lib/model/dosleg.ts +0 -240
  79. package/lib/model/index.mjs +0 -4
  80. package/lib/model/index.ts +0 -14
  81. package/lib/model/questions.mjs +0 -71
  82. package/lib/model/questions.ts +0 -93
  83. package/lib/model/sens.mjs +0 -415
  84. package/lib/model/sens.ts +0 -516
  85. package/lib/model/texte.mjs +0 -208
  86. package/lib/model/texte.ts +0 -229
  87. package/lib/model/util.mjs +0 -19
  88. package/lib/model/util.ts +0 -32
  89. package/lib/raw_types/ameli.mjs +0 -5
  90. package/lib/raw_types/ameli.ts +0 -951
  91. package/lib/raw_types/debats.mjs +0 -5
  92. package/lib/raw_types/debats.ts +0 -222
  93. package/lib/raw_types/dosleg.mjs +0 -5
  94. package/lib/raw_types/dosleg.ts +0 -3625
  95. package/lib/raw_types/questions.mjs +0 -5
  96. package/lib/raw_types/questions.ts +0 -427
  97. package/lib/raw_types/sens.mjs +0 -5
  98. package/lib/raw_types/sens.ts +0 -4499
  99. package/lib/raw_types_kysely/ameli.d.ts +0 -6
  100. package/lib/raw_types_kysely/ameli.mjs +0 -7
  101. package/lib/raw_types_kysely/ameli.ts +0 -6
  102. package/lib/raw_types_kysely/debats.d.ts +0 -6
  103. package/lib/raw_types_kysely/debats.mjs +0 -7
  104. package/lib/raw_types_kysely/debats.ts +0 -6
  105. package/lib/raw_types_kysely/dosleg.d.ts +0 -6
  106. package/lib/raw_types_kysely/dosleg.mjs +0 -7
  107. package/lib/raw_types_kysely/dosleg.ts +0 -6
  108. package/lib/raw_types_kysely/questions.d.ts +0 -6
  109. package/lib/raw_types_kysely/questions.mjs +0 -7
  110. package/lib/raw_types_kysely/questions.ts +0 -6
  111. package/lib/raw_types_kysely/sens.d.ts +0 -6
  112. package/lib/raw_types_kysely/sens.mjs +0 -7
  113. package/lib/raw_types_kysely/sens.ts +0 -6
  114. package/lib/raw_types_kysely/texte.d.ts +0 -45
  115. package/lib/raw_types_kysely/texte.mjs +0 -7
  116. package/lib/raw_types_kysely/texte.ts +0 -53
  117. package/lib/raw_types_schemats/ameli.mjs +0 -2
  118. package/lib/raw_types_schemats/ameli.ts +0 -601
  119. package/lib/raw_types_schemats/debats.mjs +0 -2
  120. package/lib/raw_types_schemats/debats.ts +0 -145
  121. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  122. package/lib/raw_types_schemats/dosleg.ts +0 -2195
  123. package/lib/raw_types_schemats/questions.mjs +0 -2
  124. package/lib/raw_types_schemats/questions.ts +0 -251
  125. package/lib/raw_types_schemats/sens.mjs +0 -2
  126. package/lib/raw_types_schemats/sens.ts +0 -2907
  127. package/lib/scripts/convert_data.mjs +0 -181
  128. package/lib/scripts/convert_data.ts +0 -243
  129. package/lib/scripts/datautil.mjs +0 -16
  130. package/lib/scripts/datautil.ts +0 -19
  131. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  132. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  133. package/lib/scripts/parse_textes.mjs +0 -46
  134. package/lib/scripts/parse_textes.ts +0 -65
  135. package/lib/scripts/retrieve_documents.mjs +0 -249
  136. package/lib/scripts/retrieve_documents.ts +0 -298
  137. package/lib/scripts/retrieve_open_data.mjs +0 -217
  138. package/lib/scripts/retrieve_open_data.ts +0 -274
  139. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  140. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  141. package/lib/scripts/retrieve_textes.d.ts +0 -1
  142. package/lib/scripts/retrieve_textes.mjs +0 -328
  143. package/lib/scripts/retrieve_textes.ts +0 -143
  144. package/lib/scripts/shared/cli_helpers.ts +0 -36
  145. package/lib/scripts/shared/util.ts +0 -33
  146. package/lib/src/aggregates.d.ts +0 -52
  147. package/lib/src/aggregates.mjs +0 -726
  148. package/lib/src/config.d.ts +0 -2
  149. package/lib/src/config.mjs +0 -16
  150. package/lib/src/databases.d.ts +0 -18
  151. package/lib/src/databases.mjs +0 -55
  152. package/lib/src/datasets.d.ts +0 -28
  153. package/lib/src/datasets.mjs +0 -78
  154. package/lib/src/fields.d.ts +0 -10
  155. package/lib/src/fields.mjs +0 -22
  156. package/lib/src/index.d.ts +0 -8
  157. package/lib/src/index.mjs +0 -7
  158. package/lib/src/inserters.d.ts +0 -98
  159. package/lib/src/inserters.mjs +0 -360
  160. package/lib/src/loaders.d.ts +0 -36
  161. package/lib/src/loaders.mjs +0 -107
  162. package/lib/src/model/ameli.d.ts +0 -4
  163. package/lib/src/model/ameli.js +0 -57
  164. package/lib/src/model/debats.d.ts +0 -4
  165. package/lib/src/model/debats.js +0 -43
  166. package/lib/src/model/dosleg.d.ts +0 -197
  167. package/lib/src/model/dosleg.js +0 -169
  168. package/lib/src/model/index.d.ts +0 -4
  169. package/lib/src/model/index.js +0 -4
  170. package/lib/src/model/questions.d.ts +0 -89
  171. package/lib/src/model/questions.js +0 -76
  172. package/lib/src/model/sens.d.ts +0 -390
  173. package/lib/src/model/sens.js +0 -339
  174. package/lib/src/model/texte.d.ts +0 -7
  175. package/lib/src/model/texte.js +0 -183
  176. package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
  177. package/lib/src/raw_types_kysely/ameli.js +0 -5
  178. package/lib/src/raw_types_kysely/debats.d.ts +0 -207
  179. package/lib/src/raw_types_kysely/debats.js +0 -5
  180. package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
  181. package/lib/src/raw_types_kysely/dosleg.js +0 -5
  182. package/lib/src/raw_types_kysely/questions.d.ts +0 -414
  183. package/lib/src/raw_types_kysely/questions.js +0 -5
  184. package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
  185. package/lib/src/raw_types_kysely/sens.js +0 -5
  186. package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
  187. package/lib/src/raw_types_schemats/ameli.js +0 -2
  188. package/lib/src/raw_types_schemats/debats.d.ts +0 -127
  189. package/lib/src/raw_types_schemats/debats.js +0 -2
  190. package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
  191. package/lib/src/raw_types_schemats/dosleg.js +0 -2
  192. package/lib/src/raw_types_schemats/questions.d.ts +0 -231
  193. package/lib/src/raw_types_schemats/questions.js +0 -2
  194. package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
  195. package/lib/src/raw_types_schemats/sens.js +0 -2
  196. package/lib/src/scripts/convert_data.d.ts +0 -1
  197. package/lib/src/scripts/convert_data.js +0 -95
  198. package/lib/src/scripts/datautil.d.ts +0 -5
  199. package/lib/src/scripts/datautil.js +0 -16
  200. package/lib/src/scripts/parse_textes.d.ts +0 -1
  201. package/lib/src/scripts/parse_textes.js +0 -47
  202. package/lib/src/scripts/retrieve_documents.d.ts +0 -1
  203. package/lib/src/scripts/retrieve_documents.js +0 -258
  204. package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
  205. package/lib/src/scripts/retrieve_open_data.js +0 -214
  206. package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
  207. package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
  208. package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
  209. package/lib/src/scripts/shared/cli_helpers.js +0 -32
  210. package/lib/src/scripts/shared/util.d.ts +0 -3
  211. package/lib/src/scripts/shared/util.js +0 -28
  212. package/lib/src/strings.d.ts +0 -1
  213. package/lib/src/strings.mjs +0 -18
  214. package/lib/src/types/ameli.d.ts +0 -10
  215. package/lib/src/types/ameli.js +0 -13
  216. package/lib/src/types/debats.d.ts +0 -4
  217. package/lib/src/types/debats.js +0 -2
  218. package/lib/src/types/dosleg.d.ts +0 -98
  219. package/lib/src/types/dosleg.js +0 -151
  220. package/lib/src/types/questions.d.ts +0 -2
  221. package/lib/src/types/questions.js +0 -1
  222. package/lib/src/types/sens.d.ts +0 -10
  223. package/lib/src/types/sens.js +0 -1
  224. package/lib/src/types/sessions.d.ts +0 -42
  225. package/lib/src/types/sessions.js +0 -43
  226. package/lib/src/types/texte.d.ts +0 -61
  227. package/lib/src/types/texte.js +0 -16
  228. package/lib/src/validators/config.d.ts +0 -1
  229. package/lib/src/validators/config.js +0 -54
  230. package/lib/src/validators/senat.d.ts +0 -0
  231. package/lib/src/validators/senat.js +0 -24
  232. package/lib/strings.mjs +0 -18
  233. package/lib/strings.ts +0 -26
  234. package/lib/types/ameli.mjs +0 -13
  235. package/lib/types/ameli.ts +0 -21
  236. package/lib/types/debats.mjs +0 -2
  237. package/lib/types/debats.ts +0 -6
  238. package/lib/types/dosleg.mjs +0 -151
  239. package/lib/types/dosleg.ts +0 -284
  240. package/lib/types/questions.mjs +0 -1
  241. package/lib/types/questions.ts +0 -3
  242. package/lib/types/sens.mjs +0 -1
  243. package/lib/types/sens.ts +0 -12
  244. package/lib/types/sessions.mjs +0 -43
  245. package/lib/types/sessions.ts +0 -42
  246. package/lib/types/texte.mjs +0 -16
  247. package/lib/types/texte.ts +0 -76
  248. package/lib/typings/windows-1252.d.js +0 -2
  249. package/lib/typings/windows-1252.d.mjs +0 -2
  250. package/lib/typings/windows-1252.d.ts +0 -11
  251. package/lib/validators/config.mjs +0 -54
  252. package/lib/validators/config.ts +0 -79
  253. package/lib/validators/senat.mjs +0 -24
  254. package/lib/validators/senat.ts +0 -26
package/lib/loaders.js CHANGED
@@ -1,682 +1,177 @@
1
1
  "use strict";
2
-
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- require("core-js/modules/es.symbol.js");
5
- require("core-js/modules/es.symbol.description.js");
6
- require("core-js/modules/es.symbol.iterator.js");
7
- require("core-js/modules/es.symbol.to-primitive.js");
8
- require("core-js/modules/es.array.for-each.js");
9
- require("core-js/modules/es.array.from.js");
10
- require("core-js/modules/es.array.is-array.js");
11
- require("core-js/modules/es.array.iterator.js");
12
- require("core-js/modules/es.array.slice.js");
13
- require("core-js/modules/es.date.to-primitive.js");
14
- require("core-js/modules/es.number.constructor.js");
15
- require("core-js/modules/es.object.create.js");
16
- require("core-js/modules/es.object.define-properties.js");
17
- require("core-js/modules/es.object.define-property.js");
18
- require("core-js/modules/es.object.get-own-property-descriptor.js");
19
- require("core-js/modules/es.object.get-own-property-descriptors.js");
20
- require("core-js/modules/es.object.get-prototype-of.js");
21
- require("core-js/modules/es.object.set-prototype-of.js");
22
- require("core-js/modules/es.promise.js");
23
- require("core-js/modules/es.regexp.exec.js");
24
- require("core-js/modules/es.string.iterator.js");
25
- require("core-js/modules/web.dom-collections.for-each.js");
26
- require("core-js/modules/web.dom-collections.iterator.js");
27
- Object.defineProperty(exports, "__esModule", {
28
- value: true
29
- });
30
- exports.DOSLEG_DOSSIERS_FOLDER = exports.DOCUMENT_METADATA_FILE = void 0;
31
- Object.defineProperty(exports, "EnabledDatasets", {
32
- enumerable: true,
33
- get: function get() {
34
- return _datasets.EnabledDatasets;
35
- }
36
- });
37
- exports.TEXTE_TRANSFORMED_FOLDER = exports.TEXTE_ORIGINAL_FOLDER = exports.TEXTE_FOLDER = exports.SENS_SENATEURS_FOLDER = exports.SENS_ORGANISMES_FOLDER = exports.SENS_CIRCONSCRIPTIONS_FOLDER = exports.RAPPORT_FOLDER = void 0;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RAPPORT_FOLDER = exports.DOCUMENT_METADATA_FILE = exports.TEXTE_TRANSFORMED_FOLDER = exports.TEXTE_ORIGINAL_FOLDER = exports.TEXTE_FOLDER = exports.SENS_SENATEURS_FOLDER = exports.SENS_ORGANISMES_FOLDER = exports.SENS_CIRCONSCRIPTIONS_FOLDER = exports.DOSLEG_DOSSIERS_FOLDER = exports.EnabledDatasets = void 0;
38
7
  exports.iterFilePaths = iterFilePaths;
39
8
  exports.iterLoadSenatAmendements = iterLoadSenatAmendements;
40
- exports.iterLoadSenatCirconscriptions = iterLoadSenatCirconscriptions;
41
9
  exports.iterLoadSenatDossiersLegislatifs = iterLoadSenatDossiersLegislatifs;
42
- exports.iterLoadSenatDossiersLegislatifsRapportUrls = iterLoadSenatDossiersLegislatifsRapportUrls;
43
10
  exports.iterLoadSenatDossiersLegislatifsTexteUrls = iterLoadSenatDossiersLegislatifsTexteUrls;
11
+ exports.iterLoadSenatDossiersLegislatifsRapportUrls = iterLoadSenatDossiersLegislatifsRapportUrls;
44
12
  exports.iterLoadSenatDossiersLegislatifsTextes = iterLoadSenatDossiersLegislatifsTextes;
13
+ exports.loadSenatTexteContent = loadSenatTexteContent;
45
14
  exports.iterLoadSenatOrganismes = iterLoadSenatOrganismes;
46
- exports.iterLoadSenatQuestions = iterLoadSenatQuestions;
47
15
  exports.iterLoadSenatSenateurs = iterLoadSenatSenateurs;
48
- exports.loadSenatTexteContent = loadSenatTexteContent;
49
- require("core-js/modules/es.array.filter.js");
50
- require("core-js/modules/es.array.find.js");
51
- require("core-js/modules/es.array.index-of.js");
52
- require("core-js/modules/es.array.join.js");
53
- require("core-js/modules/es.date.to-string.js");
54
- require("core-js/modules/es.function.name.js");
55
- require("core-js/modules/es.object.keys.js");
56
- require("core-js/modules/es.object.to-string.js");
57
- require("core-js/modules/es.regexp.to-string.js");
58
- var _fs = _interopRequireDefault(require("fs"));
59
- var _path = _interopRequireDefault(require("path"));
60
- var _legislatures = _interopRequireDefault(require("./legislatures.json"));
61
- var _datasets = require("./datasets");
62
- var _datautil = require("./scripts/datautil");
63
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
64
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
65
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
66
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
67
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
68
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
69
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return r; }; var t, r = {}, e = Object.prototype, n = e.hasOwnProperty, o = "function" == typeof Symbol ? Symbol : {}, i = o.iterator || "@@iterator", a = o.asyncIterator || "@@asyncIterator", u = o.toStringTag || "@@toStringTag"; function c(t, r, e, n) { Object.defineProperty(t, r, { value: e, enumerable: !n, configurable: !n, writable: !n }); } try { c({}, ""); } catch (t) { c = function c(t, r, e) { return t[r] = e; }; } function h(r, e, n, o) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype); return c(a, "_invoke", function (r, e, n) { var o = 1; return function (i, a) { if (3 === o) throw Error("Generator is already running"); if (4 === o) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var u = n.delegate; if (u) { var c = d(u, n); if (c) { if (c === f) continue; return c; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (1 === o) throw o = 4, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = 3; var h = s(r, e, n); if ("normal" === h.type) { if (o = n.done ? 4 : 2, h.arg === f) continue; return { value: h.arg, done: n.done }; } "throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg); } }; }(r, n, new Context(o || [])), !0), a; } function s(t, r, e) { try { return { type: "normal", arg: t.call(r, e) }; } catch (t) { return { type: "throw", arg: t }; } } r.wrap = h; var f = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var l = {}; c(l, i, function () { return this; }); var p = Object.getPrototypeOf, y = p && p(p(x([]))); y && y !== e && n.call(y, i) && (l = y); var v = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(l); function g(t) { ["next", "throw", "return"].forEach(function (r) { c(t, r, function (t) { return this._invoke(r, t); }); }); } function AsyncIterator(t, r) { function e(o, i, a, u) { var c = s(t[o], t, i); if ("throw" !== c.type) { var h = c.arg, f = h.value; return f && "object" == _typeof(f) && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) { e("next", t, a, u); }, function (t) { e("throw", t, a, u); }) : r.resolve(f).then(function (t) { h.value = t, a(h); }, function (t) { return e("throw", t, a, u); }); } u(c.arg); } var o; c(this, "_invoke", function (t, n) { function i() { return new r(function (r, o) { e(t, n, r, o); }); } return o = o ? o.then(i, i) : i(); }, !0); } function d(r, e) { var n = e.method, o = r.i[n]; if (o === t) return e.delegate = null, "throw" === n && r.i["return"] && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f; var i = s(o, r.i, e.arg); if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f; var a = i.arg; return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f); } function w(t) { this.tryEntries.push(t); } function m(r) { var e = r[4] || {}; e.type = "normal", e.arg = t, r[4] = e; } function Context(t) { this.tryEntries = [[-1]], t.forEach(w, this), this.reset(!0); } function x(r) { if (null != r) { var e = r[i]; if (e) return e.call(r); if ("function" == typeof r.next) return r; if (!isNaN(r.length)) { var o = -1, a = function e() { for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = !1, e; return e.value = t, e.done = !0, e; }; return a.next = a; } } throw new TypeError(_typeof(r) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), c(GeneratorFunctionPrototype, u, GeneratorFunction.displayName = "GeneratorFunction"), r.isGeneratorFunction = function (t) { var r = "function" == typeof t && t.constructor; return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name)); }, r.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = Object.create(v), t; }, r.awrap = function (t) { return { __await: t }; }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () { return this; }), r.AsyncIterator = AsyncIterator, r.async = function (t, e, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(h(t, e, n, o), i); return r.isGeneratorFunction(e) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, g(v), c(v, u, "Generator"), c(v, i, function () { return this; }), c(v, "toString", function () { return "[object Generator]"; }), r.keys = function (t) { var r = Object(t), e = []; for (var n in r) e.unshift(n); return function t() { for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = !1, t; return t.done = !0, t; }; }, r.values = x, Context.prototype = { constructor: Context, reset: function reset(r) { if (this.prev = this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(m), !r) for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0][4]; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(r) { if (this.done) throw r; var e = this; function n(t) { a.type = "throw", a.arg = r, e.next = t; } for (var o = e.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i[4], u = this.prev, c = i[1], h = i[2]; if (-1 === i[0]) return n("end"), !1; if (!c && !h) throw Error("try statement without catch or finally"); if (null != i[0] && i[0] <= u) { if (u < c) return this.method = "next", this.arg = t, n(c), !0; if (u < h) return n(h), !1; } } }, abrupt: function abrupt(t, r) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) { var o = n; break; } } o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null); var i = o ? o[4] : {}; return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i); }, complete: function complete(t, r) { 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 && r && (this.next = r), f; }, finish: function finish(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[2] === t) return this.complete(e[4], e[3]), m(e), f; } }, "catch": function _catch(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[0] === t) { var n = e[4]; if ("throw" === n.type) { var o = n.arg; m(e); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(r, e, n) { return this.delegate = { i: x(r), r: e, n: n }, "next" === this.method && (this.arg = t), f; } }, r; }
70
- var _marked = /*#__PURE__*/_regeneratorRuntime().mark(iterFilePaths),
71
- _marked2 = /*#__PURE__*/_regeneratorRuntime().mark(iterLoadSenatDossiersLegislatifsTexteUrls),
72
- _marked3 = /*#__PURE__*/_regeneratorRuntime().mark(iterLoadSenatDossiersLegislatifsRapportUrls);
73
- 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; } } }; }
74
- 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; } }
75
- 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; }
76
- var DOSLEG_DOSSIERS_FOLDER = exports.DOSLEG_DOSSIERS_FOLDER = "dossiers";
77
- var SENS_CIRCONSCRIPTIONS_FOLDER = exports.SENS_CIRCONSCRIPTIONS_FOLDER = "circonscriptions";
78
- var SENS_ORGANISMES_FOLDER = exports.SENS_ORGANISMES_FOLDER = "organismes";
79
- var SENS_SENATEURS_FOLDER = exports.SENS_SENATEURS_FOLDER = "senateurs";
80
- var TEXTE_FOLDER = exports.TEXTE_FOLDER = "leg";
81
- var TEXTE_ORIGINAL_FOLDER = exports.TEXTE_ORIGINAL_FOLDER = "original";
82
- var TEXTE_TRANSFORMED_FOLDER = exports.TEXTE_TRANSFORMED_FOLDER = "transformed";
83
- var DOCUMENT_METADATA_FILE = exports.DOCUMENT_METADATA_FILE = "metadata.json";
84
- var RAPPORT_FOLDER = exports.RAPPORT_FOLDER = "rap";
85
- function iterFilePaths(dirPath) {
86
- var files, _iterator, _step, file;
87
- return _regeneratorRuntime().wrap(function iterFilePaths$(_context) {
88
- while (1) switch (_context.prev = _context.next) {
89
- case 0:
90
- if (!(dirPath && _fs["default"].existsSync(dirPath))) {
91
- _context.next = 20;
92
- break;
93
- }
94
- files = _fs["default"].readdirSync(dirPath, {
95
- withFileTypes: true,
96
- recursive: true
16
+ exports.iterLoadSenatCirconscriptions = iterLoadSenatCirconscriptions;
17
+ exports.iterLoadSenatQuestions = iterLoadSenatQuestions;
18
+ const fs_1 = __importDefault(require("fs"));
19
+ const path_1 = __importDefault(require("path"));
20
+ const legislatures_json_1 = __importDefault(require("./legislatures.json"));
21
+ const datasets_1 = require("./datasets");
22
+ const datautil_1 = require("./scripts/datautil");
23
+ var datasets_2 = require("./datasets");
24
+ Object.defineProperty(exports, "EnabledDatasets", { enumerable: true, get: function () { return datasets_2.EnabledDatasets; } });
25
+ exports.DOSLEG_DOSSIERS_FOLDER = "dossiers";
26
+ exports.SENS_CIRCONSCRIPTIONS_FOLDER = "circonscriptions";
27
+ exports.SENS_ORGANISMES_FOLDER = "organismes";
28
+ exports.SENS_SENATEURS_FOLDER = "senateurs";
29
+ exports.TEXTE_FOLDER = "leg";
30
+ exports.TEXTE_ORIGINAL_FOLDER = "original";
31
+ exports.TEXTE_TRANSFORMED_FOLDER = "transformed";
32
+ exports.DOCUMENT_METADATA_FILE = "metadata.json";
33
+ exports.RAPPORT_FOLDER = "rap";
34
+ function* iterFilePaths(dirPath) {
35
+ if (dirPath && fs_1.default.existsSync(dirPath)) {
36
+ const files = fs_1.default.readdirSync(dirPath, {
37
+ withFileTypes: true,
38
+ recursive: true,
97
39
  });
98
- _iterator = _createForOfIteratorHelper(files);
99
- _context.prev = 3;
100
- _iterator.s();
101
- case 5:
102
- if ((_step = _iterator.n()).done) {
103
- _context.next = 12;
104
- break;
40
+ for (const file of files) {
41
+ if (file.isFile()) {
42
+ yield path_1.default.join(file.parentPath, file.name);
43
+ }
105
44
  }
106
- file = _step.value;
107
- if (!file.isFile()) {
108
- _context.next = 10;
109
- break;
110
- }
111
- _context.next = 10;
112
- return _path["default"].join(file.parentPath, file.name);
113
- case 10:
114
- _context.next = 5;
115
- break;
116
- case 12:
117
- _context.next = 17;
118
- break;
119
- case 14:
120
- _context.prev = 14;
121
- _context.t0 = _context["catch"](3);
122
- _iterator.e(_context.t0);
123
- case 17:
124
- _context.prev = 17;
125
- _iterator.f();
126
- return _context.finish(17);
127
- case 20:
128
- case "end":
129
- return _context.stop();
130
45
  }
131
- }, _marked, null, [[3, 14, 17, 20]]);
132
46
  }
133
- function iterLoadSenatItems(dataDir, dataset, legislatureOrSession, subDir) {
134
- var _ref = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
135
- _ref$log = _ref.log,
136
- log = _ref$log === void 0 ? false : _ref$log;
137
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
138
- var itemsDir, _iterator2, _step2, filePath, itemJson, item, filePathFromDataset;
139
- return _regeneratorRuntime().wrap(function _callee$(_context2) {
140
- while (1) switch (_context2.prev = _context2.next) {
141
- case 0:
142
- itemsDir = _path["default"].join(dataDir, dataset.database);
143
- if (subDir) {
144
- itemsDir = _path["default"].join(itemsDir, subDir);
145
- }
146
- if (legislatureOrSession) {
147
- itemsDir = _path["default"].join(itemsDir, String(legislatureOrSession));
148
- }
149
- _iterator2 = _createForOfIteratorHelper(iterFilePaths(itemsDir));
150
- _context2.prev = 4;
151
- _iterator2.s();
152
- case 6:
153
- if ((_step2 = _iterator2.n()).done) {
154
- _context2.next = 16;
155
- break;
156
- }
157
- filePath = _step2.value;
158
- if (log) {
159
- console.log("Loading file: ".concat(filePath, "\u2026"));
160
- }
161
- itemJson = _fs["default"].readFileSync(filePath, {
162
- encoding: "utf8"
163
- });
164
- item = JSON.parse(itemJson);
165
- filePathFromDataset = filePath.substring(filePath.indexOf(dataset.database) + dataset.database.length);
166
- _context2.next = 14;
167
- return {
168
- item: item,
169
- filePathFromDataset: filePathFromDataset,
170
- legislature: legislatureOrSession
171
- };
172
- case 14:
173
- _context2.next = 6;
174
- break;
175
- case 16:
176
- _context2.next = 21;
177
- break;
178
- case 18:
179
- _context2.prev = 18;
180
- _context2.t0 = _context2["catch"](4);
181
- _iterator2.e(_context2.t0);
182
- case 21:
183
- _context2.prev = 21;
184
- _iterator2.f();
185
- return _context2.finish(21);
186
- case 24:
187
- case "end":
188
- return _context2.stop();
189
- }
190
- }, _callee, null, [[4, 18, 21, 24]]);
191
- })();
47
+ function* iterLoadSenatItems(dataDir, dataset, legislatureOrSession, subDir, { log = false } = {}) {
48
+ let itemsDir = path_1.default.join(dataDir, dataset.database);
49
+ if (subDir) {
50
+ itemsDir = path_1.default.join(itemsDir, subDir);
51
+ }
52
+ if (legislatureOrSession) {
53
+ itemsDir = path_1.default.join(itemsDir, String(legislatureOrSession));
54
+ }
55
+ for (const filePath of iterFilePaths(itemsDir)) {
56
+ if (log) {
57
+ console.log(`Loading file: ${filePath}…`);
58
+ }
59
+ const itemJson = fs_1.default.readFileSync(filePath, { encoding: "utf8" });
60
+ const item = JSON.parse(itemJson);
61
+ const filePathFromDataset = filePath.substring(filePath.indexOf(dataset.database) + dataset.database.length);
62
+ yield {
63
+ item,
64
+ filePathFromDataset,
65
+ legislature: legislatureOrSession,
66
+ };
67
+ }
192
68
  }
193
- function iterLoadSenatAmendements(dataDir, session) {
194
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
195
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
196
- var _iterator3, _step3, amendementItem;
197
- return _regeneratorRuntime().wrap(function _callee2$(_context3) {
198
- while (1) switch (_context3.prev = _context3.next) {
199
- case 0:
200
- _iterator3 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.ameli, session, undefined, options));
201
- _context3.prev = 1;
202
- _iterator3.s();
203
- case 3:
204
- if ((_step3 = _iterator3.n()).done) {
205
- _context3.next = 9;
206
- break;
207
- }
208
- amendementItem = _step3.value;
209
- _context3.next = 7;
210
- return amendementItem;
211
- case 7:
212
- _context3.next = 3;
213
- break;
214
- case 9:
215
- _context3.next = 14;
216
- break;
217
- case 11:
218
- _context3.prev = 11;
219
- _context3.t0 = _context3["catch"](1);
220
- _iterator3.e(_context3.t0);
221
- case 14:
222
- _context3.prev = 14;
223
- _iterator3.f();
224
- return _context3.finish(14);
225
- case 17:
226
- case "end":
227
- return _context3.stop();
228
- }
229
- }, _callee2, null, [[1, 11, 14, 17]]);
230
- })();
69
+ function* iterLoadSenatAmendements(dataDir, session, options = {}) {
70
+ for (const amendementItem of iterLoadSenatItems(dataDir, datasets_1.datasets.ameli, session, undefined, options)) {
71
+ yield amendementItem;
72
+ }
231
73
  }
232
- function iterLoadSenatDossiersLegislatifs(dataDir, session) {
233
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
234
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
235
- var _iterator4, _step4, dossierLegislatifItem;
236
- return _regeneratorRuntime().wrap(function _callee3$(_context4) {
237
- while (1) switch (_context4.prev = _context4.next) {
238
- case 0:
239
- _iterator4 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.dosleg, session, DOSLEG_DOSSIERS_FOLDER, options));
240
- _context4.prev = 1;
241
- _iterator4.s();
242
- case 3:
243
- if ((_step4 = _iterator4.n()).done) {
244
- _context4.next = 9;
245
- break;
246
- }
247
- dossierLegislatifItem = _step4.value;
248
- _context4.next = 7;
249
- return dossierLegislatifItem;
250
- case 7:
251
- _context4.next = 3;
252
- break;
253
- case 9:
254
- _context4.next = 14;
255
- break;
256
- case 11:
257
- _context4.prev = 11;
258
- _context4.t0 = _context4["catch"](1);
259
- _iterator4.e(_context4.t0);
260
- case 14:
261
- _context4.prev = 14;
262
- _iterator4.f();
263
- return _context4.finish(14);
264
- case 17:
265
- case "end":
266
- return _context4.stop();
267
- }
268
- }, _callee3, null, [[1, 11, 14, 17]]);
269
- })();
74
+ function* iterLoadSenatDossiersLegislatifs(dataDir, session, options = {}) {
75
+ for (const dossierLegislatifItem of iterLoadSenatItems(dataDir, datasets_1.datasets.dosleg, session, exports.DOSLEG_DOSSIERS_FOLDER, options)) {
76
+ yield dossierLegislatifItem;
77
+ }
270
78
  }
271
- function iterLoadSenatDossiersLegislatifsTexteUrls(dataDir, session) {
272
- var itemsDir, _iterator5, _step5, filePath, parsedFilePath, itemJson, item;
273
- return _regeneratorRuntime().wrap(function iterLoadSenatDossiersLegislatifsTexteUrls$(_context5) {
274
- while (1) switch (_context5.prev = _context5.next) {
275
- case 0:
276
- itemsDir = _path["default"].join(dataDir, TEXTE_FOLDER, TEXTE_ORIGINAL_FOLDER);
277
- if (session) {
278
- itemsDir = _path["default"].join(itemsDir, session.toString());
279
- }
280
- _iterator5 = _createForOfIteratorHelper(iterFilePaths(itemsDir));
281
- _context5.prev = 3;
282
- _iterator5.s();
283
- case 5:
284
- if ((_step5 = _iterator5.n()).done) {
285
- _context5.next = 15;
286
- break;
287
- }
288
- filePath = _step5.value;
289
- parsedFilePath = _path["default"].parse(filePath);
290
- if (!(parsedFilePath.base === DOCUMENT_METADATA_FILE)) {
291
- _context5.next = 13;
292
- break;
79
+ function* iterLoadSenatDossiersLegislatifsTexteUrls(dataDir, session) {
80
+ let itemsDir = path_1.default.join(dataDir, exports.TEXTE_FOLDER, exports.TEXTE_ORIGINAL_FOLDER);
81
+ if (session) {
82
+ itemsDir = path_1.default.join(itemsDir, session.toString());
83
+ }
84
+ for (const filePath of iterFilePaths(itemsDir)) {
85
+ const parsedFilePath = path_1.default.parse(filePath);
86
+ if (parsedFilePath.base === exports.DOCUMENT_METADATA_FILE) {
87
+ const itemJson = fs_1.default.readFileSync(filePath, { encoding: "utf8" });
88
+ const item = JSON.parse(itemJson);
89
+ yield {
90
+ item,
91
+ };
293
92
  }
294
- itemJson = _fs["default"].readFileSync(filePath, {
295
- encoding: "utf8"
296
- });
297
- item = JSON.parse(itemJson);
298
- _context5.next = 13;
299
- return {
300
- item: item
301
- };
302
- case 13:
303
- _context5.next = 5;
304
- break;
305
- case 15:
306
- _context5.next = 20;
307
- break;
308
- case 17:
309
- _context5.prev = 17;
310
- _context5.t0 = _context5["catch"](3);
311
- _iterator5.e(_context5.t0);
312
- case 20:
313
- _context5.prev = 20;
314
- _iterator5.f();
315
- return _context5.finish(20);
316
- case 23:
317
- case "end":
318
- return _context5.stop();
319
93
  }
320
- }, _marked2, null, [[3, 17, 20, 23]]);
321
94
  }
322
- function iterLoadSenatDossiersLegislatifsRapportUrls(dataDir, session) {
323
- var itemsDir, _iterator6, _step6, filePath, parsedFilePath, itemJson, item;
324
- return _regeneratorRuntime().wrap(function iterLoadSenatDossiersLegislatifsRapportUrls$(_context6) {
325
- while (1) switch (_context6.prev = _context6.next) {
326
- case 0:
327
- itemsDir = _path["default"].join(dataDir, RAPPORT_FOLDER);
328
- if (session) {
329
- itemsDir = _path["default"].join(itemsDir, session.toString());
330
- }
331
- _iterator6 = _createForOfIteratorHelper(iterFilePaths(itemsDir));
332
- _context6.prev = 3;
333
- _iterator6.s();
334
- case 5:
335
- if ((_step6 = _iterator6.n()).done) {
336
- _context6.next = 15;
337
- break;
338
- }
339
- filePath = _step6.value;
340
- parsedFilePath = _path["default"].parse(filePath);
341
- if (!(parsedFilePath.base === DOCUMENT_METADATA_FILE)) {
342
- _context6.next = 13;
343
- break;
95
+ function* iterLoadSenatDossiersLegislatifsRapportUrls(dataDir, session) {
96
+ let itemsDir = path_1.default.join(dataDir, exports.RAPPORT_FOLDER);
97
+ if (session) {
98
+ itemsDir = path_1.default.join(itemsDir, session.toString());
99
+ }
100
+ for (const filePath of iterFilePaths(itemsDir)) {
101
+ const parsedFilePath = path_1.default.parse(filePath);
102
+ if (parsedFilePath.base === exports.DOCUMENT_METADATA_FILE) {
103
+ const itemJson = fs_1.default.readFileSync(filePath, { encoding: "utf8" });
104
+ const item = JSON.parse(itemJson);
105
+ yield {
106
+ item,
107
+ };
344
108
  }
345
- itemJson = _fs["default"].readFileSync(filePath, {
346
- encoding: "utf8"
347
- });
348
- item = JSON.parse(itemJson);
349
- _context6.next = 13;
350
- return {
351
- item: item
352
- };
353
- case 13:
354
- _context6.next = 5;
355
- break;
356
- case 15:
357
- _context6.next = 20;
358
- break;
359
- case 17:
360
- _context6.prev = 17;
361
- _context6.t0 = _context6["catch"](3);
362
- _iterator6.e(_context6.t0);
363
- case 20:
364
- _context6.prev = 20;
365
- _iterator6.f();
366
- return _context6.finish(20);
367
- case 23:
368
- case "end":
369
- return _context6.stop();
370
109
  }
371
- }, _marked3, null, [[3, 17, 20, 23]]);
372
110
  }
373
- function iterLoadSenatDossiersLegislatifsTextes(dataDir, session) {
374
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
375
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
376
- var _iterator7, _step7, dossierLegislatif, _iterator8, _step8, lecture, lecturesSenat, _iterator9, _step9, lectureSenat, _iterator0, _step0, texte, enrichedTexte, texteItem, _texte$session, texteName;
377
- return _regeneratorRuntime().wrap(function _callee4$(_context7) {
378
- while (1) switch (_context7.prev = _context7.next) {
379
- case 0:
380
- _iterator7 = _createForOfIteratorHelper(iterLoadSenatDossiersLegislatifs(dataDir, session, options));
381
- _context7.prev = 1;
382
- _iterator7.s();
383
- case 3:
384
- if ((_step7 = _iterator7.n()).done) {
385
- _context7.next = 58;
386
- break;
387
- }
388
- dossierLegislatif = _step7.value.item;
389
- _iterator8 = _createForOfIteratorHelper(dossierLegislatif.lectures);
390
- _context7.prev = 6;
391
- _iterator8.s();
392
- case 8:
393
- if ((_step8 = _iterator8.n()).done) {
394
- _context7.next = 48;
395
- break;
396
- }
397
- lecture = _step8.value;
398
- lecturesSenat = lecture.lectures_assemblee.filter(function (lectureAssemblee) {
399
- return lectureAssemblee.assemblee === "Sénat";
400
- });
401
- _iterator9 = _createForOfIteratorHelper(lecturesSenat);
402
- _context7.prev = 12;
403
- _iterator9.s();
404
- case 14:
405
- if ((_step9 = _iterator9.n()).done) {
406
- _context7.next = 38;
407
- break;
408
- }
409
- lectureSenat = _step9.value;
410
- _iterator0 = _createForOfIteratorHelper(lectureSenat.textes);
411
- _context7.prev = 17;
412
- _iterator0.s();
413
- case 19:
414
- if ((_step0 = _iterator0.n()).done) {
415
- _context7.next = 28;
416
- break;
417
- }
418
- texte = _step0.value;
419
- enrichedTexte = _objectSpread({
420
- signet_dossier: dossierLegislatif.signet,
421
- url_dossier_senat: dossierLegislatif.url,
422
- url_dossier_assemblee_nationale: dossierLegislatif.url_dossier_assemblee_nationale,
423
- type_lecture: lecture.type_lecture,
424
- libelle_lecture: lecture.libelle,
425
- libelle_organisme: lectureSenat.libelle_organisme
426
- }, texte);
427
- texteItem = {
428
- item: enrichedTexte
429
- };
430
- if (texte.url) {
431
- texteName = _path["default"].parse(texte.url).name;
432
- texteItem.filePathFromDataset = _path["default"].join("".concat((_texte$session = texte.session) !== null && _texte$session !== void 0 ? _texte$session : _datautil.UNDEFINED_SESSION), texteName, "".concat(texteName, ".pdf"));
433
- }
434
- _context7.next = 26;
435
- return texteItem;
436
- case 26:
437
- _context7.next = 19;
438
- break;
439
- case 28:
440
- _context7.next = 33;
441
- break;
442
- case 30:
443
- _context7.prev = 30;
444
- _context7.t0 = _context7["catch"](17);
445
- _iterator0.e(_context7.t0);
446
- case 33:
447
- _context7.prev = 33;
448
- _iterator0.f();
449
- return _context7.finish(33);
450
- case 36:
451
- _context7.next = 14;
452
- break;
453
- case 38:
454
- _context7.next = 43;
455
- break;
456
- case 40:
457
- _context7.prev = 40;
458
- _context7.t1 = _context7["catch"](12);
459
- _iterator9.e(_context7.t1);
460
- case 43:
461
- _context7.prev = 43;
462
- _iterator9.f();
463
- return _context7.finish(43);
464
- case 46:
465
- _context7.next = 8;
466
- break;
467
- case 48:
468
- _context7.next = 53;
469
- break;
470
- case 50:
471
- _context7.prev = 50;
472
- _context7.t2 = _context7["catch"](6);
473
- _iterator8.e(_context7.t2);
474
- case 53:
475
- _context7.prev = 53;
476
- _iterator8.f();
477
- return _context7.finish(53);
478
- case 56:
479
- _context7.next = 3;
480
- break;
481
- case 58:
482
- _context7.next = 63;
483
- break;
484
- case 60:
485
- _context7.prev = 60;
486
- _context7.t3 = _context7["catch"](1);
487
- _iterator7.e(_context7.t3);
488
- case 63:
489
- _context7.prev = 63;
490
- _iterator7.f();
491
- return _context7.finish(63);
492
- case 66:
493
- case "end":
494
- return _context7.stop();
495
- }
496
- }, _callee4, null, [[1, 60, 63, 66], [6, 50, 53, 56], [12, 40, 43, 46], [17, 30, 33, 36]]);
497
- })();
111
+ function* iterLoadSenatDossiersLegislatifsTextes(dataDir, session, options = {}) {
112
+ for (const { item: dossierLegislatif } of iterLoadSenatDossiersLegislatifs(dataDir, session, options)) {
113
+ for (const lecture of dossierLegislatif.lectures) {
114
+ const lecturesSenat = lecture.lectures_assemblee.filter((lectureAssemblee) => lectureAssemblee.assemblee === "Sénat");
115
+ for (const lectureSenat of lecturesSenat) {
116
+ for (const texte of lectureSenat.textes) {
117
+ const enrichedTexte = {
118
+ signet_dossier: dossierLegislatif.signet,
119
+ url_dossier_senat: dossierLegislatif.url,
120
+ url_dossier_assemblee_nationale: dossierLegislatif.url_dossier_assemblee_nationale,
121
+ type_lecture: lecture.type_lecture,
122
+ libelle_lecture: lecture.libelle,
123
+ libelle_organisme: lectureSenat.libelle_organisme,
124
+ ...texte,
125
+ };
126
+ const texteItem = {
127
+ item: enrichedTexte,
128
+ };
129
+ if (texte.url) {
130
+ const texteName = path_1.default.parse(texte.url).name;
131
+ texteItem.filePathFromDataset = path_1.default.join(`${texte.session ?? datautil_1.UNDEFINED_SESSION}`, texteName, `${texteName}.pdf`);
132
+ }
133
+ yield texteItem;
134
+ }
135
+ }
136
+ }
137
+ }
498
138
  }
499
139
  function loadSenatTexteContent(dataDir, textePathFromDataset) {
500
- var parsedTextePath = _path["default"].parse(textePathFromDataset);
501
- var jsonTexteName = "".concat(parsedTextePath.name, ".json");
502
- var fullTextePath = _path["default"].join(dataDir, TEXTE_FOLDER, TEXTE_TRANSFORMED_FOLDER, parsedTextePath.dir, jsonTexteName);
503
- if (!_fs["default"].existsSync(fullTextePath)) {
504
- return {
505
- item: null
506
- };
507
- }
508
- var texteJson = _fs["default"].readFileSync(fullTextePath, {
509
- encoding: "utf8"
510
- });
511
- return {
512
- item: JSON.parse(texteJson)
513
- };
140
+ const parsedTextePath = path_1.default.parse(textePathFromDataset);
141
+ const jsonTexteName = `${parsedTextePath.name}.json`;
142
+ const fullTextePath = path_1.default.join(dataDir, exports.TEXTE_FOLDER, exports.TEXTE_TRANSFORMED_FOLDER, parsedTextePath.dir, jsonTexteName);
143
+ if (!fs_1.default.existsSync(fullTextePath)) {
144
+ return { item: null };
145
+ }
146
+ const texteJson = fs_1.default.readFileSync(fullTextePath, { encoding: "utf8" });
147
+ return { item: JSON.parse(texteJson) };
514
148
  }
515
- function iterLoadSenatOrganismes(dataDir) {
516
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
517
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
518
- var _iterator1, _step1, organismeItem;
519
- return _regeneratorRuntime().wrap(function _callee5$(_context8) {
520
- while (1) switch (_context8.prev = _context8.next) {
521
- case 0:
522
- _iterator1 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.sens, undefined, SENS_ORGANISMES_FOLDER, options));
523
- _context8.prev = 1;
524
- _iterator1.s();
525
- case 3:
526
- if ((_step1 = _iterator1.n()).done) {
527
- _context8.next = 9;
528
- break;
529
- }
530
- organismeItem = _step1.value;
531
- _context8.next = 7;
532
- return organismeItem;
533
- case 7:
534
- _context8.next = 3;
535
- break;
536
- case 9:
537
- _context8.next = 14;
538
- break;
539
- case 11:
540
- _context8.prev = 11;
541
- _context8.t0 = _context8["catch"](1);
542
- _iterator1.e(_context8.t0);
543
- case 14:
544
- _context8.prev = 14;
545
- _iterator1.f();
546
- return _context8.finish(14);
547
- case 17:
548
- case "end":
549
- return _context8.stop();
550
- }
551
- }, _callee5, null, [[1, 11, 14, 17]]);
552
- })();
149
+ function* iterLoadSenatOrganismes(dataDir, options = {}) {
150
+ for (const organismeItem of iterLoadSenatItems(dataDir, datasets_1.datasets.sens, undefined, exports.SENS_ORGANISMES_FOLDER, options)) {
151
+ yield organismeItem;
152
+ }
553
153
  }
554
- function iterLoadSenatSenateurs(dataDir, legislature) {
555
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
556
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_legislatures$find) {
557
- var dateDebutLegislatureStr, dateDebutLegislature, _iterator10, _step10, _senateurItem$item$ma, _senateurItem$item$ma2, senateurItem, dateFinMandatSenateur;
558
- return _regeneratorRuntime().wrap(function _callee6$(_context9) {
559
- while (1) switch (_context9.prev = _context9.next) {
560
- case 0:
561
- dateDebutLegislatureStr = (_legislatures$find = _legislatures["default"].find(function (legislatureInfo) {
562
- return legislatureInfo.numero === legislature;
563
- })) === null || _legislatures$find === void 0 ? void 0 : _legislatures$find.date_debut;
564
- dateDebutLegislature = new Date(dateDebutLegislatureStr);
565
- _iterator10 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.sens, undefined, SENS_SENATEURS_FOLDER, options));
566
- _context9.prev = 3;
567
- _iterator10.s();
568
- case 5:
569
- if ((_step10 = _iterator10.n()).done) {
570
- _context9.next = 14;
571
- break;
572
- }
573
- senateurItem = _step10.value;
574
- dateFinMandatSenateur = (_senateurItem$item$ma = senateurItem.item.mandats_senateur[0]) !== null && _senateurItem$item$ma !== void 0 && _senateurItem$item$ma.date_fin ? new Date((_senateurItem$item$ma2 = senateurItem.item.mandats_senateur[0]) === null || _senateurItem$item$ma2 === void 0 ? void 0 : _senateurItem$item$ma2.date_fin) : null;
575
- if (!(dateFinMandatSenateur && dateFinMandatSenateur < dateDebutLegislature)) {
576
- _context9.next = 10;
577
- break;
578
- }
579
- return _context9.abrupt("continue", 12);
580
- case 10:
581
- _context9.next = 12;
582
- return senateurItem;
583
- case 12:
584
- _context9.next = 5;
585
- break;
586
- case 14:
587
- _context9.next = 19;
588
- break;
589
- case 16:
590
- _context9.prev = 16;
591
- _context9.t0 = _context9["catch"](3);
592
- _iterator10.e(_context9.t0);
593
- case 19:
594
- _context9.prev = 19;
595
- _iterator10.f();
596
- return _context9.finish(19);
597
- case 22:
598
- case "end":
599
- return _context9.stop();
600
- }
601
- }, _callee6, null, [[3, 16, 19, 22]]);
602
- })();
154
+ function* iterLoadSenatSenateurs(dataDir, legislature, options = {}) {
155
+ const dateDebutLegislatureStr = legislatures_json_1.default.find((legislatureInfo) => legislatureInfo.numero === legislature)?.date_debut;
156
+ const dateDebutLegislature = new Date(dateDebutLegislatureStr);
157
+ for (const senateurItem of iterLoadSenatItems(dataDir, datasets_1.datasets.sens, undefined, exports.SENS_SENATEURS_FOLDER, options)) {
158
+ const dateFinMandatSenateur = senateurItem.item.mandats_senateur[0]
159
+ ?.date_fin
160
+ ? new Date(senateurItem.item.mandats_senateur[0]?.date_fin)
161
+ : null;
162
+ if (dateFinMandatSenateur && dateFinMandatSenateur < dateDebutLegislature) {
163
+ continue;
164
+ }
165
+ yield senateurItem;
166
+ }
603
167
  }
604
- function iterLoadSenatCirconscriptions(dataDir) {
605
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
606
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
607
- var _iterator11, _step11, circonscriptionItem;
608
- return _regeneratorRuntime().wrap(function _callee7$(_context0) {
609
- while (1) switch (_context0.prev = _context0.next) {
610
- case 0:
611
- _iterator11 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.sens, undefined, SENS_CIRCONSCRIPTIONS_FOLDER, options));
612
- _context0.prev = 1;
613
- _iterator11.s();
614
- case 3:
615
- if ((_step11 = _iterator11.n()).done) {
616
- _context0.next = 9;
617
- break;
618
- }
619
- circonscriptionItem = _step11.value;
620
- _context0.next = 7;
621
- return circonscriptionItem;
622
- case 7:
623
- _context0.next = 3;
624
- break;
625
- case 9:
626
- _context0.next = 14;
627
- break;
628
- case 11:
629
- _context0.prev = 11;
630
- _context0.t0 = _context0["catch"](1);
631
- _iterator11.e(_context0.t0);
632
- case 14:
633
- _context0.prev = 14;
634
- _iterator11.f();
635
- return _context0.finish(14);
636
- case 17:
637
- case "end":
638
- return _context0.stop();
639
- }
640
- }, _callee7, null, [[1, 11, 14, 17]]);
641
- })();
168
+ function* iterLoadSenatCirconscriptions(dataDir, options = {}) {
169
+ for (const circonscriptionItem of iterLoadSenatItems(dataDir, datasets_1.datasets.sens, undefined, exports.SENS_CIRCONSCRIPTIONS_FOLDER, options)) {
170
+ yield circonscriptionItem;
171
+ }
642
172
  }
643
- function iterLoadSenatQuestions(dataDir, legislature) {
644
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
645
- return /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
646
- var _iterator12, _step12, questionItem;
647
- return _regeneratorRuntime().wrap(function _callee8$(_context1) {
648
- while (1) switch (_context1.prev = _context1.next) {
649
- case 0:
650
- _iterator12 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.questions, legislature, undefined, options));
651
- _context1.prev = 1;
652
- _iterator12.s();
653
- case 3:
654
- if ((_step12 = _iterator12.n()).done) {
655
- _context1.next = 9;
656
- break;
657
- }
658
- questionItem = _step12.value;
659
- _context1.next = 7;
660
- return questionItem;
661
- case 7:
662
- _context1.next = 3;
663
- break;
664
- case 9:
665
- _context1.next = 14;
666
- break;
667
- case 11:
668
- _context1.prev = 11;
669
- _context1.t0 = _context1["catch"](1);
670
- _iterator12.e(_context1.t0);
671
- case 14:
672
- _context1.prev = 14;
673
- _iterator12.f();
674
- return _context1.finish(14);
675
- case 17:
676
- case "end":
677
- return _context1.stop();
678
- }
679
- }, _callee8, null, [[1, 11, 14, 17]]);
680
- })();
173
+ function* iterLoadSenatQuestions(dataDir, legislature, options = {}) {
174
+ for (const questionItem of iterLoadSenatItems(dataDir, datasets_1.datasets.questions, legislature, undefined, options)) {
175
+ yield questionItem;
176
+ }
681
177
  }
682
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX2xlZ2lzbGF0dXJlcyIsIl9kYXRhc2V0cyIsIl9kYXRhdXRpbCIsImUiLCJfX2VzTW9kdWxlIiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwiaXRlcmF0b3IiLCJhIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImMiLCJoIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiYXJnIiwiZGVsZWdhdGUiLCJkIiwiZiIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicyIsInR5cGUiLCJDb250ZXh0Iiwid3JhcCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJsIiwicCIsImdldFByb3RvdHlwZU9mIiwieSIsIngiLCJ2IiwiZyIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwibmV4dCIsInciLCJ0cnlFbnRyaWVzIiwibSIsInJlc2V0IiwiaXNOYU4iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsInVuc2hpZnQiLCJwb3AiLCJ2YWx1ZXMiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9tYXJrZWQiLCJpdGVyRmlsZVBhdGhzIiwiX21hcmtlZDIiLCJpdGVyTG9hZFNlbmF0RG9zc2llcnNMZWdpc2xhdGlmc1RleHRlVXJscyIsIl9tYXJrZWQzIiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwiRE9TTEVHX0RPU1NJRVJTX0ZPTERFUiIsImV4cG9ydHMiLCJTRU5TX0NJUkNPTlNDUklQVElPTlNfRk9MREVSIiwiU0VOU19PUkdBTklTTUVTX0ZPTERFUiIsIlNFTlNfU0VOQVRFVVJTX0ZPTERFUiIsIlRFWFRFX0ZPTERFUiIsIlRFWFRFX09SSUdJTkFMX0ZPTERFUiIsIlRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiIsIkRPQ1VNRU5UX01FVEFEQVRBX0ZJTEUiLCJSQVBQT1JUX0ZPTERFUiIsImRpclBhdGgiLCJmaWxlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZmlsZSIsIml0ZXJGaWxlUGF0aHMkIiwiX2NvbnRleHQiLCJmcyIsImV4aXN0c1N5bmMiLCJyZWFkZGlyU3luYyIsIndpdGhGaWxlVHlwZXMiLCJyZWN1cnNpdmUiLCJpc0ZpbGUiLCJwYXRoIiwiam9pbiIsInBhcmVudFBhdGgiLCJ0MCIsIml0ZXJMb2FkU2VuYXRJdGVtcyIsImRhdGFEaXIiLCJkYXRhc2V0IiwibGVnaXNsYXR1cmVPclNlc3Npb24iLCJzdWJEaXIiLCJfcmVmIiwidW5kZWZpbmVkIiwiX3JlZiRsb2ciLCJsb2ciLCJfY2FsbGVlIiwiaXRlbXNEaXIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiZmlsZVBhdGgiLCJpdGVtSnNvbiIsIml0ZW0iLCJmaWxlUGF0aEZyb21EYXRhc2V0IiwiX2NhbGxlZSQiLCJfY29udGV4dDIiLCJkYXRhYmFzZSIsImNvbnNvbGUiLCJjb25jYXQiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsIkpTT04iLCJwYXJzZSIsInN1YnN0cmluZyIsImluZGV4T2YiLCJsZWdpc2xhdHVyZSIsIml0ZXJMb2FkU2VuYXRBbWVuZGVtZW50cyIsInNlc3Npb24iLCJvcHRpb25zIiwiX2NhbGxlZTIiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiYW1lbmRlbWVudEl0ZW0iLCJfY2FsbGVlMiQiLCJfY29udGV4dDMiLCJkYXRhc2V0cyIsImFtZWxpIiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnMiLCJfY2FsbGVlMyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJkb3NzaWVyTGVnaXNsYXRpZkl0ZW0iLCJfY2FsbGVlMyQiLCJfY29udGV4dDQiLCJkb3NsZWciLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwicGFyc2VkRmlsZVBhdGgiLCJpdGVyTG9hZFNlbmF0RG9zc2llcnNMZWdpc2xhdGlmc1RleHRlVXJscyQiLCJfY29udGV4dDUiLCJiYXNlIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsIml0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzUmFwcG9ydFVybHMkIiwiX2NvbnRleHQ2IiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNUZXh0ZXMiLCJfY2FsbGVlNCIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJkb3NzaWVyTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJsZWN0dXJlIiwibGVjdHVyZXNTZW5hdCIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJsZWN0dXJlU2VuYXQiLCJfaXRlcmF0b3IwIiwiX3N0ZXAwIiwidGV4dGUiLCJlbnJpY2hlZFRleHRlIiwidGV4dGVJdGVtIiwiX3RleHRlJHNlc3Npb24iLCJ0ZXh0ZU5hbWUiLCJfY2FsbGVlNCQiLCJfY29udGV4dDciLCJsZWN0dXJlcyIsImxlY3R1cmVzX2Fzc2VtYmxlZSIsImxlY3R1cmVBc3NlbWJsZWUiLCJhc3NlbWJsZWUiLCJ0ZXh0ZXMiLCJzaWduZXRfZG9zc2llciIsInNpZ25ldCIsInVybF9kb3NzaWVyX3NlbmF0IiwidXJsIiwidXJsX2Rvc3NpZXJfYXNzZW1ibGVlX25hdGlvbmFsZSIsInR5cGVfbGVjdHVyZSIsImxpYmVsbGVfbGVjdHVyZSIsImxpYmVsbGUiLCJsaWJlbGxlX29yZ2FuaXNtZSIsIlVOREVGSU5FRF9TRVNTSU9OIiwidDEiLCJ0MiIsInQzIiwibG9hZFNlbmF0VGV4dGVDb250ZW50IiwidGV4dGVQYXRoRnJvbURhdGFzZXQiLCJwYXJzZWRUZXh0ZVBhdGgiLCJqc29uVGV4dGVOYW1lIiwiZnVsbFRleHRlUGF0aCIsImRpciIsInRleHRlSnNvbiIsIml0ZXJMb2FkU2VuYXRPcmdhbmlzbWVzIiwiX2NhbGxlZTUiLCJfaXRlcmF0b3IxIiwiX3N0ZXAxIiwib3JnYW5pc21lSXRlbSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0OCIsInNlbnMiLCJpdGVyTG9hZFNlbmF0U2VuYXRldXJzIiwiX2NhbGxlZTYiLCJfbGVnaXNsYXR1cmVzJGZpbmQiLCJkYXRlRGVidXRMZWdpc2xhdHVyZVN0ciIsImRhdGVEZWJ1dExlZ2lzbGF0dXJlIiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiX3NlbmF0ZXVySXRlbSRpdGVtJG1hIiwiX3NlbmF0ZXVySXRlbSRpdGVtJG1hMiIsInNlbmF0ZXVySXRlbSIsImRhdGVGaW5NYW5kYXRTZW5hdGV1ciIsIl9jYWxsZWU2JCIsIl9jb250ZXh0OSIsImxlZ2lzbGF0dXJlcyIsImZpbmQiLCJsZWdpc2xhdHVyZUluZm8iLCJudW1lcm8iLCJkYXRlX2RlYnV0IiwiRGF0ZSIsIm1hbmRhdHNfc2VuYXRldXIiLCJkYXRlX2ZpbiIsIml0ZXJMb2FkU2VuYXRDaXJjb25zY3JpcHRpb25zIiwiX2NhbGxlZTciLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJjaXJjb25zY3JpcHRpb25JdGVtIiwiX2NhbGxlZTckIiwiX2NvbnRleHQwIiwiaXRlckxvYWRTZW5hdFF1ZXN0aW9ucyIsIl9jYWxsZWU4IiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwicXVlc3Rpb25JdGVtIiwiX2NhbGxlZTgkIiwiX2NvbnRleHQxIiwicXVlc3Rpb25zIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCBsZWdpc2xhdHVyZXMgZnJvbSBcIi4vbGVnaXNsYXR1cmVzLmpzb25cIlxuXG5pbXBvcnQgeyBEYXRhc2V0LCBkYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnRSZXN1bHQgfSBmcm9tIFwiLi9tb2RlbC9hbWVsaVwiXG5pbXBvcnQgeyBEb3NzaWVyTGVnaXNsYXRpZlJlc3VsdCB9IGZyb20gXCIuL21vZGVsL2Rvc2xlZ1wiXG5pbXBvcnQgeyBRdWVzdGlvblJlc3VsdCB9IGZyb20gXCIuL21vZGVsL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDaXJjb25zY3JpcHRpb25SZXN1bHQsIE9yZ2FuaXNtZVJlc3VsdCwgU2VuYXRldXJSZXN1bHQgfSBmcm9tIFwiLi9tb2RlbC9zZW5zXCJcbmltcG9ydCB7IFVOREVGSU5FRF9TRVNTSU9OIH0gZnJvbSBcIi4vc2NyaXB0cy9kYXRhdXRpbFwiXG5pbXBvcnQgeyBGbGF0VGV4dGUgfSBmcm9tIFwiLi90eXBlcy90ZXh0ZVwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcblxuZXhwb3J0IGNvbnN0IERPU0xFR19ET1NTSUVSU19GT0xERVIgPSBcImRvc3NpZXJzXCJcbmV4cG9ydCBjb25zdCBTRU5TX0NJUkNPTlNDUklQVElPTlNfRk9MREVSID0gXCJjaXJjb25zY3JpcHRpb25zXCJcbmV4cG9ydCBjb25zdCBTRU5TX09SR0FOSVNNRVNfRk9MREVSID0gXCJvcmdhbmlzbWVzXCJcbmV4cG9ydCBjb25zdCBTRU5TX1NFTkFURVVSU19GT0xERVIgPSBcInNlbmF0ZXVyc1wiXG5leHBvcnQgY29uc3QgVEVYVEVfRk9MREVSID0gXCJsZWdcIlxuZXhwb3J0IGNvbnN0IFRFWFRFX09SSUdJTkFMX0ZPTERFUiA9IFwib3JpZ2luYWxcIlxuZXhwb3J0IGNvbnN0IFRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiA9IFwidHJhbnNmb3JtZWRcIlxuZXhwb3J0IGNvbnN0IERPQ1VNRU5UX01FVEFEQVRBX0ZJTEUgPSBcIm1ldGFkYXRhLmpzb25cIlxuZXhwb3J0IGNvbnN0IFJBUFBPUlRfRk9MREVSID0gXCJyYXBcIlxuXG50eXBlIEl0ZXJJdGVtPFQ+ID0ge1xuICBpdGVtOiBUXG4gIGZpbGVQYXRoRnJvbURhdGFzZXQ/OiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dGVNZXRhZGF0YSB7XG4gIG5hbWU6IHN0cmluZyxcbiAgc2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdXJsX2V4cG9zZV9kZXNfbW90aWZzPzogVVJMLFxuICB1cmxfeG1sOiBVUkwsXG4gIHVybF9odG1sOiBVUkwsXG4gIHVybF9wZGY6IFVSTCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXBwb3J0TWV0YWRhdGEge1xuICBuYW1lOiBzdHJpbmcsXG4gIHNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHVybF9odG1sOiBVUkwsXG4gIHVybF9wZGY6IFVSTCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb3NzaWVyTGVnaXNsYXRpZlRleHRlUmVzdWx0IHtcbiAgc2lnbmV0X2Rvc3NpZXI6IHN0cmluZyxcbiAgdXJsX2Rvc3NpZXJfc2VuYXQ6IHN0cmluZyxcbiAgdXJsX2Rvc3NpZXJfYXNzZW1ibGVlX25hdGlvbmFsZTogc3RyaW5nIHwgbnVsbCxcbiAgdHlwZV9sZWN0dXJlOiBzdHJpbmdcbiAgbGliZWxsZV9sZWN0dXJlOiBzdHJpbmdcbiAgbGliZWxsZV9vcmdhbmlzbWU6IHN0cmluZyB8IG51bGxcbiAgbnVtZXJvOiBzdHJpbmcgfCBudWxsXG4gIHVybDogc3RyaW5nXG4gIG9yaWdpbmVfdGV4dGU6IHN0cmluZ1xuICB0eXBlX3RleHRlOiBzdHJpbmdcbiAgZGF0ZTogc3RyaW5nXG4gIHNlc3Npb246IHN0cmluZyB8IG51bGxcbiAgYXV0ZXVyczoge1xuICAgIHByZW5vbTogc3RyaW5nIHwgbnVsbFxuICAgIG5vbV91c3VlbDogc3RyaW5nXG4gICAgbWF0cmljdWxlOiBzdHJpbmcgfCBudWxsXG4gIH1bXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gKiBpdGVyRmlsZVBhdGhzIChkaXJQYXRoOiBzdHJpbmcpOiBHZW5lcmF0b3I8c3RyaW5nPiB7XG4gIGlmIChkaXJQYXRoICYmIGZzLmV4aXN0c1N5bmMoZGlyUGF0aCkpIHtcbiAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGRpclBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBpZiAoZmlsZS5pc0ZpbGUoKSkge1xuICAgICAgICB5aWVsZCBwYXRoLmpvaW4oZmlsZS5wYXJlbnRQYXRoLCBmaWxlLm5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uICogaXRlckxvYWRTZW5hdEl0ZW1zPFQ+IChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBkYXRhc2V0OiBEYXRhc2V0LFxuICBsZWdpc2xhdHVyZU9yU2Vzc2lvbj86IG51bWJlcixcbiAgc3ViRGlyPzogc3RyaW5nLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxJdGVySXRlbTxUPj4ge1xuICBsZXQgaXRlbXNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5kYXRhYmFzZSlcbiAgaWYgKHN1YkRpcikge1xuICAgIGl0ZW1zRGlyID0gcGF0aC5qb2luKGl0ZW1zRGlyLCBzdWJEaXIpXG4gIH1cbiAgaWYgKGxlZ2lzbGF0dXJlT3JTZXNzaW9uKSB7XG4gICAgaXRlbXNEaXIgPSBwYXRoLmpvaW4oaXRlbXNEaXIsIFN0cmluZyhsZWdpc2xhdHVyZU9yU2Vzc2lvbikpXG4gIH1cbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBpdGVyRmlsZVBhdGhzKGl0ZW1zRGlyKSkge1xuICAgIGlmIChsb2cpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZmlsZVBhdGh94oCmYClcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtSnNvbiA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICBjb25zdCBpdGVtOiBUID0gSlNPTi5wYXJzZShpdGVtSnNvbilcblxuICAgIGNvbnN0IGZpbGVQYXRoRnJvbURhdGFzZXQgPSBmaWxlUGF0aC5zdWJzdHJpbmcoZmlsZVBhdGguaW5kZXhPZihkYXRhc2V0LmRhdGFiYXNlKSArIGRhdGFzZXQuZGF0YWJhc2UubGVuZ3RoKVxuXG4gICAgeWllbGQge1xuICAgICAgaXRlbSxcbiAgICAgIGZpbGVQYXRoRnJvbURhdGFzZXQsXG4gICAgICBsZWdpc2xhdHVyZTogbGVnaXNsYXR1cmVPclNlc3Npb24sXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXRBbWVuZGVtZW50cyAoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgc2Vzc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08QW1lbmRlbWVudFJlc3VsdD4+IHtcbiAgZm9yIChjb25zdCBhbWVuZGVtZW50SXRlbVxuICAgIG9mIGl0ZXJMb2FkU2VuYXRJdGVtczxBbWVuZGVtZW50UmVzdWx0PihkYXRhRGlyLCBkYXRhc2V0cy5hbWVsaSwgc2Vzc2lvbiwgdW5kZWZpbmVkLCBvcHRpb25zKVxuICAgICkge1xuICAgIHlpZWxkIGFtZW5kZW1lbnRJdGVtXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIHNlc3Npb246IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPEl0ZXJJdGVtPERvc3NpZXJMZWdpc2xhdGlmUmVzdWx0Pj4ge1xuICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmSXRlbVxuICAgIG9mIGl0ZXJMb2FkU2VuYXRJdGVtczxEb3NzaWVyTGVnaXNsYXRpZlJlc3VsdD4oZGF0YURpciwgZGF0YXNldHMuZG9zbGVnLCBzZXNzaW9uLCBET1NMRUdfRE9TU0lFUlNfRk9MREVSLCBvcHRpb25zKVxuICAgICkge1xuICAgIHlpZWxkIGRvc3NpZXJMZWdpc2xhdGlmSXRlbVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzVGV4dGVVcmxzIChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBzZXNzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQsXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08VGV4dGVNZXRhZGF0YT4+IHtcbiAgbGV0IGl0ZW1zRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIFRFWFRFX0ZPTERFUiwgVEVYVEVfT1JJR0lOQUxfRk9MREVSKVxuICBpZiAoc2Vzc2lvbikge1xuICAgIGl0ZW1zRGlyID0gcGF0aC5qb2luKGl0ZW1zRGlyLCBzZXNzaW9uLnRvU3RyaW5nKCkpXG4gIH1cbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBpdGVyRmlsZVBhdGhzKGl0ZW1zRGlyKSkge1xuICAgIGNvbnN0IHBhcnNlZEZpbGVQYXRoID0gcGF0aC5wYXJzZShmaWxlUGF0aClcbiAgICBpZiAocGFyc2VkRmlsZVBhdGguYmFzZSA9PT0gRE9DVU1FTlRfTUVUQURBVEFfRklMRSkge1xuICAgICAgY29uc3QgaXRlbUpzb24gPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShpdGVtSnNvbilcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgaXRlbSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyAoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgc2Vzc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuKTogR2VuZXJhdG9yPEl0ZXJJdGVtPFJhcHBvcnRNZXRhZGF0YT4+IHtcbiAgbGV0IGl0ZW1zRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIFJBUFBPUlRfRk9MREVSKVxuICBpZiAoc2Vzc2lvbikge1xuICAgIGl0ZW1zRGlyID0gcGF0aC5qb2luKGl0ZW1zRGlyLCBzZXNzaW9uLnRvU3RyaW5nKCkpXG4gIH1cbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBpdGVyRmlsZVBhdGhzKGl0ZW1zRGlyKSkge1xuICAgIGNvbnN0IHBhcnNlZEZpbGVQYXRoID0gcGF0aC5wYXJzZShmaWxlUGF0aClcbiAgICBpZiAocGFyc2VkRmlsZVBhdGguYmFzZSA9PT0gRE9DVU1FTlRfTUVUQURBVEFfRklMRSkge1xuICAgICAgY29uc3QgaXRlbUpzb24gPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShpdGVtSnNvbilcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgaXRlbSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNUZXh0ZXMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIHNlc3Npb246IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPEl0ZXJJdGVtPERvc3NpZXJMZWdpc2xhdGlmVGV4dGVSZXN1bHQ+PiB7XG4gIGZvciAoY29uc3QgeyBpdGVtOiBkb3NzaWVyTGVnaXNsYXRpZiB9IG9mIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzKGRhdGFEaXIsIHNlc3Npb24sIG9wdGlvbnMpKSB7XG4gICAgZm9yIChjb25zdCBsZWN0dXJlIG9mIGRvc3NpZXJMZWdpc2xhdGlmLmxlY3R1cmVzKSB7XG4gICAgICBjb25zdCBsZWN0dXJlc1NlbmF0ID0gbGVjdHVyZS5sZWN0dXJlc19hc3NlbWJsZWVcbiAgICAgICAgLmZpbHRlcihsZWN0dXJlQXNzZW1ibGVlID0+IGxlY3R1cmVBc3NlbWJsZWUuYXNzZW1ibGVlID09PSBcIlPDqW5hdFwiKVxuICAgICAgZm9yIChjb25zdCBsZWN0dXJlU2VuYXQgb2YgbGVjdHVyZXNTZW5hdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHRleHRlIG9mIGxlY3R1cmVTZW5hdC50ZXh0ZXMpIHtcbiAgICAgICAgICBjb25zdCBlbnJpY2hlZFRleHRlID0ge1xuICAgICAgICAgICAgc2lnbmV0X2Rvc3NpZXI6IGRvc3NpZXJMZWdpc2xhdGlmLnNpZ25ldCxcbiAgICAgICAgICAgIHVybF9kb3NzaWVyX3NlbmF0OiBkb3NzaWVyTGVnaXNsYXRpZi51cmwsXG4gICAgICAgICAgICB1cmxfZG9zc2llcl9hc3NlbWJsZWVfbmF0aW9uYWxlOiBkb3NzaWVyTGVnaXNsYXRpZi51cmxfZG9zc2llcl9hc3NlbWJsZWVfbmF0aW9uYWxlLFxuICAgICAgICAgICAgdHlwZV9sZWN0dXJlOiBsZWN0dXJlLnR5cGVfbGVjdHVyZSxcbiAgICAgICAgICAgIGxpYmVsbGVfbGVjdHVyZTogbGVjdHVyZS5saWJlbGxlLFxuICAgICAgICAgICAgbGliZWxsZV9vcmdhbmlzbWU6IGxlY3R1cmVTZW5hdC5saWJlbGxlX29yZ2FuaXNtZSxcbiAgICAgICAgICAgIC4uLnRleHRlLFxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB0ZXh0ZUl0ZW06IEl0ZXJJdGVtPERvc3NpZXJMZWdpc2xhdGlmVGV4dGVSZXN1bHQ+ID0ge1xuICAgICAgICAgICAgaXRlbTogZW5yaWNoZWRUZXh0ZSxcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRleHRlLnVybCkge1xuICAgICAgICAgICAgY29uc3QgdGV4dGVOYW1lID0gcGF0aC5wYXJzZSh0ZXh0ZS51cmwpLm5hbWVcbiAgICAgICAgICAgIHRleHRlSXRlbS5maWxlUGF0aEZyb21EYXRhc2V0XG4gICAgICAgICAgICAgID0gcGF0aC5qb2luKGAke3RleHRlLnNlc3Npb24gPz8gVU5ERUZJTkVEX1NFU1NJT059YCwgdGV4dGVOYW1lLCBgJHt0ZXh0ZU5hbWV9LnBkZmApXG4gICAgICAgICAgfVxuICAgICAgICAgIHlpZWxkIHRleHRlSXRlbVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2VuYXRUZXh0ZUNvbnRlbnQgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIHRleHRlUGF0aEZyb21EYXRhc2V0OiBzdHJpbmcsXG4pOiBJdGVySXRlbTxGbGF0VGV4dGUgfCBudWxsPiB7XG4gIGNvbnN0IHBhcnNlZFRleHRlUGF0aCA9IHBhdGgucGFyc2UodGV4dGVQYXRoRnJvbURhdGFzZXQpXG4gIGNvbnN0IGpzb25UZXh0ZU5hbWUgPSBgJHtwYXJzZWRUZXh0ZVBhdGgubmFtZX0uanNvbmBcbiAgY29uc3QgZnVsbFRleHRlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBURVhURV9GT0xERVIsIFRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiwgcGFyc2VkVGV4dGVQYXRoLmRpciwganNvblRleHRlTmFtZSlcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGZ1bGxUZXh0ZVBhdGgpKSB7XG4gICAgcmV0dXJuIHsgaXRlbTogbnVsbCB9XG4gIH1cbiAgY29uc3QgdGV4dGVKc29uID0gZnMucmVhZEZpbGVTeW5jKGZ1bGxUZXh0ZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIHJldHVybiB7IGl0ZW06IEpTT04ucGFyc2UodGV4dGVKc29uKSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXRPcmdhbmlzbWVzIChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08T3JnYW5pc21lUmVzdWx0Pj4ge1xuICBmb3IgKGNvbnN0IG9yZ2FuaXNtZUl0ZW0gb2YgaXRlckxvYWRTZW5hdEl0ZW1zPE9yZ2FuaXNtZVJlc3VsdD4oZGF0YURpciwgZGF0YXNldHMuc2VucywgdW5kZWZpbmVkLCBTRU5TX09SR0FOSVNNRVNfRk9MREVSLCBvcHRpb25zKSkge1xuICAgIHlpZWxkIG9yZ2FuaXNtZUl0ZW1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gKiBpdGVyTG9hZFNlbmF0U2VuYXRldXJzIChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogbnVtYmVyLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08U2VuYXRldXJSZXN1bHQ+PiB7XG4gIGNvbnN0IGRhdGVEZWJ1dExlZ2lzbGF0dXJlU3RyID0gbGVnaXNsYXR1cmVzXG4gICAgLmZpbmQobGVnaXNsYXR1cmVJbmZvID0+IGxlZ2lzbGF0dXJlSW5mby5udW1lcm8gPT09IGxlZ2lzbGF0dXJlKVxuICAgID8uZGF0ZV9kZWJ1dFxuICBjb25zdCBkYXRlRGVidXRMZWdpc2xhdHVyZSA9IG5ldyBEYXRlKGRhdGVEZWJ1dExlZ2lzbGF0dXJlU3RyISlcbiAgZm9yIChjb25zdCBzZW5hdGV1ckl0ZW0gb2YgaXRlckxvYWRTZW5hdEl0ZW1zPFNlbmF0ZXVyUmVzdWx0PihkYXRhRGlyLCBkYXRhc2V0cy5zZW5zLCB1bmRlZmluZWQsIFNFTlNfU0VOQVRFVVJTX0ZPTERFUiwgb3B0aW9ucykpIHtcbiAgICBjb25zdCBkYXRlRmluTWFuZGF0U2VuYXRldXIgPSBzZW5hdGV1ckl0ZW0uaXRlbS5tYW5kYXRzX3NlbmF0ZXVyWzBdPy5kYXRlX2ZpbiA/XG4gICAgICBuZXcgRGF0ZShzZW5hdGV1ckl0ZW0uaXRlbS5tYW5kYXRzX3NlbmF0ZXVyWzBdPy5kYXRlX2ZpbikgOiBudWxsXG4gICAgaWYgKGRhdGVGaW5NYW5kYXRTZW5hdGV1ciAmJiBkYXRlRmluTWFuZGF0U2VuYXRldXIgPCBkYXRlRGVidXRMZWdpc2xhdHVyZSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgeWllbGQgc2VuYXRldXJJdGVtXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdENpcmNvbnNjcmlwdGlvbnMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxJdGVySXRlbTxDaXJjb25zY3JpcHRpb25SZXN1bHQ+PiB7XG4gIGZvciAoY29uc3QgY2lyY29uc2NyaXB0aW9uSXRlbSBvZiBpdGVyTG9hZFNlbmF0SXRlbXM8Q2lyY29uc2NyaXB0aW9uUmVzdWx0PihkYXRhRGlyLCBkYXRhc2V0cy5zZW5zLCB1bmRlZmluZWQsIFNFTlNfQ0lSQ09OU0NSSVBUSU9OU19GT0xERVIsIG9wdGlvbnMpKSB7XG4gICAgeWllbGQgY2lyY29uc2NyaXB0aW9uSXRlbVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXRRdWVzdGlvbnMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBudW1iZXIsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxJdGVySXRlbTxRdWVzdGlvblJlc3VsdD4+IHtcbiAgZm9yIChjb25zdCBxdWVzdGlvbkl0ZW1cbiAgICBvZiBpdGVyTG9hZFNlbmF0SXRlbXM8UXVlc3Rpb25SZXN1bHQ+KGRhdGFEaXIsIGRhdGFzZXRzLnF1ZXN0aW9ucywgbGVnaXNsYXR1cmUsIHVuZGVmaW5lZCwgb3B0aW9ucylcbiAgICApIHtcbiAgICB5aWVsZCBxdWVzdGlvbkl0ZW1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxHQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxhQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFLQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFBc0QsU0FBQUQsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLFFBQUFGLENBQUEsRUFBQUcsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBTixDQUFBLE9BQUFLLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFQLENBQUEsR0FBQUcsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVYsQ0FBQSxFQUFBRyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBZCxDQUFBLGFBQUFHLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRCxPQUFBLENBQUFHLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQWUsZUFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQXBCLENBQUEsRUFBQUssTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFGLE9BQUEsQ0FBQUcsTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFyQixDQUFBLEVBQUFHLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFILENBQUE7QUFBQSxTQUFBa0IsZ0JBQUFsQixDQUFBLEVBQUFHLENBQUEsRUFBQUMsQ0FBQSxZQUFBRCxDQUFBLEdBQUFtQixjQUFBLENBQUFuQixDQUFBLE1BQUFILENBQUEsR0FBQUssTUFBQSxDQUFBZ0IsY0FBQSxDQUFBckIsQ0FBQSxFQUFBRyxDQUFBLElBQUFvQixLQUFBLEVBQUFuQixDQUFBLEVBQUFPLFVBQUEsTUFBQWEsWUFBQSxNQUFBQyxRQUFBLFVBQUF6QixDQUFBLENBQUFHLENBQUEsSUFBQUMsQ0FBQSxFQUFBSixDQUFBO0FBQUEsU0FBQXNCLGVBQUFsQixDQUFBLFFBQUFzQixDQUFBLEdBQUFDLFlBQUEsQ0FBQXZCLENBQUEsZ0NBQUF3QixPQUFBLENBQUFGLENBQUEsSUFBQUEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQUMsYUFBQXZCLENBQUEsRUFBQUQsQ0FBQSxvQkFBQXlCLE9BQUEsQ0FBQXhCLENBQUEsTUFBQUEsQ0FBQSxTQUFBQSxDQUFBLE1BQUFKLENBQUEsR0FBQUksQ0FBQSxDQUFBeUIsTUFBQSxDQUFBQyxXQUFBLGtCQUFBOUIsQ0FBQSxRQUFBMEIsQ0FBQSxHQUFBMUIsQ0FBQSxDQUFBK0IsSUFBQSxDQUFBM0IsQ0FBQSxFQUFBRCxDQUFBLGdDQUFBeUIsT0FBQSxDQUFBRixDQUFBLFVBQUFBLENBQUEsWUFBQU0sU0FBQSx5RUFBQTdCLENBQUEsR0FBQThCLE1BQUEsR0FBQUMsTUFBQSxFQUFBOUIsQ0FBQTtBQUFBLFNBQUErQixvQkFBQSxrQkFUdEQsbUtBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFoQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBSCxDQUFBLEdBQUFLLE1BQUEsQ0FBQStCLFNBQUEsRUFBQUMsQ0FBQSxHQUFBckMsQ0FBQSxDQUFBc0MsY0FBQSxFQUFBOUIsQ0FBQSx3QkFBQXFCLE1BQUEsR0FBQUEsTUFBQSxPQUFBSCxDQUFBLEdBQUFsQixDQUFBLENBQUErQixRQUFBLGtCQUFBQyxDQUFBLEdBQUFoQyxDQUFBLENBQUFpQyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFsQyxDQUFBLENBQUFtQyxXQUFBLDhCQUFBQyxFQUFBeEMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFILENBQUEsRUFBQXFDLENBQUEsSUFBQWhDLE1BQUEsQ0FBQWdCLGNBQUEsQ0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxJQUFBb0IsS0FBQSxFQUFBdkIsQ0FBQSxFQUFBVyxVQUFBLEdBQUEwQixDQUFBLEVBQUFiLFlBQUEsR0FBQWEsQ0FBQSxFQUFBWixRQUFBLEdBQUFZLENBQUEsYUFBQU8sQ0FBQSxtQkFBQXhDLENBQUEsSUFBQXdDLENBQUEsWUFBQUEsRUFBQXhDLENBQUEsRUFBQUQsQ0FBQSxFQUFBSCxDQUFBLFdBQUFJLENBQUEsQ0FBQUQsQ0FBQSxJQUFBSCxDQUFBLGdCQUFBNkMsRUFBQTFDLENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxFQUFBN0IsQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBMUIsQ0FBQSxJQUFBQSxDQUFBLENBQUFvQyxTQUFBLFlBQUFVLFNBQUEsR0FBQTlDLENBQUEsR0FBQThDLFNBQUEsRUFBQU4sQ0FBQSxHQUFBbkMsTUFBQSxDQUFBMEMsTUFBQSxDQUFBckIsQ0FBQSxDQUFBVSxTQUFBLFVBQUFRLENBQUEsQ0FBQUosQ0FBQSx1QkFBQXJDLENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxRQUFBN0IsQ0FBQSx1QkFBQWtCLENBQUEsRUFBQWMsQ0FBQSxjQUFBaEMsQ0FBQSxRQUFBd0MsS0FBQSw0Q0FBQXhDLENBQUEsb0JBQUFrQixDQUFBLFFBQUFjLENBQUEsV0FBQWpCLEtBQUEsRUFBQW5CLENBQUEsRUFBQTZDLElBQUEsZUFBQVosQ0FBQSxDQUFBYSxNQUFBLEdBQUF4QixDQUFBLEVBQUFXLENBQUEsQ0FBQWMsR0FBQSxHQUFBWCxDQUFBLFVBQUFFLENBQUEsR0FBQUwsQ0FBQSxDQUFBZSxRQUFBLE1BQUFWLENBQUEsUUFBQUUsQ0FBQSxHQUFBUyxDQUFBLENBQUFYLENBQUEsRUFBQUwsQ0FBQSxPQUFBTyxDQUFBLFFBQUFBLENBQUEsS0FBQVUsQ0FBQSxtQkFBQVYsQ0FBQSxxQkFBQVAsQ0FBQSxDQUFBYSxNQUFBLEVBQUFiLENBQUEsQ0FBQWtCLElBQUEsR0FBQWxCLENBQUEsQ0FBQW1CLEtBQUEsR0FBQW5CLENBQUEsQ0FBQWMsR0FBQSxzQkFBQWQsQ0FBQSxDQUFBYSxNQUFBLGNBQUExQyxDQUFBLFFBQUFBLENBQUEsTUFBQTZCLENBQUEsQ0FBQWMsR0FBQSxFQUFBZCxDQUFBLENBQUFvQixpQkFBQSxDQUFBcEIsQ0FBQSxDQUFBYyxHQUFBLHVCQUFBZCxDQUFBLENBQUFhLE1BQUEsSUFBQWIsQ0FBQSxDQUFBcUIsTUFBQSxXQUFBckIsQ0FBQSxDQUFBYyxHQUFBLEdBQUEzQyxDQUFBLFVBQUFxQyxDQUFBLEdBQUFjLENBQUEsQ0FBQXhELENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxvQkFBQVEsQ0FBQSxDQUFBZSxJQUFBLFFBQUFwRCxDQUFBLEdBQUE2QixDQUFBLENBQUFZLElBQUEsVUFBQUosQ0FBQSxDQUFBTSxHQUFBLEtBQUFHLENBQUEscUJBQUEvQixLQUFBLEVBQUFzQixDQUFBLENBQUFNLEdBQUEsRUFBQUYsSUFBQSxFQUFBWixDQUFBLENBQUFZLElBQUEsa0JBQUFKLENBQUEsQ0FBQWUsSUFBQSxLQUFBcEQsQ0FBQSxNQUFBNkIsQ0FBQSxDQUFBYSxNQUFBLFlBQUFiLENBQUEsQ0FBQWMsR0FBQSxHQUFBTixDQUFBLENBQUFNLEdBQUEsVUFBQWhELENBQUEsRUFBQWtDLENBQUEsTUFBQXdCLE9BQUEsQ0FBQXJELENBQUEsZUFBQWdDLENBQUEsYUFBQW1CLEVBQUF2RCxDQUFBLEVBQUFELENBQUEsRUFBQUgsQ0FBQSxtQkFBQTRELElBQUEsWUFBQVQsR0FBQSxFQUFBL0MsQ0FBQSxDQUFBMkIsSUFBQSxDQUFBNUIsQ0FBQSxFQUFBSCxDQUFBLGNBQUFJLENBQUEsYUFBQXdELElBQUEsV0FBQVQsR0FBQSxFQUFBL0MsQ0FBQSxRQUFBRCxDQUFBLENBQUEyRCxJQUFBLEdBQUFqQixDQUFBLE1BQUFTLENBQUEsZ0JBQUFSLFVBQUEsY0FBQWlCLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQXJCLENBQUEsQ0FBQXFCLENBQUEsRUFBQXZDLENBQUEscUNBQUF3QyxDQUFBLEdBQUE3RCxNQUFBLENBQUE4RCxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsQ0FBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQXBFLENBQUEsSUFBQXFDLENBQUEsQ0FBQU4sSUFBQSxDQUFBcUMsQ0FBQSxFQUFBMUMsQ0FBQSxNQUFBdUMsQ0FBQSxHQUFBRyxDQUFBLE9BQUFFLENBQUEsR0FBQU4sMEJBQUEsQ0FBQTVCLFNBQUEsR0FBQVUsU0FBQSxDQUFBVixTQUFBLEdBQUEvQixNQUFBLENBQUEwQyxNQUFBLENBQUFrQixDQUFBLFlBQUFNLEVBQUFuRSxDQUFBLGdDQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQXlDLENBQUEsQ0FBQXhDLENBQUEsRUFBQUQsQ0FBQSxZQUFBQyxDQUFBLGdCQUFBb0UsT0FBQSxDQUFBckUsQ0FBQSxFQUFBQyxDQUFBLHNCQUFBcUUsY0FBQXJFLENBQUEsRUFBQUQsQ0FBQSxhQUFBSCxFQUFBUSxDQUFBLEVBQUFrQixDQUFBLEVBQUFjLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFlLENBQUEsQ0FBQXZELENBQUEsQ0FBQUksQ0FBQSxHQUFBSixDQUFBLEVBQUFzQixDQUFBLG1CQUFBa0IsQ0FBQSxDQUFBZ0IsSUFBQSxRQUFBZixDQUFBLEdBQUFELENBQUEsQ0FBQU8sR0FBQSxFQUFBRyxDQUFBLEdBQUFULENBQUEsQ0FBQXRCLEtBQUEsU0FBQStCLENBQUEsZ0JBQUExQixPQUFBLENBQUEwQixDQUFBLEtBQUFqQixDQUFBLENBQUFOLElBQUEsQ0FBQXVCLENBQUEsZUFBQW5ELENBQUEsQ0FBQXVFLE9BQUEsQ0FBQXBCLENBQUEsQ0FBQXFCLE9BQUEsRUFBQUMsSUFBQSxXQUFBeEUsQ0FBQSxJQUFBSixDQUFBLFNBQUFJLENBQUEsRUFBQW9DLENBQUEsRUFBQUUsQ0FBQSxnQkFBQXRDLENBQUEsSUFBQUosQ0FBQSxVQUFBSSxDQUFBLEVBQUFvQyxDQUFBLEVBQUFFLENBQUEsUUFBQXZDLENBQUEsQ0FBQXVFLE9BQUEsQ0FBQXBCLENBQUEsRUFBQXNCLElBQUEsV0FBQXhFLENBQUEsSUFBQXlDLENBQUEsQ0FBQXRCLEtBQUEsR0FBQW5CLENBQUEsRUFBQW9DLENBQUEsQ0FBQUssQ0FBQSxnQkFBQXpDLENBQUEsV0FBQUosQ0FBQSxVQUFBSSxDQUFBLEVBQUFvQyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxDQUFBRSxDQUFBLENBQUFPLEdBQUEsU0FBQTNDLENBQUEsRUFBQW9DLENBQUEsNEJBQUF4QyxDQUFBLEVBQUFpQyxDQUFBLGFBQUFYLEVBQUEsZUFBQXZCLENBQUEsV0FBQUEsQ0FBQSxFQUFBSyxDQUFBLElBQUFSLENBQUEsQ0FBQUksQ0FBQSxFQUFBaUMsQ0FBQSxFQUFBbEMsQ0FBQSxFQUFBSyxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBb0UsSUFBQSxDQUFBbEQsQ0FBQSxFQUFBQSxDQUFBLElBQUFBLENBQUEsdUJBQUEyQixFQUFBbEQsQ0FBQSxFQUFBSCxDQUFBLFFBQUFxQyxDQUFBLEdBQUFyQyxDQUFBLENBQUFrRCxNQUFBLEVBQUExQyxDQUFBLEdBQUFMLENBQUEsQ0FBQXVCLENBQUEsQ0FBQVcsQ0FBQSxPQUFBN0IsQ0FBQSxLQUFBSixDQUFBLFNBQUFKLENBQUEsQ0FBQW9ELFFBQUEscUJBQUFmLENBQUEsSUFBQWxDLENBQUEsQ0FBQXVCLENBQUEsZUFBQTFCLENBQUEsQ0FBQWtELE1BQUEsYUFBQWxELENBQUEsQ0FBQW1ELEdBQUEsR0FBQS9DLENBQUEsRUFBQWlELENBQUEsQ0FBQWxELENBQUEsRUFBQUgsQ0FBQSxlQUFBQSxDQUFBLENBQUFrRCxNQUFBLGtCQUFBYixDQUFBLEtBQUFyQyxDQUFBLENBQUFrRCxNQUFBLFlBQUFsRCxDQUFBLENBQUFtRCxHQUFBLE9BQUFuQixTQUFBLHVDQUFBSyxDQUFBLGlCQUFBaUIsQ0FBQSxNQUFBNUIsQ0FBQSxHQUFBaUMsQ0FBQSxDQUFBbkQsQ0FBQSxFQUFBTCxDQUFBLENBQUF1QixDQUFBLEVBQUExQixDQUFBLENBQUFtRCxHQUFBLG1CQUFBekIsQ0FBQSxDQUFBa0MsSUFBQSxTQUFBNUQsQ0FBQSxDQUFBa0QsTUFBQSxZQUFBbEQsQ0FBQSxDQUFBbUQsR0FBQSxHQUFBekIsQ0FBQSxDQUFBeUIsR0FBQSxFQUFBbkQsQ0FBQSxDQUFBb0QsUUFBQSxTQUFBRSxDQUFBLE1BQUFkLENBQUEsR0FBQWQsQ0FBQSxDQUFBeUIsR0FBQSxTQUFBWCxDQUFBLEdBQUFBLENBQUEsQ0FBQVMsSUFBQSxJQUFBakQsQ0FBQSxDQUFBRyxDQUFBLENBQUFBLENBQUEsSUFBQXFDLENBQUEsQ0FBQWpCLEtBQUEsRUFBQXZCLENBQUEsQ0FBQTZFLElBQUEsR0FBQTFFLENBQUEsQ0FBQWtDLENBQUEsZUFBQXJDLENBQUEsQ0FBQWtELE1BQUEsS0FBQWxELENBQUEsQ0FBQWtELE1BQUEsV0FBQWxELENBQUEsQ0FBQW1ELEdBQUEsR0FBQS9DLENBQUEsR0FBQUosQ0FBQSxDQUFBb0QsUUFBQSxTQUFBRSxDQUFBLElBQUFkLENBQUEsSUFBQXhDLENBQUEsQ0FBQWtELE1BQUEsWUFBQWxELENBQUEsQ0FBQW1ELEdBQUEsT0FBQW5CLFNBQUEsc0NBQUFoQyxDQUFBLENBQUFvRCxRQUFBLFNBQUFFLENBQUEsY0FBQXdCLEVBQUExRSxDQUFBLFNBQUEyRSxVQUFBLENBQUFuRSxJQUFBLENBQUFSLENBQUEsY0FBQTRFLEVBQUE3RSxDQUFBLFFBQUFILENBQUEsR0FBQUcsQ0FBQSxXQUFBSCxDQUFBLENBQUE0RCxJQUFBLGFBQUE1RCxDQUFBLENBQUFtRCxHQUFBLEdBQUEvQyxDQUFBLEVBQUFELENBQUEsTUFBQUgsQ0FBQSxhQUFBNkQsUUFBQXpELENBQUEsU0FBQTJFLFVBQUEsV0FBQTNFLENBQUEsQ0FBQWEsT0FBQSxDQUFBNkQsQ0FBQSxjQUFBRyxLQUFBLGlCQUFBWixFQUFBbEUsQ0FBQSxnQkFBQUEsQ0FBQSxRQUFBSCxDQUFBLEdBQUFHLENBQUEsQ0FBQXVCLENBQUEsT0FBQTFCLENBQUEsU0FBQUEsQ0FBQSxDQUFBK0IsSUFBQSxDQUFBNUIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBMEUsSUFBQSxTQUFBMUUsQ0FBQSxPQUFBK0UsS0FBQSxDQUFBL0UsQ0FBQSxDQUFBYSxNQUFBLFNBQUFSLENBQUEsT0FBQWdDLENBQUEsWUFBQXhDLEVBQUEsYUFBQVEsQ0FBQSxHQUFBTCxDQUFBLENBQUFhLE1BQUEsT0FBQXFCLENBQUEsQ0FBQU4sSUFBQSxDQUFBNUIsQ0FBQSxFQUFBSyxDQUFBLFVBQUFSLENBQUEsQ0FBQXVCLEtBQUEsR0FBQXBCLENBQUEsQ0FBQUssQ0FBQSxHQUFBUixDQUFBLENBQUFpRCxJQUFBLE9BQUFqRCxDQUFBLFNBQUFBLENBQUEsQ0FBQXVCLEtBQUEsR0FBQW5CLENBQUEsRUFBQUosQ0FBQSxDQUFBaUQsSUFBQSxPQUFBakQsQ0FBQSxZQUFBd0MsQ0FBQSxDQUFBcUMsSUFBQSxHQUFBckMsQ0FBQSxnQkFBQVIsU0FBQSxDQUFBSixPQUFBLENBQUF6QixDQUFBLGtDQUFBNEQsaUJBQUEsQ0FBQTNCLFNBQUEsR0FBQTRCLDBCQUFBLEVBQUFwQixDQUFBLENBQUEwQixDQUFBLGlCQUFBTiwwQkFBQSxHQUFBcEIsQ0FBQSxDQUFBb0IsMEJBQUEsaUJBQUFELGlCQUFBLEdBQUFuQixDQUFBLENBQUFvQiwwQkFBQSxFQUFBdEIsQ0FBQSxFQUFBcUIsaUJBQUEsQ0FBQW9CLFdBQUEseUJBQUFoRixDQUFBLENBQUFpRixtQkFBQSxhQUFBaEYsQ0FBQSxRQUFBRCxDQUFBLHdCQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQWlGLFdBQUEsV0FBQWxGLENBQUEsS0FBQUEsQ0FBQSxLQUFBNEQsaUJBQUEsNkJBQUE1RCxDQUFBLENBQUFnRixXQUFBLElBQUFoRixDQUFBLENBQUFtRixJQUFBLE9BQUFuRixDQUFBLENBQUFvRixJQUFBLGFBQUFuRixDQUFBLFdBQUFDLE1BQUEsQ0FBQW1GLGNBQUEsR0FBQW5GLE1BQUEsQ0FBQW1GLGNBQUEsQ0FBQXBGLENBQUEsRUFBQTRELDBCQUFBLEtBQUE1RCxDQUFBLENBQUFxRixTQUFBLEdBQUF6QiwwQkFBQSxFQUFBcEIsQ0FBQSxDQUFBeEMsQ0FBQSxFQUFBc0MsQ0FBQSx5QkFBQXRDLENBQUEsQ0FBQWdDLFNBQUEsR0FBQS9CLE1BQUEsQ0FBQTBDLE1BQUEsQ0FBQXVCLENBQUEsR0FBQWxFLENBQUEsS0FBQUQsQ0FBQSxDQUFBdUYsS0FBQSxhQUFBdEYsQ0FBQSxhQUFBdUUsT0FBQSxFQUFBdkUsQ0FBQSxPQUFBbUUsQ0FBQSxDQUFBRSxhQUFBLENBQUFyQyxTQUFBLEdBQUFRLENBQUEsQ0FBQTZCLGFBQUEsQ0FBQXJDLFNBQUEsRUFBQUksQ0FBQSxpQ0FBQXJDLENBQUEsQ0FBQXNFLGFBQUEsR0FBQUEsYUFBQSxFQUFBdEUsQ0FBQSxDQUFBd0YsS0FBQSxhQUFBdkYsQ0FBQSxFQUFBSixDQUFBLEVBQUFxQyxDQUFBLEVBQUE3QixDQUFBLEVBQUFrQixDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBa0UsT0FBQSxPQUFBcEQsQ0FBQSxPQUFBaUMsYUFBQSxDQUFBNUIsQ0FBQSxDQUFBekMsQ0FBQSxFQUFBSixDQUFBLEVBQUFxQyxDQUFBLEVBQUE3QixDQUFBLEdBQUFrQixDQUFBLFVBQUF2QixDQUFBLENBQUFpRixtQkFBQSxDQUFBcEYsQ0FBQSxJQUFBd0MsQ0FBQSxHQUFBQSxDQUFBLENBQUFxQyxJQUFBLEdBQUFELElBQUEsV0FBQXhFLENBQUEsV0FBQUEsQ0FBQSxDQUFBNkMsSUFBQSxHQUFBN0MsQ0FBQSxDQUFBbUIsS0FBQSxHQUFBaUIsQ0FBQSxDQUFBcUMsSUFBQSxXQUFBTixDQUFBLENBQUFELENBQUEsR0FBQTFCLENBQUEsQ0FBQTBCLENBQUEsRUFBQTVCLENBQUEsZ0JBQUFFLENBQUEsQ0FBQTBCLENBQUEsRUFBQTVDLENBQUEsaUNBQUFrQixDQUFBLENBQUEwQixDQUFBLDZEQUFBbkUsQ0FBQSxDQUFBRyxJQUFBLGFBQUFGLENBQUEsUUFBQUQsQ0FBQSxHQUFBRSxNQUFBLENBQUFELENBQUEsR0FBQUosQ0FBQSxnQkFBQXFDLENBQUEsSUFBQWxDLENBQUEsRUFBQUgsQ0FBQSxDQUFBNkYsT0FBQSxDQUFBeEQsQ0FBQSxtQkFBQWpDLEVBQUEsV0FBQUosQ0FBQSxDQUFBZ0IsTUFBQSxRQUFBcUIsQ0FBQSxHQUFBckMsQ0FBQSxDQUFBOEYsR0FBQSxPQUFBM0YsQ0FBQSxTQUFBQyxDQUFBLENBQUFtQixLQUFBLEdBQUFjLENBQUEsRUFBQWpDLENBQUEsQ0FBQTZDLElBQUEsT0FBQTdDLENBQUEsU0FBQUEsQ0FBQSxDQUFBNkMsSUFBQSxPQUFBN0MsQ0FBQSxRQUFBRCxDQUFBLENBQUE0RixNQUFBLEdBQUExQixDQUFBLEVBQUFSLE9BQUEsQ0FBQXpCLFNBQUEsS0FBQWlELFdBQUEsRUFBQXhCLE9BQUEsRUFBQW9CLEtBQUEsV0FBQUEsTUFBQTlFLENBQUEsYUFBQTZGLElBQUEsUUFBQW5CLElBQUEsV0FBQXRCLElBQUEsUUFBQUMsS0FBQSxHQUFBcEQsQ0FBQSxPQUFBNkMsSUFBQSxZQUFBRyxRQUFBLGNBQUFGLE1BQUEsZ0JBQUFDLEdBQUEsR0FBQS9DLENBQUEsT0FBQTJFLFVBQUEsQ0FBQTlELE9BQUEsQ0FBQStELENBQUEsSUFBQTdFLENBQUEsV0FBQUgsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBaUcsTUFBQSxPQUFBNUQsQ0FBQSxDQUFBTixJQUFBLE9BQUEvQixDQUFBLE1BQUFrRixLQUFBLEVBQUFsRixDQUFBLENBQUFrRyxLQUFBLGNBQUFsRyxDQUFBLElBQUFJLENBQUEsTUFBQStGLElBQUEsV0FBQUEsS0FBQSxTQUFBbEQsSUFBQSxXQUFBN0MsQ0FBQSxRQUFBMkUsVUFBQSx3QkFBQTNFLENBQUEsQ0FBQXdELElBQUEsUUFBQXhELENBQUEsQ0FBQStDLEdBQUEsY0FBQWlELElBQUEsS0FBQTNDLGlCQUFBLFdBQUFBLGtCQUFBdEQsQ0FBQSxhQUFBOEMsSUFBQSxRQUFBOUMsQ0FBQSxNQUFBSCxDQUFBLGtCQUFBcUMsRUFBQWpDLENBQUEsSUFBQW9DLENBQUEsQ0FBQW9CLElBQUEsWUFBQXBCLENBQUEsQ0FBQVcsR0FBQSxHQUFBaEQsQ0FBQSxFQUFBSCxDQUFBLENBQUE2RSxJQUFBLEdBQUF6RSxDQUFBLGFBQUFJLENBQUEsR0FBQVIsQ0FBQSxDQUFBK0UsVUFBQSxDQUFBL0QsTUFBQSxNQUFBUixDQUFBLFNBQUFBLENBQUEsUUFBQWtCLENBQUEsUUFBQXFELFVBQUEsQ0FBQXZFLENBQUEsR0FBQWdDLENBQUEsR0FBQWQsQ0FBQSxLQUFBZ0IsQ0FBQSxRQUFBc0QsSUFBQSxFQUFBcEQsQ0FBQSxHQUFBbEIsQ0FBQSxLQUFBbUIsQ0FBQSxHQUFBbkIsQ0FBQSxnQkFBQUEsQ0FBQSxZQUFBVyxDQUFBLGtCQUFBTyxDQUFBLEtBQUFDLENBQUEsUUFBQUcsS0FBQSx3REFBQXRCLENBQUEsT0FBQUEsQ0FBQSxPQUFBZ0IsQ0FBQSxRQUFBQSxDQUFBLEdBQUFFLENBQUEsY0FBQU0sTUFBQSxnQkFBQUMsR0FBQSxHQUFBL0MsQ0FBQSxFQUFBaUMsQ0FBQSxDQUFBTyxDQUFBLFdBQUFGLENBQUEsR0FBQUcsQ0FBQSxTQUFBUixDQUFBLENBQUFRLENBQUEsY0FBQWEsTUFBQSxXQUFBQSxPQUFBdEQsQ0FBQSxFQUFBRCxDQUFBLGFBQUFILENBQUEsUUFBQStFLFVBQUEsQ0FBQS9ELE1BQUEsTUFBQWhCLENBQUEsU0FBQUEsQ0FBQSxRQUFBcUMsQ0FBQSxRQUFBMEMsVUFBQSxDQUFBL0UsQ0FBQSxPQUFBcUMsQ0FBQSxZQUFBQSxDQUFBLFlBQUEyRCxJQUFBLFNBQUFBLElBQUEsR0FBQTNELENBQUEsV0FBQTdCLENBQUEsR0FBQTZCLENBQUEsYUFBQTdCLENBQUEsaUJBQUFKLENBQUEsbUJBQUFBLENBQUEsS0FBQUksQ0FBQSxPQUFBTCxDQUFBLElBQUFBLENBQUEsSUFBQUssQ0FBQSxRQUFBQSxDQUFBLGNBQUFrQixDQUFBLEdBQUFsQixDQUFBLEdBQUFBLENBQUEsaUJBQUFrQixDQUFBLENBQUFrQyxJQUFBLEdBQUF4RCxDQUFBLEVBQUFzQixDQUFBLENBQUF5QixHQUFBLEdBQUFoRCxDQUFBLEVBQUFLLENBQUEsU0FBQTBDLE1BQUEsZ0JBQUEyQixJQUFBLEdBQUFyRSxDQUFBLEtBQUE4QyxDQUFBLFNBQUErQyxRQUFBLENBQUEzRSxDQUFBLE1BQUEyRSxRQUFBLFdBQUFBLFNBQUFqRyxDQUFBLEVBQUFELENBQUEsb0JBQUFDLENBQUEsQ0FBQXdELElBQUEsUUFBQXhELENBQUEsQ0FBQStDLEdBQUEscUJBQUEvQyxDQUFBLENBQUF3RCxJQUFBLG1CQUFBeEQsQ0FBQSxDQUFBd0QsSUFBQSxRQUFBaUIsSUFBQSxHQUFBekUsQ0FBQSxDQUFBK0MsR0FBQSxnQkFBQS9DLENBQUEsQ0FBQXdELElBQUEsU0FBQXdDLElBQUEsUUFBQWpELEdBQUEsR0FBQS9DLENBQUEsQ0FBQStDLEdBQUEsT0FBQUQsTUFBQSxrQkFBQTJCLElBQUEseUJBQUF6RSxDQUFBLENBQUF3RCxJQUFBLElBQUF6RCxDQUFBLFVBQUEwRSxJQUFBLEdBQUExRSxDQUFBLEdBQUFtRCxDQUFBLEtBQUFnRCxNQUFBLFdBQUFBLE9BQUFsRyxDQUFBLGFBQUFELENBQUEsUUFBQTRFLFVBQUEsQ0FBQS9ELE1BQUEsTUFBQWIsQ0FBQSxTQUFBQSxDQUFBLFFBQUFILENBQUEsUUFBQStFLFVBQUEsQ0FBQTVFLENBQUEsT0FBQUgsQ0FBQSxRQUFBSSxDQUFBLGNBQUFpRyxRQUFBLENBQUFyRyxDQUFBLEtBQUFBLENBQUEsTUFBQWdGLENBQUEsQ0FBQWhGLENBQUEsR0FBQXNELENBQUEseUJBQUFpRCxPQUFBbkcsQ0FBQSxhQUFBRCxDQUFBLFFBQUE0RSxVQUFBLENBQUEvRCxNQUFBLE1BQUFiLENBQUEsU0FBQUEsQ0FBQSxRQUFBSCxDQUFBLFFBQUErRSxVQUFBLENBQUE1RSxDQUFBLE9BQUFILENBQUEsUUFBQUksQ0FBQSxRQUFBaUMsQ0FBQSxHQUFBckMsQ0FBQSxxQkFBQXFDLENBQUEsQ0FBQXVCLElBQUEsUUFBQXBELENBQUEsR0FBQTZCLENBQUEsQ0FBQWMsR0FBQSxFQUFBNkIsQ0FBQSxDQUFBaEYsQ0FBQSxZQUFBUSxDQUFBLFlBQUF3QyxLQUFBLDhCQUFBd0QsYUFBQSxXQUFBQSxjQUFBckcsQ0FBQSxFQUFBSCxDQUFBLEVBQUFxQyxDQUFBLGdCQUFBZSxRQUFBLEtBQUExQixDQUFBLEVBQUEyQyxDQUFBLENBQUFsRSxDQUFBLEdBQUFBLENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxFQUFBQSxDQUFBLG9CQUFBYSxNQUFBLFVBQUFDLEdBQUEsR0FBQS9DLENBQUEsR0FBQWtELENBQUEsT0FBQW5ELENBQUE7QUFBQSxJQUFBc0csT0FBQSxnQkFBQXRFLG1CQUFBLEdBQUFvRCxJQUFBLENBa0VrQm1CLGFBQWE7RUFBQUMsUUFBQSxnQkFBQXhFLG1CQUFBLEdBQUFvRCxJQUFBLENBbUVicUIseUNBQXlDO0VBQUFDLFFBQUEsZ0JBQUExRSxtQkFBQSxHQUFBb0QsSUFBQSxDQW9CekN1QiwyQ0FBMkM7QUFBQSxTQUFBQywyQkFBQTVHLENBQUEsRUFBQUgsQ0FBQSxRQUFBSSxDQUFBLHlCQUFBeUIsTUFBQSxJQUFBMUIsQ0FBQSxDQUFBMEIsTUFBQSxDQUFBVSxRQUFBLEtBQUFwQyxDQUFBLHFCQUFBQyxDQUFBLFFBQUE0RyxLQUFBLENBQUFDLE9BQUEsQ0FBQTlHLENBQUEsTUFBQUMsQ0FBQSxHQUFBOEcsMkJBQUEsQ0FBQS9HLENBQUEsTUFBQUgsQ0FBQSxJQUFBRyxDQUFBLHVCQUFBQSxDQUFBLENBQUFhLE1BQUEsSUFBQVosQ0FBQSxLQUFBRCxDQUFBLEdBQUFDLENBQUEsT0FBQStHLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUF6RCxDQUFBLEVBQUF5RCxDQUFBLEVBQUEvRSxDQUFBLFdBQUFBLEVBQUEsV0FBQThFLEVBQUEsSUFBQWhILENBQUEsQ0FBQWEsTUFBQSxLQUFBaUMsSUFBQSxXQUFBQSxJQUFBLE1BQUExQixLQUFBLEVBQUFwQixDQUFBLENBQUFnSCxFQUFBLFVBQUFuSCxDQUFBLFdBQUFBLEVBQUFHLENBQUEsVUFBQUEsQ0FBQSxLQUFBbUQsQ0FBQSxFQUFBOEQsQ0FBQSxnQkFBQXBGLFNBQUEsaUpBQUF4QixDQUFBLEVBQUFnQyxDQUFBLE9BQUFFLENBQUEsZ0JBQUFpQixDQUFBLFdBQUFBLEVBQUEsSUFBQXZELENBQUEsR0FBQUEsQ0FBQSxDQUFBMkIsSUFBQSxDQUFBNUIsQ0FBQSxNQUFBa0MsQ0FBQSxXQUFBQSxFQUFBLFFBQUFsQyxDQUFBLEdBQUFDLENBQUEsQ0FBQXlFLElBQUEsV0FBQXJDLENBQUEsR0FBQXJDLENBQUEsQ0FBQThDLElBQUEsRUFBQTlDLENBQUEsS0FBQUgsQ0FBQSxXQUFBQSxFQUFBRyxDQUFBLElBQUF1QyxDQUFBLE9BQUFsQyxDQUFBLEdBQUFMLENBQUEsS0FBQW1ELENBQUEsV0FBQUEsRUFBQSxVQUFBZCxDQUFBLFlBQUFwQyxDQUFBLGNBQUFBLENBQUEsOEJBQUFzQyxDQUFBLFFBQUFsQyxDQUFBO0FBQUEsU0FBQTBHLDRCQUFBL0csQ0FBQSxFQUFBcUMsQ0FBQSxRQUFBckMsQ0FBQSwyQkFBQUEsQ0FBQSxTQUFBa0gsaUJBQUEsQ0FBQWxILENBQUEsRUFBQXFDLENBQUEsT0FBQXBDLENBQUEsTUFBQWtILFFBQUEsQ0FBQXZGLElBQUEsQ0FBQTVCLENBQUEsRUFBQStGLEtBQUEsNkJBQUE5RixDQUFBLElBQUFELENBQUEsQ0FBQWtGLFdBQUEsS0FBQWpGLENBQUEsR0FBQUQsQ0FBQSxDQUFBa0YsV0FBQSxDQUFBQyxJQUFBLGFBQUFsRixDQUFBLGNBQUFBLENBQUEsR0FBQTRHLEtBQUEsQ0FBQU8sSUFBQSxDQUFBcEgsQ0FBQSxvQkFBQUMsQ0FBQSwrQ0FBQW9ILElBQUEsQ0FBQXBILENBQUEsSUFBQWlILGlCQUFBLENBQUFsSCxDQUFBLEVBQUFxQyxDQUFBO0FBQUEsU0FBQTZFLGtCQUFBbEgsQ0FBQSxFQUFBcUMsQ0FBQSxhQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQXJDLENBQUEsQ0FBQWEsTUFBQSxNQUFBd0IsQ0FBQSxHQUFBckMsQ0FBQSxDQUFBYSxNQUFBLFlBQUFoQixDQUFBLE1BQUFxQyxDQUFBLEdBQUEyRSxLQUFBLENBQUF4RSxDQUFBLEdBQUF4QyxDQUFBLEdBQUF3QyxDQUFBLEVBQUF4QyxDQUFBLElBQUFxQyxDQUFBLENBQUFyQyxDQUFBLElBQUFHLENBQUEsQ0FBQUgsQ0FBQSxVQUFBcUMsQ0FBQTtBQTNJdEQsSUFBTW9GLHNCQUFzQixHQUFBQyxPQUFBLENBQUFELHNCQUFBLEdBQUcsVUFBVTtBQUN6QyxJQUFNRSw0QkFBNEIsR0FBQUQsT0FBQSxDQUFBQyw0QkFBQSxHQUFHLGtCQUFrQjtBQUN2RCxJQUFNQyxzQkFBc0IsR0FBQUYsT0FBQSxDQUFBRSxzQkFBQSxHQUFHLFlBQVk7QUFDM0MsSUFBTUMscUJBQXFCLEdBQUFILE9BQUEsQ0FBQUcscUJBQUEsR0FBRyxXQUFXO0FBQ3pDLElBQU1DLFlBQVksR0FBQUosT0FBQSxDQUFBSSxZQUFBLEdBQUcsS0FBSztBQUMxQixJQUFNQyxxQkFBcUIsR0FBQUwsT0FBQSxDQUFBSyxxQkFBQSxHQUFHLFVBQVU7QUFDeEMsSUFBTUMsd0JBQXdCLEdBQUFOLE9BQUEsQ0FBQU0sd0JBQUEsR0FBRyxhQUFhO0FBQzlDLElBQU1DLHNCQUFzQixHQUFBUCxPQUFBLENBQUFPLHNCQUFBLEdBQUcsZUFBZTtBQUM5QyxJQUFNQyxjQUFjLEdBQUFSLE9BQUEsQ0FBQVEsY0FBQSxHQUFHLEtBQUs7QUE0QzVCLFNBQVd4QixhQUFhQSxDQUFFeUIsT0FBZTtFQUFBLElBQUFDLEtBQUEsRUFBQUMsU0FBQSxFQUFBQyxLQUFBLEVBQUFDLElBQUE7RUFBQSxPQUFBcEcsbUJBQUEsR0FBQTJCLElBQUEsVUFBQTBFLGVBQUFDLFFBQUE7SUFBQSxrQkFBQUEsUUFBQSxDQUFBekMsSUFBQSxHQUFBeUMsUUFBQSxDQUFBNUQsSUFBQTtNQUFBO1FBQUEsTUFDMUNzRCxPQUFPLElBQUlPLGNBQUUsQ0FBQ0MsVUFBVSxDQUFDUixPQUFPLENBQUM7VUFBQU0sUUFBQSxDQUFBNUQsSUFBQTtVQUFBO1FBQUE7UUFDN0J1RCxLQUFLLEdBQUdNLGNBQUUsQ0FBQ0UsV0FBVyxDQUFDVCxPQUFPLEVBQUU7VUFBRVUsYUFBYSxFQUFFLElBQUk7VUFBRUMsU0FBUyxFQUFFO1FBQUssQ0FBQyxDQUFDO1FBQUFULFNBQUEsR0FBQXRCLDBCQUFBLENBQzVEcUIsS0FBSztRQUFBSyxRQUFBLENBQUF6QyxJQUFBO1FBQUFxQyxTQUFBLENBQUExRSxDQUFBO01BQUE7UUFBQSxLQUFBMkUsS0FBQSxHQUFBRCxTQUFBLENBQUFoRyxDQUFBLElBQUFZLElBQUE7VUFBQXdGLFFBQUEsQ0FBQTVELElBQUE7VUFBQTtRQUFBO1FBQWIwRCxJQUFJLEdBQUFELEtBQUEsQ0FBQS9HLEtBQUE7UUFBQSxLQUNUZ0gsSUFBSSxDQUFDUSxNQUFNLENBQUMsQ0FBQztVQUFBTixRQUFBLENBQUE1RCxJQUFBO1VBQUE7UUFBQTtRQUFBNEQsUUFBQSxDQUFBNUQsSUFBQTtRQUNmLE9BQU1tRSxnQkFBSSxDQUFDQyxJQUFJLENBQUNWLElBQUksQ0FBQ1csVUFBVSxFQUFFWCxJQUFJLENBQUNqRCxJQUFJLENBQUM7TUFBQTtRQUFBbUQsUUFBQSxDQUFBNUQsSUFBQTtRQUFBO01BQUE7UUFBQTRELFFBQUEsQ0FBQTVELElBQUE7UUFBQTtNQUFBO1FBQUE0RCxRQUFBLENBQUF6QyxJQUFBO1FBQUF5QyxRQUFBLENBQUFVLEVBQUEsR0FBQVYsUUFBQTtRQUFBSixTQUFBLENBQUFySSxDQUFBLENBQUF5SSxRQUFBLENBQUFVLEVBQUE7TUFBQTtRQUFBVixRQUFBLENBQUF6QyxJQUFBO1FBQUFxQyxTQUFBLENBQUEvRSxDQUFBO1FBQUEsT0FBQW1GLFFBQUEsQ0FBQW5DLE1BQUE7TUFBQTtNQUFBO1FBQUEsT0FBQW1DLFFBQUEsQ0FBQXRDLElBQUE7SUFBQTtFQUFBLEdBQUFNLE9BQUE7QUFBQTtBQU1uRCxTQUFXMkMsa0JBQWtCQSxDQUMzQkMsT0FBZSxFQUNmQyxPQUFnQixFQUNoQkMsb0JBQTZCLEVBQzdCQyxNQUFlO0VBQUEsSUFBQUMsSUFBQSxHQUFBMUksU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFDRyxDQUFDLENBQUM7SUFBQTRJLFFBQUEsR0FBQUYsSUFBQSxDQUFsQkcsR0FBRztJQUFIQSxHQUFHLEdBQUFELFFBQUEsY0FBRyxLQUFLLEdBQUFBLFFBQUE7RUFBQSxvQkFBQXhILG1CQUFBLEdBQUFvRCxJQUFBLFVBQUFzRSxRQUFBO0lBQUEsSUFBQUMsUUFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsUUFBQSxFQUFBQyxRQUFBLEVBQUFDLElBQUEsRUFBQUMsbUJBQUE7SUFBQSxPQUFBakksbUJBQUEsR0FBQTJCLElBQUEsVUFBQXVHLFNBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBdEUsSUFBQSxHQUFBc0UsU0FBQSxDQUFBekYsSUFBQTtRQUFBO1VBRVRpRixRQUFRLEdBQUdkLGdCQUFJLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxFQUFFQyxPQUFPLENBQUNpQixRQUFRLENBQUM7VUFDbkQsSUFBSWYsTUFBTSxFQUFFO1lBQ1ZNLFFBQVEsR0FBR2QsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDYSxRQUFRLEVBQUVOLE1BQU0sQ0FBQztVQUN4QztVQUNBLElBQUlELG9CQUFvQixFQUFFO1lBQ3hCTyxRQUFRLEdBQUdkLGdCQUFJLENBQUNDLElBQUksQ0FBQ2EsUUFBUSxFQUFFN0gsTUFBTSxDQUFDc0gsb0JBQW9CLENBQUMsQ0FBQztVQUM5RDtVQUFDUSxVQUFBLEdBQUFoRCwwQkFBQSxDQUNzQkwsYUFBYSxDQUFDb0QsUUFBUSxDQUFDO1VBQUFRLFNBQUEsQ0FBQXRFLElBQUE7VUFBQStELFVBQUEsQ0FBQXBHLENBQUE7UUFBQTtVQUFBLEtBQUFxRyxNQUFBLEdBQUFELFVBQUEsQ0FBQTFILENBQUEsSUFBQVksSUFBQTtZQUFBcUgsU0FBQSxDQUFBekYsSUFBQTtZQUFBO1VBQUE7VUFBbkNvRixRQUFRLEdBQUFELE1BQUEsQ0FBQXpJLEtBQUE7VUFDakIsSUFBSXFJLEdBQUcsRUFBRTtZQUNQWSxPQUFPLENBQUNaLEdBQUcsa0JBQUFhLE1BQUEsQ0FBa0JSLFFBQVEsV0FBRyxDQUFDO1VBQzNDO1VBRU1DLFFBQVEsR0FBR3hCLGNBQUUsQ0FBQ2dDLFlBQVksQ0FBQ1QsUUFBUSxFQUFFO1lBQUVVLFFBQVEsRUFBRTtVQUFPLENBQUMsQ0FBQztVQUMxRFIsSUFBTyxHQUFHUyxJQUFJLENBQUNDLEtBQUssQ0FBQ1gsUUFBUSxDQUFDO1VBRTlCRSxtQkFBbUIsR0FBR0gsUUFBUSxDQUFDYSxTQUFTLENBQUNiLFFBQVEsQ0FBQ2MsT0FBTyxDQUFDekIsT0FBTyxDQUFDaUIsUUFBUSxDQUFDLEdBQUdqQixPQUFPLENBQUNpQixRQUFRLENBQUN2SixNQUFNLENBQUM7VUFBQXNKLFNBQUEsQ0FBQXpGLElBQUE7VUFFNUcsT0FBTTtZQUNKc0YsSUFBSSxFQUFKQSxJQUFJO1lBQ0pDLG1CQUFtQixFQUFuQkEsbUJBQW1CO1lBQ25CWSxXQUFXLEVBQUV6QjtVQUNmLENBQUM7UUFBQTtVQUFBZSxTQUFBLENBQUF6RixJQUFBO1VBQUE7UUFBQTtVQUFBeUYsU0FBQSxDQUFBekYsSUFBQTtVQUFBO1FBQUE7VUFBQXlGLFNBQUEsQ0FBQXRFLElBQUE7VUFBQXNFLFNBQUEsQ0FBQW5CLEVBQUEsR0FBQW1CLFNBQUE7VUFBQVAsVUFBQSxDQUFBL0osQ0FBQSxDQUFBc0ssU0FBQSxDQUFBbkIsRUFBQTtRQUFBO1VBQUFtQixTQUFBLENBQUF0RSxJQUFBO1VBQUErRCxVQUFBLENBQUF6RyxDQUFBO1VBQUEsT0FBQWdILFNBQUEsQ0FBQWhFLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQWdFLFNBQUEsQ0FBQW5FLElBQUE7TUFBQTtJQUFBLEdBQUEwRCxPQUFBO0VBQUE7QUFBQTtBQUlFLFNBQVdvQix3QkFBd0JBLENBQ3hDNUIsT0FBZSxFQUNmNkIsT0FBMkI7RUFBQSxJQUMzQkMsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUE2RixTQUFBO0lBQUEsSUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLGNBQUE7SUFBQSxPQUFBcEosbUJBQUEsR0FBQTJCLElBQUEsVUFBQTBILFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBekYsSUFBQSxHQUFBeUYsU0FBQSxDQUFBNUcsSUFBQTtRQUFBO1VBQUF3RyxVQUFBLEdBQUF0RSwwQkFBQSxDQUdQcUMsa0JBQWtCLENBQW1CQyxPQUFPLEVBQUVxQyxrQkFBUSxDQUFDQyxLQUFLLEVBQUVULE9BQU8sRUFBRXhCLFNBQVMsRUFBRXlCLE9BQU8sQ0FBQztVQUFBTSxTQUFBLENBQUF6RixJQUFBO1VBQUFxRixVQUFBLENBQUExSCxDQUFBO1FBQUE7VUFBQSxLQUFBMkgsTUFBQSxHQUFBRCxVQUFBLENBQUFoSixDQUFBLElBQUFZLElBQUE7WUFBQXdJLFNBQUEsQ0FBQTVHLElBQUE7WUFBQTtVQUFBO1VBRHBGMEcsY0FBYyxHQUFBRCxNQUFBLENBQUEvSixLQUFBO1VBQUFrSyxTQUFBLENBQUE1RyxJQUFBO1VBR3ZCLE9BQU0wRyxjQUFjO1FBQUE7VUFBQUUsU0FBQSxDQUFBNUcsSUFBQTtVQUFBO1FBQUE7VUFBQTRHLFNBQUEsQ0FBQTVHLElBQUE7VUFBQTtRQUFBO1VBQUE0RyxTQUFBLENBQUF6RixJQUFBO1VBQUF5RixTQUFBLENBQUF0QyxFQUFBLEdBQUFzQyxTQUFBO1VBQUFKLFVBQUEsQ0FBQXJMLENBQUEsQ0FBQXlMLFNBQUEsQ0FBQXRDLEVBQUE7UUFBQTtVQUFBc0MsU0FBQSxDQUFBekYsSUFBQTtVQUFBcUYsVUFBQSxDQUFBL0gsQ0FBQTtVQUFBLE9BQUFtSSxTQUFBLENBQUFuRixNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUFtRixTQUFBLENBQUF0RixJQUFBO01BQUE7SUFBQSxHQUFBaUYsUUFBQTtFQUFBO0FBQUE7QUFJakIsU0FBV1EsZ0NBQWdDQSxDQUNoRHZDLE9BQWUsRUFDZjZCLE9BQTJCO0VBQUEsSUFDM0JDLE9BQU8sR0FBQXBLLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUEySSxTQUFBLEdBQUEzSSxTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQUEsb0JBQUFvQixtQkFBQSxHQUFBb0QsSUFBQSxVQUFBc0csU0FBQTtJQUFBLElBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxxQkFBQTtJQUFBLE9BQUE3SixtQkFBQSxHQUFBMkIsSUFBQSxVQUFBbUksVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsRyxJQUFBLEdBQUFrRyxTQUFBLENBQUFySCxJQUFBO1FBQUE7VUFBQWlILFVBQUEsR0FBQS9FLDBCQUFBLENBR1BxQyxrQkFBa0IsQ0FBMEJDLE9BQU8sRUFBRXFDLGtCQUFRLENBQUNTLE1BQU0sRUFBRWpCLE9BQU8sRUFBRXpELHNCQUFzQixFQUFFMEQsT0FBTyxDQUFDO1VBQUFlLFNBQUEsQ0FBQWxHLElBQUE7VUFBQThGLFVBQUEsQ0FBQW5JLENBQUE7UUFBQTtVQUFBLEtBQUFvSSxNQUFBLEdBQUFELFVBQUEsQ0FBQXpKLENBQUEsSUFBQVksSUFBQTtZQUFBaUosU0FBQSxDQUFBckgsSUFBQTtZQUFBO1VBQUE7VUFEekdtSCxxQkFBcUIsR0FBQUQsTUFBQSxDQUFBeEssS0FBQTtVQUFBMkssU0FBQSxDQUFBckgsSUFBQTtVQUc5QixPQUFNbUgscUJBQXFCO1FBQUE7VUFBQUUsU0FBQSxDQUFBckgsSUFBQTtVQUFBO1FBQUE7VUFBQXFILFNBQUEsQ0FBQXJILElBQUE7VUFBQTtRQUFBO1VBQUFxSCxTQUFBLENBQUFsRyxJQUFBO1VBQUFrRyxTQUFBLENBQUEvQyxFQUFBLEdBQUErQyxTQUFBO1VBQUFKLFVBQUEsQ0FBQTlMLENBQUEsQ0FBQWtNLFNBQUEsQ0FBQS9DLEVBQUE7UUFBQTtVQUFBK0MsU0FBQSxDQUFBbEcsSUFBQTtVQUFBOEYsVUFBQSxDQUFBeEksQ0FBQTtVQUFBLE9BQUE0SSxTQUFBLENBQUE1RixNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUE0RixTQUFBLENBQUEvRixJQUFBO01BQUE7SUFBQSxHQUFBMEYsUUFBQTtFQUFBO0FBQUE7QUFJeEIsU0FBV2pGLHlDQUF5Q0EsQ0FDekR5QyxPQUFlLEVBQ2Y2QixPQUEyQjtFQUFBLElBQUFwQixRQUFBLEVBQUFzQyxVQUFBLEVBQUFDLE1BQUEsRUFBQXBDLFFBQUEsRUFBQXFDLGNBQUEsRUFBQXBDLFFBQUEsRUFBQUMsSUFBQTtFQUFBLE9BQUFoSSxtQkFBQSxHQUFBMkIsSUFBQSxVQUFBeUksMkNBQUFDLFNBQUE7SUFBQSxrQkFBQUEsU0FBQSxDQUFBeEcsSUFBQSxHQUFBd0csU0FBQSxDQUFBM0gsSUFBQTtNQUFBO1FBRXZCaUYsUUFBUSxHQUFHZCxnQkFBSSxDQUFDQyxJQUFJLENBQUNJLE9BQU8sRUFBRXZCLFlBQVksRUFBRUMscUJBQXFCLENBQUM7UUFDdEUsSUFBSW1ELE9BQU8sRUFBRTtVQUNYcEIsUUFBUSxHQUFHZCxnQkFBSSxDQUFDQyxJQUFJLENBQUNhLFFBQVEsRUFBRW9CLE9BQU8sQ0FBQzVELFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEQ7UUFBQzhFLFVBQUEsR0FBQXJGLDBCQUFBLENBQ3NCTCxhQUFhLENBQUNvRCxRQUFRLENBQUM7UUFBQTBDLFNBQUEsQ0FBQXhHLElBQUE7UUFBQW9HLFVBQUEsQ0FBQXpJLENBQUE7TUFBQTtRQUFBLEtBQUEwSSxNQUFBLEdBQUFELFVBQUEsQ0FBQS9KLENBQUEsSUFBQVksSUFBQTtVQUFBdUosU0FBQSxDQUFBM0gsSUFBQTtVQUFBO1FBQUE7UUFBbkNvRixRQUFRLEdBQUFvQyxNQUFBLENBQUE5SyxLQUFBO1FBQ1grSyxjQUFjLEdBQUd0RCxnQkFBSSxDQUFDNkIsS0FBSyxDQUFDWixRQUFRLENBQUM7UUFBQSxNQUN2Q3FDLGNBQWMsQ0FBQ0csSUFBSSxLQUFLeEUsc0JBQXNCO1VBQUF1RSxTQUFBLENBQUEzSCxJQUFBO1VBQUE7UUFBQTtRQUMxQ3FGLFFBQVEsR0FBR3hCLGNBQUUsQ0FBQ2dDLFlBQVksQ0FBQ1QsUUFBUSxFQUFFO1VBQUVVLFFBQVEsRUFBRTtRQUFPLENBQUMsQ0FBQztRQUMxRFIsSUFBSSxHQUFHUyxJQUFJLENBQUNDLEtBQUssQ0FBQ1gsUUFBUSxDQUFDO1FBQUFzQyxTQUFBLENBQUEzSCxJQUFBO1FBQ2pDLE9BQU07VUFDSnNGLElBQUksRUFBSkE7UUFDRixDQUFDO01BQUE7UUFBQXFDLFNBQUEsQ0FBQTNILElBQUE7UUFBQTtNQUFBO1FBQUEySCxTQUFBLENBQUEzSCxJQUFBO1FBQUE7TUFBQTtRQUFBMkgsU0FBQSxDQUFBeEcsSUFBQTtRQUFBd0csU0FBQSxDQUFBckQsRUFBQSxHQUFBcUQsU0FBQTtRQUFBSixVQUFBLENBQUFwTSxDQUFBLENBQUF3TSxTQUFBLENBQUFyRCxFQUFBO01BQUE7UUFBQXFELFNBQUEsQ0FBQXhHLElBQUE7UUFBQW9HLFVBQUEsQ0FBQTlJLENBQUE7UUFBQSxPQUFBa0osU0FBQSxDQUFBbEcsTUFBQTtNQUFBO01BQUE7UUFBQSxPQUFBa0csU0FBQSxDQUFBckcsSUFBQTtJQUFBO0VBQUEsR0FBQVEsUUFBQTtBQUFBO0FBS0EsU0FBV0csMkNBQTJDQSxDQUMzRHVDLE9BQWUsRUFDZjZCLE9BQTJCO0VBQUEsSUFBQXBCLFFBQUEsRUFBQTRDLFVBQUEsRUFBQUMsTUFBQSxFQUFBMUMsUUFBQSxFQUFBcUMsY0FBQSxFQUFBcEMsUUFBQSxFQUFBQyxJQUFBO0VBQUEsT0FBQWhJLG1CQUFBLEdBQUEyQixJQUFBLFVBQUE4SSw2Q0FBQUMsU0FBQTtJQUFBLGtCQUFBQSxTQUFBLENBQUE3RyxJQUFBLEdBQUE2RyxTQUFBLENBQUFoSSxJQUFBO01BQUE7UUFFdkJpRixRQUFRLEdBQUdkLGdCQUFJLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxFQUFFbkIsY0FBYyxDQUFDO1FBQ2pELElBQUlnRCxPQUFPLEVBQUU7VUFDWHBCLFFBQVEsR0FBR2QsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDYSxRQUFRLEVBQUVvQixPQUFPLENBQUM1RCxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BEO1FBQUNvRixVQUFBLEdBQUEzRiwwQkFBQSxDQUNzQkwsYUFBYSxDQUFDb0QsUUFBUSxDQUFDO1FBQUErQyxTQUFBLENBQUE3RyxJQUFBO1FBQUEwRyxVQUFBLENBQUEvSSxDQUFBO01BQUE7UUFBQSxLQUFBZ0osTUFBQSxHQUFBRCxVQUFBLENBQUFySyxDQUFBLElBQUFZLElBQUE7VUFBQTRKLFNBQUEsQ0FBQWhJLElBQUE7VUFBQTtRQUFBO1FBQW5Db0YsUUFBUSxHQUFBMEMsTUFBQSxDQUFBcEwsS0FBQTtRQUNYK0ssY0FBYyxHQUFHdEQsZ0JBQUksQ0FBQzZCLEtBQUssQ0FBQ1osUUFBUSxDQUFDO1FBQUEsTUFDdkNxQyxjQUFjLENBQUNHLElBQUksS0FBS3hFLHNCQUFzQjtVQUFBNEUsU0FBQSxDQUFBaEksSUFBQTtVQUFBO1FBQUE7UUFDMUNxRixRQUFRLEdBQUd4QixjQUFFLENBQUNnQyxZQUFZLENBQUNULFFBQVEsRUFBRTtVQUFFVSxRQUFRLEVBQUU7UUFBTyxDQUFDLENBQUM7UUFDMURSLElBQUksR0FBR1MsSUFBSSxDQUFDQyxLQUFLLENBQUNYLFFBQVEsQ0FBQztRQUFBMkMsU0FBQSxDQUFBaEksSUFBQTtRQUNqQyxPQUFNO1VBQ0pzRixJQUFJLEVBQUpBO1FBQ0YsQ0FBQztNQUFBO1FBQUEwQyxTQUFBLENBQUFoSSxJQUFBO1FBQUE7TUFBQTtRQUFBZ0ksU0FBQSxDQUFBaEksSUFBQTtRQUFBO01BQUE7UUFBQWdJLFNBQUEsQ0FBQTdHLElBQUE7UUFBQTZHLFNBQUEsQ0FBQTFELEVBQUEsR0FBQTBELFNBQUE7UUFBQUgsVUFBQSxDQUFBMU0sQ0FBQSxDQUFBNk0sU0FBQSxDQUFBMUQsRUFBQTtNQUFBO1FBQUEwRCxTQUFBLENBQUE3RyxJQUFBO1FBQUEwRyxVQUFBLENBQUFwSixDQUFBO1FBQUEsT0FBQXVKLFNBQUEsQ0FBQXZHLE1BQUE7TUFBQTtNQUFBO1FBQUEsT0FBQXVHLFNBQUEsQ0FBQTFHLElBQUE7SUFBQTtFQUFBLEdBQUFVLFFBQUE7QUFBQTtBQUtBLFNBQVdpRyxzQ0FBc0NBLENBQ3REekQsT0FBZSxFQUNmNkIsT0FBMkI7RUFBQSxJQUMzQkMsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUF3SCxTQUFBO0lBQUEsSUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLGlCQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxPQUFBLEVBQUFDLGFBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLFlBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsYUFBQSxFQUFBQyxTQUFBLEVBQUFDLGNBQUEsRUFBQUMsU0FBQTtJQUFBLE9BQUE3TCxtQkFBQSxHQUFBMkIsSUFBQSxVQUFBbUssVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsSSxJQUFBLEdBQUFrSSxTQUFBLENBQUFySixJQUFBO1FBQUE7VUFBQW1JLFVBQUEsR0FBQWpHLDBCQUFBLENBRThCNkUsZ0NBQWdDLENBQUN2QyxPQUFPLEVBQUU2QixPQUFPLEVBQUVDLE9BQU8sQ0FBQztVQUFBK0MsU0FBQSxDQUFBbEksSUFBQTtVQUFBZ0gsVUFBQSxDQUFBckosQ0FBQTtRQUFBO1VBQUEsS0FBQXNKLE1BQUEsR0FBQUQsVUFBQSxDQUFBM0ssQ0FBQSxJQUFBWSxJQUFBO1lBQUFpTCxTQUFBLENBQUFySixJQUFBO1lBQUE7VUFBQTtVQUFsRnFJLGlCQUFpQixHQUFBRCxNQUFBLENBQUExTCxLQUFBLENBQXZCNEksSUFBSTtVQUFBZ0QsVUFBQSxHQUFBcEcsMEJBQUEsQ0FDT21HLGlCQUFpQixDQUFDaUIsUUFBUTtVQUFBRCxTQUFBLENBQUFsSSxJQUFBO1VBQUFtSCxVQUFBLENBQUF4SixDQUFBO1FBQUE7VUFBQSxLQUFBeUosTUFBQSxHQUFBRCxVQUFBLENBQUE5SyxDQUFBLElBQUFZLElBQUE7WUFBQWlMLFNBQUEsQ0FBQXJKLElBQUE7WUFBQTtVQUFBO1VBQXJDd0ksT0FBTyxHQUFBRCxNQUFBLENBQUE3TCxLQUFBO1VBQ1YrTCxhQUFhLEdBQUdELE9BQU8sQ0FBQ2Usa0JBQWtCLENBQzdDM04sTUFBTSxDQUFDLFVBQUE0TixnQkFBZ0I7WUFBQSxPQUFJQSxnQkFBZ0IsQ0FBQ0MsU0FBUyxLQUFLLE9BQU87VUFBQSxFQUFDO1VBQUFmLFVBQUEsR0FBQXhHLDBCQUFBLENBQzFDdUcsYUFBYTtVQUFBWSxTQUFBLENBQUFsSSxJQUFBO1VBQUF1SCxVQUFBLENBQUE1SixDQUFBO1FBQUE7VUFBQSxLQUFBNkosTUFBQSxHQUFBRCxVQUFBLENBQUFsTCxDQUFBLElBQUFZLElBQUE7WUFBQWlMLFNBQUEsQ0FBQXJKLElBQUE7WUFBQTtVQUFBO1VBQTdCNEksWUFBWSxHQUFBRCxNQUFBLENBQUFqTSxLQUFBO1VBQUFtTSxVQUFBLEdBQUEzRywwQkFBQSxDQUNEMEcsWUFBWSxDQUFDYyxNQUFNO1VBQUFMLFNBQUEsQ0FBQWxJLElBQUE7VUFBQTBILFVBQUEsQ0FBQS9KLENBQUE7UUFBQTtVQUFBLEtBQUFnSyxNQUFBLEdBQUFELFVBQUEsQ0FBQXJMLENBQUEsSUFBQVksSUFBQTtZQUFBaUwsU0FBQSxDQUFBckosSUFBQTtZQUFBO1VBQUE7VUFBNUIrSSxLQUFLLEdBQUFELE1BQUEsQ0FBQXBNLEtBQUE7VUFDUnNNLGFBQWEsR0FBQS9NLGFBQUE7WUFDakIwTixjQUFjLEVBQUV0QixpQkFBaUIsQ0FBQ3VCLE1BQU07WUFDeENDLGlCQUFpQixFQUFFeEIsaUJBQWlCLENBQUN5QixHQUFHO1lBQ3hDQywrQkFBK0IsRUFBRTFCLGlCQUFpQixDQUFDMEIsK0JBQStCO1lBQ2xGQyxZQUFZLEVBQUV4QixPQUFPLENBQUN3QixZQUFZO1lBQ2xDQyxlQUFlLEVBQUV6QixPQUFPLENBQUMwQixPQUFPO1lBQ2hDQyxpQkFBaUIsRUFBRXZCLFlBQVksQ0FBQ3VCO1VBQWlCLEdBQzlDcEIsS0FBSztVQUVKRSxTQUFpRCxHQUFHO1lBQ3hEM0QsSUFBSSxFQUFFMEQ7VUFDUixDQUFDO1VBQ0QsSUFBSUQsS0FBSyxDQUFDZSxHQUFHLEVBQUU7WUFDUFgsU0FBUyxHQUFHaEYsZ0JBQUksQ0FBQzZCLEtBQUssQ0FBQytDLEtBQUssQ0FBQ2UsR0FBRyxDQUFDLENBQUNySixJQUFJO1lBQzVDd0ksU0FBUyxDQUFDMUQsbUJBQW1CLEdBQ3pCcEIsZ0JBQUksQ0FBQ0MsSUFBSSxJQUFBd0IsTUFBQSxFQUFBc0QsY0FBQSxHQUFJSCxLQUFLLENBQUMxQyxPQUFPLGNBQUE2QyxjQUFBLGNBQUFBLGNBQUEsR0FBSWtCLDJCQUFpQixHQUFJakIsU0FBUyxLQUFBdkQsTUFBQSxDQUFLdUQsU0FBUyxTQUFNLENBQUM7VUFDdkY7VUFBQ0UsU0FBQSxDQUFBckosSUFBQTtVQUNELE9BQU1pSixTQUFTO1FBQUE7VUFBQUksU0FBQSxDQUFBckosSUFBQTtVQUFBO1FBQUE7VUFBQXFKLFNBQUEsQ0FBQXJKLElBQUE7VUFBQTtRQUFBO1VBQUFxSixTQUFBLENBQUFsSSxJQUFBO1VBQUFrSSxTQUFBLENBQUEvRSxFQUFBLEdBQUErRSxTQUFBO1VBQUFSLFVBQUEsQ0FBQTFOLENBQUEsQ0FBQWtPLFNBQUEsQ0FBQS9FLEVBQUE7UUFBQTtVQUFBK0UsU0FBQSxDQUFBbEksSUFBQTtVQUFBMEgsVUFBQSxDQUFBcEssQ0FBQTtVQUFBLE9BQUE0SyxTQUFBLENBQUE1SCxNQUFBO1FBQUE7VUFBQTRILFNBQUEsQ0FBQXJKLElBQUE7VUFBQTtRQUFBO1VBQUFxSixTQUFBLENBQUFySixJQUFBO1VBQUE7UUFBQTtVQUFBcUosU0FBQSxDQUFBbEksSUFBQTtVQUFBa0ksU0FBQSxDQUFBZ0IsRUFBQSxHQUFBaEIsU0FBQTtVQUFBWCxVQUFBLENBQUF2TixDQUFBLENBQUFrTyxTQUFBLENBQUFnQixFQUFBO1FBQUE7VUFBQWhCLFNBQUEsQ0FBQWxJLElBQUE7VUFBQXVILFVBQUEsQ0FBQWpLLENBQUE7VUFBQSxPQUFBNEssU0FBQSxDQUFBNUgsTUFBQTtRQUFBO1VBQUE0SCxTQUFBLENBQUFySixJQUFBO1VBQUE7UUFBQTtVQUFBcUosU0FBQSxDQUFBckosSUFBQTtVQUFBO1FBQUE7VUFBQXFKLFNBQUEsQ0FBQWxJLElBQUE7VUFBQWtJLFNBQUEsQ0FBQWlCLEVBQUEsR0FBQWpCLFNBQUE7VUFBQWYsVUFBQSxDQUFBbk4sQ0FBQSxDQUFBa08sU0FBQSxDQUFBaUIsRUFBQTtRQUFBO1VBQUFqQixTQUFBLENBQUFsSSxJQUFBO1VBQUFtSCxVQUFBLENBQUE3SixDQUFBO1VBQUEsT0FBQTRLLFNBQUEsQ0FBQTVILE1BQUE7UUFBQTtVQUFBNEgsU0FBQSxDQUFBckosSUFBQTtVQUFBO1FBQUE7VUFBQXFKLFNBQUEsQ0FBQXJKLElBQUE7VUFBQTtRQUFBO1VBQUFxSixTQUFBLENBQUFsSSxJQUFBO1VBQUFrSSxTQUFBLENBQUFrQixFQUFBLEdBQUFsQixTQUFBO1VBQUFsQixVQUFBLENBQUFoTixDQUFBLENBQUFrTyxTQUFBLENBQUFrQixFQUFBO1FBQUE7VUFBQWxCLFNBQUEsQ0FBQWxJLElBQUE7VUFBQWdILFVBQUEsQ0FBQTFKLENBQUE7VUFBQSxPQUFBNEssU0FBQSxDQUFBNUgsTUFBQTtRQUFBO1FBQUE7VUFBQSxPQUFBNEgsU0FBQSxDQUFBL0gsSUFBQTtNQUFBO0lBQUEsR0FBQTRHLFFBQUE7RUFBQTtBQUFBO0FBT2xCLFNBQVNzQyxxQkFBcUJBLENBQ25DaEcsT0FBZSxFQUNmaUcsb0JBQTRCLEVBQ0E7RUFDNUIsSUFBTUMsZUFBZSxHQUFHdkcsZ0JBQUksQ0FBQzZCLEtBQUssQ0FBQ3lFLG9CQUFvQixDQUFDO0VBQ3hELElBQU1FLGFBQWEsTUFBQS9FLE1BQUEsQ0FBTThFLGVBQWUsQ0FBQ2pLLElBQUksVUFBTztFQUNwRCxJQUFNbUssYUFBYSxHQUFHekcsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDSSxPQUFPLEVBQUV2QixZQUFZLEVBQUVFLHdCQUF3QixFQUFFdUgsZUFBZSxDQUFDRyxHQUFHLEVBQUVGLGFBQWEsQ0FBQztFQUNwSCxJQUFJLENBQUM5RyxjQUFFLENBQUNDLFVBQVUsQ0FBQzhHLGFBQWEsQ0FBQyxFQUFFO0lBQ2pDLE9BQU87TUFBRXRGLElBQUksRUFBRTtJQUFLLENBQUM7RUFDdkI7RUFDQSxJQUFNd0YsU0FBUyxHQUFHakgsY0FBRSxDQUFDZ0MsWUFBWSxDQUFDK0UsYUFBYSxFQUFFO0lBQUU5RSxRQUFRLEVBQUU7RUFBTyxDQUFDLENBQUM7RUFDdEUsT0FBTztJQUFFUixJQUFJLEVBQUVTLElBQUksQ0FBQ0MsS0FBSyxDQUFDOEUsU0FBUztFQUFFLENBQUM7QUFDeEM7QUFFTyxTQUFXQyx1QkFBdUJBLENBQ3ZDdkcsT0FBZTtFQUFBLElBQ2Y4QixPQUFPLEdBQUFwSyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBMkksU0FBQSxHQUFBM0ksU0FBQSxNQUFHLENBQUMsQ0FBQztFQUFBLG9CQUFBb0IsbUJBQUEsR0FBQW9ELElBQUEsVUFBQXNLLFNBQUE7SUFBQSxJQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsYUFBQTtJQUFBLE9BQUE3TixtQkFBQSxHQUFBMkIsSUFBQSxVQUFBbU0sVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsSyxJQUFBLEdBQUFrSyxTQUFBLENBQUFyTCxJQUFBO1FBQUE7VUFBQWlMLFVBQUEsR0FBQS9JLDBCQUFBLENBRWdCcUMsa0JBQWtCLENBQWtCQyxPQUFPLEVBQUVxQyxrQkFBUSxDQUFDeUUsSUFBSSxFQUFFekcsU0FBUyxFQUFFOUIsc0JBQXNCLEVBQUV1RCxPQUFPLENBQUM7VUFBQStFLFNBQUEsQ0FBQWxLLElBQUE7VUFBQThKLFVBQUEsQ0FBQW5NLENBQUE7UUFBQTtVQUFBLEtBQUFvTSxNQUFBLEdBQUFELFVBQUEsQ0FBQXpOLENBQUEsSUFBQVksSUFBQTtZQUFBaU4sU0FBQSxDQUFBckwsSUFBQTtZQUFBO1VBQUE7VUFBeEhtTCxhQUFhLEdBQUFELE1BQUEsQ0FBQXhPLEtBQUE7VUFBQTJPLFNBQUEsQ0FBQXJMLElBQUE7VUFDdEIsT0FBTW1MLGFBQWE7UUFBQTtVQUFBRSxTQUFBLENBQUFyTCxJQUFBO1VBQUE7UUFBQTtVQUFBcUwsU0FBQSxDQUFBckwsSUFBQTtVQUFBO1FBQUE7VUFBQXFMLFNBQUEsQ0FBQWxLLElBQUE7VUFBQWtLLFNBQUEsQ0FBQS9HLEVBQUEsR0FBQStHLFNBQUE7VUFBQUosVUFBQSxDQUFBOVAsQ0FBQSxDQUFBa1EsU0FBQSxDQUFBL0csRUFBQTtRQUFBO1VBQUErRyxTQUFBLENBQUFsSyxJQUFBO1VBQUE4SixVQUFBLENBQUF4TSxDQUFBO1VBQUEsT0FBQTRNLFNBQUEsQ0FBQTVKLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQTRKLFNBQUEsQ0FBQS9KLElBQUE7TUFBQTtJQUFBLEdBQUEwSixRQUFBO0VBQUE7QUFBQTtBQUloQixTQUFXTyxzQkFBc0JBLENBQ3RDL0csT0FBZSxFQUNmMkIsV0FBbUI7RUFBQSxJQUNuQkcsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUE4SyxTQUFBQyxrQkFBQTtJQUFBLElBQUFDLHVCQUFBLEVBQUFDLG9CQUFBLEVBQUFDLFdBQUEsRUFBQUMsT0FBQSxFQUFBQyxxQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxZQUFBLEVBQUFDLHFCQUFBO0lBQUEsT0FBQTNPLG1CQUFBLEdBQUEyQixJQUFBLFVBQUFpTixVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQWhMLElBQUEsR0FBQWdMLFNBQUEsQ0FBQW5NLElBQUE7UUFBQTtVQUVOMEwsdUJBQXVCLElBQUFELGtCQUFBLEdBQUdXLHdCQUFZLENBQ3pDQyxJQUFJLENBQUMsVUFBQUMsZUFBZTtZQUFBLE9BQUlBLGVBQWUsQ0FBQ0MsTUFBTSxLQUFLcEcsV0FBVztVQUFBLEVBQUMsY0FBQXNGLGtCQUFBLHVCQURsQ0Esa0JBQUEsQ0FFNUJlLFVBQVU7VUFDUmIsb0JBQW9CLEdBQUcsSUFBSWMsSUFBSSxDQUFDZix1QkFBd0IsQ0FBQztVQUFBRSxXQUFBLEdBQUExSiwwQkFBQSxDQUNwQ3FDLGtCQUFrQixDQUFpQkMsT0FBTyxFQUFFcUMsa0JBQVEsQ0FBQ3lFLElBQUksRUFBRXpHLFNBQVMsRUFBRTdCLHFCQUFxQixFQUFFc0QsT0FBTyxDQUFDO1VBQUE2RixTQUFBLENBQUFoTCxJQUFBO1VBQUF5SyxXQUFBLENBQUE5TSxDQUFBO1FBQUE7VUFBQSxLQUFBK00sT0FBQSxHQUFBRCxXQUFBLENBQUFwTyxDQUFBLElBQUFZLElBQUE7WUFBQStOLFNBQUEsQ0FBQW5NLElBQUE7WUFBQTtVQUFBO1VBQXJIZ00sWUFBWSxHQUFBSCxPQUFBLENBQUFuUCxLQUFBO1VBQ2Z1UCxxQkFBcUIsR0FBRyxDQUFBSCxxQkFBQSxHQUFBRSxZQUFZLENBQUMxRyxJQUFJLENBQUNvSCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsY0FBQVoscUJBQUEsZUFBckNBLHFCQUFBLENBQXVDYSxRQUFRLEdBQzNFLElBQUlGLElBQUksRUFBQVYsc0JBQUEsR0FBQ0MsWUFBWSxDQUFDMUcsSUFBSSxDQUFDb0gsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQUFYLHNCQUFBLHVCQUFyQ0Esc0JBQUEsQ0FBdUNZLFFBQVEsQ0FBQyxHQUFHLElBQUk7VUFBQSxNQUM5RFYscUJBQXFCLElBQUlBLHFCQUFxQixHQUFHTixvQkFBb0I7WUFBQVEsU0FBQSxDQUFBbk0sSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBbU0sU0FBQSxDQUFBdE4sTUFBQTtRQUFBO1VBQUFzTixTQUFBLENBQUFuTSxJQUFBO1VBR3pFLE9BQU1nTSxZQUFZO1FBQUE7VUFBQUcsU0FBQSxDQUFBbk0sSUFBQTtVQUFBO1FBQUE7VUFBQW1NLFNBQUEsQ0FBQW5NLElBQUE7VUFBQTtRQUFBO1VBQUFtTSxTQUFBLENBQUFoTCxJQUFBO1VBQUFnTCxTQUFBLENBQUE3SCxFQUFBLEdBQUE2SCxTQUFBO1VBQUFQLFdBQUEsQ0FBQXpRLENBQUEsQ0FBQWdSLFNBQUEsQ0FBQTdILEVBQUE7UUFBQTtVQUFBNkgsU0FBQSxDQUFBaEwsSUFBQTtVQUFBeUssV0FBQSxDQUFBbk4sQ0FBQTtVQUFBLE9BQUEwTixTQUFBLENBQUExSyxNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUEwSyxTQUFBLENBQUE3SyxJQUFBO01BQUE7SUFBQSxHQUFBa0ssUUFBQTtFQUFBO0FBQUE7QUFJZixTQUFXb0IsNkJBQTZCQSxDQUM3Q3BJLE9BQWU7RUFBQSxJQUNmOEIsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUFtTSxTQUFBO0lBQUEsSUFBQUMsV0FBQSxFQUFBQyxPQUFBLEVBQUFDLG1CQUFBO0lBQUEsT0FBQTFQLG1CQUFBLEdBQUEyQixJQUFBLFVBQUFnTyxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQS9MLElBQUEsR0FBQStMLFNBQUEsQ0FBQWxOLElBQUE7UUFBQTtVQUFBOE0sV0FBQSxHQUFBNUssMEJBQUEsQ0FFc0JxQyxrQkFBa0IsQ0FBd0JDLE9BQU8sRUFBRXFDLGtCQUFRLENBQUN5RSxJQUFJLEVBQUV6RyxTQUFTLEVBQUUvQiw0QkFBNEIsRUFBRXdELE9BQU8sQ0FBQztVQUFBNEcsU0FBQSxDQUFBL0wsSUFBQTtVQUFBMkwsV0FBQSxDQUFBaE8sQ0FBQTtRQUFBO1VBQUEsS0FBQWlPLE9BQUEsR0FBQUQsV0FBQSxDQUFBdFAsQ0FBQSxJQUFBWSxJQUFBO1lBQUE4TyxTQUFBLENBQUFsTixJQUFBO1lBQUE7VUFBQTtVQUExSWdOLG1CQUFtQixHQUFBRCxPQUFBLENBQUFyUSxLQUFBO1VBQUF3USxTQUFBLENBQUFsTixJQUFBO1VBQzVCLE9BQU1nTixtQkFBbUI7UUFBQTtVQUFBRSxTQUFBLENBQUFsTixJQUFBO1VBQUE7UUFBQTtVQUFBa04sU0FBQSxDQUFBbE4sSUFBQTtVQUFBO1FBQUE7VUFBQWtOLFNBQUEsQ0FBQS9MLElBQUE7VUFBQStMLFNBQUEsQ0FBQTVJLEVBQUEsR0FBQTRJLFNBQUE7VUFBQUosV0FBQSxDQUFBM1IsQ0FBQSxDQUFBK1IsU0FBQSxDQUFBNUksRUFBQTtRQUFBO1VBQUE0SSxTQUFBLENBQUEvTCxJQUFBO1VBQUEyTCxXQUFBLENBQUFyTyxDQUFBO1VBQUEsT0FBQXlPLFNBQUEsQ0FBQXpMLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQXlMLFNBQUEsQ0FBQTVMLElBQUE7TUFBQTtJQUFBLEdBQUF1TCxRQUFBO0VBQUE7QUFBQTtBQUl0QixTQUFXTSxzQkFBc0JBLENBQ3RDM0ksT0FBZSxFQUNmMkIsV0FBbUI7RUFBQSxJQUNuQkcsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUEwTSxTQUFBO0lBQUEsSUFBQUMsV0FBQSxFQUFBQyxPQUFBLEVBQUFDLFlBQUE7SUFBQSxPQUFBalEsbUJBQUEsR0FBQTJCLElBQUEsVUFBQXVPLFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBdE0sSUFBQSxHQUFBc00sU0FBQSxDQUFBek4sSUFBQTtRQUFBO1VBQUFxTixXQUFBLEdBQUFuTCwwQkFBQSxDQUdQcUMsa0JBQWtCLENBQWlCQyxPQUFPLEVBQUVxQyxrQkFBUSxDQUFDNkcsU0FBUyxFQUFFdkgsV0FBVyxFQUFFdEIsU0FBUyxFQUFFeUIsT0FBTyxDQUFDO1VBQUFtSCxTQUFBLENBQUF0TSxJQUFBO1VBQUFrTSxXQUFBLENBQUF2TyxDQUFBO1FBQUE7VUFBQSxLQUFBd08sT0FBQSxHQUFBRCxXQUFBLENBQUE3UCxDQUFBLElBQUFZLElBQUE7WUFBQXFQLFNBQUEsQ0FBQXpOLElBQUE7WUFBQTtVQUFBO1VBRDFGdU4sWUFBWSxHQUFBRCxPQUFBLENBQUE1USxLQUFBO1VBQUErUSxTQUFBLENBQUF6TixJQUFBO1VBR3JCLE9BQU11TixZQUFZO1FBQUE7VUFBQUUsU0FBQSxDQUFBek4sSUFBQTtVQUFBO1FBQUE7VUFBQXlOLFNBQUEsQ0FBQXpOLElBQUE7VUFBQTtRQUFBO1VBQUF5TixTQUFBLENBQUF0TSxJQUFBO1VBQUFzTSxTQUFBLENBQUFuSixFQUFBLEdBQUFtSixTQUFBO1VBQUFKLFdBQUEsQ0FBQWxTLENBQUEsQ0FBQXNTLFNBQUEsQ0FBQW5KLEVBQUE7UUFBQTtVQUFBbUosU0FBQSxDQUFBdE0sSUFBQTtVQUFBa00sV0FBQSxDQUFBNU8sQ0FBQTtVQUFBLE9BQUFnUCxTQUFBLENBQUFoTSxNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUFnTSxTQUFBLENBQUFuTSxJQUFBO01BQUE7SUFBQSxHQUFBOEwsUUFBQTtFQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=