text-to-map 1.1.32 → 1.1.33
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.
|
@@ -24,6 +24,9 @@ export const municipalitiesToPolygons = async (municipalities) => {
|
|
|
24
24
|
// areaIndex -> polygon
|
|
25
25
|
const extraPolygonsMap = new Map();
|
|
26
26
|
for (const municipality of municipalities) {
|
|
27
|
+
if (municipality.areas.length === 0) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
27
30
|
const { featureCollection, extraPolygons } = createPolygons(municipality, extraAreas.get(municipality.code) ?? [], getMunicipalityPolygons(municipality, cityPolygons, districtPolygons));
|
|
28
31
|
collectionMap.set(municipality.code, featureCollection);
|
|
29
32
|
if (extraAreas.has(municipality.code)) {
|
|
@@ -250,4 +253,4 @@ const extractMunicipalityCodes = (municipalities) => {
|
|
|
250
253
|
}, { cityCodes: new Set(), districtCodes: new Set() });
|
|
251
254
|
};
|
|
252
255
|
const extractPolygonFromCollection = (collection) => collection.features.length > 1 ? union(collection) : collection.features[0];
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3BvbHlnb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkMsT0FBTyxFQU1MLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEUsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFRMUMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxFQUMzQyxjQUE4QixFQUNjLEVBQUU7SUFDOUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5RSxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFbEUsSUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FB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QyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbGF1bmF5IH0gZnJvbSBcImQzLWRlbGF1bmF5XCI7XHJcbmltcG9ydCB7IEFyZWEsIEV4cG9ydEFkZHJlc3NQb2ludCwgTXVuaWNpcGFsaXR5IH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlQ29sbGVjdGlvbixcclxuICBNdWx0aVBvbHlnb24sXHJcbiAgUG9pbnQsXHJcbiAgUG9seWdvbixcclxuICBmZWF0dXJlQ29sbGVjdGlvbixcclxufSBmcm9tIFwiQHR1cmYvaGVscGVyc1wiO1xyXG5pbXBvcnQgaW50ZXJzZWN0IGZyb20gXCJAdHVyZi9pbnRlcnNlY3RcIjtcclxuaW1wb3J0IHsgYm9vbGVhbkludGVyc2VjdHMgfSBmcm9tIFwiQHR1cmYvYm9vbGVhbi1pbnRlcnNlY3RzXCI7XHJcbmltcG9ydCBHcmFwaCBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyBjb2xvciB9IGZyb20gXCJncmFwaG9sb2d5LWNvbG9yXCI7XHJcbmltcG9ydCB7IHRvTWVyY2F0b3IsIHRvV2dzODQgfSBmcm9tIFwiQHR1cmYvcHJvamVjdGlvblwiO1xyXG5pbXBvcnQgdW5pb24gZnJvbSBcIkB0dXJmL3VuaW9uXCI7XHJcbmltcG9ydCB7IGdldENpdHlQb2x5Z29ucywgZ2V0RGlzdHJpY3RQb2x5Z29ucyB9IGZyb20gXCIuLi9kYi9jaXRpZXNcIjtcclxuaW1wb3J0IHRydW5jYXRlIGZyb20gXCJAdHVyZi90cnVuY2F0ZVwiO1xyXG5pbXBvcnQgeyBQb2x5Z29uc0J5Q29kZXMgfSBmcm9tIFwiLi4vZGIvdHlwZXNcIjtcclxuaW1wb3J0IGRpZmZlcmVuY2UgZnJvbSBcIkB0dXJmL2RpZmZlcmVuY2VcIjtcclxuXHJcbnR5cGUgUG9seWdvblByb3BzID0ge1xyXG4gIGFyZWFJbmRleGVzOiBudW1iZXJbXTtcclxuICBpbmRleDogbnVtYmVyO1xyXG4gIG5laWdoYm9yczogU2V0PG51bWJlcj47XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbXVuaWNpcGFsaXRpZXNUb1BvbHlnb25zID0gYXN5bmMgKFxyXG4gIG11bmljaXBhbGl0aWVzOiBNdW5pY2lwYWxpdHlbXVxyXG4pOiBQcm9taXNlPFJlY29yZDxudW1iZXIsIEZlYXR1cmVDb2xsZWN0aW9uPj4gPT4ge1xyXG4gIGNvbnN0IHsgY2l0eUNvZGVzLCBkaXN0cmljdENvZGVzIH0gPSBleHRyYWN0TXVuaWNpcGFsaXR5Q29kZXMobXVuaWNpcGFsaXRpZXMpO1xyXG4gIGNvbnN0IGNpdHlQb2x5Z29ucyA9IGF3YWl0IGdldENpdHlQb2x5Z29ucyhjaXR5Q29kZXMpO1xyXG4gIGNvbnN0IGRpc3RyaWN0UG9seWdvbnMgPSBhd2FpdCBnZXREaXN0cmljdFBvbHlnb25zKGRpc3RyaWN0Q29kZXMpO1xyXG5cclxuICBpZiAoXHJcbiAgICBPYmplY3Qua2V5cyhjaXR5UG9seWdvbnMpLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgT2JqZWN0LmtleXMoZGlzdHJpY3RQb2x5Z29ucykubGVuZ3RoID09PSAwXHJcbiAgKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIk5vIHBvbHlnb25zIGZvdW5kIGZvciBnaXZlbiBtdW5pY2lwYWxpdGllcy5cIik7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICAvLyBtdW5pY2lwYWxpdHlDb2RlIC0+IGFyZWFzXHJcbiAgY29uc3QgZXh0cmFBcmVhcyA9IGdldEV4dHJhQXJlYXMobXVuaWNpcGFsaXRpZXMpO1xyXG5cclxuICBjb25zdCBjb2xsZWN0aW9uTWFwID0gbmV3IE1hcDxcclxuICAgIG51bWJlcixcclxuICAgIEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+XHJcbiAgPigpO1xyXG4gIC8vIGFyZWFJbmRleCAtPiBwb2x5Z29uXHJcbiAgY29uc3QgZXh0cmFQb2x5Z29uc01hcCA9IG5ldyBNYXA8bnVtYmVyLCBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+W10+KCk7XHJcblxyXG4gIGZvciAoY29uc3QgbXVuaWNpcGFsaXR5IG9mIG11bmljaXBhbGl0aWVzKSB7XHJcbiAgICBjb25zdCB7IGZlYXR1cmVDb2xsZWN0aW9uLCBleHRyYVBvbHlnb25zIH0gPSBjcmVhdGVQb2x5Z29ucyhcclxuICAgICAgbXVuaWNpcGFsaXR5LFxyXG4gICAgICBleHRyYUFyZWFzLmdldChtdW5pY2lwYWxpdHkuY29kZSkgPz8gW10sXHJcbiAgICAgIGdldE11bmljaXBhbGl0eVBvbHlnb25zKG11bmljaXBhbGl0eSwgY2l0eVBvbHlnb25zLCBkaXN0cmljdFBvbHlnb25zKVxyXG4gICAgKTtcclxuICAgIGNvbGxlY3Rpb25NYXAuc2V0KG11bmljaXBhbGl0eS5jb2RlLCBmZWF0dXJlQ29sbGVjdGlvbik7XHJcbiAgICBpZiAoZXh0cmFBcmVhcy5oYXMobXVuaWNpcGFsaXR5LmNvZGUpKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW2FyZWFJbmRleCwgZXh0cmFQb2x5Z29uXSBvZiBleHRyYVBvbHlnb25zKSB7XHJcbiAgICAgICAgaWYgKCFleHRyYVBvbHlnb25zTWFwLmhhcyhhcmVhSW5kZXgpKSB7XHJcbiAgICAgICAgICBleHRyYVBvbHlnb25zTWFwLnNldChhcmVhSW5kZXgsIFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXh0cmFQb2x5Z29uc01hcC5nZXQoYXJlYUluZGV4KS5wdXNoKGV4dHJhUG9seWdvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEV4dHJhUG9seWdvbnMoY29sbGVjdGlvbk1hcCwgZXh0cmFQb2x5Z29uc01hcCk7XHJcblxyXG4gIGZpbmRDb2xvcmluZyhjb2xsZWN0aW9uTWFwKTtcclxuXHJcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8bnVtYmVyLCBGZWF0dXJlQ29sbGVjdGlvbj4gPSB7fTtcclxuICBmb3IgKGNvbnN0IFttdW5pY2lwYWxpdHlDb2RlLCBjb2xsZWN0aW9uXSBvZiBjb2xsZWN0aW9uTWFwKSB7XHJcbiAgICByZXN1bHRbbXVuaWNpcGFsaXR5Q29kZV0gPSBjb2xsZWN0aW9uO1xyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuY29uc3QgZmluZENvbG9yaW5nID0gKGNvbGxlY3Rpb25NYXA6IE1hcDxudW1iZXIsIEZlYXR1cmVDb2xsZWN0aW9uPikgPT4ge1xyXG4gIC8vIGhlcmUgZG8gdGhlIGNvbG9yaW5nXHJcbiAgLy8gcHV0IGFsbCB0aGUgZmVhdHVyZXMgaW4gb25lIGFycmF5XHJcbiAgY29uc3QgYWxsRmVhdHVyZXMgPSBBcnJheS5mcm9tKGNvbGxlY3Rpb25NYXAudmFsdWVzKCkpLnJlZHVjZShcclxuICAgIChhY2MsIGNvbGxlY3Rpb24pID0+IHtcclxuICAgICAgYWNjLnB1c2goLi4uY29sbGVjdGlvbi5mZWF0dXJlcyk7XHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LFxyXG4gICAgW11cclxuICApO1xyXG5cclxuICBjb25zdCBncmFwaCA9IG5ldyBHcmFwaCgpO1xyXG4gIGFsbEZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmUpID0+IHtcclxuICAgIGdyYXBoLmFkZE5vZGUoZmVhdHVyZS5wcm9wZXJ0aWVzLmFyZWFJbmRleCk7XHJcbiAgfSk7XHJcblxyXG4gIGZvciAoY29uc3QgZmVhdHVyZTEgb2YgYWxsRmVhdHVyZXMpIHtcclxuICAgIGZvciAoY29uc3QgZmVhdHVyZTIgb2YgYWxsRmVhdHVyZXMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGZlYXR1cmUxLnByb3BlcnRpZXMuYXJlYUluZGV4ICE9PSBmZWF0dXJlMi5wcm9wZXJ0aWVzLmFyZWFJbmRleCAmJlxyXG4gICAgICAgIGJvb2xlYW5JbnRlcnNlY3RzKGZlYXR1cmUxLCBmZWF0dXJlMilcclxuICAgICAgKSB7XHJcbiAgICAgICAgZ3JhcGguYWRkRWRnZShcclxuICAgICAgICAgIGZlYXR1cmUxLnByb3BlcnRpZXMuYXJlYUluZGV4LFxyXG4gICAgICAgICAgZmVhdHVyZTIucHJvcGVydGllcy5hcmVhSW5kZXhcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb2xvcihncmFwaCk7XHJcblxyXG4gIGFsbEZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmUpID0+IHtcclxuICAgIGZlYXR1cmUucHJvcGVydGllcy5jb2xvckluZGV4ID0gZ3JhcGguZ2V0Tm9kZUF0dHJpYnV0ZShcclxuICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmFyZWFJbmRleCxcclxuICAgICAgXCJjb2xvclwiXHJcbiAgICApO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0RXh0cmFBcmVhcyA9IChtdW5pY2lwYWxpdGllczogTXVuaWNpcGFsaXR5W10pOiBNYXA8bnVtYmVyLCBBcmVhW10+ID0+IHtcclxuICAvLyBtdW5pY2lwYWxpdHlDb2RlIC0+IGFyZWFzXHJcbiAgY29uc3QgZXh0cmFBcmVhcyA9IG5ldyBNYXA8bnVtYmVyLCBBcmVhW10+KCk7XHJcblxyXG4gIGZvciAoY29uc3QgbXVuaWNpcGFsaXR5IG9mIG11bmljaXBhbGl0aWVzKSB7XHJcbiAgICBmb3IgKGNvbnN0IGFyZWEgb2YgbXVuaWNpcGFsaXR5LmFyZWFzKSB7XHJcbiAgICAgIC8vIG11bmljaXBhbGl0eUNvZGUgLT4gcG9pbnRzXHJcbiAgICAgIGNvbnN0IGV4dHJhUG9pbnRzID0gbmV3IE1hcDxudW1iZXIsIEV4cG9ydEFkZHJlc3NQb2ludFtdPigpO1xyXG4gICAgICBmb3IgKGNvbnN0IHBvaW50IG9mIGFyZWEuYWRkcmVzc2VzKSB7XHJcbiAgICAgICAgaWYgKHBvaW50Lm11bmljaXBhbGl0eUNvZGUpIHtcclxuICAgICAgICAgIGlmICghZXh0cmFQb2ludHMuaGFzKHBvaW50Lm11bmljaXBhbGl0eUNvZGUpKSB7XHJcbiAgICAgICAgICAgIGV4dHJhUG9pbnRzLnNldChwb2ludC5tdW5pY2lwYWxpdHlDb2RlLCBbXSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZXh0cmFQb2ludHMuZ2V0KHBvaW50Lm11bmljaXBhbGl0eUNvZGUpLnB1c2gocG9pbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBbbXVuaWNpcGFsaXR5Q29kZSwgcG9pbnRzXSBvZiBleHRyYVBvaW50cykge1xyXG4gICAgICAgIGlmICghZXh0cmFBcmVhcy5oYXMobXVuaWNpcGFsaXR5Q29kZSkpIHtcclxuICAgICAgICAgIGV4dHJhQXJlYXMuc2V0KG11bmljaXBhbGl0eUNvZGUsIFtdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV4dHJhQXJlYXMuZ2V0KG11bmljaXBhbGl0eUNvZGUpLnB1c2goe1xyXG4gICAgICAgICAgLi4uYXJlYSxcclxuICAgICAgICAgIGFkZHJlc3NlczogcG9pbnRzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBleHRyYUFyZWFzO1xyXG59O1xyXG5cclxuY29uc3QgYWRkRXh0cmFQb2x5Z29ucyA9IChcclxuICBjb2xsZWN0aW9uTWFwOiBNYXA8bnVtYmVyLCBGZWF0dXJlQ29sbGVjdGlvbjxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPj4sXHJcbiAgZXh0cmFQb2x5Z29uc01hcDogTWFwPG51bWJlciwgRmVhdHVyZTxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPltdPlxyXG4pID0+IHtcclxuICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbk1hcC52YWx1ZXMoKSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xsZWN0aW9uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBjb2xsZWN0aW9uLmZlYXR1cmVzW2ldO1xyXG4gICAgICBpZiAoZXh0cmFQb2x5Z29uc01hcC5oYXMoZmVhdHVyZS5wcm9wZXJ0aWVzLmFyZWFJbmRleCkpIHtcclxuICAgICAgICBjb25zdCBwb2x5Z29ucyA9IGV4dHJhUG9seWdvbnNNYXAuZ2V0KGZlYXR1cmUucHJvcGVydGllcy5hcmVhSW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IG5ld1BvbHlnb24gPSB1bmlvbihmZWF0dXJlQ29sbGVjdGlvbihbLi4ucG9seWdvbnMsIGZlYXR1cmVdKSk7XHJcbiAgICAgICAgY29uc3QgbmV3RmVhdHVyZSA9IHtcclxuICAgICAgICAgIC4uLm5ld1BvbHlnb24sXHJcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IC4uLmZlYXR1cmUucHJvcGVydGllcyB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sbGVjdGlvbi5mZWF0dXJlc1tpXSA9IG5ld0ZlYXR1cmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBnZXRNdW5pY2lwYWxpdHlQb2x5Z29ucyA9IChcclxuICBtdW5pY2lwYWxpdHk6IE11bmljaXBhbGl0eSxcclxuICBjaXR5UG9seWdvbnM6IFBvbHlnb25zQnlDb2RlcyxcclxuICBkaXN0cmljdFBvbHlnb25zOiBQb2x5Z29uc0J5Q29kZXNcclxuKTogUG9seWdvbnNCeUNvZGVzID0+IHtcclxuICBjb25zdCBwb2x5Z29uczogUG9seWdvbnNCeUNvZGVzID0ge307XHJcblxyXG4gIGZvciAoY29uc3QgY2l0eUNvZGUgb2YgbXVuaWNpcGFsaXR5LmNpdHlDb2Rlcykge1xyXG4gICAgaWYgKGNpdHlQb2x5Z29uc1tjaXR5Q29kZV0pIHtcclxuICAgICAgcG9seWdvbnNbY2l0eUNvZGVdID0gY2l0eVBvbHlnb25zW2NpdHlDb2RlXTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBtdW5pY2lwYWxpdHkubXVuaWNpcGFsaXR5VHlwZSA9PT0gXCJjaXR5XCIgJiZcclxuICAgICAgICBPYmplY3Qua2V5cyhkaXN0cmljdFBvbHlnb25zKS5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgbXVuaWNpcGFsaXR5Lm11bmljaXBhbGl0eU5hbWUgIT09IFwiQnJub1wiXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxldCBjaXR5UG9seWdvbiA9IGV4dHJhY3RQb2x5Z29uRnJvbUNvbGxlY3Rpb24oY2l0eVBvbHlnb25zW2NpdHlDb2RlXSk7XHJcbiAgICAgICAgLy8gc3VidHJhY3QgYWxsIGRpc3RyaWN0IHBvbHlnb25zIGZyb20gY2l0eSBwb2x5Z29uXHJcbiAgICAgICAgZm9yIChjb25zdCBbZGlzdHJpY3RDb2RlLCBkaXN0cmljdFBvbHlnb25dIG9mIE9iamVjdC5lbnRyaWVzKFxyXG4gICAgICAgICAgZGlzdHJpY3RQb2x5Z29uc1xyXG4gICAgICAgICkpIHtcclxuICAgICAgICAgIGlmIChtdW5pY2lwYWxpdHkuZGlzdHJpY3RDb2Rlcy5pbmNsdWRlcyhwYXJzZUludChkaXN0cmljdENvZGUpKSkge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNpdHlQb2x5Z29uID0gZGlmZmVyZW5jZShcclxuICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24oW1xyXG4gICAgICAgICAgICAgIGNpdHlQb2x5Z29uLFxyXG4gICAgICAgICAgICAgIGV4dHJhY3RQb2x5Z29uRnJvbUNvbGxlY3Rpb24oZGlzdHJpY3RQb2x5Z29uKSxcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvbHlnb25zW2NpdHlDb2RlXSA9IGZlYXR1cmVDb2xsZWN0aW9uKFtjaXR5UG9seWdvbl0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IGRpc3RyaWN0Q29kZSBvZiBtdW5pY2lwYWxpdHkuZGlzdHJpY3RDb2Rlcykge1xyXG4gICAgaWYgKGRpc3RyaWN0UG9seWdvbnNbZGlzdHJpY3RDb2RlXSkge1xyXG4gICAgICBwb2x5Z29uc1tkaXN0cmljdENvZGVdID0gZGlzdHJpY3RQb2x5Z29uc1tkaXN0cmljdENvZGVdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBvbHlnb25zO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBvbHlnb25zID0gKFxyXG4gIG11bmljaXBhbGl0eTogTXVuaWNpcGFsaXR5LFxyXG4gIGV4dHJhQXJlYXM6IEFyZWFbXSxcclxuICBtdW5pY2lwYWxpdHlQb2x5Z29uczogUmVjb3JkPFxyXG4gICAgbnVtYmVyLFxyXG4gICAgRmVhdHVyZUNvbGxlY3Rpb248UG9seWdvbiB8IE11bHRpUG9seWdvbj5cclxuICA+XHJcbik6IHtcclxuICBmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb248UG9seWdvbiB8IE11bHRpUG9seWdvbj47XHJcbiAgZXh0cmFQb2x5Z29uczogTWFwPG51bWJlciwgRmVhdHVyZTxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPj47XHJcbn0gPT4ge1xyXG4gIGNvbnN0IG11bmljaXBhbGl0aWVzTXVsdGlwb2x5Z29uID0gY3JlYXRlTXVuaWNpcGFsaXRpZXNNdWx0aXBvbHlnb24oXHJcbiAgICBPYmplY3QudmFsdWVzKG11bmljaXBhbGl0eVBvbHlnb25zKVxyXG4gICk7XHJcbiAgY29uc3QgdW5pcXVlUG9pbnRzID0gbmV3IE1hcDxzdHJpbmcsIEZlYXR1cmU+KCk7XHJcbiAgY29uc3QgYWxsQXJlYXMgPSBbLi4ubXVuaWNpcGFsaXR5LmFyZWFzLCAuLi5leHRyYUFyZWFzXTtcclxuICBjb25zdCBleHRyYUFyZWFzSW5kZXhlcyA9IG5ldyBTZXQoZXh0cmFBcmVhcy5tYXAoKGFyZWEpID0+IGFyZWEuaW5kZXgpKTtcclxuXHJcbiAgZm9yIChjb25zdCBhcmVhIG9mIGFsbEFyZWFzKSB7XHJcbiAgICBjb25zdCBwb2ludHMgPSBbLi4uYXJlYS5hZGRyZXNzZXNdO1xyXG5cclxuICAgIGZvciAoY29uc3QgcG9pbnQgb2YgcG9pbnRzKSB7XHJcbiAgICAgIGlmICghdW5pcXVlUG9pbnRzLmhhcyhwb2ludC5hZGRyZXNzKSkge1xyXG4gICAgICAgIGFkZFBvaW50KHVuaXF1ZVBvaW50cywgcG9pbnQsIGFyZWEuaW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVuaXF1ZVBvaW50cy5nZXQocG9pbnQuYWRkcmVzcykucHJvcGVydGllcy5hcmVhSW5kZXhlcy5wdXNoKGFyZWEuaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBwb2ludHMgPSB7XHJcbiAgICB0eXBlOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXHJcbiAgICBmZWF0dXJlczogQXJyYXkuZnJvbSh1bmlxdWVQb2ludHMudmFsdWVzKCkpLFxyXG4gIH0gYXMgRmVhdHVyZUNvbGxlY3Rpb248UG9pbnQ+O1xyXG5cclxuICBjb25zdCBwb2x5Z29ucyA9IGQzRGVsYXVuYXlWb3Jvbm9pKHBvaW50cyk7XHJcblxyXG4gIGNvbnN0IHVuaXRlZFBvbHlnb25zOiBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+W10gPSBbXTtcclxuICBjb25zdCBleHRyYVBvbHlnb25zID0gbmV3IE1hcDxudW1iZXIsIEZlYXR1cmU8UG9seWdvbiB8IE11bHRpUG9seWdvbj4+KCk7XHJcbiAgbGV0IGNvbG9ySW5kZXggPSAwO1xyXG5cclxuICBmb3IgKGNvbnN0IGFyZWEgb2YgYWxsQXJlYXMpIHtcclxuICAgIGNvbnN0IHNjaG9vbFBvbHlnb25zOiBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+W10gPVxyXG4gICAgICBwb2x5Z29ucy5mZWF0dXJlcy5maWx0ZXIoKHBvbHlnb24pID0+XHJcbiAgICAgICAgcG9seWdvbi5wcm9wZXJ0aWVzLmFyZWFJbmRleGVzLmluY2x1ZGVzKGFyZWEuaW5kZXgpXHJcbiAgICAgICk7XHJcblxyXG4gICAgaWYgKHNjaG9vbFBvbHlnb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY2hvb2xQb2x5Z29uID0gaW50ZXJzZWN0KFxyXG4gICAgICBzY2hvb2xQb2x5Z29ucy5sZW5ndGggPiAxXHJcbiAgICAgICAgPyB1bmlvbihmZWF0dXJlQ29sbGVjdGlvbihzY2hvb2xQb2x5Z29ucykpXHJcbiAgICAgICAgOiBzY2hvb2xQb2x5Z29uc1swXSxcclxuICAgICAgbXVuaWNpcGFsaXRpZXNNdWx0aXBvbHlnb25cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZmVhdHVyZSA9IHtcclxuICAgICAgLi4uc2Nob29sUG9seWdvbixcclxuICAgICAgcHJvcGVydGllczoge1xyXG4gICAgICAgIGFyZWFJbmRleDogYXJlYS5pbmRleCxcclxuICAgICAgICBzY2hvb2xJem9zOiBhcmVhLnNjaG9vbHMubWFwKChzY2hvb2wpID0+IHNjaG9vbC5pem8pLFxyXG4gICAgICAgIGNvbG9ySW5kZXgsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgaWYgKGV4dHJhQXJlYXNJbmRleGVzLmhhcyhhcmVhLmluZGV4KSkge1xyXG4gICAgICBleHRyYVBvbHlnb25zLnNldChhcmVhLmluZGV4LCBmZWF0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVuaXRlZFBvbHlnb25zLnB1c2goZmVhdHVyZSk7XHJcbiAgICB9XHJcbiAgICBjb2xvckluZGV4Kys7XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgZmVhdHVyZUNvbGxlY3Rpb246IHRydW5jYXRlKHtcclxuICAgICAgdHlwZTogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxyXG4gICAgICBmZWF0dXJlczogWy4uLnVuaXRlZFBvbHlnb25zXSxcclxuICAgIH0pLFxyXG4gICAgZXh0cmFQb2x5Z29ucyxcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgYWRkUG9pbnQgPSAoXHJcbiAgdW5pcXVlUG9pbnRzOiBNYXA8c3RyaW5nLCBGZWF0dXJlPixcclxuICBwb2ludDogRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIGFyZWFJbmRleDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGlmIChwb2ludC5sYXQgPT09IG51bGwgfHwgcG9pbnQubG5nID09PSBudWxsKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIHVuaXF1ZVBvaW50cy5zZXQocG9pbnQuYWRkcmVzcywge1xyXG4gICAgdHlwZTogXCJGZWF0dXJlXCIsXHJcbiAgICBnZW9tZXRyeToge1xyXG4gICAgICB0eXBlOiBcIlBvaW50XCIsXHJcbiAgICAgIGNvb3JkaW5hdGVzOiBbcG9pbnQubG5nLCBwb2ludC5sYXRdLFxyXG4gICAgfSxcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgYXJlYUluZGV4ZXM6IFthcmVhSW5kZXhdLFxyXG4gICAgfSxcclxuICB9KTtcclxufTtcclxuXHJcbmNvbnN0IGQzRGVsYXVuYXlWb3Jvbm9pID0gKFxyXG4gIHBvaW50czogRmVhdHVyZUNvbGxlY3Rpb248UG9pbnQ+XHJcbik6IEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24sIFBvbHlnb25Qcm9wcz4gPT4ge1xyXG4gIGNvbnN0IGNvbnZlcnRlZCA9IHBvaW50cy5mZWF0dXJlcy5tYXAoKHApID0+IHtcclxuICAgIHJldHVybiB0b01lcmNhdG9yKFtwLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBwLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXSk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGJib3ggPSBbLi4udG9NZXJjYXRvcihbLTE4MCwgLTg1XSksIC4uLnRvTWVyY2F0b3IoWzE4MCwgODVdKV0gYXMgW1xyXG4gICAgbnVtYmVyLFxyXG4gICAgbnVtYmVyLFxyXG4gICAgbnVtYmVyLFxyXG4gICAgbnVtYmVyXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgZGVsYXVuYXkgPSBuZXcgRGVsYXVuYXkoRmxvYXQ2NEFycmF5Lm9mKC4uLmNvbnZlcnRlZC5mbGF0KCkpKTtcclxuICBjb25zdCB2b3Jvbm9pID0gZGVsYXVuYXkudm9yb25vaShiYm94KTtcclxuICByZXR1cm4ge1xyXG4gICAgdHlwZTogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxyXG4gICAgZmVhdHVyZXM6IEFycmF5LmZyb20odm9yb25vaS5jZWxsUG9seWdvbnMoKSkubWFwKChwb2x5Z29uKSA9PiAoe1xyXG4gICAgICB0eXBlOiBcIkZlYXR1cmVcIixcclxuICAgICAgZ2VvbWV0cnk6IHtcclxuICAgICAgICB0eXBlOiBcIlBvbHlnb25cIixcclxuICAgICAgICBjb29yZGluYXRlczogW3BvbHlnb24ubWFwKChwKSA9PiB0b1dnczg0KHApKV0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBhcmVhSW5kZXhlczogcG9pbnRzLmZlYXR1cmVzW3BvbHlnb24uaW5kZXhdLnByb3BlcnRpZXMuYXJlYUluZGV4ZXMsXHJcbiAgICAgICAgaW5kZXg6IHBvbHlnb24uaW5kZXgsXHJcbiAgICAgICAgbmVpZ2hib3JzOiBuZXcgU2V0KHZvcm9ub2kubmVpZ2hib3JzKHBvbHlnb24uaW5kZXgpKSxcclxuICAgICAgfSxcclxuICAgIH0pKSxcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlTXVuaWNpcGFsaXRpZXNNdWx0aXBvbHlnb24gPSAoXHJcbiAgbXVuaWNpcGFsaXR5UG9seWdvbnM6IEZlYXR1cmVDb2xsZWN0aW9uW11cclxuKTogRmVhdHVyZTxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPiA9PiB7XHJcbiAgY29uc3QgbXVuaWNpcGFsaXR5UG9seWdvbkZlYXR1cmVzID0gbXVuaWNpcGFsaXR5UG9seWdvbnMucmVkdWNlKFxyXG4gICAgKGFjYywgbXVuaWNpcGFsaXR5UG9seWdvbikgPT4ge1xyXG4gICAgICBhY2MucHVzaChcclxuICAgICAgICAuLi5tdW5pY2lwYWxpdHlQb2x5Z29uLmZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgIChmKSA9PlxyXG4gICAgICAgICAgICBmLmdlb21ldHJ5LnR5cGUgPT09IFwiUG9seWdvblwiIHx8IGYuZ2VvbWV0cnkudHlwZSA9PT0gXCJNdWx0aVBvbHlnb25cIlxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sXHJcbiAgICBbXVxyXG4gICk7XHJcblxyXG4gIHJldHVybiBleHRyYWN0UG9seWdvbkZyb21Db2xsZWN0aW9uKFxyXG4gICAgZmVhdHVyZUNvbGxlY3Rpb24obXVuaWNpcGFsaXR5UG9seWdvbkZlYXR1cmVzKVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBleHRyYWN0TXVuaWNpcGFsaXR5Q29kZXMgPSAobXVuaWNpcGFsaXRpZXM6IE11bmljaXBhbGl0eVtdKSA9PiB7XHJcbiAgcmV0dXJuIG11bmljaXBhbGl0aWVzLnJlZHVjZShcclxuICAgIChhY2MsIG11bmljaXBhbGl0eSkgPT4ge1xyXG4gICAgICBtdW5pY2lwYWxpdHkuY2l0eUNvZGVzLmZvckVhY2goKGNpdHlDb2RlKSA9PiBhY2MuY2l0eUNvZGVzLmFkZChjaXR5Q29kZSkpO1xyXG4gICAgICBtdW5pY2lwYWxpdHkuZGlzdHJpY3RDb2Rlcy5mb3JFYWNoKChkaXN0cmljdENvZGUpID0+XHJcbiAgICAgICAgYWNjLmRpc3RyaWN0Q29kZXMuYWRkKGRpc3RyaWN0Q29kZSlcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sXHJcbiAgICB7IGNpdHlDb2RlczogbmV3IFNldDxudW1iZXI+KCksIGRpc3RyaWN0Q29kZXM6IG5ldyBTZXQ8bnVtYmVyPigpIH1cclxuICApO1xyXG59O1xyXG5cclxuY29uc3QgZXh0cmFjdFBvbHlnb25Gcm9tQ29sbGVjdGlvbiA9IChcclxuICBjb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbjxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPlxyXG4pOiBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+ID0+XHJcbiAgY29sbGVjdGlvbi5mZWF0dXJlcy5sZW5ndGggPiAxID8gdW5pb24oY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmZlYXR1cmVzWzBdO1xyXG4iXX0=
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3BvbHlnb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkMsT0FBTyxFQU1MLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEUsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFRMUMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxFQUMzQyxjQUE4QixFQUNjLEVBQUU7SUFDOUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5RSxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFbEUsSUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FB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QztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sNEJBQTRCLEdBQUcsQ0FDbkMsVUFBcUQsRUFDcEIsRUFBRSxDQUNuQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbGF1bmF5IH0gZnJvbSBcImQzLWRlbGF1bmF5XCI7XHJcbmltcG9ydCB7IEFyZWEsIEV4cG9ydEFkZHJlc3NQb2ludCwgTXVuaWNpcGFsaXR5IH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlQ29sbGVjdGlvbixcclxuICBNdWx0aVBvbHlnb24sXHJcbiAgUG9pbnQsXHJcbiAgUG9seWdvbixcclxuICBmZWF0dXJlQ29sbGVjdGlvbixcclxufSBmcm9tIFwiQHR1cmYvaGVscGVyc1wiO1xyXG5pbXBvcnQgaW50ZXJzZWN0IGZyb20gXCJAdHVyZi9pbnRlcnNlY3RcIjtcclxuaW1wb3J0IHsgYm9vbGVhbkludGVyc2VjdHMgfSBmcm9tIFwiQHR1cmYvYm9vbGVhbi1pbnRlcnNlY3RzXCI7XHJcbmltcG9ydCBHcmFwaCBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyBjb2xvciB9IGZyb20gXCJncmFwaG9sb2d5LWNvbG9yXCI7XHJcbmltcG9ydCB7IHRvTWVyY2F0b3IsIHRvV2dzODQgfSBmcm9tIFwiQHR1cmYvcHJvamVjdGlvblwiO1xyXG5pbXBvcnQgdW5pb24gZnJvbSBcIkB0dXJmL3VuaW9uXCI7XHJcbmltcG9ydCB7IGdldENpdHlQb2x5Z29ucywgZ2V0RGlzdHJpY3RQb2x5Z29ucyB9IGZyb20gXCIuLi9kYi9jaXRpZXNcIjtcclxuaW1wb3J0IHRydW5jYXRlIGZyb20gXCJAdHVyZi90cnVuY2F0ZVwiO1xyXG5pbXBvcnQgeyBQb2x5Z29uc0J5Q29kZXMgfSBmcm9tIFwiLi4vZGIvdHlwZXNcIjtcclxuaW1wb3J0IGRpZmZlcmVuY2UgZnJvbSBcIkB0dXJmL2RpZmZlcmVuY2VcIjtcclxuXHJcbnR5cGUgUG9seWdvblByb3BzID0ge1xyXG4gIGFyZWFJbmRleGVzOiBudW1iZXJbXTtcclxuICBpbmRleDogbnVtYmVyO1xyXG4gIG5laWdoYm9yczogU2V0PG51bWJlcj47XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbXVuaWNpcGFsaXRpZXNUb1BvbHlnb25zID0gYXN5bmMgKFxyXG4gIG11bmljaXBhbGl0aWVzOiBNdW5pY2lwYWxpdHlbXVxyXG4pOiBQcm9taXNlPFJlY29yZDxudW1iZXIsIEZlYXR1cmVDb2xsZWN0aW9uPj4gPT4ge1xyXG4gIGNvbnN0IHsgY2l0eUNvZGVzLCBkaXN0cmljdENvZGVzIH0gPSBleHRyYWN0TXVuaWNpcGFsaXR5Q29kZXMobXVuaWNpcGFsaXRpZXMpO1xyXG4gIGNvbnN0IGNpdHlQb2x5Z29ucyA9IGF3YWl0IGdldENpdHlQb2x5Z29ucyhjaXR5Q29kZXMpO1xyXG4gIGNvbnN0IGRpc3RyaWN0UG9seWdvbnMgPSBhd2FpdCBnZXREaXN0cmljdFBvbHlnb25zKGRpc3RyaWN0Q29kZXMpO1xyXG5cclxuICBpZiAoXHJcbiAgICBPYmplY3Qua2V5cyhjaXR5UG9seWdvbnMpLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgT2JqZWN0LmtleXMoZGlzdHJpY3RQb2x5Z29ucykubGVuZ3RoID09PSAwXHJcbiAgKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIk5vIHBvbHlnb25zIGZvdW5kIGZvciBnaXZlbiBtdW5pY2lwYWxpdGllcy5cIik7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICAvLyBtdW5pY2lwYWxpdHlDb2RlIC0+IGFyZWFzXHJcbiAgY29uc3QgZXh0cmFBcmVhcyA9IGdldEV4dHJhQXJlYXMobXVuaWNpcGFsaXRpZXMpO1xyXG5cclxuICBjb25zdCBjb2xsZWN0aW9uTWFwID0gbmV3IE1hcDxcclxuICAgIG51bWJlcixcclxuICAgIEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+XHJcbiAgPigpO1xyXG4gIC8vIGFyZWFJbmRleCAtPiBwb2x5Z29uXHJcbiAgY29uc3QgZXh0cmFQb2x5Z29uc01hcCA9IG5ldyBNYXA8bnVtYmVyLCBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+W10+KCk7XHJcblxyXG4gIGZvciAoY29uc3QgbXVuaWNpcGFsaXR5IG9mIG11bmljaXBhbGl0aWVzKSB7XHJcbiAgICBpZiAobXVuaWNpcGFsaXR5LmFyZWFzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZmVhdHVyZUNvbGxlY3Rpb24sIGV4dHJhUG9seWdvbnMgfSA9IGNyZWF0ZVBvbHlnb25zKFxyXG4gICAgICBtdW5pY2lwYWxpdHksXHJcbiAgICAgIGV4dHJhQXJlYXMuZ2V0KG11bmljaXBhbGl0eS5jb2RlKSA/PyBbXSxcclxuICAgICAgZ2V0TXVuaWNpcGFsaXR5UG9seWdvbnMobXVuaWNpcGFsaXR5LCBjaXR5UG9seWdvbnMsIGRpc3RyaWN0UG9seWdvbnMpXHJcbiAgICApO1xyXG4gICAgY29sbGVjdGlvbk1hcC5zZXQobXVuaWNpcGFsaXR5LmNvZGUsIGZlYXR1cmVDb2xsZWN0aW9uKTtcclxuICAgIGlmIChleHRyYUFyZWFzLmhhcyhtdW5pY2lwYWxpdHkuY29kZSkpIHtcclxuICAgICAgZm9yIChjb25zdCBbYXJlYUluZGV4LCBleHRyYVBvbHlnb25dIG9mIGV4dHJhUG9seWdvbnMpIHtcclxuICAgICAgICBpZiAoIWV4dHJhUG9seWdvbnNNYXAuaGFzKGFyZWFJbmRleCkpIHtcclxuICAgICAgICAgIGV4dHJhUG9seWdvbnNNYXAuc2V0KGFyZWFJbmRleCwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBleHRyYVBvbHlnb25zTWFwLmdldChhcmVhSW5kZXgpLnB1c2goZXh0cmFQb2x5Z29uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkRXh0cmFQb2x5Z29ucyhjb2xsZWN0aW9uTWFwLCBleHRyYVBvbHlnb25zTWFwKTtcclxuXHJcbiAgZmluZENvbG9yaW5nKGNvbGxlY3Rpb25NYXApO1xyXG5cclxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxudW1iZXIsIEZlYXR1cmVDb2xsZWN0aW9uPiA9IHt9O1xyXG4gIGZvciAoY29uc3QgW211bmljaXBhbGl0eUNvZGUsIGNvbGxlY3Rpb25dIG9mIGNvbGxlY3Rpb25NYXApIHtcclxuICAgIHJlc3VsdFttdW5pY2lwYWxpdHlDb2RlXSA9IGNvbGxlY3Rpb247XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG5jb25zdCBmaW5kQ29sb3JpbmcgPSAoY29sbGVjdGlvbk1hcDogTWFwPG51bWJlciwgRmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB7XHJcbiAgLy8gaGVyZSBkbyB0aGUgY29sb3JpbmdcclxuICAvLyBwdXQgYWxsIHRoZSBmZWF0dXJlcyBpbiBvbmUgYXJyYXlcclxuICBjb25zdCBhbGxGZWF0dXJlcyA9IEFycmF5LmZyb20oY29sbGVjdGlvbk1hcC52YWx1ZXMoKSkucmVkdWNlKFxyXG4gICAgKGFjYywgY29sbGVjdGlvbikgPT4ge1xyXG4gICAgICBhY2MucHVzaCguLi5jb2xsZWN0aW9uLmZlYXR1cmVzKTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sXHJcbiAgICBbXVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGdyYXBoID0gbmV3IEdyYXBoKCk7XHJcbiAgYWxsRmVhdHVyZXMuZm9yRWFjaCgoZmVhdHVyZSkgPT4ge1xyXG4gICAgZ3JhcGguYWRkTm9kZShmZWF0dXJlLnByb3BlcnRpZXMuYXJlYUluZGV4KTtcclxuICB9KTtcclxuXHJcbiAgZm9yIChjb25zdCBmZWF0dXJlMSBvZiBhbGxGZWF0dXJlcykge1xyXG4gICAgZm9yIChjb25zdCBmZWF0dXJlMiBvZiBhbGxGZWF0dXJlcykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZmVhdHVyZTEucHJvcGVydGllcy5hcmVhSW5kZXggIT09IGZlYXR1cmUyLnByb3BlcnRpZXMuYXJlYUluZGV4ICYmXHJcbiAgICAgICAgYm9vbGVhbkludGVyc2VjdHMoZmVhdHVyZTEsIGZlYXR1cmUyKVxyXG4gICAgICApIHtcclxuICAgICAgICBncmFwaC5hZGRFZGdlKFxyXG4gICAgICAgICAgZmVhdHVyZTEucHJvcGVydGllcy5hcmVhSW5kZXgsXHJcbiAgICAgICAgICBmZWF0dXJlMi5wcm9wZXJ0aWVzLmFyZWFJbmRleFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbG9yKGdyYXBoKTtcclxuXHJcbiAgYWxsRmVhdHVyZXMuZm9yRWFjaCgoZmVhdHVyZSkgPT4ge1xyXG4gICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmNvbG9ySW5kZXggPSBncmFwaC5nZXROb2RlQXR0cmlidXRlKFxyXG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXMuYXJlYUluZGV4LFxyXG4gICAgICBcImNvbG9yXCJcclxuICAgICk7XHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCBnZXRFeHRyYUFyZWFzID0gKG11bmljaXBhbGl0aWVzOiBNdW5pY2lwYWxpdHlbXSk6IE1hcDxudW1iZXIsIEFyZWFbXT4gPT4ge1xyXG4gIC8vIG11bmljaXBhbGl0eUNvZGUgLT4gYXJlYXNcclxuICBjb25zdCBleHRyYUFyZWFzID0gbmV3IE1hcDxudW1iZXIsIEFyZWFbXT4oKTtcclxuXHJcbiAgZm9yIChjb25zdCBtdW5pY2lwYWxpdHkgb2YgbXVuaWNpcGFsaXRpZXMpIHtcclxuICAgIGZvciAoY29uc3QgYXJlYSBvZiBtdW5pY2lwYWxpdHkuYXJlYXMpIHtcclxuICAgICAgLy8gbXVuaWNpcGFsaXR5Q29kZSAtPiBwb2ludHNcclxuICAgICAgY29uc3QgZXh0cmFQb2ludHMgPSBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50W10+KCk7XHJcbiAgICAgIGZvciAoY29uc3QgcG9pbnQgb2YgYXJlYS5hZGRyZXNzZXMpIHtcclxuICAgICAgICBpZiAocG9pbnQubXVuaWNpcGFsaXR5Q29kZSkge1xyXG4gICAgICAgICAgaWYgKCFleHRyYVBvaW50cy5oYXMocG9pbnQubXVuaWNpcGFsaXR5Q29kZSkpIHtcclxuICAgICAgICAgICAgZXh0cmFQb2ludHMuc2V0KHBvaW50Lm11bmljaXBhbGl0eUNvZGUsIFtdKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBleHRyYVBvaW50cy5nZXQocG9pbnQubXVuaWNpcGFsaXR5Q29kZSkucHVzaChwb2ludCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IFttdW5pY2lwYWxpdHlDb2RlLCBwb2ludHNdIG9mIGV4dHJhUG9pbnRzKSB7XHJcbiAgICAgICAgaWYgKCFleHRyYUFyZWFzLmhhcyhtdW5pY2lwYWxpdHlDb2RlKSkge1xyXG4gICAgICAgICAgZXh0cmFBcmVhcy5zZXQobXVuaWNpcGFsaXR5Q29kZSwgW10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZXh0cmFBcmVhcy5nZXQobXVuaWNpcGFsaXR5Q29kZSkucHVzaCh7XHJcbiAgICAgICAgICAuLi5hcmVhLFxyXG4gICAgICAgICAgYWRkcmVzc2VzOiBwb2ludHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGV4dHJhQXJlYXM7XHJcbn07XHJcblxyXG5jb25zdCBhZGRFeHRyYVBvbHlnb25zID0gKFxyXG4gIGNvbGxlY3Rpb25NYXA6IE1hcDxudW1iZXIsIEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+PixcclxuICBleHRyYVBvbHlnb25zTWFwOiBNYXA8bnVtYmVyLCBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+W10+XHJcbikgPT4ge1xyXG4gIGZvciAoY29uc3QgY29sbGVjdGlvbiBvZiBjb2xsZWN0aW9uTWFwLnZhbHVlcygpKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbGxlY3Rpb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZmVhdHVyZSA9IGNvbGxlY3Rpb24uZmVhdHVyZXNbaV07XHJcbiAgICAgIGlmIChleHRyYVBvbHlnb25zTWFwLmhhcyhmZWF0dXJlLnByb3BlcnRpZXMuYXJlYUluZGV4KSkge1xyXG4gICAgICAgIGNvbnN0IHBvbHlnb25zID0gZXh0cmFQb2x5Z29uc01hcC5nZXQoZmVhdHVyZS5wcm9wZXJ0aWVzLmFyZWFJbmRleCk7XHJcbiAgICAgICAgY29uc3QgbmV3UG9seWdvbiA9IHVuaW9uKGZlYXR1cmVDb2xsZWN0aW9uKFsuLi5wb2x5Z29ucywgZmVhdHVyZV0pKTtcclxuICAgICAgICBjb25zdCBuZXdGZWF0dXJlID0ge1xyXG4gICAgICAgICAgLi4ubmV3UG9seWdvbixcclxuICAgICAgICAgIHByb3BlcnRpZXM6IHsgLi4uZmVhdHVyZS5wcm9wZXJ0aWVzIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2xsZWN0aW9uLmZlYXR1cmVzW2ldID0gbmV3RmVhdHVyZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGdldE11bmljaXBhbGl0eVBvbHlnb25zID0gKFxyXG4gIG11bmljaXBhbGl0eTogTXVuaWNpcGFsaXR5LFxyXG4gIGNpdHlQb2x5Z29uczogUG9seWdvbnNCeUNvZGVzLFxyXG4gIGRpc3RyaWN0UG9seWdvbnM6IFBvbHlnb25zQnlDb2Rlc1xyXG4pOiBQb2x5Z29uc0J5Q29kZXMgPT4ge1xyXG4gIGNvbnN0IHBvbHlnb25zOiBQb2x5Z29uc0J5Q29kZXMgPSB7fTtcclxuXHJcbiAgZm9yIChjb25zdCBjaXR5Q29kZSBvZiBtdW5pY2lwYWxpdHkuY2l0eUNvZGVzKSB7XHJcbiAgICBpZiAoY2l0eVBvbHlnb25zW2NpdHlDb2RlXSkge1xyXG4gICAgICBwb2x5Z29uc1tjaXR5Q29kZV0gPSBjaXR5UG9seWdvbnNbY2l0eUNvZGVdO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIG11bmljaXBhbGl0eS5tdW5pY2lwYWxpdHlUeXBlID09PSBcImNpdHlcIiAmJlxyXG4gICAgICAgIE9iamVjdC5rZXlzKGRpc3RyaWN0UG9seWdvbnMpLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICBtdW5pY2lwYWxpdHkubXVuaWNpcGFsaXR5TmFtZSAhPT0gXCJCcm5vXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgbGV0IGNpdHlQb2x5Z29uID0gZXh0cmFjdFBvbHlnb25Gcm9tQ29sbGVjdGlvbihjaXR5UG9seWdvbnNbY2l0eUNvZGVdKTtcclxuICAgICAgICAvLyBzdWJ0cmFjdCBhbGwgZGlzdHJpY3QgcG9seWdvbnMgZnJvbSBjaXR5IHBvbHlnb25cclxuICAgICAgICBmb3IgKGNvbnN0IFtkaXN0cmljdENvZGUsIGRpc3RyaWN0UG9seWdvbl0gb2YgT2JqZWN0LmVudHJpZXMoXHJcbiAgICAgICAgICBkaXN0cmljdFBvbHlnb25zXHJcbiAgICAgICAgKSkge1xyXG4gICAgICAgICAgaWYgKG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzLmluY2x1ZGVzKHBhcnNlSW50KGRpc3RyaWN0Q29kZSkpKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2l0eVBvbHlnb24gPSBkaWZmZXJlbmNlKFxyXG4gICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbihbXHJcbiAgICAgICAgICAgICAgY2l0eVBvbHlnb24sXHJcbiAgICAgICAgICAgICAgZXh0cmFjdFBvbHlnb25Gcm9tQ29sbGVjdGlvbihkaXN0cmljdFBvbHlnb24pLFxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9seWdvbnNbY2l0eUNvZGVdID0gZmVhdHVyZUNvbGxlY3Rpb24oW2NpdHlQb2x5Z29uXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgZGlzdHJpY3RDb2RlIG9mIG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzKSB7XHJcbiAgICBpZiAoZGlzdHJpY3RQb2x5Z29uc1tkaXN0cmljdENvZGVdKSB7XHJcbiAgICAgIHBvbHlnb25zW2Rpc3RyaWN0Q29kZV0gPSBkaXN0cmljdFBvbHlnb25zW2Rpc3RyaWN0Q29kZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcG9seWdvbnM7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9seWdvbnMgPSAoXHJcbiAgbXVuaWNpcGFsaXR5OiBNdW5pY2lwYWxpdHksXHJcbiAgZXh0cmFBcmVhczogQXJlYVtdLFxyXG4gIG11bmljaXBhbGl0eVBvbHlnb25zOiBSZWNvcmQ8XHJcbiAgICBudW1iZXIsXHJcbiAgICBGZWF0dXJlQ29sbGVjdGlvbjxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPlxyXG4gID5cclxuKToge1xyXG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbjxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPjtcclxuICBleHRyYVBvbHlnb25zOiBNYXA8bnVtYmVyLCBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+PjtcclxufSA9PiB7XHJcbiAgY29uc3QgbXVuaWNpcGFsaXRpZXNNdWx0aXBvbHlnb24gPSBjcmVhdGVNdW5pY2lwYWxpdGllc011bHRpcG9seWdvbihcclxuICAgIE9iamVjdC52YWx1ZXMobXVuaWNpcGFsaXR5UG9seWdvbnMpXHJcbiAgKTtcclxuICBjb25zdCB1bmlxdWVQb2ludHMgPSBuZXcgTWFwPHN0cmluZywgRmVhdHVyZT4oKTtcclxuICBjb25zdCBhbGxBcmVhcyA9IFsuLi5tdW5pY2lwYWxpdHkuYXJlYXMsIC4uLmV4dHJhQXJlYXNdO1xyXG4gIGNvbnN0IGV4dHJhQXJlYXNJbmRleGVzID0gbmV3IFNldChleHRyYUFyZWFzLm1hcCgoYXJlYSkgPT4gYXJlYS5pbmRleCkpO1xyXG5cclxuICBmb3IgKGNvbnN0IGFyZWEgb2YgYWxsQXJlYXMpIHtcclxuICAgIGNvbnN0IHBvaW50cyA9IFsuLi5hcmVhLmFkZHJlc3Nlc107XHJcblxyXG4gICAgZm9yIChjb25zdCBwb2ludCBvZiBwb2ludHMpIHtcclxuICAgICAgaWYgKCF1bmlxdWVQb2ludHMuaGFzKHBvaW50LmFkZHJlc3MpKSB7XHJcbiAgICAgICAgYWRkUG9pbnQodW5pcXVlUG9pbnRzLCBwb2ludCwgYXJlYS5pbmRleCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdW5pcXVlUG9pbnRzLmdldChwb2ludC5hZGRyZXNzKS5wcm9wZXJ0aWVzLmFyZWFJbmRleGVzLnB1c2goYXJlYS5pbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IHBvaW50cyA9IHtcclxuICAgIHR5cGU6IFwiRmVhdHVyZUNvbGxlY3Rpb25cIixcclxuICAgIGZlYXR1cmVzOiBBcnJheS5mcm9tKHVuaXF1ZVBvaW50cy52YWx1ZXMoKSksXHJcbiAgfSBhcyBGZWF0dXJlQ29sbGVjdGlvbjxQb2ludD47XHJcblxyXG4gIGNvbnN0IHBvbHlnb25zID0gZDNEZWxhdW5heVZvcm9ub2kocG9pbnRzKTtcclxuXHJcbiAgY29uc3QgdW5pdGVkUG9seWdvbnM6IEZlYXR1cmU8UG9seWdvbiB8IE11bHRpUG9seWdvbj5bXSA9IFtdO1xyXG4gIGNvbnN0IGV4dHJhUG9seWdvbnMgPSBuZXcgTWFwPG51bWJlciwgRmVhdHVyZTxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPj4oKTtcclxuICBsZXQgY29sb3JJbmRleCA9IDA7XHJcblxyXG4gIGZvciAoY29uc3QgYXJlYSBvZiBhbGxBcmVhcykge1xyXG4gICAgY29uc3Qgc2Nob29sUG9seWdvbnM6IEZlYXR1cmU8UG9seWdvbiB8IE11bHRpUG9seWdvbj5bXSA9XHJcbiAgICAgIHBvbHlnb25zLmZlYXR1cmVzLmZpbHRlcigocG9seWdvbikgPT5cclxuICAgICAgICBwb2x5Z29uLnByb3BlcnRpZXMuYXJlYUluZGV4ZXMuaW5jbHVkZXMoYXJlYS5pbmRleClcclxuICAgICAgKTtcclxuXHJcbiAgICBpZiAoc2Nob29sUG9seWdvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGNvbnRpbnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNjaG9vbFBvbHlnb24gPSBpbnRlcnNlY3QoXHJcbiAgICAgIHNjaG9vbFBvbHlnb25zLmxlbmd0aCA+IDFcclxuICAgICAgICA/IHVuaW9uKGZlYXR1cmVDb2xsZWN0aW9uKHNjaG9vbFBvbHlnb25zKSlcclxuICAgICAgICA6IHNjaG9vbFBvbHlnb25zWzBdLFxyXG4gICAgICBtdW5pY2lwYWxpdGllc011bHRpcG9seWdvblxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmZWF0dXJlID0ge1xyXG4gICAgICAuLi5zY2hvb2xQb2x5Z29uLFxyXG4gICAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgYXJlYUluZGV4OiBhcmVhLmluZGV4LFxyXG4gICAgICAgIHNjaG9vbEl6b3M6IGFyZWEuc2Nob29scy5tYXAoKHNjaG9vbCkgPT4gc2Nob29sLml6byksXHJcbiAgICAgICAgY29sb3JJbmRleCxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBpZiAoZXh0cmFBcmVhc0luZGV4ZXMuaGFzKGFyZWEuaW5kZXgpKSB7XHJcbiAgICAgIGV4dHJhUG9seWdvbnMuc2V0KGFyZWEuaW5kZXgsIGZlYXR1cmUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdW5pdGVkUG9seWdvbnMucHVzaChmZWF0dXJlKTtcclxuICAgIH1cclxuICAgIGNvbG9ySW5kZXgrKztcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBmZWF0dXJlQ29sbGVjdGlvbjogdHJ1bmNhdGUoe1xyXG4gICAgICB0eXBlOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXHJcbiAgICAgIGZlYXR1cmVzOiBbLi4udW5pdGVkUG9seWdvbnNdLFxyXG4gICAgfSksXHJcbiAgICBleHRyYVBvbHlnb25zLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBhZGRQb2ludCA9IChcclxuICB1bmlxdWVQb2ludHM6IE1hcDxzdHJpbmcsIEZlYXR1cmU+LFxyXG4gIHBvaW50OiBFeHBvcnRBZGRyZXNzUG9pbnQsXHJcbiAgYXJlYUluZGV4OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgaWYgKHBvaW50LmxhdCA9PT0gbnVsbCB8fCBwb2ludC5sbmcgPT09IG51bGwpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgdW5pcXVlUG9pbnRzLnNldChwb2ludC5hZGRyZXNzLCB7XHJcbiAgICB0eXBlOiBcIkZlYXR1cmVcIixcclxuICAgIGdlb21ldHJ5OiB7XHJcbiAgICAgIHR5cGU6IFwiUG9pbnRcIixcclxuICAgICAgY29vcmRpbmF0ZXM6IFtwb2ludC5sbmcsIHBvaW50LmxhdF0sXHJcbiAgICB9LFxyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICBhcmVhSW5kZXhlczogW2FyZWFJbmRleF0sXHJcbiAgICB9LFxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgZDNEZWxhdW5heVZvcm9ub2kgPSAoXHJcbiAgcG9pbnRzOiBGZWF0dXJlQ29sbGVjdGlvbjxQb2ludD5cclxuKTogRmVhdHVyZUNvbGxlY3Rpb248UG9seWdvbiwgUG9seWdvblByb3BzPiA9PiB7XHJcbiAgY29uc3QgY29udmVydGVkID0gcG9pbnRzLmZlYXR1cmVzLm1hcCgocCkgPT4ge1xyXG4gICAgcmV0dXJuIHRvTWVyY2F0b3IoW3AuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIHAuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1dKTtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgYmJveCA9IFsuLi50b01lcmNhdG9yKFstMTgwLCAtODVdKSwgLi4udG9NZXJjYXRvcihbMTgwLCA4NV0pXSBhcyBbXHJcbiAgICBudW1iZXIsXHJcbiAgICBudW1iZXIsXHJcbiAgICBudW1iZXIsXHJcbiAgICBudW1iZXJcclxuICBdO1xyXG5cclxuICBjb25zdCBkZWxhdW5heSA9IG5ldyBEZWxhdW5heShGbG9hdDY0QXJyYXkub2YoLi4uY29udmVydGVkLmZsYXQoKSkpO1xyXG4gIGNvbnN0IHZvcm9ub2kgPSBkZWxhdW5heS52b3Jvbm9pKGJib3gpO1xyXG4gIHJldHVybiB7XHJcbiAgICB0eXBlOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXHJcbiAgICBmZWF0dXJlczogQXJyYXkuZnJvbSh2b3Jvbm9pLmNlbGxQb2x5Z29ucygpKS5tYXAoKHBvbHlnb24pID0+ICh7XHJcbiAgICAgIHR5cGU6IFwiRmVhdHVyZVwiLFxyXG4gICAgICBnZW9tZXRyeToge1xyXG4gICAgICAgIHR5cGU6IFwiUG9seWdvblwiLFxyXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbcG9seWdvbi5tYXAoKHApID0+IHRvV2dzODQocCkpXSxcclxuICAgICAgfSxcclxuICAgICAgcHJvcGVydGllczoge1xyXG4gICAgICAgIGFyZWFJbmRleGVzOiBwb2ludHMuZmVhdHVyZXNbcG9seWdvbi5pbmRleF0ucHJvcGVydGllcy5hcmVhSW5kZXhlcyxcclxuICAgICAgICBpbmRleDogcG9seWdvbi5pbmRleCxcclxuICAgICAgICBuZWlnaGJvcnM6IG5ldyBTZXQodm9yb25vaS5uZWlnaGJvcnMocG9seWdvbi5pbmRleCkpLFxyXG4gICAgICB9LFxyXG4gICAgfSkpLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBjcmVhdGVNdW5pY2lwYWxpdGllc011bHRpcG9seWdvbiA9IChcclxuICBtdW5pY2lwYWxpdHlQb2x5Z29uczogRmVhdHVyZUNvbGxlY3Rpb25bXVxyXG4pOiBGZWF0dXJlPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+ID0+IHtcclxuICBjb25zdCBtdW5pY2lwYWxpdHlQb2x5Z29uRmVhdHVyZXMgPSBtdW5pY2lwYWxpdHlQb2x5Z29ucy5yZWR1Y2UoXHJcbiAgICAoYWNjLCBtdW5pY2lwYWxpdHlQb2x5Z29uKSA9PiB7XHJcbiAgICAgIGFjYy5wdXNoKFxyXG4gICAgICAgIC4uLm11bmljaXBhbGl0eVBvbHlnb24uZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgKGYpID0+XHJcbiAgICAgICAgICAgIGYuZ2VvbWV0cnkudHlwZSA9PT0gXCJQb2x5Z29uXCIgfHwgZi5nZW9tZXRyeS50eXBlID09PSBcIk11bHRpUG9seWdvblwiXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSxcclxuICAgIFtdXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIGV4dHJhY3RQb2x5Z29uRnJvbUNvbGxlY3Rpb24oXHJcbiAgICBmZWF0dXJlQ29sbGVjdGlvbihtdW5pY2lwYWxpdHlQb2x5Z29uRmVhdHVyZXMpXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGV4dHJhY3RNdW5pY2lwYWxpdHlDb2RlcyA9IChtdW5pY2lwYWxpdGllczogTXVuaWNpcGFsaXR5W10pID0+IHtcclxuICByZXR1cm4gbXVuaWNpcGFsaXRpZXMucmVkdWNlKFxyXG4gICAgKGFjYywgbXVuaWNpcGFsaXR5KSA9PiB7XHJcbiAgICAgIG11bmljaXBhbGl0eS5jaXR5Q29kZXMuZm9yRWFjaCgoY2l0eUNvZGUpID0+IGFjYy5jaXR5Q29kZXMuYWRkKGNpdHlDb2RlKSk7XHJcbiAgICAgIG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzLmZvckVhY2goKGRpc3RyaWN0Q29kZSkgPT5cclxuICAgICAgICBhY2MuZGlzdHJpY3RDb2Rlcy5hZGQoZGlzdHJpY3RDb2RlKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSxcclxuICAgIHsgY2l0eUNvZGVzOiBuZXcgU2V0PG51bWJlcj4oKSwgZGlzdHJpY3RDb2RlczogbmV3IFNldDxudW1iZXI+KCkgfVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBleHRyYWN0UG9seWdvbkZyb21Db2xsZWN0aW9uID0gKFxyXG4gIGNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+XHJcbik6IEZlYXR1cmU8UG9seWdvbiB8IE11bHRpUG9seWdvbj4gPT5cclxuICBjb2xsZWN0aW9uLmZlYXR1cmVzLmxlbmd0aCA+IDEgPyB1bmlvbihjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24uZmVhdHVyZXNbMF07XHJcbiJdfQ==
|
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.33",
|
|
77
77
|
"main": "dist/index.js",
|
|
78
78
|
"types": "dist/index.d.ts",
|
|
79
79
|
"files": [
|