@tricoteuses/assemblee 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/lib/api.js +3 -9
  2. package/lib/api.mjs +4 -5
  3. package/lib/bugs/acteur-00010/plugin.test.js +3 -50
  4. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  5. package/lib/bugs/acteur-00010.js +2 -57
  6. package/lib/bugs/acteur-00010.mjs +1 -6
  7. package/lib/bugs/agenda-00002/plugin.test.js +3 -53
  8. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
  9. package/lib/bugs/agenda-00002.js +3 -148
  10. package/lib/bugs/agenda-00002.mjs +1 -28
  11. package/lib/bugs/agenda-00008/plugin.test.js +3 -52
  12. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  13. package/lib/bugs/agenda-00008.js +2 -61
  14. package/lib/bugs/agenda-00008.mjs +1 -5
  15. package/lib/bugs/agenda-00011/plugin.test.js +5 -99
  16. package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
  17. package/lib/bugs/agenda-00011.js +4 -105
  18. package/lib/bugs/agenda-00011.mjs +3 -29
  19. package/lib/bugs.js +3 -164
  20. package/lib/bugs.mjs +1 -26
  21. package/lib/cleaners/actes_legislatifs.js +11 -115
  22. package/lib/cleaners/actes_legislatifs.mjs +7 -82
  23. package/lib/cleaners/acteurs.js +12 -92
  24. package/lib/cleaners/acteurs.mjs +7 -38
  25. package/lib/cleaners/amendements.js +10 -103
  26. package/lib/cleaners/amendements.mjs +4 -58
  27. package/lib/cleaners/documents.js +5 -67
  28. package/lib/cleaners/documents.mjs +1 -37
  29. package/lib/cleaners/dossiers_legislatifs.js +5 -61
  30. package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
  31. package/lib/cleaners/index.js +1 -9
  32. package/lib/cleaners/index.mjs +1 -1
  33. package/lib/cleaners/organes.js +1 -33
  34. package/lib/cleaners/organes.mjs +1 -17
  35. package/lib/cleaners/reunions.js +4 -119
  36. package/lib/cleaners/reunions.mjs +1 -64
  37. package/lib/cleaners/scrutins.js +10 -102
  38. package/lib/cleaners/scrutins.mjs +1 -48
  39. package/lib/cleaners/xml.js +8 -42
  40. package/lib/cleaners/xml.mjs +6 -8
  41. package/lib/datasets.js +14 -113
  42. package/lib/datasets.mjs +6 -46
  43. package/lib/dates.js +7 -37
  44. package/lib/dates.mjs +9 -14
  45. package/lib/dossiers_legislatifs.js +6 -68
  46. package/lib/dossiers_legislatifs.mjs +5 -36
  47. package/lib/file_systems.js +56 -139
  48. package/lib/file_systems.mjs +1 -9
  49. package/lib/git.js +4 -53
  50. package/lib/git.mjs +1 -12
  51. package/lib/index.js +1 -15
  52. package/lib/index.mjs +1 -1
  53. package/lib/inserters.js +23 -146
  54. package/lib/inserters.mjs +6 -87
  55. package/lib/loaders.js +44 -316
  56. package/lib/loaders.mjs +12 -135
  57. package/lib/organes.js +1 -7
  58. package/lib/organes.mjs +1 -4
  59. package/lib/parsers/documents.js +22 -151
  60. package/lib/parsers/documents.mjs +19 -81
  61. package/lib/parsers/index.js +1 -4
  62. package/lib/parsers/index.mjs +1 -1
  63. package/lib/parsers/recherche_amendements.js +302 -527
  64. package/lib/parsers/recherche_amendements.mjs +8 -31
  65. package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
  66. package/lib/raw_types/acteurs_et_organes.js +5 -124
  67. package/lib/raw_types/acteurs_et_organes.mjs +5 -105
  68. package/lib/raw_types/agendas.js +6 -89
  69. package/lib/raw_types/agendas.mjs +9 -65
  70. package/lib/raw_types/amendements.d.ts +2 -0
  71. package/lib/raw_types/amendements.js +10 -90
  72. package/lib/raw_types/amendements.mjs +11 -69
  73. package/lib/raw_types/dossiers_legislatifs.js +6 -96
  74. package/lib/raw_types/dossiers_legislatifs.mjs +6 -73
  75. package/lib/raw_types/scrutins.js +6 -81
  76. package/lib/raw_types/scrutins.mjs +9 -57
  77. package/lib/scripts/bugs_helper.js +2 -181
  78. package/lib/scripts/bugs_helper.mjs +2 -39
  79. package/lib/scripts/clean_data.js +27 -143
  80. package/lib/scripts/clean_data.mjs +15 -34
  81. package/lib/scripts/clean_reorganized_data.js +76 -240
  82. package/lib/scripts/clean_reorganized_data.mjs +36 -99
  83. package/lib/scripts/diff_amendements.js +19 -79
  84. package/lib/scripts/diff_amendements.mjs +17 -35
  85. package/lib/scripts/document_dossiers_legislatifs.js +17 -142
  86. package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
  87. package/lib/scripts/get_today_reunions.js +4 -22
  88. package/lib/scripts/get_today_reunions.mjs +1 -7
  89. package/lib/scripts/merge_scrutins.js +3 -47
  90. package/lib/scripts/merge_scrutins.mjs +1 -9
  91. package/lib/scripts/parse_textes_lois.js +15 -44
  92. package/lib/scripts/parse_textes_lois.mjs +18 -19
  93. package/lib/scripts/raw_types_from_amendements.js +3 -95
  94. package/lib/scripts/raw_types_from_amendements.mjs +1 -16
  95. package/lib/scripts/reorganize_data.js +74 -294
  96. package/lib/scripts/reorganize_data.mjs +22 -133
  97. package/lib/scripts/retrieve_deputes_photos.js +6 -119
  98. package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
  99. package/lib/scripts/retrieve_documents.js +4 -192
  100. package/lib/scripts/retrieve_documents.mjs +2 -50
  101. package/lib/scripts/retrieve_open_data.js +44 -116
  102. package/lib/scripts/retrieve_open_data.mjs +14 -19
  103. package/lib/scripts/retrieve_pending_amendments.js +4 -98
  104. package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
  105. package/lib/scripts/retrieve_senateurs_photos.js +18 -114
  106. package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
  107. package/lib/scripts/retrieve_textes_lois.js +3 -122
  108. package/lib/scripts/retrieve_textes_lois.mjs +3 -21
  109. package/lib/scripts/test_load.js +2 -10
  110. package/lib/scripts/test_load.mjs +2 -1
  111. package/lib/scripts/test_load_big_files.js +2 -10
  112. package/lib/scripts/test_load_big_files.mjs +2 -1
  113. package/lib/scripts/validate_json.js +4 -119
  114. package/lib/scripts/validate_json.mjs +2 -36
  115. package/lib/shared_types/codes_actes.js +1 -24
  116. package/lib/shared_types/codes_actes.mjs +3 -10
  117. package/lib/strings.js +1 -5
  118. package/lib/strings.mjs +1 -1
  119. package/lib/types/acteurs_et_organes.js +9 -84
  120. package/lib/types/acteurs_et_organes.mjs +10 -63
  121. package/lib/types/agendas.js +8 -90
  122. package/lib/types/agendas.mjs +11 -66
  123. package/lib/types/amendements.d.ts +2 -0
  124. package/lib/types/amendements.js +12 -92
  125. package/lib/types/amendements.mjs +15 -70
  126. package/lib/types/dossiers_legislatifs.js +8 -96
  127. package/lib/types/dossiers_legislatifs.mjs +10 -72
  128. package/lib/types/legislatures.js +1 -3
  129. package/lib/types/legislatures.mjs +1 -2
  130. package/lib/types/scrutins.js +8 -82
  131. package/lib/types/scrutins.mjs +11 -58
  132. package/lib/urls.js +3 -27
  133. package/lib/urls.mjs +3 -21
  134. package/package.json +1 -1
