text-to-map 1.1.36 → 1.1.37
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/dist/bin/parse-ordinance.js +14 -7
- package/dist/db/founders.d.ts +3 -3
- package/dist/db/founders.js +13 -11
- package/dist/db/types.d.ts +1 -1
- package/dist/db/types.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/open-data-sync/schools.js +1 -10
- package/dist/street-markdown/smd.d.ts +5 -4
- package/dist/street-markdown/smd.js +10 -9
- package/dist/street-markdown/types.d.ts +2 -1
- package/dist/street-markdown/types.js +1 -1
- package/package.json +1 -1
|
@@ -2,13 +2,19 @@ import { readFileSync, writeFileSync } from "fs";
|
|
|
2
2
|
import { parseOrdinanceToAddressPoints, } from "../street-markdown/smd";
|
|
3
3
|
import { municipalitiesToPolygons } from "../street-markdown/polygons";
|
|
4
4
|
import { disconnectKnex } from "../db/db";
|
|
5
|
+
import { SchoolType } from "../db/types";
|
|
5
6
|
async function main() {
|
|
6
7
|
// take first node argument as a file name
|
|
7
|
-
if (process.argv.length <
|
|
8
|
+
if (process.argv.length < 4) {
|
|
8
9
|
console.error("Missing file name argument");
|
|
9
10
|
process.exit(1);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
if (process.argv[2] !== "zs" && process.argv[2] !== "ms") {
|
|
13
|
+
console.error("Invalid school type argument, must be one of 'zs' or 'ms'");
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const schoolType = process.argv[2] === "zs" ? SchoolType.Elementary : SchoolType.Kindergarten;
|
|
17
|
+
const fileName = process.argv[3];
|
|
12
18
|
const fileContent = readFileSync(fileName);
|
|
13
19
|
const lines = fileContent.toString().split("\n");
|
|
14
20
|
let errorCount = 0;
|
|
@@ -30,6 +36,7 @@ async function main() {
|
|
|
30
36
|
// const { municipality } = await getNewMunicipalityByFounderId(2016); // ostrava something
|
|
31
37
|
const municipalities = await parseOrdinanceToAddressPoints({
|
|
32
38
|
lines,
|
|
39
|
+
schoolType,
|
|
33
40
|
initialState: {
|
|
34
41
|
// currentMunicipality: municipality,
|
|
35
42
|
},
|
|
@@ -43,8 +50,8 @@ async function main() {
|
|
|
43
50
|
// console.log("Errors:");
|
|
44
51
|
// errorLines.forEach((line) => console.log(line));
|
|
45
52
|
// }
|
|
46
|
-
if (process.argv.length >=
|
|
47
|
-
const outputFileName = process.argv[
|
|
53
|
+
if (process.argv.length >= 5) {
|
|
54
|
+
const outputFileName = process.argv[4];
|
|
48
55
|
const output = JSON.stringify(municipalities);
|
|
49
56
|
console.log(`Writing output to ${outputFileName}`);
|
|
50
57
|
writeFileSync(outputFileName, output);
|
|
@@ -52,11 +59,11 @@ async function main() {
|
|
|
52
59
|
else {
|
|
53
60
|
console.log(JSON.stringify(municipalities));
|
|
54
61
|
}
|
|
55
|
-
if (process.argv.length >=
|
|
62
|
+
if (process.argv.length >= 6) {
|
|
56
63
|
console.time("municipalityToPolygons");
|
|
57
64
|
const polygons = await municipalitiesToPolygons(municipalities);
|
|
58
65
|
console.timeEnd("municipalityToPolygons");
|
|
59
|
-
const outputFileName = process.argv[
|
|
66
|
+
const outputFileName = process.argv[5];
|
|
60
67
|
const output = JSON.stringify(polygons);
|
|
61
68
|
console.log(`Writing polygons to ${outputFileName}`);
|
|
62
69
|
writeFileSync(outputFileName, output);
|
|
@@ -64,4 +71,4 @@ async function main() {
|
|
|
64
71
|
await disconnectKnex();
|
|
65
72
|
}
|
|
66
73
|
main();
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2Utb3JkaW5hbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9wYXJzZS1vcmRpbmFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDakQsT0FBTyxFQUVMLDZCQUE2QixHQUM5QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6QyxLQUFLLFVBQVUsSUFBSTtJQUNqQiwwQ0FBMEM7SUFDMUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7SUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3hELE9BQU8sQ0FBQyxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUMzRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsTUFBTSxVQUFVLEdBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDN0UsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNq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QVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELGFBQWEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkM7SUFDRCxNQUFNLGNBQWMsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldE5ld011bmljaXBhbGl0eUJ5Rm91bmRlcklkLFxyXG4gIHBhcnNlT3JkaW5hbmNlVG9BZGRyZXNzUG9pbnRzLFxyXG59IGZyb20gXCIuLi9zdHJlZXQtbWFya2Rvd24vc21kXCI7XHJcbmltcG9ydCB7IEVycm9yQ2FsbGJhY2tQYXJhbXMgfSBmcm9tIFwiLi4vc3RyZWV0LW1hcmtkb3duL3R5cGVzXCI7XHJcbmltcG9ydCB7IG11bmljaXBhbGl0aWVzVG9Qb2x5Z29ucyB9IGZyb20gXCIuLi9zdHJlZXQtbWFya2Rvd24vcG9seWdvbnNcIjtcclxuaW1wb3J0IHsgZGlzY29ubmVjdEtuZXggfSBmcm9tIFwiLi4vZGIvZGJcIjtcclxuaW1wb3J0IHsgU2Nob29sVHlwZSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcclxuICAvLyB0YWtlIGZpcnN0IG5vZGUgYXJndW1lbnQgYXMgYSBmaWxlIG5hbWVcclxuICBpZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA8IDQpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoXCJNaXNzaW5nIGZpbGUgbmFtZSBhcmd1bWVudFwiKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICB9XHJcblxyXG4gIGlmIChwcm9jZXNzLmFyZ3ZbMl0gIT09IFwienNcIiAmJiBwcm9jZXNzLmFyZ3ZbMl0gIT09IFwibXNcIikge1xyXG4gICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgc2Nob29sIHR5cGUgYXJndW1lbnQsIG11c3QgYmUgb25lIG9mICd6cycgb3IgJ21zJ1wiKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICB9XHJcbiAgY29uc3Qgc2Nob29sVHlwZSA9XHJcbiAgICBwcm9jZXNzLmFyZ3ZbMl0gPT09IFwienNcIiA/IFNjaG9vbFR5cGUuRWxlbWVudGFyeSA6IFNjaG9vbFR5cGUuS2luZGVyZ2FydGVuO1xyXG4gIGNvbnN0IGZpbGVOYW1lID0gcHJvY2Vzcy5hcmd2WzNdO1xyXG4gIGNvbnN0IGZpbGVDb250ZW50ID0gcmVhZEZpbGVTeW5jKGZpbGVOYW1lKTtcclxuICBjb25zdCBsaW5lcyA9IGZpbGVDb250ZW50LnRvU3RyaW5nKCkuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gIGxldCBlcnJvckNvdW50ID0gMDtcclxuICBjb25zdCBlcnJvckxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGxldCB3YXJuaW5nQ291bnQgPSAwO1xyXG5cclxuICBjb25zdCByZXBvcnRFcnJvcnMgPSAoe1xyXG4gICAgbGluZU51bWJlcixcclxuICAgIGxpbmUsXHJcbiAgICBlcnJvcnMsXHJcbiAgfTogRXJyb3JDYWxsYmFja1BhcmFtcyk6IHZvaWQgPT4ge1xyXG4gICAgZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpKTtcclxuICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgc3RyZWV0IGRlZmluaXRpb24gb24gbGluZSAke2xpbmVOdW1iZXJ9OiAke2xpbmV9YCk7XHJcbiAgICBlcnJvckNvdW50Kys7XHJcbiAgICBlcnJvckxpbmVzLnB1c2goYGxpbmUgJHtsaW5lTnVtYmVyfTogJHtsaW5lfWApO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHJlcG9ydFdhcm5pbmdzID0gKHtcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBlcnJvcnM6IHdhcm5pbmdzLFxyXG4gIH06IEVycm9yQ2FsbGJhY2tQYXJhbXMpOiB2b2lkID0+IHtcclxuICAgIHdhcm5pbmdzLmZvckVhY2goKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYExpbmUgJHtsaW5lTnVtYmVyfTogJHtlcnJvci5tZXNzYWdlfWApO1xyXG4gICAgfSk7XHJcbiAgICB3YXJuaW5nQ291bnQrKztcclxuICB9O1xyXG5cclxuICBjb25zb2xlLnRpbWUoXCJwYXJzZU9yZGluYW5jZVRvQWRkcmVzc1BvaW50c1wiKTtcclxuXHJcbiAgLy8gY29uc3QgeyBtdW5pY2lwYWxpdHkgfSA9IGF3YWl0IGdldE5ld011bmljaXBhbGl0eUJ5Rm91bmRlcklkKDIwMTYpOyAvLyBvc3RyYXZhIHNvbWV0aGluZ1xyXG5cclxuICBjb25zdCBtdW5pY2lwYWxpdGllcyA9IGF3YWl0IHBhcnNlT3JkaW5hbmNlVG9BZGRyZXNzUG9pbnRzKHtcclxuICAgIGxpbmVzLFxyXG4gICAgc2Nob29sVHlwZSxcclxuICAgIGluaXRpYWxTdGF0ZToge1xyXG4gICAgICAvLyBjdXJyZW50TXVuaWNpcGFsaXR5OiBtdW5pY2lwYWxpdHksXHJcbiAgICB9LFxyXG4gICAgb25FcnJvcjogcmVwb3J0RXJyb3JzLFxyXG4gICAgb25XYXJuaW5nOiByZXBvcnRXYXJuaW5ncyxcclxuICAgIGluY2x1ZGVVbm1hcHBlZEFkZHJlc3NQb2ludHM6IHRydWUsXHJcbiAgfSk7XHJcbiAgY29uc29sZS50aW1lRW5kKFwicGFyc2VPcmRpbmFuY2VUb0FkZHJlc3NQb2ludHNcIik7XHJcblxyXG4gIGNvbnNvbGUubG9nKFxyXG4gICAgYFBhcnNlZCAke2xpbmVzLmxlbmd0aH0gbGluZXMsICR7ZXJyb3JDb3VudH0gZXJyb3JzLCAke3dhcm5pbmdDb3VudH0gd2FybmluZ3MuYFxyXG4gICk7XHJcbiAgLy8gaWYgKGVycm9yQ291bnQgPiAwKSB7XHJcbiAgLy8gICBjb25zb2xlLmxvZyhcIkVycm9yczpcIik7XHJcbiAgLy8gICBlcnJvckxpbmVzLmZvckVhY2goKGxpbmUpID0+IGNvbnNvbGUubG9nKGxpbmUpKTtcclxuICAvLyB9XHJcblxyXG4gIGlmIChwcm9jZXNzLmFyZ3YubGVuZ3RoID49IDUpIHtcclxuICAgIGNvbnN0IG91dHB1dEZpbGVOYW1lID0gcHJvY2Vzcy5hcmd2WzRdO1xyXG4gICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5zdHJpbmdpZnkobXVuaWNpcGFsaXRpZXMpO1xyXG4gICAgY29uc29sZS5sb2coYFdyaXRpbmcgb3V0cHV0IHRvICR7b3V0cHV0RmlsZU5hbWV9YCk7XHJcbiAgICB3cml0ZUZpbGVTeW5jKG91dHB1dEZpbGVOYW1lLCBvdXRwdXQpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShtdW5pY2lwYWxpdGllcykpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHByb2Nlc3MuYXJndi5sZW5ndGggPj0gNikge1xyXG4gICAgY29uc29sZS50aW1lKFwibXVuaWNpcGFsaXR5VG9Qb2x5Z29uc1wiKTtcclxuICAgIGNvbnN0IHBvbHlnb25zID0gYXdhaXQgbXVuaWNpcGFsaXRpZXNUb1BvbHlnb25zKG11bmljaXBhbGl0aWVzKTtcclxuICAgIGNvbnNvbGUudGltZUVuZChcIm11bmljaXBhbGl0eVRvUG9seWdvbnNcIik7XHJcblxyXG4gICAgY29uc3Qgb3V0cHV0RmlsZU5hbWUgPSBwcm9jZXNzLmFyZ3ZbNV07XHJcbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnN0cmluZ2lmeShwb2x5Z29ucyk7XHJcbiAgICBjb25zb2xlLmxvZyhgV3JpdGluZyBwb2x5Z29ucyB0byAke291dHB1dEZpbGVOYW1lfWApO1xyXG4gICAgd3JpdGVGaWxlU3luYyhvdXRwdXRGaWxlTmFtZSwgb3V0cHV0KTtcclxuICB9XHJcbiAgYXdhaXQgZGlzY29ubmVjdEtuZXgoKTtcclxufVxyXG5cclxubWFpbigpO1xyXG4iXX0=
|
package/dist/db/founders.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DbMunicipalityResult, MunicipalityPartResult, SmdError } from "../street-markdown/types";
|
|
2
|
-
import { Founder, MunicipalityType } from "./types";
|
|
2
|
+
import { Founder, MunicipalityType, SchoolType } from "./types";
|
|
3
3
|
export declare const insertFounders: (founders: Founder[]) => Promise<number>;
|
|
4
|
-
export declare const getFounderById: (id: number) => Promise<{
|
|
4
|
+
export declare const getFounderById: (id: number, schoolType: SchoolType) => Promise<{
|
|
5
5
|
founder: Founder;
|
|
6
6
|
errors: SmdError[];
|
|
7
7
|
}>;
|
|
8
|
-
export declare const findFounder: (nameWithHashtag: string) => Promise<{
|
|
8
|
+
export declare const findFounder: (nameWithHashtag: string, schoolType: SchoolType) => Promise<{
|
|
9
9
|
founder: Founder;
|
|
10
10
|
errors: SmdError[];
|
|
11
11
|
}>;
|
package/dist/db/founders.js
CHANGED
|
@@ -220,9 +220,9 @@ const getBaseFounderQuery = () => {
|
|
|
220
220
|
.leftJoin("city_district as d", "d.code", "f.city_district_code")
|
|
221
221
|
.orderBy("f.founder_type_code");
|
|
222
222
|
};
|
|
223
|
-
export const getFounderById = async (id) => {
|
|
223
|
+
export const getFounderById = async (id, schoolType) => {
|
|
224
224
|
const result = await getBaseFounderQuery().where("f.id", id).first();
|
|
225
|
-
const founder = await resultToFounder(result);
|
|
225
|
+
const founder = await resultToFounder(result, schoolType);
|
|
226
226
|
return {
|
|
227
227
|
founder: founder ?? null,
|
|
228
228
|
errors: founder
|
|
@@ -230,7 +230,7 @@ export const getFounderById = async (id) => {
|
|
|
230
230
|
: [wholeLineError(`Zřizovatel s id ${id} neexistuje.`, "")],
|
|
231
231
|
};
|
|
232
232
|
};
|
|
233
|
-
export const findFounder = async (nameWithHashtag) => {
|
|
233
|
+
export const findFounder = async (nameWithHashtag, schoolType) => {
|
|
234
234
|
const errors = [];
|
|
235
235
|
// special case where we search for a city instead of a founder
|
|
236
236
|
if (nameWithHashtag[1] === "#") {
|
|
@@ -247,7 +247,7 @@ export const findFounder = async (nameWithHashtag) => {
|
|
|
247
247
|
originalType: cityTypeCode,
|
|
248
248
|
municipalityType: MunicipalityType.City,
|
|
249
249
|
municipalityCode: result.code,
|
|
250
|
-
schools: await getSchoolsByCityCode(result.code),
|
|
250
|
+
schools: await getSchoolsByCityCode(result.code, schoolType),
|
|
251
251
|
},
|
|
252
252
|
errors,
|
|
253
253
|
};
|
|
@@ -259,7 +259,7 @@ export const findFounder = async (nameWithHashtag) => {
|
|
|
259
259
|
.orWhere("d.name", name)
|
|
260
260
|
.first();
|
|
261
261
|
if (result) {
|
|
262
|
-
return { founder: await resultToFounder(result), errors };
|
|
262
|
+
return { founder: await resultToFounder(result, schoolType), errors };
|
|
263
263
|
}
|
|
264
264
|
else {
|
|
265
265
|
const allFounderNames = await getAllFounderNames();
|
|
@@ -283,7 +283,7 @@ export const findFounder = async (nameWithHashtag) => {
|
|
|
283
283
|
.where("id", bestMatchRow.id)
|
|
284
284
|
.first();
|
|
285
285
|
return {
|
|
286
|
-
founder: await resultToFounder(founder),
|
|
286
|
+
founder: await resultToFounder(founder, schoolType),
|
|
287
287
|
errors,
|
|
288
288
|
};
|
|
289
289
|
}
|
|
@@ -305,7 +305,7 @@ export const getFounderCityCode = async (founder) => {
|
|
|
305
305
|
return founder.municipalityCode;
|
|
306
306
|
}
|
|
307
307
|
};
|
|
308
|
-
const resultToFounder = async (result) => {
|
|
308
|
+
const resultToFounder = async (result, schoolType) => {
|
|
309
309
|
return {
|
|
310
310
|
name: result.name,
|
|
311
311
|
ico: result.ico,
|
|
@@ -316,18 +316,19 @@ const resultToFounder = async (result) => {
|
|
|
316
316
|
municipalityCode: result.founder_type_code === cityTypeCode
|
|
317
317
|
? result.city_code
|
|
318
318
|
: result.city_district_code,
|
|
319
|
-
schools: await getSchoolsByCityCode(result.city_code),
|
|
319
|
+
schools: await getSchoolsByCityCode(result.city_code, schoolType),
|
|
320
320
|
};
|
|
321
321
|
};
|
|
322
322
|
// in case of cities, load all schools in the city, not just the ones connected to the founder
|
|
323
|
-
const getSchoolsByCityCode = async (cityCode) => {
|
|
323
|
+
const getSchoolsByCityCode = async (cityCode, schoolType) => {
|
|
324
324
|
const result = await getKnexDb()
|
|
325
325
|
.select("s.izo", "s.redizo", "s.name", "s.capacity", "sl.address_point_id")
|
|
326
326
|
.from("school as s")
|
|
327
327
|
.join("school_founder as sf", "s.izo", "sf.school_izo")
|
|
328
328
|
.join("school_location as sl", "s.izo", "sl.school_izo")
|
|
329
329
|
.join("founder as f", "sf.founder_id", "f.id")
|
|
330
|
-
.where("f.city_code", cityCode)
|
|
330
|
+
.where("f.city_code", cityCode)
|
|
331
|
+
.where("s.type", schoolType);
|
|
331
332
|
return result.map((row) => ({
|
|
332
333
|
izo: String(row.izo),
|
|
333
334
|
redizo: String(row.redizo),
|
|
@@ -338,6 +339,7 @@ const getSchoolsByCityCode = async (cityCode) => {
|
|
|
338
339
|
addressPointId: parseInt(row.address_point_id),
|
|
339
340
|
},
|
|
340
341
|
],
|
|
342
|
+
type: schoolType,
|
|
341
343
|
}));
|
|
342
344
|
};
|
|
343
345
|
const getAllFounderNames = async () => {
|
|
@@ -447,4 +449,4 @@ const getAllMunicipalityPartNames = async (cityCode) => {
|
|
|
447
449
|
code: row.code,
|
|
448
450
|
}));
|
|
449
451
|
};
|
|
450
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm91bmRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvZm91bmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTXhELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLHdCQUF3QixHQUN6QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUVMLGdCQUFnQixHQUlqQixNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDekIsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxRQUFtQixFQUFtQixFQUFFO0lBQzNFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0lBRXZDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1FBQzlCLElBQ0UsT0FBTyxDQUFDLGdCQUFnQixLQUFLLGdCQUFnQixDQUFDLElBQUk7WUFDbEQsT0FBTyxDQUFDLGdCQUFnQixLQUFLLGdCQUFnQixDQUFDLFFBQVEsRUFDdEQ7WUFDQSxTQUFTO1NBQ1Y7UUFDRCxNQUFNLHlCQUF5QixHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5FLHdGQUF3RjtRQUN4RixJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxNQUFNLE1B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QyxtQkFBbUIsQ0FBQztTQUN6QixLQUFLLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUNoQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtLQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpc3RhbmNlIGZyb20gXCJAdHVyZi9kaXN0YW5jZVwiO1xyXG5pbXBvcnQgeyB3aG9sZUxpbmVFcnJvciB9IGZyb20gXCIuLi9zdHJlZXQtbWFya2Rvd24vc21kXCI7XHJcbmltcG9ydCB7XHJcbiAgRGJNdW5pY2lwYWxpdHlSZXN1bHQsXHJcbiAgTXVuaWNpcGFsaXR5UGFydFJlc3VsdCxcclxuICBTbWRFcnJvcixcclxufSBmcm9tIFwiLi4vc3RyZWV0LW1hcmtkb3duL3R5cGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgZXh0cmFjdE11bmljaXBhbGl0eU5hbWUsXHJcbiAgZmluZENsb3Nlc3RTdHJpbmcsXHJcbiAgc2FuaXRpemVNdW5pY2lwYWxpdHlOYW1lLFxyXG59IGZyb20gXCIuLi91dGlscy9oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGdldEtuZXhEYiwgaW5zZXJ0QXV0b2luY3JlbWVudFJvdywgaW5zZXJ0TXVsdGlwbGVSb3dzIH0gZnJvbSBcIi4vZGJcIjtcclxuaW1wb3J0IHtcclxuICBGb3VuZGVyLFxyXG4gIE11bmljaXBhbGl0eVR5cGUsXHJcbiAgTXVuaWNpcGFsaXR5V2l0aFBvc2l0aW9uLFxyXG4gIFBsYWNlV2l0aFBvc2l0aW9uLFxyXG4gIFNjaG9vbCxcclxufSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuY29uc3QgY2l0eVR5cGVDb2RlID0gMjYxO1xyXG5jb25zdCBjaXR5RGlzdHJpY3RUeXBlQ29kZSA9IDI2MztcclxuXHJcbmV4cG9ydCBjb25zdCBpbnNlcnRGb3VuZGVycyA9IGFzeW5jIChmb3VuZGVyczogRm91bmRlcltdKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcclxuICBsZXQgaW5zZXJ0ZWRGb3VuZGVycyA9IDA7XHJcbiAgY29uc3Qgc2Nob29sRm91bmRlckNvbm5lY3Rpb25EYXRhID0gW107XHJcblxyXG4gIGZvciAoY29uc3QgZm91bmRlciBvZiBmb3VuZGVycykge1xyXG4gICAgaWYgKFxyXG4gICAgICBmb3VuZGVyLm11bmljaXBhbGl0eVR5cGUgIT09IE11bmljaXBhbGl0eVR5cGUuQ2l0eSAmJlxyXG4gICAgICBmb3VuZGVyLm11bmljaXBhbGl0eVR5cGUgIT09IE11bmljaXBhbGl0eVR5cGUuRGlzdHJpY3RcclxuICAgICkge1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGV4dHJhY3RlZE11bmljaXBhbGl0eU5hbWUgPSBleHRyYWN0TXVuaWNpcGFsaXR5TmFtZShmb3VuZGVyKTtcclxuXHJcbiAgICAvLyBjaGVjayBpZiB0aGUgZXh0cmFjdGVkIG11bmljaXBhbGl0eSBuYW1lIGlzIHRoZSBzYW1lIGFzIGluIGFsbCB0aGUgc2Nob29scycgbG9jYXRpb25zXHJcbiAgICBsZXQgZGlmZmVyaW5nU2Nob29scyA9IFtdO1xyXG4gICAgbGV0IG11bmljaXBhbGl0eUNvZGUgPSAtMTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHNjaG9vbCBvZiBmb3VuZGVyLnNjaG9vbHMpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5XHJcbiAgICAgICAgPyBnZXRDaXR5T2ZTY2hvb2woc2Nob29sLml6bylcclxuICAgICAgICA6IGdldERpc3RyaWN0T2ZTY2hvb2woc2Nob29sLml6bykpO1xyXG4gICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgYGl6bzogJHtzY2hvb2wuaXpvfSwgZXh0cmFjdGVkOiAke2V4dHJhY3RlZE11bmljaXBhbGl0eU5hbWV9LCBSVUlBTjogVU5ERUZJTkVEYFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZGlmZmVyaW5nU2Nob29scy5wdXNoKHNjaG9vbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgeyBuYW1lLCBjb2RlIH0gPSByZXN1bHQ7XHJcbiAgICAgICAgaWYgKG5hbWUgIT09IGV4dHJhY3RlZE11bmljaXBhbGl0eU5hbWUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgaXpvOiAke3NjaG9vbC5pem99LCBleHRyYWN0ZWQ6ICR7ZXh0cmFjdGVkTXVuaWNpcGFsaXR5TmFtZX0sIFJVSUFOOiAke25hbWV9YFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGRpZmZlcmluZ1NjaG9vbHMucHVzaChzY2hvb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzdG9yZSBtdW5pY2lwYWxpdHlDb2RlIGV2ZW4gaWYgdGhlIG5hbWVzIGRvbid0IG1hdGNoLCB3ZSB3aWxsIHVzZSBpdCBsYXRlclxyXG4gICAgICAgIG11bmljaXBhbGl0eUNvZGUgPSBwYXJzZUludChjb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG11bmljaXBhbGl0eUNvZGUgPSBhd2FpdCBmaXhGb3VuZGVyUHJvYmxlbXMoXHJcbiAgICAgIGZvdW5kZXIsXHJcbiAgICAgIG11bmljaXBhbGl0eUNvZGUsXHJcbiAgICAgIGRpZmZlcmluZ1NjaG9vbHMsXHJcbiAgICAgIGV4dHJhY3RlZE11bmljaXBhbGl0eU5hbWVcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgY2l0eURpc3RyaWN0Q29kZSA9XHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgICAgID8gbXVuaWNpcGFsaXR5Q29kZS50b1N0cmluZygpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgbGV0IGNpdHlDb2RlID0gbnVsbDtcclxuICAgIGlmIChmb3VuZGVyLm11bmljaXBhbGl0eVR5cGUgPT09IE11bmljaXBhbGl0eVR5cGUuQ2l0eSkge1xyXG4gICAgICBjaXR5Q29kZSA9IG11bmljaXBhbGl0eUNvZGU/LnRvU3RyaW5nKCkgPz8gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNpdHlDb2RlID0gYXdhaXQgZ2V0Q2l0eUNvZGVCeURpc3RyaWN0Q29kZShtdW5pY2lwYWxpdHlDb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgIC5zZWxlY3QoXCIqXCIpXHJcbiAgICAgIC5mcm9tKFwiZm91bmRlclwiKVxyXG4gICAgICAud2hlcmUoe1xyXG4gICAgICAgIG5hbWU6IHNhbml0aXplTXVuaWNpcGFsaXR5TmFtZShmb3VuZGVyLm5hbWUpLFxyXG4gICAgICAgIGljbzogZm91bmRlci5pY28sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGxldCBmb3VuZGVySWQgPSBleGlzdGluZ1swXT8uaWQgPz8gbnVsbDtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmcubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGZvdW5kZXJJZCA9IGF3YWl0IGluc2VydEF1dG9pbmNyZW1lbnRSb3coXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgc2FuaXRpemVNdW5pY2lwYWxpdHlOYW1lKGZvdW5kZXIubmFtZSksXHJcbiAgICAgICAgICBzYW5pdGl6ZU11bmljaXBhbGl0eU5hbWUoZXh0cmFjdGVkTXVuaWNpcGFsaXR5TmFtZSksXHJcbiAgICAgICAgICBmb3VuZGVyLmljbyxcclxuICAgICAgICAgIFN0cmluZyhmb3VuZGVyLm9yaWdpbmFsVHlwZSksXHJcbiAgICAgICAgICBjaXR5Q29kZSxcclxuICAgICAgICAgIGNpdHlEaXN0cmljdENvZGUsXHJcbiAgICAgICAgXSxcclxuICAgICAgICBcImZvdW5kZXJcIixcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcIm5hbWVcIixcclxuICAgICAgICAgIFwic2hvcnRfbmFtZVwiLFxyXG4gICAgICAgICAgXCJpY29cIixcclxuICAgICAgICAgIFwiZm91bmRlcl90eXBlX2NvZGVcIixcclxuICAgICAgICAgIFwiY2l0eV9jb2RlXCIsXHJcbiAgICAgICAgICBcImNpdHlfZGlzdHJpY3RfY29kZVwiLFxyXG4gICAgICAgIF1cclxuICAgICAgKTtcclxuICAgICAgaW5zZXJ0ZWRGb3VuZGVycysrO1xyXG4gICAgfVxyXG5cclxuICAgIGZvdW5kZXIuc2Nob29scy5mb3JFYWNoKChzY2hvb2wpID0+IHtcclxuICAgICAgc2Nob29sRm91bmRlckNvbm5lY3Rpb25EYXRhLnB1c2goW3NjaG9vbC5pem8sIGZvdW5kZXJJZF0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBpbnNlcnRlZENvbm5lY3Rpb25zID0gYXdhaXQgaW5zZXJ0TXVsdGlwbGVSb3dzKFxyXG4gICAgc2Nob29sRm91bmRlckNvbm5lY3Rpb25EYXRhLFxyXG4gICAgXCJzY2hvb2xfZm91bmRlclwiLFxyXG4gICAgW1wic2Nob29sX2l6b1wiLCBcImZvdW5kZXJfaWRcIl0sXHJcbiAgICB0cnVlXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIGluc2VydGVkRm91bmRlcnMgKyBpbnNlcnRlZENvbm5lY3Rpb25zO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0Q2l0eU9mU2Nob29sID0gYXN5bmMgKGl6bzogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICByZXR1cm4gYXdhaXQgZ2V0S25leERiKClcclxuICAgIC5zZWxlY3QoXCJjLm5hbWVcIiwgXCJjLmNvZGVcIilcclxuICAgIC5mcm9tKFwic2Nob29sIGFzIHNcIilcclxuICAgIC5qb2luKFwic2Nob29sX2xvY2F0aW9uIGFzIGxcIiwgXCJzLml6b1wiLCBcImwuc2Nob29sX2l6b1wiKVxyXG4gICAgLmpvaW4oXCJhZGRyZXNzX3BvaW50IGFzIGFcIiwgXCJsLmFkZHJlc3NfcG9pbnRfaWRcIiwgXCJhLmlkXCIpXHJcbiAgICAuam9pbihcImNpdHkgYXMgY1wiLCBcImEuY2l0eV9jb2RlXCIsIFwiYy5jb2RlXCIpXHJcbiAgICAud2hlcmUoXCJzLml6b1wiLCBpem8pXHJcbiAgICAubGltaXQoMSlcclxuICAgIC5maXJzdCgpO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0RGlzdHJpY3RPZlNjaG9vbCA9IGFzeW5jIChpem86IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XHJcbiAgcmV0dXJuIGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAuc2VsZWN0KFwiZC5uYW1lXCIsIFwiZC5jb2RlXCIpXHJcbiAgICAuZnJvbShcInNjaG9vbCBhcyBzXCIpXHJcbiAgICAuam9pbihcInNjaG9vbF9sb2NhdGlvbiBhcyBsXCIsIFwicy5pem9cIiwgXCJsLnNjaG9vbF9pem9cIilcclxuICAgIC5qb2luKFwiYWRkcmVzc19wb2ludCBhcyBhXCIsIFwibC5hZGRyZXNzX3BvaW50X2lkXCIsIFwiYS5pZFwiKVxyXG4gICAgLmpvaW4oXCJjaXR5X2Rpc3RyaWN0IGFzIGRcIiwgXCJhLmNpdHlfZGlzdHJpY3RfY29kZVwiLCBcImQuY29kZVwiKVxyXG4gICAgLndoZXJlKFwicy5pem9cIiwgaXpvKVxyXG4gICAgLmxpbWl0KDEpXHJcbiAgICAuZmlyc3QoKTtcclxufTtcclxuXHJcbmNvbnN0IGZpeEZvdW5kZXJQcm9ibGVtcyA9IGFzeW5jIChcclxuICBmb3VuZGVyOiBGb3VuZGVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU6IG51bWJlcixcclxuICBkaWZmZXJpbmdTY2hvb2xzOiBTY2hvb2xbXSxcclxuICBleHRyYWN0ZWRNdW5pY2lwYWxpdHlOYW1lOiBzdHJpbmdcclxuKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiA9PiB7XHJcbiAgaWYgKFxyXG4gICAgZGlmZmVyaW5nU2Nob29scy5sZW5ndGggPT09IDAgfHxcclxuICAgIGRpZmZlcmluZ1NjaG9vbHMubGVuZ3RoIDwgZm91bmRlci5zY2hvb2xzLmxlbmd0aFxyXG4gICkge1xyXG4gICAgcmV0dXJuIG11bmljaXBhbGl0eUNvZGU7XHJcbiAgfVxyXG5cclxuICAvLyBlaXRoZXIgdGhlIHNjaG9vbCBkb2VzIG5vdCBoYXZlIGEgcG9zaXRpb24gKGludmFsaWQgUlVJQU4gb3IgbWlzc2luZyBidWlsZGluZylcclxuICAvLyBvciB0aGUgc2Nob29sIGlzIG5vdCBpbiB0aGUgc2FtZSBtdW5pY2lwYWxpdHkgYXMgdGhlIGZvdW5kZXJcclxuXHJcbiAgLy8gZmluZCBhbGwgY2l0aWVzIGFuZCB0aGVpciBwb3NpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgbXVuaWNpcGFsaXR5TmFtZVxyXG4gIGNvbnN0IG11bmljaXBhbGl0aWVzID0gYXdhaXQgZmluZE11bmljaXBhbGl0aWVzQW5kUG9zaXRpb25zQnlOYW1lQW5kVHlwZShcclxuICAgIGV4dHJhY3RlZE11bmljaXBhbGl0eU5hbWUsXHJcbiAgICBmb3VuZGVyLm11bmljaXBhbGl0eVR5cGVcclxuICApO1xyXG5cclxuICAvLyBnZXQgb25lIHNjaG9vbCBwb3NpdGlvbiAoaWYgdGhlcmUgYXJlIG1vcmUgc2Nob29scywgdGhleSBzaG91bGQgYmUgY2xvc2UgdG8gZWFjaCBvdGhlcilcclxuICBjb25zdCBzY2hvb2xQb3NpdGlvbjpcclxuICAgIHwgeyB3Z3M4NF9sYXRpdHVkZTogbnVtYmVyOyB3Z3M4NF9sb25naXR1ZGU6IG51bWJlciB9XHJcbiAgICB8IHVuZGVmaW5lZCA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAuc2VsZWN0KFwiYWRkcmVzc19wb2ludC53Z3M4NF9sYXRpdHVkZVwiLCBcImFkZHJlc3NfcG9pbnQud2dzODRfbG9uZ2l0dWRlXCIpXHJcbiAgICAuZnJvbShcInNjaG9vbFwiKVxyXG4gICAgLmpvaW4oXCJzY2hvb2xfbG9jYXRpb25cIiwgXCJzY2hvb2wuaXpvXCIsIFwic2Nob29sX2xvY2F0aW9uLnNjaG9vbF9pem9cIilcclxuICAgIC5qb2luKFxyXG4gICAgICBcImFkZHJlc3NfcG9pbnRcIixcclxuICAgICAgXCJzY2hvb2xfbG9jYXRpb24uYWRkcmVzc19wb2ludF9pZFwiLFxyXG4gICAgICBcImFkZHJlc3NfcG9pbnQuaWRcIlxyXG4gICAgKVxyXG4gICAgLndoZXJlSW4oXHJcbiAgICAgIFwic2Nob29sLml6b1wiLFxyXG4gICAgICBkaWZmZXJpbmdTY2hvb2xzLm1hcCgoc2Nob29sKSA9PiBzY2hvb2wuaXpvKVxyXG4gICAgKVxyXG4gICAgLmxpbWl0KDEpXHJcbiAgICAuZmlyc3QoKTtcclxuXHJcbiAgaWYgKHNjaG9vbFBvc2l0aW9uKSB7XHJcbiAgICBpZiAobXVuaWNpcGFsaXRpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGlmIChtdW5pY2lwYWxpdHlDb2RlID09PSAtMSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgYG5vIG11bmljaXBhbGl0eSBieSBuYW1lIG9yIGJ5IGxvY2F0aW9uIGZvdW5kIGZvciAke2ZvdW5kZXIubmFtZX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgIFwibm8gbXVuaWNpcGFsaXR5IG1hdGNoaW5nIHRoZSBleHRyYWN0ZWQgbmFtZSwgdXNpbmcgdGhlIG11bmljaXBhbGl0eSBmcm9tIFJVSUFOIGNvZGVcIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAobXVuaWNpcGFsaXRpZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgIFwidXNpbmcgdGhlIG9ubHkgbXVuaWNpcGFsaXR5IGZvdW5kIG1hdGNoaW5nIHRoZSBleHRyYWN0ZWQgbmFtZVwiXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBtdW5pY2lwYWxpdGllc1swXS5jb2RlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coXCJ1c2luZyB0aGUgY2xvc2VzdCBtdW5pY2lwYWxpdHkgbWF0Y2hpbmcgdGhlIGV4dHJhY3RlZCBuYW1lXCIpO1xyXG4gICAgICByZXR1cm4gZ2V0Q2xvc2VzdENvZGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29kZTogMSxcclxuICAgICAgICAgIGxhdDogc2Nob29sUG9zaXRpb24ud2dzODRfbGF0aXR1ZGUsXHJcbiAgICAgICAgICBsbmc6IHNjaG9vbFBvc2l0aW9uLndnczg0X2xvbmdpdHVkZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG11bmljaXBhbGl0aWVzLm1hcCgobXVuaWNpcGFsaXR5KSA9PiAoe1xyXG4gICAgICAgICAgY29kZTogbXVuaWNpcGFsaXR5LmNvZGUsXHJcbiAgICAgICAgICBsYXQ6IG11bmljaXBhbGl0eS5sYXQsXHJcbiAgICAgICAgICBsbmc6IG11bmljaXBhbGl0eS5sbmcsXHJcbiAgICAgICAgfSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChtdW5pY2lwYWxpdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChtdW5pY2lwYWxpdGllcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICBgdXNpbmcgdGhlIGZpcnN0IG11bmljaXBhbGl0eSBtYXRjaGluZyB0aGUgZXh0cmFjdGVkIG5hbWUgKCR7bXVuaWNpcGFsaXRpZXMubGVuZ3RofSBtYXRjaGVzKSAtIHBvc3NpYmx5IGluY29ycmVjdCFgXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgIFwidXNpbmcgdGhlIG9ubHkgbXVuaWNpcGFsaXR5IGZvdW5kIG1hdGNoaW5nIHRoZSBleHRyYWN0ZWQgbmFtZVwiXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbXVuaWNpcGFsaXRpZXNbMF0uY29kZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgIGBubyBtdW5pY2lwYWxpdHkgYnkgbmFtZSBvciBieSBsb2NhdGlvbiBmb3VuZCBmb3IgJHtmb3VuZGVyLm5hbWV9YFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBnZXRDbG9zZXN0Q29kZSA9IGFzeW5jIChcclxuICBmcm9tOiBQbGFjZVdpdGhQb3NpdGlvbixcclxuICB0b0xpc3Q6IFBsYWNlV2l0aFBvc2l0aW9uW11cclxuKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcclxuICBsZXQgbG93ZXN0RGlzdGFuY2UgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcclxuICBsZXQgY29kZTogbnVtYmVyID0gbnVsbDtcclxuICBmb3IgKGNvbnN0IHBsYWNlIG9mIHRvTGlzdCkge1xyXG4gICAgbGV0IG11bmljaXBhbGl0eURpc3RhbmNlID0gZGlzdGFuY2UoXHJcbiAgICAgIFtwbGFjZS5sYXQsIHBsYWNlLmxuZ10sXHJcbiAgICAgIFtmcm9tLmxhdCwgZnJvbS5sbmddXHJcbiAgICApO1xyXG4gICAgaWYgKG11bmljaXBhbGl0eURpc3RhbmNlIDwgbG93ZXN0RGlzdGFuY2UpIHtcclxuICAgICAgbG93ZXN0RGlzdGFuY2UgPSBtdW5pY2lwYWxpdHlEaXN0YW5jZTtcclxuICAgICAgY29kZSA9IHBsYWNlLmNvZGU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjb2RlO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0Q2l0eUNvZGVCeURpc3RyaWN0Q29kZSA9IGFzeW5jIChcclxuICBkaXN0cmljdENvZGU6IG51bWJlclxyXG4pOiBQcm9taXNlPG51bWJlciB8IG51bGw+ID0+IHtcclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRLbmV4RGIoKVxyXG4gICAgLmZpcnN0KFwiY2l0eS5jb2RlXCIpXHJcbiAgICAuZnJvbShcImNpdHlfZGlzdHJpY3RcIilcclxuICAgIC5qb2luKFwiY2l0eVwiLCBcImNpdHlfZGlzdHJpY3QuY2l0eV9jb2RlXCIsIFwiY2l0eS5jb2RlXCIpXHJcbiAgICAud2hlcmUoXCJjaXR5X2Rpc3RyaWN0LmNvZGVcIiwgZGlzdHJpY3RDb2RlKVxyXG4gICAgLmxpbWl0KDEpO1xyXG4gIHJldHVybiByZXN1bHQ/LmNvZGUgPz8gbnVsbDtcclxufTtcclxuXHJcbmNvbnN0IGZpbmRNdW5pY2lwYWxpdGllc0FuZFBvc2l0aW9uc0J5TmFtZUFuZFR5cGUgPSBhc3luYyAoXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIHR5cGU6IE11bmljaXBhbGl0eVR5cGVcclxuKTogUHJvbWlzZTxNdW5pY2lwYWxpdHlXaXRoUG9zaXRpb25bXT4gPT4ge1xyXG4gIGNvbnN0IGtuZXggPSBnZXRLbmV4RGIoKTtcclxuICByZXR1cm4gKFxyXG4gICAgdHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5XHJcbiAgICAgID8gYXdhaXQga25leFxyXG4gICAgICAgICAgLnNlbGVjdChcclxuICAgICAgICAgICAgXCJjaXR5Lm5hbWVcIixcclxuICAgICAgICAgICAgXCJjaXR5LmNvZGVcIixcclxuICAgICAgICAgICAgXCJhZGRyZXNzX3BvaW50Lndnczg0X2xhdGl0dWRlXCIsXHJcbiAgICAgICAgICAgIFwiYWRkcmVzc19wb2ludC53Z3M4NF9sb25naXR1ZGVcIlxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmZyb20oXCJjaXR5XCIpXHJcbiAgICAgICAgICAuam9pbihcImFkZHJlc3NfcG9pbnRcIiwgXCJjaXR5LmNvZGVcIiwgXCJhZGRyZXNzX3BvaW50LmNpdHlfY29kZVwiKVxyXG4gICAgICAgICAgLndoZXJlKFwiY2l0eS5uYW1lXCIsIG5hbWUpXHJcbiAgICAgICAgICAuZ3JvdXBCeShcImNpdHkuY29kZVwiKVxyXG4gICAgICA6IGF3YWl0IGtuZXhcclxuICAgICAgICAgIC5zZWxlY3QoXHJcbiAgICAgICAgICAgIFwiY2l0eV9kaXN0cmljdC5uYW1lXCIsXHJcbiAgICAgICAgICAgIFwiY2l0eV9kaXN0cmljdC5jb2RlXCIsXHJcbiAgICAgICAgICAgIFwiYWRkcmVzc19wb2ludC53Z3M4NF9sYXRpdHVkZVwiLFxyXG4gICAgICAgICAgICBcImFkZHJlc3NfcG9pbnQud2dzODRfbG9uZ2l0dWRlXCJcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5mcm9tKFwiY2l0eV9kaXN0cmljdFwiKVxyXG4gICAgICAgICAgLmpvaW4oXHJcbiAgICAgICAgICAgIFwiYWRkcmVzc19wb2ludFwiLFxyXG4gICAgICAgICAgICBcImNpdHlfZGlzdHJpY3QuY29kZVwiLFxyXG4gICAgICAgICAgICBcImFkZHJlc3NfcG9pbnQuY2l0eV9kaXN0cmljdF9jb2RlXCJcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC53aGVyZShcImNpdHlfZGlzdHJpY3QubmFtZVwiLCBuYW1lKVxyXG4gICAgICAgICAgLmdyb3VwQnkoXCJjaXR5X2Rpc3RyaWN0LmNvZGVcIilcclxuICApLm1hcCgocm93KSA9PiAoe1xyXG4gICAgY29kZTogcm93LmNvZGUsXHJcbiAgICB0eXBlLFxyXG4gICAgbGF0OiByb3cud2dzODRfbGF0aXR1ZGUsXHJcbiAgICBsbmc6IHJvdy53Z3M4NF9sb25naXR1ZGUsXHJcbiAgfSkpO1xyXG59O1xyXG5cclxuY29uc3QgZXh0cmFjdEZvdW5kZXJOYW1lID0gKGxpbmU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgaWYgKGxpbmVbMF0gPT09IFwiI1wiKSB7XHJcbiAgICByZXR1cm4gbGluZS5zdWJzdHJpbmcoMSkudHJpbSgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gbGluZS50cmltKCk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgZ2V0QmFzZUZvdW5kZXJRdWVyeSA9ICgpID0+IHtcclxuICByZXR1cm4gZ2V0S25leERiKClcclxuICAgIC5zZWxlY3QoXHJcbiAgICAgIFwiZi5pZFwiLFxyXG4gICAgICBcImYubmFtZVwiLFxyXG4gICAgICBcImYuaWNvXCIsXHJcbiAgICAgIFwiZi5mb3VuZGVyX3R5cGVfY29kZVwiLFxyXG4gICAgICBcImYuY2l0eV9jb2RlXCIsXHJcbiAgICAgIFwiZi5jaXR5X2Rpc3RyaWN0X2NvZGVcIlxyXG4gICAgKVxyXG4gICAgLmZyb20oXCJmb3VuZGVyIGFzIGZcIilcclxuICAgIC5sZWZ0Sm9pbihcImNpdHkgYXMgY1wiLCBcImMuY29kZVwiLCBcImYuY2l0eV9jb2RlXCIpXHJcbiAgICAubGVmdEpvaW4oXCJjaXR5X2Rpc3RyaWN0IGFzIGRcIiwgXCJkLmNvZGVcIiwgXCJmLmNpdHlfZGlzdHJpY3RfY29kZVwiKVxyXG4gICAgLm9yZGVyQnkoXCJmLmZvdW5kZXJfdHlwZV9jb2RlXCIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEZvdW5kZXJCeUlkID0gYXN5bmMgKFxyXG4gIGlkOiBudW1iZXJcclxuKTogUHJvbWlzZTx7IGZvdW5kZXI6IEZvdW5kZXI7IGVycm9yczogU21kRXJyb3JbXSB9PiA9PiB7XHJcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QmFzZUZvdW5kZXJRdWVyeSgpLndoZXJlKFwiZi5pZFwiLCBpZCkuZmlyc3QoKTtcclxuICBjb25zdCBmb3VuZGVyID0gYXdhaXQgcmVzdWx0VG9Gb3VuZGVyKHJlc3VsdCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIGZvdW5kZXI6IGZvdW5kZXIgPz8gbnVsbCxcclxuICAgIGVycm9yczogZm91bmRlclxyXG4gICAgICA/IFtdXHJcbiAgICAgIDogW3dob2xlTGluZUVycm9yKGBaxZlpem92YXRlbCBzIGlkICR7aWR9IG5lZXhpc3R1amUuYCwgXCJcIildLFxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZmluZEZvdW5kZXIgPSBhc3luYyAoXHJcbiAgbmFtZVdpdGhIYXNodGFnOiBzdHJpbmdcclxuKTogUHJvbWlzZTx7IGZvdW5kZXI6IEZvdW5kZXI7IGVycm9yczogU21kRXJyb3JbXSB9PiA9PiB7XHJcbiAgY29uc3QgZXJyb3JzOiBTbWRFcnJvcltdID0gW107XHJcblxyXG4gIC8vIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBzZWFyY2ggZm9yIGEgY2l0eSBpbnN0ZWFkIG9mIGEgZm91bmRlclxyXG4gIGlmIChuYW1lV2l0aEhhc2h0YWdbMV0gPT09IFwiI1wiKSB7XHJcbiAgICBjb25zdCBjaXR5TmFtZSA9IG5hbWVXaXRoSGFzaHRhZy5zdWJzdHJpbmcoMikudHJpbSgpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0S25leERiKClcclxuICAgICAgLnNlbGVjdChcImNvZGVcIilcclxuICAgICAgLmZyb20oXCJjaXR5XCIpXHJcbiAgICAgIC53aGVyZShcIm5hbWVcIiwgY2l0eU5hbWUpXHJcbiAgICAgIC5maXJzdCgpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGZvdW5kZXI6IHtcclxuICAgICAgICBuYW1lOiBjaXR5TmFtZSxcclxuICAgICAgICBpY286IFwiMDAwMDAwMDBcIixcclxuICAgICAgICBvcmlnaW5hbFR5cGU6IGNpdHlUeXBlQ29kZSxcclxuICAgICAgICBtdW5pY2lwYWxpdHlUeXBlOiBNdW5pY2lwYWxpdHlUeXBlLkNpdHksXHJcbiAgICAgICAgbXVuaWNpcGFsaXR5Q29kZTogcmVzdWx0LmNvZGUsXHJcbiAgICAgICAgc2Nob29sczogYXdhaXQgZ2V0U2Nob29sc0J5Q2l0eUNvZGUocmVzdWx0LmNvZGUpLFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcnMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbmFtZSA9IGV4dHJhY3RGb3VuZGVyTmFtZShuYW1lV2l0aEhhc2h0YWcpO1xyXG5cclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRCYXNlRm91bmRlclF1ZXJ5KClcclxuICAgIC53aGVyZShcImYubmFtZVwiLCBuYW1lKVxyXG4gICAgLm9yV2hlcmUoXCJjLm5hbWVcIiwgbmFtZSlcclxuICAgIC5vcldoZXJlKFwiZC5uYW1lXCIsIG5hbWUpXHJcbiAgICAuZmlyc3QoKTtcclxuICBpZiAocmVzdWx0KSB7XHJcbiAgICByZXR1cm4geyBmb3VuZGVyOiBhd2FpdCByZXN1bHRUb0ZvdW5kZXIocmVzdWx0KSwgZXJyb3JzIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IGFsbEZvdW5kZXJOYW1lcyA9IGF3YWl0IGdldEFsbEZvdW5kZXJOYW1lcygpO1xyXG4gICAgY29uc3QgbmFtZXNMaXN0ID0gYWxsRm91bmRlck5hbWVzXHJcbiAgICAgIC5tYXAoKHJvdykgPT4gcm93LmZvdW5kZXJOYW1lKVxyXG4gICAgICAuY29uY2F0KGFsbEZvdW5kZXJOYW1lcy5tYXAoKHJvdykgPT4gcm93Lm11bmljaXBhbGl0eU5hbWUpKTtcclxuICAgIGNvbnN0IGJlc3RNYXRjaCA9IGZpbmRDbG9zZXN0U3RyaW5nKG5hbWUsIG5hbWVzTGlzdCk7XHJcbiAgICBjb25zdCBiZXN0TWF0Y2hSb3cgPSBhbGxGb3VuZGVyTmFtZXMuZmluZChcclxuICAgICAgKGZvdW5kZXJzTmFtZXMpID0+XHJcbiAgICAgICAgZm91bmRlcnNOYW1lcy5mb3VuZGVyTmFtZSA9PT0gYmVzdE1hdGNoIHx8XHJcbiAgICAgICAgZm91bmRlcnNOYW1lcy5tdW5pY2lwYWxpdHlOYW1lID09PSBiZXN0TWF0Y2hcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCFiZXN0TWF0Y2hSb3cpIHtcclxuICAgICAgZXJyb3JzLnB1c2goXHJcbiAgICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgICBgTmVuYcWhbGkganNtZSDFvsOhZG7DqSB6xZlpem92YXRlbGUsIG5lanNww63FoSBqc3RlIHphcG9tbsSbbGkgaW5pY2lhbGl6b3ZhdCBkYXRhYsOhemkuYCxcclxuICAgICAgICAgIG5hbWVXaXRoSGFzaHRhZ1xyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmb3VuZGVyOiBudWxsLFxyXG4gICAgICAgIGVycm9ycyxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvcnMucHVzaChcclxuICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgYFrFmWl6b3ZhdGVsICcke25hbWV9JyBuZWV4aXN0dWplLCBteXNsZWxpIGpzdGUgJyR7YmVzdE1hdGNofSc/YCxcclxuICAgICAgICBuYW1lV2l0aEhhc2h0YWdcclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmb3VuZGVyID0gYXdhaXQgZ2V0S25leERiKClcclxuICAgICAgLnNlbGVjdChcclxuICAgICAgICBcImlkXCIsXHJcbiAgICAgICAgXCJuYW1lXCIsXHJcbiAgICAgICAgXCJpY29cIixcclxuICAgICAgICBcImZvdW5kZXJfdHlwZV9jb2RlXCIsXHJcbiAgICAgICAgXCJjaXR5X2NvZGVcIixcclxuICAgICAgICBcImNpdHlfZGlzdHJpY3RfY29kZVwiXHJcbiAgICAgIClcclxuICAgICAgLmZyb20oXCJmb3VuZGVyXCIpXHJcbiAgICAgIC53aGVyZShcImlkXCIsIGJlc3RNYXRjaFJvdy5pZClcclxuICAgICAgLmZpcnN0KCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBmb3VuZGVyOiBhd2FpdCByZXN1bHRUb0ZvdW5kZXIoZm91bmRlciksXHJcbiAgICAgIGVycm9ycyxcclxuICAgIH07XHJcbiAgfVxyXG59O1xyXG5cclxubGV0IGNhY2hlZENpdHlDb2RlOiBudW1iZXIgPSBudWxsO1xyXG5sZXQgY2l0eUNvZGVGb3VuZGVyOiBGb3VuZGVyID0gbnVsbDtcclxuZXhwb3J0IGNvbnN0IGdldEZvdW5kZXJDaXR5Q29kZSA9IGFzeW5jIChmb3VuZGVyOiBGb3VuZGVyKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcclxuICBpZiAoZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0KSB7XHJcbiAgICBpZiAoY2l0eUNvZGVGb3VuZGVyICE9PSBmb3VuZGVyKSB7XHJcbiAgICAgIGNpdHlDb2RlRm91bmRlciA9IGZvdW5kZXI7XHJcbiAgICAgIGNhY2hlZENpdHlDb2RlID0gKFxyXG4gICAgICAgIGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgICAuZnJvbShcImNpdHlfZGlzdHJpY3RcIilcclxuICAgICAgICAgIC53aGVyZShcImNvZGVcIiwgZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlKVxyXG4gICAgICAgICAgLmZpcnN0KClcclxuICAgICAgKS5jaXR5X2NvZGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FjaGVkQ2l0eUNvZGU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBmb3VuZGVyLm11bmljaXBhbGl0eUNvZGU7XHJcbiAgfVxyXG59O1xyXG5cclxuaW50ZXJmYWNlIEZvdW5kZXJOYW1lcyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBmb3VuZGVyTmFtZTogc3RyaW5nO1xyXG4gIG11bmljaXBhbGl0eU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuY29uc3QgcmVzdWx0VG9Gb3VuZGVyID0gYXN5bmMgKHJlc3VsdDogYW55KTogUHJvbWlzZTxGb3VuZGVyPiA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG5hbWU6IHJlc3VsdC5uYW1lLFxyXG4gICAgaWNvOiByZXN1bHQuaWNvLFxyXG4gICAgb3JpZ2luYWxUeXBlOiByZXN1bHQuZm91bmRlcl90eXBlX2NvZGUsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICByZXN1bHQuZm91bmRlcl90eXBlX2NvZGUgPT09IGNpdHlUeXBlQ29kZVxyXG4gICAgICAgID8gTXVuaWNpcGFsaXR5VHlwZS5DaXR5XHJcbiAgICAgICAgOiBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0LFxyXG4gICAgbXVuaWNpcGFsaXR5Q29kZTpcclxuICAgICAgcmVzdWx0LmZvdW5kZXJfdHlwZV9jb2RlID09PSBjaXR5VHlwZUNvZGVcclxuICAgICAgICA/IHJlc3VsdC5jaXR5X2NvZGVcclxuICAgICAgICA6IHJlc3VsdC5jaXR5X2Rpc3RyaWN0X2NvZGUsXHJcbiAgICBzY2hvb2xzOiBhd2FpdCBnZXRTY2hvb2xzQnlDaXR5Q29kZShyZXN1bHQuY2l0eV9jb2RlKSxcclxuICB9O1xyXG59O1xyXG5cclxuLy8gaW4gY2FzZSBvZiBjaXRpZXMsIGxvYWQgYWxsIHNjaG9vbHMgaW4gdGhlIGNpdHksIG5vdCBqdXN0IHRoZSBvbmVzIGNvbm5lY3RlZCB0byB0aGUgZm91bmRlclxyXG5jb25zdCBnZXRTY2hvb2xzQnlDaXR5Q29kZSA9IGFzeW5jIChjaXR5Q29kZTogbnVtYmVyKTogUHJvbWlzZTxTY2hvb2xbXT4gPT4ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAuc2VsZWN0KFwicy5pem9cIiwgXCJzLnJlZGl6b1wiLCBcInMubmFtZVwiLCBcInMuY2FwYWNpdHlcIiwgXCJzbC5hZGRyZXNzX3BvaW50X2lkXCIpXHJcbiAgICAuZnJvbShcInNjaG9vbCBhcyBzXCIpXHJcbiAgICAuam9pbihcInNjaG9vbF9mb3VuZGVyIGFzIHNmXCIsIFwicy5pem9cIiwgXCJzZi5zY2hvb2xfaXpvXCIpXHJcbiAgICAuam9pbihcInNjaG9vbF9sb2NhdGlvbiBhcyBzbFwiLCBcInMuaXpvXCIsIFwic2wuc2Nob29sX2l6b1wiKVxyXG4gICAgLmpvaW4oXCJmb3VuZGVyIGFzIGZcIiwgXCJzZi5mb3VuZGVyX2lkXCIsIFwiZi5pZFwiKVxyXG4gICAgLndoZXJlKFwiZi5jaXR5X2NvZGVcIiwgY2l0eUNvZGUpO1xyXG5cclxuICByZXR1cm4gcmVzdWx0Lm1hcCgocm93KSA9PiAoe1xyXG4gICAgaXpvOiBTdHJpbmcocm93Lml6byksXHJcbiAgICByZWRpem86IFN0cmluZyhyb3cucmVkaXpvKSxcclxuICAgIG5hbWU6IFN0cmluZyhyb3cubmFtZSksXHJcbiAgICBjYXBhY2l0eTogcGFyc2VJbnQocm93LmNhcGFjaXR5KSxcclxuICAgIGxvY2F0aW9uczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgYWRkcmVzc1BvaW50SWQ6IHBhcnNlSW50KHJvdy5hZGRyZXNzX3BvaW50X2lkKSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSkpO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QWxsRm91bmRlck5hbWVzID0gYXN5bmMgKCk6IFByb21pc2U8Rm91bmRlck5hbWVzW10+ID0+IHtcclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRLbmV4RGIoKVxyXG4gICAgLnNlbGVjdChcclxuICAgICAgXCJmLmlkXCIsXHJcbiAgICAgIFwiZi5uYW1lIGFzIGZvdW5kZXJfbmFtZVwiLFxyXG4gICAgICBcImMubmFtZSBhcyBjaXR5X25hbWVcIixcclxuICAgICAgXCJkLm5hbWUgYXMgY2l0eV9kaXN0cmljdF9uYW1lXCJcclxuICAgIClcclxuICAgIC5mcm9tKFwiZm91bmRlciBhcyBmXCIpXHJcbiAgICAubGVmdEpvaW4oXCJjaXR5IGFzIGNcIiwgXCJjLmNvZGVcIiwgXCJmLmNpdHlfY29kZVwiKVxyXG4gICAgLmxlZnRKb2luKFwiY2l0eV9kaXN0cmljdCBhcyBkXCIsIFwiZC5jb2RlXCIsIFwiZi5jaXR5X2Rpc3RyaWN0X2NvZGVcIik7XHJcbiAgcmV0dXJuIHJlc3VsdC5tYXAoKHJvdykgPT4gKHtcclxuICAgIGlkOiBwYXJzZUludChyb3cuaWQpLFxyXG4gICAgZm91bmRlck5hbWU6IFN0cmluZyhyb3cuZm91bmRlcl9uYW1lKSxcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IFN0cmluZyhcclxuICAgICAgcm93LmNpdHlfbmFtZSA/IHJvdy5jaXR5X25hbWUgOiByb3cuY2l0eV9kaXN0cmljdF9uYW1lXHJcbiAgICApLFxyXG4gIH0pKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBmaW5kTXVuaWNpcGFsaXR5UGFydEJ5TmFtZSA9IGFzeW5jIChcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgZm91bmRlcjogRm91bmRlclxyXG4pOiBQcm9taXNlPE11bmljaXBhbGl0eVBhcnRSZXN1bHQ+ID0+IHtcclxuICBjb25zdCBlcnJvcnM6IFNtZEVycm9yW10gPSBbXTtcclxuICBjb25zdCBjaXR5Q29kZSA9IGF3YWl0IGdldEZvdW5kZXJDaXR5Q29kZShmb3VuZGVyKTtcclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRLbmV4RGIoKVxyXG4gICAgLmZpcnN0KFwiY29kZVwiKVxyXG4gICAgLmZyb20oXCJtdW5pY2lwYWxpdHlfcGFydFwiKVxyXG4gICAgLndoZXJlKHsgbmFtZSwgY2l0eV9jb2RlOiBjaXR5Q29kZSB9KTtcclxuXHJcbiAgaWYgKHJlc3VsdCkge1xyXG4gICAgcmV0dXJuIHsgbXVuaWNpcGFsaXR5UGFydENvZGU6IHJlc3VsdC5jb2RlLCBlcnJvcnMgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgYWxsTmFtZXMgPSBhd2FpdCBnZXRBbGxNdW5pY2lwYWxpdHlQYXJ0TmFtZXMoY2l0eUNvZGUpO1xyXG4gICAgY29uc3QgbmFtZXNMaXN0ID0gYWxsTmFtZXMubWFwKChyb3cpID0+IHJvdy5uYW1lKTtcclxuICAgIGNvbnN0IGJlc3RNYXRjaCA9IGZpbmRDbG9zZXN0U3RyaW5nKG5hbWUsIG5hbWVzTGlzdCk7XHJcblxyXG4gICAgZXJyb3JzLnB1c2goe1xyXG4gICAgICBtZXNzYWdlOiBgT2JlYyBhbmkgbcSbc3Rza8OhIMSNw6FzdCAnJHtuYW1lfScgbmVleGlzdHVqZSwgbXlzbGVsaSBqc3RlICcke2Jlc3RNYXRjaH0nP2AsXHJcbiAgICAgIHN0YXJ0T2Zmc2V0OiAwLFxyXG4gICAgICBlbmRPZmZzZXQ6IDAsXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZTogbnVsbCxcclxuICAgICAgZXJyb3JzLFxyXG4gICAgfTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZmluZE11bmljaXBhbGl0eUJ5TmFtZUFuZFR5cGUgPSBhc3luYyAoXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIHR5cGU6IE11bmljaXBhbGl0eVR5cGUsXHJcbiAgZm91bmRlcjogRm91bmRlclxyXG4pOiBQcm9taXNlPERiTXVuaWNpcGFsaXR5UmVzdWx0PiA9PiB7XHJcbiAgY29uc3QgZXJyb3JzOiBTbWRFcnJvcltdID0gW107XHJcblxyXG4gIGNvbnN0IHJlc3VsdCA9XHJcbiAgICB0eXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgPyBhd2FpdCBnZXRLbmV4RGIoKS5zZWxlY3QoXCJjb2RlXCIpLmZyb20oXCJjaXR5XCIpLndoZXJlKFwibmFtZVwiLCBuYW1lKVxyXG4gICAgICA6IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgICAuc2VsZWN0KFwiY29kZVwiKVxyXG4gICAgICAgICAgLmZyb20oXCJjaXR5X2Rpc3RyaWN0XCIpXHJcbiAgICAgICAgICAud2hlcmUoXCJuYW1lXCIsIG5hbWUpXHJcbiAgICAgICAgICAuYW5kV2hlcmUoXCJjaXR5X2NvZGVcIiwgYXdhaXQgZ2V0Rm91bmRlckNpdHlDb2RlKGZvdW5kZXIpKTtcclxuXHJcbiAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc3QgY2l0eUNvZGUgPSBhd2FpdCBnZXRGb3VuZGVyQ2l0eUNvZGUoZm91bmRlcik7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgLnNlbGVjdChcImNpdHlfY29kZVwiLCBcIndnczg0X2xhdGl0dWRlXCIsIFwid2dzODRfbG9uZ2l0dWRlXCIpXHJcbiAgICAgICAgLmZyb20oXCJhZGRyZXNzX3BvaW50XCIpXHJcbiAgICAgICAgLmdyb3VwQnkoXCJjaXR5X2NvZGVcIilcclxuICAgICAgICAud2hlcmVJbihcclxuICAgICAgICAgIFwiY2l0eV9jb2RlXCIsXHJcbiAgICAgICAgICByZXN1bHQubWFwKChyb3cpID0+IHJvdy5jb2RlKVxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbnN0IGZvdW5kZXJQb3NpdGlvbiA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgLmZpcnN0KFwid2dzODRfbGF0aXR1ZGVcIiwgXCJ3Z3M4NF9sb25naXR1ZGVcIilcclxuICAgICAgICAuZnJvbShcImFkZHJlc3NfcG9pbnRcIilcclxuICAgICAgICAuZ3JvdXBCeShcImNpdHlfY29kZVwiKVxyXG4gICAgICAgIC53aGVyZShcImNpdHlfY29kZVwiLCBjaXR5Q29kZSk7XHJcbiAgICAgIGNvbnN0IGNsb3Nlc3RDb2RlID0gYXdhaXQgZ2V0Q2xvc2VzdENvZGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29kZTogY2l0eUNvZGUsXHJcbiAgICAgICAgICBsYXQ6IGZvdW5kZXJQb3NpdGlvbi53Z3M4NF9sYXRpdHVkZSxcclxuICAgICAgICAgIGxuZzogZm91bmRlclBvc2l0aW9uLndnczg0X2xvbmdpdHVkZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBvc2l0aW9ucy5tYXAoKHJvdykgPT4gKHtcclxuICAgICAgICAgIGNvZGU6IHJvdy5jaXR5X2NvZGUsXHJcbiAgICAgICAgICBsYXQ6IHJvdy53Z3M4NF9sYXRpdHVkZSxcclxuICAgICAgICAgIGxuZzogcm93Lndnczg0X2xvbmdpdHVkZSxcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHsgbXVuaWNpcGFsaXR5OiB7IGNvZGU6IGNsb3Nlc3RDb2RlLCB0eXBlIH0sIGVycm9ycyB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgbXVuaWNpcGFsaXR5OiB7IGNvZGU6IHJlc3VsdFswXS5jb2RlLCB0eXBlIH0sIGVycm9ycyB9O1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBhbGxOYW1lcyA9IGF3YWl0IGdldEFsbE11bmljaXBhbGl0eU5hbWVzKHR5cGUpO1xyXG4gICAgY29uc3QgbmFtZXNMaXN0ID0gYWxsTmFtZXMubWFwKChyb3cpID0+IHJvdy5uYW1lKTtcclxuICAgIGNvbnN0IGJlc3RNYXRjaCA9IGZpbmRDbG9zZXN0U3RyaW5nKG5hbWUsIG5hbWVzTGlzdCk7XHJcbiAgICBjb25zdCBiZXN0TWF0Y2hSb3cgPSBhbGxOYW1lcy5maW5kKFxyXG4gICAgICAobXVuaWNpcGFsaXR5KSA9PiBtdW5pY2lwYWxpdHkubmFtZSA9PT0gYmVzdE1hdGNoXHJcbiAgICApO1xyXG5cclxuICAgIGVycm9ycy5wdXNoKHtcclxuICAgICAgbWVzc2FnZTogYE9iZWMgYW5pIG3Em3N0c2vDoSDEjcOhc3QgJyR7bmFtZX0nIG5lZXhpc3R1amUsIG15c2xlbGkganN0ZSAnJHtiZXN0TWF0Y2h9Jz9gLFxyXG4gICAgICBzdGFydE9mZnNldDogMCxcclxuICAgICAgZW5kT2Zmc2V0OiAwLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbXVuaWNpcGFsaXR5OiB7IGNvZGU6IGJlc3RNYXRjaFJvdy5jb2RlLCB0eXBlIH0sXHJcbiAgICAgIGVycm9ycyxcclxuICAgIH07XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgZ2V0QWxsTXVuaWNpcGFsaXR5TmFtZXMgPSBhc3luYyAoXHJcbiAgdHlwZTogTXVuaWNpcGFsaXR5VHlwZVxyXG4pOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBjb2RlOiBudW1iZXIgfVtdPiA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgIC5zZWxlY3QoXCJuYW1lXCIsIFwiY29kZVwiKVxyXG4gICAgICAuZnJvbSh0eXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHkgPyBcImNpdHlcIiA6IFwiY2l0eV9kaXN0cmljdFwiKVxyXG4gICkubWFwKChyb3cpID0+ICh7XHJcbiAgICBuYW1lOiByb3cubmFtZSxcclxuICAgIGNvZGU6IHJvdy5jb2RlLFxyXG4gIH0pKTtcclxufTtcclxuXHJcbmNvbnN0IGdldEFsbE11bmljaXBhbGl0eVBhcnROYW1lcyA9IGFzeW5jIChcclxuICBjaXR5Q29kZTogbnVtYmVyXHJcbik6IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IGNvZGU6IG51bWJlciB9W10+ID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgYXdhaXQgZ2V0S25leERiKClcclxuICAgICAgLnNlbGVjdChcIm5hbWVcIiwgXCJjb2RlXCIpXHJcbiAgICAgIC5mcm9tKFwibXVuaWNpcGFsaXR5X3BhcnRcIilcclxuICAgICAgLndoZXJlKFwiY2l0eV9jb2RlXCIsIGNpdHlDb2RlKVxyXG4gICkubWFwKChyb3cpID0+ICh7XHJcbiAgICBuYW1lOiByb3cubmFtZSxcclxuICAgIGNvZGU6IHJvdy5jb2RlLFxyXG4gIH0pKTtcclxufTtcclxuIl19
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm91bmRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvZm91bmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTXhELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLHdCQUF3QixHQUN6QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUVMLGdCQUFnQixHQUtqQixNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDekIsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxRQUFtQixFQUFtQixFQUFFO0lBQzNFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0lBRXZDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1FBQzlCLElBQ0UsT0FBTyxDQUFDLGdCQUFnQixLQUFLLGdCQUFnQixDQUFDLElBQUk7WUFDbEQsT0FBTyxDQUFDLGdCQUFnQixLQUFLLGdCQUFnQixDQUFDLFFBQVEsRUFDdEQ7WUFDQSxTQUFTO1NBQ1Y7UUFDRCxNQUFNLHlCQUF5QixHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5FLHdGQUF3RjtRQUN4RixJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxNQUFNLE1B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QUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUN2QyxRQUFnQixFQUMyQixFQUFFO0lBQzdDLE9BQU8sQ0FDTCxNQUFNLFNBQVMsRUFBRTtTQUNkLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO1NBQ3RCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztTQUN6QixLQUFLLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUNoQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtLQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpc3RhbmNlIGZyb20gXCJAdHVyZi9kaXN0YW5jZVwiO1xyXG5pbXBvcnQgeyB3aG9sZUxpbmVFcnJvciB9IGZyb20gXCIuLi9zdHJlZXQtbWFya2Rvd24vc21kXCI7XHJcbmltcG9ydCB7XHJcbiAgRGJNdW5pY2lwYWxpdHlSZXN1bHQsXHJcbiAgTXVuaWNpcGFsaXR5UGFydFJlc3VsdCxcclxuICBTbWRFcnJvcixcclxufSBmcm9tIFwiLi4vc3RyZWV0LW1hcmtkb3duL3R5cGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgZXh0cmFjdE11bmljaXBhbGl0eU5hbWUsXHJcbiAgZmluZENsb3Nlc3RTdHJpbmcsXHJcbiAgc2FuaXRpemVNdW5pY2lwYWxpdHlOYW1lLFxyXG59IGZyb20gXCIuLi91dGlscy9oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGdldEtuZXhEYiwgaW5zZXJ0QXV0b2luY3JlbWVudFJvdywgaW5zZXJ0TXVsdGlwbGVSb3dzIH0gZnJvbSBcIi4vZGJcIjtcclxuaW1wb3J0IHtcclxuICBGb3VuZGVyLFxyXG4gIE11bmljaXBhbGl0eVR5cGUsXHJcbiAgTXVuaWNpcGFsaXR5V2l0aFBvc2l0aW9uLFxyXG4gIFBsYWNlV2l0aFBvc2l0aW9uLFxyXG4gIFNjaG9vbCxcclxuICBTY2hvb2xUeXBlLFxyXG59IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5jb25zdCBjaXR5VHlwZUNvZGUgPSAyNjE7XHJcbmNvbnN0IGNpdHlEaXN0cmljdFR5cGVDb2RlID0gMjYzO1xyXG5cclxuZXhwb3J0IGNvbnN0IGluc2VydEZvdW5kZXJzID0gYXN5bmMgKGZvdW5kZXJzOiBGb3VuZGVyW10pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xyXG4gIGxldCBpbnNlcnRlZEZvdW5kZXJzID0gMDtcclxuICBjb25zdCBzY2hvb2xGb3VuZGVyQ29ubmVjdGlvbkRhdGEgPSBbXTtcclxuXHJcbiAgZm9yIChjb25zdCBmb3VuZGVyIG9mIGZvdW5kZXJzKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSAhPT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5ICYmXHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSAhPT0gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnRpbnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXh0cmFjdGVkTXVuaWNpcGFsaXR5TmFtZSA9IGV4dHJhY3RNdW5pY2lwYWxpdHlOYW1lKGZvdW5kZXIpO1xyXG5cclxuICAgIC8vIGNoZWNrIGlmIHRoZSBleHRyYWN0ZWQgbXVuaWNpcGFsaXR5IG5hbWUgaXMgdGhlIHNhbWUgYXMgaW4gYWxsIHRoZSBzY2hvb2xzJyBsb2NhdGlvbnNcclxuICAgIGxldCBkaWZmZXJpbmdTY2hvb2xzID0gW107XHJcbiAgICBsZXQgbXVuaWNpcGFsaXR5Q29kZSA9IC0xO1xyXG5cclxuICAgIGZvciAoY29uc3Qgc2Nob29sIG9mIGZvdW5kZXIuc2Nob29scykge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IGdldENpdHlPZlNjaG9vbChzY2hvb2wuaXpvKVxyXG4gICAgICAgIDogZ2V0RGlzdHJpY3RPZlNjaG9vbChzY2hvb2wuaXpvKSk7XHJcbiAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICBgaXpvOiAke3NjaG9vbC5pem99LCBleHRyYWN0ZWQ6ICR7ZXh0cmFjdGVkTXVuaWNpcGFsaXR5TmFtZX0sIFJVSUFOOiBVTkRFRklORURgXHJcbiAgICAgICAgKTtcclxuICAgICAgICBkaWZmZXJpbmdTY2hvb2xzLnB1c2goc2Nob29sKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCB7IG5hbWUsIGNvZGUgfSA9IHJlc3VsdDtcclxuICAgICAgICBpZiAobmFtZSAhPT0gZXh0cmFjdGVkTXVuaWNpcGFsaXR5TmFtZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIGBpem86ICR7c2Nob29sLml6b30sIGV4dHJhY3RlZDogJHtleHRyYWN0ZWRNdW5pY2lwYWxpdHlOYW1lfSwgUlVJQU46ICR7bmFtZX1gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgZGlmZmVyaW5nU2Nob29scy5wdXNoKHNjaG9vbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHN0b3JlIG11bmljaXBhbGl0eUNvZGUgZXZlbiBpZiB0aGUgbmFtZXMgZG9uJ3QgbWF0Y2gsIHdlIHdpbGwgdXNlIGl0IGxhdGVyXHJcbiAgICAgICAgbXVuaWNpcGFsaXR5Q29kZSA9IHBhcnNlSW50KGNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbXVuaWNpcGFsaXR5Q29kZSA9IGF3YWl0IGZpeEZvdW5kZXJQcm9ibGVtcyhcclxuICAgICAgZm91bmRlcixcclxuICAgICAgbXVuaWNpcGFsaXR5Q29kZSxcclxuICAgICAgZGlmZmVyaW5nU2Nob29scyxcclxuICAgICAgZXh0cmFjdGVkTXVuaWNpcGFsaXR5TmFtZVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjaXR5RGlzdHJpY3RDb2RlID1cclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0XHJcbiAgICAgICAgPyBtdW5pY2lwYWxpdHlDb2RlLnRvU3RyaW5nKClcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBsZXQgY2l0eUNvZGUgPSBudWxsO1xyXG4gICAgaWYgKGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5KSB7XHJcbiAgICAgIGNpdHlDb2RlID0gbXVuaWNpcGFsaXR5Q29kZT8udG9TdHJpbmcoKSA/PyBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2l0eUNvZGUgPSBhd2FpdCBnZXRDaXR5Q29kZUJ5RGlzdHJpY3RDb2RlKG11bmljaXBhbGl0eUNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgZ2V0S25leERiKClcclxuICAgICAgLnNlbGVjdChcIipcIilcclxuICAgICAgLmZyb20oXCJmb3VuZGVyXCIpXHJcbiAgICAgIC53aGVyZSh7XHJcbiAgICAgICAgbmFtZTogc2FuaXRpemVNdW5pY2lwYWxpdHlOYW1lKGZvdW5kZXIubmFtZSksXHJcbiAgICAgICAgaWNvOiBmb3VuZGVyLmljbyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgbGV0IGZvdW5kZXJJZCA9IGV4aXN0aW5nWzBdPy5pZCA/PyBudWxsO1xyXG5cclxuICAgIGlmIChleGlzdGluZy5sZW5ndGggPT09IDApIHtcclxuICAgICAgZm91bmRlcklkID0gYXdhaXQgaW5zZXJ0QXV0b2luY3JlbWVudFJvdyhcclxuICAgICAgICBbXHJcbiAgICAgICAgICBzYW5pdGl6ZU11bmljaXBhbGl0eU5hbWUoZm91bmRlci5uYW1lKSxcclxuICAgICAgICAgIHNhbml0aXplTXVuaWNpcGFsaXR5TmFtZShleHRyYWN0ZWRNdW5pY2lwYWxpdHlOYW1lKSxcclxuICAgICAgICAgIGZvdW5kZXIuaWNvLFxyXG4gICAgICAgICAgU3RyaW5nKGZvdW5kZXIub3JpZ2luYWxUeXBlKSxcclxuICAgICAgICAgIGNpdHlDb2RlLFxyXG4gICAgICAgICAgY2l0eURpc3RyaWN0Q29kZSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIFwiZm91bmRlclwiLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwibmFtZVwiLFxyXG4gICAgICAgICAgXCJzaG9ydF9uYW1lXCIsXHJcbiAgICAgICAgICBcImljb1wiLFxyXG4gICAgICAgICAgXCJmb3VuZGVyX3R5cGVfY29kZVwiLFxyXG4gICAgICAgICAgXCJjaXR5X2NvZGVcIixcclxuICAgICAgICAgIFwiY2l0eV9kaXN0cmljdF9jb2RlXCIsXHJcbiAgICAgICAgXVxyXG4gICAgICApO1xyXG4gICAgICBpbnNlcnRlZEZvdW5kZXJzKys7XHJcbiAgICB9XHJcblxyXG4gICAgZm91bmRlci5zY2hvb2xzLmZvckVhY2goKHNjaG9vbCkgPT4ge1xyXG4gICAgICBzY2hvb2xGb3VuZGVyQ29ubmVjdGlvbkRhdGEucHVzaChbc2Nob29sLml6bywgZm91bmRlcklkXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGluc2VydGVkQ29ubmVjdGlvbnMgPSBhd2FpdCBpbnNlcnRNdWx0aXBsZVJvd3MoXHJcbiAgICBzY2hvb2xGb3VuZGVyQ29ubmVjdGlvbkRhdGEsXHJcbiAgICBcInNjaG9vbF9mb3VuZGVyXCIsXHJcbiAgICBbXCJzY2hvb2xfaXpvXCIsIFwiZm91bmRlcl9pZFwiXSxcclxuICAgIHRydWVcclxuICApO1xyXG5cclxuICByZXR1cm4gaW5zZXJ0ZWRGb3VuZGVycyArIGluc2VydGVkQ29ubmVjdGlvbnM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRDaXR5T2ZTY2hvb2wgPSBhc3luYyAoaXpvOiBzdHJpbmcpOiBQcm9taXNlPGFueT4gPT4ge1xyXG4gIHJldHVybiBhd2FpdCBnZXRLbmV4RGIoKVxyXG4gICAgLnNlbGVjdChcImMubmFtZVwiLCBcImMuY29kZVwiKVxyXG4gICAgLmZyb20oXCJzY2hvb2wgYXMgc1wiKVxyXG4gICAgLmpvaW4oXCJzY2hvb2xfbG9jYXRpb24gYXMgbFwiLCBcInMuaXpvXCIsIFwibC5zY2hvb2xfaXpvXCIpXHJcbiAgICAuam9pbihcImFkZHJlc3NfcG9pbnQgYXMgYVwiLCBcImwuYWRkcmVzc19wb2ludF9pZFwiLCBcImEuaWRcIilcclxuICAgIC5qb2luKFwiY2l0eSBhcyBjXCIsIFwiYS5jaXR5X2NvZGVcIiwgXCJjLmNvZGVcIilcclxuICAgIC53aGVyZShcInMuaXpvXCIsIGl6bylcclxuICAgIC5saW1pdCgxKVxyXG4gICAgLmZpcnN0KCk7XHJcbn07XHJcblxyXG5jb25zdCBnZXREaXN0cmljdE9mU2Nob29sID0gYXN5bmMgKGl6bzogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICByZXR1cm4gYXdhaXQgZ2V0S25leERiKClcclxuICAgIC5zZWxlY3QoXCJkLm5hbWVcIiwgXCJkLmNvZGVcIilcclxuICAgIC5mcm9tKFwic2Nob29sIGFzIHNcIilcclxuICAgIC5qb2luKFwic2Nob29sX2xvY2F0aW9uIGFzIGxcIiwgXCJzLml6b1wiLCBcImwuc2Nob29sX2l6b1wiKVxyXG4gICAgLmpvaW4oXCJhZGRyZXNzX3BvaW50IGFzIGFcIiwgXCJsLmFkZHJlc3NfcG9pbnRfaWRcIiwgXCJhLmlkXCIpXHJcbiAgICAuam9pbihcImNpdHlfZGlzdHJpY3QgYXMgZFwiLCBcImEuY2l0eV9kaXN0cmljdF9jb2RlXCIsIFwiZC5jb2RlXCIpXHJcbiAgICAud2hlcmUoXCJzLml6b1wiLCBpem8pXHJcbiAgICAubGltaXQoMSlcclxuICAgIC5maXJzdCgpO1xyXG59O1xyXG5cclxuY29uc3QgZml4Rm91bmRlclByb2JsZW1zID0gYXN5bmMgKFxyXG4gIGZvdW5kZXI6IEZvdW5kZXIsXHJcbiAgbXVuaWNpcGFsaXR5Q29kZTogbnVtYmVyLFxyXG4gIGRpZmZlcmluZ1NjaG9vbHM6IFNjaG9vbFtdLFxyXG4gIGV4dHJhY3RlZE11bmljaXBhbGl0eU5hbWU6IHN0cmluZ1xyXG4pOiBQcm9taXNlPG51bWJlciB8IG51bGw+ID0+IHtcclxuICBpZiAoXHJcbiAgICBkaWZmZXJpbmdTY2hvb2xzLmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgZGlmZmVyaW5nU2Nob29scy5sZW5ndGggPCBmb3VuZGVyLnNjaG9vbHMubGVuZ3RoXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gbXVuaWNpcGFsaXR5Q29kZTtcclxuICB9XHJcblxyXG4gIC8vIGVpdGhlciB0aGUgc2Nob29sIGRvZXMgbm90IGhhdmUgYSBwb3NpdGlvbiAoaW52YWxpZCBSVUlBTiBvciBtaXNzaW5nIGJ1aWxkaW5nKVxyXG4gIC8vIG9yIHRoZSBzY2hvb2wgaXMgbm90IGluIHRoZSBzYW1lIG11bmljaXBhbGl0eSBhcyB0aGUgZm91bmRlclxyXG5cclxuICAvLyBmaW5kIGFsbCBjaXRpZXMgYW5kIHRoZWlyIHBvc2l0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBtdW5pY2lwYWxpdHlOYW1lXHJcbiAgY29uc3QgbXVuaWNpcGFsaXRpZXMgPSBhd2FpdCBmaW5kTXVuaWNpcGFsaXRpZXNBbmRQb3NpdGlvbnNCeU5hbWVBbmRUeXBlKFxyXG4gICAgZXh0cmFjdGVkTXVuaWNpcGFsaXR5TmFtZSxcclxuICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZVxyXG4gICk7XHJcblxyXG4gIC8vIGdldCBvbmUgc2Nob29sIHBvc2l0aW9uIChpZiB0aGVyZSBhcmUgbW9yZSBzY2hvb2xzLCB0aGV5IHNob3VsZCBiZSBjbG9zZSB0byBlYWNoIG90aGVyKVxyXG4gIGNvbnN0IHNjaG9vbFBvc2l0aW9uOlxyXG4gICAgfCB7IHdnczg0X2xhdGl0dWRlOiBudW1iZXI7IHdnczg0X2xvbmdpdHVkZTogbnVtYmVyIH1cclxuICAgIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0S25leERiKClcclxuICAgIC5zZWxlY3QoXCJhZGRyZXNzX3BvaW50Lndnczg0X2xhdGl0dWRlXCIsIFwiYWRkcmVzc19wb2ludC53Z3M4NF9sb25naXR1ZGVcIilcclxuICAgIC5mcm9tKFwic2Nob29sXCIpXHJcbiAgICAuam9pbihcInNjaG9vbF9sb2NhdGlvblwiLCBcInNjaG9vbC5pem9cIiwgXCJzY2hvb2xfbG9jYXRpb24uc2Nob29sX2l6b1wiKVxyXG4gICAgLmpvaW4oXHJcbiAgICAgIFwiYWRkcmVzc19wb2ludFwiLFxyXG4gICAgICBcInNjaG9vbF9sb2NhdGlvbi5hZGRyZXNzX3BvaW50X2lkXCIsXHJcbiAgICAgIFwiYWRkcmVzc19wb2ludC5pZFwiXHJcbiAgICApXHJcbiAgICAud2hlcmVJbihcclxuICAgICAgXCJzY2hvb2wuaXpvXCIsXHJcbiAgICAgIGRpZmZlcmluZ1NjaG9vbHMubWFwKChzY2hvb2wpID0+IHNjaG9vbC5pem8pXHJcbiAgICApXHJcbiAgICAubGltaXQoMSlcclxuICAgIC5maXJzdCgpO1xyXG5cclxuICBpZiAoc2Nob29sUG9zaXRpb24pIHtcclxuICAgIGlmIChtdW5pY2lwYWxpdGllcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgaWYgKG11bmljaXBhbGl0eUNvZGUgPT09IC0xKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICBgbm8gbXVuaWNpcGFsaXR5IGJ5IG5hbWUgb3IgYnkgbG9jYXRpb24gZm91bmQgZm9yICR7Zm91bmRlci5uYW1lfWBcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgXCJubyBtdW5pY2lwYWxpdHkgbWF0Y2hpbmcgdGhlIGV4dHJhY3RlZCBuYW1lLCB1c2luZyB0aGUgbXVuaWNpcGFsaXR5IGZyb20gUlVJQU4gY29kZVwiXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChtdW5pY2lwYWxpdGllcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgXCJ1c2luZyB0aGUgb25seSBtdW5pY2lwYWxpdHkgZm91bmQgbWF0Y2hpbmcgdGhlIGV4dHJhY3RlZCBuYW1lXCJcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIG11bmljaXBhbGl0aWVzWzBdLmNvZGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInVzaW5nIHRoZSBjbG9zZXN0IG11bmljaXBhbGl0eSBtYXRjaGluZyB0aGUgZXh0cmFjdGVkIG5hbWVcIik7XHJcbiAgICAgIHJldHVybiBnZXRDbG9zZXN0Q29kZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2RlOiAxLFxyXG4gICAgICAgICAgbGF0OiBzY2hvb2xQb3NpdGlvbi53Z3M4NF9sYXRpdHVkZSxcclxuICAgICAgICAgIGxuZzogc2Nob29sUG9zaXRpb24ud2dzODRfbG9uZ2l0dWRlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbXVuaWNpcGFsaXRpZXMubWFwKChtdW5pY2lwYWxpdHkpID0+ICh7XHJcbiAgICAgICAgICBjb2RlOiBtdW5pY2lwYWxpdHkuY29kZSxcclxuICAgICAgICAgIGxhdDogbXVuaWNpcGFsaXR5LmxhdCxcclxuICAgICAgICAgIGxuZzogbXVuaWNpcGFsaXR5LmxuZyxcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKG11bmljaXBhbGl0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKG11bmljaXBhbGl0aWVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgIGB1c2luZyB0aGUgZmlyc3QgbXVuaWNpcGFsaXR5IG1hdGNoaW5nIHRoZSBleHRyYWN0ZWQgbmFtZSAoJHttdW5pY2lwYWxpdGllcy5sZW5ndGh9IG1hdGNoZXMpIC0gcG9zc2libHkgaW5jb3JyZWN0IWBcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgXCJ1c2luZyB0aGUgb25seSBtdW5pY2lwYWxpdHkgZm91bmQgbWF0Y2hpbmcgdGhlIGV4dHJhY3RlZCBuYW1lXCJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBtdW5pY2lwYWxpdGllc1swXS5jb2RlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgYG5vIG11bmljaXBhbGl0eSBieSBuYW1lIG9yIGJ5IGxvY2F0aW9uIGZvdW5kIGZvciAke2ZvdW5kZXIubmFtZX1gXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGdldENsb3Nlc3RDb2RlID0gYXN5bmMgKFxyXG4gIGZyb206IFBsYWNlV2l0aFBvc2l0aW9uLFxyXG4gIHRvTGlzdDogUGxhY2VXaXRoUG9zaXRpb25bXVxyXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xyXG4gIGxldCBsb3dlc3REaXN0YW5jZSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xyXG4gIGxldCBjb2RlOiBudW1iZXIgPSBudWxsO1xyXG4gIGZvciAoY29uc3QgcGxhY2Ugb2YgdG9MaXN0KSB7XHJcbiAgICBsZXQgbXVuaWNpcGFsaXR5RGlzdGFuY2UgPSBkaXN0YW5jZShcclxuICAgICAgW3BsYWNlLmxhdCwgcGxhY2UubG5nXSxcclxuICAgICAgW2Zyb20ubGF0LCBmcm9tLmxuZ11cclxuICAgICk7XHJcbiAgICBpZiAobXVuaWNpcGFsaXR5RGlzdGFuY2UgPCBsb3dlc3REaXN0YW5jZSkge1xyXG4gICAgICBsb3dlc3REaXN0YW5jZSA9IG11bmljaXBhbGl0eURpc3RhbmNlO1xyXG4gICAgICBjb2RlID0gcGxhY2UuY29kZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGNvZGU7XHJcbn07XHJcblxyXG5jb25zdCBnZXRDaXR5Q29kZUJ5RGlzdHJpY3RDb2RlID0gYXN5bmMgKFxyXG4gIGRpc3RyaWN0Q29kZTogbnVtYmVyXHJcbik6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4gPT4ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAuZmlyc3QoXCJjaXR5LmNvZGVcIilcclxuICAgIC5mcm9tKFwiY2l0eV9kaXN0cmljdFwiKVxyXG4gICAgLmpvaW4oXCJjaXR5XCIsIFwiY2l0eV9kaXN0cmljdC5jaXR5X2NvZGVcIiwgXCJjaXR5LmNvZGVcIilcclxuICAgIC53aGVyZShcImNpdHlfZGlzdHJpY3QuY29kZVwiLCBkaXN0cmljdENvZGUpXHJcbiAgICAubGltaXQoMSk7XHJcbiAgcmV0dXJuIHJlc3VsdD8uY29kZSA/PyBudWxsO1xyXG59O1xyXG5cclxuY29uc3QgZmluZE11bmljaXBhbGl0aWVzQW5kUG9zaXRpb25zQnlOYW1lQW5kVHlwZSA9IGFzeW5jIChcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgdHlwZTogTXVuaWNpcGFsaXR5VHlwZVxyXG4pOiBQcm9taXNlPE11bmljaXBhbGl0eVdpdGhQb3NpdGlvbltdPiA9PiB7XHJcbiAgY29uc3Qga25leCA9IGdldEtuZXhEYigpO1xyXG4gIHJldHVybiAoXHJcbiAgICB0eXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgPyBhd2FpdCBrbmV4XHJcbiAgICAgICAgICAuc2VsZWN0KFxyXG4gICAgICAgICAgICBcImNpdHkubmFtZVwiLFxyXG4gICAgICAgICAgICBcImNpdHkuY29kZVwiLFxyXG4gICAgICAgICAgICBcImFkZHJlc3NfcG9pbnQud2dzODRfbGF0aXR1ZGVcIixcclxuICAgICAgICAgICAgXCJhZGRyZXNzX3BvaW50Lndnczg0X2xvbmdpdHVkZVwiXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuZnJvbShcImNpdHlcIilcclxuICAgICAgICAgIC5qb2luKFwiYWRkcmVzc19wb2ludFwiLCBcImNpdHkuY29kZVwiLCBcImFkZHJlc3NfcG9pbnQuY2l0eV9jb2RlXCIpXHJcbiAgICAgICAgICAud2hlcmUoXCJjaXR5Lm5hbWVcIiwgbmFtZSlcclxuICAgICAgICAgIC5ncm91cEJ5KFwiY2l0eS5jb2RlXCIpXHJcbiAgICAgIDogYXdhaXQga25leFxyXG4gICAgICAgICAgLnNlbGVjdChcclxuICAgICAgICAgICAgXCJjaXR5X2Rpc3RyaWN0Lm5hbWVcIixcclxuICAgICAgICAgICAgXCJjaXR5X2Rpc3RyaWN0LmNvZGVcIixcclxuICAgICAgICAgICAgXCJhZGRyZXNzX3BvaW50Lndnczg0X2xhdGl0dWRlXCIsXHJcbiAgICAgICAgICAgIFwiYWRkcmVzc19wb2ludC53Z3M4NF9sb25naXR1ZGVcIlxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmZyb20oXCJjaXR5X2Rpc3RyaWN0XCIpXHJcbiAgICAgICAgICAuam9pbihcclxuICAgICAgICAgICAgXCJhZGRyZXNzX3BvaW50XCIsXHJcbiAgICAgICAgICAgIFwiY2l0eV9kaXN0cmljdC5jb2RlXCIsXHJcbiAgICAgICAgICAgIFwiYWRkcmVzc19wb2ludC5jaXR5X2Rpc3RyaWN0X2NvZGVcIlxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLndoZXJlKFwiY2l0eV9kaXN0cmljdC5uYW1lXCIsIG5hbWUpXHJcbiAgICAgICAgICAuZ3JvdXBCeShcImNpdHlfZGlzdHJpY3QuY29kZVwiKVxyXG4gICkubWFwKChyb3cpID0+ICh7XHJcbiAgICBjb2RlOiByb3cuY29kZSxcclxuICAgIHR5cGUsXHJcbiAgICBsYXQ6IHJvdy53Z3M4NF9sYXRpdHVkZSxcclxuICAgIGxuZzogcm93Lndnczg0X2xvbmdpdHVkZSxcclxuICB9KSk7XHJcbn07XHJcblxyXG5jb25zdCBleHRyYWN0Rm91bmRlck5hbWUgPSAobGluZTogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICBpZiAobGluZVswXSA9PT0gXCIjXCIpIHtcclxuICAgIHJldHVybiBsaW5lLnN1YnN0cmluZygxKS50cmltKCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBsaW5lLnRyaW0oKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBnZXRCYXNlRm91bmRlclF1ZXJ5ID0gKCkgPT4ge1xyXG4gIHJldHVybiBnZXRLbmV4RGIoKVxyXG4gICAgLnNlbGVjdChcclxuICAgICAgXCJmLmlkXCIsXHJcbiAgICAgIFwiZi5uYW1lXCIsXHJcbiAgICAgIFwiZi5pY29cIixcclxuICAgICAgXCJmLmZvdW5kZXJfdHlwZV9jb2RlXCIsXHJcbiAgICAgIFwiZi5jaXR5X2NvZGVcIixcclxuICAgICAgXCJmLmNpdHlfZGlzdHJpY3RfY29kZVwiXHJcbiAgICApXHJcbiAgICAuZnJvbShcImZvdW5kZXIgYXMgZlwiKVxyXG4gICAgLmxlZnRKb2luKFwiY2l0eSBhcyBjXCIsIFwiYy5jb2RlXCIsIFwiZi5jaXR5X2NvZGVcIilcclxuICAgIC5sZWZ0Sm9pbihcImNpdHlfZGlzdHJpY3QgYXMgZFwiLCBcImQuY29kZVwiLCBcImYuY2l0eV9kaXN0cmljdF9jb2RlXCIpXHJcbiAgICAub3JkZXJCeShcImYuZm91bmRlcl90eXBlX2NvZGVcIik7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0Rm91bmRlckJ5SWQgPSBhc3luYyAoXHJcbiAgaWQ6IG51bWJlcixcclxuICBzY2hvb2xUeXBlOiBTY2hvb2xUeXBlXHJcbik6IFByb21pc2U8eyBmb3VuZGVyOiBGb3VuZGVyOyBlcnJvcnM6IFNtZEVycm9yW10gfT4gPT4ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEJhc2VGb3VuZGVyUXVlcnkoKS53aGVyZShcImYuaWRcIiwgaWQpLmZpcnN0KCk7XHJcbiAgY29uc3QgZm91bmRlciA9IGF3YWl0IHJlc3VsdFRvRm91bmRlcihyZXN1bHQsIHNjaG9vbFR5cGUpO1xyXG4gIHJldHVybiB7XHJcbiAgICBmb3VuZGVyOiBmb3VuZGVyID8/IG51bGwsXHJcbiAgICBlcnJvcnM6IGZvdW5kZXJcclxuICAgICAgPyBbXVxyXG4gICAgICA6IFt3aG9sZUxpbmVFcnJvcihgWsWZaXpvdmF0ZWwgcyBpZCAke2lkfSBuZWV4aXN0dWplLmAsIFwiXCIpXSxcclxuICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGZpbmRGb3VuZGVyID0gYXN5bmMgKFxyXG4gIG5hbWVXaXRoSGFzaHRhZzogc3RyaW5nLFxyXG4gIHNjaG9vbFR5cGU6IFNjaG9vbFR5cGVcclxuKTogUHJvbWlzZTx7IGZvdW5kZXI6IEZvdW5kZXI7IGVycm9yczogU21kRXJyb3JbXSB9PiA9PiB7XHJcbiAgY29uc3QgZXJyb3JzOiBTbWRFcnJvcltdID0gW107XHJcblxyXG4gIC8vIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBzZWFyY2ggZm9yIGEgY2l0eSBpbnN0ZWFkIG9mIGEgZm91bmRlclxyXG4gIGlmIChuYW1lV2l0aEhhc2h0YWdbMV0gPT09IFwiI1wiKSB7XHJcbiAgICBjb25zdCBjaXR5TmFtZSA9IG5hbWVXaXRoSGFzaHRhZy5zdWJzdHJpbmcoMikudHJpbSgpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0S25leERiKClcclxuICAgICAgLnNlbGVjdChcImNvZGVcIilcclxuICAgICAgLmZyb20oXCJjaXR5XCIpXHJcbiAgICAgIC53aGVyZShcIm5hbWVcIiwgY2l0eU5hbWUpXHJcbiAgICAgIC5maXJzdCgpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGZvdW5kZXI6IHtcclxuICAgICAgICBuYW1lOiBjaXR5TmFtZSxcclxuICAgICAgICBpY286IFwiMDAwMDAwMDBcIixcclxuICAgICAgICBvcmlnaW5hbFR5cGU6IGNpdHlUeXBlQ29kZSxcclxuICAgICAgICBtdW5pY2lwYWxpdHlUeXBlOiBNdW5pY2lwYWxpdHlUeXBlLkNpdHksXHJcbiAgICAgICAgbXVuaWNpcGFsaXR5Q29kZTogcmVzdWx0LmNvZGUsXHJcbiAgICAgICAgc2Nob29sczogYXdhaXQgZ2V0U2Nob29sc0J5Q2l0eUNvZGUocmVzdWx0LmNvZGUsIHNjaG9vbFR5cGUpLFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcnMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbmFtZSA9IGV4dHJhY3RGb3VuZGVyTmFtZShuYW1lV2l0aEhhc2h0YWcpO1xyXG5cclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRCYXNlRm91bmRlclF1ZXJ5KClcclxuICAgIC53aGVyZShcImYubmFtZVwiLCBuYW1lKVxyXG4gICAgLm9yV2hlcmUoXCJjLm5hbWVcIiwgbmFtZSlcclxuICAgIC5vcldoZXJlKFwiZC5uYW1lXCIsIG5hbWUpXHJcbiAgICAuZmlyc3QoKTtcclxuICBpZiAocmVzdWx0KSB7XHJcbiAgICByZXR1cm4geyBmb3VuZGVyOiBhd2FpdCByZXN1bHRUb0ZvdW5kZXIocmVzdWx0LCBzY2hvb2xUeXBlKSwgZXJyb3JzIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IGFsbEZvdW5kZXJOYW1lcyA9IGF3YWl0IGdldEFsbEZvdW5kZXJOYW1lcygpO1xyXG4gICAgY29uc3QgbmFtZXNMaXN0ID0gYWxsRm91bmRlck5hbWVzXHJcbiAgICAgIC5tYXAoKHJvdykgPT4gcm93LmZvdW5kZXJOYW1lKVxyXG4gICAgICAuY29uY2F0KGFsbEZvdW5kZXJOYW1lcy5tYXAoKHJvdykgPT4gcm93Lm11bmljaXBhbGl0eU5hbWUpKTtcclxuICAgIGNvbnN0IGJlc3RNYXRjaCA9IGZpbmRDbG9zZXN0U3RyaW5nKG5hbWUsIG5hbWVzTGlzdCk7XHJcbiAgICBjb25zdCBiZXN0TWF0Y2hSb3cgPSBhbGxGb3VuZGVyTmFtZXMuZmluZChcclxuICAgICAgKGZvdW5kZXJzTmFtZXMpID0+XHJcbiAgICAgICAgZm91bmRlcnNOYW1lcy5mb3VuZGVyTmFtZSA9PT0gYmVzdE1hdGNoIHx8XHJcbiAgICAgICAgZm91bmRlcnNOYW1lcy5tdW5pY2lwYWxpdHlOYW1lID09PSBiZXN0TWF0Y2hcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCFiZXN0TWF0Y2hSb3cpIHtcclxuICAgICAgZXJyb3JzLnB1c2goXHJcbiAgICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgICBgTmVuYcWhbGkganNtZSDFvsOhZG7DqSB6xZlpem92YXRlbGUsIG5lanNww63FoSBqc3RlIHphcG9tbsSbbGkgaW5pY2lhbGl6b3ZhdCBkYXRhYsOhemkuYCxcclxuICAgICAgICAgIG5hbWVXaXRoSGFzaHRhZ1xyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmb3VuZGVyOiBudWxsLFxyXG4gICAgICAgIGVycm9ycyxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvcnMucHVzaChcclxuICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgYFrFmWl6b3ZhdGVsICcke25hbWV9JyBuZWV4aXN0dWplLCBteXNsZWxpIGpzdGUgJyR7YmVzdE1hdGNofSc/YCxcclxuICAgICAgICBuYW1lV2l0aEhhc2h0YWdcclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmb3VuZGVyID0gYXdhaXQgZ2V0S25leERiKClcclxuICAgICAgLnNlbGVjdChcclxuICAgICAgICBcImlkXCIsXHJcbiAgICAgICAgXCJuYW1lXCIsXHJcbiAgICAgICAgXCJpY29cIixcclxuICAgICAgICBcImZvdW5kZXJfdHlwZV9jb2RlXCIsXHJcbiAgICAgICAgXCJjaXR5X2NvZGVcIixcclxuICAgICAgICBcImNpdHlfZGlzdHJpY3RfY29kZVwiXHJcbiAgICAgIClcclxuICAgICAgLmZyb20oXCJmb3VuZGVyXCIpXHJcbiAgICAgIC53aGVyZShcImlkXCIsIGJlc3RNYXRjaFJvdy5pZClcclxuICAgICAgLmZpcnN0KCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBmb3VuZGVyOiBhd2FpdCByZXN1bHRUb0ZvdW5kZXIoZm91bmRlciwgc2Nob29sVHlwZSksXHJcbiAgICAgIGVycm9ycyxcclxuICAgIH07XHJcbiAgfVxyXG59O1xyXG5cclxubGV0IGNhY2hlZENpdHlDb2RlOiBudW1iZXIgPSBudWxsO1xyXG5sZXQgY2l0eUNvZGVGb3VuZGVyOiBGb3VuZGVyID0gbnVsbDtcclxuZXhwb3J0IGNvbnN0IGdldEZvdW5kZXJDaXR5Q29kZSA9IGFzeW5jIChmb3VuZGVyOiBGb3VuZGVyKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcclxuICBpZiAoZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0KSB7XHJcbiAgICBpZiAoY2l0eUNvZGVGb3VuZGVyICE9PSBmb3VuZGVyKSB7XHJcbiAgICAgIGNpdHlDb2RlRm91bmRlciA9IGZvdW5kZXI7XHJcbiAgICAgIGNhY2hlZENpdHlDb2RlID0gKFxyXG4gICAgICAgIGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgICAuZnJvbShcImNpdHlfZGlzdHJpY3RcIilcclxuICAgICAgICAgIC53aGVyZShcImNvZGVcIiwgZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlKVxyXG4gICAgICAgICAgLmZpcnN0KClcclxuICAgICAgKS5jaXR5X2NvZGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FjaGVkQ2l0eUNvZGU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBmb3VuZGVyLm11bmljaXBhbGl0eUNvZGU7XHJcbiAgfVxyXG59O1xyXG5cclxuaW50ZXJmYWNlIEZvdW5kZXJOYW1lcyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBmb3VuZGVyTmFtZTogc3RyaW5nO1xyXG4gIG11bmljaXBhbGl0eU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuY29uc3QgcmVzdWx0VG9Gb3VuZGVyID0gYXN5bmMgKFxyXG4gIHJlc3VsdDogYW55LFxyXG4gIHNjaG9vbFR5cGU6IFNjaG9vbFR5cGVcclxuKTogUHJvbWlzZTxGb3VuZGVyPiA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG5hbWU6IHJlc3VsdC5uYW1lLFxyXG4gICAgaWNvOiByZXN1bHQuaWNvLFxyXG4gICAgb3JpZ2luYWxUeXBlOiByZXN1bHQuZm91bmRlcl90eXBlX2NvZGUsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICByZXN1bHQuZm91bmRlcl90eXBlX2NvZGUgPT09IGNpdHlUeXBlQ29kZVxyXG4gICAgICAgID8gTXVuaWNpcGFsaXR5VHlwZS5DaXR5XHJcbiAgICAgICAgOiBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0LFxyXG4gICAgbXVuaWNpcGFsaXR5Q29kZTpcclxuICAgICAgcmVzdWx0LmZvdW5kZXJfdHlwZV9jb2RlID09PSBjaXR5VHlwZUNvZGVcclxuICAgICAgICA/IHJlc3VsdC5jaXR5X2NvZGVcclxuICAgICAgICA6IHJlc3VsdC5jaXR5X2Rpc3RyaWN0X2NvZGUsXHJcbiAgICBzY2hvb2xzOiBhd2FpdCBnZXRTY2hvb2xzQnlDaXR5Q29kZShyZXN1bHQuY2l0eV9jb2RlLCBzY2hvb2xUeXBlKSxcclxuICB9O1xyXG59O1xyXG5cclxuLy8gaW4gY2FzZSBvZiBjaXRpZXMsIGxvYWQgYWxsIHNjaG9vbHMgaW4gdGhlIGNpdHksIG5vdCBqdXN0IHRoZSBvbmVzIGNvbm5lY3RlZCB0byB0aGUgZm91bmRlclxyXG5jb25zdCBnZXRTY2hvb2xzQnlDaXR5Q29kZSA9IGFzeW5jIChcclxuICBjaXR5Q29kZTogbnVtYmVyLFxyXG4gIHNjaG9vbFR5cGU6IFNjaG9vbFR5cGVcclxuKTogUHJvbWlzZTxTY2hvb2xbXT4gPT4ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAuc2VsZWN0KFwicy5pem9cIiwgXCJzLnJlZGl6b1wiLCBcInMubmFtZVwiLCBcInMuY2FwYWNpdHlcIiwgXCJzbC5hZGRyZXNzX3BvaW50X2lkXCIpXHJcbiAgICAuZnJvbShcInNjaG9vbCBhcyBzXCIpXHJcbiAgICAuam9pbihcInNjaG9vbF9mb3VuZGVyIGFzIHNmXCIsIFwicy5pem9cIiwgXCJzZi5zY2hvb2xfaXpvXCIpXHJcbiAgICAuam9pbihcInNjaG9vbF9sb2NhdGlvbiBhcyBzbFwiLCBcInMuaXpvXCIsIFwic2wuc2Nob29sX2l6b1wiKVxyXG4gICAgLmpvaW4oXCJmb3VuZGVyIGFzIGZcIiwgXCJzZi5mb3VuZGVyX2lkXCIsIFwiZi5pZFwiKVxyXG4gICAgLndoZXJlKFwiZi5jaXR5X2NvZGVcIiwgY2l0eUNvZGUpXHJcbiAgICAud2hlcmUoXCJzLnR5cGVcIiwgc2Nob29sVHlwZSk7XHJcblxyXG4gIHJldHVybiByZXN1bHQubWFwKChyb3cpID0+ICh7XHJcbiAgICBpem86IFN0cmluZyhyb3cuaXpvKSxcclxuICAgIHJlZGl6bzogU3RyaW5nKHJvdy5yZWRpem8pLFxyXG4gICAgbmFtZTogU3RyaW5nKHJvdy5uYW1lKSxcclxuICAgIGNhcGFjaXR5OiBwYXJzZUludChyb3cuY2FwYWNpdHkpLFxyXG4gICAgbG9jYXRpb25zOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBhZGRyZXNzUG9pbnRJZDogcGFyc2VJbnQocm93LmFkZHJlc3NfcG9pbnRfaWQpLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICAgIHR5cGU6IHNjaG9vbFR5cGUsXHJcbiAgfSkpO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QWxsRm91bmRlck5hbWVzID0gYXN5bmMgKCk6IFByb21pc2U8Rm91bmRlck5hbWVzW10+ID0+IHtcclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRLbmV4RGIoKVxyXG4gICAgLnNlbGVjdChcclxuICAgICAgXCJmLmlkXCIsXHJcbiAgICAgIFwiZi5uYW1lIGFzIGZvdW5kZXJfbmFtZVwiLFxyXG4gICAgICBcImMubmFtZSBhcyBjaXR5X25hbWVcIixcclxuICAgICAgXCJkLm5hbWUgYXMgY2l0eV9kaXN0cmljdF9uYW1lXCJcclxuICAgIClcclxuICAgIC5mcm9tKFwiZm91bmRlciBhcyBmXCIpXHJcbiAgICAubGVmdEpvaW4oXCJjaXR5IGFzIGNcIiwgXCJjLmNvZGVcIiwgXCJmLmNpdHlfY29kZVwiKVxyXG4gICAgLmxlZnRKb2luKFwiY2l0eV9kaXN0cmljdCBhcyBkXCIsIFwiZC5jb2RlXCIsIFwiZi5jaXR5X2Rpc3RyaWN0X2NvZGVcIik7XHJcbiAgcmV0dXJuIHJlc3VsdC5tYXAoKHJvdykgPT4gKHtcclxuICAgIGlkOiBwYXJzZUludChyb3cuaWQpLFxyXG4gICAgZm91bmRlck5hbWU6IFN0cmluZyhyb3cuZm91bmRlcl9uYW1lKSxcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IFN0cmluZyhcclxuICAgICAgcm93LmNpdHlfbmFtZSA/IHJvdy5jaXR5X25hbWUgOiByb3cuY2l0eV9kaXN0cmljdF9uYW1lXHJcbiAgICApLFxyXG4gIH0pKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBmaW5kTXVuaWNpcGFsaXR5UGFydEJ5TmFtZSA9IGFzeW5jIChcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgZm91bmRlcjogRm91bmRlclxyXG4pOiBQcm9taXNlPE11bmljaXBhbGl0eVBhcnRSZXN1bHQ+ID0+IHtcclxuICBjb25zdCBlcnJvcnM6IFNtZEVycm9yW10gPSBbXTtcclxuICBjb25zdCBjaXR5Q29kZSA9IGF3YWl0IGdldEZvdW5kZXJDaXR5Q29kZShmb3VuZGVyKTtcclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRLbmV4RGIoKVxyXG4gICAgLmZpcnN0KFwiY29kZVwiKVxyXG4gICAgLmZyb20oXCJtdW5pY2lwYWxpdHlfcGFydFwiKVxyXG4gICAgLndoZXJlKHsgbmFtZSwgY2l0eV9jb2RlOiBjaXR5Q29kZSB9KTtcclxuXHJcbiAgaWYgKHJlc3VsdCkge1xyXG4gICAgcmV0dXJuIHsgbXVuaWNpcGFsaXR5UGFydENvZGU6IHJlc3VsdC5jb2RlLCBlcnJvcnMgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgYWxsTmFtZXMgPSBhd2FpdCBnZXRBbGxNdW5pY2lwYWxpdHlQYXJ0TmFtZXMoY2l0eUNvZGUpO1xyXG4gICAgY29uc3QgbmFtZXNMaXN0ID0gYWxsTmFtZXMubWFwKChyb3cpID0+IHJvdy5uYW1lKTtcclxuICAgIGNvbnN0IGJlc3RNYXRjaCA9IGZpbmRDbG9zZXN0U3RyaW5nKG5hbWUsIG5hbWVzTGlzdCk7XHJcblxyXG4gICAgZXJyb3JzLnB1c2goe1xyXG4gICAgICBtZXNzYWdlOiBgT2JlYyBhbmkgbcSbc3Rza8OhIMSNw6FzdCAnJHtuYW1lfScgbmVleGlzdHVqZSwgbXlzbGVsaSBqc3RlICcke2Jlc3RNYXRjaH0nP2AsXHJcbiAgICAgIHN0YXJ0T2Zmc2V0OiAwLFxyXG4gICAgICBlbmRPZmZzZXQ6IDAsXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZTogbnVsbCxcclxuICAgICAgZXJyb3JzLFxyXG4gICAgfTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZmluZE11bmljaXBhbGl0eUJ5TmFtZUFuZFR5cGUgPSBhc3luYyAoXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIHR5cGU6IE11bmljaXBhbGl0eVR5cGUsXHJcbiAgZm91bmRlcjogRm91bmRlclxyXG4pOiBQcm9taXNlPERiTXVuaWNpcGFsaXR5UmVzdWx0PiA9PiB7XHJcbiAgY29uc3QgZXJyb3JzOiBTbWRFcnJvcltdID0gW107XHJcblxyXG4gIGNvbnN0IHJlc3VsdCA9XHJcbiAgICB0eXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgPyBhd2FpdCBnZXRLbmV4RGIoKS5zZWxlY3QoXCJjb2RlXCIpLmZyb20oXCJjaXR5XCIpLndoZXJlKFwibmFtZVwiLCBuYW1lKVxyXG4gICAgICA6IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgICAuc2VsZWN0KFwiY29kZVwiKVxyXG4gICAgICAgICAgLmZyb20oXCJjaXR5X2Rpc3RyaWN0XCIpXHJcbiAgICAgICAgICAud2hlcmUoXCJuYW1lXCIsIG5hbWUpXHJcbiAgICAgICAgICAuYW5kV2hlcmUoXCJjaXR5X2NvZGVcIiwgYXdhaXQgZ2V0Rm91bmRlckNpdHlDb2RlKGZvdW5kZXIpKTtcclxuXHJcbiAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc3QgY2l0eUNvZGUgPSBhd2FpdCBnZXRGb3VuZGVyQ2l0eUNvZGUoZm91bmRlcik7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgLnNlbGVjdChcImNpdHlfY29kZVwiLCBcIndnczg0X2xhdGl0dWRlXCIsIFwid2dzODRfbG9uZ2l0dWRlXCIpXHJcbiAgICAgICAgLmZyb20oXCJhZGRyZXNzX3BvaW50XCIpXHJcbiAgICAgICAgLmdyb3VwQnkoXCJjaXR5X2NvZGVcIilcclxuICAgICAgICAud2hlcmVJbihcclxuICAgICAgICAgIFwiY2l0eV9jb2RlXCIsXHJcbiAgICAgICAgICByZXN1bHQubWFwKChyb3cpID0+IHJvdy5jb2RlKVxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbnN0IGZvdW5kZXJQb3NpdGlvbiA9IGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgICAgLmZpcnN0KFwid2dzODRfbGF0aXR1ZGVcIiwgXCJ3Z3M4NF9sb25naXR1ZGVcIilcclxuICAgICAgICAuZnJvbShcImFkZHJlc3NfcG9pbnRcIilcclxuICAgICAgICAuZ3JvdXBCeShcImNpdHlfY29kZVwiKVxyXG4gICAgICAgIC53aGVyZShcImNpdHlfY29kZVwiLCBjaXR5Q29kZSk7XHJcbiAgICAgIGNvbnN0IGNsb3Nlc3RDb2RlID0gYXdhaXQgZ2V0Q2xvc2VzdENvZGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29kZTogY2l0eUNvZGUsXHJcbiAgICAgICAgICBsYXQ6IGZvdW5kZXJQb3NpdGlvbi53Z3M4NF9sYXRpdHVkZSxcclxuICAgICAgICAgIGxuZzogZm91bmRlclBvc2l0aW9uLndnczg0X2xvbmdpdHVkZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBvc2l0aW9ucy5tYXAoKHJvdykgPT4gKHtcclxuICAgICAgICAgIGNvZGU6IHJvdy5jaXR5X2NvZGUsXHJcbiAgICAgICAgICBsYXQ6IHJvdy53Z3M4NF9sYXRpdHVkZSxcclxuICAgICAgICAgIGxuZzogcm93Lndnczg0X2xvbmdpdHVkZSxcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHsgbXVuaWNpcGFsaXR5OiB7IGNvZGU6IGNsb3Nlc3RDb2RlLCB0eXBlIH0sIGVycm9ycyB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHsgbXVuaWNpcGFsaXR5OiB7IGNvZGU6IHJlc3VsdFswXS5jb2RlLCB0eXBlIH0sIGVycm9ycyB9O1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBhbGxOYW1lcyA9IGF3YWl0IGdldEFsbE11bmljaXBhbGl0eU5hbWVzKHR5cGUpO1xyXG4gICAgY29uc3QgbmFtZXNMaXN0ID0gYWxsTmFtZXMubWFwKChyb3cpID0+IHJvdy5uYW1lKTtcclxuICAgIGNvbnN0IGJlc3RNYXRjaCA9IGZpbmRDbG9zZXN0U3RyaW5nKG5hbWUsIG5hbWVzTGlzdCk7XHJcbiAgICBjb25zdCBiZXN0TWF0Y2hSb3cgPSBhbGxOYW1lcy5maW5kKFxyXG4gICAgICAobXVuaWNpcGFsaXR5KSA9PiBtdW5pY2lwYWxpdHkubmFtZSA9PT0gYmVzdE1hdGNoXHJcbiAgICApO1xyXG5cclxuICAgIGVycm9ycy5wdXNoKHtcclxuICAgICAgbWVzc2FnZTogYE9iZWMgYW5pIG3Em3N0c2vDoSDEjcOhc3QgJyR7bmFtZX0nIG5lZXhpc3R1amUsIG15c2xlbGkganN0ZSAnJHtiZXN0TWF0Y2h9Jz9gLFxyXG4gICAgICBzdGFydE9mZnNldDogMCxcclxuICAgICAgZW5kT2Zmc2V0OiAwLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbXVuaWNpcGFsaXR5OiB7IGNvZGU6IGJlc3RNYXRjaFJvdy5jb2RlLCB0eXBlIH0sXHJcbiAgICAgIGVycm9ycyxcclxuICAgIH07XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgZ2V0QWxsTXVuaWNpcGFsaXR5TmFtZXMgPSBhc3luYyAoXHJcbiAgdHlwZTogTXVuaWNpcGFsaXR5VHlwZVxyXG4pOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBjb2RlOiBudW1iZXIgfVtdPiA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGF3YWl0IGdldEtuZXhEYigpXHJcbiAgICAgIC5zZWxlY3QoXCJuYW1lXCIsIFwiY29kZVwiKVxyXG4gICAgICAuZnJvbSh0eXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHkgPyBcImNpdHlcIiA6IFwiY2l0eV9kaXN0cmljdFwiKVxyXG4gICkubWFwKChyb3cpID0+ICh7XHJcbiAgICBuYW1lOiByb3cubmFtZSxcclxuICAgIGNvZGU6IHJvdy5jb2RlLFxyXG4gIH0pKTtcclxufTtcclxuXHJcbmNvbnN0IGdldEFsbE11bmljaXBhbGl0eVBhcnROYW1lcyA9IGFzeW5jIChcclxuICBjaXR5Q29kZTogbnVtYmVyXHJcbik6IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IGNvZGU6IG51bWJlciB9W10+ID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgYXdhaXQgZ2V0S25leERiKClcclxuICAgICAgLnNlbGVjdChcIm5hbWVcIiwgXCJjb2RlXCIpXHJcbiAgICAgIC5mcm9tKFwibXVuaWNpcGFsaXR5X3BhcnRcIilcclxuICAgICAgLndoZXJlKFwiY2l0eV9jb2RlXCIsIGNpdHlDb2RlKVxyXG4gICkubWFwKChyb3cpID0+ICh7XHJcbiAgICBuYW1lOiByb3cubmFtZSxcclxuICAgIGNvZGU6IHJvdy5jb2RlLFxyXG4gIH0pKTtcclxufTtcclxuIl19
|
package/dist/db/types.d.ts
CHANGED
package/dist/db/types.js
CHANGED
|
@@ -23,4 +23,4 @@ export var SyncPart;
|
|
|
23
23
|
SyncPart["Streets"] = "streets";
|
|
24
24
|
SyncPart["Cities"] = "cities";
|
|
25
25
|
})(SyncPart || (SyncPart = {}));
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwyREFBZ0IsQ0FBQTtJQUNoQix1REFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQjtBQW9CRCxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQzFCLHVEQUFJLENBQUE7SUFDSiwrREFBUSxDQUFBO0lBQ1IseURBQUssQ0FBQTtBQUNQLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBb0JELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBZ0IsRUFBZ0IsRUFBRTtJQUN0RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7S0FDL0IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVFGLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsNENBQWdDLENBQUE7SUFDaEMsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIFBvbHlnb24sIE11bHRpUG9seWdvbiB9IGZyb20gXCJAdHVyZi9oZWxwZXJzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjaG9vbExvY2F0aW9uIHtcclxuICBpZD86IG51bWJlcjtcclxuICBzY2hvb2xJem8/
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwyREFBZ0IsQ0FBQTtJQUNoQix1REFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQjtBQW9CRCxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQzFCLHVEQUFJLENBQUE7SUFDSiwrREFBUSxDQUFBO0lBQ1IseURBQUssQ0FBQTtBQUNQLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBb0JELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBZ0IsRUFBZ0IsRUFBRTtJQUN0RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7S0FDL0IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVFGLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsNENBQWdDLENBQUE7SUFDaEMsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIFBvbHlnb24sIE11bHRpUG9seWdvbiB9IGZyb20gXCJAdHVyZi9oZWxwZXJzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjaG9vbExvY2F0aW9uIHtcclxuICBpZD86IG51bWJlcjtcclxuICBzY2hvb2xJem8/OiBudW1iZXI7XHJcbiAgYWRkcmVzc1BvaW50SWQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU2Nob29sVHlwZSB7XHJcbiAgS2luZGVyZ2FydGVuID0gMCxcclxuICBFbGVtZW50YXJ5ID0gMSxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTY2hvb2wge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpem86IHN0cmluZztcclxuICByZWRpem86IHN0cmluZztcclxuICBjYXBhY2l0eTogbnVtYmVyO1xyXG4gIHR5cGU6IFNjaG9vbFR5cGU7XHJcbiAgbG9jYXRpb25zOiBTY2hvb2xMb2NhdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvdW5kZXIge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpY286IHN0cmluZztcclxuICBvcmlnaW5hbFR5cGU/OiBudW1iZXI7XHJcbiAgbXVuaWNpcGFsaXR5VHlwZTogTXVuaWNpcGFsaXR5VHlwZTtcclxuICBtdW5pY2lwYWxpdHlDb2RlPzogbnVtYmVyO1xyXG4gIHNjaG9vbHM6IFNjaG9vbFtdO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBNdW5pY2lwYWxpdHlUeXBlIHtcclxuICBDaXR5LFxyXG4gIERpc3RyaWN0LFxyXG4gIE90aGVyLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcclxuICBsYXQ6IG51bWJlcjtcclxuICBsbmc6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdW5pY2lwYWxpdHkge1xyXG4gIHR5cGU6IE11bmljaXBhbGl0eVR5cGU7XHJcbiAgY29kZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBNdW5pY2lwYWxpdHlXaXRoUG9zaXRpb24gPSBNdW5pY2lwYWxpdHkgJiBQb3NpdGlvbjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VXaXRoUG9zaXRpb24ge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBsYXQ6IG51bWJlcjtcclxuICBsbmc6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGZvdW5kZXJUb011bmljaXBhbGl0eSA9IChmb3VuZGVyOiBGb3VuZGVyKTogTXVuaWNpcGFsaXR5ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgdHlwZTogZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlLFxyXG4gICAgY29kZTogZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERiZlN0cmVldCB7XHJcbiAgS09EOiBzdHJpbmc7XHJcbiAgTkFaRVY6IHN0cmluZztcclxuICBPQkVDX0tPRDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTeW5jUGFydCB7XHJcbiAgQWRkcmVzc1BvaW50cyA9IFwiYWRkcmVzcy1wb2ludHNcIixcclxuICBTY2hvb2xzID0gXCJzY2hvb2xzXCIsXHJcbiAgUmVnaW9ucyA9IFwicmVnaW9uc1wiLFxyXG4gIFN0cmVldHMgPSBcInN0cmVldHNcIixcclxuICBDaXRpZXMgPSBcImNpdGllc1wiLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQb2x5Z29uc0J5Q29kZXMgPSBSZWNvcmQ8XHJcbiAgbnVtYmVyLFxyXG4gIEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+XHJcbj47XHJcbiJdfQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { municipalitiesToPolygons } from "./street-markdown/polygons";
|
|
|
7
7
|
import { OpenDataSyncOptionsPartial } from "./utils/helpers";
|
|
8
8
|
export * from "./street-markdown/smd";
|
|
9
9
|
export * from "./street-markdown/types";
|
|
10
|
+
export { type SchoolType } from "./db/types";
|
|
10
11
|
/**
|
|
11
12
|
* Download and import all open data to SQLite DB. The DB file will be located
|
|
12
13
|
* in the `dataDir` folder.
|
package/dist/index.js
CHANGED
|
@@ -31,4 +31,4 @@ export async function downloadAndImportEverything(options = {}, syncStreets = tr
|
|
|
31
31
|
export { clearDb, downloadAndImportAddressPoints, downloadAndImportRegions, downloadAndImportSchools,
|
|
32
32
|
// downloadAndImportStreets,
|
|
33
33
|
importCities, municipalitiesToPolygons, initDb, };
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLHVFQUF1RTtBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd0RSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFHeEM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFVBQXNDLEVBQUUsRUFDeEMsY0FBdUIsSUFBSTtJQUUzQixNQUFNLE1BQU0sRUFBRSxDQUFDO0lBQ2YsTUFBTSw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxNQUFNLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsSUFBSSxXQUFXLEVBQUU7UUFDZiwyQ0FBMkM7S0FDNUM7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUNMLE9BQU8sRUFDUCw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLHdCQUF3QjtBQUN4Qiw0QkFBNEI7QUFDNUIsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixNQUFNLEdBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsZWFyRGIsIGluaXREYiB9IGZyb20gXCIuL2RiL2RiXCI7XHJcbmltcG9ydCB7IGRvd25sb2FkQW5kSW1wb3J0QWRkcmVzc1BvaW50cyB9IGZyb20gXCIuL29wZW4tZGF0YS1zeW5jL2FkZHJlc3MtcG9pbnRzXCI7XHJcbmltcG9ydCB7IGltcG9ydENpdGllcyB9IGZyb20gXCIuL29wZW4tZGF0YS1zeW5jL2NpdGllc1wiO1xyXG5pbXBvcnQgeyBkb3dubG9hZEFuZEltcG9ydFJlZ2lvbnMgfSBmcm9tIFwiLi9vcGVuLWRhdGEtc3luYy9yZWdpb25zXCI7XHJcbmltcG9ydCB7IGRvd25sb2FkQW5kSW1wb3J0U2Nob29scyB9IGZyb20gXCIuL29wZW4tZGF0YS1zeW5jL3NjaG9vbHNcIjtcclxuLy8gaW1wb3J0IHsgZG93bmxvYWRBbmRJbXBvcnRTdHJlZXRzIH0gZnJvbSBcIi4vb3Blbi1kYXRhLXN5bmMvc3RyZWV0c1wiO1xyXG5pbXBvcnQgeyBtdW5pY2lwYWxpdGllc1RvUG9seWdvbnMgfSBmcm9tIFwiLi9zdHJlZXQtbWFya2Rvd24vcG9seWdvbnNcIjtcclxuaW1wb3J0IHsgT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwgfSBmcm9tIFwiLi91dGlscy9oZWxwZXJzXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlZXQtbWFya2Rvd24vc21kXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVldC1tYXJrZG93bi90eXBlc1wiO1xyXG5leHBvcnQgeyB0eXBlIFNjaG9vbFR5cGUgfSBmcm9tIFwiLi9kYi90eXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIERvd25sb2FkIGFuZCBpbXBvcnQgYWxsIG9wZW4gZGF0YSB0byBTUUxpdGUgREIuIFRoZSBEQiBmaWxlIHdpbGwgYmUgbG9jYXRlZFxyXG4gKiBpbiB0aGUgYGRhdGFEaXJgIGZvbGRlci5cclxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHN5bmNcclxuICogQHBhcmFtIHN5bmNTdHJlZXRzIFN0cmVldHMgc3luYyB0YWtlcyBhcm91bmQgMSBob3VyLCBzbyBpdCBtaWdodCBiZSBza2lwcGVkLlxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IGRvd25sb2FkQW5kSW1wb3J0RXZlcnl0aGluZyB9IGZyb20gXCJ0ZXh0LXRvLW1hcFwiO1xyXG4gKlxyXG4gKiBhd2FpdCBkb3dubG9hZEFuZEltcG9ydEV2ZXJ5dGhpbmcoeyB0bXBEaXI6IFwiLi90bXBcIiwgZGF0YURpcjogXCIuL2RhdGFcIiB9KTtcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBbmRJbXBvcnRFdmVyeXRoaW5nKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsID0ge30sXHJcbiAgc3luY1N0cmVldHM6IGJvb2xlYW4gPSB0cnVlXHJcbikge1xyXG4gIGF3YWl0IGluaXREYigpO1xyXG4gIGF3YWl0IGRvd25sb2FkQW5kSW1wb3J0QWRkcmVzc1BvaW50cyhvcHRpb25zKTtcclxuICBhd2FpdCBkb3dubG9hZEFuZEltcG9ydFNjaG9vbHMob3B0aW9ucyk7XHJcbiAgYXdhaXQgZG93bmxvYWRBbmRJbXBvcnRSZWdpb25zKG9wdGlvbnMpO1xyXG4gIGF3YWl0IGltcG9ydENpdGllcyhvcHRpb25zKTtcclxuICBpZiAoc3luY1N0cmVldHMpIHtcclxuICAgIC8vIGF3YWl0IGRvd25sb2FkQW5kSW1wb3J0U3RyZWV0cyhvcHRpb25zKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7XHJcbiAgY2xlYXJEYixcclxuICBkb3dubG9hZEFuZEltcG9ydEFkZHJlc3NQb2ludHMsXHJcbiAgZG93bmxvYWRBbmRJbXBvcnRSZWdpb25zLFxyXG4gIGRvd25sb2FkQW5kSW1wb3J0U2Nob29scyxcclxuICAvLyBkb3dubG9hZEFuZEltcG9ydFN0cmVldHMsXHJcbiAgaW1wb3J0Q2l0aWVzLFxyXG4gIG11bmljaXBhbGl0aWVzVG9Qb2x5Z29ucyxcclxuICBpbml0RGIsXHJcbn07XHJcbiJdfQ==
|
|
@@ -37,15 +37,6 @@ var XMLState;
|
|
|
37
37
|
})(XMLState || (XMLState = {}));
|
|
38
38
|
const SCHOOL_TYPE_KINDERGARTEN = "A00";
|
|
39
39
|
const SCHOOL_TYPE_ELEMENTARY = "B00";
|
|
40
|
-
const createNewSchool = () => {
|
|
41
|
-
return {
|
|
42
|
-
name: "",
|
|
43
|
-
redizo: "",
|
|
44
|
-
izo: "",
|
|
45
|
-
capacity: 0,
|
|
46
|
-
locations: [],
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
40
|
const getCorrectFounderType = (founderType) => {
|
|
50
41
|
return founderType === "" ? "101" : founderType;
|
|
51
42
|
};
|
|
@@ -317,4 +308,4 @@ export const deleteSchoolsXmlFile = (options = {}) => {
|
|
|
317
308
|
rmSync(getXmlFilePath(runOptions));
|
|
318
309
|
}
|
|
319
310
|
};
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuLWRhdGEtc3luYy9zY2hvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdFLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sR0FBWSxNQUFNLEtBQUssQ0FBQztBQUUvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUVMLGdCQUFnQixFQUdoQixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFHTCxjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxPQUE0QixFQUFpQixFQUFFO0lBQ3hFLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1FBQ3ZDLE9BQU87S0FDUjtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNoRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLG9EQUFvRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQ3RFLENBQUM7S0FD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UUFDOUIsTUFBTSxjQUFjLENBQ2xCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsNEJBQTRCLENBQzdCLENBQUM7UUFDRixvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQ2xDLFVBQXNDLEVBQUUsRUFDeEMsRUFBRTtJQUNGLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUzQyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtRQUMxQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDcEM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBjcmVhdGVXcml0ZVN0cmVhbSwgZXhpc3RzU3luYywgcm1TeW5jIH0gZnJvbSBcImZzXCI7XHJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xyXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHNheCwgeyBUYWcgfSBmcm9tIFwic2F4XCI7XHJcblxyXG5pbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gXCJzdHJlYW0vcHJvbWlzZXNcIjtcclxuaW1wb3J0IHsgaW5zZXJ0Rm91bmRlcnMgfSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgaW5zZXJ0U2Nob29scyB9IGZyb20gXCIuLi9kYi9zY2hvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgRm91bmRlcixcclxuICBNdW5pY2lwYWxpdHlUeXBlLFxyXG4gIFNjaG9vbCxcclxuICBTY2hvb2xMb2NhdGlvbixcclxuICBTY2hvb2xUeXBlLFxyXG4gIFN5bmNQYXJ0LFxyXG59IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIE9wZW5EYXRhU3luY09wdGlvbnMsXHJcbiAgT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwsXHJcbiAgcHJlcGFyZU9wdGlvbnMsXHJcbn0gZnJvbSBcIi4uL3V0aWxzL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgcnVuU3luY1BhcnQgfSBmcm9tIFwiLi9jb21tb25cIjtcclxuXHJcbmNvbnN0IGRvd25sb2FkWG1sID0gYXN5bmMgKG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICBpZiAoZXhpc3RzU3luYyhnZXRYbWxGaWxlUGF0aChvcHRpb25zKSkpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnNvbGUubG9nKFwiRG93bmxvYWRpbmcgYSBsYXJnZSBYTUwgZmlsZSB3aXRoIHNjaG9vbCBkYXRhLi4uXCIpO1xyXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gob3B0aW9ucy5zY2hvb2xzWG1sVXJsKTtcclxuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgYFRoZSBYTUwgZmlsZSBjb3VsZCBub3QgYmUgZG93bmxvYWRlZC4gSFRUUCBDb2RlOiAke3Jlc3BvbnNlLnN0YXR1c31gXHJcbiAgICApO1xyXG4gIH1cclxuICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5LCBjcmVhdGVXcml0ZVN0cmVhbShnZXRYbWxGaWxlUGF0aChvcHRpb25zKSkpO1xyXG4gIGNvbnNvbGUubG9nKFwiRmluaXNoZWQgZG93bmxvYWRpbmcuXCIpO1xyXG59O1xyXG5cclxuZW51bSBYTUxTdGF0ZSB7XHJcbiAgTm9uZSxcclxuICBSZWRJem8sXHJcbiAgU2Nob29sTmFtZSxcclxuICBJem8sXHJcbiAgSWNvLFxyXG4gIFNjaG9vbFR5cGUsXHJcbiAgQ2FwYWNpdHksXHJcbiAgUnVpYW5Db2RlLFxyXG4gIEFkZHJlc3MsXHJcbiAgRm91bmRlck5hbWUsXHJcbiAgRm91bmRlclR5cGUsXHJcbiAgRm91bmRlckljbyxcclxufVxyXG5cclxuY29uc3QgU0NIT09MX1RZUEVfS0lOREVSR0FSVEVOID0gXCJBMDBcIjtcclxuY29uc3QgU0NIT09MX1RZUEVfRUxFTUVOVEFSWSA9IFwiQjAwXCI7XHJcblxyXG5jb25zdCBjcmVhdGVOZXdTY2hvb2wgPSAoKTogU2Nob29sID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgbmFtZTogXCJcIixcclxuICAgIHJlZGl6bzogXCJcIixcclxuICAgIGl6bzogXCJcIixcclxuICAgIGNhcGFjaXR5OiAwLFxyXG4gICAgbG9jYXRpb25zOiBbXSxcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgZ2V0Q29ycmVjdEZvdW5kZXJUeXBlID0gKGZvdW5kZXJUeXBlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gIHJldHVybiBmb3VuZGVyVHlwZSA9PT0gXCJcIiA/IFwiMTAxXCIgOiBmb3VuZGVyVHlwZTtcclxufTtcclxuXHJcbmNvbnN0IGdldE11bmljaXBhbGl0eVR5cGUgPSAoZm91bmRlclR5cGU6IHN0cmluZyk6IE11bmljaXBhbGl0eVR5cGUgPT4ge1xyXG4gIHJldHVybiBmb3VuZGVyVHlwZSA9PT0gXCIyNjFcIlxyXG4gICAgPyBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgIDogZm91bmRlclR5cGUgPT09IFwiMjYzXCJcclxuICAgID8gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgOiBNdW5pY2lwYWxpdHlUeXBlLk90aGVyO1xyXG59O1xyXG5cclxudHlwZSBTY2hvb2xBZGRyZXNzID0ge1xyXG4gIGl6bzogc3RyaW5nO1xyXG4gIGFkZHJlc3M6IHN0cmluZ1tdO1xyXG4gIHR5cGU6IFNjaG9vbFR5cGU7XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzU2Nob29sUmVnaXN0ZXJYbWwgPSBhc3luYyAoXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1xyXG4pOiBQcm9taXNlPHtcclxuICBzY2hvb2xzOiBTY2hvb2xbXTtcclxuICBmb3VuZGVyczogTWFwPHN0cmluZywgRm91bmRlcj47XHJcbiAgc2Nob29sc1dpdGhvdXRSdWlhbjogU2Nob29sQWRkcmVzc1tdO1xyXG59PiA9PiB7XHJcbiAgbGV0IGN1cnJlbnRTY2hvb2xzOiBTY2hvb2xbXTtcclxuICBsZXQgY3VycmVudFJlZGl6bzogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50TmFtZTogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50SXpvOiBzdHJpbmc7XHJcbiAgbGV0IGN1cnJlbnRJY286IHN0cmluZztcclxuICBsZXQgY3VycmVudFR5cGU6IFNjaG9vbFR5cGUgfCBudWxsID0gbnVsbDtcclxuICBsZXQgY3VycmVudENhcGFjaXR5OiBudW1iZXI7XHJcbiAgbGV0IGN1cnJlbnRMb2NhdGlvbnM6IFNjaG9vbExvY2F0aW9uW10gPSBbXTtcclxuICBsZXQgc3RhdGU6IFhNTFN0YXRlID0gWE1MU3RhdGUuTm9uZTtcclxuICBsZXQgY3VycmVudEZvdW5kZXJzID0gW107XHJcbiAgbGV0IGN1cnJlbnRGb3VuZGVySWNvOiBzdHJpbmc7XHJcbiAgbGV0IGN1cnJlbnRGb3VuZGVyTmFtZTogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50Rm91bmRlclR5cGU6IHN0cmluZztcclxuICBsZXQgaXNSdWlhbkNvZGVTZXQgPSBmYWxzZTtcclxuICBsZXQgaXNSdWlhbkNvZGVNaXNzaW5nID0gZmFsc2U7XHJcbiAgbGV0IGN1cnJlbnRBZGRyZXNzID0gW107XHJcbiAgY29uc3QgZm91bmRlcnMgPSBuZXcgTWFwPHN0cmluZywgRm91bmRlcj4oKTtcclxuICBjb25zdCBzY2hvb2xzOiBTY2hvb2xbXSA9IFtdO1xyXG4gIGNvbnN0IHNjaG9vbHNXaXRob3V0UnVpYW46IFNjaG9vbEFkZHJlc3NbXSA9IFtdO1xyXG5cclxuICBjb25zdCBzdHJlYW1Qcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgY29uc3Qgc2F4U3RyZWFtID0gc2F4XHJcbiAgICAgIC5jcmVhdGVTdHJlYW0odHJ1ZSlcclxuICAgICAgLm9uKFwib3BlbnRhZ1wiLCAodGFnOiBUYWcpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHRhZy5uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlIFwiUHJhdm5pU3ViamVrdFwiOlxyXG4gICAgICAgICAgICBjdXJyZW50U2Nob29scyA9IFtdO1xyXG4gICAgICAgICAgICBjdXJyZW50UmVkaXpvID0gXCJcIjtcclxuICAgICAgICAgICAgY3VycmVudE5hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50SXpvID0gXCJcIjtcclxuICAgICAgICAgICAgY3VycmVudENhcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVNaXNzaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlJlZEl6b1wiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlJlZEl6bztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiUmVkUGxueU5hemV2XCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuU2Nob29sTmFtZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiSVpPXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuSXpvO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJJQ09cIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5JY287XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhRHJ1aFR5cFwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlNjaG9vbFR5cGU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhS2FwYWNpdGFcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5DYXBhY2l0eTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9SVUFJTktvZFwiOlxyXG4gICAgICAgICAgICBpc1J1aWFuQ29kZVNldCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjdXJyZW50QWRkcmVzcyA9IFtdO1xyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlJ1aWFuQ29kZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiWnJpek5hemV2XCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuRm91bmRlck5hbWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlpyaXpQcmF2bmlGb3JtYVwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLkZvdW5kZXJUeXBlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTFcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTJcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTNcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5BZGRyZXNzO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJacml6RGF0dW1OYXJvemVuaVwiOlxyXG4gICAgICAgICAgY2FzZSBcIlpyaXpJQ09cIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5Gb3VuZGVySWNvO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5vbihcImNsb3NldGFnXCIsICh0YWdOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHRhZ05hbWUpIHtcclxuICAgICAgICAgIGNhc2UgXCJQcmF2bmlTdWJqZWt0XCI6XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U2Nob29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgc2Nob29scy5wdXNoKC4uLmN1cnJlbnRTY2hvb2xzKTtcclxuICAgICAgICAgICAgICBjdXJyZW50Rm91bmRlcnMuZm9yRWFjaCgoZm91bmRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZm91bmRlci5uYW1lICsgZm91bmRlci5pY287XHJcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRlcnMuaGFzKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgZm91bmRlcnMuZ2V0KGtleSkuc2Nob29scy5wdXNoKC4uLmN1cnJlbnRTY2hvb2xzKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvdW5kZXJzLnNldChrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmb3VuZGVyLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvOiBmb3VuZGVyLmljbyxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFR5cGU6IGZvdW5kZXIudHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBtdW5pY2lwYWxpdHlUeXBlOiBnZXRNdW5pY2lwYWxpdHlUeXBlKGZvdW5kZXIudHlwZSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2Nob29sczogWy4uLmN1cnJlbnRTY2hvb2xzXSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudEljbyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVycyA9IFtdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiWnJpem92YXRlbFwiOlxyXG4gICAgICAgICAgICBpZiAoY3VycmVudEZvdW5kZXJJY28gPT09IFwiXCIgfHwgY3VycmVudEZvdW5kZXJOYW1lID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudEZvdW5kZXJzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWNvOiBjdXJyZW50SWNvLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogY3VycmVudE5hbWUsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcIjIyNFwiLCAvLyBzLnIubyAobm90IGFsbCBhcmUgdGhvc2UsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGRpZmZlcmVudGlhdGUgaGVyZSlcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjdXJyZW50Rm91bmRlcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpY286IGN1cnJlbnRGb3VuZGVySWNvLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogY3VycmVudEZvdW5kZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogZ2V0Q29ycmVjdEZvdW5kZXJUeXBlKGN1cnJlbnRGb3VuZGVyVHlwZSksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJJY28gPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlck5hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlclR5cGUgPSBcIlwiO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiU2tvbGFaYXJpemVuaVwiOlxyXG4gICAgICAgICAgICBpZiAoY3VycmVudFR5cGUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICBjdXJyZW50U2Nob29scy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGl6bzogY3VycmVudEl6byxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGN1cnJlbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVkaXpvOiBjdXJyZW50UmVkaXpvLFxyXG4gICAgICAgICAgICAgICAgY2FwYWNpdHk6IGN1cnJlbnRDYXBhY2l0eSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IGN1cnJlbnRUeXBlLFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb25zOiBjdXJyZW50TG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgY3VycmVudFR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTa29sYU1pc3RvVnlrb251Q2lubm9zdGlcIjpcclxuICAgICAgICAgICAgaWYgKGlzUnVpYW5Db2RlTWlzc2luZykge1xyXG4gICAgICAgICAgICAgIHNjaG9vbHNXaXRob3V0UnVpYW4ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpem86IGN1cnJlbnRJem8sXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcyxcclxuICAgICAgICAgICAgICAgIHR5cGU6IGN1cnJlbnRUeXBlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIk1pc3RvUlVBSU5Lb2RcIjpcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVNaXNzaW5nID0gIWlzUnVpYW5Db2RlU2V0O1xyXG4gICAgICAgICAgY2FzZSBcIlJlZFBsbnlOYXpldlwiOlxyXG4gICAgICAgICAgY2FzZSBcIlJlZEl6b1wiOlxyXG4gICAgICAgICAgY2FzZSBcIklDT1wiOlxyXG4gICAgICAgICAgY2FzZSBcIklaT1wiOlxyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhRHJ1aFR5cFwiOlxyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhS2FwYWNpdGFcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6TmF6ZXZcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6SUNPXCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpekRhdHVtTmFyb3plbmlcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6UHJhdm5pRm9ybWFcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTFcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTJcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTNcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5Ob25lO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5vbihcInRleHRcIiwgKHRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuUmVkSXpvOlxyXG4gICAgICAgICAgICBjdXJyZW50UmVkaXpvID0gdGV4dDtcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuU2Nob29sTmFtZTpcclxuICAgICAgICAgICAgY3VycmVudE5hbWUgPSB0ZXh0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuSXpvOlxyXG4gICAgICAgICAgICBjdXJyZW50SXpvID0gdGV4dDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkljbzpcclxuICAgICAgICAgICAgY3VycmVudEljbyA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5TY2hvb2xUeXBlOlxyXG4gICAgICAgICAgICBpZiAodGV4dCA9PT0gU0NIT09MX1RZUEVfS0lOREVSR0FSVEVOKSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFR5cGUgPSBTY2hvb2xUeXBlLktpbmRlcmdhcnRlbjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXh0ID09PSBTQ0hPT0xfVFlQRV9FTEVNRU5UQVJZKSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFR5cGUgPSBTY2hvb2xUeXBlLkVsZW1lbnRhcnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLlJ1aWFuQ29kZTpcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVTZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjdXJyZW50TG9jYXRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGFkZHJlc3NQb2ludElkOiBwYXJzZUludCh0ZXh0KSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5BZGRyZXNzOlxyXG4gICAgICAgICAgICBjdXJyZW50QWRkcmVzcy5wdXNoKHRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuRm91bmRlck5hbWU6XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVyTmFtZSA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5Gb3VuZGVySWNvOlxyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlckljbyA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5Gb3VuZGVyVHlwZTpcclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJUeXBlID0gdGV4dDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkNhcGFjaXR5OlxyXG4gICAgICAgICAgICBjdXJyZW50Q2FwYWNpdHkgPSBwYXJzZUludCh0ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAub24oXCJlcnJvclwiLCByZWplY3QpXHJcbiAgICAgIC5vbihcImVuZFwiLCByZXNvbHZlKTtcclxuXHJcbiAgICAvLyB3YW50ZWQgdG8gdXNlICdhd2FpdCBwaXBlbGluZShjcmVhdGVSZWFkU3RyZWFtKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKSwgc2F4U3RyZWFtKSdcclxuICAgIC8vIGJ1dCB0aGUgcHJvZ3JhbSB3b3VsZCBxdWl0IHNwb250YW5lb3VzbHkgYWZ0ZXIgZmluaXNoaW5nIHN0cmVhbSAtIHVzaW5nIFByb21pc2UgaW5zdGVhZC5cclxuICAgIGNyZWF0ZVJlYWRTdHJlYW0oZ2V0WG1sRmlsZVBhdGgob3B0aW9ucykpLnBpcGUoc2F4U3RyZWFtKTtcclxuICB9KTtcclxuXHJcbiAgYXdhaXQgc3RyZWFtUHJvbWlzZTtcclxuXHJcbiAgcmV0dXJuIHsgc2Nob29scywgZm91bmRlcnMsIHNjaG9vbHNXaXRob3V0UnVpYW4gfTtcclxufTtcclxuXHJcbmNvbnN0IGltcG9ydERhdGFUb0RiID0gYXN5bmMgKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMsXHJcbiAgc2F2ZUZvdW5kZXJzVG9Dc3Y6IGJvb2xlYW4gPSBmYWxzZSxcclxuICBzYXZlU2Nob29sc1dpdGhvdXRSdWlhblRvQ3N2OiBib29sZWFuID0gZmFsc2VcclxuKSA9PiB7XHJcbiAgY29uc3QgeyBzY2hvb2xzLCBmb3VuZGVycywgc2Nob29sc1dpdGhvdXRSdWlhbiB9ID1cclxuICAgIGF3YWl0IHByb2Nlc3NTY2hvb2xSZWdpc3RlclhtbChvcHRpb25zKTtcclxuXHJcbiAgaWYgKHNhdmVGb3VuZGVyc1RvQ3N2KSB7XHJcbiAgICBjb25zdCBjc3ZGaWxlID0gXCJmb3VuZGVycy5jc3ZcIjtcclxuXHJcbiAgICBpZiAoZXhpc3RzU3luYyhjc3ZGaWxlKSkge1xyXG4gICAgICBybVN5bmMoY3N2RmlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGNzdiA9IGNyZWF0ZVdyaXRlU3RyZWFtKGNzdkZpbGUsIHtcclxuICAgICAgZmxhZ3M6IFwiYVwiLFxyXG4gICAgfSk7XHJcbiAgICBjc3Yud3JpdGUoXCJJxIxPO1rFmWl6b3ZhdGVsO1Byw6F2bsOtIGZvcm1hO1BvxI1ldCDFoWtvbDvFoGtvbHlcXG5cIik7XHJcbiAgICBmb3VuZGVycy5mb3JFYWNoKChmb3VuZGVyKSA9PiB7XHJcbiAgICAgIGNzdi53cml0ZShcclxuICAgICAgICBgIyR7Zm91bmRlci5pY299OyR7Zm91bmRlci5uYW1lfTske2ZvdW5kZXIub3JpZ2luYWxUeXBlfTske1xyXG4gICAgICAgICAgZm91bmRlci5zY2hvb2xzLmxlbmd0aFxyXG4gICAgICAgIH07JHtmb3VuZGVyLnNjaG9vbHMubWFwKChzY2hvb2wpID0+IHNjaG9vbC5uYW1lKS5qb2luKFwiLS0tXCIpfVxcbmBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgY3N2LmVuZCgpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHNhdmVTY2hvb2xzV2l0aG91dFJ1aWFuVG9Dc3YpIHtcclxuICAgIGNvbnN0IGNzdkZpbGUgPSBcInNjaG9vbHNXaXRob3V0UnVpYW4uY3N2XCI7XHJcblxyXG4gICAgaWYgKGV4aXN0c1N5bmMoY3N2RmlsZSkpIHtcclxuICAgICAgcm1TeW5jKGNzdkZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjc3YgPSBjcmVhdGVXcml0ZVN0cmVhbShjc3ZGaWxlLCB7XHJcbiAgICAgIGZsYWdzOiBcImFcIixcclxuICAgIH0pO1xyXG4gICAgY3N2LndyaXRlKFwiSVpPO0plIG1hdGXFmXNrw6E7SmUgesOha2xhZG7DrTthZHJlc2ExO2FkcmVzYTI7YWRyZXNhM1xcblwiKTtcclxuICAgIHNjaG9vbHNXaXRob3V0UnVpYW4uZm9yRWFjaCgoc2Nob29sQWRkcmVzcykgPT4ge1xyXG4gICAgICBjc3Yud3JpdGUoXHJcbiAgICAgICAgYCMke3NjaG9vbEFkZHJlc3MuaXpvfTske1xyXG4gICAgICAgICAgc2Nob29sQWRkcmVzcy50eXBlID09PSBTY2hvb2xUeXBlLktpbmRlcmdhcnRlbiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiXHJcbiAgICAgICAgfTske1xyXG4gICAgICAgICAgc2Nob29sQWRkcmVzcy50eXBlID09PSBTY2hvb2xUeXBlLkVsZW1lbnRhcnkgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIlxyXG4gICAgICAgIH07JHtzY2hvb2xBZGRyZXNzLmFkZHJlc3Muam9pbihcIjtcIil9XFxuYFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICBjc3YuZW5kKCk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBpbnNlcnRTY2hvb2xzKHNjaG9vbHMpO1xyXG5cclxuICBhd2FpdCBpbnNlcnRGb3VuZGVycyhBcnJheS5mcm9tKGZvdW5kZXJzLnZhbHVlcygpKSk7XHJcbn07XHJcblxyXG5jb25zdCBnZXRYbWxGaWxlUGF0aCA9IChvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCk6IHN0cmluZyA9PiB7XHJcbiAgcmV0dXJuIGpvaW4ob3B0aW9ucy50bXBEaXIsIG9wdGlvbnMuc2Nob29sc1htbEZpbGVOYW1lKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3dubG9hZEFuZEltcG9ydFNjaG9vbHMgPSBhc3luYyAoXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwgPSB7fSxcclxuICBzYXZlRm91bmRlcnNUb0NzdjogYm9vbGVhbiA9IGZhbHNlLFxyXG4gIHNhdmVTY2hvb2xzV2l0aG91dFJ1aWFuVG9Dc3Y6IGJvb2xlYW4gPSBmYWxzZVxyXG4pID0+IHtcclxuICBhd2FpdCBydW5TeW5jUGFydChTeW5jUGFydC5TY2hvb2xzLCBbU3luY1BhcnQuQWRkcmVzc1BvaW50c10sIGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IHJ1bk9wdGlvbnMgPSBwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuXHJcbiAgICBhd2FpdCBkb3dubG9hZFhtbChydW5PcHRpb25zKTtcclxuICAgIGF3YWl0IGltcG9ydERhdGFUb0RiKFxyXG4gICAgICBydW5PcHRpb25zLFxyXG4gICAgICBzYXZlRm91bmRlcnNUb0NzdixcclxuICAgICAgc2F2ZVNjaG9vbHNXaXRob3V0UnVpYW5Ub0NzdlxyXG4gICAgKTtcclxuICAgIGRlbGV0ZVNjaG9vbHNYbWxGaWxlKHJ1bk9wdGlvbnMpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlbGV0ZVNjaG9vbHNYbWxGaWxlID0gKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsID0ge31cclxuKSA9PiB7XHJcbiAgY29uc3QgcnVuT3B0aW9ucyA9IHByZXBhcmVPcHRpb25zKG9wdGlvbnMpO1xyXG5cclxuICBpZiAoZXhpc3RzU3luYyhnZXRYbWxGaWxlUGF0aChydW5PcHRpb25zKSkpIHtcclxuICAgIHJtU3luYyhnZXRYbWxGaWxlUGF0aChydW5PcHRpb25zKSk7XHJcbiAgfVxyXG59O1xyXG4iXX0=
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuLWRhdGEtc3luYy9zY2hvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdFLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sR0FBWSxNQUFNLEtBQUssQ0FBQztBQUUvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUVMLGdCQUFnQixFQUdoQixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFHTCxjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxPQUE0QixFQUFpQixFQUFFO0lBQ3hFLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1FBQ3ZDLE9BQU87S0FDUjtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNoRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLG9EQUFvRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQ3RFLENBQUM7S0FD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bEMsVUFBc0MsRUFBRSxFQUN4QyxFQUFFO0lBQ0YsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTNDLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUNwQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIGNyZWF0ZVdyaXRlU3RyZWFtLCBleGlzdHNTeW5jLCBybVN5bmMgfSBmcm9tIFwiZnNcIjtcclxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XHJcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQgc2F4LCB7IFRhZyB9IGZyb20gXCJzYXhcIjtcclxuXHJcbmltcG9ydCB7IHBpcGVsaW5lIH0gZnJvbSBcInN0cmVhbS9wcm9taXNlc1wiO1xyXG5pbXBvcnQgeyBpbnNlcnRGb3VuZGVycyB9IGZyb20gXCIuLi9kYi9mb3VuZGVyc1wiO1xyXG5pbXBvcnQgeyBpbnNlcnRTY2hvb2xzIH0gZnJvbSBcIi4uL2RiL3NjaG9vbHNcIjtcclxuaW1wb3J0IHtcclxuICBGb3VuZGVyLFxyXG4gIE11bmljaXBhbGl0eVR5cGUsXHJcbiAgU2Nob29sLFxyXG4gIFNjaG9vbExvY2F0aW9uLFxyXG4gIFNjaG9vbFR5cGUsXHJcbiAgU3luY1BhcnQsXHJcbn0gZnJvbSBcIi4uL2RiL3R5cGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgT3BlbkRhdGFTeW5jT3B0aW9ucyxcclxuICBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCxcclxuICBwcmVwYXJlT3B0aW9ucyxcclxufSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBydW5TeW5jUGFydCB9IGZyb20gXCIuL2NvbW1vblwiO1xyXG5cclxuY29uc3QgZG93bmxvYWRYbWwgPSBhc3luYyAob3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xyXG4gIGlmIChleGlzdHNTeW5jKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc29sZS5sb2coXCJEb3dubG9hZGluZyBhIGxhcmdlIFhNTCBmaWxlIHdpdGggc2Nob29sIGRhdGEuLi5cIik7XHJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChvcHRpb25zLnNjaG9vbHNYbWxVcmwpO1xyXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICBgVGhlIFhNTCBmaWxlIGNvdWxkIG5vdCBiZSBkb3dubG9hZGVkLiBIVFRQIENvZGU6ICR7cmVzcG9uc2Uuc3RhdHVzfWBcclxuICAgICk7XHJcbiAgfVxyXG4gIGF3YWl0IHBpcGVsaW5lKHJlc3BvbnNlLmJvZHksIGNyZWF0ZVdyaXRlU3RyZWFtKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKSk7XHJcbiAgY29uc29sZS5sb2coXCJGaW5pc2hlZCBkb3dubG9hZGluZy5cIik7XHJcbn07XHJcblxyXG5lbnVtIFhNTFN0YXRlIHtcclxuICBOb25lLFxyXG4gIFJlZEl6byxcclxuICBTY2hvb2xOYW1lLFxyXG4gIEl6byxcclxuICBJY28sXHJcbiAgU2Nob29sVHlwZSxcclxuICBDYXBhY2l0eSxcclxuICBSdWlhbkNvZGUsXHJcbiAgQWRkcmVzcyxcclxuICBGb3VuZGVyTmFtZSxcclxuICBGb3VuZGVyVHlwZSxcclxuICBGb3VuZGVySWNvLFxyXG59XHJcblxyXG5jb25zdCBTQ0hPT0xfVFlQRV9LSU5ERVJHQVJURU4gPSBcIkEwMFwiO1xyXG5jb25zdCBTQ0hPT0xfVFlQRV9FTEVNRU5UQVJZID0gXCJCMDBcIjtcclxuXHJcbmNvbnN0IGdldENvcnJlY3RGb3VuZGVyVHlwZSA9IChmb3VuZGVyVHlwZTogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICByZXR1cm4gZm91bmRlclR5cGUgPT09IFwiXCIgPyBcIjEwMVwiIDogZm91bmRlclR5cGU7XHJcbn07XHJcblxyXG5jb25zdCBnZXRNdW5pY2lwYWxpdHlUeXBlID0gKGZvdW5kZXJUeXBlOiBzdHJpbmcpOiBNdW5pY2lwYWxpdHlUeXBlID0+IHtcclxuICByZXR1cm4gZm91bmRlclR5cGUgPT09IFwiMjYxXCJcclxuICAgID8gTXVuaWNpcGFsaXR5VHlwZS5DaXR5XHJcbiAgICA6IGZvdW5kZXJUeXBlID09PSBcIjI2M1wiXHJcbiAgICA/IE11bmljaXBhbGl0eVR5cGUuRGlzdHJpY3RcclxuICAgIDogTXVuaWNpcGFsaXR5VHlwZS5PdGhlcjtcclxufTtcclxuXHJcbnR5cGUgU2Nob29sQWRkcmVzcyA9IHtcclxuICBpem86IHN0cmluZztcclxuICBhZGRyZXNzOiBzdHJpbmdbXTtcclxuICB0eXBlOiBTY2hvb2xUeXBlO1xyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc1NjaG9vbFJlZ2lzdGVyWG1sID0gYXN5bmMgKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNcclxuKTogUHJvbWlzZTx7XHJcbiAgc2Nob29sczogU2Nob29sW107XHJcbiAgZm91bmRlcnM6IE1hcDxzdHJpbmcsIEZvdW5kZXI+O1xyXG4gIHNjaG9vbHNXaXRob3V0UnVpYW46IFNjaG9vbEFkZHJlc3NbXTtcclxufT4gPT4ge1xyXG4gIGxldCBjdXJyZW50U2Nob29sczogU2Nob29sW107XHJcbiAgbGV0IGN1cnJlbnRSZWRpem86IHN0cmluZztcclxuICBsZXQgY3VycmVudE5hbWU6IHN0cmluZztcclxuICBsZXQgY3VycmVudEl6bzogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50SWNvOiBzdHJpbmc7XHJcbiAgbGV0IGN1cnJlbnRUeXBlOiBTY2hvb2xUeXBlIHwgbnVsbCA9IG51bGw7XHJcbiAgbGV0IGN1cnJlbnRDYXBhY2l0eTogbnVtYmVyO1xyXG4gIGxldCBjdXJyZW50TG9jYXRpb25zOiBTY2hvb2xMb2NhdGlvbltdID0gW107XHJcbiAgbGV0IHN0YXRlOiBYTUxTdGF0ZSA9IFhNTFN0YXRlLk5vbmU7XHJcbiAgbGV0IGN1cnJlbnRGb3VuZGVycyA9IFtdO1xyXG4gIGxldCBjdXJyZW50Rm91bmRlckljbzogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50Rm91bmRlck5hbWU6IHN0cmluZztcclxuICBsZXQgY3VycmVudEZvdW5kZXJUeXBlOiBzdHJpbmc7XHJcbiAgbGV0IGlzUnVpYW5Db2RlU2V0ID0gZmFsc2U7XHJcbiAgbGV0IGlzUnVpYW5Db2RlTWlzc2luZyA9IGZhbHNlO1xyXG4gIGxldCBjdXJyZW50QWRkcmVzcyA9IFtdO1xyXG4gIGNvbnN0IGZvdW5kZXJzID0gbmV3IE1hcDxzdHJpbmcsIEZvdW5kZXI+KCk7XHJcbiAgY29uc3Qgc2Nob29sczogU2Nob29sW10gPSBbXTtcclxuICBjb25zdCBzY2hvb2xzV2l0aG91dFJ1aWFuOiBTY2hvb2xBZGRyZXNzW10gPSBbXTtcclxuXHJcbiAgY29uc3Qgc3RyZWFtUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIGNvbnN0IHNheFN0cmVhbSA9IHNheFxyXG4gICAgICAuY3JlYXRlU3RyZWFtKHRydWUpXHJcbiAgICAgIC5vbihcIm9wZW50YWdcIiwgKHRhZzogVGFnKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh0YWcubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSBcIlByYXZuaVN1Ympla3RcIjpcclxuICAgICAgICAgICAgY3VycmVudFNjaG9vbHMgPSBbXTtcclxuICAgICAgICAgICAgY3VycmVudFJlZGl6byA9IFwiXCI7XHJcbiAgICAgICAgICAgIGN1cnJlbnROYW1lID0gXCJcIjtcclxuICAgICAgICAgICAgY3VycmVudEl6byA9IFwiXCI7XHJcbiAgICAgICAgICAgIGN1cnJlbnRDYXBhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIGlzUnVpYW5Db2RlTWlzc2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJSZWRJem9cIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5SZWRJem87XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlJlZFBsbnlOYXpldlwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlNjaG9vbE5hbWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIklaT1wiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLkl6bztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiSUNPXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuSWNvO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTa29sYURydWhUeXBcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5TY2hvb2xUeXBlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTa29sYUthcGFjaXRhXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuQ2FwYWNpdHk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIk1pc3RvUlVBSU5Lb2RcIjpcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVTZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY3VycmVudEFkZHJlc3MgPSBbXTtcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5SdWlhbkNvZGU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlpyaXpOYXpldlwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLkZvdW5kZXJOYW1lO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJacml6UHJhdm5pRm9ybWFcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5Gb3VuZGVyVHlwZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2ExXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EyXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EzXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuQWRkcmVzcztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiWnJpekRhdHVtTmFyb3plbmlcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6SUNPXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuRm91bmRlckljbztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAub24oXCJjbG9zZXRhZ1wiLCAodGFnTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh0YWdOYW1lKSB7XHJcbiAgICAgICAgICBjYXNlIFwiUHJhdm5pU3ViamVrdFwiOlxyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNjaG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHNjaG9vbHMucHVzaCguLi5jdXJyZW50U2Nob29scyk7XHJcbiAgICAgICAgICAgICAgY3VycmVudEZvdW5kZXJzLmZvckVhY2goKGZvdW5kZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZvdW5kZXIubmFtZSArIGZvdW5kZXIuaWNvO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kZXJzLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvdW5kZXJzLmdldChrZXkpLnNjaG9vbHMucHVzaCguLi5jdXJyZW50U2Nob29scyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBmb3VuZGVycy5zZXQoa2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZm91bmRlci5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGljbzogZm91bmRlci5pY28sXHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxUeXBlOiBmb3VuZGVyLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgbXVuaWNpcGFsaXR5VHlwZTogZ2V0TXVuaWNpcGFsaXR5VHlwZShmb3VuZGVyLnR5cGUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNjaG9vbHM6IFsuLi5jdXJyZW50U2Nob29sc10sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnRJY28gPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlcnMgPSBbXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlpyaXpvdmF0ZWxcIjpcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRGb3VuZGVySWNvID09PSBcIlwiIHx8IGN1cnJlbnRGb3VuZGVyTmFtZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGljbzogY3VycmVudEljbyxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGN1cnJlbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCIyMjRcIiwgLy8gcy5yLm8gKG5vdCBhbGwgYXJlIHRob3NlLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGhlcmUpXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudEZvdW5kZXJzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWNvOiBjdXJyZW50Rm91bmRlckljbyxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGN1cnJlbnRGb3VuZGVyTmFtZSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IGdldENvcnJlY3RGb3VuZGVyVHlwZShjdXJyZW50Rm91bmRlclR5cGUpLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVySWNvID0gXCJcIjtcclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJOYW1lID0gXCJcIjtcclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJUeXBlID0gXCJcIjtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhWmFyaXplbmlcIjpcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRUeXBlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNjaG9vbHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpem86IGN1cnJlbnRJem8sXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50TmFtZSxcclxuICAgICAgICAgICAgICAgIHJlZGl6bzogY3VycmVudFJlZGl6byxcclxuICAgICAgICAgICAgICAgIGNhcGFjaXR5OiBjdXJyZW50Q2FwYWNpdHksXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBjdXJyZW50VHlwZSxcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uczogY3VycmVudExvY2F0aW9ucyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXJyZW50TG9jYXRpb25zID0gW107XHJcbiAgICAgICAgICAgIGN1cnJlbnRUeXBlID0gbnVsbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiU2tvbGFNaXN0b1Z5a29udUNpbm5vc3RpXCI6XHJcbiAgICAgICAgICAgIGlmIChpc1J1aWFuQ29kZU1pc3NpbmcpIHtcclxuICAgICAgICAgICAgICBzY2hvb2xzV2l0aG91dFJ1aWFuLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaXpvOiBjdXJyZW50SXpvLFxyXG4gICAgICAgICAgICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBjdXJyZW50VHlwZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b1JVQUlOS29kXCI6XHJcbiAgICAgICAgICAgIGlzUnVpYW5Db2RlTWlzc2luZyA9ICFpc1J1aWFuQ29kZVNldDtcclxuICAgICAgICAgIGNhc2UgXCJSZWRQbG55TmF6ZXZcIjpcclxuICAgICAgICAgIGNhc2UgXCJSZWRJem9cIjpcclxuICAgICAgICAgIGNhc2UgXCJJQ09cIjpcclxuICAgICAgICAgIGNhc2UgXCJJWk9cIjpcclxuICAgICAgICAgIGNhc2UgXCJTa29sYURydWhUeXBcIjpcclxuICAgICAgICAgIGNhc2UgXCJTa29sYUthcGFjaXRhXCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpek5hemV2XCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpeklDT1wiOlxyXG4gICAgICAgICAgY2FzZSBcIlpyaXpEYXR1bU5hcm96ZW5pXCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpelByYXZuaUZvcm1hXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2ExXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EyXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EzXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuTm9uZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAub24oXCJ0ZXh0XCIsICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLlJlZEl6bzpcclxuICAgICAgICAgICAgY3VycmVudFJlZGl6byA9IHRleHQ7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLlNjaG9vbE5hbWU6XHJcbiAgICAgICAgICAgIGN1cnJlbnROYW1lID0gdGV4dDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkl6bzpcclxuICAgICAgICAgICAgY3VycmVudEl6byA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5JY286XHJcbiAgICAgICAgICAgIGN1cnJlbnRJY28gPSB0ZXh0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuU2Nob29sVHlwZTpcclxuICAgICAgICAgICAgaWYgKHRleHQgPT09IFNDSE9PTF9UWVBFX0tJTkRFUkdBUlRFTikge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRUeXBlID0gU2Nob29sVHlwZS5LaW5kZXJnYXJ0ZW47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGV4dCA9PT0gU0NIT09MX1RZUEVfRUxFTUVOVEFSWSkge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRUeXBlID0gU2Nob29sVHlwZS5FbGVtZW50YXJ5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5SdWlhbkNvZGU6XHJcbiAgICAgICAgICAgIGlzUnVpYW5Db2RlU2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgY3VycmVudExvY2F0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICBhZGRyZXNzUG9pbnRJZDogcGFyc2VJbnQodGV4dCksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuQWRkcmVzczpcclxuICAgICAgICAgICAgY3VycmVudEFkZHJlc3MucHVzaCh0ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkZvdW5kZXJOYW1lOlxyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlck5hbWUgPSB0ZXh0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuRm91bmRlckljbzpcclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJJY28gPSB0ZXh0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuRm91bmRlclR5cGU6XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVyVHlwZSA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5DYXBhY2l0eTpcclxuICAgICAgICAgICAgY3VycmVudENhcGFjaXR5ID0gcGFyc2VJbnQodGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLm9uKFwiZXJyb3JcIiwgcmVqZWN0KVxyXG4gICAgICAub24oXCJlbmRcIiwgcmVzb2x2ZSk7XHJcblxyXG4gICAgLy8gd2FudGVkIHRvIHVzZSAnYXdhaXQgcGlwZWxpbmUoY3JlYXRlUmVhZFN0cmVhbShnZXRYbWxGaWxlUGF0aChvcHRpb25zKSksIHNheFN0cmVhbSknXHJcbiAgICAvLyBidXQgdGhlIHByb2dyYW0gd291bGQgcXVpdCBzcG9udGFuZW91c2x5IGFmdGVyIGZpbmlzaGluZyBzdHJlYW0gLSB1c2luZyBQcm9taXNlIGluc3RlYWQuXHJcbiAgICBjcmVhdGVSZWFkU3RyZWFtKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKS5waXBlKHNheFN0cmVhbSk7XHJcbiAgfSk7XHJcblxyXG4gIGF3YWl0IHN0cmVhbVByb21pc2U7XHJcblxyXG4gIHJldHVybiB7IHNjaG9vbHMsIGZvdW5kZXJzLCBzY2hvb2xzV2l0aG91dFJ1aWFuIH07XHJcbn07XHJcblxyXG5jb25zdCBpbXBvcnREYXRhVG9EYiA9IGFzeW5jIChcclxuICBvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zLFxyXG4gIHNhdmVGb3VuZGVyc1RvQ3N2OiBib29sZWFuID0gZmFsc2UsXHJcbiAgc2F2ZVNjaG9vbHNXaXRob3V0UnVpYW5Ub0NzdjogYm9vbGVhbiA9IGZhbHNlXHJcbikgPT4ge1xyXG4gIGNvbnN0IHsgc2Nob29scywgZm91bmRlcnMsIHNjaG9vbHNXaXRob3V0UnVpYW4gfSA9XHJcbiAgICBhd2FpdCBwcm9jZXNzU2Nob29sUmVnaXN0ZXJYbWwob3B0aW9ucyk7XHJcblxyXG4gIGlmIChzYXZlRm91bmRlcnNUb0Nzdikge1xyXG4gICAgY29uc3QgY3N2RmlsZSA9IFwiZm91bmRlcnMuY3N2XCI7XHJcblxyXG4gICAgaWYgKGV4aXN0c1N5bmMoY3N2RmlsZSkpIHtcclxuICAgICAgcm1TeW5jKGNzdkZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjc3YgPSBjcmVhdGVXcml0ZVN0cmVhbShjc3ZGaWxlLCB7XHJcbiAgICAgIGZsYWdzOiBcImFcIixcclxuICAgIH0pO1xyXG4gICAgY3N2LndyaXRlKFwiScSMTztaxZlpem92YXRlbDtQcsOhdm7DrSBmb3JtYTtQb8SNZXQgxaFrb2w7xaBrb2x5XFxuXCIpO1xyXG4gICAgZm91bmRlcnMuZm9yRWFjaCgoZm91bmRlcikgPT4ge1xyXG4gICAgICBjc3Yud3JpdGUoXHJcbiAgICAgICAgYCMke2ZvdW5kZXIuaWNvfTske2ZvdW5kZXIubmFtZX07JHtmb3VuZGVyLm9yaWdpbmFsVHlwZX07JHtcclxuICAgICAgICAgIGZvdW5kZXIuc2Nob29scy5sZW5ndGhcclxuICAgICAgICB9OyR7Zm91bmRlci5zY2hvb2xzLm1hcCgoc2Nob29sKSA9PiBzY2hvb2wubmFtZSkuam9pbihcIi0tLVwiKX1cXG5gXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIGNzdi5lbmQoKTtcclxuICB9XHJcblxyXG4gIGlmIChzYXZlU2Nob29sc1dpdGhvdXRSdWlhblRvQ3N2KSB7XHJcbiAgICBjb25zdCBjc3ZGaWxlID0gXCJzY2hvb2xzV2l0aG91dFJ1aWFuLmNzdlwiO1xyXG5cclxuICAgIGlmIChleGlzdHNTeW5jKGNzdkZpbGUpKSB7XHJcbiAgICAgIHJtU3luYyhjc3ZGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgY3N2ID0gY3JlYXRlV3JpdGVTdHJlYW0oY3N2RmlsZSwge1xyXG4gICAgICBmbGFnczogXCJhXCIsXHJcbiAgICB9KTtcclxuICAgIGNzdi53cml0ZShcIklaTztKZSBtYXRlxZlza8OhO0plIHrDoWtsYWRuw607YWRyZXNhMTthZHJlc2EyO2FkcmVzYTNcXG5cIik7XHJcbiAgICBzY2hvb2xzV2l0aG91dFJ1aWFuLmZvckVhY2goKHNjaG9vbEFkZHJlc3MpID0+IHtcclxuICAgICAgY3N2LndyaXRlKFxyXG4gICAgICAgIGAjJHtzY2hvb2xBZGRyZXNzLml6b307JHtcclxuICAgICAgICAgIHNjaG9vbEFkZHJlc3MudHlwZSA9PT0gU2Nob29sVHlwZS5LaW5kZXJnYXJ0ZW4gPyBcIlRSVUVcIiA6IFwiRkFMU0VcIlxyXG4gICAgICAgIH07JHtcclxuICAgICAgICAgIHNjaG9vbEFkZHJlc3MudHlwZSA9PT0gU2Nob29sVHlwZS5FbGVtZW50YXJ5ID8gXCJUUlVFXCIgOiBcIkZBTFNFXCJcclxuICAgICAgICB9OyR7c2Nob29sQWRkcmVzcy5hZGRyZXNzLmpvaW4oXCI7XCIpfVxcbmBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgY3N2LmVuZCgpO1xyXG4gIH1cclxuXHJcbiAgYXdhaXQgaW5zZXJ0U2Nob29scyhzY2hvb2xzKTtcclxuXHJcbiAgYXdhaXQgaW5zZXJ0Rm91bmRlcnMoQXJyYXkuZnJvbShmb3VuZGVycy52YWx1ZXMoKSkpO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0WG1sRmlsZVBhdGggPSAob3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwpOiBzdHJpbmcgPT4ge1xyXG4gIHJldHVybiBqb2luKG9wdGlvbnMudG1wRGlyLCBvcHRpb25zLnNjaG9vbHNYbWxGaWxlTmFtZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZG93bmxvYWRBbmRJbXBvcnRTY2hvb2xzID0gYXN5bmMgKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsID0ge30sXHJcbiAgc2F2ZUZvdW5kZXJzVG9Dc3Y6IGJvb2xlYW4gPSBmYWxzZSxcclxuICBzYXZlU2Nob29sc1dpdGhvdXRSdWlhblRvQ3N2OiBib29sZWFuID0gZmFsc2VcclxuKSA9PiB7XHJcbiAgYXdhaXQgcnVuU3luY1BhcnQoU3luY1BhcnQuU2Nob29scywgW1N5bmNQYXJ0LkFkZHJlc3NQb2ludHNdLCBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBydW5PcHRpb25zID0gcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XHJcblxyXG4gICAgYXdhaXQgZG93bmxvYWRYbWwocnVuT3B0aW9ucyk7XHJcbiAgICBhd2FpdCBpbXBvcnREYXRhVG9EYihcclxuICAgICAgcnVuT3B0aW9ucyxcclxuICAgICAgc2F2ZUZvdW5kZXJzVG9Dc3YsXHJcbiAgICAgIHNhdmVTY2hvb2xzV2l0aG91dFJ1aWFuVG9Dc3ZcclxuICAgICk7XHJcbiAgICBkZWxldGVTY2hvb2xzWG1sRmlsZShydW5PcHRpb25zKTtcclxuICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWxldGVTY2hvb2xzWG1sRmlsZSA9IChcclxuICBvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCA9IHt9XHJcbikgPT4ge1xyXG4gIGNvbnN0IHJ1bk9wdGlvbnMgPSBwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuXHJcbiAgaWYgKGV4aXN0c1N5bmMoZ2V0WG1sRmlsZVBhdGgocnVuT3B0aW9ucykpKSB7XHJcbiAgICBybVN5bmMoZ2V0WG1sRmlsZVBhdGgocnVuT3B0aW9ucykpO1xyXG4gIH1cclxufTtcclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Founder } from "../db/types";
|
|
1
|
+
import { Founder, SchoolType } from "../db/types";
|
|
2
2
|
import { ErrorCallbackParams, IntermediateMunicipality, IntermediateMunicipalityResult, IntermediateSchool, Municipality, ProcessLineCallbackParams, SmdError, SmdState } from "./types";
|
|
3
3
|
interface ParseOrdinanceProps {
|
|
4
4
|
lines: string[];
|
|
@@ -7,11 +7,12 @@ interface ParseOrdinanceProps {
|
|
|
7
7
|
onWarning?: (params: ErrorCallbackParams) => void;
|
|
8
8
|
onProcessedLine?: (params: ProcessLineCallbackParams) => void;
|
|
9
9
|
includeUnmappedAddressPoints: boolean;
|
|
10
|
+
schoolType: SchoolType;
|
|
10
11
|
}
|
|
11
|
-
export declare const parseOrdinanceToAddressPoints: ({ lines, initialState, onError, onWarning, onProcessedLine, includeUnmappedAddressPoints, }: ParseOrdinanceProps) => Promise<Municipality[]>;
|
|
12
|
+
export declare const parseOrdinanceToAddressPoints: ({ lines, initialState, onError, onWarning, onProcessedLine, includeUnmappedAddressPoints, schoolType, }: ParseOrdinanceProps) => Promise<Municipality[]>;
|
|
12
13
|
export declare const convertMunicipality: (municipality: IntermediateMunicipality) => Municipality;
|
|
13
|
-
export declare const getNewMunicipalityByName: (name: string) => Promise<IntermediateMunicipalityResult>;
|
|
14
|
-
export declare const getNewMunicipalityByFounderId: (founderId: number) => Promise<IntermediateMunicipalityResult>;
|
|
14
|
+
export declare const getNewMunicipalityByName: (name: string, schoolType: SchoolType) => Promise<IntermediateMunicipalityResult>;
|
|
15
|
+
export declare const getNewMunicipalityByFounderId: (founderId: number, schoolType: SchoolType) => Promise<IntermediateMunicipalityResult>;
|
|
15
16
|
export declare const getNewSchool: ({ name, founder, lineNumber, required, onError, }: {
|
|
16
17
|
name: string;
|
|
17
18
|
founder: Founder | null;
|
|
@@ -2,10 +2,10 @@ import { checkStreetExists, findAddressPoints, getAddressPointById, } from "../d
|
|
|
2
2
|
import { disconnectKnex } from "../db/db";
|
|
3
3
|
import { findFounder, getFounderById } from "../db/founders";
|
|
4
4
|
import { findSchool } from "../db/schools";
|
|
5
|
-
import { MunicipalityType, founderToMunicipality } from "../db/types";
|
|
5
|
+
import { MunicipalityType, founderToMunicipality, } from "../db/types";
|
|
6
6
|
import { getMunicipalityPartResult, getRestOfMunicipalityPart, getSwitchMunicipality, getWholeMunicipality, isMunicipalitySwitch, isRestOfMunicipalityLine, isRestOfMunicipalityPartLine, isRestWithNoStreetNameLine, isWholeMunicipality, } from "./municipality";
|
|
7
7
|
import { parseLine } from "./smd-line-parser";
|
|
8
|
-
export const parseOrdinanceToAddressPoints = async ({ lines, initialState = {}, onError = () => { }, onWarning = () => { }, onProcessedLine = () => { }, includeUnmappedAddressPoints = false, }) => {
|
|
8
|
+
export const parseOrdinanceToAddressPoints = async ({ lines, initialState = {}, onError = () => { }, onWarning = () => { }, onProcessedLine = () => { }, includeUnmappedAddressPoints = false, schoolType, }) => {
|
|
9
9
|
try {
|
|
10
10
|
const state = {
|
|
11
11
|
currentMunicipality: null,
|
|
@@ -38,6 +38,7 @@ export const parseOrdinanceToAddressPoints = async ({ lines, initialState = {},
|
|
|
38
38
|
lineNumber,
|
|
39
39
|
onError,
|
|
40
40
|
onWarning,
|
|
41
|
+
schoolType,
|
|
41
42
|
});
|
|
42
43
|
onProcessedLine({ lineNumber, line });
|
|
43
44
|
lineNumber++;
|
|
@@ -138,12 +139,12 @@ const processOneLine = async (params) => {
|
|
|
138
139
|
await processAddressPointLine(params);
|
|
139
140
|
}
|
|
140
141
|
};
|
|
141
|
-
const processMunicipalityLine = async ({ line, lineNumber, state, onError, }) => {
|
|
142
|
+
const processMunicipalityLine = async ({ line, lineNumber, state, schoolType, onError, }) => {
|
|
142
143
|
if (state.currentArea !== null) {
|
|
143
144
|
state.currentMunicipality.areas.push(state.currentArea);
|
|
144
145
|
}
|
|
145
146
|
await completeCurrentMunicipality(state);
|
|
146
|
-
const { municipality, errors } = await getNewMunicipalityByName(line);
|
|
147
|
+
const { municipality, errors } = await getNewMunicipalityByName(line, schoolType);
|
|
147
148
|
if (errors.length > 0) {
|
|
148
149
|
onError({ lineNumber, line, errors });
|
|
149
150
|
}
|
|
@@ -346,12 +347,12 @@ const addRestOfMunicipalityPart = async (state, municipalityPartCode, areaIndex,
|
|
|
346
347
|
});
|
|
347
348
|
addRestToArea(allPoints, areaIndex, lineNumber, state);
|
|
348
349
|
};
|
|
349
|
-
export const getNewMunicipalityByName = async (name) => {
|
|
350
|
-
const { founder, errors } = await findFounder(name);
|
|
350
|
+
export const getNewMunicipalityByName = async (name, schoolType) => {
|
|
351
|
+
const { founder, errors } = await findFounder(name, schoolType);
|
|
351
352
|
return getNewMunicipality(founder, errors);
|
|
352
353
|
};
|
|
353
|
-
export const getNewMunicipalityByFounderId = async (founderId) => {
|
|
354
|
-
const { founder, errors } = await getFounderById(founderId);
|
|
354
|
+
export const getNewMunicipalityByFounderId = async (founderId, schoolType) => {
|
|
355
|
+
const { founder, errors } = await getFounderById(founderId, schoolType);
|
|
355
356
|
return getNewMunicipality(founder, errors);
|
|
356
357
|
};
|
|
357
358
|
const getNewMunicipality = (founder, errors) => ({
|
|
@@ -436,4 +437,4 @@ const roundToNDecimalPlaces = (toRound, decimalPlaces) => {
|
|
|
436
437
|
return (Math.round(toRound * Math.pow(10, decimalPlaces)) /
|
|
437
438
|
Math.pow(10, decimalPlaces));
|
|
438
439
|
};
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFXLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTBCOUMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxFQUFFLEVBQ2xELEtBQUssRUFDTCxZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNsQixTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNwQixlQUFlLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUMxQiw0QkFBNEIsR0FBRyxLQUFLLEdBQ2hCLEVBQTJCLEVBQUU7SUFDakQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLG1CQUFtQixFQUFFLElBQUk7WUFDekIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixXQUFXLEVBQUUsSUFBSTtZQUNqQixnQkFB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LENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFlLEVBQUUsSUFBWSxFQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE9BQU87SUFDUCxXQUFXLEVBQUUsQ0FBQztJQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixPQUFlLEVBQ2YsYUFBcUIsRUFDYixFQUFFO0lBQ1YsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUM1QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBjaGVja1N0cmVldEV4aXN0cyxcclxuICBmaW5kQWRkcmVzc1BvaW50cyxcclxuICBnZXRBZGRyZXNzUG9pbnRCeUlkLFxyXG59IGZyb20gXCIuLi9kYi9hZGRyZXNzLXBvaW50c1wiO1xyXG5pbXBvcnQgeyBkaXNjb25uZWN0S25leCB9IGZyb20gXCIuLi9kYi9kYlwiO1xyXG5pbXBvcnQgeyBmaW5kRm91bmRlciwgZ2V0Rm91bmRlckJ5SWQgfSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgZmluZFNjaG9vbCB9IGZyb20gXCIuLi9kYi9zY2hvb2xzXCI7XHJcbmltcG9ydCB7IEZvdW5kZXIsIE11bmljaXBhbGl0eVR5cGUsIGZvdW5kZXJUb011bmljaXBhbGl0eSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQsXHJcbiAgZ2V0UmVzdE9mTXVuaWNpcGFsaXR5UGFydCxcclxuICBnZXRTd2l0Y2hNdW5pY2lwYWxpdHksXHJcbiAgZ2V0V2hvbGVNdW5pY2lwYWxpdHksXHJcbiAgaXNNdW5pY2lwYWxpdHlTd2l0Y2gsXHJcbiAgaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lLFxyXG4gIGlzUmVzdE9mTXVuaWNpcGFsaXR5UGFydExpbmUsXHJcbiAgaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUsXHJcbiAgaXNXaG9sZU11bmljaXBhbGl0eSxcclxufSBmcm9tIFwiLi9tdW5pY2lwYWxpdHlcIjtcclxuaW1wb3J0IHsgcGFyc2VMaW5lIH0gZnJvbSBcIi4vc21kLWxpbmUtcGFyc2VyXCI7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzc1BvaW50LFxyXG4gIEVycm9yQ2FsbGJhY2tQYXJhbXMsXHJcbiAgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIEludGVybWVkaWF0ZUFyZWEsXHJcbiAgSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5LFxyXG4gIEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdCxcclxuICBJbnRlcm1lZGlhdGVTY2hvb2wsXHJcbiAgTXVuaWNpcGFsaXR5LFxyXG4gIFByb2Nlc3NMaW5lQ2FsbGJhY2tQYXJhbXMsXHJcbiAgUHJvY2Vzc0xpbmVQYXJhbXMsXHJcbiAgU2Nob29sLFxyXG4gIFNtZEVycm9yLFxyXG4gIFNtZFN0YXRlLFxyXG59IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5pbnRlcmZhY2UgUGFyc2VPcmRpbmFuY2VQcm9wcyB7XHJcbiAgbGluZXM6IHN0cmluZ1tdO1xyXG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8U21kU3RhdGU+O1xyXG4gIG9uRXJyb3I/OiAocGFyYW1zOiBFcnJvckNhbGxiYWNrUGFyYW1zKSA9PiB2b2lkO1xyXG4gIG9uV2FybmluZz86IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbiAgb25Qcm9jZXNzZWRMaW5lPzogKHBhcmFtczogUHJvY2Vzc0xpbmVDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VPcmRpbmFuY2VUb0FkZHJlc3NQb2ludHMgPSBhc3luYyAoe1xyXG4gIGxpbmVzLFxyXG4gIGluaXRpYWxTdGF0ZSA9IHt9LFxyXG4gIG9uRXJyb3IgPSAoKSA9PiB7fSxcclxuICBvbldhcm5pbmcgPSAoKSA9PiB7fSxcclxuICBvblByb2Nlc3NlZExpbmUgPSAoKSA9PiB7fSxcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzID0gZmFsc2UsXHJcbn06IFBhcnNlT3JkaW5hbmNlUHJvcHMpOiBQcm9taXNlPE11bmljaXBhbGl0eVtdPiA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHN0YXRlOiBTbWRTdGF0ZSA9IHtcclxuICAgICAgY3VycmVudE11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEZpbHRlck11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEFyZWE6IG51bGwsXHJcbiAgICAgIHNjaG9vbHNDb21wbGV0ZWQ6IGZhbHNlLFxyXG4gICAgICBhcmVhQ291bnQ6IDAsXHJcbiAgICAgIHJlc3RzOiB7XHJcbiAgICAgICAgbm9TdHJlZXROYW1lQXJlYToge1xyXG4gICAgICAgICAgYXJlYUluZGV4OiBudWxsLFxyXG4gICAgICAgICAgbGluZU51bWJlcjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG11bmljaXBhbGl0eVBhcnRzOiBbXSxcclxuICAgICAgICB3aG9sZU11bmljaXBhbGl0eUFyZWE6IHtcclxuICAgICAgICAgIGFyZWFJbmRleDogbnVsbCxcclxuICAgICAgICAgIGxpbmVOdW1iZXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzLFxyXG4gICAgICB9LFxyXG4gICAgICBtdW5pY2lwYWxpdGllczogW10sXHJcbiAgICAgIC4uLmluaXRpYWxTdGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGxpbmVOdW1iZXIgPSAxO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmF3TGluZSBvZiBsaW5lcykge1xyXG4gICAgICBjb25zdCBsaW5lID0gY2xlYW5MaW5lKHJhd0xpbmUpO1xyXG4gICAgICBhd2FpdCBwcm9jZXNzT25lTGluZSh7XHJcbiAgICAgICAgbGluZSxcclxuICAgICAgICByYXdMaW5lOiByYXdMaW5lLnRyaW0oKSxcclxuICAgICAgICBzdGF0ZSxcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuaW5nLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Qcm9jZXNzZWRMaW5lKHsgbGluZU51bWJlciwgbGluZSB9KTtcclxuICAgICAgbGluZU51bWJlcisrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZS5jdXJyZW50QXJlYSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5hcmVhcy5wdXNoKG1hcEFyZWFGb3JFeHBvcnQoc3RhdGUuY3VycmVudEFyZWEpKTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZS5tdW5pY2lwYWxpdGllcztcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGF3YWl0IGRpc2Nvbm5lY3RLbmV4KCk7XHJcbiAgfVxyXG4gIHJldHVybiBbXTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0TXVuaWNpcGFsaXR5ID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IE11bmljaXBhbGl0eSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IG11bmljaXBhbGl0eS5tdW5pY2lwYWxpdHlOYW1lLFxyXG4gICAgYXJlYXM6IG11bmljaXBhbGl0eS5hcmVhcy5tYXAoKGFyZWEpID0+ICh7XHJcbiAgICAgIGluZGV4OiBhcmVhLmluZGV4LFxyXG4gICAgICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMsXHJcbiAgICAgIGFkZHJlc3NlczogQXJyYXkuZnJvbShhcmVhLmFkZHJlc3NNYXAudmFsdWVzKCkpLmZpbHRlcihcclxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmxhdCAhPT0gMCAmJiBwb2ludC5sbmcgIT09IDBcclxuICAgICAgKSxcclxuICAgIH0pKSxcclxuICAgIGNvZGU6IG11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eUNvZGUsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICBtdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFwiY2l0eVwiXHJcbiAgICAgICAgOiBcImRpc3RyaWN0XCIsXHJcbiAgICBjaXR5Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5jaXR5Q29kZXMpXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzKV0sXHJcbiAgICB1bm1hcHBlZFBvaW50czogbXVuaWNpcGFsaXR5LnVubWFwcGVkUG9pbnRzLmZpbHRlcihcclxuICAgICAgKHBvaW50KSA9PiBwb2ludC5sYXQgIT09IDAgJiYgcG9pbnQubG5nICE9PSAwXHJcbiAgICApLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzT25lTGluZSA9IGFzeW5jIChwYXJhbXM6IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBsaW5lLCBsaW5lTnVtYmVyLCBzdGF0ZSB9ID0gcGFyYW1zO1xyXG5cclxuICBpZiAobGluZVswXSA9PT0gXCIjXCIpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lKHBhcmFtcyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAobGluZSA9PT0gXCJcIikge1xyXG4gICAgLy8gZW5kIG9mIHNjaG9vbFxyXG4gICAgcHJvY2Vzc0VtcHR5TGluZShwYXJhbXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGxpbmVbMF0gPT09IFwiIVwiKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgPT09IG51bGwpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUocGFyYW1zKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5zY2hvb2xzQ29tcGxldGVkID09PSBmYWxzZSkge1xyXG4gICAgY29uc3QgZm91bmROZXh0U2Nob29sID0gYXdhaXQgcHJvY2Vzc05leHRTY2hvb2xMaW5lKHBhcmFtcyk7XHJcbiAgICBpZiAoZm91bmROZXh0U2Nob29sKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzTXVuaWNpcGFsaXR5U3dpdGNoKGxpbmUpKSB7XHJcbiAgICBwcm9jZXNzTXVuaWNpcGFsaXR5U3dpdGNoTGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNXaG9sZU11bmljaXBhbGl0eShsaW5lKSkge1xyXG4gICAgYXdhaXQgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUobGluZSkpIHtcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lKGxpbmUpKSB7XHJcbiAgICBzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0TGluZShsaW5lKSkge1xyXG4gICAgY29uc3QgeyBtdW5pY2lwYWxpdHlQYXJ0Q29kZSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0KFxyXG4gICAgICBsaW5lLFxyXG4gICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICAgICk7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGFyYW1zLm9uRXJyb3IoeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cy5wdXNoKHtcclxuICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICBhcmVhSW5kZXg6IHN0YXRlLmN1cnJlbnRBcmVhLmluZGV4LFxyXG4gICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBhd2FpdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZShwYXJhbXMpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgc3RhdGUsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgIT09IG51bGwpIHtcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuYXJlYXMucHVzaChzdGF0ZS5jdXJyZW50QXJlYSk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXROZXdNdW5pY2lwYWxpdHlCeU5hbWUobGluZSk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID0gbXVuaWNpcGFsaXR5O1xyXG4gIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBmb3VuZGVyVG9NdW5pY2lwYWxpdHkoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICApO1xyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IG51bGw7XHJcbn07XHJcblxyXG5jb25zdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkgPSBhc3luYyAoc3RhdGU6IFNtZFN0YXRlKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkgIT09IG51bGwpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RzKHN0YXRlKTtcclxuICAgIHN0YXRlLm11bmljaXBhbGl0aWVzLnB1c2goY29udmVydE11bmljaXBhbGl0eShzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc0VtcHR5TGluZSA9ICh7IHN0YXRlIH06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRBcmVhICE9PSBudWxsKSB7XHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLnB1c2goc3RhdGUuY3VycmVudEFyZWEpO1xyXG4gICAgc3RhdGUuY3VycmVudEFyZWEgPSBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUgPSBhc3luYyAoe1xyXG4gIHJhd0xpbmUsXHJcbiAgbGluZU51bWJlcixcclxuICBzdGF0ZSxcclxuICBvbkVycm9yLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09PSBudWxsKSB7XHJcbiAgICBvbkVycm9yKHtcclxuICAgICAgbGluZU51bWJlcixcclxuICAgICAgbGluZTogcmF3TGluZSxcclxuICAgICAgZXJyb3JzOiBbXHJcbiAgICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgICBcIkRlZmluaWNpIMWha29seSBtdXPDrSBwxZllZGNow6F6ZXQgZGVmaW5pY2UgesWZaXpvdmF0ZWxlICh1dm96ZW7DoSAnIycsIG5hcMWZLiAnIyBTdHJha29uaWNlJykuXCIsXHJcbiAgICAgICAgICByYXdMaW5lXHJcbiAgICAgICAgKSxcclxuICAgICAgXSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IHtcclxuICAgIGluZGV4OiBzdGF0ZS5hcmVhQ291bnQrKyxcclxuICAgIHNjaG9vbHM6IFtcclxuICAgICAgYXdhaXQgZ2V0TmV3U2Nob29sKHtcclxuICAgICAgICBuYW1lOiByYXdMaW5lLFxyXG4gICAgICAgIGZvdW5kZXI6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlcixcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGFkZHJlc3NlczogW10sXHJcbiAgICBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpLFxyXG4gICAgYWxsU2Nob29sc0FkZGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSBmYWxzZTtcclxuICBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5ID0gZm91bmRlclRvTXVuaWNpcGFsaXR5KFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NOZXh0U2Nob29sTGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIHN0YXRlLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG4gIGNvbnN0IHNjaG9vbCA9IGF3YWl0IGdldE5ld1NjaG9vbCh7XHJcbiAgICBuYW1lOiBsaW5lLFxyXG4gICAgZm91bmRlcjogc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyLFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgIG9uRXJyb3I6ICgpID0+IHt9LFxyXG4gIH0pO1xyXG5cclxuICBpZiAoc2Nob29sID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYS5zY2hvb2xzLnB1c2goc2Nob29sKTtcclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlTd2l0Y2hMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIHN0YXRlLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRTd2l0Y2hNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbn06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHksIGVycm9ycyB9ID0gYXdhaXQgZ2V0V2hvbGVNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChtdW5pY2lwYWxpdHkudHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5KSB7XHJcbiAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuY2l0eUNvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFkZHJlc3NQb2ludHMgPSBhd2FpdCBmaW5kQWRkcmVzc1BvaW50cyh7XHJcbiAgICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlcIixcclxuICAgICAgbXVuaWNpcGFsaXR5LFxyXG4gICAgfSk7XHJcbiAgICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKHN0YXRlLmN1cnJlbnRBcmVhLCBhZGRyZXNzUG9pbnRzLCBsaW5lTnVtYmVyKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhID0gKFxyXG4gIGFyZWE6IEludGVybWVkaWF0ZUFyZWEsXHJcbiAgYWRkcmVzc1BvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgZm9yIChjb25zdCBwb2ludCBvZiBhZGRyZXNzUG9pbnRzKSB7XHJcbiAgICBpZiAoYXJlYS5hZGRyZXNzTWFwLmhhcyhwb2ludC5pZCkpIHtcclxuICAgICAgYXJlYS5hZGRyZXNzTWFwLmdldChwb2ludC5pZCkubGluZU51bWJlcnMucHVzaChsaW5lTnVtYmVyIC0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcmVhLmFkZHJlc3NNYXAuc2V0KFxyXG4gICAgICAgIHBvaW50LmlkLFxyXG4gICAgICAgIG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb2ludCwgbGluZU51bWJlciwgbXVuaWNpcGFsaXR5Q29kZSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbiAgb25XYXJuaW5nLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGNvbnN0IHsgc21kTGluZXMsIGVycm9ycyB9ID0gcGFyc2VMaW5lKGxpbmUpO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgb25FcnJvcih7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgZm9yIChjb25zdCBzbWRMaW5lIG9mIHNtZExpbmVzKSB7XHJcbiAgICAgIGlmIChzbWRMaW5lLnR5cGUgPT09IFwic3RyZWV0XCIpIHtcclxuICAgICAgICBjb25zdCB7IGV4aXN0cywgZXJyb3JzIH0gPSBhd2FpdCBjaGVja1N0cmVldEV4aXN0cyhcclxuICAgICAgICAgIHNtZExpbmUuc3RyZWV0LFxyXG4gICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG9uV2FybmluZyh7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgICAgY29uc3QgYWRkcmVzc1BvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgICAgICAgICAgdHlwZTogXCJzbWRMaW5lXCIsXHJcbiAgICAgICAgICAgIHNtZExpbmUsXHJcbiAgICAgICAgICAgIG11bmljaXBhbGl0eTogc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRBcmVhLFxyXG4gICAgICAgICAgICBhZGRyZXNzUG9pbnRzLFxyXG4gICAgICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmNvZGUgIT09XHJcbiAgICAgICAgICAgICAgc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eS5jb2RlXHJcbiAgICAgICAgICAgICAgPyBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LmNvZGVcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoc21kTGluZS50eXBlID09PSBcIm11bmljaXBhbGl0eVBhcnRcIikge1xyXG4gICAgICAgIGNvbnN0IHsgbXVuaWNpcGFsaXR5UGFydENvZGUsIGVycm9ycyB9ID1cclxuICAgICAgICAgIGF3YWl0IGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQoXHJcbiAgICAgICAgICAgIHNtZExpbmUubXVuaWNpcGFsaXR5UGFydCxcclxuICAgICAgICAgICAgbGluZSxcclxuICAgICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgb25XYXJuaW5nKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgICAgICAgICB0eXBlOiBcInNtZExpbmVcIixcclxuICAgICAgICAgICAgc21kTGluZSxcclxuICAgICAgICAgICAgbXVuaWNpcGFsaXR5OiBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LFxyXG4gICAgICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoc3RhdGUuY3VycmVudEFyZWEsIGFkZHJlc3NQb2ludHMsIGxpbmVOdW1iZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RUb0FyZWEgPSAoXHJcbiAgcmVzdFBvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gZ2V0QWxsQWRkcmVzc1BvaW50c0lkcyhzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KTtcclxuXHJcbiAgLy8gZmlsdGVyIG91dCBhZGRyZXNzIHBvaW50cyBhbHJlYWR5IHByZXNlbnRcclxuICBjb25zdCByZW1haW5pbmdQb2ludHMgPSByZXN0UG9pbnRzLmZpbHRlcihcclxuICAgIChwb2ludCkgPT4gIWFkZHJlc3NQb2ludHNJZHMuaGFzKHBvaW50LmlkKVxyXG4gICk7XHJcblxyXG4gIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLmZpbmQoKGFyZWEpID0+IGFyZWEuaW5kZXggPT09IGFyZWFJbmRleCksXHJcbiAgICByZW1haW5pbmdQb2ludHMsXHJcbiAgICBsaW5lTnVtYmVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGlmIChzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgYXdhaXQgYWRkUmVzdFdpdGhOb1N0cmVldE5hbWVUb1NjaG9vbChcclxuICAgICAgc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEuYXJlYUluZGV4ICE9PSBudWxsKSB7XHJcbiAgICBhd2FpdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHkoXHJcbiAgICAgIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgcmVzdCBvZiBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5UGFydChcclxuICAgICAgc3RhdGUsXHJcbiAgICAgIHJlc3QubXVuaWNpcGFsaXR5UGFydENvZGUsXHJcbiAgICAgIHJlc3QuYXJlYUluZGV4LFxyXG4gICAgICByZXN0LmxpbmVOdW1iZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUucmVzdHMuaW5jbHVkZVVubWFwcGVkQWRkcmVzc1BvaW50cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5VG9Vbm1hcHBlZFBvaW50cyhzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMubXVuaWNpcGFsaXR5UGFydHMgPSBbXTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RXaXRoTm9TdHJlZXROYW1lVG9TY2hvb2wgPSBhc3luYyAoXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICAvLyBnZXQgYWxsIGFkZHJlc3MgcG9pbnRzIHdpdGhvdXQgc3RyZWV0IG5hbWUgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgcG9pbnRzTm9TdHJlZXROYW1lID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eU5vU3RyZWV0TmFtZVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbiAgYWRkUmVzdFRvQXJlYShcclxuICAgIHBvaW50c05vU3RyZWV0TmFtZSxcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEuYXJlYUluZGV4LFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHN0YXRlXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChsaW5lTnVtYmVyOiBudW1iZXIsIHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGFkZFJlc3RUb0FyZWEoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpLFxyXG4gICAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCxcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBzdGF0ZVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHlUb1VubWFwcGVkUG9pbnRzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkudW5tYXBwZWRQb2ludHMgPSAoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpXHJcbiAgKS5tYXAoKHBvaW50KSA9PiBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9pbnQpKTtcclxufTtcclxuXHJcbmNvbnN0IGdldFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChcclxuICBzdGF0ZTogU21kU3RhdGVcclxuKTogUHJvbWlzZTxBZGRyZXNzUG9pbnRbXT4gPT4ge1xyXG4gIC8vIGdldCBhbGwgYWRkcmVzcyBwb2ludHMgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgYWxsUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIC8vIGZpbHRlciBvdXQgYWRkcmVzcyBwb2ludHMgYWxyZWFkeSBwcmVzZW50XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IGdldEFsbEFkZHJlc3NQb2ludHNJZHMoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSk7XHJcbiAgcmV0dXJuIGFsbFBvaW50cy5maWx0ZXIoKHBvaW50KSA9PiAhYWRkcmVzc1BvaW50c0lkcy5oYXMocG9pbnQuaWQpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eVBhcnQgPSBhc3luYyAoXHJcbiAgc3RhdGU6IFNtZFN0YXRlLFxyXG4gIG11bmljaXBhbGl0eVBhcnRDb2RlOiBudW1iZXIsXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGFsbFBvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlQYXJ0XCIsXHJcbiAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICB9KTtcclxuICBhZGRSZXN0VG9BcmVhKGFsbFBvaW50cywgYXJlYUluZGV4LCBsaW5lTnVtYmVyLCBzdGF0ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlOYW1lID0gYXN5bmMgKFxyXG4gIG5hbWU6IHN0cmluZ1xyXG4pOiBQcm9taXNlPEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IHsgZm91bmRlciwgZXJyb3JzIH0gPSBhd2FpdCBmaW5kRm91bmRlcihuYW1lKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlGb3VuZGVySWQgPSBhc3luYyAoXHJcbiAgZm91bmRlcklkOiBudW1iZXJcclxuKTogUHJvbWlzZTxJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlSZXN1bHQ+ID0+IHtcclxuICBjb25zdCB7IGZvdW5kZXIsIGVycm9ycyB9ID0gYXdhaXQgZ2V0Rm91bmRlckJ5SWQoZm91bmRlcklkKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5jb25zdCBnZXROZXdNdW5pY2lwYWxpdHkgPSAoXHJcbiAgZm91bmRlcjogRm91bmRlcixcclxuICBlcnJvcnM6IFNtZEVycm9yW11cclxuKTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5UmVzdWx0ID0+ICh7XHJcbiAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICBtdW5pY2lwYWxpdHlOYW1lOiBmb3VuZGVyID8gZm91bmRlci5uYW1lIDogXCJOZXpuw6Ftw6Egb2JlY1wiLFxyXG4gICAgZm91bmRlcixcclxuICAgIGFyZWFzOiBbXSxcclxuICAgIGNvZGU6IGZvdW5kZXIgPyBmb3VuZGVyLm11bmljaXBhbGl0eUNvZGUgOiAwLFxyXG4gICAgbXVuaWNpcGFsaXR5VHlwZTpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHkgPyBcImNpdHlcIiA6IFwiZGlzdHJpY3RcIixcclxuICAgIGNpdHlDb2RlczpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFtmb3VuZGVyLm11bmljaXBhbGl0eUNvZGVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6XHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgICAgID8gW2ZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgdW5tYXBwZWRQb2ludHM6IFtdLFxyXG4gIH0sXHJcbiAgZXJyb3JzLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXROZXdTY2hvb2wgPSBhc3luYyAoe1xyXG4gIG5hbWUsXHJcbiAgZm91bmRlcixcclxuICBsaW5lTnVtYmVyLFxyXG4gIHJlcXVpcmVkLFxyXG4gIG9uRXJyb3IsXHJcbn06IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZm91bmRlcjogRm91bmRlciB8IG51bGw7XHJcbiAgbGluZU51bWJlcjogbnVtYmVyO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIG9uRXJyb3I6IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbn0pOiBQcm9taXNlPEludGVybWVkaWF0ZVNjaG9vbCB8IG51bGw+ID0+IHtcclxuICBsZXQgZXhwb3J0U2Nob29sOiBTY2hvb2wgPSB7XHJcbiAgICBuYW1lLFxyXG4gICAgaXpvOiBcIlwiLFxyXG4gIH07XHJcbiAgaWYgKGZvdW5kZXIgIT09IG51bGwpIHtcclxuICAgIGNvbnN0IHsgc2Nob29sLCBlcnJvcnMgfSA9IGZpbmRTY2hvb2woXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGZvdW5kZXIuc2Nob29scyxcclxuICAgICAgcmVxdWlyZWQgPyB1bmRlZmluZWQgOiA0XHJcbiAgICApO1xyXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lOiBuYW1lLCBlcnJvcnMgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2Nob29sKSB7XHJcbiAgICAgIGV4cG9ydFNjaG9vbC5uYW1lID0gc2Nob29sLm5hbWU7XHJcbiAgICAgIGV4cG9ydFNjaG9vbC5pem8gPSBzY2hvb2wuaXpvIHx8IFwiXCI7XHJcbiAgICAgIGlmIChzY2hvb2wubG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGF3YWl0IGdldEFkZHJlc3NQb2ludEJ5SWQoXHJcbiAgICAgICAgICBzY2hvb2wubG9jYXRpb25zWzBdLmFkZHJlc3NQb2ludElkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocG9zaXRpb24gIT09IG51bGwpIHtcclxuICAgICAgICAgIGV4cG9ydFNjaG9vbC5wb3NpdGlvbiA9IG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb3NpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHsgLi4uZXhwb3J0U2Nob29sLCBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpIH07XHJcbn07XHJcblxyXG5jb25zdCBnZXRBbGxBZGRyZXNzUG9pbnRzSWRzID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IFNldDxudW1iZXI+ID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XHJcblxyXG4gIGZvciAoY29uc3QgYXJlYSBvZiBtdW5pY2lwYWxpdHkuYXJlYXMpIHtcclxuICAgIGZvciAoY29uc3QgaWQgb2YgYXJlYS5hZGRyZXNzTWFwLmtleXMoKSkge1xyXG4gICAgICBhZGRyZXNzUG9pbnRzSWRzLmFkZChpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBhZGRyZXNzUG9pbnRzSWRzO1xyXG59O1xyXG5cclxuY29uc3QgbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0ID0gKFxyXG4gIGFkZHJlc3NQb2ludDogQWRkcmVzc1BvaW50IHwgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIGxpbmVOdW1iZXI/OiBudW1iZXIsXHJcbiAgbXVuaWNpcGFsaXR5Q29kZT86IG51bWJlclxyXG4pOiBFeHBvcnRBZGRyZXNzUG9pbnQgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICBhZGRyZXNzOiBhZGRyZXNzUG9pbnQuYWRkcmVzcyxcclxuICAgIGxhdDogcm91bmRUb05EZWNpbWFsUGxhY2VzKGFkZHJlc3NQb2ludC5sYXQsIDYpLFxyXG4gICAgbG5nOiByb3VuZFRvTkRlY2ltYWxQbGFjZXMoYWRkcmVzc1BvaW50LmxuZywgNiksXHJcbiAgICAuLi4obGluZU51bWJlciAhPT0gdW5kZWZpbmVkID8geyBsaW5lTnVtYmVyczogW2xpbmVOdW1iZXIgLSAxXSB9IDoge30pLFxyXG4gICAgLi4uKG11bmljaXBhbGl0eUNvZGUgIT09IHVuZGVmaW5lZCA/IHsgbXVuaWNpcGFsaXR5Q29kZSB9IDoge30pLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBtYXBBcmVhRm9yRXhwb3J0ID0gKGFyZWE6IEludGVybWVkaWF0ZUFyZWEpOiBJbnRlcm1lZGlhdGVBcmVhID0+ICh7XHJcbiAgLi4uYXJlYSxcclxuICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMubWFwKChzY2hvb2wpID0+ICh7XHJcbiAgICAuLi5zY2hvb2wsXHJcbiAgICBwb3NpdGlvbjogc2Nob29sLnBvc2l0aW9uXHJcbiAgICAgID8gbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0KHNjaG9vbC5wb3NpdGlvbilcclxuICAgICAgOiBudWxsLFxyXG4gIH0pKSxcclxufSk7XHJcblxyXG5jb25zdCBjbGVhbkxpbmUgPSAobGluZTogc3RyaW5nKSA9PiB7XHJcbiAgcmV0dXJuIGxpbmUudHJpbSgpLnJlcGxhY2UoL+KAky9nLCBcIi1cIik7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgd2hvbGVMaW5lRXJyb3IgPSAobWVzc2FnZTogc3RyaW5nLCBsaW5lOiBzdHJpbmcpOiBTbWRFcnJvciA9PiAoe1xyXG4gIG1lc3NhZ2UsXHJcbiAgc3RhcnRPZmZzZXQ6IDAsXHJcbiAgZW5kT2Zmc2V0OiBsaW5lLmxlbmd0aCArIDEsXHJcbn0pO1xyXG5cclxuY29uc3Qgcm91bmRUb05EZWNpbWFsUGxhY2VzID0gKFxyXG4gIHRvUm91bmQ6IG51bWJlcixcclxuICBkZWNpbWFsUGxhY2VzOiBudW1iZXJcclxuKTogbnVtYmVyID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgTWF0aC5yb3VuZCh0b1JvdW5kICogTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpKSAvXHJcbiAgICBNYXRoLnBvdygxMCwgZGVjaW1hbFBsYWNlcylcclxuICApO1xyXG59O1xyXG4iXX0=
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGdCQUFnQixFQUVoQixxQkFBcUIsR0FDdEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBMkI5QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxLQUFLLEVBQUUsRUFDbEQsS0FBSyxFQUNMLFlBQVksR0FBRyxFQUFFLEVBQ2pCLE9BQU8sR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQ2xCLFNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQ3BCLGVBQWUsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQzFCLDRCQUE0QixHQUFHLEtBQUssRUFDcEMsVUFBVSxHQUNVLEVBQTJCLEVBQUU7SUFDakQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLG1CQUFtQixFQUFFLElBQUk7WUFDekIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixXQUFXLEVBQUUsSUFB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RUFBRTtJQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQWUsRUFBRSxJQUFZLEVBQVksRUFBRSxDQUFDLENBQUM7SUFDMUUsT0FBTztJQUNQLFdBQVcsRUFBRSxDQUFDO0lBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztDQUMzQixDQUFDLENBQUM7QUFFSCxNQUFNLHFCQUFxQixHQUFHLENBQzVCLE9BQWUsRUFDZixhQUFxQixFQUNiLEVBQUU7SUFDVixPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQzVCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGNoZWNrU3RyZWV0RXhpc3RzLFxyXG4gIGZpbmRBZGRyZXNzUG9pbnRzLFxyXG4gIGdldEFkZHJlc3NQb2ludEJ5SWQsXHJcbn0gZnJvbSBcIi4uL2RiL2FkZHJlc3MtcG9pbnRzXCI7XHJcbmltcG9ydCB7IGRpc2Nvbm5lY3RLbmV4IH0gZnJvbSBcIi4uL2RiL2RiXCI7XHJcbmltcG9ydCB7IGZpbmRGb3VuZGVyLCBnZXRGb3VuZGVyQnlJZCB9IGZyb20gXCIuLi9kYi9mb3VuZGVyc1wiO1xyXG5pbXBvcnQgeyBmaW5kU2Nob29sIH0gZnJvbSBcIi4uL2RiL3NjaG9vbHNcIjtcclxuaW1wb3J0IHtcclxuICBGb3VuZGVyLFxyXG4gIE11bmljaXBhbGl0eVR5cGUsXHJcbiAgU2Nob29sVHlwZSxcclxuICBmb3VuZGVyVG9NdW5pY2lwYWxpdHksXHJcbn0gZnJvbSBcIi4uL2RiL3R5cGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0TXVuaWNpcGFsaXR5UGFydFJlc3VsdCxcclxuICBnZXRSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0LFxyXG4gIGdldFN3aXRjaE11bmljaXBhbGl0eSxcclxuICBnZXRXaG9sZU11bmljaXBhbGl0eSxcclxuICBpc011bmljaXBhbGl0eVN3aXRjaCxcclxuICBpc1Jlc3RPZk11bmljaXBhbGl0eUxpbmUsXHJcbiAgaXNSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0TGluZSxcclxuICBpc1Jlc3RXaXRoTm9TdHJlZXROYW1lTGluZSxcclxuICBpc1dob2xlTXVuaWNpcGFsaXR5LFxyXG59IGZyb20gXCIuL211bmljaXBhbGl0eVwiO1xyXG5pbXBvcnQgeyBwYXJzZUxpbmUgfSBmcm9tIFwiLi9zbWQtbGluZS1wYXJzZXJcIjtcclxuaW1wb3J0IHtcclxuICBBZGRyZXNzUG9pbnQsXHJcbiAgRXJyb3JDYWxsYmFja1BhcmFtcyxcclxuICBFeHBvcnRBZGRyZXNzUG9pbnQsXHJcbiAgSW50ZXJtZWRpYXRlQXJlYSxcclxuICBJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHksXHJcbiAgSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5UmVzdWx0LFxyXG4gIEludGVybWVkaWF0ZVNjaG9vbCxcclxuICBNdW5pY2lwYWxpdHksXHJcbiAgUHJvY2Vzc0xpbmVDYWxsYmFja1BhcmFtcyxcclxuICBQcm9jZXNzTGluZVBhcmFtcyxcclxuICBTY2hvb2wsXHJcbiAgU21kRXJyb3IsXHJcbiAgU21kU3RhdGUsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmludGVyZmFjZSBQYXJzZU9yZGluYW5jZVByb3BzIHtcclxuICBsaW5lczogc3RyaW5nW107XHJcbiAgaW5pdGlhbFN0YXRlPzogUGFydGlhbDxTbWRTdGF0ZT47XHJcbiAgb25FcnJvcj86IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbiAgb25XYXJuaW5nPzogKHBhcmFtczogRXJyb3JDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxuICBvblByb2Nlc3NlZExpbmU/OiAocGFyYW1zOiBQcm9jZXNzTGluZUNhbGxiYWNrUGFyYW1zKSA9PiB2b2lkO1xyXG4gIGluY2x1ZGVVbm1hcHBlZEFkZHJlc3NQb2ludHM6IGJvb2xlYW47XHJcbiAgc2Nob29sVHlwZTogU2Nob29sVHlwZTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHBhcnNlT3JkaW5hbmNlVG9BZGRyZXNzUG9pbnRzID0gYXN5bmMgKHtcclxuICBsaW5lcyxcclxuICBpbml0aWFsU3RhdGUgPSB7fSxcclxuICBvbkVycm9yID0gKCkgPT4ge30sXHJcbiAgb25XYXJuaW5nID0gKCkgPT4ge30sXHJcbiAgb25Qcm9jZXNzZWRMaW5lID0gKCkgPT4ge30sXHJcbiAgaW5jbHVkZVVubWFwcGVkQWRkcmVzc1BvaW50cyA9IGZhbHNlLFxyXG4gIHNjaG9vbFR5cGUsXHJcbn06IFBhcnNlT3JkaW5hbmNlUHJvcHMpOiBQcm9taXNlPE11bmljaXBhbGl0eVtdPiA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHN0YXRlOiBTbWRTdGF0ZSA9IHtcclxuICAgICAgY3VycmVudE11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEZpbHRlck11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEFyZWE6IG51bGwsXHJcbiAgICAgIHNjaG9vbHNDb21wbGV0ZWQ6IGZhbHNlLFxyXG4gICAgICBhcmVhQ291bnQ6IDAsXHJcbiAgICAgIHJlc3RzOiB7XHJcbiAgICAgICAgbm9TdHJlZXROYW1lQXJlYToge1xyXG4gICAgICAgICAgYXJlYUluZGV4OiBudWxsLFxyXG4gICAgICAgICAgbGluZU51bWJlcjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG11bmljaXBhbGl0eVBhcnRzOiBbXSxcclxuICAgICAgICB3aG9sZU11bmljaXBhbGl0eUFyZWE6IHtcclxuICAgICAgICAgIGFyZWFJbmRleDogbnVsbCxcclxuICAgICAgICAgIGxpbmVOdW1iZXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzLFxyXG4gICAgICB9LFxyXG4gICAgICBtdW5pY2lwYWxpdGllczogW10sXHJcbiAgICAgIC4uLmluaXRpYWxTdGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGxpbmVOdW1iZXIgPSAxO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmF3TGluZSBvZiBsaW5lcykge1xyXG4gICAgICBjb25zdCBsaW5lID0gY2xlYW5MaW5lKHJhd0xpbmUpO1xyXG4gICAgICBhd2FpdCBwcm9jZXNzT25lTGluZSh7XHJcbiAgICAgICAgbGluZSxcclxuICAgICAgICByYXdMaW5lOiByYXdMaW5lLnRyaW0oKSxcclxuICAgICAgICBzdGF0ZSxcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuaW5nLFxyXG4gICAgICAgIHNjaG9vbFR5cGUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvblByb2Nlc3NlZExpbmUoeyBsaW5lTnVtYmVyLCBsaW5lIH0pO1xyXG4gICAgICBsaW5lTnVtYmVyKys7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlLmN1cnJlbnRBcmVhICE9IG51bGwpIHtcclxuICAgICAgaWYgKHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLnB1c2gobWFwQXJlYUZvckV4cG9ydChzdGF0ZS5jdXJyZW50QXJlYSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IGNvbXBsZXRlQ3VycmVudE11bmljaXBhbGl0eShzdGF0ZSk7XHJcblxyXG4gICAgcmV0dXJuIHN0YXRlLm11bmljaXBhbGl0aWVzO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICB9IGZpbmFsbHkge1xyXG4gICAgYXdhaXQgZGlzY29ubmVjdEtuZXgoKTtcclxuICB9XHJcbiAgcmV0dXJuIFtdO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRNdW5pY2lwYWxpdHkgPSAoXHJcbiAgbXVuaWNpcGFsaXR5OiBJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlcclxuKTogTXVuaWNpcGFsaXR5ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgbXVuaWNpcGFsaXR5TmFtZTogbXVuaWNpcGFsaXR5Lm11bmljaXBhbGl0eU5hbWUsXHJcbiAgICBhcmVhczogbXVuaWNpcGFsaXR5LmFyZWFzLm1hcCgoYXJlYSkgPT4gKHtcclxuICAgICAgaW5kZXg6IGFyZWEuaW5kZXgsXHJcbiAgICAgIHNjaG9vbHM6IGFyZWEuc2Nob29scyxcclxuICAgICAgYWRkcmVzc2VzOiBBcnJheS5mcm9tKGFyZWEuYWRkcmVzc01hcC52YWx1ZXMoKSkuZmlsdGVyKFxyXG4gICAgICAgIChwb2ludCkgPT4gcG9pbnQubGF0ICE9PSAwICYmIHBvaW50LmxuZyAhPT0gMFxyXG4gICAgICApLFxyXG4gICAgfSkpLFxyXG4gICAgY29kZTogbXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZSxcclxuICAgIG11bmljaXBhbGl0eVR5cGU6XHJcbiAgICAgIG11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eVR5cGUgPT09IE11bmljaXBhbGl0eVR5cGUuQ2l0eVxyXG4gICAgICAgID8gXCJjaXR5XCJcclxuICAgICAgICA6IFwiZGlzdHJpY3RcIixcclxuICAgIGNpdHlDb2RlczogWy4uLm5ldyBTZXQobXVuaWNpcGFsaXR5LmNpdHlDb2RlcyldLFxyXG4gICAgZGlzdHJpY3RDb2RlczogWy4uLm5ldyBTZXQobXVuaWNpcGFsaXR5LmRpc3RyaWN0Q29kZXMpXSxcclxuICAgIHVubWFwcGVkUG9pbnRzOiBtdW5pY2lwYWxpdHkudW5tYXBwZWRQb2ludHMuZmlsdGVyKFxyXG4gICAgICAocG9pbnQpID0+IHBvaW50LmxhdCAhPT0gMCAmJiBwb2ludC5sbmcgIT09IDBcclxuICAgICksXHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NPbmVMaW5lID0gYXN5bmMgKHBhcmFtczogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBjb25zdCB7IGxpbmUsIGxpbmVOdW1iZXIsIHN0YXRlIH0gPSBwYXJhbXM7XHJcblxyXG4gIGlmIChsaW5lWzBdID09PSBcIiNcIikge1xyXG4gICAgYXdhaXQgcHJvY2Vzc011bmljaXBhbGl0eUxpbmUocGFyYW1zKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChsaW5lID09PSBcIlwiKSB7XHJcbiAgICAvLyBlbmQgb2Ygc2Nob29sXHJcbiAgICBwcm9jZXNzRW1wdHlMaW5lKHBhcmFtcyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAobGluZVswXSA9PT0gXCIhXCIpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5jdXJyZW50QXJlYSA9PT0gbnVsbCkge1xyXG4gICAgYXdhaXQgcHJvY2Vzc0ZpcnN0U2Nob29sTGluZShwYXJhbXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBmb3VuZE5leHRTY2hvb2wgPSBhd2FpdCBwcm9jZXNzTmV4dFNjaG9vbExpbmUocGFyYW1zKTtcclxuICAgIGlmIChmb3VuZE5leHRTY2hvb2wpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RhdGUuc2Nob29sc0NvbXBsZXRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAoaXNNdW5pY2lwYWxpdHlTd2l0Y2gobGluZSkpIHtcclxuICAgIHByb2Nlc3NNdW5pY2lwYWxpdHlTd2l0Y2hMaW5lKHBhcmFtcyk7XHJcbiAgfSBlbHNlIGlmIChpc1dob2xlTXVuaWNpcGFsaXR5KGxpbmUpKSB7XHJcbiAgICBhd2FpdCBwcm9jZXNzV2hvbGVNdW5pY2lwYWxpdHlMaW5lKHBhcmFtcyk7XHJcbiAgfSBlbHNlIGlmIChpc1Jlc3RXaXRoTm9TdHJlZXROYW1lTGluZShsaW5lKSkge1xyXG4gICAgc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYSA9IHtcclxuICAgICAgYXJlYUluZGV4OiBzdGF0ZS5jdXJyZW50QXJlYS5pbmRleCxcclxuICAgICAgbGluZU51bWJlcixcclxuICAgIH07XHJcbiAgfSBlbHNlIGlmIChpc1Jlc3RPZk11bmljaXBhbGl0eUxpbmUobGluZSkpIHtcclxuICAgIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYSA9IHtcclxuICAgICAgYXJlYUluZGV4OiBzdGF0ZS5jdXJyZW50QXJlYS5pbmRleCxcclxuICAgICAgbGluZU51bWJlcixcclxuICAgIH07XHJcbiAgfSBlbHNlIGlmIChpc1Jlc3RPZk11bmljaXBhbGl0eVBhcnRMaW5lKGxpbmUpKSB7XHJcbiAgICBjb25zdCB7IG11bmljaXBhbGl0eVBhcnRDb2RlLCBlcnJvcnMgfSA9IGF3YWl0IGdldFJlc3RPZk11bmljaXBhbGl0eVBhcnQoXHJcbiAgICAgIGxpbmUsXHJcbiAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlclxyXG4gICAgKTtcclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBwYXJhbXMub25FcnJvcih7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRlLnJlc3RzLm11bmljaXBhbGl0eVBhcnRzLnB1c2goe1xyXG4gICAgICAgIG11bmljaXBhbGl0eVBhcnRDb2RlLFxyXG4gICAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGF3YWl0IHByb2Nlc3NBZGRyZXNzUG9pbnRMaW5lKHBhcmFtcyk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc011bmljaXBhbGl0eUxpbmUgPSBhc3luYyAoe1xyXG4gIGxpbmUsXHJcbiAgbGluZU51bWJlcixcclxuICBzdGF0ZSxcclxuICBzY2hvb2xUeXBlLFxyXG4gIG9uRXJyb3IsXHJcbn06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRBcmVhICE9PSBudWxsKSB7XHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLnB1c2goc3RhdGUuY3VycmVudEFyZWEpO1xyXG4gIH1cclxuXHJcbiAgYXdhaXQgY29tcGxldGVDdXJyZW50TXVuaWNpcGFsaXR5KHN0YXRlKTtcclxuXHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHksIGVycm9ycyB9ID0gYXdhaXQgZ2V0TmV3TXVuaWNpcGFsaXR5QnlOYW1lKFxyXG4gICAgbGluZSxcclxuICAgIHNjaG9vbFR5cGVcclxuICApO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgb25FcnJvcih7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICB9XHJcbiAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSA9IG11bmljaXBhbGl0eTtcclxuICBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5ID0gZm91bmRlclRvTXVuaWNpcGFsaXR5KFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuXHJcbiAgc3RhdGUuY3VycmVudEFyZWEgPSBudWxsO1xyXG59O1xyXG5cclxuY29uc3QgY29tcGxldGVDdXJyZW50TXVuaWNpcGFsaXR5ID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ICE9PSBudWxsKSB7XHJcbiAgICBhd2FpdCBhZGRSZXN0cyhzdGF0ZSk7XHJcbiAgICBzdGF0ZS5tdW5pY2lwYWxpdGllcy5wdXNoKGNvbnZlcnRNdW5pY2lwYWxpdHkoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSkpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NFbXB0eUxpbmUgPSAoeyBzdGF0ZSB9OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGlmIChzdGF0ZS5jdXJyZW50QXJlYSAhPT0gbnVsbCkge1xyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5hcmVhcy5wdXNoKHN0YXRlLmN1cnJlbnRBcmVhKTtcclxuICAgIHN0YXRlLmN1cnJlbnRBcmVhID0gbnVsbDtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzRmlyc3RTY2hvb2xMaW5lID0gYXN5bmMgKHtcclxuICByYXdMaW5lLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgc3RhdGUsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBpZiAoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSA9PT0gbnVsbCkge1xyXG4gICAgb25FcnJvcih7XHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICAgIGxpbmU6IHJhd0xpbmUsXHJcbiAgICAgIGVycm9yczogW1xyXG4gICAgICAgIHdob2xlTGluZUVycm9yKFxyXG4gICAgICAgICAgXCJEZWZpbmljaSDFoWtvbHkgbXVzw60gcMWZZWRjaMOhemV0IGRlZmluaWNlIHrFmWl6b3ZhdGVsZSAodXZvemVuw6EgJyMnLCBuYXDFmS4gJyMgU3RyYWtvbmljZScpLlwiLFxyXG4gICAgICAgICAgcmF3TGluZVxyXG4gICAgICAgICksXHJcbiAgICAgIF0sXHJcbiAgICB9KTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgc3RhdGUuY3VycmVudEFyZWEgPSB7XHJcbiAgICBpbmRleDogc3RhdGUuYXJlYUNvdW50KyssXHJcbiAgICBzY2hvb2xzOiBbXHJcbiAgICAgIGF3YWl0IGdldE5ld1NjaG9vbCh7XHJcbiAgICAgICAgbmFtZTogcmF3TGluZSxcclxuICAgICAgICBmb3VuZGVyOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIsXHJcbiAgICAgICAgbGluZU51bWJlcixcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICBvbkVycm9yLFxyXG4gICAgICB9KSxcclxuICAgIF0sXHJcbiAgICBhZGRyZXNzZXM6IFtdLFxyXG4gICAgYWRkcmVzc01hcDogbmV3IE1hcDxudW1iZXIsIEV4cG9ydEFkZHJlc3NQb2ludD4oKSxcclxuICAgIGFsbFNjaG9vbHNBZGRlZDogZmFsc2UsXHJcbiAgfTtcclxuICBzdGF0ZS5zY2hvb2xzQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eSA9IGZvdW5kZXJUb011bmljaXBhbGl0eShcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlclxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzTmV4dFNjaG9vbExpbmUgPSBhc3luYyAoe1xyXG4gIGxpbmUsXHJcbiAgbGluZU51bWJlcixcclxuICBzdGF0ZSxcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcclxuICBjb25zdCBzY2hvb2wgPSBhd2FpdCBnZXROZXdTY2hvb2woe1xyXG4gICAgbmFtZTogbGluZSxcclxuICAgIGZvdW5kZXI6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlcixcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICBvbkVycm9yOiAoKSA9PiB7fSxcclxuICB9KTtcclxuXHJcbiAgaWYgKHNjaG9vbCA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGUuY3VycmVudEFyZWEuc2Nob29scy5wdXNoKHNjaG9vbCk7XHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzTXVuaWNpcGFsaXR5U3dpdGNoTGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbn06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHksIGVycm9ycyB9ID0gYXdhaXQgZ2V0U3dpdGNoTXVuaWNpcGFsaXR5KFxyXG4gICAgbGluZSxcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlclxyXG4gICk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5ID0gbXVuaWNpcGFsaXR5O1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NXaG9sZU11bmljaXBhbGl0eUxpbmUgPSBhc3luYyAoe1xyXG4gIGxpbmUsXHJcbiAgc3RhdGUsXHJcbiAgbGluZU51bWJlcixcclxuICBvbkVycm9yLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGNvbnN0IHsgbXVuaWNpcGFsaXR5LCBlcnJvcnMgfSA9IGF3YWl0IGdldFdob2xlTXVuaWNpcGFsaXR5KFxyXG4gICAgbGluZSxcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlclxyXG4gICk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAobXVuaWNpcGFsaXR5LnR5cGUgPT09IE11bmljaXBhbGl0eVR5cGUuQ2l0eSkge1xyXG4gICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmNpdHlDb2Rlcy5wdXNoKG11bmljaXBhbGl0eS5jb2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZGlzdHJpY3RDb2Rlcy5wdXNoKG11bmljaXBhbGl0eS5jb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgICB0eXBlOiBcIndob2xlTXVuaWNpcGFsaXR5XCIsXHJcbiAgICAgIG11bmljaXBhbGl0eSxcclxuICAgIH0pO1xyXG4gICAgYWRkQWRkcmVzc1BvaW50c1RvQXJlYShzdGF0ZS5jdXJyZW50QXJlYSwgYWRkcmVzc1BvaW50cywgbGluZU51bWJlcik7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgYWRkQWRkcmVzc1BvaW50c1RvQXJlYSA9IChcclxuICBhcmVhOiBJbnRlcm1lZGlhdGVBcmVhLFxyXG4gIGFkZHJlc3NQb2ludHM6IEFkZHJlc3NQb2ludFtdLFxyXG4gIGxpbmVOdW1iZXI6IG51bWJlcixcclxuICBtdW5pY2lwYWxpdHlDb2RlPzogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGZvciAoY29uc3QgcG9pbnQgb2YgYWRkcmVzc1BvaW50cykge1xyXG4gICAgaWYgKGFyZWEuYWRkcmVzc01hcC5oYXMocG9pbnQuaWQpKSB7XHJcbiAgICAgIGFyZWEuYWRkcmVzc01hcC5nZXQocG9pbnQuaWQpLmxpbmVOdW1iZXJzLnB1c2gobGluZU51bWJlciAtIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJlYS5hZGRyZXNzTWFwLnNldChcclxuICAgICAgICBwb2ludC5pZCxcclxuICAgICAgICBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9pbnQsIGxpbmVOdW1iZXIsIG11bmljaXBhbGl0eUNvZGUpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc0FkZHJlc3NQb2ludExpbmUgPSBhc3luYyAoe1xyXG4gIGxpbmUsXHJcbiAgc3RhdGUsXHJcbiAgbGluZU51bWJlcixcclxuICBvbkVycm9yLFxyXG4gIG9uV2FybmluZyxcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBjb25zdCB7IHNtZExpbmVzLCBlcnJvcnMgfSA9IHBhcnNlTGluZShsaW5lKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGZvciAoY29uc3Qgc21kTGluZSBvZiBzbWRMaW5lcykge1xyXG4gICAgICBpZiAoc21kTGluZS50eXBlID09PSBcInN0cmVldFwiKSB7XHJcbiAgICAgICAgY29uc3QgeyBleGlzdHMsIGVycm9ycyB9ID0gYXdhaXQgY2hlY2tTdHJlZXRFeGlzdHMoXHJcbiAgICAgICAgICBzbWRMaW5lLnN0cmVldCxcclxuICAgICAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlclxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBvbldhcm5pbmcoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgICAgIGNvbnN0IGFkZHJlc3NQb2ludHMgPSBhd2FpdCBmaW5kQWRkcmVzc1BvaW50cyh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwic21kTGluZVwiLFxyXG4gICAgICAgICAgICBzbWRMaW5lLFxyXG4gICAgICAgICAgICBtdW5pY2lwYWxpdHk6IHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHksXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKFxyXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50QXJlYSxcclxuICAgICAgICAgICAgYWRkcmVzc1BvaW50cyxcclxuICAgICAgICAgICAgbGluZU51bWJlcixcclxuICAgICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5jb2RlICE9PVxyXG4gICAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkuY29kZVxyXG4gICAgICAgICAgICAgID8gc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eS5jb2RlXHJcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHNtZExpbmUudHlwZSA9PT0gXCJtdW5pY2lwYWxpdHlQYXJ0XCIpIHtcclxuICAgICAgICBjb25zdCB7IG11bmljaXBhbGl0eVBhcnRDb2RlLCBlcnJvcnMgfSA9XHJcbiAgICAgICAgICBhd2FpdCBnZXRNdW5pY2lwYWxpdHlQYXJ0UmVzdWx0KFxyXG4gICAgICAgICAgICBzbWRMaW5lLm11bmljaXBhbGl0eVBhcnQsXHJcbiAgICAgICAgICAgIGxpbmUsXHJcbiAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG9uV2FybmluZyh7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYWRkcmVzc1BvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgICAgICAgICAgdHlwZTogXCJzbWRMaW5lXCIsXHJcbiAgICAgICAgICAgIHNtZExpbmUsXHJcbiAgICAgICAgICAgIG11bmljaXBhbGl0eTogc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eSxcclxuICAgICAgICAgICAgbXVuaWNpcGFsaXR5UGFydENvZGUsXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKHN0YXRlLmN1cnJlbnRBcmVhLCBhZGRyZXNzUG9pbnRzLCBsaW5lTnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0VG9BcmVhID0gKFxyXG4gIHJlc3RQb2ludHM6IEFkZHJlc3NQb2ludFtdLFxyXG4gIGFyZWFJbmRleDogbnVtYmVyLFxyXG4gIGxpbmVOdW1iZXI6IG51bWJlcixcclxuICBzdGF0ZTogU21kU3RhdGVcclxuKSA9PiB7XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IGdldEFsbEFkZHJlc3NQb2ludHNJZHMoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSk7XHJcblxyXG4gIC8vIGZpbHRlciBvdXQgYWRkcmVzcyBwb2ludHMgYWxyZWFkeSBwcmVzZW50XHJcbiAgY29uc3QgcmVtYWluaW5nUG9pbnRzID0gcmVzdFBvaW50cy5maWx0ZXIoXHJcbiAgICAocG9pbnQpID0+ICFhZGRyZXNzUG9pbnRzSWRzLmhhcyhwb2ludC5pZClcclxuICApO1xyXG5cclxuICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5hcmVhcy5maW5kKChhcmVhKSA9PiBhcmVhLmluZGV4ID09PSBhcmVhSW5kZXgpLFxyXG4gICAgcmVtYWluaW5nUG9pbnRzLFxyXG4gICAgbGluZU51bWJlclxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0cyA9IGFzeW5jIChzdGF0ZTogU21kU3RhdGUpID0+IHtcclxuICBpZiAoc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYS5hcmVhSW5kZXggIT09IG51bGwpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RXaXRoTm9TdHJlZXROYW1lVG9TY2hvb2woXHJcbiAgICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEubGluZU51bWJlcixcclxuICAgICAgc3RhdGVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5KFxyXG4gICAgICBzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEubGluZU51bWJlcixcclxuICAgICAgc3RhdGVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IHJlc3Qgb2Ygc3RhdGUucmVzdHMubXVuaWNpcGFsaXR5UGFydHMpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RPZk11bmljaXBhbGl0eVBhcnQoXHJcbiAgICAgIHN0YXRlLFxyXG4gICAgICByZXN0Lm11bmljaXBhbGl0eVBhcnRDb2RlLFxyXG4gICAgICByZXN0LmFyZWFJbmRleCxcclxuICAgICAgcmVzdC5saW5lTnVtYmVyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlLnJlc3RzLmluY2x1ZGVVbm1hcHBlZEFkZHJlc3NQb2ludHMpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RPZk11bmljaXBhbGl0eVRvVW5tYXBwZWRQb2ludHMoc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYS5hcmVhSW5kZXggPSBudWxsO1xyXG4gIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYS5hcmVhSW5kZXggPSBudWxsO1xyXG4gIHN0YXRlLnJlc3RzLm11bmljaXBhbGl0eVBhcnRzID0gW107XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0V2l0aE5vU3RyZWV0TmFtZVRvU2Nob29sID0gYXN5bmMgKFxyXG4gIGxpbmVOdW1iZXI6IG51bWJlcixcclxuICBzdGF0ZTogU21kU3RhdGVcclxuKSA9PiB7XHJcbiAgLy8gZ2V0IGFsbCBhZGRyZXNzIHBvaW50cyB3aXRob3V0IHN0cmVldCBuYW1lIGZvciBjdXJyZW50IG11bmljaXBhbGl0eVxyXG4gIGNvbnN0IHBvaW50c05vU3RyZWV0TmFtZSA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlOb1N0cmVldE5hbWVcIixcclxuICAgIG11bmljaXBhbGl0eToge1xyXG4gICAgICBjb2RlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZSxcclxuICAgICAgdHlwZTogc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eVR5cGUsXHJcbiAgICB9LFxyXG4gIH0pO1xyXG4gIGFkZFJlc3RUb0FyZWEoXHJcbiAgICBwb2ludHNOb1N0cmVldE5hbWUsXHJcbiAgICBzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCxcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBzdGF0ZVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHkgPSBhc3luYyAobGluZU51bWJlcjogbnVtYmVyLCBzdGF0ZTogU21kU3RhdGUpID0+IHtcclxuICBhZGRSZXN0VG9BcmVhKFxyXG4gICAgYXdhaXQgZ2V0UmVzdE9mTXVuaWNpcGFsaXR5KHN0YXRlKSxcclxuICAgIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYS5hcmVhSW5kZXgsXHJcbiAgICBsaW5lTnVtYmVyLFxyXG4gICAgc3RhdGVcclxuICApO1xyXG59O1xyXG5cclxuY29uc3QgYWRkUmVzdE9mTXVuaWNpcGFsaXR5VG9Vbm1hcHBlZFBvaW50cyA9IGFzeW5jIChzdGF0ZTogU21kU3RhdGUpID0+IHtcclxuICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LnVubWFwcGVkUG9pbnRzID0gKFxyXG4gICAgYXdhaXQgZ2V0UmVzdE9mTXVuaWNpcGFsaXR5KHN0YXRlKVxyXG4gICkubWFwKChwb2ludCkgPT4gbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0KHBvaW50KSk7XHJcbn07XHJcblxyXG5jb25zdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkgPSBhc3luYyAoXHJcbiAgc3RhdGU6IFNtZFN0YXRlXHJcbik6IFByb21pc2U8QWRkcmVzc1BvaW50W10+ID0+IHtcclxuICAvLyBnZXQgYWxsIGFkZHJlc3MgcG9pbnRzIGZvciBjdXJyZW50IG11bmljaXBhbGl0eVxyXG4gIGNvbnN0IGFsbFBvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlcIixcclxuICAgIG11bmljaXBhbGl0eToge1xyXG4gICAgICBjb2RlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZSxcclxuICAgICAgdHlwZTogc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eVR5cGUsXHJcbiAgICB9LFxyXG4gIH0pO1xyXG5cclxuICAvLyBmaWx0ZXIgb3V0IGFkZHJlc3MgcG9pbnRzIGFscmVhZHkgcHJlc2VudFxyXG4gIGNvbnN0IGFkZHJlc3NQb2ludHNJZHMgPSBnZXRBbGxBZGRyZXNzUG9pbnRzSWRzKHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkpO1xyXG4gIHJldHVybiBhbGxQb2ludHMuZmlsdGVyKChwb2ludCkgPT4gIWFkZHJlc3NQb2ludHNJZHMuaGFzKHBvaW50LmlkKSk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0ID0gYXN5bmMgKFxyXG4gIHN0YXRlOiBTbWRTdGF0ZSxcclxuICBtdW5pY2lwYWxpdHlQYXJ0Q29kZTogbnVtYmVyLFxyXG4gIGFyZWFJbmRleDogbnVtYmVyLFxyXG4gIGxpbmVOdW1iZXI6IG51bWJlclxyXG4pID0+IHtcclxuICBjb25zdCBhbGxQb2ludHMgPSBhd2FpdCBmaW5kQWRkcmVzc1BvaW50cyh7XHJcbiAgICB0eXBlOiBcIndob2xlTXVuaWNpcGFsaXR5UGFydFwiLFxyXG4gICAgbXVuaWNpcGFsaXR5UGFydENvZGUsXHJcbiAgfSk7XHJcbiAgYWRkUmVzdFRvQXJlYShhbGxQb2ludHMsIGFyZWFJbmRleCwgbGluZU51bWJlciwgc3RhdGUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5ld011bmljaXBhbGl0eUJ5TmFtZSA9IGFzeW5jIChcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgc2Nob29sVHlwZTogU2Nob29sVHlwZVxyXG4pOiBQcm9taXNlPEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IHsgZm91bmRlciwgZXJyb3JzIH0gPSBhd2FpdCBmaW5kRm91bmRlcihuYW1lLCBzY2hvb2xUeXBlKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlGb3VuZGVySWQgPSBhc3luYyAoXHJcbiAgZm91bmRlcklkOiBudW1iZXIsXHJcbiAgc2Nob29sVHlwZTogU2Nob29sVHlwZVxyXG4pOiBQcm9taXNlPEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IHsgZm91bmRlciwgZXJyb3JzIH0gPSBhd2FpdCBnZXRGb3VuZGVyQnlJZChmb3VuZGVySWQsIHNjaG9vbFR5cGUpO1xyXG4gIHJldHVybiBnZXROZXdNdW5pY2lwYWxpdHkoZm91bmRlciwgZXJyb3JzKTtcclxufTtcclxuXHJcbmNvbnN0IGdldE5ld011bmljaXBhbGl0eSA9IChcclxuICBmb3VuZGVyOiBGb3VuZGVyLFxyXG4gIGVycm9yczogU21kRXJyb3JbXVxyXG4pOiBJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlSZXN1bHQgPT4gKHtcclxuICBtdW5pY2lwYWxpdHk6IHtcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IGZvdW5kZXIgPyBmb3VuZGVyLm5hbWUgOiBcIk5lem7DoW3DoSBvYmVjXCIsXHJcbiAgICBmb3VuZGVyLFxyXG4gICAgYXJlYXM6IFtdLFxyXG4gICAgY29kZTogZm91bmRlciA/IGZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZSA6IDAsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICBmb3VuZGVyLm11bmljaXBhbGl0eVR5cGUgPT09IE11bmljaXBhbGl0eVR5cGUuQ2l0eSA/IFwiY2l0eVwiIDogXCJkaXN0cmljdFwiLFxyXG4gICAgY2l0eUNvZGVzOlxyXG4gICAgICBmb3VuZGVyLm11bmljaXBhbGl0eVR5cGUgPT09IE11bmljaXBhbGl0eVR5cGUuQ2l0eVxyXG4gICAgICAgID8gW2ZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgZGlzdHJpY3RDb2RlczpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0XHJcbiAgICAgICAgPyBbZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlXVxyXG4gICAgICAgIDogW10sXHJcbiAgICB1bm1hcHBlZFBvaW50czogW10sXHJcbiAgfSxcclxuICBlcnJvcnMsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5ld1NjaG9vbCA9IGFzeW5jICh7XHJcbiAgbmFtZSxcclxuICBmb3VuZGVyLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgcmVxdWlyZWQsXHJcbiAgb25FcnJvcixcclxufToge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBmb3VuZGVyOiBGb3VuZGVyIHwgbnVsbDtcclxuICBsaW5lTnVtYmVyOiBudW1iZXI7XHJcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgb25FcnJvcjogKHBhcmFtczogRXJyb3JDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxufSk6IFByb21pc2U8SW50ZXJtZWRpYXRlU2Nob29sIHwgbnVsbD4gPT4ge1xyXG4gIGxldCBleHBvcnRTY2hvb2w6IFNjaG9vbCA9IHtcclxuICAgIG5hbWUsXHJcbiAgICBpem86IFwiXCIsXHJcbiAgfTtcclxuICBpZiAoZm91bmRlciAhPT0gbnVsbCkge1xyXG4gICAgY29uc3QgeyBzY2hvb2wsIGVycm9ycyB9ID0gZmluZFNjaG9vbChcclxuICAgICAgbmFtZSxcclxuICAgICAgZm91bmRlci5zY2hvb2xzLFxyXG4gICAgICByZXF1aXJlZCA/IHVuZGVmaW5lZCA6IDRcclxuICAgICk7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgb25FcnJvcih7IGxpbmVOdW1iZXIsIGxpbmU6IG5hbWUsIGVycm9ycyB9KTtcclxuICAgIH1cclxuICAgIGlmIChzY2hvb2wpIHtcclxuICAgICAgZXhwb3J0U2Nob29sLm5hbWUgPSBzY2hvb2wubmFtZTtcclxuICAgICAgZXhwb3J0U2Nob29sLml6byA9IHNjaG9vbC5pem8gfHwgXCJcIjtcclxuICAgICAgaWYgKHNjaG9vbC5sb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gYXdhaXQgZ2V0QWRkcmVzc1BvaW50QnlJZChcclxuICAgICAgICAgIHNjaG9vbC5sb2NhdGlvbnNbMF0uYWRkcmVzc1BvaW50SWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwb3NpdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgZXhwb3J0U2Nob29sLnBvc2l0aW9uID0gbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0KHBvc2l0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4geyAuLi5leHBvcnRTY2hvb2wsIGFkZHJlc3NNYXA6IG5ldyBNYXA8bnVtYmVyLCBFeHBvcnRBZGRyZXNzUG9pbnQ+KCkgfTtcclxufTtcclxuXHJcbmNvbnN0IGdldEFsbEFkZHJlc3NQb2ludHNJZHMgPSAoXHJcbiAgbXVuaWNpcGFsaXR5OiBJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlcclxuKTogU2V0PG51bWJlcj4gPT4ge1xyXG4gIGNvbnN0IGFkZHJlc3NQb2ludHNJZHMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgZm9yIChjb25zdCBhcmVhIG9mIG11bmljaXBhbGl0eS5hcmVhcykge1xyXG4gICAgZm9yIChjb25zdCBpZCBvZiBhcmVhLmFkZHJlc3NNYXAua2V5cygpKSB7XHJcbiAgICAgIGFkZHJlc3NQb2ludHNJZHMuYWRkKGlkKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFkZHJlc3NQb2ludHNJZHM7XHJcbn07XHJcblxyXG5jb25zdCBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQgPSAoXHJcbiAgYWRkcmVzc1BvaW50OiBBZGRyZXNzUG9pbnQgfCBFeHBvcnRBZGRyZXNzUG9pbnQsXHJcbiAgbGluZU51bWJlcj86IG51bWJlcixcclxuICBtdW5pY2lwYWxpdHlDb2RlPzogbnVtYmVyXHJcbik6IEV4cG9ydEFkZHJlc3NQb2ludCA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFkZHJlc3M6IGFkZHJlc3NQb2ludC5hZGRyZXNzLFxyXG4gICAgbGF0OiByb3VuZFRvTkRlY2ltYWxQbGFjZXMoYWRkcmVzc1BvaW50LmxhdCwgNiksXHJcbiAgICBsbmc6IHJvdW5kVG9ORGVjaW1hbFBsYWNlcyhhZGRyZXNzUG9pbnQubG5nLCA2KSxcclxuICAgIC4uLihsaW5lTnVtYmVyICE9PSB1bmRlZmluZWQgPyB7IGxpbmVOdW1iZXJzOiBbbGluZU51bWJlciAtIDFdIH0gOiB7fSksXHJcbiAgICAuLi4obXVuaWNpcGFsaXR5Q29kZSAhPT0gdW5kZWZpbmVkID8geyBtdW5pY2lwYWxpdHlDb2RlIH0gOiB7fSksXHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IG1hcEFyZWFGb3JFeHBvcnQgPSAoYXJlYTogSW50ZXJtZWRpYXRlQXJlYSk6IEludGVybWVkaWF0ZUFyZWEgPT4gKHtcclxuICAuLi5hcmVhLFxyXG4gIHNjaG9vbHM6IGFyZWEuc2Nob29scy5tYXAoKHNjaG9vbCkgPT4gKHtcclxuICAgIC4uLnNjaG9vbCxcclxuICAgIHBvc2l0aW9uOiBzY2hvb2wucG9zaXRpb25cclxuICAgICAgPyBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQoc2Nob29sLnBvc2l0aW9uKVxyXG4gICAgICA6IG51bGwsXHJcbiAgfSkpLFxyXG59KTtcclxuXHJcbmNvbnN0IGNsZWFuTGluZSA9IChsaW5lOiBzdHJpbmcpID0+IHtcclxuICByZXR1cm4gbGluZS50cmltKCkucmVwbGFjZSgv4oCTL2csIFwiLVwiKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB3aG9sZUxpbmVFcnJvciA9IChtZXNzYWdlOiBzdHJpbmcsIGxpbmU6IHN0cmluZyk6IFNtZEVycm9yID0+ICh7XHJcbiAgbWVzc2FnZSxcclxuICBzdGFydE9mZnNldDogMCxcclxuICBlbmRPZmZzZXQ6IGxpbmUubGVuZ3RoICsgMSxcclxufSk7XHJcblxyXG5jb25zdCByb3VuZFRvTkRlY2ltYWxQbGFjZXMgPSAoXHJcbiAgdG9Sb3VuZDogbnVtYmVyLFxyXG4gIGRlY2ltYWxQbGFjZXM6IG51bWJlclxyXG4pOiBudW1iZXIgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBNYXRoLnJvdW5kKHRvUm91bmQgKiBNYXRoLnBvdygxMCwgZGVjaW1hbFBsYWNlcykpIC9cclxuICAgIE1hdGgucG93KDEwLCBkZWNpbWFsUGxhY2VzKVxyXG4gICk7XHJcbn07XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AddressPoint as CzechAddressPoint } from "czech-address";
|
|
2
|
-
import { Municipality as DbMunicipality, Founder } from "../db/types";
|
|
2
|
+
import { Municipality as DbMunicipality, Founder, SchoolType } from "../db/types";
|
|
3
3
|
export interface ProcessedSmdLines {
|
|
4
4
|
smdLines: SmdLine[];
|
|
5
5
|
errors: SmdError[];
|
|
@@ -137,6 +137,7 @@ export interface ProcessLineParams {
|
|
|
137
137
|
rawLine: string;
|
|
138
138
|
state: SmdState;
|
|
139
139
|
lineNumber: number;
|
|
140
|
+
schoolType: SchoolType;
|
|
140
141
|
onError: (params: ErrorCallbackParams) => void;
|
|
141
142
|
onWarning: (params: ErrorCallbackParams) => void;
|
|
142
143
|
}
|
|
@@ -10,4 +10,4 @@ export var SeriesType;
|
|
|
10
10
|
SeriesType[SeriesType["Description"] = 3] = "Description";
|
|
11
11
|
})(SeriesType || (SeriesType = {}));
|
|
12
12
|
export const isAddressPoint = (something) => something.hasOwnProperty("id");
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVDQSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixTQUE0QyxFQUNqQixFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxTQUE0QyxFQUNqQixFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQWlCckUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsU0FBdUMsRUFDUixFQUFFLENBQ2pDLFNBQVMsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsU0FBdUMsRUFDZixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFOUUsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQiwyQ0FBSSxDQUFBO0lBQ0oseUNBQUcsQ0FBQTtJQUNILHlDQUFHLENBQUE7SUFDSCx5REFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBa0JELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixTQUE0QyxFQUNqQixFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZHJlc3NQb2ludCBhcyBDemVjaEFkZHJlc3NQb2ludCB9IGZyb20gXCJjemVjaC1hZGRyZXNzXCI7XHJcbmltcG9ydCB7XHJcbiAgTXVuaWNpcGFsaXR5IGFzIERiTXVuaWNpcGFsaXR5LFxyXG4gIEZvdW5kZXIsXHJcbiAgU2Nob29sVHlwZSxcclxufSBmcm9tIFwiLi4vZGIvdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkU21kTGluZXMge1xyXG4gIHNtZExpbmVzOiBTbWRMaW5lW107XHJcbiAgZXJyb3JzOiBTbWRFcnJvcltdO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTbWRMaW5lVHlwZSA9XHJcbiAgfCBcInN0cmVldFwiXHJcbiAgfCBcIndob2xlTXVuaWNpcGFsaXR5TGluZVwiXHJcbiAgfCBcIm11bmljaXBhbGl0eVN3aXRjaFwiXHJcbiAgfCBcIm11bmljaXBhbGl0eVBhcnRcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFNtZExpbmUgPVxyXG4gIHwge1xyXG4gICAgICB0eXBlOiBcInN0cmVldFwiO1xyXG4gICAgICBzdHJlZXQ6IHN0cmluZztcclxuICAgICAgbnVtYmVyU3BlYzogU2VyaWVzU3BlY1tdIHwgTmVnYXRpdmVTZXJpZXNTcGVjO1xyXG4gICAgfVxyXG4gIHwge1xyXG4gICAgICB0eXBlOiBcIm11bmljaXBhbGl0eVBhcnRcIjtcclxuICAgICAgbXVuaWNpcGFsaXR5UGFydDogc3RyaW5nO1xyXG4gICAgICBudW1iZXJTcGVjOiBTZXJpZXNTcGVjW10gfCBOZWdhdGl2ZVNlcmllc1NwZWM7XHJcbiAgICB9O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZXJpZXNTcGVjIHtcclxuICB0eXBlOiBTZXJpZXNUeXBlO1xyXG4gIHJhbmdlczogKFJhbmdlU3BlYyB8IEZ1bGxTdHJlZXROdW1iZXIpW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmVnYXRpdmVTZXJpZXNTcGVjIGV4dGVuZHMgU2VyaWVzU3BlYyB7XHJcbiAgbmVnYXRpdmU6IHRydWU7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc1Nlcmllc1NwZWNBcnJheSA9IChcclxuICBzb21ldGhpbmc6IFNlcmllc1NwZWNbXSB8IE5lZ2F0aXZlU2VyaWVzU3BlY1xyXG4pOiBzb21ldGhpbmcgaXMgU2VyaWVzU3BlY1tdID0+IEFycmF5LmlzQXJyYXkoc29tZXRoaW5nKTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc05lZ2F0aXZlU2VyaWVzU3BlYyA9IChcclxuICBzb21ldGhpbmc6IFNlcmllc1NwZWNbXSB8IE5lZ2F0aXZlU2VyaWVzU3BlY1xyXG4pOiBzb21ldGhpbmcgaXMgU2VyaWVzU3BlY1tdID0+IHNvbWV0aGluZy5oYXNPd25Qcm9wZXJ0eShcIm5lZ2F0aXZlXCIpO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZVNwZWMge1xyXG4gIGZyb20/OiBSaWNoTnVtYmVyO1xyXG4gIHRvPzogUmljaE51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSaWNoTnVtYmVyIHtcclxuICBudW1iZXI6IG51bWJlcjtcclxuICBsZXR0ZXI/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRnVsbFN0cmVldE51bWJlciB7XHJcbiAgZGVzY3JpcHRpb25OdW1iZXI6IFJpY2hOdW1iZXI7XHJcbiAgb3JpZW50YXRpb25hbE51bWJlcjogUmljaE51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGlzRnVsbFN0cmVldE51bWJlciA9IChcclxuICBzb21ldGhpbmc6IFJhbmdlU3BlYyB8IEZ1bGxTdHJlZXROdW1iZXJcclxuKTogc29tZXRoaW5nIGlzIEZ1bGxTdHJlZXROdW1iZXIgPT5cclxuICBzb21ldGhpbmcuaGFzT3duUHJvcGVydHkoXCJvcmllbnRhdGlvbmFsTnVtYmVyXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzUmFuZ2UgPSAoXHJcbiAgc29tZXRoaW5nOiBSYW5nZVNwZWMgfCBGdWxsU3RyZWV0TnVtYmVyXHJcbik6IHNvbWV0aGluZyBpcyBSYW5nZVNwZWMgPT4gIXNvbWV0aGluZy5oYXNPd25Qcm9wZXJ0eShcIm9yaWVudGF0aW9uYWxOdW1iZXJcIik7XHJcblxyXG5leHBvcnQgZW51bSBTZXJpZXNUeXBlIHtcclxuICBFdmVuLFxyXG4gIE9kZCxcclxuICBBbGwsXHJcbiAgRGVzY3JpcHRpb24sXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWRkcmVzc1BvaW50IGV4dGVuZHMgQ3plY2hBZGRyZXNzUG9pbnQge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgYWRkcmVzczogc3RyaW5nO1xyXG4gIGxhdDogbnVtYmVyO1xyXG4gIGxuZzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydEFkZHJlc3NQb2ludCB7XHJcbiAgYWRkcmVzczogc3RyaW5nO1xyXG4gIGxhdDogbnVtYmVyO1xyXG4gIGxuZzogbnVtYmVyO1xyXG4gIGxpbmVOdW1iZXJzPzogbnVtYmVyW107XHJcbiAgLy8gZGVmaW5lZCBpZiB0aGUgcG9pbnQgaXMgaW4gYSBkaWZmZXJlbnQgbXVuaWNpcGFsaXR5LCBleGNlcHQgYSB3aG9sZSBtdW5pY2lwYWxpdHkgZm9yIHRoZSBzYW1lIHNjaG9vbFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc0FkZHJlc3NQb2ludCA9IChcclxuICBzb21ldGhpbmc6IEFkZHJlc3NQb2ludCB8IEV4cG9ydEFkZHJlc3NQb2ludFxyXG4pOiBzb21ldGhpbmcgaXMgQWRkcmVzc1BvaW50ID0+IHNvbWV0aGluZy5oYXNPd25Qcm9wZXJ0eShcImlkXCIpO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTY2hvb2wge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpem86IHN0cmluZztcclxuICBwb3NpdGlvbj86IEFkZHJlc3NQb2ludCB8IEV4cG9ydEFkZHJlc3NQb2ludDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm1lZGlhdGVTY2hvb2wgZXh0ZW5kcyBTY2hvb2wge1xyXG4gIGFkZHJlc3NNYXA6IE1hcDxudW1iZXIsIEV4cG9ydEFkZHJlc3NQb2ludD47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJlYSB7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxuICBzY2hvb2xzOiBTY2hvb2xbXTtcclxuICBhZGRyZXNzZXM6IEV4cG9ydEFkZHJlc3NQb2ludFtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEludGVybWVkaWF0ZUFyZWEgZXh0ZW5kcyBBcmVhIHtcclxuICBhZGRyZXNzTWFwOiBNYXA8bnVtYmVyLCBFeHBvcnRBZGRyZXNzUG9pbnQ+O1xyXG4gIGFsbFNjaG9vbHNBZGRlZDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdW5pY2lwYWxpdHkge1xyXG4gIG11bmljaXBhbGl0eU5hbWU6IHN0cmluZztcclxuICBjb2RlOiBudW1iZXI7XHJcbiAgbXVuaWNpcGFsaXR5VHlwZTogXCJjaXR5XCIgfCBcImRpc3RyaWN0XCI7XHJcbiAgY2l0eUNvZGVzOiBudW1iZXJbXTtcclxuICBkaXN0cmljdENvZGVzOiBudW1iZXJbXTtcclxuICBhcmVhczogQXJlYVtdO1xyXG4gIHVubWFwcGVkUG9pbnRzOiBFeHBvcnRBZGRyZXNzUG9pbnRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYk11bmljaXBhbGl0eVJlc3VsdCB7XHJcbiAgbXVuaWNpcGFsaXR5OiBEYk11bmljaXBhbGl0eTtcclxuICBlcnJvcnM6IFNtZEVycm9yW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXVuaWNpcGFsaXR5UGFydFJlc3VsdCB7XHJcbiAgbXVuaWNpcGFsaXR5UGFydENvZGU6IG51bWJlcjtcclxuICBlcnJvcnM6IFNtZEVycm9yW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXVuaWNpcGFsaXR5V2l0aEZvdW5kZXIgZXh0ZW5kcyBNdW5pY2lwYWxpdHkge1xyXG4gIGZvdW5kZXI6IEZvdW5kZXIgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEludGVybWVkaWF0ZU11bmljaXBhbGl0eSBleHRlbmRzIE11bmljaXBhbGl0eVdpdGhGb3VuZGVyIHtcclxuICBhcmVhczogSW50ZXJtZWRpYXRlQXJlYVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdCB7XHJcbiAgbXVuaWNpcGFsaXR5OiBJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHk7XHJcbiAgZXJyb3JzOiBTbWRFcnJvcltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtZFN0YXRlIHtcclxuICBjdXJyZW50TXVuaWNpcGFsaXR5OiBJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHk7XHJcbiAgY3VycmVudEZpbHRlck11bmljaXBhbGl0eTogRGJNdW5pY2lwYWxpdHk7XHJcbiAgY3VycmVudEFyZWE6IEludGVybWVkaWF0ZUFyZWE7XHJcbiAgc2Nob29sc0NvbXBsZXRlZDogYm9vbGVhbjtcclxuICBhcmVhQ291bnQ6IG51bWJlcjtcclxuICByZXN0czoge1xyXG4gICAgbm9TdHJlZXROYW1lQXJlYToge1xyXG4gICAgICBhcmVhSW5kZXg6IG51bWJlcjtcclxuICAgICAgbGluZU51bWJlcjogbnVtYmVyO1xyXG4gICAgfTtcclxuICAgIG11bmljaXBhbGl0eVBhcnRzOiB7XHJcbiAgICAgIG11bmljaXBhbGl0eVBhcnRDb2RlOiBudW1iZXI7XHJcbiAgICAgIGFyZWFJbmRleDogbnVtYmVyO1xyXG4gICAgICBsaW5lTnVtYmVyOiBudW1iZXI7XHJcbiAgICB9W107XHJcbiAgICB3aG9sZU11bmljaXBhbGl0eUFyZWE6IHtcclxuICAgICAgYXJlYUluZGV4OiBudW1iZXI7XHJcbiAgICAgIGxpbmVOdW1iZXI6IG51bWJlcjtcclxuICAgIH07XHJcbiAgICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzOiBib29sZWFuO1xyXG4gIH07XHJcbiAgbXVuaWNpcGFsaXRpZXM6IE11bmljaXBhbGl0eVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NMaW5lQ2FsbGJhY2tQYXJhbXMge1xyXG4gIGxpbmVOdW1iZXI6IG51bWJlcjtcclxuICBsaW5lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JDYWxsYmFja1BhcmFtcyBleHRlbmRzIFByb2Nlc3NMaW5lQ2FsbGJhY2tQYXJhbXMge1xyXG4gIGVycm9yczogU21kRXJyb3JbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzTGluZVBhcmFtcyB7XHJcbiAgbGluZTogc3RyaW5nO1xyXG4gIHJhd0xpbmU6IHN0cmluZztcclxuICBzdGF0ZTogU21kU3RhdGU7XHJcbiAgbGluZU51bWJlcjogbnVtYmVyO1xyXG4gIHNjaG9vbFR5cGU6IFNjaG9vbFR5cGU7XHJcbiAgb25FcnJvcjogKHBhcmFtczogRXJyb3JDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxuICBvbldhcm5pbmc6IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21kRXJyb3Ige1xyXG4gIHN0YXJ0T2Zmc2V0OiBudW1iZXI7XHJcbiAgZW5kT2Zmc2V0OiBudW1iZXI7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
},
|
|
74
74
|
"name": "text-to-map",
|
|
75
75
|
"description": "Text To Map usiluje o lepší, strojově zpracovatelné využití částí vyhlášek s výčtem ulic a dalších lokací. Jde o rozšiřitelnou sadu konceptů a nástrojů, které zajistí hladký převod výčtu ulic a jejich rozsahů v lidsky srozumitelném jazyce do strojově zpracovatelného, uchopitelného formátu.",
|
|
76
|
-
"version": "1.1.
|
|
76
|
+
"version": "1.1.37",
|
|
77
77
|
"main": "dist/index.js",
|
|
78
78
|
"types": "dist/index.d.ts",
|
|
79
79
|
"files": [
|