@igo2/geo 1.13.3 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +4 -1
  2. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  3. package/esm2020/lib/draw/draw/draw-popup.component.mjs +562 -32
  4. package/esm2020/lib/draw/draw/draw.component.mjs +358 -130
  5. package/esm2020/lib/draw/draw/draw.module.mjs +12 -4
  6. package/esm2020/lib/draw/shared/draw-style.service.mjs +2 -2
  7. package/esm2020/lib/draw/shared/draw.enum.mjs +14 -1
  8. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  9. package/esm2020/lib/draw/shared/draw.utils.mjs +19 -1
  10. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +21 -8
  11. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +12 -2
  12. package/esm2020/lib/geometry/shared/controls/draw.mjs +53 -10
  13. package/esm2020/lib/import-export/shared/export.service.mjs +2 -2
  14. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  15. package/esm2020/lib/import-export/shared/import.service.mjs +26 -6
  16. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  17. package/esm2020/lib/map/shared/hover-feature.directive.mjs +2 -2
  18. package/esm2020/lib/map/shared/map.utils.mjs +4 -1
  19. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +33 -4
  20. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  21. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +12 -12
  22. package/esm2020/lib/print/shared/geopdf.mjs +58 -0
  23. package/esm2020/lib/print/shared/index.mjs +2 -1
  24. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  25. package/esm2020/lib/print/shared/print.service.mjs +118 -64
  26. package/esm2020/lib/query/shared/query.service.mjs +3 -3
  27. package/esm2020/lib/search/shared/sources/index.mjs +1 -3
  28. package/fesm2015/igo2-geo.mjs +1320 -409
  29. package/fesm2015/igo2-geo.mjs.map +1 -1
  30. package/fesm2020/igo2-geo.mjs +1272 -405
  31. package/fesm2020/igo2-geo.mjs.map +1 -1
  32. package/lib/catalog/shared/catalog.abstract.d.ts +1 -0
  33. package/lib/draw/draw/draw-popup.component.d.ts +52 -5
  34. package/lib/draw/draw/draw.component.d.ts +34 -4
  35. package/lib/draw/draw/draw.module.d.ts +3 -1
  36. package/lib/draw/shared/draw.enum.d.ts +11 -0
  37. package/lib/draw/shared/draw.interface.d.ts +4 -0
  38. package/lib/draw/shared/draw.utils.d.ts +2 -0
  39. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -1
  40. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +7 -1
  41. package/lib/geometry/shared/controls/draw.d.ts +18 -0
  42. package/lib/import-export/shared/import.interface.d.ts +2 -1
  43. package/lib/import-export/shared/import.service.d.ts +7 -0
  44. package/lib/layer/shared/layers/layer.interface.d.ts +4 -0
  45. package/lib/map/shared/map.utils.d.ts +1 -0
  46. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -0
  47. package/lib/offline/geoDB/geoDB.interface.d.ts +1 -0
  48. package/lib/offline/geoDB/geoDB.service.d.ts +3 -3
  49. package/lib/print/shared/geopdf.d.ts +1 -0
  50. package/lib/print/shared/index.d.ts +1 -0
  51. package/lib/print/shared/print.interface.d.ts +5 -0
  52. package/lib/print/shared/print.service.d.ts +17 -8
  53. package/lib/search/shared/sources/index.d.ts +0 -2
  54. package/package.json +4 -4
  55. package/esm2020/lib/search/shared/sources/cadastre.mjs +0 -126
  56. package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +0 -23
  57. package/lib/search/shared/sources/cadastre.d.ts +0 -33
  58. package/lib/search/shared/sources/cadastre.providers.d.ts +0 -18
@@ -354,6 +354,9 @@ export function roundCoordTo(coord, decimal = 3) {
354
354
  NumberUtils.roundToNDecimal(coord[1], decimal)
355
355
  ];
356
356
  }
