@kepler.gl/deckgl-arrow-layers 3.1.0-alpha.7 → 3.1.1

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.
@@ -1,13 +1 @@
1
- /**
2
- * Enum holding GeoArrow extension type names
3
- */
4
- export declare enum EXTENSION_NAME {
5
- POINT = "geoarrow.point",
6
- LINESTRING = "geoarrow.linestring",
7
- POLYGON = "geoarrow.polygon",
8
- MULTIPOINT = "geoarrow.multipoint",
9
- MULTILINESTRING = "geoarrow.multilinestring",
10
- MULTIPOLYGON = "geoarrow.multipolygon",
11
- WKB = "geoarrow.wkb"
12
- }
13
1
  export declare const DEFAULT_COLOR: [number, number, number, number];
package/dist/constants.js CHANGED
@@ -3,24 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.EXTENSION_NAME = exports.DEFAULT_COLOR = void 0;
6
+ exports.DEFAULT_COLOR = void 0;
7
7
  // SPDX-License-Identifier: MIT
8
8
  // Copyright contributors to the kepler.gl project
9
+
9
10
  // deck.gl-community
10
11
  // SPDX-License-Identifier: MIT
11
12
  // Copyright (c) vis.gl contributors
12
- /**
13
- * Enum holding GeoArrow extension type names
14
- */
15
- var EXTENSION_NAME = exports.EXTENSION_NAME = /*#__PURE__*/function (EXTENSION_NAME) {
16
- EXTENSION_NAME["POINT"] = "geoarrow.point";
17
- EXTENSION_NAME["LINESTRING"] = "geoarrow.linestring";
18
- EXTENSION_NAME["POLYGON"] = "geoarrow.polygon";
19
- EXTENSION_NAME["MULTIPOINT"] = "geoarrow.multipoint";
20
- EXTENSION_NAME["MULTILINESTRING"] = "geoarrow.multilinestring";
21
- EXTENSION_NAME["MULTIPOLYGON"] = "geoarrow.multipolygon";
22
- EXTENSION_NAME["WKB"] = "geoarrow.wkb";
23
- return EXTENSION_NAME;
24
- }({});
13
+
25
14
  var DEFAULT_COLOR = exports.DEFAULT_COLOR = [0, 0, 0, 255];
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFWFRFTlNJT05fTkFNRSIsImV4cG9ydHMiLCJERUZBVUxUX0NPTE9SIl0sInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBkZWNrLmdsLWNvbW11bml0eVxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IChjKSB2aXMuZ2wgY29udHJpYnV0b3JzXG5cbi8qKlxuICogRW51bSBob2xkaW5nIEdlb0Fycm93IGV4dGVuc2lvbiB0eXBlIG5hbWVzXG4gKi9cbmV4cG9ydCBlbnVtIEVYVEVOU0lPTl9OQU1FIHtcbiAgUE9JTlQgPSAnZ2VvYXJyb3cucG9pbnQnLFxuICBMSU5FU1RSSU5HID0gJ2dlb2Fycm93LmxpbmVzdHJpbmcnLFxuICBQT0xZR09OID0gJ2dlb2Fycm93LnBvbHlnb24nLFxuICBNVUxUSVBPSU5UID0gJ2dlb2Fycm93Lm11bHRpcG9pbnQnLFxuICBNVUxUSUxJTkVTVFJJTkcgPSAnZ2VvYXJyb3cubXVsdGlsaW5lc3RyaW5nJyxcbiAgTVVMVElQT0xZR09OID0gJ2dlb2Fycm93Lm11bHRpcG9seWdvbicsXG4gIFdLQiA9ICdnZW9hcnJvdy53a2InXG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwLCAyNTVdO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkEsSUFHWUEsY0FBYyxHQUFBQyxPQUFBLENBQUFELGNBQUEsMEJBQWRBLGNBQWM7RUFBZEEsY0FBYztFQUFkQSxjQUFjO0VBQWRBLGNBQWM7RUFBZEEsY0FBYztFQUFkQSxjQUFjO0VBQWRBLGNBQWM7RUFBZEEsY0FBYztFQUFBLE9BQWRBLGNBQWM7QUFBQTtBQVVuQixJQUFNRSxhQUErQyxHQUFBRCxPQUFBLENBQUFDLGFBQUEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0NPTE9SIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gZGVjay5nbC1jb21tdW5pdHlcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMCwgMCwgMCwgMjU1XTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRU8sSUFBTUEsYUFBK0MsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export { EXTENSION_NAME } from './constants';
2
1
  export { GeoArrowScatterplotLayer } from './layers/geo-arrow-scatterplot-layer';
3
2
  export { GeoArrowTextLayer } from './layers/geo-arrow-text-layer';
4
3
  export { GeoArrowArcLayer } from './layers/geo-arrow-arc-layer';
package/dist/index.js CHANGED
@@ -3,12 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "EXTENSION_NAME", {
7
- enumerable: true,
8
- get: function get() {
9
- return _constants.EXTENSION_NAME;
10
- }
11
- });
12
6
  Object.defineProperty(exports, "GeoArrowArcLayer", {
13
7
  enumerable: true,
14
8
  get: function get() {
@@ -27,8 +21,7 @@ Object.defineProperty(exports, "GeoArrowTextLayer", {
27
21
  return _geoArrowTextLayer.GeoArrowTextLayer;
28
22
  }
29
23
  });
30
- var _constants = require("./constants");
31
24
  var _geoArrowScatterplotLayer = require("./layers/geo-arrow-scatterplot-layer");
32
25
  var _geoArrowTextLayer = require("./layers/geo-arrow-text-layer");
33
26
  var _geoArrowArcLayer = require("./layers/geo-arrow-arc-layer");
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9nZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIiLCJfZ2VvQXJyb3dUZXh0TGF5ZXIiLCJfZ2VvQXJyb3dBcmNMYXllciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQge0VYVEVOU0lPTl9OQU1FfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB7R2VvQXJyb3dTY2F0dGVycGxvdExheWVyfSBmcm9tICcuL2xheWVycy9nZW8tYXJyb3ctc2NhdHRlcnBsb3QtbGF5ZXInO1xuZXhwb3J0IHtHZW9BcnJvd1RleHRMYXllcn0gZnJvbSAnLi9sYXllcnMvZ2VvLWFycm93LXRleHQtbGF5ZXInO1xuZXhwb3J0IHtHZW9BcnJvd0FyY0xheWVyfSBmcm9tICcuL2xheWVycy9nZW8tYXJyb3ctYXJjLWxheWVyJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx5QkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsa0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGlCQUFBLEdBQUFILE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvQXJyb3dTY2F0dGVycGxvdExheWVyIiwicmVxdWlyZSIsIl9nZW9BcnJvd1RleHRMYXllciIsIl9nZW9BcnJvd0FyY0xheWVyIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCB7R2VvQXJyb3dTY2F0dGVycGxvdExheWVyfSBmcm9tICcuL2xheWVycy9nZW8tYXJyb3ctc2NhdHRlcnBsb3QtbGF5ZXInO1xuZXhwb3J0IHtHZW9BcnJvd1RleHRMYXllcn0gZnJvbSAnLi9sYXllcnMvZ2VvLWFycm93LXRleHQtbGF5ZXInO1xuZXhwb3J0IHtHZW9BcnJvd0FyY0xheWVyfSBmcm9tICcuL2xheWVycy9nZW8tYXJyb3ctYXJjLWxheWVyJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSx5QkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsa0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFGLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -17,9 +17,9 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
17
17
  var _typed = require("@deck.gl/core/typed");
18
18
  var _typed2 = require("@deck.gl/layers/typed");
19
19
  var ga = _interopRequireWildcard(require("@geoarrow/geoarrow-js"));
20
+ var _constants = require("@kepler.gl/constants");
20
21
  var _utils = require("../utils/utils");
21
22
  var _picking = require("../utils/picking");
22
- var _constants = require("../constants");
23
23
  var _validate = require("../utils/validate");
24
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -73,11 +73,11 @@ var GeoArrowScatterplotLayer = exports.GeoArrowScatterplotLayer = /*#__PURE__*/f
73
73
  }
74
74
  throw new Error('getPosition should pass in an arrow Vector of Point or MultiPoint type');
75
75
  } else {
76
- var pointVector = (0, _utils.getGeometryVector)(table, _constants.EXTENSION_NAME.POINT);
76
+ var pointVector = (0, _utils.getGeometryVector)(table, _constants.GEOARROW_EXTENSIONS.POINT);
77
77
  if (pointVector !== null) {
78
78
  return this._renderLayersPoint(pointVector);
79
79
  }
80
- var multiPointVector = (0, _utils.getGeometryVector)(table, _constants.EXTENSION_NAME.MULTIPOINT);
80
+ var multiPointVector = (0, _utils.getGeometryVector)(table, _constants.GEOARROW_EXTENSIONS.MULTIPOINT);
81
81
  if (multiPointVector !== null) {
82
82
  return this._renderLayersMultiPoint(multiPointVector);
83
83
  }
@@ -220,4 +220,4 @@ var GeoArrowScatterplotLayer = exports.GeoArrowScatterplotLayer = /*#__PURE__*/f
220
220
  }(_typed.CompositeLayer);
221
221
  (0, _defineProperty2["default"])(GeoArrowScatterplotLayer, "defaultProps", defaultProps);
222
222
  (0, _defineProperty2["default"])(GeoArrowScatterplotLayer, "layerName", 'GeoArrowScatterplotLayer');
