@kepler.gl/utils 3.0.0-alpha.0 → 3.0.0-alpha.2

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 (60) hide show
  1. package/dist/aggregate-utils.js +1 -21
  2. package/dist/arrow-data-container.d.ts +54 -0
  3. package/dist/arrow-data-container.js +360 -0
  4. package/dist/color-utils.d.ts +8 -0
  5. package/dist/color-utils.js +38 -22
  6. package/dist/data-container-interface.d.ts +18 -0
  7. package/dist/data-container-interface.js +0 -20
  8. package/dist/data-container-utils.d.ts +1 -0
  9. package/dist/data-container-utils.js +10 -22
  10. package/dist/data-row.js +7 -22
  11. package/dist/data-scale-utils.js +7 -22
  12. package/dist/data-utils.d.ts +10 -12
  13. package/dist/data-utils.js +121 -63
  14. package/dist/dataset-utils.d.ts +13 -2
  15. package/dist/dataset-utils.js +85 -33
  16. package/dist/dom-to-image.d.ts +14 -14
  17. package/dist/dom-to-image.js +28 -89
  18. package/dist/dom-utils.d.ts +3 -0
  19. package/dist/dom-utils.js +33 -23
  20. package/dist/effect-utils.d.ts +23 -0
  21. package/dist/effect-utils.js +196 -0
  22. package/dist/export-map-html.js +7 -23
  23. package/dist/export-utils.js +12 -23
  24. package/dist/filter-utils.d.ts +11 -9
  25. package/dist/filter-utils.js +70 -55
  26. package/dist/format.d.ts +1 -0
  27. package/dist/format.js +17 -0
  28. package/dist/gl-utils.js +1 -21
  29. package/dist/h3-utils.d.ts +2 -1
  30. package/dist/h3-utils.js +9 -24
  31. package/dist/index.d.ts +16 -10
  32. package/dist/index.js +250 -558
  33. package/dist/indexed-data-container.js +1 -21
  34. package/dist/locale-utils.js +1 -21
  35. package/dist/map-info-utils.js +6 -22
  36. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +2 -1
  37. package/dist/map-style-utils/mapbox-gl-style-editor.js +8 -22
  38. package/dist/map-style-utils/mapbox-utils.js +7 -22
  39. package/dist/map-utils.d.ts +8 -2
  40. package/dist/map-utils.js +23 -26
  41. package/dist/mapbox-utils.js +7 -22
  42. package/dist/noop.d.ts +1 -0
  43. package/dist/noop.js +11 -0
  44. package/dist/notifications-utils.d.ts +14 -26
  45. package/dist/notifications-utils.js +8 -30
  46. package/dist/observe-dimensions.d.ts +1 -1
  47. package/dist/observe-dimensions.js +13 -29
  48. package/dist/plot.d.ts +6 -0
  49. package/dist/plot.js +31 -0
  50. package/dist/projection-utils.d.ts +9 -0
  51. package/dist/projection-utils.js +40 -22
  52. package/dist/row-data-container.js +1 -21
  53. package/dist/searcher-utils.js +7 -22
  54. package/dist/split-map-utils.d.ts +4 -1
  55. package/dist/split-map-utils.js +9 -23
  56. package/dist/time.d.ts +16 -0
  57. package/dist/time.js +89 -0
  58. package/dist/utils.d.ts +42 -10
  59. package/dist/utils.js +64 -26
  60. package/package.json +14 -13
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -92,4 +72,4 @@ function aggregate(data, technique) {
92
72
  return data.length;
93
73
  }
94
74
  }
