text-to-map 1.1.28 → 1.1.29

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.
Files changed (55) hide show
  1. package/dist/bin/address-points.js +1 -0
  2. package/dist/bin/cities.js +1 -0
  3. package/dist/bin/clear-all.js +1 -0
  4. package/dist/bin/constants.js +1 -0
  5. package/dist/bin/generate-syntax-diagrams.js +1 -0
  6. package/dist/bin/init-db.js +1 -0
  7. package/dist/bin/knex.js +1 -0
  8. package/dist/bin/parse-ordinance.js +17 -17
  9. package/dist/bin/polygons.js +4 -2
  10. package/dist/bin/regions.js +1 -0
  11. package/dist/bin/schools.js +1 -0
  12. package/dist/bin/streets.js +1 -0
  13. package/dist/bin/sync-all.js +1 -0
  14. package/dist/db/address-points.js +1 -1
  15. package/dist/db/cities.d.ts +5 -3
  16. package/dist/db/cities.js +43 -6
  17. package/dist/db/db.js +1 -0
  18. package/dist/db/founders.js +4 -3
  19. package/dist/db/meta.js +1 -0
  20. package/dist/db/migrations/20230704125715_initial.js +1 -0
  21. package/dist/db/migrations/20230731232915_city_positions.js +1 -0
  22. package/dist/db/migrations/20240106224603_city_polygon.js +1 -0
  23. package/dist/db/migrations/20240320200534_district_polygon.js +24 -0
  24. package/dist/db/regions.js +1 -0
  25. package/dist/db/schools.js +1 -0
  26. package/dist/db/street-sync.js +1 -0
  27. package/dist/db/sync-log.js +1 -0
  28. package/dist/db/types.d.ts +3 -1
  29. package/dist/db/types.js +2 -1
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.js +3 -2
  32. package/dist/open-data-sync/address-points.js +1 -0
  33. package/dist/open-data-sync/cities.js +1 -0
  34. package/dist/open-data-sync/common.js +1 -0
  35. package/dist/open-data-sync/regions.js +1 -0
  36. package/dist/open-data-sync/schools.js +1 -0
  37. package/dist/open-data-sync/streets.js +18 -11
  38. package/dist/smd-to-csv/json-to-csv.js +1 -0
  39. package/dist/smd-to-csv/ordinance-to-csv-rules.js +1 -0
  40. package/dist/smd-to-csv/txt-to-json.js +1 -0
  41. package/dist/street-markdown/municipality.js +1 -0
  42. package/dist/street-markdown/polygons.d.ts +7 -4
  43. package/dist/street-markdown/polygons.js +115 -26
  44. package/dist/street-markdown/roman-numerals.js +1 -0
  45. package/dist/street-markdown/smd-line-parser.js +1 -0
  46. package/dist/street-markdown/smd-parser.js +1 -0
  47. package/dist/street-markdown/smd.js +16 -18
  48. package/dist/street-markdown/token-definition.js +1 -0
  49. package/dist/street-markdown/types.d.ts +2 -1
  50. package/dist/street-markdown/types.js +3 -2
  51. package/dist/utils/atom.js +1 -0
  52. package/dist/utils/helpers.d.ts +2 -0
  53. package/dist/utils/helpers.js +3 -0
  54. package/dist/utils/jtsk2wgs84.js +1 -0
  55. package/package.json +1 -1
@@ -29,3 +29,4 @@ const main = () => __awaiter(void 0, void 0, void 0, function* () {
29
29
  }
30
30
  });
31
31
  main();
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkaW5hbmNlLXRvLWNzdi1ydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zbWQtdG8tY3N2L29yZGluYW5jZS10by1jc3YtcnVsZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLElBQUksQ0FBQztBQUVuQyxNQUFNLElBQUksR0FBRyxHQUFTLEVBQUU7SUFDdEIsMENBQTBDO0lBQzFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0lBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqQyxNQUFNLFNBQVMsR0FBRyxNQUFNLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTNDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1FBQzVCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNuRCxhQUFhLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO1NBQU07UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQyxDQUFBLENBQUM7QUFFRixJQUFJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RyaWN0c1RvQ3N2UnVsZXMgfSBmcm9tIFwiLi9qc29uLXRvLWNzdi5qc1wiO1xyXG5pbXBvcnQgeyBnZXRQYXJzZWREaXN0cmljdHMgfSBmcm9tIFwiLi90eHQtdG8tanNvbi5qc1wiO1xyXG5cclxuaW1wb3J0IHsgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xyXG5cclxuY29uc3QgbWFpbiA9IGFzeW5jICgpID0+IHtcclxuICAvLyB0YWtlIGZpcnN0IG5vZGUgYXJndW1lbnQgYXMgYSBmaWxlIG5hbWVcclxuICBpZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA8IDMpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoXCJNaXNzaW5nIGZpbGUgbmFtZSBhcmd1bWVudFwiKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGZpbGVOYW1lID0gcHJvY2Vzcy5hcmd2WzJdO1xyXG5cclxuICBjb25zdCBkaXN0cmljdHMgPSBhd2FpdCBnZXRQYXJzZWREaXN0cmljdHMoZmlsZU5hbWUpO1xyXG4gIGNvbnN0IGNzdiA9IGRpc3RyaWN0c1RvQ3N2UnVsZXMoZGlzdHJpY3RzKTtcclxuXHJcbiAgaWYgKHByb2Nlc3MuYXJndi5sZW5ndGggPj0gNCkge1xyXG4gICAgY29uc3Qgb3V0cHV0RmlsZU5hbWUgPSBwcm9jZXNzLmFyZ3ZbM107XHJcbiAgICBjb25zb2xlLmxvZyhgV3JpdGluZyBvdXRwdXQgdG8gJHtvdXRwdXRGaWxlTmFtZX1gKTtcclxuICAgIHdyaXRlRmlsZVN5bmMob3V0cHV0RmlsZU5hbWUsIGNzdik7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKGNzdik7XHJcbiAgfVxyXG59O1xyXG5cclxubWFpbigpO1xyXG4iXX0=
@@ -100,3 +100,4 @@ export function getParsedDistricts(filePath) {
100
100
  return districts;
101
101
  });
