@tricoteuses/assemblee 1.10.4 → 2.0.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.
- package/README.md +8 -1
- package/lib/amendements-79bwpkvR.js +154 -0
- package/lib/amendements-CV3s5a0M.js +667 -0
- package/lib/cleaners/index.d.ts +9 -9
- package/lib/cleaners.js +564 -0
- package/lib/datasets.d.ts +3 -3
- package/lib/dossiers_legislatifs.d.ts +2 -2
- package/lib/index.d.ts +17 -22
- package/lib/index.js +1542 -314
- package/lib/inserters.d.ts +5 -5
- package/lib/loaders-9mHdTl9L.js +4158 -0
- package/lib/loaders.d.ts +12 -12
- package/lib/loaders.js +29 -1689
- package/lib/organes.d.ts +1 -1
- package/lib/parse-Ccs6wcUg.js +2512 -0
- package/lib/parsers/index.d.ts +2 -3
- package/lib/parsers/plf.d.ts +1 -0
- package/lib/parsers/recherche_amendements.d.ts +2 -2
- package/lib/parsers/textes_lois.d.ts +1 -23
- package/lib/parsers.js +398 -0
- package/lib/raw_types/acteurs_et_organes.d.ts +4 -2
- package/lib/raw_types/debats.d.ts +2 -2
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
- package/lib/schemas/acteurs_et_organes.json +1166 -0
- package/lib/schemas/agendas.json +1745 -0
- package/lib/schemas/amendements.json +2085 -0
- package/lib/schemas/debats.json +842 -0
- package/lib/schemas/dossiers_legislatifs.json +3874 -0
- package/lib/schemas/legislatures.json +17 -0
- package/lib/schemas/questions.json +704 -0
- package/lib/schemas/scrutins.json +701 -0
- package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
- package/lib/types/acteurs_et_organes.d.ts +344 -2
- package/lib/types/agendas.d.ts +236 -10
- package/lib/types/amendements.d.ts +276 -1
- package/lib/types/debats.d.ts +52 -2
- package/lib/types/dossiers_legislatifs.d.ts +403 -9
- package/lib/types/questions.d.ts +99 -2
- package/lib/types/scrutins.d.ts +101 -0
- package/lib/urls.d.ts +2 -2
- package/package.json +33 -95
- package/lib/api.js +0 -52
- package/lib/api.mjs +0 -45
- package/lib/bugs/acteur-00010/plugin.test.js +0 -90
- package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
- package/lib/bugs/acteur-00010.d.ts +0 -7
- package/lib/bugs/acteur-00010.js +0 -116
- package/lib/bugs/acteur-00010.mjs +0 -26
- package/lib/bugs/agenda-00002/plugin.test.js +0 -124
- package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
- package/lib/bugs/agenda-00002.d.ts +0 -15
- package/lib/bugs/agenda-00002.js +0 -406
- package/lib/bugs/agenda-00002.mjs +0 -172
- package/lib/bugs/agenda-00008/plugin.test.js +0 -92
- package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
- package/lib/bugs/agenda-00008.d.ts +0 -7
- package/lib/bugs/agenda-00008.js +0 -123
- package/lib/bugs/agenda-00008.mjs +0 -26
- package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00011/plugin.test.js +0 -263
- package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
- package/lib/bugs/agenda-00011.d.ts +0 -16
- package/lib/bugs/agenda-00011.js +0 -333
- package/lib/bugs/agenda-00011.mjs +0 -125
- package/lib/bugs.d.ts +0 -21
- package/lib/bugs.js +0 -452
- package/lib/bugs.mjs +0 -70
- package/lib/cleaners/actes_legislatifs.js +0 -315
- package/lib/cleaners/actes_legislatifs.mjs +0 -253
- package/lib/cleaners/acteurs.js +0 -265
- package/lib/cleaners/acteurs.mjs +0 -180
- package/lib/cleaners/amendements.js +0 -294
- package/lib/cleaners/amendements.mjs +0 -227
- package/lib/cleaners/debats.js +0 -12
- package/lib/cleaners/debats.mjs +0 -5
- package/lib/cleaners/documents.js +0 -205
- package/lib/cleaners/documents.mjs +0 -133
- package/lib/cleaners/dossiers_legislatifs.js +0 -131
- package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
- package/lib/cleaners/index.js +0 -70
- package/lib/cleaners/index.mjs +0 -10
- package/lib/cleaners/organes.js +0 -65
- package/lib/cleaners/organes.mjs +0 -48
- package/lib/cleaners/questions.js +0 -12
- package/lib/cleaners/questions.mjs +0 -5
- package/lib/cleaners/reunions.js +0 -312
- package/lib/cleaners/reunions.mjs +0 -255
- package/lib/cleaners/scrutins.js +0 -340
- package/lib/cleaners/scrutins.mjs +0 -221
- package/lib/cleaners/xml.js +0 -95
- package/lib/cleaners/xml.mjs +0 -58
- package/lib/datasets.js +0 -837
- package/lib/datasets.mjs +0 -755
- package/lib/dates.js +0 -124
- package/lib/dates.mjs +0 -100
- package/lib/dossiers_legislatifs.js +0 -346
- package/lib/dossiers_legislatifs.mjs +0 -208
- package/lib/file_systems.js +0 -162
- package/lib/file_systems.mjs +0 -62
- package/lib/git.js +0 -223
- package/lib/git.mjs +0 -151
- package/lib/index.mjs +0 -17
- package/lib/inserters.js +0 -521
- package/lib/inserters.mjs +0 -337
- package/lib/loaders.mjs +0 -886
- package/lib/logger.js +0 -35
- package/lib/logger.mjs +0 -26
- package/lib/organes.js +0 -22
- package/lib/organes.mjs +0 -15
- package/lib/parsers/documents.d.ts +0 -62
- package/lib/parsers/documents.js +0 -453
- package/lib/parsers/documents.mjs +0 -370
- package/lib/parsers/index.js +0 -40
- package/lib/parsers/index.mjs +0 -4
- package/lib/parsers/recherche_amendements.js +0 -403
- package/lib/parsers/recherche_amendements.mjs +0 -167
- package/lib/parsers/textes_lois.js +0 -307
- package/lib/parsers/textes_lois.mjs +0 -264
- package/lib/raw_types/acteurs_et_organes.js +0 -1213
- package/lib/raw_types/acteurs_et_organes.mjs +0 -1146
- package/lib/raw_types/agendas.js +0 -777
- package/lib/raw_types/agendas.mjs +0 -724
- package/lib/raw_types/amendements.js +0 -1052
- package/lib/raw_types/amendements.mjs +0 -993
- package/lib/raw_types/debats.js +0 -630
- package/lib/raw_types/debats.mjs +0 -573
- package/lib/raw_types/dossiers_legislatifs.js +0 -1529
- package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
- package/lib/raw_types/questions.js +0 -469
- package/lib/raw_types/questions.mjs +0 -416
- package/lib/raw_types/scrutins.js +0 -651
- package/lib/raw_types/scrutins.mjs +0 -598
- package/lib/schemas/acteur/Acteur.json +0 -56
- package/lib/schemas/acteur/AdresseElectronique.json +0 -52
- package/lib/schemas/acteur/AdressePostale.json +0 -75
- package/lib/schemas/acteur/Civ.json +0 -14
- package/lib/schemas/acteur/Collaborateur.json +0 -29
- package/lib/schemas/acteur/EtatCivil.json +0 -51
- package/lib/schemas/acteur/Ident.json +0 -40
- package/lib/schemas/acteur/Lieu.json +0 -66
- package/lib/schemas/acteur/Mandat.json +0 -192
- package/lib/schemas/acteur/Profession.json +0 -46
- package/lib/schemas/agenda/Agenda.json +0 -318
- package/lib/schemas/agenda/CycleDeVie.json +0 -45
- package/lib/schemas/agenda/PointOdj.json +0 -82
- package/lib/schemas/amendement/Amendement.json +0 -246
- package/lib/schemas/amendement/Diff.json +0 -25
- package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
- package/lib/schemas/amendement/Identifiant.json +0 -62
- package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
- package/lib/schemas/amendement/Representation.json +0 -67
- package/lib/schemas/amendement/Total.json +0 -26
- package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
- package/lib/schemas/converted_from_type/agendas.json +0 -1100
- package/lib/schemas/converted_from_type/amendements.json +0 -3191
- package/lib/schemas/converted_from_type/debats.json +0 -682
- package/lib/schemas/converted_from_type/deputes.json +0 -26
- package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
- package/lib/schemas/converted_from_type/legislatures.json +0 -16
- package/lib/schemas/converted_from_type/questions.json +0 -328
- package/lib/schemas/converted_from_type/scrutins.json +0 -393
- package/lib/schemas/debat/Contenu.json +0 -75
- package/lib/schemas/debat/Debat.json +0 -40
- package/lib/schemas/debat/Metadonnees.json +0 -75
- package/lib/schemas/debat/Orateur.json +0 -60
- package/lib/schemas/debat/Point.json +0 -169
- package/lib/schemas/debat/Sommaire.json +0 -71
- package/lib/schemas/debat/SommaireElement.json +0 -108
- package/lib/schemas/debat/Texte.json +0 -34
- package/lib/schemas/document/CodeLibelle.json +0 -25
- package/lib/schemas/document/Document.json +0 -385
- package/lib/schemas/document/Indexation.json +0 -38
- package/lib/schemas/dossier/ActeLegislatif.json +0 -211
- package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
- package/lib/schemas/dossier/Agenda.json +0 -23
- package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
- package/lib/schemas/dossier/Decision.json +0 -25
- package/lib/schemas/dossier/Dossier.json +0 -124
- package/lib/schemas/dossier/EtudeImpact.json +0 -29
- package/lib/schemas/dossier/EtudePlf.json +0 -105
- package/lib/schemas/dossier/Europe.json +0 -42
- package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
- package/lib/schemas/dossier/InfoJO.json +0 -23
- package/lib/schemas/dossier/Initiateur.json +0 -36
- package/lib/schemas/dossier/Motion.json +0 -27
- package/lib/schemas/dossier/Promulgation.json +0 -62
- package/lib/schemas/dossier/Rapporteur.json +0 -36
- package/lib/schemas/dossier/Texte.json +0 -47
- package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
- package/lib/schemas/organe/Organe.json +0 -136
- package/lib/schemas/organe/ViMoDe.json +0 -28
- package/lib/schemas/question/Auteur.json +0 -58
- package/lib/schemas/question/Cloture.json +0 -28
- package/lib/schemas/question/InfoJO.json +0 -40
- package/lib/schemas/question/MinAttribElement.json +0 -30
- package/lib/schemas/question/Question.json +0 -172
- package/lib/schemas/question/Renouvellement.json +0 -17
- package/lib/schemas/question/Signalement.json +0 -21
- package/lib/schemas/question/Texte.json +0 -24
- package/lib/schemas/scrutin/DecompteVoix.json +0 -35
- package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
- package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
- package/lib/schemas/scrutin/OrganeVotant.json +0 -88
- package/lib/schemas/scrutin/Scrutin.json +0 -187
- package/lib/schemas/scrutin/Votant.json +0 -37
- package/lib/scripts/bugs_helper.d.ts +0 -13
- package/lib/scripts/bugs_helper.js +0 -595
- package/lib/scripts/bugs_helper.mjs +0 -251
- package/lib/scripts/clean_reorganized_data.js +0 -610
- package/lib/scripts/clean_reorganized_data.mjs +0 -273
- package/lib/scripts/diff_amendements.js +0 -249
- package/lib/scripts/diff_amendements.mjs +0 -202
- package/lib/scripts/document_dossiers_legislatifs.js +0 -655
- package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
- package/lib/scripts/get_today_reunions.js +0 -37
- package/lib/scripts/get_today_reunions.mjs +0 -31
- package/lib/scripts/merge_scrutins.js +0 -97
- package/lib/scripts/merge_scrutins.mjs +0 -47
- package/lib/scripts/parse_textes_lois.d.ts +0 -1
- package/lib/scripts/parse_textes_lois.js +0 -171
- package/lib/scripts/parse_textes_lois.mjs +0 -140
- package/lib/scripts/process_open_dataset.js +0 -301
- package/lib/scripts/process_open_dataset.mjs +0 -134
- package/lib/scripts/raw_types_from_amendements.js +0 -135
- package/lib/scripts/raw_types_from_amendements.mjs +0 -134
- package/lib/scripts/reorganize_data.js +0 -805
- package/lib/scripts/reorganize_data.mjs +0 -517
- package/lib/scripts/retrieve_deputes_photos.js +0 -310
- package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
- package/lib/scripts/retrieve_documents.js +0 -547
- package/lib/scripts/retrieve_documents.mjs +0 -242
- package/lib/scripts/retrieve_open_data.js +0 -107
- package/lib/scripts/retrieve_open_data.mjs +0 -26
- package/lib/scripts/retrieve_pending_amendments.js +0 -206
- package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
- package/lib/scripts/retrieve_senateurs_photos.js +0 -234
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
- package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois.js +0 -240
- package/lib/scripts/retrieve_textes_lois.mjs +0 -85
- package/lib/scripts/shared/cli_helpers.js +0 -89
- package/lib/scripts/shared/cli_helpers.mjs +0 -81
- package/lib/scripts/test_iter_load.js +0 -155
- package/lib/scripts/test_iter_load.mjs +0 -72
- package/lib/scripts/test_load.js +0 -26
- package/lib/scripts/test_load.mjs +0 -16
- package/lib/scripts/test_load_big_files.js +0 -26
- package/lib/scripts/test_load_big_files.mjs +0 -16
- package/lib/scripts/validate_json.js +0 -353
- package/lib/scripts/validate_json.mjs +0 -184
- package/lib/shared_types/codes_actes.js +0 -231
- package/lib/shared_types/codes_actes.mjs +0 -224
- package/lib/strings.js +0 -16
- package/lib/strings.mjs +0 -7
- package/lib/types/acteurs_et_organes.js +0 -963
- package/lib/types/acteurs_et_organes.mjs +0 -904
- package/lib/types/agendas.js +0 -628
- package/lib/types/agendas.mjs +0 -575
- package/lib/types/amendements.js +0 -899
- package/lib/types/amendements.mjs +0 -842
- package/lib/types/debats.js +0 -619
- package/lib/types/debats.mjs +0 -562
- package/lib/types/dossiers_legislatifs.js +0 -1188
- package/lib/types/dossiers_legislatifs.mjs +0 -1130
- package/lib/types/legislatures.js +0 -17
- package/lib/types/legislatures.mjs +0 -10
- package/lib/types/questions.js +0 -454
- package/lib/types/questions.mjs +0 -401
- package/lib/types/scrutins.js +0 -556
- package/lib/types/scrutins.mjs +0 -503
- package/lib/urls.js +0 -325
- package/lib/urls.mjs +0 -258
- /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
- /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
- /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
|
@@ -1,610 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.symbol.async-iterator.js");
|
|
4
|
-
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
5
|
-
require("core-js/modules/es.array.for-each.js");
|
|
6
|
-
require("core-js/modules/es.array.from.js");
|
|
7
|
-
require("core-js/modules/es.array.is-array.js");
|
|
8
|
-
require("core-js/modules/es.array.reverse.js");
|
|
9
|
-
require("core-js/modules/es.array.slice.js");
|
|
10
|
-
require("core-js/modules/es.function.name.js");
|
|
11
|
-
require("core-js/modules/es.json.to-string-tag.js");
|
|
12
|
-
require("core-js/modules/es.math.to-string-tag.js");
|
|
13
|
-
require("core-js/modules/es.object.create.js");
|
|
14
|
-
require("core-js/modules/es.object.define-property.js");
|
|
15
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
16
|
-
require("core-js/modules/es.object.get-prototype-of.js");
|
|
17
|
-
require("core-js/modules/es.object.set-prototype-of.js");
|
|
18
|
-
require("core-js/modules/es.promise.js");
|
|
19
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
20
|
-
require("core-js/modules/es.weak-map.js");
|
|
21
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
22
|
-
require("core-js/modules/es.symbol.js");
|
|
23
|
-
require("core-js/modules/es.symbol.description.js");
|
|
24
|
-
require("core-js/modules/es.symbol.iterator.js");
|
|
25
|
-
require("core-js/modules/es.array.concat.js");
|
|
26
|
-
require("core-js/modules/es.array.iterator.js");
|
|
27
|
-
require("core-js/modules/es.array.join.js");
|
|
28
|
-
require("core-js/modules/es.date.to-json.js");
|
|
29
|
-
require("core-js/modules/es.date.to-string.js");
|
|
30
|
-
require("core-js/modules/es.object.keys.js");
|
|
31
|
-
require("core-js/modules/es.object.to-string.js");
|
|
32
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
33
|
-
require("core-js/modules/es.string.ends-with.js");
|
|
34
|
-
require("core-js/modules/es.string.iterator.js");
|
|
35
|
-
require("core-js/modules/es.string.replace.js");
|
|
36
|
-
require("core-js/modules/es.string.trim.js");
|
|
37
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
38
|
-
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
39
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
40
|
-
var _path = _interopRequireDefault(require("path"));
|
|
41
|
-
var _cleaners = require("../cleaners");
|
|
42
|
-
var _datasets = require("../datasets");
|
|
43
|
-
var _retrieve_documents = require("./retrieve_documents");
|
|
44
|
-
var _dates = require("../dates");
|
|
45
|
-
var _file_systems = require("../file_systems");
|
|
46
|
-
var git = _interopRequireWildcard(require("../git"));
|
|
47
|
-
var _acteurs_et_organes = require("../types/acteurs_et_organes");
|
|
48
|
-
var _agendas = require("../types/agendas");
|
|
49
|
-
var _amendements = require("../types/amendements");
|
|
50
|
-
var _dossiers_legislatifs = require("../types/dossiers_legislatifs");
|
|
51
|
-
var _scrutins = require("../types/scrutins");
|
|
52
|
-
var _questions = require("../types/questions");
|
|
53
|
-
var _debats = require("../types/debats");
|
|
54
|
-
var _cli_helpers = require("./shared/cli_helpers");
|
|
55
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
56
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
57
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
58
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
59
|
-
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
60
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
61
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
62
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
63
|
-
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; } } }; }
|
|
64
|
-
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; } }
|
|
65
|
-
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; }
|
|
66
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
67
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
68
|
-
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); }
|
|
69
|
-
function parseArgs(argv) {
|
|
70
|
-
var optionsDefinitions = [_cli_helpers.cloneOption, _cli_helpers.commitOption, _cli_helpers.remoteOption, _cli_helpers.legislatureOption, _cli_helpers.categoriesOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.pullOption, _cli_helpers.fetchDocumentsOption, _cli_helpers.parseDocumentsOption, _cli_helpers.documentFormatOption, {
|
|
71
|
-
alias: "d",
|
|
72
|
-
help: "single dataset to reorganize",
|
|
73
|
-
name: "dataset",
|
|
74
|
-
type: String
|
|
75
|
-
}, {
|
|
76
|
-
help: "do not reset --hard after commit to save I/O if the working tree is to be discarded",
|
|
77
|
-
name: "no-reset-after-commit",
|
|
78
|
-
type: Boolean
|
|
79
|
-
}, {
|
|
80
|
-
alias: "V",
|
|
81
|
-
help: "don't validate data",
|
|
82
|
-
name: "no-validate",
|
|
83
|
-
type: Boolean
|
|
84
|
-
}];
|
|
85
|
-
var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
|
|
86
|
-
argv: argv
|
|
87
|
-
});
|
|
88
|
-
return options;
|
|
89
|
-
}
|
|
90
|
-
function cloneGit(gitGroupUrl, datasetName, dataDir) {
|
|
91
|
-
git.clone(gitGroupUrl, "".concat(datasetName, "_nettoye"), dataDir);
|
|
92
|
-
}
|
|
93
|
-
function commitGit(datasetCleanDir, options, exitCode, subdirectories) {
|
|
94
|
-
if (options.commit) {
|
|
95
|
-
var errorCode = git.commitAndPush(datasetCleanDir, "Nouvelle moisson", options.remote);
|
|
96
|
-
if (exitCode === 10 && errorCode !== 10 || exitCode === 0 && errorCode !== 0 && errorCode !== 10) {
|
|
97
|
-
exitCode = errorCode;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (commitAndPushUid(datasetCleanDir, options, subdirectories) && (exitCode === 0 || exitCode === 10)) {
|
|
101
|
-
exitCode = 1;
|
|
102
|
-
}
|
|
103
|
-
return exitCode;
|
|
104
|
-
}
|
|
105
|
-
function cleanAndValidateData(data, cleaner, fromJson, toJson, noValidate) {
|
|
106
|
-
cleaner(data);
|
|
107
|
-
if (_typeof(data) === "object" && Object.keys(data).length === 0) {
|
|
108
|
-
// By convention: an empty object must be deleted.
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
var jsonData = JSON.stringify(data, null, 2);
|
|
112
|
-
if (!noValidate) {
|
|
113
|
-
return jsonData;
|
|
114
|
-
} else {
|
|
115
|
-
var validatedData = fromJson(jsonData);
|
|
116
|
-
return toJson(validatedData);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
function processFiles(_x, _x2, _x3, _x4, _x5, _x6, _x7) {
|
|
120
|
-
return _processFiles.apply(this, arguments);
|
|
121
|
-
}
|
|
122
|
-
function _processFiles() {
|
|
123
|
-
_processFiles = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(datasetRawDir, datasetCleanDir, walkDirParams, cleaner, dataConverter, options, postProcessor) {
|
|
124
|
-
var _iterator3, _step3, filePathArray, filename, rawFilePath, rawJson, data, validateData, cleanJson, cleanFilePath;
|
|
125
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
126
|
-
while (1) switch (_context.prev = _context.next) {
|
|
127
|
-
case 0:
|
|
128
|
-
_iterator3 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetRawDir, walkDirParams));
|
|
129
|
-
_context.prev = 1;
|
|
130
|
-
_iterator3.s();
|
|
131
|
-
case 3:
|
|
132
|
-
if ((_step3 = _iterator3.n()).done) {
|
|
133
|
-
_context.next = 23;
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
filePathArray = _step3.value;
|
|
137
|
-
filename = filePathArray[filePathArray.length - 1];
|
|
138
|
-
if (filename.endsWith(".json")) {
|
|
139
|
-
_context.next = 8;
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
return _context.abrupt("continue", 21);
|
|
143
|
-
case 8:
|
|
144
|
-
rawFilePath = _path["default"].join.apply(_path["default"], [datasetRawDir].concat(_toConsumableArray(filePathArray)));
|
|
145
|
-
rawJson = _fsExtra["default"].readFileSync(rawFilePath, {
|
|
146
|
-
encoding: "utf8"
|
|
147
|
-
});
|
|
148
|
-
if (options.verbose) console.log("Cleaning file: ".concat(rawFilePath, "..."));
|
|
149
|
-
data = JSON.parse(rawJson);
|
|
150
|
-
validateData = !options["no-validate"];
|
|
151
|
-
cleanJson = cleanAndValidateData(data, cleaner, dataConverter.fromJson, dataConverter.toJson, validateData);
|
|
152
|
-
if (!(cleanJson !== null)) {
|
|
153
|
-
_context.next = 21;
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
cleanFilePath = _path["default"].join.apply(_path["default"], [datasetCleanDir].concat(_toConsumableArray(filePathArray)));
|
|
157
|
-
_fsExtra["default"].ensureDirSync(_path["default"].dirname(cleanFilePath));
|
|
158
|
-
_fsExtra["default"].writeFileSync(cleanFilePath, cleanJson, {
|
|
159
|
-
encoding: "utf8"
|
|
160
|
-
});
|
|
161
|
-
if (!postProcessor) {
|
|
162
|
-
_context.next = 21;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
_context.next = 21;
|
|
166
|
-
return postProcessor(data, datasetCleanDir, options);
|
|
167
|
-
case 21:
|
|
168
|
-
_context.next = 3;
|
|
169
|
-
break;
|
|
170
|
-
case 23:
|
|
171
|
-
_context.next = 28;
|
|
172
|
-
break;
|
|
173
|
-
case 25:
|
|
174
|
-
_context.prev = 25;
|
|
175
|
-
_context.t0 = _context["catch"](1);
|
|
176
|
-
_iterator3.e(_context.t0);
|
|
177
|
-
case 28:
|
|
178
|
-
_context.prev = 28;
|
|
179
|
-
_iterator3.f();
|
|
180
|
-
return _context.finish(28);
|
|
181
|
-
case 31:
|
|
182
|
-
case "end":
|
|
183
|
-
return _context.stop();
|
|
184
|
-
}
|
|
185
|
-
}, _callee, null, [[1, 25, 28, 31]]);
|
|
186
|
-
}));
|
|
187
|
-
return _processFiles.apply(this, arguments);
|
|
188
|
-
}
|
|
189
|
-
function cleanReorganizedData(_x8) {
|
|
190
|
-
return _cleanReorganizedData.apply(this, arguments);
|
|
191
|
-
}
|
|
192
|
-
function _cleanReorganizedData() {
|
|
193
|
-
_cleanReorganizedData = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(options) {
|
|
194
|
-
var _options$clone;
|
|
195
|
-
var dataDir, exitCode, gitGroupUrl, enabledDatasets, chosenDatasets, _iterator4, _step4, dataset, datasetName, datasetRawDir, datasetCleanDir, _iterator5, _step5, _dataset, _datasetName, _datasetRawDir, _datasetCleanDir, _iterator6, _step6, _dataset2, _datasetName2, _datasetRawDir2, _datasetCleanDir2, _iterator7, _step7, _dataset3, _datasetName3, _datasetRawDir3, _datasetCleanDir3, _iterator8, _step8, _dataset4, _datasetName4, _datasetRawDir4, _datasetCleanDir4, _iterator9, _step9, _dataset5, _datasetName5, _datasetRawDir5, _datasetCleanDir5, _iterator10, _step10, _dataset6, _datasetName6, _datasetRawDir6, _datasetCleanDir6;
|
|
196
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
197
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
198
|
-
case 0:
|
|
199
|
-
dataDir = options.dataDir;
|
|
200
|
-
Date.prototype.toJSON = _dates.patchedDateToJson;
|
|
201
|
-
exitCode = options.commit ? 10 : 0;
|
|
202
|
-
gitGroupUrl = (_options$clone = options.clone) === null || _options$clone === void 0 ? void 0 : _options$clone.trim().replace(/\/+$/, "");
|
|
203
|
-
enabledDatasets = (0, _datasets.getEnabledDatasets)(options.categories);
|
|
204
|
-
chosenDatasets = (0, _datasets.filterByLegislature)(_datasets.datasets, options.legislature);
|
|
205
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes)) {
|
|
206
|
-
_context2.next = 35;
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
_iterator4 = _createForOfIteratorHelper(chosenDatasets.acteursEtOrganes);
|
|
210
|
-
_context2.prev = 8;
|
|
211
|
-
_iterator4.s();
|
|
212
|
-
case 10:
|
|
213
|
-
if ((_step4 = _iterator4.n()).done) {
|
|
214
|
-
_context2.next = 27;
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
dataset = _step4.value;
|
|
218
|
-
datasetName = _path["default"].basename(dataset.filename, ".json");
|
|
219
|
-
if (!(options.dataset && datasetName !== options.dataset)) {
|
|
220
|
-
_context2.next = 15;
|
|
221
|
-
break;
|
|
222
|
-
}
|
|
223
|
-
return _context2.abrupt("continue", 25);
|
|
224
|
-
case 15:
|
|
225
|
-
cloneGit(gitGroupUrl, datasetName, dataDir);
|
|
226
|
-
datasetRawDir = _path["default"].join(dataDir, datasetName);
|
|
227
|
-
datasetCleanDir = datasetRawDir + "_nettoye";
|
|
228
|
-
if (options.pull) {
|
|
229
|
-
git.resetAndPull(datasetCleanDir);
|
|
230
|
-
}
|
|
231
|
-
analyzeAndRemove(datasetName, options);
|
|
232
|
-
_context2.next = 22;
|
|
233
|
-
return processFiles(datasetRawDir, datasetCleanDir, ["acteurs"], _cleaners.cleanActeur, {
|
|
234
|
-
fromJson: _acteurs_et_organes.Convert.toActeur,
|
|
235
|
-
toJson: _acteurs_et_organes.Convert.acteurToJson
|
|
236
|
-
}, options);
|
|
237
|
-
case 22:
|
|
238
|
-
_context2.next = 24;
|
|
239
|
-
return processFiles(datasetRawDir, datasetCleanDir, ["organes"], _cleaners.cleanOrgane, {
|
|
240
|
-
fromJson: _acteurs_et_organes.Convert.toOrgane,
|
|
241
|
-
toJson: _acteurs_et_organes.Convert.organeToJson
|
|
242
|
-
}, options);
|
|
243
|
-
case 24:
|
|
244
|
-
exitCode = commitGit(datasetCleanDir, options, exitCode, ["acteurs", "organes"]);
|
|
245
|
-
case 25:
|
|
246
|
-
_context2.next = 10;
|
|
247
|
-
break;
|
|
248
|
-
case 27:
|
|
249
|
-
_context2.next = 32;
|
|
250
|
-
break;
|
|
251
|
-
case 29:
|
|
252
|
-
_context2.prev = 29;
|
|
253
|
-
_context2.t0 = _context2["catch"](8);
|
|
254
|
-
_iterator4.e(_context2.t0);
|
|
255
|
-
case 32:
|
|
256
|
-
_context2.prev = 32;
|
|
257
|
-
_iterator4.f();
|
|
258
|
-
return _context2.finish(32);
|
|
259
|
-
case 35:
|
|
260
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.Agendas)) {
|
|
261
|
-
_context2.next = 61;
|
|
262
|
-
break;
|
|
263
|
-
}
|
|
264
|
-
_iterator5 = _createForOfIteratorHelper(chosenDatasets.agendas);
|
|
265
|
-
_context2.prev = 37;
|
|
266
|
-
_iterator5.s();
|
|
267
|
-
case 39:
|
|
268
|
-
if ((_step5 = _iterator5.n()).done) {
|
|
269
|
-
_context2.next = 53;
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
_dataset = _step5.value;
|
|
273
|
-
_datasetName = _path["default"].basename(_dataset.filename, ".json");
|
|
274
|
-
if (!(options.dataset && _datasetName !== options.dataset)) {
|
|
275
|
-
_context2.next = 44;
|
|
276
|
-
break;
|
|
277
|
-
}
|
|
278
|
-
return _context2.abrupt("continue", 51);
|
|
279
|
-
case 44:
|
|
280
|
-
cloneGit(gitGroupUrl, _datasetName, dataDir);
|
|
281
|
-
analyzeAndRemove(_datasetName, options);
|
|
282
|
-
_datasetRawDir = _path["default"].join(dataDir, _datasetName);
|
|
283
|
-
_datasetCleanDir = _datasetRawDir + "_nettoye";
|
|
284
|
-
_context2.next = 50;
|
|
285
|
-
return processFiles(_datasetRawDir, _datasetCleanDir, [], _cleaners.cleanReunion, {
|
|
286
|
-
fromJson: _agendas.Convert.toReunion,
|
|
287
|
-
toJson: _agendas.Convert.reunionToJson
|
|
288
|
-
}, options);
|
|
289
|
-
case 50:
|
|
290
|
-
exitCode = commitGit(_datasetCleanDir, options, exitCode, ["."]);
|
|
291
|
-
case 51:
|
|
292
|
-
_context2.next = 39;
|
|
293
|
-
break;
|
|
294
|
-
case 53:
|
|
295
|
-
_context2.next = 58;
|
|
296
|
-
break;
|
|
297
|
-
case 55:
|
|
298
|
-
_context2.prev = 55;
|
|
299
|
-
_context2.t1 = _context2["catch"](37);
|
|
300
|
-
_iterator5.e(_context2.t1);
|
|
301
|
-
case 58:
|
|
302
|
-
_context2.prev = 58;
|
|
303
|
-
_iterator5.f();
|
|
304
|
-
return _context2.finish(58);
|
|
305
|
-
case 61:
|
|
306
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.Amendements)) {
|
|
307
|
-
_context2.next = 87;
|
|
308
|
-
break;
|
|
309
|
-
}
|
|
310
|
-
_iterator6 = _createForOfIteratorHelper(chosenDatasets.amendements);
|
|
311
|
-
_context2.prev = 63;
|
|
312
|
-
_iterator6.s();
|
|
313
|
-
case 65:
|
|
314
|
-
if ((_step6 = _iterator6.n()).done) {
|
|
315
|
-
_context2.next = 79;
|
|
316
|
-
break;
|
|
317
|
-
}
|
|
318
|
-
_dataset2 = _step6.value;
|
|
319
|
-
_datasetName2 = _path["default"].basename(_dataset2.filename, ".json");
|
|
320
|
-
if (!(options.dataset && _datasetName2 !== options.dataset)) {
|
|
321
|
-
_context2.next = 70;
|
|
322
|
-
break;
|
|
323
|
-
}
|
|
324
|
-
return _context2.abrupt("continue", 77);
|
|
325
|
-
case 70:
|
|
326
|
-
cloneGit(gitGroupUrl, _datasetName2, dataDir);
|
|
327
|
-
analyzeAndRemove(_datasetName2, options);
|
|
328
|
-
_datasetRawDir2 = _path["default"].join(dataDir, _datasetName2);
|
|
329
|
-
_datasetCleanDir2 = _datasetRawDir2 + "_nettoye";
|
|
330
|
-
_context2.next = 76;
|
|
331
|
-
return processFiles(_datasetRawDir2, _datasetCleanDir2, [], _cleaners.cleanAmendement, {
|
|
332
|
-
fromJson: _amendements.Convert.toAmendement,
|
|
333
|
-
toJson: _amendements.Convert.amendementToJson
|
|
334
|
-
}, options);
|
|
335
|
-
case 76:
|
|
336
|
-
exitCode = commitGit(_datasetCleanDir2, options, exitCode, ["."]);
|
|
337
|
-
case 77:
|
|
338
|
-
_context2.next = 65;
|
|
339
|
-
break;
|
|
340
|
-
case 79:
|
|
341
|
-
_context2.next = 84;
|
|
342
|
-
break;
|
|
343
|
-
case 81:
|
|
344
|
-
_context2.prev = 81;
|
|
345
|
-
_context2.t2 = _context2["catch"](63);
|
|
346
|
-
_iterator6.e(_context2.t2);
|
|
347
|
-
case 84:
|
|
348
|
-
_context2.prev = 84;
|
|
349
|
-
_iterator6.f();
|
|
350
|
-
return _context2.finish(84);
|
|
351
|
-
case 87:
|
|
352
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs)) {
|
|
353
|
-
_context2.next = 115;
|
|
354
|
-
break;
|
|
355
|
-
}
|
|
356
|
-
_iterator7 = _createForOfIteratorHelper(chosenDatasets.dossiersLegislatifs);
|
|
357
|
-
_context2.prev = 89;
|
|
358
|
-
_iterator7.s();
|
|
359
|
-
case 91:
|
|
360
|
-
if ((_step7 = _iterator7.n()).done) {
|
|
361
|
-
_context2.next = 107;
|
|
362
|
-
break;
|
|
363
|
-
}
|
|
364
|
-
_dataset3 = _step7.value;
|
|
365
|
-
_datasetName3 = _path["default"].basename(_dataset3.filename, ".json");
|
|
366
|
-
if (!(options.dataset && _datasetName3 !== options.dataset)) {
|
|
367
|
-
_context2.next = 96;
|
|
368
|
-
break;
|
|
369
|
-
}
|
|
370
|
-
return _context2.abrupt("continue", 105);
|
|
371
|
-
case 96:
|
|
372
|
-
cloneGit(gitGroupUrl, _datasetName3, dataDir);
|
|
373
|
-
analyzeAndRemove(_datasetName3, options);
|
|
374
|
-
_datasetRawDir3 = _path["default"].join(dataDir, _datasetName3);
|
|
375
|
-
_datasetCleanDir3 = _datasetRawDir3 + "_nettoye";
|
|
376
|
-
_context2.next = 102;
|
|
377
|
-
return processFiles(_datasetRawDir3, _datasetCleanDir3, ["documents"], _cleaners.cleanDocumentOrDivision, {
|
|
378
|
-
fromJson: _dossiers_legislatifs.Convert.toDocument,
|
|
379
|
-
toJson: _dossiers_legislatifs.Convert.documentToJson
|
|
380
|
-
}, options, _retrieve_documents.downloadAndParse);
|
|
381
|
-
case 102:
|
|
382
|
-
_context2.next = 104;
|
|
383
|
-
return processFiles(_datasetRawDir3, _datasetCleanDir3, ["dossiers"], _cleaners.cleanDossierParlementaire, {
|
|
384
|
-
fromJson: _dossiers_legislatifs.Convert.toDossierParlementaire,
|
|
385
|
-
toJson: _dossiers_legislatifs.Convert.dossierParlementaireToJson
|
|
386
|
-
}, options);
|
|
387
|
-
case 104:
|
|
388
|
-
exitCode = commitGit(_datasetCleanDir3, options, exitCode, ["documents", "dossiers"]);
|
|
389
|
-
case 105:
|
|
390
|
-
_context2.next = 91;
|
|
391
|
-
break;
|
|
392
|
-
case 107:
|
|
393
|
-
_context2.next = 112;
|
|
394
|
-
break;
|
|
395
|
-
case 109:
|
|
396
|
-
_context2.prev = 109;
|
|
397
|
-
_context2.t3 = _context2["catch"](89);
|
|
398
|
-
_iterator7.e(_context2.t3);
|
|
399
|
-
case 112:
|
|
400
|
-
_context2.prev = 112;
|
|
401
|
-
_iterator7.f();
|
|
402
|
-
return _context2.finish(112);
|
|
403
|
-
case 115:
|
|
404
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.Scrutins)) {
|
|
405
|
-
_context2.next = 141;
|
|
406
|
-
break;
|
|
407
|
-
}
|
|
408
|
-
_iterator8 = _createForOfIteratorHelper(chosenDatasets.scrutins);
|
|
409
|
-
_context2.prev = 117;
|
|
410
|
-
_iterator8.s();
|
|
411
|
-
case 119:
|
|
412
|
-
if ((_step8 = _iterator8.n()).done) {
|
|
413
|
-
_context2.next = 133;
|
|
414
|
-
break;
|
|
415
|
-
}
|
|
416
|
-
_dataset4 = _step8.value;
|
|
417
|
-
_datasetName4 = _path["default"].basename(_dataset4.filename, ".json");
|
|
418
|
-
if (!(options.dataset && _datasetName4 !== options.dataset)) {
|
|
419
|
-
_context2.next = 124;
|
|
420
|
-
break;
|
|
421
|
-
}
|
|
422
|
-
return _context2.abrupt("continue", 131);
|
|
423
|
-
case 124:
|
|
424
|
-
cloneGit(gitGroupUrl, _datasetName4, dataDir);
|
|
425
|
-
analyzeAndRemove(_datasetName4, options);
|
|
426
|
-
_datasetRawDir4 = _path["default"].join(dataDir, _datasetName4);
|
|
427
|
-
_datasetCleanDir4 = _datasetRawDir4 + "_nettoye";
|
|
428
|
-
_context2.next = 130;
|
|
429
|
-
return processFiles(_datasetRawDir4, _datasetCleanDir4, [], _cleaners.cleanScrutin, {
|
|
430
|
-
fromJson: _scrutins.Convert.toScrutin,
|
|
431
|
-
toJson: _scrutins.Convert.scrutinToJson
|
|
432
|
-
}, options);
|
|
433
|
-
case 130:
|
|
434
|
-
exitCode = commitGit(_datasetCleanDir4, options, exitCode, ["."]);
|
|
435
|
-
case 131:
|
|
436
|
-
_context2.next = 119;
|
|
437
|
-
break;
|
|
438
|
-
case 133:
|
|
439
|
-
_context2.next = 138;
|
|
440
|
-
break;
|
|
441
|
-
case 135:
|
|
442
|
-
_context2.prev = 135;
|
|
443
|
-
_context2.t4 = _context2["catch"](117);
|
|
444
|
-
_iterator8.e(_context2.t4);
|
|
445
|
-
case 138:
|
|
446
|
-
_context2.prev = 138;
|
|
447
|
-
_iterator8.f();
|
|
448
|
-
return _context2.finish(138);
|
|
449
|
-
case 141:
|
|
450
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.Questions)) {
|
|
451
|
-
_context2.next = 167;
|
|
452
|
-
break;
|
|
453
|
-
}
|
|
454
|
-
_iterator9 = _createForOfIteratorHelper(_datasets.datasets.questions);
|
|
455
|
-
_context2.prev = 143;
|
|
456
|
-
_iterator9.s();
|
|
457
|
-
case 145:
|
|
458
|
-
if ((_step9 = _iterator9.n()).done) {
|
|
459
|
-
_context2.next = 159;
|
|
460
|
-
break;
|
|
461
|
-
}
|
|
462
|
-
_dataset5 = _step9.value;
|
|
463
|
-
_datasetName5 = _path["default"].basename(_dataset5.filename, ".json");
|
|
464
|
-
if (!(options.dataset && _datasetName5 !== options.dataset)) {
|
|
465
|
-
_context2.next = 150;
|
|
466
|
-
break;
|
|
467
|
-
}
|
|
468
|
-
return _context2.abrupt("continue", 157);
|
|
469
|
-
case 150:
|
|
470
|
-
cloneGit(gitGroupUrl, _datasetName5, dataDir);
|
|
471
|
-
analyzeAndRemove(_datasetName5, options);
|
|
472
|
-
_datasetRawDir5 = _path["default"].join(dataDir, _datasetName5);
|
|
473
|
-
_datasetCleanDir5 = _datasetRawDir5 + "_nettoye";
|
|
474
|
-
_context2.next = 156;
|
|
475
|
-
return processFiles(_datasetRawDir5, _datasetCleanDir5, [], _cleaners.cleanQuestion, {
|
|
476
|
-
fromJson: _questions.Convert.toQuestion,
|
|
477
|
-
toJson: _questions.Convert.questionToJson
|
|
478
|
-
}, options);
|
|
479
|
-
case 156:
|
|
480
|
-
exitCode = commitGit(_datasetCleanDir5, options, exitCode, ["."]);
|
|
481
|
-
case 157:
|
|
482
|
-
_context2.next = 145;
|
|
483
|
-
break;
|
|
484
|
-
case 159:
|
|
485
|
-
_context2.next = 164;
|
|
486
|
-
break;
|
|
487
|
-
case 161:
|
|
488
|
-
_context2.prev = 161;
|
|
489
|
-
_context2.t5 = _context2["catch"](143);
|
|
490
|
-
_iterator9.e(_context2.t5);
|
|
491
|
-
case 164:
|
|
492
|
-
_context2.prev = 164;
|
|
493
|
-
_iterator9.f();
|
|
494
|
-
return _context2.finish(164);
|
|
495
|
-
case 167:
|
|
496
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances)) {
|
|
497
|
-
_context2.next = 193;
|
|
498
|
-
break;
|
|
499
|
-
}
|
|
500
|
-
_iterator10 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances);
|
|
501
|
-
_context2.prev = 169;
|
|
502
|
-
_iterator10.s();
|
|
503
|
-
case 171:
|
|
504
|
-
if ((_step10 = _iterator10.n()).done) {
|
|
505
|
-
_context2.next = 185;
|
|
506
|
-
break;
|
|
507
|
-
}
|
|
508
|
-
_dataset6 = _step10.value;
|
|
509
|
-
_datasetName6 = _path["default"].basename(_dataset6.filename, ".xml");
|
|
510
|
-
if (!(options.dataset && _datasetName6 !== options.dataset)) {
|
|
511
|
-
_context2.next = 176;
|
|
512
|
-
break;
|
|
513
|
-
}
|
|
514
|
-
return _context2.abrupt("continue", 183);
|
|
515
|
-
case 176:
|
|
516
|
-
cloneGit(gitGroupUrl, _datasetName6, dataDir);
|
|
517
|
-
analyzeAndRemove(_datasetName6, options);
|
|
518
|
-
_datasetRawDir6 = _path["default"].join(dataDir, _datasetName6);
|
|
519
|
-
_datasetCleanDir6 = _datasetRawDir6 + "_nettoye";
|
|
520
|
-
_context2.next = 182;
|
|
521
|
-
return processFiles(_datasetRawDir6, _datasetCleanDir6, [], _cleaners.cleanCompteRendu, {
|
|
522
|
-
fromJson: _debats.Convert.toCompteRendu,
|
|
523
|
-
toJson: _debats.Convert.compteRenduToJson
|
|
524
|
-
}, options);
|
|
525
|
-
case 182:
|
|
526
|
-
exitCode = commitGit(_datasetCleanDir6, options, exitCode, ["."]);
|
|
527
|
-
case 183:
|
|
528
|
-
_context2.next = 171;
|
|
529
|
-
break;
|
|
530
|
-
case 185:
|
|
531
|
-
_context2.next = 190;
|
|
532
|
-
break;
|
|
533
|
-
case 187:
|
|
534
|
-
_context2.prev = 187;
|
|
535
|
-
_context2.t6 = _context2["catch"](169);
|
|
536
|
-
_iterator10.e(_context2.t6);
|
|
537
|
-
case 190:
|
|
538
|
-
_context2.prev = 190;
|
|
539
|
-
_iterator10.f();
|
|
540
|
-
return _context2.finish(190);
|
|
541
|
-
case 193:
|
|
542
|
-
// Restore standard conversion of dates to JSON.
|
|
543
|
-
Date.prototype.toJSON = _dates.existingDateToJson;
|
|
544
|
-
return _context2.abrupt("return", exitCode);
|
|
545
|
-
case 195:
|
|
546
|
-
case "end":
|
|
547
|
-
return _context2.stop();
|
|
548
|
-
}
|
|
549
|
-
}, _callee2, null, [[8, 29, 32, 35], [37, 55, 58, 61], [63, 81, 84, 87], [89, 109, 112, 115], [117, 135, 138, 141], [143, 161, 164, 167], [169, 187, 190, 193]]);
|
|
550
|
-
}));
|
|
551
|
-
return _cleanReorganizedData.apply(this, arguments);
|
|
552
|
-
}
|
|
553
|
-
function analyzeAndRemove(datasetName, options) {
|
|
554
|
-
var dataDir = options.dataDir;
|
|
555
|
-
var datasetRawDir = _path["default"].join(dataDir, datasetName);
|
|
556
|
-
var datasetCleanDir = datasetRawDir + "_nettoye";
|
|
557
|
-
if (!options.silent) {
|
|
558
|
-
console.log("Cleaning directory: ".concat(datasetCleanDir, "\u2026"));
|
|
559
|
-
}
|
|
560
|
-
_fsExtra["default"].ensureDirSync(datasetCleanDir);
|
|
561
|
-
var _iterator = _createForOfIteratorHelper(_fsExtra["default"].readdirSync(datasetCleanDir)),
|
|
562
|
-
_step;
|
|
563
|
-
try {
|
|
564
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
565
|
-
var filename = _step.value;
|
|
566
|
-
if (filename[0] === ".") {
|
|
567
|
-
continue;
|
|
568
|
-
}
|
|
569
|
-
var pathname = _path["default"].join(datasetCleanDir, filename);
|
|
570
|
-
_fsExtra["default"].removeSync(pathname);
|
|
571
|
-
}
|
|
572
|
-
} catch (err) {
|
|
573
|
-
_iterator.e(err);
|
|
574
|
-
} finally {
|
|
575
|
-
_iterator.f();
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
function commitAndPushUid(repositoryDir, options, subdirectories) {
|
|
579
|
-
var error = false;
|
|
580
|
-
if (options.commit) {
|
|
581
|
-
git.uidBranchUpdate(repositoryDir, subdirectories, options["no-reset-after-commit"]);
|
|
582
|
-
var _iterator2 = _createForOfIteratorHelper(options.remote || []),
|
|
583
|
-
_step2;
|
|
584
|
-
try {
|
|
585
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
586
|
-
var remote = _step2.value;
|
|
587
|
-
try {
|
|
588
|
-
git.run(repositoryDir, "push --quiet ".concat(remote, " uid:uid"));
|
|
589
|
-
} catch (childProcess) {
|
|
590
|
-
error = true;
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
} catch (err) {
|
|
594
|
-
_iterator2.e(err);
|
|
595
|
-
} finally {
|
|
596
|
-
_iterator2.f();
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
return error;
|
|
600
|
-
}
|
|
601
|
-
function main(argv) {
|
|
602
|
-
var options = parseArgs(argv);
|
|
603
|
-
return cleanReorganizedData(options);
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
/* istanbul ignore if */
|
|
607
|
-
if (process.argv[1].endsWith("clean_reorganized_data.ts")) {
|
|
608
|
-
main(process.argv).then(process.exit);
|
|
609
|
-
}
|
|
610
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX3JldHJpZXZlX2RvY3VtZW50cyIsIl9kYXRlcyIsIl9maWxlX3N5c3RlbXMiLCJnaXQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9zY3J1dGlucyIsIl9xdWVzdGlvbnMiLCJfZGViYXRzIiwiX2NsaV9oZWxwZXJzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInByb3RvdHlwZSIsIm8iLCJ2YWx1ZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNsb25lT3B0aW9uIiwiY29tbWl0T3B0aW9uIiwicmVtb3RlT3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJjYXRlZ29yaWVzT3B0aW9uIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwicHVsbE9wdGlvbiIsImZldGNoRG9jdW1lbnRzT3B0aW9uIiwicGFyc2VEb2N1bWVudHNPcHRpb24iLCJkb2N1bWVudEZvcm1hdE9wdGlvbiIsImFsaWFzIiwiaGVscCIsIlN0cmluZyIsIkJvb2xlYW4iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY2xvbmVHaXQiLCJnaXRHcm91cFVybCIsImRhdGFzZXROYW1lIiwiZGF0YURpciIsImNsb25lIiwiY29uY2F0IiwiY29tbWl0R2l0IiwiZGF0YXNldENsZWFuRGlyIiwiZXhpdENvZGUiLCJzdWJkaXJlY3RvcmllcyIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiY2xlYW5BbmRWYWxpZGF0ZURhdGEiLCJkYXRhIiwiY2xlYW5lciIsImZyb21Kc29uIiwidG9Kc29uIiwibm9WYWxpZGF0ZSIsImpzb25EYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsInZhbGlkYXRlZERhdGEiLCJwcm9jZXNzRmlsZXMiLCJfeCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl9wcm9jZXNzRmlsZXMiLCJfY2FsbGVlIiwiZGF0YXNldFJhd0RpciIsIndhbGtEaXJQYXJhbXMiLCJkYXRhQ29udmVydGVyIiwicG9zdFByb2Nlc3NvciIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJmaWxlUGF0aEFycmF5IiwiZmlsZW5hbWUiLCJyYXdGaWxlUGF0aCIsInJhd0pzb24iLCJ2YWxpZGF0ZURhdGEiLCJjbGVhbkpzb24iLCJjbGVhbkZpbGVQYXRoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIndhbGtEaXIiLCJlbmRzV2l0aCIsInBhdGgiLCJqb2luIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInZlcmJvc2UiLCJjb25zb2xlIiwibG9nIiwicGFyc2UiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJ0MCIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiX3g4IiwiX2NsZWFuUmVvcmdhbml6ZWREYXRhIiwiX2NhbGxlZTIiLCJfb3B0aW9ucyRjbG9uZSIsImVuYWJsZWREYXRhc2V0cyIsImNob3NlbkRhdGFzZXRzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImRhdGFzZXQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2RhdGFzZXQiLCJfZGF0YXNldE5hbWUiLCJfZGF0YXNldFJhd0RpciIsIl9kYXRhc2V0Q2xlYW5EaXIiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiX2RhdGFzZXQyIiwiX2RhdGFzZXROYW1lMiIsIl9kYXRhc2V0UmF3RGlyMiIsIl9kYXRhc2V0Q2xlYW5EaXIyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsIl9kYXRhc2V0MyIsIl9kYXRhc2V0TmFtZTMiLCJfZGF0YXNldFJhd0RpcjMiLCJfZGF0YXNldENsZWFuRGlyMyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJfZGF0YXNldDQiLCJfZGF0YXNldE5hbWU0IiwiX2RhdGFzZXRSYXdEaXI0IiwiX2RhdGFzZXRDbGVhbkRpcjQiLCJfaXRlcmF0b3I5IiwiX3N0ZXA5IiwiX2RhdGFzZXQ1IiwiX2RhdGFzZXROYW1lNSIsIl9kYXRhc2V0UmF3RGlyNSIsIl9kYXRhc2V0Q2xlYW5EaXI1IiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiX2RhdGFzZXQ2IiwiX2RhdGFzZXROYW1lNiIsIl9kYXRhc2V0UmF3RGlyNiIsIl9kYXRhc2V0Q2xlYW5EaXI2IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiRGF0ZSIsInRvSlNPTiIsInBhdGNoZWREYXRlVG9Kc29uIiwidHJpbSIsInJlcGxhY2UiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImJhc2VuYW1lIiwicHVsbCIsInJlc2V0QW5kUHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJjbGVhbkFjdGV1ciIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJhY3RldXJUb0pzb24iLCJjbGVhbk9yZ2FuZSIsInRvT3JnYW5lIiwib3JnYW5lVG9Kc29uIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJjbGVhblJldW5pb24iLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsInJldW5pb25Ub0pzb24iLCJ0MSIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJjbGVhbkFtZW5kZW1lbnQiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50VG9Kc29uIiwidDIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRUb0pzb24iLCJkb3dubG9hZEFuZFBhcnNlIiwiY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJkb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbiIsInQzIiwiU2NydXRpbnMiLCJzY3J1dGlucyIsImNsZWFuU2NydXRpbiIsIlNjcnV0aW5zQ29udmVydCIsInRvU2NydXRpbiIsInNjcnV0aW5Ub0pzb24iLCJ0NCIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsImNsZWFuUXVlc3Rpb24iLCJRdWVzdGlvbnNDb252ZXJ0IiwidG9RdWVzdGlvbiIsInF1ZXN0aW9uVG9Kc29uIiwidDUiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY2xlYW5Db21wdGVSZW5kdSIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwidG9Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1VG9Kc29uIiwidDYiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJzaWxlbnQiLCJfaXRlcmF0b3IiLCJyZWFkZGlyU3luYyIsIl9zdGVwIiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwiZXJyIiwicmVwb3NpdG9yeURpciIsImVycm9yIiwidWlkQnJhbmNoVXBkYXRlIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInJ1biIsImNoaWxkUHJvY2VzcyIsIm1haW4iLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHtcbiAgZGF0YXNldHMsXG4gIEVuYWJsZWREYXRhc2V0cyxcbiAgZ2V0RW5hYmxlZERhdGFzZXRzLFxuICBmaWx0ZXJCeUxlZ2lzbGF0dXJlLFxufSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZG93bmxvYWRBbmRQYXJzZSB9IGZyb20gXCIuL3JldHJpZXZlX2RvY3VtZW50c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuLi90eXBlcy9kZWJhdHNcIlxuaW1wb3J0IHtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgdmVyYm9zZU9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgZmV0Y2hEb2N1bWVudHNPcHRpb24sXG4gIHBhcnNlRG9jdW1lbnRzT3B0aW9uLFxuICBkb2N1bWVudEZvcm1hdE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIGNsb25lT3B0aW9uLFxuICAgIGNvbW1pdE9wdGlvbixcbiAgICByZW1vdGVPcHRpb24sXG4gICAgbGVnaXNsYXR1cmVPcHRpb24sXG4gICAgY2F0ZWdvcmllc09wdGlvbixcbiAgICBzaWxlbnRPcHRpb24sXG4gICAgdmVyYm9zZU9wdGlvbixcbiAgICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgICBwdWxsT3B0aW9uLFxuICAgIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxuICAgIHBhcnNlRG9jdW1lbnRzT3B0aW9uLFxuICAgIGRvY3VtZW50Rm9ybWF0T3B0aW9uLFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImRcIixcbiAgICAgIGhlbHA6IFwic2luZ2xlIGRhdGFzZXQgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbmFtZTogXCJkYXRhc2V0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcImRvIG5vdCByZXNldCAtLWhhcmQgYWZ0ZXIgY29tbWl0IHRvIHNhdmUgSS9PIGlmIHRoZSB3b3JraW5nIHRyZWUgaXMgdG8gYmUgZGlzY2FyZGVkXCIsXG4gICAgICBuYW1lOiBcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcIlZcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgdmFsaWRhdGUgZGF0YVwiLFxuICAgICAgbmFtZTogXCJuby12YWxpZGF0ZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gY2xvbmVHaXQoXG4gIGdpdEdyb3VwVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRhdGFzZXROYW1lOiBzdHJpbmcsXG4gIGRhdGFEaXI6IHN0cmluZyxcbik6IHZvaWQge1xuICBnaXQuY2xvbmUoZ2l0R3JvdXBVcmwsIGAke2RhdGFzZXROYW1lfV9uZXR0b3llYCwgZGF0YURpcilcbn1cblxuZnVuY3Rpb24gY29tbWl0R2l0KFxuICBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBleGl0Q29kZTogbnVtYmVyLFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogbnVtYmVyIHtcbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgIClcbiAgICBpZiAoXG4gICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgKSB7XG4gICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIHN1YmRpcmVjdG9yaWVzKSAmJlxuICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICkge1xuICAgIGV4aXRDb2RlID0gMVxuICB9XG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBjbGVhbkFuZFZhbGlkYXRlRGF0YTxUPihcbiAgZGF0YTogYW55LFxuICBjbGVhbmVyOiAoZGF0YTogVCkgPT4gdm9pZCxcbiAgZnJvbUpzb246IChqc29uOiBzdHJpbmcpID0+IFQsXG4gIHRvSnNvbjogKGRhdGE6IFQpID0+IHN0cmluZyxcbiAgbm9WYWxpZGF0ZTogQm9vbGVhbixcbik6IHN0cmluZyB8IG51bGwge1xuICBjbGVhbmVyKGRhdGEpXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBCeSBjb252ZW50aW9uOiBhbiBlbXB0eSBvYmplY3QgbXVzdCBiZSBkZWxldGVkLlxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QganNvbkRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKVxuICBpZiAoIW5vVmFsaWRhdGUpIHtcbiAgICByZXR1cm4ganNvbkRhdGFcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2YWxpZGF0ZWREYXRhOiBUID0gZnJvbUpzb24oanNvbkRhdGEpXG4gICAgcmV0dXJuIHRvSnNvbih2YWxpZGF0ZWREYXRhKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NGaWxlczxUPihcbiAgZGF0YXNldFJhd0Rpcjogc3RyaW5nLFxuICBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyxcbiAgd2Fsa0RpclBhcmFtczogYW55W10sXG4gIGNsZWFuZXI6IGFueSxcbiAgZGF0YUNvbnZlcnRlcjogeyBmcm9tSnNvbjogYW55OyB0b0pzb246IGFueSB9LFxuICBvcHRpb25zOiBhbnksXG4gIHBvc3RQcm9jZXNzb3I/OiBhbnksXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBmaWxlUGF0aEFycmF5IG9mIHdhbGtEaXIoZGF0YXNldFJhd0Rpciwgd2Fsa0RpclBhcmFtcykpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGVQYXRoQXJyYXlbZmlsZVBhdGhBcnJheS5sZW5ndGggLSAxXVxuICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkgY29udGludWVcbiAgICBjb25zdCByYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5maWxlUGF0aEFycmF5KVxuICAgIGNvbnN0IHJhd0pzb24gPSBmcy5yZWFkRmlsZVN5bmMocmF3RmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYENsZWFuaW5nIGZpbGU6ICR7cmF3RmlsZVBhdGh9Li4uYClcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXdKc29uKVxuICAgIGNvbnN0IHZhbGlkYXRlRGF0YSA9ICFvcHRpb25zW1wibm8tdmFsaWRhdGVcIl1cbiAgICBjb25zdCBjbGVhbkpzb24gPSBjbGVhbkFuZFZhbGlkYXRlRGF0YTxUPihcbiAgICAgIGRhdGEsXG4gICAgICBjbGVhbmVyLFxuICAgICAgZGF0YUNvbnZlcnRlci5mcm9tSnNvbixcbiAgICAgIGRhdGFDb252ZXJ0ZXIudG9Kc29uLFxuICAgICAgdmFsaWRhdGVEYXRhLFxuICAgIClcblxuICAgIGlmIChjbGVhbkpzb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNsZWFuRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCAuLi5maWxlUGF0aEFycmF5KVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoY2xlYW5GaWxlUGF0aCkpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGNsZWFuRmlsZVBhdGgsIGNsZWFuSnNvbiwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcblxuICAgICAgaWYgKHBvc3RQcm9jZXNzb3IpIHtcbiAgICAgICAgYXdhaXQgcG9zdFByb2Nlc3NvcihkYXRhLCBkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnM6IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGRhdGFEaXI6IHN0cmluZyA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmU/LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgICAgIGdpdC5yZXNldEFuZFB1bGwoZGF0YXNldENsZWFuRGlyKVxuICAgICAgfVxuXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPEFjdGV1cj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiYWN0ZXVyc1wiXSxcbiAgICAgICAgY2xlYW5BY3RldXIsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIsXG4gICAgICAgICAgdG9Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8T3JnYW5lPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJvcmdhbmVzXCJdLFxuICAgICAgICBjbGVhbk9yZ2FuZSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZSxcbiAgICAgICAgICB0b0pzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1xuICAgICAgICBcImFjdGV1cnNcIixcbiAgICAgICAgXCJvcmdhbmVzXCIsXG4gICAgICBdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPFJldW5pb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblJldW5pb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uLFxuICAgICAgICAgIHRvSnNvbjogQWdlbmRhc0NvbnZlcnQucmV1bmlvblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPEFtZW5kZW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudCxcbiAgICAgICAgICB0b0pzb246IEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPERvY3VtZW50PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJkb2N1bWVudHNcIl0sXG4gICAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQsXG4gICAgICAgICAgdG9Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZG93bmxvYWRBbmRQYXJzZSxcbiAgICAgIClcbiAgICAgIGF3YWl0IHByb2Nlc3NGaWxlczxEb3NzaWVyUGFybGVtZW50YWlyZT4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiZG9zc2llcnNcIl0sXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICB0b0pzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXG4gICAgICAgIFwiZG9jdW1lbnRzXCIsXG4gICAgICAgIFwiZG9zc2llcnNcIixcbiAgICAgIF0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG5cbiAgICAgIGF3YWl0IHByb2Nlc3NGaWxlczxTY3J1dGluPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5TY3J1dGluLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4sXG4gICAgICAgICAgdG9Kc29uOiBTY3J1dGluc0NvbnZlcnQuc2NydXRpblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8UXVlc3Rpb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblF1ZXN0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbixcbiAgICAgICAgICB0b0pzb246IFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPENvbXB0ZVJlbmR1PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1LFxuICAgICAgICAgIHRvSnNvbjogQ29tcHRlc1JlbmR1c0NvbnZlcnQuY29tcHRlUmVuZHVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyBkaXJlY3Rvcnk6ICR7ZGF0YXNldENsZWFuRGlyfeKApmApXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldENsZWFuRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgZmlsZW5hbWUpXG4gICAgZnMucmVtb3ZlU3luYyhwYXRobmFtZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoVWlkKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBnaXQudWlkQnJhbmNoVXBkYXRlKFxuICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgIHN1YmRpcmVjdG9yaWVzLFxuICAgICAgb3B0aW9uc1tcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiXSxcbiAgICApXG4gICAgZm9yIChjb25zdCByZW1vdGUgb2Ygb3B0aW9ucy5yZW1vdGUgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggLS1xdWlldCAke3JlbW90ZX0gdWlkOnVpZGApXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImNsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHNcIikpIHtcbiAgbWFpbihwcm9jZXNzLmFyZ3YpLnRoZW4ocHJvY2Vzcy5leGl0KVxufVxuIl0s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
|