@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,595 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.symbol.js");
|
|
4
|
-
require("core-js/modules/es.symbol.description.js");
|
|
5
|
-
require("core-js/modules/es.symbol.async-iterator.js");
|
|
6
|
-
require("core-js/modules/es.symbol.iterator.js");
|
|
7
|
-
require("core-js/modules/es.symbol.to-primitive.js");
|
|
8
|
-
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
9
|
-
require("core-js/modules/es.array.for-each.js");
|
|
10
|
-
require("core-js/modules/es.array.from.js");
|
|
11
|
-
require("core-js/modules/es.array.is-array.js");
|
|
12
|
-
require("core-js/modules/es.array.iterator.js");
|
|
13
|
-
require("core-js/modules/es.array.reverse.js");
|
|
14
|
-
require("core-js/modules/es.array.slice.js");
|
|
15
|
-
require("core-js/modules/es.date.to-primitive.js");
|
|
16
|
-
require("core-js/modules/es.date.to-string.js");
|
|
17
|
-
require("core-js/modules/es.function.name.js");
|
|
18
|
-
require("core-js/modules/es.json.to-string-tag.js");
|
|
19
|
-
require("core-js/modules/es.math.to-string-tag.js");
|
|
20
|
-
require("core-js/modules/es.object.create.js");
|
|
21
|
-
require("core-js/modules/es.object.define-property.js");
|
|
22
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
23
|
-
require("core-js/modules/es.object.get-prototype-of.js");
|
|
24
|
-
require("core-js/modules/es.object.set-prototype-of.js");
|
|
25
|
-
require("core-js/modules/es.object.to-string.js");
|
|
26
|
-
require("core-js/modules/es.promise.js");
|
|
27
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
28
|
-
require("core-js/modules/es.string.iterator.js");
|
|
29
|
-
require("core-js/modules/es.weak-map.js");
|
|
30
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
31
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
32
|
-
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); }
|
|
33
|
-
Object.defineProperty(exports, "__esModule", {
|
|
34
|
-
value: true
|
|
35
|
-
});
|
|
36
|
-
exports.BugsHelper = void 0;
|
|
37
|
-
exports.checkoutFix = checkoutFix;
|
|
38
|
-
exports.main = main;
|
|
39
|
-
exports.mergeFix = mergeFix;
|
|
40
|
-
require("core-js/modules/es.array.concat.js");
|
|
41
|
-
require("core-js/modules/es.array.includes.js");
|
|
42
|
-
require("core-js/modules/es.array.join.js");
|
|
43
|
-
require("core-js/modules/es.number.constructor.js");
|
|
44
|
-
require("core-js/modules/es.object.keys.js");
|
|
45
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
46
|
-
require("core-js/modules/es.string.ends-with.js");
|
|
47
|
-
require("core-js/modules/es.string.includes.js");
|
|
48
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
49
|
-
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
50
|
-
var _commandLineUsage = _interopRequireDefault(require("command-line-usage"));
|
|
51
|
-
var _file_systems = require("../file_systems");
|
|
52
|
-
var _bugs = require("../../src/bugs");
|
|
53
|
-
var git = _interopRequireWildcard(require("../../src/git"));
|
|
54
|
-
var _datasets = require("../../src/datasets");
|
|
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 _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
59
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
60
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
61
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
62
|
-
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; }
|
|
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 _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
69
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
70
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
71
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
72
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
73
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
74
|
-
function parseArgs(argv) {
|
|
75
|
-
var optionsDefinitions = [{
|
|
76
|
-
description: "pathname to the directory containing the dataset",
|
|
77
|
-
defaultOption: true,
|
|
78
|
-
name: "data",
|
|
79
|
-
type: String
|
|
80
|
-
}, {
|
|
81
|
-
description: "pathname to the directory containing the HTML comptes rendus de seance",
|
|
82
|
-
name: "cr",
|
|
83
|
-
type: String
|
|
84
|
-
}, {
|
|
85
|
-
description: "pathname to the directory to commit",
|
|
86
|
-
name: "commit",
|
|
87
|
-
type: String
|
|
88
|
-
}, {
|
|
89
|
-
description: "only consider this bug",
|
|
90
|
-
name: "bug",
|
|
91
|
-
type: String
|
|
92
|
-
}, {
|
|
93
|
-
description: "pathname to the directory where the check outputs will be stored",
|
|
94
|
-
name: "output",
|
|
95
|
-
type: String
|
|
96
|
-
}, {
|
|
97
|
-
description: "dataset (possible values must include exactly one of ".concat((0, _datasets.getDatasets)(), ")"),
|
|
98
|
-
name: "dataset",
|
|
99
|
-
type: String
|
|
100
|
-
}, {
|
|
101
|
-
description: "schema (possible values are ".concat((0, _datasets.getSchemas)(), ")"),
|
|
102
|
-
name: "schema",
|
|
103
|
-
type: String
|
|
104
|
-
}, {
|
|
105
|
-
description: "directory in which bugs are found (default .)",
|
|
106
|
-
name: "bugs-dir",
|
|
107
|
-
type: String
|
|
108
|
-
}, {
|
|
109
|
-
description: "increase verbosity",
|
|
110
|
-
name: "verbose",
|
|
111
|
-
type: Boolean
|
|
112
|
-
}, {
|
|
113
|
-
description: "debug information",
|
|
114
|
-
name: "debug",
|
|
115
|
-
type: Boolean
|
|
116
|
-
}, {
|
|
117
|
-
description: "check",
|
|
118
|
-
name: "check",
|
|
119
|
-
type: Boolean
|
|
120
|
-
}, {
|
|
121
|
-
description: "fix",
|
|
122
|
-
name: "fix",
|
|
123
|
-
type: Boolean
|
|
124
|
-
}, {
|
|
125
|
-
name: "help",
|
|
126
|
-
description: "Print this usage guide."
|
|
127
|
-
}];
|
|
128
|
-
var sections = [{
|
|
129
|
-
header: "Cross check data consistency and fix problems",
|
|
130
|
-
content: ""
|
|
131
|
-
}, {
|
|
132
|
-
header: "Options",
|
|
133
|
-
optionList: optionsDefinitions
|
|
134
|
-
}];
|
|
135
|
-
var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
|
|
136
|
-
argv: argv
|
|
137
|
-
});
|
|
138
|
-
if (options.dataset) {
|
|
139
|
-
if (!(0, _datasets.validDataset)(options.dataset)) {
|
|
140
|
-
console.error("--dataset ".concat(options.dataset));
|
|
141
|
-
options.help = true;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
if (options.schema) {
|
|
145
|
-
if (!(0, _datasets.getSchemas)().includes(options.schema)) {
|
|
146
|
-
console.error("--schema ".concat(options.schema));
|
|
147
|
-
options.help = true;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
if (options.commit) {
|
|
151
|
-
if (!_fsExtra["default"].existsSync(options.commit)) {
|
|
152
|
-
console.error("".concat(options.commit, " does not exist"));
|
|
153
|
-
options.help = true;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
if (options.debug) options.verbose = true;
|
|
157
|
-
if ("help" in options) {
|
|
158
|
-
var usage = (0, _commandLineUsage["default"])(sections);
|
|
159
|
-
console.warn(usage);
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
|
-
return options;
|
|
163
|
-
}
|
|
164
|
-
var BugsHelper = exports.BugsHelper = /*#__PURE__*/function () {
|
|
165
|
-
function BugsHelper(options) {
|
|
166
|
-
_classCallCheck(this, BugsHelper);
|
|
167
|
-
_defineProperty(this, "options", void 0);
|
|
168
|
-
_defineProperty(this, "bugs", void 0);
|
|
169
|
-
this.options = options;
|
|
170
|
-
this.bugs = new _bugs.SchemaBugs(this.options);
|
|
171
|
-
}
|
|
172
|
-
return _createClass(BugsHelper, [{
|
|
173
|
-
key: "check",
|
|
174
|
-
value: function () {
|
|
175
|
-
var _check = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
176
|
-
var analysis, _iterator, _step, file, content;
|
|
177
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
178
|
-
while (1) switch (_context.prev = _context.next) {
|
|
179
|
-
case 0:
|
|
180
|
-
analysis = {};
|
|
181
|
-
_context.next = 3;
|
|
182
|
-
return this.bugs.preCheck();
|
|
183
|
-
case 3:
|
|
184
|
-
if (this.options.verbose) console.log("check ".concat(this.options.data));
|
|
185
|
-
_iterator = _createForOfIteratorHelper((0, _file_systems.getFiles)([this.options.data]));
|
|
186
|
-
_context.prev = 5;
|
|
187
|
-
_iterator.s();
|
|
188
|
-
case 7:
|
|
189
|
-
if ((_step = _iterator.n()).done) {
|
|
190
|
-
_context.next = 15;
|
|
191
|
-
break;
|
|
192
|
-
}
|
|
193
|
-
file = _step.value;
|
|
194
|
-
content = (0, _file_systems.load)(file);
|
|
195
|
-
_context.next = 12;
|
|
196
|
-
return this.bugs.check(content, file);
|
|
197
|
-
case 12:
|
|
198
|
-
analysis[file] = _context.sent;
|
|
199
|
-
case 13:
|
|
200
|
-
_context.next = 7;
|
|
201
|
-
break;
|
|
202
|
-
case 15:
|
|
203
|
-
_context.next = 20;
|
|
204
|
-
break;
|
|
205
|
-
case 17:
|
|
206
|
-
_context.prev = 17;
|
|
207
|
-
_context.t0 = _context["catch"](5);
|
|
208
|
-
_iterator.e(_context.t0);
|
|
209
|
-
case 20:
|
|
210
|
-
_context.prev = 20;
|
|
211
|
-
_iterator.f();
|
|
212
|
-
return _context.finish(20);
|
|
213
|
-
case 23:
|
|
214
|
-
_context.next = 25;
|
|
215
|
-
return this.bugs.postCheck(analysis);
|
|
216
|
-
case 25:
|
|
217
|
-
_context.next = 27;
|
|
218
|
-
return this.show(analysis);
|
|
219
|
-
case 27:
|
|
220
|
-
if (!this.options.output) {
|
|
221
|
-
_context.next = 30;
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
_context.next = 30;
|
|
225
|
-
return this.store(analysis);
|
|
226
|
-
case 30:
|
|
227
|
-
return _context.abrupt("return", 0);
|
|
228
|
-
case 31:
|
|
229
|
-
case "end":
|
|
230
|
-
return _context.stop();
|
|
231
|
-
}
|
|
232
|
-
}, _callee, this, [[5, 17, 20, 23]]);
|
|
233
|
-
}));
|
|
234
|
-
function check() {
|
|
235
|
-
return _check.apply(this, arguments);
|
|
236
|
-
}
|
|
237
|
-
return check;
|
|
238
|
-
}()
|
|
239
|
-
}, {
|
|
240
|
-
key: "show",
|
|
241
|
-
value: function () {
|
|
242
|
-
var _show = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(analysis) {
|
|
243
|
-
var _i, _Object$keys, filename, bug, _i2, _Object$keys2, name, result, log;
|
|
244
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
245
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
246
|
-
case 0:
|
|
247
|
-
for (_i = 0, _Object$keys = Object.keys(analysis); _i < _Object$keys.length; _i++) {
|
|
248
|
-
filename = _Object$keys[_i];
|
|
249
|
-
bug = analysis[filename];
|
|
250
|
-
for (_i2 = 0, _Object$keys2 = Object.keys(bug); _i2 < _Object$keys2.length; _i2++) {
|
|
251
|
-
name = _Object$keys2[_i2];
|
|
252
|
-
result = bug[name];
|
|
253
|
-
if (result != null) {
|
|
254
|
-
log = void 0;
|
|
255
|
-
if (result["status"] == "needs-fixing") {
|
|
256
|
-
log = console.error;
|
|
257
|
-
} else if (this.options.verbose) {
|
|
258
|
-
log = console.log;
|
|
259
|
-
}
|
|
260
|
-
if (log != undefined) {
|
|
261
|
-
log("".concat(name, " finds ").concat(filename, " ").concat(result["status"]));
|
|
262
|
-
log(result["info"].join("\n"));
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
case 1:
|
|
268
|
-
case "end":
|
|
269
|
-
return _context2.stop();
|
|
270
|
-
}
|
|
271
|
-
}, _callee2, this);
|
|
272
|
-
}));
|
|
273
|
-
function show(_x) {
|
|
274
|
-
return _show.apply(this, arguments);
|
|
275
|
-
}
|
|
276
|
-
return show;
|
|
277
|
-
}()
|
|
278
|
-
}, {
|
|
279
|
-
key: "store",
|
|
280
|
-
value: function () {
|
|
281
|
-
var _store = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(analysis) {
|
|
282
|
-
var name2reports, _i3, _Object$keys3, filename, bug, _i4, _Object$keys4, name, _i5, _Object$keys5, _name, reports, n, lines, status2lines, _i6, _Object$keys6, _filename, report, status, l, _iterator2, _step2, info, _i7, _arr, _arr$_i, _status, label, output;
|
|
283
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
284
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
285
|
-
case 0:
|
|
286
|
-
name2reports = {};
|
|
287
|
-
for (_i3 = 0, _Object$keys3 = Object.keys(analysis); _i3 < _Object$keys3.length; _i3++) {
|
|
288
|
-
filename = _Object$keys3[_i3];
|
|
289
|
-
bug = analysis[filename];
|
|
290
|
-
for (_i4 = 0, _Object$keys4 = Object.keys(bug); _i4 < _Object$keys4.length; _i4++) {
|
|
291
|
-
name = _Object$keys4[_i4];
|
|
292
|
-
if (!(name in name2reports)) name2reports[name] = {};
|
|
293
|
-
name2reports[name][filename] = bug[name];
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
_i5 = 0, _Object$keys5 = Object.keys(name2reports);
|
|
297
|
-
case 3:
|
|
298
|
-
if (!(_i5 < _Object$keys5.length)) {
|
|
299
|
-
_context3.next = 30;
|
|
300
|
-
break;
|
|
301
|
-
}
|
|
302
|
-
_name = _Object$keys5[_i5];
|
|
303
|
-
reports = name2reports[_name];
|
|
304
|
-
n = _name.split("-")[1];
|
|
305
|
-
lines = ["## Bug [".concat(_name, "](https://git.en-root.org/tricoteuses/tricoteuses-assemblee-qa/issues/").concat(Number(n), ")"), "This report was created by the **check** function of [".concat(_name, "](https://git.en-root.org/tricoteuses/tricoteuses-assemblee/-/blob/master/src/bugs/").concat(_name, ".ts).")];
|
|
306
|
-
status2lines = {
|
|
307
|
-
"needs-fixing": [],
|
|
308
|
-
"will-be-fixed": [],
|
|
309
|
-
"already-fixed": []
|
|
310
|
-
};
|
|
311
|
-
_i6 = 0, _Object$keys6 = Object.keys(reports);
|
|
312
|
-
case 10:
|
|
313
|
-
if (!(_i6 < _Object$keys6.length)) {
|
|
314
|
-
_context3.next = 24;
|
|
315
|
-
break;
|
|
316
|
-
}
|
|
317
|
-
_filename = _Object$keys6[_i6];
|
|
318
|
-
report = reports[_filename];
|
|
319
|
-
if (!(report == null || report["status"] == "ok")) {
|
|
320
|
-
_context3.next = 15;
|
|
321
|
-
break;
|
|
322
|
-
}
|
|
323
|
-
return _context3.abrupt("continue", 21);
|
|
324
|
-
case 15:
|
|
325
|
-
if (!(report["status"] in status2lines)) console.error("".concat(_filename, " status ").concat(report["status"], " unknown"));
|
|
326
|
-
status = report["status"];
|
|
327
|
-
l = status2lines[status];
|
|
328
|
-
if (status == "will-be-fixed") l.push("* ".concat((0, _datasets.diffUpstream)(_filename)));else l.push("* ".concat((0, _datasets.masterUrl)(_filename)));
|
|
329
|
-
_iterator2 = _createForOfIteratorHelper(report["info"]);
|
|
330
|
-
try {
|
|
331
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
332
|
-
info = _step2.value;
|
|
333
|
-
l.push(" * ".concat(info));
|
|
334
|
-
}
|
|
335
|
-
} catch (err) {
|
|
336
|
-
_iterator2.e(err);
|
|
337
|
-
} finally {
|
|
338
|
-
_iterator2.f();
|
|
339
|
-
}
|
|
340
|
-
case 21:
|
|
341
|
-
_i6++;
|
|
342
|
-
_context3.next = 10;
|
|
343
|
-
break;
|
|
344
|
-
case 24:
|
|
345
|
-
for (_i7 = 0, _arr = [["needs-fixing", "The following files must be fixed"], ["already-fixed", "The following files no longer need a fix"], ["will-be-fixed", "The following files have been successfully fixed"]]; _i7 < _arr.length; _i7++) {
|
|
346
|
-
_arr$_i = _slicedToArray(_arr[_i7], 2), _status = _arr$_i[0], label = _arr$_i[1];
|
|
347
|
-
lines.push("### ".concat(label));
|
|
348
|
-
lines = lines.concat(status2lines[_status]);
|
|
349
|
-
}
|
|
350
|
-
output = "".concat(this.options.output, "/").concat(_name, ".md");
|
|
351
|
-
_fsExtra["default"].writeFileSync(output, lines.join("\n"), {
|
|
352
|
-
encoding: "utf8"
|
|
353
|
-
});
|
|
354
|
-
case 27:
|
|
355
|
-
_i5++;
|
|
356
|
-
_context3.next = 3;
|
|
357
|
-
break;
|
|
358
|
-
case 30:
|
|
359
|
-
case "end":
|
|
360
|
-
return _context3.stop();
|
|
361
|
-
}
|
|
362
|
-
}, _callee3, this);
|
|
363
|
-
}));
|
|
364
|
-
function store(_x2) {
|
|
365
|
-
return _store.apply(this, arguments);
|
|
366
|
-
}
|
|
367
|
-
return store;
|
|
368
|
-
}()
|
|
369
|
-
}, {
|
|
370
|
-
key: "fix",
|
|
371
|
-
value: function () {
|
|
372
|
-
var _fix = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
373
|
-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
374
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
375
|
-
case 0:
|
|
376
|
-
_context4.next = 2;
|
|
377
|
-
return this.bugs.preFix();
|
|
378
|
-
case 2:
|
|
379
|
-
_context4.next = 4;
|
|
380
|
-
return this.bugs.fix((0, _file_systems.getFiles)([this.options.data]));
|
|
381
|
-
case 4:
|
|
382
|
-
return _context4.abrupt("return", 0);
|
|
383
|
-
case 5:
|
|
384
|
-
case "end":
|
|
385
|
-
return _context4.stop();
|
|
386
|
-
}
|
|
387
|
-
}, _callee4, this);
|
|
388
|
-
}));
|
|
389
|
-
function fix() {
|
|
390
|
-
return _fix.apply(this, arguments);
|
|
391
|
-
}
|
|
392
|
-
return fix;
|
|
393
|
-
}()
|
|
394
|
-
}, {
|
|
395
|
-
key: "main",
|
|
396
|
-
value: function () {
|
|
397
|
-
var _main = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
398
|
-
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
399
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
400
|
-
case 0:
|
|
401
|
-
if (!this.options.check) {
|
|
402
|
-
_context5.next = 4;
|
|
403
|
-
break;
|
|
404
|
-
}
|
|
405
|
-
return _context5.abrupt("return", this.check());
|
|
406
|
-
case 4:
|
|
407
|
-
return _context5.abrupt("return", this.fix());
|
|
408
|
-
case 5:
|
|
409
|
-
case "end":
|
|
410
|
-
return _context5.stop();
|
|
411
|
-
}
|
|
412
|
-
}, _callee5, this);
|
|
413
|
-
}));
|
|
414
|
-
function main() {
|
|
415
|
-
return _main.apply(this, arguments);
|
|
416
|
-
}
|
|
417
|
-
return main;
|
|
418
|
-
}()
|
|
419
|
-
}]);
|
|
420
|
-
}();
|
|
421
|
-
function checkoutFix(_x3) {
|
|
422
|
-
return _checkoutFix.apply(this, arguments);
|
|
423
|
-
}
|
|
424
|
-
function _checkoutFix() {
|
|
425
|
-
_checkoutFix = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(options) {
|
|
426
|
-
var c, v;
|
|
427
|
-
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
428
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
429
|
-
case 0:
|
|
430
|
-
c = options.commit;
|
|
431
|
-
if (!(c == undefined)) {
|
|
432
|
-
_context6.next = 3;
|
|
433
|
-
break;
|
|
434
|
-
}
|
|
435
|
-
return _context6.abrupt("return");
|
|
436
|
-
case 3:
|
|
437
|
-
v = options.verbose;
|
|
438
|
-
git.run(c, "checkout --quiet master", v);
|
|
439
|
-
if (/tmp/.test(git.run(c, "branch", v))) git.run(c, "branch -D tmp", v);
|
|
440
|
-
git.run(c, "checkout --quiet -b tmp master", v);
|
|
441
|
-
if (/Merge bugfixes/.test(git.run(c, "log --oneline -1", v))) git.run(c, "revert --mainline 1 --no-edit HEAD", v);
|
|
442
|
-
git.run(c, "merge --no-ff -m 'Merge upstream' upstream/uid", v);
|
|
443
|
-
if (/bugfixes/.test(git.run(c, "branch", v))) git.run(c, "branch -D bugfixes", v);
|
|
444
|
-
git.run(c, "checkout --quiet -b bugfixes", v);
|
|
445
|
-
case 11:
|
|
446
|
-
case "end":
|
|
447
|
-
return _context6.stop();
|
|
448
|
-
}
|
|
449
|
-
}, _callee6);
|
|
450
|
-
}));
|
|
451
|
-
return _checkoutFix.apply(this, arguments);
|
|
452
|
-
}
|
|
453
|
-
function mergeFix(_x4) {
|
|
454
|
-
return _mergeFix.apply(this, arguments);
|
|
455
|
-
}
|
|
456
|
-
function _mergeFix() {
|
|
457
|
-
_mergeFix = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(options) {
|
|
458
|
-
var c, v;
|
|
459
|
-
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
460
|
-
while (1) switch (_context7.prev = _context7.next) {
|
|
461
|
-
case 0:
|
|
462
|
-
c = options.commit;
|
|
463
|
-
if (!(c == undefined)) {
|
|
464
|
-
_context7.next = 3;
|
|
465
|
-
break;
|
|
466
|
-
}
|
|
467
|
-
return _context7.abrupt("return");
|
|
468
|
-
case 3:
|
|
469
|
-
v = options.verbose;
|
|
470
|
-
git.run(c, "checkout --quiet tmp", v);
|
|
471
|
-
git.run(c, "merge --no-ff -m 'Merge bugfixes' bugfixes", v);
|
|
472
|
-
git.run(c, "branch -D bugfixes", v);
|
|
473
|
-
git.run(c, "checkout --quiet master", v);
|
|
474
|
-
if (!git.test(c, "diff --quiet tmp master", v)) git.run(c, "merge --ff-only tmp", v);
|
|
475
|
-
git.run(c, "branch -D tmp", v);
|
|
476
|
-
case 10:
|
|
477
|
-
case "end":
|
|
478
|
-
return _context7.stop();
|
|
479
|
-
}
|
|
480
|
-
}, _callee7);
|
|
481
|
-
}));
|
|
482
|
-
return _mergeFix.apply(this, arguments);
|
|
483
|
-
}
|
|
484
|
-
function main(_x5) {
|
|
485
|
-
return _main2.apply(this, arguments);
|
|
486
|
-
}
|
|
487
|
-
/* istanbul ignore if */
|
|
488
|
-
function _main2() {
|
|
489
|
-
_main2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(argv) {
|
|
490
|
-
var options, directorySchema, _iterator3, _step3, d, helper, status;
|
|
491
|
-
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
492
|
-
while (1) switch (_context8.prev = _context8.next) {
|
|
493
|
-
case 0:
|
|
494
|
-
options = parseArgs(argv);
|
|
495
|
-
if (!(options === null)) {
|
|
496
|
-
_context8.next = 3;
|
|
497
|
-
break;
|
|
498
|
-
}
|
|
499
|
-
return _context8.abrupt("return", 1);
|
|
500
|
-
case 3:
|
|
501
|
-
directorySchema = [];
|
|
502
|
-
if (!options.schema) {
|
|
503
|
-
_context8.next = 8;
|
|
504
|
-
break;
|
|
505
|
-
}
|
|
506
|
-
directorySchema = [[options.data, options.schema]];
|
|
507
|
-
_context8.next = 14;
|
|
508
|
-
break;
|
|
509
|
-
case 8:
|
|
510
|
-
if (!options.dataset) {
|
|
511
|
-
_context8.next = 12;
|
|
512
|
-
break;
|
|
513
|
-
}
|
|
514
|
-
directorySchema = (0, _datasets.datasetDirectorySchema)(options.dataset);
|
|
515
|
-
_context8.next = 14;
|
|
516
|
-
break;
|
|
517
|
-
case 12:
|
|
518
|
-
console.error("either --schema or --dataset is required");
|
|
519
|
-
return _context8.abrupt("return", 1);
|
|
520
|
-
case 14:
|
|
521
|
-
_context8.next = 16;
|
|
522
|
-
return checkoutFix(options);
|
|
523
|
-
case 16:
|
|
524
|
-
_iterator3 = _createForOfIteratorHelper(directorySchema);
|
|
525
|
-
_context8.prev = 17;
|
|
526
|
-
_iterator3.s();
|
|
527
|
-
case 19:
|
|
528
|
-
if ((_step3 = _iterator3.n()).done) {
|
|
529
|
-
_context8.next = 42;
|
|
530
|
-
break;
|
|
531
|
-
}
|
|
532
|
-
d = _step3.value;
|
|
533
|
-
options.schema = d[1];
|
|
534
|
-
options.data = d[0];
|
|
535
|
-
if (options.debug) console.log("working on ".concat(options.data, " with schema ").concat(options.schema));
|
|
536
|
-
helper = void 0;
|
|
537
|
-
_context8.prev = 25;
|
|
538
|
-
helper = new BugsHelper(options);
|
|
539
|
-
_context8.next = 34;
|
|
540
|
-
break;
|
|
541
|
-
case 29:
|
|
542
|
-
_context8.prev = 29;
|
|
543
|
-
_context8.t0 = _context8["catch"](25);
|
|
544
|
-
if (_context8.t0 instanceof _file_systems.GetFileNotFoundError) {
|
|
545
|
-
_context8.next = 33;
|
|
546
|
-
break;
|
|
547
|
-
}
|
|
548
|
-
throw _context8.t0;
|
|
549
|
-
case 33:
|
|
550
|
-
return _context8.abrupt("continue", 40);
|
|
551
|
-
case 34:
|
|
552
|
-
if (options.verbose) console.log("working on files ".concat(options.data, " with schema ").concat(options.schema));
|
|
553
|
-
_context8.next = 37;
|
|
554
|
-
return helper.main();
|
|
555
|
-
case 37:
|
|
556
|
-
status = _context8.sent;
|
|
557
|
-
if (!(status != 0)) {
|
|
558
|
-
_context8.next = 40;
|
|
559
|
-
break;
|
|
560
|
-
}
|
|
561
|
-
return _context8.abrupt("return", status);
|
|
562
|
-
case 40:
|
|
563
|
-
_context8.next = 19;
|
|
564
|
-
break;
|
|
565
|
-
case 42:
|
|
566
|
-
_context8.next = 47;
|
|
567
|
-
break;
|
|
568
|
-
case 44:
|
|
569
|
-
_context8.prev = 44;
|
|
570
|
-
_context8.t1 = _context8["catch"](17);
|
|
571
|
-
_iterator3.e(_context8.t1);
|
|
572
|
-
case 47:
|
|
573
|
-
_context8.prev = 47;
|
|
574
|
-
_iterator3.f();
|
|
575
|
-
return _context8.finish(47);
|
|
576
|
-
case 50:
|
|
577
|
-
_context8.next = 52;
|
|
578
|
-
return mergeFix(options);
|
|
579
|
-
case 52:
|
|
580
|
-
return _context8.abrupt("return", 0);
|
|
581
|
-
case 53:
|
|
582
|
-
case "end":
|
|
583
|
-
return _context8.stop();
|
|
584
|
-
}
|
|
585
|
-
}, _callee8, null, [[17, 44, 47, 50], [25, 29]]);
|
|
586
|
-
}));
|
|
587
|
-
return _main2.apply(this, arguments);
|
|
588
|
-
}
|
|
589
|
-
if (process.argv[1].endsWith("bugs_helper.ts")) main(process.argv).then(function (exitCode) {
|
|
590
|
-
process.exit(exitCode);
|
|
591
|
-
})["catch"](function (error) {
|
|
592
|
-
console.error(error);
|
|
593
|
-
process.exit(1);
|
|
594
|
-
});
|
|
595
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnNFeHRyYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbW1hbmRMaW5lQXJncyIsIl9jb21tYW5kTGluZVVzYWdlIiwiX2ZpbGVfc3lzdGVtcyIsIl9idWdzIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZGF0YXNldHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJsIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJmIiwibyIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInByb3RvdHlwZSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJoIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9uIiwiRiIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHRPcHRpb24iLCJjb25jYXQiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwiY29tbWl0IiwiZnMiLCJleGlzdHNTeW5jIiwiZGVidWciLCJ2ZXJib3NlIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIkJ1Z3NIZWxwZXIiLCJleHBvcnRzIiwiYnVncyIsIlNjaGVtYUJ1Z3MiLCJfY2hlY2siLCJfY2FsbGVlIiwiYW5hbHlzaXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImZpbGUiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJlQ2hlY2siLCJsb2ciLCJkYXRhIiwiZ2V0RmlsZXMiLCJsb2FkIiwiY2hlY2siLCJ0MCIsInBvc3RDaGVjayIsInNob3ciLCJvdXRwdXQiLCJzdG9yZSIsIl9zaG93IiwiX2NhbGxlZTIiLCJfaSIsIl9PYmplY3Qka2V5cyIsImZpbGVuYW1lIiwiYnVnIiwiX2kyIiwiX09iamVjdCRrZXlzMiIsInJlc3VsdCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInVuZGVmaW5lZCIsImpvaW4iLCJfeCIsIl9zdG9yZSIsIl9jYWxsZWUzIiwibmFtZTJyZXBvcnRzIiwiX2kzIiwiX09iamVjdCRrZXlzMyIsIl9pNCIsIl9PYmplY3Qka2V5czQiLCJfaTUiLCJfT2JqZWN0JGtleXM1IiwiX25hbWUiLCJyZXBvcnRzIiwibGluZXMiLCJzdGF0dXMybGluZXMiLCJfaTYiLCJfT2JqZWN0JGtleXM2IiwiX2ZpbGVuYW1lIiwicmVwb3J0Iiwic3RhdHVzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImluZm8iLCJfaTciLCJfYXJyIiwiX2FyciRfaSIsIl9zdGF0dXMiLCJsYWJlbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInNwbGl0IiwiZGlmZlVwc3RyZWFtIiwibWFzdGVyVXJsIiwiZXJyIiwid3JpdGVGaWxlU3luYyIsImVuY29kaW5nIiwiX3gyIiwiX2ZpeCIsIl9jYWxsZWU0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwicHJlRml4IiwiZml4IiwiX21haW4iLCJfY2FsbGVlNSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIm1haW4iLCJjaGVja291dEZpeCIsIl94MyIsIl9jaGVja291dEZpeCIsIl9jYWxsZWU2IiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwicnVuIiwibWVyZ2VGaXgiLCJfeDQiLCJfbWVyZ2VGaXgiLCJfY2FsbGVlNyIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyIsIl94NSIsIl9tYWluMiIsIl9jYWxsZWU4IiwiZGlyZWN0b3J5U2NoZW1hIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImhlbHBlciIsIl9jYWxsZWU4JCIsIl9jb250ZXh0OCIsImRhdGFzZXREaXJlY3RvcnlTY2hlbWEiLCJHZXRGaWxlTm90Rm91bmRFcnJvciIsInQxIiwicHJvY2VzcyIsImVuZHNXaXRoIiwiZXhpdENvZGUiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvYnVnc19oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzLCBHZXRGaWxlTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgU2NoZW1hQnVncyB9IGZyb20gXCIuLi8uLi9zcmMvYnVnc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uLy4uL3NyYy9naXRcIlxuaW1wb3J0IHtcbiAgdmFsaWREYXRhc2V0LFxuICBnZXREYXRhc2V0cyxcbiAgZ2V0U2NoZW1hcyxcbiAgZGF0YXNldERpcmVjdG9yeVNjaGVtYSxcbiAgZGlmZlVwc3RyZWFtLFxuICBtYXN0ZXJVcmwsXG59IGZyb20gXCIuLi8uLi9zcmMvZGF0YXNldHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBkYXRhc2V0XCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIEhUTUwgY29tcHRlcyByZW5kdXMgZGUgc2VhbmNlXCIsXG4gICAgICBuYW1lOiBcImNyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHRvIGNvbW1pdFwiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIm9ubHkgY29uc2lkZXIgdGhpcyBidWdcIixcbiAgICAgIG5hbWU6IFwiYnVnXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBjaGVjayBvdXRwdXRzIHdpbGwgYmUgc3RvcmVkXCIsXG4gICAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiZGlyZWN0b3J5IGluIHdoaWNoIGJ1Z3MgYXJlIGZvdW5kIChkZWZhdWx0IC4pXCIsXG4gICAgICBuYW1lOiBcImJ1Z3MtZGlyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImRlYnVnIGluZm9ybWF0aW9uXCIsXG4gICAgICBuYW1lOiBcImRlYnVnXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiY2hlY2tcIixcbiAgICAgIG5hbWU6IFwiY2hlY2tcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJmaXhcIixcbiAgICAgIG5hbWU6IFwiZml4XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkNyb3NzIGNoZWNrIGRhdGEgY29uc2lzdGVuY3kgYW5kIGZpeCBwcm9ibGVtc1wiLFxuICAgICAgY29udGVudDogXCJcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhvcHRpb25zLmNvbW1pdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7b3B0aW9ucy5jb21taXR9IGRvZXMgbm90IGV4aXN0YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5kZWJ1Zykgb3B0aW9ucy52ZXJib3NlID0gdHJ1ZVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmV4cG9ydCBjbGFzcyBCdWdzSGVscGVyIHtcbiAgb3B0aW9uczogYW55XG4gIGJ1Z3M6IGFueVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IGFueSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICB0aGlzLmJ1Z3MgPSBuZXcgU2NoZW1hQnVncyh0aGlzLm9wdGlvbnMpXG4gIH1cblxuICBhc3luYyBjaGVjaygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGFuYWx5c2lzOiBhbnkgPSB7fVxuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVDaGVjaygpXG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgY2hlY2sgJHt0aGlzLm9wdGlvbnMuZGF0YX1gKVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhbdGhpcy5vcHRpb25zLmRhdGFdKSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGxvYWQoZmlsZSlcbiAgICAgIGFuYWx5c2lzW2ZpbGVdID0gYXdhaXQgdGhpcy5idWdzLmNoZWNrKGNvbnRlbnQsIGZpbGUpXG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYnVncy5wb3N0Q2hlY2soYW5hbHlzaXMpXG4gICAgYXdhaXQgdGhpcy5zaG93KGFuYWx5c2lzKVxuICAgIGlmICh0aGlzLm9wdGlvbnMub3V0cHV0KSBhd2FpdCB0aGlzLnN0b3JlKGFuYWx5c2lzKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBhc3luYyBzaG93KGFuYWx5c2lzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBidWdbbmFtZV1cbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgbGV0IGxvZ1xuICAgICAgICAgIGlmIChyZXN1bHRbXCJzdGF0dXNcIl0gPT0gXCJuZWVkcy1maXhpbmdcIikge1xuICAgICAgICAgICAgbG9nID0gY29uc29sZS5lcnJvclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGxvZyA9IGNvbnNvbGUubG9nXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsb2cgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2coYCR7bmFtZX0gZmluZHMgJHtmaWxlbmFtZX0gJHtyZXN1bHRbXCJzdGF0dXNcIl19YClcbiAgICAgICAgICAgIGxvZyhyZXN1bHRbXCJpbmZvXCJdLmpvaW4oXCJcXG5cIikpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RvcmUoYW5hbHlzaXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5hbWUycmVwb3J0czogYW55ID0ge31cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBpZiAoIShuYW1lIGluIG5hbWUycmVwb3J0cykpIG5hbWUycmVwb3J0c1tuYW1lXSA9IHt9XG4gICAgICAgIG5hbWUycmVwb3J0c1tuYW1lXVtmaWxlbmFtZV0gPSBidWdbbmFtZV1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG5hbWUycmVwb3J0cykpIHtcbiAgICAgIGNvbnN0IHJlcG9ydHMgPSBuYW1lMnJlcG9ydHNbbmFtZV1cbiAgICAgIGNvbnN0IG4gPSBuYW1lLnNwbGl0KFwiLVwiKVsxXVxuICAgICAgbGV0IGxpbmVzOiBhbnkgPSBbXG4gICAgICAgIGAjIyBCdWcgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS1xYS9pc3N1ZXMvJHtOdW1iZXIoXG4gICAgICAgICAgbixcbiAgICAgICAgKX0pYCxcbiAgICAgICAgYFRoaXMgcmVwb3J0IHdhcyBjcmVhdGVkIGJ5IHRoZSAqKmNoZWNrKiogZnVuY3Rpb24gb2YgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS8tL2Jsb2IvbWFzdGVyL3NyYy9idWdzLyR7bmFtZX0udHMpLmAsXG4gICAgICBdXG4gICAgICBjb25zdCBzdGF0dXMybGluZXM6IGFueSA9IHtcbiAgICAgICAgXCJuZWVkcy1maXhpbmdcIjogW10sXG4gICAgICAgIFwid2lsbC1iZS1maXhlZFwiOiBbXSxcbiAgICAgICAgXCJhbHJlYWR5LWZpeGVkXCI6IFtdLFxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhyZXBvcnRzKSkge1xuICAgICAgICBjb25zdCByZXBvcnQgPSByZXBvcnRzW2ZpbGVuYW1lXVxuICAgICAgICBpZiAocmVwb3J0ID09IG51bGwgfHwgcmVwb3J0W1wic3RhdHVzXCJdID09IFwib2tcIikgY29udGludWVcbiAgICAgICAgaWYgKCEocmVwb3J0W1wic3RhdHVzXCJdIGluIHN0YXR1czJsaW5lcykpXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgJHtmaWxlbmFtZX0gc3RhdHVzICR7cmVwb3J0W1wic3RhdHVzXCJdfSB1bmtub3duYClcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVwb3J0W1wic3RhdHVzXCJdXG4gICAgICAgIGxldCBsID0gc3RhdHVzMmxpbmVzW3N0YXR1c11cbiAgICAgICAgaWYgKHN0YXR1cyA9PSBcIndpbGwtYmUtZml4ZWRcIikgbC5wdXNoKGAqICR7ZGlmZlVwc3RyZWFtKGZpbGVuYW1lKX1gKVxuICAgICAgICBlbHNlIGwucHVzaChgKiAke21hc3RlclVybChmaWxlbmFtZSl9YClcbiAgICAgICAgZm9yIChjb25zdCBpbmZvIG9mIHJlcG9ydFtcImluZm9cIl0pIGwucHVzaChgICAqICR7aW5mb31gKVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBbc3RhdHVzLCBsYWJlbF0gb2YgW1xuICAgICAgICBbXCJuZWVkcy1maXhpbmdcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG11c3QgYmUgZml4ZWRcIl0sXG4gICAgICAgIFtcImFscmVhZHktZml4ZWRcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG5vIGxvbmdlciBuZWVkIGEgZml4XCJdLFxuICAgICAgICBbXCJ3aWxsLWJlLWZpeGVkXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGZpeGVkXCJdLFxuICAgICAgXSkge1xuICAgICAgICBsaW5lcy5wdXNoKGAjIyMgJHtsYWJlbH1gKVxuICAgICAgICBsaW5lcyA9IGxpbmVzLmNvbmNhdChzdGF0dXMybGluZXNbc3RhdHVzXSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IG91dHB1dCA9IGAke3RoaXMub3B0aW9ucy5vdXRwdXR9LyR7bmFtZX0ubWRgXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dCwgbGluZXMuam9pbihcIlxcblwiKSwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpeCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVGaXgoKVxuICAgIGF3YWl0IHRoaXMuYnVncy5maXgoZ2V0RmlsZXMoW3RoaXMub3B0aW9ucy5kYXRhXSkpXG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIGFzeW5jIG1haW4oKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNoZWNrKSByZXR1cm4gdGhpcy5jaGVjaygpXG4gICAgZWxzZSByZXR1cm4gdGhpcy5maXgoKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja291dEZpeChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYyA9IG9wdGlvbnMuY29tbWl0XG4gIGlmIChjID09IHVuZGVmaW5lZCkgcmV0dXJuXG4gIGNvbnN0IHYgPSBvcHRpb25zLnZlcmJvc2VcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICgvdG1wLy50ZXN0KGdpdC5ydW4oYywgXCJicmFuY2hcIiwgdikpKSBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiB0bXAgbWFzdGVyXCIsIHYpXG4gIGlmICgvTWVyZ2UgYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImxvZyAtLW9uZWxpbmUgLTFcIiwgdikpKVxuICAgIGdpdC5ydW4oYywgXCJyZXZlcnQgLS1tYWlubGluZSAxIC0tbm8tZWRpdCBIRUFEXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJtZXJnZSAtLW5vLWZmIC1tICdNZXJnZSB1cHN0cmVhbScgdXBzdHJlYW0vdWlkXCIsIHYpXG4gIGlmICgvYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImJyYW5jaFwiLCB2KSkpXG4gICAgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCBidWdmaXhlc1wiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiBidWdmaXhlc1wiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVyZ2VGaXgob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGMgPSBvcHRpb25zLmNvbW1pdFxuICBpZiAoYyA9PSB1bmRlZmluZWQpIHJldHVyblxuICBjb25zdCB2ID0gb3B0aW9ucy52ZXJib3NlXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwibWVyZ2UgLS1uby1mZiAtbSAnTWVyZ2UgYnVnZml4ZXMnIGJ1Z2ZpeGVzXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJicmFuY2ggLUQgYnVnZml4ZXNcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICghZ2l0LnRlc3QoYywgXCJkaWZmIC0tcXVpZXQgdG1wIG1hc3RlclwiLCB2KSlcbiAgICBnaXQucnVuKGMsIFwibWVyZ2UgLS1mZi1vbmx5IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZGlyZWN0b3J5U2NoZW1hID0gW11cbiAgaWYgKG9wdGlvbnMuc2NoZW1hKSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gW1tvcHRpb25zLmRhdGEsIG9wdGlvbnMuc2NoZW1hXV1cbiAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGFzZXQpIHtcbiAgICBkaXJlY3RvcnlTY2hlbWEgPSBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hKG9wdGlvbnMuZGF0YXNldClcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKFwiZWl0aGVyIC0tc2NoZW1hIG9yIC0tZGF0YXNldCBpcyByZXF1aXJlZFwiKVxuICAgIHJldHVybiAxXG4gIH1cbiAgYXdhaXQgY2hlY2tvdXRGaXgob3B0aW9ucylcbiAgZm9yIChjb25zdCBkIG9mIGRpcmVjdG9yeVNjaGVtYSkge1xuICAgIG9wdGlvbnMuc2NoZW1hID0gZFsxXVxuICAgIG9wdGlvbnMuZGF0YSA9IGRbMF1cbiAgICBpZiAob3B0aW9ucy5kZWJ1ZylcbiAgICAgIGNvbnNvbGUubG9nKGB3b3JraW5nIG9uICR7b3B0aW9ucy5kYXRhfSB3aXRoIHNjaGVtYSAke29wdGlvbnMuc2NoZW1hfWApXG4gICAgbGV0IGhlbHBlclxuICAgIHRyeSB7XG4gICAgICBoZWxwZXIgPSBuZXcgQnVnc0hlbHBlcihvcHRpb25zKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBHZXRGaWxlTm90Rm91bmRFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGhlbHBlci5tYWluKClcbiAgICBpZiAoc3RhdHVzICE9IDApIHJldHVybiBzdGF0dXNcbiAgfVxuICBhd2FpdCBtZXJnZUZpeChvcHRpb25zKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJidWdzX2hlbHBlci50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKGV4aXRDb2RlKSA9PiB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|