223
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsImdhIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXRpbHMiLCJfcGlja2luZyIsIl9jb25zdGFudHMiLCJfdmFsaWRhdGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9TY2F0dGVycGxvdExheWVyJGRlZiIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJkZWZhdWx0UHJvcHMiLCJfZGF0YSIsImRhdGEiLCJfZ2V0UG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsIl91cHN0cmVhbURlZmF1bHRQcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJvdXJEZWZhdWx0UHJvcHMiLCJHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJnZXRQaWNraW5nSW5mbyIsInBhcmFtcyIsInByb3BzIiwicmVuZGVyTGF5ZXJzIiwidGFibGUiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeUNvbHVtbiIsInZlY3RvciIsImlzUG9pbnRWZWN0b3IiLCJfcmVuZGVyTGF5ZXJzUG9pbnQiLCJpc011bHRpUG9pbnRWZWN0b3IiLCJfcmVuZGVyTGF5ZXJzTXVsdGlQb2ludCIsIkVycm9yIiwicG9pbnRWZWN0b3IiLCJnZXRHZW9tZXRyeVZlY3RvciIsIkVYVEVOU0lPTl9OQU1FIiwiUE9JTlQiLCJtdWx0aVBvaW50VmVjdG9yIiwiTVVMVElQT0lOVCIsImFzc2VydCIsInZhbGlkYXRlQWNjZXNzb3JzIiwiX2V4dHJhY3RBY2Nlc3NvcnNGcm9tIiwiZXh0cmFjdEFjY2Vzc29yc0Zyb21Qcm9wcyIsIl9leHRyYWN0QWNjZXNzb3JzRnJvbTIiLCJfc2xpY2VkVG9BcnJheTIiLCJhY2Nlc3NvcnMiLCJvdGhlclByb3BzIiwidGFibGVPZmZzZXRzIiwiY29tcHV0ZUNodW5rT2Zmc2V0cyIsImxheWVycyIsInJlY29yZEJhdGNoSWR4IiwiYmF0Y2hlcyIsImdlb21ldHJ5RGF0YSIsImZsYXRDb29yZHNEYXRhIiwiY2hpbGQiLCJnZXRQb2ludENoaWxkIiwiZmxhdENvb3JkaW5hdGVBcnJheSIsInZhbHVlcyIsImJhdGNoT2Zmc2V0IiwiX29mZnNldHMiLCJpZCIsImNvbmNhdCIsImF0dHJpYnV0ZXMiLCJzaXplIiwidHlwZSIsImxpc3RTaXplIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwicHJvcE5hbWUiLCJwcm9wSW5wdXQiLCJhc3NpZ25BY2Nlc3NvciIsImNodW5rSWR4IiwibGF5ZXIiLCJnZXRTdWJMYXllclByb3BzIiwiZ2V0RmlsdGVyZWQiLCJnZXRGaWx0ZXJWYWx1ZSIsIl9leHRyYWN0QWNjZXNzb3JzRnJvbTMiLCJfZXh0cmFjdEFjY2Vzc29yc0Zyb200IiwibXVsdGlQb2ludERhdGEiLCJwb2ludERhdGEiLCJnZXRNdWx0aVBvaW50Q2hpbGQiLCJnZW9tT2Zmc2V0cyIsInZhbHVlT2Zmc2V0cyIsImludmVydGVkR2VvbU9mZnNldHMiLCJpbnZlcnRPZmZzZXRzIiwiX2kyIiwiX09iamVjdCRlbnRyaWVzMiIsIl9PYmplY3QkZW50cmllczIkX2kiLCJnZW9tQ29vcmRPZmZzZXRzIiwiQ29tcG9zaXRlTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF5ZXJzL2dlby1hcnJvdy1zY2F0dGVycGxvdC1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBkZWNrLmdsLWNvbW11bml0eVxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IChjKSB2aXMuZ2wgY29udHJpYnV0b3JzXG5cbmltcG9ydCB7XG4gIENvbXBvc2l0ZUxheWVyLFxuICBDb21wb3NpdGVMYXllclByb3BzLFxuICBEZWZhdWx0UHJvcHMsXG4gIEdldFBpY2tpbmdJbmZvUGFyYW1zLFxuICBMYXllcixcbiAgTGF5ZXJzTGlzdCxcbiAgYXNzZXJ0XG59IGZyb20gJ0BkZWNrLmdsL2NvcmUvdHlwZWQnO1xuaW1wb3J0IHtTY2F0dGVycGxvdExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHR5cGUge1NjYXR0ZXJwbG90TGF5ZXJQcm9wc30gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzL3R5cGVkJztcbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgKiBhcyBnYSBmcm9tICdAZ2VvYXJyb3cvZ2VvYXJyb3ctanMnO1xuaW1wb3J0IHtcbiAgYXNzaWduQWNjZXNzb3IsXG4gIGV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHMsXG4gIGdldEdlb21ldHJ5VmVjdG9yLFxuICBpbnZlcnRPZmZzZXRzXG59IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7R2VvQXJyb3dFeHRyYVBpY2tpbmdQcm9wcywgY29tcHV0ZUNodW5rT2Zmc2V0cywgZ2V0UGlja2luZ0luZm99IGZyb20gJy4uL3V0aWxzL3BpY2tpbmcnO1xuaW1wb3J0IHtDb2xvckFjY2Vzc29yLCBGbG9hdEFjY2Vzc29yLCBHZW9BcnJvd1BpY2tpbmdJbmZvLCBFeHRlbnNpb25Qcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtFWFRFTlNJT05fTkFNRX0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7dmFsaWRhdGVBY2Nlc3NvcnN9IGZyb20gJy4uL3V0aWxzL3ZhbGlkYXRlJztcblxuLyoqIEFsbCBwcm9wZXJ0aWVzIHN1cHBvcnRlZCBieSBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIgKi9cbmV4cG9ydCB0eXBlIEdlb0Fycm93U2NhdHRlcnBsb3RMYXllclByb3BzID0gT21pdDxcbiAgU2NhdHRlcnBsb3RMYXllclByb3BzPGFycm93LlRhYmxlPixcbiAgJ2RhdGEnIHwgJ2dldFBvc2l0aW9uJyB8ICdnZXRSYWRpdXMnIHwgJ2dldEZpbGxDb2xvcicgfCAnZ2V0TGluZUNvbG9yJ1xuPiAmXG4gIF9HZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXJQcm9wcyAmXG4gIENvbXBvc2l0ZUxheWVyUHJvcHM7XG5cbi8qKiBQcm9wZXJ0aWVzIGFkZGVkIGJ5IEdlb0Fycm93U2NhdHRlcnBsb3RMYXllciAqL1xudHlwZSBfR2VvQXJyb3dTY2F0dGVycGxvdExheWVyUHJvcHMgPSB7XG4gIGRhdGE6IGFycm93LlRhYmxlO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHZhbGlkYXRlIHRoZSBhcnJheXMgcHJvdmlkZWQgKGUuZy4gY2h1bmsgbGVuZ3RocylcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgX3ZhbGlkYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENlbnRlciBwb3NpdGlvbiBhY2Nlc3Nvci5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB3aWxsIGJlIGluZmVycmVkIGJ5IGZpbmRpbmcgYSBjb2x1bW4gd2l0aCBleHRlbnNpb24gdHlwZVxuICAgKiBgXCJnZW9hcnJvdy5wb2ludFwiYCBvciBgXCJnZW9hcnJvdy5tdWx0aXBvaW50XCJgLlxuICAgKi9cbiAgZ2V0UG9zaXRpb24/OiBnYS52ZWN0b3IuUG9pbnRWZWN0b3IgfCBnYS52ZWN0b3IuTXVsdGlQb2ludFZlY3RvcjtcbiAgLyoqXG4gICAqIFJhZGl1cyBhY2Nlc3Nvci5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZ2V0UmFkaXVzPzogRmxvYXRBY2Nlc3NvcjtcbiAgLyoqXG4gICAqIEZpbGwgY29sb3IgYWNjZXNzb3IuXG4gICAqIEBkZWZhdWx0IFswLCAwLCAwLCAyNTVdXG4gICAqL1xuICBnZXRGaWxsQ29sb3I/OiBDb2xvckFjY2Vzc29yO1xuICAvKipcbiAgICogU3Ryb2tlIGNvbG9yIGFjY2Vzc29yLlxuICAgKiBAZGVmYXVsdCBbMCwgMCwgMCwgMjU1XVxuICAgKi9cbiAgZ2V0TGluZUNvbG9yPzogQ29sb3JBY2Nlc3NvcjtcbiAgLyoqXG4gICAqIFN0cm9rZSB3aWR0aCBhY2Nlc3Nvci5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZ2V0TGluZVdpZHRoPzogRmxvYXRBY2Nlc3Nvcjtcbn07XG5cbi8vIFJlbW92ZSBkYXRhIGFuZCBnZXRQb3NpdGlvbiBmcm9tIHRoZSB1cHN0cmVhbSBkZWZhdWx0IHByb3BzXG5jb25zdCB7XG4gIGRhdGE6IF9kYXRhLFxuICBnZXRQb3NpdGlvbjogX2dldFBvc2l0aW9uLFxuICAuLi5fdXBzdHJlYW1EZWZhdWx0UHJvcHNcbn0gPSBTY2F0dGVycGxvdExheWVyLmRlZmF1bHRQcm9wcztcblxuLy8gRGVmYXVsdCBwcm9wcyBhZGRlZCBieSB1c1xuY29uc3Qgb3VyRGVmYXVsdFByb3BzID0ge1xuICBfdmFsaWRhdGU6IHRydWVcbn07XG5cbi8vIEB0cy1leHBlY3QtZXJyb3JcbmNvbnN0IGRlZmF1bHRQcm9wczogRGVmYXVsdFByb3BzPEdlb0Fycm93U2NhdHRlcnBsb3RMYXllclByb3BzPiA9IHtcbiAgLi4uX3Vwc3RyZWFtRGVmYXVsdFByb3BzLFxuICAuLi5vdXJEZWZhdWx0UHJvcHNcbn07XG5cbmV4cG9ydCBjbGFzcyBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXI8RXh0cmFQcm9wcyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxcbiAgR2VvQXJyb3dTY2F0dGVycGxvdExheWVyUHJvcHMgJiBFeHRyYVByb3BzXG4+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXInO1xuXG4gIGdldFBpY2tpbmdJbmZvKFxuICAgIHBhcmFtczogR2V0UGlja2luZ0luZm9QYXJhbXMgJiB7XG4gICAgICBzb3VyY2VMYXllcjoge3Byb3BzOiBHZW9BcnJvd0V4dHJhUGlja2luZ1Byb3BzfTtcbiAgICB9XG4gICk6IEdlb0Fycm93UGlja2luZ0luZm8ge1xuICAgIHJldHVybiBnZXRQaWNraW5nSW5mbyhwYXJhbXMsIHRoaXMucHJvcHMuZGF0YSk7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKTogTGF5ZXI8b2JqZWN0PiB8IExheWVyc0xpc3QgfCBudWxsIHtcbiAgICBjb25zdCB7ZGF0YTogdGFibGV9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICh0aGlzLnByb3BzLmdldFBvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGdlb21ldHJ5Q29sdW1uID0gdGhpcy5wcm9wcy5nZXRQb3NpdGlvbjtcbiAgICAgIGlmIChnZW9tZXRyeUNvbHVtbiAhPT0gdW5kZWZpbmVkICYmIGdhLnZlY3Rvci5pc1BvaW50VmVjdG9yKGdlb21ldHJ5Q29sdW1uKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyTGF5ZXJzUG9pbnQoZ2VvbWV0cnlDb2x1bW4pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2VvbWV0cnlDb2x1bW4gIT09IHVuZGVmaW5lZCAmJiBnYS52ZWN0b3IuaXNNdWx0aVBvaW50VmVjdG9yKGdlb21ldHJ5Q29sdW1uKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyTGF5ZXJzTXVsdGlQb2ludChnZW9tZXRyeUNvbHVtbik7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0UG9zaXRpb24gc2hvdWxkIHBhc3MgaW4gYW4gYXJyb3cgVmVjdG9yIG9mIFBvaW50IG9yIE11bHRpUG9pbnQgdHlwZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb2ludFZlY3RvciA9IGdldEdlb21ldHJ5VmVjdG9yKHRhYmxlLCBFWFRFTlNJT05fTkFNRS5QT0lOVCk7XG4gICAgICBpZiAocG9pbnRWZWN0b3IgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc1BvaW50KHBvaW50VmVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXVsdGlQb2ludFZlY3RvciA9IGdldEdlb21ldHJ5VmVjdG9yKHRhYmxlLCBFWFRFTlNJT05fTkFNRS5NVUxUSVBPSU5UKTtcbiAgICAgIGlmIChtdWx0aVBvaW50VmVjdG9yICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJMYXllcnNNdWx0aVBvaW50KG11bHRpUG9pbnRWZWN0b3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignZ2V0UG9zaXRpb24gbm90IEdlb0Fycm93IHBvaW50IG9yIG11bHRpcG9pbnQnKTtcbiAgfVxuXG4gIF9yZW5kZXJMYXllcnNQb2ludChnZW9tZXRyeUNvbHVtbjogZ2EudmVjdG9yLlBvaW50VmVjdG9yKTogTGF5ZXI8b2JqZWN0PiB8IExheWVyc0xpc3QgfCBudWxsIHtcbiAgICBjb25zdCB7ZGF0YTogdGFibGV9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICh0aGlzLnByb3BzLl92YWxpZGF0ZSkge1xuICAgICAgYXNzZXJ0KGdhLnZlY3Rvci5pc1BvaW50VmVjdG9yKGdlb21ldHJ5Q29sdW1uKSk7XG4gICAgICB2YWxpZGF0ZUFjY2Vzc29ycyh0aGlzLnByb3BzLCB0YWJsZSk7XG4gICAgfVxuXG4gICAgLy8gRXhjbHVkZSBtYW51YWxseS1zZXQgYWNjZXNzb3JzXG4gICAgY29uc3QgW2FjY2Vzc29ycywgb3RoZXJQcm9wc10gPSBleHRyYWN0QWNjZXNzb3JzRnJvbVByb3BzKHRoaXMucHJvcHMsIFsnZ2V0UG9zaXRpb24nXSk7XG4gICAgY29uc3QgdGFibGVPZmZzZXRzID0gY29tcHV0ZUNodW5rT2Zmc2V0cyh0YWJsZS5kYXRhKTtcblxuICAgIGNvbnN0IGxheWVyczogU2NhdHRlcnBsb3RMYXllcjxhbnk+W10gPSBbXTtcbiAgICBmb3IgKGxldCByZWNvcmRCYXRjaElkeCA9IDA7IHJlY29yZEJhdGNoSWR4IDwgdGFibGUuYmF0Y2hlcy5sZW5ndGg7IHJlY29yZEJhdGNoSWR4KyspIHtcbiAgICAgIGNvbnN0IGdlb21ldHJ5RGF0YSA9IGdlb21ldHJ5Q29sdW1uLmRhdGFbcmVjb3JkQmF0Y2hJZHhdO1xuICAgICAgY29uc3QgZmxhdENvb3Jkc0RhdGEgPSBnYS5jaGlsZC5nZXRQb2ludENoaWxkKGdlb21ldHJ5RGF0YSk7XG4gICAgICBjb25zdCBmbGF0Q29vcmRpbmF0ZUFycmF5ID0gZmxhdENvb3Jkc0RhdGEudmFsdWVzO1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGhvdyB0byBwcm9wZXJseSByZXRyaWV2ZSBiYXRjaCBvZmZzZXQ/XG4gICAgICBjb25zdCBiYXRjaE9mZnNldCA9IGdlb21ldHJ5Q29sdW1uLl9vZmZzZXRzW3JlY29yZEJhdGNoSWR4XTtcblxuICAgICAgY29uc3QgcHJvcHM6IFNjYXR0ZXJwbG90TGF5ZXJQcm9wczxhbnk+ICYgRXh0ZW5zaW9uUHJvcHMgPSB7XG4gICAgICAgIC8vIE5vdGU6IGJlY2F1c2UgdGhpcyBpcyBhIGNvbXBvc2l0ZSBsYXllciBhbmQgbm90IGRvaW5nIHRoZSByZW5kZXJpbmdcbiAgICAgICAgLy8gaXRzZWxmLCB3ZSBzdGlsbCBoYXZlIHRvIHBhc3MgaW4gb3VyIGRlZmF1bHRQcm9wc1xuICAgICAgICAuLi5vdXJEZWZhdWx0UHJvcHMsXG4gICAgICAgIC4uLm90aGVyUHJvcHMsXG5cbiAgICAgICAgLy8gdXNlZCBmb3IgcGlja2luZyBwdXJwb3Nlc1xuICAgICAgICByZWNvcmRCYXRjaElkeCxcbiAgICAgICAgdGFibGVPZmZzZXRzLFxuXG4gICAgICAgIGlkOiBgJHt0aGlzLnByb3BzLmlkfS1nZW9hcnJvdy1zY2F0dGVycGxvdC0ke3JlY29yZEJhdGNoSWR4fWAsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgZGF0YTogdGFibGUuYmF0Y2hlc1tyZWNvcmRCYXRjaElkeF0sXG4gICAgICAgICAgbGVuZ3RoOiBnZW9tZXRyeURhdGEubGVuZ3RoLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGdldFBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBmbGF0Q29vcmRpbmF0ZUFycmF5LFxuICAgICAgICAgICAgICBzaXplOiBnZW9tZXRyeURhdGEudHlwZS5saXN0U2l6ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChjb25zdCBbcHJvcE5hbWUsIHByb3BJbnB1dF0gb2YgT2JqZWN0LmVudHJpZXMoYWNjZXNzb3JzKSkge1xuICAgICAgICBhc3NpZ25BY2Nlc3Nvcih7XG4gICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgcHJvcElucHV0LFxuICAgICAgICAgIGNodW5rSWR4OiByZWNvcmRCYXRjaElkeCxcbiAgICAgICAgICBiYXRjaE9mZnNldFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGF5ZXIgPSBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyhwcm9wcyksXG4gICAgICAgIC8vIHByZXNlcnZlIGJpbmRlZCBhY2Nlc3NvcnMsIGFzIHRoZXkgYXJlIG92ZXJ3cml0ZW4gYmFjayBieSBwYXNzLXRocm91Z2ggYWNjZXNzb3JzIGZyb20gZXh0ZW5zaW9uc1xuICAgICAgICBnZXRGaWx0ZXJlZDogcHJvcHMuZ2V0RmlsdGVyZWQsXG4gICAgICAgIGdldEZpbHRlclZhbHVlOiBwcm9wcy5nZXRGaWx0ZXJWYWx1ZVxuICAgICAgfSk7XG4gICAgICBsYXllcnMucHVzaChsYXllcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxuXG4gIF9yZW5kZXJMYXllcnNNdWx0aVBvaW50KFxuICAgIGdlb21ldHJ5Q29sdW1uOiBnYS52ZWN0b3IuTXVsdGlQb2ludFZlY3RvclxuICApOiBMYXllcjxvYmplY3Q+IHwgTGF5ZXJzTGlzdCB8IG51bGwge1xuICAgIGNvbnN0IHtkYXRhOiB0YWJsZX0gPSB0aGlzLnByb3BzO1xuXG4gICAgLy8gVE9ETzogdmFsaWRhdGUgdGhhdCBpZiBuZXN0ZWQsIGFjY2Vzc29yIHByb3BzIGhhdmUgdGhlIHNhbWUgbmVzdGluZ1xuICAgIC8vIHN0cnVjdHVyZSBhcyB0aGUgbWFpbiBnZW9tZXRyeSBjb2x1bW4uXG4gICAgaWYgKHRoaXMucHJvcHMuX3ZhbGlkYXRlKSB7XG4gICAgICBhc3NlcnQoZ2EudmVjdG9yLmlzTXVsdGlQb2ludFZlY3RvcihnZW9tZXRyeUNvbHVtbikpO1xuICAgICAgdmFsaWRhdGVBY2Nlc3NvcnModGhpcy5wcm9wcywgdGFibGUpO1xuICAgIH1cblxuICAgIC8vIEV4Y2x1ZGUgbWFudWFsbHktc2V0IGFjY2Vzc29yc1xuICAgIGNvbnN0IFthY2Nlc3NvcnMsIG90aGVyUHJvcHNdID0gZXh0cmFjdEFjY2Vzc29yc0Zyb21Qcm9wcyh0aGlzLnByb3BzLCBbJ2dldFBvc2l0aW9uJ10pO1xuICAgIGNvbnN0IHRhYmxlT2Zmc2V0cyA9IGNvbXB1dGVDaHVua09mZnNldHModGFibGUuZGF0YSk7XG5cbiAgICBjb25zdCBsYXllcnM6IFNjYXR0ZXJwbG90TGF5ZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IHJlY29yZEJhdGNoSWR4ID0gMDsgcmVjb3JkQmF0Y2hJZHggPCB0YWJsZS5iYXRjaGVzLmxlbmd0aDsgcmVjb3JkQmF0Y2hJZHgrKykge1xuICAgICAgY29uc3QgbXVsdGlQb2ludERhdGEgPSBnZW9tZXRyeUNvbHVtbi5kYXRhW3JlY29yZEJhdGNoSWR4XTtcbiAgICAgIGNvbnN0IHBvaW50RGF0YSA9IGdhLmNoaWxkLmdldE11bHRpUG9pbnRDaGlsZChtdWx0aVBvaW50RGF0YSk7XG4gICAgICBjb25zdCBnZW9tT2Zmc2V0cyA9IG11bHRpUG9pbnREYXRhLnZhbHVlT2Zmc2V0cztcbiAgICAgIGNvbnN0IGZsYXRDb29yZHNEYXRhID0gZ2EuY2hpbGQuZ2V0UG9pbnRDaGlsZChwb2ludERhdGEpO1xuICAgICAgY29uc3QgZmxhdENvb3JkaW5hdGVBcnJheSA9IGZsYXRDb29yZHNEYXRhLnZhbHVlcztcblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBob3cgdG8gcHJvcGVybHkgcmV0cmlldmUgYmF0Y2ggb2Zmc2V0P1xuICAgICAgY29uc3QgYmF0Y2hPZmZzZXQgPSBnZW9tZXRyeUNvbHVtbi5fb2Zmc2V0c1tyZWNvcmRCYXRjaElkeF07XG5cbiAgICAgIGNvbnN0IHByb3BzOiBTY2F0dGVycGxvdExheWVyUHJvcHMgJiBFeHRlbnNpb25Qcm9wcyA9IHtcbiAgICAgICAgLy8gTm90ZTogYmVjYXVzZSB0aGlzIGlzIGEgY29tcG9zaXRlIGxheWVyIGFuZCBub3QgZG9pbmcgdGhlIHJlbmRlcmluZ1xuICAgICAgICAvLyBpdHNlbGYsIHdlIHN0aWxsIGhhdmUgdG8gcGFzcyBpbiBvdXIgZGVmYXVsdFByb3BzXG4gICAgICAgIC4uLm91ckRlZmF1bHRQcm9wcyxcbiAgICAgICAgLi4ub3RoZXJQcm9wcyxcblxuICAgICAgICAvLyB1c2VkIGZvciBwaWNraW5nIHB1cnBvc2VzXG4gICAgICAgIHJlY29yZEJhdGNoSWR4LFxuICAgICAgICB0YWJsZU9mZnNldHMsXG5cbiAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LWdlb2Fycm93LXNjYXR0ZXJwbG90LSR7cmVjb3JkQmF0Y2hJZHh9YCxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICBkYXRhOiB0YWJsZS5iYXRjaGVzW3JlY29yZEJhdGNoSWR4XSxcbiAgICAgICAgICAvLyBNYXAgZnJvbSBleHBhbmRlZCBtdWx0aS1nZW9tZXRyeSBpbmRleCB0byBvcmlnaW5hbCBpbmRleFxuICAgICAgICAgIC8vIFVzZWQgYm90aCBpbiBwaWNraW5nIGFuZCBmb3IgZnVuY3Rpb24gY2FsbGJhY2tzXG4gICAgICAgICAgaW52ZXJ0ZWRHZW9tT2Zmc2V0czogaW52ZXJ0T2Zmc2V0cyhnZW9tT2Zmc2V0cyksXG4gICAgICAgICAgLy8gTm90ZTogdGhpcyBuZWVkcyB0byBiZSB0aGUgbGVuZ3RoIG9uZSBsZXZlbCBkb3duLlxuICAgICAgICAgIGxlbmd0aDogcG9pbnREYXRhLmxlbmd0aCxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBnZXRQb3NpdGlvbjoge1xuICAgICAgICAgICAgICB2YWx1ZTogZmxhdENvb3JkaW5hdGVBcnJheSxcbiAgICAgICAgICAgICAgc2l6ZTogcG9pbnREYXRhLnR5cGUubGlzdFNpemVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvciAoY29uc3QgW3Byb3BOYW1lLCBwcm9wSW5wdXRdIG9mIE9iamVjdC5lbnRyaWVzKGFjY2Vzc29ycykpIHtcbiAgICAgICAgYXNzaWduQWNjZXNzb3Ioe1xuICAgICAgICAgIHByb3BzLFxuICAgICAgICAgIHByb3BOYW1lLFxuICAgICAgICAgIHByb3BJbnB1dCxcbiAgICAgICAgICBjaHVua0lkeDogcmVjb3JkQmF0Y2hJZHgsXG4gICAgICAgICAgZ2VvbUNvb3JkT2Zmc2V0czogZ2VvbU9mZnNldHMsXG4gICAgICAgICAgYmF0Y2hPZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheWVyID0gbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAuLi50aGlzLmdldFN1YkxheWVyUHJvcHMocHJvcHMpLFxuICAgICAgICAvLyBwcmVzZXJ2ZSBiaW5kZWQgYWNjZXNzb3JzLCBhcyB0aGV5IGFyZSBvdmVyd3JpdGVuIGJhY2sgYnkgcGFzcy10aHJvdWdoIGFjY2Vzc29ycyBmcm9tIGV4dGVuc2lvbnNcbiAgICAgICAgZ2V0RmlsdGVyZWQ6IHByb3BzLmdldEZpbHRlcmVkLFxuICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogcHJvcHMuZ2V0RmlsdGVyVmFsdWVcbiAgICAgIH0pO1xuICAgICAgbGF5ZXJzLnB1c2gobGF5ZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXllcnM7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQVNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLEVBQUEsR0FBQUMsdUJBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQU1BLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQVAsT0FBQTtBQUFvRCxTQUFBUSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQU4sd0JBQUFNLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWUsR0FBQSxDQUFBbEIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBVyxXQUFBaEIsQ0FBQSxFQUFBaUIsQ0FBQSxFQUFBcEIsQ0FBQSxXQUFBb0IsQ0FBQSxPQUFBQyxnQkFBQSxhQUFBRCxDQUFBLE9BQUFFLDJCQUFBLGFBQUFuQixDQUFBLEVBQUFvQix5QkFBQSxLQUFBQyxPQUFBLENBQUFDLFNBQUEsQ0FBQUwsQ0FBQSxFQUFBcEIsQ0FBQSxZQUFBcUIsZ0JBQUEsYUFBQWxCLENBQUEsRUFBQXVCLFdBQUEsSUFBQU4sQ0FBQSxDQUFBTyxLQUFBLENBQUF4QixDQUFBLEVBQUFILENBQUE7QUFBQSxTQUFBdUIsMEJBQUEsY0FBQXBCLENBQUEsSUFBQXlCLE9BQUEsQ0FBQUMsU0FBQSxDQUFBQyxPQUFBLENBQUFkLElBQUEsQ0FBQVEsT0FBQSxDQUFBQyxTQUFBLENBQUFHLE9BQUEsaUNBQUF6QixDQUFBLGFBQUFvQix5QkFBQSxZQUFBQSwwQkFBQSxhQUFBcEIsQ0FBQTtBQUFBLFNBQUE0QixRQUFBL0IsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQVEsTUFBQSxDQUFBcUIsSUFBQSxDQUFBaEMsQ0FBQSxPQUFBVyxNQUFBLENBQUFzQixxQkFBQSxRQUFBYixDQUFBLEdBQUFULE1BQUEsQ0FBQXNCLHFCQUFBLENBQUFqQyxDQUFBLEdBQUFFLENBQUEsS0FBQWtCLENBQUEsR0FBQUEsQ0FBQSxDQUFBYyxNQUFBLFdBQUFoQyxDQUFBLFdBQUFTLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFpQyxVQUFBLE9BQUFoQyxDQUFBLENBQUFpQyxJQUFBLENBQUFULEtBQUEsQ0FBQXhCLENBQUEsRUFBQWlCLENBQUEsWUFBQWpCLENBQUE7QUFBQSxTQUFBa0MsY0FBQXJDLENBQUEsYUFBQUUsQ0FBQSxNQUFBQSxDQUFBLEdBQUFvQyxTQUFBLENBQUFDLE1BQUEsRUFBQXJDLENBQUEsVUFBQUMsQ0FBQSxXQUFBbUMsU0FBQSxDQUFBcEMsQ0FBQSxJQUFBb0MsU0FBQSxDQUFBcEMsQ0FBQSxRQUFBQSxDQUFBLE9BQUE2QixPQUFBLENBQUFwQixNQUFBLENBQUFSLENBQUEsT0FBQXFDLE9BQUEsV0FBQXRDLENBQUEsUUFBQXVDLGdCQUFBLGFBQUF6QyxDQUFBLEVBQUFFLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFTLE1BQUEsQ0FBQStCLHlCQUFBLEdBQUEvQixNQUFBLENBQUFnQyxnQkFBQSxDQUFBM0MsQ0FBQSxFQUFBVyxNQUFBLENBQUErQix5QkFBQSxDQUFBdkMsQ0FBQSxLQUFBNEIsT0FBQSxDQUFBcEIsTUFBQSxDQUFBUixDQUFBLEdBQUFxQyxPQUFBLFdBQUF0QyxDQUFBLElBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsRUFBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBVixDQUFBLEVBQUFELENBQUEsaUJBQUFGLENBQUEsSUE3QnBEO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUEwQkE7O0FBUUE7O0FBcUNBO0FBQ0EsSUFBQTRDLHFCQUFBLEdBSUlDLHdCQUFnQixDQUFDQyxZQUFZO0VBSHpCQyxLQUFLLEdBQUFILHFCQUFBLENBQVhJLElBQUk7RUFDU0MsWUFBWSxHQUFBTCxxQkFBQSxDQUF6Qk0sV0FBVztFQUNSQyxxQkFBcUIsT0FBQUMseUJBQUEsYUFBQVIscUJBQUE7O0FBRzFCO0FBQ0EsSUFBTVMsZUFBZSxHQUFHO0VBQ3RCdkQsU0FBUyxFQUFFO0FBQ2IsQ0FBQzs7QUFFRDtBQUNBLElBQU1nRCxZQUF5RCxHQUFBVCxhQUFBLENBQUFBLGFBQUEsS0FDMURjLHFCQUFxQixHQUNyQkUsZUFBZSxDQUNuQjtBQUFDLElBRVdDLHdCQUF3QixHQUFBQyxPQUFBLENBQUFELHdCQUFBLDBCQUFBRSxlQUFBO0VBQUEsU0FBQUYseUJBQUE7SUFBQSxJQUFBRyxnQkFBQSxtQkFBQUgsd0JBQUE7SUFBQSxPQUFBbkMsVUFBQSxPQUFBbUMsd0JBQUEsRUFBQWhCLFNBQUE7RUFBQTtFQUFBLElBQUFvQixVQUFBLGFBQUFKLHdCQUFBLEVBQUFFLGVBQUE7RUFBQSxXQUFBRyxhQUFBLGFBQUFMLHdCQUFBO0lBQUFNLEdBQUE7SUFBQUMsS0FBQSxFQU1uQyxTQUFBQyxjQUFjQSxDQUNaQyxNQUVDLEVBQ29CO01BQ3JCLE9BQU8sSUFBQUQsdUJBQWMsRUFBQ0MsTUFBTSxFQUFFLElBQUksQ0FBQ0MsS0FBSyxDQUFDaEIsSUFBSSxDQUFDO0lBQ2hEO0VBQUM7SUFBQVksR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQUksWUFBWUEsQ0FBQSxFQUFzQztNQUNoRCxJQUFhQyxLQUFLLEdBQUksSUFBSSxDQUFDRixLQUFLLENBQXpCaEIsSUFBSTtNQUVYLElBQUksSUFBSSxDQUFDZ0IsS0FBSyxDQUFDZCxXQUFXLEtBQUtpQixTQUFTLEVBQUU7UUFDeEMsSUFBTUMsY0FBYyxHQUFHLElBQUksQ0FBQ0osS0FBSyxDQUFDZCxXQUFXO1FBQzdDLElBQUlrQixjQUFjLEtBQUtELFNBQVMsSUFBSTFFLEVBQUUsQ0FBQzRFLE1BQU0sQ0FBQ0MsYUFBYSxDQUFDRixjQUFjLENBQUMsRUFBRTtVQUMzRSxPQUFPLElBQUksQ0FBQ0csa0JBQWtCLENBQUNILGNBQWMsQ0FBQztRQUNoRDtRQUVBLElBQUlBLGNBQWMsS0FBS0QsU0FBUyxJQUFJMUUsRUFBRSxDQUFDNEUsTUFBTSxDQUFDRyxrQkFBa0IsQ0FBQ0osY0FBYyxDQUFDLEVBQUU7VUFDaEYsT0FBTyxJQUFJLENBQUNLLHVCQUF1QixDQUFDTCxjQUFjLENBQUM7UUFDckQ7UUFFQSxNQUFNLElBQUlNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQztNQUMzRixDQUFDLE1BQU07UUFDTCxJQUFNQyxXQUFXLEdBQUcsSUFBQUMsd0JBQWlCLEVBQUNWLEtBQUssRUFBRVcseUJBQWMsQ0FBQ0MsS0FBSyxDQUFDO1FBQ2xFLElBQUlILFdBQVcsS0FBSyxJQUFJLEVBQUU7VUFDeEIsT0FBTyxJQUFJLENBQUNKLGtCQUFrQixDQUFDSSxXQUFXLENBQUM7UUFDN0M7UUFFQSxJQUFNSSxnQkFBZ0IsR0FBRyxJQUFBSCx3QkFBaUIsRUFBQ1YsS0FBSyxFQUFFVyx5QkFBYyxDQUFDRyxVQUFVLENBQUM7UUFDNUUsSUFBSUQsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1VBQzdCLE9BQU8sSUFBSSxDQUFDTix1QkFBdUIsQ0FBQ00sZ0JBQWdCLENBQUM7UUFDdkQ7TUFDRjtNQUVBLE1BQU0sSUFBSUwsS0FBSyxDQUFDLDhDQUE4QyxDQUFDO0lBQ2pFO0VBQUM7SUFBQWQsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQVUsa0JBQWtCQSxDQUFDSCxjQUFxQyxFQUFxQztNQUMzRixJQUFhRixLQUFLLEdBQUksSUFBSSxDQUFDRixLQUFLLENBQXpCaEIsSUFBSTtNQUVYLElBQUksSUFBSSxDQUFDZ0IsS0FBSyxDQUFDbEUsU0FBUyxFQUFFO1FBQ3hCLElBQUFtRixhQUFNLEVBQUN4RixFQUFFLENBQUM0RSxNQUFNLENBQUNDLGFBQWEsQ0FBQ0YsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBQWMsMkJBQWlCLEVBQUMsSUFBSSxDQUFDbEIsS0FBSyxFQUFFRSxLQUFLLENBQUM7TUFDdEM7O01BRUE7TUFDQSxJQUFBaUIscUJBQUEsR0FBZ0MsSUFBQUMsZ0NBQXlCLEVBQUMsSUFBSSxDQUFDcEIsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFBQXFCLHNCQUFBLE9BQUFDLGVBQUEsYUFBQUgscUJBQUE7UUFBL0VJLFNBQVMsR0FBQUYsc0JBQUE7UUFBRUcsVUFBVSxHQUFBSCxzQkFBQTtNQUM1QixJQUFNSSxZQUFZLEdBQUcsSUFBQUMsNEJBQW1CLEVBQUN4QixLQUFLLENBQUNsQixJQUFJLENBQUM7TUFFcEQsSUFBTTJDLE1BQStCLEdBQUcsRUFBRTtNQUMxQyxLQUFLLElBQUlDLGNBQWMsR0FBRyxDQUFDLEVBQUVBLGNBQWMsR0FBRzFCLEtBQUssQ0FBQzJCLE9BQU8sQ0FBQ3RELE1BQU0sRUFBRXFELGNBQWMsRUFBRSxFQUFFO1FBQ3BGLElBQU1FLFlBQVksR0FBRzFCLGNBQWMsQ0FBQ3BCLElBQUksQ0FBQzRDLGNBQWMsQ0FBQztRQUN4RCxJQUFNRyxjQUFjLEdBQUd0RyxFQUFFLENBQUN1RyxLQUFLLENBQUNDLGFBQWEsQ0FBQ0gsWUFBWSxDQUFDO1FBQzNELElBQU1JLG1CQUFtQixHQUFHSCxjQUFjLENBQUNJLE1BQU07O1FBRWpEO1FBQ0EsSUFBTUMsV0FBVyxHQUFHaEMsY0FBYyxDQUFDaUMsUUFBUSxDQUFDVCxjQUFjLENBQUM7UUFFM0QsSUFBTTVCLEtBQWtELEdBQUEzQixhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxLQUduRGdCLGVBQWUsR0FDZm1DLFVBQVU7VUFFYjtVQUNBSSxjQUFjLEVBQWRBLGNBQWM7VUFDZEgsWUFBWSxFQUFaQSxZQUFZO1VBRVphLEVBQUUsS0FBQUMsTUFBQSxDQUFLLElBQUksQ0FBQ3ZDLEtBQUssQ0FBQ3NDLEVBQUUsNEJBQUFDLE1BQUEsQ0FBeUJYLGNBQWMsQ0FBRTtVQUM3RDVDLElBQUksRUFBRTtZQUNKO1lBQ0FBLElBQUksRUFBRWtCLEtBQUssQ0FBQzJCLE9BQU8sQ0FBQ0QsY0FBYyxDQUFDO1lBQ25DckQsTUFBTSxFQUFFdUQsWUFBWSxDQUFDdkQsTUFBTTtZQUMzQmlFLFVBQVUsRUFBRTtjQUNWdEQsV0FBVyxFQUFFO2dCQUNYVyxLQUFLLEVBQUVxQyxtQkFBbUI7Z0JBQzFCTyxJQUFJLEVBQUVYLFlBQVksQ0FBQ1ksSUFBSSxDQUFDQztjQUMxQjtZQUNGO1VBQ0Y7UUFBQyxFQUNGO1FBRUQsU0FBQUMsRUFBQSxNQUFBQyxlQUFBLEdBQW9DbEcsTUFBTSxDQUFDbUcsT0FBTyxDQUFDdkIsU0FBUyxDQUFDLEVBQUFxQixFQUFBLEdBQUFDLGVBQUEsQ0FBQXRFLE1BQUEsRUFBQXFFLEVBQUEsSUFBRTtVQUExRCxJQUFBRyxrQkFBQSxPQUFBekIsZUFBQSxhQUFBdUIsZUFBQSxDQUFBRCxFQUFBO1lBQU9JLFFBQVEsR0FBQUQsa0JBQUE7WUFBRUUsU0FBUyxHQUFBRixrQkFBQTtVQUM3QixJQUFBRyxxQkFBYyxFQUFDO1lBQ2JsRCxLQUFLLEVBQUxBLEtBQUs7WUFDTGdELFFBQVEsRUFBUkEsUUFBUTtZQUNSQyxTQUFTLEVBQVRBLFNBQVM7WUFDVEUsUUFBUSxFQUFFdkIsY0FBYztZQUN4QlEsV0FBVyxFQUFYQTtVQUNGLENBQUMsQ0FBQztRQUNKO1FBRUEsSUFBTWdCLEtBQUssR0FBRyxJQUFJdkUsd0JBQWdCLENBQUFSLGFBQUEsQ0FBQUEsYUFBQSxLQUM3QixJQUFJLENBQUNnRixnQkFBZ0IsQ0FBQ3JELEtBQUssQ0FBQztVQUMvQjtVQUNBc0QsV0FBVyxFQUFFdEQsS0FBSyxDQUFDc0QsV0FBVztVQUM5QkMsY0FBYyxFQUFFdkQsS0FBSyxDQUFDdUQ7UUFBYyxFQUNyQyxDQUFDO1FBQ0Y1QixNQUFNLENBQUN2RCxJQUFJLENBQUNnRixLQUFLLENBQUM7TUFDcEI7TUFFQSxPQUFPekIsTUFBTTtJQUNmO0VBQUM7SUFBQS9CLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFZLHVCQUF1QkEsQ0FDckJMLGNBQTBDLEVBQ1A7TUFDbkMsSUFBYUYsS0FBSyxHQUFJLElBQUksQ0FBQ0YsS0FBSyxDQUF6QmhCLElBQUk7O01BRVg7TUFDQTtNQUNBLElBQUksSUFBSSxDQUFDZ0IsS0FBSyxDQUFDbEUsU0FBUyxFQUFFO1FBQ3hCLElBQUFtRixhQUFNLEVBQUN4RixFQUFFLENBQUM0RSxNQUFNLENBQUNHLGtCQUFrQixDQUFDSixjQUFjLENBQUMsQ0FBQztRQUNwRCxJQUFBYywyQkFBaUIsRUFBQyxJQUFJLENBQUNsQixLQUFLLEVBQUVFLEtBQUssQ0FBQztNQUN0Qzs7TUFFQTtNQUNBLElBQUFzRCxzQkFBQSxHQUFnQyxJQUFBcEMsZ0NBQXlCLEVBQUMsSUFBSSxDQUFDcEIsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFBQXlELHNCQUFBLE9BQUFuQyxlQUFBLGFBQUFrQyxzQkFBQTtRQUEvRWpDLFNBQVMsR0FBQWtDLHNCQUFBO1FBQUVqQyxVQUFVLEdBQUFpQyxzQkFBQTtNQUM1QixJQUFNaEMsWUFBWSxHQUFHLElBQUFDLDRCQUFtQixFQUFDeEIsS0FBSyxDQUFDbEIsSUFBSSxDQUFDO01BRXBELElBQU0yQyxNQUEwQixHQUFHLEVBQUU7TUFDckMsS0FBSyxJQUFJQyxjQUFjLEdBQUcsQ0FBQyxFQUFFQSxjQUFjLEdBQUcxQixLQUFLLENBQUMyQixPQUFPLENBQUN0RCxNQUFNLEVBQUVxRCxjQUFjLEVBQUUsRUFBRTtRQUNwRixJQUFNOEIsY0FBYyxHQUFHdEQsY0FBYyxDQUFDcEIsSUFBSSxDQUFDNEMsY0FBYyxDQUFDO1FBQzFELElBQU0rQixTQUFTLEdBQUdsSSxFQUFFLENBQUN1RyxLQUFLLENBQUM0QixrQkFBa0IsQ0FBQ0YsY0FBYyxDQUFDO1FBQzdELElBQU1HLFdBQVcsR0FBR0gsY0FBYyxDQUFDSSxZQUFZO1FBQy9DLElBQU0vQixjQUFjLEdBQUd0RyxFQUFFLENBQUN1RyxLQUFLLENBQUNDLGFBQWEsQ0FBQzBCLFNBQVMsQ0FBQztRQUN4RCxJQUFNekIsbUJBQW1CLEdBQUdILGNBQWMsQ0FBQ0ksTUFBTTs7UUFFakQ7UUFDQSxJQUFNQyxXQUFXLEdBQUdoQyxjQUFjLENBQUNpQyxRQUFRLENBQUNULGNBQWMsQ0FBQztRQUUzRCxJQUFNNUIsS0FBNkMsR0FBQTNCLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBRzlDZ0IsZUFBZSxHQUNmbUMsVUFBVTtVQUViO1VBQ0FJLGNBQWMsRUFBZEEsY0FBYztVQUNkSCxZQUFZLEVBQVpBLFlBQVk7VUFFWmEsRUFBRSxLQUFBQyxNQUFBLENBQUssSUFBSSxDQUFDdkMsS0FBSyxDQUFDc0MsRUFBRSw0QkFBQUMsTUFBQSxDQUF5QlgsY0FBYyxDQUFFO1VBQzdENUMsSUFBSSxFQUFFO1lBQ0o7WUFDQUEsSUFBSSxFQUFFa0IsS0FBSyxDQUFDMkIsT0FBTyxDQUFDRCxjQUFjLENBQUM7WUFDbkM7WUFDQTtZQUNBbUMsbUJBQW1CLEVBQUUsSUFBQUMsb0JBQWEsRUFBQ0gsV0FBVyxDQUFDO1lBQy9DO1lBQ0F0RixNQUFNLEVBQUVvRixTQUFTLENBQUNwRixNQUFNO1lBQ3hCaUUsVUFBVSxFQUFFO2NBQ1Z0RCxXQUFXLEVBQUU7Z0JBQ1hXLEtBQUssRUFBRXFDLG1CQUFtQjtnQkFDMUJPLElBQUksRUFBRWtCLFNBQVMsQ0FBQ2pCLElBQUksQ0FBQ0M7Y0FDdkI7WUFDRjtVQUNGO1FBQUMsRUFDRjtRQUVELFNBQUFzQixHQUFBLE1BQUFDLGdCQUFBLEdBQW9DdkgsTUFBTSxDQUFDbUcsT0FBTyxDQUFDdkIsU0FBUyxDQUFDLEVBQUEwQyxHQUFBLEdBQUFDLGdCQUFBLENBQUEzRixNQUFBLEVBQUEwRixHQUFBLElBQUU7VUFBMUQsSUFBQUUsbUJBQUEsT0FBQTdDLGVBQUEsYUFBQTRDLGdCQUFBLENBQUFELEdBQUE7WUFBT2pCLFFBQVEsR0FBQW1CLG1CQUFBO1lBQUVsQixTQUFTLEdBQUFrQixtQkFBQTtVQUM3QixJQUFBakIscUJBQWMsRUFBQztZQUNibEQsS0FBSyxFQUFMQSxLQUFLO1lBQ0xnRCxRQUFRLEVBQVJBLFFBQVE7WUFDUkMsU0FBUyxFQUFUQSxTQUFTO1lBQ1RFLFFBQVEsRUFBRXZCLGNBQWM7WUFDeEJ3QyxnQkFBZ0IsRUFBRVAsV0FBVztZQUM3QnpCLFdBQVcsRUFBWEE7VUFDRixDQUFDLENBQUM7UUFDSjtRQUVBLElBQU1nQixLQUFLLEdBQUcsSUFBSXZFLHdCQUFnQixDQUFBUixhQUFBLENBQUFBLGFBQUEsS0FDN0IsSUFBSSxDQUFDZ0YsZ0JBQWdCLENBQUNyRCxLQUFLLENBQUM7VUFDL0I7VUFDQXNELFdBQVcsRUFBRXRELEtBQUssQ0FBQ3NELFdBQVc7VUFDOUJDLGNBQWMsRUFBRXZELEtBQUssQ0FBQ3VEO1FBQWMsRUFDckMsQ0FBQztRQUNGNUIsTUFBTSxDQUFDdkQsSUFBSSxDQUFDZ0YsS0FBSyxDQUFDO01BQ3BCO01BRUEsT0FBT3pCLE1BQU07SUFDZjtFQUFDO0FBQUEsRUExTCtFMEMscUJBQWM7QUFBQSxJQUFBNUYsZ0JBQUEsYUFBbkZhLHdCQUF3QixrQkFHYlIsWUFBWTtBQUFBLElBQUFMLGdCQUFBLGFBSHZCYSx3QkFBd0IsZUFJaEIsMEJBQTBCIiwiaWdub3JlTGlzdCI6W119
223
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsImdhIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX3BpY2tpbmciLCJfdmFsaWRhdGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9TY2F0dGVycGxvdExheWVyJGRlZiIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJkZWZhdWx0UHJvcHMiLCJfZGF0YSIsImRhdGEiLCJfZ2V0UG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsIl91cHN0cmVhbURlZmF1bHRQcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJvdXJEZWZhdWx0UHJvcHMiLCJHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJnZXRQaWNraW5nSW5mbyIsInBhcmFtcyIsInByb3BzIiwicmVuZGVyTGF5ZXJzIiwidGFibGUiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeUNvbHVtbiIsInZlY3RvciIsImlzUG9pbnRWZWN0b3IiLCJfcmVuZGVyTGF5ZXJzUG9pbnQiLCJpc011bHRpUG9pbnRWZWN0b3IiLCJfcmVuZGVyTGF5ZXJzTXVsdGlQb2ludCIsIkVycm9yIiwicG9pbnRWZWN0b3IiLCJnZXRHZW9tZXRyeVZlY3RvciIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJQT0lOVCIsIm11bHRpUG9pbnRWZWN0b3IiLCJNVUxUSVBPSU5UIiwiYXNzZXJ0IiwidmFsaWRhdGVBY2Nlc3NvcnMiLCJfZXh0cmFjdEFjY2Vzc29yc0Zyb20iLCJleHRyYWN0QWNjZXNzb3JzRnJvbVByb3BzIiwiX2V4dHJhY3RBY2Nlc3NvcnNGcm9tMiIsIl9zbGljZWRUb0FycmF5MiIsImFjY2Vzc29ycyIsIm90aGVyUHJvcHMiLCJ0YWJsZU9mZnNldHMiLCJjb21wdXRlQ2h1bmtPZmZzZXRzIiwibGF5ZXJzIiwicmVjb3JkQmF0Y2hJZHgiLCJiYXRjaGVzIiwiZ2VvbWV0cnlEYXRhIiwiZmxhdENvb3Jkc0RhdGEiLCJjaGlsZCIsImdldFBvaW50Q2hpbGQiLCJmbGF0Q29vcmRpbmF0ZUFycmF5IiwidmFsdWVzIiwiYmF0Y2hPZmZzZXQiLCJfb2Zmc2V0cyIsImlkIiwiY29uY2F0IiwiYXR0cmlidXRlcyIsInNpemUiLCJ0eXBlIiwibGlzdFNpemUiLCJfaSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJwcm9wTmFtZSIsInByb3BJbnB1dCIsImFzc2lnbkFjY2Vzc29yIiwiY2h1bmtJZHgiLCJsYXllciIsImdldFN1YkxheWVyUHJvcHMiLCJnZXRGaWx0ZXJlZCIsImdldEZpbHRlclZhbHVlIiwiX2V4dHJhY3RBY2Nlc3NvcnNGcm9tMyIsIl9leHRyYWN0QWNjZXNzb3JzRnJvbTQiLCJtdWx0aVBvaW50RGF0YSIsInBvaW50RGF0YSIsImdldE11bHRpUG9pbnRDaGlsZCIsImdlb21PZmZzZXRzIiwidmFsdWVPZmZzZXRzIiwiaW52ZXJ0ZWRHZW9tT2Zmc2V0cyIsImludmVydE9mZnNldHMiLCJfaTIiLCJfT2JqZWN0JGVudHJpZXMyIiwiX09iamVjdCRlbnRyaWVzMiRfaSIsImdlb21Db29yZE9mZnNldHMiLCJDb21wb3NpdGVMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZ2VvLWFycm93LXNjYXR0ZXJwbG90LWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGRlY2suZ2wtY29tbXVuaXR5XG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnNcblxuaW1wb3J0IHtcbiAgQ29tcG9zaXRlTGF5ZXIsXG4gIENvbXBvc2l0ZUxheWVyUHJvcHMsXG4gIERlZmF1bHRQcm9wcyxcbiAgR2V0UGlja2luZ0luZm9QYXJhbXMsXG4gIExheWVyLFxuICBMYXllcnNMaXN0LFxuICBhc3NlcnRcbn0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycy90eXBlZCc7XG5pbXBvcnQgdHlwZSB7U2NhdHRlcnBsb3RMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9sYXllcnMvdHlwZWQnO1xuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCAqIGFzIGdhIGZyb20gJ0BnZW9hcnJvdy9nZW9hcnJvdy1qcyc7XG5cbmltcG9ydCB7R0VPQVJST1dfRVhURU5TSU9OU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge1xuICBhc3NpZ25BY2Nlc3NvcixcbiAgZXh0cmFjdEFjY2Vzc29yc0Zyb21Qcm9wcyxcbiAgZ2V0R2VvbWV0cnlWZWN0b3IsXG4gIGludmVydE9mZnNldHNcbn0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtHZW9BcnJvd0V4dHJhUGlja2luZ1Byb3BzLCBjb21wdXRlQ2h1bmtPZmZzZXRzLCBnZXRQaWNraW5nSW5mb30gZnJvbSAnLi4vdXRpbHMvcGlja2luZyc7XG5pbXBvcnQge0NvbG9yQWNjZXNzb3IsIEZsb2F0QWNjZXNzb3IsIEdlb0Fycm93UGlja2luZ0luZm8sIEV4dGVuc2lvblByb3BzfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge3ZhbGlkYXRlQWNjZXNzb3JzfSBmcm9tICcuLi91dGlscy92YWxpZGF0ZSc7XG5cbi8qKiBBbGwgcHJvcGVydGllcyBzdXBwb3J0ZWQgYnkgR2VvQXJyb3dTY2F0dGVycGxvdExheWVyICovXG5leHBvcnQgdHlwZSBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXJQcm9wcyA9IE9taXQ8XG4gIFNjYXR0ZXJwbG90TGF5ZXJQcm9wczxhcnJvdy5UYWJsZT4sXG4gICdkYXRhJyB8ICdnZXRQb3NpdGlvbicgfCAnZ2V0UmFkaXVzJyB8ICdnZXRGaWxsQ29sb3InIHwgJ2dldExpbmVDb2xvcidcbj4gJlxuICBfR2VvQXJyb3dTY2F0dGVycGxvdExheWVyUHJvcHMgJlxuICBDb21wb3NpdGVMYXllclByb3BzO1xuXG4vKiogUHJvcGVydGllcyBhZGRlZCBieSBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIgKi9cbnR5cGUgX0dlb0Fycm93U2NhdHRlcnBsb3RMYXllclByb3BzID0ge1xuICBkYXRhOiBhcnJvdy5UYWJsZTtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB2YWxpZGF0ZSB0aGUgYXJyYXlzIHByb3ZpZGVkIChlLmcuIGNodW5rIGxlbmd0aHMpXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIF92YWxpZGF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDZW50ZXIgcG9zaXRpb24gYWNjZXNzb3IuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgd2lsbCBiZSBpbmZlcnJlZCBieSBmaW5kaW5nIGEgY29sdW1uIHdpdGggZXh0ZW5zaW9uIHR5cGVcbiAgICogYFwiZ2VvYXJyb3cucG9pbnRcImAgb3IgYFwiZ2VvYXJyb3cubXVsdGlwb2ludFwiYC5cbiAgICovXG4gIGdldFBvc2l0aW9uPzogZ2EudmVjdG9yLlBvaW50VmVjdG9yIHwgZ2EudmVjdG9yLk11bHRpUG9pbnRWZWN0b3I7XG4gIC8qKlxuICAgKiBSYWRpdXMgYWNjZXNzb3IuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGdldFJhZGl1cz86IEZsb2F0QWNjZXNzb3I7XG4gIC8qKlxuICAgKiBGaWxsIGNvbG9yIGFjY2Vzc29yLlxuICAgKiBAZGVmYXVsdCBbMCwgMCwgMCwgMjU1XVxuICAgKi9cbiAgZ2V0RmlsbENvbG9yPzogQ29sb3JBY2Nlc3NvcjtcbiAgLyoqXG4gICAqIFN0cm9rZSBjb2xvciBhY2Nlc3Nvci5cbiAgICogQGRlZmF1bHQgWzAsIDAsIDAsIDI1NV1cbiAgICovXG4gIGdldExpbmVDb2xvcj86IENvbG9yQWNjZXNzb3I7XG4gIC8qKlxuICAgKiBTdHJva2Ugd2lkdGggYWNjZXNzb3IuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGdldExpbmVXaWR0aD86IEZsb2F0QWNjZXNzb3I7XG59O1xuXG4vLyBSZW1vdmUgZGF0YSBhbmQgZ2V0UG9zaXRpb24gZnJvbSB0aGUgdXBzdHJlYW0gZGVmYXVsdCBwcm9wc1xuY29uc3Qge1xuICBkYXRhOiBfZGF0YSxcbiAgZ2V0UG9zaXRpb246IF9nZXRQb3NpdGlvbixcbiAgLi4uX3Vwc3RyZWFtRGVmYXVsdFByb3BzXG59ID0gU2NhdHRlcnBsb3RMYXllci5kZWZhdWx0UHJvcHM7XG5cbi8vIERlZmF1bHQgcHJvcHMgYWRkZWQgYnkgdXNcbmNvbnN0IG91ckRlZmF1bHRQcm9wcyA9IHtcbiAgX3ZhbGlkYXRlOiB0cnVlXG59O1xuXG4vLyBAdHMtZXhwZWN0LWVycm9yXG5jb25zdCBkZWZhdWx0UHJvcHM6IERlZmF1bHRQcm9wczxHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXJQcm9wcz4gPSB7XG4gIC4uLl91cHN0cmVhbURlZmF1bHRQcm9wcyxcbiAgLi4ub3VyRGVmYXVsdFByb3BzXG59O1xuXG5leHBvcnQgY2xhc3MgR2VvQXJyb3dTY2F0dGVycGxvdExheWVyPEV4dHJhUHJvcHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8XG4gIEdlb0Fycm93U2NhdHRlcnBsb3RMYXllclByb3BzICYgRXh0cmFQcm9wc1xuPiB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnR2VvQXJyb3dTY2F0dGVycGxvdExheWVyJztcblxuICBnZXRQaWNraW5nSW5mbyhcbiAgICBwYXJhbXM6IEdldFBpY2tpbmdJbmZvUGFyYW1zICYge1xuICAgICAgc291cmNlTGF5ZXI6IHtwcm9wczogR2VvQXJyb3dFeHRyYVBpY2tpbmdQcm9wc307XG4gICAgfVxuICApOiBHZW9BcnJvd1BpY2tpbmdJbmZvIHtcbiAgICByZXR1cm4gZ2V0UGlja2luZ0luZm8ocGFyYW1zLCB0aGlzLnByb3BzLmRhdGEpO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCk6IExheWVyPG9iamVjdD4gfCBMYXllcnNMaXN0IHwgbnVsbCB7XG4gICAgY29uc3Qge2RhdGE6IHRhYmxlfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5nZXRQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBnZW9tZXRyeUNvbHVtbiA9IHRoaXMucHJvcHMuZ2V0UG9zaXRpb247XG4gICAgICBpZiAoZ2VvbWV0cnlDb2x1bW4gIT09IHVuZGVmaW5lZCAmJiBnYS52ZWN0b3IuaXNQb2ludFZlY3RvcihnZW9tZXRyeUNvbHVtbikpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc1BvaW50KGdlb21ldHJ5Q29sdW1uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdlb21ldHJ5Q29sdW1uICE9PSB1bmRlZmluZWQgJiYgZ2EudmVjdG9yLmlzTXVsdGlQb2ludFZlY3RvcihnZW9tZXRyeUNvbHVtbikpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc011bHRpUG9pbnQoZ2VvbWV0cnlDb2x1bW4pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFBvc2l0aW9uIHNob3VsZCBwYXNzIGluIGFuIGFycm93IFZlY3RvciBvZiBQb2ludCBvciBNdWx0aVBvaW50IHR5cGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9pbnRWZWN0b3IgPSBnZXRHZW9tZXRyeVZlY3Rvcih0YWJsZSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgICBpZiAocG9pbnRWZWN0b3IgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc1BvaW50KHBvaW50VmVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXVsdGlQb2ludFZlY3RvciA9IGdldEdlb21ldHJ5VmVjdG9yKHRhYmxlLCBHRU9BUlJPV19FWFRFTlNJT05TLk1VTFRJUE9JTlQpO1xuICAgICAgaWYgKG11bHRpUG9pbnRWZWN0b3IgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc011bHRpUG9pbnQobXVsdGlQb2ludFZlY3Rvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdnZXRQb3NpdGlvbiBub3QgR2VvQXJyb3cgcG9pbnQgb3IgbXVsdGlwb2ludCcpO1xuICB9XG5cbiAgX3JlbmRlckxheWVyc1BvaW50KGdlb21ldHJ5Q29sdW1uOiBnYS52ZWN0b3IuUG9pbnRWZWN0b3IpOiBMYXllcjxvYmplY3Q+IHwgTGF5ZXJzTGlzdCB8IG51bGwge1xuICAgIGNvbnN0IHtkYXRhOiB0YWJsZX0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuX3ZhbGlkYXRlKSB7XG4gICAgICBhc3NlcnQoZ2EudmVjdG9yLmlzUG9pbnRWZWN0b3IoZ2VvbWV0cnlDb2x1bW4pKTtcbiAgICAgIHZhbGlkYXRlQWNjZXNzb3JzKHRoaXMucHJvcHMsIHRhYmxlKTtcbiAgICB9XG5cbiAgICAvLyBFeGNsdWRlIG1hbnVhbGx5LXNldCBhY2Nlc3NvcnNcbiAgICBjb25zdCBbYWNjZXNzb3JzLCBvdGhlclByb3BzXSA9IGV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHModGhpcy5wcm9wcywgWydnZXRQb3NpdGlvbiddKTtcbiAgICBjb25zdCB0YWJsZU9mZnNldHMgPSBjb21wdXRlQ2h1bmtPZmZzZXRzKHRhYmxlLmRhdGEpO1xuXG4gICAgY29uc3QgbGF5ZXJzOiBTY2F0dGVycGxvdExheWVyPGFueT5bXSA9IFtdO1xuICAgIGZvciAobGV0IHJlY29yZEJhdGNoSWR4ID0gMDsgcmVjb3JkQmF0Y2hJZHggPCB0YWJsZS5iYXRjaGVzLmxlbmd0aDsgcmVjb3JkQmF0Y2hJZHgrKykge1xuICAgICAgY29uc3QgZ2VvbWV0cnlEYXRhID0gZ2VvbWV0cnlDb2x1bW4uZGF0YVtyZWNvcmRCYXRjaElkeF07XG4gICAgICBjb25zdCBmbGF0Q29vcmRzRGF0YSA9IGdhLmNoaWxkLmdldFBvaW50Q2hpbGQoZ2VvbWV0cnlEYXRhKTtcbiAgICAgIGNvbnN0IGZsYXRDb29yZGluYXRlQXJyYXkgPSBmbGF0Q29vcmRzRGF0YS52YWx1ZXM7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgaG93IHRvIHByb3Blcmx5IHJldHJpZXZlIGJhdGNoIG9mZnNldD9cbiAgICAgIGNvbnN0IGJhdGNoT2Zmc2V0ID0gZ2VvbWV0cnlDb2x1bW4uX29mZnNldHNbcmVjb3JkQmF0Y2hJZHhdO1xuXG4gICAgICBjb25zdCBwcm9wczogU2NhdHRlcnBsb3RMYXllclByb3BzPGFueT4gJiBFeHRlbnNpb25Qcm9wcyA9IHtcbiAgICAgICAgLy8gTm90ZTogYmVjYXVzZSB0aGlzIGlzIGEgY29tcG9zaXRlIGxheWVyIGFuZCBub3QgZG9pbmcgdGhlIHJlbmRlcmluZ1xuICAgICAgICAvLyBpdHNlbGYsIHdlIHN0aWxsIGhhdmUgdG8gcGFzcyBpbiBvdXIgZGVmYXVsdFByb3BzXG4gICAgICAgIC4uLm91ckRlZmF1bHRQcm9wcyxcbiAgICAgICAgLi4ub3RoZXJQcm9wcyxcblxuICAgICAgICAvLyB1c2VkIGZvciBwaWNraW5nIHB1cnBvc2VzXG4gICAgICAgIHJlY29yZEJhdGNoSWR4LFxuICAgICAgICB0YWJsZU9mZnNldHMsXG5cbiAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LWdlb2Fycm93LXNjYXR0ZXJwbG90LSR7cmVjb3JkQmF0Y2hJZHh9YCxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICBkYXRhOiB0YWJsZS5iYXRjaGVzW3JlY29yZEJhdGNoSWR4XSxcbiAgICAgICAgICBsZW5ndGg6IGdlb21ldHJ5RGF0YS5sZW5ndGgsXG4gICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgZ2V0UG9zaXRpb246IHtcbiAgICAgICAgICAgICAgdmFsdWU6IGZsYXRDb29yZGluYXRlQXJyYXksXG4gICAgICAgICAgICAgIHNpemU6IGdlb21ldHJ5RGF0YS50eXBlLmxpc3RTaXplXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgcHJvcElucHV0XSBvZiBPYmplY3QuZW50cmllcyhhY2Nlc3NvcnMpKSB7XG4gICAgICAgIGFzc2lnbkFjY2Vzc29yKHtcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICBwcm9wSW5wdXQsXG4gICAgICAgICAgY2h1bmtJZHg6IHJlY29yZEJhdGNoSWR4LFxuICAgICAgICAgIGJhdGNoT2Zmc2V0XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYXllciA9IG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgICAgLi4udGhpcy5nZXRTdWJMYXllclByb3BzKHByb3BzKSxcbiAgICAgICAgLy8gcHJlc2VydmUgYmluZGVkIGFjY2Vzc29ycywgYXMgdGhleSBhcmUgb3ZlcndyaXRlbiBiYWNrIGJ5IHBhc3MtdGhyb3VnaCBhY2Nlc3NvcnMgZnJvbSBleHRlbnNpb25zXG4gICAgICAgIGdldEZpbHRlcmVkOiBwcm9wcy5nZXRGaWx0ZXJlZCxcbiAgICAgICAgZ2V0RmlsdGVyVmFsdWU6IHByb3BzLmdldEZpbHRlclZhbHVlXG4gICAgICB9KTtcbiAgICAgIGxheWVycy5wdXNoKGxheWVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG5cbiAgX3JlbmRlckxheWVyc011bHRpUG9pbnQoXG4gICAgZ2VvbWV0cnlDb2x1bW46IGdhLnZlY3Rvci5NdWx0aVBvaW50VmVjdG9yXG4gICk6IExheWVyPG9iamVjdD4gfCBMYXllcnNMaXN0IHwgbnVsbCB7XG4gICAgY29uc3Qge2RhdGE6IHRhYmxlfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBUT0RPOiB2YWxpZGF0ZSB0aGF0IGlmIG5lc3RlZCwgYWNjZXNzb3IgcHJvcHMgaGF2ZSB0aGUgc2FtZSBuZXN0aW5nXG4gICAgLy8gc3RydWN0dXJlIGFzIHRoZSBtYWluIGdlb21ldHJ5IGNvbHVtbi5cbiAgICBpZiAodGhpcy5wcm9wcy5fdmFsaWRhdGUpIHtcbiAgICAgIGFzc2VydChnYS52ZWN0b3IuaXNNdWx0aVBvaW50VmVjdG9yKGdlb21ldHJ5Q29sdW1uKSk7XG4gICAgICB2YWxpZGF0ZUFjY2Vzc29ycyh0aGlzLnByb3BzLCB0YWJsZSk7XG4gICAgfVxuXG4gICAgLy8gRXhjbHVkZSBtYW51YWxseS1zZXQgYWNjZXNzb3JzXG4gICAgY29uc3QgW2FjY2Vzc29ycywgb3RoZXJQcm9wc10gPSBleHRyYWN0QWNjZXNzb3JzRnJvbVByb3BzKHRoaXMucHJvcHMsIFsnZ2V0UG9zaXRpb24nXSk7XG4gICAgY29uc3QgdGFibGVPZmZzZXRzID0gY29tcHV0ZUNodW5rT2Zmc2V0cyh0YWJsZS5kYXRhKTtcblxuICAgIGNvbnN0IGxheWVyczogU2NhdHRlcnBsb3RMYXllcltdID0gW107XG4gICAgZm9yIChsZXQgcmVjb3JkQmF0Y2hJZHggPSAwOyByZWNvcmRCYXRjaElkeCA8IHRhYmxlLmJhdGNoZXMubGVuZ3RoOyByZWNvcmRCYXRjaElkeCsrKSB7XG4gICAgICBjb25zdCBtdWx0aVBvaW50RGF0YSA9IGdlb21ldHJ5Q29sdW1uLmRhdGFbcmVjb3JkQmF0Y2hJZHhdO1xuICAgICAgY29uc3QgcG9pbnREYXRhID0gZ2EuY2hpbGQuZ2V0TXVsdGlQb2ludENoaWxkKG11bHRpUG9pbnREYXRhKTtcbiAgICAgIGNvbnN0IGdlb21PZmZzZXRzID0gbXVsdGlQb2ludERhdGEudmFsdWVPZmZzZXRzO1xuICAgICAgY29uc3QgZmxhdENvb3Jkc0RhdGEgPSBnYS5jaGlsZC5nZXRQb2ludENoaWxkKHBvaW50RGF0YSk7XG4gICAgICBjb25zdCBmbGF0Q29vcmRpbmF0ZUFycmF5ID0gZmxhdENvb3Jkc0RhdGEudmFsdWVzO1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGhvdyB0byBwcm9wZXJseSByZXRyaWV2ZSBiYXRjaCBvZmZzZXQ/XG4gICAgICBjb25zdCBiYXRjaE9mZnNldCA9IGdlb21ldHJ5Q29sdW1uLl9vZmZzZXRzW3JlY29yZEJhdGNoSWR4XTtcblxuICAgICAgY29uc3QgcHJvcHM6IFNjYXR0ZXJwbG90TGF5ZXJQcm9wcyAmIEV4dGVuc2lvblByb3BzID0ge1xuICAgICAgICAvLyBOb3RlOiBiZWNhdXNlIHRoaXMgaXMgYSBjb21wb3NpdGUgbGF5ZXIgYW5kIG5vdCBkb2luZyB0aGUgcmVuZGVyaW5nXG4gICAgICAgIC8vIGl0c2VsZiwgd2Ugc3RpbGwgaGF2ZSB0byBwYXNzIGluIG91ciBkZWZhdWx0UHJvcHNcbiAgICAgICAgLi4ub3VyRGVmYXVsdFByb3BzLFxuICAgICAgICAuLi5vdGhlclByb3BzLFxuXG4gICAgICAgIC8vIHVzZWQgZm9yIHBpY2tpbmcgcHVycG9zZXNcbiAgICAgICAgcmVjb3JkQmF0Y2hJZHgsXG4gICAgICAgIHRhYmxlT2Zmc2V0cyxcblxuICAgICAgICBpZDogYCR7dGhpcy5wcm9wcy5pZH0tZ2VvYXJyb3ctc2NhdHRlcnBsb3QtJHtyZWNvcmRCYXRjaElkeH1gLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIGRhdGE6IHRhYmxlLmJhdGNoZXNbcmVjb3JkQmF0Y2hJZHhdLFxuICAgICAgICAgIC8vIE1hcCBmcm9tIGV4cGFuZGVkIG11bHRpLWdlb21ldHJ5IGluZGV4IHRvIG9yaWdpbmFsIGluZGV4XG4gICAgICAgICAgLy8gVXNlZCBib3RoIGluIHBpY2tpbmcgYW5kIGZvciBmdW5jdGlvbiBjYWxsYmFja3NcbiAgICAgICAgICBpbnZlcnRlZEdlb21PZmZzZXRzOiBpbnZlcnRPZmZzZXRzKGdlb21PZmZzZXRzKSxcbiAgICAgICAgICAvLyBOb3RlOiB0aGlzIG5lZWRzIHRvIGJlIHRoZSBsZW5ndGggb25lIGxldmVsIGRvd24uXG4gICAgICAgICAgbGVuZ3RoOiBwb2ludERhdGEubGVuZ3RoLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGdldFBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBmbGF0Q29vcmRpbmF0ZUFycmF5LFxuICAgICAgICAgICAgICBzaXplOiBwb2ludERhdGEudHlwZS5saXN0U2l6ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChjb25zdCBbcHJvcE5hbWUsIHByb3BJbnB1dF0gb2YgT2JqZWN0LmVudHJpZXMoYWNjZXNzb3JzKSkge1xuICAgICAgICBhc3NpZ25BY2Nlc3Nvcih7XG4gICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgcHJvcElucHV0LFxuICAgICAgICAgIGNodW5rSWR4OiByZWNvcmRCYXRjaElkeCxcbiAgICAgICAgICBnZW9tQ29vcmRPZmZzZXRzOiBnZW9tT2Zmc2V0cyxcbiAgICAgICAgICBiYXRjaE9mZnNldFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGF5ZXIgPSBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyhwcm9wcyksXG4gICAgICAgIC8vIHByZXNlcnZlIGJpbmRlZCBhY2Nlc3NvcnMsIGFzIHRoZXkgYXJlIG92ZXJ3cml0ZW4gYmFjayBieSBwYXNzLXRocm91Z2ggYWNjZXNzb3JzIGZyb20gZXh0ZW5zaW9uc1xuICAgICAgICBnZXRGaWx0ZXJlZDogcHJvcHMuZ2V0RmlsdGVyZWQsXG4gICAgICAgIGdldEZpbHRlclZhbHVlOiBwcm9wcy5nZXRGaWx0ZXJWYWx1ZVxuICAgICAgfSk7XG4gICAgICBsYXllcnMucHVzaChsYXllcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBU0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsRUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBRUEsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sU0FBQSxHQUFBUCxPQUFBO0FBQW9ELFNBQUFRLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFE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
@@ -17,9 +17,9 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
17
17
  var _typed = require("@deck.gl/core/typed");
