@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
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
// import { execSync } from "child_process"
|
|
3
3
|
import commandLineArgs from "command-line-args";
|
|
4
4
|
import fs from "fs-extra";
|
|
5
|
-
import path from "path";
|
|
6
|
-
// import { loadAssembleeData } from "../loaders"
|
|
5
|
+
import path from "path";
|
|
7
6
|
|
|
7
|
+
// import { EnabledDatasets } from "../datasets"
|
|
8
|
+
// import { loadAssembleeData } from "../loaders"
|
|
8
9
|
import { parseTexteLoi } from "../parsers/documents.mjs"; // import { Document, TypeDocument } from "../types/dossiers_legislatifs"
|
|
9
10
|
// import { DocumentUrlFormat, urlFromDocument } from "../urls"
|
|
10
|
-
|
|
11
11
|
const optionsDefinitions = [{
|
|
12
12
|
alias: "c",
|
|
13
13
|
help: "commit split files",
|
|
@@ -45,7 +45,9 @@ const optionsDefinitions = [{
|
|
|
45
45
|
name: "dataDir",
|
|
46
46
|
type: String
|
|
47
47
|
}];
|
|
48
|
-
const options = commandLineArgs(optionsDefinitions);
|
|
48
|
+
const options = commandLineArgs(optionsDefinitions);
|
|
49
|
+
|
|
50
|
+
// function commitAndPush(repositoryDir: string, commit: boolean, remotes?: string[]): boolean {
|
|
49
51
|
// let error = false
|
|
50
52
|
// if (commit) {
|
|
51
53
|
// execSync(`git add .`, {
|
|
@@ -89,52 +91,46 @@ const options = commandLineArgs(optionsDefinitions); // function commitAndPush(r
|
|
|
89
91
|
|
|
90
92
|
function parseTextesLois() {
|
|
91
93
|
assert(!options.commit || options.filename, 'Options "commit" & "filename" are incompatible');
|
|
92
|
-
const dataDir = options.dataDir;
|
|
94
|
+
const dataDir = options.dataDir;
|
|
95
|
+
// const { documentByUid } = loadAssembleeData(
|
|
93
96
|
// dataDir,
|
|
94
97
|
// EnabledDatasets.DossiersLegislatifs,
|
|
95
98
|
// options.legislature,
|
|
96
99
|
// )
|
|
97
100
|
|
|
98
101
|
const textesLoisDir = path.join(dataDir, "www.assemblee-nationale.fr", options.legislature, "textes");
|
|
99
|
-
|
|
100
102
|
for (const filename of fs.readdirSync(textesLoisDir)) {
|
|
101
103
|
if (filename[0] === ".") {
|
|
102
104
|
continue;
|
|
103
105
|
}
|
|
104
|
-
|
|
105
106
|
if (!filename.endsWith(".asp")) {
|
|
106
107
|
continue;
|
|
107
108
|
}
|
|
108
|
-
|
|
109
109
|
if (options.filename && !filename.startsWith(options.filename)) {
|
|
110
110
|
continue;
|
|
111
111
|
}
|
|
112
|
-
|
|
113
112
|
const texteLoiPath = path.join(textesLoisDir, filename);
|
|
114
|
-
|
|
115
113
|
if (!options.silent) {
|
|
116
114
|
console.log(`Parsing "texte de loi" ${texteLoiPath}…`);
|
|
117
115
|
}
|
|
118
|
-
|
|
119
116
|
const texteLoiPage = fs.readFileSync(texteLoiPath, {
|
|
120
117
|
encoding: "utf-8"
|
|
121
118
|
});
|
|
122
119
|
const texteLoiUrl = `http://www.assemblee-nationale.fr/${options.legislature}/textes/${filename}`;
|
|
123
120
|
const texteLoiParsed = parseTexteLoi(texteLoiUrl, texteLoiPage);
|
|
124
|
-
|
|
125
121
|
if (options.filename && options.verbose) {
|
|
126
122
|
console.log(JSON.stringify(texteLoiParsed.subdivisions, null, 2));
|
|
127
123
|
}
|
|
128
|
-
|
|
129
124
|
const {
|
|
130
125
|
error
|
|
131
126
|
} = texteLoiParsed;
|
|
132
|
-
|
|
133
127
|
if (error) {
|
|
134
128
|
console.error(` Error while parsing page "${texteLoiPath}":\n\nError:\n${JSON.stringify(error, null, 2)}`);
|
|
135
129
|
continue;
|
|
136
130
|
}
|
|
137
|
-
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// fs.ensureDirSync(textesLoisDir)
|
|
138
134
|
// if (!options.uid) {
|
|
139
135
|
// for (const filename of fs.readdirSync(textesLoisDir)) {
|
|
140
136
|
// if (filename[0] === ".") {
|
|
@@ -143,6 +139,7 @@ function parseTextesLois() {
|
|
|
143
139
|
// fs.removeSync(path.join(textesLoisDir, filename))
|
|
144
140
|
// }
|
|
145
141
|
// }
|
|
142
|
+
|
|
146
143
|
// const textesLois = Object.values(documentByUid)
|
|
147
144
|
// .filter(document => document.xsiType === TypeDocument.TexteLoiType)
|
|
148
145
|
// .filter(
|
|
@@ -161,6 +158,7 @@ function parseTextesLois() {
|
|
|
161
158
|
// ? 1
|
|
162
159
|
// : a.rawDocumentAssembleeUrl.localeCompare(b.rawDocumentAssembleeUrl),
|
|
163
160
|
// )
|
|
161
|
+
|
|
164
162
|
// const firstUid = options.uid
|
|
165
163
|
// let skip = !!firstUid
|
|
166
164
|
// for (const texteLoi of textesLois) {
|
|
@@ -182,6 +180,7 @@ function parseTextesLois() {
|
|
|
182
180
|
// const url = new URL(texteLoi.rawDocumentAssembleeUrl)
|
|
183
181
|
// const filePath = path.join(dataDir, url.hostname, ...url.pathname.split("/"))
|
|
184
182
|
// assert.strictEqual(textesLoisDir, path.dirname(filePath))
|
|
183
|
+
|
|
185
184
|
// let page = undefined
|
|
186
185
|
// try {
|
|
187
186
|
// page = fs.readFileSync(filePath, { encoding: "utf-8" })
|
|
@@ -191,6 +190,7 @@ function parseTextesLois() {
|
|
|
191
190
|
// }
|
|
192
191
|
// throw e
|
|
193
192
|
// }
|
|
193
|
+
|
|
194
194
|
// if (options.parse) {
|
|
195
195
|
// const texteLoiParsed = parseTexteLoi(texteLoi.rawDocumentAssembleeUrl, page)
|
|
196
196
|
// const { error } = texteLoiParsed
|
|
@@ -208,8 +208,7 @@ function parseTextesLois() {
|
|
|
208
208
|
// process.exit(1)
|
|
209
209
|
// }
|
|
210
210
|
// return textesLois
|
|
211
|
-
|
|
212
211
|
}
|
|
213
212
|
|
|
214
213
|
parseTextesLois();
|
|
215
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJwYXJzZVRleHRlTG9pIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiU3RyaW5nIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsInBhcnNlVGV4dGVzTG9pcyIsImNvbW1pdCIsImZpbGVuYW1lIiwiZGF0YURpciIsInRleHRlc0xvaXNEaXIiLCJqb2luIiwibGVnaXNsYXR1cmUiLCJyZWFkZGlyU3luYyIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsInRleHRlTG9pUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJ0ZXh0ZUxvaVBhZ2UiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInRleHRlTG9pVXJsIiwidGV4dGVMb2lQYXJzZWQiLCJ2ZXJib3NlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN1YmRpdmlzaW9ucyIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcGFyc2VfdGV4dGVzX2xvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbi8vIGltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbi8vIGltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG4vLyBpbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IHBhcnNlVGV4dGVMb2kgfSBmcm9tIFwiLi4vcGFyc2Vycy9kb2N1bWVudHNcIlxuLy8gaW1wb3J0IHsgRG9jdW1lbnQsIFR5cGVEb2N1bWVudCB9IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG4vLyBpbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJmXCIsXG4gICAgaGVscDogXCJGaWxlbmFtZSBvZiBBc3NlbWJsw6llJ3MgZG9jdW1lbnQgdG8gcGFyc2VcIixcbiAgICBuYW1lOiBcImZpbGVuYW1lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNlwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuLy8gZnVuY3Rpb24gY29tbWl0QW5kUHVzaChyZXBvc2l0b3J5RGlyOiBzdHJpbmcsIGNvbW1pdDogYm9vbGVhbiwgcmVtb3Rlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4vLyAgIGxldCBlcnJvciA9IGZhbHNlXG4vLyAgIGlmIChjb21taXQpIHtcbi8vICAgICBleGVjU3luYyhgZ2l0IGFkZCAuYCwge1xuLy8gICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgZW52OiBwcm9jZXNzLmVudixcbi8vICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4vLyAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbi8vICAgICB9KVxuLy8gICAgIHRyeSB7XG4vLyAgICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIicsIHtcbi8vICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuLy8gICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuLy8gICAgICAgfSlcbi8vICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbi8vICAgICAgIGlmIChcbi8vICAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuLy8gICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4vLyAgICAgICApIHtcbi8vICAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuLy8gICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3Ncbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuLy8gICAgICAgdHJ5IHtcbi8vICAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4vLyAgICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4vLyAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbi8vICAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbi8vICAgICAgICAgfSlcbi8vICAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuLy8gICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbi8vICAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuLy8gICAgICAgICBlcnJvciA9IHRydWVcbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH1cbi8vICAgcmV0dXJuIGVycm9yXG4vLyB9XG5cbmZ1bmN0aW9uIHBhcnNlVGV4dGVzTG9pcygpOiB2b2lkIHtcbiAgYXNzZXJ0KFxuICAgICFvcHRpb25zLmNvbW1pdCB8fCBvcHRpb25zLmZpbGVuYW1lLFxuICAgICdPcHRpb25zIFwiY29tbWl0XCIgJiBcImZpbGVuYW1lXCIgYXJlIGluY29tcGF0aWJsZScsXG4gIClcblxuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIC8vIGNvbnN0IHsgZG9jdW1lbnRCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gIC8vICAgZGF0YURpcixcbiAgLy8gICBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcyxcbiAgLy8gICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAvLyApXG5cbiAgY29uc3QgdGV4dGVzTG9pc0RpciA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwid3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnJcIixcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAgIFwidGV4dGVzXCIsXG4gIClcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyh0ZXh0ZXNMb2lzRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoXCIuYXNwXCIpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5maWxlbmFtZSAmJiAhZmlsZW5hbWUuc3RhcnRzV2l0aChvcHRpb25zLmZpbGVuYW1lKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgdGV4dGVMb2lQYXRoID0gcGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBQYXJzaW5nIFwidGV4dGUgZGUgbG9pXCIgJHt0ZXh0ZUxvaVBhdGh94oCmYClcbiAgICB9XG4gICAgY29uc3QgdGV4dGVMb2lQYWdlID0gZnMucmVhZEZpbGVTeW5jKHRleHRlTG9pUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pXG4gICAgY29uc3QgdGV4dGVMb2lVcmwgPSBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7b3B0aW9ucy5sZWdpc2xhdHVyZX0vdGV4dGVzLyR7ZmlsZW5hbWV9YFxuICAgIGNvbnN0IHRleHRlTG9pUGFyc2VkID0gcGFyc2VUZXh0ZUxvaSh0ZXh0ZUxvaVVybCwgdGV4dGVMb2lQYWdlKVxuICAgIGlmIChvcHRpb25zLmZpbGVuYW1lICYmIG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkodGV4dGVMb2lQYXJzZWQuc3ViZGl2aXNpb25zLCBudWxsLCAyKSlcbiAgICB9XG4gICAgY29uc3QgeyBlcnJvciB9ID0gdGV4dGVMb2lQYXJzZWRcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGAgIEVycm9yIHdoaWxlIHBhcnNpbmcgcGFnZSBcIiR7dGV4dGVMb2lQYXRofVwiOlxcblxcbkVycm9yOlxcbiR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAyLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgfVxuXG4gIC8vIGZzLmVuc3VyZURpclN5bmModGV4dGVzTG9pc0RpcilcbiAgLy8gaWYgKCFvcHRpb25zLnVpZCkge1xuICAvLyAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmModGV4dGVzTG9pc0RpcikpIHtcbiAgLy8gICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKSlcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyBjb25zdCB0ZXh0ZXNMb2lzID0gT2JqZWN0LnZhbHVlcyhkb2N1bWVudEJ5VWlkKVxuICAvLyAgIC5maWx0ZXIoZG9jdW1lbnQgPT4gZG9jdW1lbnQueHNpVHlwZSA9PT0gVHlwZURvY3VtZW50LlRleHRlTG9pVHlwZSlcbiAgLy8gICAuZmlsdGVyKFxuICAvLyAgICAgZG9jdW1lbnQgPT4gZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQSU9OQU5cIikgfHwgZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQUkpMQU5cIiksXG4gIC8vICAgKVxuICAvLyAgIC5tYXAoZG9jdW1lbnQgPT4ge1xuICAvLyAgICAgcmV0dXJuIHtcbiAgLy8gICAgICAgLi4uZG9jdW1lbnQsXG4gIC8vICAgICAgIHJhd0RvY3VtZW50QXNzZW1ibGVlVXJsOiB1cmxGcm9tRG9jdW1lbnQoZG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpLFxuICAvLyAgICAgfVxuICAvLyAgIH0pXG4gIC8vICAgLnNvcnQoKGEsIGIpID0+XG4gIC8vICAgICBhLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gIC8vICAgICAgID8gLTFcbiAgLy8gICAgICAgOiBiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gIC8vICAgICAgID8gMVxuICAvLyAgICAgICA6IGEucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwubG9jYWxlQ29tcGFyZShiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKSxcbiAgLy8gICApXG5cbiAgLy8gY29uc3QgZmlyc3RVaWQgPSBvcHRpb25zLnVpZFxuICAvLyBsZXQgc2tpcCA9ICEhZmlyc3RVaWRcbiAgLy8gZm9yIChjb25zdCB0ZXh0ZUxvaSBvZiB0ZXh0ZXNMb2lzKSB7XG4gIC8vICAgaWYgKHNraXApIHtcbiAgLy8gICAgIGlmICh0ZXh0ZUxvaS51aWQgPT09IGZpcnN0VWlkKSB7XG4gIC8vICAgICAgIHNraXAgPSBmYWxzZVxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAvLyAgICAgY29uc29sZS5sb2coXG4gIC8vICAgICAgIGBSZXRyaWV2aW5nIGJpbGwgJHt0ZXh0ZUxvaS51aWR9IGF0ICR7dGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmx9YCxcbiAgLy8gICAgIClcbiAgLy8gICB9XG4gIC8vICAgaWYgKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsKSB7XG4gIC8vICAgICBjb250aW51ZVxuICAvLyAgIH1cbiAgLy8gICBjb25zdCB1cmwgPSBuZXcgVVJMKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKVxuICAvLyAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIHVybC5ob3N0bmFtZSwgLi4udXJsLnBhdGhuYW1lLnNwbGl0KFwiL1wiKSlcbiAgLy8gICBhc3NlcnQuc3RyaWN0RXF1YWwodGV4dGVzTG9pc0RpciwgcGF0aC5kaXJuYW1lKGZpbGVQYXRoKSlcblxuICAvLyAgIGxldCBwYWdlID0gdW5kZWZpbmVkXG4gIC8vICAgdHJ5IHtcbiAgLy8gICAgIHBhZ2UgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAvLyAgIH0gY2F0Y2ggKGUpIHtcbiAgLy8gICAgIGlmIChlLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICAgIHRocm93IGVcbiAgLy8gICB9XG5cbiAgLy8gICBpZiAob3B0aW9ucy5wYXJzZSkge1xuICAvLyAgICAgY29uc3QgdGV4dGVMb2lQYXJzZWQgPSBwYXJzZVRleHRlTG9pKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsLCBwYWdlKVxuICAvLyAgICAgY29uc3QgeyBlcnJvciB9ID0gdGV4dGVMb2lQYXJzZWRcbiAgLy8gICAgIGlmIChlcnJvcikge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKFxuICAvLyAgICAgICAgIGBFcnJvciB3aGlsZSBwYXJzaW5nIHBhZ2UgXCIke3RleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsfVwiICh1aWQ6ICR7XG4gIC8vICAgICAgICAgICB0ZXh0ZUxvaS51aWRcbiAgLy8gICAgICAgICB9KTpcXG5cXG5FcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCAyKX1gLFxuICAvLyAgICAgICApXG4gIC8vICAgICAgIGNvbnRpbnVlXG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG4gIC8vIGlmIGNvbW1pdEFuZFB1c2godGV4dGVzTG9pc0Rpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKSB7XG4gIC8vICAgcHJvY2Vzcy5leGl0KDEpXG4gIC8vIH1cbiAgLy8gcmV0dXJuIHRleHRlc0xvaXNcbn1cblxucGFyc2VUZXh0ZXNMb2lzKClcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBUCxNQUFtQixRQUFuQixDLENBQ0E7O0FBQ0EsT0FBT0MsZUFBUCxNQUE0QixtQkFBNUI7QUFDQSxPQUFPQyxFQUFQLE1BQWUsVUFBZjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsTUFBakIsQyxDQUVBO0FBQ0E7O1NBQ1NDLGEsb0NBQ1Q7QUFDQTs7QUFFQSxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtFQUNFQyxLQUFLLEVBQUUsR0FEVDtFQUVFQyxJQUFJLEVBQUUsb0JBRlI7RUFHRUMsSUFBSSxFQUFFLFFBSFI7RUFJRUMsSUFBSSxFQUFFQztBQUpSLENBRHlCLEVBT3pCO0VBQ0VKLEtBQUssRUFBRSxHQURUO0VBRUVDLElBQUksRUFBRSwyQ0FGUjtFQUdFQyxJQUFJLEVBQUUsVUFIUjtFQUlFQyxJQUFJLEVBQUVFO0FBSlIsQ0FQeUIsRUFhekI7RUFDRUwsS0FBSyxFQUFFLEdBRFQ7RUFFRU0sWUFBWSxFQUFFLElBRmhCO0VBR0VKLElBQUksRUFBRSxhQUhSO0VBSUVDLElBQUksRUFBRUU7QUFKUixDQWJ5QixFQW1CekI7RUFDRUwsS0FBSyxFQUFFLEdBRFQ7RUFFRUMsSUFBSSxFQUFFLDZCQUZSO0VBR0VNLFFBQVEsRUFBRSxJQUhaO0VBSUVMLElBQUksRUFBRSxRQUpSO0VBS0VDLElBQUksRUFBRUU7QUFMUixDQW5CeUIsRUEwQnpCO0VBQ0VMLEtBQUssRUFBRSxHQURUO0VBRUVDLElBQUksRUFBRSxvQkFGUjtFQUdFQyxJQUFJLEVBQUUsUUFIUjtFQUlFQyxJQUFJLEVBQUVDO0FBSlIsQ0ExQnlCLEVBZ0N6QjtFQUNFSixLQUFLLEVBQUUsR0FEVDtFQUVFQyxJQUFJLEVBQUUsY0FGUjtFQUdFQyxJQUFJLEVBQUUsU0FIUjtFQUlFQyxJQUFJLEVBQUVDO0FBSlIsQ0FoQ3lCLEVBc0N6QjtFQUNFSSxhQUFhLEVBQUUsSUFEakI7RUFFRVAsSUFBSSxFQUFFLGdEQUZSO0VBR0VDLElBQUksRUFBRSxTQUhSO0VBSUVDLElBQUksRUFBRUU7QUFKUixDQXRDeUIsQ0FBM0I7QUE2Q0EsTUFBTUksT0FBTyxHQUFHZCxlQUFlLENBQUNJLGtCQUFELENBQS9CLEMsQ0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNXLGVBQVQsR0FBaUM7RUFDL0JoQixNQUFNLENBQ0osQ0FBQ2UsT0FBTyxDQUFDRSxNQUFULElBQW1CRixPQUFPLENBQUNHLFFBRHZCLEVBRUosZ0RBRkksQ0FBTjtFQUtBLE1BQU1DLE9BQU8sR0FBR0osT0FBTyxDQUFDSSxPQUF4QixDQU4rQixDQU8vQjtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBLE1BQU1DLGFBQWEsR0FBR2pCLElBQUksQ0FBQ2tCLElBQUwsQ0FDcEJGLE9BRG9CLEVBRXBCLDRCQUZvQixFQUdwQkosT0FBTyxDQUFDTyxXQUhZLEVBSXBCLFFBSm9CLENBQXRCOztFQU1BLEtBQUssTUFBTUosUUFBWCxJQUF1QmhCLEVBQUUsQ0FBQ3FCLFdBQUgsQ0FBZUgsYUFBZixDQUF2QixFQUFzRDtJQUNwRCxJQUFJRixRQUFRLENBQUMsQ0FBRCxDQUFSLEtBQWdCLEdBQXBCLEVBQXlCO01BQ3ZCO0lBQ0Q7O0lBQ0QsSUFBSSxDQUFDQSxRQUFRLENBQUNNLFFBQVQsQ0FBa0IsTUFBbEIsQ0FBTCxFQUFnQztNQUM5QjtJQUNEOztJQUNELElBQUlULE9BQU8sQ0FBQ0csUUFBUixJQUFvQixDQUFDQSxRQUFRLENBQUNPLFVBQVQsQ0FBb0JWLE9BQU8sQ0FBQ0csUUFBNUIsQ0FBekIsRUFBZ0U7TUFDOUQ7SUFDRDs7SUFDRCxNQUFNUSxZQUFZLEdBQUd2QixJQUFJLENBQUNrQixJQUFMLENBQVVELGFBQVYsRUFBeUJGLFFBQXpCLENBQXJCOztJQUNBLElBQUksQ0FBQ0gsT0FBTyxDQUFDWSxNQUFiLEVBQXFCO01BQ25CQyxPQUFPLENBQUNDLEdBQVIsQ0FBYSwwQkFBeUJILFlBQWEsR0FBbkQ7SUFDRDs7SUFDRCxNQUFNSSxZQUFZLEdBQUc1QixFQUFFLENBQUM2QixZQUFILENBQWdCTCxZQUFoQixFQUE4QjtNQUFFTSxRQUFRLEVBQUU7SUFBWixDQUE5QixDQUFyQjtJQUNBLE1BQU1DLFdBQVcsR0FBSSxxQ0FBb0NsQixPQUFPLENBQUNPLFdBQVksV0FBVUosUUFBUyxFQUFoRztJQUNBLE1BQU1nQixjQUFjLEdBQUc5QixhQUFhLENBQUM2QixXQUFELEVBQWNILFlBQWQsQ0FBcEM7O0lBQ0EsSUFBSWYsT0FBTyxDQUFDRyxRQUFSLElBQW9CSCxPQUFPLENBQUNvQixPQUFoQyxFQUF5QztNQUN2Q1AsT0FBTyxDQUFDQyxHQUFSLENBQVlPLElBQUksQ0FBQ0MsU0FBTCxDQUFlSCxjQUFjLENBQUNJLFlBQTlCLEVBQTRDLElBQTVDLEVBQWtELENBQWxELENBQVo7SUFDRDs7SUFDRCxNQUFNO01BQUVDO0lBQUYsSUFBWUwsY0FBbEI7O0lBQ0EsSUFBSUssS0FBSixFQUFXO01BQ1RYLE9BQU8sQ0FBQ1csS0FBUixDQUNHLCtCQUE4QmIsWUFBYSxpQkFBZ0JVLElBQUksQ0FBQ0MsU0FBTCxDQUMxREUsS0FEMEQsRUFFMUQsSUFGMEQsRUFHMUQsQ0FIMEQsQ0FJMUQsRUFMSjtNQU9BO0lBQ0Q7RUFDRixDQWxEOEIsQ0FvRC9CO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBQ0Q7O0FBRUR2QixlQUFlIn0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJwYXJzZVRleHRlTG9pIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiU3RyaW5nIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsInBhcnNlVGV4dGVzTG9pcyIsImNvbW1pdCIsImZpbGVuYW1lIiwiZGF0YURpciIsInRleHRlc0xvaXNEaXIiLCJqb2luIiwibGVnaXNsYXR1cmUiLCJyZWFkZGlyU3luYyIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsInRleHRlTG9pUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJ0ZXh0ZUxvaVBhZ2UiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInRleHRlTG9pVXJsIiwidGV4dGVMb2lQYXJzZWQiLCJ2ZXJib3NlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN1YmRpdmlzaW9ucyIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcGFyc2VfdGV4dGVzX2xvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbi8vIGltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbi8vIGltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG4vLyBpbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IHBhcnNlVGV4dGVMb2kgfSBmcm9tIFwiLi4vcGFyc2Vycy9kb2N1bWVudHNcIlxuLy8gaW1wb3J0IHsgRG9jdW1lbnQsIFR5cGVEb2N1bWVudCB9IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG4vLyBpbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJmXCIsXG4gICAgaGVscDogXCJGaWxlbmFtZSBvZiBBc3NlbWJsw6llJ3MgZG9jdW1lbnQgdG8gcGFyc2VcIixcbiAgICBuYW1lOiBcImZpbGVuYW1lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNlwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuLy8gZnVuY3Rpb24gY29tbWl0QW5kUHVzaChyZXBvc2l0b3J5RGlyOiBzdHJpbmcsIGNvbW1pdDogYm9vbGVhbiwgcmVtb3Rlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4vLyAgIGxldCBlcnJvciA9IGZhbHNlXG4vLyAgIGlmIChjb21taXQpIHtcbi8vICAgICBleGVjU3luYyhgZ2l0IGFkZCAuYCwge1xuLy8gICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgZW52OiBwcm9jZXNzLmVudixcbi8vICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4vLyAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbi8vICAgICB9KVxuLy8gICAgIHRyeSB7XG4vLyAgICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIicsIHtcbi8vICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuLy8gICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuLy8gICAgICAgfSlcbi8vICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbi8vICAgICAgIGlmIChcbi8vICAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuLy8gICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4vLyAgICAgICApIHtcbi8vICAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuLy8gICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3Ncbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuLy8gICAgICAgdHJ5IHtcbi8vICAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4vLyAgICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4vLyAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbi8vICAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbi8vICAgICAgICAgfSlcbi8vICAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuLy8gICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbi8vICAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuLy8gICAgICAgICBlcnJvciA9IHRydWVcbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH1cbi8vICAgcmV0dXJuIGVycm9yXG4vLyB9XG5cbmZ1bmN0aW9uIHBhcnNlVGV4dGVzTG9pcygpOiB2b2lkIHtcbiAgYXNzZXJ0KFxuICAgICFvcHRpb25zLmNvbW1pdCB8fCBvcHRpb25zLmZpbGVuYW1lLFxuICAgICdPcHRpb25zIFwiY29tbWl0XCIgJiBcImZpbGVuYW1lXCIgYXJlIGluY29tcGF0aWJsZScsXG4gIClcblxuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIC8vIGNvbnN0IHsgZG9jdW1lbnRCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gIC8vICAgZGF0YURpcixcbiAgLy8gICBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcyxcbiAgLy8gICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAvLyApXG5cbiAgY29uc3QgdGV4dGVzTG9pc0RpciA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwid3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnJcIixcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAgIFwidGV4dGVzXCIsXG4gIClcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyh0ZXh0ZXNMb2lzRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoXCIuYXNwXCIpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5maWxlbmFtZSAmJiAhZmlsZW5hbWUuc3RhcnRzV2l0aChvcHRpb25zLmZpbGVuYW1lKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgdGV4dGVMb2lQYXRoID0gcGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBQYXJzaW5nIFwidGV4dGUgZGUgbG9pXCIgJHt0ZXh0ZUxvaVBhdGh94oCmYClcbiAgICB9XG4gICAgY29uc3QgdGV4dGVMb2lQYWdlID0gZnMucmVhZEZpbGVTeW5jKHRleHRlTG9pUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pXG4gICAgY29uc3QgdGV4dGVMb2lVcmwgPSBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7b3B0aW9ucy5sZWdpc2xhdHVyZX0vdGV4dGVzLyR7ZmlsZW5hbWV9YFxuICAgIGNvbnN0IHRleHRlTG9pUGFyc2VkID0gcGFyc2VUZXh0ZUxvaSh0ZXh0ZUxvaVVybCwgdGV4dGVMb2lQYWdlKVxuICAgIGlmIChvcHRpb25zLmZpbGVuYW1lICYmIG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkodGV4dGVMb2lQYXJzZWQuc3ViZGl2aXNpb25zLCBudWxsLCAyKSlcbiAgICB9XG4gICAgY29uc3QgeyBlcnJvciB9ID0gdGV4dGVMb2lQYXJzZWRcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGAgIEVycm9yIHdoaWxlIHBhcnNpbmcgcGFnZSBcIiR7dGV4dGVMb2lQYXRofVwiOlxcblxcbkVycm9yOlxcbiR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAyLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgfVxuXG4gIC8vIGZzLmVuc3VyZURpclN5bmModGV4dGVzTG9pc0RpcilcbiAgLy8gaWYgKCFvcHRpb25zLnVpZCkge1xuICAvLyAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmModGV4dGVzTG9pc0RpcikpIHtcbiAgLy8gICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKSlcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyBjb25zdCB0ZXh0ZXNMb2lzID0gT2JqZWN0LnZhbHVlcyhkb2N1bWVudEJ5VWlkKVxuICAvLyAgIC5maWx0ZXIoZG9jdW1lbnQgPT4gZG9jdW1lbnQueHNpVHlwZSA9PT0gVHlwZURvY3VtZW50LlRleHRlTG9pVHlwZSlcbiAgLy8gICAuZmlsdGVyKFxuICAvLyAgICAgZG9jdW1lbnQgPT4gZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQSU9OQU5cIikgfHwgZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQUkpMQU5cIiksXG4gIC8vICAgKVxuICAvLyAgIC5tYXAoZG9jdW1lbnQgPT4ge1xuICAvLyAgICAgcmV0dXJuIHtcbiAgLy8gICAgICAgLi4uZG9jdW1lbnQsXG4gIC8vICAgICAgIHJhd0RvY3VtZW50QXNzZW1ibGVlVXJsOiB1cmxGcm9tRG9jdW1lbnQoZG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpLFxuICAvLyAgICAgfVxuICAvLyAgIH0pXG4gIC8vICAgLnNvcnQoKGEsIGIpID0+XG4gIC8vICAgICBhLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gIC8vICAgICAgID8gLTFcbiAgLy8gICAgICAgOiBiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gIC8vICAgICAgID8gMVxuICAvLyAgICAgICA6IGEucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwubG9jYWxlQ29tcGFyZShiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKSxcbiAgLy8gICApXG5cbiAgLy8gY29uc3QgZmlyc3RVaWQgPSBvcHRpb25zLnVpZFxuICAvLyBsZXQgc2tpcCA9ICEhZmlyc3RVaWRcbiAgLy8gZm9yIChjb25zdCB0ZXh0ZUxvaSBvZiB0ZXh0ZXNMb2lzKSB7XG4gIC8vICAgaWYgKHNraXApIHtcbiAgLy8gICAgIGlmICh0ZXh0ZUxvaS51aWQgPT09IGZpcnN0VWlkKSB7XG4gIC8vICAgICAgIHNraXAgPSBmYWxzZVxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAvLyAgICAgY29uc29sZS5sb2coXG4gIC8vICAgICAgIGBSZXRyaWV2aW5nIGJpbGwgJHt0ZXh0ZUxvaS51aWR9IGF0ICR7dGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmx9YCxcbiAgLy8gICAgIClcbiAgLy8gICB9XG4gIC8vICAgaWYgKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsKSB7XG4gIC8vICAgICBjb250aW51ZVxuICAvLyAgIH1cbiAgLy8gICBjb25zdCB1cmwgPSBuZXcgVVJMKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKVxuICAvLyAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIHVybC5ob3N0bmFtZSwgLi4udXJsLnBhdGhuYW1lLnNwbGl0KFwiL1wiKSlcbiAgLy8gICBhc3NlcnQuc3RyaWN0RXF1YWwodGV4dGVzTG9pc0RpciwgcGF0aC5kaXJuYW1lKGZpbGVQYXRoKSlcblxuICAvLyAgIGxldCBwYWdlID0gdW5kZWZpbmVkXG4gIC8vICAgdHJ5IHtcbiAgLy8gICAgIHBhZ2UgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAvLyAgIH0gY2F0Y2ggKGUpIHtcbiAgLy8gICAgIGlmIChlLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICAgIHRocm93IGVcbiAgLy8gICB9XG5cbiAgLy8gICBpZiAob3B0aW9ucy5wYXJzZSkge1xuICAvLyAgICAgY29uc3QgdGV4dGVMb2lQYXJzZWQgPSBwYXJzZVRleHRlTG9pKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsLCBwYWdlKVxuICAvLyAgICAgY29uc3QgeyBlcnJvciB9ID0gdGV4dGVMb2lQYXJzZWRcbiAgLy8gICAgIGlmIChlcnJvcikge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKFxuICAvLyAgICAgICAgIGBFcnJvciB3aGlsZSBwYXJzaW5nIHBhZ2UgXCIke3RleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsfVwiICh1aWQ6ICR7XG4gIC8vICAgICAgICAgICB0ZXh0ZUxvaS51aWRcbiAgLy8gICAgICAgICB9KTpcXG5cXG5FcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCAyKX1gLFxuICAvLyAgICAgICApXG4gIC8vICAgICAgIGNvbnRpbnVlXG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG4gIC8vIGlmIGNvbW1pdEFuZFB1c2godGV4dGVzTG9pc0Rpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKSB7XG4gIC8vICAgcHJvY2Vzcy5leGl0KDEpXG4gIC8vIH1cbiAgLy8gcmV0dXJuIHRleHRlc0xvaXNcbn1cblxucGFyc2VUZXh0ZXNMb2lzKClcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFFBQVE7QUFDM0I7QUFDQSxPQUFPQyxlQUFlLE1BQU0sbUJBQW1CO0FBQy9DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNOztBQUV2QjtBQUNBO0FBQUEsU0FDU0MsYUFBYSxvQ0FDdEI7QUFDQTtBQUVBLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCO0VBQ0VDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxvQkFBb0I7RUFDMUJDLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUM7QUFDUixDQUFDLEVBQ0Q7RUFDRUosS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLDJDQUEyQztFQUNqREMsSUFBSSxFQUFFLFVBQVU7RUFDaEJDLElBQUksRUFBRUU7QUFDUixDQUFDLEVBQ0Q7RUFDRUwsS0FBSyxFQUFFLEdBQUc7RUFDVk0sWUFBWSxFQUFFLElBQUk7RUFDbEJKLElBQUksRUFBRSxhQUFhO0VBQ25CQyxJQUFJLEVBQUVFO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VMLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSw2QkFBNkI7RUFDbkNNLFFBQVEsRUFBRSxJQUFJO0VBQ2RMLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUU7QUFDUixDQUFDLEVBQ0Q7RUFDRUwsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLG9CQUFvQjtFQUMxQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsY0FBYztFQUNwQkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSSxhQUFhLEVBQUUsSUFBSTtFQUNuQlAsSUFBSSxFQUFFLGdEQUFnRDtFQUN0REMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFRTtBQUNSLENBQUMsQ0FDRjtBQUNELE1BQU1JLE9BQU8sR0FBR2QsZUFBZSxDQUFDSSxrQkFBa0IsQ0FBQzs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTVyxlQUFlLEdBQVM7RUFDL0JoQixNQUFNLENBQ0osQ0FBQ2UsT0FBTyxDQUFDRSxNQUFNLElBQUlGLE9BQU8sQ0FBQ0csUUFBUSxFQUNuQyxnREFBZ0QsQ0FDakQ7RUFFRCxNQUFNQyxPQUFPLEdBQUdKLE9BQU8sQ0FBQ0ksT0FBTztFQUMvQjtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBLE1BQU1DLGFBQWEsR0FBR2pCLElBQUksQ0FBQ2tCLElBQUksQ0FDN0JGLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUJKLE9BQU8sQ0FBQ08sV0FBVyxFQUNuQixRQUFRLENBQ1Q7RUFDRCxLQUFLLE1BQU1KLFFBQVEsSUFBSWhCLEVBQUUsQ0FBQ3FCLFdBQVcsQ0FBQ0gsYUFBYSxDQUFDLEVBQUU7SUFDcEQsSUFBSUYsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtNQUN2QjtJQUNGO0lBQ0EsSUFBSSxDQUFDQSxRQUFRLENBQUNNLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtNQUM5QjtJQUNGO0lBQ0EsSUFBSVQsT0FBTyxDQUFDRyxRQUFRLElBQUksQ0FBQ0EsUUFBUSxDQUFDTyxVQUFVLENBQUNWLE9BQU8sQ0FBQ0csUUFBUSxDQUFDLEVBQUU7TUFDOUQ7SUFDRjtJQUNBLE1BQU1RLFlBQVksR0FBR3ZCLElBQUksQ0FBQ2tCLElBQUksQ0FBQ0QsYUFBYSxFQUFFRixRQUFRLENBQUM7SUFDdkQsSUFBSSxDQUFDSCxPQUFPLENBQUNZLE1BQU0sRUFBRTtNQUNuQkMsT0FBTyxDQUFDQyxHQUFHLENBQUUsMEJBQXlCSCxZQUFhLEdBQUUsQ0FBQztJQUN4RDtJQUNBLE1BQU1JLFlBQVksR0FBRzVCLEVBQUUsQ0FBQzZCLFlBQVksQ0FBQ0wsWUFBWSxFQUFFO01BQUVNLFFBQVEsRUFBRTtJQUFRLENBQUMsQ0FBQztJQUN6RSxNQUFNQyxXQUFXLEdBQUkscUNBQW9DbEIsT0FBTyxDQUFDTyxXQUFZLFdBQVVKLFFBQVMsRUFBQztJQUNqRyxNQUFNZ0IsY0FBYyxHQUFHOUIsYUFBYSxDQUFDNkIsV0FBVyxFQUFFSCxZQUFZLENBQUM7SUFDL0QsSUFBSWYsT0FBTyxDQUFDRyxRQUFRLElBQUlILE9BQU8sQ0FBQ29CLE9BQU8sRUFBRTtNQUN2Q1AsT0FBTyxDQUFDQyxHQUFHLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxjQUFjLENBQUNJLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkU7SUFDQSxNQUFNO01BQUVDO0lBQU0sQ0FBQyxHQUFHTCxjQUFjO0lBQ2hDLElBQUlLLEtBQUssRUFBRTtNQUNUWCxPQUFPLENBQUNXLEtBQUssQ0FDViwrQkFBOEJiLFlBQWEsaUJBQWdCVSxJQUFJLENBQUNDLFNBQVMsQ0FDeEVFLEtBQUssRUFDTCxJQUFJLEVBQ0osQ0FBQyxDQUNELEVBQUMsQ0FDSjtNQUNEO0lBQ0Y7RUFDRjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNGOztBQUVBdkIsZUFBZSxFQUFFIn0=
|
|
@@ -1,99 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.array.slice.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.array.is-array.js");
|
|
26
|
-
|
|
15
|
+
require("core-js/modules/es.object.define-property.js");
|
|
27
16
|
require("core-js/modules/es.symbol.async-iterator.js");
|
|
28
|
-
|
|
29
17
|
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
30
|
-
|
|
31
18
|
require("core-js/modules/es.json.to-string-tag.js");
|
|
32
|
-
|
|
33
19
|
require("core-js/modules/es.math.to-string-tag.js");
|
|
34
|
-
|
|
35
|
-
require("core-js/modules/es.object.define-property.js");
|
|
36
|
-
|
|
37
20
|
require("core-js/modules/es.object.create.js");
|
|
38
|
-
|
|
39
21
|
require("core-js/modules/es.object.get-prototype-of.js");
|
|
40
|
-
|
|
41
22
|
require("core-js/modules/es.array.for-each.js");
|
|
42
|
-
|
|
43
23
|
require("core-js/modules/web.dom-collections.for-each.js");
|
|
44
|
-
|
|
45
24
|
require("core-js/modules/es.object.set-prototype-of.js");
|
|
46
|
-
|
|
47
25
|
require("core-js/modules/es.array.reverse.js");
|
|
48
|
-
|
|
49
26
|
require("core-js/modules/es.object.to-string.js");
|
|
50
|
-
|
|
51
27
|
require("core-js/modules/es.promise.js");
|
|
52
|
-
|
|
53
28
|
require("core-js/modules/es.array.join.js");
|
|
54
|
-
|
|
55
29
|
require("core-js/modules/es.object.keys.js");
|
|
56
|
-
|
|
57
30
|
require("core-js/modules/es.array.sort.js");
|
|
58
|
-
|
|
59
31
|
require("core-js/modules/es.string.ends-with.js");
|
|
60
|
-
|
|
61
32
|
require("core-js/modules/es.array.concat.js");
|
|
62
|
-
|
|
63
33
|
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
64
|
-
|
|
65
34
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
66
|
-
|
|
67
35
|
var _path = _interopRequireDefault(require("path"));
|
|
68
|
-
|
|
69
36
|
var _quicktypeCore = require("quicktype-core");
|
|
70
|
-
|
|
71
37
|
var _datasets = require("../datasets");
|
|
72
|
-
|
|
73
38
|
var _file_systems = require("../file_systems");
|
|
74
|
-
|
|
75
39
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
76
|
-
|
|
77
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
78
|
-
|
|
40
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
79
41
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
80
|
-
|
|
81
42
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
82
|
-
|
|
83
43
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
84
|
-
|
|
85
44
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
86
|
-
|
|
87
45
|
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; } } }; }
|
|
88
|
-
|
|
89
46
|
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); }
|
|
90
|
-
|
|
91
47
|
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; }
|
|
92
|
-
|
|
93
48
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
94
|
-
|
|
95
49
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
96
|
-
|
|
97
50
|
var optionsDefinitions = [{
|
|
98
51
|
alias: "s",
|
|
99
52
|
help: "don't log anything",
|
|
@@ -111,118 +64,88 @@ var optionsDefinitions = [{
|
|
|
111
64
|
type: String
|
|
112
65
|
}];
|
|
113
66
|
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
114
|
-
|
|
115
67
|
function generateRawTypesFromAmendements(_x) {
|
|
116
68
|
return _generateRawTypesFromAmendements.apply(this, arguments);
|
|
117
69
|
}
|
|
118
|
-
|
|
119
70
|
function _generateRawTypesFromAmendements() {
|
|
120
71
|
_generateRawTypesFromAmendements = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(dataDir) {
|
|
121
72
|
var _iterator, _step, dataset, originalJsonDir, amendementsOriginalFilesPathsByUidTextLegislatif, _iterator2, _step2, amendementSplitPath, amendementFilename, _uidTexteLegislatif, _amendementsOriginalFilesPaths, _amendementOriginalFilePath, uidsTextesLegislatifs, textesLegislatifsSamples, _i, _uidsTextesLegislatif, uidTexteLegislatif, amendementsOriginalFilesPaths, amendements, _iterator3, _step3, amendementOriginalFilePath, amendementOriginalJson, amendementOriginal, amendement, texteLegislatif, jsonInput, inputData, _yield$quicktype, lines, amendementsRawTypesFilePath;
|
|
122
|
-
|
|
123
73
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
124
74
|
while (1) {
|
|
125
75
|
switch (_context.prev = _context.next) {
|
|
126
76
|
case 0:
|
|
127
77
|
_iterator = _createForOfIteratorHelper(_datasets.datasets.amendements);
|
|
128
78
|
_context.prev = 1;
|
|
129
|
-
|
|
130
79
|
_iterator.s();
|
|
131
|
-
|
|
132
80
|
case 3:
|
|
133
81
|
if ((_step = _iterator.n()).done) {
|
|
134
82
|
_context.next = 52;
|
|
135
83
|
break;
|
|
136
84
|
}
|
|
137
|
-
|
|
138
85
|
dataset = _step.value;
|
|
139
86
|
_context.t0 = dataset.structure;
|
|
140
87
|
_context.next = _context.t0 === _datasets.DatasetStructure.SegmentedFiles ? 8 : 50;
|
|
141
88
|
break;
|
|
142
|
-
|
|
143
89
|
case 8:
|
|
144
90
|
originalJsonDir = _path["default"].join(dataDir, dataset.filename);
|
|
145
|
-
|
|
146
91
|
if (!options.silent) {
|
|
147
92
|
console.log("Generating raw types from ".concat(originalJsonDir, "\u2026"));
|
|
148
93
|
}
|
|
149
|
-
|
|
150
94
|
amendementsOriginalFilesPathsByUidTextLegislatif = {};
|
|
151
95
|
_iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(originalJsonDir));
|
|
152
96
|
_context.prev = 12;
|
|
153
|
-
|
|
154
97
|
_iterator2.s();
|
|
155
|
-
|
|
156
98
|
case 14:
|
|
157
99
|
if ((_step2 = _iterator2.n()).done) {
|
|
158
100
|
_context.next = 26;
|
|
159
101
|
break;
|
|
160
102
|
}
|
|
161
|
-
|
|
162
103
|
amendementSplitPath = _step2.value;
|
|
163
104
|
amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
|
|
164
|
-
|
|
165
105
|
if (amendementFilename.endsWith(".json")) {
|
|
166
106
|
_context.next = 19;
|
|
167
107
|
break;
|
|
168
108
|
}
|
|
169
|
-
|
|
170
109
|
return _context.abrupt("continue", 24);
|
|
171
|
-
|
|
172
110
|
case 19:
|
|
173
111
|
_uidTexteLegislatif = amendementSplitPath[amendementSplitPath.length - 2];
|
|
174
112
|
_amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[_uidTexteLegislatif];
|
|
175
|
-
|
|
176
113
|
if (_amendementsOriginalFilesPaths === undefined) {
|
|
177
114
|
_amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[_uidTexteLegislatif] = [];
|
|
178
115
|
}
|
|
179
|
-
|
|
180
116
|
_amendementOriginalFilePath = _path["default"].join.apply(_path["default"], [originalJsonDir].concat(_toConsumableArray(amendementSplitPath)));
|
|
181
|
-
|
|
182
117
|
_amendementsOriginalFilesPaths.push(_amendementOriginalFilePath);
|
|
183
|
-
|
|
184
118
|
case 24:
|
|
185
119
|
_context.next = 14;
|
|
186
120
|
break;
|
|
187
|
-
|
|
188
121
|
case 26:
|
|
189
122
|
_context.next = 31;
|
|
190
123
|
break;
|
|
191
|
-
|
|
192
124
|
case 28:
|
|
193
125
|
_context.prev = 28;
|
|
194
126
|
_context.t1 = _context["catch"](12);
|
|
195
|
-
|
|
196
127
|
_iterator2.e(_context.t1);
|
|
197
|
-
|
|
198
128
|
case 31:
|
|
199
129
|
_context.prev = 31;
|
|
200
|
-
|
|
201
130
|
_iterator2.f();
|
|
202
|
-
|
|
203
131
|
return _context.finish(31);
|
|
204
|
-
|
|
205
132
|
case 34:
|
|
206
133
|
uidsTextesLegislatifs = Object.keys(amendementsOriginalFilesPathsByUidTextLegislatif);
|
|
207
134
|
uidsTextesLegislatifs.sort(function (a, b) {
|
|
208
135
|
return a.length === b.length ? a.localeCompare(b) : a.length - b.length;
|
|
209
136
|
});
|
|
210
137
|
textesLegislatifsSamples = [];
|
|
211
|
-
|
|
212
138
|
for (_i = 0, _uidsTextesLegislatif = uidsTextesLegislatifs; _i < _uidsTextesLegislatif.length; _i++) {
|
|
213
139
|
uidTexteLegislatif = _uidsTextesLegislatif[_i];
|
|
214
|
-
|
|
215
140
|
if (options.verbose) {
|
|
216
141
|
console.log(" Reading \"amendements du texte l\xE9gislatif\": ".concat(uidTexteLegislatif, "\u2026"));
|
|
217
142
|
}
|
|
218
|
-
|
|
219
143
|
amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[uidTexteLegislatif];
|
|
220
144
|
amendementsOriginalFilesPaths.sort(function (a, b) {
|
|
221
145
|
return a.length === b.length ? a.localeCompare(b) : a.length - b.length;
|
|
222
146
|
});
|
|
223
147
|
amendements = [];
|
|
224
148
|
_iterator3 = _createForOfIteratorHelper(amendementsOriginalFilesPaths);
|
|
225
|
-
|
|
226
149
|
try {
|
|
227
150
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
228
151
|
amendementOriginalFilePath = _step3.value;
|
|
@@ -238,7 +161,6 @@ function _generateRawTypesFromAmendements() {
|
|
|
238
161
|
} finally {
|
|
239
162
|
_iterator3.f();
|
|
240
163
|
}
|
|
241
|
-
|
|
242
164
|
texteLegislatif = {
|
|
243
165
|
"@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
|
|
244
166
|
refTexteLegislatif: uidTexteLegislatif,
|
|
@@ -248,14 +170,12 @@ function _generateRawTypesFromAmendements() {
|
|
|
248
170
|
};
|
|
249
171
|
textesLegislatifsSamples.push(JSON.stringify(texteLegislatif));
|
|
250
172
|
}
|
|
251
|
-
|
|
252
173
|
jsonInput = (0, _quicktypeCore.jsonInputForTargetLanguage)("typescript");
|
|
253
174
|
_context.next = 41;
|
|
254
175
|
return jsonInput.addSource({
|
|
255
176
|
name: "TexteLegislatif",
|
|
256
177
|
samples: textesLegislatifsSamples
|
|
257
178
|
});
|
|
258
|
-
|
|
259
179
|
case 41:
|
|
260
180
|
inputData = new _quicktypeCore.InputData();
|
|
261
181
|
inputData.addInput(jsonInput);
|
|
@@ -267,37 +187,26 @@ function _generateRawTypesFromAmendements() {
|
|
|
267
187
|
acronymStyle: "camel"
|
|
268
188
|
}
|
|
269
189
|
});
|
|
270
|
-
|
|
271
190
|
case 45:
|
|
272
191
|
_yield$quicktype = _context.sent;
|
|
273
192
|
lines = _yield$quicktype.lines;
|
|
274
193
|
amendementsRawTypesFilePath = _path["default"].join("src", "raw_types", "amendements.ts");
|
|
275
|
-
|
|
276
194
|
_fsExtra["default"].writeFileSync(amendementsRawTypesFilePath, lines.join("\n"));
|
|
277
|
-
|
|
278
195
|
return _context.abrupt("break", 50);
|
|
279
|
-
|
|
280
196
|
case 50:
|
|
281
197
|
_context.next = 3;
|
|
282
198
|
break;
|
|
283
|
-
|
|
284
199
|
case 52:
|
|
285
200
|
_context.next = 57;
|
|
286
201
|
break;
|
|
287
|
-
|
|
288
202
|
case 54:
|
|
289
203
|
_context.prev = 54;
|
|
290
204
|
_context.t2 = _context["catch"](1);
|
|
291
|
-
|
|
292
205
|
_iterator.e(_context.t2);
|
|
293
|
-
|
|
294
206
|
case 57:
|
|
295
207
|
_context.prev = 57;
|
|
296
|
-
|
|
297
208
|
_iterator.f();
|
|
298
|
-
|
|
299
209
|
return _context.finish(57);
|
|
300
|
-
|
|
301
210
|
case 60:
|
|
302
211
|
case "end":
|
|
303
212
|
return _context.stop();
|
|
@@ -307,11 +216,10 @@ function _generateRawTypesFromAmendements() {
|
|
|
307
216
|
}));
|
|
308
217
|
return _generateRawTypesFromAmendements.apply(this, arguments);
|
|
309
218
|
}
|
|
310
|
-
|
|
311
219
|
generateRawTypesFromAmendements(options.dataDir).then(function () {
|
|
312
220
|
process.exit(0);
|
|
313
221
|
})["catch"](function (error) {
|
|
314
222
|
console.error(error);
|
|
315
223
|
process.exit(1);
|
|
316
224
|
});
|
|
317
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0T3B0aW9uIiwiU3RyaW5nIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsImRhdGFzZXQiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJvcmlnaW5hbEpzb25EaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZiIsIndhbGtEaXIiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwicHVzaCIsInVpZHNUZXh0ZXNMZWdpc2xhdGlmcyIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwidGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzIiwidmVyYm9zZSIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiYW1lbmRlbWVudE9yaWdpbmFsIiwiSlNPTiIsInBhcnNlIiwiYW1lbmRlbWVudCIsInRleHRlTGVnaXNsYXRpZiIsInJlZlRleHRlTGVnaXNsYXRpZiIsInN0cmluZ2lmeSIsImpzb25JbnB1dCIsImpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlIiwiYWRkU291cmNlIiwic2FtcGxlcyIsImlucHV0RGF0YSIsIklucHV0RGF0YSIsImFkZElucHV0IiwicXVpY2t0eXBlIiwibGFuZyIsInJlbmRlcmVyT3B0aW9ucyIsImFjcm9ueW1TdHlsZSIsImxpbmVzIiwiYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoIiwid3JpdGVGaWxlU3luYyIsInRoZW4iLCJwcm9jZXNzIiwiZXhpdCIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmF3X3R5cGVzX2Zyb21fYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBxdWlja3R5cGUsXG4gIElucHV0RGF0YSxcbiAganNvbklucHV0Rm9yVGFyZ2V0TGFuZ3VhZ2UsXG59IGZyb20gXCJxdWlja3R5cGUtY29yZVwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVJhd1R5cGVzRnJvbUFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBHZW5lcmF0aW5nIHJhdyB0eXBlcyBmcm9tICR7b3JpZ2luYWxKc29uRGlyfeKApmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmOiB7XG4gICAgICAgICAgICBbdWlkOiBzdHJpbmddOiBzdHJpbmdbXVxuICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDJdXG4gICAgICAgICAgICBsZXQgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGlmIChhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIsXG4gICAgICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocy5wdXNoKGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVpZHNUZXh0ZXNMZWdpc2xhdGlmcyA9IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmLFxuICAgICAgICAgIClcbiAgICAgICAgICB1aWRzVGV4dGVzTGVnaXNsYXRpZnMuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMgPSBbXVxuICAgICAgICAgIGZvciAoY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmIG9mIHVpZHNUZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBgICBSZWFkaW5nIFwiYW1lbmRlbWVudHMgZHUgdGV4dGUgbMOpZ2lzbGF0aWZcIjogJHt1aWRUZXh0ZUxlZ2lzbGF0aWZ94oCmYCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzLnNvcnQoKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBbXVxuICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCBvZiBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocykge1xuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsOiBhbnkgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICBhbWVuZGVtZW50cy5wdXNoKGFtZW5kZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgPSB7XG4gICAgICAgICAgICAgIFwiQHhtbG5zOnhzaVwiOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIHJlZlRleHRlTGVnaXNsYXRpZjogdWlkVGV4dGVMZWdpc2xhdGlmLFxuICAgICAgICAgICAgICBhbWVuZGVtZW50czogeyBhbWVuZGVtZW50OiBhbWVuZGVtZW50cyB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dGVMZWdpc2xhdGlmKSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBqc29uSW5wdXQgPSBqc29uSW5wdXRGb3JUYXJnZXRMYW5ndWFnZShcInR5cGVzY3JpcHRcIilcbiAgICAgICAgICBhd2FpdCBqc29uSW5wdXQuYWRkU291cmNlKHtcbiAgICAgICAgICAgIG5hbWU6IFwiVGV4dGVMZWdpc2xhdGlmXCIsXG4gICAgICAgICAgICBzYW1wbGVzOiB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpbnB1dERhdGEgPSBuZXcgSW5wdXREYXRhKClcbiAgICAgICAgICBpbnB1dERhdGEuYWRkSW5wdXQoanNvbklucHV0KVxuICAgICAgICAgIGNvbnN0IHsgbGluZXMgfSA9IGF3YWl0IHF1aWNrdHlwZSh7XG4gICAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgICAgICBsYW5nOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgICAgIHJlbmRlcmVyT3B0aW9uczogeyBhY3JvbnltU3R5bGU6IFwiY2FtZWxcIiB9LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICBcInNyY1wiLFxuICAgICAgICAgICAgXCJyYXdfdHlwZXNcIixcbiAgICAgICAgICAgIFwiYW1lbmRlbWVudHMudHNcIixcbiAgICAgICAgICApXG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgsIGxpbmVzLmpvaW4oXCJcXG5cIikpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyhvcHRpb25zLmRhdGFEaXIpXG4gIC50aGVuKCgpID0+IHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7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
|
|
225
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0T3B0aW9uIiwiU3RyaW5nIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsImRhdGFzZXQiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJvcmlnaW5hbEpzb25EaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZiIsIndhbGtEaXIiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwicHVzaCIsInVpZHNUZXh0ZXNMZWdpc2xhdGlmcyIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwidGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzIiwidmVyYm9zZSIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiYW1lbmRlbWVudE9yaWdpbmFsIiwiSlNPTiIsInBhcnNlIiwiYW1lbmRlbWVudCIsInRleHRlTGVnaXNsYXRpZiIsInJlZlRleHRlTGVnaXNsYXRpZiIsInN0cmluZ2lmeSIsImpzb25JbnB1dCIsImpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlIiwiYWRkU291cmNlIiwic2FtcGxlcyIsImlucHV0RGF0YSIsIklucHV0RGF0YSIsImFkZElucHV0IiwicXVpY2t0eXBlIiwibGFuZyIsInJlbmRlcmVyT3B0aW9ucyIsImFjcm9ueW1TdHlsZSIsImxpbmVzIiwiYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoIiwid3JpdGVGaWxlU3luYyIsInRoZW4iLCJwcm9jZXNzIiwiZXhpdCIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmF3X3R5cGVzX2Zyb21fYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBxdWlja3R5cGUsXG4gIElucHV0RGF0YSxcbiAganNvbklucHV0Rm9yVGFyZ2V0TGFuZ3VhZ2UsXG59IGZyb20gXCJxdWlja3R5cGUtY29yZVwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVJhd1R5cGVzRnJvbUFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBHZW5lcmF0aW5nIHJhdyB0eXBlcyBmcm9tICR7b3JpZ2luYWxKc29uRGlyfeKApmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmOiB7XG4gICAgICAgICAgICBbdWlkOiBzdHJpbmddOiBzdHJpbmdbXVxuICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDJdXG4gICAgICAgICAgICBsZXQgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGlmIChhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIsXG4gICAgICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocy5wdXNoKGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVpZHNUZXh0ZXNMZWdpc2xhdGlmcyA9IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmLFxuICAgICAgICAgIClcbiAgICAgICAgICB1aWRzVGV4dGVzTGVnaXNsYXRpZnMuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMgPSBbXVxuICAgICAgICAgIGZvciAoY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmIG9mIHVpZHNUZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBgICBSZWFkaW5nIFwiYW1lbmRlbWVudHMgZHUgdGV4dGUgbMOpZ2lzbGF0aWZcIjogJHt1aWRUZXh0ZUxlZ2lzbGF0aWZ94oCmYCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzLnNvcnQoKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBbXVxuICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCBvZiBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocykge1xuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsOiBhbnkgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICBhbWVuZGVtZW50cy5wdXNoKGFtZW5kZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgPSB7XG4gICAgICAgICAgICAgIFwiQHhtbG5zOnhzaVwiOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIHJlZlRleHRlTGVnaXNsYXRpZjogdWlkVGV4dGVMZWdpc2xhdGlmLFxuICAgICAgICAgICAgICBhbWVuZGVtZW50czogeyBhbWVuZGVtZW50OiBhbWVuZGVtZW50cyB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dGVMZWdpc2xhdGlmKSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBqc29uSW5wdXQgPSBqc29uSW5wdXRGb3JUYXJnZXRMYW5ndWFnZShcInR5cGVzY3JpcHRcIilcbiAgICAgICAgICBhd2FpdCBqc29uSW5wdXQuYWRkU291cmNlKHtcbiAgICAgICAgICAgIG5hbWU6IFwiVGV4dGVMZWdpc2xhdGlmXCIsXG4gICAgICAgICAgICBzYW1wbGVzOiB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpbnB1dERhdGEgPSBuZXcgSW5wdXREYXRhKClcbiAgICAgICAgICBpbnB1dERhdGEuYWRkSW5wdXQoanNvbklucHV0KVxuICAgICAgICAgIGNvbnN0IHsgbGluZXMgfSA9IGF3YWl0IHF1aWNrdHlwZSh7XG4gICAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgICAgICBsYW5nOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgICAgIHJlbmRlcmVyT3B0aW9uczogeyBhY3JvbnltU3R5bGU6IFwiY2FtZWxcIiB9LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICBcInNyY1wiLFxuICAgICAgICAgICAgXCJyYXdfdHlwZXNcIixcbiAgICAgICAgICAgIFwiYW1lbmRlbWVudHMudHNcIixcbiAgICAgICAgICApXG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgsIGxpbmVzLmpvaW4oXCJcXG5cIikpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyhvcHRpb25zLmRhdGFEaXIpXG4gIC50aGVuKCgpID0+IHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQXlDO0FBQUEsK0NBVHpDO0FBQUE7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
|