@tricoteuses/assemblee 1.0.7 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api.js +3 -9
- package/lib/api.mjs +4 -5
- package/lib/bugs/acteur-00010/plugin.test.js +3 -50
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +2 -57
- package/lib/bugs/acteur-00010.mjs +1 -6
- package/lib/bugs/agenda-00002/plugin.test.js +3 -53
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
- package/lib/bugs/agenda-00002.js +3 -148
- package/lib/bugs/agenda-00002.mjs +1 -28
- package/lib/bugs/agenda-00008/plugin.test.js +3 -52
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +2 -61
- package/lib/bugs/agenda-00008.mjs +1 -5
- package/lib/bugs/agenda-00011/plugin.test.js +5 -99
- package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
- package/lib/bugs/agenda-00011.js +4 -105
- package/lib/bugs/agenda-00011.mjs +3 -29
- package/lib/bugs.js +3 -164
- package/lib/bugs.mjs +1 -26
- package/lib/cleaners/actes_legislatifs.js +11 -115
- package/lib/cleaners/actes_legislatifs.mjs +7 -82
- package/lib/cleaners/acteurs.js +12 -92
- package/lib/cleaners/acteurs.mjs +7 -38
- package/lib/cleaners/amendements.js +10 -103
- package/lib/cleaners/amendements.mjs +4 -58
- package/lib/cleaners/documents.js +5 -67
- package/lib/cleaners/documents.mjs +1 -37
- package/lib/cleaners/dossiers_legislatifs.js +5 -61
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
- package/lib/cleaners/index.js +1 -9
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +1 -33
- package/lib/cleaners/organes.mjs +1 -17
- package/lib/cleaners/reunions.js +4 -119
- package/lib/cleaners/reunions.mjs +1 -64
- package/lib/cleaners/scrutins.js +10 -102
- package/lib/cleaners/scrutins.mjs +1 -48
- package/lib/cleaners/xml.js +8 -42
- package/lib/cleaners/xml.mjs +6 -8
- package/lib/datasets.js +14 -113
- package/lib/datasets.mjs +6 -46
- package/lib/dates.js +7 -37
- package/lib/dates.mjs +9 -14
- package/lib/dossiers_legislatifs.js +6 -68
- package/lib/dossiers_legislatifs.mjs +5 -36
- package/lib/file_systems.js +56 -139
- package/lib/file_systems.mjs +1 -9
- package/lib/git.js +4 -53
- package/lib/git.mjs +1 -12
- package/lib/index.js +1 -15
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +23 -146
- package/lib/inserters.mjs +6 -87
- package/lib/loaders.js +44 -316
- package/lib/loaders.mjs +12 -135
- package/lib/organes.js +1 -7
- package/lib/organes.mjs +1 -4
- package/lib/parsers/documents.js +22 -151
- package/lib/parsers/documents.mjs +19 -81
- package/lib/parsers/index.js +1 -4
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +302 -527
- package/lib/parsers/recherche_amendements.mjs +8 -31
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
- package/lib/raw_types/acteurs_et_organes.js +5 -124
- package/lib/raw_types/acteurs_et_organes.mjs +5 -105
- package/lib/raw_types/agendas.js +6 -89
- package/lib/raw_types/agendas.mjs +9 -65
- package/lib/raw_types/amendements.d.ts +2 -0
- package/lib/raw_types/amendements.js +10 -90
- package/lib/raw_types/amendements.mjs +11 -69
- package/lib/raw_types/dossiers_legislatifs.js +6 -96
- package/lib/raw_types/dossiers_legislatifs.mjs +6 -73
- package/lib/raw_types/scrutins.js +6 -81
- package/lib/raw_types/scrutins.mjs +9 -57
- package/lib/scripts/bugs_helper.js +2 -181
- package/lib/scripts/bugs_helper.mjs +2 -39
- package/lib/scripts/clean_data.js +27 -143
- package/lib/scripts/clean_data.mjs +15 -34
- package/lib/scripts/clean_reorganized_data.js +76 -240
- package/lib/scripts/clean_reorganized_data.mjs +36 -99
- package/lib/scripts/diff_amendements.js +19 -79
- package/lib/scripts/diff_amendements.mjs +17 -35
- package/lib/scripts/document_dossiers_legislatifs.js +17 -142
- package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
- package/lib/scripts/get_today_reunions.js +4 -22
- package/lib/scripts/get_today_reunions.mjs +1 -7
- package/lib/scripts/merge_scrutins.js +3 -47
- package/lib/scripts/merge_scrutins.mjs +1 -9
- package/lib/scripts/parse_textes_lois.js +15 -44
- package/lib/scripts/parse_textes_lois.mjs +18 -19
- package/lib/scripts/raw_types_from_amendements.js +3 -95
- package/lib/scripts/raw_types_from_amendements.mjs +1 -16
- package/lib/scripts/reorganize_data.js +74 -294
- package/lib/scripts/reorganize_data.mjs +22 -133
- package/lib/scripts/retrieve_deputes_photos.js +6 -119
- package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
- package/lib/scripts/retrieve_documents.js +4 -192
- package/lib/scripts/retrieve_documents.mjs +2 -50
- package/lib/scripts/retrieve_open_data.js +44 -116
- package/lib/scripts/retrieve_open_data.mjs +14 -19
- package/lib/scripts/retrieve_pending_amendments.js +4 -98
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
- package/lib/scripts/retrieve_senateurs_photos.js +18 -114
- package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
- package/lib/scripts/retrieve_textes_lois.js +3 -122
- package/lib/scripts/retrieve_textes_lois.mjs +3 -21
- package/lib/scripts/test_load.js +2 -10
- package/lib/scripts/test_load.mjs +2 -1
- package/lib/scripts/test_load_big_files.js +2 -10
- package/lib/scripts/test_load_big_files.mjs +2 -1
- package/lib/scripts/validate_json.js +4 -119
- package/lib/scripts/validate_json.mjs +2 -36
- package/lib/shared_types/codes_actes.js +1 -24
- package/lib/shared_types/codes_actes.mjs +3 -10
- package/lib/strings.js +1 -5
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -84
- package/lib/types/acteurs_et_organes.mjs +10 -63
- package/lib/types/agendas.js +8 -90
- package/lib/types/agendas.mjs +11 -66
- package/lib/types/amendements.d.ts +2 -0
- package/lib/types/amendements.js +12 -92
- package/lib/types/amendements.mjs +15 -70
- package/lib/types/dossiers_legislatifs.js +8 -96
- package/lib/types/dossiers_legislatifs.mjs +10 -72
- package/lib/types/legislatures.js +1 -3
- package/lib/types/legislatures.mjs +1 -2
- package/lib/types/scrutins.js +8 -82
- package/lib/types/scrutins.mjs +11 -58
- package/lib/urls.js +3 -27
- package/lib/urls.mjs +3 -21
- package/package.json +1 -1
|
@@ -10,25 +10,19 @@ export function cleanAmendement(amendement) {
|
|
|
10
10
|
{
|
|
11
11
|
cleanXmlArtefacts(auteur);
|
|
12
12
|
}
|
|
13
|
-
|
|
14
13
|
if (signataires.cosignataires !== undefined) {
|
|
15
14
|
const acteurRef = signataires.cosignataires.acteurRef;
|
|
16
|
-
|
|
17
15
|
if (Array.isArray(acteurRef)) {
|
|
18
16
|
signataires.cosignatairesRefs = acteurRef;
|
|
19
17
|
} else {
|
|
20
18
|
assert(acteurRef);
|
|
21
19
|
signataires.cosignatairesRefs = [acteurRef];
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
delete signataires.cosignataires;
|
|
25
22
|
}
|
|
26
|
-
|
|
27
23
|
let libelle = signataires.libelle;
|
|
28
|
-
|
|
29
24
|
if (libelle !== undefined) {
|
|
30
25
|
libelle = libelle.split(" ").filter(Boolean).join(" ");
|
|
31
|
-
|
|
32
26
|
if (libelle) {
|
|
33
27
|
signataires.libelle = libelle;
|
|
34
28
|
} else {
|
|
@@ -40,71 +34,53 @@ export function cleanAmendement(amendement) {
|
|
|
40
34
|
{
|
|
41
35
|
cleanXmlArtefacts(pointeurFragmentTexte);
|
|
42
36
|
const division = pointeurFragmentTexte.division;
|
|
43
|
-
|
|
44
37
|
if (division !== undefined) {
|
|
45
38
|
cleanXmlArtefacts(division);
|
|
46
39
|
let avantAApres = division.avant_A_Apres;
|
|
47
|
-
|
|
48
40
|
if (avantAApres !== undefined) {
|
|
49
41
|
delete division.avant_A_Apres;
|
|
50
|
-
|
|
51
42
|
if (avantAApres === "Après") {
|
|
52
43
|
avantAApres = AvantAApres.Apres;
|
|
53
44
|
}
|
|
54
|
-
|
|
55
45
|
division.avantAApres = avantAApres;
|
|
56
46
|
}
|
|
57
47
|
}
|
|
58
|
-
|
|
59
48
|
const amendementStandard = pointeurFragmentTexte.amendementStandard;
|
|
60
|
-
|
|
61
49
|
if (amendementStandard !== undefined) {
|
|
62
50
|
cleanXmlArtefacts(amendementStandard);
|
|
63
51
|
const alinea = amendementStandard.alinea;
|
|
64
|
-
|
|
65
52
|
if (alinea !== undefined) {
|
|
66
53
|
cleanXmlArtefacts(alinea);
|
|
67
54
|
let avantAApres = alinea.avant_A_Apres;
|
|
68
|
-
|
|
69
55
|
if (avantAApres !== undefined) {
|
|
70
56
|
delete alinea.avant_A_Apres;
|
|
71
|
-
|
|
72
57
|
if (avantAApres === "Après") {
|
|
73
58
|
avantAApres = AvantAApres.Apres;
|
|
74
59
|
} else if (![AvantAApres.A, AvantAApres.Apres, AvantAApres.Avant].includes(avantAApres)) {
|
|
75
60
|
avantAApres = AvantAApres.A;
|
|
76
61
|
}
|
|
77
|
-
|
|
78
62
|
alinea.avantAApres = avantAApres;
|
|
79
63
|
}
|
|
80
|
-
|
|
81
64
|
pointeurFragmentTexte.alinea = alinea;
|
|
82
65
|
}
|
|
83
|
-
|
|
84
66
|
delete pointeurFragmentTexte.amendementStandard;
|
|
85
67
|
}
|
|
86
68
|
}
|
|
87
69
|
const corps = amendement.corps;
|
|
88
|
-
|
|
89
70
|
if (corps !== undefined) {
|
|
90
71
|
cleanXmlArtefacts(corps);
|
|
91
72
|
const contenuAuteur = corps.contenuAuteur;
|
|
92
|
-
|
|
93
73
|
if (contenuAuteur !== undefined) {
|
|
94
74
|
cleanXmlArtefacts(contenuAuteur);
|
|
95
75
|
const avantAppel = contenuAuteur.avantAppel;
|
|
96
|
-
|
|
97
76
|
if (avantAppel !== undefined) {
|
|
98
77
|
cleanXmlArtefacts(avantAppel);
|
|
99
78
|
assert.notStrictEqual(avantAppel.dispositif, undefined);
|
|
100
79
|
}
|
|
101
|
-
|
|
102
80
|
assert.strictEqual(contenuAuteur.annexeExposeSommaire, undefined);
|
|
103
81
|
const dispositifAmdtCreditPLF = contenuAuteur.dispositifAmdtCreditPLF;
|
|
104
|
-
|
|
105
82
|
if (dispositifAmdtCreditPLF !== undefined) {
|
|
106
83
|
const listeProgrammes = dispositifAmdtCreditPLF.listeProgrammes?.programme;
|
|
107
|
-
|
|
108
84
|
if (listeProgrammes !== undefined) {
|
|
109
85
|
if (Array.isArray(listeProgrammes)) {
|
|
110
86
|
dispositifAmdtCreditPLF.listeProgrammes = listeProgrammes;
|
|
@@ -112,13 +88,10 @@ export function cleanAmendement(amendement) {
|
|
|
112
88
|
assert(listeProgrammes);
|
|
113
89
|
dispositifAmdtCreditPLF.listeProgrammes = [listeProgrammes];
|
|
114
90
|
}
|
|
115
|
-
|
|
116
91
|
for (const programme of dispositifAmdtCreditPLF.listeProgrammes) {
|
|
117
92
|
cleanXmlArtefacts(programme);
|
|
118
|
-
|
|
119
93
|
if (programme.lignesCredits !== undefined) {
|
|
120
94
|
let lignesCredits = programme.lignesCredits.ligneCredit;
|
|
121
|
-
|
|
122
95
|
if (lignesCredits === undefined) {
|
|
123
96
|
delete programme.lignesCredits;
|
|
124
97
|
} else {
|
|
@@ -126,10 +99,8 @@ export function cleanAmendement(amendement) {
|
|
|
126
99
|
assert(lignesCredits);
|
|
127
100
|
lignesCredits = [lignesCredits];
|
|
128
101
|
}
|
|
129
|
-
|
|
130
102
|
programme.lignesCredits = lignesCredits;
|
|
131
103
|
}
|
|
132
|
-
|
|
133
104
|
if (lignesCredits !== undefined) {
|
|
134
105
|
for (const ligneCredit of lignesCredits) {
|
|
135
106
|
cleanXmlArtefacts(ligneCredit);
|
|
@@ -139,12 +110,9 @@ export function cleanAmendement(amendement) {
|
|
|
139
110
|
}
|
|
140
111
|
}
|
|
141
112
|
}
|
|
142
|
-
|
|
143
113
|
const dispositifAmdtCreditPLFR = contenuAuteur.dispositifAmdtCreditPLFR;
|
|
144
|
-
|
|
145
114
|
if (dispositifAmdtCreditPLFR !== undefined) {
|
|
146
115
|
const listeProgrammes = dispositifAmdtCreditPLFR.listeProgrammes?.programme;
|
|
147
|
-
|
|
148
116
|
if (listeProgrammes !== undefined) {
|
|
149
117
|
if (Array.isArray(listeProgrammes)) {
|
|
150
118
|
dispositifAmdtCreditPLFR.listeProgrammes = listeProgrammes;
|
|
@@ -152,13 +120,10 @@ export function cleanAmendement(amendement) {
|
|
|
152
120
|
assert(listeProgrammes);
|
|
153
121
|
dispositifAmdtCreditPLFR.listeProgrammes = [listeProgrammes];
|
|
154
122
|
}
|
|
155
|
-
|
|
156
123
|
for (const programme of dispositifAmdtCreditPLFR.listeProgrammes) {
|
|
157
124
|
cleanXmlArtefacts(programme);
|
|
158
|
-
|
|
159
125
|
if (programme.lignesCredits !== undefined) {
|
|
160
126
|
let lignesCredits = programme.lignesCredits.ligneCredit;
|
|
161
|
-
|
|
162
127
|
if (lignesCredits === undefined) {
|
|
163
128
|
delete programme.lignesCredits;
|
|
164
129
|
} else {
|
|
@@ -166,10 +131,8 @@ export function cleanAmendement(amendement) {
|
|
|
166
131
|
assert(lignesCredits);
|
|
167
132
|
lignesCredits = [lignesCredits];
|
|
168
133
|
}
|
|
169
|
-
|
|
170
134
|
programme.lignesCredits = lignesCredits;
|
|
171
135
|
}
|
|
172
|
-
|
|
173
136
|
if (lignesCredits !== undefined) {
|
|
174
137
|
for (const ligneCredit of lignesCredits) {
|
|
175
138
|
cleanLigneCreditPLFR(ligneCredit);
|
|
@@ -181,9 +144,7 @@ export function cleanAmendement(amendement) {
|
|
|
181
144
|
}
|
|
182
145
|
}
|
|
183
146
|
}
|
|
184
|
-
|
|
185
147
|
const cycleDeVie = amendement.cycleDeVie;
|
|
186
|
-
|
|
187
148
|
if (cycleDeVie !== undefined) {
|
|
188
149
|
cleanXmlArtefacts(cycleDeVie);
|
|
189
150
|
const etatDesTraitements = cycleDeVie.etatDesTraitements;
|
|
@@ -194,13 +155,11 @@ export function cleanAmendement(amendement) {
|
|
|
194
155
|
cleanXmlArtefacts(etat);
|
|
195
156
|
}
|
|
196
157
|
const sousEtat = etatDesTraitements.sousEtat;
|
|
197
|
-
|
|
198
158
|
if (sousEtat !== undefined) {
|
|
199
159
|
cleanXmlArtefacts(sousEtat);
|
|
200
160
|
}
|
|
201
161
|
}
|
|
202
162
|
}
|
|
203
|
-
|
|
204
163
|
if (amendement.representations !== undefined) {
|
|
205
164
|
const representation = amendement.representations.representation;
|
|
206
165
|
assert(!Array.isArray(representation));
|
|
@@ -221,32 +180,23 @@ export function cleanAmendement(amendement) {
|
|
|
221
180
|
}
|
|
222
181
|
}
|
|
223
182
|
}
|
|
224
|
-
|
|
225
183
|
const loiReference = amendement.loiReference;
|
|
226
|
-
|
|
227
184
|
if (loiReference !== undefined) {
|
|
228
185
|
cleanXmlArtefacts(loiReference);
|
|
229
186
|
}
|
|
230
|
-
|
|
231
187
|
const discussionCommune = amendement.discussionCommune;
|
|
232
|
-
|
|
233
188
|
if (discussionCommune !== undefined) {
|
|
234
189
|
cleanXmlArtefacts(discussionCommune);
|
|
235
190
|
}
|
|
236
|
-
|
|
237
191
|
const discussionIdentique = amendement.discussionIdentique;
|
|
238
|
-
|
|
239
192
|
if (discussionIdentique !== undefined) {
|
|
240
193
|
cleanXmlArtefacts(discussionIdentique);
|
|
241
194
|
}
|
|
242
195
|
}
|
|
243
|
-
|
|
244
196
|
function cleanLigneCreditPLFR(ligneCreditPLFR) {
|
|
245
197
|
cleanXmlArtefacts(ligneCreditPLFR);
|
|
246
|
-
|
|
247
198
|
if (ligneCreditPLFR.lignesCredits !== undefined) {
|
|
248
199
|
let lignesCredits = ligneCreditPLFR.lignesCredits.ligneCredit;
|
|
249
|
-
|
|
250
200
|
if (lignesCredits === undefined) {
|
|
251
201
|
delete ligneCreditPLFR.lignesCredits;
|
|
252
202
|
} else {
|
|
@@ -254,10 +204,8 @@ function cleanLigneCreditPLFR(ligneCreditPLFR) {
|
|
|
254
204
|
assert(lignesCredits);
|
|
255
205
|
lignesCredits = [lignesCredits];
|
|
256
206
|
}
|
|
257
|
-
|
|
258
207
|
ligneCreditPLFR.lignesCredits = lignesCredits;
|
|
259
208
|
}
|
|
260
|
-
|
|
261
209
|
if (lignesCredits !== undefined) {
|
|
262
210
|
for (const ligneCredit of lignesCredits) {
|
|
263
211
|
cleanLigneCreditPLFR(ligneCredit);
|
|
@@ -265,9 +213,10 @@ function cleanLigneCreditPLFR(ligneCreditPLFR) {
|
|
|
265
213
|
}
|
|
266
214
|
}
|
|
267
215
|
}
|
|
268
|
-
|
|
269
216
|
export function cleanTexteLegislatif(texteLegislatif) {
|
|
270
|
-
cleanXmlArtefacts(texteLegislatif);
|
|
217
|
+
cleanXmlArtefacts(texteLegislatif);
|
|
218
|
+
|
|
219
|
+
// Note: The following fields in `texteLegislatif.amendements` are currently ignored:
|
|
271
220
|
// * "#text"?: string;
|
|
272
221
|
// * offset?: null;
|
|
273
222
|
// * nom?: Nom;
|
|
@@ -275,18 +224,15 @@ export function cleanTexteLegislatif(texteLegislatif) {
|
|
|
275
224
|
// * dateDepot?: Date;
|
|
276
225
|
// * documentURI?: string;
|
|
277
226
|
// Because it seems they should belong to an "amendement".
|
|
278
|
-
|
|
279
227
|
let amendement = texteLegislatif.amendements.amendement;
|
|
280
|
-
|
|
281
228
|
if (Array.isArray(amendement)) {
|
|
282
229
|
texteLegislatif.amendements = amendement;
|
|
283
230
|
} else {
|
|
284
231
|
assert(amendement);
|
|
285
232
|
texteLegislatif.amendements = [amendement];
|
|
286
233
|
}
|
|
287
|
-
|
|
288
234
|
for (const amendement of texteLegislatif.amendements) {
|
|
289
235
|
cleanAmendement(amendement);
|
|
290
236
|
}
|
|
291
237
|
}
|
|
292
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJjbGVhblhtbEFydGVmYWN0cyIsIkF2YW50QUFwcmVzIiwiY2xlYW5BbWVuZGVtZW50IiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiY29zaWduYXRhaXJlcyIsInVuZGVmaW5lZCIsImFjdGV1clJlZiIsIkFycmF5IiwiaXNBcnJheSIsImNvc2lnbmF0YWlyZXNSZWZzIiwibGliZWxsZSIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJwb2ludGV1ckZyYWdtZW50VGV4dGUiLCJkaXZpc2lvbiIsImF2YW50QUFwcmVzIiwiYXZhbnRfQV9BcHJlcyIsIkFwcmVzIiwiYW1lbmRlbWVudFN0YW5kYXJkIiwiYWxpbmVhIiwiQSIsIkF2YW50IiwiaW5jbHVkZXMiLCJjb3JwcyIsImNvbnRlbnVBdXRldXIiLCJhdmFudEFwcGVsIiwibm90U3RyaWN0RXF1YWwiLCJkaXNwb3NpdGlmIiwic3RyaWN0RXF1YWwiLCJhbm5leGVFeHBvc2VTb21tYWlyZSIsImRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGIiwibGlzdGVQcm9ncmFtbWVzIiwicHJvZ3JhbW1lIiwibGlnbmVzQ3JlZGl0cyIsImxpZ25lQ3JlZGl0IiwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSIiwiY2xlYW5MaWduZUNyZWRpdFBMRlIiLCJjeWNsZURlVmllIiwiZXRhdERlc1RyYWl0ZW1lbnRzIiwiZXRhdCIsInNvdXNFdGF0IiwicmVwcmVzZW50YXRpb25zIiwicmVwcmVzZW50YXRpb24iLCJyZXBTb3VyY2UiLCJvZmZzZXQiLCJkYXRlRGlzcG9SZXByZXNlbnRhdGlvbiIsInN0YXR1dFJlcHJlc2VudGF0aW9uIiwibG9pUmVmZXJlbmNlIiwiZGlzY3Vzc2lvbkNvbW11bmUiLCJkaXNjdXNzaW9uSWRlbnRpcXVlIiwibGlnbmVDcmVkaXRQTEZSIiwiY2xlYW5UZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVhbmVycy9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuXG5pbXBvcnQgeyBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUsIGNsZWFuWG1sQXJ0ZWZhY3RzIH0gZnJvbSBcIi4veG1sXCJcbmltcG9ydCB7IEF2YW50QUFwcmVzIH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQW1lbmRlbWVudChhbWVuZGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoYW1lbmRlbWVudClcblxuICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHNpZ25hdGFpcmVzKVxuXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoYXV0ZXVyKVxuICAgIH1cblxuICAgIGlmIChzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1clJlZiA9IHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXMuYWN0ZXVyUmVmXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY3RldXJSZWYpKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzID0gYWN0ZXVyUmVmXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWN0ZXVyUmVmKVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyA9IFthY3RldXJSZWZdXG4gICAgICB9XG4gICAgICBkZWxldGUgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1xuICAgIH1cblxuICAgIGxldCBsaWJlbGxlID0gc2lnbmF0YWlyZXMubGliZWxsZVxuICAgIGlmIChsaWJlbGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxpYmVsbGUgPSBsaWJlbGxlLnNwbGl0KFwiIFwiKS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIilcbiAgICAgIGlmIChsaWJlbGxlKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmxpYmVsbGUgPSBsaWJlbGxlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgc2lnbmF0YWlyZXMubGliZWxsZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZSA9IGFtZW5kZW1lbnQucG9pbnRldXJGcmFnbWVudFRleHRlXG4gIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhwb2ludGV1ckZyYWdtZW50VGV4dGUpXG5cbiAgICBjb25zdCBkaXZpc2lvbiA9IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5kaXZpc2lvblxuICAgIGlmIChkaXZpc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhkaXZpc2lvbilcblxuICAgICAgbGV0IGF2YW50QUFwcmVzID0gZGl2aXNpb24uYXZhbnRfQV9BcHJlc1xuICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIGRpdmlzaW9uLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzID09PSBcIkFwcsOoc1wiKSB7XG4gICAgICAgICAgYXZhbnRBQXByZXMgPSBBdmFudEFBcHJlcy5BcHJlc1xuICAgICAgICB9XG4gICAgICAgIGRpdmlzaW9uLmF2YW50QUFwcmVzID0gYXZhbnRBQXByZXNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhbWVuZGVtZW50U3RhbmRhcmQgPSBwb2ludGV1ckZyYWdtZW50VGV4dGUuYW1lbmRlbWVudFN0YW5kYXJkXG4gICAgaWYgKGFtZW5kZW1lbnRTdGFuZGFyZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhhbWVuZGVtZW50U3RhbmRhcmQpXG5cbiAgICAgIGNvbnN0IGFsaW5lYSA9IGFtZW5kZW1lbnRTdGFuZGFyZC5hbGluZWFcbiAgICAgIGlmIChhbGluZWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhbGluZWEpXG5cbiAgICAgICAgbGV0IGF2YW50QUFwcmVzID0gYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgICBpZiAoYXZhbnRBQXByZXMgPT09IFwiQXByw6hzXCIpIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQXByZXNcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgIVtBdmFudEFBcHJlcy5BLCBBdmFudEFBcHJlcy5BcHJlcywgQXZhbnRBQXByZXMuQXZhbnRdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBhdmFudEFBcHJlcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQVxuICAgICAgICAgIH1cbiAgICAgICAgICBhbGluZWEuYXZhbnRBQXByZXMgPSBhdmFudEFBcHJlc1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRldXJGcmFnbWVudFRleHRlLmFsaW5lYSA9IGFsaW5lYVxuICAgICAgfVxuICAgICAgZGVsZXRlIHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5hbWVuZGVtZW50U3RhbmRhcmRcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb3JwcyA9IGFtZW5kZW1lbnQuY29ycHNcbiAgaWYgKGNvcnBzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjb3JwcylcblxuICAgIGNvbnN0IGNvbnRlbnVBdXRldXIgPSBjb3Jwcy5jb250ZW51QXV0ZXVyXG4gICAgaWYgKGNvbnRlbnVBdXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoY29udGVudUF1dGV1cilcblxuICAgICAgY29uc3QgYXZhbnRBcHBlbCA9IGNvbnRlbnVBdXRldXIuYXZhbnRBcHBlbFxuICAgICAgaWYgKGF2YW50QXBwZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhdmFudEFwcGVsKVxuXG4gICAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhdmFudEFwcGVsLmRpc3Bvc2l0aWYsIHVuZGVmaW5lZClcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnVBdXRldXIuYW5uZXhlRXhwb3NlU29tbWFpcmUsIHVuZGVmaW5lZClcblxuICAgICAgY29uc3QgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgPSBjb250ZW51QXV0ZXVyLmRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBsaXN0ZVByb2dyYW1tZXMgPVxuICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcz8ucHJvZ3JhbW1lXG4gICAgICAgIGlmIChsaXN0ZVByb2dyYW1tZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3RlUHJvZ3JhbW1lcykpIHtcbiAgICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYubGlzdGVQcm9ncmFtbWVzID0gW2xpc3RlUHJvZ3JhbW1lc11cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHByb2dyYW1tZSBvZiBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRi5saXN0ZVByb2dyYW1tZXMpIHtcbiAgICAgICAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHByb2dyYW1tZSlcblxuICAgICAgICAgICAgaWYgKHByb2dyYW1tZS5saWduZXNDcmVkaXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgbGV0IGxpZ25lc0NyZWRpdHMgPSBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cy5saWduZUNyZWRpdFxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1tZS5saWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgICAgICAgICAgICBhc3NlcnQobGlnbmVzQ3JlZGl0cylcbiAgICAgICAgICAgICAgICAgIGxpZ25lc0NyZWRpdHMgPSBbbGlnbmVzQ3JlZGl0c11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgPSBsaWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlnbmVDcmVkaXQgb2YgbGlnbmVzQ3JlZGl0cykge1xuICAgICAgICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMobGlnbmVDcmVkaXQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGUiA9IGNvbnRlbnVBdXRldXIuZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbGlzdGVQcm9ncmFtbWVzID1cbiAgICAgICAgICBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRlIubGlzdGVQcm9ncmFtbWVzPy5wcm9ncmFtbWVcbiAgICAgICAgaWYgKGxpc3RlUHJvZ3JhbW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdGVQcm9ncmFtbWVzKSkge1xuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IFtsaXN0ZVByb2dyYW1tZXNdXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBwcm9ncmFtbWUgb2YgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcykge1xuICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMocHJvZ3JhbW1lKVxuXG4gICAgICAgICAgICBpZiAocHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXQgbGlnbmVzQ3JlZGl0cyA9IHByb2dyYW1tZS5saWduZXNDcmVkaXRzLmxpZ25lQ3JlZGl0XG4gICAgICAgICAgICAgIGlmIChsaWduZXNDcmVkaXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlnbmVzQ3JlZGl0cykpIHtcbiAgICAgICAgICAgICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICAgICAgICAgICAgbGlnbmVzQ3JlZGl0cyA9IFtsaWduZXNDcmVkaXRzXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhbkxpZ25lQ3JlZGl0UExGUihsaWduZUNyZWRpdClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBjeWNsZURlVmllID0gYW1lbmRlbWVudC5jeWNsZURlVmllXG4gIGlmIChjeWNsZURlVmllICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjeWNsZURlVmllKVxuXG4gICAgY29uc3QgZXRhdERlc1RyYWl0ZW1lbnRzID0gY3ljbGVEZVZpZS5ldGF0RGVzVHJhaXRlbWVudHNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0RGVzVHJhaXRlbWVudHMpXG5cbiAgICAgIGNvbnN0IGV0YXQgPSBldGF0RGVzVHJhaXRlbWVudHMuZXRhdFxuICAgICAge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VzRXRhdCA9IGV0YXREZXNUcmFpdGVtZW50cy5zb3VzRXRhdFxuICAgICAgaWYgKHNvdXNFdGF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoc291c0V0YXQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZXByZXNlbnRhdGlvbiA9IGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zLnJlcHJlc2VudGF0aW9uXG4gICAgYXNzZXJ0KCFBcnJheS5pc0FycmF5KHJlcHJlc2VudGF0aW9uKSlcbiAgICBhbWVuZGVtZW50LnJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb25cbiAgICBkZWxldGUgYW1lbmRlbWVudC5yZXByZXNlbnRhdGlvbnNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhyZXByZXNlbnRhdGlvbilcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLnJlcFNvdXJjZSwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLm9mZnNldCwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLmRhdGVEaXNwb1JlcHJlc2VudGF0aW9uLCB1bmRlZmluZWQpXG5cbiAgICAgIGNvbnN0IHN0YXR1dFJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb24uc3RhdHV0UmVwcmVzZW50YXRpb25cbiAgICAgIHtcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcImNhbm9uaXF1ZVwiKVxuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoc3RhdHV0UmVwcmVzZW50YXRpb24sIFwiZW5yZWdpc3RyZW1lbnRcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcIm9mZmljaWVsbGVcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInRyYW5zY3JpcHRpb25cIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInZlcmJhdGltXCIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbG9pUmVmZXJlbmNlID0gYW1lbmRlbWVudC5sb2lSZWZlcmVuY2VcbiAgaWYgKGxvaVJlZmVyZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMobG9pUmVmZXJlbmNlKVxuICB9XG5cbiAgY29uc3QgZGlzY3Vzc2lvbkNvbW11bmUgPSBhbWVuZGVtZW50LmRpc2N1c3Npb25Db21tdW5lXG4gIGlmIChkaXNjdXNzaW9uQ29tbXVuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoZGlzY3Vzc2lvbkNvbW11bmUpXG4gIH1cblxuICBjb25zdCBkaXNjdXNzaW9uSWRlbnRpcXVlID0gYW1lbmRlbWVudC5kaXNjdXNzaW9uSWRlbnRpcXVlXG4gIGlmIChkaXNjdXNzaW9uSWRlbnRpcXVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhkaXNjdXNzaW9uSWRlbnRpcXVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0UExGUjogYW55KSB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGxpZ25lQ3JlZGl0UExGUilcblxuICBpZiAobGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBsaWduZXNDcmVkaXRzID0gbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMubGlnbmVDcmVkaXRcbiAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICBsaWduZXNDcmVkaXRzID0gW2xpZ25lc0NyZWRpdHNdXG4gICAgICB9XG4gICAgICBsaWduZUNyZWRpdFBMRlIubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICB9XG4gICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0KVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5UZXh0ZUxlZ2lzbGF0aWYodGV4dGVMZWdpc2xhdGlmOiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHModGV4dGVMZWdpc2xhdGlmKVxuXG4gIC8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgZmllbGRzIGluIGB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHNgIGFyZSBjdXJyZW50bHkgaWdub3JlZDpcbiAgLy8gKiBcIiN0ZXh0XCI/OiAgICAgICBzdHJpbmc7XG4gIC8vICogb2Zmc2V0PzogICAgICAgIG51bGw7XG4gIC8vICogbm9tPzogICAgICAgICAgIE5vbTtcbiAgLy8gKiBhdmFudF9BX0FwcmVzPzogRGl2aXNpb25BdmFudEFBcHJlcztcbiAgLy8gKiBkYXRlRGVwb3Q/OiAgICAgRGF0ZTtcbiAgLy8gKiBkb2N1bWVudFVSST86ICAgc3RyaW5nO1xuICAvLyBCZWNhdXNlIGl0IHNlZW1zIHRoZXkgc2hvdWxkIGJlbG9uZyB0byBhbiBcImFtZW5kZW1lbnRcIi5cbiAgbGV0IGFtZW5kZW1lbnQgPSB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMuYW1lbmRlbWVudFxuICBpZiAoQXJyYXkuaXNBcnJheShhbWVuZGVtZW50KSkge1xuICAgIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cyA9IGFtZW5kZW1lbnRcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQoYW1lbmRlbWVudClcbiAgICB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMgPSBbYW1lbmRlbWVudF1cbiAgfVxuXG4gIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO1NBRVNDLHFCLEVBQXVCQyxpQjtTQUN2QkMsVztBQUVULE9BQU8sU0FBU0MsZUFBVCxDQUF5QkMsVUFBekIsRUFBZ0Q7RUFDckRILGlCQUFpQixDQUFDRyxVQUFELENBQWpCO0VBRUEsTUFBTUMsV0FBVyxHQUFHRCxVQUFVLENBQUNDLFdBQS9CO0VBQ0E7SUFDRUosaUJBQWlCLENBQUNJLFdBQUQsQ0FBakI7SUFFQSxNQUFNQyxNQUFNLEdBQUdELFdBQVcsQ0FBQ0MsTUFBM0I7SUFDQTtNQUNFTCxpQkFBaUIsQ0FBQ0ssTUFBRCxDQUFqQjtJQUNEOztJQUVELElBQUlELFdBQVcsQ0FBQ0UsYUFBWixLQUE4QkMsU0FBbEMsRUFBNkM7TUFDM0MsTUFBTUMsU0FBUyxHQUFHSixXQUFXLENBQUNFLGFBQVosQ0FBMEJFLFNBQTVDOztNQUNBLElBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixTQUFkLENBQUosRUFBOEI7UUFDNUJKLFdBQVcsQ0FBQ08saUJBQVosR0FBZ0NILFNBQWhDO01BQ0QsQ0FGRCxNQUVPO1FBQ0xWLE1BQU0sQ0FBQ1UsU0FBRCxDQUFOO1FBQ0FKLFdBQVcsQ0FBQ08saUJBQVosR0FBZ0MsQ0FBQ0gsU0FBRCxDQUFoQztNQUNEOztNQUNELE9BQU9KLFdBQVcsQ0FBQ0UsYUFBbkI7SUFDRDs7SUFFRCxJQUFJTSxPQUFPLEdBQUdSLFdBQVcsQ0FBQ1EsT0FBMUI7O0lBQ0EsSUFBSUEsT0FBTyxLQUFLTCxTQUFoQixFQUEyQjtNQUN6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
|
|
238
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJjbGVhblhtbEFydGVmYWN0cyIsIkF2YW50QUFwcmVzIiwiY2xlYW5BbWVuZGVtZW50IiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiY29zaWduYXRhaXJlcyIsInVuZGVmaW5lZCIsImFjdGV1clJlZiIsIkFycmF5IiwiaXNBcnJheSIsImNvc2lnbmF0YWlyZXNSZWZzIiwibGliZWxsZSIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJwb2ludGV1ckZyYWdtZW50VGV4dGUiLCJkaXZpc2lvbiIsImF2YW50QUFwcmVzIiwiYXZhbnRfQV9BcHJlcyIsIkFwcmVzIiwiYW1lbmRlbWVudFN0YW5kYXJkIiwiYWxpbmVhIiwiQSIsIkF2YW50IiwiaW5jbHVkZXMiLCJjb3JwcyIsImNvbnRlbnVBdXRldXIiLCJhdmFudEFwcGVsIiwibm90U3RyaWN0RXF1YWwiLCJkaXNwb3NpdGlmIiwic3RyaWN0RXF1YWwiLCJhbm5leGVFeHBvc2VTb21tYWlyZSIsImRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGIiwibGlzdGVQcm9ncmFtbWVzIiwicHJvZ3JhbW1lIiwibGlnbmVzQ3JlZGl0cyIsImxpZ25lQ3JlZGl0IiwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSIiwiY2xlYW5MaWduZUNyZWRpdFBMRlIiLCJjeWNsZURlVmllIiwiZXRhdERlc1RyYWl0ZW1lbnRzIiwiZXRhdCIsInNvdXNFdGF0IiwicmVwcmVzZW50YXRpb25zIiwicmVwcmVzZW50YXRpb24iLCJyZXBTb3VyY2UiLCJvZmZzZXQiLCJkYXRlRGlzcG9SZXByZXNlbnRhdGlvbiIsInN0YXR1dFJlcHJlc2VudGF0aW9uIiwibG9pUmVmZXJlbmNlIiwiZGlzY3Vzc2lvbkNvbW11bmUiLCJkaXNjdXNzaW9uSWRlbnRpcXVlIiwibGlnbmVDcmVkaXRQTEZSIiwiY2xlYW5UZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVhbmVycy9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuXG5pbXBvcnQgeyBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUsIGNsZWFuWG1sQXJ0ZWZhY3RzIH0gZnJvbSBcIi4veG1sXCJcbmltcG9ydCB7IEF2YW50QUFwcmVzIH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQW1lbmRlbWVudChhbWVuZGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoYW1lbmRlbWVudClcblxuICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHNpZ25hdGFpcmVzKVxuXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoYXV0ZXVyKVxuICAgIH1cblxuICAgIGlmIChzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1clJlZiA9IHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXMuYWN0ZXVyUmVmXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY3RldXJSZWYpKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzID0gYWN0ZXVyUmVmXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWN0ZXVyUmVmKVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyA9IFthY3RldXJSZWZdXG4gICAgICB9XG4gICAgICBkZWxldGUgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1xuICAgIH1cblxuICAgIGxldCBsaWJlbGxlID0gc2lnbmF0YWlyZXMubGliZWxsZVxuICAgIGlmIChsaWJlbGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxpYmVsbGUgPSBsaWJlbGxlLnNwbGl0KFwiIFwiKS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIilcbiAgICAgIGlmIChsaWJlbGxlKSB7XG4gICAgICAgIHNpZ25hdGFpcmVzLmxpYmVsbGUgPSBsaWJlbGxlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgc2lnbmF0YWlyZXMubGliZWxsZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZSA9IGFtZW5kZW1lbnQucG9pbnRldXJGcmFnbWVudFRleHRlXG4gIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhwb2ludGV1ckZyYWdtZW50VGV4dGUpXG5cbiAgICBjb25zdCBkaXZpc2lvbiA9IHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5kaXZpc2lvblxuICAgIGlmIChkaXZpc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhkaXZpc2lvbilcblxuICAgICAgbGV0IGF2YW50QUFwcmVzID0gZGl2aXNpb24uYXZhbnRfQV9BcHJlc1xuICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIGRpdmlzaW9uLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzID09PSBcIkFwcsOoc1wiKSB7XG4gICAgICAgICAgYXZhbnRBQXByZXMgPSBBdmFudEFBcHJlcy5BcHJlc1xuICAgICAgICB9XG4gICAgICAgIGRpdmlzaW9uLmF2YW50QUFwcmVzID0gYXZhbnRBQXByZXNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhbWVuZGVtZW50U3RhbmRhcmQgPSBwb2ludGV1ckZyYWdtZW50VGV4dGUuYW1lbmRlbWVudFN0YW5kYXJkXG4gICAgaWYgKGFtZW5kZW1lbnRTdGFuZGFyZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhhbWVuZGVtZW50U3RhbmRhcmQpXG5cbiAgICAgIGNvbnN0IGFsaW5lYSA9IGFtZW5kZW1lbnRTdGFuZGFyZC5hbGluZWFcbiAgICAgIGlmIChhbGluZWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhbGluZWEpXG5cbiAgICAgICAgbGV0IGF2YW50QUFwcmVzID0gYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgaWYgKGF2YW50QUFwcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWxldGUgYWxpbmVhLmF2YW50X0FfQXByZXNcbiAgICAgICAgICBpZiAoYXZhbnRBQXByZXMgPT09IFwiQXByw6hzXCIpIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQXByZXNcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgIVtBdmFudEFBcHJlcy5BLCBBdmFudEFBcHJlcy5BcHJlcywgQXZhbnRBQXByZXMuQXZhbnRdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBhdmFudEFBcHJlcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGF2YW50QUFwcmVzID0gQXZhbnRBQXByZXMuQVxuICAgICAgICAgIH1cbiAgICAgICAgICBhbGluZWEuYXZhbnRBQXByZXMgPSBhdmFudEFBcHJlc1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRldXJGcmFnbWVudFRleHRlLmFsaW5lYSA9IGFsaW5lYVxuICAgICAgfVxuICAgICAgZGVsZXRlIHBvaW50ZXVyRnJhZ21lbnRUZXh0ZS5hbWVuZGVtZW50U3RhbmRhcmRcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb3JwcyA9IGFtZW5kZW1lbnQuY29ycHNcbiAgaWYgKGNvcnBzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjb3JwcylcblxuICAgIGNvbnN0IGNvbnRlbnVBdXRldXIgPSBjb3Jwcy5jb250ZW51QXV0ZXVyXG4gICAgaWYgKGNvbnRlbnVBdXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoY29udGVudUF1dGV1cilcblxuICAgICAgY29uc3QgYXZhbnRBcHBlbCA9IGNvbnRlbnVBdXRldXIuYXZhbnRBcHBlbFxuICAgICAgaWYgKGF2YW50QXBwZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhdmFudEFwcGVsKVxuXG4gICAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhdmFudEFwcGVsLmRpc3Bvc2l0aWYsIHVuZGVmaW5lZClcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnVBdXRldXIuYW5uZXhlRXhwb3NlU29tbWFpcmUsIHVuZGVmaW5lZClcblxuICAgICAgY29uc3QgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgPSBjb250ZW51QXV0ZXVyLmRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBsaXN0ZVByb2dyYW1tZXMgPVxuICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcz8ucHJvZ3JhbW1lXG4gICAgICAgIGlmIChsaXN0ZVByb2dyYW1tZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3RlUHJvZ3JhbW1lcykpIHtcbiAgICAgICAgICAgIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEYubGlzdGVQcm9ncmFtbWVzID0gW2xpc3RlUHJvZ3JhbW1lc11cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHByb2dyYW1tZSBvZiBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRi5saXN0ZVByb2dyYW1tZXMpIHtcbiAgICAgICAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKHByb2dyYW1tZSlcblxuICAgICAgICAgICAgaWYgKHByb2dyYW1tZS5saWduZXNDcmVkaXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgbGV0IGxpZ25lc0NyZWRpdHMgPSBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cy5saWduZUNyZWRpdFxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1tZS5saWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgICAgICAgICAgICBhc3NlcnQobGlnbmVzQ3JlZGl0cylcbiAgICAgICAgICAgICAgICAgIGxpZ25lc0NyZWRpdHMgPSBbbGlnbmVzQ3JlZGl0c11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgPSBsaWduZXNDcmVkaXRzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlnbmVDcmVkaXQgb2YgbGlnbmVzQ3JlZGl0cykge1xuICAgICAgICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMobGlnbmVDcmVkaXQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGUiA9IGNvbnRlbnVBdXRldXIuZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXG4gICAgICBpZiAoZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbGlzdGVQcm9ncmFtbWVzID1cbiAgICAgICAgICBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRlIubGlzdGVQcm9ncmFtbWVzPy5wcm9ncmFtbWVcbiAgICAgICAgaWYgKGxpc3RlUHJvZ3JhbW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdGVQcm9ncmFtbWVzKSkge1xuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IGxpc3RlUHJvZ3JhbW1lc1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NlcnQobGlzdGVQcm9ncmFtbWVzKVxuICAgICAgICAgICAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcyA9IFtsaXN0ZVByb2dyYW1tZXNdXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBwcm9ncmFtbWUgb2YgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSLmxpc3RlUHJvZ3JhbW1lcykge1xuICAgICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMocHJvZ3JhbW1lKVxuXG4gICAgICAgICAgICBpZiAocHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXQgbGlnbmVzQ3JlZGl0cyA9IHByb2dyYW1tZS5saWduZXNDcmVkaXRzLmxpZ25lQ3JlZGl0XG4gICAgICAgICAgICAgIGlmIChsaWduZXNDcmVkaXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcHJvZ3JhbW1lLmxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlnbmVzQ3JlZGl0cykpIHtcbiAgICAgICAgICAgICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICAgICAgICAgICAgbGlnbmVzQ3JlZGl0cyA9IFtsaWduZXNDcmVkaXRzXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9ncmFtbWUubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobGlnbmVzQ3JlZGl0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhbkxpZ25lQ3JlZGl0UExGUihsaWduZUNyZWRpdClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBjeWNsZURlVmllID0gYW1lbmRlbWVudC5jeWNsZURlVmllXG4gIGlmIChjeWNsZURlVmllICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjeWNsZURlVmllKVxuXG4gICAgY29uc3QgZXRhdERlc1RyYWl0ZW1lbnRzID0gY3ljbGVEZVZpZS5ldGF0RGVzVHJhaXRlbWVudHNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0RGVzVHJhaXRlbWVudHMpXG5cbiAgICAgIGNvbnN0IGV0YXQgPSBldGF0RGVzVHJhaXRlbWVudHMuZXRhdFxuICAgICAge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhldGF0KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VzRXRhdCA9IGV0YXREZXNUcmFpdGVtZW50cy5zb3VzRXRhdFxuICAgICAgaWYgKHNvdXNFdGF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoc291c0V0YXQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZXByZXNlbnRhdGlvbiA9IGFtZW5kZW1lbnQucmVwcmVzZW50YXRpb25zLnJlcHJlc2VudGF0aW9uXG4gICAgYXNzZXJ0KCFBcnJheS5pc0FycmF5KHJlcHJlc2VudGF0aW9uKSlcbiAgICBhbWVuZGVtZW50LnJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb25cbiAgICBkZWxldGUgYW1lbmRlbWVudC5yZXByZXNlbnRhdGlvbnNcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhyZXByZXNlbnRhdGlvbilcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLnJlcFNvdXJjZSwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLm9mZnNldCwgdW5kZWZpbmVkKVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcHJlc2VudGF0aW9uLmRhdGVEaXNwb1JlcHJlc2VudGF0aW9uLCB1bmRlZmluZWQpXG5cbiAgICAgIGNvbnN0IHN0YXR1dFJlcHJlc2VudGF0aW9uID0gcmVwcmVzZW50YXRpb24uc3RhdHV0UmVwcmVzZW50YXRpb25cbiAgICAgIHtcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcImNhbm9uaXF1ZVwiKVxuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoc3RhdHV0UmVwcmVzZW50YXRpb24sIFwiZW5yZWdpc3RyZW1lbnRcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcIm9mZmljaWVsbGVcIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInRyYW5zY3JpcHRpb25cIilcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHN0YXR1dFJlcHJlc2VudGF0aW9uLCBcInZlcmJhdGltXCIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbG9pUmVmZXJlbmNlID0gYW1lbmRlbWVudC5sb2lSZWZlcmVuY2VcbiAgaWYgKGxvaVJlZmVyZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMobG9pUmVmZXJlbmNlKVxuICB9XG5cbiAgY29uc3QgZGlzY3Vzc2lvbkNvbW11bmUgPSBhbWVuZGVtZW50LmRpc2N1c3Npb25Db21tdW5lXG4gIGlmIChkaXNjdXNzaW9uQ29tbXVuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoZGlzY3Vzc2lvbkNvbW11bmUpXG4gIH1cblxuICBjb25zdCBkaXNjdXNzaW9uSWRlbnRpcXVlID0gYW1lbmRlbWVudC5kaXNjdXNzaW9uSWRlbnRpcXVlXG4gIGlmIChkaXNjdXNzaW9uSWRlbnRpcXVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhkaXNjdXNzaW9uSWRlbnRpcXVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0UExGUjogYW55KSB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGxpZ25lQ3JlZGl0UExGUilcblxuICBpZiAobGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBsaWduZXNDcmVkaXRzID0gbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHMubGlnbmVDcmVkaXRcbiAgICBpZiAobGlnbmVzQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgbGlnbmVDcmVkaXRQTEZSLmxpZ25lc0NyZWRpdHNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpZ25lc0NyZWRpdHMpKSB7XG4gICAgICAgIGFzc2VydChsaWduZXNDcmVkaXRzKVxuICAgICAgICBsaWduZXNDcmVkaXRzID0gW2xpZ25lc0NyZWRpdHNdXG4gICAgICB9XG4gICAgICBsaWduZUNyZWRpdFBMRlIubGlnbmVzQ3JlZGl0cyA9IGxpZ25lc0NyZWRpdHNcbiAgICB9XG4gICAgaWYgKGxpZ25lc0NyZWRpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBsaWduZUNyZWRpdCBvZiBsaWduZXNDcmVkaXRzKSB7XG4gICAgICAgIGNsZWFuTGlnbmVDcmVkaXRQTEZSKGxpZ25lQ3JlZGl0KVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5UZXh0ZUxlZ2lzbGF0aWYodGV4dGVMZWdpc2xhdGlmOiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHModGV4dGVMZWdpc2xhdGlmKVxuXG4gIC8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgZmllbGRzIGluIGB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHNgIGFyZSBjdXJyZW50bHkgaWdub3JlZDpcbiAgLy8gKiBcIiN0ZXh0XCI/OiAgICAgICBzdHJpbmc7XG4gIC8vICogb2Zmc2V0PzogICAgICAgIG51bGw7XG4gIC8vICogbm9tPzogICAgICAgICAgIE5vbTtcbiAgLy8gKiBhdmFudF9BX0FwcmVzPzogRGl2aXNpb25BdmFudEFBcHJlcztcbiAgLy8gKiBkYXRlRGVwb3Q/OiAgICAgRGF0ZTtcbiAgLy8gKiBkb2N1bWVudFVSST86ICAgc3RyaW5nO1xuICAvLyBCZWNhdXNlIGl0IHNlZW1zIHRoZXkgc2hvdWxkIGJlbG9uZyB0byBhbiBcImFtZW5kZW1lbnRcIi5cbiAgbGV0IGFtZW5kZW1lbnQgPSB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMuYW1lbmRlbWVudFxuICBpZiAoQXJyYXkuaXNBcnJheShhbWVuZGVtZW50KSkge1xuICAgIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cyA9IGFtZW5kZW1lbnRcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQoYW1lbmRlbWVudClcbiAgICB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMgPSBbYW1lbmRlbWVudF1cbiAgfVxuXG4gIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLE1BQU0sUUFBUTtBQUFBLFNBRWxCQyxxQkFBcUIsRUFBRUMsaUJBQWlCO0FBQUEsU0FDeENDLFdBQVc7QUFFcEIsT0FBTyxTQUFTQyxlQUFlLENBQUNDLFVBQWUsRUFBUTtFQUNyREgsaUJBQWlCLENBQUNHLFVBQVUsQ0FBQztFQUU3QixNQUFNQyxXQUFXLEdBQUdELFVBQVUsQ0FBQ0MsV0FBVztFQUMxQztJQUNFSixpQkFBaUIsQ0FBQ0ksV0FBVyxDQUFDO0lBRTlCLE1BQU1DLE1BQU0sR0FBR0QsV0FBVyxDQUFDQyxNQUFNO0lBQ2pDO01BQ0VMLGlCQUFpQixDQUFDSyxNQUFNLENBQUM7SUFDM0I7SUFFQSxJQUFJRCxXQUFXLENBQUNFLGFBQWEsS0FBS0MsU0FBUyxFQUFFO01BQzNDLE1BQU1DLFNBQVMsR0FBR0osV0FBVyxDQUFDRSxhQUFhLENBQUNFLFNBQVM7TUFDckQsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNGLFNBQVMsQ0FBQyxFQUFFO1FBQzVCSixXQUFXLENBQUNPLGlCQUFpQixHQUFHSCxTQUFTO01BQzNDLENBQUMsTUFBTTtRQUNMVixNQUFNLENBQUNVLFNBQVMsQ0FBQztRQUNqQkosV0FBVyxDQUFDTyxpQkFBaUIsR0FBRyxDQUFDSCxTQUFTLENBQUM7TUFDN0M7TUFDQSxPQUFPSixXQUFXLENBQUNFLGFBQWE7SUFDbEM7SUFFQSxJQUFJTSxPQUFPLEdBQUdSLFdBQVcsQ0FBQ1EsT0FBTztJQUNqQyxJQUFJQSxPQUFPLEtBQUtMLFNBQVMsRUFB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
|
|
@@ -1,57 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.array.slice.js");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.object.to-string.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.function.name.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.array.from.js");
|
|
10
|
-
|
|
11
7
|
require("core-js/modules/es.string.iterator.js");
|
|
12
|
-
|
|
13
8
|
require("core-js/modules/es.regexp.exec.js");
|
|
14
|
-
|
|
15
9
|
require("core-js/modules/es.symbol.js");
|
|
16
|
-
|
|
17
10
|
require("core-js/modules/es.symbol.description.js");
|
|
18
|
-
|
|
19
11
|
require("core-js/modules/es.symbol.iterator.js");
|
|
20
|
-
|
|
21
12
|
require("core-js/modules/es.array.iterator.js");
|
|
22
|
-
|
|
23
13
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
24
|
-
|
|
25
14
|
require("core-js/modules/es.object.define-property.js");
|
|
26
|
-
|
|
27
15
|
Object.defineProperty(exports, "__esModule", {
|
|
28
16
|
value: true
|
|
29
17
|
});
|
|
30
18
|
exports.cleanDocumentOrDivision = cleanDocumentOrDivision;
|
|
31
|
-
|
|
32
19
|
require("core-js/modules/es.array.is-array.js");
|
|
33
|
-
|
|
34
20
|
var _assert = _interopRequireDefault(require("assert"));
|
|
35
|
-
|
|
36
21
|
var _xml = require("./xml");
|
|
37
|
-
|
|
38
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
39
|
-
|
|
40
23
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
41
|
-
|
|
42
24
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
43
|
-
|
|
44
25
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
45
|
-
|
|
46
26
|
function cleanDocumentOrDivision(d) {
|
|
47
27
|
(0, _xml.cleanXmlArtefacts)(d);
|
|
48
28
|
var xsiType = d["@xsi:type"];
|
|
49
|
-
|
|
50
29
|
if (xsiType !== undefined) {
|
|
51
30
|
d.xsiType = xsiType;
|
|
52
31
|
delete d["@xsi:type"];
|
|
53
32
|
}
|
|
54
|
-
|
|
55
33
|
var cycleDeVie = d.cycleDeVie;
|
|
56
34
|
(0, _assert["default"])(cycleDeVie);
|
|
57
35
|
{
|
|
@@ -60,20 +38,15 @@ function cleanDocumentOrDivision(d) {
|
|
|
60
38
|
(0, _xml.cleanXmlArtefacts)(chrono);
|
|
61
39
|
}
|
|
62
40
|
var divisions = d.divisions;
|
|
63
|
-
|
|
64
41
|
if (divisions !== undefined) {
|
|
65
42
|
divisions = divisions.division;
|
|
66
|
-
|
|
67
43
|
if (!Array.isArray(divisions)) {
|
|
68
44
|
(0, _assert["default"])(divisions);
|
|
69
45
|
divisions = [divisions];
|
|
70
46
|
}
|
|
71
|
-
|
|
72
47
|
d.divisions = divisions;
|
|
73
|
-
|
|
74
48
|
var _iterator = _createForOfIteratorHelper(divisions),
|
|
75
|
-
|
|
76
|
-
|
|
49
|
+
_step;
|
|
77
50
|
try {
|
|
78
51
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
79
52
|
var division = _step.value;
|
|
@@ -85,32 +58,24 @@ function cleanDocumentOrDivision(d) {
|
|
|
85
58
|
_iterator.f();
|
|
86
59
|
}
|
|
87
60
|
}
|
|
88
|
-
|
|
89
61
|
_assert["default"].strictEqual(d.redacteur, undefined);
|
|
90
|
-
|
|
91
62
|
var classification = d.classification;
|
|
92
63
|
(0, _assert["default"])(classification);
|
|
93
64
|
(0, _xml.cleanXmlArtefacts)(classification);
|
|
94
65
|
var auteurs = d.auteurs;
|
|
95
|
-
|
|
96
66
|
if (auteurs !== undefined) {
|
|
97
67
|
auteurs = auteurs.auteur;
|
|
98
|
-
|
|
99
68
|
if (!Array.isArray(auteurs)) {
|
|
100
69
|
(0, _assert["default"])(auteurs);
|
|
101
70
|
auteurs = [auteurs];
|
|
102
71
|
}
|
|
103
|
-
|
|
104
72
|
d.auteurs = auteurs;
|
|
105
|
-
|
|
106
73
|
var _iterator2 = _createForOfIteratorHelper(auteurs),
|
|
107
|
-
|
|
108
|
-
|
|
74
|
+
_step2;
|
|
109
75
|
try {
|
|
110
76
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
111
77
|
var auteur = _step2.value;
|
|
112
78
|
var organeRef = auteur.organe;
|
|
113
|
-
|
|
114
79
|
if (organeRef !== undefined) {
|
|
115
80
|
auteur.organeRef = organeRef.organeRef;
|
|
116
81
|
delete auteur.organe;
|
|
@@ -122,42 +87,33 @@ function cleanDocumentOrDivision(d) {
|
|
|
122
87
|
_iterator2.f();
|
|
123
88
|
}
|
|
124
89
|
}
|
|
125
|
-
|
|
126
90
|
var notice = d.notice;
|
|
127
91
|
{
|
|
128
92
|
(0, _xml.cleanBooleanAttribute)(notice, "adoptionConforme");
|
|
129
93
|
}
|
|
130
94
|
var coSignataires = d.coSignataires;
|
|
131
|
-
|
|
132
95
|
if (coSignataires !== undefined) {
|
|
133
96
|
coSignataires = coSignataires.coSignataire;
|
|
134
|
-
|
|
135
97
|
if (!Array.isArray(coSignataires)) {
|
|
136
98
|
(0, _assert["default"])(coSignataires);
|
|
137
99
|
coSignataires = [coSignataires];
|
|
138
100
|
}
|
|
139
|
-
|
|
140
101
|
d.coSignataires = coSignataires;
|
|
141
|
-
|
|
142
102
|
var _iterator3 = _createForOfIteratorHelper(coSignataires),
|
|
143
|
-
|
|
144
|
-
|
|
103
|
+
_step3;
|
|
145
104
|
try {
|
|
146
105
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
147
106
|
var coSignataire = _step3.value;
|
|
148
107
|
(0, _xml.cleanXmlArtefacts)(coSignataire);
|
|
149
108
|
(0, _xml.cleanBooleanAttribute)(coSignataire, "edite");
|
|
150
109
|
var acteurRef = coSignataire.acteur;
|
|
151
|
-
|
|
152
110
|
if (acteurRef !== undefined) {
|
|
153
111
|
acteurRef = acteurRef.acteurRef;
|
|
154
112
|
(0, _assert["default"])(acteurRef);
|
|
155
113
|
delete coSignataire.acteur;
|
|
156
114
|
coSignataire.acteurRef = acteurRef;
|
|
157
115
|
}
|
|
158
|
-
|
|
159
116
|
var organe = coSignataire.organe;
|
|
160
|
-
|
|
161
117
|
if (organe !== undefined) {
|
|
162
118
|
(0, _xml.cleanBooleanAttribute)(organe, "etApparentes");
|
|
163
119
|
}
|
|
@@ -168,9 +124,7 @@ function cleanDocumentOrDivision(d) {
|
|
|
168
124
|
_iterator3.f();
|
|
169
125
|
}
|
|
170
126
|
}
|
|
171
|
-
|
|
172
127
|
var depotAmendements = d.depotAmendements;
|
|
173
|
-
|
|
174
128
|
if (depotAmendements !== undefined) {
|
|
175
129
|
(0, _xml.cleanXmlArtefacts)(depotAmendements);
|
|
176
130
|
var amendementsSeance = depotAmendements.amendementsSeance;
|
|
@@ -179,26 +133,20 @@ function cleanDocumentOrDivision(d) {
|
|
|
179
133
|
(0, _xml.cleanBooleanAttribute)(amendementsSeance, "amendable");
|
|
180
134
|
}
|
|
181
135
|
var amendementsCommission = depotAmendements.amendementsCommission;
|
|
182
|
-
|
|
183
136
|
if (amendementsCommission !== undefined) {
|
|
184
137
|
amendementsCommission = amendementsCommission.commission;
|
|
185
|
-
|
|
186
138
|
if (!Array.isArray(amendementsCommission)) {
|
|
187
139
|
(0, _assert["default"])(amendementsCommission);
|
|
188
140
|
amendementsCommission = [amendementsCommission];
|
|
189
141
|
}
|
|
190
|
-
|
|
191
142
|
depotAmendements.amendementsCommission = amendementsCommission;
|
|
192
|
-
|
|
193
143
|
var _iterator4 = _createForOfIteratorHelper(amendementsCommission),
|
|
194
|
-
|
|
195
|
-
|
|
144
|
+
_step4;
|
|
196
145
|
try {
|
|
197
146
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
198
147
|
var commision = _step4.value;
|
|
199
148
|
(0, _xml.cleanXmlArtefacts)(commision);
|
|
200
149
|
(0, _xml.cleanBooleanAttribute)(commision, "amendable");
|
|
201
|
-
|
|
202
150
|
_assert["default"].strictEqual(commision.dateLimiteDepot, undefined);
|
|
203
151
|
}
|
|
204
152
|
} catch (err) {
|
|
@@ -208,40 +156,30 @@ function cleanDocumentOrDivision(d) {
|
|
|
208
156
|
}
|
|
209
157
|
}
|
|
210
158
|
}
|
|
211
|
-
|
|
212
159
|
var imprimerie = d.imprimerie;
|
|
213
|
-
|
|
214
160
|
if (imprimerie !== undefined) {
|
|
215
161
|
(0, _xml.cleanXmlArtefacts)(imprimerie);
|
|
216
162
|
var dian = imprimerie.DIAN;
|
|
217
|
-
|
|
218
163
|
if (dian !== undefined) {
|
|
219
164
|
delete imprimerie.DIAN;
|
|
220
165
|
imprimerie.dian = dian;
|
|
221
166
|
}
|
|
222
|
-
|
|
223
167
|
var isbn = imprimerie.ISBN;
|
|
224
|
-
|
|
225
168
|
if (isbn !== undefined) {
|
|
226
169
|
delete imprimerie.ISBN;
|
|
227
170
|
imprimerie.isbn = isbn;
|
|
228
171
|
}
|
|
229
|
-
|
|
230
172
|
_assert["default"].strictEqual(imprimerie.ISSN, undefined);
|
|
231
173
|
}
|
|
232
|
-
|
|
233
174
|
(0, _xml.cleanBooleanAttribute)(d, "rapportPublie");
|
|
234
175
|
var organesReferents = d.organesReferents;
|
|
235
|
-
|
|
236
176
|
if (organesReferents !== undefined) {
|
|
237
177
|
organesReferents = organesReferents.organeRef;
|
|
238
|
-
|
|
239
178
|
if (!Array.isArray(organesReferents)) {
|
|
240
179
|
(0, _assert["default"])(organesReferents);
|
|
241
180
|
organesReferents = [organesReferents];
|
|
242
181
|
}
|
|
243
|
-
|
|
244
182
|
d.organesReferents = organesReferents;
|
|
245
183
|
}
|
|
246
184
|
}
|
|
247
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGVhbkRvY3VtZW50T3JEaXZpc2lvbiIsImQiLCJjbGVhblhtbEFydGVmYWN0cyIsInhzaVR5cGUiLCJ1bmRlZmluZWQiLCJjeWNsZURlVmllIiwiYXNzZXJ0IiwiY2hyb25vIiwiZGl2aXNpb25zIiwiZGl2aXNpb24iLCJBcnJheSIsImlzQXJyYXkiLCJzdHJpY3RFcXVhbCIsInJlZGFjdGV1ciIsImNsYXNzaWZpY2F0aW9uIiwiYXV0ZXVycyIsImF1dGV1ciIsIm9yZ2FuZVJlZiIsIm9yZ2FuZSIsIm5vdGljZSIsImNsZWFuQm9vbGVhbkF0dHJpYnV0ZSIsImNvU2lnbmF0YWlyZXMiLCJjb1NpZ25hdGFpcmUiLCJhY3RldXJSZWYiLCJhY3RldXIiLCJkZXBvdEFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHNTZWFuY2UiLCJhbWVuZGVtZW50c0NvbW1pc3Npb24iLCJjb21taXNzaW9uIiwiY29tbWlzaW9uIiwiZGF0ZUxpbWl0ZURlcG90IiwiaW1wcmltZXJpZSIsImRpYW4iLCJESUFOIiwiaXNibiIsIklTQk4iLCJJU1NOIiwib3JnYW5lc1JlZmVyZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVhbmVycy9kb2N1bWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcblxuaW1wb3J0IHsgY2xlYW5Cb29sZWFuQXR0cmlidXRlLCBjbGVhblhtbEFydGVmYWN0cyB9IGZyb20gXCIuL3htbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbihkOiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoZClcblxuICBjb25zdCB4c2lUeXBlID0gZFtcIkB4c2k6dHlwZVwiXVxuICBpZiAoeHNpVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZC54c2lUeXBlID0geHNpVHlwZVxuICAgIGRlbGV0ZSBkW1wiQHhzaTp0eXBlXCJdXG4gIH1cblxuICBjb25zdCBjeWNsZURlVmllID0gZC5jeWNsZURlVmllXG4gIGFzc2VydChjeWNsZURlVmllKVxuICB7XG4gICAgY29uc3QgY2hyb25vID0gY3ljbGVEZVZpZS5jaHJvbm9cbiAgICBhc3NlcnQoY2hyb25vKVxuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGNocm9ubylcbiAgfVxuXG4gIGxldCBkaXZpc2lvbnMgPSBkLmRpdmlzaW9uc1xuICBpZiAoZGl2aXNpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICBkaXZpc2lvbnMgPSBkaXZpc2lvbnMuZGl2aXNpb25cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGl2aXNpb25zKSkge1xuICAgICAgYXNzZXJ0KGRpdmlzaW9ucylcbiAgICAgIGRpdmlzaW9ucyA9IFtkaXZpc2lvbnNdXG4gICAgfVxuICAgIGQuZGl2aXNpb25zID0gZGl2aXNpb25zXG4gICAgZm9yIChjb25zdCBkaXZpc2lvbiBvZiBkaXZpc2lvbnMpIHtcbiAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uKGRpdmlzaW9uKVxuICAgIH1cbiAgfVxuXG4gIGFzc2VydC5zdHJpY3RFcXVhbChkLnJlZGFjdGV1ciwgdW5kZWZpbmVkKVxuXG4gIGNvbnN0IGNsYXNzaWZpY2F0aW9uID0gZC5jbGFzc2lmaWNhdGlvblxuICBhc3NlcnQoY2xhc3NpZmljYXRpb24pXG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGNsYXNzaWZpY2F0aW9uKVxuXG4gIGxldCBhdXRldXJzID0gZC5hdXRldXJzXG4gIGlmIChhdXRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICBhdXRldXJzID0gYXV0ZXVycy5hdXRldXJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXV0ZXVycykpIHtcbiAgICAgIGFzc2VydChhdXRldXJzKVxuICAgICAgYXV0ZXVycyA9IFthdXRldXJzXVxuICAgIH1cbiAgICBkLmF1dGV1cnMgPSBhdXRldXJzXG4gICAgZm9yIChjb25zdCBhdXRldXIgb2YgYXV0ZXVycykge1xuICAgICAgbGV0IG9yZ2FuZVJlZiA9IGF1dGV1ci5vcmdhbmVcbiAgICAgIGlmIChvcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIub3JnYW5lUmVmID0gb3JnYW5lUmVmLm9yZ2FuZVJlZlxuICAgICAgICBkZWxldGUgYXV0ZXVyLm9yZ2FuZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5vdGljZSA9IGQubm90aWNlXG4gIHtcbiAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUobm90aWNlLCBcImFkb3B0aW9uQ29uZm9ybWVcIilcbiAgfVxuXG4gIGxldCBjb1NpZ25hdGFpcmVzID0gZC5jb1NpZ25hdGFpcmVzXG4gIGlmIChjb1NpZ25hdGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb1NpZ25hdGFpcmVzID0gY29TaWduYXRhaXJlcy5jb1NpZ25hdGFpcmVcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29TaWduYXRhaXJlcykpIHtcbiAgICAgIGFzc2VydChjb1NpZ25hdGFpcmVzKVxuICAgICAgY29TaWduYXRhaXJlcyA9IFtjb1NpZ25hdGFpcmVzXVxuICAgIH1cbiAgICBkLmNvU2lnbmF0YWlyZXMgPSBjb1NpZ25hdGFpcmVzXG4gICAgZm9yIChjb25zdCBjb1NpZ25hdGFpcmUgb2YgY29TaWduYXRhaXJlcykge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoY29TaWduYXRhaXJlKVxuXG4gICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoY29TaWduYXRhaXJlLCBcImVkaXRlXCIpXG5cbiAgICAgIGxldCBhY3RldXJSZWYgPSBjb1NpZ25hdGFpcmUuYWN0ZXVyXG4gICAgICBpZiAoYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyUmVmID0gYWN0ZXVyUmVmLmFjdGV1clJlZlxuICAgICAgICBhc3NlcnQoYWN0ZXVyUmVmKVxuICAgICAgICBkZWxldGUgY29TaWduYXRhaXJlLmFjdGV1clxuICAgICAgICBjb1NpZ25hdGFpcmUuYWN0ZXVyUmVmID0gYWN0ZXVyUmVmXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGNvU2lnbmF0YWlyZS5vcmdhbmVcbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUob3JnYW5lLCBcImV0QXBwYXJlbnRlc1wiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRlcG90QW1lbmRlbWVudHMgPSBkLmRlcG90QW1lbmRlbWVudHNcbiAgaWYgKGRlcG90QW1lbmRlbWVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGRlcG90QW1lbmRlbWVudHMpXG5cbiAgICBjb25zdCBhbWVuZGVtZW50c1NlYW5jZSA9IGRlcG90QW1lbmRlbWVudHMuYW1lbmRlbWVudHNTZWFuY2VcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhhbWVuZGVtZW50c1NlYW5jZSlcblxuICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKGFtZW5kZW1lbnRzU2VhbmNlLCBcImFtZW5kYWJsZVwiKVxuICAgIH1cblxuICAgIGxldCBhbWVuZGVtZW50c0NvbW1pc3Npb24gPSBkZXBvdEFtZW5kZW1lbnRzLmFtZW5kZW1lbnRzQ29tbWlzc2lvblxuICAgIGlmIChhbWVuZGVtZW50c0NvbW1pc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYW1lbmRlbWVudHNDb21taXNzaW9uID0gYW1lbmRlbWVudHNDb21taXNzaW9uLmNvbW1pc3Npb25cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhbWVuZGVtZW50c0NvbW1pc3Npb24pKSB7XG4gICAgICAgIGFzc2VydChhbWVuZGVtZW50c0NvbW1pc3Npb24pXG4gICAgICAgIGFtZW5kZW1lbnRzQ29tbWlzc2lvbiA9IFthbWVuZGVtZW50c0NvbW1pc3Npb25dXG4gICAgICB9XG4gICAgICBkZXBvdEFtZW5kZW1lbnRzLmFtZW5kZW1lbnRzQ29tbWlzc2lvbiA9IGFtZW5kZW1lbnRzQ29tbWlzc2lvblxuICAgICAgZm9yIChjb25zdCBjb21taXNpb24gb2YgYW1lbmRlbWVudHNDb21taXNzaW9uKSB7XG4gICAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGNvbW1pc2lvbilcblxuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoY29tbWlzaW9uLCBcImFtZW5kYWJsZVwiKVxuXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb21taXNpb24uZGF0ZUxpbWl0ZURlcG90LCB1bmRlZmluZWQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW1wcmltZXJpZSA9IGQuaW1wcmltZXJpZVxuICBpZiAoaW1wcmltZXJpZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoaW1wcmltZXJpZSlcblxuICAgIGNvbnN0IGRpYW4gPSBpbXByaW1lcmllLkRJQU5cbiAgICBpZiAoZGlhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgaW1wcmltZXJpZS5ESUFOXG4gICAgICBpbXByaW1lcmllLmRpYW4gPSBkaWFuXG4gICAgfVxuXG4gICAgY29uc3QgaXNibiA9IGltcHJpbWVyaWUuSVNCTlxuICAgIGlmIChpc2JuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBpbXByaW1lcmllLklTQk5cbiAgICAgIGltcHJpbWVyaWUuaXNibiA9IGlzYm5cbiAgICB9XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaW1wcmltZXJpZS5JU1NOLCB1bmRlZmluZWQpXG4gIH1cblxuICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoZCwgXCJyYXBwb3J0UHVibGllXCIpXG5cbiAgbGV0IG9yZ2FuZXNSZWZlcmVudHMgPSBkLm9yZ2FuZXNSZWZlcmVudHNcbiAgaWYgKG9yZ2FuZXNSZWZlcmVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIG9yZ2FuZXNSZWZlcmVudHMgPSBvcmdhbmVzUmVmZXJlbnRzLm9yZ2FuZVJlZlxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcmdhbmVzUmVmZXJlbnRzKSkge1xuICAgICAgYXNzZXJ0KG9yZ2FuZXNSZWZlcmVudHMpXG4gICAgICBvcmdhbmVzUmVmZXJlbnRzID0gW29yZ2FuZXNSZWZlcmVudHNdXG4gICAgfVxuICAgIGQub3JnYW5lc1JlZmVyZW50cyA9IG9yZ2FuZXNSZWZlcmVudHNcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7Ozs7Ozs7OztBQUVPLFNBQVNBLHVCQUFULENBQWlDQyxDQUFqQyxFQUErQztFQUNwRCxJQUFBQyxzQkFBQSxFQUFrQkQsQ0FBbEI7RUFFQSxJQUFNRSxPQUFPLEdBQUdGLENBQUMsQ0FBQyxXQUFELENBQWpCOztFQUNBLElBQUlFLE9BQU8sS0FBS0MsU0FBaEIsRUFBMkI7SUFDekJILENBQUMsQ0FBQ0UsT0FBRixHQUFZQSxPQUFaO0lBQ0EsT0FBT0YsQ0FBQyxDQUFDLFdBQUQsQ0FBUjtFQUNEOztFQUVELElBQU1JLFVBQVUsR0FBR0osQ0FBQyxDQUFDSSxVQUFyQjtFQUNBLElBQUFDLGtCQUFBLEVBQU9ELFVBQVA7RUFDQTtJQUNFLElBQU1FLE1BQU0sR0FBR0YsVUFBVSxDQUFDRSxNQUExQjtJQUNBLElBQUFELGtCQUFBLEVBQU9DLE1BQVA7SUFDQSxJQUFBTCxzQkFBQSxFQUFrQkssTUFBbEI7RUFDRDtFQUVELElBQUlDLFNBQVMsR0FBR1AsQ0FBQyxDQUFDTyxTQUFsQjs7RUFDQSxJQUFJQSxTQUFTLEtBQUtKLFNBQWxCLEVBQTZCO0lBQzNCSSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsUUFBdEI7O0lBQ0EsSUFBSSxDQUFDQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsU0FBZCxDQUFMLEVBQStCO01BQzdCLElBQUFGLGtCQUFBLEVBQU9FLFNBQVA7TUFDQUEsU0FBUyxHQUFHLENBQUNBLFNBQUQsQ0FBWjtJQUNEOztJQUNEUCxDQUFDLENBQUNPLFNBQUYsR0FBY0EsU0FBZDs7SUFOMkIsMkNBT0pBLFNBUEk7SUFBQTs7SUFBQTtNQU8z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
|
|
185
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGVhbkRvY3VtZW50T3JEaXZpc2lvbiIsImQiLCJjbGVhblhtbEFydGVmYWN0cyIsInhzaVR5cGUiLCJ1bmRlZmluZWQiLCJjeWNsZURlVmllIiwiYXNzZXJ0IiwiY2hyb25vIiwiZGl2aXNpb25zIiwiZGl2aXNpb24iLCJBcnJheSIsImlzQXJyYXkiLCJzdHJpY3RFcXVhbCIsInJlZGFjdGV1ciIsImNsYXNzaWZpY2F0aW9uIiwiYXV0ZXVycyIsImF1dGV1ciIsIm9yZ2FuZVJlZiIsIm9yZ2FuZSIsIm5vdGljZSIsImNsZWFuQm9vbGVhbkF0dHJpYnV0ZSIsImNvU2lnbmF0YWlyZXMiLCJjb1NpZ25hdGFpcmUiLCJhY3RldXJSZWYiLCJhY3RldXIiLCJkZXBvdEFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHNTZWFuY2UiLCJhbWVuZGVtZW50c0NvbW1pc3Npb24iLCJjb21taXNzaW9uIiwiY29tbWlzaW9uIiwiZGF0ZUxpbWl0ZURlcG90IiwiaW1wcmltZXJpZSIsImRpYW4iLCJESUFOIiwiaXNibiIsIklTQk4iLCJJU1NOIiwib3JnYW5lc1JlZmVyZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVhbmVycy9kb2N1bWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcblxuaW1wb3J0IHsgY2xlYW5Cb29sZWFuQXR0cmlidXRlLCBjbGVhblhtbEFydGVmYWN0cyB9IGZyb20gXCIuL3htbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbihkOiBhbnkpOiB2b2lkIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoZClcblxuICBjb25zdCB4c2lUeXBlID0gZFtcIkB4c2k6dHlwZVwiXVxuICBpZiAoeHNpVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZC54c2lUeXBlID0geHNpVHlwZVxuICAgIGRlbGV0ZSBkW1wiQHhzaTp0eXBlXCJdXG4gIH1cblxuICBjb25zdCBjeWNsZURlVmllID0gZC5jeWNsZURlVmllXG4gIGFzc2VydChjeWNsZURlVmllKVxuICB7XG4gICAgY29uc3QgY2hyb25vID0gY3ljbGVEZVZpZS5jaHJvbm9cbiAgICBhc3NlcnQoY2hyb25vKVxuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGNocm9ubylcbiAgfVxuXG4gIGxldCBkaXZpc2lvbnMgPSBkLmRpdmlzaW9uc1xuICBpZiAoZGl2aXNpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICBkaXZpc2lvbnMgPSBkaXZpc2lvbnMuZGl2aXNpb25cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGl2aXNpb25zKSkge1xuICAgICAgYXNzZXJ0KGRpdmlzaW9ucylcbiAgICAgIGRpdmlzaW9ucyA9IFtkaXZpc2lvbnNdXG4gICAgfVxuICAgIGQuZGl2aXNpb25zID0gZGl2aXNpb25zXG4gICAgZm9yIChjb25zdCBkaXZpc2lvbiBvZiBkaXZpc2lvbnMpIHtcbiAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uKGRpdmlzaW9uKVxuICAgIH1cbiAgfVxuXG4gIGFzc2VydC5zdHJpY3RFcXVhbChkLnJlZGFjdGV1ciwgdW5kZWZpbmVkKVxuXG4gIGNvbnN0IGNsYXNzaWZpY2F0aW9uID0gZC5jbGFzc2lmaWNhdGlvblxuICBhc3NlcnQoY2xhc3NpZmljYXRpb24pXG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGNsYXNzaWZpY2F0aW9uKVxuXG4gIGxldCBhdXRldXJzID0gZC5hdXRldXJzXG4gIGlmIChhdXRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICBhdXRldXJzID0gYXV0ZXVycy5hdXRldXJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXV0ZXVycykpIHtcbiAgICAgIGFzc2VydChhdXRldXJzKVxuICAgICAgYXV0ZXVycyA9IFthdXRldXJzXVxuICAgIH1cbiAgICBkLmF1dGV1cnMgPSBhdXRldXJzXG4gICAgZm9yIChjb25zdCBhdXRldXIgb2YgYXV0ZXVycykge1xuICAgICAgbGV0IG9yZ2FuZVJlZiA9IGF1dGV1ci5vcmdhbmVcbiAgICAgIGlmIChvcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIub3JnYW5lUmVmID0gb3JnYW5lUmVmLm9yZ2FuZVJlZlxuICAgICAgICBkZWxldGUgYXV0ZXVyLm9yZ2FuZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5vdGljZSA9IGQubm90aWNlXG4gIHtcbiAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUobm90aWNlLCBcImFkb3B0aW9uQ29uZm9ybWVcIilcbiAgfVxuXG4gIGxldCBjb1NpZ25hdGFpcmVzID0gZC5jb1NpZ25hdGFpcmVzXG4gIGlmIChjb1NpZ25hdGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb1NpZ25hdGFpcmVzID0gY29TaWduYXRhaXJlcy5jb1NpZ25hdGFpcmVcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29TaWduYXRhaXJlcykpIHtcbiAgICAgIGFzc2VydChjb1NpZ25hdGFpcmVzKVxuICAgICAgY29TaWduYXRhaXJlcyA9IFtjb1NpZ25hdGFpcmVzXVxuICAgIH1cbiAgICBkLmNvU2lnbmF0YWlyZXMgPSBjb1NpZ25hdGFpcmVzXG4gICAgZm9yIChjb25zdCBjb1NpZ25hdGFpcmUgb2YgY29TaWduYXRhaXJlcykge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoY29TaWduYXRhaXJlKVxuXG4gICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoY29TaWduYXRhaXJlLCBcImVkaXRlXCIpXG5cbiAgICAgIGxldCBhY3RldXJSZWYgPSBjb1NpZ25hdGFpcmUuYWN0ZXVyXG4gICAgICBpZiAoYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyUmVmID0gYWN0ZXVyUmVmLmFjdGV1clJlZlxuICAgICAgICBhc3NlcnQoYWN0ZXVyUmVmKVxuICAgICAgICBkZWxldGUgY29TaWduYXRhaXJlLmFjdGV1clxuICAgICAgICBjb1NpZ25hdGFpcmUuYWN0ZXVyUmVmID0gYWN0ZXVyUmVmXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGNvU2lnbmF0YWlyZS5vcmdhbmVcbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUob3JnYW5lLCBcImV0QXBwYXJlbnRlc1wiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRlcG90QW1lbmRlbWVudHMgPSBkLmRlcG90QW1lbmRlbWVudHNcbiAgaWYgKGRlcG90QW1lbmRlbWVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGRlcG90QW1lbmRlbWVudHMpXG5cbiAgICBjb25zdCBhbWVuZGVtZW50c1NlYW5jZSA9IGRlcG90QW1lbmRlbWVudHMuYW1lbmRlbWVudHNTZWFuY2VcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhhbWVuZGVtZW50c1NlYW5jZSlcblxuICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKGFtZW5kZW1lbnRzU2VhbmNlLCBcImFtZW5kYWJsZVwiKVxuICAgIH1cblxuICAgIGxldCBhbWVuZGVtZW50c0NvbW1pc3Npb24gPSBkZXBvdEFtZW5kZW1lbnRzLmFtZW5kZW1lbnRzQ29tbWlzc2lvblxuICAgIGlmIChhbWVuZGVtZW50c0NvbW1pc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYW1lbmRlbWVudHNDb21taXNzaW9uID0gYW1lbmRlbWVudHNDb21taXNzaW9uLmNvbW1pc3Npb25cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhbWVuZGVtZW50c0NvbW1pc3Npb24pKSB7XG4gICAgICAgIGFzc2VydChhbWVuZGVtZW50c0NvbW1pc3Npb24pXG4gICAgICAgIGFtZW5kZW1lbnRzQ29tbWlzc2lvbiA9IFthbWVuZGVtZW50c0NvbW1pc3Npb25dXG4gICAgICB9XG4gICAgICBkZXBvdEFtZW5kZW1lbnRzLmFtZW5kZW1lbnRzQ29tbWlzc2lvbiA9IGFtZW5kZW1lbnRzQ29tbWlzc2lvblxuICAgICAgZm9yIChjb25zdCBjb21taXNpb24gb2YgYW1lbmRlbWVudHNDb21taXNzaW9uKSB7XG4gICAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGNvbW1pc2lvbilcblxuICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoY29tbWlzaW9uLCBcImFtZW5kYWJsZVwiKVxuXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb21taXNpb24uZGF0ZUxpbWl0ZURlcG90LCB1bmRlZmluZWQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW1wcmltZXJpZSA9IGQuaW1wcmltZXJpZVxuICBpZiAoaW1wcmltZXJpZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoaW1wcmltZXJpZSlcblxuICAgIGNvbnN0IGRpYW4gPSBpbXByaW1lcmllLkRJQU5cbiAgICBpZiAoZGlhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgaW1wcmltZXJpZS5ESUFOXG4gICAgICBpbXByaW1lcmllLmRpYW4gPSBkaWFuXG4gICAgfVxuXG4gICAgY29uc3QgaXNibiA9IGltcHJpbWVyaWUuSVNCTlxuICAgIGlmIChpc2JuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBpbXByaW1lcmllLklTQk5cbiAgICAgIGltcHJpbWVyaWUuaXNibiA9IGlzYm5cbiAgICB9XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaW1wcmltZXJpZS5JU1NOLCB1bmRlZmluZWQpXG4gIH1cblxuICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoZCwgXCJyYXBwb3J0UHVibGllXCIpXG5cbiAgbGV0IG9yZ2FuZXNSZWZlcmVudHMgPSBkLm9yZ2FuZXNSZWZlcmVudHNcbiAgaWYgKG9yZ2FuZXNSZWZlcmVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIG9yZ2FuZXNSZWZlcmVudHMgPSBvcmdhbmVzUmVmZXJlbnRzLm9yZ2FuZVJlZlxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcmdhbmVzUmVmZXJlbnRzKSkge1xuICAgICAgYXNzZXJ0KG9yZ2FuZXNSZWZlcmVudHMpXG4gICAgICBvcmdhbmVzUmVmZXJlbnRzID0gW29yZ2FuZXNSZWZlcmVudHNdXG4gICAgfVxuICAgIGQub3JnYW5lc1JlZmVyZW50cyA9IG9yZ2FuZXNSZWZlcmVudHNcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUFnRTtBQUFBO0FBQUE7QUFBQTtBQUV6RCxTQUFTQSx1QkFBdUIsQ0FBQ0MsQ0FBTSxFQUFRO0VBQ3BELElBQUFDLHNCQUFpQixFQUFDRCxDQUFDLENBQUM7RUFFcEIsSUFBTUUsT0FBTyxHQUFHRixDQUFDLENBQUMsV0FBVyxDQUFDO0VBQzlCLElBQUlFLE9BQU8sS0FBS0MsU0FBUyxFQUFFO0lBQ3pCSCxDQUFDLENBQUNFLE9BQU8sR0FBR0EsT0FBTztJQUNuQixPQUFPRixDQUFDLENBQUMsV0FBVyxDQUFDO0VBQ3ZCO0VBRUEsSUFBTUksVUFBVSxHQUFHSixDQUFDLENBQUNJLFVBQVU7RUFDL0IsSUFBQUMsa0JBQU0sRUFBQ0QsVUFBVSxDQUFDO0VBQ2xCO0lBQ0UsSUFBTUUsTUFBTSxHQUFHRixVQUFVLENBQUNFLE1BQU07SUFDaEMsSUFBQUQsa0JBQU0sRUFBQ0MsTUFBTSxDQUFDO0lBQ2QsSUFBQUwsc0JBQWlCLEVBQUNLLE1BQU0sQ0FBQztFQUMzQjtFQUVBLElBQUlDLFNBQVMsR0FBR1AsQ0FBQyxDQUFDTyxTQUFTO0VBQzNCLElBQUlBLFNBQVMsS0FBS0osU0FBUyxFQUFFO0lBQzNCSSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsUUFBUTtJQUM5QixJQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxTQUFTLENBQUMsRUFBRTtNQUM3QixJQUFBRixrQkFBTSxFQUFDRSxTQUFTLENBQUM7TUFDakJBLFNBQVMsR0FBRyxDQUFDQSxTQUFTLENBQUM7SUFDekI7SUFDQVAsQ0FBQyxDQUFDTyxTQUFTLEdBQUdBLFNBQVM7SUFBQSwyQ0FDQUEsU0FBUztN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
|