@@ -1,59 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.array.slice.js");
4
-
5
4
  require("core-js/modules/es.function.name.js");
6
-
7
5
  require("core-js/modules/es.array.from.js");
8
-
9
6
  require("core-js/modules/es.string.iterator.js");
10
-
11
7
  require("core-js/modules/es.regexp.exec.js");
12
-
13
8
  require("core-js/modules/es.symbol.js");
14
-
15
9
  require("core-js/modules/es.symbol.description.js");
16
-
17
10
  require("core-js/modules/es.symbol.iterator.js");
18
-
19
11
  require("core-js/modules/es.array.iterator.js");
20
-
21
12
  require("core-js/modules/web.dom-collections.iterator.js");
22
-
23
13
  require("core-js/modules/es.object.define-property.js");
24
-
25
14
  Object.defineProperty(exports, "__esModule", {
26
15
  value: true
27
16
  });
28
17
  exports.cleanAmendement = cleanAmendement;
29
18
  exports.cleanTexteLegislatif = cleanTexteLegislatif;
30
-
31
19
  require("core-js/modules/es.array.is-array.js");
32
-
33
20
  require("core-js/modules/es.array.join.js");
34
-
35
21
  require("core-js/modules/es.array.filter.js");
36
-
37
22
  require("core-js/modules/es.object.to-string.js");
38
-
39
23
  require("core-js/modules/es.array.includes.js");
40
-
41
24
  require("core-js/modules/es.string.includes.js");
42
-
43
25
  var _assert = _interopRequireDefault(require("assert"));
44
-
45
26
  var _xml = require("./xml");
46
-
47
27
  var _amendements = require("../types/amendements");