102
102
  }
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHh0LXRvLWpzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc21kLXRvLWNzdi90eHQtdG8tanNvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxHQUNYLCtiQUErYixDQUFDO0FBRWxjLFNBQVMsY0FBYyxDQUFDLElBQUk7SUFDMUIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLEVBQUU7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQUk7SUFDeEIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBZ0Isa0JBQWtCLENBQUMsUUFBUTs7UUFDL0MsTUFBTSxFQUFFLEdBQUcsZUFBZSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7U0FDbEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXpCLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSTtZQUMxQixJQUFJLENBQUMsR0FBRyxJQUFJO2lCQUNULElBQUksRUFBRTtpQkFDTixPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztpQkFDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7aUJBQ2xCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2lCQUM3QixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztpQkFDN0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7aUJBQzVCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUNmLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtvQkFDekIsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO3dCQUMzQixlQUFlLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDNUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDdEI7Z0JBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO29CQUMzQixTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2lCQUNqQztnQkFFRCxlQUFlLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFeEQsYUFBYSxHQUFHLElBQUksQ0FBQzthQUN0QjtpQkFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtvQkFDekIsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO3dCQUMzQixlQUFlLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDNUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDdEI7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUU7b0JBQ3pCLGFBQWEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTt3QkFDZixhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDN0I7eUJBQU07d0JBQ0wsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFOzRCQUNuQixhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDN0I7NkJBQU07NEJBQ0wsT0FBTyxDQUFDLEtBQUssQ0FDWCw4QkFBOEIsR0FBRyxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FDdkQsQ0FBQzt5QkFDSDtxQkFDRjtpQkFDRjthQUNGO1lBRUQsVUFBVSxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1lBQ2IsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUN6QixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUU7b0JBQzNCLGVBQWUsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzdDO1lBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO2dCQUMzQixTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsMENBQTBDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcclxuaW1wb3J0IHsgb25jZSB9IGZyb20gXCJldmVudHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlSW50ZXJmYWNlIH0gZnJvbSBcInJlYWRsaW5lXCI7XHJcblxyXG5jb25zdCBwYXR0ZXJuID1cclxuICAvXihbXiDigJMsLV0rKFsg4oCTLV1bXiAs4oCTLV0rKSopKCBb4oCTLV0gKGxpY2jDoSDEjS58c3Vkw6EgxI0ufMSNLnzEjS4gcC4pKCAoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykoKCwgP3wgP2EgPykoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykpKik/KCgsID98ID9hID8pKGxpY2jDoSDEjS58c3Vkw6EgxI0ufMSNLnzEjS4gcC4pKCAoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykoKCwgP3wgP2EgPykoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykpKik/KSopPyQvO1xyXG5cclxuZnVuY3Rpb24gZ2V0TmV3RGlzdHJpY3QobmFtZSkge1xyXG4gIHJldHVybiB7XHJcbiAgICBuYW1lOiBuYW1lLFxyXG4gICAgc2Nob29sczogW10sXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TmV3U2Nob29sKG5hbWUpIHtcclxuICByZXR1cm4ge1xyXG4gICAgbmFtZTogbmFtZSxcclxuICAgIGxpbmVzOiBbXSxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkRGlzdHJpY3RzKGZpbGVQYXRoKSB7XHJcbiAgY29uc3QgcmwgPSBjcmVhdGVJbnRlcmZhY2Uoe1xyXG4gICAgaW5wdXQ6IGNyZWF0ZVJlYWRTdHJlYW0oZmlsZVBhdGgpLFxyXG4gIH0pO1xyXG5cclxuICBsZXQgbGluZU51bWJlciA9IDE7XHJcbiAgbGV0IGRpc3RyaWN0cyA9IFtdO1xyXG4gIGxldCBjdXJyZW50RGlzdHJpY3QgPSBudWxsO1xyXG4gIGxldCBjdXJyZW50U2Nob29sID0gbnVsbDtcclxuXHJcbiAgcmwub24oXCJsaW5lXCIsIGZ1bmN0aW9uIChsaW5lKSB7XHJcbiAgICBsZXQgcyA9IGxpbmVcclxuICAgICAgLnRyaW0oKVxyXG4gICAgICAucmVwbGFjZSgvICsoPz0gKS9nLCBcIlwiKVxyXG4gICAgICAucmVwbGFjZSgv4oCTL2csIFwiLVwiKVxyXG4gICAgICAucmVwbGFjZSgvbsOhYsWZXFwuL2csIFwibsOhYsWZZcW+w61cIilcclxuICAgICAgLnJlcGxhY2UoL07DoWLFmVxcLi9nLCBcIk7DoWLFmWXFvsOtXCIpXHJcbiAgICAgIC5yZXBsYWNlKC9uw6FtXFwuL2csIFwibsOhbcSbc3TDrVwiKVxyXG4gICAgICAucmVwbGFjZSgvTsOhbVxcLi9nLCBcIk7DoW3Em3N0w61cIik7XHJcblxyXG4gICAgaWYgKHNbMF0gPT0gXCIjXCIpIHtcclxuICAgICAgaWYgKGN1cnJlbnRTY2hvb2wgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgPT0gbnVsbCkge1xyXG4gICAgICAgICAgY3VycmVudERpc3RyaWN0ID0gZ2V0TmV3RGlzdHJpY3QoXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJlbnREaXN0cmljdC5zY2hvb2xzLnB1c2goY3VycmVudFNjaG9vbCk7XHJcbiAgICAgICAgY3VycmVudFNjaG9vbCA9IG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgIT0gbnVsbCkge1xyXG4gICAgICAgIGRpc3RyaWN0cy5wdXNoKGN1cnJlbnREaXN0cmljdCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KHMuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XHJcblxyXG4gICAgICBjdXJyZW50U2Nob29sID0gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAocyA9PSBcIlwiKSB7XHJcbiAgICAgIGlmIChjdXJyZW50U2Nob29sICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoY3VycmVudERpc3RyaWN0ID09IG51bGwpIHtcclxuICAgICAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KFwiXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50RGlzdHJpY3Quc2Nob29scy5wdXNoKGN1cnJlbnRTY2hvb2wpO1xyXG4gICAgICAgIGN1cnJlbnRTY2hvb2wgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoY3VycmVudFNjaG9vbCA9PSBudWxsKSB7XHJcbiAgICAgICAgY3VycmVudFNjaG9vbCA9IGdldE5ld1NjaG9vbChzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc1swXSA9PSBcIiFcIikge1xyXG4gICAgICAgICAgY3VycmVudFNjaG9vbC5saW5lcy5wdXNoKHMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KHMpKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRTY2hvb2wubGluZXMucHVzaChzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgXCJJbnZhbGlkIHN0cmVldCBsaW5lIG9uIGxpbmUgXCIgKyBsaW5lTnVtYmVyICsgXCI6IFwiICsgc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxpbmVOdW1iZXIrKztcclxuICB9KTtcclxuXHJcbiAgcmwub24oXCJjbG9zZVwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoY3VycmVudFNjaG9vbCAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgPT0gbnVsbCkge1xyXG4gICAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KFwiXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnREaXN0cmljdC5zY2hvb2xzLnB1c2goY3VycmVudFNjaG9vbCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGN1cnJlbnREaXN0cmljdCAhPSBudWxsKSB7XHJcbiAgICAgIGRpc3RyaWN0cy5wdXNoKGN1cnJlbnREaXN0cmljdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGlzdHJpY3RzKSk7XHJcbiAgfSk7XHJcblxyXG4gIGF3YWl0IG9uY2UocmwsIFwiY2xvc2VcIik7XHJcbiAgcmV0dXJuIGRpc3RyaWN0cztcclxufVxyXG4iXX0=
@@ -116,3 +116,4 @@ const getMunicipalityType = (type) => {
116
116
  const cleanName = (name) => {
117
117
  return name.trim();
118
118
  };
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVuaWNpcGFsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9tdW5pY2lwYWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwwQkFBMEIsR0FDM0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQVcsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHeEQsTUFBTSw4QkFBOEIsR0FBRyxlQUFlLENBQUM7QUFFdkQsTUFBTSx5QkFBeUIsR0FDN0Isb0ZBQW9GLENBQUM7QUFFdkYsTUFBTSw2QkFBNkIsR0FBRyxTQUFTLENBQUM7QUFFaEQsTUFBTSx3QkFBd0IsR0FDNUIsd0VBQXdFLENBQUM7QUFFM0UsTUFBTSwyQkFBMkIsR0FDL0IsNkNBQTZDLENBQUM7QUFFaEQsTUFBTSx5QkFBeUIsR0FDN0IsZ0VBQWdFLENBQUM7QUFDbkUsTUFBTSw2QkFBNkIsR0FDakMsNENBQTRDLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFZLEVBQVcsRUFBRTtJQUM1RCxPQUFPLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxJQUFZLEVBQ1osT0FBZ0IsRUFDZSxFQUFFO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsT0FBTztZQUNMLE1BQU0sRUFBRTtnQkFDTjtvQkFDRSxPQUFPLEVBQ0wsbUxBQW1MO29CQUNyTCxXQUFXLEVBQUUsQ0FBQztvQkFDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO2lCQUMzQjthQUNGO1lBQ0QsWUFBWSxF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LGdCQUFnQixDQUFDLElBQUksQ0FBQztLQUNoQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUU7SUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDckIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBmaW5kTXVuaWNpcGFsaXR5QnlOYW1lQW5kVHlwZSxcclxuICBmaW5kTXVuaWNpcGFsaXR5UGFydEJ5TmFtZSxcclxufSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgRm91bmRlciwgTXVuaWNpcGFsaXR5VHlwZSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQgeyBEYk11bmljaXBhbGl0eVJlc3VsdCwgTXVuaWNpcGFsaXR5UGFydFJlc3VsdCB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5jb25zdCBtdW5pY2lwYWxpdHlTd2l0Y2hTdGFydFBhdHRlcm4gPSAvXm5hdsOtYyB1bGljZSAvO1xyXG5cclxuY29uc3QgbXVuaWNpcGFsaXR5U3dpdGNoUGF0dGVybiA9XHJcbiAgL15uYXbDrWMgdWxpY2UgKHogKT8oPzx0eXBlPm3Em3N0c2vDqSDEjcOhc3RpfG3Em3N0c2vDqWhvIG9idm9kdXxvYmNlfG3Em3N0YSkgKD88bmFtZT4uKyk6JC87XHJcblxyXG5jb25zdCB3aG9sZU11bmljaXBhbGl0eVN0YXJ0UGF0dGVybiA9IC9ew7p6ZW3DrSAvO1xyXG5cclxuY29uc3Qgd2hvbGVNdW5pY2lwYWxpdHlQYXR0ZXJuID1cclxuICAvXsO6emVtw60gKD88dHlwZT5txJtzdHNrw6kgxI3DoXN0aXxtxJtzdHNrw6lobyBvYnZvZHV8b2JjZXxtxJtzdGEpICg/PG5hbWU+LispJC87XHJcblxyXG5jb25zdCByZXN0V2l0aE5vU3RyZWV0TmFtZVBhdHRlcm4gPVxyXG4gIC9edsWhZWNobnkgb3N0YXRuw60gYnVkb3Z5IGJleiBuw6F6dnUgdWxpY2VcXHMqJC87XHJcblxyXG5jb25zdCByZXN0T2ZNdW5pY2lwYWxpdHlQYXR0ZXJuID1cclxuICAvXnpieXRlayAoPzx0eXBlPm3Em3N0c2vDqSDEjcOhc3RpfG3Em3N0c2vDqWhvIG9idm9kdXxvYmNlfG3Em3N0YSlcXHMqJC87XHJcbmNvbnN0IHJlc3RPZk11bmljaXBhbGl0eVBhcnRQYXR0ZXJuID1cclxuICAvXnpieXRlayDEjcOhc3RpIChvYmNlfG3Em3N0YSkgKD88bmFtZT4uKylcXHMqJC87XHJcblxyXG5leHBvcnQgY29uc3QgaXNNdW5pY2lwYWxpdHlTd2l0Y2ggPSAobGluZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgcmV0dXJuIG11bmljaXBhbGl0eVN3aXRjaFN0YXJ0UGF0dGVybi50ZXN0KGxpbmUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFN3aXRjaE11bmljaXBhbGl0eSA9IGFzeW5jIChcclxuICBsaW5lOiBzdHJpbmcsXHJcbiAgZm91bmRlcjogRm91bmRlclxyXG4pOiBQcm9taXNlPERiTXVuaWNpcGFsaXR5UmVzdWx0PiA9PiB7XHJcbiAgY29uc3QgbWF0Y2ggPSBtdW5pY2lwYWxpdHlTd2l0Y2hQYXR0ZXJuLmV4ZWMobGluZSk7XHJcbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlcnJvcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtZXNzYWdlOlxyXG4gICAgICAgICAgICBcIk5lcGxhdG7DvSB6w6FwaXMgcHJvIGRvxI1hc25vdSB6bcSbbnUgb2JjZSB2IGRlZmluaWNpIHVsaWMuIFNwcsOhdm7DvSB6w6FwaXMgamU6IG5hdsOtYyB1bGljZSA8dHlwPiA8bsOhemV2IG9iY2U+LiBOYXDFmS46ICduYXbDrWMgdWxpY2Ugb2JjZSBNb2tyw6EgTGhvdGE6JyAobsOhemV2IG9iY2UgbXVzw60gYsO9dCB2IDEuIHDDoWTEmykuXCIsXHJcbiAgICAgICAgICBzdGFydE9mZnNldDogMCxcclxuICAgICAgICAgIGVuZE9mZnNldDogbGluZS5sZW5ndGggKyAxLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIG11bmljaXBhbGl0eTogbnVsbCxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbnN0IHsgdHlwZSwgbmFtZSB9ID0gbWF0Y2guZ3JvdXBzO1xyXG4gIHJldHVybiBhd2FpdCBnZXRNdW5pY2lwYWxpdHlSZXN1bHQodHlwZSwgY2xlYW5OYW1lKG5hbWUpLCBsaW5lLCBmb3VuZGVyKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1dob2xlTXVuaWNpcGFsaXR5ID0gKGxpbmU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG4gIHJldHVybiB3aG9sZU11bmljaXBhbGl0eVN0YXJ0UGF0dGVybi50ZXN0KGxpbmUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzUmVzdFdpdGhOb1N0cmVldE5hbWVMaW5lID0gKGxpbmU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG4gIHJldHVybiByZXN0V2l0aE5vU3RyZWV0TmFtZVBhdHRlcm4udGVzdChsaW5lKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1Jlc3RPZk11bmljaXBhbGl0eUxpbmUgPSAobGluZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgcmV0dXJuIHJlc3RPZk11bmljaXBhbGl0eVBhdHRlcm4udGVzdChsaW5lKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1Jlc3RPZk11bmljaXBhbGl0eVBhcnRMaW5lID0gKGxpbmU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG4gIHJldHVybiByZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0UGF0dGVybi50ZXN0KGxpbmUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFJlc3RPZk11bmljaXBhbGl0eVBhcnQgPSBhc3luYyAoXHJcbiAgbGluZTogc3RyaW5nLFxyXG4gIGZvdW5kZXI6IEZvdW5kZXJcclxuKTogUHJvbWlzZTxNdW5pY2lwYWxpdHlQYXJ0UmVzdWx0PiA9PiB7XHJcbiAgY29uc3QgbWF0Y2ggPSByZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0UGF0dGVybi5leGVjKGxpbmUpO1xyXG4gIGlmIChtYXRjaCA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXJyb3JzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbWVzc2FnZTpcclxuICAgICAgICAgICAgXCJOZXBsYXRuw70gesOhcGlzIHBybyBwxZlpZMOhbsOtIHpieXRrdSDEjcOhc3RpIG9iY2UuIFNwcsOhdm7DvSB6w6FwaXMgamU6IHpieXRlayDEjcOhc3RpIDx0eXA+IDxuw6F6ZXYgb2JjZT4uIE5hcMWZLjogJ3pieXRlayDEjcOhc3RpIG9iY2UgTWFsxaFvdmljZScgKG7DoXpldiDEjcOhc3RpIG9iY2UgbXVzw60gYsO9dCB2IDEuIHDDoWTEmykuXCIsXHJcbiAgICAgICAgICBzdGFydE9mZnNldDogMCxcclxuICAgICAgICAgIGVuZE9mZnNldDogbGluZS5sZW5ndGggKyAxLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIG11bmljaXBhbGl0eVBhcnRDb2RlOiBudWxsLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29uc3QgeyBuYW1lIH0gPSBtYXRjaC5ncm91cHM7XHJcbiAgcmV0dXJuIGF3YWl0IGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQobmFtZSwgbGluZSwgZm91bmRlcik7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0V2hvbGVNdW5pY2lwYWxpdHkgPSBhc3luYyAoXHJcbiAgbGluZTogc3RyaW5nLFxyXG4gIGZvdW5kZXI6IEZvdW5kZXJcclxuKTogUHJvbWlzZTxEYk11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IG1hdGNoID0gd2hvbGVNdW5pY2lwYWxpdHlQYXR0ZXJuLmV4ZWMobGluZSk7XHJcbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlcnJvcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtZXNzYWdlOlxyXG4gICAgICAgICAgICBcIk5lcGxhdG7DvSB6w6FwaXMgcHJvIHDFmWlkw6Fuw60gY2Vsw6kgb2JjZS4gU3Byw6F2bsO9IHrDoXBpcyBqZTogw7p6ZW3DrSA8dHlwPiA8bsOhemV2IG9iY2U+LiBOYXDFmS46ICfDunplbcOtIG9iY2UgS2xhZG5vJyAobsOhemV2IG9iY2UgbXVzw60gYsO9dCB2IDEuIHDDoWTEmykuXCIsXHJcbiAgICAgICAgICBzdGFydE9mZnNldDogMCxcclxuICAgICAgICAgIGVuZE9mZnNldDogbGluZS5sZW5ndGggKyAxLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIG11bmljaXBhbGl0eTogbnVsbCxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbnN0IHsgdHlwZSwgbmFtZSB9ID0gbWF0Y2guZ3JvdXBzO1xyXG4gIHJldHVybiBhd2FpdCBnZXRNdW5pY2lwYWxpdHlSZXN1bHQodHlwZSwgY2xlYW5OYW1lKG5hbWUpLCBsaW5lLCBmb3VuZGVyKTtcclxufTtcclxuXHJcbmNvbnN0IGdldE11bmljaXBhbGl0eVJlc3VsdCA9IGFzeW5jIChcclxuICB0eXBlOiBzdHJpbmcsXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGxpbmU6IHN0cmluZyxcclxuICBmb3VuZGVyOiBGb3VuZGVyXHJcbik6IFByb21pc2U8RGJNdW5pY2lwYWxpdHlSZXN1bHQ+ID0+IHtcclxuICBjb25zdCB0eXBlVmFsdWUgPSBnZXRNdW5pY2lwYWxpdHlUeXBlKHR5cGUpO1xyXG4gIGNvbnN0IHsgbXVuaWNpcGFsaXR5LCBlcnJvcnMgfSA9IGF3YWl0IGZpbmRNdW5pY2lwYWxpdHlCeU5hbWVBbmRUeXBlKFxyXG4gICAgbmFtZSxcclxuICAgIHR5cGVWYWx1ZSxcclxuICAgIGZvdW5kZXJcclxuICApO1xyXG5cclxuICBjb25zdCBzdGFydE9mZnNldCA9IGxpbmUuaW5kZXhPZihuYW1lKTtcclxuICBjb25zdCBlbmRPZmZzZXQgPSBzdGFydE9mZnNldCArIG5hbWUubGVuZ3RoICsgMTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIG11bmljaXBhbGl0eSxcclxuICAgIGVycm9yczogZXJyb3JzLm1hcCgoZXJyb3IpID0+ICh7XHJcbiAgICAgIC4uLmVycm9yLFxyXG4gICAgICBzdGFydE9mZnNldCxcclxuICAgICAgZW5kT2Zmc2V0LFxyXG4gICAgfSkpLFxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TXVuaWNpcGFsaXR5UGFydFJlc3VsdCA9IGFzeW5jIChcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgbGluZTogc3RyaW5nLFxyXG4gIGZvdW5kZXI6IEZvdW5kZXJcclxuKTogUHJvbWlzZTxNdW5pY2lwYWxpdHlQYXJ0UmVzdWx0PiA9PiB7XHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHlQYXJ0Q29kZSwgZXJyb3JzIH0gPSBhd2FpdCBmaW5kTXVuaWNpcGFsaXR5UGFydEJ5TmFtZShcclxuICAgIG5hbWUsXHJcbiAgICBmb3VuZGVyXHJcbiAgKTtcclxuXHJcbiAgY29uc3Qgc3RhcnRPZmZzZXQgPSBsaW5lLmluZGV4T2YobmFtZSk7XHJcbiAgY29uc3QgZW5kT2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBuYW1lLmxlbmd0aCArIDE7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgIGVycm9yczogZXJyb3JzLm1hcCgoZXJyb3IpID0+ICh7XHJcbiAgICAgIC4uLmVycm9yLFxyXG4gICAgICBzdGFydE9mZnNldCxcclxuICAgICAgZW5kT2Zmc2V0LFxyXG4gICAgfSkpLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBnZXRNdW5pY2lwYWxpdHlUeXBlID0gKHR5cGU6IHN0cmluZyk6IE11bmljaXBhbGl0eVR5cGUgPT4ge1xyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSBcIm3Em3N0c2vDqSDEjcOhc3RpXCI6XHJcbiAgICBjYXNlIFwibcSbc3Rza8OpaG8gb2J2b2R1XCI6XHJcbiAgICAgIHJldHVybiBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0O1xyXG4gICAgY2FzZSBcIm9iY2VcIjpcclxuICAgIGNhc2UgXCJtxJtzdGFcIjpcclxuICAgICAgcmV0dXJuIE11bmljaXBhbGl0eVR5cGUuQ2l0eTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBjbGVhbk5hbWUgPSAobmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICByZXR1cm4gbmFtZS50cmltKCk7XHJcbn07XHJcbiJdfQ==
@@ -1,4 +1,7 @@
1
- import { Municipality } from "./types";
2
- import { FeatureCollection, MultiPolygon, Polygon } from "@turf/helpers";
3
- export declare const municipalityToPolygons: (municipality: Municipality) => Promise<FeatureCollection>;
4
- export declare const createPolygons: (municipality: Municipality, cityPolygons: Record<number, FeatureCollection<Polygon | MultiPolygon>>) => FeatureCollection;
1
+ import { Municipality, School } from "./types";
2
+ import { Feature, FeatureCollection, MultiPolygon, Polygon, featureCollection } from "@turf/helpers";
3
+ export declare const municipalitiesToPolygons: (municipalities: Municipality[]) => Promise<Record<number, FeatureCollection>>;
4
+ export declare const createPolygons: (municipality: Municipality, extraSchools: School[], municipalityPolygons: Record<number, FeatureCollection<Polygon | MultiPolygon>>) => {
5
+ featureCollection: FeatureCollection;
6
+ extraPolygons: Map<string, Feature>;
7
+ };
@@ -12,17 +12,90 @@ import { featureCollection, } from "@turf/helpers";
12
12
  import intersect from "@turf/intersect";
13
13
  import { toMercator, toWgs84 } from "@turf/projection";
14
14
  import union from "@turf/union";
15
- import { getCityPolygonGeojsons } from "../db/cities";
15
+ import { getCityPolygons, getDistrictPolygons } from "../db/cities";
16
16
  import truncate from "@turf/truncate";
17
- export const municipalityToPolygons = (municipality) => __awaiter(void 0, void 0, void 0, function* () {
18
- const cityPolygons = yield getCityPolygonGeojsons(municipality.cityCodes);
19
- return createPolygons(municipality, cityPolygons);
17
+ export const municipalitiesToPolygons = (municipalities) => __awaiter(void 0, void 0, void 0, function* () {
18
+ var _a;
19
+ const { cityCodes, districtCodes } = extractMunicipalityCodes(municipalities);
20
+ const cityPolygons = yield getCityPolygons(cityCodes);
21
+ const districtPolygons = yield getDistrictPolygons(districtCodes);
22
+ const extraSchools = new Map();
23
+ for (const municipality of municipalities) {
24
+ for (const school of municipality.schools) {
25
+ const extraPoints = new Map();
26
+ for (const point of school.addresses) {
27
+ if (point.municipalityCode) {
28
+ if (!extraPoints.has(point.municipalityCode)) {
29
+ extraPoints.set(point.municipalityCode, []);
30
+ }
31
+ extraPoints.get(point.municipalityCode).push(point);
32
+ }
33
+ }
34
+ for (const [municipalityCode, points] of extraPoints) {
35
+ if (!extraSchools.has(municipalityCode)) {
36
+ extraSchools.set(municipalityCode, []);
37
+ }
38
+ extraSchools.get(municipalityCode).push(Object.assign(Object.assign({}, school), { addresses: points }));
39
+ }
40
+ }
41
+ }
42
+ const collectionMap = new Map();
43
+ // schoolIzo -> polygon
44
+ const extraPolygonsMap = new Map();
45
+ for (const municipality of municipalities) {
46
+ const { featureCollection, extraPolygons } = createPolygons(municipality, (_a = extraSchools.get(municipality.code)) !== null && _a !== void 0 ? _a : [], getMunicipalityPolygons(municipality, cityPolygons, districtPolygons));
47
+ collectionMap.set(municipality.code, featureCollection);
48
+ if (extraSchools.has(municipality.code)) {
49
+ for (const [izo, extraPolygon] of extraPolygons) {
50
+ if (!extraPolygonsMap.has(izo)) {
51
+ extraPolygonsMap.set(izo, []);
52
+ }
53
+ extraPolygonsMap.get(izo).push(extraPolygon);
54
+ }
55
+ }
56
+ }
57
+ for (const collection of collectionMap.values()) {
58
+ for (let i = 0; i < collection.features.length; i++) {
59
+ const feature = collection.features[i];
60
+ if (extraPolygonsMap.has(feature.properties.schoolIzo)) {
61
+ const polygons = extraPolygonsMap.get(feature.properties.schoolIzo);
62
+ const newPolygon = union(featureCollection([...polygons, feature]));
63
+ const newFeature = Object.assign(Object.assign({}, newPolygon), { properties: Object.assign({}, feature.properties) });
64
+ collection.features[i] = newFeature;
65
+ }
66
+ }
67
+ }
68
+ const result = {};
69
+ for (const [municipalityCode, collection] of collectionMap) {
70
+ result[municipalityCode] = collection;
71
+ }
72
+ return result;
20
73
  });
21
- export const createPolygons = (municipality, cityPolygons) => {
22
- const citiesMultipolygon = createCitiesMultipolygon(Object.values(cityPolygons));
74
+ const getMunicipalityPolygons = (municipality, cityPolygons, districtPolygons) => {
75
+ const polygons = {};
76
+ for (const cityCode of municipality.cityCodes) {
77
+ if (cityPolygons[cityCode]) {
78
+ polygons[cityCode] = cityPolygons[cityCode];
79
+ }
80
+ }
81
+ for (const districtCode of municipality.districtCodes) {
82
+ if (districtPolygons[districtCode]) {
83
+ polygons[districtCode] = districtPolygons[districtCode];
84
+ }
85
+ }
86
+ return polygons;
87
+ };
88
+ export const createPolygons = (municipality, extraSchools, municipalityPolygons) => {
89
+ const municipalitiesMultipolygon = createMunicipalitiesMultipolygon(Object.values(municipalityPolygons));
23
90
  const uniquePoints = new Map();
24
- for (const school of municipality.schools) {
25
- for (const point of school.addresses) {
91
+ const allSchools = [...municipality.schools, ...extraSchools];
92
+ const extraSchoolIzos = new Set(extraSchools.map((school) => school.izo));
93
+ for (const school of allSchools) {
94
+ const points = [...school.addresses];
95
+ if (school.isWholeMunicipality && extraSchoolIzos.size > 0) {
96
+ points.push(...municipality.wholeMunicipalityPoints);
97
+ }
98
+ for (const point of points) {
26
99
  if (!uniquePoints.has(point.address)) {
27
100
  addPoint(uniquePoints, point, school.izo);
28
101
  }
@@ -37,30 +110,38 @@ export const createPolygons = (municipality, cityPolygons) => {
37
110
  };
38
111
  const polygons = d3DelaunayVoronoi(points);
39
112
  const unitedPolygons = [];
113
+ const extraPolygons = new Map();
40
114
  let colorIndex = 0;
41
- for (const school of municipality.schools) {
115
+ for (const school of allSchools) {
42
116
  const schoolPolygons = polygons.features.filter((polygon) => polygon.properties.schools.includes(school.izo));
43
- if (school.isWholeMunicipality) {
44
- // TODO: in future add support for districts
45
- schoolPolygons.push(...cityPolygons[municipality.cityOrDistrictCode].features);
117
+ if (school.isWholeMunicipality && extraSchoolIzos.size === 0) {
118
+ schoolPolygons.push(...municipalityPolygons[municipality.code].features);
46
119
  }
47
120
  if (schoolPolygons.length === 0) {
48
121
  continue;
49
122
  }
50
123
  const schoolPolygon = intersect(schoolPolygons.length > 1
51
124
  ? union(featureCollection(schoolPolygons))
52
- : schoolPolygons[0], citiesMultipolygon);
53
- unitedPolygons.push(Object.assign(Object.assign({}, schoolPolygon), { properties: {
125
+ : schoolPolygons[0], municipalitiesMultipolygon);
126
+ const feature = Object.assign(Object.assign({}, schoolPolygon), { properties: {
54
127
  schoolIzo: school.izo,
55
128
  colorIndex,
56
- } }));
129
+ } });
130
+ if (extraSchoolIzos.has(school.izo)) {
131
+ extraPolygons.set(school.izo, feature);
132
+ }
133
+ else {
134
+ unitedPolygons.push(feature);
135
+ }
57
136
  colorIndex++;
58
137
  }
59
- const { type } = polygons;
60
- return truncate({
61
- type,
62
- features: [...unitedPolygons],
63
- });
138
+ return {
139
+ featureCollection: truncate({
140
+ type: "FeatureCollection",
141
+ features: [...unitedPolygons],
142
+ }),
143
+ extraPolygons,
144
+ };
64
145
  };
65
146
  const addPoint = (uniquePoints, point, schoolIzo) => {
66
147
  if (point.lat === null || point.lng === null) {
@@ -100,12 +181,20 @@ const d3DelaunayVoronoi = (points) => {
100
181
  })),
101
182
  };
102
183
  };
103
- const createCitiesMultipolygon = (cityPolygons) => {
104
- const cityPolygonFeatures = cityPolygons.reduce((acc, cityPolygon) => {
105
- acc.push(...cityPolygon.features.filter((f) => f.geometry.type === "Polygon" || f.geometry.type === "MultiPolygon"));
184
+ const createMunicipalitiesMultipolygon = (municipalityPolygons) => {
185
+ const municipalityPolygonFeatures = municipalityPolygons.reduce((acc, municipalityPolygon) => {
186
+ acc.push(...municipalityPolygon.features.filter((f) => f.geometry.type === "Polygon" || f.geometry.type === "MultiPolygon"));
106
187
  return acc;
107
188
  }, []);
108
- return cityPolygonFeatures.length > 1
109
- ? union(featureCollection(cityPolygonFeatures))
110
- : cityPolygonFeatures[0];
189
+ return municipalityPolygonFeatures.length > 1
190
+ ? union(featureCollection(municipalityPolygonFeatures))
191
+ : municipalityPolygonFeatures[0];
192
+ };
193
+ const extractMunicipalityCodes = (municipalities) => {
194
+ return municipalities.reduce((acc, municipality) => {
195
+ municipality.cityCodes.forEach((cityCode) => acc.cityCodes.add(cityCode));
196
+ municipality.districtCodes.forEach((districtCode) => acc.districtCodes.add(districtCode));
197
+ return acc;
198
+ }, { cityCodes: new Set(), districtCodes: new Set() });
111
199
  };
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3BvbHlnb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkMsT0FBTyxFQU1MLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBU3RDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3RDLGNBQThCLEVBQ2MsRUFBRTs7SUFDOUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5RSxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7SUFFakQsS0FBSyxNQUFNLFlBQVksSUFBSSxjQUFjLEVBQUU7UUFDekMsS0FBSyxNQUFNLE1BQU0sSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1lBQzVELEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDcEMsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7b0JB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LElBQUksS0FBSyxjQUFjLENBQ3RFLENBQ0YsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUNELEVBQUUsQ0FDSCxDQUFDO0lBRUYsT0FBTywyQkFBMkIsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUMzQyxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxjQUE4QixFQUFFLEVBQUU7SUFDbEUsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUMxQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRTtRQUNwQixZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxRSxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQ2xELEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUNwQyxDQUFDO1FBQ0YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQ0QsRUFBRSxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxHQUFHLEVBQVUsRUFBRSxDQUNuRSxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVsYXVuYXkgfSBmcm9tIFwiZDMtZGVsYXVuYXlcIjtcclxuaW1wb3J0IHsgRXhwb3J0QWRkcmVzc1BvaW50LCBNdW5pY2lwYWxpdHksIFNjaG9vbCB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmUsXHJcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXHJcbiAgTXVsdGlQb2x5Z29uLFxyXG4gIFBvaW50LFxyXG4gIFBvbHlnb24sXHJcbiAgZmVhdHVyZUNvbGxlY3Rpb24sXHJcbn0gZnJvbSBcIkB0dXJmL2hlbHBlcnNcIjtcclxuaW1wb3J0IGludGVyc2VjdCBmcm9tIFwiQHR1cmYvaW50ZXJzZWN0XCI7XHJcbmltcG9ydCB7IHRvTWVyY2F0b3IsIHRvV2dzODQgfSBmcm9tIFwiQHR1cmYvcHJvamVjdGlvblwiO1xyXG5pbXBvcnQgdW5pb24gZnJvbSBcIkB0dXJmL3VuaW9uXCI7XHJcbmltcG9ydCB7IGdldENpdHlQb2x5Z29ucywgZ2V0RGlzdHJpY3RQb2x5Z29ucyB9IGZyb20gXCIuLi9kYi9jaXRpZXNcIjtcclxuaW1wb3J0IHRydW5jYXRlIGZyb20gXCJAdHVyZi90cnVuY2F0ZVwiO1xyXG5pbXBvcnQgeyBQb2x5Z29uc0J5Q29kZXMgfSBmcm9tIFwiLi4vZGIvdHlwZXNcIjtcclxuXHJcbnR5cGUgUG9seWdvblByb3BzID0ge1xyXG4gIHNjaG9vbHM6IHN0cmluZ1tdO1xyXG4gIGluZGV4OiBudW1iZXI7XHJcbiAgbmVpZ2hib3JzOiBTZXQ8bnVtYmVyPjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBtdW5pY2lwYWxpdGllc1RvUG9seWdvbnMgPSBhc3luYyAoXHJcbiAgbXVuaWNpcGFsaXRpZXM6IE11bmljaXBhbGl0eVtdXHJcbik6IFByb21pc2U8UmVjb3JkPG51bWJlciwgRmVhdHVyZUNvbGxlY3Rpb24+PiA9PiB7XHJcbiAgY29uc3QgeyBjaXR5Q29kZXMsIGRpc3RyaWN0Q29kZXMgfSA9IGV4dHJhY3RNdW5pY2lwYWxpdHlDb2RlcyhtdW5pY2lwYWxpdGllcyk7XHJcbiAgY29uc3QgY2l0eVBvbHlnb25zID0gYXdhaXQgZ2V0Q2l0eVBvbHlnb25zKGNpdHlDb2Rlcyk7XHJcbiAgY29uc3QgZGlzdHJpY3RQb2x5Z29ucyA9IGF3YWl0IGdldERpc3RyaWN0UG9seWdvbnMoZGlzdHJpY3RDb2Rlcyk7XHJcblxyXG4gIGNvbnN0IGV4dHJhU2Nob29scyA9IG5ldyBNYXA8bnVtYmVyLCBTY2hvb2xbXT4oKTtcclxuXHJcbiAgZm9yIChjb25zdCBtdW5pY2lwYWxpdHkgb2YgbXVuaWNpcGFsaXRpZXMpIHtcclxuICAgIGZvciAoY29uc3Qgc2Nob29sIG9mIG11bmljaXBhbGl0eS5zY2hvb2xzKSB7XHJcbiAgICAgIGNvbnN0IGV4dHJhUG9pbnRzID0gbmV3IE1hcDxudW1iZXIsIEV4cG9ydEFkZHJlc3NQb2ludFtdPigpO1xyXG4gICAgICBmb3IgKGNvbnN0IHBvaW50IG9mIHNjaG9vbC5hZGRyZXNzZXMpIHtcclxuICAgICAgICBpZiAocG9pbnQubXVuaWNpcGFsaXR5Q29kZSkge1xyXG4gICAgICAgICAgaWYgKCFleHRyYVBvaW50cy5oYXMocG9pbnQubXVuaWNpcGFsaXR5Q29kZSkpIHtcclxuICAgICAgICAgICAgZXh0cmFQb2ludHMuc2V0KHBvaW50Lm11bmljaXBhbGl0eUNvZGUsIFtdKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBleHRyYVBvaW50cy5nZXQocG9pbnQubXVuaWNpcGFsaXR5Q29kZSkucHVzaChwb2ludCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IFttdW5pY2lwYWxpdHlDb2RlLCBwb2ludHNdIG9mIGV4dHJhUG9pbnRzKSB7XHJcbiAgICAgICAgaWYgKCFleHRyYVNjaG9vbHMuaGFzKG11bmljaXBhbGl0eUNvZGUpKSB7XHJcbiAgICAgICAgICBleHRyYVNjaG9vbHMuc2V0KG11bmljaXBhbGl0eUNvZGUsIFtdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV4dHJhU2Nob29scy5nZXQobXVuaWNpcGFsaXR5Q29kZSkucHVzaCh7XHJcbiAgICAgICAgICAuLi5zY2hvb2wsXHJcbiAgICAgICAgICBhZGRyZXNzZXM6IHBvaW50cyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3QgY29sbGVjdGlvbk1hcCA9IG5ldyBNYXA8bnVtYmVyLCBGZWF0dXJlQ29sbGVjdGlvbj4oKTtcclxuICAvLyBzY2hvb2xJem8gLT4gcG9seWdvblxyXG4gIGNvbnN0IGV4dHJhUG9seWdvbnNNYXAgPSBuZXcgTWFwPHN0cmluZywgRmVhdHVyZVtdPigpO1xyXG5cclxuICBmb3IgKGNvbnN0IG11bmljaXBhbGl0eSBvZiBtdW5pY2lwYWxpdGllcykge1xyXG4gICAgY29uc3QgeyBmZWF0dXJlQ29sbGVjdGlvbiwgZXh0cmFQb2x5Z29ucyB9ID0gY3JlYXRlUG9seWdvbnMoXHJcbiAgICAgIG11bmljaXBhbGl0eSxcclxuICAgICAgZXh0cmFTY2hvb2xzLmdldChtdW5pY2lwYWxpdHkuY29kZSkgPz8gW10sXHJcbiAgICAgIGdldE11bmljaXBhbGl0eVBvbHlnb25zKG11bmljaXBhbGl0eSwgY2l0eVBvbHlnb25zLCBkaXN0cmljdFBvbHlnb25zKVxyXG4gICAgKTtcclxuICAgIGNvbGxlY3Rpb25NYXAuc2V0KG11bmljaXBhbGl0eS5jb2RlLCBmZWF0dXJlQ29sbGVjdGlvbik7XHJcbiAgICBpZiAoZXh0cmFTY2hvb2xzLmhhcyhtdW5pY2lwYWxpdHkuY29kZSkpIHtcclxuICAgICAgZm9yIChjb25zdCBbaXpvLCBleHRyYVBvbHlnb25dIG9mIGV4dHJhUG9seWdvbnMpIHtcclxuICAgICAgICBpZiAoIWV4dHJhUG9seWdvbnNNYXAuaGFzKGl6bykpIHtcclxuICAgICAgICAgIGV4dHJhUG9seWdvbnNNYXAuc2V0KGl6bywgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBleHRyYVBvbHlnb25zTWFwLmdldChpem8pLnB1c2goZXh0cmFQb2x5Z29uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25NYXAudmFsdWVzKCkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sbGVjdGlvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBmZWF0dXJlID0gY29sbGVjdGlvbi5mZWF0dXJlc1tpXTtcclxuICAgICAgaWYgKGV4dHJhUG9seWdvbnNNYXAuaGFzKGZlYXR1cmUucHJvcGVydGllcy5zY2hvb2xJem8pKSB7XHJcbiAgICAgICAgY29uc3QgcG9seWdvbnMgPSBleHRyYVBvbHlnb25zTWFwLmdldChmZWF0dXJlLnByb3BlcnRpZXMuc2Nob29sSXpvKTtcclxuICAgICAgICBjb25zdCBuZXdQb2x5Z29uID0gdW5pb24oZmVhdHVyZUNvbGxlY3Rpb24oWy4uLnBvbHlnb25zLCBmZWF0dXJlXSkpO1xyXG4gICAgICAgIGNvbnN0IG5ld0ZlYXR1cmUgPSB7XHJcbiAgICAgICAgICAuLi5uZXdQb2x5Z29uLFxyXG4gICAgICAgICAgcHJvcGVydGllczogeyAuLi5mZWF0dXJlLnByb3BlcnRpZXMgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbGxlY3Rpb24uZmVhdHVyZXNbaV0gPSBuZXdGZWF0dXJlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxudW1iZXIsIEZlYXR1cmVDb2xsZWN0aW9uPiA9IHt9O1xyXG4gIGZvciAoY29uc3QgW211bmljaXBhbGl0eUNvZGUsIGNvbGxlY3Rpb25dIG9mIGNvbGxlY3Rpb25NYXApIHtcclxuICAgIHJlc3VsdFttdW5pY2lwYWxpdHlDb2RlXSA9IGNvbGxlY3Rpb247XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG5jb25zdCBnZXRNdW5pY2lwYWxpdHlQb2x5Z29ucyA9IChcclxuICBtdW5pY2lwYWxpdHk6IE11bmljaXBhbGl0eSxcclxuICBjaXR5UG9seWdvbnM6IFBvbHlnb25zQnlDb2RlcyxcclxuICBkaXN0cmljdFBvbHlnb25zOiBQb2x5Z29uc0J5Q29kZXNcclxuKTogUG9seWdvbnNCeUNvZGVzID0+IHtcclxuICBjb25zdCBwb2x5Z29uczogUG9seWdvbnNCeUNvZGVzID0ge307XHJcblxyXG4gIGZvciAoY29uc3QgY2l0eUNvZGUgb2YgbXVuaWNpcGFsaXR5LmNpdHlDb2Rlcykge1xyXG4gICAgaWYgKGNpdHlQb2x5Z29uc1tjaXR5Q29kZV0pIHtcclxuICAgICAgcG9seWdvbnNbY2l0eUNvZGVdID0gY2l0eVBvbHlnb25zW2NpdHlDb2RlXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgZGlzdHJpY3RDb2RlIG9mIG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzKSB7XHJcbiAgICBpZiAoZGlzdHJpY3RQb2x5Z29uc1tkaXN0cmljdENvZGVdKSB7XHJcbiAgICAgIHBvbHlnb25zW2Rpc3RyaWN0Q29kZV0gPSBkaXN0cmljdFBvbHlnb25zW2Rpc3RyaWN0Q29kZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcG9seWdvbnM7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9seWdvbnMgPSAoXHJcbiAgbXVuaWNpcGFsaXR5OiBNdW5pY2lwYWxpdHksXHJcbiAgZXh0cmFTY2hvb2xzOiBTY2hvb2xbXSxcclxuICBtdW5pY2lwYWxpdHlQb2x5Z29uczogUmVjb3JkPFxyXG4gICAgbnVtYmVyLFxyXG4gICAgRmVhdHVyZUNvbGxlY3Rpb248UG9seWdvbiB8IE11bHRpUG9seWdvbj5cclxuICA+XHJcbik6IHtcclxuICBmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb247XHJcbiAgZXh0cmFQb2x5Z29uczogTWFwPHN0cmluZywgRmVhdHVyZT47XHJcbn0gPT4ge1xyXG4gIGNvbnN0IG11bmljaXBhbGl0aWVzTXVsdGlwb2x5Z29uID0gY3JlYXRlTXVuaWNpcGFsaXRpZXNNdWx0aXBvbHlnb24oXHJcbiAgICBPYmplY3QudmFsdWVzKG11bmljaXBhbGl0eVBvbHlnb25zKVxyXG4gICk7XHJcbiAgY29uc3QgdW5pcXVlUG9pbnRzID0gbmV3IE1hcDxzdHJpbmcsIEZlYXR1cmU+KCk7XHJcbiAgY29uc3QgYWxsU2Nob29scyA9IFsuLi5tdW5pY2lwYWxpdHkuc2Nob29scywgLi4uZXh0cmFTY2hvb2xzXTtcclxuICBjb25zdCBleHRyYVNjaG9vbEl6b3MgPSBuZXcgU2V0KGV4dHJhU2Nob29scy5tYXAoKHNjaG9vbCkgPT4gc2Nob29sLml6bykpO1xyXG5cclxuICBmb3IgKGNvbnN0IHNjaG9vbCBvZiBhbGxTY2hvb2xzKSB7XHJcbiAgICBjb25zdCBwb2ludHMgPSBbLi4uc2Nob29sLmFkZHJlc3Nlc107XHJcbiAgICBpZiAoc2Nob29sLmlzV2hvbGVNdW5pY2lwYWxpdHkgJiYgZXh0cmFTY2hvb2xJem9zLnNpemUgPiAwKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKC4uLm11bmljaXBhbGl0eS53aG9sZU11bmljaXBhbGl0eVBvaW50cyk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IHBvaW50IG9mIHBvaW50cykge1xyXG4gICAgICBpZiAoIXVuaXF1ZVBvaW50cy5oYXMocG9pbnQuYWRkcmVzcykpIHtcclxuICAgICAgICBhZGRQb2ludCh1bmlxdWVQb2ludHMsIHBvaW50LCBzY2hvb2wuaXpvKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1bmlxdWVQb2ludHMuZ2V0KHBvaW50LmFkZHJlc3MpLnByb3BlcnRpZXMuc2Nob29scy5wdXNoKHNjaG9vbC5pem8pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBwb2ludHMgPSB7XHJcbiAgICB0eXBlOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXHJcbiAgICBmZWF0dXJlczogQXJyYXkuZnJvbSh1bmlxdWVQb2ludHMudmFsdWVzKCkpLFxyXG4gIH0gYXMgRmVhdHVyZUNvbGxlY3Rpb248UG9pbnQ+O1xyXG5cclxuICBjb25zdCBwb2x5Z29ucyA9IGQzRGVsYXVuYXlWb3Jvbm9pKHBvaW50cyk7XHJcblxyXG4gIGNvbnN0IHVuaXRlZFBvbHlnb25zOiBGZWF0dXJlW10gPSBbXTtcclxuICBjb25zdCBleHRyYVBvbHlnb25zID0gbmV3IE1hcDxzdHJpbmcsIEZlYXR1cmU+KCk7XHJcbiAgbGV0IGNvbG9ySW5kZXggPSAwO1xyXG5cclxuICBmb3IgKGNvbnN0IHNjaG9vbCBvZiBhbGxTY2hvb2xzKSB7XHJcbiAgICBjb25zdCBzY2hvb2xQb2x5Z29uczogRmVhdHVyZTxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPltdID1cclxuICAgICAgcG9seWdvbnMuZmVhdHVyZXMuZmlsdGVyKChwb2x5Z29uKSA9PlxyXG4gICAgICAgIHBvbHlnb24ucHJvcGVydGllcy5zY2hvb2xzLmluY2x1ZGVzKHNjaG9vbC5pem8pXHJcbiAgICAgICk7XHJcblxyXG4gICAgaWYgKHNjaG9vbC5pc1dob2xlTXVuaWNpcGFsaXR5ICYmIGV4dHJhU2Nob29sSXpvcy5zaXplID09PSAwKSB7XHJcbiAgICAgIHNjaG9vbFBvbHlnb25zLnB1c2goLi4ubXVuaWNpcGFsaXR5UG9seWdvbnNbbXVuaWNpcGFsaXR5LmNvZGVdLmZlYXR1cmVzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2Nob29sUG9seWdvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGNvbnRpbnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNjaG9vbFBvbHlnb24gPSBpbnRlcnNlY3QoXHJcbiAgICAgIHNjaG9vbFBvbHlnb25zLmxlbmd0aCA+IDFcclxuICAgICAgICA/IHVuaW9uKGZlYXR1cmVDb2xsZWN0aW9uKHNjaG9vbFBvbHlnb25zKSlcclxuICAgICAgICA6IHNjaG9vbFBvbHlnb25zWzBdLFxyXG4gICAgICBtdW5pY2lwYWxpdGllc011bHRpcG9seWdvblxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmZWF0dXJlID0ge1xyXG4gICAgICAuLi5zY2hvb2xQb2x5Z29uLFxyXG4gICAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgc2Nob29sSXpvOiBzY2hvb2wuaXpvLFxyXG4gICAgICAgIGNvbG9ySW5kZXgsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgaWYgKGV4dHJhU2Nob29sSXpvcy5oYXMoc2Nob29sLml6bykpIHtcclxuICAgICAgZXh0cmFQb2x5Z29ucy5zZXQoc2Nob29sLml6bywgZmVhdHVyZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1bml0ZWRQb2x5Z29ucy5wdXNoKGZlYXR1cmUpO1xyXG4gICAgfVxyXG4gICAgY29sb3JJbmRleCsrO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGZlYXR1cmVDb2xsZWN0aW9uOiB0cnVuY2F0ZSh7XHJcbiAgICAgIHR5cGU6IFwiRmVhdHVyZUNvbGxlY3Rpb25cIixcclxuICAgICAgZmVhdHVyZXM6IFsuLi51bml0ZWRQb2x5Z29uc10sXHJcbiAgICB9KSxcclxuICAgIGV4dHJhUG9seWdvbnMsXHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFBvaW50ID0gKFxyXG4gIHVuaXF1ZVBvaW50czogTWFwPHN0cmluZywgRmVhdHVyZT4sXHJcbiAgcG9pbnQ6IEV4cG9ydEFkZHJlc3NQb2ludCxcclxuICBzY2hvb2xJem86IHN0cmluZ1xyXG4pID0+IHtcclxuICBpZiAocG9pbnQubGF0ID09PSBudWxsIHx8IHBvaW50LmxuZyA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICB1bmlxdWVQb2ludHMuc2V0KHBvaW50LmFkZHJlc3MsIHtcclxuICAgIHR5cGU6IFwiRmVhdHVyZVwiLFxyXG4gICAgZ2VvbWV0cnk6IHtcclxuICAgICAgdHlwZTogXCJQb2ludFwiLFxyXG4gICAgICBjb29yZGluYXRlczogW3BvaW50LmxuZywgcG9pbnQubGF0XSxcclxuICAgIH0sXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgIHNjaG9vbHM6IFtzY2hvb2xJem9dLFxyXG4gICAgfSxcclxuICB9KTtcclxufTtcclxuXHJcbmNvbnN0IGQzRGVsYXVuYXlWb3Jvbm9pID0gKFxyXG4gIHBvaW50czogRmVhdHVyZUNvbGxlY3Rpb248UG9pbnQ+XHJcbik6IEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24sIFBvbHlnb25Qcm9wcz4gPT4ge1xyXG4gIGNvbnN0IGNvbnZlcnRlZCA9IHBvaW50cy5mZWF0dXJlcy5tYXAoKHApID0+IHtcclxuICAgIHJldHVybiB0b01lcmNhdG9yKFtwLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBwLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXSk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGJib3ggPSBbLi4udG9NZXJjYXRvcihbLTE4MCwgLTg1XSksIC4uLnRvTWVyY2F0b3IoWzE4MCwgODVdKV0gYXMgW1xyXG4gICAgbnVtYmVyLFxyXG4gICAgbnVtYmVyLFxyXG4gICAgbnVtYmVyLFxyXG4gICAgbnVtYmVyXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgZGVsYXVuYXkgPSBuZXcgRGVsYXVuYXkoRmxvYXQ2NEFycmF5Lm9mKC4uLmNvbnZlcnRlZC5mbGF0KCkpKTtcclxuICBjb25zdCB2b3Jvbm9pID0gZGVsYXVuYXkudm9yb25vaShiYm94KTtcclxuICByZXR1cm4ge1xyXG4gICAgdHlwZTogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxyXG4gICAgZmVhdHVyZXM6IEFycmF5LmZyb20odm9yb25vaS5jZWxsUG9seWdvbnMoKSkubWFwKChwb2x5Z29uKSA9PiAoe1xyXG4gICAgICB0eXBlOiBcIkZlYXR1cmVcIixcclxuICAgICAgZ2VvbWV0cnk6IHtcclxuICAgICAgICB0eXBlOiBcIlBvbHlnb25cIixcclxuICAgICAgICBjb29yZGluYXRlczogW3BvbHlnb24ubWFwKChwKSA9PiB0b1dnczg0KHApKV0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBzY2hvb2xzOiBwb2ludHMuZmVhdHVyZXNbcG9seWdvbi5pbmRleF0ucHJvcGVydGllcy5zY2hvb2xzLFxyXG4gICAgICAgIGluZGV4OiBwb2x5Z29uLmluZGV4LFxyXG4gICAgICAgIG5laWdoYm9yczogbmV3IFNldCh2b3Jvbm9pLm5laWdoYm9ycyhwb2x5Z29uLmluZGV4KSksXHJcbiAgICAgIH0sXHJcbiAgICB9KSksXHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZU11bmljaXBhbGl0aWVzTXVsdGlwb2x5Z29uID0gKFxyXG4gIG11bmljaXBhbGl0eVBvbHlnb25zOiBGZWF0dXJlQ29sbGVjdGlvbltdXHJcbik6IEZlYXR1cmU8UG9seWdvbiB8IE11bHRpUG9seWdvbj4gPT4ge1xyXG4gIGNvbnN0IG11bmljaXBhbGl0eVBvbHlnb25GZWF0dXJlcyA9IG11bmljaXBhbGl0eVBvbHlnb25zLnJlZHVjZShcclxuICAgIChhY2MsIG11bmljaXBhbGl0eVBvbHlnb24pID0+IHtcclxuICAgICAgYWNjLnB1c2goXHJcbiAgICAgICAgLi4ubXVuaWNpcGFsaXR5UG9seWdvbi5mZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAoZikgPT5cclxuICAgICAgICAgICAgZi5nZW9tZXRyeS50eXBlID09PSBcIlBvbHlnb25cIiB8fCBmLmdlb21ldHJ5LnR5cGUgPT09IFwiTXVsdGlQb2x5Z29uXCJcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LFxyXG4gICAgW11cclxuICApO1xyXG5cclxuICByZXR1cm4gbXVuaWNpcGFsaXR5UG9seWdvbkZlYXR1cmVzLmxlbmd0aCA+IDFcclxuICAgID8gdW5pb24oZmVhdHVyZUNvbGxlY3Rpb24obXVuaWNpcGFsaXR5UG9seWdvbkZlYXR1cmVzKSlcclxuICAgIDogbXVuaWNpcGFsaXR5UG9seWdvbkZlYXR1cmVzWzBdO1xyXG59O1xyXG5cclxuY29uc3QgZXh0cmFjdE11bmljaXBhbGl0eUNvZGVzID0gKG11bmljaXBhbGl0aWVzOiBNdW5pY2lwYWxpdHlbXSkgPT4ge1xyXG4gIHJldHVybiBtdW5pY2lwYWxpdGllcy5yZWR1Y2UoXHJcbiAgICAoYWNjLCBtdW5pY2lwYWxpdHkpID0+IHtcclxuICAgICAgbXVuaWNpcGFsaXR5LmNpdHlDb2Rlcy5mb3JFYWNoKChjaXR5Q29kZSkgPT4gYWNjLmNpdHlDb2Rlcy5hZGQoY2l0eUNvZGUpKTtcclxuICAgICAgbXVuaWNpcGFsaXR5LmRpc3RyaWN0Q29kZXMuZm9yRWFjaCgoZGlzdHJpY3RDb2RlKSA9PlxyXG4gICAgICAgIGFjYy5kaXN0cmljdENvZGVzLmFkZChkaXN0cmljdENvZGUpXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LFxyXG4gICAgeyBjaXR5Q29kZXM6IG5ldyBTZXQ8bnVtYmVyPigpLCBkaXN0cmljdENvZGVzOiBuZXcgU2V0PG51bWJlcj4oKSB9XHJcbiAgKTtcclxufTtcclxuIl19
@@ -65,3 +65,4 @@ const generateRomanNumerals = (n) => {
65
65
  }
66
66
  return romanNumerals;
67
67
  };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9tYW4tbnVtZXJhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3JvbWFuLW51bWVyYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksYUFBdUIsQ0FBQztBQUM1QixNQUFNLHlCQUF5QixHQUM3QixrREFBa0QsQ0FBQztBQUNyRCxNQUFNLHdCQUF3QixHQUM1QiwyR0FBMkcsQ0FBQztBQUM5RyxNQUFNLHlCQUF5QixHQUFHLGdDQUFnQyxDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDckUsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELElBQUksSUFBSSxFQUFFO1FBQ1IsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUN0QyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLElBQUksT0FBTyxFQUFFLENBQ3hDLENBQUM7S0FDSDtTQUFNO1FBQ0wsTUFBTSxLQUFLLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1QztZQUNELE9BQU8sYUFBYTtpQkFDakIsS0FBSyxDQUNKLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNyQztpQkFDQSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDakQ7S0FDRjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDdkQsSUFBSSxDQUF5QixDQUFDO0lBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixHQUFHO1FBQ0QsQ0FBQyxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRTtZQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7S0FDRixRQUFRLENBQUMsRUFBRTtJQUNaLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLGtCQUFrQjtBQUNsQixNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDMUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDL0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixFQUFFO1lBQzlDLE9BQU8sTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQztnQkFDaEIsWUFBWSxJQUFJLE1BQU0sQ0FBQzthQUN4QjtTQUNGO1FBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCByb21hbk51bWVyYWxzOiBzdHJpbmdbXTtcclxuY29uc3Qgc2luZ2xlUm9tYW5OdW1lcmFsUGF0dGVybiA9XHJcbiAgL1h7MSwzfShJWHxJVnxWP0l7MCwzfSl8KElYfElWfFZJezAsM30pfChJezEsM30pL2c7XHJcbmNvbnN0IHJvbWFuTnVtZXJhbHNMaXN0UGF0dGVybiA9XHJcbiAgLyhYezEsM30oSVh8SVZ8Vj9JezAsM30pfChJWHxJVnxWSXswLDN9KXwoSXsxLDN9KSkoLCA/KFh7MSwzfShJWHxJVnxWP0l7MCwzfSl8KElYfElWfFZJezAsM30pfChJezEsM30pKSkrJC87XHJcbmNvbnN0IHJvbWFuTnVtZXJhbHNSYW5nZVBhdHRlcm4gPSAvKFtJVlhMQ0RNXSspID8tID8oW0lWWExDRE1dKykkLztcclxuZXhwb3J0IGNvbnN0IHNwbGl0U3RyZWV0VmlhUm9tYW5OdW1lcmFscyA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xyXG4gIGNvbnN0IGxpc3QgPSByb21hbk51bWVyYWxzTGlzdFBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgaWYgKGxpc3QpIHtcclxuICAgIGNvbnN0IHN0cmVldE5hbWUgPSBpbnB1dC5zdWJzdHJpbmcoMCwgaW5wdXQuaW5kZXhPZihsaXN0WzBdKSkudHJpbSgpO1xyXG4gICAgcmV0dXJuIGV4dHJhY3RSb21hbk51bWVyYWxzKGxpc3RbMF0pLm1hcChcclxuICAgICAgKG51bWVyYWwpID0+IGAke3N0cmVldE5hbWV9ICR7bnVtZXJhbH1gXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCByYW5nZSA9IHJvbWFuTnVtZXJhbHNSYW5nZVBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgICBpZiAocmFuZ2UpIHtcclxuICAgICAgY29uc3Qgc3RyZWV0TmFtZSA9IGlucHV0LnN1YnN0cmluZygwLCBpbnB1dC5pbmRleE9mKHJhbmdlWzBdKSkudHJpbSgpO1xyXG4gICAgICBjb25zdCBib3VuZHMgPSBleHRyYWN0Um9tYW5OdW1lcmFscyhyYW5nZVswXSk7XHJcbiAgICAgIGlmICghcm9tYW5OdW1lcmFscykge1xyXG4gICAgICAgIHJvbWFuTnVtZXJhbHMgPSBnZW5lcmF0ZVJvbWFuTnVtZXJhbHMoMTAwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcm9tYW5OdW1lcmFsc1xyXG4gICAgICAgIC5zbGljZShcclxuICAgICAgICAgIHJvbWFuTnVtZXJhbHMuaW5kZXhPZihib3VuZHNbMF0pLFxyXG4gICAgICAgICAgcm9tYW5OdW1lcmFscy5pbmRleE9mKGJvdW5kc1sxXSkgKyAxXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5tYXAoKG51bWVyYWwpID0+IGAke3N0cmVldE5hbWV9ICR7bnVtZXJhbH1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIFtpbnB1dF07XHJcbn07XHJcblxyXG5jb25zdCBleHRyYWN0Um9tYW5OdW1lcmFscyA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xyXG4gIGxldCBuOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gIGNvbnN0IG51bWVyYWxzID0gW107XHJcbiAgZG8ge1xyXG4gICAgbiA9IHNpbmdsZVJvbWFuTnVtZXJhbFBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgICBpZiAobikge1xyXG4gICAgICBudW1lcmFscy5wdXNoKG5bMF0pO1xyXG4gICAgfVxyXG4gIH0gd2hpbGUgKG4pO1xyXG4gIHJldHVybiBudW1lcmFscztcclxufTtcclxuXHJcbi8vIHNvdXJjZTogQ2hhdEdQVFxyXG5jb25zdCBnZW5lcmF0ZVJvbWFuTnVtZXJhbHMgPSAobjogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3Qgcm9tYW5OdW1lcmFscyA9IFtdO1xyXG4gIGNvbnN0IHJvbWFuTnVtZXJhbHNNYXAgPSBuZXcgTWFwKFtcclxuICAgIFsxMDAwLCBcIk1cIl0sXHJcbiAgICBbOTAwLCBcIkNNXCJdLFxyXG4gICAgWzUwMCwgXCJEXCJdLFxyXG4gICAgWzQwMCwgXCJDRFwiXSxcclxuICAgIFsxMDAsIFwiQ1wiXSxcclxuICAgIFs5MCwgXCJYQ1wiXSxcclxuICAgIFs1MCwgXCJMXCJdLFxyXG4gICAgWzQwLCBcIlhMXCJdLFxyXG4gICAgWzEwLCBcIlhcIl0sXHJcbiAgICBbOSwgXCJJWFwiXSxcclxuICAgIFs1LCBcIlZcIl0sXHJcbiAgICBbNCwgXCJJVlwiXSxcclxuICAgIFsxLCBcIklcIl0sXHJcbiAgXSk7XHJcblxyXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IG47IGkrKykge1xyXG4gICAgbGV0IG51bWJlciA9IGk7XHJcbiAgICBsZXQgcm9tYW5OdW1lcmFsID0gXCJcIjtcclxuICAgIGZvciAoY29uc3QgW3ZhbHVlLCBzeW1ib2xdIG9mIHJvbWFuTnVtZXJhbHNNYXApIHtcclxuICAgICAgd2hpbGUgKG51bWJlciA+PSB2YWx1ZSkge1xyXG4gICAgICAgIG51bWJlciAtPSB2YWx1ZTtcclxuICAgICAgICByb21hbk51bWVyYWwgKz0gc3ltYm9sO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByb21hbk51bWVyYWxzLnB1c2gocm9tYW5OdW1lcmFsKTtcclxuICB9XHJcblxyXG4gIHJldHVybiByb21hbk51bWVyYWxzO1xyXG59O1xyXG4iXX0=
@@ -40,3 +40,4 @@ export const parseLine = (text, showDebug = false) => {
40
40
  }
41
41
  return { smdLines, errors };
42
42
  };
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLWxpbmUtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQtbGluZS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxHQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFlBQTJCLEVBQUUsRUFBRTtJQUM1RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDcEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxHQUFHLENBQ2xFLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDMUUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixJQUFZLEVBQ1osU0FBUyxHQUFHLEtBQUssRUFDRSxFQUFFO0lBQ3JCLGVBQWUsRUFBRSxDQUFDLENBQUMsd0RBQXdEO0lBQzNFLE1BQU0sTUFBTSxHQUFlLEVBQUUsQ0FBQztJQUU5QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTFELElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyQyxPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTTtZQUN6QixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7U0FDM0MsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqQztJQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFcEMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FDVCxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7O1lBQUMsT0FBQSxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsbURBQW1EO2dCQUM1RCxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXO2dCQUNwQyxTQUFTLEVBQUUsTUFBQSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsbUNBQUksSUFBSSxDQUFDLE1BQU07YUFDaEQsQ0FBQyxDQUFBO1NBQUEsQ0FBQyxDQUNKLENBQUM7UUFDRixJQUFJLFNBQVMsRUFBRTtZQUNiLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDakM7SUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMZXhpbmdSZXN1bHQsIExleGVyIH0gZnJvbSBcImNoZXZyb3RhaW5cIjtcclxuaW1wb3J0IHsgU21kUGFyc2VyIH0gZnJvbSBcIi4vc21kLXBhcnNlclwiO1xyXG5cclxuaW1wb3J0IHtcclxuICB0b2tlblZvY2FidWxhcnksXHJcbiAgc21kVG9rZW5zLFxyXG4gIHJlc2V0VG9rZW5TdGF0ZSxcclxuICBwcmVwYXJlTGluZSxcclxufSBmcm9tIFwiLi90b2tlbi1kZWZpbml0aW9uXCI7XHJcbmltcG9ydCB7IFByb2Nlc3NlZFNtZExpbmVzLCBTbWRFcnJvciwgU21kTGluZSB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5jb25zdCBwcmludExleGluZ1Jlc3VsdEluZm8gPSAobGV4aW5nUmVzdWx0OiBJTGV4aW5nUmVzdWx0KSA9PiB7XHJcbiAgY29uc3QgdG9rZW5zID0gbGV4aW5nUmVzdWx0LnRva2Vucy5tYXAoXHJcbiAgICAodG9rZW4pID0+IFwiJ1wiICsgdG9rZW4uaW1hZ2UgKyBcIicgKFwiICsgdG9rZW4udG9rZW5UeXBlLm5hbWUgKyBcIilcIlxyXG4gICk7XHJcbiAgY29uc29sZS5lcnJvcih0b2tlbnMpO1xyXG59O1xyXG5cclxuY29uc3Qgc21kTGV4ZXIgPSBuZXcgTGV4ZXIoc21kVG9rZW5zLCB7IHBvc2l0aW9uVHJhY2tpbmc6IFwib25seU9mZnNldFwiIH0pO1xyXG5leHBvcnQgY29uc3Qgc21kUGFyc2VyID0gbmV3IFNtZFBhcnNlcih0b2tlblZvY2FidWxhcnkpO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBhcnNlTGluZSA9IChcclxuICB0ZXh0OiBzdHJpbmcsXHJcbiAgc2hvd0RlYnVnID0gZmFsc2VcclxuKTogUHJvY2Vzc2VkU21kTGluZXMgPT4ge1xyXG4gIHJlc2V0VG9rZW5TdGF0ZSgpOyAvLyB0aGlzIGlzIG5lZWRlZCB0byByZXNldCB0aGUgdG9rZW4gc3RhdGUgYmV0d2VlbiBsaW5lc1xyXG4gIGNvbnN0IGVycm9yczogU21kRXJyb3JbXSA9IFtdO1xyXG5cclxuICBjb25zdCBsZXhpbmdSZXN1bHQgPSBzbWRMZXhlci50b2tlbml6ZShwcmVwYXJlTGluZSh0ZXh0KSk7XHJcblxyXG4gIGlmIChsZXhpbmdSZXN1bHQuZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIGVycm9ycy5wdXNoKFxyXG4gICAgICAuLi5sZXhpbmdSZXN1bHQuZXJyb3JzLm1hcCgoZXJyb3IpID0+ICh7XHJcbiAgICAgICAgbWVzc2FnZTogYE5lb8SNZWvDoXZhbsO9IHpuYWsgbmEgdG9tdG8gbcOtc3TEmy5gLFxyXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBlcnJvci5vZmZzZXQsXHJcbiAgICAgICAgZW5kT2Zmc2V0OiBlcnJvci5vZmZzZXQgKyBlcnJvci5sZW5ndGggKyAxLFxyXG4gICAgICB9KSlcclxuICAgICk7XHJcbiAgICBpZiAoc2hvd0RlYnVnKSB7XHJcbiAgICAgIHByaW50TGV4aW5nUmVzdWx0SW5mbyhsZXhpbmdSZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgc21kTGluZXM6IFtdLCBlcnJvcnMgfTtcclxuICB9XHJcblxyXG4gIHNtZFBhcnNlci5pbnB1dCA9IGxleGluZ1Jlc3VsdC50b2tlbnM7XHJcbiAgY29uc3Qgc21kTGluZXMgPSBzbWRQYXJzZXIuc3RyZWV0KCk7XHJcblxyXG4gIGlmIChzbWRQYXJzZXIuZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIGVycm9ycy5wdXNoKFxyXG4gICAgICAuLi5zbWRQYXJzZXIuZXJyb3JzLm1hcCgoZXJyb3IpID0+ICh7XHJcbiAgICAgICAgbWVzc2FnZTogYE5lc3Byw6F2bsO9IHrDoXBpcyBwcmF2aWRsYSAtIG5ldnluZWNoYWxpIGpzdGUgbsSbY28/YCxcclxuICAgICAgICBzdGFydE9mZnNldDogZXJyb3IudG9rZW4uc3RhcnRPZmZzZXQsXHJcbiAgICAgICAgZW5kT2Zmc2V0OiBlcnJvci50b2tlbi5lbmRPZmZzZXQgPz8gdGV4dC5sZW5ndGgsXHJcbiAgICAgIH0pKVxyXG4gICAgKTtcclxuICAgIGlmIChzaG93RGVidWcpIHtcclxuICAgICAgcHJpbnRMZXhpbmdSZXN1bHRJbmZvKGxleGluZ1Jlc3VsdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBzbWRMaW5lczogW10sIGVycm9ycyB9O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHsgc21kTGluZXMsIGVycm9ycyB9O1xyXG59O1xyXG4iXX0=
@@ -391,3 +391,4 @@ export const parseMunicipalityPartName = (name) => {
391
391
  const match = municipalityPartPattern.exec(name);
392
392
  return (_b = (_a = match === null || match === void 0 ? void 0 : match.groups.name) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "";
393
393
  };
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlZXQtbWFya2Rvd24vc21kLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEVBQ1IsZUFBZSxFQUNmLFFBQVEsRUFDUixJQUFJLEVBQ0osTUFBTSxFQUNOLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLE9BQU8sRUFDUCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFDVixFQUFFLEVBQ0YsT0FBTyxHQUNSLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFvRCxVQUFVLEVBQVcsTUFBTSxTQUFTLENBQUM7QUFFaEcsTUFBTSxPQUFPLFNBQVUsU0FBUSxxQkFBcUI7SUFDbEQsWUFBWSxlQUFnQztRQUMxQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFJbEIsV0FBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQWMsRUFBRTtZQUNsRCxJQUFJLE1BQU0sQ0FBQztZQUNYLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ047b0JBQ0UsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDUixNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFDeEQsQ0FBQztpQkFDRjtnQkFDRDtvQkFDRSxHQUFHLEVBQUUsR0FBRyxFQUFFO3dCQUNSLE1BQU0sR0FBRzs0QkFDUCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLOzRCQUN0QyxVQUFVLEVB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Q0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyx3Q0FBd0MsQ0FBQztBQUV6RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFOztJQUNoRSxNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsT0FBTyxNQUFBLE1BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE1BQU0sQ0FBQyxJQUFJLDBDQUFFLElBQUksRUFBRSxtQ0FBSSxFQUFFLENBQUM7QUFDMUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1iZWRkZWRBY3Rpb25zUGFyc2VyLCBFT0YsIFRva2VuVm9jYWJ1bGFyeSB9IGZyb20gXCJjaGV2cm90YWluXCI7XHJcbmltcG9ydCB7IHNwbGl0U3RyZWV0VmlhUm9tYW5OdW1lcmFscyB9IGZyb20gXCIuL3JvbWFuLW51bWVyYWxzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gIEFsbFR5cGUsXHJcbiAgQW5kQWJvdmUsXHJcbiAgQW5kQmVsb3csXHJcbiAgRGVzY3JpcHRpdmVUeXBlLFxyXG4gIEV2ZW5UeXBlLFxyXG4gIEZyb20sXHJcbiAgSHlwaGVuLFxyXG4gIE1haW5TZXBhcmF0b3IsXHJcbiAgTXVuaWNpcGFsaXR5UGFydE5hbWUsXHJcbiAgTnVtYmVyLFxyXG4gIE9kZFR5cGUsXHJcbiAgU2VwYXJhdG9yLFxyXG4gIFNsYXNoLFxyXG4gIFN0cmVldE5hbWUsXHJcbiAgVG8sXHJcbiAgV2l0aG91dCxcclxufSBmcm9tIFwiLi90b2tlbi1kZWZpbml0aW9uXCI7XHJcbmltcG9ydCB7IEZ1bGxTdHJlZXROdW1iZXIsIE5lZ2F0aXZlU2VyaWVzU3BlYywgUmljaE51bWJlciwgU2VyaWVzVHlwZSwgU21kTGluZSB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU21kUGFyc2VyIGV4dGVuZHMgRW1iZWRkZWRBY3Rpb25zUGFyc2VyIHtcclxuICBjb25zdHJ1Y3Rvcih0b2tlblZvY2FidWxhcnk6IFRva2VuVm9jYWJ1bGFyeSkge1xyXG4gICAgc3VwZXIodG9rZW5Wb2NhYnVsYXJ5KTtcclxuICAgIHRoaXMucGVyZm9ybVNlbGZBbmFseXNpcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0cmVldCA9IHRoaXMuUlVMRShcInN0cmVldFwiLCAoKTogU21kTGluZVtdID0+IHtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICB0aGlzLk9SKFtcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5TVUJSVUxFKHRoaXMuc3RyZWV0TmFtZUFuZE51bWJlcnNTcGVjcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBcInN0cmVldFwiLFxyXG4gICAgICAgICAgICBzdHJlZXQ6IHRoaXMuQ09OU1VNRShTdHJlZXROYW1lKS5pbWFnZSxcclxuICAgICAgICAgICAgbnVtYmVyU3BlYzogW10sXHJcbiAgICAgICAgICB9IGFzIFNtZExpbmU7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5TVUJSVUxFKHRoaXMubXVuaWNpcGFsaXR5UGFydE5hbWVBbmROdW1iZXJzU3BlY3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG11bmljaXBhbGl0eVBhcnQgPSBwYXJzZU11bmljaXBhbGl0eVBhcnROYW1lKFxyXG4gICAgICAgICAgICB0aGlzLkNPTlNVTUUoTXVuaWNpcGFsaXR5UGFydE5hbWUpLmltYWdlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBcIm11bmljaXBhbGl0eVBhcnRcIixcclxuICAgICAgICAgICAgbXVuaWNpcGFsaXR5UGFydCxcclxuICAgICAgICAgICAgbnVtYmVyU3BlYzogW10sXHJcbiAgICAgICAgICB9IGFzIFNtZExpbmU7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG5cclxuICAgIGlmIChyZXN1bHQudHlwZSA9PT0gXCJzdHJlZXRcIikge1xyXG4gICAgICByZXR1cm4gc3BsaXRTdHJlZXRWaWFSb21hbk51bWVyYWxzKHJlc3VsdC5zdHJlZXQpLm1hcCgoc3RyZWV0KSA9PiAoe1xyXG4gICAgICAgIHR5cGU6IFwic3RyZWV0XCIsXHJcbiAgICAgICAgc3RyZWV0LFxyXG4gICAgICAgIG51bWJlclNwZWM6IHJlc3VsdC5udW1iZXJTcGVjLFxyXG4gICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW3Jlc3VsdF07XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHByaXZhdGUgc3RyZWV0TmFtZUFuZE51bWJlcnNTcGVjcyA9IHRoaXMuUlVMRShcclxuICAgIFwic3RyZWV0TmFtZUFuZE51bWJlcnNTcGVjc1wiLFxyXG4gICAgKCkgPT4ge1xyXG4gICAgICBjb25zdCBzdHJlZXQgPSB0aGlzLkNPTlNVTUUoU3RyZWV0TmFtZSkuaW1hZ2U7XHJcbiAgICAgIHRoaXMuT1BUSU9OKCgpID0+IHtcclxuICAgICAgICB0aGlzLkNPTlNVTUUoTWFpblNlcGFyYXRvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBudW1iZXJTcGVjID0gdGhpcy5TVUJSVUxFKHRoaXMubnVtYmVyU3BlY3MpO1xyXG4gICAgICByZXR1cm4geyB0eXBlOiBcInN0cmVldFwiLCBzdHJlZXQsIG51bWJlclNwZWMgfSBhcyBTbWRMaW5lO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIHByaXZhdGUgbXVuaWNpcGFsaXR5UGFydE5hbWVBbmROdW1iZXJzU3BlY3MgPSB0aGlzLlJVTEUoXHJcbiAgICBcIm11bmljaXBhbGl0eVBhcnROYW1lQW5kTnVtYmVyc1NwZWNzXCIsXHJcbiAgICAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG11bmljaXBhbGl0eVBhcnQgPSBwYXJzZU11bmljaXBhbGl0eVBhcnROYW1lKFxyXG4gICAgICAgIHRoaXMuQ09OU1VNRShNdW5pY2lwYWxpdHlQYXJ0TmFtZSkuaW1hZ2VcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5PUFRJT04oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuQ09OU1VNRShNYWluU2VwYXJhdG9yKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IG51bWJlclNwZWMgPSB0aGlzLlNVQlJVTEUodGhpcy5udW1iZXJTcGVjcyk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogXCJtdW5pY2lwYWxpdHlQYXJ0XCIsXHJcbiAgICAgICAgbXVuaWNpcGFsaXR5UGFydCxcclxuICAgICAgICBudW1iZXJTcGVjLFxyXG4gICAgICB9IGFzIFNtZExpbmU7XHJcbiAgICB9XHJcbiAgKTtcclxuXHJcbiAgcHJpdmF0ZSBudW1iZXJTcGVjcyA9IHRoaXMuUlVMRShcIm51bWJlclNwZWNzXCIsICgpID0+IHtcclxuICAgIGNvbnN0IHBvc2l0aXZlUmVzdWx0ID0gW107XHJcbiAgICBsZXQgbmVnYXRpdmVSZXN1bHQ6IE5lZ2F0aXZlU2VyaWVzU3BlYztcclxuICAgIHRoaXMuT1IoW1xyXG4gICAgICB7XHJcbiAgICAgICAgR0FURTogKCkgPT4gdGhpcy5MQSgyKS50b2tlblR5cGUgPT09IFdpdGhvdXQsXHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5TVUJSVUxFKHRoaXMuc2VyaWVzVHlwZSk7XHJcbiAgICAgICAgICB0aGlzLkNPTlNVTUUoV2l0aG91dCk7XHJcbiAgICAgICAgICB0aGlzLk9QVElPTigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuQ09OU1VNRShBbGxUeXBlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgcmFuZ2VzID0gdGhpcy5TVUJSVUxFKHRoaXMucmFuZ2VMaXN0KTtcclxuICAgICAgICAgIHJldHVybiB7IG5lZ2F0aXZlOiB0cnVlLCB0eXBlLCByYW5nZXMgfTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkNPTlNVTUUyKFdpdGhvdXQpO1xyXG4gICAgICAgICAgdGhpcy5PUjEoW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgR0FURTogdGhpcy5fZ2F0ZVBvc3RmaXhUeXBlU2VyaWVzU3BlYyxcclxuICAgICAgICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgcmFuZ2VzIH0gPSB0aGlzLlNVQlJVTEUoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9zdGZpeFR5cGVTZXJpZXNTcGVjXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmVnYXRpdmVSZXN1bHQgPSB7IG5lZ2F0aXZlOiB0cnVlLCB0eXBlLCByYW5nZXMgfTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5TVUJSVUxFMih0aGlzLnNlcmllc1R5cGUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2VzID0gdGhpcy5TVUJSVUxFMih0aGlzLnJhbmdlTGlzdCk7XHJcbiAgICAgICAgICAgICAgICBuZWdhdGl2ZVJlc3VsdCA9IHsgbmVnYXRpdmU6IHRydWUsIHR5cGUsIHJhbmdlcyB9O1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkFUX0xFQVNUX09ORV9TRVAoe1xyXG4gICAgICAgICAgICBTRVA6IFNlcGFyYXRvcixcclxuICAgICAgICAgICAgREVGOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpdmVSZXN1bHQucHVzaCh0aGlzLlNVQlJVTEUodGhpcy5zZXJpZXNTcGVjcykpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG4gICAgaWYgKG5lZ2F0aXZlUmVzdWx0KSB7XHJcbiAgICAgIHJldHVybiBuZWdhdGl2ZVJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGl2ZVJlc3VsdDtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBzZXJpZXNTcGVjcyA9IHRoaXMuUlVMRShcInNlcmllc1NwZWNzXCIsICgpID0+IHtcclxuICAgIGxldCByYW5nZXMgPSBbXTtcclxuICAgIGxldCB0eXBlOiBTZXJpZXNUeXBlO1xyXG4gICAgdGhpcy5PUihbXHJcbiAgICAgIHtcclxuICAgICAgICBHQVRFOiB0aGlzLl9nYXRlUG9zdGZpeFR5cGVTZXJpZXNTcGVjLFxyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgKHsgdHlwZSwgcmFuZ2VzIH0gPSB0aGlzLlNVQlJVTEUodGhpcy5wb3N0Zml4VHlwZVNlcmllc1NwZWMpKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICB0eXBlID0gdGhpcy5TVUJSVUxFKHRoaXMuc2VyaWVzVHlwZSk7XHJcbiAgICAgICAgICB0aGlzLk9QVElPTigoKSA9PiB7XHJcbiAgICAgICAgICAgIHJhbmdlcyA9IHRoaXMuU1VCUlVMRSh0aGlzLnJhbmdlTGlzdCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICAoeyB0eXBlLCByYW5nZXMgfSA9IHRoaXMuU1VCUlVMRTIodGhpcy5mcm9tQW5kQWJvdmVXaXRoVHlwZSkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgICh7IHR5cGUsIHJhbmdlcyB9ID0gdGhpcy5TVUJSVUxFKHRoaXMudG9PckJlbG93V2l0aFR5cGUpKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgXSk7XHJcblxyXG4gICAgcmV0dXJuIHsgdHlwZSwgcmFuZ2VzIH07XHJcbiAgfSk7XHJcblxyXG4gIHByaXZhdGUgX2dhdGVQb3N0Zml4VHlwZVNlcmllc1NwZWMgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICBsZXQgaW5kZXggPSAyO1xyXG4gICAgd2hpbGUgKCFbU2VwYXJhdG9yLCBFT0ZdLmluY2x1ZGVzKHRoaXMuTEEoaW5kZXgpLnRva2VuVHlwZSkpIHtcclxuICAgICAgaWYgKFtPZGRUeXBlLCBFdmVuVHlwZV0uaW5jbHVkZXModGhpcy5MQShpbmRleCkudG9rZW5UeXBlKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGluZGV4Kys7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBwb3N0Zml4VHlwZVNlcmllc1NwZWMgPSB0aGlzLlJVTEUoXCJwb3N0Zml4VHlwZVNlcmllc1NwZWNcIiwgKCkgPT4ge1xyXG4gICAgdGhpcy5DT05TVU1FKEFsbFR5cGUpO1xyXG4gICAgY29uc3QgcmFuZ2VzID0gW3RoaXMuU1VCUlVMRSh0aGlzLnJhbmdlT3JOdW1iZXIpXTtcclxuICAgIGxldCB0eXBlOiBTZXJpZXNUeXBlO1xyXG4gICAgdGhpcy5PUjEoW1xyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkNPTlNVTUUoT2RkVHlwZSk7XHJcbiAgICAgICAgICB0eXBlID0gU2VyaWVzVHlwZS5PZGQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5DT05TVU1FMShFdmVuVHlwZSk7XHJcbiAgICAgICAgICB0eXBlID0gU2VyaWVzVHlwZS5FdmVuO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuICAgIHJldHVybiB7IHR5cGUsIHJhbmdlcyB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIHJhbmdlTGlzdCA9IHRoaXMuUlVMRShcInJhbmdlTGlzdFwiLCAoKSA9PiB7XHJcbiAgICBsZXQgcmFuZ2VzID0gW107XHJcbiAgICByYW5nZXMucHVzaCh0aGlzLlNVQlJVTEUodGhpcy5yYW5nZU9yTnVtYmVyKSk7XHJcbiAgICB0aGlzLk1BTlkoe1xyXG4gICAgICBHQVRFOiAoKSA9PiBbTnVtYmVyLCBUbywgRnJvbV0uaW5jbHVkZXModGhpcy5MQSgyKS50b2tlblR5cGUpLFxyXG4gICAgICBERUY6ICgpID0+IHtcclxuICAgICAgICB0aGlzLkNPTlNVTUUoU2VwYXJhdG9yKTtcclxuICAgICAgICByYW5nZXMucHVzaCh0aGlzLlNVQlJVTEUyKHRoaXMucmFuZ2VPck51bWJlcikpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmFuZ2VzO1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIHNlcmllc1R5cGUgPSB0aGlzLlJVTEUoXCJzZXJpZXNUeXBlXCIsICgpID0+IHtcclxuICAgIGxldCB0eXBlOiBTZXJpZXNUeXBlO1xyXG4gICAgdGhpcy5PUihbXHJcbiAgICAgIHtcclxuICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuQ09OU1VNRShPZGRUeXBlKTtcclxuICAgICAgICAgIHR5cGUgPSBTZXJpZXNUeXBlLk9kZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkNPTlNVTUUxKEV2ZW5UeXBlKTtcclxuICAgICAgICAgIHR5cGUgPSBTZXJpZXNUeXBlLkV2ZW47XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5DT05TVU1FMihBbGxUeXBlKTtcclxuICAgICAgICAgIHR5cGUgPSBTZXJpZXNUeXBlLkFsbDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkNPTlNVTUUzKERlc2NyaXB0aXZlVHlwZSk7XHJcbiAgICAgICAgICB0eXBlID0gU2VyaWVzVHlwZS5EZXNjcmlwdGlvbjtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gdHlwZTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSByYW5nZU9yTnVtYmVyID0gdGhpcy5SVUxFKFwicmFuZ2VPck51bWJlclwiLCAoKSA9PiB7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgdGhpcy5PUihbXHJcbiAgICAgIHtcclxuICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuU1VCUlVMRSh0aGlzLnJhbmdlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLlNVQlJVTEUodGhpcy5mcm9tQW5kQWJvdmUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuU1VCUlVMRSh0aGlzLnRvT3JCZWxvdyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5TVUJSVUxFKHRoaXMuZnVsbFN0cmVldE51bWJlcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbiA9IHBhcnNlUmljaE51bWJlcih0aGlzLkNPTlNVTUUoTnVtYmVyKS5pbWFnZSk7XHJcbiAgICAgICAgICByZXN1bHQgPSB7IGZyb206IG4sIHRvOiBuIH07XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSByYW5nZSA9IHRoaXMuUlVMRShcInJhbmdlXCIsICgpID0+IHtcclxuICAgIGNvbnN0IGZyb20gPSBwYXJzZVJpY2hOdW1iZXIodGhpcy5DT05TVU1FKE51bWJlcikuaW1hZ2UpO1xyXG4gICAgdGhpcy5PUihbXHJcbiAgICAgIHsgQUxUOiAoKSA9PiB0aGlzLkNPTlNVTUUxKEh5cGhlbikgfSxcclxuICAgICAgeyBBTFQ6ICgpID0+IHRoaXMuQ09OU1VNRTIoTWFpblNlcGFyYXRvcikgfSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5PUFRJT04oKCkgPT4ge1xyXG4gICAgICB0aGlzLkNPTlNVTUUoQWxsVHlwZSk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHRvID0gcGFyc2VSaWNoTnVtYmVyKHRoaXMuQ09OU1VNRTMoTnVtYmVyKS5pbWFnZSk7XHJcbiAgICByZXR1cm4geyBmcm9tLCB0byB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGZyb21BbmRBYm92ZSA9IHRoaXMuUlVMRShcImZyb21BbmRBYm92ZVwiLCAoKSA9PiB7XHJcbiAgICBsZXQgZnJvbTogUmljaE51bWJlcjtcclxuICAgIHRoaXMuT1IoW1xyXG4gICAgICB7XHJcbiAgICAgICAgQUxUOiAoKSA9PiB7XHJcbiAgICAgICAgICBmcm9tID0gcGFyc2VSaWNoTnVtYmVyKHRoaXMuQ09OU1VNRShOdW1iZXIpLmltYWdlKTtcclxuICAgICAgICAgIHRoaXMuQ09OU1VNRShBbmRBYm92ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5DT05TVU1FKEZyb20pO1xyXG4gICAgICAgICAgdGhpcy5PUFRJT04oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLkNPTlNVTUUoQWxsVHlwZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGZyb20gPSBwYXJzZVJpY2hOdW1iZXIodGhpcy5DT05TVU1FMihOdW1iZXIpLmltYWdlKTtcclxuICAgICAgICAgIHRoaXMuT1BUSU9OMigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuQ09OU1VNRTIoQW5kQWJvdmUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG5cclxuICAgIHJldHVybiB7IGZyb20gfTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBmcm9tQW5kQWJvdmVXaXRoVHlwZSA9IHRoaXMuUlVMRShcImZyb21BbmRBYm92ZVdpdGhUeXBlXCIsICgpID0+IHtcclxuICAgIGxldCB0eXBlID0gU2VyaWVzVHlwZS5BbGw7XHJcbiAgICB0aGlzLkNPTlNVTUUoRnJvbSk7XHJcbiAgICB0aGlzLk9QVElPTigoKSA9PiB7XHJcbiAgICAgIHRoaXMuT1IoW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0eXBlID0gU2VyaWVzVHlwZS5BbGw7XHJcbiAgICAgICAgICAgIHRoaXMuQ09OU1VNRShBbGxUeXBlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdHlwZSA9IFNlcmllc1R5cGUuRGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgIHRoaXMuQ09OU1VNRShEZXNjcmlwdGl2ZVR5cGUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZnJvbSA9IHBhcnNlUmljaE51bWJlcih0aGlzLkNPTlNVTUUoTnVtYmVyKS5pbWFnZSk7XHJcbiAgICB0aGlzLk9QVElPTjIoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNPTlNVTUUoQW5kQWJvdmUpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4geyB0eXBlLCByYW5nZXM6IFt7IGZyb20gfV0gfTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSB0b09yQmVsb3cgPSB0aGlzLlJVTEUoXCJ0b09yQmVsb3dcIiwgKCkgPT4ge1xyXG4gICAgbGV0IHRvOiBSaWNoTnVtYmVyO1xyXG4gICAgdGhpcy5PUihbXHJcbiAgICAgIHtcclxuICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgIHRvID0gcGFyc2VSaWNoTnVtYmVyKHRoaXMuQ09OU1VNRShOdW1iZXIpLmltYWdlKTtcclxuICAgICAgICAgIHRoaXMuQ09OU1VNRShBbmRCZWxvdyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5DT05TVU1FMihUbyk7XHJcbiAgICAgICAgICB0byA9IHBhcnNlUmljaE51bWJlcih0aGlzLkNPTlNVTUUyKE51bWJlcikuaW1hZ2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuXHJcbiAgICByZXR1cm4geyB0byB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIHRvT3JCZWxvd1dpdGhUeXBlID0gdGhpcy5SVUxFKFwidG9PckJlbG93V2l0aFR5cGVcIiwgKCkgPT4ge1xyXG4gICAgbGV0IHR5cGUgPSBTZXJpZXNUeXBlLkFsbDtcclxuICAgIHRoaXMuQ09OU1VNRShUbyk7XHJcbiAgICB0aGlzLk9QVElPTigoKSA9PiB7XHJcbiAgICAgIHRoaXMuT1IoW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIEFMVDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0eXBlID0gU2VyaWVzVHlwZS5BbGw7XHJcbiAgICAgICAgICAgIHRoaXMuQ09OU1VNRShBbGxUeXBlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBBTFQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdHlwZSA9IFNlcmllc1R5cGUuRGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgIHRoaXMuQ09OU1VNRShEZXNjcmlwdGl2ZVR5cGUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgdG8gPSBwYXJzZVJpY2hOdW1iZXIodGhpcy5DT05TVU1FKE51bWJlcikuaW1hZ2UpO1xyXG4gICAgcmV0dXJuIHsgdHlwZSwgcmFuZ2VzOiBbeyB0byB9XSB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGZ1bGxTdHJlZXROdW1iZXIgPSB0aGlzLlJVTEUoXHJcbiAgICBcImZ1bGxTdHJlZXROdW1iZXJcIixcclxuICAgICgpOiBGdWxsU3RyZWV0TnVtYmVyID0+IHtcclxuICAgICAgY29uc3QgZGVzY3JpcHRpdmVOdW1iZXIgPSBwYXJzZVJpY2hOdW1iZXIodGhpcy5DT05TVU1FKE51bWJlcikuaW1hZ2UpO1xyXG4gICAgICB0aGlzLkNPTlNVTUUoU2xhc2gpO1xyXG4gICAgICBjb25zdCBvcmllbnRhdGlvbk51bWJlciA9IHBhcnNlUmljaE51bWJlcih0aGlzLkNPTlNVTUUyKE51bWJlcikuaW1hZ2UpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uTnVtYmVyOiBkZXNjcmlwdGl2ZU51bWJlcixcclxuICAgICAgICBvcmllbnRhdGlvbmFsTnVtYmVyOiBvcmllbnRhdGlvbk51bWJlcixcclxuICAgICAgfTtcclxuICAgIH1cclxuICApO1xyXG59XHJcblxyXG5jb25zdCBudW1iZXJXaXRoQ2hhcmFjdGVyUGF0dGVybiA9IC9eKFxcZCspKFthLXpdKSQvO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBhcnNlUmljaE51bWJlciA9IChudW1iZXI6IHN0cmluZyk6IFJpY2hOdW1iZXIgPT4ge1xyXG4gIGlmIChudW1iZXJXaXRoQ2hhcmFjdGVyUGF0dGVybi50ZXN0KG51bWJlcikpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gbnVtYmVyV2l0aENoYXJhY3RlclBhdHRlcm4uZXhlYyhudW1iZXIpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbnVtYmVyOiBwYXJzZUludChtYXRjaFsxXSksXHJcbiAgICAgIGxldHRlcjogbWF0Y2hbMl0sXHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBudW1iZXI6IHBhcnNlSW50KG51bWJlciksXHJcbiAgICB9O1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IG11bmljaXBhbGl0eVBhcnRQYXR0ZXJuID0gL17EjcOhc3QgKD88dHlwZT5vYmNlfG3Em3N0YSkgKD88bmFtZT4uKykkLztcclxuXHJcbmV4cG9ydCBjb25zdCBwYXJzZU11bmljaXBhbGl0eVBhcnROYW1lID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgY29uc3QgbWF0Y2ggPSBtdW5pY2lwYWxpdHlQYXJ0UGF0dGVybi5leGVjKG5hbWUpO1xyXG4gIHJldHVybiBtYXRjaD8uZ3JvdXBzLm5hbWU/LnRyaW0oKSA/PyBcIlwiO1xyXG59O1xyXG4iXX0=