@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
package/lib/types/scrutins.mjs
DELETED
|
@@ -1,503 +0,0 @@
|
|
|
1
|
-
// To parse this data:
|
|
2
|
-
//
|
|
3
|
-
// import { Convert, Scrutins } from "./file";
|
|
4
|
-
//
|
|
5
|
-
// const scrutins = Convert.toScrutins(json);
|
|
6
|
-
//
|
|
7
|
-
// These functions will throw an error if the JSON doesn't
|
|
8
|
-
// match the expected interface, even if the JSON is valid.
|
|
9
|
-
|
|
10
|
-
export let ModePublicationDesVotes = /*#__PURE__*/function (ModePublicationDesVotes) {
|
|
11
|
-
ModePublicationDesVotes["DecompteDissidentsPositionGroupe"] = "DecompteDissidentsPositionGroupe";
|
|
12
|
-
ModePublicationDesVotes["DecompteNominatif"] = "DecompteNominatif";
|
|
13
|
-
return ModePublicationDesVotes;
|
|
14
|
-
}({});
|
|
15
|
-
export let Code = /*#__PURE__*/function (Code) {
|
|
16
|
-
Code["Adopt\xE9"] = "adopt\xE9";
|
|
17
|
-
Code["Rejet\xE9"] = "rejet\xE9";
|
|
18
|
-
return Code;
|
|
19
|
-
}({});
|
|
20
|
-
export let Libelle = /*#__PURE__*/function (Libelle) {
|
|
21
|
-
Libelle["LAssembl\xE9eNationaleAAdopt\xE9"] = "l'Assembl\xE9e nationale a adopt\xE9";
|
|
22
|
-
Libelle["LAssembl\xE9eNationaleNAPasAdopt\xE9"] = "L'Assembl\xE9e nationale n'a pas adopt\xE9";
|
|
23
|
-
Libelle["LeCongr\xE8sDuParlementAAdopt\xE9"] = "Le Congr\xE8s du Parlement a adopt\xE9";
|
|
24
|
-
Libelle["LeCongr\xE8sDuParlementNAPasAdopt\xE9"] = "Le Congr\xE8s du Parlement n'a pas adopt\xE9";
|
|
25
|
-
return Libelle;
|
|
26
|
-
}({});
|
|
27
|
-
export let CodeTypeVote = /*#__PURE__*/function (CodeTypeVote) {
|
|
28
|
-
CodeTypeVote["Moc"] = "MOC";
|
|
29
|
-
CodeTypeVote["Sat"] = "SAT";
|
|
30
|
-
CodeTypeVote["Spo"] = "SPO";
|
|
31
|
-
CodeTypeVote["Sps"] = "SPS";
|
|
32
|
-
CodeTypeVote["Ssg"] = "SSG";
|
|
33
|
-
return CodeTypeVote;
|
|
34
|
-
}({});
|
|
35
|
-
export let LibelleTypeVote = /*#__PURE__*/function (LibelleTypeVote) {
|
|
36
|
-
LibelleTypeVote["MotionDeCensure"] = "motion de censure";
|
|
37
|
-
LibelleTypeVote["ScrutinPublicOrdinaire"] = "scrutin public ordinaire";
|
|
38
|
-
LibelleTypeVote["ScrutinPublicSolennel"] = "scrutin public solennel";
|
|
39
|
-
LibelleTypeVote["Scrutin\xC0LaTribune"] = "scrutin \xE0 la tribune";
|
|
40
|
-
LibelleTypeVote["ScrutinSolennelCongr\xE8s"] = "Scrutin solennel congr\xE8s";
|
|
41
|
-
return LibelleTypeVote;
|
|
42
|
-
}({});
|
|
43
|
-
export let TypeMajorite = /*#__PURE__*/function (TypeMajorite) {
|
|
44
|
-
TypeMajorite["Majorit\xE9AbsolueDesSuffragesExprim\xE9s"] = "Majorit\xE9 absolue des suffrages exprim\xE9s";
|
|
45
|
-
TypeMajorite["majorit\xE9AbsolueDesSuffragesExprim\xE9s"] = "majorit\xE9 absolue des suffrages exprim\xE9s";
|
|
46
|
-
TypeMajorite["majorit\xE9DesMembresComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composant l'Assembl\xE9e nationale";
|
|
47
|
-
TypeMajorite["majorit\xE9DesMembresComposantsComposantLAssembl\xE9e"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e";
|
|
48
|
-
TypeMajorite["majorit\xE9DesMembresComposantsComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e nationale";
|
|
49
|
-
TypeMajorite["Majorit\xE9RequisePourUnCongr\xE8s"] = "Majorit\xE9 requise pour un Congr\xE8s";
|
|
50
|
-
TypeMajorite["Majorit\xE9RequisePourUneMotionDeCensure"] = "Majorit\xE9 requise pour une motion de censure";
|
|
51
|
-
return TypeMajorite;
|
|
52
|
-
}({});
|
|
53
|
-
export let CausePositionVote = /*#__PURE__*/function (CausePositionVote) {
|
|
54
|
-
CausePositionVote["Mg"] = "MG";
|
|
55
|
-
CausePositionVote["Pan"] = "PAN";
|
|
56
|
-
CausePositionVote["Pse"] = "PSE";
|
|
57
|
-
return CausePositionVote;
|
|
58
|
-
}({});
|
|
59
|
-
export let PositionMajoritaire = /*#__PURE__*/function (PositionMajoritaire) {
|
|
60
|
-
PositionMajoritaire["Abstention"] = "abstention";
|
|
61
|
-
PositionMajoritaire["Contre"] = "contre";
|
|
62
|
-
PositionMajoritaire["Pour"] = "pour";
|
|
63
|
-
return PositionMajoritaire;
|
|
64
|
-
}({});
|
|
65
|
-
export let LieuVote = /*#__PURE__*/function (LieuVote) {
|
|
66
|
-
LieuVote["Congr\xE8s"] = "Congr\xE8s";
|
|
67
|
-
LieuVote["H\xE9micycle"] = "H\xE9micycle";
|
|
68
|
-
LieuVote["Salons"] = "Salons";
|
|
69
|
-
return LieuVote;
|
|
70
|
-
}({});
|
|
71
|
-
|
|
72
|
-
// Converts JSON strings to/from your types
|
|
73
|
-
// and asserts the results of JSON.parse at runtime
|
|
74
|
-
export class Convert {
|
|
75
|
-
static toScrutins(json) {
|
|
76
|
-
return cast(JSON.parse(json), r("Scrutins"));
|
|
77
|
-
}
|
|
78
|
-
static scrutinsToJson(value) {
|
|
79
|
-
return JSON.stringify(uncast(value, r("Scrutins")), null, 2);
|
|
80
|
-
}
|
|
81
|
-
static toScrutin(json) {
|
|
82
|
-
return cast(JSON.parse(json), r("Scrutin"));
|
|
83
|
-
}
|
|
84
|
-
static scrutinToJson(value) {
|
|
85
|
-
return JSON.stringify(uncast(value, r("Scrutin")), null, 2);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
function invalidValue(typ, val, key = "") {
|
|
89
|
-
if (key) {
|
|
90
|
-
throw Error(`Invalid value for key "${key}". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);
|
|
91
|
-
}
|
|
92
|
-
throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);
|
|
93
|
-
}
|
|
94
|
-
function jsonToJSProps(typ) {
|
|
95
|
-
if (typ.jsonToJS === undefined) {
|
|
96
|
-
const map = {};
|
|
97
|
-
typ.props.forEach(p => map[p.json] = {
|
|
98
|
-
key: p.js,
|
|
99
|
-
typ: p.typ
|
|
100
|
-
});
|
|
101
|
-
typ.jsonToJS = map;
|
|
102
|
-
}
|
|
103
|
-
return typ.jsonToJS;
|
|
104
|
-
}
|
|
105
|
-
function jsToJSONProps(typ) {
|
|
106
|
-
if (typ.jsToJSON === undefined) {
|
|
107
|
-
const map = {};
|
|
108
|
-
typ.props.forEach(p => map[p.js] = {
|
|
109
|
-
key: p.json,
|
|
110
|
-
typ: p.typ
|
|
111
|
-
});
|
|
112
|
-
typ.jsToJSON = map;
|
|
113
|
-
}
|
|
114
|
-
return typ.jsToJSON;
|
|
115
|
-
}
|
|
116
|
-
function transform(val, typ, getProps, key = "") {
|
|
117
|
-
function transformPrimitive(typ, val) {
|
|
118
|
-
if (typeof typ === typeof val) return val;
|
|
119
|
-
return invalidValue(typ, val, key);
|
|
120
|
-
}
|
|
121
|
-
function transformUnion(typs, val) {
|
|
122
|
-
// val must validate against one typ in typs
|
|
123
|
-
const l = typs.length;
|
|
124
|
-
for (let i = 0; i < l; i++) {
|
|
125
|
-
const typ = typs[i];
|
|
126
|
-
try {
|
|
127
|
-
return transform(val, typ, getProps);
|
|
128
|
-
} catch (_) {}
|
|
129
|
-
}
|
|
130
|
-
return invalidValue(typs, val);
|
|
131
|
-
}
|
|
132
|
-
function transformEnum(cases, val) {
|
|
133
|
-
if (cases.indexOf(val) !== -1) return val;
|
|
134
|
-
return invalidValue(cases, val);
|
|
135
|
-
}
|
|
136
|
-
function transformArray(typ, val) {
|
|
137
|
-
// val must be an array with no invalid elements
|
|
138
|
-
if (!Array.isArray(val)) return invalidValue("array", val);
|
|
139
|
-
return val.map(el => transform(el, typ, getProps));
|
|
140
|
-
}
|
|
141
|
-
function transformDate(val) {
|
|
142
|
-
if (val === null) {
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
const d = new Date(val);
|
|
146
|
-
if (isNaN(d.valueOf())) {
|
|
147
|
-
return invalidValue("Date", val);
|
|
148
|
-
}
|
|
149
|
-
return d;
|
|
150
|
-
}
|
|
151
|
-
function transformObject(props, additional, val) {
|
|
152
|
-
if (val === null || typeof val !== "object" || Array.isArray(val)) {
|
|
153
|
-
return invalidValue("object", val);
|
|
154
|
-
}
|
|
155
|
-
const result = {};
|
|
156
|
-
Object.getOwnPropertyNames(props).forEach(key => {
|
|
157
|
-
const prop = props[key];
|
|
158
|
-
const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
|
|
159
|
-
result[prop.key] = transform(v, prop.typ, getProps, prop.key);
|
|
160
|
-
});
|
|
161
|
-
Object.getOwnPropertyNames(val).forEach(key => {
|
|
162
|
-
if (!Object.prototype.hasOwnProperty.call(props, key)) {
|
|
163
|
-
result[key] = transform(val[key], additional, getProps, key);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
return result;
|
|
167
|
-
}
|
|
168
|
-
if (typ === "any") return val;
|
|
169
|
-
if (typ === null) {
|
|
170
|
-
if (val === null) return val;
|
|
171
|
-
return invalidValue(typ, val);
|
|
172
|
-
}
|
|
173
|
-
// if (typ === false) return invalidValue(typ, val)
|
|
174
|
-
while (typeof typ === "object" && typ.ref !== undefined) {
|
|
175
|
-
typ = typeMap[typ.ref];
|
|
176
|
-
}
|
|
177
|
-
if (Array.isArray(typ)) return transformEnum(typ, val);
|
|
178
|
-
if (typeof typ === "object") {
|
|
179
|
-
return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val);
|
|
180
|
-
}
|
|
181
|
-
// Numbers can be parsed by Date but shouldn't be.
|
|
182
|
-
if (typ === Date && typeof val !== "number") return transformDate(val);
|
|
183
|
-
return transformPrimitive(typ, val);
|
|
184
|
-
}
|
|
185
|
-
function cast(val, typ) {
|
|
186
|
-
return transform(val, typ, jsonToJSProps);
|
|
187
|
-
}
|
|
188
|
-
function uncast(val, typ) {
|
|
189
|
-
return transform(val, typ, jsToJSONProps);
|
|
190
|
-
}
|
|
191
|
-
function a(typ) {
|
|
192
|
-
return {
|
|
193
|
-
arrayItems: typ
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
function u(...typs) {
|
|
197
|
-
return {
|
|
198
|
-
unionMembers: typs
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
function o(props, additional) {
|
|
202
|
-
return {
|
|
203
|
-
props,
|
|
204
|
-
additional
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// function m(additional: any) {
|
|
209
|
-
// return { props: [], additional }
|
|
210
|
-
// }
|
|
211
|
-
|
|
212
|
-
function r(name) {
|
|
213
|
-
return {
|
|
214
|
-
ref: name
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
const typeMap = {
|
|
218
|
-
Scrutins: o([{
|
|
219
|
-
json: "scrutins",
|
|
220
|
-
js: "scrutins",
|
|
221
|
-
typ: a(r("Scrutin"))
|
|
222
|
-
}], false),
|
|
223
|
-
Scrutin: o([{
|
|
224
|
-
json: "schemaVersion",
|
|
225
|
-
js: "schemaVersion",
|
|
226
|
-
typ: u(undefined, "")
|
|
227
|
-
}, {
|
|
228
|
-
json: "uid",
|
|
229
|
-
js: "uid",
|
|
230
|
-
typ: ""
|
|
231
|
-
}, {
|
|
232
|
-
json: "numero",
|
|
233
|
-
js: "numero",
|
|
234
|
-
typ: ""
|
|
235
|
-
}, {
|
|
236
|
-
json: "organeRef",
|
|
237
|
-
js: "organeRef",
|
|
238
|
-
typ: ""
|
|
239
|
-
}, {
|
|
240
|
-
json: "legislature",
|
|
241
|
-
js: "legislature",
|
|
242
|
-
typ: ""
|
|
243
|
-
}, {
|
|
244
|
-
json: "sessionRef",
|
|
245
|
-
js: "sessionRef",
|
|
246
|
-
typ: ""
|
|
247
|
-
}, {
|
|
248
|
-
json: "seanceRef",
|
|
249
|
-
js: "seanceRef",
|
|
250
|
-
typ: ""
|
|
251
|
-
}, {
|
|
252
|
-
json: "dateScrutin",
|
|
253
|
-
js: "dateScrutin",
|
|
254
|
-
typ: Date
|
|
255
|
-
}, {
|
|
256
|
-
json: "quantiemeJourSeance",
|
|
257
|
-
js: "quantiemeJourSeance",
|
|
258
|
-
typ: ""
|
|
259
|
-
}, {
|
|
260
|
-
json: "typeVote",
|
|
261
|
-
js: "typeVote",
|
|
262
|
-
typ: r("TypeVote")
|
|
263
|
-
}, {
|
|
264
|
-
json: "sort",
|
|
265
|
-
js: "sort",
|
|
266
|
-
typ: r("SortScrutin")
|
|
267
|
-
}, {
|
|
268
|
-
json: "titre",
|
|
269
|
-
js: "titre",
|
|
270
|
-
typ: ""
|
|
271
|
-
}, {
|
|
272
|
-
json: "demandeur",
|
|
273
|
-
js: "demandeur",
|
|
274
|
-
typ: r("Demandeur")
|
|
275
|
-
}, {
|
|
276
|
-
json: "objet",
|
|
277
|
-
js: "objet",
|
|
278
|
-
typ: r("Objet")
|
|
279
|
-
}, {
|
|
280
|
-
json: "modePublicationDesVotes",
|
|
281
|
-
js: "modePublicationDesVotes",
|
|
282
|
-
typ: r("ModePublicationDesVotes")
|
|
283
|
-
}, {
|
|
284
|
-
json: "syntheseVote",
|
|
285
|
-
js: "syntheseVote",
|
|
286
|
-
typ: r("SyntheseVote")
|
|
287
|
-
}, {
|
|
288
|
-
json: "ventilationVotes",
|
|
289
|
-
js: "ventilationVotes",
|
|
290
|
-
typ: r("VentilationVotes")
|
|
291
|
-
}, {
|
|
292
|
-
json: "miseAuPoint",
|
|
293
|
-
js: "miseAuPoint",
|
|
294
|
-
typ: u(undefined, r("MiseAuPoint"))
|
|
295
|
-
}, {
|
|
296
|
-
json: "lieuVote",
|
|
297
|
-
js: "lieuVote",
|
|
298
|
-
typ: u(undefined, r("LieuVote"))
|
|
299
|
-
}], false),
|
|
300
|
-
Demandeur: o([{
|
|
301
|
-
json: "texte",
|
|
302
|
-
js: "texte",
|
|
303
|
-
typ: u(undefined, "")
|
|
304
|
-
}], false),
|
|
305
|
-
MiseAuPoint: o([{
|
|
306
|
-
json: "nonVotants",
|
|
307
|
-
js: "nonVotants",
|
|
308
|
-
typ: u(undefined, a(r("Votant")))
|
|
309
|
-
}, {
|
|
310
|
-
json: "pour",
|
|
311
|
-
js: "pour",
|
|
312
|
-
typ: u(undefined, a(r("Votant")))
|
|
313
|
-
}, {
|
|
314
|
-
json: "contre",
|
|
315
|
-
js: "contre",
|
|
316
|
-
typ: u(undefined, a(r("Votant")))
|
|
317
|
-
}, {
|
|
318
|
-
json: "abstentions",
|
|
319
|
-
js: "abstentions",
|
|
320
|
-
typ: u(undefined, a(r("Votant")))
|
|
321
|
-
}, {
|
|
322
|
-
json: "nonVotantsVolontaires",
|
|
323
|
-
js: "nonVotantsVolontaires",
|
|
324
|
-
typ: u(undefined, a(r("Votant")))
|
|
325
|
-
}, {
|
|
326
|
-
json: "dysfonctionnement",
|
|
327
|
-
js: "dysfonctionnement",
|
|
328
|
-
typ: u(undefined, r("Dysfonctionnement"))
|
|
329
|
-
}], false),
|
|
330
|
-
Dysfonctionnement: o([{
|
|
331
|
-
json: "nonVotants",
|
|
332
|
-
js: "nonVotants",
|
|
333
|
-
typ: u(undefined, a(r("Votant")))
|
|
334
|
-
}, {
|
|
335
|
-
json: "pour",
|
|
336
|
-
js: "pour",
|
|
337
|
-
typ: u(undefined, a(r("Votant")))
|
|
338
|
-
}, {
|
|
339
|
-
json: "contre",
|
|
340
|
-
js: "contre",
|
|
341
|
-
typ: u(undefined, a(r("Votant")))
|
|
342
|
-
}, {
|
|
343
|
-
json: "abstentions",
|
|
344
|
-
js: "abstentions",
|
|
345
|
-
typ: u(undefined, a(r("Votant")))
|
|
346
|
-
}, {
|
|
347
|
-
json: "nonVotantsVolontaires",
|
|
348
|
-
js: "nonVotantsVolontaires",
|
|
349
|
-
typ: u(undefined, a(r("Votant")))
|
|
350
|
-
}], false),
|
|
351
|
-
Objet: o([{
|
|
352
|
-
json: "libelle",
|
|
353
|
-
js: "libelle",
|
|
354
|
-
typ: ""
|
|
355
|
-
}], false),
|
|
356
|
-
SortScrutin: o([{
|
|
357
|
-
json: "code",
|
|
358
|
-
js: "code",
|
|
359
|
-
typ: r("Code")
|
|
360
|
-
}, {
|
|
361
|
-
json: "libelle",
|
|
362
|
-
js: "libelle",
|
|
363
|
-
typ: r("Libelle")
|
|
364
|
-
}], false),
|
|
365
|
-
SyntheseVote: o([{
|
|
366
|
-
json: "nombreVotants",
|
|
367
|
-
js: "nombreVotants",
|
|
368
|
-
typ: ""
|
|
369
|
-
}, {
|
|
370
|
-
json: "suffragesExprimes",
|
|
371
|
-
js: "suffragesExprimes",
|
|
372
|
-
typ: ""
|
|
373
|
-
}, {
|
|
374
|
-
json: "nbrSuffragesRequis",
|
|
375
|
-
js: "nbrSuffragesRequis",
|
|
376
|
-
typ: ""
|
|
377
|
-
}, {
|
|
378
|
-
json: "annonce",
|
|
379
|
-
js: "annonce",
|
|
380
|
-
typ: r("Libelle")
|
|
381
|
-
}, {
|
|
382
|
-
json: "decompte",
|
|
383
|
-
js: "decompte",
|
|
384
|
-
typ: r("DecompteVoix")
|
|
385
|
-
}], false),
|
|
386
|
-
TypeVote: o([{
|
|
387
|
-
json: "codeTypeVote",
|
|
388
|
-
js: "codeTypeVote",
|
|
389
|
-
typ: r("CodeTypeVote")
|
|
390
|
-
}, {
|
|
391
|
-
json: "libelleTypeVote",
|
|
392
|
-
js: "libelleTypeVote",
|
|
393
|
-
typ: r("LibelleTypeVote")
|
|
394
|
-
}, {
|
|
395
|
-
json: "typeMajorite",
|
|
396
|
-
js: "typeMajorite",
|
|
397
|
-
typ: r("TypeMajorite")
|
|
398
|
-
}], false),
|
|
399
|
-
VentilationVotes: o([{
|
|
400
|
-
json: "organeRef",
|
|
401
|
-
js: "organeRef",
|
|
402
|
-
typ: ""
|
|
403
|
-
}, {
|
|
404
|
-
json: "groupes",
|
|
405
|
-
js: "groupes",
|
|
406
|
-
typ: a(r("VentilationVotesGroupe"))
|
|
407
|
-
}], false),
|
|
408
|
-
VentilationVotesGroupe: o([{
|
|
409
|
-
json: "organeRef",
|
|
410
|
-
js: "organeRef",
|
|
411
|
-
typ: ""
|
|
412
|
-
}, {
|
|
413
|
-
json: "nombreMembresGroupe",
|
|
414
|
-
js: "nombreMembresGroupe",
|
|
415
|
-
typ: ""
|
|
416
|
-
}, {
|
|
417
|
-
json: "vote",
|
|
418
|
-
js: "vote",
|
|
419
|
-
typ: r("Vote")
|
|
420
|
-
}], false),
|
|
421
|
-
Vote: o([{
|
|
422
|
-
json: "positionMajoritaire",
|
|
423
|
-
js: "positionMajoritaire",
|
|
424
|
-
typ: r("PositionMajoritaire")
|
|
425
|
-
}, {
|
|
426
|
-
json: "decompteVoix",
|
|
427
|
-
js: "decompteVoix",
|
|
428
|
-
typ: r("DecompteVoix")
|
|
429
|
-
}, {
|
|
430
|
-
json: "decompteNominatif",
|
|
431
|
-
js: "decompteNominatif",
|
|
432
|
-
typ: r("DecompteNominatif")
|
|
433
|
-
}], false),
|
|
434
|
-
DecompteNominatif: o([{
|
|
435
|
-
json: "nonVotants",
|
|
436
|
-
js: "nonVotants",
|
|
437
|
-
typ: u(undefined, a(r("Votant")))
|
|
438
|
-
}, {
|
|
439
|
-
json: "pour",
|
|
440
|
-
js: "pour",
|
|
441
|
-
typ: u(undefined, a(r("Votant")))
|
|
442
|
-
}, {
|
|
443
|
-
json: "contre",
|
|
444
|
-
js: "contre",
|
|
445
|
-
typ: u(undefined, a(r("Votant")))
|
|
446
|
-
}, {
|
|
447
|
-
json: "abstentions",
|
|
448
|
-
js: "abstentions",
|
|
449
|
-
typ: u(undefined, a(r("Votant")))
|
|
450
|
-
}], false),
|
|
451
|
-
Votant: o([{
|
|
452
|
-
json: "acteurRef",
|
|
453
|
-
js: "acteurRef",
|
|
454
|
-
typ: ""
|
|
455
|
-
}, {
|
|
456
|
-
json: "mandatRef",
|
|
457
|
-
js: "mandatRef",
|
|
458
|
-
typ: ""
|
|
459
|
-
}, {
|
|
460
|
-
json: "parDelegation",
|
|
461
|
-
js: "parDelegation",
|
|
462
|
-
typ: u(undefined, false)
|
|
463
|
-
}, {
|
|
464
|
-
json: "numPlace",
|
|
465
|
-
js: "numPlace",
|
|
466
|
-
typ: u(undefined, 0)
|
|
467
|
-
}, {
|
|
468
|
-
json: "causePositionVote",
|
|
469
|
-
js: "causePositionVote",
|
|
470
|
-
typ: u(undefined, r("CausePositionVote"))
|
|
471
|
-
}], false),
|
|
472
|
-
DecompteVoix: o([{
|
|
473
|
-
json: "pour",
|
|
474
|
-
js: "pour",
|
|
475
|
-
typ: ""
|
|
476
|
-
}, {
|
|
477
|
-
json: "contre",
|
|
478
|
-
js: "contre",
|
|
479
|
-
typ: ""
|
|
480
|
-
}, {
|
|
481
|
-
json: "nonVotants",
|
|
482
|
-
js: "nonVotants",
|
|
483
|
-
typ: u(undefined, "")
|
|
484
|
-
}, {
|
|
485
|
-
json: "abstentions",
|
|
486
|
-
js: "abstentions",
|
|
487
|
-
typ: u(undefined, "")
|
|
488
|
-
}, {
|
|
489
|
-
json: "nonVotantsVolontaires",
|
|
490
|
-
js: "nonVotantsVolontaires",
|
|
491
|
-
typ: u(undefined, "")
|
|
492
|
-
}], false),
|
|
493
|
-
ModePublicationDesVotes: ["DecompteDissidentsPositionGroupe", "DecompteNominatif"],
|
|
494
|
-
Code: ["adopté", "rejeté"],
|
|
495
|
-
Libelle: ["l'Assemblée nationale a adopté", "L'Assemblée nationale n'a pas adopté", "Le Congrès du Parlement a adopté", "Le Congrès du Parlement n'a pas adopté"],
|
|
496
|
-
CodeTypeVote: ["MOC", "SAT", "SPO", "SPS", "SSG"],
|
|
497
|
-
LibelleTypeVote: ["motion de censure", "scrutin public ordinaire", "scrutin public solennel", "scrutin à la tribune", "Scrutin solennel congrès"],
|
|
498
|
-
TypeMajorite: ["Majorité absolue des suffrages exprimés", "majorité absolue des suffrages exprimés", "majorité des membres composant l'Assemblée nationale", "majorité des membres composants composant l'Assemblée", "majorité des membres composants composant l'Assemblée nationale", "Majorité requise pour un Congrès", "Majorité requise pour une motion de censure"],
|
|
499
|
-
CausePositionVote: ["MG", "PAN", "PSE"],
|
|
500
|
-
PositionMajoritaire: ["abstention", "contre", "pour"],
|
|
501
|
-
LieuVote: ["Congrès", "Hémicycle", "Salons"]
|
|
502
|
-
};
|
|
503
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RlUHVibGljYXRpb25EZXNWb3RlcyIsIkNvZGUiLCJMaWJlbGxlIiwiQ29kZVR5cGVWb3RlIiwiTGliZWxsZVR5cGVWb3RlIiwiVHlwZU1ham9yaXRlIiwiQ2F1c2VQb3NpdGlvblZvdGUiLCJQb3NpdGlvbk1ham9yaXRhaXJlIiwiTGlldVZvdGUiLCJDb252ZXJ0IiwidG9TY3J1dGlucyIsImpzb24iLCJjYXN0IiwiSlNPTiIsInBhcnNlIiwiciIsInNjcnV0aW5zVG9Kc29uIiwidmFsdWUiLCJzdHJpbmdpZnkiLCJ1bmNhc3QiLCJ0b1NjcnV0aW4iLCJzY3J1dGluVG9Kc29uIiwiaW52YWxpZFZhbHVlIiwidHlwIiwidmFsIiwia2V5IiwiRXJyb3IiLCJqc29uVG9KU1Byb3BzIiwianNvblRvSlMiLCJ1bmRlZmluZWQiLCJtYXAiLCJwcm9wcyIsImZvckVhY2giLCJwIiwianMiLCJqc1RvSlNPTlByb3BzIiwianNUb0pTT04iLCJ0cmFuc2Zvcm0iLCJnZXRQcm9wcyIsInRyYW5zZm9ybVByaW1pdGl2ZSIsInRyYW5zZm9ybVVuaW9uIiwidHlwcyIsImwiLCJsZW5ndGgiLCJpIiwiXyIsInRyYW5zZm9ybUVudW0iLCJjYXNlcyIsImluZGV4T2YiLCJ0cmFuc2Zvcm1BcnJheSIsIkFycmF5IiwiaXNBcnJheSIsImVsIiwidHJhbnNmb3JtRGF0ZSIsImQiLCJEYXRlIiwiaXNOYU4iLCJ2YWx1ZU9mIiwidHJhbnNmb3JtT2JqZWN0IiwiYWRkaXRpb25hbCIsInJlc3VsdCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wIiwidiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlZiIsInR5cGVNYXAiLCJ1bmlvbk1lbWJlcnMiLCJhcnJheUl0ZW1zIiwiYSIsInUiLCJvIiwibmFtZSIsIlNjcnV0aW5zIiwiU2NydXRpbiIsIkRlbWFuZGV1ciIsIk1pc2VBdVBvaW50IiwiRHlzZm9uY3Rpb25uZW1lbnQiLCJPYmpldCIsIlNvcnRTY3J1dGluIiwiU3ludGhlc2VWb3RlIiwiVHlwZVZvdGUiLCJWZW50aWxhdGlvblZvdGVzIiwiVmVudGlsYXRpb25Wb3Rlc0dyb3VwZSIsIlZvdGUiLCJEZWNvbXB0ZU5vbWluYXRpZiIsIlZvdGFudCIsIkRlY29tcHRlVm9peCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9zY3J1dGlucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBwYXJzZSB0aGlzIGRhdGE6XG4vL1xuLy8gICBpbXBvcnQgeyBDb252ZXJ0LCBTY3J1dGlucyB9IGZyb20gXCIuL2ZpbGVcIjtcbi8vXG4vLyAgIGNvbnN0IHNjcnV0aW5zID0gQ29udmVydC50b1NjcnV0aW5zKGpzb24pO1xuLy9cbi8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBKU09OIGRvZXNuJ3Rcbi8vIG1hdGNoIHRoZSBleHBlY3RlZCBpbnRlcmZhY2UsIGV2ZW4gaWYgdGhlIEpTT04gaXMgdmFsaWQuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NydXRpbnMge1xuICBzY3J1dGluczogU2NydXRpbltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NydXRpbiB7XG4gIHNjaGVtYVZlcnNpb24/OiBzdHJpbmdcbiAgdWlkOiBzdHJpbmdcbiAgbnVtZXJvOiBzdHJpbmdcbiAgb3JnYW5lUmVmOiBzdHJpbmdcbiAgbGVnaXNsYXR1cmU6IHN0cmluZ1xuICBzZXNzaW9uUmVmOiBzdHJpbmdcbiAgc2VhbmNlUmVmOiBzdHJpbmdcbiAgZGF0ZVNjcnV0aW46IERhdGVcbiAgcXVhbnRpZW1lSm91clNlYW5jZTogc3RyaW5nXG4gIHR5cGVWb3RlOiBUeXBlVm90ZVxuICBzb3J0OiBTb3J0U2NydXRpblxuICB0aXRyZTogc3RyaW5nXG4gIGRlbWFuZGV1cjogRGVtYW5kZXVyXG4gIG9iamV0OiBPYmpldFxuICBtb2RlUHVibGljYXRpb25EZXNWb3RlczogTW9kZVB1YmxpY2F0aW9uRGVzVm90ZXNcbiAgc3ludGhlc2VWb3RlOiBTeW50aGVzZVZvdGVcbiAgdmVudGlsYXRpb25Wb3RlczogVmVudGlsYXRpb25Wb3Rlc1xuICBtaXNlQXVQb2ludD86IE1pc2VBdVBvaW50XG4gIGxpZXVWb3RlPzogTGlldVZvdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZW1hbmRldXIge1xuICB0ZXh0ZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pc2VBdVBvaW50IHtcbiAgbm9uVm90YW50cz86IFZvdGFudFtdXG4gIHBvdXI/OiBWb3RhbnRbXVxuICBjb250cmU/OiBWb3RhbnRbXVxuICBhYnN0ZW50aW9ucz86IFZvdGFudFtdXG4gIG5vblZvdGFudHNWb2xvbnRhaXJlcz86IFZvdGFudFtdXG4gIGR5c2ZvbmN0aW9ubmVtZW50PzogRHlzZm9uY3Rpb25uZW1lbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeXNmb25jdGlvbm5lbWVudCB7XG4gIG5vblZvdGFudHM/OiBWb3RhbnRbXVxuICBwb3VyPzogVm90YW50W11cbiAgY29udHJlPzogVm90YW50W11cbiAgYWJzdGVudGlvbnM/OiBWb3RhbnRbXVxuICBub25Wb3RhbnRzVm9sb250YWlyZXM/OiBWb3RhbnRbXVxufVxuXG5leHBvcnQgZW51bSBNb2RlUHVibGljYXRpb25EZXNWb3RlcyB7XG4gIERlY29tcHRlRGlzc2lkZW50c1Bvc2l0aW9uR3JvdXBlID0gXCJEZWNvbXB0ZURpc3NpZGVudHNQb3NpdGlvbkdyb3VwZVwiLFxuICBEZWNvbXB0ZU5vbWluYXRpZiA9IFwiRGVjb21wdGVOb21pbmF0aWZcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYmpldCB7XG4gIGxpYmVsbGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTY3J1dGluIHtcbiAgY29kZTogQ29kZVxuICBsaWJlbGxlOiBMaWJlbGxlXG59XG5cbmV4cG9ydCBlbnVtIENvZGUge1xuICBBZG9wdMOpID0gXCJhZG9wdMOpXCIsXG4gIFJlamV0w6kgPSBcInJlamV0w6lcIixcbn1cblxuZXhwb3J0IGVudW0gTGliZWxsZSB7XG4gIExBc3NlbWJsw6llTmF0aW9uYWxlQUFkb3B0w6kgPSBcImwnQXNzZW1ibMOpZSBuYXRpb25hbGUgYSBhZG9wdMOpXCIsXG4gIExBc3NlbWJsw6llTmF0aW9uYWxlTkFQYXNBZG9wdMOpID0gXCJMJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlIG4nYSBwYXMgYWRvcHTDqVwiLFxuICBMZUNvbmdyw6hzRHVQYXJsZW1lbnRBQWRvcHTDqSA9IFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IGEgYWRvcHTDqVwiLFxuICBMZUNvbmdyw6hzRHVQYXJsZW1lbnROQVBhc0Fkb3B0w6kgPSBcIkxlIENvbmdyw6hzIGR1IFBhcmxlbWVudCBuJ2EgcGFzIGFkb3B0w6lcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTeW50aGVzZVZvdGUge1xuICBub21icmVWb3RhbnRzOiBzdHJpbmdcbiAgc3VmZnJhZ2VzRXhwcmltZXM6IHN0cmluZ1xuICBuYnJTdWZmcmFnZXNSZXF1aXM6IHN0cmluZ1xuICBhbm5vbmNlOiBMaWJlbGxlXG4gIGRlY29tcHRlOiBEZWNvbXB0ZVZvaXhcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlVm90ZSB7XG4gIGNvZGVUeXBlVm90ZTogQ29kZVR5cGVWb3RlXG4gIGxpYmVsbGVUeXBlVm90ZTogTGliZWxsZVR5cGVWb3RlXG4gIHR5cGVNYWpvcml0ZTogVHlwZU1ham9yaXRlXG59XG5cbmV4cG9ydCBlbnVtIENvZGVUeXBlVm90ZSB7XG4gIE1vYyA9IFwiTU9DXCIsXG4gIFNhdCA9IFwiU0FUXCIsXG4gIFNwbyA9IFwiU1BPXCIsXG4gIFNwcyA9IFwiU1BTXCIsXG4gIFNzZyA9IFwiU1NHXCIsXG59XG5cbmV4cG9ydCBlbnVtIExpYmVsbGVUeXBlVm90ZSB7XG4gIE1vdGlvbkRlQ2Vuc3VyZSA9IFwibW90aW9uIGRlIGNlbnN1cmVcIixcbiAgU2NydXRpblB1YmxpY09yZGluYWlyZSA9IFwic2NydXRpbiBwdWJsaWMgb3JkaW5haXJlXCIsXG4gIFNjcnV0aW5QdWJsaWNTb2xlbm5lbCA9IFwic2NydXRpbiBwdWJsaWMgc29sZW5uZWxcIixcbiAgU2NydXRpbsOATGFUcmlidW5lID0gXCJzY3J1dGluIMOgIGxhIHRyaWJ1bmVcIixcbiAgU2NydXRpblNvbGVubmVsQ29uZ3LDqHMgPSBcIlNjcnV0aW4gc29sZW5uZWwgY29uZ3LDqHNcIixcbn1cblxuZXhwb3J0IGVudW0gVHlwZU1ham9yaXRlIHtcbiAgTWFqb3JpdMOpQWJzb2x1ZURlc1N1ZmZyYWdlc0V4cHJpbcOpcyA9IFwiTWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgbWFqb3JpdMOpQWJzb2x1ZURlc1N1ZmZyYWdlc0V4cHJpbcOpcyA9IFwibWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgbWFqb3JpdMOpRGVzTWVtYnJlc0NvbXBvc2FudExBc3NlbWJsw6llTmF0aW9uYWxlID0gXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbiAgbWFqb3JpdMOpRGVzTWVtYnJlc0NvbXBvc2FudHNDb21wb3NhbnRMQXNzZW1ibMOpZSA9IFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudHMgY29tcG9zYW50IGwnQXNzZW1ibMOpZVwiLFxuICBtYWpvcml0w6lEZXNNZW1icmVzQ29tcG9zYW50c0NvbXBvc2FudExBc3NlbWJsw6llTmF0aW9uYWxlID0gXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiLFxuICBNYWpvcml0w6lSZXF1aXNlUG91clVuQ29uZ3LDqHMgPSBcIk1ham9yaXTDqSByZXF1aXNlIHBvdXIgdW4gQ29uZ3LDqHNcIixcbiAgTWFqb3JpdMOpUmVxdWlzZVBvdXJVbmVNb3Rpb25EZUNlbnN1cmUgPSBcIk1ham9yaXTDqSByZXF1aXNlIHBvdXIgdW5lIG1vdGlvbiBkZSBjZW5zdXJlXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVudGlsYXRpb25Wb3RlcyB7XG4gIG9yZ2FuZVJlZjogc3RyaW5nXG4gIGdyb3VwZXM6IFZlbnRpbGF0aW9uVm90ZXNHcm91cGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlbnRpbGF0aW9uVm90ZXNHcm91cGUge1xuICBvcmdhbmVSZWY6IHN0cmluZ1xuICBub21icmVNZW1icmVzR3JvdXBlOiBzdHJpbmdcbiAgdm90ZTogVm90ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZvdGUge1xuICBwb3NpdGlvbk1ham9yaXRhaXJlOiBQb3NpdGlvbk1ham9yaXRhaXJlXG4gIGRlY29tcHRlVm9peDogRGVjb21wdGVWb2l4XG4gIGRlY29tcHRlTm9taW5hdGlmOiBEZWNvbXB0ZU5vbWluYXRpZlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY29tcHRlTm9taW5hdGlmIHtcbiAgbm9uVm90YW50cz86IFZvdGFudFtdXG4gIHBvdXI/OiBWb3RhbnRbXVxuICBjb250cmU/OiBWb3RhbnRbXVxuICBhYnN0ZW50aW9ucz86IFZvdGFudFtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm90YW50IHtcbiAgYWN0ZXVyUmVmOiBzdHJpbmdcbiAgbWFuZGF0UmVmOiBzdHJpbmdcbiAgcGFyRGVsZWdhdGlvbj86IGJvb2xlYW5cbiAgbnVtUGxhY2U/OiBudW1iZXJcbiAgY2F1c2VQb3NpdGlvblZvdGU/OiBDYXVzZVBvc2l0aW9uVm90ZVxufVxuXG5leHBvcnQgZW51bSBDYXVzZVBvc2l0aW9uVm90ZSB7XG4gIE1nID0gXCJNR1wiLFxuICBQYW4gPSBcIlBBTlwiLFxuICBQc2UgPSBcIlBTRVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY29tcHRlVm9peCB7XG4gIHBvdXI6IHN0cmluZ1xuICBjb250cmU6IHN0cmluZ1xuICBub25Wb3RhbnRzPzogc3RyaW5nXG4gIGFic3RlbnRpb25zPzogc3RyaW5nXG4gIG5vblZvdGFudHNWb2xvbnRhaXJlcz86IHN0cmluZ1xufVxuXG5leHBvcnQgZW51bSBQb3NpdGlvbk1ham9yaXRhaXJlIHtcbiAgQWJzdGVudGlvbiA9IFwiYWJzdGVudGlvblwiLFxuICBDb250cmUgPSBcImNvbnRyZVwiLFxuICBQb3VyID0gXCJwb3VyXCIsXG59XG5cbmV4cG9ydCBlbnVtIExpZXVWb3RlIHtcbiAgQ29uZ3LDqHMgPSBcIkNvbmdyw6hzXCIsXG4gIEjDqW1pY3ljbGUgPSBcIkjDqW1pY3ljbGVcIixcbiAgU2Fsb25zID0gXCJTYWxvbnNcIixcbn1cblxuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG5leHBvcnQgY2xhc3MgQ29udmVydCB7XG4gIHB1YmxpYyBzdGF0aWMgdG9TY3J1dGlucyhqc29uOiBzdHJpbmcpOiBTY3J1dGlucyB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcihcIlNjcnV0aW5zXCIpKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzY3J1dGluc1RvSnNvbih2YWx1ZTogU2NydXRpbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoXCJTY3J1dGluc1wiKSksIG51bGwsIDIpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvU2NydXRpbihqc29uOiBzdHJpbmcpOiBTY3J1dGluIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiU2NydXRpblwiKSlcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2NydXRpblRvSnNvbih2YWx1ZTogU2NydXRpbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIlNjcnV0aW5cIikpLCBudWxsLCAyKVxuICB9XG59XG5cbmZ1bmN0aW9uIGludmFsaWRWYWx1ZSh0eXA6IGFueSwgdmFsOiBhbnksIGtleTogYW55ID0gXCJcIik6IG5ldmVyIHtcbiAgaWYgKGtleSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYEludmFsaWQgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiLiBFeHBlY3RlZCB0eXBlICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHR5cCxcbiAgICAgICl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfWAsXG4gICAgKVxuICB9XG4gIHRocm93IEVycm9yKFxuICAgIGBJbnZhbGlkIHZhbHVlICR7SlNPTi5zdHJpbmdpZnkodmFsKX0gZm9yIHR5cGUgJHtKU09OLnN0cmluZ2lmeSh0eXApfWAsXG4gIClcbn1cblxuZnVuY3Rpb24ganNvblRvSlNQcm9wcyh0eXA6IGFueSk6IGFueSB7XG4gIGlmICh0eXAuanNvblRvSlMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1hcDogYW55ID0ge31cbiAgICB0eXAucHJvcHMuZm9yRWFjaCgocDogYW55KSA9PiAobWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KSlcbiAgICB0eXAuanNvblRvSlMgPSBtYXBcbiAgfVxuICByZXR1cm4gdHlwLmpzb25Ub0pTXG59XG5cbmZ1bmN0aW9uIGpzVG9KU09OUHJvcHModHlwOiBhbnkpOiBhbnkge1xuICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtYXA6IGFueSA9IHt9XG4gICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gKG1hcFtwLmpzXSA9IHsga2V5OiBwLmpzb24sIHR5cDogcC50eXAgfSkpXG4gICAgdHlwLmpzVG9KU09OID0gbWFwXG4gIH1cbiAgcmV0dXJuIHR5cC5qc1RvSlNPTlxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0odmFsOiBhbnksIHR5cDogYW55LCBnZXRQcm9wczogYW55LCBrZXk6IGFueSA9IFwiXCIpOiBhbnkge1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodHlwZW9mIHR5cCA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVVuaW9uKHR5cHM6IGFueVtdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgLy8gdmFsIG11c3QgdmFsaWRhdGUgYWdhaW5zdCBvbmUgdHlwIGluIHR5cHNcbiAgICBjb25zdCBsID0gdHlwcy5sZW5ndGhcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdHlwID0gdHlwc1tpXVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwgZ2V0UHJvcHMpXG4gICAgICB9IGNhdGNoIChfKSB7fVxuICAgIH1cbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cHMsIHZhbClcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUVudW0oY2FzZXM6IHN0cmluZ1tdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKGNhc2VzLCB2YWwpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1BcnJheSh0eXA6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IGJlIGFuIGFycmF5IHdpdGggbm8gaW52YWxpZCBlbGVtZW50c1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKFwiYXJyYXlcIiwgdmFsKVxuICAgIHJldHVybiB2YWwubWFwKChlbCkgPT4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGUodmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWwpXG4gICAgaWYgKGlzTmFOKGQudmFsdWVPZigpKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIkRhdGVcIiwgdmFsKVxuICAgIH1cbiAgICByZXR1cm4gZFxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtT2JqZWN0KFxuICAgIHByb3BzOiB7IFtrOiBzdHJpbmddOiBhbnkgfSxcbiAgICBhZGRpdGlvbmFsOiBhbnksXG4gICAgdmFsOiBhbnksXG4gICk6IGFueSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIm9iamVjdFwiLCB2YWwpXG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge31cbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBwcm9wID0gcHJvcHNba2V5XVxuICAgICAgY29uc3QgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSlcbiAgICAgICAgPyB2YWxba2V5XVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmVzdWx0W3Byb3Aua2V5XSA9IHRyYW5zZm9ybSh2LCBwcm9wLnR5cCwgZ2V0UHJvcHMsIHByb3Aua2V5KVxuICAgIH0pXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmb3JtKHZhbFtrZXldLCBhZGRpdGlvbmFsLCBnZXRQcm9wcywga2V5KVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cCA9PT0gXCJhbnlcIikgcmV0dXJuIHZhbFxuICBpZiAodHlwID09PSBudWxsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIH1cbiAgLy8gaWYgKHR5cCA9PT0gZmFsc2UpIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIHdoaWxlICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiICYmIHR5cC5yZWYgIT09IHVuZGVmaW5lZCkge1xuICAgIHR5cCA9IHR5cGVNYXBbdHlwLnJlZl1cbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0eXApKSByZXR1cm4gdHJhbnNmb3JtRW51bSh0eXAsIHZhbClcbiAgaWYgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdHlwLmhhc093blByb3BlcnR5KFwidW5pb25NZW1iZXJzXCIpXG4gICAgICA/IHRyYW5zZm9ybVVuaW9uKHR5cC51bmlvbk1lbWJlcnMsIHZhbClcbiAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwiYXJyYXlJdGVtc1wiKVxuICAgICAgICA/IHRyYW5zZm9ybUFycmF5KHR5cC5hcnJheUl0ZW1zLCB2YWwpXG4gICAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwicHJvcHNcIilcbiAgICAgICAgICA/IHRyYW5zZm9ybU9iamVjdChnZXRQcm9wcyh0eXApLCB0eXAuYWRkaXRpb25hbCwgdmFsKVxuICAgICAgICAgIDogaW52YWxpZFZhbHVlKHR5cCwgdmFsKVxuICB9XG4gIC8vIE51bWJlcnMgY2FuIGJlIHBhcnNlZCBieSBEYXRlIGJ1dCBzaG91bGRuJ3QgYmUuXG4gIGlmICh0eXAgPT09IERhdGUgJiYgdHlwZW9mIHZhbCAhPT0gXCJudW1iZXJcIikgcmV0dXJuIHRyYW5zZm9ybURhdGUodmFsKVxuICByZXR1cm4gdHJhbnNmb3JtUHJpbWl0aXZlKHR5cCwgdmFsKVxufVxuXG5mdW5jdGlvbiBjYXN0PFQ+KHZhbDogYW55LCB0eXA6IGFueSk6IFQge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc29uVG9KU1Byb3BzKVxufVxuXG5mdW5jdGlvbiB1bmNhc3Q8VD4odmFsOiBULCB0eXA6IGFueSk6IGFueSB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzVG9KU09OUHJvcHMpXG59XG5cbmZ1bmN0aW9uIGEodHlwOiBhbnkpIHtcbiAgcmV0dXJuIHsgYXJyYXlJdGVtczogdHlwIH1cbn1cblxuZnVuY3Rpb24gdSguLi50eXBzOiBhbnlbXSkge1xuICByZXR1cm4geyB1bmlvbk1lbWJlcnM6IHR5cHMgfVxufVxuXG5mdW5jdGlvbiBvKHByb3BzOiBhbnlbXSwgYWRkaXRpb25hbDogYW55KSB7XG4gIHJldHVybiB7IHByb3BzLCBhZGRpdGlvbmFsIH1cbn1cblxuLy8gZnVuY3Rpb24gbShhZGRpdGlvbmFsOiBhbnkpIHtcbi8vICAgcmV0dXJuIHsgcHJvcHM6IFtdLCBhZGRpdGlvbmFsIH1cbi8vIH1cblxuZnVuY3Rpb24gcihuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgcmVmOiBuYW1lIH1cbn1cblxuY29uc3QgdHlwZU1hcDogYW55ID0ge1xuICBTY3J1dGluczogbyhcbiAgICBbeyBqc29uOiBcInNjcnV0aW5zXCIsIGpzOiBcInNjcnV0aW5zXCIsIHR5cDogYShyKFwiU2NydXRpblwiKSkgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIFNjcnV0aW46IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInNjaGVtYVZlcnNpb25cIiwganM6IFwic2NoZW1hVmVyc2lvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInVpZFwiLCBqczogXCJ1aWRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibnVtZXJvXCIsIGpzOiBcIm51bWVyb1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImxlZ2lzbGF0dXJlXCIsIGpzOiBcImxlZ2lzbGF0dXJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInNlc3Npb25SZWZcIiwganM6IFwic2Vzc2lvblJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJzZWFuY2VSZWZcIiwganM6IFwic2VhbmNlUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRhdGVTY3J1dGluXCIsIGpzOiBcImRhdGVTY3J1dGluXCIsIHR5cDogRGF0ZSB9LFxuICAgICAgeyBqc29uOiBcInF1YW50aWVtZUpvdXJTZWFuY2VcIiwganM6IFwicXVhbnRpZW1lSm91clNlYW5jZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0eXBlVm90ZVwiLCBqczogXCJ0eXBlVm90ZVwiLCB0eXA6IHIoXCJUeXBlVm90ZVwiKSB9LFxuICAgICAgeyBqc29uOiBcInNvcnRcIiwganM6IFwic29ydFwiLCB0eXA6IHIoXCJTb3J0U2NydXRpblwiKSB9LFxuICAgICAgeyBqc29uOiBcInRpdHJlXCIsIGpzOiBcInRpdHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRlbWFuZGV1clwiLCBqczogXCJkZW1hbmRldXJcIiwgdHlwOiByKFwiRGVtYW5kZXVyXCIpIH0sXG4gICAgICB7IGpzb246IFwib2JqZXRcIiwganM6IFwib2JqZXRcIiwgdHlwOiByKFwiT2JqZXRcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICBqczogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICB0eXA6IHIoXCJNb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwic3ludGhlc2VWb3RlXCIsIGpzOiBcInN5bnRoZXNlVm90ZVwiLCB0eXA6IHIoXCJTeW50aGVzZVZvdGVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJ2ZW50aWxhdGlvblZvdGVzXCIsXG4gICAgICAgIGpzOiBcInZlbnRpbGF0aW9uVm90ZXNcIixcbiAgICAgICAgdHlwOiByKFwiVmVudGlsYXRpb25Wb3Rlc1wiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibWlzZUF1UG9pbnRcIixcbiAgICAgICAganM6IFwibWlzZUF1UG9pbnRcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIk1pc2VBdVBvaW50XCIpKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwibGlldVZvdGVcIiwganM6IFwibGlldVZvdGVcIiwgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkxpZXVWb3RlXCIpKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIERlbWFuZGV1cjogbyhbeyBqc29uOiBcInRleHRlXCIsIGpzOiBcInRleHRlXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH1dLCBmYWxzZSksXG4gIE1pc2VBdVBvaW50OiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBvdXJcIixcbiAgICAgICAganM6IFwicG91clwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY29udHJlXCIsXG4gICAgICAgIGpzOiBcImNvbnRyZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAganM6IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImR5c2ZvbmN0aW9ubmVtZW50XCIsXG4gICAgICAgIGpzOiBcImR5c2ZvbmN0aW9ubmVtZW50XCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHIoXCJEeXNmb25jdGlvbm5lbWVudFwiKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIER5c2ZvbmN0aW9ubmVtZW50OiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBvdXJcIixcbiAgICAgICAganM6IFwicG91clwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY29udHJlXCIsXG4gICAgICAgIGpzOiBcImNvbnRyZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAganM6IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIE9iamV0OiBvKFt7IGpzb246IFwibGliZWxsZVwiLCBqczogXCJsaWJlbGxlXCIsIHR5cDogXCJcIiB9XSwgZmFsc2UpLFxuICBTb3J0U2NydXRpbjogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiY29kZVwiLCBqczogXCJjb2RlXCIsIHR5cDogcihcIkNvZGVcIikgfSxcbiAgICAgIHsganNvbjogXCJsaWJlbGxlXCIsIGpzOiBcImxpYmVsbGVcIiwgdHlwOiByKFwiTGliZWxsZVwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFN5bnRoZXNlVm90ZTogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwibm9tYnJlVm90YW50c1wiLCBqczogXCJub21icmVWb3RhbnRzXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInN1ZmZyYWdlc0V4cHJpbWVzXCIsIGpzOiBcInN1ZmZyYWdlc0V4cHJpbWVzXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm5iclN1ZmZyYWdlc1JlcXVpc1wiLCBqczogXCJuYnJTdWZmcmFnZXNSZXF1aXNcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiYW5ub25jZVwiLCBqczogXCJhbm5vbmNlXCIsIHR5cDogcihcIkxpYmVsbGVcIikgfSxcbiAgICAgIHsganNvbjogXCJkZWNvbXB0ZVwiLCBqczogXCJkZWNvbXB0ZVwiLCB0eXA6IHIoXCJEZWNvbXB0ZVZvaXhcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBUeXBlVm90ZTogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiY29kZVR5cGVWb3RlXCIsIGpzOiBcImNvZGVUeXBlVm90ZVwiLCB0eXA6IHIoXCJDb2RlVHlwZVZvdGVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJsaWJlbGxlVHlwZVZvdGVcIixcbiAgICAgICAganM6IFwibGliZWxsZVR5cGVWb3RlXCIsXG4gICAgICAgIHR5cDogcihcIkxpYmVsbGVUeXBlVm90ZVwiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwidHlwZU1ham9yaXRlXCIsIGpzOiBcInR5cGVNYWpvcml0ZVwiLCB0eXA6IHIoXCJUeXBlTWFqb3JpdGVcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBWZW50aWxhdGlvblZvdGVzOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImdyb3VwZXNcIiwganM6IFwiZ3JvdXBlc1wiLCB0eXA6IGEocihcIlZlbnRpbGF0aW9uVm90ZXNHcm91cGVcIikpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVmVudGlsYXRpb25Wb3Rlc0dyb3VwZTogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwib3JnYW5lUmVmXCIsIGpzOiBcIm9yZ2FuZVJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJub21icmVNZW1icmVzR3JvdXBlXCIsIGpzOiBcIm5vbWJyZU1lbWJyZXNHcm91cGVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwidm90ZVwiLCBqczogXCJ2b3RlXCIsIHR5cDogcihcIlZvdGVcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBWb3RlOiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb3NpdGlvbk1ham9yaXRhaXJlXCIsXG4gICAgICAgIGpzOiBcInBvc2l0aW9uTWFqb3JpdGFpcmVcIixcbiAgICAgICAgdHlwOiByKFwiUG9zaXRpb25NYWpvcml0YWlyZVwiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwiZGVjb21wdGVWb2l4XCIsIGpzOiBcImRlY29tcHRlVm9peFwiLCB0eXA6IHIoXCJEZWNvbXB0ZVZvaXhcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJkZWNvbXB0ZU5vbWluYXRpZlwiLFxuICAgICAgICBqczogXCJkZWNvbXB0ZU5vbWluYXRpZlwiLFxuICAgICAgICB0eXA6IHIoXCJEZWNvbXB0ZU5vbWluYXRpZlwiKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRGVjb21wdGVOb21pbmF0aWY6IG8oXG4gICAgW1xuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAganM6IFwibm9uVm90YW50c1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwicG91clwiLFxuICAgICAgICBqczogXCJwb3VyXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJjb250cmVcIixcbiAgICAgICAganM6IFwiY29udHJlXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJhYnN0ZW50aW9uc1wiLFxuICAgICAgICBqczogXCJhYnN0ZW50aW9uc1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVm90YW50OiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJhY3RldXJSZWZcIiwganM6IFwiYWN0ZXVyUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm1hbmRhdFJlZlwiLCBqczogXCJtYW5kYXRSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwicGFyRGVsZWdhdGlvblwiLCBqczogXCJwYXJEZWxlZ2F0aW9uXCIsIHR5cDogdSh1bmRlZmluZWQsIGZhbHNlKSB9LFxuICAgICAgeyBqc29uOiBcIm51bVBsYWNlXCIsIGpzOiBcIm51bVBsYWNlXCIsIHR5cDogdSh1bmRlZmluZWQsIDApIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY2F1c2VQb3NpdGlvblZvdGVcIixcbiAgICAgICAganM6IFwiY2F1c2VQb3NpdGlvblZvdGVcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkNhdXNlUG9zaXRpb25Wb3RlXCIpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRGVjb21wdGVWb2l4OiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJwb3VyXCIsIGpzOiBcInBvdXJcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiY29udHJlXCIsIGpzOiBcImNvbnRyZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJub25Wb3RhbnRzXCIsIGpzOiBcIm5vblZvdGFudHNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJhYnN0ZW50aW9uc1wiLCBqczogXCJhYnN0ZW50aW9uc1wiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIiksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIE1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzOiBbXG4gICAgXCJEZWNvbXB0ZURpc3NpZGVudHNQb3NpdGlvbkdyb3VwZVwiLFxuICAgIFwiRGVjb21wdGVOb21pbmF0aWZcIixcbiAgXSxcbiAgQ29kZTogW1wiYWRvcHTDqVwiLCBcInJlamV0w6lcIl0sXG4gIExpYmVsbGU6IFtcbiAgICBcImwnQXNzZW1ibMOpZSBuYXRpb25hbGUgYSBhZG9wdMOpXCIsXG4gICAgXCJMJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlIG4nYSBwYXMgYWRvcHTDqVwiLFxuICAgIFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IGEgYWRvcHTDqVwiLFxuICAgIFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IG4nYSBwYXMgYWRvcHTDqVwiLFxuICBdLFxuICBDb2RlVHlwZVZvdGU6IFtcIk1PQ1wiLCBcIlNBVFwiLCBcIlNQT1wiLCBcIlNQU1wiLCBcIlNTR1wiXSxcbiAgTGliZWxsZVR5cGVWb3RlOiBbXG4gICAgXCJtb3Rpb24gZGUgY2Vuc3VyZVwiLFxuICAgIFwic2NydXRpbiBwdWJsaWMgb3JkaW5haXJlXCIsXG4gICAgXCJzY3J1dGluIHB1YmxpYyBzb2xlbm5lbFwiLFxuICAgIFwic2NydXRpbiDDoCBsYSB0cmlidW5lXCIsXG4gICAgXCJTY3J1dGluIHNvbGVubmVsIGNvbmdyw6hzXCIsXG4gIF0sXG4gIFR5cGVNYWpvcml0ZTogW1xuICAgIFwiTWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgICBcIm1ham9yaXTDqSBhYnNvbHVlIGRlcyBzdWZmcmFnZXMgZXhwcmltw6lzXCIsXG4gICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbiAgICBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnRzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWVcIixcbiAgICBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnRzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCIsXG4gICAgXCJNYWpvcml0w6kgcmVxdWlzZSBwb3VyIHVuIENvbmdyw6hzXCIsXG4gICAgXCJNYWpvcml0w6kgcmVxdWlzZSBwb3VyIHVuZSBtb3Rpb24gZGUgY2Vuc3VyZVwiLFxuICBdLFxuICBDYXVzZVBvc2l0aW9uVm90ZTogW1wiTUdcIiwgXCJQQU5cIiwgXCJQU0VcIl0sXG4gIFBvc2l0aW9uTWFqb3JpdGFpcmU6IFtcImFic3RlbnRpb25cIiwgXCJjb250cmVcIiwgXCJwb3VyXCJdLFxuICBMaWV1Vm90ZTogW1wiQ29uZ3LDqHNcIiwgXCJIw6ltaWN5Y2xlXCIsIFwiU2Fsb25zXCJdLFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWlEQSxXQUFZQSx1QkFBdUIsMEJBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCO0VBQUEsT0FBdkJBLHVCQUF1QjtBQUFBO0FBY25DLFdBQVlDLElBQUksMEJBQUpBLElBQUk7RUFBSkEsSUFBSTtFQUFKQSxJQUFJO0VBQUEsT0FBSkEsSUFBSTtBQUFBO0FBS2hCLFdBQVlDLE9BQU8sMEJBQVBBLE9BQU87RUFBUEEsT0FBTztFQUFQQSxPQUFPO0VBQVBBLE9BQU87RUFBUEEsT0FBTztFQUFBLE9BQVBBLE9BQU87QUFBQTtBQXFCbkIsV0FBWUMsWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBQSxPQUFaQSxZQUFZO0FBQUE7QUFReEIsV0FBWUMsZUFBZSwwQkFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBQSxPQUFmQSxlQUFlO0FBQUE7QUFRM0IsV0FBWUMsWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZ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RUFBRSxFQUFFLE1BQU07SUFBRVgsR0FBRyxFQUFFO0VBQUcsQ0FBQyxFQUNyQztJQUFFWixJQUFJLEVBQUUsUUFBUTtJQUFFdUIsRUFBRSxFQUFFLFFBQVE7SUFBRVgsR0FBRyxFQUFFO0VBQUcsQ0FBQyxFQUN6QztJQUFFWixJQUFJLEVBQUUsWUFBWTtJQUFFdUIsRUFBRSxFQUFFLFlBQVk7SUFBRVgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFLEVBQUU7RUFBRSxDQUFDLEVBQy9EO0lBQUVsQixJQUFJLEVBQUUsYUFBYTtJQUFFdUIsRUFBRSxFQUFFLGFBQWE7SUFBRVgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFLEVBQUU7RUFBRSxDQUFDLEVBQ2pFO0lBQ0VsQixJQUFJLEVBQUUsdUJBQXVCO0lBQzdCdUIsRUFBRSxFQUFFLHVCQUF1QjtJQUMzQlgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFLEVBQUU7RUFDdEIsQ0FBQyxDQUNGLEVBQ0QsS0FDRixDQUFDO0VBQ0Q3Qix1QkFBdUIsRUFBRSxDQUN2QixrQ0FBa0MsRUFDbEMsbUJBQW1CLENBQ3BCO0VBQ0RDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7RUFDMUJDLE9BQU8sRUFBRSxDQUNQLGdDQUFnQyxFQUNoQyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHdDQUF3QyxDQUN6QztFQUNEQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0VBQ2pEQyxlQUFlLEVBQUUsQ0FDZixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsMEJBQTBCLENBQzNCO0VBQ0RDLFlBQVksRUFBRSxDQUNaLHlDQUF5QyxFQUN6Qyx5Q0FBeUMsRUFDekMsc0RBQXNELEVBQ3RELHVEQUF1RCxFQUN2RCxpRUFBaUUsRUFDakUsa0NBQWtDLEVBQ2xDLDZDQUE2QyxDQUM5QztFQUNEQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0VBQ3ZDQyxtQkFBbUIsRUFBRSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0VBQ3JEQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVE7QUFDN0MsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|