357
+ export function roundCoordToString(coord, decimal = 3) {
358
+ return roundCoordTo(coord, decimal).map(r => r.toString());
359
+ }
357
360
  /**
358
361
  * Returns an array of converted coordinates.
359
362
  * Conversion is done for every configured projections
@@ -456,4 +459,4 @@ export function mtmZoneFromLonLat(lonLat) {
456
459
  }
457
460
  return mtmZone;
458
461
  }
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU3QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSzFDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFXLEVBQ1gsYUFBcUIsRUFDckIsT0FBOEIsRUFBRTtJQU9oQyxJQUFJLE1BQXdCLENBQUM7SUFDN0IsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxHQUFRLENBQUM7SUFFYixNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUM1QixJQUFJLGFBQXFCLENBQUM7SUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxD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QUksQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNsQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxBQUFELEVBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDM0UsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FDM0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xDLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztLQUNIO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEFBQUQsRUFBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FDM0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xDLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztLQUNIO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEs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RUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxFQUFFLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBNYXBCcm93c2VyUG9pbnRlckV2ZW50IGZyb20gJ29sL01hcEJyb3dzZXJFdmVudCc7XHJcbmltcG9ydCB7IE1BQyB9IGZyb20gJ29sL2hhcyc7XHJcblxyXG5pbXBvcnQgeyBOdW1iZXJVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCB7IE1hcFZpZXdTdGF0ZSB9IGZyb20gJy4vbWFwLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFByb2plY3Rpb24gfSBmcm9tICcuL3Byb2plY3Rpb24uaW50ZXJmYWNlcyc7XHJcblxyXG4vKipcclxuICogVGhpcyBtZXRob2QgZXh0cmFjdHMgYSBjb29yZGluYXRlIHR1cGxlIGZyb20gYSBzdHJpbmcuXHJcbiAqIEBwYXJhbSBzdHIgQW55IHN0cmluZ1xyXG4gKiBAcGFyYW0gbWFwUHJvamVjdGlvbiBzdHJpbmcgTWFwIFByb2plY3Rpb25cclxuICogQHBhcmFtIG9wdHMuZm9yY2VOQSBib29sZWFuIEZvcmNlIE5vcnRoIEFtZXJpY2EgWm9uZVxyXG4gKiBAcmV0dXJucyBvYmplY3Q6XHJcbiAqICAgICAgICAgICAgIGxvbkxhdDogQ29vcmRpbmF0ZSxcclxuICogICAgICAgICAgICAgbWVzc2FnZTogTWVzc2FnZSBvZiBlcnJvcixcclxuICogICAgICAgICAgICAgcmFkaXVzOiByYWRpdXMgb2YgdGhlIGNvbmZpZW5jZSBvZiBjb29yZGluYXRlLFxyXG4gKiAgICAgICAgICAgICBjb25mOiBjb25maWRlbmNlIG9mIHRoZSBjb29yZGluYXRlfVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvTG9uTGF0KFxyXG4gIHN0cjogc3RyaW5nLFxyXG4gIG1hcFByb2plY3Rpb246IHN0cmluZyxcclxuICBvcHRzOiB7IGZvcmNlTkE/OiBib29sZWFuIH0gPSB7fVxyXG4pOiB7XHJcbiAgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICByYWRpdXM6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICBjb25mOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbn0ge1xyXG4gIGxldCBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgbGV0IGNvb3JkU3RyOiBzdHJpbmc7XHJcbiAgbGV0IG5lZ2F0aXZlTG9uOiBzdHJpbmc7XHJcbiAgbGV0IGRlZ3JlZXNMb246IHN0cmluZztcclxuICBsZXQgbWludXRlc0xvbjogc3RyaW5nO1xyXG4gIGxldCBzZWNvbmRzTG9uOiBzdHJpbmc7XHJcbiAgbGV0IGRpcmVjdGlvbkxvbjogc3RyaW5nO1xyXG4gIGxldCBkZWNpbWFsTG9uOiBzdHJpbmc7XHJcbiAgbGV0IG5lZ2F0aXZlTGF0OiBzdHJpbmc7XHJcbiAgbGV0IGRlZ3JlZXNMYXQ6IHN0cmluZztcclxuICBsZXQgbWludXRlc0xhdDogc3RyaW5nO1xyXG4gIGxldCBzZWNvbmRzTGF0OiBzdHJpbmc7XHJcbiAgbGV0IGRpcmVjdGlvbkxhdDogc3RyaW5nO1xyXG4gIGxldCBkZWNpbWFsTGF0OiBzdHJpbmc7XHJcbiAgbGV0IHpvbmU6IHN0cmluZztcclxuICBsZXQgcmFkaXVzOiBzdHJpbmc7XHJcbiAgbGV0IGNvbmY6IHN0cmluZztcclxuICBsZXQgbG9uOiBhbnk7XHJcbiAgbGV0IGxhdDogYW55O1xyXG5cclxuICBjb25zdCBwcm9qZWN0aW9uUGF0dGVybiA9ICcoXFxcXHMqO1xcXFxzKltcXFxcZF17NCw2fSknO1xyXG4gIGNvbnN0IHRvUHJvamVjdGlvbiA9ICc0MzI2JztcclxuICBsZXQgcHJvamVjdGlvblN0cjogc3RyaW5nO1xyXG4gIGNvbnN0IHByb2plY3Rpb25SZWdleCA9IG5ldyBSZWdFeHAocHJvamVjdGlvblBhdHRlcm4sICdnJyk7XHJcblxyXG4gIGNvbnN0IGxvbmxhdENvb3JkID0gJyhbLStdKT8oW1xcXFxkXXsxLDN9KShbLC5dKFxcXFxkKykpPyc7XHJcbiAgY29uc3QgbG9uTGF0UGF0dGVybiA9IGAke2xvbmxhdENvb3JkfVtcXFxccyxdKyR7bG9ubGF0Q29vcmR9YDtcclxuICBjb25zdCBsb25MYXRSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2xvbkxhdFBhdHRlcm59JGAsICdnJyk7XHJcblxyXG4gIGNvbnN0IGRtc0Nvb3JkID1cclxuICAgICcoWzAtOV17MSwyfSlbOnzCsF0/XFxcXHMqKFswLTldezEsMn0pP1s6fFxcJ3zigLJ84oCZXT9cXFxccyooWzAtOV17MSwyfSg/Oi5bMC05XSspezAsMX0pP1xcXFxzKltcInzigLN84oCdXT9cXFxccyonO1xyXG4gIGNvbnN0IGRtc0Nvb3JkUGF0dGVybiA9IGAke2Rtc0Nvb3JkfShbTnxTfEV8V3xPXSksP1xcXFxzKiR7ZG1zQ29vcmR9KFtOfFN8RXxXfE9dKWA7XHJcbiAgY29uc3QgZG1zUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtkbXNDb29yZFBhdHRlcm59JGAsICdnaScpO1xyXG5cclxuICBjb25zdCBwYXR0ZXJuVXRtID1cclxuICAgICcoVVRNKS0/KFxcXFxkezEsMn0pW1xcXFxzLF0qKFxcXFxkK1suLF0/XFxcXGQrKVtcXFxccyxdKyhcXFxcZCtbLixdP1xcXFxkKyknO1xyXG4gIGNvbnN0IHV0bVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVyblV0bX1gLCAnZ2knKTtcclxuXHJcbiAgY29uc3QgcGF0dGVybk10bSA9XHJcbiAgICAnKE1UTSktPyhcXFxcZHsxLDJ9KVtcXFxccyxdKihcXFxcZCtbLixdP1xcXFxkKylbXFxcXHMsXSsoXFxcXGQrWy4sXT9cXFxcZCspJztcclxuICBjb25zdCBtdG1SZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5NdG19YCwgJ2dpJyk7XHJcblxyXG4gIGNvbnN0IGRkQ29vcmQgPSAnKFstK10pPyhcXFxcZHsxLDN9KVssLl0oXFxcXGQrKSc7XHJcbiAgY29uc3QgcGF0dGVybkRkID0gYCR7ZGRDb29yZH1cXFxccypbLF0/XFxcXHMqJHtkZENvb3JkfWA7XHJcbiAgY29uc3QgZGRSZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5EZH1gLCAnZycpO1xyXG5cclxuICBjb25zdCBkbWRDb29yZCA9XHJcbiAgICAnKFstK10pPyhcXFxcZHsxLDN9KVtcXFxccywuXXsxfShcXFxcZHsxLDJ9KVtcXFxccywuXXsxfShcXFxcZHsxLDJ9KVsuLF0/KFxcXFxkezEsNX0pPyc7XHJcbiAgY29uc3QgcGF0dGVybkRtZCA9IGAke2RtZENvb3JkfVxcXFxzKlssLl0/XFxcXHMqJHtkbWRDb29yZH1gO1xyXG4gIGNvbnN0IGRtZFJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybkRtZH1gLCAnZycpO1xyXG5cclxuIC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cclxuICBjb25zdCBwYXR0ZXJuQkVMTCA9XHJcbiAgICAnTEFUXFxcXHMqW1xcXFxzOl0qXFxcXHMqKFstK10pPyhcXFxcZHsxLDJ9KVtcXFxccy4sXT8oXFxcXGQrKT9bXFxcXHMuLF0/XFxcXHMqKFxcXFxkezEsMn0oWy4sXVxcXFxkKyk/KT9cXFxccyooTnxTfEV8Vyk/XFxcXHMqTE9OR1xcXFxzKltcXFxcczpdKlxcXFxzKihbLStdKT8oXFxcXGR7MSwzfSlbXFxcXHMuLF0/KFxcXFxkKyk/W1xcXFxzLixdP1xcXFxzKihcXFxcZHsxLDJ9KFsuLF1cXFxcZCspPyk/XFxcXHMqKE58U3xFfFcpP1xcXFxzKlVOQ1xcXFxzKltcXFxcczpdP1xcXFxzKihcXFxcZCspXFxcXHMqQ09ORlxcXFxzKltcXFxcczpdP1xcXFxzKihcXFxcZHsxLDN9KSc7XHJcbiAgY29uc3QgYmVsbFJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybkJFTEx9P2AsICdnaScpO1xyXG5cclxuICBjb25zdCBtbUNvb3JkID0gJyhbLStdP1xcXFxkKylbLC5dPyhcXFxcZCspPyc7XHJcbiAgY29uc3QgbW1QYXR0ZXJuID0gYCR7bW1Db29yZH1bXFxcXHMsXSske21tQ29vcmR9YDtcclxuICBjb25zdCBtbVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7bW1QYXR0ZXJufSRgLCAnZycpO1xyXG5cclxuICBsZXQgaXNYWUNvb3JkcyA9IGZhbHNlO1xyXG5cclxuICBzdHIgPSBzdHIudG9Mb2NhbGVVcHBlckNhc2UoKS50cmltKCk7XHJcblxyXG4gIC8vIEV4dHJhY3QgcHJvamVjdGlvblxyXG4gIGlmIChwcm9qZWN0aW9uUmVnZXgudGVzdChzdHIpKSB7XHJcbiAgICBbY29vcmRTdHIsIHByb2plY3Rpb25TdHJdID0gc3RyLnNwbGl0KCc7JykubWFwKHMgPT4gcy50cmltKCkpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb29yZFN0ciA9IHN0cjtcclxuICB9XHJcbiAgaWYgKGxvbkxhdFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBbXHJcbiAgICAgICxcclxuICAgICAgbmVnYXRpdmVMb24sXHJcbiAgICAgIGxvbixcclxuICAgICAgLFxyXG4gICAgICBkZWNpbWFsTG9uLFxyXG4gICAgICBuZWdhdGl2ZUxhdCxcclxuICAgICAgbGF0LFxyXG4gICAgICAsXHJcbiAgICAgIGRlY2ltYWxMYXRcclxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChsb25MYXRQYXR0ZXJuKTtcclxuXHJcbiAgICBsb24gPSBwYXJzZUZsb2F0KChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgbG9uICsgJy4nICsgZGVjaW1hbExvbik7XHJcbiAgICBsYXQgPSBwYXJzZUZsb2F0KChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgbGF0ICsgJy4nICsgZGVjaW1hbExhdCk7XHJcbiAgfSBlbHNlIGlmIChkbXNSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgW1xyXG4gICAgICAsXHJcbiAgICAgIGRlZ3JlZXNMb24sXHJcbiAgICAgIG1pbnV0ZXNMb24sXHJcbiAgICAgIHNlY29uZHNMb24sXHJcbiAgICAgIGRpcmVjdGlvbkxvbixcclxuICAgICAgZGVncmVlc0xhdCxcclxuICAgICAgbWludXRlc0xhdCxcclxuICAgICAgc2Vjb25kc0xhdCxcclxuICAgICAgZGlyZWN0aW9uTGF0XHJcbiAgICBdID0gY29vcmRTdHIubWF0Y2goZG1zQ29vcmRQYXR0ZXJuKTtcclxuXHJcbiAgICBpZiAoZGlyZWN0aW9uTG9uID09PSAnUycgfHwgZGlyZWN0aW9uTG9uID09PSAnTicpIHtcclxuICAgICAgZGVncmVlc0xvbiA9IFtkZWdyZWVzTGF0LCAoZGVncmVlc0xhdCA9IGRlZ3JlZXNMb24pXVswXTtcclxuICAgICAgbWludXRlc0xvbiA9IFttaW51dGVzTGF0LCAobWludXRlc0xhdCA9IG1pbnV0ZXNMb24pXVswXTtcclxuICAgICAgc2Vjb25kc0xvbiA9IFtzZWNvbmRzTGF0LCAoc2Vjb25kc0xhdCA9IHNlY29uZHNMb24pXVswXTtcclxuICAgICAgZGlyZWN0aW9uTG9uID0gW2RpcmVjdGlvbkxhdCwgKGRpcmVjdGlvbkxhdCA9IGRpcmVjdGlvbkxvbildWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMb24pLFxyXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxyXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxyXG4gICAgICBkaXJlY3Rpb25Mb25cclxuICAgICk7XHJcbiAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTGF0KSxcclxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcclxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcclxuICAgICAgZGlyZWN0aW9uTGF0XHJcbiAgICApO1xyXG4gIH0gZWxzZSBpZiAodXRtUmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIGlzWFlDb29yZHMgPSB0cnVlO1xyXG4gICAgWywgLCB6b25lLCBsb24sIGxhdF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuVXRtKTtcclxuICAgIGNvbnN0IGVwc2dVdG0gPSBOdW1iZXIoem9uZSkgPCAxMCA/IGBFUFNHOjMyNjAke3pvbmV9YCA6IGBFUFNHOjMyNiR7em9uZX1gO1xyXG4gICAgW2xvbiwgbGF0XSA9IG9scHJvai50cmFuc2Zvcm0oXHJcbiAgICAgIFtwYXJzZUZsb2F0KGxvbiksIHBhcnNlRmxvYXQobGF0KV0sXHJcbiAgICAgIGVwc2dVdG0sXHJcbiAgICAgICdFUFNHOjQzMjYnXHJcbiAgICApO1xyXG4gIH0gZWxzZSBpZiAobXRtUmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIGlzWFlDb29yZHMgPSB0cnVlO1xyXG4gICAgWywgLCB6b25lLCBsb24sIGxhdF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuTXRtKTtcclxuICAgIGNvbnN0IGVwc2dNdG0gPVxyXG4gICAgICBOdW1iZXIoem9uZSkgPCAxMCA/IGBFUFNHOjMyMTgke3pvbmV9YCA6IGBFUFNHOjMyMSR7ODAgKyBOdW1iZXIoem9uZSl9YDtcclxuICAgIFtsb24sIGxhdF0gPSBvbHByb2oudHJhbnNmb3JtKFxyXG4gICAgICBbcGFyc2VGbG9hdChsb24pLCBwYXJzZUZsb2F0KGxhdCldLFxyXG4gICAgICBlcHNnTXRtLFxyXG4gICAgICAnRVBTRzo0MzI2J1xyXG4gICAgKTtcclxuICB9IGVsc2UgaWYgKGRtZFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBbXHJcbiAgICAgICxcclxuICAgICAgbmVnYXRpdmVMb24sXHJcbiAgICAgIGRlZ3JlZXNMb24sXHJcbiAgICAgIG1pbnV0ZXNMb24sXHJcbiAgICAgIHNlY29uZHNMb24sXHJcbiAgICAgIGRlY2ltYWxMb24sXHJcbiAgICAgIG5lZ2F0aXZlTGF0LFxyXG4gICAgICBkZWdyZWVzTGF0LFxyXG4gICAgICBtaW51dGVzTGF0LFxyXG4gICAgICBzZWNvbmRzTGF0LFxyXG4gICAgICBkZWNpbWFsTGF0XHJcbiAgICBdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybkRtZCk7XHJcblxyXG4gICAgbG9uID0gY29udmVydERNU1RvREQoXHJcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBkZWdyZWVzTG9uKSxcclxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcclxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcclxuICAgICAgZGlyZWN0aW9uTG9uXHJcbiAgICApO1xyXG4gICAgbGF0ID0gY29udmVydERNU1RvREQoXHJcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBkZWdyZWVzTGF0KSxcclxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcclxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcclxuICAgICAgZGlyZWN0aW9uTGF0XHJcbiAgICApO1xyXG4gIH0gZWxzZSBpZiAoZGRSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgW1xyXG4gICAgICAsXHJcbiAgICAgIG5lZ2F0aXZlTG9uLFxyXG4gICAgICBkZWdyZWVzTG9uLFxyXG4gICAgICBkZWNpbWFsTG9uLFxyXG4gICAgICBuZWdhdGl2ZUxhdCxcclxuICAgICAgZGVncmVlc0xhdCxcclxuICAgICAgZGVjaW1hbExhdFxyXG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5EZCk7XHJcblxyXG4gICAgbG9uID0gY29udmVydERNU1RvREQoXHJcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBkZWdyZWVzTG9uKSxcclxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcclxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcclxuICAgICAgZGlyZWN0aW9uTG9uXHJcbiAgICApO1xyXG4gICAgbGF0ID0gY29udmVydERNU1RvREQoXHJcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBkZWdyZWVzTGF0KSxcclxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcclxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcclxuICAgICAgZGlyZWN0aW9uTGF0XHJcbiAgICApO1xyXG4gIH0gZWxzZSBpZiAoYmVsbFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBbXHJcbiAgICAgICxcclxuICAgICAgbmVnYXRpdmVMYXQsXHJcbiAgICAgIGRlZ3JlZXNMYXQsXHJcbiAgICAgIG1pbnV0ZXNMYXQsXHJcbiAgICAgIHNlY29uZHNMYXQsXHJcbiAgICAgICxcclxuICAgICAgZGlyZWN0aW9uTGF0LFxyXG4gICAgICBuZWdhdGl2ZUxvbixcclxuICAgICAgZGVncmVlc0xvbixcclxuICAgICAgbWludXRlc0xvbixcclxuICAgICAgc2Vjb25kc0xvbixcclxuICAgICAgLFxyXG4gICAgICBkaXJlY3Rpb25Mb24sXHJcbiAgICAgIHJhZGl1cyxcclxuICAgICAgY29uZlxyXG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5CRUxMKTtcclxuXHJcbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZSBmb3IgTm9ydGggQW1lcmljYVxyXG4gICAgaWYgKCFkaXJlY3Rpb25Mb24pIHtcclxuICAgICAgZGlyZWN0aW9uTG9uID0gJ1cnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHJlYWwgbWludXRlcyBvciBkZWNpbWFsc1xyXG4gICAgaWYgKG1pbnV0ZXNMb24gJiYgbWludXRlc0xvbi5sZW5ndGggPiAyKSB7XHJcbiAgICAgIGxvbiA9IHBhcnNlRmxvYXQoXHJcbiAgICAgICAgKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBkZWdyZWVzTG9uICsgJy4nICsgbWludXRlc0xvblxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9uID0gY29udmVydERNU1RvREQoXHJcbiAgICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTG9uKSxcclxuICAgICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxyXG4gICAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXHJcbiAgICAgICAgZGlyZWN0aW9uTG9uXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1pbnV0ZXNMYXQgJiYgbWludXRlc0xhdC5sZW5ndGggPiAyKSB7XHJcbiAgICAgIGxhdCA9IHBhcnNlRmxvYXQoXHJcbiAgICAgICAgKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBkZWdyZWVzTGF0ICsgJy4nICsgbWludXRlc0xhdFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGF0ID0gY29udmVydERNU1RvREQoXHJcbiAgICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTGF0KSxcclxuICAgICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxyXG4gICAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXHJcbiAgICAgICAgZGlyZWN0aW9uTGF0XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChtbVJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBpc1hZQ29vcmRzID0gdHJ1ZTtcclxuICAgIFssIGxvbiwgZGVjaW1hbExvbiwgbGF0LCBkZWNpbWFsTGF0XSA9IGNvb3JkU3RyLm1hdGNoKG1tUGF0dGVybik7XHJcblxyXG4gICAgaWYgKGRlY2ltYWxMb24pIHtcclxuICAgICAgbG9uID0gcGFyc2VGbG9hdChsb24gKyAnLicgKyBkZWNpbWFsTG9uKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGVjaW1hbExhdCkge1xyXG4gICAgICBsYXQgPSBwYXJzZUZsb2F0KGxhdCArICcuJyArIGRlY2ltYWxMYXQpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsb25MYXQ6IHVuZGVmaW5lZCxcclxuICAgICAgbWVzc2FnZTogJycsXHJcbiAgICAgIHJhZGl1czogdW5kZWZpbmVkLFxyXG4gICAgICBjb25mOiB1bmRlZmluZWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBpZiAob3B0cy5mb3JjZU5BICYmICFpc1hZQ29vcmRzKSB7XHJcbiAgICAvLyBTZXQgYSBuZWdhdGl2ZSBjb29yZGluYXRlIGZvciBOb3J0aCBBbWVyaWNhIHpvbmVcclxuICAgIGlmIChsb24gPiAwICYmIGxhdCA+IDApIHtcclxuICAgICAgaWYgKGxvbiA+IGxhdCkge1xyXG4gICAgICAgIGxvbiA9IC1sb247XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGF0ID0gLWxhdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldmVyc2UgY29vcmRpbmF0ZSB0byByZXNwZWN0IGxvbkxhdCBjb252ZW50aW9uXHJcbiAgICBpZiAobG9uID4gbGF0KSB7XHJcbiAgICAgIGxvbiA9IFtsYXQsIChsYXQgPSBsb24pXVswXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvbkxhdCA9IFtOdW1iZXIobG9uKSwgTnVtYmVyKGxhdCldIGFzIFtudW1iZXIsIG51bWJlcl07XHJcblxyXG4gIC8vIFJlcHJvamVjdCB0aGUgY29vcmRpbmF0ZSBpZiBwcm9qZWN0aW9uIHBhcmFtZXRlciBoYXZlIGJlZW4gc2V0IGFuZCBjb29yZCBpcyBub3QgNDMyNlxyXG4gIGlmIChcclxuICAgIChwcm9qZWN0aW9uU3RyICE9PSB1bmRlZmluZWQgJiYgcHJvamVjdGlvblN0ciAhPT0gdG9Qcm9qZWN0aW9uKSB8fFxyXG4gICAgKGxvbkxhdFswXSA+IDE4MCB8fCBsb25MYXRbMF0gPCAtMTgwKSB8fFxyXG4gICAgKGxvbkxhdFsxXSA+IDkwIHx8IGxvbkxhdFsxXSA8IC05MClcclxuICApIHtcclxuICAgIGNvbnN0IHNvdXJjZSA9IHByb2plY3Rpb25TdHIgPyAnRVBTRzonICsgcHJvamVjdGlvblN0ciA6IG1hcFByb2plY3Rpb247XHJcbiAgICBjb25zdCBkZXN0ID0gJ0VQU0c6JyArIHRvUHJvamVjdGlvbjtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsb25MYXQgPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgc291cmNlLCBkZXN0KSBhcyBbbnVtYmVyLCBudW1iZXJdO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGxvbkxhdDogdW5kZWZpbmVkLFxyXG4gICAgICAgIG1lc3NhZ2U6ICdQcm9qZWN0aW9uICcgKyBzb3VyY2UgKyAnIG5vdCBzdXBwb3J0ZWQnLFxyXG4gICAgICAgIHJhZGl1czogdW5kZWZpbmVkLFxyXG4gICAgICAgIGNvbmY6IHVuZGVmaW5lZFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoTWF0aC5hYnMobG9uTGF0WzBdKSA8PSAxODAgJiYgTWF0aC5hYnMobG9uTGF0WzFdKSA8PSA5MCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbG9uTGF0LFxyXG4gICAgICBtZXNzYWdlOiAnJyxcclxuICAgICAgcmFkaXVzOiByYWRpdXMgPyBwYXJzZUludChyYWRpdXMsIDEwKSA6IHVuZGVmaW5lZCxcclxuICAgICAgY29uZjogY29uZiA/IHBhcnNlSW50KGNvbmYsIDEwKSA6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbG9uTGF0OiB1bmRlZmluZWQsXHJcbiAgICAgIG1lc3NhZ2U6ICdDb29yZGluYXRlIG91dCBvZiBMb25naXR1ZGUvTGF0aXR1ZGUgYm91bmRzJyxcclxuICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXHJcbiAgICAgIGNvbmY6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IGRlZ3JlZXMgbWludXRlcyBzZWNvbmRzIHRvIGRkXHJcbiAqIEBwYXJhbSBkZWdyZWVzIERlZ3JlZXNcclxuICogQHBhcmFtIG1pbnV0ZXMgTWludXRlc1xyXG4gKiBAcGFyYW0gc2Vjb25kcyBTZWNvbmRzXHJcbiAqIEBwYXJhbSBkaXJlY3Rpb24gRGlyZWN0aW9uXHJcbiAqL1xyXG5mdW5jdGlvbiBjb252ZXJ0RE1TVG9ERChcclxuICBkZWdyZWVzOiBudW1iZXIsXHJcbiAgbWludXRlczogbnVtYmVyLFxyXG4gIHNlY29uZHM6IG51bWJlcixcclxuICBkaXJlY3Rpb246IHN0cmluZ1xyXG4pIHtcclxuICBtaW51dGVzID0gbWludXRlcyB8fCAwO1xyXG4gIHNlY29uZHMgPSBzZWNvbmRzIHx8IDA7XHJcblxyXG4gIGNvbnN0IG5lZyA9IGRlZ3JlZXMgPCAwO1xyXG4gIGxldCBkZCA9IE1hdGguYWJzKGRlZ3JlZXMpICsgbWludXRlcyAvIDYwICsgc2Vjb25kcyAvIDM2MDA7XHJcblxyXG4gIGlmIChuZWcgfHwgZGlyZWN0aW9uID09PSAnUycgfHwgZGlyZWN0aW9uID09PSAnVycpIHtcclxuICAgIGRkID0gLWRkO1xyXG4gIH0gLy8gRG9uJ3QgZG8gYW55dGhpbmcgZm9yIE4gb3IgRVxyXG4gIHJldHVybiBkZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgZGQgdG8gZGVncmVlcyBtaW51dGVzIHNlY29uZHNcclxuICogQHBhcmFtIGxvbkxhdEREIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgaW4gZGRcclxuICogQHBhcmFtIGRlY2ltYWwgbnVtYmVyIG9mIGRlY2ltYWxzIGZvciBzZWNvbmRzXHJcbiAqIEByZXR1cm5zIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgaW4gZG1zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEREVG9ETVMoXHJcbiAgbG9uTGF0REQ6IFtudW1iZXIsIG51bWJlcl0sIGRlY2ltYWw6IG51bWJlciA9IDNcclxuKTogc3RyaW5nW10ge1xyXG4gIGNvbnN0IGxvbkxhdERNUyA9IFtdO1xyXG5cclxuICBsb25MYXRERC5mb3JFYWNoKGRkID0+IHtcclxuICAgIGNvbnN0IGRlZ3JlZXMgPSBkZCA8IDAgPyBNYXRoLmNlaWwoZGQpIDogTWF0aC5mbG9vcihkZCk7XHJcbiAgICBjb25zdCBpbnQgPSBkZCA8IDAgPyAoZGVncmVlcyAtIGRkKSAqIDYwIDogKGRkIC0gZGVncmVlcykgKiA2MDtcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKGludCk7XHJcbiAgICBjb25zdCBzZWNvbmRzID0gKChpbnQgLSBtaW51dGVzKSAqIDYwKS50b0ZpeGVkKGRlY2ltYWwpO1xyXG5cclxuICAgIGxvbkxhdERNUy5wdXNoKGAke2RlZ3JlZXN9wrAgJHttaW51dGVzfScgJHtzZWNvbmRzfVwiYCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGxvbkxhdERNUztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0cnVlIG9mIHR3byB2aWV3IHN0YXRlcyBhcmUgZXF1YWwuXHJcbiAqIEBwYXJhbSBzdGF0ZTEgVmlldyBzdGF0ZVxyXG4gKiBAcGFyYW0gc3RhdGUyIFZpZXcgc3RhdGVcclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmlldyBzdGF0ZXMgYXJlIGVxdWFsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdmlld1N0YXRlc0FyZUVxdWFsKFxyXG4gIHN0YXRlMTogTWFwVmlld1N0YXRlLFxyXG4gIHN0YXRlMjogTWFwVmlld1N0YXRlXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmIChzdGF0ZTEgPT09IHVuZGVmaW5lZCB8fCBzdGF0ZTIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdG9sZXJhbmNlID0gMSAvIDEwMDAwO1xyXG4gIHJldHVybiAoXHJcbiAgICBzdGF0ZTEuem9vbSA9PT0gc3RhdGUyLnpvb20gJiZcclxuICAgIE1hdGgudHJ1bmMoc3RhdGUxLmNlbnRlclswXSAvIHRvbGVyYW5jZSkgPT09XHJcbiAgICAgIE1hdGgudHJ1bmMoc3RhdGUyLmNlbnRlclswXSAvIHRvbGVyYW5jZSkgJiZcclxuICAgIE1hdGgudHJ1bmMoc3RhdGUxLmNlbnRlclsxXSAvIHRvbGVyYW5jZSkgPT09XHJcbiAgICAgIE1hdGgudHJ1bmMoc3RhdGUyLmNlbnRlclsxXSAvIHRvbGVyYW5jZSlcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0IHRoZSBzY2FsZSB0byBhIGh1bWFuIHJlYWRhYmxlIHRleHRcclxuICogQHBhcmFtIFNjYWxlIG9mIHRoZSBtYXBcclxuICogQHJldHVybnMgSHVtYW4gcmVhZGFibGUgc2NhbGUgdGV4dFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNjYWxlKHNjYWxlKSB7XHJcbiAgc2NhbGUgPSBNYXRoLnJvdW5kKHNjYWxlKTtcclxuICBpZiAoc2NhbGUgPCAxMDAwMCkge1xyXG4gICAgcmV0dXJuIHNjYWxlICsgJyc7XHJcbiAgfVxyXG5cclxuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUgLyAxMDAwKTtcclxuICBpZiAoc2NhbGUgPCAxMDAwKSB7XHJcbiAgICByZXR1cm4gc2NhbGUgKyAnSyc7XHJcbiAgfVxyXG5cclxuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUgLyAxMDAwKTtcclxuICByZXR1cm4gc2NhbGUgKyAnTSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gdGhlIHJlc29sdXRpb24gZnJvbSBhIHNjYWxlIGRlbm9tXHJcbiAqIEBwYXJhbSBzY2FsZSBTY2FsZSBkZW5vbVxyXG4gKiBAcGFyYW0gZHBpIERQSVxyXG4gKiBAcmV0dXJucyBSZXNvbHV0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShcclxuICBzY2FsZTogbnVtYmVyLFxyXG4gIGRwaTogbnVtYmVyID0gOTZcclxuKTogbnVtYmVyIHtcclxuICBjb25zdCBpbmNoZXNQZXJNZXRlciA9IDM5LjM3MDE7XHJcbiAgcmV0dXJuIHNjYWxlIC8gKGluY2hlc1Blck1ldGVyICogZHBpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0aGUgcmVzb2x1dGlvbiBmcm9tIGEgc2NhbGUgZGVub21cclxuICogQHBhcmFtIFNjYWxlIGRlbm9tXHJcbiAqIEByZXR1cm5zIFJlc29sdXRpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZyb21SZXNvbHV0aW9uKFxyXG4gIHJlc29sdXRpb246IG51bWJlcixcclxuICB1bml0OiBzdHJpbmcgPSAnbScsXHJcbiAgZHBpOiBudW1iZXIgPSA5NlxyXG4pOiBudW1iZXIge1xyXG4gIGNvbnN0IGluY2hlc1Blck1ldGVyID0gMzkuMzcwMTtcclxuICByZXR1cm4gcmVzb2x1dGlvbiAqIG9scHJvai5NRVRFUlNfUEVSX1VOSVRbdW5pdF0gKiBpbmNoZXNQZXJNZXRlciAqIGRwaTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgQ1RSTCBrZXkgaXMgcHVzaGVkIGR1cmluZyBhbiBPbCBNYXBCcm93c2VyUG9pbnRlckV2ZW50XHJcbiAqIEBwYXJhbSBldmVudCBPTCBNYXBCcm93c2VyUG9pbnRlckV2ZW50XHJcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIENUUkwga2V5IGlzIHB1c2hlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGN0cmxLZXlEb3duKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pOiBib29sZWFuIHtcclxuICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudDtcclxuICByZXR1cm4gKFxyXG4gICAgIW9yaWdpbmFsRXZlbnQuYWx0S2V5ICYmXHJcbiAgICAoTUFDID8gb3JpZ2luYWxFdmVudC5tZXRhS2V5IDogb3JpZ2luYWxFdmVudC5jdHJsS2V5KSAmJlxyXG4gICAgIW9yaWdpbmFsRXZlbnQuc2hpZnRLZXlcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcm91bmRDb29yZFRvKGNvb3JkOiBbbnVtYmVyLCBudW1iZXJdLCBkZWNpbWFsOiBudW1iZXIgPSAzKTogW251bWJlciwgbnVtYmVyXSB7XHJcbiAgcmV0dXJuIFtcclxuICAgIE51bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChjb29yZFswXSwgZGVjaW1hbCksXHJcbiAgICBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoY29vcmRbMV0sIGRlY2ltYWwpXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyBhbiBhcnJheSBvZiBjb252ZXJ0ZWQgY29vcmRpbmF0ZXMuXHJcbiAqIENvbnZlcnNpb24gaXMgZG9uZSBmb3IgZXZlcnkgY29uZmlndXJlZCBwcm9qZWN0aW9uc1xyXG4gKiBhbmQgZm9yIHRoZSBjdXJyZW50IFVUTSB6b25lIGFuZCBNVE0gem9uZS5cclxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIHRyYW5zZm9ybS5cclxuICogQHBhcmFtIHByb2plY3Rpb25zICBQcm9qZWN0aW9uW10gQXJyYXkgb2YgZGVzdGluYXRpb24gcHJvamVjdGlvbi5cclxuICogQHJldHVybnMgUmV0dXJucyBhbiBhcnJheSBvZiBjb252ZXJ0ZWQgY29vcmRpbmF0ZXMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbG9uTGF0Q29udmVyc2lvbihcclxuICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0sXHJcbiAgcHJvamVjdGlvbnM6IFByb2plY3Rpb25bXVxyXG4pOiB7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIGFsaWFzOiBzdHJpbmc7XHJcbiAgY29vcmQ6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgaWdvMkNvb3JkRm9ybWF0OiBzdHJpbmc7XHJcbn1bXSB7XHJcbiAgY29uc3QgcmF3Q29vcmQzODU3ID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JykgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICBjb25zdCBjb252ZXJ0ZWRMb25MYXQgPSBbXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdFUFNHOjM4NTcnLFxyXG4gICAgICBhbGlhczogJ1dlYiBNZXJjYXRvcicsXHJcbiAgICAgIGNvb3JkOiByYXdDb29yZDM4NTcsXHJcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7cm91bmRDb29yZFRvKHJhd0Nvb3JkMzg1Nykuam9pbignLCAnKX0gOyAzODU3YFxyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIC8vIGRldGVjdCB0aGUgY3VycmVudCB1dG0gem9uZS5cclxuICBjb25zdCB1dG1ab25lID0gdXRtWm9uZUZyb21Mb25MYXQobG9uTGF0KTtcclxuICBjb25zdCBlcHNnVXRtID0gdXRtWm9uZSA8IDEwID8gYEVQU0c6MzI2MCR7dXRtWm9uZX1gIDogYEVQU0c6MzI2JHt1dG1ab25lfWA7XHJcbiAgY29uc3QgdXRtTmFtZSA9IGBVVE0tJHt1dG1ab25lfWA7XHJcbiAgY29uc3QgcmF3Q29vcmRVdG0gPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIGVwc2dVdG0pIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgY29udmVydGVkTG9uTGF0LnB1c2goe1xyXG4gICAgY29kZTogZXBzZ1V0bSxcclxuICAgIGFsaWFzOiAnVVRNJyxcclxuICAgIGNvb3JkOiByYXdDb29yZFV0bSxcclxuICAgIGlnbzJDb29yZEZvcm1hdDogYCR7dXRtTmFtZX0gJHtyb3VuZENvb3JkVG8ocmF3Q29vcmRVdG0pLmpvaW4oJywgJyl9YFxyXG4gIH0pO1xyXG5cclxuICAvLyBkZXRlY3QgdGhlIGN1cnJlbnQgbXRtIHpvbmUuXHJcbiAgY29uc3QgbXRtWm9uZSA9IG10bVpvbmVGcm9tTG9uTGF0KGxvbkxhdCk7XHJcbiAgaWYgKG10bVpvbmUpIHtcclxuICAgIGNvbnN0IGVwc2dNdG0gPVxyXG4gICAgICBtdG1ab25lIDwgMTAgPyBgRVBTRzozMjE4JHttdG1ab25lfWAgOiBgRVBTRzozMjEkezgwICsgbXRtWm9uZX1gO1xyXG4gICAgY29uc3QgbXRtTmFtZSA9IGBNVE0tJHttdG1ab25lfWA7XHJcbiAgICBjb25zdCByYXdDb29yZE10bSA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCAnRVBTRzo0MzI2JywgZXBzZ010bSkgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICAgIGNvbnZlcnRlZExvbkxhdC5wdXNoKHtcclxuICAgICAgY29kZTogZXBzZ010bSxcclxuICAgICAgYWxpYXM6ICdNVE0nLFxyXG4gICAgICBjb29yZDogcmF3Q29vcmRNdG0sXHJcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7bXRtTmFtZX0gJHtyb3VuZENvb3JkVG8ocmF3Q29vcmRNdG0pLmpvaW4oJywgJyl9YFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm9qZWN0aW9ucy5mb3JFYWNoKHByb2plY3Rpb24gPT4ge1xyXG4gICAgY29uc3QgcmF3Q29vcmQgPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIHByb2plY3Rpb24uY29kZSkgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICAgIGNvbnN0IG51bWVyaWNFcHNnQ29kZSA9IHByb2plY3Rpb24uY29kZS5zcGxpdCgnOicpWzFdO1xyXG4gICAgY29udmVydGVkTG9uTGF0LnB1c2goe1xyXG4gICAgICBjb2RlOiBwcm9qZWN0aW9uLmNvZGUsXHJcbiAgICAgIGFsaWFzOiBwcm9qZWN0aW9uLmFsaWFzIHx8IHByb2plY3Rpb24uY29kZSxcclxuICAgICAgY29vcmQ6IHJhd0Nvb3JkLFxyXG4gICAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3JvdW5kQ29vcmRUbyhyYXdDb29yZCkuam9pbihcclxuICAgICAgICAnLCAnXHJcbiAgICAgICl9IDsgJHtudW1lcmljRXBzZ0NvZGV9YFxyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBjb252ZXJ0ZWRMb25MYXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlY3QgdGhlIGN1cnJlbnQgdXRtIHpvbmUgb2YgdGhlIGxvbi9sYXQgY29vcmRpbmF0ZS5cclxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIGRldGVjdCB0aGUgVVRNIHpvbmUuXHJcbiAqIEByZXR1cm5zIG51bWJlciBUaGUgVVRNIHpvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgcmV0dXJuIE1hdGguY2VpbCgobG9uTGF0WzBdICsgMTgwKSAvIDYpO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZWN0IHRoZSBjdXJyZW50IG10bSB6b25lIG9mIHRoZSBsb24vbGF0IGNvb3JkaW5hdGUuXHJcbiAqIEBwYXJhbSBsb25MYXQgW251bWJlciwgbnVtYmVyXSBhcnJheSBvZiB0aGUgY29vcmRpbmF0ZSB0byBkZXRlY3QgdGhlIE1UTSB6b25lLlxyXG4gKiBAcmV0dXJucyBudW1iZXIgVGhlIE1UTSB6b25lLiBVbmRlZmluZWQgaWYgb3V0c2lkZSBvZiB0aGUgbXRtIGFwcGxpY2F0aW9uIHpvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgY29uc3QgbG9uZyA9IGxvbkxhdFswXTtcclxuICBsZXQgbXRtWm9uZTtcclxuICBpZiAobG9uZyA8IC01MSAmJiBsb25nID4gLTU0KSB7XHJcbiAgICBtdG1ab25lID0gMTtcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNTQgJiYgbG9uZyA+IC01Nykge1xyXG4gICAgbXRtWm9uZSA9IDI7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTU3ICYmIGxvbmcgPiAtNjApIHtcclxuICAgIG10bVpvbmUgPSAzO1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC02MCAmJiBsb25nID4gLTYzKSB7XHJcbiAgICBtdG1ab25lID0gNDtcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNjMgJiYgbG9uZyA+IC02Nikge1xyXG4gICAgbXRtWm9uZSA9IDU7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTY2ICYmIGxvbmcgPiAtNjkpIHtcclxuICAgIG10bVpvbmUgPSA2O1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC02OSAmJiBsb25nID4gLTcyKSB7XHJcbiAgICBtdG1ab25lID0gNztcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNzIgJiYgbG9uZyA+IC03NSkge1xyXG4gICAgbXRtWm9uZSA9IDg7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTc1ICYmIGxvbmcgPiAtNzgpIHtcclxuICAgIG10bVpvbmUgPSA5O1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC03OCAmJiBsb25nID4gLTgxKSB7XHJcbiAgICBtdG1ab25lID0gMTA7XHJcbiAgfVxyXG4gIHJldHVybiBtdG1ab25lO1xyXG59XHJcbiJdfQ==
462
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU3QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSzFDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFXLEVBQ1gsYUFBcUIsRUFDckIsT0FBOEIsRUFBRTtJQU9oQyxJQUFJLE1BQXdCLENBQUM7SUFDN0IsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxHQUFRLENBQUM7SUFFYixNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUM1QixJQUFJLGFBQXFCLENBQUM7SUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxD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QUksQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNsQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxBQUFELEVBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDM0UsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FDM0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xDLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztLQUNIO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEFBQUQsRUFBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FDM0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xDLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztLQUNIO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEs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SUFDdkIsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLEVBQUUsQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9scHJvaiBmcm9tICdvbC9wcm9qJztcclxuaW1wb3J0IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQgZnJvbSAnb2wvTWFwQnJvd3NlckV2ZW50JztcclxuaW1wb3J0IHsgTUFDIH0gZnJvbSAnb2wvaGFzJztcclxuXHJcbmltcG9ydCB7IE51bWJlclV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgTWFwVmlld1N0YXRlIH0gZnJvbSAnLi9tYXAuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUHJvamVjdGlvbiB9IGZyb20gJy4vcHJvamVjdGlvbi5pbnRlcmZhY2VzJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCBleHRyYWN0cyBhIGNvb3JkaW5hdGUgdHVwbGUgZnJvbSBhIHN0cmluZy5cclxuICogQHBhcmFtIHN0ciBBbnkgc3RyaW5nXHJcbiAqIEBwYXJhbSBtYXBQcm9qZWN0aW9uIHN0cmluZyBNYXAgUHJvamVjdGlvblxyXG4gKiBAcGFyYW0gb3B0cy5mb3JjZU5BIGJvb2xlYW4gRm9yY2UgTm9ydGggQW1lcmljYSBab25lXHJcbiAqIEByZXR1cm5zIG9iamVjdDpcclxuICogICAgICAgICAgICAgbG9uTGF0OiBDb29yZGluYXRlLFxyXG4gKiAgICAgICAgICAgICBtZXNzYWdlOiBNZXNzYWdlIG9mIGVycm9yLFxyXG4gKiAgICAgICAgICAgICByYWRpdXM6IHJhZGl1cyBvZiB0aGUgY29uZmllbmNlIG9mIGNvb3JkaW5hdGUsXHJcbiAqICAgICAgICAgICAgIGNvbmY6IGNvbmZpZGVuY2Ugb2YgdGhlIGNvb3JkaW5hdGV9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9Mb25MYXQoXHJcbiAgc3RyOiBzdHJpbmcsXHJcbiAgbWFwUHJvamVjdGlvbjogc3RyaW5nLFxyXG4gIG9wdHM6IHsgZm9yY2VOQT86IGJvb2xlYW4gfSA9IHt9XHJcbik6IHtcclxuICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIHJhZGl1czogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIGNvbmY6IG51bWJlciB8IHVuZGVmaW5lZDtcclxufSB7XHJcbiAgbGV0IGxvbkxhdDogW251bWJlciwgbnVtYmVyXTtcclxuICBsZXQgY29vcmRTdHI6IHN0cmluZztcclxuICBsZXQgbmVnYXRpdmVMb246IHN0cmluZztcclxuICBsZXQgZGVncmVlc0xvbjogc3RyaW5nO1xyXG4gIGxldCBtaW51dGVzTG9uOiBzdHJpbmc7XHJcbiAgbGV0IHNlY29uZHNMb246IHN0cmluZztcclxuICBsZXQgZGlyZWN0aW9uTG9uOiBzdHJpbmc7XHJcbiAgbGV0IGRlY2ltYWxMb246IHN0cmluZztcclxuICBsZXQgbmVnYXRpdmVMYXQ6IHN0cmluZztcclxuICBsZXQgZGVncmVlc0xhdDogc3RyaW5nO1xyXG4gIGxldCBtaW51dGVzTGF0OiBzdHJpbmc7XHJcbiAgbGV0IHNlY29uZHNMYXQ6IHN0cmluZztcclxuICBsZXQgZGlyZWN0aW9uTGF0OiBzdHJpbmc7XHJcbiAgbGV0IGRlY2ltYWxMYXQ6IHN0cmluZztcclxuICBsZXQgem9uZTogc3RyaW5nO1xyXG4gIGxldCByYWRpdXM6IHN0cmluZztcclxuICBsZXQgY29uZjogc3RyaW5nO1xyXG4gIGxldCBsb246IGFueTtcclxuICBsZXQgbGF0OiBhbnk7XHJcblxyXG4gIGNvbnN0IHByb2plY3Rpb25QYXR0ZXJuID0gJyhcXFxccyo7XFxcXHMqW1xcXFxkXXs0LDZ9KSc7XHJcbiAgY29uc3QgdG9Qcm9qZWN0aW9uID0gJzQzMjYnO1xyXG4gIGxldCBwcm9qZWN0aW9uU3RyOiBzdHJpbmc7XHJcbiAgY29uc3QgcHJvamVjdGlvblJlZ2V4ID0gbmV3IFJlZ0V4cChwcm9qZWN0aW9uUGF0dGVybiwgJ2cnKTtcclxuXHJcbiAgY29uc3QgbG9ubGF0Q29vcmQgPSAnKFstK10pPyhbXFxcXGRdezEsM30pKFssLl0oXFxcXGQrKSk/JztcclxuICBjb25zdCBsb25MYXRQYXR0ZXJuID0gYCR7bG9ubGF0Q29vcmR9W1xcXFxzLF0rJHtsb25sYXRDb29yZH1gO1xyXG4gIGNvbnN0IGxvbkxhdFJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7bG9uTGF0UGF0dGVybn0kYCwgJ2cnKTtcclxuXHJcbiAgY29uc3QgZG1zQ29vcmQgPVxyXG4gICAgJyhbMC05XXsxLDJ9KVs6fMKwXT9cXFxccyooWzAtOV17MSwyfSk/Wzp8XFwnfOKAsnzigJldP1xcXFxzKihbMC05XXsxLDJ9KD86LlswLTldKyl7MCwxfSk/XFxcXHMqW1wifOKAs3zigJ1dP1xcXFxzKic7XHJcbiAgY29uc3QgZG1zQ29vcmRQYXR0ZXJuID0gYCR7ZG1zQ29vcmR9KFtOfFN8RXxXfE9dKSw/XFxcXHMqJHtkbXNDb29yZH0oW058U3xFfFd8T10pYDtcclxuICBjb25zdCBkbXNSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2Rtc0Nvb3JkUGF0dGVybn0kYCwgJ2dpJyk7XHJcblxyXG4gIGNvbnN0IHBhdHRlcm5VdG0gPVxyXG4gICAgJyhVVE0pLT8oXFxcXGR7MSwyfSlbXFxcXHMsXSooXFxcXGQrWy4sXT9cXFxcZCspW1xcXFxzLF0rKFxcXFxkK1suLF0/XFxcXGQrKSc7XHJcbiAgY29uc3QgdXRtUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuVXRtfWAsICdnaScpO1xyXG5cclxuICBjb25zdCBwYXR0ZXJuTXRtID1cclxuICAgICcoTVRNKS0/KFxcXFxkezEsMn0pW1xcXFxzLF0qKFxcXFxkK1suLF0/XFxcXGQrKVtcXFxccyxdKyhcXFxcZCtbLixdP1xcXFxkKyknO1xyXG4gIGNvbnN0IG10bVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybk10bX1gLCAnZ2knKTtcclxuXHJcbiAgY29uc3QgZGRDb29yZCA9ICcoWy0rXSk/KFxcXFxkezEsM30pWywuXShcXFxcZCspJztcclxuICBjb25zdCBwYXR0ZXJuRGQgPSBgJHtkZENvb3JkfVxcXFxzKlssXT9cXFxccyoke2RkQ29vcmR9YDtcclxuICBjb25zdCBkZFJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybkRkfWAsICdnJyk7XHJcblxyXG4gIGNvbnN0IGRtZENvb3JkID1cclxuICAgICcoWy0rXSk/KFxcXFxkezEsM30pW1xcXFxzLC5dezF9KFxcXFxkezEsMn0pW1xcXFxzLC5dezF9KFxcXFxkezEsMn0pWy4sXT8oXFxcXGR7MSw1fSk/JztcclxuICBjb25zdCBwYXR0ZXJuRG1kID0gYCR7ZG1kQ29vcmR9XFxcXHMqWywuXT9cXFxccyoke2RtZENvb3JkfWA7XHJcbiAgY29uc3QgZG1kUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuRG1kfWAsICdnJyk7XHJcblxyXG4gLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xyXG4gIGNvbnN0IHBhdHRlcm5CRUxMID1cclxuICAgICdMQVRcXFxccypbXFxcXHM6XSpcXFxccyooWy0rXSk/KFxcXFxkezEsMn0pW1xcXFxzLixdPyhcXFxcZCspP1tcXFxccy4sXT9cXFxccyooXFxcXGR7MSwyfShbLixdXFxcXGQrKT8pP1xcXFxzKihOfFN8RXxXKT9cXFxccypMT05HXFxcXHMqW1xcXFxzOl0qXFxcXHMqKFstK10pPyhcXFxcZHsxLDN9KVtcXFxccy4sXT8oXFxcXGQrKT9bXFxcXHMuLF0/XFxcXHMqKFxcXFxkezEsMn0oWy4sXVxcXFxkKyk/KT9cXFxccyooTnxTfEV8Vyk/XFxcXHMqVU5DXFxcXHMqW1xcXFxzOl0/XFxcXHMqKFxcXFxkKylcXFxccypDT05GXFxcXHMqW1xcXFxzOl0/XFxcXHMqKFxcXFxkezEsM30pJztcclxuICBjb25zdCBiZWxsUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuQkVMTH0/YCwgJ2dpJyk7XHJcblxyXG4gIGNvbnN0IG1tQ29vcmQgPSAnKFstK10/XFxcXGQrKVssLl0/KFxcXFxkKyk/JztcclxuICBjb25zdCBtbVBhdHRlcm4gPSBgJHttbUNvb3JkfVtcXFxccyxdKyR7bW1Db29yZH1gO1xyXG4gIGNvbnN0IG1tUmVnZXggPSBuZXcgUmVnRXhwKGBeJHttbVBhdHRlcm59JGAsICdnJyk7XHJcblxyXG4gIGxldCBpc1hZQ29vcmRzID0gZmFsc2U7XHJcblxyXG4gIHN0ciA9IHN0ci50b0xvY2FsZVVwcGVyQ2FzZSgpLnRyaW0oKTtcclxuXHJcbiAgLy8gRXh0cmFjdCBwcm9qZWN0aW9uXHJcbiAgaWYgKHByb2plY3Rpb25SZWdleC50ZXN0KHN0cikpIHtcclxuICAgIFtjb29yZFN0ciwgcHJvamVjdGlvblN0cl0gPSBzdHIuc3BsaXQoJzsnKS5tYXAocyA9PiBzLnRyaW0oKSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvb3JkU3RyID0gc3RyO1xyXG4gIH1cclxuICBpZiAobG9uTGF0UmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIFtcclxuICAgICAgLFxyXG4gICAgICBuZWdhdGl2ZUxvbixcclxuICAgICAgbG9uLFxyXG4gICAgICAsXHJcbiAgICAgIGRlY2ltYWxMb24sXHJcbiAgICAgIG5lZ2F0aXZlTGF0LFxyXG4gICAgICBsYXQsXHJcbiAgICAgICxcclxuICAgICAgZGVjaW1hbExhdFxyXG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKGxvbkxhdFBhdHRlcm4pO1xyXG5cclxuICAgIGxvbiA9IHBhcnNlRmxvYXQoKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBsb24gKyAnLicgKyBkZWNpbWFsTG9uKTtcclxuICAgIGxhdCA9IHBhcnNlRmxvYXQoKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBsYXQgKyAnLicgKyBkZWNpbWFsTGF0KTtcclxuICB9IGVsc2UgaWYgKGRtc1JlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBbXHJcbiAgICAgICxcclxuICAgICAgZGVncmVlc0xvbixcclxuICAgICAgbWludXRlc0xvbixcclxuICAgICAgc2Vjb25kc0xvbixcclxuICAgICAgZGlyZWN0aW9uTG9uLFxyXG4gICAgICBkZWdyZWVzTGF0LFxyXG4gICAgICBtaW51dGVzTGF0LFxyXG4gICAgICBzZWNvbmRzTGF0LFxyXG4gICAgICBkaXJlY3Rpb25MYXRcclxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChkbXNDb29yZFBhdHRlcm4pO1xyXG5cclxuICAgIGlmIChkaXJlY3Rpb25Mb24gPT09ICdTJyB8fCBkaXJlY3Rpb25Mb24gPT09ICdOJykge1xyXG4gICAgICBkZWdyZWVzTG9uID0gW2RlZ3JlZXNMYXQsIChkZWdyZWVzTGF0ID0gZGVncmVlc0xvbildWzBdO1xyXG4gICAgICBtaW51dGVzTG9uID0gW21pbnV0ZXNMYXQsIChtaW51dGVzTGF0ID0gbWludXRlc0xvbildWzBdO1xyXG4gICAgICBzZWNvbmRzTG9uID0gW3NlY29uZHNMYXQsIChzZWNvbmRzTGF0ID0gc2Vjb25kc0xvbildWzBdO1xyXG4gICAgICBkaXJlY3Rpb25Mb24gPSBbZGlyZWN0aW9uTGF0LCAoZGlyZWN0aW9uTGF0ID0gZGlyZWN0aW9uTG9uKV1bMF07XHJcbiAgICB9XHJcblxyXG4gICAgbG9uID0gY29udmVydERNU1RvREQoXHJcbiAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xvbiksXHJcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXHJcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXHJcbiAgICAgIGRpcmVjdGlvbkxvblxyXG4gICAgKTtcclxuICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMYXQpLFxyXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxyXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxyXG4gICAgICBkaXJlY3Rpb25MYXRcclxuICAgICk7XHJcbiAgfSBlbHNlIGlmICh1dG1SZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgaXNYWUNvb3JkcyA9IHRydWU7XHJcbiAgICBbLCAsIHpvbmUsIGxvbiwgbGF0XSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5VdG0pO1xyXG4gICAgY29uc3QgZXBzZ1V0bSA9IE51bWJlcih6b25lKSA8IDEwID8gYEVQU0c6MzI2MCR7em9uZX1gIDogYEVQU0c6MzI2JHt6b25lfWA7XHJcbiAgICBbbG9uLCBsYXRdID0gb2xwcm9qLnRyYW5zZm9ybShcclxuICAgICAgW3BhcnNlRmxvYXQobG9uKSwgcGFyc2VGbG9hdChsYXQpXSxcclxuICAgICAgZXBzZ1V0bSxcclxuICAgICAgJ0VQU0c6NDMyNidcclxuICAgICk7XHJcbiAgfSBlbHNlIGlmIChtdG1SZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgaXNYWUNvb3JkcyA9IHRydWU7XHJcbiAgICBbLCAsIHpvbmUsIGxvbiwgbGF0XSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5NdG0pO1xyXG4gICAgY29uc3QgZXBzZ010bSA9XHJcbiAgICAgIE51bWJlcih6b25lKSA8IDEwID8gYEVQU0c6MzIxOCR7em9uZX1gIDogYEVQU0c6MzIxJHs4MCArIE51bWJlcih6b25lKX1gO1xyXG4gICAgW2xvbiwgbGF0XSA9IG9scHJvai50cmFuc2Zvcm0oXHJcbiAgICAgIFtwYXJzZUZsb2F0KGxvbiksIHBhcnNlRmxvYXQobGF0KV0sXHJcbiAgICAgIGVwc2dNdG0sXHJcbiAgICAgICdFUFNHOjQzMjYnXHJcbiAgICApO1xyXG4gIH0gZWxzZSBpZiAoZG1kUmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIFtcclxuICAgICAgLFxyXG4gICAgICBuZWdhdGl2ZUxvbixcclxuICAgICAgZGVncmVlc0xvbixcclxuICAgICAgbWludXRlc0xvbixcclxuICAgICAgc2Vjb25kc0xvbixcclxuICAgICAgZGVjaW1hbExvbixcclxuICAgICAgbmVnYXRpdmVMYXQsXHJcbiAgICAgIGRlZ3JlZXNMYXQsXHJcbiAgICAgIG1pbnV0ZXNMYXQsXHJcbiAgICAgIHNlY29uZHNMYXQsXHJcbiAgICAgIGRlY2ltYWxMYXRcclxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuRG1kKTtcclxuXHJcbiAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGRlZ3JlZXNMb24pLFxyXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxyXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxyXG4gICAgICBkaXJlY3Rpb25Mb25cclxuICAgICk7XHJcbiAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGRlZ3JlZXNMYXQpLFxyXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxyXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxyXG4gICAgICBkaXJlY3Rpb25MYXRcclxuICAgICk7XHJcbiAgfSBlbHNlIGlmIChkZFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBbXHJcbiAgICAgICxcclxuICAgICAgbmVnYXRpdmVMb24sXHJcbiAgICAgIGRlZ3JlZXNMb24sXHJcbiAgICAgIGRlY2ltYWxMb24sXHJcbiAgICAgIG5lZ2F0aXZlTGF0LFxyXG4gICAgICBkZWdyZWVzTGF0LFxyXG4gICAgICBkZWNpbWFsTGF0XHJcbiAgICBdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybkRkKTtcclxuXHJcbiAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGRlZ3JlZXNMb24pLFxyXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxyXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxyXG4gICAgICBkaXJlY3Rpb25Mb25cclxuICAgICk7XHJcbiAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGRlZ3JlZXNMYXQpLFxyXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxyXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxyXG4gICAgICBkaXJlY3Rpb25MYXRcclxuICAgICk7XHJcbiAgfSBlbHNlIGlmIChiZWxsUmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIFtcclxuICAgICAgLFxyXG4gICAgICBuZWdhdGl2ZUxhdCxcclxuICAgICAgZGVncmVlc0xhdCxcclxuICAgICAgbWludXRlc0xhdCxcclxuICAgICAgc2Vjb25kc0xhdCxcclxuICAgICAgLFxyXG4gICAgICBkaXJlY3Rpb25MYXQsXHJcbiAgICAgIG5lZ2F0aXZlTG9uLFxyXG4gICAgICBkZWdyZWVzTG9uLFxyXG4gICAgICBtaW51dGVzTG9uLFxyXG4gICAgICBzZWNvbmRzTG9uLFxyXG4gICAgICAsXHJcbiAgICAgIGRpcmVjdGlvbkxvbixcclxuICAgICAgcmFkaXVzLFxyXG4gICAgICBjb25mXHJcbiAgICBdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybkJFTEwpO1xyXG5cclxuICAgIC8vIFNldCBkZWZhdWx0IHZhbHVlIGZvciBOb3J0aCBBbWVyaWNhXHJcbiAgICBpZiAoIWRpcmVjdGlvbkxvbikge1xyXG4gICAgICBkaXJlY3Rpb25Mb24gPSAnVyc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgcmVhbCBtaW51dGVzIG9yIGRlY2ltYWxzXHJcbiAgICBpZiAobWludXRlc0xvbiAmJiBtaW51dGVzTG9uLmxlbmd0aCA+IDIpIHtcclxuICAgICAgbG9uID0gcGFyc2VGbG9hdChcclxuICAgICAgICAobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGRlZ3JlZXNMb24gKyAnLicgKyBtaW51dGVzTG9uXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMb24pLFxyXG4gICAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXHJcbiAgICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcclxuICAgICAgICBkaXJlY3Rpb25Mb25cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWludXRlc0xhdCAmJiBtaW51dGVzTGF0Lmxlbmd0aCA+IDIpIHtcclxuICAgICAgbGF0ID0gcGFyc2VGbG9hdChcclxuICAgICAgICAobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGRlZ3JlZXNMYXQgKyAnLicgKyBtaW51dGVzTGF0XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMYXQpLFxyXG4gICAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXHJcbiAgICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcclxuICAgICAgICBkaXJlY3Rpb25MYXRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKG1tUmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIGlzWFlDb29yZHMgPSB0cnVlO1xyXG4gICAgWywgbG9uLCBkZWNpbWFsTG9uLCBsYXQsIGRlY2ltYWxMYXRdID0gY29vcmRTdHIubWF0Y2gobW1QYXR0ZXJuKTtcclxuXHJcbiAgICBpZiAoZGVjaW1hbExvbikge1xyXG4gICAgICBsb24gPSBwYXJzZUZsb2F0KGxvbiArICcuJyArIGRlY2ltYWxMb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkZWNpbWFsTGF0KSB7XHJcbiAgICAgIGxhdCA9IHBhcnNlRmxvYXQobGF0ICsgJy4nICsgZGVjaW1hbExhdCk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxvbkxhdDogdW5kZWZpbmVkLFxyXG4gICAgICBtZXNzYWdlOiAnJyxcclxuICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXHJcbiAgICAgIGNvbmY6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGlmIChvcHRzLmZvcmNlTkEgJiYgIWlzWFlDb29yZHMpIHtcclxuICAgIC8vIFNldCBhIG5lZ2F0aXZlIGNvb3JkaW5hdGUgZm9yIE5vcnRoIEFtZXJpY2Egem9uZVxyXG4gICAgaWYgKGxvbiA+IDAgJiYgbGF0ID4gMCkge1xyXG4gICAgICBpZiAobG9uID4gbGF0KSB7XHJcbiAgICAgICAgbG9uID0gLWxvbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsYXQgPSAtbGF0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV2ZXJzZSBjb29yZGluYXRlIHRvIHJlc3BlY3QgbG9uTGF0IGNvbnZlbnRpb25cclxuICAgIGlmIChsb24gPiBsYXQpIHtcclxuICAgICAgbG9uID0gW2xhdCwgKGxhdCA9IGxvbildWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9uTGF0ID0gW051bWJlcihsb24pLCBOdW1iZXIobGF0KV0gYXMgW251bWJlciwgbnVtYmVyXTtcclxuXHJcbiAgLy8gUmVwcm9qZWN0IHRoZSBjb29yZGluYXRlIGlmIHByb2plY3Rpb24gcGFyYW1ldGVyIGhhdmUgYmVlbiBzZXQgYW5kIGNvb3JkIGlzIG5vdCA0MzI2XHJcbiAgaWYgKFxyXG4gICAgKHByb2plY3Rpb25TdHIgIT09IHVuZGVmaW5lZCAmJiBwcm9qZWN0aW9uU3RyICE9PSB0b1Byb2plY3Rpb24pIHx8XHJcbiAgICAobG9uTGF0WzBdID4gMTgwIHx8IGxvbkxhdFswXSA8IC0xODApIHx8XHJcbiAgICAobG9uTGF0WzFdID4gOTAgfHwgbG9uTGF0WzFdIDwgLTkwKVxyXG4gICkge1xyXG4gICAgY29uc3Qgc291cmNlID0gcHJvamVjdGlvblN0ciA/ICdFUFNHOicgKyBwcm9qZWN0aW9uU3RyIDogbWFwUHJvamVjdGlvbjtcclxuICAgIGNvbnN0IGRlc3QgPSAnRVBTRzonICsgdG9Qcm9qZWN0aW9uO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxvbkxhdCA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCBzb3VyY2UsIGRlc3QpIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbG9uTGF0OiB1bmRlZmluZWQsXHJcbiAgICAgICAgbWVzc2FnZTogJ1Byb2plY3Rpb24gJyArIHNvdXJjZSArICcgbm90IHN1cHBvcnRlZCcsXHJcbiAgICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXHJcbiAgICAgICAgY29uZjogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChNYXRoLmFicyhsb25MYXRbMF0pIDw9IDE4MCAmJiBNYXRoLmFicyhsb25MYXRbMV0pIDw9IDkwKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsb25MYXQsXHJcbiAgICAgIG1lc3NhZ2U6ICcnLFxyXG4gICAgICByYWRpdXM6IHJhZGl1cyA/IHBhcnNlSW50KHJhZGl1cywgMTApIDogdW5kZWZpbmVkLFxyXG4gICAgICBjb25mOiBjb25mID8gcGFyc2VJbnQoY29uZiwgMTApIDogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsb25MYXQ6IHVuZGVmaW5lZCxcclxuICAgICAgbWVzc2FnZTogJ0Nvb3JkaW5hdGUgb3V0IG9mIExvbmdpdHVkZS9MYXRpdHVkZSBib3VuZHMnLFxyXG4gICAgICByYWRpdXM6IHVuZGVmaW5lZCxcclxuICAgICAgY29uZjogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgZGVncmVlcyBtaW51dGVzIHNlY29uZHMgdG8gZGRcclxuICogQHBhcmFtIGRlZ3JlZXMgRGVncmVlc1xyXG4gKiBAcGFyYW0gbWludXRlcyBNaW51dGVzXHJcbiAqIEBwYXJhbSBzZWNvbmRzIFNlY29uZHNcclxuICogQHBhcmFtIGRpcmVjdGlvbiBEaXJlY3Rpb25cclxuICovXHJcbmZ1bmN0aW9uIGNvbnZlcnRETVNUb0REKFxyXG4gIGRlZ3JlZXM6IG51bWJlcixcclxuICBtaW51dGVzOiBudW1iZXIsXHJcbiAgc2Vjb25kczogbnVtYmVyLFxyXG4gIGRpcmVjdGlvbjogc3RyaW5nXHJcbikge1xyXG4gIG1pbnV0ZXMgPSBtaW51dGVzIHx8IDA7XHJcbiAgc2Vjb25kcyA9IHNlY29uZHMgfHwgMDtcclxuXHJcbiAgY29uc3QgbmVnID0gZGVncmVlcyA8IDA7XHJcbiAgbGV0IGRkID0gTWF0aC5hYnMoZGVncmVlcykgKyBtaW51dGVzIC8gNjAgKyBzZWNvbmRzIC8gMzYwMDtcclxuXHJcbiAgaWYgKG5lZyB8fCBkaXJlY3Rpb24gPT09ICdTJyB8fCBkaXJlY3Rpb24gPT09ICdXJykge1xyXG4gICAgZGQgPSAtZGQ7XHJcbiAgfSAvLyBEb24ndCBkbyBhbnl0aGluZyBmb3IgTiBvciBFXHJcbiAgcmV0dXJuIGRkO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBkZCB0byBkZWdyZWVzIG1pbnV0ZXMgc2Vjb25kc1xyXG4gKiBAcGFyYW0gbG9uTGF0REQgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBpbiBkZFxyXG4gKiBAcGFyYW0gZGVjaW1hbCBudW1iZXIgb2YgZGVjaW1hbHMgZm9yIHNlY29uZHNcclxuICogQHJldHVybnMgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBpbiBkbXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RERUb0RNUyhcclxuICBsb25MYXRERDogW251bWJlciwgbnVtYmVyXSwgZGVjaW1hbDogbnVtYmVyID0gM1xyXG4pOiBzdHJpbmdbXSB7XHJcbiAgY29uc3QgbG9uTGF0RE1TID0gW107XHJcblxyXG4gIGxvbkxhdERELmZvckVhY2goZGQgPT4ge1xyXG4gICAgY29uc3QgZGVncmVlcyA9IGRkIDwgMCA/IE1hdGguY2VpbChkZCkgOiBNYXRoLmZsb29yKGRkKTtcclxuICAgIGNvbnN0IGludCA9IGRkIDwgMCA/IChkZWdyZWVzIC0gZGQpICogNjAgOiAoZGQgLSBkZWdyZWVzKSAqIDYwO1xyXG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoaW50KTtcclxuICAgIGNvbnN0IHNlY29uZHMgPSAoKGludCAtIG1pbnV0ZXMpICogNjApLnRvRml4ZWQoZGVjaW1hbCk7XHJcblxyXG4gICAgbG9uTGF0RE1TLnB1c2goYCR7ZGVncmVlc33CsCAke21pbnV0ZXN9JyAke3NlY29uZHN9XCJgKTtcclxuICB9KTtcclxuICByZXR1cm4gbG9uTGF0RE1TO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIHRydWUgb2YgdHdvIHZpZXcgc3RhdGVzIGFyZSBlcXVhbC5cclxuICogQHBhcmFtIHN0YXRlMSBWaWV3IHN0YXRlXHJcbiAqIEBwYXJhbSBzdGF0ZTIgVmlldyBzdGF0ZVxyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IHN0YXRlcyBhcmUgZXF1YWxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB2aWV3U3RhdGVzQXJlRXF1YWwoXHJcbiAgc3RhdGUxOiBNYXBWaWV3U3RhdGUsXHJcbiAgc3RhdGUyOiBNYXBWaWV3U3RhdGVcclxuKTogYm9vbGVhbiB7XHJcbiAgaWYgKHN0YXRlMSA9PT0gdW5kZWZpbmVkIHx8IHN0YXRlMiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCB0b2xlcmFuY2UgPSAxIC8gMTAwMDA7XHJcbiAgcmV0dXJuIChcclxuICAgIHN0YXRlMS56b29tID09PSBzdGF0ZTIuem9vbSAmJlxyXG4gICAgTWF0aC50cnVuYyhzdGF0ZTEuY2VudGVyWzBdIC8gdG9sZXJhbmNlKSA9PT1cclxuICAgICAgTWF0aC50cnVuYyhzdGF0ZTIuY2VudGVyWzBdIC8gdG9sZXJhbmNlKSAmJlxyXG4gICAgTWF0aC50cnVuYyhzdGF0ZTEuY2VudGVyWzFdIC8gdG9sZXJhbmNlKSA9PT1cclxuICAgICAgTWF0aC50cnVuYyhzdGF0ZTIuY2VudGVyWzFdIC8gdG9sZXJhbmNlKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXQgdGhlIHNjYWxlIHRvIGEgaHVtYW4gcmVhZGFibGUgdGV4dFxyXG4gKiBAcGFyYW0gU2NhbGUgb2YgdGhlIG1hcFxyXG4gKiBAcmV0dXJucyBIdW1hbiByZWFkYWJsZSBzY2FsZSB0ZXh0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2NhbGUoc2NhbGUpIHtcclxuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUpO1xyXG4gIGlmIChzY2FsZSA8IDEwMDAwKSB7XHJcbiAgICByZXR1cm4gc2NhbGUgKyAnJztcclxuICB9XHJcblxyXG4gIHNjYWxlID0gTWF0aC5yb3VuZChzY2FsZSAvIDEwMDApO1xyXG4gIGlmIChzY2FsZSA8IDEwMDApIHtcclxuICAgIHJldHVybiBzY2FsZSArICdLJztcclxuICB9XHJcblxyXG4gIHNjYWxlID0gTWF0aC5yb3VuZChzY2FsZSAvIDEwMDApO1xyXG4gIHJldHVybiBzY2FsZSArICdNJztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0aGUgcmVzb2x1dGlvbiBmcm9tIGEgc2NhbGUgZGVub21cclxuICogQHBhcmFtIHNjYWxlIFNjYWxlIGRlbm9tXHJcbiAqIEBwYXJhbSBkcGkgRFBJXHJcbiAqIEByZXR1cm5zIFJlc29sdXRpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlKFxyXG4gIHNjYWxlOiBudW1iZXIsXHJcbiAgZHBpOiBudW1iZXIgPSA5NlxyXG4pOiBudW1iZXIge1xyXG4gIGNvbnN0IGluY2hlc1Blck1ldGVyID0gMzkuMzcwMTtcclxuICByZXR1cm4gc2NhbGUgLyAoaW5jaGVzUGVyTWV0ZXIgKiBkcGkpO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIHRoZSByZXNvbHV0aW9uIGZyb20gYSBzY2FsZSBkZW5vbVxyXG4gKiBAcGFyYW0gU2NhbGUgZGVub21cclxuICogQHJldHVybnMgUmVzb2x1dGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlRnJvbVJlc29sdXRpb24oXHJcbiAgcmVzb2x1dGlvbjogbnVtYmVyLFxyXG4gIHVuaXQ6IHN0cmluZyA9ICdtJyxcclxuICBkcGk6IG51bWJlciA9IDk2XHJcbik6IG51bWJlciB7XHJcbiAgY29uc3QgaW5jaGVzUGVyTWV0ZXIgPSAzOS4zNzAxO1xyXG4gIHJldHVybiByZXNvbHV0aW9uICogb2xwcm9qLk1FVEVSU19QRVJfVU5JVFt1bml0XSAqIGluY2hlc1Blck1ldGVyICogZHBpO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBDVFJMIGtleSBpcyBwdXNoZWQgZHVyaW5nIGFuIE9sIE1hcEJyb3dzZXJQb2ludGVyRXZlbnRcclxuICogQHBhcmFtIGV2ZW50IE9MIE1hcEJyb3dzZXJQb2ludGVyRXZlbnRcclxuICogQHJldHVybnMgV2hldGhlciB0aGUgQ1RSTCBrZXkgaXMgcHVzaGVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3RybEtleURvd24oZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55Pik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IG9yaWdpbmFsRXZlbnQgPSBldmVudC5vcmlnaW5hbEV2ZW50O1xyXG4gIHJldHVybiAoXHJcbiAgICAhb3JpZ2luYWxFdmVudC5hbHRLZXkgJiZcclxuICAgIChNQUMgPyBvcmlnaW5hbEV2ZW50Lm1ldGFLZXkgOiBvcmlnaW5hbEV2ZW50LmN0cmxLZXkpICYmXHJcbiAgICAhb3JpZ2luYWxFdmVudC5zaGlmdEtleVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByb3VuZENvb3JkVG8oY29vcmQ6IFtudW1iZXIsIG51bWJlcl0sIGRlY2ltYWw6IG51bWJlciA9IDMpOiBbbnVtYmVyLCBudW1iZXJdIHtcclxuICByZXR1cm4gW1xyXG4gICAgTnVtYmVyVXRpbHMucm91bmRUb05EZWNpbWFsKGNvb3JkWzBdLCBkZWNpbWFsKSxcclxuICAgIE51bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChjb29yZFsxXSwgZGVjaW1hbCldIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByb3VuZENvb3JkVG9TdHJpbmcoY29vcmQ6IFtudW1iZXIsIG51bWJlcl0sIGRlY2ltYWw6IG51bWJlciA9IDMpOiBbc3RyaW5nLCBzdHJpbmdde1xyXG4gICAgcmV0dXJuIHJvdW5kQ29vcmRUbyhjb29yZCwgZGVjaW1hbCkubWFwKHIgPT4gci50b1N0cmluZygpKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyBhbiBhcnJheSBvZiBjb252ZXJ0ZWQgY29vcmRpbmF0ZXMuXHJcbiAqIENvbnZlcnNpb24gaXMgZG9uZSBmb3IgZXZlcnkgY29uZmlndXJlZCBwcm9qZWN0aW9uc1xyXG4gKiBhbmQgZm9yIHRoZSBjdXJyZW50IFVUTSB6b25lIGFuZCBNVE0gem9uZS5cclxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIHRyYW5zZm9ybS5cclxuICogQHBhcmFtIHByb2plY3Rpb25zICBQcm9qZWN0aW9uW10gQXJyYXkgb2YgZGVzdGluYXRpb24gcHJvamVjdGlvbi5cclxuICogQHJldHVybnMgUmV0dXJucyBhbiBhcnJheSBvZiBjb252ZXJ0ZWQgY29vcmRpbmF0ZXMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbG9uTGF0Q29udmVyc2lvbihcclxuICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0sXHJcbiAgcHJvamVjdGlvbnM6IFByb2plY3Rpb25bXVxyXG4pOiB7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIGFsaWFzOiBzdHJpbmc7XHJcbiAgY29vcmQ6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgaWdvMkNvb3JkRm9ybWF0OiBzdHJpbmc7XHJcbn1bXSB7XHJcbiAgY29uc3QgcmF3Q29vcmQzODU3ID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JykgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICBjb25zdCBjb252ZXJ0ZWRMb25MYXQgPSBbXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdFUFNHOjM4NTcnLFxyXG4gICAgICBhbGlhczogJ1dlYiBNZXJjYXRvcicsXHJcbiAgICAgIGNvb3JkOiByYXdDb29yZDM4NTcsXHJcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7cm91bmRDb29yZFRvKHJhd0Nvb3JkMzg1Nykuam9pbignLCAnKX0gOyAzODU3YFxyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIC8vIGRldGVjdCB0aGUgY3VycmVudCB1dG0gem9uZS5cclxuICBjb25zdCB1dG1ab25lID0gdXRtWm9uZUZyb21Mb25MYXQobG9uTGF0KTtcclxuICBjb25zdCBlcHNnVXRtID0gdXRtWm9uZSA8IDEwID8gYEVQU0c6MzI2MCR7dXRtWm9uZX1gIDogYEVQU0c6MzI2JHt1dG1ab25lfWA7XHJcbiAgY29uc3QgdXRtTmFtZSA9IGBVVE0tJHt1dG1ab25lfWA7XHJcbiAgY29uc3QgcmF3Q29vcmRVdG0gPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIGVwc2dVdG0pIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgY29udmVydGVkTG9uTGF0LnB1c2goe1xyXG4gICAgY29kZTogZXBzZ1V0bSxcclxuICAgIGFsaWFzOiAnVVRNJyxcclxuICAgIGNvb3JkOiByYXdDb29yZFV0bSxcclxuICAgIGlnbzJDb29yZEZvcm1hdDogYCR7dXRtTmFtZX0gJHtyb3VuZENvb3JkVG8ocmF3Q29vcmRVdG0pLmpvaW4oJywgJyl9YFxyXG4gIH0pO1xyXG5cclxuICAvLyBkZXRlY3QgdGhlIGN1cnJlbnQgbXRtIHpvbmUuXHJcbiAgY29uc3QgbXRtWm9uZSA9IG10bVpvbmVGcm9tTG9uTGF0KGxvbkxhdCk7XHJcbiAgaWYgKG10bVpvbmUpIHtcclxuICAgIGNvbnN0IGVwc2dNdG0gPVxyXG4gICAgICBtdG1ab25lIDwgMTAgPyBgRVBTRzozMjE4JHttdG1ab25lfWAgOiBgRVBTRzozMjEkezgwICsgbXRtWm9uZX1gO1xyXG4gICAgY29uc3QgbXRtTmFtZSA9IGBNVE0tJHttdG1ab25lfWA7XHJcbiAgICBjb25zdCByYXdDb29yZE10bSA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCAnRVBTRzo0MzI2JywgZXBzZ010bSkgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICAgIGNvbnZlcnRlZExvbkxhdC5wdXNoKHtcclxuICAgICAgY29kZTogZXBzZ010bSxcclxuICAgICAgYWxpYXM6ICdNVE0nLFxyXG4gICAgICBjb29yZDogcmF3Q29vcmRNdG0sXHJcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7bXRtTmFtZX0gJHtyb3VuZENvb3JkVG8ocmF3Q29vcmRNdG0pLmpvaW4oJywgJyl9YFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm9qZWN0aW9ucy5mb3JFYWNoKHByb2plY3Rpb24gPT4ge1xyXG4gICAgY29uc3QgcmF3Q29vcmQgPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIHByb2plY3Rpb24uY29kZSkgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICAgIGNvbnN0IG51bWVyaWNFcHNnQ29kZSA9IHByb2plY3Rpb24uY29kZS5zcGxpdCgnOicpWzFdO1xyXG4gICAgY29udmVydGVkTG9uTGF0LnB1c2goe1xyXG4gICAgICBjb2RlOiBwcm9qZWN0aW9uLmNvZGUsXHJcbiAgICAgIGFsaWFzOiBwcm9qZWN0aW9uLmFsaWFzIHx8IHByb2plY3Rpb24uY29kZSxcclxuICAgICAgY29vcmQ6IHJhd0Nvb3JkLFxyXG4gICAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3JvdW5kQ29vcmRUbyhyYXdDb29yZCkuam9pbihcclxuICAgICAgICAnLCAnXHJcbiAgICAgICl9IDsgJHtudW1lcmljRXBzZ0NvZGV9YFxyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBjb252ZXJ0ZWRMb25MYXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlY3QgdGhlIGN1cnJlbnQgdXRtIHpvbmUgb2YgdGhlIGxvbi9sYXQgY29vcmRpbmF0ZS5cclxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIGRldGVjdCB0aGUgVVRNIHpvbmUuXHJcbiAqIEByZXR1cm5zIG51bWJlciBUaGUgVVRNIHpvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgcmV0dXJuIE1hdGguY2VpbCgobG9uTGF0WzBdICsgMTgwKSAvIDYpO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZWN0IHRoZSBjdXJyZW50IG10bSB6b25lIG9mIHRoZSBsb24vbGF0IGNvb3JkaW5hdGUuXHJcbiAqIEBwYXJhbSBsb25MYXQgW251bWJlciwgbnVtYmVyXSBhcnJheSBvZiB0aGUgY29vcmRpbmF0ZSB0byBkZXRlY3QgdGhlIE1UTSB6b25lLlxyXG4gKiBAcmV0dXJucyBudW1iZXIgVGhlIE1UTSB6b25lLiBVbmRlZmluZWQgaWYgb3V0c2lkZSBvZiB0aGUgbXRtIGFwcGxpY2F0aW9uIHpvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgY29uc3QgbG9uZyA9IGxvbkxhdFswXTtcclxuICBsZXQgbXRtWm9uZTtcclxuICBpZiAobG9uZyA8IC01MSAmJiBsb25nID4gLTU0KSB7XHJcbiAgICBtdG1ab25lID0gMTtcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNTQgJiYgbG9uZyA+IC01Nykge1xyXG4gICAgbXRtWm9uZSA9IDI7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTU3ICYmIGxvbmcgPiAtNjApIHtcclxuICAgIG10bVpvbmUgPSAzO1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC02MCAmJiBsb25nID4gLTYzKSB7XHJcbiAgICBtdG1ab25lID0gNDtcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNjMgJiYgbG9uZyA+IC02Nikge1xyXG4gICAgbXRtWm9uZSA9IDU7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTY2ICYmIGxvbmcgPiAtNjkpIHtcclxuICAgIG10bVpvbmUgPSA2O1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC02OSAmJiBsb25nID4gLTcyKSB7XHJcbiAgICBtdG1ab25lID0gNztcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNzIgJiYgbG9uZyA+IC03NSkge1xyXG4gICAgbXRtWm9uZSA9IDg7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTc1ICYmIGxvbmcgPiAtNzgpIHtcclxuICAgIG10bVpvbmUgPSA5O1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC03OCAmJiBsb25nID4gLTgxKSB7XHJcbiAgICBtdG1ab25lID0gMTA7XHJcbiAgfVxyXG4gIHJldHVybiBtdG1ab25lO1xyXG59XHJcbiJdfQ==
@@ -1,6 +1,8 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { catchError, concatMap } from 'rxjs/operators';
3
3
  import { of, zip } from 'rxjs';
4
+ import { default as JSZip } from 'jszip';
5
+ import { InsertSourceInsertDBEnum } from './geoDB.enums';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@angular/common/http";
6
8
  import * as i2 from "./geoDB.service";
@@ -28,7 +30,7 @@ export class ConfigFileToGeoDBService {
28
30
  }
29
31
  if (currentDate >= geoData.triggerDate) {
30
32
  if (geoData.action === 'update') {
31
- const insertEvent = `${geoData.source || 'automatedDataUpdate'} (${geoData.triggerDate})`;
33
+ const insertEvent = `${geoData.source || InsertSourceInsertDBEnum.System} (${geoData.triggerDate})`;
32
34
  geoData.urls.map((url) => {
33
35
  datas$.push(this.geoDBService.getByID(url).pipe(concatMap((res) => {
34
36
  if (res?.insertEvent !== insertEvent) {
@@ -37,8 +39,31 @@ export class ConfigFileToGeoDBService {
37
39
  .info('igo.geo.indexedDb.data-download-start', undefined, { disableTimeOut: true, progressBar: false, closeButton: true, tapToDismiss: false });
38
40
  firstDownload = false;
39
41
  }
40
- return this.http.get(url)
41
- .pipe(concatMap(r => this.geoDBService.update(url, url, r, 'system', insertEvent)));
42
+ let responseType = 'json';
43
+ const isZip = this.isZip(url);
44
+ if (isZip) {
45
+ responseType = 'arraybuffer';
46
+ }
47
+ return this.http.get(url, { responseType }).pipe(concatMap(r => {
48
+ if (isZip) {
49
+ const observables$ = [this.geoDBService.update(url, url, {}, InsertSourceInsertDBEnum.System, insertEvent)];
50
+ JSZip.loadAsync(r)
51
+ .then((zipped) => {
52
+ zipped.forEach((relativePath) => {
53
+ if (relativePath.toLocaleLowerCase().endsWith('.geojson')) {
54
+ zipped.file(relativePath).async("base64").then((r) => {
55
+ const geojson = JSON.parse(atob(r));
56
+ const subUrl = geoData.zippedBaseUrl || '';
57
+ const zippedUrl = subUrl + (subUrl.endsWith('/') ? '' : '/') + relativePath;
58
+ observables$.push(this.geoDBService.update(zippedUrl, url, geojson, InsertSourceInsertDBEnum.System, insertEvent));
59
+ });
60
+ }
61
+ });
62
+ });
63
+ return zip(observables$);
64
+ }
65
+ return this.geoDBService.update(url, url, r, InsertSourceInsertDBEnum.System, insertEvent);
66
+ }));
42
67
  }
43
68
  else {
44
69
  return of(false);
@@ -64,6 +89,10 @@ export class ConfigFileToGeoDBService {
64
89
  }
65
90
  });
66
91
  }
92
+ isZip(value) {
93
+ const regex = /(zip)$/;
94
+ return typeof value === 'string' && regex.test(value.toLowerCase());
95
+ }
67
96
  }
68
97
  ConfigFileToGeoDBService.ɵfac = function ConfigFileToGeoDBService_Factory(t) { return new (t || ConfigFileToGeoDBService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.GeoDBService), i0.ɵɵinject(i3.MessageService)); };
69
98
  ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfigFileToGeoDBService, factory: ConfigFileToGeoDBService.ɵfac, providedIn: 'root' });
@@ -73,4 +102,4 @@ ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token:
73
102
  providedIn: 'root'
74
103
  }]
75
104
  }], function () { return [{ type: i1.HttpClient }, { type: i2.GeoDBService }, { type: i3.MessageService }]; }, null); })();
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnRmlsZVRvR2VvREIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL29mZmxpbmUvZ2VvREIvY29uZmlnRmlsZVRvR2VvREIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTS9CLE1BQU0sT0FBTyx3QkFBd0I7SUFHbkMsWUFDVSxJQUFnQixFQUNoQixZQUEwQixFQUMxQixjQUE4QjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUNwQyxDQUFDO0lBR0wsSUFBSSxDQUFDLEdBQVc7UUFDZCxJQUFJLGVBQWUsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBRXJCLFVBQVUsQ0FBQyxDQUFDLEtBQVUsRUFBTyxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztZQUNyRCxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxVQUFzQixFQUFFLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLFVBQVUsRUFBRSxRQUFRLEVBQUU7Z0JBQ3hCLE1BQU0s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Qix3QkFBd0IsbUJBRnZCLE1BQU07dUZBRVAsd0JBQXdCO2NBSHBDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29uY2F0TWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBHZW9EQlNlcnZpY2UgfSBmcm9tICcuL2dlb0RCLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBvZiwgemlwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERhdGFzVG9JREIsIEdlb0RCRGF0YSB9IGZyb20gJy4vZ2VvREIuaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ0ZpbGVUb0dlb0RCU2VydmljZSB7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZ2VvREJTZXJ2aWNlOiBHZW9EQlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG5cclxuICBsb2FkKHVybDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZG93bmxvYWRNZXNzYWdlO1xyXG4gICAgdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXHJcblxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KTogYW55ID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgR2VvRGF0YSBmaWxlICR7dXJsfSBjb3VsZCBub3QgYmUgcmVhZGApO1xyXG4gICAgICAgIGVycm9yLmVycm9yLmNhdWdodCA9IHRydWU7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjb25jYXRNYXAoKGRhdGFzVG9JREI6IERhdGFzVG9JREIpID0+IHtcclxuICAgICAgY29uc3QgZGF0YXMkID0gW107XHJcbiAgICAgIGxldCBmaXJzdERvd25sb2FkID0gdHJ1ZTtcclxuICAgICAgaWYgKGRhdGFzVG9JREI/Lmdlb0RhdGFzKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGRhdGFzVG9JREI/Lmdlb0RhdGFzLm1hcCgoZ2VvRGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBnZW9EYXRhLnRyaWdnZXJEYXRlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBnZW9EYXRhLnRyaWdnZXJEYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShnZW9EYXRhLnRyaWdnZXJEYXRlLnJlcGxhY2UoLy0vZywgJyAnKSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGN1cnJlbnREYXRlID49IGdlb0RhdGEudHJpZ2dlckRhdGUpIHtcclxuICAgICAgICAgICAgaWYgKGdlb0RhdGEuYWN0aW9uID09PSAndXBkYXRlJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluc2VydEV2ZW50ID0gYCR7Z2VvRGF0YS5zb3VyY2UgfHwgJ2F1dG9tYXRlZERhdGFVcGRhdGUnfSAoJHtnZW9EYXRhLnRyaWdnZXJEYXRlfSlgO1xyXG4gICAgICAgICAgICAgIGdlb0RhdGEudXJscy5tYXAoKHVybCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0YXMkLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2VvREJTZXJ2aWNlLmdldEJ5SUQodXJsKS5waXBlKGNvbmNhdE1hcCgocmVzOiBHZW9EQkRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzPy5pbnNlcnRFdmVudCAhPT0gaW5zZXJ0RXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdERvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkTWVzc2FnZSA9IHRoaXMubWVzc2FnZVNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmluZm8oJ2lnby5nZW8uaW5kZXhlZERiLmRhdGEtZG93bmxvYWQtc3RhcnQnLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgZGlzYWJsZVRpbWVPdXQ6IHRydWUsIHByb2dyZXNzQmFyOiBmYWxzZSwgY2xvc2VCdXR0b246IHRydWUsIHRhcFRvRGlzbWlzczogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RG93bmxvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoY29uY2F0TWFwKHIgPT4gdGhpcy5nZW9EQlNlcnZpY2UudXBkYXRlKHVybCwgdXJsIGFzIGFueSwgciwgJ3N5c3RlbScgYXMgYW55LCBpbnNlcnRFdmVudCkpKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChnZW9EYXRhLmFjdGlvbiA9PT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICAgICAgICBnZW9EYXRhLnVybHMubWFwKCh1cmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGRhdGFzJC5wdXNoKHRoaXMuZ2VvREJTZXJ2aWNlLmRlbGV0ZUJ5S2V5KHVybCkpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHppcCguLi5kYXRhcyQpO1xyXG4gICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKGRvd25sb2FkTWVzc2FnZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5yZW1vdmUoKGRvd25sb2FkTWVzc2FnZSBhcyBhbnkpLnRvYXN0SWQpO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLmluZGV4ZWREYi5kYXRhLWRvd25sb2FkLWNvbXBsZXRlZCcsIHVuZGVmaW5lZCwgeyB0aW1lT3V0OiA0MDAwMCB9KTtcclxuICAgICAgICB9LCAyNTAwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnRmlsZVRvR2VvREIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL29mZmxpbmUvZ2VvREIvY29uZmlnRmlsZVRvR2VvREIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUt6RCxNQUFNLE9BQU8sd0JBQXdCO0lBR25DLFlBQ1UsSUFBZ0IsRUFDaEIsWUFBMEIsRUFDMUIsY0FBOEI7UUFGOUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDcEMsQ0FBQztJQUdMLElBQUksQ0FBQyxHQUFXO1FBQ2QsSUFBSSxlQUFlLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUVyQixVQUFVLENBQUMsQ0FBQyxLQUFVLEVBQU8sRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLG9CQUFvQixDQUFDLENBQUM7WUFDckQsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzFCLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFO1lBQ3JDLE1BQU0s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QUFTLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUUsZUFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNWO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLEtBQUs7UUFDakIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3ZCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7Z0dBbEdVLHdCQUF3Qjs4RUFBeEIsd0JBQXdCLFdBQXhCLHdCQUF3QixtQkFGdkIsTUFBTTt1RkFFUCx3QkFBd0I7Y0FIcEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlb0RCU2VydmljZSB9IGZyb20gJy4vZ2VvREIuc2VydmljZSc7XHJcbmltcG9ydCB7IG9mLCB6aXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGF0YXNUb0lEQiwgR2VvREJEYXRhIH0gZnJvbSAnLi9nZW9EQi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBkZWZhdWx0IGFzIEpTWmlwIH0gZnJvbSAnanN6aXAnO1xyXG5pbXBvcnQgeyBJbnNlcnRTb3VyY2VJbnNlcnREQkVudW0gfSBmcm9tICcuL2dlb0RCLmVudW1zJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ0ZpbGVUb0dlb0RCU2VydmljZSB7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZ2VvREJTZXJ2aWNlOiBHZW9EQlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG5cclxuICBsb2FkKHVybDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZG93bmxvYWRNZXNzYWdlO1xyXG4gICAgdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXHJcblxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KTogYW55ID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgR2VvRGF0YSBmaWxlICR7dXJsfSBjb3VsZCBub3QgYmUgcmVhZGApO1xyXG4gICAgICAgIGVycm9yLmVycm9yLmNhdWdodCA9IHRydWU7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjb25jYXRNYXAoKGRhdGFzVG9JREI6IERhdGFzVG9JREIpID0+IHtcclxuICAgICAgY29uc3QgZGF0YXMkID0gW107XHJcbiAgICAgIGxldCBmaXJzdERvd25sb2FkID0gdHJ1ZTtcclxuICAgICAgaWYgKGRhdGFzVG9JREI/Lmdlb0RhdGFzKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGRhdGFzVG9JREI/Lmdlb0RhdGFzLm1hcCgoZ2VvRGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBnZW9EYXRhLnRyaWdnZXJEYXRlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBnZW9EYXRhLnRyaWdnZXJEYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShnZW9EYXRhLnRyaWdnZXJEYXRlLnJlcGxhY2UoLy0vZywgJyAnKSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGN1cnJlbnREYXRlID49IGdlb0RhdGEudHJpZ2dlckRhdGUpIHtcclxuICAgICAgICAgICAgaWYgKGdlb0RhdGEuYWN0aW9uID09PSAndXBkYXRlJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluc2VydEV2ZW50ID0gYCR7Z2VvRGF0YS5zb3VyY2UgfHwgSW5zZXJ0U291cmNlSW5zZXJ0REJFbnVtLlN5c3RlbX0gKCR7Z2VvRGF0YS50cmlnZ2VyRGF0ZX0pYDtcclxuICAgICAgICAgICAgICBnZW9EYXRhLnVybHMubWFwKCh1cmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGRhdGFzJC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdlb0RCU2VydmljZS5nZXRCeUlEKHVybCkucGlwZShjb25jYXRNYXAoKHJlczogR2VvREJEYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcz8uaW5zZXJ0RXZlbnQgIT09IGluc2VydEV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3REb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZE1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmZvKCdpZ28uZ2VvLmluZGV4ZWREYi5kYXRhLWRvd25sb2FkLXN0YXJ0JywgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGRpc2FibGVUaW1lT3V0OiB0cnVlLCBwcm9ncmVzc0JhcjogZmFsc2UsIGNsb3NlQnV0dG9uOiB0cnVlLCB0YXBUb0Rpc21pc3M6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdERvd25sb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VUeXBlOiBhbnkgPSAnanNvbic7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ppcCA9IHRoaXMuaXNaaXAodXJsKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1ppcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZSB9KS5waXBlKGNvbmNhdE1hcChyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzWmlwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMkID0gW3RoaXMuZ2VvREJTZXJ2aWNlLnVwZGF0ZSh1cmwsIHVybCwge30sIEluc2VydFNvdXJjZUluc2VydERCRW51bS5TeXN0ZW0sIGluc2VydEV2ZW50KV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgSlNaaXAubG9hZEFzeW5jKHIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoemlwcGVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcHBlZC5mb3JFYWNoKChyZWxhdGl2ZVBhdGgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmVQYXRoLnRvTG9jYWxlTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5nZW9qc29uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcHBlZC5maWxlKHJlbGF0aXZlUGF0aCkuYXN5bmMoXCJiYXNlNjRcIikudGhlbigocikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZW9qc29uID0gSlNPTi5wYXJzZShhdG9iKHIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViVXJsID0gZ2VvRGF0YS56aXBwZWRCYXNlVXJsIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB6aXBwZWRVcmwgPSBzdWJVcmwgKyAoc3ViVXJsLmVuZHNXaXRoKCcvJykgPyAnJyA6ICcvJykgKyByZWxhdGl2ZVBhdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmFibGVzJC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VvREJTZXJ2aWNlLnVwZGF0ZSh6aXBwZWRVcmwsIHVybCwgZ2VvanNvbiwgSW5zZXJ0U291cmNlSW5zZXJ0REJFbnVtLlN5c3RlbSwgaW5zZXJ0RXZlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gemlwKG9ic2VydmFibGVzJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VvREJTZXJ2aWNlLnVwZGF0ZSh1cmwsIHVybCwgciwgSW5zZXJ0U291cmNlSW5zZXJ0REJFbnVtLlN5c3RlbSwgaW5zZXJ0RXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdlb0RhdGEuYWN0aW9uID09PSAnZGVsZXRlJykge1xyXG4gICAgICAgICAgICAgIGdlb0RhdGEudXJscy5tYXAoKHVybCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0YXMkLnB1c2godGhpcy5nZW9EQlNlcnZpY2UuZGVsZXRlQnlLZXkodXJsKSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gemlwKC4uLmRhdGFzJCk7XHJcbiAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAoZG93bmxvYWRNZXNzYWdlKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnJlbW92ZSgoZG93bmxvYWRNZXNzYWdlIGFzIGFueSkudG9hc3RJZCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoJ2lnby5nZW8uaW5kZXhlZERiLmRhdGEtZG93bmxvYWQtY29tcGxldGVkJywgdW5kZWZpbmVkLCB7IHRpbWVPdXQ6IDQwMDAwIH0pO1xyXG4gICAgICAgIH0sIDI1MDApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNaaXAodmFsdWUpIHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gLyh6aXApJC87XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiByZWdleC50ZXN0KHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvREIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvb2ZmbGluZS9nZW9EQi9nZW9EQi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluc2VydFNvdXJjZUluc2VydERCRW51bSB9IGZyb20gXCIuL2dlb0RCLmVudW1zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdlb0RCRGF0YSB7XHJcbiAgICB1cmw6IHN0cmluZztcclxuICAgIHJlZ2lvbklEOiBhbnk7XHJcbiAgICBvYmplY3Q6IGFueTtcclxuICAgIGNvbXByZXNzZWQ6IGJvb2xlYW47XHJcbiAgICBpbnNlcnRTb3VyY2U6IEluc2VydFNvdXJjZUluc2VydERCRW51bTtcclxuICAgIGluc2VydEV2ZW50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2VvRGF0YVRvSURCIHtcclxuICB0cmlnZ2VyRGF0ZTogRGF0ZSB8IHN0cmluZztcclxuICBhY3Rpb246IFwiZGVsZXRlXCIgfCAndXBkYXRlJztcclxuICB1cmxzOiBzdHJpbmdbXTtcclxuICBzb3VyY2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNUb0lEQiB7XHJcbiAgZ2VvRGF0YXM6IEdlb0RhdGFUb0lEQltdXHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvREIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvb2ZmbGluZS9nZW9EQi9nZW9EQi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluc2VydFNvdXJjZUluc2VydERCRW51bSB9IGZyb20gXCIuL2dlb0RCLmVudW1zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdlb0RCRGF0YSB7XHJcbiAgICB1cmw6IHN0cmluZztcclxuICAgIHJlZ2lvbklEOiBhbnk7XHJcbiAgICBvYmplY3Q6IGFueTtcclxuICAgIGNvbXByZXNzZWQ6IGJvb2xlYW47XHJcbiAgICBpbnNlcnRTb3VyY2U6IEluc2VydFNvdXJjZUluc2VydERCRW51bTtcclxuICAgIGluc2VydEV2ZW50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2VvRGF0YVRvSURCIHtcclxuICB0cmlnZ2VyRGF0ZTogRGF0ZSB8IHN0cmluZztcclxuICBhY3Rpb246IFwiZGVsZXRlXCIgfCAndXBkYXRlJztcclxuICB1cmxzOiBzdHJpbmdbXTtcclxuICBzb3VyY2U/OiBzdHJpbmc7XHJcbiAgemlwcGVkQmFzZVVybD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYXRhc1RvSURCIHtcclxuICBnZW9EYXRhczogR2VvRGF0YVRvSURCW11cclxufVxyXG4iXX0=
@@ -11,7 +11,7 @@ export class GeoDBService {
11
11
  this.compression = compression;
12
12
  this.dbName = 'geoData';
13
13
  this.collisionsMap = new Map();
14
- this._newTiles = 0;
14
+ this._newData = 0;
15
15
  }
16
16
  /**
17
17
  * Only blob can be will be compressed
@@ -46,7 +46,7 @@ export class GeoDBService {
46
46
  return this.ngxIndexedDBService.getByID(this.dbName, url);
47
47
  }), concatMap((dbObject) => {
48
48
  if (!dbObject) {
49
- this._newTiles++;
49
+ this._newData++;
50
50
  return this.ngxIndexedDBService.add(this.dbName, geoDBData);
51
51
  }
52
52
  else {
@@ -98,11 +98,11 @@ export class GeoDBService {
98
98
  deleteByKey(url) {
99
99
  return this.ngxIndexedDBService.deleteByKey(this.dbName, url);
100
100
  }
101
- getRegionTileCountByID(id) {
101
+ getRegionCountByID(id) {
102
102
  const subject = new Subject();
103
103
  const dbRequest = this.getRegionByID(id)
104
- .subscribe((tiles) => {
105
- subject.next(tiles.length);
104
+ .subscribe((datas) => {
105
+ subject.next(datas.length);
106
106
  subject.complete();
107
107
  });
108
108
  return subject;
@@ -121,9 +121,9 @@ export class GeoDBService {
121
121
  }
122
122
  const IDBKey = IDBKeyRange.only(id);
123
123
  const dbRequest = this.ngxIndexedDBService.getAllByIndex(this.dbName, 'regionID', IDBKey);
124
- dbRequest.subscribe((tiles) => {
125
- tiles.forEach((tile) => {
126
- this.ngxIndexedDBService.deleteByKey(this.dbName, tile.url);
124
+ dbRequest.subscribe((datas) => {
125
+ datas.forEach((data) => {
126
+ this.ngxIndexedDBService.deleteByKey(this.dbName, data.url);
127
127
  });
128
128
  });
129
129
  return dbRequest;
@@ -134,7 +134,7 @@ export class GeoDBService {
134
134
  }
135
135
  resetCounters() {
136
136
  this.resetCollisionsMap();
137
- this._newTiles = 0;
137
+ this._newData = 0;
138
138
  }
139
139
  resetCollisionsMap() {
140
140
  this.collisionsMap = new Map();
@@ -152,8 +152,8 @@ export class GeoDBService {
152
152
  }
153
153
  }
154
154
  }
155
- get newTiles() {
156
- return this._newTiles;
155
+ get newData() {
156
+ return this._newData;
157
157
  }
158
158
  }
159
159
  GeoDBService.ɵfac = function GeoDBService_Factory(t) { return new (t || GeoDBService)(i0.ɵɵinject(i1.NgxIndexedDBService), i0.ɵɵinject(i2.CompressionService)); };
@@ -164,4 +164,4 @@ GeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: GeoDBServic
164
164
  providedIn: 'root'
165
165
  }]
166
166
  }], function () { return [{ type: i1.NgxIndexedDBService }, { type: i2.CompressionService }]; }, null); })();
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvREIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL29mZmxpbmUvZ2VvREIvZ2VvREIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBUTdELE1BQU0sT0FBTyxZQUFZO0lBS3ZCLFlBQ1UsbUJBQXdDLEVBQ3hDLFdBQStCO1FBRC9CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBTmhDLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFDN0Isa0JBQWEsR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqRCxjQUFTLEdBQVcsQ0FBQyxDQUFDO0lBS3pCLENBQUM7SUFFTDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxHQUFXLEVBQUUsUUFBYSxFQUFFLE1BQVcsRUFBRSxZQUFzQyxFQUFFLFdBQW1CO1FBQ3pHLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPO1NBQ1I7UUFDRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFckIsTUFBTSxPQUFPLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbEQsSUFBSSxPQUFPLEdBQW9CLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU0sWUFBWSxJQUFJLEVBQUU7WUFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFD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QUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2RCxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztxQkFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDYixTQUFTLENBQUMsQ0FBQyxRQUFtQixFQUFFLEVBQUU7b0JBQ2pDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztvQkFDL0IsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7d0VBL0tVLFlBQVk7a0VBQVosWUFBWSxXQUFaLFlBQVksbUJBRlgsTUFBTTt1RkFFUCxZQUFZO2NBSHhCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgREJNb2RlLCBOZ3hJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnbmd4LWluZGV4ZWQtZGInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIGZpcnN0LCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbXByZXNzaW9uU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBHZW9EQkRhdGEgfSBmcm9tICcuL2dlb0RCLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEluc2VydFNvdXJjZUluc2VydERCRW51bSB9IGZyb20gJy4vZ2VvREIuZW51bXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VvREJTZXJ2aWNlIHtcclxuICByZWFkb25seSBkYk5hbWU6IHN0cmluZyA9ICdnZW9EYXRhJztcclxuICBwdWJsaWMgY29sbGlzaW9uc01hcDogTWFwPG51bWJlciwgc3RyaW5nW10+ID0gbmV3IE1hcCgpO1xyXG4gIHB1YmxpYyBfbmV3VGlsZXM6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ3hJbmRleGVkREJTZXJ2aWNlOiBOZ3hJbmRleGVkREJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21wcmVzc2lvbjogQ29tcHJlc3Npb25TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25seSBibG9iIGNhbiBiZSB3aWxsIGJlIGNvbXByZXNzZWRcclxuICAgKiBAcGFyYW0gdXJsXHJcbiAgICogQHBhcmFtIHJlZ2lvbklEXHJcbiAgICogQHBhcmFtIG9iamVjdCBvYmplY3QgdG8gaGFuZGxlXHJcbiAgICogQHBhcmFtIGluc2VydFNvdXJjZSB0eXBlIG9mIGV2ZW50IHVzZXIgb3Igc3lzdGVtXHJcbiAgICogQHBhcmFtIGluc2VydEV2ZW50IE5hbWUgb2YgdGhlIGV2ZW50IHdoZXJlIHRoZSBpbnNlcnQgaGFzIGJlZW4gdHJpZ2dlcmVkXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICB1cGRhdGUodXJsOiBzdHJpbmcsIHJlZ2lvbklEOiBhbnksIG9iamVjdDogYW55LCBpbnNlcnRTb3VyY2U6IEluc2VydFNvdXJjZUluc2VydERCRW51bSwgaW5zZXJ0RXZlbnQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAoIW9iamVjdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgY29tcHJlc3MgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBzdWJqZWN0OiBTdWJqZWN0PEdlb0RCRGF0YT4gPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgbGV0IG9iamVjdCQ6IE9ic2VydmFibGU8YW55PiA9IG9mKG9iamVjdCk7XHJcbiAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQmxvYikge1xyXG4gICAgICBvYmplY3QkID0gdGhpcy5jb21wcmVzc2lvbi5jb21wcmVzc0Jsb2Iob2JqZWN0KTtcclxuICAgICAgY29tcHJlc3MgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgbGV0IGdlb0RCRGF0YTogR2VvREJEYXRhO1xyXG4gICAgb2JqZWN0JC5waXBlKFxyXG4gICAgICBmaXJzdCgpLFxyXG4gICAgICBjb25jYXRNYXAob2JqZWN0ID0+IHtcclxuICAgICAgICBnZW9EQkRhdGEgPSB7XHJcbiAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICByZWdpb25JRCxcclxuICAgICAgICAgIG9iamVjdDogb2JqZWN0LFxyXG4gICAgICAgICAgY29tcHJlc3NlZDogY29tcHJlc3MsXHJcbiAgICAgICAgICBpbnNlcnRTb3VyY2UsXHJcbiAgICAgICAgICBpbnNlcnRFdmVudFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmd4SW5kZXhlZERCU2VydmljZS5nZXRCeUlEKHRoaXMuZGJOYW1lLCB1cmwpO1xyXG4gICAgICB9KSxcclxuICAgICAgY29uY2F0TWFwKChkYk9iamVjdDogR2VvREJEYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKCFkYk9iamVjdCkge1xyXG4gICAgICAgICAgdGhpcy5fbmV3VGlsZXMrKztcclxuICAgICAgICAgIHJldHVybiB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2UuYWRkKHRoaXMuZGJOYW1lLCBnZW9EQkRhdGEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50UmVnaW9uSUQgPSBkYk9iamVjdC5yZWdpb25JRDtcclxuICAgICAgICAgIGlmIChjdXJyZW50UmVnaW9uSUQgIT09IHJlZ2lvbklEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbGxpc2lvbnMgPSB0aGlzLmNvbGxpc2lvbnNNYXAuZ2V0KGN1cnJlbnRSZWdpb25JRCk7XHJcbiAgICAgICAgICAgIGlmIChjb2xsaXNpb25zICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBjb2xsaXNpb25zLnB1c2goZGJPYmplY3QudXJsKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbGxpc2lvbnNNYXAuc2V0KGN1cnJlbnRSZWdpb25JRCwgY29sbGlzaW9ucyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb2xsaXNpb25zTWFwLnNldChjdXJyZW50UmVnaW9uSUQsIFtkYk9iamVjdC51cmxdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tVXBkYXRlKGdlb0RCRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHN1YmplY3QubmV4dChyZXNwb25zZSk7XHJcbiAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHN1YmplY3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGN1c3RvbVVwZGF0ZShnZW9EQkRhdGE6IEdlb0RCRGF0YSk6IE9ic2VydmFibGU8R2VvREJEYXRhPiB7XHJcbiAgICBjb25zdCBzdWJqZWN0OiBTdWJqZWN0PEdlb0RCRGF0YT4gPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgY29uc3QgZGVsZXRlUmVxdWVzdCA9IHRoaXMubmd4SW5kZXhlZERCU2VydmljZS5kZWxldGVCeUtleSh0aGlzLmRiTmFtZSwgZ2VvREJEYXRhLnVybCk7XHJcbiAgICBkZWxldGVSZXF1ZXN0LnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcChpc0RlbGV0ZWQgPT4gaXNEZWxldGVkID8gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmFkZCh0aGlzLmRiTmFtZSwgZ2VvREJEYXRhKSA6IG9mKHVuZGVmaW5lZCkpXHJcbiAgICApXHJcbiAgICAuc3Vic2NyaWJlKG9iamVjdCA9PiB7XHJcbiAgICAgIGlmIChvYmplY3QpIHtcclxuICAgICAgICBzdWJqZWN0Lm5leHQob2JqZWN0KTtcclxuICAgICAgfVxyXG4gICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdWJqZWN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2UuZ2V0QnlJRCh0aGlzLmRiTmFtZSwgdXJsKS5waXBlKFxyXG4gICAgICBtYXAoKGRhdGE6IEdlb0RCRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBjb25zdCBvYmplY3QgPSBkYXRhLm9iamVjdDtcclxuICAgICAgICAgIGlmICghZGF0YS5jb21wcmVzc2VkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmplY3Q7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21wcmVzc2lvbi5kZWNvbXByZXNzQmxvYihvYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRCeUlEKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2UuZ2V0QnlJRCh0aGlzLmRiTmFtZSwgdXJsKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUJ5S2V5KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2UuZGVsZXRlQnlLZXkodGhpcy5kYk5hbWUsIHVybCk7XHJcbiAgfVxyXG5cclxuICBnZXRSZWdpb25UaWxlQ291bnRCeUlEKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgY29uc3Qgc3ViamVjdDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICAgIGNvbnN0IGRiUmVxdWVzdCA9IHRoaXMuZ2V0UmVnaW9uQnlJRChpZClcclxuICAgICAgLnN1YnNjcmliZSgodGlsZXMpID0+IHtcclxuICAgICAgICBzdWJqZWN0Lm5leHQodGlsZXMubGVuZ3RoKTtcclxuICAgICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIHN1YmplY3Q7XHJcbiAgfVxyXG5cclxuICBnZXRSZWdpb25CeUlEKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICBpZiAoIWlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBJREJLZXk6IElEQktleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seShpZCk7XHJcbiAgICBjb25zdCBkYlJlcXVlc3QgPSB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2UuZ2V0QWxsQnlJbmRleCh0aGlzLmRiTmFtZSwgJ3JlZ2lvbklEJywgSURCS2V5KTtcclxuICAgIHJldHVybiBkYlJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBkZWxldGVCeVJlZ2lvbklEKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgSURCS2V5OiBJREJLZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoaWQpO1xyXG4gICAgY29uc3QgZGJSZXF1ZXN0ID0gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmdldEFsbEJ5SW5kZXgodGhpcy5kYk5hbWUsICdyZWdpb25JRCcsIElEQktleSk7XHJcbiAgICBkYlJlcXVlc3Quc3Vic2NyaWJlKCh0aWxlczogR2VvREJEYXRhW10pID0+IHtcclxuICAgICAgdGlsZXMuZm9yRWFjaCgodGlsZSkgPT4ge1xyXG4gICAgICAgIHRoaXMubmd4SW5kZXhlZERCU2VydmljZS5kZWxldGVCeUtleSh0aGlzLmRiTmFtZSwgdGlsZS51cmwpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRiUmVxdWVzdDtcclxuICB9XHJcblxyXG4gIG9wZW5DdXJzb3IoXHJcbiAgICBrZXlSYW5nZTogSURCS2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApLFxyXG4gICAgbW9kZTogREJNb2RlID0gREJNb2RlLnJlYWRvbmx5XHJcbiAgKSB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLm9wZW5DdXJzb3JCeUluZGV4KHRoaXMuZGJOYW1lLCAncmVnaW9uSUQnLCBrZXlSYW5nZSwgbW9kZSk7XHJcbiAgICByZXR1cm4gcmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHJlc2V0Q291bnRlcnMoKSB7XHJcbiAgICB0aGlzLnJlc2V0Q29sbGlzaW9uc01hcCgpO1xyXG4gICAgdGhpcy5fbmV3VGlsZXMgPSAwO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2xsaXNpb25zTWFwKCkge1xyXG4gICAgdGhpcy5jb2xsaXNpb25zTWFwID0gbmV3IE1hcCgpO1xyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0Q29sbGlzaW9ucygpIHtcclxuICAgIGZvciAoY29uc3QgW3JlZ2lvbklELCBjb2xsaXNpb25zXSBvZiB0aGlzLmNvbGxpc2lvbnNNYXApIHtcclxuICAgICAgZm9yIChjb25zdCB1cmwgb2YgY29sbGlzaW9ucykge1xyXG4gICAgICAgIHRoaXMubmd4SW5kZXhlZERCU2VydmljZS5nZXRCeUtleSh0aGlzLmRiTmFtZSwgdXJsKVxyXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRiT2JqZWN0OiBHZW9EQkRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZE9iamVjdCA9IGRiT2JqZWN0O1xyXG4gICAgICAgICAgICB1cGRhdGVkT2JqZWN0LnJlZ2lvbklEID0gcmVnaW9uSUQ7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVXBkYXRlKGRiT2JqZWN0KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbmV3VGlsZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9uZXdUaWxlcztcclxuICB9XHJcbn1cclxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvREIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL29mZmxpbmUvZ2VvREIvZ2VvREIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBUTdELE1BQU0sT0FBTyxZQUFZO0lBS3ZCLFlBQ1UsbUJBQXdDLEVBQ3hDLFdBQStCO1FBRC9CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBTmhDLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFDN0Isa0JBQWEsR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqRCxhQUFRLEdBQVcsQ0FBQyxDQUFDO0lBS3hCLENBQUM7SUFFTDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxHQUFXLEVBQUUsUUFBYSxFQUFFLE1BQVcsRUFBRSxZQUFzQyxFQUFFLFdBQW1CO1FBQ3pHLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPO1NBQ1I7UUFDRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFckIsTUFBTSxPQUFPLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbEQsSUFBSSxPQUFPLEdBQW9CLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU0sWUFBWSxJQUFJLEVBQUU7WUFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDakI7UUFDRCxJQUFJLFNBQW9CLENBQUM7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FDVixLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakIsU0FBUyxHQUFHO2dCQUNWLEdBQUc7Z0JBQ0gsUUFBUTtnQkFDUixNQUFNLEVBQUUsTUFBTTtnQkFDZCxVQUFVLEVBQUUsUUFBUTtnQkFDcEIsWUFBWTtnQkFDWixXQUFXO2FBQ1osQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLFFBQW1CLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0wsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDMUMsSUFBSSxlQUFlLEtBQUssUUFBUSxFQUFFO29CQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDM0QsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO3dCQUM1QixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO3FCQUNyRDt5QkFBTTt3QkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDekQ7aUJBQ0Y7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxZQUFZLENBQUMsU0FBb0I7UUFDdkMsTUFBTSxPQUFPLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RixhQUFhLENBQUMsSUFBSSxDQUNoQixTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ3pHO2FBQ0EsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xCLElBQUksTUFBTSxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEI7WUFDRCxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzVELEdBQUcsQ0FBQyxDQUFDLElBQWUsRUFBRSxFQUFFO1lBQ3RCLElBQUksSUFBSSxFQUFFO2dCQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNwQixPQUFPLE1BQU0sQ0FBQztpQkFDZjtnQkFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hEO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVU7UUFDM0IsTUFBTSxPQUFPLEdBQW9CLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7YUFDckMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFVO1FBQ3RCLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUCxPQUFPO1NBQ1I7UUFFRCxNQUFNLE1BQU0sR0FBZ0IsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ3pCLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUCxPQUFPO1NBQ1I7UUFFRCxNQUFNLE1BQU0sR0FBZ0IsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFGLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7WUFDekMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsVUFBVSxDQUNSLFdBQXdCLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQ2pELE9BQWUsTUFBTSxDQUFDLFFBQVE7UUFFOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2RCxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztxQkFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDYixTQUFTLENBQUMsQ0FBQyxRQUFtQixFQUFFLEVBQUU7b0JBQ2pDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztvQkFDL0IsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzs7d0VBL0tVLFlBQVk7a0VBQVosWUFBWSxXQUFaLFlBQVksbUJBRlgsTUFBTTt1RkFFUCxZQUFZO2NBSHhCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgREJNb2RlLCBOZ3hJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnbmd4LWluZGV4ZWQtZGInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIGZpcnN0LCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbXByZXNzaW9uU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBHZW9EQkRhdGEgfSBmcm9tICcuL2dlb0RCLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEluc2VydFNvdXJjZUluc2VydERCRW51bSB9IGZyb20gJy4vZ2VvREIuZW51bXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VvREJTZXJ2aWNlIHtcclxuICByZWFkb25seSBkYk5hbWU6IHN0cmluZyA9ICdnZW9EYXRhJztcclxuICBwdWJsaWMgY29sbGlzaW9uc01hcDogTWFwPG51bWJlciwgc3RyaW5nW10+ID0gbmV3IE1hcCgpO1xyXG4gIHB1YmxpYyBfbmV3RGF0YTogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5neEluZGV4ZWREQlNlcnZpY2U6IE5neEluZGV4ZWREQlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbXByZXNzaW9uOiBDb21wcmVzc2lvblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBPbmx5IGJsb2IgY2FuIGJlIHdpbGwgYmUgY29tcHJlc3NlZFxyXG4gICAqIEBwYXJhbSB1cmxcclxuICAgKiBAcGFyYW0gcmVnaW9uSURcclxuICAgKiBAcGFyYW0gb2JqZWN0IG9iamVjdCB0byBoYW5kbGVcclxuICAgKiBAcGFyYW0gaW5zZXJ0U291cmNlIHR5cGUgb2YgZXZlbnQgdXNlciBvciBzeXN0ZW1cclxuICAgKiBAcGFyYW0gaW5zZXJ0RXZlbnQgTmFtZSBvZiB0aGUgZXZlbnQgd2hlcmUgdGhlIGluc2VydCBoYXMgYmVlbiB0cmlnZ2VyZWRcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHVwZGF0ZSh1cmw6IHN0cmluZywgcmVnaW9uSUQ6IGFueSwgb2JqZWN0OiBhbnksIGluc2VydFNvdXJjZTogSW5zZXJ0U291cmNlSW5zZXJ0REJFbnVtLCBpbnNlcnRFdmVudDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmICghb2JqZWN0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBjb21wcmVzcyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHN1YmplY3Q6IFN1YmplY3Q8R2VvREJEYXRhPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBsZXQgb2JqZWN0JDogT2JzZXJ2YWJsZTxhbnk+ID0gb2Yob2JqZWN0KTtcclxuICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBCbG9iKSB7XHJcbiAgICAgIG9iamVjdCQgPSB0aGlzLmNvbXByZXNzaW9uLmNvbXByZXNzQmxvYihvYmplY3QpO1xyXG4gICAgICBjb21wcmVzcyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgZ2VvREJEYXRhOiBHZW9EQkRhdGE7XHJcbiAgICBvYmplY3QkLnBpcGUoXHJcbiAgICAgIGZpcnN0KCksXHJcbiAgICAgIGNvbmNhdE1hcChvYmplY3QgPT4ge1xyXG4gICAgICAgIGdlb0RCRGF0YSA9IHtcclxuICAgICAgICAgIHVybCxcclxuICAgICAgICAgIHJlZ2lvbklELFxyXG4gICAgICAgICAgb2JqZWN0OiBvYmplY3QsXHJcbiAgICAgICAgICBjb21wcmVzc2VkOiBjb21wcmVzcyxcclxuICAgICAgICAgIGluc2VydFNvdXJjZSxcclxuICAgICAgICAgIGluc2VydEV2ZW50XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmdldEJ5SUQodGhpcy5kYk5hbWUsIHVybCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjb25jYXRNYXAoKGRiT2JqZWN0OiBHZW9EQkRhdGEpID0+IHtcclxuICAgICAgICBpZiAoIWRiT2JqZWN0KSB7XHJcbiAgICAgICAgICB0aGlzLl9uZXdEYXRhKys7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmFkZCh0aGlzLmRiTmFtZSwgZ2VvREJEYXRhKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgY3VycmVudFJlZ2lvbklEID0gZGJPYmplY3QucmVnaW9uSUQ7XHJcbiAgICAgICAgICBpZiAoY3VycmVudFJlZ2lvbklEICE9PSByZWdpb25JRCkge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsaXNpb25zID0gdGhpcy5jb2xsaXNpb25zTWFwLmdldChjdXJyZW50UmVnaW9uSUQpO1xyXG4gICAgICAgICAgICBpZiAoY29sbGlzaW9ucyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgY29sbGlzaW9ucy5wdXNoKGRiT2JqZWN0LnVybCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb2xsaXNpb25zTWFwLnNldChjdXJyZW50UmVnaW9uSUQsIGNvbGxpc2lvbnMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29sbGlzaW9uc01hcC5zZXQoY3VycmVudFJlZ2lvbklELCBbZGJPYmplY3QudXJsXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVVwZGF0ZShnZW9EQkRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICBzdWJqZWN0Lm5leHQocmVzcG9uc2UpO1xyXG4gICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdWJqZWN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjdXN0b21VcGRhdGUoZ2VvREJEYXRhOiBHZW9EQkRhdGEpOiBPYnNlcnZhYmxlPEdlb0RCRGF0YT4ge1xyXG4gICAgY29uc3Qgc3ViamVjdDogU3ViamVjdDxHZW9EQkRhdGE+ID0gbmV3IFN1YmplY3QoKTtcclxuICAgIGNvbnN0IGRlbGV0ZVJlcXVlc3QgPSB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2UuZGVsZXRlQnlLZXkodGhpcy5kYk5hbWUsIGdlb0RCRGF0YS51cmwpO1xyXG4gICAgZGVsZXRlUmVxdWVzdC5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoaXNEZWxldGVkID0+IGlzRGVsZXRlZCA/IHRoaXMubmd4SW5kZXhlZERCU2VydmljZS5hZGQodGhpcy5kYk5hbWUsIGdlb0RCRGF0YSkgOiBvZih1bmRlZmluZWQpKVxyXG4gICAgKVxyXG4gICAgLnN1YnNjcmliZShvYmplY3QgPT4ge1xyXG4gICAgICBpZiAob2JqZWN0KSB7XHJcbiAgICAgICAgc3ViamVjdC5uZXh0KG9iamVjdCk7XHJcbiAgICAgIH1cclxuICAgICAgc3ViamVjdC5jb21wbGV0ZSgpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3ViamVjdDtcclxuICB9XHJcblxyXG4gIGdldCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmdldEJ5SUQodGhpcy5kYk5hbWUsIHVybCkucGlwZShcclxuICAgICAgbWFwKChkYXRhOiBHZW9EQkRhdGEpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgY29uc3Qgb2JqZWN0ID0gZGF0YS5vYmplY3Q7XHJcbiAgICAgICAgICBpZiAoIWRhdGEuY29tcHJlc3NlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29tcHJlc3Npb24uZGVjb21wcmVzc0Jsb2Iob2JqZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnlJRCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmdldEJ5SUQodGhpcy5kYk5hbWUsIHVybCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVCeUtleSh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmRlbGV0ZUJ5S2V5KHRoaXMuZGJOYW1lLCB1cmwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVnaW9uQ291bnRCeUlEKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgY29uc3Qgc3ViamVjdDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICAgIGNvbnN0IGRiUmVxdWVzdCA9IHRoaXMuZ2V0UmVnaW9uQnlJRChpZClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YXMpID0+IHtcclxuICAgICAgICBzdWJqZWN0Lm5leHQoZGF0YXMubGVuZ3RoKTtcclxuICAgICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIHN1YmplY3Q7XHJcbiAgfVxyXG5cclxuICBnZXRSZWdpb25CeUlEKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICBpZiAoIWlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBJREJLZXk6IElEQktleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seShpZCk7XHJcbiAgICBjb25zdCBkYlJlcXVlc3QgPSB0aGlzLm5neEluZGV4ZWREQlNlcnZpY2UuZ2V0QWxsQnlJbmRleCh0aGlzLmRiTmFtZSwgJ3JlZ2lvbklEJywgSURCS2V5KTtcclxuICAgIHJldHVybiBkYlJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBkZWxldGVCeVJlZ2lvbklEKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgSURCS2V5OiBJREJLZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoaWQpO1xyXG4gICAgY29uc3QgZGJSZXF1ZXN0ID0gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmdldEFsbEJ5SW5kZXgodGhpcy5kYk5hbWUsICdyZWdpb25JRCcsIElEQktleSk7XHJcbiAgICBkYlJlcXVlc3Quc3Vic2NyaWJlKChkYXRhczogR2VvREJEYXRhW10pID0+IHtcclxuICAgICAgZGF0YXMuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMubmd4SW5kZXhlZERCU2VydmljZS5kZWxldGVCeUtleSh0aGlzLmRiTmFtZSwgZGF0YS51cmwpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRiUmVxdWVzdDtcclxuICB9XHJcblxyXG4gIG9wZW5DdXJzb3IoXHJcbiAgICBrZXlSYW5nZTogSURCS2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApLFxyXG4gICAgbW9kZTogREJNb2RlID0gREJNb2RlLnJlYWRvbmx5XHJcbiAgKSB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLm9wZW5DdXJzb3JCeUluZGV4KHRoaXMuZGJOYW1lLCAncmVnaW9uSUQnLCBrZXlSYW5nZSwgbW9kZSk7XHJcbiAgICByZXR1cm4gcmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHJlc2V0Q291bnRlcnMoKSB7XHJcbiAgICB0aGlzLnJlc2V0Q29sbGlzaW9uc01hcCgpO1xyXG4gICAgdGhpcy5fbmV3RGF0YSA9IDA7XHJcbiAgfVxyXG5cclxuICByZXNldENvbGxpc2lvbnNNYXAoKSB7XHJcbiAgICB0aGlzLmNvbGxpc2lvbnNNYXAgPSBuZXcgTWFwKCk7XHJcbiAgfVxyXG5cclxuICByZXZlcnRDb2xsaXNpb25zKCkge1xyXG4gICAgZm9yIChjb25zdCBbcmVnaW9uSUQsIGNvbGxpc2lvbnNdIG9mIHRoaXMuY29sbGlzaW9uc01hcCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHVybCBvZiBjb2xsaXNpb25zKSB7XHJcbiAgICAgICAgdGhpcy5uZ3hJbmRleGVkREJTZXJ2aWNlLmdldEJ5S2V5KHRoaXMuZGJOYW1lLCB1cmwpXHJcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGJPYmplY3Q6IEdlb0RCRGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkT2JqZWN0ID0gZGJPYmplY3Q7XHJcbiAgICAgICAgICAgIHVwZGF0ZWRPYmplY3QucmVnaW9uSUQgPSByZWdpb25JRDtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21VcGRhdGUoZGJPYmplY3QpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBuZXdEYXRhKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmV3RGF0YTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,58 @@
1
+ /*
2
+ * The MIT License (MIT)
3
+ *
4
+ * Copyright (c) 2016-2017 Dan "Ducky" Little
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+ export default function jsGeoPdfPlugin(jsPDFAPI) {
25
+ const setGeoArea = function (pdfExt, geoExt) {
26
+ const bbox = pdfExt.join(' ');
27
+ // the ordering may seem odd here but PDF
28
+ // flips the Y axis upside down and this accounts for that
29
+ // change.
30
+ const minx = geoExt[0];
31
+ const maxx = geoExt[2];
32
+ const maxy = geoExt[1];
33
+ const miny = geoExt[3];
34
+ const bounds = [miny, minx, maxy, minx, maxy, maxx, miny, maxx].join(' ');
35
+ const bbox_obj = this.internal.newAdditionalObject();
36
+ const bounds_obj = this.internal.newAdditionalObject();
37
+ const proj_obj = this.internal.newAdditionalObject();
38
+ proj_obj.content = '<< /EPSG 3857 /Type /PROJCS /WKT (PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere"' +
39
+ ',+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0]' +
40
+ ',UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0]' +
41
+ ',PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0]' +
42
+ ',PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]) >>';
43
+ bounds_obj.content = '<< /Bounds [ 0 1 0 0 1 0 1 1 ] /GCS ' +
44
+ proj_obj.objId + ' 0 R /GPTS [ ' + bounds + ' ] /LPTS [ 0 1 0 0 1 0 1 1 ] /Subtype /GEO /Type /Measure >>';
45
+ bbox_obj.content = '<< /BBox [ ' + bbox + ' ] /Measure ' + bounds_obj.objId + ' 0 R /Name (Layer) /Type /Viewport >>';
46
+ const title_obj = this.internal.newAdditionalObject();
47
+ const date = new Date().toLocaleDateString('en-CA');
48
+ title_obj.content = '<< /Name IGO2 /Type OCG /Date ' + date + ' >>';
49
+ return bbox_obj.objId;
50
+ };
51
+ jsPDFAPI.setGeoArea = function (pdfExt, geoExt) {
52
+ this.internal.events.subscribe('putPage', function () {
53
+ const bbox_id = setGeoArea.call(this, pdfExt, geoExt);
54
+ this.internal.write('/VP [ ' + bbox_id + ' 0 R ]');
55
+ });
56
+ };
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvcGRmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvc2hhcmVkL2dlb3BkZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE1BQU0sQ0FBQyxPQUFPLFVBQVUsY0FBYyxDQUFDLFFBQVE7SUFFM0MsTUFBTSxVQUFVLEdBQUcsVUFBUyxNQUFNLEVBQUUsTUFBTTtRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLHlDQUF5QztRQUN6QywyREFBMkQ7UUFDM0QsV0FBVztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFckQsUUFBUSxDQUFDLE9BQU8sR0FBRyxtRkFBbUY7WUFDdEcsa0hBQWtIO1lBQ2xILDhHQUE4RztZQUM5Ryx5R0FBeUc7WUFDekcsZ0VBQWdFLENBQUM7UUFFakUsVUFBVSxDQUFDLE9BQU8sR0FBRyxzQ0FBc0M7WUFDM0QsUUFBUSxDQUFDLEtBQUssR0FBRyxlQUFlLEdBQUcsTUFBTSxHQUFHLDhEQUE4RCxDQUFDO1FBRTNHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsYUFBYSxHQUFHLElBQUksR0FBRyxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyx1Q0FBdUMsQ0FBQztRQUV0SCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxTQUFTLENBQUMsT0FBTyxHQUFHLGdDQUFnQyxHQUFFLElBQUksR0FBRSxLQUFLLENBQUM7UUFFbEUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBUyxNQUFNLEVBQUUsTUFBTTtRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAxNyBEYW4gXCJEdWNreVwiIExpdHRsZVxyXG4gKlxyXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XHJcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcclxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xyXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXHJcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xyXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxyXG4gKlxyXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcclxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cclxuICpcclxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxyXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcclxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXHJcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcclxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcclxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcclxuICogU09GVFdBUkUuXHJcbiAqL1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ganNHZW9QZGZQbHVnaW4oanNQREZBUEkpIHtcclxuXHJcbiAgICBjb25zdCBzZXRHZW9BcmVhID0gZnVuY3Rpb24ocGRmRXh0LCBnZW9FeHQpIHtcclxuICAgICAgICBjb25zdCBiYm94ID0gcGRmRXh0LmpvaW4oJyAnKTtcclxuICAgICAgICAvLyB0aGUgb3JkZXJpbmcgbWF5IHNlZW0gb2RkIGhlcmUgYnV0IFBERlxyXG4gICAgICAgIC8vICBmbGlwcyB0aGUgWSBheGlzIHVwc2lkZSBkb3duIGFuZCB0aGlzIGFjY291bnRzIGZvciB0aGF0XHJcbiAgICAgICAgLy8gIGNoYW5nZS5cclxuICAgICAgICBjb25zdCBtaW54ID0gZ2VvRXh0WzBdO1xyXG4gICAgICAgIGNvbnN0IG1heHggPSBnZW9FeHRbMl07XHJcbiAgICAgICAgY29uc3QgbWF4eSA9IGdlb0V4dFsxXTtcclxuICAgICAgICBjb25zdCBtaW55ID0gZ2VvRXh0WzNdO1xyXG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IFttaW55LCBtaW54LCBtYXh5LCBtaW54LCBtYXh5LCBtYXh4LCBtaW55LCBtYXh4XS5qb2luKCcgJyk7XHJcbiAgICAgICAgY29uc3QgYmJveF9vYmogPSB0aGlzLmludGVybmFsLm5ld0FkZGl0aW9uYWxPYmplY3QoKTtcclxuICAgICAgICBjb25zdCBib3VuZHNfb2JqID0gdGhpcy5pbnRlcm5hbC5uZXdBZGRpdGlvbmFsT2JqZWN0KCk7XHJcbiAgICAgICAgY29uc3QgcHJval9vYmogPSB0aGlzLmludGVybmFsLm5ld0FkZGl0aW9uYWxPYmplY3QoKTtcclxuXHJcbiAgICAgICAgcHJval9vYmouY29udGVudCA9ICc8PCAvRVBTRyAzODU3IC9UeXBlIC9QUk9KQ1MgL1dLVCAoUFJPSkNTW1wiV0dTXzE5ODRfV2ViX01lcmNhdG9yX0F1eGlsaWFyeV9TcGhlcmVcIicrXHJcbiAgICAgICAgJywrR0VPR0NTW1wiR0NTX1dHU18xOTg0XCIsREFUVU1bXCJEX1dHU18xOTg0XCIsU1BIRVJPSURbXCJXR1NfMTk4NFwiLDYzNzgxMzcuMCwyOTguMjU3MjIzNTYzXV0sUFJJTUVNW1wiR3JlZW53aWNoXCIsMC4wXScrXHJcbiAgICAgICAgJyxVTklUW1wiRGVncmVlXCIsMC4wMTc0NTMyOTI1MTk5NDMyOTVdXSxQUk9KRUNUSU9OW1wiTWVyY2F0b3JfQXV4aWxpYXJ5X1NwaGVyZVwiXSxQQVJBTUVURVJbXCJGYWxzZV9FYXN0aW5nXCIsMC4wXScrXHJcbiAgICAgICAgJyxQQVJBTUVURVJbXCJGYWxzZV9Ob3J0aGluZ1wiLDAuMF0sUEFSQU1FVEVSW1wiQ2VudHJhbF9NZXJpZGlhblwiLDAuMF0sUEFSQU1FVEVSW1wiU3RhbmRhcmRfUGFyYWxsZWxfMVwiLDAuMF0nK1xyXG4gICAgICAgICcsUEFSQU1FVEVSW1wiQXV4aWxpYXJ5X1NwaGVyZV9UeXBlXCIsMC4wXSxVTklUW1wiTWV0ZXJcIiwxLjBdXSkgPj4nO1xyXG5cclxuICAgICAgICBib3VuZHNfb2JqLmNvbnRlbnQgPSAnPDwgL0JvdW5kcyBbIDAgMSAwIDAgMSAwIDEgMSBdIC9HQ1MgJyArXHJcbiAgICAgICAgcHJval9vYmoub2JqSWQgKyAnIDAgUiAvR1BUUyBbICcgKyBib3VuZHMgKyAnIF0gL0xQVFMgWyAwIDEgMCAwIDEgMCAxIDEgXSAvU3VidHlwZSAvR0VPIC9UeXBlIC9NZWFzdXJlID4+JztcclxuXHJcbiAgICAgICAgYmJveF9vYmouY29udGVudCA9ICc8PCAvQkJveCBbICcgKyBiYm94ICsgJyBdIC9NZWFzdXJlICcgKyBib3VuZHNfb2JqLm9iaklkICsgJyAwIFIgL05hbWUgKExheWVyKSAvVHlwZSAvVmlld3BvcnQgPj4nO1xyXG5cclxuICAgICAgICBjb25zdCB0aXRsZV9vYmogPSB0aGlzLmludGVybmFsLm5ld0FkZGl0aW9uYWxPYmplY3QoKTtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUNBJyk7XHJcbiAgICAgICAgdGl0bGVfb2JqLmNvbnRlbnQgPSAnPDwgL05hbWUgSUdPMiAvVHlwZSBPQ0cgL0RhdGUgJysgZGF0ZSArJyA+Pic7XHJcblxyXG4gICAgICAgIHJldHVybiBiYm94X29iai5vYmpJZDtcclxuICAgIH07XHJcblxyXG4gICAganNQREZBUEkuc2V0R2VvQXJlYSA9IGZ1bmN0aW9uKHBkZkV4dCwgZ2VvRXh0KSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbC5ldmVudHMuc3Vic2NyaWJlKCdwdXRQYWdlJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJib3hfaWQgPSBzZXRHZW9BcmVhLmNhbGwodGhpcywgcGRmRXh0LCBnZW9FeHQpO1xyXG4gICAgICAgICAgICB0aGlzLmludGVybmFsLndyaXRlKCcvVlAgWyAnICsgYmJveF9pZCArICcgMCBSIF0nKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn1cclxuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './print.interface';
2
2
  export * from './print.service';
3
3
  export * from './print.type';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcmludC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByaW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByaW50LnR5cGUnO1xyXG4iXX0=
4
+ export * from './geopdf';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcmludC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByaW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByaW50LnR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dlb3BkZic7XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvc2hhcmVkL3ByaW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBQcmludE91dHB1dEZvcm1hdCxcclxuICBQcmludFBhcGVyRm9ybWF0LFxyXG4gIFByaW50T3JpZW50YXRpb24sXHJcbiAgUHJpbnRSZXNvbHV0aW9uLFxyXG4gIFByaW50U2F2ZUltYWdlRm9ybWF0LFxyXG4gIFByaW50TGVnZW5kUG9zaXRpb25cclxufSBmcm9tICcuL3ByaW50LnR5cGUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcmludE9wdGlvbnMge1xyXG4gIG91dHB1dEZvcm1hdDogUHJpbnRPdXRwdXRGb3JtYXQ7XHJcbiAgcGFwZXJGb3JtYXQ6IFByaW50UGFwZXJGb3JtYXQ7XHJcbiAgb3JpZW50YXRpb246IFByaW50T3JpZW50YXRpb247XHJcbiAgcmVzb2x1dGlvbjogUHJpbnRSZXNvbHV0aW9uO1xyXG4gIGxlZ2VuZFBvc2l0aW9uOiBQcmludExlZ2VuZFBvc2l0aW9uO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YnRpdGxlPzogc3RyaW5nO1xyXG4gIGNvbW1lbnQ/OiBzdHJpbmc7XHJcbiAgaW1hZ2VGb3JtYXQ/OiBQcmludFNhdmVJbWFnZUZvcm1hdDtcclxuICBzaG93UHJvamVjdGlvbj86IGJvb2xlYW47XHJcbiAgc2hvd0xlZ2VuZD86IGJvb2xlYW47XHJcbiAgc2hvd1NjYWxlPzogYm9vbGVhbjtcclxuICBpc1ByaW50U2VydmljZTogYm9vbGVhbjtcclxuICBkb1ppcEZpbGU6IGJvb2xlYW47XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvc2hhcmVkL3ByaW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBQcmludE91dHB1dEZvcm1hdCxcclxuICBQcmludFBhcGVyRm9ybWF0LFxyXG4gIFByaW50T3JpZW50YXRpb24sXHJcbiAgUHJpbnRSZXNvbHV0aW9uLFxyXG4gIFByaW50U2F2ZUltYWdlRm9ybWF0LFxyXG4gIFByaW50TGVnZW5kUG9zaXRpb25cclxufSBmcm9tICcuL3ByaW50LnR5cGUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcmludE9wdGlvbnMge1xyXG4gIG91dHB1dEZvcm1hdDogUHJpbnRPdXRwdXRGb3JtYXQ7XHJcbiAgcGFwZXJGb3JtYXQ6IFByaW50UGFwZXJGb3JtYXQ7XHJcbiAgb3JpZW50YXRpb246IFByaW50T3JpZW50YXRpb247XHJcbiAgcmVzb2x1dGlvbjogUHJpbnRSZXNvbHV0aW9uO1xyXG4gIGxlZ2VuZFBvc2l0aW9uOiBQcmludExlZ2VuZFBvc2l0aW9uO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YnRpdGxlPzogc3RyaW5nO1xyXG4gIGNvbW1lbnQ/OiBzdHJpbmc7XHJcbiAgaW1hZ2VGb3JtYXQ/OiBQcmludFNhdmVJbWFnZUZvcm1hdDtcclxuICBzaG93UHJvamVjdGlvbj86IGJvb2xlYW47XHJcbiAgc2hvd0xlZ2VuZD86IGJvb2xlYW47XHJcbiAgc2hvd1NjYWxlPzogYm9vbGVhbjtcclxuICBpc1ByaW50U2VydmljZTogYm9vbGVhbjtcclxuICBkb1ppcEZpbGU6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGV4dFBkZlNpemVBbmRNYXJnaW4ge1xyXG4gIGZvbnRTaXplOiBudW1iZXIsXHJcbiAgbWFyZ2luTGVmdDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbn1cclxuIl19