48
-
49
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
50
-
51
29
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
52
-
53
30
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
54
-
55
31
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
56
-
57
32
  function cleanAmendement(amendement) {
58
33
  (0, _xml.cleanXmlArtefacts)(amendement);
59
34
  var signataires = amendement.signataires;
@@ -63,25 +38,19 @@ function cleanAmendement(amendement) {
63
38
  {
64
39
  (0, _xml.cleanXmlArtefacts)(auteur);
65
40
  }
66
-
67
41
  if (signataires.cosignataires !== undefined) {
68
42
  var acteurRef = signataires.cosignataires.acteurRef;
69
-
70
43
  if (Array.isArray(acteurRef)) {
71
44
  signataires.cosignatairesRefs = acteurRef;
72
45
  } else {
73
46
  (0, _assert["default"])(acteurRef);
74
47
  signataires.cosignatairesRefs = [acteurRef];
75
48
  }
76
-
77
49
  delete signataires.cosignataires;
78
50
  }
79
-
80
51
  var libelle = signataires.libelle;
81
-
82
52
  if (libelle !== undefined) {
83
53
  libelle = libelle.split(" ").filter(Boolean).join(" ");
84
-
85
54
  if (libelle) {
86
55
  signataires.libelle = libelle;
87
56
  } else {
@@ -93,75 +62,54 @@ function cleanAmendement(amendement) {
93
62
  {
94
63
  (0, _xml.cleanXmlArtefacts)(pointeurFragmentTexte);
95
64
  var division = pointeurFragmentTexte.division;
96
-
97
65
  if (division !== undefined) {
98
66
  (0, _xml.cleanXmlArtefacts)(division);
99
67
  var avantAApres = division.avant_A_Apres;
100
-
101
68
  if (avantAApres !== undefined) {
102
69
  delete division.avant_A_Apres;
103
-
104
70
  if (avantAApres === "Après") {
105
71
  avantAApres = _amendements.AvantAApres.Apres;
106
72
  }
107
-
108
73
  division.avantAApres = avantAApres;
109
74
  }
110
75
  }
111
-
112
76
  var amendementStandard = pointeurFragmentTexte.amendementStandard;
113
-
114
77
  if (amendementStandard !== undefined) {
115
78
  (0, _xml.cleanXmlArtefacts)(amendementStandard);
116
79
  var alinea = amendementStandard.alinea;
117
-
118
80
  if (alinea !== undefined) {
119
81
  (0, _xml.cleanXmlArtefacts)(alinea);
120
82
  var _avantAApres = alinea.avant_A_Apres;
121
-
122
83
  if (_avantAApres !== undefined) {
123
84
  delete alinea.avant_A_Apres;
124
-
125
85
  if (_avantAApres === "Après") {
126
86
  _avantAApres = _amendements.AvantAApres.Apres;
127
87
  } else if (![_amendements.AvantAApres.A, _amendements.AvantAApres.Apres, _amendements.AvantAApres.Avant].includes(_avantAApres)) {
128
88
  _avantAApres = _amendements.AvantAApres.A;
129
89
  }
130
-
131
90
  alinea.avantAApres = _avantAApres;
132
91
  }
133
-
134
92
  pointeurFragmentTexte.alinea = alinea;
135
93
  }
136
-
137
94
  delete pointeurFragmentTexte.amendementStandard;
138
95
  }
139
96
  }
140
97
  var corps = amendement.corps;
141
-
142
98
  if (corps !== undefined) {
143
99
  (0, _xml.cleanXmlArtefacts)(corps);
144
100
  var contenuAuteur = corps.contenuAuteur;
145
-
146
101
  if (contenuAuteur !== undefined) {
147
102
  (0, _xml.cleanXmlArtefacts)(contenuAuteur);
148
103
  var avantAppel = contenuAuteur.avantAppel;
149
-
150
104
  if (avantAppel !== undefined) {
151
105
  (0, _xml.cleanXmlArtefacts)(avantAppel);
152
-
153
106
  _assert["default"].notStrictEqual(avantAppel.dispositif, undefined);
154
107
  }
155
-
156
108
  _assert["default"].strictEqual(contenuAuteur.annexeExposeSommaire, undefined);
157
-
158
109
  var dispositifAmdtCreditPLF = contenuAuteur.dispositifAmdtCreditPLF;
159
-
160
110
  if (dispositifAmdtCreditPLF !== undefined) {
161
111
  var _dispositifAmdtCredit;
162
-
163
112
  var listeProgrammes = (_dispositifAmdtCredit = dispositifAmdtCreditPLF.listeProgrammes) === null || _dispositifAmdtCredit === void 0 ? void 0 : _dispositifAmdtCredit.programme;
164
-
165
113
  if (listeProgrammes !== undefined) {
166
114
  if (Array.isArray(listeProgrammes)) {
167
115
  dispositifAmdtCreditPLF.listeProgrammes = listeProgrammes;
@@ -169,18 +117,14 @@ function cleanAmendement(amendement) {
169
117
  (0, _assert["default"])(listeProgrammes);
170
118
  dispositifAmdtCreditPLF.listeProgrammes = [listeProgrammes];
171
119
  }
172
-
173
120
  var _iterator = _createForOfIteratorHelper(dispositifAmdtCreditPLF.listeProgrammes),
174
- _step;
175
-
121
+ _step;
176
122
  try {
177
123
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
178
124
  var programme = _step.value;
179
125
  (0, _xml.cleanXmlArtefacts)(programme);
180
-
181
126
  if (programme.lignesCredits !== undefined) {
182
127
  var lignesCredits = programme.lignesCredits.ligneCredit;
183
-
184
128
  if (lignesCredits === undefined) {
185
129
  delete programme.lignesCredits;
186
130
  } else {
@@ -188,14 +132,11 @@ function cleanAmendement(amendement) {
188
132
  (0, _assert["default"])(lignesCredits);
189
133
  lignesCredits = [lignesCredits];
190
134
  }
191
-
192
135
  programme.lignesCredits = lignesCredits;
193
136
  }
194
-
195
137
  if (lignesCredits !== undefined) {
196
138
  var _iterator2 = _createForOfIteratorHelper(lignesCredits),
197
- _step2;
198
-
139
+ _step2;
199
140
  try {
200
141
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
201
142
  var ligneCredit = _step2.value;
@@ -216,14 +157,10 @@ function cleanAmendement(amendement) {
216
157
  }
217
158
  }
218
159
  }
219
-
220
160
  var dispositifAmdtCreditPLFR = contenuAuteur.dispositifAmdtCreditPLFR;
221
-
222
161
  if (dispositifAmdtCreditPLFR !== undefined) {
223
162
  var _dispositifAmdtCredit2;
224
-
225
163
  var _listeProgrammes = (_dispositifAmdtCredit2 = dispositifAmdtCreditPLFR.listeProgrammes) === null || _dispositifAmdtCredit2 === void 0 ? void 0 : _dispositifAmdtCredit2.programme;
226
-
227
164
  if (_listeProgrammes !== undefined) {
228
165
  if (Array.isArray(_listeProgrammes)) {
229
166
  dispositifAmdtCreditPLFR.listeProgrammes = _listeProgrammes;
@@ -231,18 +168,14 @@ function cleanAmendement(amendement) {
231
168
  (0, _assert["default"])(_listeProgrammes);
232
169
  dispositifAmdtCreditPLFR.listeProgrammes = [_listeProgrammes];
233
170
  }
234
-
235
171
  var _iterator3 = _createForOfIteratorHelper(dispositifAmdtCreditPLFR.listeProgrammes),
236
- _step3;
237
-
172
+ _step3;
238
173
  try {
239
174
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
240
175
  var _programme = _step3.value;
241
176
  (0, _xml.cleanXmlArtefacts)(_programme);
242
-
243
177
  if (_programme.lignesCredits !== undefined) {
244
178
  var _lignesCredits = _programme.lignesCredits.ligneCredit;
245
-
246
179
  if (_lignesCredits === undefined) {
247
180
  delete _programme.lignesCredits;
248
181
  } else {
@@ -250,14 +183,11 @@ function cleanAmendement(amendement) {
250
183
  (0, _assert["default"])(_lignesCredits);
251
184
  _lignesCredits = [_lignesCredits];
252
185
  }
253
-
254
186
  _programme.lignesCredits = _lignesCredits;
255
187
  }
256
-
257
188
  if (_lignesCredits !== undefined) {
258
189
  var _iterator4 = _createForOfIteratorHelper(_lignesCredits),
259
- _step4;
260
-
190
+ _step4;
261
191
  try {
262
192
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
263
193
  var _ligneCredit = _step4.value;
@@ -280,9 +210,7 @@ function cleanAmendement(amendement) {
280
210
  }
281
211
  }
282
212
  }
283
-
284
213
  var cycleDeVie = amendement.cycleDeVie;
285
-
286
214
  if (cycleDeVie !== undefined) {
287
215
  (0, _xml.cleanXmlArtefacts)(cycleDeVie);
288
216
  var etatDesTraitements = cycleDeVie.etatDesTraitements;
@@ -293,13 +221,11 @@ function cleanAmendement(amendement) {
293
221
  (0, _xml.cleanXmlArtefacts)(etat);
294
222
  }
295
223
  var sousEtat = etatDesTraitements.sousEtat;
296
-
297
224
  if (sousEtat !== undefined) {
298
225
  (0, _xml.cleanXmlArtefacts)(sousEtat);
299
226
  }
300
227
  }
301
228
  }
302
-
303
229
  if (amendement.representations !== undefined) {
304
230
  var representation = amendement.representations.representation;
305
231
  (0, _assert["default"])(!Array.isArray(representation));
@@ -307,13 +233,9 @@ function cleanAmendement(amendement) {
307
233
  delete amendement.representations;
308
234
  {
309
235
  (0, _xml.cleanXmlArtefacts)(representation);
310
-
311
236
  _assert["default"].strictEqual(representation.repSource, undefined);
312
-
313
237
  _assert["default"].strictEqual(representation.offset, undefined);
314
-
315
238
  _assert["default"].strictEqual(representation.dateDispoRepresentation, undefined);
316
-
317
239
  var statutRepresentation = representation.statutRepresentation;
318
240
  {
319
241
  (0, _xml.cleanBooleanAttribute)(statutRepresentation, "canonique");
@@ -324,32 +246,23 @@ function cleanAmendement(amendement) {
324
246
  }
325
247
  }
326
248
  }
327
-
328
249
  var loiReference = amendement.loiReference;
329
-
330
250
  if (loiReference !== undefined) {
331
251
  (0, _xml.cleanXmlArtefacts)(loiReference);
332
252
  }
333
-
334
253
  var discussionCommune = amendement.discussionCommune;
335
-
336
254
  if (discussionCommune !== undefined) {
337
255
  (0, _xml.cleanXmlArtefacts)(discussionCommune);
338
256
  }
339
-
340
257
  var discussionIdentique = amendement.discussionIdentique;
341
-
342
258
  if (discussionIdentique !== undefined) {
343
259
  (0, _xml.cleanXmlArtefacts)(discussionIdentique);
344
260
  }
345
261
  }
346
-
347
262
  function cleanLigneCreditPLFR(ligneCreditPLFR) {
348
263
  (0, _xml.cleanXmlArtefacts)(ligneCreditPLFR);
349
-
350
264
  if (ligneCreditPLFR.lignesCredits !== undefined) {
351
265
  var lignesCredits = ligneCreditPLFR.lignesCredits.ligneCredit;
352
-
353
266
  if (lignesCredits === undefined) {
354
267
  delete ligneCreditPLFR.lignesCredits;
355
268
  } else {
@@ -357,14 +270,11 @@ function cleanLigneCreditPLFR(ligneCreditPLFR) {
357
270
  (0, _assert["default"])(lignesCredits);
358
271
  lignesCredits = [lignesCredits];
359
272
  }
360
-
361
273
  ligneCreditPLFR.lignesCredits = lignesCredits;
362
274
  }
363
-
364
275
  if (lignesCredits !== undefined) {
365
276
  var _iterator5 = _createForOfIteratorHelper(lignesCredits),
366
- _step5;
367
-
277
+ _step5;
368
278
  try {
369
279
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
370
280
  var ligneCredit = _step5.value;
@@ -378,9 +288,10 @@ function cleanLigneCreditPLFR(ligneCreditPLFR) {
378
288
  }
379
289
  }
380
290
  }
381
-
382
291
  function cleanTexteLegislatif(texteLegislatif) {
383
- (0, _xml.cleanXmlArtefacts)(texteLegislatif); // Note: The following fields in `texteLegislatif.amendements` are currently ignored:
292
+ (0, _xml.cleanXmlArtefacts)(texteLegislatif);
293
+
294
+ // Note: The following fields in `texteLegislatif.amendements` are currently ignored:
384
295
  // * "#text"?: string;
385
296
  // * offset?: null;
386
297
  // * nom?: Nom;
@@ -388,19 +299,15 @@ function cleanTexteLegislatif(texteLegislatif) {
388
299
  // * dateDepot?: Date;
389
300
  // * documentURI?: string;
390
301
  // Because it seems they should belong to an "amendement".
391
-
392
302
  var amendement = texteLegislatif.amendements.amendement;
393
-
394
303
  if (Array.isArray(amendement)) {
395
304
  texteLegislatif.amendements = amendement;
396
305
  } else {
397
306
  (0, _assert["default"])(amendement);
398
307
  texteLegislatif.amendements = [amendement];
399
308
  }
400
-
401
309
  var _iterator6 = _createForOfIteratorHelper(texteLegislatif.amendements),
402
- _step6;
403
-
310
+ _step6;
404
311
  try {
405
312
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
406
313
  var _amendement = _step6.value;
@@ -412,4 +319,4 @@ function cleanTexteLegislatif(texteLegislatif) {
412
319
  _iterator6.f();
413
320
  }
414
321
  }
415
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGVhbkFtZW5kZW1lbnQiLCJhbWVuZGVtZW50IiwiY2xlYW5YbWxBcnRlZmFjdHMiLCJzaWduYXRhaXJlcyIsImF1dGV1ciIsImNvc2lnbmF0YWlyZXMiLCJ1bmRlZmluZWQiLCJhY3RldXJSZWYiLCJBcnJheSIsImlzQXJyYXkiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImFzc2VydCIsImxpYmVsbGUiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwicG9pbnRldXJGcmFnbWVudFRleHRlIiwiZGl2aXNpb24iLCJhdmFudEFBcHJlcyIsImF2YW50X0FfQXByZXMiLCJBdmFudEFBcHJlcyIsIkFwcmVzIiwiYW1lbmRlbWVudFN0YW5kYXJkIiwiYWxpbmVhIiwiQSIsIkF2YW50IiwiaW5jbHVkZXMiLCJjb3JwcyIsImNvbnRlbnVBdXRldXIiLCJhdmFudEFwcGVsIiwibm90U3RyaWN0RXF1YWwiLCJkaXNwb3NpdGlmIiwic3RyaWN0RXF1YWwiLCJhbm5leGVFeHBvc2VTb21tYWlyZSIsImRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGIiwibGlzdGVQcm9ncmFtbWVzIiwicHJvZ3JhbW1lIiwibGlnbmVzQ3JlZGl0cyIsImxpZ25lQ3JlZGl0IiwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSIiwiY2xlYW5MaWduZUNyZWRpdFBMRlIiLCJjeWNsZURlVmllIiwiZXRhdERlc1RyYWl0ZW1lbnRzIiwiZXRhdCIsInNvdXNFdGF0IiwicmVwcmVzZW50YXRpb25zIiwicmVwcmVzZW50YXRpb24iLCJyZXBTb3VyY2UiLCJvZmZzZXQiLCJkYXRlRGlzcG9SZXByZXNlbnRhdGlvbiIsInN0YXR1dFJlcHJlc2VudGF0aW9uIiwiY2xlYW5Cb29sZWFuQXR0cmlidXRlIiwibG9pUmVmZXJlbmNlIiwiZGlzY3Vzc2lvbkNvbW11bmUiLCJkaXNjdXNzaW9uSWRlbnRpcXVlIiwibGlnbmVDcmVkaXRQTEZSIiwiY2xlYW5UZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVhbmVycy9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuXG5pbXBvcnQgeyBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUsIGNsZWFuWG1sQXJ0ZWZhY3RzIH0gZnJvbSBcIi4veG1sXCJcbmltcG9ydCB7IEF2YW50QUFwcmVzIH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQW1lbmRlbWVudChhbWVuZGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoYW1lbmRlbWVudClcblxuICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHNpZ25hdGFpcmVzKVxuXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoYXV0ZXVyKVxuICAgIH1cblxuICAgIGlmIChzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1clJlZiA9IHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXMuYWN0ZXVyUmVmXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY3RldXJSZWYpKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzID0gYWN0ZXVyUmVmXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWN0ZXVyUmVmKVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyA9IFthY3RldXJSZWZdXG4gICAgICB9XG4gICAgICBkZWxldGUgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1xuICAgIH1cblxuICAgIGxldCBsaWJlbGxlID0gc2lnbmF0YWlyZXMubGliZWxsZVxuICAgIGlmIChsaWJlbGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxpYmVsbGUgPSBsaWJlbGxlLnNwbGl0KFwiIFwiKS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIilcbiAgICAgIGlmIChsaWJlbGxlKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmxpYmVsbGUgPSBsaWJlbGxlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgc2lnbmF0YWlyZXMubGliZWxsZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZSA9IGFtZW5kZW1lbnQucG9pbnRldXJGcmFnbWVudFRleHRlXG4gIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhwb2ludGV1ckZyYWdtZW50VGV4dGUpXG5cbiAgICBjb25zdCBkaXZpc2lvbiA9IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5kaXZpc2lvblxuICAgIGlmIChkaXZpc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhkaXZpc2lvbilcblxuICAgICAgbGV0IGF2YW50QUFwcmVzID0gZGl2aXNpb24uYXZhbnRfQV9BcHJlc1xuICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIGRpdmlzaW9uLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzID09PSBcIkFwcsOoc1wiKSB7XG4gICAgICAgICAgYXZhbnRBQXByZXMgPSBBdmFudEFBcHJlcy5BcHJlc1xuICAgICAgICB9XG4gICAgICAgIGRpdmlzaW9uLmF2YW50QUFwcmVzID0gYXZhbnRBQXByZXNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhbWVuZGVtZW50U3RhbmRhcmQgPSBwb2ludGV1ckZyYWdtZW50VGV4dGUuYW1lbmRlbWVudFN0YW5kYXJkXG4gICAgaWYgKGFtZW5kZW1lbnRTdGFuZGFyZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhhbWVuZGVtZW50U3RhbmRhcmQpXG5cbiAgICAgIGNvbnN0IGFsaW5lYSA9IGFtZW5kZW1lbnRTdGFuZGFyZC5hbGluZWFcbiAgICAgIGlmIChhbGluZWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhbGluZWEpXG5cbiAgICAgICAgbGV0IGF2YW50QUFwcmVzID0gYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgICBpZiAoYXZhbnRBQXByZXMgPT09IFwiQXByw6hzXCIpIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQXByZXNcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgIVtBdmFudEFBcHJlcy5BLCBBdmFudEFBcHJlcy5BcHJlcywgQXZhbnRBQXByZXMuQXZhbnRdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBhdmFudEFBcHJlcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQVxuICAgICAgICAgIH1cbiAgICAgICAgICBhbGluZWEuYXZhbnRBQXByZXMgPSBhdmFudEFBcHJlc1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRldXJGcmFnbWVudFRleHRlLmFsaW5lYSA9IGFsaW5lYVxuICAgICAgfVxuICAgICAgZGVsZXRlIHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5hbWVuZGVtZW50U3RhbmRhcmRcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb3JwcyA9IGFtZW5kZW1lbnQuY29ycHNcbiAgaWYgKGNvcnBzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjb3JwcylcblxuICAgIGNvbnN0IGNvbnRlbnVBdXRldXIgPSBjb3Jwcy5jb250ZW51QXV0ZXVyXG4gICAgaWYgKGNvbnRlbnVBdXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoY29udGVudUF1dGV1cilcblxuICAgICAgY29uc3QgYXZhbnRBcHBlbCA9IGNvbnRlbnVBdXRldXIuYXZhbnRBcHBlbFxuICAgICAgaWYgKGF2YW50QXBwZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhdmFudEFwcGVsKVxuXG4gICAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhdmFudEFwcGVsLmRpc3Bvc2l0aWYsIHVuZGVmaW5lZClcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnVBdXRldXIuYW5uZXhlRXhwb3NlU29tbWFpcmUsIHVuZGVmaW5lZClcblxuICAgICAgY29uc3QgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgPSBjb250ZW51QXV0ZXVyLmRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBsaXN0ZVByb2dyYW1tZXMgPVxuICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcz8ucHJvZ3JhbW1lXG4gICAgICAgIGlmIChsaXN0ZVByb2dyYW1tZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3RlUHJvZ3JhbW1lcykpIHtcbiAgICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYubGlzdGVQcm9ncmFtbWVzID0gW2xpc3RlUHJvZ3JhbW1lc11cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHByb2dyYW1tZSBvZiBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRi5saXN0ZVByb2dyYW1tZXMpIHtcbiAgICAgICAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHByb2dyYW1tZSlcblxuICAgICAgICAgICAgaWYgKHByb2dyYW1tZS5saWduZXNDcmVkaXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgbGV0IGxpZ25lc0NyZWRpdHMgPSBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cy5saWduZUNyZWRpdFxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1tZS5saWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgICAgICAgICAgICBhc3NlcnQobGlnbmVzQ3JlZGl0cylcbiAgICAgICAgICAgICAgICAgIGxpZ25lc0NyZWRpdHMgPSBbbGlnbmVzQ3JlZGl0c11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgPSBsaWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlnbmVDcmVkaXQgb2YgbGlnbmVzQ3JlZGl0cykge1xuICAgICAgICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMobGlnbmVDcmVkaXQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGUiA9IGNvbnRlbnVBdXRldXIuZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbGlzdGVQcm9ncmFtbWVzID1cbiAgICAgICAgICBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRlIubGlzdGVQcm9ncmFtbWVzPy5wcm9ncmFtbWVcbiAgICAgICAgaWYgKGxpc3RlUHJvZ3JhbW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdGVQcm9ncmFtbWVzKSkge1xuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IFtsaXN0ZVByb2dyYW1tZXNdXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBwcm9ncmFtbWUgb2YgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcykge1xuICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMocHJvZ3JhbW1lKVxuXG4gICAgICAgICAgICBpZiAocHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXQgbGlnbmVzQ3JlZGl0cyA9IHByb2dyYW1tZS5saWduZXNDcmVkaXRzLmxpZ25lQ3JlZGl0XG4gICAgICAgICAgICAgIGlmIChsaWduZXNDcmVkaXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlnbmVzQ3JlZGl0cykpIHtcbiAgICAgICAgICAgICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICAgICAgICAgICAgbGlnbmVzQ3JlZGl0cyA9IFtsaWduZXNDcmVkaXRzXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhbkxpZ25lQ3JlZGl0UExGUihsaWduZUNyZWRpdClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBjeWNsZURlVmllID0gYW1lbmRlbWVudC5jeWNsZURlVmllXG4gIGlmIChjeWNsZURlVmllICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjeWNsZURlVmllKVxuXG4gICAgY29uc3QgZXRhdERlc1RyYWl0ZW1lbnRzID0gY3ljbGVEZVZpZS5ldGF0RGVzVHJhaXRlbWVudHNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0RGVzVHJhaXRlbWVudHMpXG5cbiAgICAgIGNvbnN0IGV0YXQgPSBldGF0RGVzVHJhaXRlbWVudHMuZXRhdFxuICAgICAge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VzRXRhdCA9IGV0YXREZXNUcmFpdGVtZW50cy5zb3VzRXRhdFxuICAgICAgaWYgKHNvdXNFdGF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoc291c0V0YXQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZXByZXNlbnRhdGlvbiA9IGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zLnJlcHJlc2VudGF0aW9uXG4gICAgYXNzZXJ0KCFBcnJheS5pc0FycmF5KHJlcHJlc2VudGF0aW9uKSlcbiAgICBhbWVuZGVtZW50LnJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb25cbiAgICBkZWxldGUgYW1lbmRlbWVudC5yZXByZXNlbnRhdGlvbnNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhyZXByZXNlbnRhdGlvbilcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLnJlcFNvdXJjZSwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLm9mZnNldCwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLmRhdGVEaXNwb1JlcHJlc2VudGF0aW9uLCB1bmRlZmluZWQpXG5cbiAgICAgIGNvbnN0IHN0YXR1dFJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb24uc3RhdHV0UmVwcmVzZW50YXRpb25cbiAgICAgIHtcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcImNhbm9uaXF1ZVwiKVxuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoc3RhdHV0UmVwcmVzZW50YXRpb24sIFwiZW5yZWdpc3RyZW1lbnRcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcIm9mZmljaWVsbGVcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInRyYW5zY3JpcHRpb25cIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInZlcmJhdGltXCIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbG9pUmVmZXJlbmNlID0gYW1lbmRlbWVudC5sb2lSZWZlcmVuY2VcbiAgaWYgKGxvaVJlZmVyZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMobG9pUmVmZXJlbmNlKVxuICB9XG5cbiAgY29uc3QgZGlzY3Vzc2lvbkNvbW11bmUgPSBhbWVuZGVtZW50LmRpc2N1c3Npb25Db21tdW5lXG4gIGlmIChkaXNjdXNzaW9uQ29tbXVuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoZGlzY3Vzc2lvbkNvbW11bmUpXG4gIH1cblxuICBjb25zdCBkaXNjdXNzaW9uSWRlbnRpcXVlID0gYW1lbmRlbWVudC5kaXNjdXNzaW9uSWRlbnRpcXVlXG4gIGlmIChkaXNjdXNzaW9uSWRlbnRpcXVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhkaXNjdXNzaW9uSWRlbnRpcXVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0UExGUjogYW55KSB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGxpZ25lQ3JlZGl0UExGUilcblxuICBpZiAobGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBsaWduZXNDcmVkaXRzID0gbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMubGlnbmVDcmVkaXRcbiAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICBsaWduZXNDcmVkaXRzID0gW2xpZ25lc0NyZWRpdHNdXG4gICAgICB9XG4gICAgICBsaWduZUNyZWRpdFBMRlIubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICB9XG4gICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0KVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5UZXh0ZUxlZ2lzbGF0aWYodGV4dGVMZWdpc2xhdGlmOiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHModGV4dGVMZWdpc2xhdGlmKVxuXG4gIC8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgZmllbGRzIGluIGB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHNgIGFyZSBjdXJyZW50bHkgaWdub3JlZDpcbiAgLy8gKiBcIiN0ZXh0XCI/OiAgICAgICBzdHJpbmc7XG4gIC8vICogb2Zmc2V0PzogICAgICAgIG51bGw7XG4gIC8vICogbm9tPzogICAgICAgICAgIE5vbTtcbiAgLy8gKiBhdmFudF9BX0FwcmVzPzogRGl2aXNpb25BdmFudEFBcHJlcztcbiAgLy8gKiBkYXRlRGVwb3Q/OiAgICAgRGF0ZTtcbiAgLy8gKiBkb2N1bWVudFVSST86ICAgc3RyaW5nO1xuICAvLyBCZWNhdXNlIGl0IHNlZW1zIHRoZXkgc2hvdWxkIGJlbG9uZyB0byBhbiBcImFtZW5kZW1lbnRcIi5cbiAgbGV0IGFtZW5kZW1lbnQgPSB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMuYW1lbmRlbWVudFxuICBpZiAoQXJyYXkuaXNBcnJheShhbWVuZGVtZW50KSkge1xuICAgIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cyA9IGFtZW5kZW1lbnRcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQoYW1lbmRlbWVudClcbiAgICB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMgPSBbYW1lbmRlbWVudF1cbiAgfVxuXG4gIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7OztBQUVPLFNBQVNBLGVBQVQsQ0FBeUJDLFVBQXpCLEVBQWdEO0VBQ3JELElBQUFDLHNCQUFBLEVBQWtCRCxVQUFsQjtFQUVBLElBQU1FLFdBQVcsR0FBR0YsVUFBVSxDQUFDRSxXQUEvQjtFQUNBO0lBQ0UsSUFBQUQsc0JBQUEsRUFBa0JDLFdBQWxCO0lBRUEsSUFBTUMsTUFBTSxHQUFHRCxXQUFXLENBQUNDLE1BQTNCO0lBQ0E7TUFDRSxJQUFBRixzQkFBQSxFQUFrQkUsTUFBbEI7SUFDRDs7SUFFRCxJQUFJRCxXQUFXLENBQUNFLGFBQVosS0FBOEJDLFNBQWxDLEVBQTZDO01BQzNDLElBQU1DLFNBQVMsR0FBR0osV0FBVyxDQUFDRSxhQUFaLENBQTBCRSxTQUE1Qzs7TUFDQSxJQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsU0FBZCxDQUFKLEVBQThCO1FBQzVCSixXQUFXLENBQUNPLGlCQUFaLEdBQWdDSCxTQUFoQztNQUNELENBRkQsTUFFTztRQUNMLElBQUFJLGtCQUFBLEVBQU9KLFNBQVA7UUFDQUosV0FBVyxDQUFDTyxpQkFBWixHQUFnQyxDQUFDSCxTQUFELENBQWhDO01BQ0Q7O01BQ0QsT0FBT0osV0FBVyxDQUFDRSxhQUFuQjtJQUNEOztJQUVELElBQUlPLE9BQU8sR0FBR1QsV0FBVyxDQUFDUyxPQUExQjs7SUFDQSxJQUFJQSxPQUFPLEtBQUtOLFNBQWhCLEVB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
322
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGVhbkFtZW5kZW1lbnQiLCJhbWVuZGVtZW50IiwiY2xlYW5YbWxBcnRlZmFjdHMiLCJzaWduYXRhaXJlcyIsImF1dGV1ciIsImNvc2lnbmF0YWlyZXMiLCJ1bmRlZmluZWQiLCJhY3RldXJSZWYiLCJBcnJheSIsImlzQXJyYXkiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImFzc2VydCIsImxpYmVsbGUiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwicG9pbnRldXJGcmFnbWVudFRleHRlIiwiZGl2aXNpb24iLCJhdmFudEFBcHJlcyIsImF2YW50X0FfQXByZXMiLCJBdmFudEFBcHJlcyIsIkFwcmVzIiwiYW1lbmRlbWVudFN0YW5kYXJkIiwiYWxpbmVhIiwiQSIsIkF2YW50IiwiaW5jbHVkZXMiLCJjb3JwcyIsImNvbnRlbnVBdXRldXIiLCJhdmFudEFwcGVsIiwibm90U3RyaWN0RXF1YWwiLCJkaXNwb3NpdGlmIiwic3RyaWN0RXF1YWwiLCJhbm5leGVFeHBvc2VTb21tYWlyZSIsImRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGIiwibGlzdGVQcm9ncmFtbWVzIiwicHJvZ3JhbW1lIiwibGlnbmVzQ3JlZGl0cyIsImxpZ25lQ3JlZGl0IiwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSIiwiY2xlYW5MaWduZUNyZWRpdFBMRlIiLCJjeWNsZURlVmllIiwiZXRhdERlc1RyYWl0ZW1lbnRzIiwiZXRhdCIsInNvdXNFdGF0IiwicmVwcmVzZW50YXRpb25zIiwicmVwcmVzZW50YXRpb24iLCJyZXBTb3VyY2UiLCJvZmZzZXQiLCJkYXRlRGlzcG9SZXByZXNlbnRhdGlvbiIsInN0YXR1dFJlcHJlc2VudGF0aW9uIiwiY2xlYW5Cb29sZWFuQXR0cmlidXRlIiwibG9pUmVmZXJlbmNlIiwiZGlzY3Vzc2lvbkNvbW11bmUiLCJkaXNjdXNzaW9uSWRlbnRpcXVlIiwibGlnbmVDcmVkaXRQTEZSIiwiY2xlYW5UZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVhbmVycy9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuXG5pbXBvcnQgeyBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUsIGNsZWFuWG1sQXJ0ZWZhY3RzIH0gZnJvbSBcIi4veG1sXCJcbmltcG9ydCB7IEF2YW50QUFwcmVzIH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQW1lbmRlbWVudChhbWVuZGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoYW1lbmRlbWVudClcblxuICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHNpZ25hdGFpcmVzKVxuXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoYXV0ZXVyKVxuICAgIH1cblxuICAgIGlmIChzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1clJlZiA9IHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXMuYWN0ZXVyUmVmXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY3RldXJSZWYpKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzID0gYWN0ZXVyUmVmXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWN0ZXVyUmVmKVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyA9IFthY3RldXJSZWZdXG4gICAgICB9XG4gICAgICBkZWxldGUgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1xuICAgIH1cblxuICAgIGxldCBsaWJlbGxlID0gc2lnbmF0YWlyZXMubGliZWxsZVxuICAgIGlmIChsaWJlbGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxpYmVsbGUgPSBsaWJlbGxlLnNwbGl0KFwiIFwiKS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIilcbiAgICAgIGlmIChsaWJlbGxlKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmxpYmVsbGUgPSBsaWJlbGxlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgc2lnbmF0YWlyZXMubGliZWxsZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZSA9IGFtZW5kZW1lbnQucG9pbnRldXJGcmFnbWVudFRleHRlXG4gIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhwb2ludGV1ckZyYWdtZW50VGV4dGUpXG5cbiAgICBjb25zdCBkaXZpc2lvbiA9IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5kaXZpc2lvblxuICAgIGlmIChkaXZpc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhkaXZpc2lvbilcblxuICAgICAgbGV0IGF2YW50QUFwcmVzID0gZGl2aXNpb24uYXZhbnRfQV9BcHJlc1xuICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIGRpdmlzaW9uLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzID09PSBcIkFwcsOoc1wiKSB7XG4gICAgICAgICAgYXZhbnRBQXByZXMgPSBBdmFudEFBcHJlcy5BcHJlc1xuICAgICAgICB9XG4gICAgICAgIGRpdmlzaW9uLmF2YW50QUFwcmVzID0gYXZhbnRBQXByZXNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhbWVuZGVtZW50U3RhbmRhcmQgPSBwb2ludGV1ckZyYWdtZW50VGV4dGUuYW1lbmRlbWVudFN0YW5kYXJkXG4gICAgaWYgKGFtZW5kZW1lbnRTdGFuZGFyZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhhbWVuZGVtZW50U3RhbmRhcmQpXG5cbiAgICAgIGNvbnN0IGFsaW5lYSA9IGFtZW5kZW1lbnRTdGFuZGFyZC5hbGluZWFcbiAgICAgIGlmIChhbGluZWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhbGluZWEpXG5cbiAgICAgICAgbGV0IGF2YW50QUFwcmVzID0gYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgICBpZiAoYXZhbnRBQXByZXMgPT09IFwiQXByw6hzXCIpIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQXByZXNcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgIVtBdmFudEFBcHJlcy5BLCBBdmFudEFBcHJlcy5BcHJlcywgQXZhbnRBQXByZXMuQXZhbnRdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBhdmFudEFBcHJlcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQVxuICAgICAgICAgIH1cbiAgICAgICAgICBhbGluZWEuYXZhbnRBQXByZXMgPSBhdmFudEFBcHJlc1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRldXJGcmFnbWVudFRleHRlLmFsaW5lYSA9IGFsaW5lYVxuICAgICAgfVxuICAgICAgZGVsZXRlIHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5hbWVuZGVtZW50U3RhbmRhcmRcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb3JwcyA9IGFtZW5kZW1lbnQuY29ycHNcbiAgaWYgKGNvcnBzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjb3JwcylcblxuICAgIGNvbnN0IGNvbnRlbnVBdXRldXIgPSBjb3Jwcy5jb250ZW51QXV0ZXVyXG4gICAgaWYgKGNvbnRlbnVBdXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoY29udGVudUF1dGV1cilcblxuICAgICAgY29uc3QgYXZhbnRBcHBlbCA9IGNvbnRlbnVBdXRldXIuYXZhbnRBcHBlbFxuICAgICAgaWYgKGF2YW50QXBwZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhdmFudEFwcGVsKVxuXG4gICAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhdmFudEFwcGVsLmRpc3Bvc2l0aWYsIHVuZGVmaW5lZClcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnVBdXRldXIuYW5uZXhlRXhwb3NlU29tbWFpcmUsIHVuZGVmaW5lZClcblxuICAgICAgY29uc3QgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgPSBjb250ZW51QXV0ZXVyLmRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBsaXN0ZVByb2dyYW1tZXMgPVxuICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcz8ucHJvZ3JhbW1lXG4gICAgICAgIGlmIChsaXN0ZVByb2dyYW1tZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3RlUHJvZ3JhbW1lcykpIHtcbiAgICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYubGlzdGVQcm9ncmFtbWVzID0gW2xpc3RlUHJvZ3JhbW1lc11cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHByb2dyYW1tZSBvZiBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRi5saXN0ZVByb2dyYW1tZXMpIHtcbiAgICAgICAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHByb2dyYW1tZSlcblxuICAgICAgICAgICAgaWYgKHByb2dyYW1tZS5saWduZXNDcmVkaXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgbGV0IGxpZ25lc0NyZWRpdHMgPSBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cy5saWduZUNyZWRpdFxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1tZS5saWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgICAgICAgICAgICBhc3NlcnQobGlnbmVzQ3JlZGl0cylcbiAgICAgICAgICAgICAgICAgIGxpZ25lc0NyZWRpdHMgPSBbbGlnbmVzQ3JlZGl0c11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgPSBsaWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlnbmVDcmVkaXQgb2YgbGlnbmVzQ3JlZGl0cykge1xuICAgICAgICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMobGlnbmVDcmVkaXQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGUiA9IGNvbnRlbnVBdXRldXIuZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbGlzdGVQcm9ncmFtbWVzID1cbiAgICAgICAgICBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRlIubGlzdGVQcm9ncmFtbWVzPy5wcm9ncmFtbWVcbiAgICAgICAgaWYgKGxpc3RlUHJvZ3JhbW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdGVQcm9ncmFtbWVzKSkge1xuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IFtsaXN0ZVByb2dyYW1tZXNdXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBwcm9ncmFtbWUgb2YgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcykge1xuICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMocHJvZ3JhbW1lKVxuXG4gICAgICAgICAgICBpZiAocHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXQgbGlnbmVzQ3JlZGl0cyA9IHByb2dyYW1tZS5saWduZXNDcmVkaXRzLmxpZ25lQ3JlZGl0XG4gICAgICAgICAgICAgIGlmIChsaWduZXNDcmVkaXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlnbmVzQ3JlZGl0cykpIHtcbiAgICAgICAgICAgICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICAgICAgICAgICAgbGlnbmVzQ3JlZGl0cyA9IFtsaWduZXNDcmVkaXRzXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhbkxpZ25lQ3JlZGl0UExGUihsaWduZUNyZWRpdClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBjeWNsZURlVmllID0gYW1lbmRlbWVudC5jeWNsZURlVmllXG4gIGlmIChjeWNsZURlVmllICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjeWNsZURlVmllKVxuXG4gICAgY29uc3QgZXRhdERlc1RyYWl0ZW1lbnRzID0gY3ljbGVEZVZpZS5ldGF0RGVzVHJhaXRlbWVudHNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0RGVzVHJhaXRlbWVudHMpXG5cbiAgICAgIGNvbnN0IGV0YXQgPSBldGF0RGVzVHJhaXRlbWVudHMuZXRhdFxuICAgICAge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VzRXRhdCA9IGV0YXREZXNUcmFpdGVtZW50cy5zb3VzRXRhdFxuICAgICAgaWYgKHNvdXNFdGF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoc291c0V0YXQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZXByZXNlbnRhdGlvbiA9IGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zLnJlcHJlc2VudGF0aW9uXG4gICAgYXNzZXJ0KCFBcnJheS5pc0FycmF5KHJlcHJlc2VudGF0aW9uKSlcbiAgICBhbWVuZGVtZW50LnJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb25cbiAgICBkZWxldGUgYW1lbmRlbWVudC5yZXByZXNlbnRhdGlvbnNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhyZXByZXNlbnRhdGlvbilcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLnJlcFNvdXJjZSwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLm9mZnNldCwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLmRhdGVEaXNwb1JlcHJlc2VudGF0aW9uLCB1bmRlZmluZWQpXG5cbiAgICAgIGNvbnN0IHN0YXR1dFJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb24uc3RhdHV0UmVwcmVzZW50YXRpb25cbiAgICAgIHtcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcImNhbm9uaXF1ZVwiKVxuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoc3RhdHV0UmVwcmVzZW50YXRpb24sIFwiZW5yZWdpc3RyZW1lbnRcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcIm9mZmljaWVsbGVcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInRyYW5zY3JpcHRpb25cIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInZlcmJhdGltXCIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbG9pUmVmZXJlbmNlID0gYW1lbmRlbWVudC5sb2lSZWZlcmVuY2VcbiAgaWYgKGxvaVJlZmVyZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMobG9pUmVmZXJlbmNlKVxuICB9XG5cbiAgY29uc3QgZGlzY3Vzc2lvbkNvbW11bmUgPSBhbWVuZGVtZW50LmRpc2N1c3Npb25Db21tdW5lXG4gIGlmIChkaXNjdXNzaW9uQ29tbXVuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoZGlzY3Vzc2lvbkNvbW11bmUpXG4gIH1cblxuICBjb25zdCBkaXNjdXNzaW9uSWRlbnRpcXVlID0gYW1lbmRlbWVudC5kaXNjdXNzaW9uSWRlbnRpcXVlXG4gIGlmIChkaXNjdXNzaW9uSWRlbnRpcXVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhkaXNjdXNzaW9uSWRlbnRpcXVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0UExGUjogYW55KSB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGxpZ25lQ3JlZGl0UExGUilcblxuICBpZiAobGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBsaWduZXNDcmVkaXRzID0gbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMubGlnbmVDcmVkaXRcbiAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICBsaWduZXNDcmVkaXRzID0gW2xpZ25lc0NyZWRpdHNdXG4gICAgICB9XG4gICAgICBsaWduZUNyZWRpdFBMRlIubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICB9XG4gICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0KVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5UZXh0ZUxlZ2lzbGF0aWYodGV4dGVMZWdpc2xhdGlmOiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHModGV4dGVMZWdpc2xhdGlmKVxuXG4gIC8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgZmllbGRzIGluIGB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHNgIGFyZSBjdXJyZW50bHkgaWdub3JlZDpcbiAgLy8gKiBcIiN0ZXh0XCI/OiAgICAgICBzdHJpbmc7XG4gIC8vICogb2Zmc2V0PzogICAgICAgIG51bGw7XG4gIC8vICogbm9tPzogICAgICAgICAgIE5vbTtcbiAgLy8gKiBhdmFudF9BX0FwcmVzPzogRGl2aXNpb25BdmFudEFBcHJlcztcbiAgLy8gKiBkYXRlRGVwb3Q/OiAgICAgRGF0ZTtcbiAgLy8gKiBkb2N1bWVudFVSST86ICAgc3RyaW5nO1xuICAvLyBCZWNhdXNlIGl0IHNlZW1zIHRoZXkgc2hvdWxkIGJlbG9uZyB0byBhbiBcImFtZW5kZW1lbnRcIi5cbiAgbGV0IGFtZW5kZW1lbnQgPSB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMuYW1lbmRlbWVudFxuICBpZiAoQXJyYXkuaXNBcnJheShhbWVuZGVtZW50KSkge1xuICAgIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cyA9IGFtZW5kZW1lbnRcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQoYW1lbmRlbWVudClcbiAgICB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMgPSBbYW1lbmRlbWVudF1cbiAgfVxuXG4gIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFBa0Q7QUFBQTtBQUFBO0FBQUE7QUFFM0MsU0FBU0EsZUFBZSxDQUFDQyxVQUFlLEVBQVE7RUFDckQsSUFBQUMsc0JBQWlCLEVBQUNELFVBQVUsQ0FBQztFQUU3QixJQUFNRSxXQUFXLEdBQUdGLFVBQVUsQ0FBQ0UsV0FBVztFQUMxQztJQUNFLElBQUFELHNCQUFpQixFQUFDQyxXQUFXLENBQUM7SUFFOUIsSUFBTUMsTUFBTSxHQUFHRCxXQUFXLENBQUNDLE1BQU07SUFDakM7TUFDRSxJQUFBRixzQkFBaUIsRUFBQ0UsTUFBTSxDQUFDO0lBQzNCO0lBRUEsSUFBSUQsV0FBVyxDQUFDRSxhQUFhLEtBQUtDLFNBQVMsRUFBRTtNQUMzQyxJQUFNQyxTQUFTLEdBQUdKLFdBQVcsQ0FBQ0UsYUFBYSxDQUFDRSxTQUFTO01BQ3JELElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixTQUFTLENBQUMsRUFBRTtRQUM1QkosV0FBVyxDQUFDTyxpQkFBaUIsR0FBR0gsU0FBUztNQUMzQyxDQUFDLE1BQU07UUFDTCxJQUFBSSxrQkFBTSxFQUFDSixTQUFTLENBQUM7UUFDakJKLFdBQVcsQ0FBQ08saUJBQWlCLEdBQUcsQ0FBQ0gsU0FBUyxDQUFDO01BQzdDO01BQ0EsT0FBT0osV0FBVyxDQUFDRSxhQUFhO0lBQ2xDO0lBRUEsSUFBSU8sT0FBTyxHQUFHVCxXQUFXLENBQUNTLE9BQU87SUFDakMsSUFBSUEsT0FBTyxLQUFLTixTQUFTLEVB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