18
18
  var _typed2 = require("@deck.gl/layers/typed");
19
19
  var ga = _interopRequireWildcard(require("@geoarrow/geoarrow-js"));
20
+ var _constants = require("@kepler.gl/constants");
20
21
  var _utils = require("../utils/utils");
21
22
  var _picking = require("../utils/picking");
22
- var _constants = require("../constants");
23
23
  var _validate = require("../utils/validate");
24
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -77,7 +77,7 @@ var GeoArrowTextLayer = exports.GeoArrowTextLayer = /*#__PURE__*/function (_Comp
77
77
  }
78
78
  throw new Error('getPosition should pass in an arrow Vector of Point type');
79
79
  } else {
80
- var pointVector = (0, _utils.getGeometryVector)(table, _constants.EXTENSION_NAME.POINT);
80
+ var pointVector = (0, _utils.getGeometryVector)(table, _constants.GEOARROW_EXTENSIONS.POINT);
81
81
  if (pointVector !== null) {
82
82
  return this._renderLayersPoint(pointVector);
83
83
  }
@@ -105,8 +105,8 @@ var GeoArrowTextLayer = exports.GeoArrowTextLayer = /*#__PURE__*/function (_Comp
105
105
  var flatCoordsData = ga.child.getPointChild(geometryData);
106
106
  var flatCoordinateArray = flatCoordsData.values;
107
107
  var textData = this.props.getText.data[recordBatchIdx];
108
+ var numLabels = textData.length;
108
109
  var textValues = textData.values;
109
- // ! TODO valueOffsets are only present for string columns
110
110
  var characterOffsets = textData.valueOffsets;
111
111
 
112
112
  // @ts-expect-error how to properly retrieve batch offset?
@@ -124,7 +124,7 @@ var GeoArrowTextLayer = exports.GeoArrowTextLayer = /*#__PURE__*/function (_Comp
124
124
  attributes: {
125
125
  // Positions need to be expanded to be one per character!
126
126
  getPosition: {
127
- value: (0, _utils.expandArrayToCoords)(flatCoordinateArray, geometryData.type.listSize, characterOffsets),
127
+ value: (0, _utils.expandArrayToCoords)(flatCoordinateArray, geometryData.type.listSize, characterOffsets, numLabels),
128
128
  size: geometryData.type.listSize
129
129
  },
130
130
  // TODO: support non-ascii characters
@@ -172,4 +172,4 @@ var GeoArrowTextLayer = exports.GeoArrowTextLayer = /*#__PURE__*/function (_Comp
172
172
  }(_typed.CompositeLayer);
173
173
  (0, _defineProperty2["default"])(GeoArrowTextLayer, "defaultProps", defaultProps);
174
174
  (0, _defineProperty2["default"])(GeoArrowTextLayer, "layerName", 'GeoArrowTextLayer');
175
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsImdhIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXRpbHMiLCJfcGlja2luZyIsIl9jb25zdGFudHMiLCJfdmFsaWRhdGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9UZXh0TGF5ZXIkZGVmYXVsdFBybyIsIlRleHRMYXllciIsImRlZmF1bHRQcm9wcyIsIl9kYXRhIiwiZGF0YSIsIl9nZXRQb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiX2dldFRleHQiLCJnZXRUZXh0IiwiX2dldFRleHRBbmNob3IiLCJnZXRUZXh0QW5jaG9yIiwiX2dldEFsaWdubWVudEJhc2VsaW5lIiwiZ2V0QWxpZ25tZW50QmFzZWxpbmUiLCJfZ2V0UGl4ZWxPZmZzZXQiLCJnZXRQaXhlbE9mZnNldCIsIl9kZWZhdWx0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwib3VyRGVmYXVsdFByb3BzIiwiR2VvQXJyb3dUZXh0TGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJnZXRQaWNraW5nSW5mbyIsInBhcmFtcyIsInByb3BzIiwicmVuZGVyTGF5ZXJzIiwidGFibGUiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeUNvbHVtbiIsInZlY3RvciIsImlzUG9pbnRWZWN0b3IiLCJfcmVuZGVyTGF5ZXJzUG9pbnQiLCJFcnJvciIsInBvaW50VmVjdG9yIiwiZ2V0R2VvbWV0cnlWZWN0b3IiLCJFWFRFTlNJT05fTkFNRSIsIlBPSU5UIiwiYXNzZXJ0IiwidmFsaWRhdGVBY2Nlc3NvcnMiLCJfZXh0cmFjdEFjY2Vzc29yc0Zyb20iLCJleHRyYWN0QWNjZXNzb3JzRnJvbVByb3BzIiwiX2V4dHJhY3RBY2Nlc3NvcnNGcm9tMiIsIl9zbGljZWRUb0FycmF5MiIsImFjY2Vzc29ycyIsIm90aGVyUHJvcHMiLCJ0YWJsZU9mZnNldHMiLCJjb21wdXRlQ2h1bmtPZmZzZXRzIiwibGF5ZXJzIiwicmVjb3JkQmF0Y2hJZHgiLCJiYXRjaGVzIiwiZ2VvbWV0cnlEYXRhIiwiZmxhdENvb3Jkc0RhdGEiLCJjaGlsZCIsImdldFBvaW50Q2hpbGQiLCJmbGF0Q29vcmRpbmF0ZUFycmF5IiwidmFsdWVzIiwidGV4dERhdGEiLCJ0ZXh0VmFsdWVzIiwiY2hhcmFjdGVyT2Zmc2V0cyIsInZhbHVlT2Zmc2V0cyIsImJhdGNoT2Zmc2V0IiwiX29mZnNldHMiLCJpZCIsImNvbmNhdCIsInN0YXJ0SW5kaWNlcyIsImF0dHJpYnV0ZXMiLCJleHBhbmRBcnJheVRvQ29vcmRzIiwidHlwZSIsImxpc3RTaXplIiwic2l6ZSIsImRhdGFDb21wYXJhdG9yIiwiZDEiLCJkMiIsIl9zdWJMYXllclByb3BzIiwiY2hhcmFjdGVycyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsInByb3BOYW1lIiwicHJvcElucHV0IiwiYXNzaWduQWNjZXNzb3IiLCJjaHVua0lkeCIsImdlb21Db29yZE9mZnNldHMiLCJsYXllciIsImdldFN1YkxheWVyUHJvcHMiLCJnZXRGaWx0ZXJlZCIsImdldEZpbHRlclZhbHVlIiwiQ29tcG9zaXRlTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF5ZXJzL2dlby1hcnJvdy10ZXh0LWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGRlY2suZ2wtY29tbXVuaXR5XG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnNcblxuaW1wb3J0IHtcbiAgQ29tcG9zaXRlTGF5ZXIsXG4gIENvbXBvc2l0ZUxheWVyUHJvcHMsXG4gIERlZmF1bHRQcm9wcyxcbiAgR2V0UGlja2luZ0luZm9QYXJhbXMsXG4gIExheWVyLFxuICBMYXllcnNMaXN0LFxuICBhc3NlcnRcbn0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQge1RleHRMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzL3R5cGVkJztcbmltcG9ydCB0eXBlIHtUZXh0TGF5ZXJQcm9wc30gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgKiBhcyBnYSBmcm9tICdAZ2VvYXJyb3cvZ2VvYXJyb3ctanMnO1xuaW1wb3J0IHtcbiAgYXNzaWduQWNjZXNzb3IsXG4gIGV4cGFuZEFycmF5VG9Db29yZHMsXG4gIGV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHMsXG4gIGdldEdlb21ldHJ5VmVjdG9yXG59IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7R2VvQXJyb3dFeHRyYVBpY2tpbmdQcm9wcywgY29tcHV0ZUNodW5rT2Zmc2V0cywgZ2V0UGlja2luZ0luZm99IGZyb20gJy4uL3V0aWxzL3BpY2tpbmcnO1xuaW1wb3J0IHtDb2xvckFjY2Vzc29yLCBGbG9hdEFjY2Vzc29yLCBHZW9BcnJvd1BpY2tpbmdJbmZvLCBFeHRlbnNpb25Qcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtFWFRFTlNJT05fTkFNRX0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7dmFsaWRhdGVBY2Nlc3NvcnN9IGZyb20gJy4uL3V0aWxzL3ZhbGlkYXRlJztcblxuLyoqIEFsbCBwcm9wZXJ0aWVzIHN1cHBvcnRlZCBieSBHZW9BcnJvd1RleHRMYXllciAqL1xuZXhwb3J0IHR5cGUgR2VvQXJyb3dUZXh0TGF5ZXJQcm9wcyA9IE9taXQ8XG4gIFRleHRMYXllclByb3BzPGFycm93LlRhYmxlPixcbiAgLy8gV2UgcmVtb3ZlIGJhY2tncm91bmQgZm9yIG5vdyBiZWNhdXNlIHRoZXJlIGFyZSBzcGVjaWFsIHJlcXVpcmVtZW50cyBmb3JcbiAgLy8gdXNpbmcgYmluYXJ5IGF0dHJpYnV0ZXMgd2l0aCBiYWNrZ3JvdW5kXG4gIC8vIGh0dHBzOi8vZGVjay5nbC9kb2NzL2FwaS1yZWZlcmVuY2UvbGF5ZXJzL3RleHQtbGF5ZXIjdXNlLWJpbmFyeS1hdHRyaWJ1dGVzLXdpdGgtYmFja2dyb3VuZFxuICB8ICdiYWNrZ3JvdW5kJ1xuICB8ICdkYXRhJ1xuICB8ICdnZXRCYWNrZ3JvdW5kQ29sb3InXG4gIHwgJ2dldEJvcmRlckNvbG9yJ1xuICB8ICdnZXRCb3JkZXJXaWR0aCdcbiAgfCAnZ2V0VGV4dCdcbiAgfCAnZ2V0UG9zaXRpb24nXG4gIHwgJ2dldENvbG9yJ1xuICB8ICdnZXRTaXplJ1xuICB8ICdnZXRBbmdsZSdcbiAgfCAnZ2V0VGV4dEFuY2hvcidcbiAgfCAnZ2V0QWxpZ25tZW50QmFzZWxpbmUnXG4gIHwgJ2dldFBpeGVsT2Zmc2V0J1xuPiAmXG4gIF9HZW9BcnJvd1RleHRMYXllclByb3BzICZcbiAgQ29tcG9zaXRlTGF5ZXJQcm9wcztcblxuLyoqIFByb3BlcnRpZXMgYWRkZWQgYnkgR2VvQXJyb3dUZXh0TGF5ZXIgKi9cbnR5cGUgX0dlb0Fycm93VGV4dExheWVyUHJvcHMgPSB7XG4gIGRhdGE6IGFycm93LlRhYmxlO1xuXG4gIC8qKiBCYWNrZ3JvdW5kIGNvbG9yIGFjY2Vzc29yLlxuICAgKiBAZGVmYXVsdCBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgKi9cbiAgZ2V0QmFja2dyb3VuZENvbG9yPzogQ29sb3JBY2Nlc3NvcjtcbiAgLyoqIEJvcmRlciBjb2xvciBhY2Nlc3Nvci5cbiAgICogQGRlZmF1bHQgWzAsIDAsIDAsIDI1NV1cbiAgICovXG4gIGdldEJvcmRlckNvbG9yPzogQ29sb3JBY2Nlc3NvcjtcbiAgLyoqIEJvcmRlciB3aWR0aCBhY2Nlc3Nvci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgZ2V0Qm9yZGVyV2lkdGg/OiBGbG9hdEFjY2Vzc29yO1xuICAvKipcbiAgICogTGFiZWwgdGV4dCBhY2Nlc3NvclxuICAgKi9cbiAgZ2V0VGV4dDogYXJyb3cuVmVjdG9yPGFycm93LlV0Zjg+O1xuICAvKipcbiAgICogQW5jaG9yIHBvc2l0aW9uIGFjY2Vzc29yXG4gICAqL1xuICBnZXRQb3NpdGlvbj86IGdhLnZlY3Rvci5Qb2ludFZlY3RvcjtcbiAgLyoqXG4gICAqIExhYmVsIGNvbG9yIGFjY2Vzc29yXG4gICAqIEBkZWZhdWx0IFswLCAwLCAwLCAyNTVdXG4gICAqL1xuICBnZXRDb2xvcj86IENvbG9yQWNjZXNzb3I7XG4gIC8qKlxuICAgKiBMYWJlbCBzaXplIGFjY2Vzc29yXG4gICAqIEBkZWZhdWx0IDMyXG4gICAqL1xuICBnZXRTaXplPzogRmxvYXRBY2Nlc3NvcjtcbiAgLyoqXG4gICAqIExhYmVsIHJvdGF0aW9uIGFjY2Vzc29yLCBpbiBkZWdyZWVzXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGdldEFuZ2xlPzogRmxvYXRBY2Nlc3NvcjtcbiAgLyoqXG4gICAqIEhvcml6b250YWwgYWxpZ25tZW50IGFjY2Vzc29yXG4gICAqIEBkZWZhdWx0ICdtaWRkbGUnXG4gICAqL1xuICBnZXRUZXh0QW5jaG9yPzogYXJyb3cuVmVjdG9yPGFycm93LlV0Zjg+IHwgJ3N0YXJ0JyB8ICdtaWRkbGUnIHwgJ2VuZCc7XG4gIC8qKlxuICAgKiBWZXJ0aWNhbCBhbGlnbm1lbnQgYWNjZXNzb3JcbiAgICogQGRlZmF1bHQgJ2NlbnRlcidcbiAgICovXG4gIGdldEFsaWdubWVudEJhc2VsaW5lPzogYXJyb3cuVmVjdG9yPGFycm93LlV0Zjg+IHwgJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nO1xuICAvKipcbiAgICogTGFiZWwgb2Zmc2V0IGZyb20gdGhlIGFuY2hvciBwb3NpdGlvbiwgW3gsIHldIGluIHBpeGVsc1xuICAgKiBAZGVmYXVsdCBbMCwgMF1cbiAgICovXG4gIGdldFBpeGVsT2Zmc2V0PzogYXJyb3cuVmVjdG9yPGFycm93LkZpeGVkU2l6ZUxpc3Q8YXJyb3cuSW50Pj4gfCBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHZhbGlkYXRlIHRoZSBhcnJheXMgcHJvdmlkZWQgKGUuZy4gY2h1bmsgbGVuZ3RocylcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgX3ZhbGlkYXRlPzogYm9vbGVhbjtcbn07XG5cbi8vIFJlbW92ZSBkYXRhIGFuZCBnZXRQb3NpdGlvbiBmcm9tIHRoZSB1cHN0cmVhbSBkZWZhdWx0IHByb3BzXG5jb25zdCB7XG4gIGRhdGE6IF9kYXRhLFxuICBnZXRQb3NpdGlvbjogX2dldFBvc2l0aW9uLFxuICBnZXRUZXh0OiBfZ2V0VGV4dCxcbiAgZ2V0VGV4dEFuY2hvcjogX2dldFRleHRBbmNob3IsXG4gIGdldEFsaWdubWVudEJhc2VsaW5lOiBfZ2V0QWxpZ25tZW50QmFzZWxpbmUsXG4gIGdldFBpeGVsT2Zmc2V0OiBfZ2V0UGl4ZWxPZmZzZXQsXG4gIC4uLl9kZWZhdWx0UHJvcHNcbn0gPSBUZXh0TGF5ZXIuZGVmYXVsdFByb3BzO1xuXG4vLyBEZWZhdWx0IHByb3BzIGFkZGVkIGJ5IHVzXG5jb25zdCBvdXJEZWZhdWx0UHJvcHM6IFBpY2s8XG4gIEdlb0Fycm93VGV4dExheWVyUHJvcHMsXG4gICdnZXRUZXh0QW5jaG9yJyB8ICdnZXRBbGlnbm1lbnRCYXNlbGluZScgfCAnZ2V0UGl4ZWxPZmZzZXQnIHwgJ192YWxpZGF0ZSdcbj4gPSB7XG4gIGdldFRleHRBbmNob3I6ICdtaWRkbGUnLFxuICBnZXRBbGlnbm1lbnRCYXNlbGluZTogJ2NlbnRlcicsXG4gIGdldFBpeGVsT2Zmc2V0OiBbMCwgMF0sXG4gIF92YWxpZGF0ZTogdHJ1ZVxufTtcblxuLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdVaW50OEFycmF5JyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICdSR0JBQ29sb3InXG5jb25zdCBkZWZhdWx0UHJvcHM6IERlZmF1bHRQcm9wczxHZW9BcnJvd1RleHRMYXllclByb3BzPiA9IHtcbiAgLi4uX2RlZmF1bHRQcm9wcyxcbiAgLi4ub3VyRGVmYXVsdFByb3BzXG59O1xuXG5leHBvcnQgY2xhc3MgR2VvQXJyb3dUZXh0TGF5ZXI8RXh0cmFQcm9wcyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxcbiAgR2VvQXJyb3dUZXh0TGF5ZXJQcm9wcyAmIEV4dHJhUHJvcHNcbj4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0dlb0Fycm93VGV4dExheWVyJztcblxuICBnZXRQaWNraW5nSW5mbyhcbiAgICBwYXJhbXM6IEdldFBpY2tpbmdJbmZvUGFyYW1zICYge1xuICAgICAgc291cmNlTGF5ZXI6IHtwcm9wczogR2VvQXJyb3dFeHRyYVBpY2tpbmdQcm9wc307XG4gICAgfVxuICApOiBHZW9BcnJvd1BpY2tpbmdJbmZvIHtcbiAgICByZXR1cm4gZ2V0UGlja2luZ0luZm8ocGFyYW1zLCB0aGlzLnByb3BzLmRhdGEpO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCk6IExheWVyPG9iamVjdD4gfCBMYXllcnNMaXN0IHwgbnVsbCB7XG4gICAgY29uc3Qge2RhdGE6IHRhYmxlfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5nZXRQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBnZW9tZXRyeUNvbHVtbiA9IHRoaXMucHJvcHMuZ2V0UG9zaXRpb247XG4gICAgICBpZiAoZ2VvbWV0cnlDb2x1bW4gIT09IHVuZGVmaW5lZCAmJiBnYS52ZWN0b3IuaXNQb2ludFZlY3RvcihnZW9tZXRyeUNvbHVtbikpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc1BvaW50KGdlb21ldHJ5Q29sdW1uKTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdnZXRQb3NpdGlvbiBzaG91bGQgcGFzcyBpbiBhbiBhcnJvdyBWZWN0b3Igb2YgUG9pbnQgdHlwZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb2ludFZlY3RvciA9IGdldEdlb21ldHJ5VmVjdG9yKHRhYmxlLCBFWFRFTlNJT05fTkFNRS5QT0lOVCk7XG4gICAgICBpZiAocG9pbnRWZWN0b3IgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc1BvaW50KHBvaW50VmVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFBvc2l0aW9uIG5vdCBHZW9BcnJvdyBwb2ludCcpO1xuICB9XG5cbiAgX3JlbmRlckxheWVyc1BvaW50KGdlb21ldHJ5Q29sdW1uOiBnYS52ZWN0b3IuUG9pbnRWZWN0b3IpOiBMYXllcjxvYmplY3Q+IHwgTGF5ZXJzTGlzdCB8IG51bGwge1xuICAgIGNvbnN0IHtkYXRhOiB0YWJsZX0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuX3ZhbGlkYXRlKSB7XG4gICAgICBhc3NlcnQoZ2EudmVjdG9yLmlzUG9pbnRWZWN0b3IoZ2VvbWV0cnlDb2x1bW4pKTtcbiAgICAgIHZhbGlkYXRlQWNjZXNzb3JzKHRoaXMucHJvcHMsIHRhYmxlKTtcbiAgICB9XG5cbiAgICAvLyBFeGNsdWRlIG1hbnVhbGx5LXNldCBhY2Nlc3NvcnNcbiAgICBjb25zdCBbYWNjZXNzb3JzLCBvdGhlclByb3BzXSA9IGV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHModGhpcy5wcm9wcywgW1xuICAgICAgJ2dldFBvc2l0aW9uJyxcbiAgICAgICdnZXRUZXh0J1xuICAgIF0pO1xuICAgIGNvbnN0IHRhYmxlT2Zmc2V0cyA9IGNvbXB1dGVDaHVua09mZnNldHModGFibGUuZGF0YSk7XG5cbiAgICBjb25zdCBsYXllcnM6IFRleHRMYXllcjxhbnk+W10gPSBbXTtcbiAgICBmb3IgKGxldCByZWNvcmRCYXRjaElkeCA9IDA7IHJlY29yZEJhdGNoSWR4IDwgdGFibGUuYmF0Y2hlcy5sZW5ndGg7IHJlY29yZEJhdGNoSWR4KyspIHtcbiAgICAgIGNvbnN0IGdlb21ldHJ5RGF0YSA9IGdlb21ldHJ5Q29sdW1uLmRhdGFbcmVjb3JkQmF0Y2hJZHhdO1xuICAgICAgY29uc3QgZmxhdENvb3Jkc0RhdGEgPSBnYS5jaGlsZC5nZXRQb2ludENoaWxkKGdlb21ldHJ5RGF0YSk7XG4gICAgICBjb25zdCBmbGF0Q29vcmRpbmF0ZUFycmF5ID0gZmxhdENvb3Jkc0RhdGEudmFsdWVzO1xuICAgICAgY29uc3QgdGV4dERhdGEgPSB0aGlzLnByb3BzLmdldFRleHQuZGF0YVtyZWNvcmRCYXRjaElkeF07XG4gICAgICBjb25zdCB0ZXh0VmFsdWVzID0gdGV4dERhdGEudmFsdWVzO1xuICAgICAgLy8gISBUT0RPIHZhbHVlT2Zmc2V0cyBhcmUgb25seSBwcmVzZW50IGZvciBzdHJpbmcgY29sdW1uc1xuICAgICAgY29uc3QgY2hhcmFjdGVyT2Zmc2V0cyA9IHRleHREYXRhLnZhbHVlT2Zmc2V0cztcblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBob3cgdG8gcHJvcGVybHkgcmV0cmlldmUgYmF0Y2ggb2Zmc2V0P1xuICAgICAgY29uc3QgYmF0Y2hPZmZzZXQgPSBnZW9tZXRyeUNvbHVtbi5fb2Zmc2V0c1tyZWNvcmRCYXRjaElkeF07XG5cbiAgICAgIGNvbnN0IHByb3BzOiBUZXh0TGF5ZXJQcm9wczxhbnk+ICYgRXh0ZW5zaW9uUHJvcHMgPSB7XG4gICAgICAgIC8vIE5vdGU6IGJlY2F1c2UgdGhpcyBpcyBhIGNvbXBvc2l0ZSBsYXllciBhbmQgbm90IGRvaW5nIHRoZSByZW5kZXJpbmdcbiAgICAgICAgLy8gaXRzZWxmLCB3ZSBzdGlsbCBoYXZlIHRvIHBhc3MgaW4gb3VyIGRlZmF1bHRQcm9wc1xuICAgICAgICAuLi5vdXJEZWZhdWx0UHJvcHMsXG4gICAgICAgIC4uLm90aGVyUHJvcHMsXG5cbiAgICAgICAgLy8gdXNlZCBmb3IgcGlja2luZyBwdXJwb3Nlc1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHJlY29yZEJhdGNoSWR4LFxuICAgICAgICB0YWJsZU9mZnNldHMsXG5cbiAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LWdlb2Fycm93LXRleHQtbGF5ZXItJHtyZWNvcmRCYXRjaElkeH1gLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZGF0YTogdGFibGUuYmF0Y2hlc1tyZWNvcmRCYXRjaElkeF0sXG4gICAgICAgICAgbGVuZ3RoOiBnZW9tZXRyeURhdGEubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0SW5kaWNlczogY2hhcmFjdGVyT2Zmc2V0cyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAvLyBQb3NpdGlvbnMgbmVlZCB0byBiZSBleHBhbmRlZCB0byBiZSBvbmUgcGVyIGNoYXJhY3RlciFcbiAgICAgICAgICAgIGdldFBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBleHBhbmRBcnJheVRvQ29vcmRzKFxuICAgICAgICAgICAgICAgIGZsYXRDb29yZGluYXRlQXJyYXksXG4gICAgICAgICAgICAgICAgZ2VvbWV0cnlEYXRhLnR5cGUubGlzdFNpemUsXG4gICAgICAgICAgICAgICAgY2hhcmFjdGVyT2Zmc2V0c1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBzaXplOiBnZW9tZXRyeURhdGEudHlwZS5saXN0U2l6ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbiAgICAgICAgICAgIGdldFRleHQ6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHRleHRWYWx1ZXNcbiAgICAgICAgICAgICAgLy8gc2l6ZTogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFRPRE8gcHJpdmlkZSBtb3JlIHJvYnVzdCBkYXRhIGNvbXBhcmF0b3JzXG4gICAgICAgIGRhdGFDb21wYXJhdG9yOiAoZDEsIGQyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGQxLmRhdGEgPT09IGQyLmRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIF9zdWJMYXllclByb3BzOiB7XG4gICAgICAgICAgY2hhcmFjdGVyczoge1xuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkMSwgZDIpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGQxLmRhdGEgPT09IGQyLmRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgcHJvcElucHV0XSBvZiBPYmplY3QuZW50cmllcyhhY2Nlc3NvcnMpKSB7XG4gICAgICAgIGFzc2lnbkFjY2Vzc29yKHtcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICBwcm9wSW5wdXQsXG4gICAgICAgICAgY2h1bmtJZHg6IHJlY29yZEJhdGNoSWR4LFxuICAgICAgICAgIGdlb21Db29yZE9mZnNldHM6IGNoYXJhY3Rlck9mZnNldHMsXG4gICAgICAgICAgYmF0Y2hPZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheWVyID0gbmV3IFRleHRMYXllcih7XG4gICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyhwcm9wcyksXG4gICAgICAgIC8vIHByZXNlcnZlIGJpbmRlZCBhY2Nlc3NvcnMsIGFzIHRoZXkgYXJlIG92ZXJ3cml0ZW4gYmFjayBieSBwYXNzLXRocm91Z2ggYWNjZXNzb3JzIGZyb20gZXh0ZW5zaW9uc1xuICAgICAgICBnZXRGaWx0ZXJlZDogcHJvcHMuZ2V0RmlsdGVyZWQsXG4gICAgICAgIGdldEZpbHRlclZhbHVlOiBwcm9wcy5nZXRGaWx0ZXJWYWx1ZVxuICAgICAgfSk7XG4gICAgICBsYXllcnMucHVzaChsYXllcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBU0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsRUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBTUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sU0FBQSxHQUFBUCxPQUFBO0FBQW9ELFNBQUFRLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFB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
175
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsImdhIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX3BpY2tpbmciLCJfdmFsaWRhdGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9UZXh0TGF5ZXIkZGVmYXVsdFBybyIsIlRleHRMYXllciIsImRlZmF1bHRQcm9wcyIsIl9kYXRhIiwiZGF0YSIsIl9nZXRQb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiX2dldFRleHQiLCJnZXRUZXh0IiwiX2dldFRleHRBbmNob3IiLCJnZXRUZXh0QW5jaG9yIiwiX2dldEFsaWdubWVudEJhc2VsaW5lIiwiZ2V0QWxpZ25tZW50QmFzZWxpbmUiLCJfZ2V0UGl4ZWxPZmZzZXQiLCJnZXRQaXhlbE9mZnNldCIsIl9kZWZhdWx0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwib3VyRGVmYXVsdFByb3BzIiwiR2VvQXJyb3dUZXh0TGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJnZXRQaWNraW5nSW5mbyIsInBhcmFtcyIsInByb3BzIiwicmVuZGVyTGF5ZXJzIiwidGFibGUiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeUNvbHVtbiIsInZlY3RvciIsImlzUG9pbnRWZWN0b3IiLCJfcmVuZGVyTGF5ZXJzUG9pbnQiLCJFcnJvciIsInBvaW50VmVjdG9yIiwiZ2V0R2VvbWV0cnlWZWN0b3IiLCJHRU9BUlJPV19FWFRFTlNJT05TIiwiUE9JTlQiLCJhc3NlcnQiLCJ2YWxpZGF0ZUFjY2Vzc29ycyIsIl9leHRyYWN0QWNjZXNzb3JzRnJvbSIsImV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHMiLCJfZXh0cmFjdEFjY2Vzc29yc0Zyb20yIiwiX3NsaWNlZFRvQXJyYXkyIiwiYWNjZXNzb3JzIiwib3RoZXJQcm9wcyIsInRhYmxlT2Zmc2V0cyIsImNvbXB1dGVDaHVua09mZnNldHMiLCJsYXllcnMiLCJyZWNvcmRCYXRjaElkeCIsImJhdGNoZXMiLCJnZW9tZXRyeURhdGEiLCJmbGF0Q29vcmRzRGF0YSIsImNoaWxkIiwiZ2V0UG9pbnRDaGlsZCIsImZsYXRDb29yZGluYXRlQXJyYXkiLCJ2YWx1ZXMiLCJ0ZXh0RGF0YSIsIm51bUxhYmVscyIsInRleHRWYWx1ZXMiLCJjaGFyYWN0ZXJPZmZzZXRzIiwidmFsdWVPZmZzZXRzIiwiYmF0Y2hPZmZzZXQiLCJfb2Zmc2V0cyIsImlkIiwiY29uY2F0Iiwic3RhcnRJbmRpY2VzIiwiYXR0cmlidXRlcyIsImV4cGFuZEFycmF5VG9Db29yZHMiLCJ0eXBlIiwibGlzdFNpemUiLCJzaXplIiwiZGF0YUNvbXBhcmF0b3IiLCJkMSIsImQyIiwiX3N1YkxheWVyUHJvcHMiLCJjaGFyYWN0ZXJzIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwicHJvcE5hbWUiLCJwcm9wSW5wdXQiLCJhc3NpZ25BY2Nlc3NvciIsImNodW5rSWR4IiwiZ2VvbUNvb3JkT2Zmc2V0cyIsImxheWVyIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsImdldEZpbHRlcmVkIiwiZ2V0RmlsdGVyVmFsdWUiLCJDb21wb3NpdGVMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZ2VvLWFycm93LXRleHQtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gZGVjay5nbC1jb21tdW5pdHlcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG5pbXBvcnQge1xuICBDb21wb3NpdGVMYXllcixcbiAgQ29tcG9zaXRlTGF5ZXJQcm9wcyxcbiAgRGVmYXVsdFByb3BzLFxuICBHZXRQaWNraW5nSW5mb1BhcmFtcyxcbiAgTGF5ZXIsXG4gIExheWVyc0xpc3QsXG4gIGFzc2VydFxufSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7VGV4dExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHR5cGUge1RleHRMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCAqIGFzIGdhIGZyb20gJ0BnZW9hcnJvdy9nZW9hcnJvdy1qcyc7XG5cbmltcG9ydCB7R0VPQVJST1dfRVhURU5TSU9OU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge1xuICBhc3NpZ25BY2Nlc3NvcixcbiAgZXhwYW5kQXJyYXlUb0Nvb3JkcyxcbiAgZXh0cmFjdEFjY2Vzc29yc0Zyb21Qcm9wcyxcbiAgZ2V0R2VvbWV0cnlWZWN0b3Jcbn0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtHZW9BcnJvd0V4dHJhUGlja2luZ1Byb3BzLCBjb21wdXRlQ2h1bmtPZmZzZXRzLCBnZXRQaWNraW5nSW5mb30gZnJvbSAnLi4vdXRpbHMvcGlja2luZyc7XG5pbXBvcnQge0NvbG9yQWNjZXNzb3IsIEZsb2F0QWNjZXNzb3IsIEdlb0Fycm93UGlja2luZ0luZm8sIEV4dGVuc2lvblByb3BzfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge3ZhbGlkYXRlQWNjZXNzb3JzfSBmcm9tICcuLi91dGlscy92YWxpZGF0ZSc7XG5cbi8qKiBBbGwgcHJvcGVydGllcyBzdXBwb3J0ZWQgYnkgR2VvQXJyb3dUZXh0TGF5ZXIgKi9cbmV4cG9ydCB0eXBlIEdlb0Fycm93VGV4dExheWVyUHJvcHMgPSBPbWl0PFxuICBUZXh0TGF5ZXJQcm9wczxhcnJvdy5UYWJsZT4sXG4gIC8vIFdlIHJlbW92ZSBiYWNrZ3JvdW5kIGZvciBub3cgYmVjYXVzZSB0aGVyZSBhcmUgc3BlY2lhbCByZXF1aXJlbWVudHMgZm9yXG4gIC8vIHVzaW5nIGJpbmFyeSBhdHRyaWJ1dGVzIHdpdGggYmFja2dyb3VuZFxuICAvLyBodHRwczovL2RlY2suZ2wvZG9jcy9hcGktcmVmZXJlbmNlL2xheWVycy90ZXh0LWxheWVyI3VzZS1iaW5hcnktYXR0cmlidXRlcy13aXRoLWJhY2tncm91bmRcbiAgfCAnYmFja2dyb3VuZCdcbiAgfCAnZGF0YSdcbiAgfCAnZ2V0QmFja2dyb3VuZENvbG9yJ1xuICB8ICdnZXRCb3JkZXJDb2xvcidcbiAgfCAnZ2V0Qm9yZGVyV2lkdGgnXG4gIHwgJ2dldFRleHQnXG4gIHwgJ2dldFBvc2l0aW9uJ1xuICB8ICdnZXRDb2xvcidcbiAgfCAnZ2V0U2l6ZSdcbiAgfCAnZ2V0QW5nbGUnXG4gIHwgJ2dldFRleHRBbmNob3InXG4gIHwgJ2dldEFsaWdubWVudEJhc2VsaW5lJ1xuICB8ICdnZXRQaXhlbE9mZnNldCdcbj4gJlxuICBfR2VvQXJyb3dUZXh0TGF5ZXJQcm9wcyAmXG4gIENvbXBvc2l0ZUxheWVyUHJvcHM7XG5cbi8qKiBQcm9wZXJ0aWVzIGFkZGVkIGJ5IEdlb0Fycm93VGV4dExheWVyICovXG50eXBlIF9HZW9BcnJvd1RleHRMYXllclByb3BzID0ge1xuICBkYXRhOiBhcnJvdy5UYWJsZTtcblxuICAvKiogQmFja2dyb3VuZCBjb2xvciBhY2Nlc3Nvci5cbiAgICogQGRlZmF1bHQgWzI1NSwgMjU1LCAyNTUsIDI1NV1cbiAgICovXG4gIGdldEJhY2tncm91bmRDb2xvcj86IENvbG9yQWNjZXNzb3I7XG4gIC8qKiBCb3JkZXIgY29sb3IgYWNjZXNzb3IuXG4gICAqIEBkZWZhdWx0IFswLCAwLCAwLCAyNTVdXG4gICAqL1xuICBnZXRCb3JkZXJDb2xvcj86IENvbG9yQWNjZXNzb3I7XG4gIC8qKiBCb3JkZXIgd2lkdGggYWNjZXNzb3IuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGdldEJvcmRlcldpZHRoPzogRmxvYXRBY2Nlc3NvcjtcbiAgLyoqXG4gICAqIExhYmVsIHRleHQgYWNjZXNzb3JcbiAgICovXG4gIGdldFRleHQ6IGFycm93LlZlY3RvcjxhcnJvdy5VdGY4PjtcbiAgLyoqXG4gICAqIEFuY2hvciBwb3NpdGlvbiBhY2Nlc3NvclxuICAgKi9cbiAgZ2V0UG9zaXRpb24/OiBnYS52ZWN0b3IuUG9pbnRWZWN0b3I7XG4gIC8qKlxuICAgKiBMYWJlbCBjb2xvciBhY2Nlc3NvclxuICAgKiBAZGVmYXVsdCBbMCwgMCwgMCwgMjU1XVxuICAgKi9cbiAgZ2V0Q29sb3I/OiBDb2xvckFjY2Vzc29yO1xuICAvKipcbiAgICogTGFiZWwgc2l6ZSBhY2Nlc3NvclxuICAgKiBAZGVmYXVsdCAzMlxuICAgKi9cbiAgZ2V0U2l6ZT86IEZsb2F0QWNjZXNzb3I7XG4gIC8qKlxuICAgKiBMYWJlbCByb3RhdGlvbiBhY2Nlc3NvciwgaW4gZGVncmVlc1xuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBnZXRBbmdsZT86IEZsb2F0QWNjZXNzb3I7XG4gIC8qKlxuICAgKiBIb3Jpem9udGFsIGFsaWdubWVudCBhY2Nlc3NvclxuICAgKiBAZGVmYXVsdCAnbWlkZGxlJ1xuICAgKi9cbiAgZ2V0VGV4dEFuY2hvcj86IGFycm93LlZlY3RvcjxhcnJvdy5VdGY4PiB8ICdzdGFydCcgfCAnbWlkZGxlJyB8ICdlbmQnO1xuICAvKipcbiAgICogVmVydGljYWwgYWxpZ25tZW50IGFjY2Vzc29yXG4gICAqIEBkZWZhdWx0ICdjZW50ZXInXG4gICAqL1xuICBnZXRBbGlnbm1lbnRCYXNlbGluZT86IGFycm93LlZlY3RvcjxhcnJvdy5VdGY4PiB8ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcbiAgLyoqXG4gICAqIExhYmVsIG9mZnNldCBmcm9tIHRoZSBhbmNob3IgcG9zaXRpb24sIFt4LCB5XSBpbiBwaXhlbHNcbiAgICogQGRlZmF1bHQgWzAsIDBdXG4gICAqL1xuICBnZXRQaXhlbE9mZnNldD86IGFycm93LlZlY3RvcjxhcnJvdy5GaXhlZFNpemVMaXN0PGFycm93LkludD4+IHwgW251bWJlciwgbnVtYmVyXTtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB2YWxpZGF0ZSB0aGUgYXJyYXlzIHByb3ZpZGVkIChlLmcuIGNodW5rIGxlbmd0aHMpXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIF92YWxpZGF0ZT86IGJvb2xlYW47XG59O1xuXG4vLyBSZW1vdmUgZGF0YSBhbmQgZ2V0UG9zaXRpb24gZnJvbSB0aGUgdXBzdHJlYW0gZGVmYXVsdCBwcm9wc1xuY29uc3Qge1xuICBkYXRhOiBfZGF0YSxcbiAgZ2V0UG9zaXRpb246IF9nZXRQb3NpdGlvbixcbiAgZ2V0VGV4dDogX2dldFRleHQsXG4gIGdldFRleHRBbmNob3I6IF9nZXRUZXh0QW5jaG9yLFxuICBnZXRBbGlnbm1lbnRCYXNlbGluZTogX2dldEFsaWdubWVudEJhc2VsaW5lLFxuICBnZXRQaXhlbE9mZnNldDogX2dldFBpeGVsT2Zmc2V0LFxuICAuLi5fZGVmYXVsdFByb3BzXG59ID0gVGV4dExheWVyLmRlZmF1bHRQcm9wcztcblxuLy8gRGVmYXVsdCBwcm9wcyBhZGRlZCBieSB1c1xuY29uc3Qgb3VyRGVmYXVsdFByb3BzOiBQaWNrPFxuICBHZW9BcnJvd1RleHRMYXllclByb3BzLFxuICAnZ2V0VGV4dEFuY2hvcicgfCAnZ2V0QWxpZ25tZW50QmFzZWxpbmUnIHwgJ2dldFBpeGVsT2Zmc2V0JyB8ICdfdmFsaWRhdGUnXG4+ID0ge1xuICBnZXRUZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgZ2V0QWxpZ25tZW50QmFzZWxpbmU6ICdjZW50ZXInLFxuICBnZXRQaXhlbE9mZnNldDogWzAsIDBdLFxuICBfdmFsaWRhdGU6IHRydWVcbn07XG5cbi8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnVWludDhBcnJheScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnUkdCQUNvbG9yJ1xuY29uc3QgZGVmYXVsdFByb3BzOiBEZWZhdWx0UHJvcHM8R2VvQXJyb3dUZXh0TGF5ZXJQcm9wcz4gPSB7XG4gIC4uLl9kZWZhdWx0UHJvcHMsXG4gIC4uLm91ckRlZmF1bHRQcm9wc1xufTtcblxuZXhwb3J0IGNsYXNzIEdlb0Fycm93VGV4dExheWVyPEV4dHJhUHJvcHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8XG4gIEdlb0Fycm93VGV4dExheWVyUHJvcHMgJiBFeHRyYVByb3BzXG4+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdHZW9BcnJvd1RleHRMYXllcic7XG5cbiAgZ2V0UGlja2luZ0luZm8oXG4gICAgcGFyYW1zOiBHZXRQaWNraW5nSW5mb1BhcmFtcyAmIHtcbiAgICAgIHNvdXJjZUxheWVyOiB7cHJvcHM6IEdlb0Fycm93RXh0cmFQaWNraW5nUHJvcHN9O1xuICAgIH1cbiAgKTogR2VvQXJyb3dQaWNraW5nSW5mbyB7XG4gICAgcmV0dXJuIGdldFBpY2tpbmdJbmZvKHBhcmFtcywgdGhpcy5wcm9wcy5kYXRhKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpOiBMYXllcjxvYmplY3Q+IHwgTGF5ZXJzTGlzdCB8IG51bGwge1xuICAgIGNvbnN0IHtkYXRhOiB0YWJsZX0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuZ2V0UG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZ2VvbWV0cnlDb2x1bW4gPSB0aGlzLnByb3BzLmdldFBvc2l0aW9uO1xuICAgICAgaWYgKGdlb21ldHJ5Q29sdW1uICE9PSB1bmRlZmluZWQgJiYgZ2EudmVjdG9yLmlzUG9pbnRWZWN0b3IoZ2VvbWV0cnlDb2x1bW4pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJMYXllcnNQb2ludChnZW9tZXRyeUNvbHVtbik7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0UG9zaXRpb24gc2hvdWxkIHBhc3MgaW4gYW4gYXJyb3cgVmVjdG9yIG9mIFBvaW50IHR5cGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9pbnRWZWN0b3IgPSBnZXRHZW9tZXRyeVZlY3Rvcih0YWJsZSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgICBpZiAocG9pbnRWZWN0b3IgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxheWVyc1BvaW50KHBvaW50VmVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFBvc2l0aW9uIG5vdCBHZW9BcnJvdyBwb2ludCcpO1xuICB9XG5cbiAgX3JlbmRlckxheWVyc1BvaW50KGdlb21ldHJ5Q29sdW1uOiBnYS52ZWN0b3IuUG9pbnRWZWN0b3IpOiBMYXllcjxvYmplY3Q+IHwgTGF5ZXJzTGlzdCB8IG51bGwge1xuICAgIGNvbnN0IHtkYXRhOiB0YWJsZX0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuX3ZhbGlkYXRlKSB7XG4gICAgICBhc3NlcnQoZ2EudmVjdG9yLmlzUG9pbnRWZWN0b3IoZ2VvbWV0cnlDb2x1bW4pKTtcbiAgICAgIHZhbGlkYXRlQWNjZXNzb3JzKHRoaXMucHJvcHMsIHRhYmxlKTtcbiAgICB9XG5cbiAgICAvLyBFeGNsdWRlIG1hbnVhbGx5LXNldCBhY2Nlc3NvcnNcbiAgICBjb25zdCBbYWNjZXNzb3JzLCBvdGhlclByb3BzXSA9IGV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHModGhpcy5wcm9wcywgW1xuICAgICAgJ2dldFBvc2l0aW9uJyxcbiAgICAgICdnZXRUZXh0J1xuICAgIF0pO1xuICAgIGNvbnN0IHRhYmxlT2Zmc2V0cyA9IGNvbXB1dGVDaHVua09mZnNldHModGFibGUuZGF0YSk7XG5cbiAgICBjb25zdCBsYXllcnM6IFRleHRMYXllcjxhbnk+W10gPSBbXTtcbiAgICBmb3IgKGxldCByZWNvcmRCYXRjaElkeCA9IDA7IHJlY29yZEJhdGNoSWR4IDwgdGFibGUuYmF0Y2hlcy5sZW5ndGg7IHJlY29yZEJhdGNoSWR4KyspIHtcbiAgICAgIGNvbnN0IGdlb21ldHJ5RGF0YSA9IGdlb21ldHJ5Q29sdW1uLmRhdGFbcmVjb3JkQmF0Y2hJZHhdO1xuICAgICAgY29uc3QgZmxhdENvb3Jkc0RhdGEgPSBnYS5jaGlsZC5nZXRQb2ludENoaWxkKGdlb21ldHJ5RGF0YSk7XG4gICAgICBjb25zdCBmbGF0Q29vcmRpbmF0ZUFycmF5ID0gZmxhdENvb3Jkc0RhdGEudmFsdWVzO1xuXG4gICAgICBjb25zdCB0ZXh0RGF0YSA9IHRoaXMucHJvcHMuZ2V0VGV4dC5kYXRhW3JlY29yZEJhdGNoSWR4XTtcbiAgICAgIGNvbnN0IG51bUxhYmVscyA9IHRleHREYXRhLmxlbmd0aDtcbiAgICAgIGNvbnN0IHRleHRWYWx1ZXMgPSB0ZXh0RGF0YS52YWx1ZXM7XG4gICAgICBjb25zdCBjaGFyYWN0ZXJPZmZzZXRzID0gdGV4dERhdGEudmFsdWVPZmZzZXRzO1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGhvdyB0byBwcm9wZXJseSByZXRyaWV2ZSBiYXRjaCBvZmZzZXQ/XG4gICAgICBjb25zdCBiYXRjaE9mZnNldCA9IGdlb21ldHJ5Q29sdW1uLl9vZmZzZXRzW3JlY29yZEJhdGNoSWR4XTtcblxuICAgICAgY29uc3QgcHJvcHM6IFRleHRMYXllclByb3BzPGFueT4gJiBFeHRlbnNpb25Qcm9wcyA9IHtcbiAgICAgICAgLy8gTm90ZTogYmVjYXVzZSB0aGlzIGlzIGEgY29tcG9zaXRlIGxheWVyIGFuZCBub3QgZG9pbmcgdGhlIHJlbmRlcmluZ1xuICAgICAgICAvLyBpdHNlbGYsIHdlIHN0aWxsIGhhdmUgdG8gcGFzcyBpbiBvdXIgZGVmYXVsdFByb3BzXG4gICAgICAgIC4uLm91ckRlZmF1bHRQcm9wcyxcbiAgICAgICAgLi4ub3RoZXJQcm9wcyxcblxuICAgICAgICAvLyB1c2VkIGZvciBwaWNraW5nIHB1cnBvc2VzXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcmVjb3JkQmF0Y2hJZHgsXG4gICAgICAgIHRhYmxlT2Zmc2V0cyxcblxuICAgICAgICBpZDogYCR7dGhpcy5wcm9wcy5pZH0tZ2VvYXJyb3ctdGV4dC1sYXllci0ke3JlY29yZEJhdGNoSWR4fWAsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBkYXRhOiB0YWJsZS5iYXRjaGVzW3JlY29yZEJhdGNoSWR4XSxcbiAgICAgICAgICBsZW5ndGg6IGdlb21ldHJ5RGF0YS5sZW5ndGgsXG4gICAgICAgICAgc3RhcnRJbmRpY2VzOiBjaGFyYWN0ZXJPZmZzZXRzLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIC8vIFBvc2l0aW9ucyBuZWVkIHRvIGJlIGV4cGFuZGVkIHRvIGJlIG9uZSBwZXIgY2hhcmFjdGVyIVxuICAgICAgICAgICAgZ2V0UG9zaXRpb246IHtcbiAgICAgICAgICAgICAgdmFsdWU6IGV4cGFuZEFycmF5VG9Db29yZHMoXG4gICAgICAgICAgICAgICAgZmxhdENvb3JkaW5hdGVBcnJheSxcbiAgICAgICAgICAgICAgICBnZW9tZXRyeURhdGEudHlwZS5saXN0U2l6ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJPZmZzZXRzLFxuICAgICAgICAgICAgICAgIG51bUxhYmVsc1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBzaXplOiBnZW9tZXRyeURhdGEudHlwZS5saXN0U2l6ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbiAgICAgICAgICAgIGdldFRleHQ6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHRleHRWYWx1ZXNcbiAgICAgICAgICAgICAgLy8gc2l6ZTogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFRPRE8gcHJpdmlkZSBtb3JlIHJvYnVzdCBkYXRhIGNvbXBhcmF0b3JzXG4gICAgICAgIGRhdGFDb21wYXJhdG9yOiAoZDEsIGQyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGQxLmRhdGEgPT09IGQyLmRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIF9zdWJMYXllclByb3BzOiB7XG4gICAgICAgICAgY2hhcmFjdGVyczoge1xuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkMSwgZDIpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGQxLmRhdGEgPT09IGQyLmRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgcHJvcElucHV0XSBvZiBPYmplY3QuZW50cmllcyhhY2Nlc3NvcnMpKSB7XG4gICAgICAgIGFzc2lnbkFjY2Vzc29yKHtcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICBwcm9wSW5wdXQsXG4gICAgICAgICAgY2h1bmtJZHg6IHJlY29yZEJhdGNoSWR4LFxuICAgICAgICAgIGdlb21Db29yZE9mZnNldHM6IGNoYXJhY3Rlck9mZnNldHMsXG4gICAgICAgICAgYmF0Y2hPZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheWVyID0gbmV3IFRleHRMYXllcih7XG4gICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyhwcm9wcyksXG4gICAgICAgIC8vIHByZXNlcnZlIGJpbmRlZCBhY2Nlc3NvcnMsIGFzIHRoZXkgYXJlIG92ZXJ3cml0ZW4gYmFjayBieSBwYXNzLXRocm91Z2ggYWNjZXNzb3JzIGZyb20gZXh0ZW5zaW9uc1xuICAgICAgICBnZXRGaWx0ZXJlZDogcHJvcHMuZ2V0RmlsdGVyZWQsXG4gICAgICAgIGdldEZpbHRlclZhbHVlOiBwcm9wcy5nZXRGaWx0ZXJWYWx1ZVxuICAgICAgfSk7XG4gICAgICBsYXllcnMucHVzaChsYXllcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBU0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsRUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBRUEsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sU0FBQSxHQUFBUCxPQUFBO0FBQW9ELFNBQUFRLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENB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
@@ -6,6 +6,16 @@ export declare function findGeometryColumnIndex(schema: arrow.Schema, extensionN
6
6
  * Returns `true` if the input is a reference to a column in the table
7
7
  */
8
8
  export declare function isColumnReference(input: any): input is string;
9
+ /**
10
+ * Convert geoarrow Struct coordinates to FixedSizeList coords
11
+ *
12
+ * The GeoArrow spec allows for either separated or interleaved coords, but at
13
+ * this time deck.gl only supports interleaved.
14
+ */
15
+ export declare function convertStructToFixedSizeList(coords: arrow.Data<arrow.FixedSizeList<arrow.Float64>> | arrow.Data<arrow.Struct<{
16
+ x: arrow.Float64;
17
+ y: arrow.Float64;
18
+ }>>): arrow.Data<arrow.FixedSizeList<arrow.Float64>>;
9
19
  declare type AssignAccessorProps = {
10
20
  /** The object on which to assign the resolved accesor */
11
21
  props: Record<string, any>;
@@ -34,10 +44,11 @@ export declare function assignAccessor(args: AssignAccessorProps): void;
34
44
  * @param input: the input array to expand
35
45
  * @param size : the number of nested elements in the input array per geometry. So for example, for RGB data this would be 3, for RGBA this would be 4. For radius, this would be 1.
36
46
  * @param geomOffsets : an offsets array mapping from the geometry to the coordinate indexes. So in the case of a LineStringArray, this is retrieved directly from the GeoArrow storage. In the case of a PolygonArray, this comes from the resolved indexes that need to be given to the SolidPolygonLayer anyways.
47
+ * @param numPositions : end position in geomOffsets, as geomOffsets can potentially contain preallocated zeroes in the end of the buffer.
37
48
  *
38
49
  * @return {TypedArray} values expanded to be per-coordinate
39
50
  */
40
- export declare function expandArrayToCoords<T extends TypedArray>(input: T, size: number, geomOffsets: Int32Array): T;
51
+ export declare function expandArrayToCoords<T extends TypedArray>(input: T, size: number, geomOffsets: Int32Array, numPositions?: number): T;
41
52
  /**
42
53
  * Get a geometry vector with the specified extension type name from the table.
43
54
  */
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.assignAccessor = assignAccessor;
9
+ exports.convertStructToFixedSizeList = convertStructToFixedSizeList;
9
10
  exports.expandArrayToCoords = expandArrayToCoords;
10
11
  exports.extractAccessorsFromProps = extractAccessorsFromProps;
11
12
  exports.findGeometryColumnIndex = findGeometryColumnIndex;
@@ -58,7 +59,6 @@ function isDataSeparatedCoords(data) {
58
59
  * this time deck.gl only supports interleaved.
59
60
  */
60
61
  // TODO: this hasn't been tested yet
61
- // @ts-expect-error
62
62
  function convertStructToFixedSizeList(coords) {
63
63
  if (isDataInterleavedCoords(coords)) {
64
64
  return coords;
@@ -183,17 +183,19 @@ function assignAccessor(args) {
183
183
  * @param input: the input array to expand
184
184
  * @param size : the number of nested elements in the input array per geometry. So for example, for RGB data this would be 3, for RGBA this would be 4. For radius, this would be 1.
185
185
  * @param geomOffsets : an offsets array mapping from the geometry to the coordinate indexes. So in the case of a LineStringArray, this is retrieved directly from the GeoArrow storage. In the case of a PolygonArray, this comes from the resolved indexes that need to be given to the SolidPolygonLayer anyways.
186
+ * @param numPositions : end position in geomOffsets, as geomOffsets can potentially contain preallocated zeroes in the end of the buffer.
186
187
  *
187
188
  * @return {TypedArray} values expanded to be per-coordinate
188
189
  */
189
- function expandArrayToCoords(input, size, geomOffsets) {
190
- var numCoords = geomOffsets[geomOffsets.length - 1];
190
+ function expandArrayToCoords(input, size, geomOffsets, numPositions) {
191
+ var lastIndex = numPositions || geomOffsets.length - 1;
192
+ var numCoords = geomOffsets[lastIndex];
191
193
  // @ts-expect-error
192
194
  var outputArray = new input.constructor(numCoords * size);
193
195
 
194
196
  // geomIdx is an index into the geomOffsets array
195
197
  // geomIdx is also the geometry/table index
196
- for (var geomIdx = 0; geomIdx < geomOffsets.length - 1; geomIdx++) {
198
+ for (var geomIdx = 0; geomIdx < lastIndex; geomIdx++) {
197
199
  // geomOffsets maps from the geometry index to the coord index
198
200
  // So here we get the range of coords that this geometry covers
199
201
  var lastCoordIdx = geomOffsets[geomIdx];
@@ -304,4 +306,4 @@ function extractAccessorsFromProps(props, excludeKeys) {
304
306
  }
305
307
  return [accessors, otherProps];
306
308
  }
307
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiYXJyb3ciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImdhIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiZmluZEdlb21ldHJ5Q29sdW1uSW5kZXgiLCJzY2hlbWEiLCJleHRlbnNpb25OYW1lIiwiZ2VvbWV0cnlDb2x1bW5OYW1lIiwiaW5kZXgiLCJmaWVsZHMiLCJmaW5kSW5kZXgiLCJmaWVsZCIsIm5hbWUiLCJtZXRhZGF0YSIsImlzQ29sdW1uUmVmZXJlbmNlIiwiaW5wdXQiLCJpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyIsImRhdGEiLCJ0eXBlIiwiRml4ZWRTaXplTGlzdCIsImlzRGF0YVNlcGFyYXRlZENvb3JkcyIsIlN0cnVjdCIsImNvbnZlcnRTdHJ1Y3RUb0ZpeGVkU2l6ZUxpc3QiLCJjb29yZHMiLCJpbnRlcmxlYXZlZENvb3JkcyIsIkZsb2F0NjRBcnJheSIsImxlbmd0aCIsIl9jb29yZHMkY2hpbGRyZW4iLCJfc2xpY2VkVG9BcnJheTIiLCJjaGlsZHJlbiIsInhDaGlsZCIsInlDaGlsZCIsInZhbHVlcyIsImNoaWxkRGF0YVR5cGUiLCJGbG9hdDY0IiwiZGF0YVR5cGUiLCJGaWVsZCIsImludGVybGVhdmVkQ29vcmRzRGF0YSIsIm1ha2VEYXRhIiwibnVsbENvdW50IiwibnVsbEJpdG1hcCIsImNoaWxkIiwiYXNzZXJ0Iiwid3JhcEFjY2Vzc29yRnVuY3Rpb24iLCJvYmplY3RJbmZvIiwidXNlckFjY2Vzc29yRnVuY3Rpb24iLCJiYXRjaE9mZnNldCIsIm5ld0luZGV4IiwiaW52ZXJ0ZWRHZW9tT2Zmc2V0cyIsInVuZGVmaW5lZCIsIm5ld09iamVjdERhdGEiLCJhdHRyaWJ1dGVzIiwibmV3T2JqZWN0SW5mbyIsInRhcmdldCIsImFzc2lnbkFjY2Vzc29yIiwiYXJncyIsInByb3BzIiwicHJvcE5hbWUiLCJwcm9wSW5wdXQiLCJjaHVua0lkeCIsImdlb21Db29yZE9mZnNldHMiLCJfYXJncyRiYXRjaE9mZnNldCIsIlZlY3RvciIsImNvbHVtbkRhdGEiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImV4cGFuZEFycmF5VG9Db29yZHMiLCJsaXN0U2l6ZSIsInZhbHVlIiwic2l6ZSIsIm5vcm1hbGl6ZWQiLCJpc0Zsb2F0Iiwib2JqZWN0IiwiZ2VvbU9mZnNldHMiLCJudW1Db29yZHMiLCJvdXRwdXRBcnJheSIsImNvbnN0cnVjdG9yIiwiZ2VvbUlkeCIsImxhc3RDb29yZElkeCIsIm5leHRDb29yZElkeCIsImNvb3JkSWR4IiwiZ2V0R2VvbWV0cnlWZWN0b3IiLCJ0YWJsZSIsImdlb2Fycm93VHlwZU5hbWUiLCJnZW9tZXRyeUNvbHVtbklkeCIsImdldENoaWxkQXQiLCJnZXRMaXN0TmVzdGluZ0xldmVscyIsIm5lc3RpbmdMZXZlbHMiLCJpc0xpc3QiLCJnZXRNdWx0aUxpbmVTdHJpbmdSZXNvbHZlZE9mZnNldHMiLCJ2YWx1ZU9mZnNldHMiLCJsaW5lU3RyaW5nRGF0YSIsImdldE11bHRpTGluZVN0cmluZ0NoaWxkIiwicmluZ09mZnNldHMiLCJyZXNvbHZlZFJpbmdPZmZzZXRzIiwiSW50MzJBcnJheSIsImdldFBvbHlnb25SZXNvbHZlZE9mZnNldHMiLCJyaW5nRGF0YSIsImdldFBvbHlnb25DaGlsZCIsImdldE11bHRpUG9seWdvblJlc29sdmVkT2Zmc2V0cyIsInBvbHlnb25EYXRhIiwiZ2V0TXVsdGlQb2x5Z29uQ2hpbGQiLCJwb2x5Z29uT2Zmc2V0cyIsImludmVydE9mZnNldHMiLCJvZmZzZXRzIiwibGFyZ2VzdE9mZnNldCIsImFycmF5Q29uc3RydWN0b3IiLCJNYXRoIiwicG93IiwiVWludDhBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJpbnZlcnRlZE9mZnNldHMiLCJhcnJheUlkeCIsInRoaXNPZmZzZXQiLCJuZXh0T2Zmc2V0Iiwib2Zmc2V0IiwiZXh0cmFjdEFjY2Vzc29yc0Zyb21Qcm9wcyIsImV4Y2x1ZGVLZXlzIiwiYWNjZXNzb3JzIiwib3RoZXJQcm9wcyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsImtleSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBkZWNrLmdsLWNvbW11bml0eVxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IChjKSB2aXMuZ2wgY29udHJpYnV0b3JzXG5cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgKiBhcyBnYSBmcm9tICdAZ2VvYXJyb3cvZ2VvYXJyb3ctanMnO1xuaW1wb3J0IHtBY2Nlc3NvckNvbnRleHQsIEFjY2Vzc29yRnVuY3Rpb24sIF9JbnRlcm5hbEFjY2Vzc29yQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBUeXBlZEFycmF5ID1cbiAgfCBVaW50OEFycmF5XG4gIHwgVWludDhDbGFtcGVkQXJyYXlcbiAgfCBVaW50MTZBcnJheVxuICB8IFVpbnQzMkFycmF5XG4gIHwgSW50OEFycmF5XG4gIHwgSW50MTZBcnJheVxuICB8IEludDMyQXJyYXlcbiAgfCBGbG9hdDMyQXJyYXlcbiAgfCBGbG9hdDY0QXJyYXk7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kR2VvbWV0cnlDb2x1bW5JbmRleChcbiAgc2NoZW1hOiBhcnJvdy5TY2hlbWEsXG4gIGV4dGVuc2lvbk5hbWU6IHN0cmluZyxcbiAgZ2VvbWV0cnlDb2x1bW5OYW1lPzogc3RyaW5nIHwgbnVsbFxuKTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IGluZGV4ID0gc2NoZW1hLmZpZWxkcy5maW5kSW5kZXgoXG4gICAgZmllbGQgPT5cbiAgICAgIGZpZWxkLm5hbWUgPT09IGdlb21ldHJ5Q29sdW1uTmFtZSB8fFxuICAgICAgZmllbGQubWV0YWRhdGEuZ2V0KCdBUlJPVzpleHRlbnNpb246bmFtZScpID09PSBleHRlbnNpb25OYW1lXG4gICk7XG4gIHJldHVybiBpbmRleCAhPT0gLTEgPyBpbmRleCA6IG51bGw7XG59XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGlucHV0IGlzIGEgcmVmZXJlbmNlIHRvIGEgY29sdW1uIGluIHRoZSB0YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb2x1bW5SZWZlcmVuY2UoaW5wdXQ6IGFueSk6IGlucHV0IGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyhcbiAgZGF0YTogYXJyb3cuRGF0YVxuKTogZGF0YSBpcyBhcnJvdy5EYXRhPGFycm93LkZpeGVkU2l6ZUxpc3Q8YXJyb3cuRmxvYXQ2ND4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayAyIG9yIDNkPyBGbG9hdDY0P1xuICByZXR1cm4gZGF0YS50eXBlIGluc3RhbmNlb2YgYXJyb3cuRml4ZWRTaXplTGlzdDtcbn1cblxuZnVuY3Rpb24gaXNEYXRhU2VwYXJhdGVkQ29vcmRzKFxuICBkYXRhOiBhcnJvdy5EYXRhXG4pOiBkYXRhIGlzIGFycm93LkRhdGE8YXJyb3cuU3RydWN0PHt4OiBhcnJvdy5GbG9hdDY0OyB5OiBhcnJvdy5GbG9hdDY0fT4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayBjaGlsZCBuYW1lcz8gRmxvYXQ2ND9cbiAgcmV0dXJuIGRhdGEudHlwZSBpbnN0YW5jZW9mIGFycm93LlN0cnVjdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdlb2Fycm93IFN0cnVjdCBjb29yZGluYXRlcyB0byBGaXhlZFNpemVMaXN0IGNvb3Jkc1xuICpcbiAqIFRoZSBHZW9BcnJvdyBzcGVjIGFsbG93cyBmb3IgZWl0aGVyIHNlcGFyYXRlZCBvciBpbnRlcmxlYXZlZCBjb29yZHMsIGJ1dCBhdFxuICogdGhpcyB0aW1lIGRlY2suZ2wgb25seSBzdXBwb3J0cyBpbnRlcmxlYXZlZC5cbiAqL1xuLy8gVE9ETzogdGhpcyBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0XG4vLyBAdHMtZXhwZWN0LWVycm9yXG5mdW5jdGlvbiBjb252ZXJ0U3RydWN0VG9GaXhlZFNpemVMaXN0KFxuICBjb29yZHM6XG4gICAgfCBhcnJvdy5EYXRhPGFycm93LkZpeGVkU2l6ZUxpc3Q8YXJyb3cuRmxvYXQ2ND4+XG4gICAgfCBhcnJvdy5EYXRhPGFycm93LlN0cnVjdDx7eDogYXJyb3cuRmxvYXQ2NDsgeTogYXJyb3cuRmxvYXQ2NH0+PlxuKTogYXJyb3cuRGF0YTxhcnJvdy5GaXhlZFNpemVMaXN0PGFycm93LkZsb2F0NjQ+PiB7XG4gIGlmIChpc0RhdGFJbnRlcmxlYXZlZENvb3Jkcyhjb29yZHMpKSB7XG4gICAgcmV0dXJuIGNvb3JkcztcbiAgfSBlbHNlIGlmIChpc0RhdGFTZXBhcmF0ZWRDb29yZHMoY29vcmRzKSkge1xuICAgIC8vIFRPRE86IHN1cHBvcnQgM2RcbiAgICBjb25zdCBpbnRlcmxlYXZlZENvb3JkcyA9IG5ldyBGbG9hdDY0QXJyYXkoY29vcmRzLmxlbmd0aCAqIDIpO1xuICAgIGNvbnN0IFt4Q2hpbGQsIHlDaGlsZF0gPSBjb29yZHMuY2hpbGRyZW47XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGludGVybGVhdmVkQ29vcmRzW2kgKiAyXSA9IHhDaGlsZC52YWx1ZXNbaV07XG4gICAgICBpbnRlcmxlYXZlZENvb3Jkc1tpICogMiArIDFdID0geUNoaWxkLnZhbHVlc1tpXTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZERhdGFUeXBlID0gbmV3IGFycm93LkZsb2F0NjQoKTtcbiAgICBjb25zdCBkYXRhVHlwZSA9IG5ldyBhcnJvdy5GaXhlZFNpemVMaXN0KDIsIG5ldyBhcnJvdy5GaWVsZCgnY29vcmRzJywgY2hpbGREYXRhVHlwZSkpO1xuXG4gICAgY29uc3QgaW50ZXJsZWF2ZWRDb29yZHNEYXRhID0gYXJyb3cubWFrZURhdGEoe1xuICAgICAgdHlwZTogY2hpbGREYXRhVHlwZSxcbiAgICAgIGxlbmd0aDogaW50ZXJsZWF2ZWRDb29yZHMubGVuZ3RoXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhID0gYXJyb3cubWFrZURhdGEoe1xuICAgICAgdHlwZTogZGF0YVR5cGUsXG4gICAgICBsZW5ndGg6IGNvb3Jkcy5sZW5ndGgsXG4gICAgICBudWxsQ291bnQ6IGNvb3Jkcy5udWxsQ291bnQsXG4gICAgICBudWxsQml0bWFwOiBjb29yZHMubnVsbEJpdG1hcCxcbiAgICAgIGNoaWxkOiBpbnRlcmxlYXZlZENvb3Jkc0RhdGFcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzc2VydChmYWxzZSk7XG59XG5cbnR5cGUgQXNzaWduQWNjZXNzb3JQcm9wcyA9IHtcbiAgLyoqIFRoZSBvYmplY3Qgb24gd2hpY2ggdG8gYXNzaWduIHRoZSByZXNvbHZlZCBhY2Nlc29yICovXG4gIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKiogVGhlIG5hbWUgb2YgdGhlIHByb3AgdG8gc2V0ICovXG4gIHByb3BOYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgdXNlci1zdXBwbGllZCBpbnB1dCB0byB0aGUgbGF5ZXIuIE11c3QgZWl0aGVyIGJlIGEgc2NhbGFyIHZhbHVlIG9yIGEgcmVmZXJlbmNlIHRvIGEgY29sdW1uIGluIHRoZSB0YWJsZS4gKi9cbiAgcHJvcElucHV0OiBhbnk7XG4gIC8qKiBOdW1lcmljIGluZGV4IGluIHRoZSB0YWJsZSAqL1xuICBjaHVua0lkeDogbnVtYmVyO1xuICAvKiogYSBtYXAgZnJvbSB0aGUgZ2VvbWV0cnkgaW5kZXggdG8gdGhlIGNvb3JkIG9mZnNldHMgZm9yIHRoYXQgZ2VvbWV0cnkuICovXG4gIGdlb21Db29yZE9mZnNldHM/OiBJbnQzMkFycmF5IHwgbnVsbDtcbiAgLyoqIEFic29sdXRlIG9mZnNldCBvZiB0aGUgYmF0Y2ggaW4gdGhlIHRhYmxlL3ZlY3Rvci4gQWRkZWQgdG8gdGhlIHNhbXBsaW5nIGluZGV4LiAqL1xuICBiYXRjaE9mZnNldD86IG51bWJlcjtcbn07XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBhIHVzZXItcHJvdmlkZWQgYWNjZXNzb3IgZnVuY3Rpb25cbiAqXG4gKiBGb3IgbGF5ZXJzIGxpa2UgU2NhdHRlcnBsb3QsIFBhdGgsIGFuZCBQb2x5Z29uLCB3ZSBhdXRvbWF0aWNhbGx5IGhhbmRsZVxuICogXCJleHBsb2RpbmdcIiB0aGUgdGFibGUgd2hlbiBtdWx0aS1nZW9tZXRyeSBpbnB1dCBhcmUgcHJvdmlkZWQuIFRoaXMgbWVhbnMgdGhhdFxuICogdGhlIHVwc3RyZWFtIGBpbmRleGAgdmFsdWUgcGFzc2VkIHRvIHRoZSB1c2VyIHdpbGwgYmUgdGhlIGNvcnJlY3Qgcm93IGluZGV4XG4gKiBfb25seV8gZm9yIG5vbi1leHBsb2RlZCBkYXRhLlxuICpcbiAqIFdpdGggdGhpcyBmdW5jdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIHVzZXIgdXNhZ2UgYnkgYXV0b21hdGljYWxseSBjb252ZXJ0aW5nXG4gKiBiYWNrIGZyb20gXCJleHBsb2RlZFwiIGluZGV4IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHJvdyBpbmRleC5cbiAqL1xuZnVuY3Rpb24gd3JhcEFjY2Vzc29yRnVuY3Rpb248SW4sIE91dD4oXG4gIG9iamVjdEluZm86IF9JbnRlcm5hbEFjY2Vzc29yQ29udGV4dDxJbj4sXG4gIHVzZXJBY2Nlc3NvckZ1bmN0aW9uOiBBY2Nlc3NvckZ1bmN0aW9uPEluLCBPdXQ+LFxuICBiYXRjaE9mZnNldDogbnVtYmVyXG4pOiBPdXQge1xuICBjb25zdCB7aW5kZXgsIGRhdGF9ID0gb2JqZWN0SW5mbztcbiAgbGV0IG5ld0luZGV4ID0gaW5kZXggKyBiYXRjaE9mZnNldDtcbiAgaWYgKGRhdGEuaW52ZXJ0ZWRHZW9tT2Zmc2V0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbmV3SW5kZXggPSBkYXRhLmludmVydGVkR2VvbU9mZnNldHNbaW5kZXhdO1xuICB9XG4gIGNvbnN0IG5ld09iamVjdERhdGEgPSB7XG4gICAgZGF0YTogZGF0YS5kYXRhLFxuICAgIGxlbmd0aDogZGF0YS5sZW5ndGgsXG4gICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzXG4gIH07XG4gIGNvbnN0IG5ld09iamVjdEluZm8gPSB7XG4gICAgaW5kZXg6IG5ld0luZGV4LFxuICAgIGRhdGE6IG5ld09iamVjdERhdGEsXG4gICAgdGFyZ2V0OiBvYmplY3RJbmZvLnRhcmdldFxuICB9O1xuICByZXR1cm4gdXNlckFjY2Vzc29yRnVuY3Rpb24obmV3T2JqZWN0SW5mbyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhY2Nlc3NvciBhbmQgYXNzaWduIHRvIHByb3BzIG9iamVjdFxuICpcbiAqIFRoaXMgaXMgdXNlZnVsIGFzIGEgaGVscGVyIGZ1bmN0aW9uIGJlY2F1c2UgYSBzY2FsYXIgcHJvcCBpcyBzZXQgYXQgdGhlIHRvcFxuICogbGV2ZWwgd2hpbGUgYSB2ZWN0b3JpemVkIHByb3AgaXMgc2V0IGluc2lkZSBkYXRhLmF0dHJpYnV0ZXNcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25BY2Nlc3NvcihhcmdzOiBBc3NpZ25BY2Nlc3NvclByb3BzKSB7XG4gIGNvbnN0IHtwcm9wcywgcHJvcE5hbWUsIHByb3BJbnB1dCwgY2h1bmtJZHgsIGdlb21Db29yZE9mZnNldHMsIGJhdGNoT2Zmc2V0ID0gMH0gPSBhcmdzO1xuXG4gIGlmIChwcm9wSW5wdXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwcm9wSW5wdXQgaW5zdGFuY2VvZiBhcnJvdy5WZWN0b3IpIHtcbiAgICBjb25zdCBjb2x1bW5EYXRhID0gcHJvcElucHV0LmRhdGFbY2h1bmtJZHhdO1xuXG4gICAgaWYgKGFycm93LkRhdGFUeXBlLmlzRml4ZWRTaXplTGlzdChjb2x1bW5EYXRhKSkge1xuICAgICAgYXNzZXJ0KGNvbHVtbkRhdGEuY2hpbGRyZW4ubGVuZ3RoID09PSAxKTtcbiAgICAgIGxldCB2YWx1ZXMgPSBjb2x1bW5EYXRhLmNoaWxkcmVuWzBdLnZhbHVlcztcblxuICAgICAgaWYgKGdlb21Db29yZE9mZnNldHMpIHtcbiAgICAgICAgdmFsdWVzID0gZXhwYW5kQXJyYXlUb0Nvb3Jkcyh2YWx1ZXMsIGNvbHVtbkRhdGEudHlwZS5saXN0U2l6ZSwgZ2VvbUNvb3JkT2Zmc2V0cyk7XG4gICAgICB9XG5cbiAgICAgIHByb3BzLmRhdGEuYXR0cmlidXRlc1twcm9wTmFtZV0gPSB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZXMsXG4gICAgICAgIHNpemU6IGNvbHVtbkRhdGEudHlwZS5saXN0U2l6ZSxcbiAgICAgICAgLy8gU2V0IHRvIGB0cnVlYCB0byBzaWduaWZ5IHRoYXQgY29sb3JzIGFyZSBhbHJlYWR5IDAtMjU1LCBhbmQgZGVjay9sdW1hXG4gICAgICAgIC8vIGRvZXMgbm90IG5lZWQgdG8gcmVzY2FsZVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdmlzZ2wvZGVjay5nbC9ibG9iLzQwMWQ2MjRjMDUyOWZhYWE2MjEyNTcxNGMzNzZiM2JhM2I4ZjM3OWYvZG9jcy9hcGktcmVmZXJlbmNlL2NvcmUvYXR0cmlidXRlLW1hbmFnZXIubWQ/cGxhaW49MSNMNjZcbiAgICAgICAgbm9ybWFsaXplZDogdHJ1ZVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzRmxvYXQoY29sdW1uRGF0YSkpIHtcbiAgICAgIGxldCB2YWx1ZXMgPSBjb2x1bW5EYXRhLnZhbHVlcztcblxuICAgICAgaWYgKGdlb21Db29yZE9mZnNldHMpIHtcbiAgICAgICAgdmFsdWVzID0gZXhwYW5kQXJyYXlUb0Nvb3Jkcyh2YWx1ZXMsIDEsIGdlb21Db29yZE9mZnNldHMpO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5kYXRhLmF0dHJpYnV0ZXNbcHJvcE5hbWVdID0ge1xuICAgICAgICB2YWx1ZTogdmFsdWVzLFxuICAgICAgICBzaXplOiAxXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcElucHV0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcHJvcHNbcHJvcE5hbWVdID0gPEluPihvYmplY3Q6IGFueSwgb2JqZWN0SW5mbzogQWNjZXNzb3JDb250ZXh0PEluPikgPT4ge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlIHRoYXQgZG9lc24ndCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlcnNcbiAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ2dldFBvbHlnb25PZmZzZXQnKSB7XG4gICAgICAgIHJldHVybiBwcm9wSW5wdXQob2JqZWN0LCBvYmplY3RJbmZvKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHdyYXBBY2Nlc3NvckZ1bmN0aW9uKG9iamVjdEluZm8sIHByb3BJbnB1dCwgYmF0Y2hPZmZzZXQpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcHJvcHNbcHJvcE5hbWVdID0gcHJvcElucHV0O1xuICB9XG59XG5cbi8qKlxuICogRXhwYW5kIGFuIGFycmF5IGZyb20gXCJvbmUgZWxlbWVudCBwZXIgZ2VvbWV0cnlcIiB0byBcIm9uZSBlbGVtZW50IHBlciBjb29yZGluYXRlXCJcbiAqXG4gKiBAcGFyYW0gaW5wdXQ6IHRoZSBpbnB1dCBhcnJheSB0byBleHBhbmRcbiAqIEBwYXJhbSBzaXplIDogdGhlIG51bWJlciBvZiBuZXN0ZWQgZWxlbWVudHMgaW4gdGhlIGlucHV0IGFycmF5IHBlciBnZW9tZXRyeS4gU28gZm9yIGV4YW1wbGUsIGZvciBSR0IgZGF0YSB0aGlzIHdvdWxkIGJlIDMsIGZvciBSR0JBIHRoaXMgd291bGQgYmUgNC4gRm9yIHJhZGl1cywgdGhpcyB3b3VsZCBiZSAxLlxuICogQHBhcmFtIGdlb21PZmZzZXRzIDogYW4gb2Zmc2V0cyBhcnJheSBtYXBwaW5nIGZyb20gdGhlIGdlb21ldHJ5IHRvIHRoZSBjb29yZGluYXRlIGluZGV4ZXMuIFNvIGluIHRoZSBjYXNlIG9mIGEgTGluZVN0cmluZ0FycmF5LCB0aGlzIGlzIHJldHJpZXZlZCBkaXJlY3RseSBmcm9tIHRoZSBHZW9BcnJvdyBzdG9yYWdlLiBJbiB0aGUgY2FzZSBvZiBhIFBvbHlnb25BcnJheSwgdGhpcyBjb21lcyBmcm9tIHRoZSByZXNvbHZlZCBpbmRleGVzIHRoYXQgbmVlZCB0byBiZSBnaXZlbiB0byB0aGUgU29saWRQb2x5Z29uTGF5ZXIgYW55d2F5cy5cbiAqXG4gKiBAcmV0dXJuICB7VHlwZWRBcnJheX0gdmFsdWVzIGV4cGFuZGVkIHRvIGJlIHBlci1jb29yZGluYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRBcnJheVRvQ29vcmRzPFQgZXh0ZW5kcyBUeXBlZEFycmF5PihcbiAgaW5wdXQ6IFQsXG4gIHNpemU6IG51bWJlcixcbiAgZ2VvbU9mZnNldHM6IEludDMyQXJyYXlcbik6IFQge1xuICBjb25zdCBudW1Db29yZHMgPSBnZW9tT2Zmc2V0c1tnZW9tT2Zmc2V0cy5sZW5ndGggLSAxXTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBjb25zdCBvdXRwdXRBcnJheTogVCA9IG5ldyBpbnB1dC5jb25zdHJ1Y3RvcihudW1Db29yZHMgKiBzaXplKTtcblxuICAvLyBnZW9tSWR4IGlzIGFuIGluZGV4IGludG8gdGhlIGdlb21PZmZzZXRzIGFycmF5XG4gIC8vIGdlb21JZHggaXMgYWxzbyB0aGUgZ2VvbWV0cnkvdGFibGUgaW5kZXhcbiAgZm9yIChsZXQgZ2VvbUlkeCA9IDA7IGdlb21JZHggPCBnZW9tT2Zmc2V0cy5sZW5ndGggLSAxOyBnZW9tSWR4KyspIHtcbiAgICAvLyBnZW9tT2Zmc2V0cyBtYXBzIGZyb20gdGhlIGdlb21ldHJ5IGluZGV4IHRvIHRoZSBjb29yZCBpbmRleFxuICAgIC8vIFNvIGhlcmUgd2UgZ2V0IHRoZSByYW5nZSBvZiBjb29yZHMgdGhhdCB0aGlzIGdlb21ldHJ5IGNvdmVyc1xuICAgIGNvbnN0IGxhc3RDb29yZElkeCA9IGdlb21PZmZzZXRzW2dlb21JZHhdO1xuICAgIGNvbnN0IG5leHRDb29yZElkeCA9IGdlb21PZmZzZXRzW2dlb21JZHggKyAxXTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGlzIHJhbmdlIG9mIGNvb3JkIGluZGljZXNcbiAgICBmb3IgKGxldCBjb29yZElkeCA9IGxhc3RDb29yZElkeDsgY29vcmRJZHggPCBuZXh0Q29vcmRJZHg7IGNvb3JkSWR4KyspIHtcbiAgICAgIC8vIEl0ZXJhdGUgb3ZlciBzaXplXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAvLyBDb3B5IGZyb20gdGhlIGdlb21ldHJ5IGluZGV4IGluIGBpbnB1dGAgdG8gdGhlIGNvb3JkIGluZGV4IGluXG4gICAgICAgIC8vIGBvdXRwdXRgXG4gICAgICAgIG91dHB1dEFycmF5W2Nvb3JkSWR4ICogc2l6ZSArIGldID0gaW5wdXRbZ2VvbUlkeCAqIHNpemUgKyBpXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0QXJyYXk7XG59XG5cbi8qKlxuICogR2V0IGEgZ2VvbWV0cnkgdmVjdG9yIHdpdGggdGhlIHNwZWNpZmllZCBleHRlbnNpb24gdHlwZSBuYW1lIGZyb20gdGhlIHRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2VvbWV0cnlWZWN0b3IoXG4gIHRhYmxlOiBhcnJvdy5UYWJsZSxcbiAgZ2VvYXJyb3dUeXBlTmFtZTogc3RyaW5nXG4pOiBhcnJvdy5WZWN0b3IgfCBudWxsIHtcbiAgY29uc3QgZ2VvbWV0cnlDb2x1bW5JZHggPSBmaW5kR2VvbWV0cnlDb2x1bW5JbmRleCh0YWJsZS5zY2hlbWEsIGdlb2Fycm93VHlwZU5hbWUpO1xuXG4gIGlmIChnZW9tZXRyeUNvbHVtbklkeCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihgTm8gY29sdW1uIGZvdW5kIHdpdGggZXh0ZW5zaW9uIHR5cGUgJHtnZW9hcnJvd1R5cGVOYW1lfWApO1xuICB9XG5cbiAgcmV0dXJuIHRhYmxlLmdldENoaWxkQXQoZ2VvbWV0cnlDb2x1bW5JZHgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlzdE5lc3RpbmdMZXZlbHMoZGF0YTogYXJyb3cuRGF0YSk6IG51bWJlciB7XG4gIGxldCBuZXN0aW5nTGV2ZWxzID0gMDtcbiAgaWYgKGFycm93LkRhdGFUeXBlLmlzTGlzdChkYXRhLnR5cGUpKSB7XG4gICAgbmVzdGluZ0xldmVscyArPSAxO1xuICAgIGRhdGEgPSBkYXRhLmNoaWxkcmVuWzBdO1xuICB9XG4gIHJldHVybiBuZXN0aW5nTGV2ZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXVsdGlMaW5lU3RyaW5nUmVzb2x2ZWRPZmZzZXRzKGRhdGE6IGdhLmRhdGEuTXVsdGlMaW5lU3RyaW5nRGF0YSk6IEludDMyQXJyYXkge1xuICBjb25zdCBnZW9tT2Zmc2V0cyA9IGRhdGEudmFsdWVPZmZzZXRzO1xuICBjb25zdCBsaW5lU3RyaW5nRGF0YSA9IGdhLmNoaWxkLmdldE11bHRpTGluZVN0cmluZ0NoaWxkKGRhdGEpO1xuICBjb25zdCByaW5nT2Zmc2V0cyA9IGxpbmVTdHJpbmdEYXRhLnZhbHVlT2Zmc2V0cztcblxuICBjb25zdCByZXNvbHZlZFJpbmdPZmZzZXRzID0gbmV3IEludDMyQXJyYXkoZ2VvbU9mZnNldHMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFJpbmdPZmZzZXRzLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gUGVyZm9ybSB0aGUgbG9va3VwIGludG8gdGhlIHJpbmdJbmRpY2VzIGFycmF5IHVzaW5nIHRoZSBnZW9tT2Zmc2V0c1xuICAgIC8vIGFycmF5XG4gICAgcmVzb2x2ZWRSaW5nT2Zmc2V0c1tpXSA9IHJpbmdPZmZzZXRzW2dlb21PZmZzZXRzW2ldXTtcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZFJpbmdPZmZzZXRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9seWdvblJlc29sdmVkT2Zmc2V0cyhkYXRhOiBnYS5kYXRhLlBvbHlnb25EYXRhKTogSW50MzJBcnJheSB7XG4gIGNvbnN0IGdlb21PZmZzZXRzID0gZGF0YS52YWx1ZU9mZnNldHM7XG4gIGNvbnN0IHJpbmdEYXRhID0gZ2EuY2hpbGQuZ2V0UG9seWdvbkNoaWxkKGRhdGEpO1xuICBjb25zdCByaW5nT2Zmc2V0cyA9IHJpbmdEYXRhLnZhbHVlT2Zmc2V0cztcblxuICBjb25zdCByZXNvbHZlZFJpbmdPZmZzZXRzID0gbmV3IEludDMyQXJyYXkoZ2VvbU9mZnNldHMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFJpbmdPZmZzZXRzLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gUGVyZm9ybSB0aGUgbG9va3VwIGludG8gdGhlIHJpbmdJbmRpY2VzIGFycmF5IHVzaW5nIHRoZSBnZW9tT2Zmc2V0c1xuICAgIC8vIGFycmF5XG4gICAgcmVzb2x2ZWRSaW5nT2Zmc2V0c1tpXSA9IHJpbmdPZmZzZXRzW2dlb21PZmZzZXRzW2ldXTtcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZFJpbmdPZmZzZXRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXVsdGlQb2x5Z29uUmVzb2x2ZWRPZmZzZXRzKGRhdGE6IGdhLmRhdGEuTXVsdGlQb2x5Z29uRGF0YSk6IEludDMyQXJyYXkge1xuICBjb25zdCBwb2x5Z29uRGF0YSA9IGdhLmNoaWxkLmdldE11bHRpUG9seWdvbkNoaWxkKGRhdGEpO1xuICBjb25zdCByaW5nRGF0YSA9IGdhLmNoaWxkLmdldFBvbHlnb25DaGlsZChwb2x5Z29uRGF0YSk7XG5cbiAgY29uc3QgZ2VvbU9mZnNldHMgPSBkYXRhLnZhbHVlT2Zmc2V0cztcbiAgY29uc3QgcG9seWdvbk9mZnNldHMgPSBwb2x5Z29uRGF0YS52YWx1ZU9mZnNldHM7XG4gIGNvbnN0IHJpbmdPZmZzZXRzID0gcmluZ0RhdGEudmFsdWVPZmZzZXRzO1xuXG4gIGNvbnN0IHJlc29sdmVkUmluZ09mZnNldHMgPSBuZXcgSW50MzJBcnJheShnZW9tT2Zmc2V0cy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc29sdmVkUmluZ09mZnNldHMubGVuZ3RoOyArK2kpIHtcbiAgICByZXNvbHZlZFJpbmdPZmZzZXRzW2ldID0gcmluZ09mZnNldHNbcG9seWdvbk9mZnNldHNbZ2VvbU9mZnNldHNbaV1dXTtcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZFJpbmdPZmZzZXRzO1xufVxuXG4vKipcbiAqIEludmVydCBvZmZzZXRzIHNvIHRoYXQgbG9va3VwIGNhbiBnbyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnRPZmZzZXRzKG9mZnNldHM6IEludDMyQXJyYXkpOiBVaW50OEFycmF5IHwgVWludDE2QXJyYXkgfCBVaW50MzJBcnJheSB7XG4gIGNvbnN0IGxhcmdlc3RPZmZzZXQgPSBvZmZzZXRzW29mZnNldHMubGVuZ3RoIC0gMV07XG5cbiAgY29uc3QgYXJyYXlDb25zdHJ1Y3RvciA9XG4gICAgb2Zmc2V0cy5sZW5ndGggPCBNYXRoLnBvdygyLCA4KVxuICAgICAgPyBVaW50OEFycmF5XG4gICAgICA6IG9mZnNldHMubGVuZ3RoIDwgTWF0aC5wb3coMiwgMTYpXG4gICAgICA/IFVpbnQxNkFycmF5XG4gICAgICA6IFVpbnQzMkFycmF5O1xuXG4gIGNvbnN0IGludmVydGVkT2Zmc2V0cyA9IG5ldyBhcnJheUNvbnN0cnVjdG9yKGxhcmdlc3RPZmZzZXQpO1xuICBmb3IgKGxldCBhcnJheUlkeCA9IDA7IGFycmF5SWR4IDwgb2Zmc2V0cy5sZW5ndGggLSAxOyBhcnJheUlkeCsrKSB7XG4gICAgY29uc3QgdGhpc09mZnNldCA9IG9mZnNldHNbYXJyYXlJZHhdO1xuICAgIGNvbnN0IG5leHRPZmZzZXQgPSBvZmZzZXRzW2FycmF5SWR4ICsgMV07XG4gICAgZm9yIChsZXQgb2Zmc2V0ID0gdGhpc09mZnNldDsgb2Zmc2V0IDwgbmV4dE9mZnNldDsgb2Zmc2V0KyspIHtcbiAgICAgIGludmVydGVkT2Zmc2V0c1tvZmZzZXRdID0gYXJyYXlJZHg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGludmVydGVkT2Zmc2V0cztcbn1cblxuLy8gVE9ETzogYmV0dGVyIHR5cGluZ1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHMoXG4gIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBleGNsdWRlS2V5czogc3RyaW5nW11cbik6IFtSZWNvcmQ8c3RyaW5nLCBhbnk+LCBSZWNvcmQ8c3RyaW5nLCBhbnk+XSB7XG4gIGNvbnN0IGFjY2Vzc29yczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBjb25zdCBvdGhlclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgIGlmIChleGNsdWRlS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2dldCcpKSB7XG4gICAgICBhY2Nlc3NvcnNba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdGhlclByb3BzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2FjY2Vzc29ycywgb3RoZXJQcm9wc107XG59XG4iXSwibWFw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R0FDVkwsT0FBTyxDQUFDOUUsTUFBTSxHQUFHaUYsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUNoQ0UsV0FBVyxHQUNYQyxXQUFXO0VBRWpCLElBQU1DLGVBQWUsR0FBRyxJQUFJTixnQkFBZ0IsQ0FBQ0QsYUFBYSxDQUFDO0VBQzNELEtBQUssSUFBSVEsUUFBUSxHQUFHLENBQUMsRUFBRUEsUUFBUSxHQUFHVCxPQUFPLENBQUM5RSxNQUFNLEdBQUcsQ0FBQyxFQUFFdUYsUUFBUSxFQUFFLEVBQUU7SUFDaEUsSUFBTUMsVUFBVSxHQUFHVixPQUFPLENBQUNTLFFBQVEsQ0FBQztJQUNwQyxJQUFNRSxVQUFVLEdBQUdYLE9BQU8sQ0FBQ1MsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUN4QyxLQUFLLElBQUlHLE1BQU0sR0FBR0YsVUFBVSxFQUFFRSxNQUFNLEdBQUdELFVBQVUsRUFBRUMsTUFBTSxFQUFFLEVBQUU7TUFDM0RKLGVBQWUsQ0FBQ0ksTUFBTSxDQUFDLEdBQUdILFFBQVE7SUFDcEM7RUFDRjtFQUVBLE9BQU9ELGVBQWU7QUFDeEI7O0FBRUE7QUFDTyxTQUFTSyx5QkFBeUJBLENBQ3ZDN0QsS0FBMEIsRUFDMUI4RCxXQUFxQixFQUN1QjtFQUM1QyxJQUFNQyxTQUE4QixHQUFHLENBQUMsQ0FBQztFQUN6QyxJQUFNQyxVQUErQixHQUFHLENBQUMsQ0FBQztFQUMxQyxTQUFBQyxFQUFBLE1BQUFDLGVBQUEsR0FBMkI5SCxNQUFNLENBQUMrSCxPQUFPLENBQUNuRSxLQUFLLENBQUMsRUFBQWlFLEVBQUEsR0FBQUMsZUFBQSxDQUFBaEcsTUFBQSxFQUFBK0YsRUFBQSxJQUFFO0lBQTdDLElBQUFHLGtCQUFBLE9BQUFoRyxlQUFBLGFBQUE4RixlQUFBLENBQUFELEVBQUE7TUFBT0ksR0FBRyxHQUFBRCxrQkFBQTtNQUFFeEQsS0FBSyxHQUFBd0Qsa0JBQUE7SUFDcEIsSUFBSU4sV0FBVyxDQUFDUSxRQUFRLENBQUNELEdBQUcsQ0FBQyxFQUFFO01BQzdCO0lBQ0Y7SUFFQSxJQUFJQSxHQUFHLENBQUNFLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtNQUN6QlIsU0FBUyxDQUFDTSxHQUFHLENBQUMsR0FBR3pELEtBQUs7SUFDeEIsQ0FBQyxNQUFNO01BQ0xvRCxVQUFVLENBQUNLLEdBQUcsQ0FBQyxHQUFHekQsS0FBSztJQUN6QjtFQUNGO0VBRUEsT0FBTyxDQUFDbUQsU0FBUyxFQUFFQyxVQUFVLENBQUM7QUFDaEMiLCJpZ25vcmVMaXN0IjpbXX0=
309
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiYXJyb3ciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImdhIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiZmluZEdlb21ldHJ5Q29sdW1uSW5kZXgiLCJzY2hlbWEiLCJleHRlbnNpb25OYW1lIiwiZ2VvbWV0cnlDb2x1bW5OYW1lIiwiaW5kZXgiLCJmaWVsZHMiLCJmaW5kSW5kZXgiLCJmaWVsZCIsIm5hbWUiLCJtZXRhZGF0YSIsImlzQ29sdW1uUmVmZXJlbmNlIiwiaW5wdXQiLCJpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyIsImRhdGEiLCJ0eXBlIiwiRml4ZWRTaXplTGlzdCIsImlzRGF0YVNlcGFyYXRlZENvb3JkcyIsIlN0cnVjdCIsImNvbnZlcnRTdHJ1Y3RUb0ZpeGVkU2l6ZUxpc3QiLCJjb29yZHMiLCJpbnRlcmxlYXZlZENvb3JkcyIsIkZsb2F0NjRBcnJheSIsImxlbmd0aCIsIl9jb29yZHMkY2hpbGRyZW4iLCJfc2xpY2VkVG9BcnJheTIiLCJjaGlsZHJlbiIsInhDaGlsZCIsInlDaGlsZCIsInZhbHVlcyIsImNoaWxkRGF0YVR5cGUiLCJGbG9hdDY0IiwiZGF0YVR5cGUiLCJGaWVsZCIsImludGVybGVhdmVkQ29vcmRzRGF0YSIsIm1ha2VEYXRhIiwibnVsbENvdW50IiwibnVsbEJpdG1hcCIsImNoaWxkIiwiYXNzZXJ0Iiwid3JhcEFjY2Vzc29yRnVuY3Rpb24iLCJvYmplY3RJbmZvIiwidXNlckFjY2Vzc29yRnVuY3Rpb24iLCJiYXRjaE9mZnNldCIsIm5ld0luZGV4IiwiaW52ZXJ0ZWRHZW9tT2Zmc2V0cyIsInVuZGVmaW5lZCIsIm5ld09iamVjdERhdGEiLCJhdHRyaWJ1dGVzIiwibmV3T2JqZWN0SW5mbyIsInRhcmdldCIsImFzc2lnbkFjY2Vzc29yIiwiYXJncyIsInByb3BzIiwicHJvcE5hbWUiLCJwcm9wSW5wdXQiLCJjaHVua0lkeCIsImdlb21Db29yZE9mZnNldHMiLCJfYXJncyRiYXRjaE9mZnNldCIsIlZlY3RvciIsImNvbHVtbkRhdGEiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImV4cGFuZEFycmF5VG9Db29yZHMiLCJsaXN0U2l6ZSIsInZhbHVlIiwic2l6ZSIsIm5vcm1hbGl6ZWQiLCJpc0Zsb2F0Iiwib2JqZWN0IiwiZ2VvbU9mZnNldHMiLCJudW1Qb3NpdGlvbnMiLCJsYXN0SW5kZXgiLCJudW1Db29yZHMiLCJvdXRwdXRBcnJheSIsImNvbnN0cnVjdG9yIiwiZ2VvbUlkeCIsImxhc3RDb29yZElkeCIsIm5leHRDb29yZElkeCIsImNvb3JkSWR4IiwiZ2V0R2VvbWV0cnlWZWN0b3IiLCJ0YWJsZSIsImdlb2Fycm93VHlwZU5hbWUiLCJnZW9tZXRyeUNvbHVtbklkeCIsImdldENoaWxkQXQiLCJnZXRMaXN0TmVzdGluZ0xldmVscyIsIm5lc3RpbmdMZXZlbHMiLCJpc0xpc3QiLCJnZXRNdWx0aUxpbmVTdHJpbmdSZXNvbHZlZE9mZnNldHMiLCJ2YWx1ZU9mZnNldHMiLCJsaW5lU3RyaW5nRGF0YSIsImdldE11bHRpTGluZVN0cmluZ0NoaWxkIiwicmluZ09mZnNldHMiLCJyZXNvbHZlZFJpbmdPZmZzZXRzIiwiSW50MzJBcnJheSIsImdldFBvbHlnb25SZXNvbHZlZE9mZnNldHMiLCJyaW5nRGF0YSIsImdldFBvbHlnb25DaGlsZCIsImdldE11bHRpUG9seWdvblJlc29sdmVkT2Zmc2V0cyIsInBvbHlnb25EYXRhIiwiZ2V0TXVsdGlQb2x5Z29uQ2hpbGQiLCJwb2x5Z29uT2Zmc2V0cyIsImludmVydE9mZnNldHMiLCJvZmZzZXRzIiwibGFyZ2VzdE9mZnNldCIsImFycmF5Q29uc3RydWN0b3IiLCJNYXRoIiwicG93IiwiVWludDhBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJpbnZlcnRlZE9mZnNldHMiLCJhcnJheUlkeCIsInRoaXNPZmZzZXQiLCJuZXh0T2Zmc2V0Iiwib2Zmc2V0IiwiZXh0cmFjdEFjY2Vzc29yc0Zyb21Qcm9wcyIsImV4Y2x1ZGVLZXlzIiwiYWNjZXNzb3JzIiwib3RoZXJQcm9wcyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsImtleSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBkZWNrLmdsLWNvbW11bml0eVxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IChjKSB2aXMuZ2wgY29udHJpYnV0b3JzXG5cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgKiBhcyBnYSBmcm9tICdAZ2VvYXJyb3cvZ2VvYXJyb3ctanMnO1xuaW1wb3J0IHtBY2Nlc3NvckNvbnRleHQsIEFjY2Vzc29yRnVuY3Rpb24sIF9JbnRlcm5hbEFjY2Vzc29yQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBUeXBlZEFycmF5ID1cbiAgfCBVaW50OEFycmF5XG4gIHwgVWludDhDbGFtcGVkQXJyYXlcbiAgfCBVaW50MTZBcnJheVxuICB8IFVpbnQzMkFycmF5XG4gIHwgSW50OEFycmF5XG4gIHwgSW50MTZBcnJheVxuICB8IEludDMyQXJyYXlcbiAgfCBGbG9hdDMyQXJyYXlcbiAgfCBGbG9hdDY0QXJyYXk7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kR2VvbWV0cnlDb2x1bW5JbmRleChcbiAgc2NoZW1hOiBhcnJvdy5TY2hlbWEsXG4gIGV4dGVuc2lvbk5hbWU6IHN0cmluZyxcbiAgZ2VvbWV0cnlDb2x1bW5OYW1lPzogc3RyaW5nIHwgbnVsbFxuKTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IGluZGV4ID0gc2NoZW1hLmZpZWxkcy5maW5kSW5kZXgoXG4gICAgZmllbGQgPT5cbiAgICAgIGZpZWxkLm5hbWUgPT09IGdlb21ldHJ5Q29sdW1uTmFtZSB8fFxuICAgICAgZmllbGQubWV0YWRhdGEuZ2V0KCdBUlJPVzpleHRlbnNpb246bmFtZScpID09PSBleHRlbnNpb25OYW1lXG4gICk7XG4gIHJldHVybiBpbmRleCAhPT0gLTEgPyBpbmRleCA6IG51bGw7XG59XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGlucHV0IGlzIGEgcmVmZXJlbmNlIHRvIGEgY29sdW1uIGluIHRoZSB0YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb2x1bW5SZWZlcmVuY2UoaW5wdXQ6IGFueSk6IGlucHV0IGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyhcbiAgZGF0YTogYXJyb3cuRGF0YVxuKTogZGF0YSBpcyBhcnJvdy5EYXRhPGFycm93LkZpeGVkU2l6ZUxpc3Q8YXJyb3cuRmxvYXQ2ND4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayAyIG9yIDNkPyBGbG9hdDY0P1xuICByZXR1cm4gZGF0YS50eXBlIGluc3RhbmNlb2YgYXJyb3cuRml4ZWRTaXplTGlzdDtcbn1cblxuZnVuY3Rpb24gaXNEYXRhU2VwYXJhdGVkQ29vcmRzKFxuICBkYXRhOiBhcnJvdy5EYXRhXG4pOiBkYXRhIGlzIGFycm93LkRhdGE8YXJyb3cuU3RydWN0PHt4OiBhcnJvdy5GbG9hdDY0OyB5OiBhcnJvdy5GbG9hdDY0fT4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayBjaGlsZCBuYW1lcz8gRmxvYXQ2ND9cbiAgcmV0dXJuIGRhdGEudHlwZSBpbnN0YW5jZW9mIGFycm93LlN0cnVjdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdlb2Fycm93IFN0cnVjdCBjb29yZGluYXRlcyB0byBGaXhlZFNpemVMaXN0IGNvb3Jkc1xuICpcbiAqIFRoZSBHZW9BcnJvdyBzcGVjIGFsbG93cyBmb3IgZWl0aGVyIHNlcGFyYXRlZCBvciBpbnRlcmxlYXZlZCBjb29yZHMsIGJ1dCBhdFxuICogdGhpcyB0aW1lIGRlY2suZ2wgb25seSBzdXBwb3J0cyBpbnRlcmxlYXZlZC5cbiAqL1xuLy8gVE9ETzogdGhpcyBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFN0cnVjdFRvRml4ZWRTaXplTGlzdChcbiAgY29vcmRzOlxuICAgIHwgYXJyb3cuRGF0YTxhcnJvdy5GaXhlZFNpemVMaXN0PGFycm93LkZsb2F0NjQ+PlxuICAgIHwgYXJyb3cuRGF0YTxhcnJvdy5TdHJ1Y3Q8e3g6IGFycm93LkZsb2F0NjQ7IHk6IGFycm93LkZsb2F0NjR9Pj5cbik6IGFycm93LkRhdGE8YXJyb3cuRml4ZWRTaXplTGlzdDxhcnJvdy5GbG9hdDY0Pj4ge1xuICBpZiAoaXNEYXRhSW50ZXJsZWF2ZWRDb29yZHMoY29vcmRzKSkge1xuICAgIHJldHVybiBjb29yZHM7XG4gIH0gZWxzZSBpZiAoaXNEYXRhU2VwYXJhdGVkQ29vcmRzKGNvb3JkcykpIHtcbiAgICAvLyBUT0RPOiBzdXBwb3J0IDNkXG4gICAgY29uc3QgaW50ZXJsZWF2ZWRDb29yZHMgPSBuZXcgRmxvYXQ2NEFycmF5KGNvb3Jkcy5sZW5ndGggKiAyKTtcbiAgICBjb25zdCBbeENoaWxkLCB5Q2hpbGRdID0gY29vcmRzLmNoaWxkcmVuO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnRlcmxlYXZlZENvb3Jkc1tpICogMl0gPSB4Q2hpbGQudmFsdWVzW2ldO1xuICAgICAgaW50ZXJsZWF2ZWRDb29yZHNbaSAqIDIgKyAxXSA9IHlDaGlsZC52YWx1ZXNbaV07XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGREYXRhVHlwZSA9IG5ldyBhcnJvdy5GbG9hdDY0KCk7XG4gICAgY29uc3QgZGF0YVR5cGUgPSBuZXcgYXJyb3cuRml4ZWRTaXplTGlzdCgyLCBuZXcgYXJyb3cuRmllbGQoJ2Nvb3JkcycsIGNoaWxkRGF0YVR5cGUpKTtcblxuICAgIGNvbnN0IGludGVybGVhdmVkQ29vcmRzRGF0YSA9IGFycm93Lm1ha2VEYXRhKHtcbiAgICAgIHR5cGU6IGNoaWxkRGF0YVR5cGUsXG4gICAgICBsZW5ndGg6IGludGVybGVhdmVkQ29vcmRzLmxlbmd0aFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IGFycm93Lm1ha2VEYXRhKHtcbiAgICAgIHR5cGU6IGRhdGFUeXBlLFxuICAgICAgbGVuZ3RoOiBjb29yZHMubGVuZ3RoLFxuICAgICAgbnVsbENvdW50OiBjb29yZHMubnVsbENvdW50LFxuICAgICAgbnVsbEJpdG1hcDogY29vcmRzLm51bGxCaXRtYXAsXG4gICAgICBjaGlsZDogaW50ZXJsZWF2ZWRDb29yZHNEYXRhXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3NlcnQoZmFsc2UpO1xufVxuXG50eXBlIEFzc2lnbkFjY2Vzc29yUHJvcHMgPSB7XG4gIC8qKiBUaGUgb2JqZWN0IG9uIHdoaWNoIHRvIGFzc2lnbiB0aGUgcmVzb2x2ZWQgYWNjZXNvciAqL1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBwcm9wIHRvIHNldCAqL1xuICBwcm9wTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIHVzZXItc3VwcGxpZWQgaW5wdXQgdG8gdGhlIGxheWVyLiBNdXN0IGVpdGhlciBiZSBhIHNjYWxhciB2YWx1ZSBvciBhIHJlZmVyZW5jZSB0byBhIGNvbHVtbiBpbiB0aGUgdGFibGUuICovXG4gIHByb3BJbnB1dDogYW55O1xuICAvKiogTnVtZXJpYyBpbmRleCBpbiB0aGUgdGFibGUgKi9cbiAgY2h1bmtJZHg6IG51bWJlcjtcbiAgLyoqIGEgbWFwIGZyb20gdGhlIGdlb21ldHJ5IGluZGV4IHRvIHRoZSBjb29yZCBvZmZzZXRzIGZvciB0aGF0IGdlb21ldHJ5LiAqL1xuICBnZW9tQ29vcmRPZmZzZXRzPzogSW50MzJBcnJheSB8IG51bGw7XG4gIC8qKiBBYnNvbHV0ZSBvZmZzZXQgb2YgdGhlIGJhdGNoIGluIHRoZSB0YWJsZS92ZWN0b3IuIEFkZGVkIHRvIHRoZSBzYW1wbGluZyBpbmRleC4gKi9cbiAgYmF0Y2hPZmZzZXQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgYSB1c2VyLXByb3ZpZGVkIGFjY2Vzc29yIGZ1bmN0aW9uXG4gKlxuICogRm9yIGxheWVycyBsaWtlIFNjYXR0ZXJwbG90LCBQYXRoLCBhbmQgUG9seWdvbiwgd2UgYXV0b21hdGljYWxseSBoYW5kbGVcbiAqIFwiZXhwbG9kaW5nXCIgdGhlIHRhYmxlIHdoZW4gbXVsdGktZ2VvbWV0cnkgaW5wdXQgYXJlIHByb3ZpZGVkLiBUaGlzIG1lYW5zIHRoYXRcbiAqIHRoZSB1cHN0cmVhbSBgaW5kZXhgIHZhbHVlIHBhc3NlZCB0byB0aGUgdXNlciB3aWxsIGJlIHRoZSBjb3JyZWN0IHJvdyBpbmRleFxuICogX29ubHlfIGZvciBub24tZXhwbG9kZWQgZGF0YS5cbiAqXG4gKiBXaXRoIHRoaXMgZnVuY3Rpb24sIHdlIHNpbXBsaWZ5IHRoZSB1c2VyIHVzYWdlIGJ5IGF1dG9tYXRpY2FsbHkgY29udmVydGluZ1xuICogYmFjayBmcm9tIFwiZXhwbG9kZWRcIiBpbmRleCBiYWNrIHRvIHRoZSBvcmlnaW5hbCByb3cgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIHdyYXBBY2Nlc3NvckZ1bmN0aW9uPEluLCBPdXQ+KFxuICBvYmplY3RJbmZvOiBfSW50ZXJuYWxBY2Nlc3NvckNvbnRleHQ8SW4+LFxuICB1c2VyQWNjZXNzb3JGdW5jdGlvbjogQWNjZXNzb3JGdW5jdGlvbjxJbiwgT3V0PixcbiAgYmF0Y2hPZmZzZXQ6IG51bWJlclxuKTogT3V0IHtcbiAgY29uc3Qge2luZGV4LCBkYXRhfSA9IG9iamVjdEluZm87XG4gIGxldCBuZXdJbmRleCA9IGluZGV4ICsgYmF0Y2hPZmZzZXQ7XG4gIGlmIChkYXRhLmludmVydGVkR2VvbU9mZnNldHMgIT09IHVuZGVmaW5lZCkge1xuICAgIG5ld0luZGV4ID0gZGF0YS5pbnZlcnRlZEdlb21PZmZzZXRzW2luZGV4XTtcbiAgfVxuICBjb25zdCBuZXdPYmplY3REYXRhID0ge1xuICAgIGRhdGE6IGRhdGEuZGF0YSxcbiAgICBsZW5ndGg6IGRhdGEubGVuZ3RoLFxuICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICB9O1xuICBjb25zdCBuZXdPYmplY3RJbmZvID0ge1xuICAgIGluZGV4OiBuZXdJbmRleCxcbiAgICBkYXRhOiBuZXdPYmplY3REYXRhLFxuICAgIHRhcmdldDogb2JqZWN0SW5mby50YXJnZXRcbiAgfTtcbiAgcmV0dXJuIHVzZXJBY2Nlc3NvckZ1bmN0aW9uKG5ld09iamVjdEluZm8pO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYWNjZXNzb3IgYW5kIGFzc2lnbiB0byBwcm9wcyBvYmplY3RcbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCBhcyBhIGhlbHBlciBmdW5jdGlvbiBiZWNhdXNlIGEgc2NhbGFyIHByb3AgaXMgc2V0IGF0IHRoZSB0b3BcbiAqIGxldmVsIHdoaWxlIGEgdmVjdG9yaXplZCBwcm9wIGlzIHNldCBpbnNpZGUgZGF0YS5hdHRyaWJ1dGVzXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduQWNjZXNzb3IoYXJnczogQXNzaWduQWNjZXNzb3JQcm9wcykge1xuICBjb25zdCB7cHJvcHMsIHByb3BOYW1lLCBwcm9wSW5wdXQsIGNodW5rSWR4LCBnZW9tQ29vcmRPZmZzZXRzLCBiYXRjaE9mZnNldCA9IDB9ID0gYXJncztcblxuICBpZiAocHJvcElucHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocHJvcElucHV0IGluc3RhbmNlb2YgYXJyb3cuVmVjdG9yKSB7XG4gICAgY29uc3QgY29sdW1uRGF0YSA9IHByb3BJbnB1dC5kYXRhW2NodW5rSWR4XTtcblxuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUxpc3QoY29sdW1uRGF0YSkpIHtcbiAgICAgIGFzc2VydChjb2x1bW5EYXRhLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XG4gICAgICBsZXQgdmFsdWVzID0gY29sdW1uRGF0YS5jaGlsZHJlblswXS52YWx1ZXM7XG5cbiAgICAgIGlmIChnZW9tQ29vcmRPZmZzZXRzKSB7XG4gICAgICAgIHZhbHVlcyA9IGV4cGFuZEFycmF5VG9Db29yZHModmFsdWVzLCBjb2x1bW5EYXRhLnR5cGUubGlzdFNpemUsIGdlb21Db29yZE9mZnNldHMpO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5kYXRhLmF0dHJpYnV0ZXNbcHJvcE5hbWVdID0ge1xuICAgICAgICB2YWx1ZTogdmFsdWVzLFxuICAgICAgICBzaXplOiBjb2x1bW5EYXRhLnR5cGUubGlzdFNpemUsXG4gICAgICAgIC8vIFNldCB0byBgdHJ1ZWAgdG8gc2lnbmlmeSB0aGF0IGNvbG9ycyBhcmUgYWxyZWFkeSAwLTI1NSwgYW5kIGRlY2svbHVtYVxuICAgICAgICAvLyBkb2VzIG5vdCBuZWVkIHRvIHJlc2NhbGVcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi80MDFkNjI0YzA1MjlmYWFhNjIxMjU3MTRjMzc2YjNiYTNiOGYzNzlmL2RvY3MvYXBpLXJlZmVyZW5jZS9jb3JlL2F0dHJpYnV0ZS1tYW5hZ2VyLm1kP3BsYWluPTEjTDY2XG4gICAgICAgIG5vcm1hbGl6ZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0Zsb2F0KGNvbHVtbkRhdGEpKSB7XG4gICAgICBsZXQgdmFsdWVzID0gY29sdW1uRGF0YS52YWx1ZXM7XG5cbiAgICAgIGlmIChnZW9tQ29vcmRPZmZzZXRzKSB7XG4gICAgICAgIHZhbHVlcyA9IGV4cGFuZEFycmF5VG9Db29yZHModmFsdWVzLCAxLCBnZW9tQ29vcmRPZmZzZXRzKTtcbiAgICAgIH1cblxuICAgICAgcHJvcHMuZGF0YS5hdHRyaWJ1dGVzW3Byb3BOYW1lXSA9IHtcbiAgICAgICAgdmFsdWU6IHZhbHVlcyxcbiAgICAgICAgc2l6ZTogMVxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb3BJbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb3BzW3Byb3BOYW1lXSA9IDxJbj4ob2JqZWN0OiBhbnksIG9iamVjdEluZm86IEFjY2Vzc29yQ29udGV4dDxJbj4pID0+IHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBpZiAocHJvcE5hbWUgPT09ICdnZXRQb2x5Z29uT2Zmc2V0Jykge1xuICAgICAgICByZXR1cm4gcHJvcElucHV0KG9iamVjdCwgb2JqZWN0SW5mbyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3cmFwQWNjZXNzb3JGdW5jdGlvbihvYmplY3RJbmZvLCBwcm9wSW5wdXQsIGJhdGNoT2Zmc2V0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHByb3BzW3Byb3BOYW1lXSA9IHByb3BJbnB1dDtcbiAgfVxufVxuXG4vKipcbiAqIEV4cGFuZCBhbiBhcnJheSBmcm9tIFwib25lIGVsZW1lbnQgcGVyIGdlb21ldHJ5XCIgdG8gXCJvbmUgZWxlbWVudCBwZXIgY29vcmRpbmF0ZVwiXG4gKlxuICogQHBhcmFtIGlucHV0OiB0aGUgaW5wdXQgYXJyYXkgdG8gZXhwYW5kXG4gKiBAcGFyYW0gc2l6ZSA6IHRoZSBudW1iZXIgb2YgbmVzdGVkIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheSBwZXIgZ2VvbWV0cnkuIFNvIGZvciBleGFtcGxlLCBmb3IgUkdCIGRhdGEgdGhpcyB3b3VsZCBiZSAzLCBmb3IgUkdCQSB0aGlzIHdvdWxkIGJlIDQuIEZvciByYWRpdXMsIHRoaXMgd291bGQgYmUgMS5cbiAqIEBwYXJhbSBnZW9tT2Zmc2V0cyA6IGFuIG9mZnNldHMgYXJyYXkgbWFwcGluZyBmcm9tIHRoZSBnZW9tZXRyeSB0byB0aGUgY29vcmRpbmF0ZSBpbmRleGVzLiBTbyBpbiB0aGUgY2FzZSBvZiBhIExpbmVTdHJpbmdBcnJheSwgdGhpcyBpcyByZXRyaWV2ZWQgZGlyZWN0bHkgZnJvbSB0aGUgR2VvQXJyb3cgc3RvcmFnZS4gSW4gdGhlIGNhc2Ugb2YgYSBQb2x5Z29uQXJyYXksIHRoaXMgY29tZXMgZnJvbSB0aGUgcmVzb2x2ZWQgaW5kZXhlcyB0aGF0IG5lZWQgdG8gYmUgZ2l2ZW4gdG8gdGhlIFNvbGlkUG9seWdvbkxheWVyIGFueXdheXMuXG4gKiBAcGFyYW0gbnVtUG9zaXRpb25zIDogZW5kIHBvc2l0aW9uIGluIGdlb21PZmZzZXRzLCBhcyBnZW9tT2Zmc2V0cyBjYW4gcG90ZW50aWFsbHkgY29udGFpbiBwcmVhbGxvY2F0ZWQgemVyb2VzIGluIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci5cbiAqXG4gKiBAcmV0dXJuICB7VHlwZWRBcnJheX0gdmFsdWVzIGV4cGFuZGVkIHRvIGJlIHBlci1jb29yZGluYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRBcnJheVRvQ29vcmRzPFQgZXh0ZW5kcyBUeXBlZEFycmF5PihcbiAgaW5wdXQ6IFQsXG4gIHNpemU6IG51bWJlcixcbiAgZ2VvbU9mZnNldHM6IEludDMyQXJyYXksXG4gIG51bVBvc2l0aW9ucz86IG51bWJlclxuKTogVCB7XG4gIGNvbnN0IGxhc3RJbmRleCA9IG51bVBvc2l0aW9ucyB8fCBnZW9tT2Zmc2V0cy5sZW5ndGggLSAxO1xuICBjb25zdCBudW1Db29yZHMgPSBnZW9tT2Zmc2V0c1tsYXN0SW5kZXhdO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IG91dHB1dEFycmF5OiBUID0gbmV3IGlucHV0LmNvbnN0cnVjdG9yKG51bUNvb3JkcyAqIHNpemUpO1xuXG4gIC8vIGdlb21JZHggaXMgYW4gaW5kZXggaW50byB0aGUgZ2VvbU9mZnNldHMgYXJyYXlcbiAgLy8gZ2VvbUlkeCBpcyBhbHNvIHRoZSBnZW9tZXRyeS90YWJsZSBpbmRleFxuICBmb3IgKGxldCBnZW9tSWR4ID0gMDsgZ2VvbUlkeCA8IGxhc3RJbmRleDsgZ2VvbUlkeCsrKSB7XG4gICAgLy8gZ2VvbU9mZnNldHMgbWFwcyBmcm9tIHRoZSBnZW9tZXRyeSBpbmRleCB0byB0aGUgY29vcmQgaW5kZXhcbiAgICAvLyBTbyBoZXJlIHdlIGdldCB0aGUgcmFuZ2Ugb2YgY29vcmRzIHRoYXQgdGhpcyBnZW9tZXRyeSBjb3ZlcnNcbiAgICBjb25zdCBsYXN0Q29vcmRJZHggPSBnZW9tT2Zmc2V0c1tnZW9tSWR4XTtcbiAgICBjb25zdCBuZXh0Q29vcmRJZHggPSBnZW9tT2Zmc2V0c1tnZW9tSWR4ICsgMV07XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgdGhpcyByYW5nZSBvZiBjb29yZCBpbmRpY2VzXG4gICAgZm9yIChsZXQgY29vcmRJZHggPSBsYXN0Q29vcmRJZHg7IGNvb3JkSWR4IDwgbmV4dENvb3JkSWR4OyBjb29yZElkeCsrKSB7XG4gICAgICAvLyBJdGVyYXRlIG92ZXIgc2l6ZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgLy8gQ29weSBmcm9tIHRoZSBnZW9tZXRyeSBpbmRleCBpbiBgaW5wdXRgIHRvIHRoZSBjb29yZCBpbmRleCBpblxuICAgICAgICAvLyBgb3V0cHV0YFxuICAgICAgICBvdXRwdXRBcnJheVtjb29yZElkeCAqIHNpemUgKyBpXSA9IGlucHV0W2dlb21JZHggKiBzaXplICsgaV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dEFycmF5O1xufVxuXG4vKipcbiAqIEdldCBhIGdlb21ldHJ5IHZlY3RvciB3aXRoIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uIHR5cGUgbmFtZSBmcm9tIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb21ldHJ5VmVjdG9yKFxuICB0YWJsZTogYXJyb3cuVGFibGUsXG4gIGdlb2Fycm93VHlwZU5hbWU6IHN0cmluZ1xuKTogYXJyb3cuVmVjdG9yIHwgbnVsbCB7XG4gIGNvbnN0IGdlb21ldHJ5Q29sdW1uSWR4ID0gZmluZEdlb21ldHJ5Q29sdW1uSW5kZXgodGFibGUuc2NoZW1hLCBnZW9hcnJvd1R5cGVOYW1lKTtcblxuICBpZiAoZ2VvbWV0cnlDb2x1bW5JZHggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbHVtbiBmb3VuZCB3aXRoIGV4dGVuc2lvbiB0eXBlICR7Z2VvYXJyb3dUeXBlTmFtZX1gKTtcbiAgfVxuXG4gIHJldHVybiB0YWJsZS5nZXRDaGlsZEF0KGdlb21ldHJ5Q29sdW1uSWR4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3ROZXN0aW5nTGV2ZWxzKGRhdGE6IGFycm93LkRhdGEpOiBudW1iZXIge1xuICBsZXQgbmVzdGluZ0xldmVscyA9IDA7XG4gIGlmIChhcnJvdy5EYXRhVHlwZS5pc0xpc3QoZGF0YS50eXBlKSkge1xuICAgIG5lc3RpbmdMZXZlbHMgKz0gMTtcbiAgICBkYXRhID0gZGF0YS5jaGlsZHJlblswXTtcbiAgfVxuICByZXR1cm4gbmVzdGluZ0xldmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpTGluZVN0cmluZ1Jlc29sdmVkT2Zmc2V0cyhkYXRhOiBnYS5kYXRhLk11bHRpTGluZVN0cmluZ0RhdGEpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgZ2VvbU9mZnNldHMgPSBkYXRhLnZhbHVlT2Zmc2V0cztcbiAgY29uc3QgbGluZVN0cmluZ0RhdGEgPSBnYS5jaGlsZC5nZXRNdWx0aUxpbmVTdHJpbmdDaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ09mZnNldHMgPSBsaW5lU3RyaW5nRGF0YS52YWx1ZU9mZnNldHM7XG5cbiAgY29uc3QgcmVzb2x2ZWRSaW5nT2Zmc2V0cyA9IG5ldyBJbnQzMkFycmF5KGdlb21PZmZzZXRzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb2x2ZWRSaW5nT2Zmc2V0cy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFBlcmZvcm0gdGhlIGxvb2t1cCBpbnRvIHRoZSByaW5nSW5kaWNlcyBhcnJheSB1c2luZyB0aGUgZ2VvbU9mZnNldHNcbiAgICAvLyBhcnJheVxuICAgIHJlc29sdmVkUmluZ09mZnNldHNbaV0gPSByaW5nT2Zmc2V0c1tnZW9tT2Zmc2V0c1tpXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvbHlnb25SZXNvbHZlZE9mZnNldHMoZGF0YTogZ2EuZGF0YS5Qb2x5Z29uRGF0YSk6IEludDMyQXJyYXkge1xuICBjb25zdCBnZW9tT2Zmc2V0cyA9IGRhdGEudmFsdWVPZmZzZXRzO1xuICBjb25zdCByaW5nRGF0YSA9IGdhLmNoaWxkLmdldFBvbHlnb25DaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ09mZnNldHMgPSByaW5nRGF0YS52YWx1ZU9mZnNldHM7XG5cbiAgY29uc3QgcmVzb2x2ZWRSaW5nT2Zmc2V0cyA9IG5ldyBJbnQzMkFycmF5KGdlb21PZmZzZXRzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb2x2ZWRSaW5nT2Zmc2V0cy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFBlcmZvcm0gdGhlIGxvb2t1cCBpbnRvIHRoZSByaW5nSW5kaWNlcyBhcnJheSB1c2luZyB0aGUgZ2VvbU9mZnNldHNcbiAgICAvLyBhcnJheVxuICAgIHJlc29sdmVkUmluZ09mZnNldHNbaV0gPSByaW5nT2Zmc2V0c1tnZW9tT2Zmc2V0c1tpXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpUG9seWdvblJlc29sdmVkT2Zmc2V0cyhkYXRhOiBnYS5kYXRhLk11bHRpUG9seWdvbkRhdGEpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgcG9seWdvbkRhdGEgPSBnYS5jaGlsZC5nZXRNdWx0aVBvbHlnb25DaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ0RhdGEgPSBnYS5jaGlsZC5nZXRQb2x5Z29uQ2hpbGQocG9seWdvbkRhdGEpO1xuXG4gIGNvbnN0IGdlb21PZmZzZXRzID0gZGF0YS52YWx1ZU9mZnNldHM7XG4gIGNvbnN0IHBvbHlnb25PZmZzZXRzID0gcG9seWdvbkRhdGEudmFsdWVPZmZzZXRzO1xuICBjb25zdCByaW5nT2Zmc2V0cyA9IHJpbmdEYXRhLnZhbHVlT2Zmc2V0cztcblxuICBjb25zdCByZXNvbHZlZFJpbmdPZmZzZXRzID0gbmV3IEludDMyQXJyYXkoZ2VvbU9mZnNldHMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFJpbmdPZmZzZXRzLmxlbmd0aDsgKytpKSB7XG4gICAgcmVzb2x2ZWRSaW5nT2Zmc2V0c1tpXSA9IHJpbmdPZmZzZXRzW3BvbHlnb25PZmZzZXRzW2dlb21PZmZzZXRzW2ldXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuLyoqXG4gKiBJbnZlcnQgb2Zmc2V0cyBzbyB0aGF0IGxvb2t1cCBjYW4gZ28gaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0T2Zmc2V0cyhvZmZzZXRzOiBJbnQzMkFycmF5KTogVWludDhBcnJheSB8IFVpbnQxNkFycmF5IHwgVWludDMyQXJyYXkge1xuICBjb25zdCBsYXJnZXN0T2Zmc2V0ID0gb2Zmc2V0c1tvZmZzZXRzLmxlbmd0aCAtIDFdO1xuXG4gIGNvbnN0IGFycmF5Q29uc3RydWN0b3IgPVxuICAgIG9mZnNldHMubGVuZ3RoIDwgTWF0aC5wb3coMiwgOClcbiAgICAgID8gVWludDhBcnJheVxuICAgICAgOiBvZmZzZXRzLmxlbmd0aCA8IE1hdGgucG93KDIsIDE2KVxuICAgICAgPyBVaW50MTZBcnJheVxuICAgICAgOiBVaW50MzJBcnJheTtcblxuICBjb25zdCBpbnZlcnRlZE9mZnNldHMgPSBuZXcgYXJyYXlDb25zdHJ1Y3RvcihsYXJnZXN0T2Zmc2V0KTtcbiAgZm9yIChsZXQgYXJyYXlJZHggPSAwOyBhcnJheUlkeCA8IG9mZnNldHMubGVuZ3RoIC0gMTsgYXJyYXlJZHgrKykge1xuICAgIGNvbnN0IHRoaXNPZmZzZXQgPSBvZmZzZXRzW2FycmF5SWR4XTtcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0c1thcnJheUlkeCArIDFdO1xuICAgIGZvciAobGV0IG9mZnNldCA9IHRoaXNPZmZzZXQ7IG9mZnNldCA8IG5leHRPZmZzZXQ7IG9mZnNldCsrKSB7XG4gICAgICBpbnZlcnRlZE9mZnNldHNbb2Zmc2V0XSA9IGFycmF5SWR4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbnZlcnRlZE9mZnNldHM7XG59XG5cbi8vIFRPRE86IGJldHRlciB0eXBpbmdcbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0QWNjZXNzb3JzRnJvbVByb3BzKFxuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZXhjbHVkZUtleXM6IHN0cmluZ1tdXG4pOiBbUmVjb3JkPHN0cmluZywgYW55PiwgUmVjb3JkPHN0cmluZywgYW55Pl0ge1xuICBjb25zdCBhY2Nlc3NvcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgY29uc3Qgb3RoZXJQcm9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcykpIHtcbiAgICBpZiAoZXhjbHVkZUtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCdnZXQnKSkge1xuICAgICAgYWNjZXNzb3JzW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3RoZXJQcm9wc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFthY2Nlc3NvcnMsIG90aGVyUHJvcHNdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEVBQUEsR0FBQUQsdUJBQUEsQ0FBQUYsT0FBQTtBQUE0QyxTQUFBSSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhC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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/deckgl-arrow-layers",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.7",
4
+ "version": "3.1.1",
5
5
  "description": "Deck.gl layers with GeoArrow and GeoParquet support",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,6 +31,7 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@geoarrow/geoarrow-js": "^0.3.0",
34
+ "@kepler.gl/constants": "^3.1.1",
34
35
  "@math.gl/core": "^4.0.0",
35
36
  "@math.gl/polygon": "^4.0.0",
36
37
  "@math.gl/types": "^4.0.0",