95
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hZ2dyZWdhdGUtdXRpbHMudHMiXSwibmFtZXMiOlsiZ2V0RnJlcXVlbmN5IiwiZGF0YSIsInJlZHVjZSIsInVuaXF1ZXMiLCJ2YWwiLCJnZXRNb2RlIiwib2NjdXIiLCJPYmplY3QiLCJrZXlzIiwicHJldiIsImtleSIsImFnZ3JlZ2F0ZSIsInRlY2huaXF1ZSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiYXZlcmFnZSIsImNvdW50VW5pcXVlIiwibGVuZ3RoIiwibW9kZSIsIm1heGltdW0iLCJtaW5pbXVtIiwibWVkaWFuIiwic3RkZXYiLCJzdW0iLCJ2YXJpYW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOzs7Ozs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFBQyxJQUFJO0FBQUEsU0FDOUJBLElBQUksQ0FBQ0MsTUFBTCxDQUNFLFVBQUNDLE9BQUQsRUFBVUMsR0FBVjtBQUFBLDJDQUNLRCxPQURMLDRDQUVHQyxHQUZILEVBRVMsQ0FBQ0QsT0FBTyxDQUFDQyxHQUFELENBQVAsSUFBZ0IsQ0FBakIsSUFBc0IsQ0FGL0I7QUFBQSxHQURGLEVBS0UsRUFMRixDQUQ4QjtBQUFBLENBQXpCOzs7O0FBU0EsSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQUosSUFBSSxFQUFJO0FBQzdCLE1BQU1LLEtBQUssR0FBR04sWUFBWSxDQUFDQyxJQUFELENBQTFCO0FBQ0EsU0FBT00sTUFBTSxDQUFDQyxJQUFQLENBQVlGLEtBQVosRUFBbUJKLE1BQW5CLENBQ0wsVUFBQ08sSUFBRCxFQUFPQyxHQUFQO0FBQUEsV0FBZ0JKLEtBQUssQ0FBQ0csSUFBRCxDQUFMLElBQWVILEtBQUssQ0FBQ0ksR0FBRCxDQUFwQixHQUE0QkQsSUFBNUIsR0FBbUNDLEdBQW5EO0FBQUEsR0FESyxFQUVMSCxNQUFNLENBQUNDLElBQVAsQ0FBWUYsS0FBWixFQUFtQixDQUFuQixDQUZLLENBQVA7QUFJRCxDQU5NOzs7O0FBUUEsU0FBU0ssU0FBVCxDQUFtQlYsSUFBbkIsRUFBeUJXLFNBQXpCLEVBQW9DO0FBQ3pDLFVBQVFBLFNBQVI7QUFDRSxTQUFLQyw2QkFBa0JDLE9BQXZCO0FBQ0UsYUFBTyxtQkFBS2IsSUFBTCxDQUFQOztBQUNGLFNBQUtZLDZCQUFrQkUsV0FBdkI7QUFDRSxhQUFPUixNQUFNLENBQUNDLElBQVAsQ0FDTFAsSUFBSSxDQUFDQyxNQUFMLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxHQUFWLEVBQWtCO0FBQzVCRCxRQUFBQSxPQUFPLENBQUNDLEdBQUQsQ0FBUCxHQUFlRCxPQUFPLENBQUNDLEdBQUQsQ0FBUCxJQUFnQixDQUEvQjtBQUNBRCxRQUFBQSxPQUFPLENBQUNDLEdBQUQsQ0FBUCxJQUFnQixDQUFoQjtBQUNBLGVBQU9ELE9BQVA7QUFDRCxPQUpELEVBSUcsRUFKSCxDQURLLEVBTUxhLE1BTkY7O0FBT0YsU0FBS0gsNkJBQWtCSSxJQUF2QjtBQUNFLGFBQU9aLE9BQU8sQ0FBQ0osSUFBRCxDQUFkOztBQUVGLFNBQUtZLDZCQUFrQkssT0FBdkI7QUFDRSxhQUFPLGtCQUFJakIsSUFBSixDQUFQOztBQUNGLFNBQUtZLDZCQUFrQk0sT0FBdkI7QUFDRSxhQUFPLGtCQUFJbEIsSUFBSixDQUFQOztBQUNGLFNBQUtZLDZCQUFrQk8sTUFBdkI7QUFDRSxhQUFPLHFCQUFPbkIsSUFBUCxDQUFQOztBQUNGLFNBQUtZLDZCQUFrQlEsS0FBdkI7QUFDRSxhQUFPLHdCQUFVcEIsSUFBVixDQUFQOztBQUNGLFNBQUtZLDZCQUFrQlMsR0FBdkI7QUFDRSxhQUFPLGtCQUFJckIsSUFBSixDQUFQOztBQUNGLFNBQUtZLDZCQUFrQlUsUUFBdkI7QUFDRSxhQUFPLHVCQUFTdEIsSUFBVCxDQUFQOztBQUNGO0FBQ0UsYUFBT0EsSUFBSSxDQUFDZSxNQUFaO0FBM0JKO0FBNkJEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtkZXZpYXRpb24sIG1pbiwgbWF4LCBtZWFuLCBtZWRpYW4sIHN1bSwgdmFyaWFuY2V9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCB7QUdHUkVHQVRJT05fVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IGdldEZyZXF1ZW5jeSA9IGRhdGEgPT5cbiAgZGF0YS5yZWR1Y2UoXG4gICAgKHVuaXF1ZXMsIHZhbCkgPT4gKHtcbiAgICAgIC4uLnVuaXF1ZXMsXG4gICAgICBbdmFsXTogKHVuaXF1ZXNbdmFsXSB8fCAwKSArIDFcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG5leHBvcnQgY29uc3QgZ2V0TW9kZSA9IGRhdGEgPT4ge1xuICBjb25zdCBvY2N1ciA9IGdldEZyZXF1ZW5jeShkYXRhKTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9jY3VyKS5yZWR1Y2UoXG4gICAgKHByZXYsIGtleSkgPT4gKG9jY3VyW3ByZXZdID49IG9jY3VyW2tleV0gPyBwcmV2IDoga2V5KSxcbiAgICBPYmplY3Qua2V5cyhvY2N1cilbMF1cbiAgKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhZ2dyZWdhdGUoZGF0YSwgdGVjaG5pcXVlKSB7XG4gIHN3aXRjaCAodGVjaG5pcXVlKSB7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlOlxuICAgICAgcmV0dXJuIG1lYW4oZGF0YSk7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZTpcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhcbiAgICAgICAgZGF0YS5yZWR1Y2UoKHVuaXF1ZXMsIHZhbCkgPT4ge1xuICAgICAgICAgIHVuaXF1ZXNbdmFsXSA9IHVuaXF1ZXNbdmFsXSB8fCAwO1xuICAgICAgICAgIHVuaXF1ZXNbdmFsXSArPSAxO1xuICAgICAgICAgIHJldHVybiB1bmlxdWVzO1xuICAgICAgICB9LCB7fSlcbiAgICAgICkubGVuZ3RoO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMubW9kZTpcbiAgICAgIHJldHVybiBnZXRNb2RlKGRhdGEpO1xuXG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtOlxuICAgICAgcmV0dXJuIG1heChkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW06XG4gICAgICByZXR1cm4gbWluKGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuOlxuICAgICAgcmV0dXJuIG1lZGlhbihkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2OlxuICAgICAgcmV0dXJuIGRldmlhdGlvbihkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLnN1bTpcbiAgICAgIHJldHVybiBzdW0oZGF0YSk7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZTpcbiAgICAgIHJldHVybiB2YXJpYW5jZShkYXRhKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoO1xuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hZ2dyZWdhdGUtdXRpbHMudHMiXSwibmFtZXMiOlsiZ2V0RnJlcXVlbmN5IiwiZGF0YSIsInJlZHVjZSIsInVuaXF1ZXMiLCJ2YWwiLCJnZXRNb2RlIiwib2NjdXIiLCJPYmplY3QiLCJrZXlzIiwicHJldiIsImtleSIsImFnZ3JlZ2F0ZSIsInRlY2huaXF1ZSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiYXZlcmFnZSIsImNvdW50VW5pcXVlIiwibGVuZ3RoIiwibW9kZSIsIm1heGltdW0iLCJtaW5pbXVtIiwibWVkaWFuIiwic3RkZXYiLCJzdW0iLCJ2YXJpYW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7Ozs7OztBQUVPLElBQU1BLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUFDLElBQUk7QUFBQSxTQUM5QkEsSUFBSSxDQUFDQyxNQUFMLENBQ0UsVUFBQ0MsT0FBRCxFQUFVQyxHQUFWO0FBQUEsMkNBQ0tELE9BREwsNENBRUdDLEdBRkgsRUFFUyxDQUFDRCxPQUFPLENBQUNDLEdBQUQsQ0FBUCxJQUFnQixDQUFqQixJQUFzQixDQUYvQjtBQUFBLEdBREYsRUFLRSxFQUxGLENBRDhCO0FBQUEsQ0FBekI7Ozs7QUFTQSxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFBSixJQUFJLEVBQUk7QUFDN0IsTUFBTUssS0FBSyxHQUFHTixZQUFZLENBQUNDLElBQUQsQ0FBMUI7QUFDQSxTQUFPTSxNQUFNLENBQUNDLElBQVAsQ0FBWUYsS0FBWixFQUFtQkosTUFBbkIsQ0FDTCxVQUFDTyxJQUFELEVBQU9DLEdBQVA7QUFBQSxXQUFnQkosS0FBSyxDQUFDRyxJQUFELENBQUwsSUFBZUgsS0FBSyxDQUFDSSxHQUFELENBQXBCLEdBQTRCRCxJQUE1QixHQUFtQ0MsR0FBbkQ7QUFBQSxHQURLLEVBRUxILE1BQU0sQ0FBQ0MsSUFBUCxDQUFZRixLQUFaLEVBQW1CLENBQW5CLENBRkssQ0FBUDtBQUlELENBTk07Ozs7QUFRQSxTQUFTSyxTQUFULENBQW1CVixJQUFuQixFQUF5QlcsU0FBekIsRUFBb0M7QUFDekMsVUFBUUEsU0FBUjtBQUNFLFNBQUtDLDZCQUFrQkMsT0FBdkI7QUFDRSxhQUFPLG1CQUFLYixJQUFMLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCRSxXQUF2QjtBQUNFLGFBQU9SLE1BQU0sQ0FBQ0MsSUFBUCxDQUNMUCxJQUFJLENBQUNDLE1BQUwsQ0FBWSxVQUFDQyxPQUFELEVBQVVDLEdBQVYsRUFBa0I7QUFDNUJELFFBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxDQUFQLEdBQWVELE9BQU8sQ0FBQ0MsR0FBRCxDQUFQLElBQWdCLENBQS9CO0FBQ0FELFFBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxDQUFQLElBQWdCLENBQWhCO0FBQ0EsZUFBT0QsT0FBUDtBQUNELE9BSkQsRUFJRyxFQUpILENBREssRUFNTGEsTUFORjs7QUFPRixTQUFLSCw2QkFBa0JJLElBQXZCO0FBQ0UsYUFBT1osT0FBTyxDQUFDSixJQUFELENBQWQ7O0FBRUYsU0FBS1ksNkJBQWtCSyxPQUF2QjtBQUNFLGFBQU8sa0JBQUlqQixJQUFKLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCTSxPQUF2QjtBQUNFLGFBQU8sa0JBQUlsQixJQUFKLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCTyxNQUF2QjtBQUNFLGFBQU8scUJBQU9uQixJQUFQLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCUSxLQUF2QjtBQUNFLGFBQU8sd0JBQVVwQixJQUFWLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCUyxHQUF2QjtBQUNFLGFBQU8sa0JBQUlyQixJQUFKLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCVSxRQUF2QjtBQUNFLGFBQU8sdUJBQVN0QixJQUFULENBQVA7O0FBQ0Y7QUFDRSxhQUFPQSxJQUFJLENBQUNlLE1BQVo7QUEzQko7QUE2QkQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2RldmlhdGlvbiwgbWluLCBtYXgsIG1lYW4sIG1lZGlhbiwgc3VtLCB2YXJpYW5jZX0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHtBR0dSRUdBVElPTl9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0RnJlcXVlbmN5ID0gZGF0YSA9PlxuICBkYXRhLnJlZHVjZShcbiAgICAodW5pcXVlcywgdmFsKSA9PiAoe1xuICAgICAgLi4udW5pcXVlcyxcbiAgICAgIFt2YWxdOiAodW5pcXVlc1t2YWxdIHx8IDApICsgMVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG5cbmV4cG9ydCBjb25zdCBnZXRNb2RlID0gZGF0YSA9PiB7XG4gIGNvbnN0IG9jY3VyID0gZ2V0RnJlcXVlbmN5KGRhdGEpO1xuICByZXR1cm4gT2JqZWN0LmtleXMob2NjdXIpLnJlZHVjZShcbiAgICAocHJldiwga2V5KSA9PiAob2NjdXJbcHJldl0gPj0gb2NjdXJba2V5XSA/IHByZXYgOiBrZXkpLFxuICAgIE9iamVjdC5rZXlzKG9jY3VyKVswXVxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZShkYXRhLCB0ZWNobmlxdWUpIHtcbiAgc3dpdGNoICh0ZWNobmlxdWUpIHtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2U6XG4gICAgICByZXR1cm4gbWVhbihkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50VW5pcXVlOlxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKFxuICAgICAgICBkYXRhLnJlZHVjZSgodW5pcXVlcywgdmFsKSA9PiB7XG4gICAgICAgICAgdW5pcXVlc1t2YWxdID0gdW5pcXVlc1t2YWxdIHx8IDA7XG4gICAgICAgICAgdW5pcXVlc1t2YWxdICs9IDE7XG4gICAgICAgICAgcmV0dXJuIHVuaXF1ZXM7XG4gICAgICAgIH0sIHt9KVxuICAgICAgKS5sZW5ndGg7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5tb2RlOlxuICAgICAgcmV0dXJuIGdldE1vZGUoZGF0YSk7XG5cbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW06XG4gICAgICByZXR1cm4gbWF4KGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bTpcbiAgICAgIHJldHVybiBtaW4oZGF0YSk7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW46XG4gICAgICByZXR1cm4gbWVkaWFuKGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMuc3RkZXY6XG4gICAgICByZXR1cm4gZGV2aWF0aW9uKGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMuc3VtOlxuICAgICAgcmV0dXJuIHN1bShkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlOlxuICAgICAgcmV0dXJuIHZhcmlhbmNlKGRhdGEpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0YS5sZW5ndGg7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import * as arrow from 'apache-arrow';
2
+ import { DATA_TYPES as AnalyzerDATA_TYPES } from 'type-analyzer';
3
+ import { Field } from '@kepler.gl/types';
4
+ import { DataRow, SharedRowOptions } from './data-row';
5
+ import { DataContainerInterface, RangeOptions } from './data-container-interface';
6
+ declare type ArrowDataContainerInput = {
7
+ cols: arrow.Vector[];
8
+ fields?: Field[];
9
+ };
10
+ /**
11
+ * A data container where all data is stored in raw Arrow table
12
+ */
13
+ export declare class ArrowDataContainer implements DataContainerInterface {
14
+ _cols: arrow.Vector[];
15
+ _numColumns: number;
16
+ _numRows: number;
17
+ _fields: Field[];
18
+ _numChunks: number;
19
+ constructor(data: ArrowDataContainerInput);
20
+ update(updateData: arrow.Vector<any>[]): void;
21
+ numChunks(): number;
22
+ numRows(): number;
23
+ numColumns(): number;
24
+ valueAt(rowIndex: number, columnIndex: number): any;
25
+ row(rowIndex: number, sharedRow?: SharedRowOptions): DataRow;
26
+ rowAsArray(rowIndex: number): any[];
27
+ rows(sharedRow: SharedRowOptions): any;
28
+ column(columnIndex: number): Generator<any, void, unknown>;
29
+ getColumn(columnIndex: number): arrow.Vector;
30
+ getField(columnIndex: number): Field;
31
+ flattenData(): any[][];
32
+ getPlainIndex(): number[];
33
+ map<T>(func: (row: DataRow, index: number) => T, sharedRow?: SharedRowOptions, options?: RangeOptions): T[];
34
+ mapIndex<T>(func: ({ index }: {
35
+ index: any;
36
+ }, dc: DataContainerInterface) => T, options?: RangeOptions): T[];
37
+ find(func: (row: DataRow, index: number) => boolean, sharedRow?: SharedRowOptions): DataRow | undefined;
38
+ reduce<T>(func: (acc: T, row: DataRow, index: number) => T, initialValue: T, sharedRow?: SharedRowOptions): T;
39
+ }
40
+ /**
41
+ * Convert arrow data type to kepler.gl field types
42
+ *
43
+ * @param arrowType the arrow data type
44
+ * @returns corresponding type in `ALL_FIELD_TYPES`
45
+ */
46
+ export declare function arrowDataTypeToFieldType(arrowType: arrow.DataType): string;
47
+ /**
48
+ * Convert arrow data type to analyzer type
49
+ *
50
+ * @param arrowType the arrow data type
51
+ * @returns corresponding type in `AnalyzerDATA_TYPES`
52
+ */
53
+ export declare function arrowDataTypeToAnalyzerDataType(arrowType: arrow.DataType): typeof AnalyzerDATA_TYPES;
54
+ export {};
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.arrowDataTypeToFieldType = arrowDataTypeToFieldType;
11
+ exports.arrowDataTypeToAnalyzerDataType = arrowDataTypeToAnalyzerDataType;
12
+ exports.ArrowDataContainer = void 0;
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
+
22
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
23
+
24
+ var arrow = _interopRequireWildcard(require("apache-arrow"));
25
+
26
+ var _window = require("global/window");
27
+
28
+ var _typeAnalyzer = require("type-analyzer");
29
+
30
+ var _constants = require("@kepler.gl/constants");
31
+
32
+ var _dataRow = require("./data-row");
33
+
34
+ var _marked = /*#__PURE__*/_regenerator["default"].mark(rowsIterator),
35
+ _marked2 = /*#__PURE__*/_regenerator["default"].mark(columnIterator);
36
+
37
+ /**
38
+ * @param dataContainer
39
+ * @param sharedRow
40
+ */
41
+ function rowsIterator(dataContainer, sharedRow) {
42
+ var numRows, rowIndex;
43
+ return _regenerator["default"].wrap(function rowsIterator$(_context) {
44
+ while (1) {
45
+ switch (_context.prev = _context.next) {
46
+ case 0:
47
+ numRows = dataContainer.numRows();
48
+ rowIndex = 0;
49
+
50
+ case 2:
51
+ if (!(rowIndex < numRows)) {
52
+ _context.next = 8;
53
+ break;
54
+ }
55
+
56
+ _context.next = 5;
57
+ return dataContainer.row(rowIndex, sharedRow);
58
+
59
+ case 5:
60
+ ++rowIndex;
61
+ _context.next = 2;
62
+ break;
63
+
64
+ case 8:
65
+ case "end":
66
+ return _context.stop();
67
+ }
68
+ }
69
+ }, _marked);
70
+ }
71
+ /**
72
+ * @param dataContainer
73
+ * @param columnIndex
74
+ */
75
+
76
+
77
+ function columnIterator(dataContainer, columnIndex) {
78
+ var numRows, rowIndex;
79
+ return _regenerator["default"].wrap(function columnIterator$(_context2) {
80
+ while (1) {
81
+ switch (_context2.prev = _context2.next) {
82
+ case 0:
83
+ numRows = dataContainer.numRows();
84
+ rowIndex = 0;
85
+
86
+ case 2:
87
+ if (!(rowIndex < numRows)) {
88
+ _context2.next = 8;
89
+ break;
90
+ }
91
+
92
+ _context2.next = 5;
93
+ return dataContainer.valueAt(rowIndex, columnIndex);
94
+
95
+ case 5:
96
+ ++rowIndex;
97
+ _context2.next = 2;
98
+ break;
99
+
100
+ case 8:
101
+ case "end":
102
+ return _context2.stop();
103
+ }
104
+ }
105
+ }, _marked2);
106
+ }
107
+ /**
108
+ * A data container where all data is stored in raw Arrow table
109
+ */
110
+
111
+
112
+ var ArrowDataContainer = /*#__PURE__*/function () {
113
+ // cache column data to make valueAt() faster
114
+ // _colData: any[][];
115
+ function ArrowDataContainer(data) {
116
+ (0, _classCallCheck2["default"])(this, ArrowDataContainer);
117
+ (0, _defineProperty2["default"])(this, "_cols", void 0);
118
+ (0, _defineProperty2["default"])(this, "_numColumns", void 0);
119
+ (0, _defineProperty2["default"])(this, "_numRows", void 0);
120
+ (0, _defineProperty2["default"])(this, "_fields", void 0);
121
+ (0, _defineProperty2["default"])(this, "_numChunks", void 0);
122
+
123
+ if (!data.cols) {
124
+ throw Error('ArrowDataContainer: no columns provided');
125
+ }
126
+
127
+ if (!Array.isArray(data.cols)) {
128
+ throw Error("ArrowDataContainer: columns object isn't an array");
129
+ }
130
+
131
+ this._cols = data.cols;
132
+ this._numColumns = data.cols.length;
133
+ this._numRows = data.cols[0].length;
134
+ this._fields = data.fields || [];
135
+ this._numChunks = data.cols[0].data.length; // this._colData = data.cols.map(c => c.toArray());
136
+ }
137
+
138
+ (0, _createClass2["default"])(ArrowDataContainer, [{
139
+ key: "update",
140
+ value: function update(updateData) {
141
+ this._cols = updateData;
142
+ this._numColumns = this._cols.length;
143
+ this._numRows = this._cols[0].length;
144
+ this._numChunks = this._cols[0].data.length; // cache column data to make valueAt() faster
145
+ // this._colData = this._cols.map(c => c.toArray());
146
+ }
147
+ }, {
148
+ key: "numChunks",
149
+ value: function numChunks() {
150
+ return this._numChunks;
151
+ }
152
+ }, {
153
+ key: "numRows",
154
+ value: function numRows() {
155
+ return this._numRows;
156
+ }
157
+ }, {
158
+ key: "numColumns",
159
+ value: function numColumns() {
160
+ return this._numColumns;
161
+ }
162
+ }, {
163
+ key: "valueAt",
164
+ value: function valueAt(rowIndex, columnIndex) {
165
+ // return this._colData[columnIndex][rowIndex];
166
+ return this._cols[columnIndex].get(rowIndex);
167
+ }
168
+ }, {
169
+ key: "row",
170
+ value: function row(rowIndex, sharedRow) {
171
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
172
+
173
+ if (tSharedRow) {
174
+ tSharedRow.setSource(this, rowIndex);
175
+ return tSharedRow;
176
+ }
177
+
178
+ return new _dataRow.DataRow(this, rowIndex);
179
+ }
180
+ }, {
181
+ key: "rowAsArray",
182
+ value: function rowAsArray(rowIndex) {
183
+ // return this._colData.map(col => col[rowIndex]);
184
+ return this._cols.map(function (col) {
185
+ return col.get(rowIndex);
186
+ });
187
+ }
188
+ }, {
189
+ key: "rows",
190
+ value: function rows(sharedRow) {
191
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
192
+
193
+ return rowsIterator(this, tSharedRow);
194
+ }
195
+ }, {
196
+ key: "column",
197
+ value: function column(columnIndex) {
198
+ return columnIterator(this, columnIndex);
199
+ }
200
+ }, {
201
+ key: "getColumn",
202
+ value: function getColumn(columnIndex) {
203
+ return this._cols[columnIndex];
204
+ }
205
+ }, {
206
+ key: "getField",
207
+ value: function getField(columnIndex) {
208
+ return this._fields[columnIndex];
209
+ }
210
+ }, {
211
+ key: "flattenData",
212
+ value: function flattenData() {
213
+ var data = [];
214
+
215
+ for (var i = 0; i < this._numRows; ++i) {
216
+ data.push(this.rowAsArray(i));
217
+ }
218
+
219
+ return data;
220
+ }
221
+ }, {
222
+ key: "getPlainIndex",
223
+ value: function getPlainIndex() {
224
+ return (0, _toConsumableArray2["default"])(Array(this._numRows).keys());
225
+ }
226
+ }, {
227
+ key: "map",
228
+ value: function map(func, sharedRow) {
229
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
230
+
231
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
232
+
233
+ var _options$start = options.start,
234
+ start = _options$start === void 0 ? 0 : _options$start,
235
+ _options$end = options.end,
236
+ end = _options$end === void 0 ? this.numRows() : _options$end;
237
+ var endRow = Math.min(this.numRows(), end);
238
+ var out = [];
239
+
240
+ for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
241
+ var _row = this.row(rowIndex, tSharedRow);
242
+
243
+ out.push(func(_row, rowIndex));
244
+ }
245
+
246
+ return out;
247
+ }
248
+ }, {
249
+ key: "mapIndex",
250
+ value: function mapIndex(func) {
251
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
252
+ var _options$start2 = options.start,
253
+ start = _options$start2 === void 0 ? 0 : _options$start2,
254
+ _options$end2 = options.end,
255
+ end = _options$end2 === void 0 ? this.numRows() : _options$end2;
256
+ var endRow = Math.min(this.numRows(), end);
257
+ var out = [];
258
+
259
+ for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
260
+ out.push(func({
261
+ index: rowIndex
262
+ }, this));
263
+ }
264
+
265
+ return out;
266
+ }
267
+ }, {
268
+ key: "find",
269
+ value: function find(func, sharedRow) {
270
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
271
+
272
+ for (var rowIndex = 0; rowIndex < this._numRows; ++rowIndex) {
273
+ var _row2 = this.row(rowIndex, tSharedRow);
274
+
275
+ if (func(_row2, rowIndex)) {
276
+ return _row2;
277
+ }
278
+ }
279
+
280
+ return undefined;
281
+ }
282
+ }, {
283
+ key: "reduce",
284
+ value: function reduce(func, initialValue, sharedRow) {
285
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
286
+
287
+ for (var rowIndex = 0; rowIndex < this._numRows; ++rowIndex) {
288
+ var _row3 = this.row(rowIndex, tSharedRow);
289
+
290
+ initialValue = func(initialValue, _row3, rowIndex);
291
+ }
292
+
293
+ return initialValue;
294
+ }
295
+ }]);
296
+ return ArrowDataContainer;
297
+ }();
298
+ /**
299
+ * Convert arrow data type to kepler.gl field types
300
+ *
301
+ * @param arrowType the arrow data type
302
+ * @returns corresponding type in `ALL_FIELD_TYPES`
303
+ */
304
+
305
+
306
+ exports.ArrowDataContainer = ArrowDataContainer;
307
+
308
+ function arrowDataTypeToFieldType(arrowType) {
309
+ // Note: this function doesn't return ALL_FIELD_TYPES.geojson or ALL_FIELD_TYPES.array, which
310
+ // should be further detected by caller
311
+ if (arrow.DataType.isDate(arrowType)) {
312
+ return _constants.ALL_FIELD_TYPES.date;
313
+ } else if (arrow.DataType.isTimestamp(arrowType) || arrow.DataType.isTime(arrowType)) {
314
+ return _constants.ALL_FIELD_TYPES.timestamp;
315
+ } else if (arrow.DataType.isFloat(arrowType)) {
316
+ return _constants.ALL_FIELD_TYPES.real;
317
+ } else if (arrow.DataType.isInt(arrowType)) {
318
+ return _constants.ALL_FIELD_TYPES.integer;
319
+ } else if (arrow.DataType.isBool(arrowType)) {
320
+ return _constants.ALL_FIELD_TYPES["boolean"];
321
+ } else if (arrow.DataType.isUtf8(arrowType) || arrow.DataType.isNull(arrowType)) {
322
+ return _constants.ALL_FIELD_TYPES.string;
323
+ } else if (arrow.DataType.isBinary(arrowType) || arrow.DataType.isDictionary(arrowType) || arrow.DataType.isFixedSizeBinary(arrowType) || arrow.DataType.isFixedSizeList(arrowType) || arrow.DataType.isList(arrowType) || arrow.DataType.isMap(arrowType) || arrow.DataType.isStruct(arrowType)) {
324
+ return _constants.ALL_FIELD_TYPES.object;
325
+ } else {
326
+ _window.console.warn("Unsupported arrow type: ".concat(arrowType));
327
+
328
+ return _constants.ALL_FIELD_TYPES.string;
329
+ }
330
+ }
331
+ /**
332
+ * Convert arrow data type to analyzer type
333
+ *
334
+ * @param arrowType the arrow data type
335
+ * @returns corresponding type in `AnalyzerDATA_TYPES`
336
+ */
337
+
338
+
339
+ function arrowDataTypeToAnalyzerDataType(arrowType) {
340
+ if (arrow.DataType.isDate(arrowType)) {
341
+ return _typeAnalyzer.DATA_TYPES.DATE;
342
+ } else if (arrow.DataType.isTimestamp(arrowType) || arrow.DataType.isTime(arrowType)) {
343
+ return _typeAnalyzer.DATA_TYPES.DATETIME;
344
+ } else if (arrow.DataType.isFloat(arrowType)) {
345
+ return _typeAnalyzer.DATA_TYPES.FLOAT;
346
+ } else if (arrow.DataType.isInt(arrowType)) {
347
+ return _typeAnalyzer.DATA_TYPES.INT;
348
+ } else if (arrow.DataType.isBool(arrowType)) {
349
+ return _typeAnalyzer.DATA_TYPES.BOOLEAN;
350
+ } else if (arrow.DataType.isUtf8(arrowType) || arrow.DataType.isNull(arrowType)) {
351
+ return _typeAnalyzer.DATA_TYPES.STRING;
352
+ } else if (arrow.DataType.isBinary(arrowType) || arrow.DataType.isDictionary(arrowType) || arrow.DataType.isFixedSizeBinary(arrowType) || arrow.DataType.isFixedSizeList(arrowType) || arrow.DataType.isList(arrowType) || arrow.DataType.isMap(arrowType) || arrow.DataType.isStruct(arrowType)) {
353
+ return _typeAnalyzer.DATA_TYPES.OBJECT;
354
+ } else {
355
+ _window.console.warn("Unsupported arrow type: ".concat(arrowType));
356
+
357
+ return _typeAnalyzer.DATA_TYPES.STRING;
358
+ }
359
+ }
360
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcnJvdy1kYXRhLWNvbnRhaW5lci50cyJdLCJuYW1lcyI6WyJyb3dzSXRlcmF0b3IiLCJjb2x1bW5JdGVyYXRvciIsImRhdGFDb250YWluZXIiLCJzaGFyZWRSb3ciLCJudW1Sb3dzIiwicm93SW5kZXgiLCJyb3ciLCJjb2x1bW5JbmRleCIsInZhbHVlQXQiLCJBcnJvd0RhdGFDb250YWluZXIiLCJkYXRhIiwiY29scyIsIkVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NvbHMiLCJfbnVtQ29sdW1ucyIsImxlbmd0aCIsIl9udW1Sb3dzIiwiX2ZpZWxkcyIsImZpZWxkcyIsIl9udW1DaHVua3MiLCJ1cGRhdGVEYXRhIiwiZ2V0IiwidFNoYXJlZFJvdyIsIkRhdGFSb3ciLCJjcmVhdGVTaGFyZWRSb3ciLCJzZXRTb3VyY2UiLCJtYXAiLCJjb2wiLCJpIiwicHVzaCIsInJvd0FzQXJyYXkiLCJrZXlzIiwiZnVuYyIsIm9wdGlvbnMiLCJzdGFydCIsImVuZCIsImVuZFJvdyIsIk1hdGgiLCJtaW4iLCJvdXQiLCJpbmRleCIsInVuZGVmaW5lZCIsImluaXRpYWxWYWx1ZSIsImFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZSIsImFycm93VHlwZSIsImFycm93IiwiRGF0YVR5cGUiLCJpc0RhdGUiLCJBTExfRklFTERfVFlQRVMiLCJkYXRlIiwiaXNUaW1lc3RhbXAiLCJpc1RpbWUiLCJ0aW1lc3RhbXAiLCJpc0Zsb2F0IiwicmVhbCIsImlzSW50IiwiaW50ZWdlciIsImlzQm9vbCIsImlzVXRmOCIsImlzTnVsbCIsInN0cmluZyIsImlzQmluYXJ5IiwiaXNEaWN0aW9uYXJ5IiwiaXNGaXhlZFNpemVCaW5hcnkiLCJpc0ZpeGVkU2l6ZUxpc3QiLCJpc0xpc3QiLCJpc01hcCIsImlzU3RydWN0Iiwib2JqZWN0IiwiZ2xvYmFsQ29uc29sZSIsIndhcm4iLCJhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlIiwiQW5hbHl6ZXJEQVRBX1RZUEVTIiwi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QkFBbUJNLE1BQTFCO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgZ2xvYmFsQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge0RBVEFfVFlQRVMgYXMgQW5hbHl6ZXJEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcbmltcG9ydCB7RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtEYXRhUm93LCBTaGFyZWRSb3dPcHRpb25zfSBmcm9tICcuL2RhdGEtcm93JztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgUmFuZ2VPcHRpb25zfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5cbnR5cGUgQXJyb3dEYXRhQ29udGFpbmVySW5wdXQgPSB7XG4gIGNvbHM6IGFycm93LlZlY3RvcltdO1xuICBmaWVsZHM/OiBGaWVsZFtdO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIHNoYXJlZFJvd1xuICovXG5mdW5jdGlvbiogcm93c0l0ZXJhdG9yKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIHNoYXJlZFJvdzogU2hhcmVkUm93T3B0aW9ucykge1xuICBjb25zdCBudW1Sb3dzID0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7XG4gIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgeWllbGQgZGF0YUNvbnRhaW5lci5yb3cocm93SW5kZXgsIHNoYXJlZFJvdyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIGNvbHVtbkluZGV4XG4gKi9cbmZ1bmN0aW9uKiBjb2x1bW5JdGVyYXRvcihkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHtcbiAgICB5aWVsZCBkYXRhQ29udGFpbmVyLnZhbHVlQXQocm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGF0YSBjb250YWluZXIgd2hlcmUgYWxsIGRhdGEgaXMgc3RvcmVkIGluIHJhdyBBcnJvdyB0YWJsZVxuICovXG5leHBvcnQgY2xhc3MgQXJyb3dEYXRhQ29udGFpbmVyIGltcGxlbWVudHMgRGF0YUNvbnRhaW5lckludGVyZmFjZSB7XG4gIF9jb2xzOiBhcnJvdy5WZWN0b3JbXTtcbiAgX251bUNvbHVtbnM6IG51bWJlcjtcbiAgX251bVJvd3M6IG51bWJlcjtcbiAgX2ZpZWxkczogRmllbGRbXTtcbiAgX251bUNodW5rczogbnVtYmVyO1xuICAvLyBjYWNoZSBjb2x1bW4gZGF0YSB0byBtYWtlIHZhbHVlQXQoKSBmYXN0ZXJcbiAgLy8gX2NvbERhdGE6IGFueVtdW107XG5cbiAgY29uc3RydWN0b3IoZGF0YTogQXJyb3dEYXRhQ29udGFpbmVySW5wdXQpIHtcbiAgICBpZiAoIWRhdGEuY29scykge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Fycm93RGF0YUNvbnRhaW5lcjogbm8gY29sdW1ucyBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhLmNvbHMpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkFycm93RGF0YUNvbnRhaW5lcjogY29sdW1ucyBvYmplY3QgaXNuJ3QgYW4gYXJyYXlcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fY29scyA9IGRhdGEuY29scztcbiAgICB0aGlzLl9udW1Db2x1bW5zID0gZGF0YS5jb2xzLmxlbmd0aDtcbiAgICB0aGlzLl9udW1Sb3dzID0gZGF0YS5jb2xzWzBdLmxlbmd0aDtcbiAgICB0aGlzLl9maWVsZHMgPSBkYXRhLmZpZWxkcyB8fCBbXTtcbiAgICB0aGlzLl9udW1DaHVua3MgPSBkYXRhLmNvbHNbMF0uZGF0YS5sZW5ndGg7XG4gICAgLy8gdGhpcy5fY29sRGF0YSA9IGRhdGEuY29scy5tYXAoYyA9PiBjLnRvQXJyYXkoKSk7XG4gIH1cblxuICB1cGRhdGUodXBkYXRlRGF0YTogYXJyb3cuVmVjdG9yPGFueT5bXSkge1xuICAgIHRoaXMuX2NvbHMgPSB1cGRhdGVEYXRhO1xuICAgIHRoaXMuX251bUNvbHVtbnMgPSB0aGlzLl9jb2xzLmxlbmd0aDtcbiAgICB0aGlzLl9udW1Sb3dzID0gdGhpcy5fY29sc1swXS5sZW5ndGg7XG4gICAgdGhpcy5fbnVtQ2h1bmtzID0gdGhpcy5fY29sc1swXS5kYXRhLmxlbmd0aDtcbiAgICAvLyBjYWNoZSBjb2x1bW4gZGF0YSB0byBtYWtlIHZhbHVlQXQoKSBmYXN0ZXJcbiAgICAvLyB0aGlzLl9jb2xEYXRhID0gdGhpcy5fY29scy5tYXAoYyA9PiBjLnRvQXJyYXkoKSk7XG4gIH1cblxuICBudW1DaHVua3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtQ2h1bmtzO1xuICB9XG5cbiAgbnVtUm93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1Sb3dzO1xuICB9XG5cbiAgbnVtQ29sdW1ucygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1Db2x1bW5zO1xuICB9XG5cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55IHtcbiAgICAvLyByZXR1cm4gdGhpcy5fY29sRGF0YVtjb2x1bW5JbmRleF1bcm93SW5kZXhdO1xuICAgIHJldHVybiB0aGlzLl9jb2xzW2NvbHVtbkluZGV4XS5nZXQocm93SW5kZXgpO1xuICB9XG5cbiAgcm93KHJvd0luZGV4OiBudW1iZXIsIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMpOiBEYXRhUm93IHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcbiAgICBpZiAodFNoYXJlZFJvdykge1xuICAgICAgdFNoYXJlZFJvdy5zZXRTb3VyY2UodGhpcywgcm93SW5kZXgpO1xuICAgICAgcmV0dXJuIHRTaGFyZWRSb3c7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRhUm93KHRoaXMsIHJvd0luZGV4KTtcbiAgfVxuXG4gIHJvd0FzQXJyYXkocm93SW5kZXg6IG51bWJlcik6IGFueVtdIHtcbiAgICAvLyByZXR1cm4gdGhpcy5fY29sRGF0YS5tYXAoY29sID0+IGNvbFtyb3dJbmRleF0pO1xuICAgIHJldHVybiB0aGlzLl9jb2xzLm1hcChjb2wgPT4gY29sLmdldChyb3dJbmRleCkpO1xuICB9XG5cbiAgcm93cyhzaGFyZWRSb3c6IFNoYXJlZFJvd09wdGlvbnMpIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcbiAgICByZXR1cm4gcm93c0l0ZXJhdG9yKHRoaXMsIHRTaGFyZWRSb3cpO1xuICB9XG5cbiAgY29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gY29sdW1uSXRlcmF0b3IodGhpcywgY29sdW1uSW5kZXgpO1xuICB9XG5cbiAgZ2V0Q29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIpOiBhcnJvdy5WZWN0b3Ige1xuICAgIHJldHVybiB0aGlzLl9jb2xzW2NvbHVtbkluZGV4XTtcbiAgfVxuXG4gIGdldEZpZWxkKGNvbHVtbkluZGV4OiBudW1iZXIpOiBGaWVsZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1tjb2x1bW5JbmRleF07XG4gIH1cblxuICBmbGF0dGVuRGF0YSgpOiBhbnlbXVtdIHtcbiAgICBjb25zdCBkYXRhOiBhbnlbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9udW1Sb3dzOyArK2kpIHtcbiAgICAgIGRhdGEucHVzaCh0aGlzLnJvd0FzQXJyYXkoaSkpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBbLi4uQXJyYXkodGhpcy5fbnVtUm93cykua2V5cygpXTtcbiAgfVxuXG4gIG1hcDxUPihcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMsXG4gICAgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge31cbiAgKTogVFtdIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBvdXQucHVzaChmdW5jKHJvdywgcm93SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIG1hcEluZGV4PFQ+KGZ1bmM6ICh7aW5kZXh9LCBkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT4gVCwgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge30pOiBUW10ge1xuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBvdXQucHVzaChmdW5jKHtpbmRleDogcm93SW5kZXh9LCB0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW4sXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBEYXRhUm93IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9udW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpZiAoZnVuYyhyb3csIHJvd0luZGV4KSkge1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVkdWNlPFQ+KFxuICAgIGZ1bmM6IChhY2M6IFQsIHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gVCxcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBUIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9udW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpbml0aWFsVmFsdWUgPSBmdW5jKGluaXRpYWxWYWx1ZSwgcm93LCByb3dJbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsVmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFycm93IGRhdGEgdHlwZSB0byBrZXBsZXIuZ2wgZmllbGQgdHlwZXNcbiAqXG4gKiBAcGFyYW0gYXJyb3dUeXBlIHRoZSBhcnJvdyBkYXRhIHR5cGVcbiAqIEByZXR1cm5zIGNvcnJlc3BvbmRpbmcgdHlwZSBpbiBgQUxMX0ZJRUxEX1RZUEVTYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyb3dEYXRhVHlwZVRvRmllbGRUeXBlKGFycm93VHlwZTogYXJyb3cuRGF0YVR5cGUpOiBzdHJpbmcge1xuICAvLyBOb3RlOiB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uIG9yIEFMTF9GSUVMRF9UWVBFUy5hcnJheSwgd2hpY2hcbiAgLy8gc2hvdWxkIGJlIGZ1cnRoZXIgZGV0ZWN0ZWQgYnkgY2FsbGVyXG4gIGlmIChhcnJvdy5EYXRhVHlwZS5pc0RhdGUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuZGF0ZTtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc1RpbWVzdGFtcChhcnJvd1R5cGUpIHx8IGFycm93LkRhdGFUeXBlLmlzVGltZShhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNGbG9hdChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5yZWFsO1xuICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzSW50KGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNCb29sKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW47XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGFycm93VHlwZSkgfHwgYXJyb3cuRGF0YVR5cGUuaXNOdWxsKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZztcbiAgfSBlbHNlIGlmIChcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNEaWN0aW9uYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUJpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0xpc3QoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzTWFwKGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc1N0cnVjdChhcnJvd1R5cGUpXG4gICkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMub2JqZWN0O1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbENvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgYXJyb3cgdHlwZTogJHthcnJvd1R5cGV9YCk7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFycm93IGRhdGEgdHlwZSB0byBhbmFseXplciB0eXBlXG4gKlxuICogQHBhcmFtIGFycm93VHlwZSB0aGUgYXJyb3cgZGF0YSB0eXBlXG4gKiBAcmV0dXJucyBjb3JyZXNwb25kaW5nIHR5cGUgaW4gYEFuYWx5emVyREFUQV9UWVBFU2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycm93RGF0YVR5cGVUb0FuYWx5emVyRGF0YVR5cGUoXG4gIGFycm93VHlwZTogYXJyb3cuRGF0YVR5cGVcbik6IHR5cGVvZiBBbmFseXplckRBVEFfVFlQRVMge1xuICBpZiAoYXJyb3cuRGF0YVR5cGUuaXNEYXRlKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLkRBVEU7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNUaW1lc3RhbXAoYXJyb3dUeXBlKSB8fCBhcnJvdy5EYXRhVHlwZS5pc1RpbWUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuREFURVRJTUU7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNGbG9hdChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5GTE9BVDtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0ludChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5JTlQ7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNCb29sKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLkJPT0xFQU47XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGFycm93VHlwZSkgfHwgYXJyb3cuRGF0YVR5cGUuaXNOdWxsKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLlNUUklORztcbiAgfSBlbHNlIGlmIChcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNEaWN0aW9uYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUJpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0xpc3QoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzTWFwKGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc1N0cnVjdChhcnJvd1R5cGUpXG4gICkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuT0JKRUNUO1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbENvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgYXJyb3cgdHlwZTogJHthcnJvd1R5cGV9YCk7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5TVFJJTkc7XG4gIH1cbn1cbiJdfQ==
@@ -36,8 +36,16 @@ export declare function reverseColorRange(reversed: boolean, colorRange: ColorRa
36
36
  * @return
37
37
  */
38
38
  export declare function createLinearGradient(direction: string, colors: RGBColor[]): string;
39
+ /**
40
+ * Convert color to RGB
41
+ */
42
+ export declare function colorMaybeToRGB(color: unknown): RGBColor | null;
39
43
  /**
40
44
  * Whether color is rgb
41
45
  * @returns
42
46
  */
43
47
  export declare function isRgbColor(color: unknown): boolean;
48
+ /**
49
+ * Take color values in 0-255 range and map to [0, 1]
50
+ */
51
+ export declare function normalizeColor(color: number[]): number[];
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -31,15 +11,21 @@ exports.rgbToHex = rgbToHex;
31
11
  exports.getColorGroupByName = getColorGroupByName;
32
12
  exports.reverseColorRange = reverseColorRange;
33
13
  exports.createLinearGradient = createLinearGradient;
14
+ exports.colorMaybeToRGB = colorMaybeToRGB;
34
15
  exports.isRgbColor = isRgbColor;
16
+ exports.normalizeColor = normalizeColor;
35
17
 
36
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
37
19
 
38
20
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
39
21
 
22
+ var _d3Color = require("d3-color");
23
+
40
24
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
25
 
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }/**
26
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
+
28
+ /**
43
29
  * get r g b from hex code
44
30
  *
45
31
  * @param hex
@@ -131,6 +117,26 @@ function createLinearGradient(direction, colors) {
131
117
  });
132
118
  return "linear-gradient(to ".concat(direction, ", ").concat(bands.join(','), ")");
133
119
  }
120
+ /**
121
+ * Convert color to RGB
122
+ */
123
+
124
+
125
+ function colorMaybeToRGB(color) {
126
+ if (isRgbColor(color)) {
127
+ return color;
128
+ }
129
+
130
+ if (typeof color === 'string') {
131
+ var rgbObj = (0, _d3Color.rgb)(color);
132
+
133
+ if (Number.isFinite(rgbObj === null || rgbObj === void 0 ? void 0 : rgbObj.r) && Number.isFinite(rgbObj === null || rgbObj === void 0 ? void 0 : rgbObj.g) && Number.isFinite(rgbObj === null || rgbObj === void 0 ? void 0 : rgbObj.b)) {
134
+ return [rgbObj.r, rgbObj.g, rgbObj.b];
135
+ }
136
+ }
137
+
138
+ return null;
139
+ }
134
140
  /**
135
141
  * Whether color is rgb
136
142
  * @returns
@@ -142,4 +148,14 @@ function isRgbColor(color) {
142
148
  return Number.isFinite(n) && n <= 255 && n >= 0;
143
149
  }));
144
150
  }
145
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xvci11dGlscy50cyJdLCJuYW1lcyI6WyJoZXhUb1JnYiIsImhleCIsInJlc3VsdCIsImlzSGV4Q29sb3IiLCJyIiwicGFyc2VJbnQiLCJnIiwiYiIsImV4ZWMiLCJQYWROdW0iLCJjIiwidG9TdHJpbmciLCJsZW5ndGgiLCJyZ2JUb0hleCIsIm1hcCIsIm4iLCJqb2luIiwidG9VcHBlckNhc2UiLCJnZXRDb2xvckdyb3VwQnlOYW1lIiwiY29sb3JSYW5nZSIsIm5hbWUiLCJyZXBsYWNlIiwicmV2ZXJzZUNvbG9yUmFuZ2UiLCJyZXZlcnNlZCIsImNvbG9ycyIsInNsaWNlIiwicmV2ZXJzZSIsImNyZWF0ZUxpbmVhckdyYWRpZW50IiwiZGlyZWN0aW9uIiwic3RlcCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwiYmFuZHMiLCJyZ2IiLCJpbmRleCIsImlzUmdiQ29sb3IiLCJjb2xvciIsIkJvb2xlYW4iLCJBcnJheSIsImlzQXJyYXkiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXlDO0FBQzlDLE1BQU1DLE1BQU0sR0FBR0MsVUFBVSxDQUFDRixHQUFELENBQXpCOztBQUVBLE1BQUksQ0FBQ0MsTUFBTCxFQUFhO0FBQ1gsV0FBTyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxDQUFQO0FBQ0Q7O0FBRUQsTUFBTUUsQ0FBQyxHQUFHQyxRQUFRLENBQUNILE1BQU0sQ0FBQyxDQUFELENBQVAsRUFBWSxFQUFaLENBQWxCO0FBQ0EsTUFBTUksQ0FBQyxHQUFHRCxRQUFRLENBQUNILE1B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LElBRUVBLEtBQUssQ0FBQ3hCLE1BQU4sS0FBaUIsQ0FGbkIsSUFHRXdCLEtBQUssQ0FBQ0ksS0FBTixDQUFZLFVBQUF6QixDQUFDO0FBQUEsV0FBSTBCLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQjNCLENBQWhCLEtBQXNCQSxDQUFDLElBQUksR0FBM0IsSUFBa0NBLENBQUMsSUFBSSxDQUEzQztBQUFBLEdBQWIsQ0FKVSxDQUFkO0FBTUQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0NvbG9yUmFuZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7SGV4Q29sb3IsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLyoqXG4gKiBnZXQgciBnIGIgZnJvbSBoZXggY29kZVxuICpcbiAqIEBwYXJhbSBoZXhcbiAqIEByZXR1cm5zIGFycmF5IG9mIHIgZyBic1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiBSR0JDb2xvciB7XG4gIGNvbnN0IHJlc3VsdCA9IGlzSGV4Q29sb3IoaGV4KTtcblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHJldHVybiBbMCwgMCwgMF07XG4gIH1cblxuICBjb25zdCByID0gcGFyc2VJbnQocmVzdWx0WzFdLCAxNik7XG4gIGNvbnN0IGcgPSBwYXJzZUludChyZXN1bHRbMl0sIDE2KTtcbiAgY29uc3QgYiA9IHBhcnNlSW50KHJlc3VsdFszXSwgMTYpO1xuXG4gIHJldHVybiBbciwgZywgYl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hleENvbG9yKGhleDogc3RyaW5nKTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFBhZE51bShjKSB7XG4gIGNvbnN0IGhleCA9IGMudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/IGAwJHtoZXh9YCA6IGhleDtcbn1cblxuLyoqXG4gKiBnZXQgaGV4IGZyb20gciBnIGJcbiAqXG4gKiBAcGFyYW0gcmdiXG4gKiBAcmV0dXJucyBoZXggc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZ2JUb0hleChbciwgZywgYl06IFJHQkNvbG9yKTogSGV4Q29sb3Ige1xuICByZXR1cm4gYCMke1tyLCBnLCBiXS5tYXAobiA9PiBQYWROdW0obikpLmpvaW4oJycpfWAudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBHZXQgY29sb3IgZ3JvdXAgbmFtZSBieSBwYXJzaW5nIG5hbWUsIGRpc2NhcmQgc3RlcCBpbiB0aGUgbmFtZVxuICogZS5nLiBHbG9iYWwgV2FybWluZyA2IC0+IEdsb2JhbCBXYXJtaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbG9yUmFuZ2VcbiAqIEByZXR1cm4ge3N0cmluZyB8IG51bGx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvckdyb3VwQnlOYW1lKGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFjb2xvclJhbmdlIHx8IHR5cGVvZiBjb2xvclJhbmdlLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gY29sb3JSYW5nZS5uYW1lLnJlcGxhY2UoL1xcYlteYS16QS1aXSskLywgJycpO1xufVxuXG4vKipcbiAqIEdldCBhIHJldmVyc2VkIGNvbG9yUmFuZ2VcbiAqIEBwYXJhbSByZXZlcnNlZFxuICogQHBhcmFtIGNvbG9yUmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VDb2xvclJhbmdlKHJldmVyc2VkOiBib29sZWFuLCBjb2xvclJhbmdlOiBDb2xvclJhbmdlKTogQ29sb3JSYW5nZSB8IG51bGwge1xuICBpZiAoIWNvbG9yUmFuZ2UpIHJldHVybiBudWxsO1xuICAvLyBpZiAoY29sb3JSYW5nZS5yZXZlcnNlZCkgcmV0dXJuIGNvbG9yUmFuZ2U7XG4gIHJldHVybiB7XG4gICAgLi4uY29sb3JSYW5nZSxcbiAgICByZXZlcnNlZCxcbiAgICBjb2xvcnM6IGNvbG9yUmFuZ2UuY29sb3JzLnNsaWNlKCkucmV2ZXJzZSgpXG4gIH07XG59XG5cbi8qKlxuICogZ2l2ZW4gYSBsaXN0IG9mIHJnYiBhcnJheXMgaXQgd2lsbCBnZW5lcmF0ZSBhIGxpbmVhciBncmFkaWVudCBjc3MgcnVsZVxuICogQHBhcmFtIGRpcmVjdGlvblxuICogQHBhcmFtIGNvbG9yc1xuICogQHJldHVyblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGluZWFyR3JhZGllbnQoZGlyZWN0aW9uOiBzdHJpbmcsIGNvbG9yczogUkdCQ29sb3JbXSkge1xuICBjb25zdCBzdGVwID0gcGFyc2VGbG9hdCgoMTAwLjAgLyBjb2xvcnMubGVuZ3RoKS50b0ZpeGVkKDIpKTtcbiAgY29uc3QgYmFuZHMgPSBjb2xvcnMubWFwKChyZ2IsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIGByZ2JhKCR7cmdiLmpvaW4oJywnKX0sIDEpICR7c3RlcCAqIGluZGV4fSUsIHJnYmEoJHtyZ2Iuam9pbignLCcpfSwgMSkgJHtzdGVwICpcbiAgICAgIChpbmRleCArIDEpfSVgO1xuICB9KTtcblxuICByZXR1cm4gYGxpbmVhci1ncmFkaWVudCh0byAke2RpcmVjdGlvbn0sICR7YmFuZHMuam9pbignLCcpfSlgO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgY29sb3IgaXMgcmdiXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZ2JDb2xvcihjb2xvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBjb2xvciAmJlxuICAgICAgQXJyYXkuaXNBcnJheShjb2xvcikgJiZcbiAgICAgIGNvbG9yLmxlbmd0aCA9PT0gMyAmJlxuICAgICAgY29sb3IuZXZlcnkobiA9PiBOdW1iZXIuaXNGaW5pdGUobikgJiYgbiA8PSAyNTUgJiYgbiA+PSAwKVxuICApO1xufVxuIl19
151
+ /**
152
+ * Take color values in 0-255 range and map to [0, 1]
153
+ */
154
+
155
+
156
+ function normalizeColor(color) {
157
+ return color.map(function (component) {
158
+ return component / 255.0;
159
+ });
160
+ }
161
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xvci11dGlscy50cyJdLCJuYW1lcyI6WyJoZXhUb1JnYiIsImhleCIsInJlc3VsdCIsImlzSGV4Q29sb3IiLCJyIiwicGFyc2VJbnQiLCJnIiwiYiIsImV4ZWMiLCJQYWROdW0iLCJjIiwidG9TdHJpbmciLCJsZW5ndGgiLCJyZ2JUb0hleCIsIm1hcCIsIm4iLCJqb2luIiwidG9VcHBlckNhc2UiLCJnZXRDb2xvckdyb3VwQnlOYW1lIiwiY29sb3JSYW5nZSIsIm5hbWUiLCJyZXBsYWNlIiwicmV2ZXJzZUNvbG9yUmFuZ2UiLCJyZXZlcnNlZCIsImNvbG9ycyIsInNsaWNlIiwicmV2ZXJzZSIsImNyZWF0ZUxpbmVhckdyYWRpZW50IiwiZGlyZWN0aW9uIiwic3RlcCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwiYmFuZHMiLCJyZ2IiLCJpbmRleCIsImNvbG9yTWF5YmVUb1JHQiIsImNvbG9yIiwiaXNSZ2JDb2xvciIsInJnYk9iaiIsIk51bWJlciIsImlzRmluaXRlIiwiQm9vbGVhbiIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5Iiwibm9ybWFsaXplQ29sb3IiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOzs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQSxRQUFULENBQWtCQyxHQUFsQixFQUF5QztBQUM5QyxNQUFNQyxNQUFNLEdBQUdDLFVBQVUsQ0FBQ0YsR0FBRCxDQUF6Qjs7QUFFQSxNQUFJLENBQUNDLE1BQUwsRUFBYTtBQUNYLFdBQU8sQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsQ0FBUDtBQUNEOztBQUVELE1BQU1FLENBQUMsR0FBR0MsUUFBUSxDQUFDSCxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVksRUFBWixDQUFsQjtBQUNBLE1BQU1JLENBQUMsR0FBR0QsUUFBUSxDQUFDSCxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVksRUFBWixDQUFs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ZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7cmdiIGFzIGQzUmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge0NvbG9yUmFuZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7SGV4Q29sb3IsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLyoqXG4gKiBnZXQgciBnIGIgZnJvbSBoZXggY29kZVxuICpcbiAqIEBwYXJhbSBoZXhcbiAqIEByZXR1cm5zIGFycmF5IG9mIHIgZyBic1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiBSR0JDb2xvciB7XG4gIGNvbnN0IHJlc3VsdCA9IGlzSGV4Q29sb3IoaGV4KTtcblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHJldHVybiBbMCwgMCwgMF07XG4gIH1cblxuICBjb25zdCByID0gcGFyc2VJbnQocmVzdWx0WzFdLCAxNik7XG4gIGNvbnN0IGcgPSBwYXJzZUludChyZXN1bHRbMl0sIDE2KTtcbiAgY29uc3QgYiA9IHBhcnNlSW50KHJlc3VsdFszXSwgMTYpO1xuXG4gIHJldHVybiBbciwgZywgYl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hleENvbG9yKGhleDogc3RyaW5nKTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFBhZE51bShjKSB7XG4gIGNvbnN0IGhleCA9IGMudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/IGAwJHtoZXh9YCA6IGhleDtcbn1cblxuLyoqXG4gKiBnZXQgaGV4IGZyb20gciBnIGJcbiAqXG4gKiBAcGFyYW0gcmdiXG4gKiBAcmV0dXJucyBoZXggc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZ2JUb0hleChbciwgZywgYl06IFJHQkNvbG9yKTogSGV4Q29sb3Ige1xuICByZXR1cm4gYCMke1tyLCBnLCBiXS5tYXAobiA9PiBQYWROdW0obikpLmpvaW4oJycpfWAudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBHZXQgY29sb3IgZ3JvdXAgbmFtZSBieSBwYXJzaW5nIG5hbWUsIGRpc2NhcmQgc3RlcCBpbiB0aGUgbmFtZVxuICogZS5nLiBHbG9iYWwgV2FybWluZyA2IC0+IEdsb2JhbCBXYXJtaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbG9yUmFuZ2VcbiAqIEByZXR1cm4ge3N0cmluZyB8IG51bGx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvckdyb3VwQnlOYW1lKGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFjb2xvclJhbmdlIHx8IHR5cGVvZiBjb2xvclJhbmdlLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gY29sb3JSYW5nZS5uYW1lLnJlcGxhY2UoL1xcYlteYS16QS1aXSskLywgJycpO1xufVxuXG4vKipcbiAqIEdldCBhIHJldmVyc2VkIGNvbG9yUmFuZ2VcbiAqIEBwYXJhbSByZXZlcnNlZFxuICogQHBhcmFtIGNvbG9yUmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VDb2xvclJhbmdlKHJldmVyc2VkOiBib29sZWFuLCBjb2xvclJhbmdlOiBDb2xvclJhbmdlKTogQ29sb3JSYW5nZSB8IG51bGwge1xuICBpZiAoIWNvbG9yUmFuZ2UpIHJldHVybiBudWxsO1xuICAvLyBpZiAoY29sb3JSYW5nZS5yZXZlcnNlZCkgcmV0dXJuIGNvbG9yUmFuZ2U7XG4gIHJldHVybiB7XG4gICAgLi4uY29sb3JSYW5nZSxcbiAgICByZXZlcnNlZCxcbiAgICBjb2xvcnM6IGNvbG9yUmFuZ2UuY29sb3JzLnNsaWNlKCkucmV2ZXJzZSgpXG4gIH07XG59XG5cbi8qKlxuICogZ2l2ZW4gYSBsaXN0IG9mIHJnYiBhcnJheXMgaXQgd2lsbCBnZW5lcmF0ZSBhIGxpbmVhciBncmFkaWVudCBjc3MgcnVsZVxuICogQHBhcmFtIGRpcmVjdGlvblxuICogQHBhcmFtIGNvbG9yc1xuICogQHJldHVyblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGluZWFyR3JhZGllbnQoZGlyZWN0aW9uOiBzdHJpbmcsIGNvbG9yczogUkdCQ29sb3JbXSkge1xuICBjb25zdCBzdGVwID0gcGFyc2VGbG9hdCgoMTAwLjAgLyBjb2xvcnMubGVuZ3RoKS50b0ZpeGVkKDIpKTtcbiAgY29uc3QgYmFuZHMgPSBjb2xvcnMubWFwKChyZ2IsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIGByZ2JhKCR7cmdiLmpvaW4oJywnKX0sIDEpICR7c3RlcCAqIGluZGV4fSUsIHJnYmEoJHtyZ2Iuam9pbignLCcpfSwgMSkgJHtzdGVwICpcbiAgICAgIChpbmRleCArIDEpfSVgO1xuICB9KTtcblxuICByZXR1cm4gYGxpbmVhci1ncmFkaWVudCh0byAke2RpcmVjdGlvbn0sICR7YmFuZHMuam9pbignLCcpfSlgO1xufVxuXG4vKipcbiAqIENvbnZlcnQgY29sb3IgdG8gUkdCXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvck1heWJlVG9SR0IoY29sb3I6IHVua25vd24pOiBSR0JDb2xvciB8IG51bGwge1xuICBpZiAoaXNSZ2JDb2xvcihjb2xvcikpIHtcbiAgICByZXR1cm4gY29sb3IgYXMgUkdCQ29sb3I7XG4gIH1cblxuICBpZiAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHJnYk9iaiA9IGQzUmdiKGNvbG9yKTtcbiAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHJnYk9iaj8ucikgJiYgTnVtYmVyLmlzRmluaXRlKHJnYk9iaj8uZykgJiYgTnVtYmVyLmlzRmluaXRlKHJnYk9iaj8uYikpIHtcbiAgICAgIHJldHVybiBbcmdiT2JqLnIsIHJnYk9iai5nLCByZ2JPYmouYl07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciBpcyByZ2JcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JnYkNvbG9yKGNvbG9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGNvbG9yICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNvbG9yKSAmJlxuICAgICAgY29sb3IubGVuZ3RoID09PSAzICYmXG4gICAgICBjb2xvci5ldmVyeShuID0+IE51bWJlci5pc0Zpbml0ZShuKSAmJiBuIDw9IDI1NSAmJiBuID49IDApXG4gICk7XG59XG5cbi8qKlxuICogVGFrZSBjb2xvciB2YWx1ZXMgaW4gMC0yNTUgcmFuZ2UgYW5kIG1hcCB0byBbMCwgMV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbG9yKGNvbG9yOiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgcmV0dXJuIGNvbG9yLm1hcChjb21wb25lbnQgPT4gY29tcG9uZW50IC8gMjU1LjApO1xufVxuIl19