@kepler.gl/utils 3.2.2 → 3.2.4

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.
@@ -8,6 +8,43 @@ declare type ArrowDataContainerInput = {
8
8
  fields?: ProtoDatasetField[];
9
9
  arrowTable?: arrow.Table;
10
10
  };
11
+ /**
12
+ * Check if table is an ArrowTable object.
13
+ *
14
+ * We use duck-typing instead of `instanceof arrow.Table` because DuckDB loads its own
15
+ * bundled version of Apache Arrow. When DuckDB creates Arrow tables, they are instances
16
+ * of DuckDB's Arrow.Table class, not the Arrow.Table class from our application's
17
+ * apache-arrow package. This causes `instanceof` checks to fail even though the objects
18
+ * are functionally equivalent Arrow tables.
19
+ *
20
+ * @param data - object to check
21
+ * @returns true if data is an ArrowTable object (type guarded)
22
+ */
23
+ export declare function isArrowTable(data: any): data is arrow.Table;
24
+ /**
25
+ * Check if data is an ArrowVector object.
26
+ * Uses duck-typing instead of `instanceof` to handle DuckDB's bundled Arrow version.
27
+ *
28
+ * @param data - object to check
29
+ * @returns true if data is an ArrowVector object (type guarded)
30
+ */
31
+ export declare function isArrowVector(data: any): data is arrow.Vector;
32
+ /**
33
+ * Check if data is an Arrow FixedSizeList DataType.
34
+ * Uses duck-typing instead of `instanceof` to handle DuckDB's bundled Arrow version.
35
+ *
36
+ * @param data - object to check
37
+ * @returns true if data is an Arrow FixedSizeList DataType (type guarded)
38
+ */
39
+ export declare function isArrowFixedSizeList(data: any): data is arrow.FixedSizeList;
40
+ /**
41
+ * Check if data is an Arrow Struct DataType.
42
+ * Uses duck-typing instead of `instanceof` to handle DuckDB's bundled Arrow version.
43
+ *
44
+ * @param data - object to check
45
+ * @returns true if data is an Arrow Struct DataType (type guarded)
46
+ */
47
+ export declare function isArrowStruct(data: any): data is arrow.Struct;
11
48
  /**
12
49
  * A data container where all data is stored in raw Arrow table
13
50
  */
@@ -26,7 +63,7 @@ export declare class ArrowDataContainer implements DataContainerInterface {
26
63
  */
27
64
  private _createTable;
28
65
  getTable(): arrow.Table<any>;
29
- update(updateData: arrow.Vector<any>[]): void;
66
+ update(updateData: arrow.Vector<any>[] | arrow.Table): void;
30
67
  numChunks(): number;
31
68
  numRows(): number;
32
69
  numColumns(): number;
@@ -1,28 +1,83 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
4
+ var _regeneratorRuntime2 = require("@babel/runtime/regenerator");
3
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
6
  Object.defineProperty(exports, "__esModule", {
6
7
  value: true
7
8
  });
8
9
  exports.ArrowDataContainer = void 0;
9
10
  exports.arrowDataTypeToAnalyzerDataType = arrowDataTypeToAnalyzerDataType;
10
11
  exports.arrowDataTypeToFieldType = arrowDataTypeToFieldType;
12
+ exports.isArrowFixedSizeList = isArrowFixedSizeList;
13
+ exports.isArrowStruct = isArrowStruct;
14
+ exports.isArrowTable = isArrowTable;
15
+ exports.isArrowVector = isArrowVector;
16
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
17
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
19
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
21
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
16
22
  var _constants = require("@kepler.gl/constants");
17
23
  var arrow = _interopRequireWildcard(require("apache-arrow"));
18
24
  var _window = require("global/window");
19
25
  var _typeAnalyzer = require("type-analyzer");
20
26
  var _dataRow = require("./data-row");
21
27
  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); }
22
- 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; }
23
- var _marked = /*#__PURE__*/_regenerator["default"].mark(rowsIterator),
24
- _marked2 = /*#__PURE__*/_regenerator["default"].mark(columnIterator); // SPDX-License-Identifier: MIT
28
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
29
+ var _marked = /*#__PURE__*/_regeneratorRuntime2.mark(rowsIterator),
30
+ _marked2 = /*#__PURE__*/_regeneratorRuntime2.mark(columnIterator); // SPDX-License-Identifier: MIT
25
31
  // Copyright contributors to the kepler.gl project
32
+ /**
33
+ * Check if table is an ArrowTable object.
34
+ *
35
+ * We use duck-typing instead of `instanceof arrow.Table` because DuckDB loads its own
36
+ * bundled version of Apache Arrow. When DuckDB creates Arrow tables, they are instances
37
+ * of DuckDB's Arrow.Table class, not the Arrow.Table class from our application's
38
+ * apache-arrow package. This causes `instanceof` checks to fail even though the objects
39
+ * are functionally equivalent Arrow tables.
40
+ *
41
+ * @param data - object to check
42
+ * @returns true if data is an ArrowTable object (type guarded)
43
+ */
44
+ function isArrowTable(data) {
45
+ return (0, _typeof2["default"])(data) === 'object' && data !== null && 'schema' in data && 'getChildAt' in data && typeof data.getChildAt === 'function' && 'batches' in data && Array.isArray(data.batches);
46
+ }
47
+
48
+ /**
49
+ * Check if data is an ArrowVector object.
50
+ * Uses duck-typing instead of `instanceof` to handle DuckDB's bundled Arrow version.
51
+ *
52
+ * @param data - object to check
53
+ * @returns true if data is an ArrowVector object (type guarded)
54
+ */
55
+ function isArrowVector(data) {
56
+ return (0, _typeof2["default"])(data) === 'object' && data !== null && 'type' in data && 'length' in data && typeof data.length === 'number' && 'get' in data && typeof data.get === 'function' && 'data' in data && Array.isArray(data.data);
57
+ }
58
+
59
+ /**
60
+ * Check if data is an Arrow FixedSizeList DataType.
61
+ * Uses duck-typing instead of `instanceof` to handle DuckDB's bundled Arrow version.
62
+ *
63
+ * @param data - object to check
64
+ * @returns true if data is an Arrow FixedSizeList DataType (type guarded)
65
+ */
66
+ function isArrowFixedSizeList(data) {
67
+ return (0, _typeof2["default"])(data) === 'object' && data !== null && 'typeId' in data && 'listSize' in data && typeof data.listSize === 'number' && 'children' in data && Array.isArray(data.children);
68
+ }
69
+
70
+ /**
71
+ * Check if data is an Arrow Struct DataType.
72
+ * Uses duck-typing instead of `instanceof` to handle DuckDB's bundled Arrow version.
73
+ *
74
+ * @param data - object to check
75
+ * @returns true if data is an Arrow Struct DataType (type guarded)
76
+ */
77
+ function isArrowStruct(data) {
78
+ return (0, _typeof2["default"])(data) === 'object' && data !== null && 'typeId' in data && 'children' in data && Array.isArray(data.children) && !('listSize' in data);
79
+ }
80
+
26
81
  /**
27
82
  * @param dataContainer
28
83
  * @param sharedRow
@@ -134,11 +189,23 @@ var ArrowDataContainer = exports.ArrowDataContainer = /*#__PURE__*/function () {
134
189
  }, {
135
190
  key: "update",
136
191
  value: function update(updateData) {
137
- this._cols = updateData;
138
- this._numColumns = this._cols.length;
139
- this._numRows = this._cols[0].length;
140
- this._numChunks = this._cols[0].data.length;
141
- this._arrowTable = this._createTable();
192
+ var _this$_cols$length, _this$_cols, _this$_cols$0$length, _this$_cols2, _this$_cols$0$data$le, _this$_cols3;
193
+ var isArrow = isArrowTable(updateData);
194
+ if (isArrow) {
195
+ this._cols = Array.from({
196
+ length: updateData.numCols
197
+ }, function (_, i) {
198
+ return updateData.getChildAt(i);
199
+ }).filter(function (col) {
200
+ return col;
201
+ });
202
+ } else {
203
+ this._cols = updateData;
204
+ }
205
+ this._numColumns = (_this$_cols$length = (_this$_cols = this._cols) === null || _this$_cols === void 0 ? void 0 : _this$_cols.length) !== null && _this$_cols$length !== void 0 ? _this$_cols$length : 0;
206
+ this._numRows = (_this$_cols$0$length = (_this$_cols2 = this._cols) === null || _this$_cols2 === void 0 || (_this$_cols2 = _this$_cols2[0]) === null || _this$_cols2 === void 0 ? void 0 : _this$_cols2.length) !== null && _this$_cols$0$length !== void 0 ? _this$_cols$0$length : 0;
207
+ this._numChunks = (_this$_cols$0$data$le = (_this$_cols3 = this._cols) === null || _this$_cols3 === void 0 || (_this$_cols3 = _this$_cols3[0]) === null || _this$_cols3 === void 0 || (_this$_cols3 = _this$_cols3.data) === null || _this$_cols3 === void 0 ? void 0 : _this$_cols3.length) !== null && _this$_cols$0$data$le !== void 0 ? _this$_cols$0$data$le : 0;
208
+ this._arrowTable = isArrow ? updateData : this._createTable();
142
209
 
143
210
  // cache column data to make valueAt() faster
144
211
  // this._colData = this._cols.map(c => c.toArray());
@@ -328,4 +395,4 @@ function arrowDataTypeToAnalyzerDataType(arrowType) {
328
395
  _window.console.warn("Unsupported arrow type: ".concat(arrowType));
329
396
  return _typeAnalyzer.DATA_TYPES.STRING;
330
397
  }
331
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsImFycm93IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfd2luZG93IiwiX3R5cGVBbmFseXplciIsIl9kYXRhUm93IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX21hcmtlZCIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJyb3dzSXRlcmF0b3IiLCJfbWFya2VkMiIsImNvbHVtbkl0ZXJhdG9yIiwiZGF0YUNvbnRhaW5lciIsInNoYXJlZFJvdyIsIm51bVJvd3MiLCJyb3dJbmRleCIsIndyYXAiLCJyb3dzSXRlcmF0b3IkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInJvdyIsInN0b3AiLCJjb2x1bW5JbmRleCIsImNvbHVtbkl0ZXJhdG9yJCIsIl9jb250ZXh0MiIsInZhbHVlQXQiLCJBcnJvd0RhdGFDb250YWluZXIiLCJleHBvcnRzIiwiZGF0YSIsIl9jbGFzc0NhbGxDaGVjazIiLCJfZGVmaW5lUHJvcGVydHkyIiwiY29scyIsIkVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NvbHMiLCJfbnVtQ29sdW1ucyIsImxlbmd0aCIsIl9udW1Sb3dzIiwiX2ZpZWxkcyIsImZpZWxkcyIsIl9udW1DaHVua3MiLCJfYXJyb3dUYWJsZSIsImFycm93VGFibGUiLCJfY3JlYXRlVGFibGUiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfdGhpcyIsImNyZWFPcHRzIiwibWFwIiwiZmllbGQiLCJpbmRleCIsIm5hbWUiLCJUYWJsZSIsImdldFRhYmxlIiwidXBkYXRlIiwidXBkYXRlRGF0YSIsIm51bUNodW5rcyIsIm51bUNvbHVtbnMiLCJ0U2hhcmVkUm93IiwiRGF0YVJvdyIsImNyZWF0ZVNoYXJlZFJvdyIsInNldFNvdXJjZSIsInJvd0FzQXJyYXkiLCJjb2wiLCJyb3dzIiwiY29sdW1uIiwiZ2V0Q29sdW1uIiwiZ2V0RmllbGQiLCJmbGF0dGVuRGF0YSIsInB1c2giLCJnZXRQbGFpbkluZGV4IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImtleXMiLCJmdW5jIiwib3B0aW9ucyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9vcHRpb25zJHN0YXJ0Iiwic3RhcnQiLCJfb3B0aW9ucyRlbmQiLCJlbmQiLCJlbmRSb3ciLCJNYXRoIiwibWluIiwib3V0IiwibWFwSW5kZXgiLCJfb3B0aW9ucyRzdGFydDIiLCJfb3B0aW9ucyRlbmQyIiwiZmluZCIsInJlZHVjZSIsImluaXRpYWxWYWx1ZSIsImFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZSIsImFycm93VHlwZSIsIkRhdGFUeXBlIiwiaXNEYXRlIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImlzVGltZXN0YW1wIiwiaXNUaW1lIiwidGltZXN0YW1wIiwiaXNGbG9hdCIsInJlYWwiLCJpc0ludCIsImludGVnZXIiLCJpc0Jvb2wiLCJpc1V0ZjgiLCJpc051bGwiLCJzdHJpbmciLCJpc0JpbmFyeSIsImlzRGljdGlvbmFyeSIsImlzRml4ZWRTaXplQmluYXJ5IiwiaXNGaXhlZFNpemVMaXN0IiwiaXNMaXN0IiwiaXNNYXAiLCJpc1N0cnVjdCIsIm9iamVjdCIsImdsb2JhbENvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYXJyb3dEYXRhVHlwZVRvQW5hbHl6ZXJEYXRhVHlwZSIsIkFuYWx5emVyREFUQV9UWVBFUyIsIkRBVEUiLCJEQVRFVElNRSIsIkZMT0FUIiwiSU5UIiwiQk9PTEVBTiIsIlNUUklORyIsIk9CSkVDVCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hcnJvdy1kYXRhLWNvbnRhaW5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgeyBBTExfRklFTERfVFlQRVMgfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQcm90b0RhdGFzZXRGaWVsZCB9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7IGNvbnNvbGUgYXMgZ2xvYmFsQ29uc29sZSB9IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuaW1wb3J0IHsgREFUQV9UWVBFUyBhcyBBbmFseXplckRBVEFfVFlQRVMgfSBmcm9tICd0eXBlLWFuYWx5emVyJztcblxuaW1wb3J0IHsgRGF0YUNvbnRhaW5lckludGVyZmFjZSwgUmFuZ2VPcHRpb25zIH0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0YVJvdywgU2hhcmVkUm93T3B0aW9ucyB9IGZyb20gJy4vZGF0YS1yb3cnO1xuXG50eXBlIEFycm93RGF0YUNvbnRhaW5lcklucHV0ID0ge1xuICBjb2xzOiBhcnJvdy5WZWN0b3JbXTtcbiAgZmllbGRzPzogUHJvdG9EYXRhc2V0RmllbGRbXTtcbiAgYXJyb3dUYWJsZT86IGFycm93LlRhYmxlO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSBkYXRhQ29udGFpbmVyXG4gKiBAcGFyYW0gc2hhcmVkUm93XG4gKi9cbmZ1bmN0aW9uKiByb3dzSXRlcmF0b3IoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgc2hhcmVkUm93OiBTaGFyZWRSb3dPcHRpb25zKSB7XG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHtcbiAgICB5aWVsZCBkYXRhQ29udGFpbmVyLnJvdyhyb3dJbmRleCwgc2hhcmVkUm93KTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSBkYXRhQ29udGFpbmVyXG4gKiBAcGFyYW0gY29sdW1uSW5kZXhcbiAqL1xuZnVuY3Rpb24qIGNvbHVtbkl0ZXJhdG9yKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIGNvbHVtbkluZGV4OiBudW1iZXIpIHtcbiAgY29uc3QgbnVtUm93cyA9IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgbnVtUm93czsgKytyb3dJbmRleCkge1xuICAgIHlpZWxkIGRhdGFDb250YWluZXIudmFsdWVBdChyb3dJbmRleCwgY29sdW1uSW5kZXgpO1xuICB9XG59XG5cbi8qKlxuICogQSBkYXRhIGNvbnRhaW5lciB3aGVyZSBhbGwgZGF0YSBpcyBzdG9yZWQgaW4gcmF3IEFycm93IHRhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBBcnJvd0RhdGFDb250YWluZXIgaW1wbGVtZW50cyBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHtcbiAgX2NvbHM6IGFycm93LlZlY3RvcltdO1xuICBfbnVtQ29sdW1uczogbnVtYmVyO1xuICBfbnVtUm93czogbnVtYmVyO1xuICBfZmllbGRzOiBQcm90b0RhdGFzZXRGaWVsZFtdO1xuICBfbnVtQ2h1bmtzOiBudW1iZXI7XG4gIC8vIGNhY2hlIGNvbHVtbiBkYXRhIHRvIG1ha2UgdmFsdWVBdCgpIGZhc3RlclxuICAvLyBfY29sRGF0YTogYW55W11bXTtcblxuICAvKiogQW4gYXJyb3cgdGFibGUgcmVjcmVhdGVkIGZyb20gdmVjdG9ycyAqL1xuICBfYXJyb3dUYWJsZTogYXJyb3cuVGFibGU7XG5cbiAgY29uc3RydWN0b3IoZGF0YTogQXJyb3dEYXRhQ29udGFpbmVySW5wdXQpIHtcbiAgICBpZiAoIWRhdGEuY29scykge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Fycm93RGF0YUNvbnRhaW5lcjogbm8gY29sdW1ucyBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhLmNvbHMpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkFycm93RGF0YUNvbnRhaW5lcjogY29sdW1ucyBvYmplY3QgaXNuJ3QgYW4gYXJyYXlcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fY29scyA9IGRhdGEuY29scztcbiAgICB0aGlzLl9udW1Db2x1bW5zID0gZGF0YS5jb2xzLmxlbmd0aDtcbiAgICB0aGlzLl9udW1Sb3dzID0gZGF0YS5jb2xzWzBdLmxlbmd0aDtcbiAgICB0aGlzLl9maWVsZHMgPSBkYXRhLmZpZWxkcyB8fCBbXTtcbiAgICB0aGlzLl9udW1DaHVua3MgPSBkYXRhLmNvbHNbMF0uZGF0YS5sZW5ndGg7XG4gICAgLy8gdGhpcy5fY29sRGF0YSA9IGRhdGEuY29scy5tYXAoYyA9PiBjLnRvQXJyYXkoKSk7XG5cbiAgICB0aGlzLl9hcnJvd1RhYmxlID0gZGF0YS5hcnJvd1RhYmxlIHx8IHRoaXMuX2NyZWF0ZVRhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgaW50ZXJuYWwgQXJyb3cgdGFibGUgZnJvbSB2ZWN0b3JzLlxuICAgKiBUT0RPOiBjb25zaWRlciB1c2luZyBvcmlnaW5hbCBhcnJvdyB0YWJsZSwgYXMgaXQgY291bGQgY29udGFpbiBleHRyYSBtZXRhZGF0YSwgbm90IHBhc3NlZCB0byB0aGUgZmllbGRzLlxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlVGFibGUoKSB7XG4gICAgY29uc3QgY3JlYU9wdHMgPSB7fTtcbiAgICB0aGlzLl9maWVsZHMubWFwKChmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgIGNyZWFPcHRzW2ZpZWxkLm5hbWVdID0gdGhpcy5fY29sc1tpbmRleF07XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBhcnJvdy5UYWJsZShjcmVhT3B0cyk7XG4gIH1cblxuICBnZXRUYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyb3dUYWJsZTtcbiAgfVxuXG4gIHVwZGF0ZSh1cGRhdGVEYXRhOiBhcnJvdy5WZWN0b3I8YW55PltdKSB7XG4gICAgdGhpcy5fY29scyA9IHVwZGF0ZURhdGE7XG4gICAgdGhpcy5fbnVtQ29sdW1ucyA9IHRoaXMuX2NvbHMubGVuZ3RoO1xuICAgIHRoaXMuX251bVJvd3MgPSB0aGlzLl9jb2xzWzBdLmxlbmd0aDtcbiAgICB0aGlzLl9udW1DaHVua3MgPSB0aGlzLl9jb2xzWzBdLmRhdGEubGVuZ3RoO1xuXG4gICAgdGhpcy5fYXJyb3dUYWJsZSA9IHRoaXMuX2NyZWF0ZVRhYmxlKCk7XG5cbiAgICAvLyBjYWNoZSBjb2x1bW4gZGF0YSB0byBtYWtlIHZhbHVlQXQoKSBmYXN0ZXJcbiAgICAvLyB0aGlzLl9jb2xEYXRhID0gdGhpcy5fY29scy5tYXAoYyA9PiBjLnRvQXJyYXkoKSk7XG4gIH1cblxuICBudW1DaHVua3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtQ2h1bmtzO1xuICB9XG5cbiAgbnVtUm93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1Sb3dzO1xuICB9XG5cbiAgbnVtQ29sdW1ucygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1Db2x1bW5zO1xuICB9XG5cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55IHtcbiAgICAvLyByZXR1cm4gdGhpcy5fY29sRGF0YVtjb2x1bW5JbmRleF1bcm93SW5kZXhdO1xuICAgIHJldHVybiB0aGlzLl9jb2xzW2NvbHVtbkluZGV4XS5nZXQocm93SW5kZXgpO1xuICB9XG5cbiAgcm93KHJvd0luZGV4OiBudW1iZXIsIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMpOiBEYXRhUm93IHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcbiAgICBpZiAodFNoYXJlZFJvdykge1xuICAgICAgdFNoYXJlZFJvdy5zZXRTb3VyY2UodGhpcywgcm93SW5kZXgpO1xuICAgICAgcmV0dXJuIHRTaGFyZWRSb3c7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRhUm93KHRoaXMsIHJvd0luZGV4KTtcbiAgfVxuXG4gIHJvd0FzQXJyYXkocm93SW5kZXg6IG51bWJlcik6IGFueVtdIHtcbiAgICAvLyByZXR1cm4gdGhpcy5fY29sRGF0YS5tYXAoY29sID0+IGNvbFtyb3dJbmRleF0pO1xuICAgIHJldHVybiB0aGlzLl9jb2xzLm1hcChjb2wgPT4gY29sLmdldChyb3dJbmRleCkpO1xuICB9XG5cbiAgcm93cyhzaGFyZWRSb3c6IFNoYXJlZFJvd09wdGlvbnMpIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcbiAgICByZXR1cm4gcm93c0l0ZXJhdG9yKHRoaXMsIHRTaGFyZWRSb3cpO1xuICB9XG5cbiAgY29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gY29sdW1uSXRlcmF0b3IodGhpcywgY29sdW1uSW5kZXgpO1xuICB9XG5cbiAgZ2V0Q29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIpOiBhcnJvdy5WZWN0b3Ige1xuICAgIHJldHVybiB0aGlzLl9jb2xzW2NvbHVtbkluZGV4XTtcbiAgfVxuXG4gIGdldEZpZWxkKGNvbHVtbkluZGV4OiBudW1iZXIpOiBQcm90b0RhdGFzZXRGaWVsZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1tjb2x1bW5JbmRleF07XG4gIH1cblxuICBmbGF0dGVuRGF0YSgpOiBhbnlbXVtdIHtcbiAgICBjb25zdCBkYXRhOiBhbnlbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9udW1Sb3dzOyArK2kpIHtcbiAgICAgIGRhdGEucHVzaCh0aGlzLnJvd0FzQXJyYXkoaSkpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBbLi4uQXJyYXkodGhpcy5fbnVtUm93cykua2V5cygpXTtcbiAgfVxuXG4gIG1hcDxUPihcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMsXG4gICAgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge31cbiAgKTogVFtdIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBvdXQucHVzaChmdW5jKHJvdywgcm93SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIG1hcEluZGV4PFQ+KGZ1bmM6ICh7aW5kZXh9LCBkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT4gVCwgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge30pOiBUW10ge1xuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBvdXQucHVzaChmdW5jKHtpbmRleDogcm93SW5kZXh9LCB0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW4sXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBEYXRhUm93IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9udW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpZiAoZnVuYyhyb3csIHJvd0luZGV4KSkge1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVkdWNlPFQ+KFxuICAgIGZ1bmM6IChhY2M6IFQsIHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gVCxcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBUIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9udW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpbml0aWFsVmFsdWUgPSBmdW5jKGluaXRpYWxWYWx1ZSwgcm93LCByb3dJbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsVmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFycm93IGRhdGEgdHlwZSB0byBrZXBsZXIuZ2wgZmllbGQgdHlwZXNcbiAqXG4gKiBAcGFyYW0gYXJyb3dUeXBlIHRoZSBhcnJvdyBkYXRhIHR5cGVcbiAqIEByZXR1cm5zIGNvcnJlc3BvbmRpbmcgdHlwZSBpbiBgQUxMX0ZJRUxEX1RZUEVTYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyb3dEYXRhVHlwZVRvRmllbGRUeXBlKGFycm93VHlwZTogYXJyb3cuRGF0YVR5cGUpOiBzdHJpbmcge1xuICAvLyBOb3RlOiB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uIG9yIEFMTF9GSUVMRF9UWVBFUy5hcnJheSwgd2hpY2hcbiAgLy8gc2hvdWxkIGJlIGZ1cnRoZXIgZGV0ZWN0ZWQgYnkgY2FsbGVyXG4gIGlmIChhcnJvdy5EYXRhVHlwZS5pc0RhdGUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuZGF0ZTtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc1RpbWVzdGFtcChhcnJvd1R5cGUpIHx8IGFycm93LkRhdGFUeXBlLmlzVGltZShhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNGbG9hdChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5yZWFsO1xuICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzSW50KGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNCb29sKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW47XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGFycm93VHlwZSkgfHwgYXJyb3cuRGF0YVR5cGUuaXNOdWxsKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZztcbiAgfSBlbHNlIGlmIChcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNEaWN0aW9uYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUJpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0xpc3QoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzTWFwKGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc1N0cnVjdChhcnJvd1R5cGUpXG4gICkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMub2JqZWN0O1xuICB9XG4gIGdsb2JhbENvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgYXJyb3cgdHlwZTogJHthcnJvd1R5cGV9YCk7XG4gIHJldHVybiBBTExfRklFTERfVFlQRVMuc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYXJyb3cgZGF0YSB0eXBlIHRvIGFuYWx5emVyIHR5cGVcbiAqXG4gKiBAcGFyYW0gYXJyb3dUeXBlIHRoZSBhcnJvdyBkYXRhIHR5cGVcbiAqIEByZXR1cm5zIGNvcnJlc3BvbmRpbmcgdHlwZSBpbiBgQW5hbHl6ZXJEQVRBX1RZUEVTYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyb3dEYXRhVHlwZVRvQW5hbHl6ZXJEYXRhVHlwZShcbiAgYXJyb3dUeXBlOiBhcnJvdy5EYXRhVHlwZVxuKTogdHlwZW9mIEFuYWx5emVyREFUQV9UWVBFUyB7XG4gIGlmIChhcnJvdy5EYXRhVHlwZS5pc0RhdGUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuREFURTtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc1RpbWVzdGFtcChhcnJvd1R5cGUpIHx8IGFycm93LkRhdGFUeXBlLmlzVGltZShhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5EQVRFVElNRTtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0Zsb2F0KGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLkZMT0FUO1xuICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzSW50KGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLklOVDtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0Jvb2woYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuQk9PTEVBTjtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc1V0ZjgoYXJyb3dUeXBlKSB8fCBhcnJvdy5EYXRhVHlwZS5pc051bGwoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuU1RSSU5HO1xuICB9IGVsc2UgaWYgKFxuICAgIGFycm93LkRhdGFUeXBlLmlzQmluYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0RpY3Rpb25hcnkoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzRml4ZWRTaXplQmluYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUxpc3QoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzTGlzdChhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNNYXAoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzU3RydWN0KGFycm93VHlwZSlcbiAgKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5PQkpFQ1Q7XG4gIH1cbiAgZ2xvYmFsQ29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBhcnJvdyB0eXBlOiAke2Fycm93VHlwZX1gKTtcbiAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5TVFJJTkc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGFBQUEsR0FBQUosT0FBQTtBQUdBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUF1RCxTQUFBTSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUwsd0JBQUFLLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FB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
398
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsImFycm93IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfd2luZG93IiwiX3R5cGVBbmFseXplciIsIl9kYXRhUm93IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9tYXJrZWQiLCJfcmVnZW5lcmF0b3JSdW50aW1lMiIsIm1hcmsiLCJyb3dzSXRlcmF0b3IiLCJfbWFya2VkMiIsImNvbHVtbkl0ZXJhdG9yIiwiaXNBcnJvd1RhYmxlIiwiZGF0YSIsIl90eXBlb2YyIiwiZ2V0Q2hpbGRBdCIsIkFycmF5IiwiaXNBcnJheSIsImJhdGNoZXMiLCJpc0Fycm93VmVjdG9yIiwibGVuZ3RoIiwiaXNBcnJvd0ZpeGVkU2l6ZUxpc3QiLCJsaXN0U2l6ZSIsImNoaWxkcmVuIiwiaXNBcnJvd1N0cnVjdCIsImRhdGFDb250YWluZXIiLCJzaGFyZWRSb3ciLCJudW1Sb3dzIiwicm93SW5kZXgiLCJfcmVnZW5lcmF0b3IiLCJ3cmFwIiwicm93c0l0ZXJhdG9yJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJyb3ciLCJzdG9wIiwiY29sdW1uSW5kZXgiLCJjb2x1bW5JdGVyYXRvciQiLCJfY29udGV4dDIiLCJ2YWx1ZUF0IiwiQXJyb3dEYXRhQ29udGFpbmVyIiwiZXhwb3J0cyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfZGVmaW5lUHJvcGVydHkyIiwiY29scyIsIkVycm9yIiwiX2NvbHMiLCJfbnVtQ29sdW1ucyIsIl9udW1Sb3dzIiwiX2ZpZWxkcyIsImZpZWxkcyIsIl9udW1DaHVua3MiLCJfYXJyb3dUYWJsZSIsImFycm93VGFibGUiLCJfY3JlYXRlVGFibGUiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfdGhpcyIsImNyZWFPcHRzIiwibWFwIiwiZmllbGQiLCJpbmRleCIsIm5hbWUiLCJUYWJsZSIsImdldFRhYmxlIiwidXBkYXRlIiwidXBkYXRlRGF0YSIsIl90aGlzJF9jb2xzJGxlbmd0aCIsIl90aGlzJF9jb2xzIiwiX3RoaXMkX2NvbHMkMCRsZW5ndGgiLCJfdGhpcyRfY29sczIiLCJfdGhpcyRfY29scyQwJGRhdGEkbGUiLCJfdGhpcyRfY29sczMiLCJpc0Fycm93IiwiZnJvbSIsIm51bUNvbHMiLCJfIiwiZmlsdGVyIiwiY29sIiwibnVtQ2h1bmtzIiwibnVtQ29sdW1ucyIsInRTaGFyZWRSb3ciLCJEYXRhUm93IiwiY3JlYXRlU2hhcmVkUm93Iiwic2V0U291cmNlIiwicm93QXNBcnJheSIsInJvd3MiLCJjb2x1bW4iLCJnZXRDb2x1bW4iLCJnZXRGaWVsZCIsImZsYXR0ZW5EYXRhIiwicHVzaCIsImdldFBsYWluSW5kZXgiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwia2V5cyIsImZ1bmMiLCJvcHRpb25zIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX29wdGlvbnMkc3RhcnQiLCJzdGFydCIsIl9vcHRpb25zJGVuZCIsImVuZCIsImVuZFJvdyIsIk1hdGgiLCJtaW4iLCJvdXQiLCJtYXBJbmRleCIsIl9vcHRpb25zJHN0YXJ0MiIsIl9vcHRpb25zJGVuZDIiLCJmaW5kIiwicmVkdWNlIiwiaW5pdGlhbFZhbHVlIiwiYXJyb3dEYXRhVHlwZVRvRmllbGRUeXBlIiwiYXJyb3dUeXBlIiwiRGF0YVR5cGUiLCJpc0RhdGUiLCJBTExfRklFTERfVFlQRVMiLCJkYXRlIiwiaXNUaW1lc3RhbXAiLCJpc1RpbWUiLCJ0aW1lc3RhbXAiLCJpc0Zsb2F0IiwicmVhbCIsImlzSW50IiwiaW50ZWdlciIsImlzQm9vbCIsImlzVXRmOCIsImlzTnVsbCIsInN0cmluZyIsImlzQmluYXJ5IiwiaXNEaWN0aW9uYXJ5IiwiaXNGaXhlZFNpemVCaW5hcnkiLCJpc0ZpeGVkU2l6ZUxpc3QiLCJpc0xpc3QiLCJpc01hcCIsImlzU3RydWN0Iiwib2JqZWN0IiwiZ2xvYmFsQ29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlIiwiQW5hbHl6ZXJEQVRBX1RZUEVTIiwiREFURSIsIkRBVEVUSU1FIiwiRkxPQVQiLCJJTlQiLCJCT09MRUFOIiwiU1RSSU5HIiwiT0JKRUNUIl0sInNvdXJjZXMiOlsiLi4vc3JjL2Fycm93LWRhdGEtY29udGFpbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgZ2xvYmFsQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge0RBVEFfVFlQRVMgYXMgQW5hbHl6ZXJEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcblxuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBSYW5nZU9wdGlvbnN9IGZyb20gJy4vZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbnR5cGUgQXJyb3dEYXRhQ29udGFpbmVySW5wdXQgPSB7XG4gIGNvbHM6IGFycm93LlZlY3RvcltdO1xuICBmaWVsZHM/OiBQcm90b0RhdGFzZXRGaWVsZFtdO1xuICBhcnJvd1RhYmxlPzogYXJyb3cuVGFibGU7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIHRhYmxlIGlzIGFuIEFycm93VGFibGUgb2JqZWN0LlxuICpcbiAqIFdlIHVzZSBkdWNrLXR5cGluZyBpbnN0ZWFkIG9mIGBpbnN0YW5jZW9mIGFycm93LlRhYmxlYCBiZWNhdXNlIER1Y2tEQiBsb2FkcyBpdHMgb3duXG4gKiBidW5kbGVkIHZlcnNpb24gb2YgQXBhY2hlIEFycm93LiBXaGVuIER1Y2tEQiBjcmVhdGVzIEFycm93IHRhYmxlcywgdGhleSBhcmUgaW5zdGFuY2VzXG4gKiBvZiBEdWNrREIncyBBcnJvdy5UYWJsZSBjbGFzcywgbm90IHRoZSBBcnJvdy5UYWJsZSBjbGFzcyBmcm9tIG91ciBhcHBsaWNhdGlvbidzXG4gKiBhcGFjaGUtYXJyb3cgcGFja2FnZS4gVGhpcyBjYXVzZXMgYGluc3RhbmNlb2ZgIGNoZWNrcyB0byBmYWlsIGV2ZW4gdGhvdWdoIHRoZSBvYmplY3RzXG4gKiBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgQXJyb3cgdGFibGVzLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIGRhdGEgaXMgYW4gQXJyb3dUYWJsZSBvYmplY3QgKHR5cGUgZ3VhcmRlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyb3dUYWJsZShkYXRhOiBhbnkpOiBkYXRhIGlzIGFycm93LlRhYmxlIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICBkYXRhICE9PSBudWxsICYmXG4gICAgJ3NjaGVtYScgaW4gZGF0YSAmJlxuICAgICdnZXRDaGlsZEF0JyBpbiBkYXRhICYmXG4gICAgdHlwZW9mIGRhdGEuZ2V0Q2hpbGRBdCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICdiYXRjaGVzJyBpbiBkYXRhICYmXG4gICAgQXJyYXkuaXNBcnJheShkYXRhLmJhdGNoZXMpXG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgZGF0YSBpcyBhbiBBcnJvd1ZlY3RvciBvYmplY3QuXG4gKiBVc2VzIGR1Y2stdHlwaW5nIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIHRvIGhhbmRsZSBEdWNrREIncyBidW5kbGVkIEFycm93IHZlcnNpb24uXG4gKlxuICogQHBhcmFtIGRhdGEgLSBvYmplY3QgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgZGF0YSBpcyBhbiBBcnJvd1ZlY3RvciBvYmplY3QgKHR5cGUgZ3VhcmRlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyb3dWZWN0b3IoZGF0YTogYW55KTogZGF0YSBpcyBhcnJvdy5WZWN0b3Ige1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgIGRhdGEgIT09IG51bGwgJiZcbiAgICAndHlwZScgaW4gZGF0YSAmJlxuICAgICdsZW5ndGgnIGluIGRhdGEgJiZcbiAgICB0eXBlb2YgZGF0YS5sZW5ndGggPT09ICdudW1iZXInICYmXG4gICAgJ2dldCcgaW4gZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhLmdldCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICdkYXRhJyBpbiBkYXRhICYmXG4gICAgQXJyYXkuaXNBcnJheShkYXRhLmRhdGEpXG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgZGF0YSBpcyBhbiBBcnJvdyBGaXhlZFNpemVMaXN0IERhdGFUeXBlLlxuICogVXNlcyBkdWNrLXR5cGluZyBpbnN0ZWFkIG9mIGBpbnN0YW5jZW9mYCB0byBoYW5kbGUgRHVja0RCJ3MgYnVuZGxlZCBBcnJvdyB2ZXJzaW9uLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIGRhdGEgaXMgYW4gQXJyb3cgRml4ZWRTaXplTGlzdCBEYXRhVHlwZSAodHlwZSBndWFyZGVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJvd0ZpeGVkU2l6ZUxpc3QoZGF0YTogYW55KTogZGF0YSBpcyBhcnJvdy5GaXhlZFNpemVMaXN0IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICBkYXRhICE9PSBudWxsICYmXG4gICAgJ3R5cGVJZCcgaW4gZGF0YSAmJlxuICAgICdsaXN0U2l6ZScgaW4gZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhLmxpc3RTaXplID09PSAnbnVtYmVyJyAmJlxuICAgICdjaGlsZHJlbicgaW4gZGF0YSAmJlxuICAgIEFycmF5LmlzQXJyYXkoZGF0YS5jaGlsZHJlbilcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBkYXRhIGlzIGFuIEFycm93IFN0cnVjdCBEYXRhVHlwZS5cbiAqIFVzZXMgZHVjay10eXBpbmcgaW5zdGVhZCBvZiBgaW5zdGFuY2VvZmAgdG8gaGFuZGxlIER1Y2tEQidzIGJ1bmRsZWQgQXJyb3cgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiBkYXRhIGlzIGFuIEFycm93IFN0cnVjdCBEYXRhVHlwZSAodHlwZSBndWFyZGVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJvd1N0cnVjdChkYXRhOiBhbnkpOiBkYXRhIGlzIGFycm93LlN0cnVjdCB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgZGF0YSAhPT0gbnVsbCAmJlxuICAgICd0eXBlSWQnIGluIGRhdGEgJiZcbiAgICAnY2hpbGRyZW4nIGluIGRhdGEgJiZcbiAgICBBcnJheS5pc0FycmF5KGRhdGEuY2hpbGRyZW4pICYmXG4gICAgISgnbGlzdFNpemUnIGluIGRhdGEpXG4gICk7XG59XG5cbi8qKlxuICogQHBhcmFtIGRhdGFDb250YWluZXJcbiAqIEBwYXJhbSBzaGFyZWRSb3dcbiAqL1xuZnVuY3Rpb24qIHJvd3NJdGVyYXRvcihkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBzaGFyZWRSb3c6IFNoYXJlZFJvd09wdGlvbnMpIHtcbiAgY29uc3QgbnVtUm93cyA9IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgbnVtUm93czsgKytyb3dJbmRleCkge1xuICAgIHlpZWxkIGRhdGFDb250YWluZXIucm93KHJvd0luZGV4LCBzaGFyZWRSb3cpO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIGRhdGFDb250YWluZXJcbiAqIEBwYXJhbSBjb2x1bW5JbmRleFxuICovXG5mdW5jdGlvbiogY29sdW1uSXRlcmF0b3IoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgY29sdW1uSW5kZXg6IG51bWJlcikge1xuICBjb25zdCBudW1Sb3dzID0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7XG4gIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgeWllbGQgZGF0YUNvbnRhaW5lci52YWx1ZUF0KHJvd0luZGV4LCBjb2x1bW5JbmRleCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGRhdGEgY29udGFpbmVyIHdoZXJlIGFsbCBkYXRhIGlzIHN0b3JlZCBpbiByYXcgQXJyb3cgdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIEFycm93RGF0YUNvbnRhaW5lciBpbXBsZW1lbnRzIERhdGFDb250YWluZXJJbnRlcmZhY2Uge1xuICBfY29sczogYXJyb3cuVmVjdG9yW107XG4gIF9udW1Db2x1bW5zOiBudW1iZXI7XG4gIF9udW1Sb3dzOiBudW1iZXI7XG4gIF9maWVsZHM6IFByb3RvRGF0YXNldEZpZWxkW107XG4gIF9udW1DaHVua3M6IG51bWJlcjtcbiAgLy8gY2FjaGUgY29sdW1uIGRhdGEgdG8gbWFrZSB2YWx1ZUF0KCkgZmFzdGVyXG4gIC8vIF9jb2xEYXRhOiBhbnlbXVtdO1xuXG4gIC8qKiBBbiBhcnJvdyB0YWJsZSByZWNyZWF0ZWQgZnJvbSB2ZWN0b3JzICovXG4gIF9hcnJvd1RhYmxlOiBhcnJvdy5UYWJsZTtcblxuICBjb25zdHJ1Y3RvcihkYXRhOiBBcnJvd0RhdGFDb250YWluZXJJbnB1dCkge1xuICAgIGlmICghZGF0YS5jb2xzKSB7XG4gICAgICB0aHJvdyBFcnJvcignQXJyb3dEYXRhQ29udGFpbmVyOiBubyBjb2x1bW5zIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEuY29scykpIHtcbiAgICAgIHRocm93IEVycm9yKFwiQXJyb3dEYXRhQ29udGFpbmVyOiBjb2x1bW5zIG9iamVjdCBpc24ndCBhbiBhcnJheVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb2xzID0gZGF0YS5jb2xzO1xuICAgIHRoaXMuX251bUNvbHVtbnMgPSBkYXRhLmNvbHMubGVuZ3RoO1xuICAgIHRoaXMuX251bVJvd3MgPSBkYXRhLmNvbHNbMF0ubGVuZ3RoO1xuICAgIHRoaXMuX2ZpZWxkcyA9IGRhdGEuZmllbGRzIHx8IFtdO1xuICAgIHRoaXMuX251bUNodW5rcyA9IGRhdGEuY29sc1swXS5kYXRhLmxlbmd0aDtcbiAgICAvLyB0aGlzLl9jb2xEYXRhID0gZGF0YS5jb2xzLm1hcChjID0+IGMudG9BcnJheSgpKTtcblxuICAgIHRoaXMuX2Fycm93VGFibGUgPSBkYXRhLmFycm93VGFibGUgfHwgdGhpcy5fY3JlYXRlVGFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBpbnRlcm5hbCBBcnJvdyB0YWJsZSBmcm9tIHZlY3RvcnMuXG4gICAqIFRPRE86IGNvbnNpZGVyIHVzaW5nIG9yaWdpbmFsIGFycm93IHRhYmxlLCBhcyBpdCBjb3VsZCBjb250YWluIGV4dHJhIG1ldGFkYXRhLCBub3QgcGFzc2VkIHRvIHRoZSBmaWVsZHMuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVUYWJsZSgpIHtcbiAgICBjb25zdCBjcmVhT3B0cyA9IHt9O1xuICAgIHRoaXMuX2ZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgY3JlYU9wdHNbZmllbGQubmFtZV0gPSB0aGlzLl9jb2xzW2luZGV4XTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IGFycm93LlRhYmxlKGNyZWFPcHRzKTtcbiAgfVxuXG4gIGdldFRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJvd1RhYmxlO1xuICB9XG5cbiAgdXBkYXRlKHVwZGF0ZURhdGE6IGFycm93LlZlY3Rvcjxhbnk+W10gfCBhcnJvdy5UYWJsZSkge1xuICAgIGNvbnN0IGlzQXJyb3cgPSBpc0Fycm93VGFibGUodXBkYXRlRGF0YSk7XG4gICAgaWYgKGlzQXJyb3cpIHtcbiAgICAgIHRoaXMuX2NvbHMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7bGVuZ3RoOiB1cGRhdGVEYXRhLm51bUNvbHN9LFxuICAgICAgICAoXywgaSkgPT4gdXBkYXRlRGF0YS5nZXRDaGlsZEF0KGkpIGFzIGFycm93LlZlY3RvclxuICAgICAgKS5maWx0ZXIoY29sID0+IGNvbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbHMgPSB1cGRhdGVEYXRhO1xuICAgIH1cbiAgICB0aGlzLl9udW1Db2x1bW5zID0gdGhpcy5fY29scz8ubGVuZ3RoID8/IDA7XG4gICAgdGhpcy5fbnVtUm93cyA9IHRoaXMuX2NvbHM/LlswXT8ubGVuZ3RoID8/IDA7XG4gICAgdGhpcy5fbnVtQ2h1bmtzID0gdGhpcy5fY29scz8uWzBdPy5kYXRhPy5sZW5ndGggPz8gMDtcbiAgICB0aGlzLl9hcnJvd1RhYmxlID0gaXNBcnJvdyA/IHVwZGF0ZURhdGEgOiB0aGlzLl9jcmVhdGVUYWJsZSgpO1xuXG4gICAgLy8gY2FjaGUgY29sdW1uIGRhdGEgdG8gbWFrZSB2YWx1ZUF0KCkgZmFzdGVyXG4gICAgLy8gdGhpcy5fY29sRGF0YSA9IHRoaXMuX2NvbHMubWFwKGMgPT4gYy50b0FycmF5KCkpO1xuICB9XG5cbiAgbnVtQ2h1bmtzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bUNodW5rcztcbiAgfVxuXG4gIG51bVJvd3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtUm93cztcbiAgfVxuXG4gIG51bUNvbHVtbnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtQ29sdW1ucztcbiAgfVxuXG4gIHZhbHVlQXQocm93SW5kZXg6IG51bWJlciwgY29sdW1uSW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgLy8gcmV0dXJuIHRoaXMuX2NvbERhdGFbY29sdW1uSW5kZXhdW3Jvd0luZGV4XTtcbiAgICByZXR1cm4gdGhpcy5fY29sc1tjb2x1bW5JbmRleF0uZ2V0KHJvd0luZGV4KTtcbiAgfVxuXG4gIHJvdyhyb3dJbmRleDogbnVtYmVyLCBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogRGF0YVJvdyB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG4gICAgaWYgKHRTaGFyZWRSb3cpIHtcbiAgICAgIHRTaGFyZWRSb3cuc2V0U291cmNlKHRoaXMsIHJvd0luZGV4KTtcbiAgICAgIHJldHVybiB0U2hhcmVkUm93O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0YVJvdyh0aGlzLCByb3dJbmRleCk7XG4gIH1cblxuICByb3dBc0FycmF5KHJvd0luZGV4OiBudW1iZXIpOiBhbnlbXSB7XG4gICAgLy8gcmV0dXJuIHRoaXMuX2NvbERhdGEubWFwKGNvbCA9PiBjb2xbcm93SW5kZXhdKTtcbiAgICByZXR1cm4gdGhpcy5fY29scy5tYXAoY29sID0+IGNvbC5nZXQocm93SW5kZXgpKTtcbiAgfVxuXG4gIHJvd3Moc2hhcmVkUm93OiBTaGFyZWRSb3dPcHRpb25zKSB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG4gICAgcmV0dXJuIHJvd3NJdGVyYXRvcih0aGlzLCB0U2hhcmVkUm93KTtcbiAgfVxuXG4gIGNvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNvbHVtbkl0ZXJhdG9yKHRoaXMsIGNvbHVtbkluZGV4KTtcbiAgfVxuXG4gIGdldENvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyKTogYXJyb3cuVmVjdG9yIHtcbiAgICByZXR1cm4gdGhpcy5fY29sc1tjb2x1bW5JbmRleF07XG4gIH1cblxuICBnZXRGaWVsZChjb2x1bW5JbmRleDogbnVtYmVyKTogUHJvdG9EYXRhc2V0RmllbGQge1xuICAgIHJldHVybiB0aGlzLl9maWVsZHNbY29sdW1uSW5kZXhdO1xuICB9XG5cbiAgZmxhdHRlbkRhdGEoKTogYW55W11bXSB7XG4gICAgY29uc3QgZGF0YTogYW55W11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbnVtUm93czsgKytpKSB7XG4gICAgICBkYXRhLnB1c2godGhpcy5yb3dBc0FycmF5KGkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRQbGFpbkluZGV4KCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gWy4uLkFycmF5KHRoaXMuX251bVJvd3MpLmtleXMoKV07XG4gIH1cblxuICBtYXA8VD4oXG4gICAgZnVuYzogKHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gVCxcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zLFxuICAgIG9wdGlvbnM6IFJhbmdlT3B0aW9ucyA9IHt9XG4gICk6IFRbXSB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG5cbiAgICBjb25zdCB7c3RhcnQgPSAwLCBlbmQgPSB0aGlzLm51bVJvd3MoKX0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGVuZFJvdyA9IE1hdGgubWluKHRoaXMubnVtUm93cygpLCBlbmQpO1xuXG4gICAgY29uc3Qgb3V0OiBUW10gPSBbXTtcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IHN0YXJ0OyByb3dJbmRleCA8IGVuZFJvdzsgKytyb3dJbmRleCkge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3cocm93SW5kZXgsIHRTaGFyZWRSb3cpO1xuICAgICAgb3V0LnB1c2goZnVuYyhyb3csIHJvd0luZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBtYXBJbmRleDxUPihmdW5jOiAoe2luZGV4fSwgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IFQsIG9wdGlvbnM6IFJhbmdlT3B0aW9ucyA9IHt9KTogVFtdIHtcbiAgICBjb25zdCB7c3RhcnQgPSAwLCBlbmQgPSB0aGlzLm51bVJvd3MoKX0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGVuZFJvdyA9IE1hdGgubWluKHRoaXMubnVtUm93cygpLCBlbmQpO1xuXG4gICAgY29uc3Qgb3V0OiBUW10gPSBbXTtcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IHN0YXJ0OyByb3dJbmRleCA8IGVuZFJvdzsgKytyb3dJbmRleCkge1xuICAgICAgb3V0LnB1c2goZnVuYyh7aW5kZXg6IHJvd0luZGV4fSwgdGhpcykpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgZmluZChcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuLFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnNcbiAgKTogRGF0YVJvdyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG5cbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgdGhpcy5fbnVtUm93czsgKytyb3dJbmRleCkge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3cocm93SW5kZXgsIHRTaGFyZWRSb3cpO1xuICAgICAgaWYgKGZ1bmMocm93LCByb3dJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlZHVjZTxUPihcbiAgICBmdW5jOiAoYWNjOiBULCByb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IFQsXG4gICAgaW5pdGlhbFZhbHVlOiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnNcbiAgKTogVCB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG5cbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgdGhpcy5fbnVtUm93czsgKytyb3dJbmRleCkge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3cocm93SW5kZXgsIHRTaGFyZWRSb3cpO1xuICAgICAgaW5pdGlhbFZhbHVlID0gZnVuYyhpbml0aWFsVmFsdWUsIHJvdywgcm93SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdGlhbFZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydCBhcnJvdyBkYXRhIHR5cGUgdG8ga2VwbGVyLmdsIGZpZWxkIHR5cGVzXG4gKlxuICogQHBhcmFtIGFycm93VHlwZSB0aGUgYXJyb3cgZGF0YSB0eXBlXG4gKiBAcmV0dXJucyBjb3JyZXNwb25kaW5nIHR5cGUgaW4gYEFMTF9GSUVMRF9UWVBFU2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZShhcnJvd1R5cGU6IGFycm93LkRhdGFUeXBlKTogc3RyaW5nIHtcbiAgLy8gTm90ZTogdGhpcyBmdW5jdGlvbiBkb2Vzbid0IHJldHVybiBBTExfRklFTERfVFlQRVMuZ2VvanNvbiBvciBBTExfRklFTERfVFlQRVMuYXJyYXksIHdoaWNoXG4gIC8vIHNob3VsZCBiZSBmdXJ0aGVyIGRldGVjdGVkIGJ5IGNhbGxlclxuICBpZiAoYXJyb3cuRGF0YVR5cGUuaXNEYXRlKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmRhdGU7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNUaW1lc3RhbXAoYXJyb3dUeXBlKSB8fCBhcnJvdy5EYXRhVHlwZS5pc1RpbWUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wO1xuICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzRmxvYXQoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMucmVhbDtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0ludChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyO1xuICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzQm9vbChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5ib29sZWFuO1xuICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzVXRmOChhcnJvd1R5cGUpIHx8IGFycm93LkRhdGFUeXBlLmlzTnVsbChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc7XG4gIH0gZWxzZSBpZiAoXG4gICAgYXJyb3cuRGF0YVR5cGUuaXNCaW5hcnkoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzRGljdGlvbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVCaW5hcnkoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzRml4ZWRTaXplTGlzdChhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNMaXN0KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc01hcChhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNTdHJ1Y3QoYXJyb3dUeXBlKVxuICApIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLm9iamVjdDtcbiAgfVxuICBnbG9iYWxDb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIGFycm93IHR5cGU6ICR7YXJyb3dUeXBlfWApO1xuICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFycm93IGRhdGEgdHlwZSB0byBhbmFseXplciB0eXBlXG4gKlxuICogQHBhcmFtIGFycm93VHlwZSB0aGUgYXJyb3cgZGF0YSB0eXBlXG4gKiBAcmV0dXJucyBjb3JyZXNwb25kaW5nIHR5cGUgaW4gYEFuYWx5emVyREFUQV9UWVBFU2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycm93RGF0YVR5cGVUb0FuYWx5emVyRGF0YVR5cGUoXG4gIGFycm93VHlwZTogYXJyb3cuRGF0YVR5cGVcbik6IHR5cGVvZiBBbmFseXplckRBVEFfVFlQRVMge1xuICBpZiAoYXJyb3cuRGF0YVR5cGUuaXNEYXRlKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLkRBVEU7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNUaW1lc3RhbXAoYXJyb3dUeXBlKSB8fCBhcnJvdy5EYXRhVHlwZS5pc1RpbWUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuREFURVRJTUU7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNGbG9hdChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5GTE9BVDtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0ludChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5JTlQ7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNCb29sKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLkJPT0xFQU47XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGFycm93VHlwZSkgfHwgYXJyb3cuRGF0YVR5cGUuaXNOdWxsKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLlNUUklORztcbiAgfSBlbHNlIGlmIChcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNEaWN0aW9uYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUJpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0xpc3QoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzTWFwKGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc1N0cnVjdChhcnJvd1R5cGUpXG4gICkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuT0JKRUNUO1xuICB9XG4gIGdsb2JhbENvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgYXJyb3cgdHlwZTogJHthcnJvd1R5cGV9YCk7XG4gIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuU1RSSU5HO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxLQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFHQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFBcUQsU0FBQU0seUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFMLHdCQUFBSyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFB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
@@ -1,5 +1,6 @@
1
1
  import { ProtoDatasetField } from '@kepler.gl/types';
2
2
  import { DataRow, SharedRowOptions } from './data-row';
3
+ import * as arrow from 'apache-arrow';
3
4
  /**
4
5
  * Specifies a range of rows of a data container that should be processed.
5
6
  */
@@ -10,9 +11,9 @@ export declare type RangeOptions = {
10
11
  export interface DataContainerInterface {
11
12
  /**
12
13
  * Updates the data container with new data.
13
- * @param updateData updated data, e.g. for arrow data container, it's an array of arrow columns; for row data container, it's an array of rows.
14
+ * @param updateData updated data, e.g. for arrow data container, it's an array of arrow columns or an arrow.Table; for row data container, it's an array of rows.
14
15
  */
15
- update?(updateData: any[]): void;
16
+ update?(updateData: any[] | arrow.Table): void;
16
17
  /**
17
18
  * Returns the number of rows in the data container.
18
19
  * @returns Number of rows in the data container.
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtY29udGFpbmVyLWludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGEgcmFuZ2Ugb2Ygcm93cyBvZiBhIGRhdGEgY29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHByb2Nlc3NlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUmFuZ2VPcHRpb25zID0ge1xuICBzdGFydD86IG51bWJlcjtcbiAgZW5kPzogbnVtYmVyO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUNvbnRhaW5lckludGVyZmFjZSB7XG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkYXRhIGNvbnRhaW5lciB3aXRoIG5ldyBkYXRhLlxuICAgKiBAcGFyYW0gdXBkYXRlRGF0YSB1cGRhdGVkIGRhdGEsIGUuZy4gZm9yIGFycm93IGRhdGEgY29udGFpbmVyLCBpdCdzIGFuIGFycmF5IG9mIGFycm93IGNvbHVtbnM7IGZvciByb3cgZGF0YSBjb250YWluZXIsIGl0J3MgYW4gYXJyYXkgb2Ygcm93cy5cbiAgICovXG4gIHVwZGF0ZT8odXBkYXRlRGF0YTogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiByb3dzIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bVJvd3MoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bUNvbHVtbnMoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHNwZWNpZmllZCBjZWxsIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVmFsdWUgYXQgdGhlIHNwZWNpZmllZCBjZWxsLlxuICAgKi9cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByb3cgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIHNoYXJlZFJvdyBQYXNzZWQgcm93IGlzIGZpbGxlZCB3aXRoIGNvbnRlbnRzIGZyb20gdGhlIHNwZWNpZmllZCBpbmRleCBhbmQgcmV0dXJuZWQgd2l0aG91dCBleHRyYSByb3cgYWxsb2NhdGlvbnMuXG4gICAqIEByZXR1cm5zIEEgcm93IG9iamVjdC5cbiAgICovXG4gIHJvdyhyb3dJbmRleDogbnVtYmVyLCBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogRGF0YVJvdztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkuXG4gICAqIEBwYXJhbSByb3dJbmRleCBSb3cgaW5kZXguXG4gICAqIEByZXR1cm5zIFRoZSBzcGVjaWZpZWQgcm93IHJlcHJlc2VudGVkIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgSW5kaWNhdGVzIHRoYXQgYSB0ZW1wb3Jhcnkgcm93IG9iamVjdCBzaG91bGQgYmUgdXNlZC5cbiAgICogSWYgZW5hYmxlZCwgdGhlIHJldHVybmVkIHJvdyBvYmplY3QgaXMgc2hhcmVkIGJldHdlZW4gY2FsbHNcbiAgICogYW5kIG11c3RuJ3QgYmUgc3RvcmVkIHdpdGhvdXQgY2xvbmluZy5cbiAgICogUGFzc2VkIHJvdyBpcyBmaWxsZWQgd2l0aCBjb250ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHJvdyBhbmQgcmV0dXJuZWQgb24gZWFjaCBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIEFuIGl0ZXJhdG9yIHRvIHNlcXVlbnRpYWxseSBhY2Nlc3MgYWxsIHJvd3MgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKi9cbiAgcm93cyhzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogR2VuZXJhdG9yPERhdGFSb3csIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgdmFsdWVzIGluIHRoZSBzcGVjaWZpZWQgY29sdW1uIG9mIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgQW4gaXRlcmF0b3IgdG8gYWxsIHZhbHVlcyBpbiB0aGUgc3BlY2lmaWVkIGNvbHVtbiBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqL1xuICBjb2x1bW4oY29sdW1uSW5kZXg6IG51bWJlcik6IEdlbmVyYXRvcjxhbnksIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICovXG4gIGdldENvbHVtbj8oY29sdW1uSW5kZXg6IG51bWJlcik6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpZWxkIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggQ29sdW1uIGluZGV4LlxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqL1xuICBnZXRGaWVsZD8oY29sdW1uSW5kZXg6IG51bWJlcik6IFByb3RvRGF0YXNldEZpZWxkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKi9cbiAgZ2V0VGFibGU/KCk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY29udGVudHMgb2YgdGhlIGRhdGEgY29udGFpbmVyIGFzIGEgdHdvLWRpbWVuc2lvbmFsIGFycmF5LlxuICAgKiBAcmV0dXJucyBEYXRhLlxuICAgKi9cbiAgZmxhdHRlbkRhdGEoKTogYW55W11bXTtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGFycmF5IG9mIGluZGljZXMgd2hlcmUgZWFjaCBpbmRleCByZXByZXNlbnRzIGEgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcy5cbiAgICovXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYXJyYXkgcG9wdWxhdGVkIHdpdGggdGhlIHJlc3VsdHMgb2YgY2FsbGluZyB0aGUgcHJvdmlkZWQgY2FsbGJhY2tcbiAgICogb24gZXZlcnkgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgU3BlY2lmeSBzdGFydCBhbmQgZW5kIHJvdyBpbmRpY2VzIHRoYXQgc2hvdWxkIGJlIG1hcHBlZC5cbiAgICogQHJldHVybnMgQSBuZXcgYXJyYXkgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgdGhlIHJlc3VsdCBvZiB0aGUgZnVuYyBjYWxsYmFjay5cbiAgICovXG4gIG1hcChcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucyxcbiAgICBvcHRpb25zPzogUmFuZ2VPcHRpb25zXG4gICk6IGFueVtdO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IHBvcHVsYXRlZCB3aXRoIHRoZSByZXN1bHRzIG9mIGNhbGxpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrLlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIGZvciBldmVyeSByb3cgaW4gdGhlIGRhdGFzZXQsIGJ1dCBvbmx5IHtpbmRleH0gb2JqZWN0IGlzIHBhc3NlZC5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIFNwZWNpZnkgc3RhcnQgYW5kIGVuZCByb3cgaW5kaWNlcyB0aGF0IHNob3VsZCBiZSBtYXBwZWQuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFycmF5IHdpdGggZWFjaCBlbGVtZW50IGJlaW5nIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmMgY2FsbGJhY2suXG4gICAqL1xuICBtYXBJbmRleChcbiAgICBmdW5jOiAoe2luZGV4fToge2luZGV4OiBudW1iZXJ9LCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnksXG4gICAgb3B0aW9ucz86IFJhbmdlT3B0aW9uc1xuICApOiBhbnlbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcHJvdmlkZWQgZGF0YSBjb250YWluZXIgdGhhdCBzYXRpc2ZpZXMgdGhlIHByb3ZpZGVkIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBmdW5jIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZWFjaCB2YWx1ZSBpbiB0aGUgYXJyYXkuXG4gICAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgRmlyc3QgbWF0Y2hpbmcgcm93IG9yIHVuZGVmaW5lZCBpZiBubyByb3dzIHNhdGlzZnkgdGhlIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqL1xuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGFueSxcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zXG4gICk6IERhdGFSb3cgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgcmVkdWNlciBmdW5jdGlvbiBvbiBlYWNoIGVsZW1lbnQgb2YgdGhlIGRhdGEgY29udGFpbmVyLCByZXN1bHRpbmcgaW4gc2luZ2xlIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIGZ1bmMgQSBmdW5jdGlvbiB0byBleGVjdXRlIG9uIGVhY2ggcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOlxuICAgKiAtIGFjYzogVGhlIGFjY3VtdWxhdG9yIGFjY3VtdWxhdGVzIGZ1bmMncyByZXR1cm4gdmFsdWVzLlxuICAgKiAtIHJvdzogVGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIC0gaW5kZXg6IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCByb3cgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGluaXRpYWxWYWx1ZSBBIHZhbHVlIHRvIHVzZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmMuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZSB2YWx1ZSB0aGF0IHJlc3VsdHMgZnJvbSB0aGUgcmVkdWN0aW9uLlxuICAgKi9cbiAgcmVkdWNlKFxuICAgIGZ1bmM6IChhY2M6IGFueSwgcm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgaW5pdGlhbFZhbHVlOiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBhbnk7XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtY29udGFpbmVyLWludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBhIHJhbmdlIG9mIHJvd3Mgb2YgYSBkYXRhIGNvbnRhaW5lciB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFJhbmdlT3B0aW9ucyA9IHtcbiAgc3RhcnQ/OiBudW1iZXI7XG4gIGVuZD86IG51bWJlcjtcbn07XG5leHBvcnQgaW50ZXJmYWNlIERhdGFDb250YWluZXJJbnRlcmZhY2Uge1xuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZGF0YSBjb250YWluZXIgd2l0aCBuZXcgZGF0YS5cbiAgICogQHBhcmFtIHVwZGF0ZURhdGEgdXBkYXRlZCBkYXRhLCBlLmcuIGZvciBhcnJvdyBkYXRhIGNvbnRhaW5lciwgaXQncyBhbiBhcnJheSBvZiBhcnJvdyBjb2x1bW5zIG9yIGFuIGFycm93LlRhYmxlOyBmb3Igcm93IGRhdGEgY29udGFpbmVyLCBpdCdzIGFuIGFycmF5IG9mIHJvd3MuXG4gICAqL1xuICB1cGRhdGU/KHVwZGF0ZURhdGE6IGFueVtdIHwgYXJyb3cuVGFibGUpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiByb3dzIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bVJvd3MoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bUNvbHVtbnMoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHNwZWNpZmllZCBjZWxsIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVmFsdWUgYXQgdGhlIHNwZWNpZmllZCBjZWxsLlxuICAgKi9cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByb3cgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIHNoYXJlZFJvdyBQYXNzZWQgcm93IGlzIGZpbGxlZCB3aXRoIGNvbnRlbnRzIGZyb20gdGhlIHNwZWNpZmllZCBpbmRleCBhbmQgcmV0dXJuZWQgd2l0aG91dCBleHRyYSByb3cgYWxsb2NhdGlvbnMuXG4gICAqIEByZXR1cm5zIEEgcm93IG9iamVjdC5cbiAgICovXG4gIHJvdyhyb3dJbmRleDogbnVtYmVyLCBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogRGF0YVJvdztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkuXG4gICAqIEBwYXJhbSByb3dJbmRleCBSb3cgaW5kZXguXG4gICAqIEByZXR1cm5zIFRoZSBzcGVjaWZpZWQgcm93IHJlcHJlc2VudGVkIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgSW5kaWNhdGVzIHRoYXQgYSB0ZW1wb3Jhcnkgcm93IG9iamVjdCBzaG91bGQgYmUgdXNlZC5cbiAgICogSWYgZW5hYmxlZCwgdGhlIHJldHVybmVkIHJvdyBvYmplY3QgaXMgc2hhcmVkIGJldHdlZW4gY2FsbHNcbiAgICogYW5kIG11c3RuJ3QgYmUgc3RvcmVkIHdpdGhvdXQgY2xvbmluZy5cbiAgICogUGFzc2VkIHJvdyBpcyBmaWxsZWQgd2l0aCBjb250ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHJvdyBhbmQgcmV0dXJuZWQgb24gZWFjaCBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIEFuIGl0ZXJhdG9yIHRvIHNlcXVlbnRpYWxseSBhY2Nlc3MgYWxsIHJvd3MgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKi9cbiAgcm93cyhzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogR2VuZXJhdG9yPERhdGFSb3csIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgdmFsdWVzIGluIHRoZSBzcGVjaWZpZWQgY29sdW1uIG9mIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgQW4gaXRlcmF0b3IgdG8gYWxsIHZhbHVlcyBpbiB0aGUgc3BlY2lmaWVkIGNvbHVtbiBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqL1xuICBjb2x1bW4oY29sdW1uSW5kZXg6IG51bWJlcik6IEdlbmVyYXRvcjxhbnksIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICovXG4gIGdldENvbHVtbj8oY29sdW1uSW5kZXg6IG51bWJlcik6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpZWxkIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggQ29sdW1uIGluZGV4LlxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqL1xuICBnZXRGaWVsZD8oY29sdW1uSW5kZXg6IG51bWJlcik6IFByb3RvRGF0YXNldEZpZWxkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKi9cbiAgZ2V0VGFibGU/KCk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY29udGVudHMgb2YgdGhlIGRhdGEgY29udGFpbmVyIGFzIGEgdHdvLWRpbWVuc2lvbmFsIGFycmF5LlxuICAgKiBAcmV0dXJucyBEYXRhLlxuICAgKi9cbiAgZmxhdHRlbkRhdGEoKTogYW55W11bXTtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGFycmF5IG9mIGluZGljZXMgd2hlcmUgZWFjaCBpbmRleCByZXByZXNlbnRzIGEgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcy5cbiAgICovXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYXJyYXkgcG9wdWxhdGVkIHdpdGggdGhlIHJlc3VsdHMgb2YgY2FsbGluZyB0aGUgcHJvdmlkZWQgY2FsbGJhY2tcbiAgICogb24gZXZlcnkgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgU3BlY2lmeSBzdGFydCBhbmQgZW5kIHJvdyBpbmRpY2VzIHRoYXQgc2hvdWxkIGJlIG1hcHBlZC5cbiAgICogQHJldHVybnMgQSBuZXcgYXJyYXkgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgdGhlIHJlc3VsdCBvZiB0aGUgZnVuYyBjYWxsYmFjay5cbiAgICovXG4gIG1hcChcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucyxcbiAgICBvcHRpb25zPzogUmFuZ2VPcHRpb25zXG4gICk6IGFueVtdO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IHBvcHVsYXRlZCB3aXRoIHRoZSByZXN1bHRzIG9mIGNhbGxpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrLlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIGZvciBldmVyeSByb3cgaW4gdGhlIGRhdGFzZXQsIGJ1dCBvbmx5IHtpbmRleH0gb2JqZWN0IGlzIHBhc3NlZC5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIFNwZWNpZnkgc3RhcnQgYW5kIGVuZCByb3cgaW5kaWNlcyB0aGF0IHNob3VsZCBiZSBtYXBwZWQuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFycmF5IHdpdGggZWFjaCBlbGVtZW50IGJlaW5nIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmMgY2FsbGJhY2suXG4gICAqL1xuICBtYXBJbmRleChcbiAgICBmdW5jOiAoe2luZGV4fToge2luZGV4OiBudW1iZXJ9LCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnksXG4gICAgb3B0aW9ucz86IFJhbmdlT3B0aW9uc1xuICApOiBhbnlbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcHJvdmlkZWQgZGF0YSBjb250YWluZXIgdGhhdCBzYXRpc2ZpZXMgdGhlIHByb3ZpZGVkIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBmdW5jIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZWFjaCB2YWx1ZSBpbiB0aGUgYXJyYXkuXG4gICAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgRmlyc3QgbWF0Y2hpbmcgcm93IG9yIHVuZGVmaW5lZCBpZiBubyByb3dzIHNhdGlzZnkgdGhlIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqL1xuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGFueSxcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zXG4gICk6IERhdGFSb3cgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgcmVkdWNlciBmdW5jdGlvbiBvbiBlYWNoIGVsZW1lbnQgb2YgdGhlIGRhdGEgY29udGFpbmVyLCByZXN1bHRpbmcgaW4gc2luZ2xlIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIGZ1bmMgQSBmdW5jdGlvbiB0byBleGVjdXRlIG9uIGVhY2ggcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOlxuICAgKiAtIGFjYzogVGhlIGFjY3VtdWxhdG9yIGFjY3VtdWxhdGVzIGZ1bmMncyByZXR1cm4gdmFsdWVzLlxuICAgKiAtIHJvdzogVGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIC0gaW5kZXg6IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCByb3cgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGluaXRpYWxWYWx1ZSBBIHZhbHVlIHRvIHVzZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmMuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZSB2YWx1ZSB0aGF0IHJlc3VsdHMgZnJvbSB0aGUgcmVkdWN0aW9uLlxuICAgKi9cbiAgcmVkdWNlKFxuICAgIGZ1bmM6IChhY2M6IGFueSwgcm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgaW5pdGlhbFZhbHVlOiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBhbnk7XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -38,7 +37,6 @@ exports.validateLongitude = validateLongitude;
38
37
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
39
38
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
40
39
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
41
- var arrow = _interopRequireWildcard(require("apache-arrow"));
42
40
  var _assert = _interopRequireDefault(require("assert"));
43
41
  var _d3Format = require("d3-format");
44
42
  var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
@@ -47,10 +45,9 @@ var _constants = require("@kepler.gl/constants");
47
45
  var _commonUtils = require("@kepler.gl/common-utils");
48
46
  var _plot = require("./plot");
49
47
  var _utils = require("./utils");
48
+ var _arrowDataContainer = require("./arrow-data-container");
50
49
  var _FIELD_DISPLAY_FORMAT; // SPDX-License-Identifier: MIT
51
50
  // Copyright contributors to the kepler.gl project
52
- 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); }
53
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
54
51
  // We need threat latitude differently otherwise mercator project view throws
55
52
  // a projection matrix error
56
53
  // Uncaught Error: Pixel project matrix not invertible
@@ -309,7 +306,7 @@ function uint8ArrayToHex(data) {
309
306
  var FIELD_DISPLAY_FORMAT = exports.FIELD_DISPLAY_FORMAT = (_FIELD_DISPLAY_FORMAT = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.string, defaultFormatter), _constants.ALL_FIELD_TYPES.timestamp, defaultFormatter), _constants.ALL_FIELD_TYPES.integer, defaultFormatter), _constants.ALL_FIELD_TYPES.real, defaultFormatter), _constants.ALL_FIELD_TYPES["boolean"], defaultFormatter), _constants.ALL_FIELD_TYPES.date, defaultFormatter), _constants.ALL_FIELD_TYPES.geojson, function (d) {
310
307
  return typeof d === 'string' ? d : (0, _utils.isPlainObject)(d) ? JSON.stringify(d) : Array.isArray(d) ? "[".concat(String(d), "]") : '';
311
308
  }), _constants.ALL_FIELD_TYPES.geoarrow, function (data, field) {
312
- if (data instanceof arrow.Vector) {
309
+ if ((0, _arrowDataContainer.isArrowVector)(data)) {
313
310
  try {
314
311
  var _field$metadata;
315
312
  var encoding = field === null || field === void 0 || (_field$metadata = field.metadata) === null || _field$metadata === void 0 ? void 0 : _field$metadata.get('ARROW:extension:name');
@@ -532,4 +529,4 @@ function datetimeFormatter(timezone) {
532
529
  };
533
530
  };
534
531
  }
535
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9hc3NlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2QzRm9ybWF0IiwiX21vbWVudFRpbWV6b25lIiwiX2Fycm93IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9wbG90IiwiX3V0aWxzIiwiX0ZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIk1BWF9MQVRJVFVERSIsImV4cG9ydHMiLCJNSU5fTEFUSVRVREUiLCJNQVhfTE9OR0lUVURFIiwiTUlOX0xPTkdJVFVERSIsInZhbGlkYXRlTGF0aXR1ZGUiLCJsYXRpdHVkZSIsInZhbGlkYXRlQ29vcmRpbmF0ZSIsInZhbGlkYXRlTG9uZ2l0dWRlIiwibG9uZ2l0dWRlIiwidmFsdWUiLCJtaW5WYWx1ZSIsIm1heFZhbHVlIiwidW5pcXVlIiwidmFsdWVzIiwicmVzdWx0cyIsInVuaXF1ZVNldCIsIlNldCIsImZvckVhY2giLCJ2Iiwibm90TnVsbG9yVW5kZWZpbmVkIiwicHVzaCIsImdldExhdExuZ0JvdW5kcyIsInBvaW50cyIsImlkeCIsImxpbWl0IiwibGF0cyIsIm1hcCIsImQiLCJOdW1iZXIiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpc0Zpbml0ZSIsInNvcnQiLCJudW1iZXJTb3J0IiwibGVuZ3RoIiwiTWF0aCIsIm1heCIsIm1pbiIsImNsYW1wIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwidmFsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0U2FtcGxlRGF0YSIsImRhdGEiLCJzYW1wbGVTaXplIiwiZ2V0VmFsdWUiLCJzYW1wbGVTdGVwIiwiZmxvb3IiLCJvdXRwdXQiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwiRGF0ZSIsImlzTnVtYmVyIiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImIiLCJnZXRTb3J0aW5nRnVuY3Rpb24iLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiaW50ZWdlciIsInRpbWVzdGFtcCIsInByZWNpc2VSb3VuZCIsIm51bSIsImRlY2ltYWxzIiwicG93Iiwicm91bmQiLCJzaWduIiwidG9GaXhlZCIsInJvdW5kVG9Gb3VyIiwiY29uY2F0IiwiZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAiLCJzdGVwIiwiaXNOYU4iLCJhc3NlcnQiLCJzdGVwU3RyIiwidG9TdHJpbmciLCJzcGxpdEV4cG9uZW50aWFsIiwic3BsaXQiLCJjb2VmZlplcm8iLCJjb2VmZkRlY2ltYWwiLCJwYXJzZUludCIsInNwbGl0WmVybyIsIm5vcm1hbGl6ZVNsaWRlclZhbHVlIiwibWFya3MiLCJzbmFwVG9NYXJrcyIsInJvdW5kVmFsVG9TdGVwIiwiZGVjaW1hbCIsInN0ZXBzIiwicmVtYWluIiwiY2xvc2VzdCIsInJvdW5kZWQiLCJkZWZhdWx0Rm9ybWF0dGVyIiwiU3RyaW5nIiwiZmxvYXRGb3JtYXR0ZXIiLCJ1aW50OEFycmF5VG9IZXgiLCJmcm9tIiwiYnl0ZSIsInBhZFN0YXJ0Iiwiam9pbiIsIkZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2RlZmluZVByb3BlcnR5MiIsInN0cmluZyIsImRhdGUiLCJnZW9qc29uIiwiaXNQbGFpbk9iamVjdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZW9hcnJvdyIsImZpZWxkIiwiVmVjdG9yIiwiX2ZpZWxkJG1ldGFkYXRhIiwiZW5jb2RpbmciLCJtZXRhZGF0YSIsImdlb21ldHJ5IiwicGFyc2VHZW9tZXRyeUZyb21BcnJvdyIsImVycm9yIiwiVWludDhBcnJheSIsIm9iamVjdCIsImFycmF5IiwiaDMiLCJwYXJzZUZpZWxkVmFsdWUiLCJ0eXBlIiwiZ2V0Rm9ybWF0dGVyIiwidG9vbHRpcEZvcm1hdCIsIlRPT0xUSVBfRk9STUFUUyIsImZpbmQiLCJmIiwiVE9PTFRJUF9LRVkiLCJhcHBseURlZmF1bHRGb3JtYXQiLCJhcHBseUN1c3RvbUZvcm1hdCIsImdldENvbHVtbkZvcm1hdHRlciIsImRpc3BsYXlGb3JtYXQiLCJfdHlwZW9mMiIsImFwcGx5VmFsdWVNYXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJkM0Zvcm1hdCIsIkRBVEUiLCJEQVRFX1RJTUUiLCJkYXRldGltZUZvcm1hdHRlciIsIlBFUkNFTlRBR0UiLCJERUNJTUFMX0RFQ0lNQUxfRklYRURfMiIsIkJPT0xFQU4iLCJnZXRCb29sZWFuRm9ybWF0dGVyIiwiZm9ybWF0TGFyZ2VOdW1iZXIiLCJmb3JtYXROdW1iZXIiLCJ0cmFuc2Zvcm1hdGlvbiIsIlkiLCJaIiwiRSIsIlAiLCJUIiwiRyIsIk0iLCJrIiwiaCIsImRhIiwiYyIsIm0iLCLOvCIsInAiLCJ6IiwieSIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJzdHIiLCJyZXR1cm5WYWx1ZSIsInN0ck51bSIsInRyaW0iLCJyZXBsYWNlIiwiZW50cmllcyIsImluY2x1ZGVzIiwicGFyc2VGbG9hdCIsInRpbWV6b25lIiwidHMiLCJ0eiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge2Zvcm1hdCBhcyBkM0Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuaW1wb3J0IHtwYXJzZUdlb21ldHJ5RnJvbUFycm93fSBmcm9tICdAbG9hZGVycy5nbC9hcnJvdyc7XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVE9PTFRJUF9GT1JNQVRTLFxuICBUT09MVElQX0ZPUk1BVF9UWVBFUyxcbiAgVE9PTFRJUF9LRVksXG4gIFRvb2x0aXBGb3JtYXRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RmllbGQsIE1pbGxpc2Vjb25kLCBQcm90b0RhdGFzZXRGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7c25hcFRvTWFya3N9IGZyb20gJy4vcGxvdCc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdHRlciA9ICh2YWx1ZTogYW55LCBmaWVsZD86IFByb3RvRGF0YXNldEZpZWxkKSA9PiBzdHJpbmc7XG5cbi8vIFdlIG5lZWQgdGhyZWF0IGxhdGl0dWRlIGRpZmZlcmVudGx5IG90aGVyd2lzZSBtZXJjYXRvciBwcm9qZWN0IHZpZXcgdGhyb3dzXG4vLyBhIHByb2plY3Rpb24gbWF0cml4IGVycm9yXG4vLyBVbmNhdWdodCBFcnJvcjogUGl4ZWwgcHJvamVjdCBtYXRyaXggbm90IGludmVydGlibGVcbi8vIGF0IFdlYk1lcmNhdG9yVmlld3BvcnQxNi5WaWV3cG9ydDYgKHZpZXdwb3J0LmpzOjgxOjEzKVxuZXhwb3J0IGNvbnN0IE1BWF9MQVRJVFVERSA9IDg5Ljk7XG5leHBvcnQgY29uc3QgTUlOX0xBVElUVURFID0gLTg5Ljk7XG5leHBvcnQgY29uc3QgTUFYX0xPTkdJVFVERSA9IDE4MDtcbmV4cG9ydCBjb25zdCBNSU5fTE9OR0lUVURFID0gLTE4MDtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsYXRpdHVkZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgbGF0aXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbGF0aXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxhdGl0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXRpdHVkZShsYXRpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsYXRpdHVkZSA/PyAwLCBNSU5fTEFUSVRVREUsIE1BWF9MQVRJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbG9uZ2l0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsb25naXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbG9uZ2l0dWRlIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIGxvbmdpdHVkZSAtIFRoZSBsb25naXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxvbmdpdHVkZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9uZ2l0dWRlKGxvbmdpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsb25naXR1ZGUgPz8gMCwgTUlOX0xPTkdJVFVERSwgTUFYX0xPTkdJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWluaW11bSBhbmQgbWF4aW11bSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjb29yZGluYXRlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIG1pblZhbHVlIC0gVGhlIG1pbmltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBtYXhWYWx1ZSAtIFRoZSBtYXhpbXVtIGJvdW5kIGZvciB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGNvb3JkaW5hdGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvb3JkaW5hdGUodmFsdWU6IG51bWJlciwgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA8PSBtaW5WYWx1ZSkge1xuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gbWF4VmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogc2ltcGxlIGdldHRpbmcgdW5pcXVlIHZhbHVlcyBvZiBhbiBhcnJheVxuICogTm90ZTogZmlsdGVycyBvdXQgbnVsbCBhbmQgdW5kZWZpbmVkIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEByZXR1cm5zIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZTxUPih2YWx1ZXM6IFRbXSkge1xuICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcbiAgY29uc3QgdW5pcXVlU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICB1bmlxdWVTZXQuZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHYpKSB7XG4gICAgICByZXN1bHRzLnB1c2godik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRMbmdCb3VuZHMoXG4gIHBvaW50czogbnVtYmVyW11bXSxcbiAgaWR4OiBudW1iZXIsXG4gIGxpbWl0OiBbbnVtYmVyLCBudW1iZXJdXG4pOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gIGNvbnN0IGxhdHMgPSBwb2ludHNcbiAgICAubWFwKGQgPT4gTnVtYmVyKEFycmF5LmlzQXJyYXkoZCkpICYmIGRbaWR4XSlcbiAgICAuZmlsdGVyKE51bWJlci5pc0Zpbml0ZSlcbiAgICAuc29ydChudW1iZXJTb3J0KTtcblxuICBpZiAoIWxhdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjbGFtcCB0byBsaW1pdFxuICByZXR1cm4gW01hdGgubWF4KGxhdHNbMF0sIGxpbWl0WzBdKSwgTWF0aC5taW4obGF0c1tsYXRzLmxlbmd0aCAtIDFdLCBsaW1pdFsxXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAoW21pbiwgbWF4XTogW251bWJlciwgbnVtYmVyXSwgdmFsID0gMCk6IG51bWJlciB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmb3JtYXQgPT09ICd4JyA/IHZhbHVlICogMTAwMCA6IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihkOiB1bmtub3duKTogZCBpcyBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgb2JqZWN0IGhhcyBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHllcyBvciBub1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHk8WCBleHRlbmRzIG9iamVjdCwgWSBleHRlbmRzIFByb3BlcnR5S2V5PihcbiAgb2JqOiBYLFxuICBwcm9wOiBZXG4pOiBvYmogaXMgWCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclNvcnQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlOiBzdHJpbmcpOiB0eXBlb2YgbnVtYmVyU29ydCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNpc2VSb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xuICByZXR1cm4gKFxuICAgIE1hdGgucm91bmQoXG4gICAgICBudW0gKiB0ICsgKGRlY2ltYWxzID4gMCA/IDEgOiAwKSAqIChNYXRoLnNpZ24obnVtKSAqICgxMCAvIE1hdGgucG93KDEwMCwgZGVjaW1hbHMpKSlcbiAgICApIC8gdFxuICApLnRvRml4ZWQoZGVjaW1hbHMpO1xufVxuXG4vKipcbiAqIHJvdW5kIGEgZ2l2aW5nIG51bWJlciBhdCBtb3N0IDQgZGVjaW1hbCBwbGFjZXNcbiAqIGUuZy4gMTAgLT4gMTAsIDEuMTIzNDUgLT4gMS4yMzQ1LCAyLjAgLT4gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb0ZvdXIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBOdW1iZXIoYCR7TWF0aC5yb3VuZChgJHtudW19ZSs0YCl9ZS00YCk7XG59XG4vKipcbiAqIGdldCBudW1iZXIgb2YgZGVjaW1hbHMgdG8gcm91bmQgdG8gZm9yIHNsaWRlciBmcm9tIHN0ZXBcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcmV0dXJucy0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChpc05hTihzdGVwKSkge1xuICAgIGFzc2VydCgnc3RlcCBpcyBub3QgYSBudW1iZXInKTtcbiAgICBhc3NlcnQoc3RlcCk7XG4gIH1cblxuICBjb25zdCBzdGVwU3RyID0gc3RlcC50b1N0cmluZygpO1xuXG4gIC8vIGluIGNhc2UgdGhlIHN0ZXAgaXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBlLmcuIDFlLTcsIHJldHVybiBkZWNpbWFsIGUuZy4gNyBkaXJlY3RseVxuICBjb25zdCBzcGxpdEV4cG9uZW50aWFsID0gc3RlcFN0ci5zcGxpdCgnZS0nKTtcbiAgaWYgKHNwbGl0RXhwb25lbnRpYWwubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgY29lZmZaZXJvID0gc3BsaXRFeHBvbmVudGlhbFswXS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGNvZWZmRGVjaW1hbCA9IGNvZWZmWmVyby5sZW5ndGggPT09IDEgPyAwIDogY29lZmZaZXJvWzFdLmxlbmd0aDtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3BsaXRFeHBvbmVudGlhbFsxXSwgMTApICsgY29lZmZEZWNpbWFsO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcFN0ci5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIElmIG1hcmtzIGlzIHByb3ZpZGVkLCBzbmFwIHRvIG1hcmtzLCBpZiBub3Qgbm9ybWFsaXplIHRvIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpZGVyVmFsdWUoXG4gIHZhbDogbnVtYmVyLFxuICBtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBzdGVwOiBudW1iZXIsXG4gIG1hcmtzPzogbnVtYmVyW10gfCBudWxsXG4pOiBudW1iZXIge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdGVwOiBudW1iZXIsIHZhbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDogbnVtYmVyO1xuICBpZiAocmVtYWluID09PSAwKSB7XG4gICAgY2xvc2VzdCA9IHZhbDtcbiAgfSBlbHNlIGlmIChyZW1haW4gPCBzdGVwIC8gMikge1xuICAgIGNsb3Nlc3QgPSBzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZXN0ID0gKHN0ZXBzICsgMSkgKiBzdGVwICsgbWluVmFsdWU7XG4gIH1cblxuICAvLyBwcmVjaXNlIHJvdW5kIHJldHVybiBhIHN0cmluZyByb3VuZGVkIHRvIHRoZSBkZWZpbmVkIGRlY2ltYWxcbiAgY29uc3Qgcm91bmRlZCA9IHByZWNpc2VSb3VuZChjbG9zZXN0LCBkZWNpbWFsKTtcblxuICByZXR1cm4gTnVtYmVyKHJvdW5kZWQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlcjogRmllbGRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBmbG9hdEZvcm1hdHRlciA9IHYgPT4gKGlzTnVtYmVyKHYpID8gU3RyaW5nKHJvdW5kVG9Gb3VyKHYpKSA6ICcnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGEgV0tCIGluIFVpbnQ4QXJyYXkgZm9ybSBpbnRvIGEgaGV4IFdLQiBzdHJpbmcuXG4gKiBAcGFyYW0gdWludDhBcnJheSBXS0IgaW4gVWludDhBcnJheSBmb3JtLlxuICogQHJldHVybnMgaGV4IFdLQiBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1aW50OEFycmF5VG9IZXgoZGF0YTogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiBBcnJheS5mcm9tKGRhdGEpXG4gICAgLm1hcChieXRlID0+IChieXRlIGFzIGFueSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgLmpvaW4oJycpO1xufVxuXG5leHBvcnQgY29uc3QgRklFTERfRElTUExBWV9GT1JNQVQ6IHtcbiAgW2tleTogc3RyaW5nXTogRmllbGRGb3JtYXR0ZXI7XG59ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXTogZCA9PlxuICAgIHR5cGVvZiBkID09PSAnc3RyaW5nJ1xuICAgICAgPyBkXG4gICAgICA6IGlzUGxhaW5PYmplY3QoZClcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkoZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShkKVxuICAgICAgPyBgWyR7U3RyaW5nKGQpfV1gXG4gICAgICA6ICcnLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XTogKGRhdGEsIGZpZWxkKSA9PiB7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBhcnJvdy5WZWN0b3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZmllbGQ/Lm1ldGFkYXRhPy5nZXQoJ0FSUk9XOmV4dGVuc2lvbjpuYW1lJyk7XG4gICAgICAgIGlmIChlbmNvZGluZykge1xuICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gcGFyc2VHZW9tZXRyeUZyb21BcnJvdyhkYXRhLCBlbmNvZGluZyk7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGdlb21ldHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gaWdub3JlIGZvciBub3dcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdWludDhBcnJheVRvSGV4KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiAodmFsdWU6IGFueSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IGQgPT4gSlNPTi5zdHJpbmdpZnkoZCksXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiBkZWZhdWx0Rm9ybWF0dGVyXG59O1xuXG4vKipcbiAqIFBhcnNlIGZpZWxkIHZhbHVlIGFuZCB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlRmllbGRWYWx1ZSA9ICh2YWx1ZTogYW55LCB0eXBlOiBzdHJpbmcsIGZpZWxkPzogRmllbGQpOiBzdHJpbmcgPT4ge1xuICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgLy8gQmlnSW50IHZhbHVlcyBjYW5ub3QgYmUgc2VyaWFsaXplZCB3aXRoIEpTT04uc3RyaW5naWZ5KCkgZGlyZWN0bHlcbiAgLy8gV2UgbmVlZCB0byBleHBsaWNpdGx5IGNvbnZlcnQgdGhlbSB0byBzdHJpbmdzIHVzaW5nIC50b1N0cmluZygpXG4gIC8vIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQmlnSW50I3VzZV93aXRoaW5fanNvblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSA/IEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdKHZhbHVlLCBmaWVsZCkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBmaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKFxuICBmb3JtYXQ/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCxcbiAgZmllbGQ/OiBGaWVsZFxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0IGFzIFRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5Gb3JtYXR0ZXIoXG4gIGZpZWxkOiBQaWNrPEZpZWxkLCAndHlwZSc+ICYgUGFydGlhbDxQaWNrPEZpZWxkLCAnZm9ybWF0JyB8ICdkaXNwbGF5Rm9ybWF0Jz4+XG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGNvbnN0IHtmb3JtYXQsIGRpc3BsYXlGb3JtYXR9ID0gZmllbGQ7XG5cbiAgaWYgKCFmb3JtYXQgJiYgIWRpc3BsYXlGb3JtYXQpIHtcbiAgICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbZmllbGQudHlwZV07XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGRpc3BsYXlGb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZGlzcGxheUZvcm1hdCwgZmllbGQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhcHBseVZhbHVlTWFwKGRpc3BsYXlGb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZhbHVlTWFwKGZvcm1hdCkge1xuICByZXR1cm4gdiA9PiBmb3JtYXRbdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdDogVG9vbHRpcEZvcm1hdCk6ICh2OiBhbnkpID0+IHN0cmluZyB7XG4gIGlmICghdG9vbHRpcEZvcm1hdCB8fCAhdG9vbHRpcEZvcm1hdC5mb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuXG4gIHN3aXRjaCAodG9vbHRpcEZvcm1hdC50eXBlKSB7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEU6XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUU6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRTpcbiAgICAgIHJldHVybiB2ID0+IGAke2QzRm9ybWF0KFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfMi5mb3JtYXQpKHYpfSVgO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBnZXRCb29sZWFuRm9ybWF0dGVyKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2xlYW5Gb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnMDEnOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkOiB7dHlwZT86IHN0cmluZ30pOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0TGFyZ2VOdW1iZXIobikge1xuICAvLyBTSS1wcmVmaXggd2l0aCA0IHNpZ25pZmljYW50IGRpZ2l0c1xuICByZXR1cm4gZDNGb3JtYXQoJy40fnMnKShuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnaW50ZWdlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobil9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLCcpKE1hdGgucm91bmQobikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdudW1iZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLjR+cicpKG4pO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsLjJ+ZicpKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1hdGlvbiA9IHtcbiAgWTogTWF0aC5wb3coMTAsIDI0KSxcbiAgWjogTWF0aC5wb3coMTAsIDIxKSxcbiAgRTogTWF0aC5wb3coMTAsIDE4KSxcbiAgUDogTWF0aC5wb3coMTAsIDE1KSxcbiAgVDogTWF0aC5wb3coMTAsIDEyKSxcbiAgRzogTWF0aC5wb3coMTAsIDkpLFxuICBNOiBNYXRoLnBvdygxMCwgNiksXG4gIGs6IE1hdGgucG93KDEwLCAzKSxcbiAgaDogTWF0aC5wb3coMTAsIDIpLFxuICBkYTogTWF0aC5wb3coMTAsIDEpLFxuICBkOiBNYXRoLnBvdygxMCwgLTEpLFxuICBjOiBNYXRoLnBvdygxMCwgLTIpLFxuICBtOiBNYXRoLnBvdygxMCwgLTMpLFxuICDOvDogTWF0aC5wb3coMTAsIC02KSxcbiAgbjogTWF0aC5wb3coMTAsIC05KSxcbiAgcDogTWF0aC5wb3coMTAsIC0xMiksXG4gIGY6IE1hdGgucG93KDEwLCAtMTUpLFxuICBhOiBNYXRoLnBvdygxMCwgLTE4KSxcbiAgejogTWF0aC5wb3coMTAsIC0yMSksXG4gIHk6IE1hdGgucG93KDEwLCAtMjQpXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSBmb3JtYXR0ZWQgbnVtYmVyIGZyb20gc3RyaW5nIGJhY2sgdG8gbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXZlcnNlRm9ybWF0TnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IHJldHVyblZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY29uc3Qgc3RyTnVtID0gc3RyLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgT2JqZWN0LmVudHJpZXModHJhbnNmb3JtYXRpb24pLmZvckVhY2goZCA9PiB7XG4gICAgaWYgKHN0ck51bS5pbmNsdWRlcyhkWzBdKSkge1xuICAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUZsb2F0KHN0ck51bSkgKiBkWzFdO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gaWYgbm8gdHJhbnNmb3JtZXIgZm91bmQsIGNvbnZlcnQgdG8gbnViZXIgcmVnYXJkbGVzc1xuICByZXR1cm4gcmV0dXJuVmFsdWUgPT09IG51bGwgPyBOdW1iZXIoc3RyTnVtKSA6IHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlcG9jaCBtaWxsaXNlY29uZHMgd2l0aCBhIGZvcm1hdCBzdHJpbmdcbiAqIEB0eXBlIHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcihcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsXG4pOiAoZm9ybWF0Pzogc3RyaW5nKSA9PiAodHM6IG51bWJlcikgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT4gbW9tZW50LnV0Yyh0cykudHoodGltZXpvbmUpLmZvcm1hdChmb3JtYXQpXG4gICAgOiAvLyByZXR1cm4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgJ0ludmFsaWQgZGF0ZScgaWYgdHMgaXMgdW5kZWZpbmVkL251bGxcbiAgICAgIGZvcm1hdCA9PiB0cyA9PiB0cyA/IG1vbWVudC51dGModHMpLmZvcm1hdChmb3JtYXQpIDogJyc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFHQSxJQUFBUSxLQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFBc0MsSUFBQVUscUJBQUEsRUFyQnRDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWIsd0JBQUFhLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxn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
532
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNGb3JtYXQiLCJfbW9tZW50VGltZXpvbmUiLCJfYXJyb3ciLCJfY29uc3RhbnRzIiwiX2NvbW1vblV0aWxzIiwiX3Bsb3QiLCJfdXRpbHMiLCJfYXJyb3dEYXRhQ29udGFpbmVyIiwiX0ZJRUxEX0RJU1BMQVlfRk9STUFUIiwiTUFYX0xBVElUVURFIiwiZXhwb3J0cyIsIk1JTl9MQVRJVFVERSIsIk1BWF9MT05HSVRVREUiLCJNSU5fTE9OR0lUVURFIiwidmFsaWRhdGVMYXRpdHVkZSIsImxhdGl0dWRlIiwidmFsaWRhdGVDb29yZGluYXRlIiwidmFsaWRhdGVMb25naXR1ZGUiLCJsb25naXR1ZGUiLCJ2YWx1ZSIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJ1bmlxdWUiLCJ2YWx1ZXMiLCJyZXN1bHRzIiwidW5pcXVlU2V0IiwiU2V0IiwiZm9yRWFjaCIsInYiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJwdXNoIiwiZ2V0TGF0TG5nQm91bmRzIiwicG9pbnRzIiwiaWR4IiwibGltaXQiLCJsYXRzIiwibWFwIiwiZCIsIk51bWJlciIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlciIsImlzRmluaXRlIiwic29ydCIsIm51bWJlclNvcnQiLCJsZW5ndGgiLCJNYXRoIiwibWF4IiwibWluIiwiY2xhbXAiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJ2YWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJnZXRTYW1wbGVEYXRhIiwiZGF0YSIsInNhbXBsZVNpemUiLCJnZXRWYWx1ZSIsInNhbXBsZVN0ZXAiLCJmbG9vciIsIm91dHB1dCIsImkiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwiRGF0ZSIsImlzTnVtYmVyIiwiaGFzT3duUHJvcGVydHkiLCJvYmoiLCJwcm9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiY2FsbCIsImEiLCJiIiwiZ2V0U29ydGluZ0Z1bmN0aW9uIiwiZmllbGRUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwicmVhbCIsImludGVnZXIiLCJ0aW1lc3RhbXAiLCJwcmVjaXNlUm91bmQiLCJudW0iLCJkZWNpbWFscyIsInQiLCJwb3ciLCJyb3VuZCIsInNpZ24iLCJ0b0ZpeGVkIiwicm91bmRUb0ZvdXIiLCJjb25jYXQiLCJnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcCIsInN0ZXAiLCJpc05hTiIsImFzc2VydCIsInN0ZXBTdHIiLCJ0b1N0cmluZyIsInNwbGl0RXhwb25lbnRpYWwiLCJzcGxpdCIsImNvZWZmWmVybyIsImNvZWZmRGVjaW1hbCIsInBhcnNlSW50Iiwic3BsaXRaZXJvIiwibm9ybWFsaXplU2xpZGVyVmFsdWUiLCJtYXJrcyIsInNuYXBUb01hcmtzIiwicm91bmRWYWxUb1N0ZXAiLCJkZWNpbWFsIiwic3RlcHMiLCJyZW1haW4iLCJjbG9zZXN0Iiwicm91bmRlZCIsImRlZmF1bHRGb3JtYXR0ZXIiLCJTdHJpbmciLCJmbG9hdEZvcm1hdHRlciIsInVpbnQ4QXJyYXlUb0hleCIsImZyb20iLCJieXRlIiwicGFkU3RhcnQiLCJqb2luIiwiRklFTERfRElTUExBWV9GT1JNQVQiLCJfZGVmaW5lUHJvcGVydHkyIiwic3RyaW5nIiwiZGF0ZSIsImdlb2pzb24iLCJpc1BsYWluT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsImdlb2Fycm93IiwiZmllbGQiLCJpc0Fycm93VmVjdG9yIiwiX2ZpZWxkJG1ldGFkYXRhIiwiZW5jb2RpbmciLCJtZXRhZGF0YSIsImdldCIsImdlb21ldHJ5IiwicGFyc2VHZW9tZXRyeUZyb21BcnJvdyIsImVycm9yIiwiVWludDhBcnJheSIsIm9iamVjdCIsImUiLCJhcnJheSIsImgzIiwicGFyc2VGaWVsZFZhbHVlIiwidHlwZSIsImdldEZvcm1hdHRlciIsInRvb2x0aXBGb3JtYXQiLCJUT09MVElQX0ZPUk1BVFMiLCJmaW5kIiwiZiIsIlRPT0xUSVBfS0VZIiwiYXBwbHlEZWZhdWx0Rm9ybWF0IiwiYXBwbHlDdXN0b21Gb3JtYXQiLCJnZXRDb2x1bW5Gb3JtYXR0ZXIiLCJkaXNwbGF5Rm9ybWF0IiwiX3R5cGVvZjIiLCJhcHBseVZhbHVlTWFwIiwiVE9PTFRJUF9GT1JNQVRfVFlQRVMiLCJERUNJTUFMIiwiZDNGb3JtYXQiLCJEQVRFIiwiREFURV9USU1FIiwiZGF0ZXRpbWVGb3JtYXR0ZXIiLCJQRVJDRU5UQUdFIiwiREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzIiLCJCT09MRUFOIiwiZ2V0Qm9vbGVhbkZvcm1hdHRlciIsImZvcm1hdExhcmdlTnVtYmVyIiwibiIsImZvcm1hdE51bWJlciIsInRyYW5zZm9ybWF0aW9uIiwiWSIsIloiLCJFIiwiUCIsIlQiLCJHIiwiTSIsImsiLCJoIiwiZGEiLCJjIiwibSIsIs68IiwicCIsInoiLCJ5IiwicmV2ZXJzZUZvcm1hdE51bWJlciIsInN0ciIsInJldHVyblZhbHVlIiwic3RyTnVtIiwidHJpbSIsInJlcGxhY2UiLCJlbnRyaWVzIiwiaW5jbHVkZXMiLCJwYXJzZUZsb2F0IiwidGltZXpvbmUiLCJ0cyIsInR6Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtmb3JtYXQgYXMgZDNGb3JtYXR9IGZyb20gJ2QzLWZvcm1hdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5cbmltcG9ydCB7cGFyc2VHZW9tZXRyeUZyb21BcnJvd30gZnJvbSAnQGxvYWRlcnMuZ2wvYXJyb3cnO1xuXG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9GT1JNQVRfVFlQRVMsXG4gIFRPT0xUSVBfS0VZLFxuICBUb29sdGlwRm9ybWF0XG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0ZpZWxkLCBNaWxsaXNlY29uZCwgUHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge3NuYXBUb01hcmtzfSBmcm9tICcuL3Bsb3QnO1xuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7aXNBcnJvd1ZlY3Rvcn0gZnJvbSAnLi9hcnJvdy1kYXRhLWNvbnRhaW5lcic7XG5cbmV4cG9ydCB0eXBlIEZpZWxkRm9ybWF0dGVyID0gKHZhbHVlOiBhbnksIGZpZWxkPzogUHJvdG9EYXRhc2V0RmllbGQpID0+IHN0cmluZztcblxuLy8gV2UgbmVlZCB0aHJlYXQgbGF0aXR1ZGUgZGlmZmVyZW50bHkgb3RoZXJ3aXNlIG1lcmNhdG9yIHByb2plY3QgdmlldyB0aHJvd3Ncbi8vIGEgcHJvamVjdGlvbiBtYXRyaXggZXJyb3Jcbi8vIFVuY2F1Z2h0IEVycm9yOiBQaXhlbCBwcm9qZWN0IG1hdHJpeCBub3QgaW52ZXJ0aWJsZVxuLy8gYXQgV2ViTWVyY2F0b3JWaWV3cG9ydDE2LlZpZXdwb3J0NiAodmlld3BvcnQuanM6ODE6MTMpXG5leHBvcnQgY29uc3QgTUFYX0xBVElUVURFID0gODkuOTtcbmV4cG9ydCBjb25zdCBNSU5fTEFUSVRVREUgPSAtODkuOTtcbmV4cG9ydCBjb25zdCBNQVhfTE9OR0lUVURFID0gMTgwO1xuZXhwb3J0IGNvbnN0IE1JTl9MT05HSVRVREUgPSAtMTgwO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBhIGxhdGl0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsYXRpdHVkZSBpcyB3aXRoaW4gdGhlIGRlZmluZWQgbWluaW11bSBhbmQgbWF4aW11bSBsYXRpdHVkZSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSBsYXRpdHVkZSAtIFRoZSBsYXRpdHVkZSB2YWx1ZSB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgbGF0aXR1ZGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxhdGl0dWRlKGxhdGl0dWRlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICByZXR1cm4gdmFsaWRhdGVDb29yZGluYXRlKGxhdGl0dWRlID8/IDAsIE1JTl9MQVRJVFVERSwgTUFYX0xBVElUVURFKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsb25naXR1ZGUgdmFsdWUuXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGxvbmdpdHVkZSBpcyB3aXRoaW4gdGhlIGRlZmluZWQgbWluaW11bSBhbmQgbWF4aW11bSBsb25naXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbG9uZ2l0dWRlIC0gVGhlIGxvbmdpdHVkZSB2YWx1ZSB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgbG9uZ2l0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMb25naXR1ZGUobG9uZ2l0dWRlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICByZXR1cm4gdmFsaWRhdGVDb29yZGluYXRlKGxvbmdpdHVkZSA/PyAwLCBNSU5fTE9OR0lUVURFLCBNQVhfTE9OR0lUVURFKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBjb29yZGluYXRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSB2YWx1ZSBpcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBtaW5pbXVtIGFuZCBtYXhpbXVtIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIGNvb3JkaW5hdGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcGFyYW0gbWluVmFsdWUgLSBUaGUgbWluaW11bSBib3VuZCBmb3IgdGhlIHZhbHVlLlxuICogQHBhcmFtIG1heFZhbHVlIC0gVGhlIG1heGltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ29vcmRpbmF0ZSh2YWx1ZTogbnVtYmVyLCBtaW5WYWx1ZTogbnVtYmVyLCBtYXhWYWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHZhbHVlIDw9IG1pblZhbHVlKSB7XG4gICAgcmV0dXJuIG1pblZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA+PSBtYXhWYWx1ZSkge1xuICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBzaW1wbGUgZ2V0dGluZyB1bmlxdWUgdmFsdWVzIG9mIGFuIGFycmF5XG4gKiBOb3RlOiBmaWx0ZXJzIG91dCBudWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzXG4gKlxuICogQHBhcmFtIHZhbHVlc1xuICogQHJldHVybnMgdW5pcXVlIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlPFQ+KHZhbHVlczogVFtdKSB7XG4gIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICBjb25zdCB1bmlxdWVTZXQgPSBuZXcgU2V0KHZhbHVlcyk7XG4gIHVuaXF1ZVNldC5mb3JFYWNoKHYgPT4ge1xuICAgIGlmIChub3ROdWxsb3JVbmRlZmluZWQodikpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh2KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhdExuZ0JvdW5kcyhcbiAgcG9pbnRzOiBudW1iZXJbXVtdLFxuICBpZHg6IG51bWJlcixcbiAgbGltaXQ6IFtudW1iZXIsIG51bWJlcl1cbik6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgY29uc3QgbGF0cyA9IHBvaW50c1xuICAgIC5tYXAoZCA9PiBOdW1iZXIoQXJyYXkuaXNBcnJheShkKSkgJiYgZFtpZHhdKVxuICAgIC5maWx0ZXIoTnVtYmVyLmlzRmluaXRlKVxuICAgIC5zb3J0KG51bWJlclNvcnQpO1xuXG4gIGlmICghbGF0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIGNsYW1wIHRvIGxpbWl0XG4gIHJldHVybiBbTWF0aC5tYXgobGF0c1swXSwgbGltaXRbMF0pLCBNYXRoLm1pbihsYXRzW2xhdHMubGVuZ3RoIC0gMV0sIGxpbWl0WzFdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcChbbWluLCBtYXhdOiBbbnVtYmVyLCBudW1iZXJdLCB2YWwgPSAwKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbCA8PSBtaW4gPyBtaW4gOiB2YWwgPj0gbWF4ID8gbWF4IDogdmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2FtcGxlRGF0YShkYXRhLCBzYW1wbGVTaXplID0gNTAwLCBnZXRWYWx1ZSA9IGQgPT4gZCkge1xuICBjb25zdCBzYW1wbGVTdGVwID0gTWF0aC5tYXgoTWF0aC5mbG9vcihkYXRhLmxlbmd0aCAvIHNhbXBsZVNpemUpLCAxKTtcbiAgY29uc3Qgb3V0cHV0OiBhbnlbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IHNhbXBsZVN0ZXApIHtcbiAgICBvdXRwdXQucHVzaChnZXRWYWx1ZShkYXRhW2ldKSk7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENvbnZlcnQgZGlmZmVyZW50IHRpbWUgZm9ybWF0IHRvIHVuaXggbWlsbGlzZWNvbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lVG9Vbml4TWlsbGkodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIGZvcm1hdDogc3RyaW5nKTogTWlsbGlzZWNvbmQgfCBudWxsIHtcbiAgaWYgKG5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG1vbWVudC51dGModmFsdWUsIGZvcm1hdCkudmFsdWVPZigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGZvcm1hdCA9PT0gJ3gnID8gdmFsdWUgKiAxMDAwIDogdmFsdWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS52YWx1ZU9mKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgZCBpcyBhIG51bWJlciwgdGhpcyBmaWx0ZXJlZCBvdXQgTmFOIGFzIHdlbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGQ6IHVua25vd24pOiBkIGlzIG51bWJlciB7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUoZCk7XG59XG5cbi8qKlxuICogd2hldGhlciBvYmplY3QgaGFzIHByb3BlcnR5XG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcFxuICogQHJldHVybnMge2Jvb2xlYW59IC0geWVzIG9yIG5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eTxYIGV4dGVuZHMgb2JqZWN0LCBZIGV4dGVuZHMgUHJvcGVydHlLZXk+KFxuICBvYmo6IFgsXG4gIHByb3A6IFlcbik6IG9iaiBpcyBYICYgUmVjb3JkPFksIHVua25vd24+IHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyU29ydChhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhIC0gYjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRpbmdGdW5jdGlvbihmaWVsZFR5cGU6IHN0cmluZyk6IHR5cGVvZiBudW1iZXJTb3J0IHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIG51bWJlclNvcnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiByb3VuZCBudW1iZXIgd2l0aCBleGFjdCBudW1iZXIgb2YgZGVjaW1hbHNcbiAqIHJldHVybiBhcyBhIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY2lzZVJvdW5kKG51bTogbnVtYmVyLCBkZWNpbWFsczogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgdCA9IE1hdGgucG93KDEwLCBkZWNpbWFscyk7XG4gIHJldHVybiAoXG4gICAgTWF0aC5yb3VuZChcbiAgICAgIG51bSAqIHQgKyAoZGVjaW1hbHMgPiAwID8gMSA6IDApICogKE1hdGguc2lnbihudW0pICogKDEwIC8gTWF0aC5wb3coMTAwLCBkZWNpbWFscykpKVxuICAgICkgLyB0XG4gICkudG9GaXhlZChkZWNpbWFscyk7XG59XG5cbi8qKlxuICogcm91bmQgYSBnaXZpbmcgbnVtYmVyIGF0IG1vc3QgNCBkZWNpbWFsIHBsYWNlc1xuICogZS5nLiAxMCAtPiAxMCwgMS4xMjM0NSAtPiAxLjIzNDUsIDIuMCAtPiAyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvRm91cihudW06IG51bWJlcik6IG51bWJlciB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgcmV0dXJuIE51bWJlcihgJHtNYXRoLnJvdW5kKGAke251bX1lKzRgKX1lLTRgKTtcbn1cbi8qKlxuICogZ2V0IG51bWJlciBvZiBkZWNpbWFscyB0byByb3VuZCB0byBmb3Igc2xpZGVyIGZyb20gc3RlcFxuICogQHBhcmFtIHN0ZXBcbiAqIEByZXR1cm5zLSBudW1iZXIgb2YgZGVjaW1hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAoc3RlcDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGlzTmFOKHN0ZXApKSB7XG4gICAgYXNzZXJ0KCdzdGVwIGlzIG5vdCBhIG51bWJlcicpO1xuICAgIGFzc2VydChzdGVwKTtcbiAgfVxuXG4gIGNvbnN0IHN0ZXBTdHIgPSBzdGVwLnRvU3RyaW5nKCk7XG5cbiAgLy8gaW4gY2FzZSB0aGUgc3RlcCBpcyBhIHZlcnkgc21hbGwgbnVtYmVyIGUuZy4gMWUtNywgcmV0dXJuIGRlY2ltYWwgZS5nLiA3IGRpcmVjdGx5XG4gIGNvbnN0IHNwbGl0RXhwb25lbnRpYWwgPSBzdGVwU3RyLnNwbGl0KCdlLScpO1xuICBpZiAoc3BsaXRFeHBvbmVudGlhbC5sZW5ndGggPT09IDIpIHtcbiAgICBjb25zdCBjb2VmZlplcm8gPSBzcGxpdEV4cG9uZW50aWFsWzBdLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgY29lZmZEZWNpbWFsID0gY29lZmZaZXJvLmxlbmd0aCA9PT0gMSA/IDAgOiBjb2VmZlplcm9bMV0ubGVuZ3RoO1xuICAgIHJldHVybiBwYXJzZUludChzcGxpdEV4cG9uZW50aWFsWzFdLCAxMCkgKyBjb2VmZkRlY2ltYWw7XG4gIH1cblxuICBjb25zdCBzcGxpdFplcm8gPSBzdGVwU3RyLnNwbGl0KCcuJyk7XG4gIGlmIChzcGxpdFplcm8ubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHNwbGl0WmVyb1sxXS5sZW5ndGg7XG59XG5cbi8qKlxuICogSWYgbWFya3MgaXMgcHJvdmlkZWQsIHNuYXAgdG8gbWFya3MsIGlmIG5vdCBub3JtYWxpemUgdG8gc3RlcFxuICogQHBhcmFtIHZhbFxuICogQHBhcmFtIG1pblZhbHVlXG4gKiBAcGFyYW0gc3RlcFxuICogQHBhcmFtIG1hcmtzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTbGlkZXJWYWx1ZShcbiAgdmFsOiBudW1iZXIsXG4gIG1pblZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIHN0ZXA6IG51bWJlcixcbiAgbWFya3M/OiBudW1iZXJbXSB8IG51bGxcbik6IG51bWJlciB7XG4gIGlmIChtYXJrcyAmJiBtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXlcbiAgICByZXR1cm4gc25hcFRvTWFya3ModmFsLCBtYXJrcyk7XG4gIH1cblxuICByZXR1cm4gcm91bmRWYWxUb1N0ZXAobWluVmFsdWUsIHN0ZXAsIHZhbCk7XG59XG5cbi8qKlxuICogcm91bmQgdGhlIHZhbHVlIHRvIHN0ZXAgZm9yIHRoZSBzbGlkZXJcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEByZXR1cm5zIC0gcm91bmRlZCBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsIHN0ZXA6IG51bWJlciwgdmFsOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIWlzTnVtYmVyKHN0ZXApIHx8ICFpc051bWJlcihtaW5WYWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgY29uc3QgZGVjaW1hbCA9IGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXApO1xuICBjb25zdCBzdGVwcyA9IE1hdGguZmxvb3IoKHZhbCAtIG1pblZhbHVlKSAvIHN0ZXApO1xuICBsZXQgcmVtYWluID0gdmFsIC0gKHN0ZXBzICogc3RlcCArIG1pblZhbHVlKTtcblxuICAvLyBoYXMgdG8gcm91bmQgYmVjYXVzZSBqYXZhc2NyaXB0IHR1cm5zIDAuMSBpbnRvIDAuOTk5OTk5OTk5OTk5OTk4N1xuICByZW1haW4gPSBOdW1iZXIocHJlY2lzZVJvdW5kKHJlbWFpbiwgOCkpO1xuXG4gIGxldCBjbG9zZXN0OiBudW1iZXI7XG4gIGlmIChyZW1haW4gPT09IDApIHtcbiAgICBjbG9zZXN0ID0gdmFsO1xuICB9IGVsc2UgaWYgKHJlbWFpbiA8IHN0ZXAgLyAyKSB7XG4gICAgY2xvc2VzdCA9IHN0ZXBzICogc3RlcCArIG1pblZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNsb3Nlc3QgPSAoc3RlcHMgKyAxKSAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfVxuXG4gIC8vIHByZWNpc2Ugcm91bmQgcmV0dXJuIGEgc3RyaW5nIHJvdW5kZWQgdG8gdGhlIGRlZmluZWQgZGVjaW1hbFxuICBjb25zdCByb3VuZGVkID0gcHJlY2lzZVJvdW5kKGNsb3Nlc3QsIGRlY2ltYWwpO1xuXG4gIHJldHVybiBOdW1iZXIocm91bmRlZCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBmb3JtYXQgYmFzZWQgb24gZmllbGQgYW5kIGZvcm1hdCBvcHRpb25zXG4gKiBVc2VkIGluIHJlbmRlciB0b29sdGlwIHZhbHVlXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0Rm9ybWF0dGVyOiBGaWVsZEZvcm1hdHRlciA9IHYgPT4gKG5vdE51bGxvclVuZGVmaW5lZCh2KSA/IFN0cmluZyh2KSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IGZsb2F0Rm9ybWF0dGVyID0gdiA9PiAoaXNOdW1iZXIodikgPyBTdHJpbmcocm91bmRUb0ZvdXIodikpIDogJycpO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgYSBXS0IgaW4gVWludDhBcnJheSBmb3JtIGludG8gYSBoZXggV0tCIHN0cmluZy5cbiAqIEBwYXJhbSB1aW50OEFycmF5IFdLQiBpbiBVaW50OEFycmF5IGZvcm0uXG4gKiBAcmV0dXJucyBoZXggV0tCIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVpbnQ4QXJyYXlUb0hleChkYXRhOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZGF0YSlcbiAgICAubWFwKGJ5dGUgPT4gKGJ5dGUgYXMgYW55KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSlcbiAgICAuam9pbignJyk7XG59XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9ESVNQTEFZX0ZPUk1BVDoge1xuICBba2V5OiBzdHJpbmddOiBGaWVsZEZvcm1hdHRlcjtcbn0gPSB7XG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXBdOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5dOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmRhdGVdOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiBkID0+XG4gICAgdHlwZW9mIGQgPT09ICdzdHJpbmcnXG4gICAgICA/IGRcbiAgICAgIDogaXNQbGFpbk9iamVjdChkKVxuICAgICAgPyBKU09OLnN0cmluZ2lmeShkKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGQpXG4gICAgICA/IGBbJHtTdHJpbmcoZCl9XWBcbiAgICAgIDogJycsXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvYXJyb3ddOiAoZGF0YSwgZmllbGQpID0+IHtcbiAgICBpZiAoaXNBcnJvd1ZlY3RvcihkYXRhKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW5jb2RpbmcgPSBmaWVsZD8ubWV0YWRhdGE/LmdldCgnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnKTtcbiAgICAgICAgaWYgKGVuY29kaW5nKSB7XG4gICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBwYXJzZUdlb21ldHJ5RnJvbUFycm93KGRhdGEsIGVuY29kaW5nKTtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZ2VvbWV0cnkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBpZ25vcmUgZm9yIG5vd1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgIHJldHVybiB1aW50OEFycmF5VG9IZXgoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XTogZCA9PiBKU09OLnN0cmluZ2lmeShkKSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5oM106IGRlZmF1bHRGb3JtYXR0ZXJcbn07XG5cbi8qKlxuICogUGFyc2UgZmllbGQgdmFsdWUgYW5kIHR5cGUgYW5kIHJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvblxuICovXG5leHBvcnQgY29uc3QgcGFyc2VGaWVsZFZhbHVlID0gKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZywgZmllbGQ/OiBGaWVsZCk6IHN0cmluZyA9PiB7XG4gIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICAvLyBCaWdJbnQgdmFsdWVzIGNhbm5vdCBiZSBzZXJpYWxpemVkIHdpdGggSlNPTi5zdHJpbmdpZnkoKSBkaXJlY3RseVxuICAvLyBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgY29udmVydCB0aGVtIHRvIHN0cmluZ3MgdXNpbmcgLnRvU3RyaW5nKClcbiAgLy8gU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9CaWdJbnQjdXNlX3dpdGhpbl9qc29uXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gIH1cbiAgcmV0dXJuIEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdID8gRklFTERfRElTUExBWV9GT1JNQVRbdHlwZV0odmFsdWUsIGZpZWxkKSA6IFN0cmluZyh2YWx1ZSk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICogQHBhcmFtIGZvcm1hdFxuICogQHBhcmFtIGZpZWxkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZXIoXG4gIGZvcm1hdD86IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsLFxuICBmaWVsZD86IEZpZWxkXG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGlmICghZm9ybWF0KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGZvcm1hdCk7XG5cbiAgaWYgKHRvb2x0aXBGb3JtYXQpIHtcbiAgICByZXR1cm4gYXBwbHlEZWZhdWx0Rm9ybWF0KHRvb2x0aXBGb3JtYXQgYXMgVG9vbHRpcEZvcm1hdCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZm9ybWF0LCBmaWVsZCk7XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtbkZvcm1hdHRlcihcbiAgZmllbGQ6IFBpY2s8RmllbGQsICd0eXBlJz4gJiBQYXJ0aWFsPFBpY2s8RmllbGQsICdmb3JtYXQnIHwgJ2Rpc3BsYXlGb3JtYXQnPj5cbik6IEZpZWxkRm9ybWF0dGVyIHtcbiAgY29uc3Qge2Zvcm1hdCwgZGlzcGxheUZvcm1hdH0gPSBmaWVsZDtcblxuICBpZiAoIWZvcm1hdCAmJiAhZGlzcGxheUZvcm1hdCkge1xuICAgIHJldHVybiBGSUVMRF9ESVNQTEFZX0ZPUk1BVFtmaWVsZC50eXBlXTtcbiAgfVxuICBjb25zdCB0b29sdGlwRm9ybWF0ID0gT2JqZWN0LnZhbHVlcyhUT09MVElQX0ZPUk1BVFMpLmZpbmQoZiA9PiBmW1RPT0xUSVBfS0VZXSA9PT0gZGlzcGxheUZvcm1hdCk7XG5cbiAgaWYgKHRvb2x0aXBGb3JtYXQpIHtcbiAgICByZXR1cm4gYXBwbHlEZWZhdWx0Rm9ybWF0KHRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnc3RyaW5nJyAmJiBmaWVsZCkge1xuICAgIHJldHVybiBhcHBseUN1c3RvbUZvcm1hdChkaXNwbGF5Rm9ybWF0LCBmaWVsZCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRpc3BsYXlGb3JtYXQgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGFwcGx5VmFsdWVNYXAoZGlzcGxheUZvcm1hdCk7XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5VmFsdWVNYXAoZm9ybWF0KSB7XG4gIHJldHVybiB2ID0+IGZvcm1hdFt2XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0OiBUb29sdGlwRm9ybWF0KTogKHY6IGFueSkgPT4gc3RyaW5nIHtcbiAgaWYgKCF0b29sdGlwRm9ybWF0IHx8ICF0b29sdGlwRm9ybWF0LmZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG5cbiAgc3dpdGNoICh0b29sdGlwRm9ybWF0LnR5cGUpIHtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUw6XG4gICAgICByZXR1cm4gZDNGb3JtYXQodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURTpcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRTpcbiAgICAgIHJldHVybiBkYXRldGltZUZvcm1hdHRlcihudWxsKSh0b29sdGlwRm9ybWF0LmZvcm1hdCk7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFOlxuICAgICAgcmV0dXJuIHYgPT4gYCR7ZDNGb3JtYXQoVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8yLmZvcm1hdCkodil9JWA7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOOlxuICAgICAgcmV0dXJuIGdldEJvb2xlYW5Gb3JtYXR0ZXIodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9vbGVhbkZvcm1hdHRlcihmb3JtYXQ6IHN0cmluZyk6IEZpZWxkRm9ybWF0dGVyIHtcbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlICcwMSc6XG4gICAgICByZXR1cm4gKHY6IGJvb2xlYW4pID0+ICh2ID8gJzEnIDogJzAnKTtcbiAgICBjYXNlICd5bic6XG4gICAgICByZXR1cm4gKHY6IGJvb2xlYW4pID0+ICh2ID8gJ3llcycgOiAnbm8nKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cbi8vIEFsbG93IHVzZXIgdG8gc3BlY2lmeSBjdXN0b20gdG9vbHRpcCBmb3JtYXQgdmlhIGNvbmZpZ1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQ6IHt0eXBlPzogc3RyaW5nfSk6IEZpZWxkRm9ybWF0dGVyIHtcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KGZvcm1hdCk7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZGF0ZTpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkoZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHYgPT4gdjtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRMYXJnZU51bWJlcihuKSB7XG4gIC8vIFNJLXByZWZpeCB3aXRoIDQgc2lnbmlmaWNhbnQgZGlnaXRzXG4gIHJldHVybiBkM0Zvcm1hdCgnLjR+cycpKG4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyKG46IG51bWJlciwgdHlwZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdpbnRlZ2VyJyl9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAwMCkge1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChuKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsJykoTWF0aC5yb3VuZChuKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybWF0TGFyZ2VOdW1iZXIobik7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICAgIGlmIChuIDwgMCkge1xuICAgICAgICByZXR1cm4gYC0ke2Zvcm1hdE51bWJlcigtbiwgJ251bWJlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcuNH5yJykobik7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwICogMTAwMCkge1xuICAgICAgICByZXR1cm4gZDNGb3JtYXQoJywuMn5mJykobik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybWF0TGFyZ2VOdW1iZXIobik7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcihuLCAncmVhbCcpO1xuICB9XG59XG5cbmNvbnN0IHRyYW5zZm9ybWF0aW9uID0ge1xuICBZOiBNYXRoLnBvdygxMCwgMjQpLFxuICBaOiBNYXRoLnBvdygxMCwgMjEpLFxuICBFOiBNYXRoLnBvdygxMCwgMTgpLFxuICBQOiBNYXRoLnBvdygxMCwgMTUpLFxuICBUOiBNYXRoLnBvdygxMCwgMTIpLFxuICBHOiBNYXRoLnBvdygxMCwgOSksXG4gIE06IE1hdGgucG93KDEwLCA2KSxcbiAgazogTWF0aC5wb3coMTAsIDMpLFxuICBoOiBNYXRoLnBvdygxMCwgMiksXG4gIGRhOiBNYXRoLnBvdygxMCwgMSksXG4gIGQ6IE1hdGgucG93KDEwLCAtMSksXG4gIGM6IE1hdGgucG93KDEwLCAtMiksXG4gIG06IE1hdGgucG93KDEwLCAtMyksXG4gIM68OiBNYXRoLnBvdygxMCwgLTYpLFxuICBuOiBNYXRoLnBvdygxMCwgLTkpLFxuICBwOiBNYXRoLnBvdygxMCwgLTEyKSxcbiAgZjogTWF0aC5wb3coMTAsIC0xNSksXG4gIGE6IE1hdGgucG93KDEwLCAtMTgpLFxuICB6OiBNYXRoLnBvdygxMCwgLTIxKSxcbiAgeTogTWF0aC5wb3coMTAsIC0yNClcbn07XG5cbi8qKlxuICogQ29udmVydCBhIGZvcm1hdHRlZCBudW1iZXIgZnJvbSBzdHJpbmcgYmFjayB0byBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VGb3JtYXROdW1iZXIoc3RyOiBzdHJpbmcpOiBudW1iZXIge1xuICBsZXQgcmV0dXJuVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBjb25zdCBzdHJOdW0gPSBzdHIudHJpbSgpLnJlcGxhY2UoLywvZywgJycpO1xuICBPYmplY3QuZW50cmllcyh0cmFuc2Zvcm1hdGlvbikuZm9yRWFjaChkID0+IHtcbiAgICBpZiAoc3RyTnVtLmluY2x1ZGVzKGRbMF0pKSB7XG4gICAgICByZXR1cm5WYWx1ZSA9IHBhcnNlRmxvYXQoc3RyTnVtKSAqIGRbMV07XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcblxuICAvLyBpZiBubyB0cmFuc2Zvcm1lciBmb3VuZCwgY29udmVydCB0byBudWJlciByZWdhcmRsZXNzXG4gIHJldHVybiByZXR1cm5WYWx1ZSA9PT0gbnVsbCA/IE51bWJlcihzdHJOdW0pIDogcmV0dXJuVmFsdWU7XG59XG5cbi8qKlxuICogRm9ybWF0IGVwb2NoIG1pbGxpc2Vjb25kcyB3aXRoIGEgZm9ybWF0IHN0cmluZ1xuICogQHR5cGUgdGltZXpvbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGV0aW1lRm9ybWF0dGVyKFxuICB0aW1lem9uZT86IHN0cmluZyB8IG51bGxcbik6IChmb3JtYXQ/OiBzdHJpbmcpID0+ICh0czogbnVtYmVyKSA9PiBzdHJpbmcge1xuICByZXR1cm4gdGltZXpvbmVcbiAgICA/IGZvcm1hdCA9PiB0cyA9PiBtb21lbnQudXRjKHRzKS50eih0aW1lem9uZSkuZm9ybWF0KGZvcm1hdClcbiAgICA6IC8vIHJldHVybiBlbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiAnSW52YWxpZCBkYXRlJyBpZiB0cyBpcyB1bmRlZmluZWQvbnVsbFxuICAgICAgZm9ybWF0ID0+IHRzID0+IHRzID8gbW9tZW50LnV0Yyh0cykuZm9ybWF0KGZvcm1hdCkgOiAnJztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsZUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBT0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBR0EsSUFBQU0sS0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsbUJBQUEsR0FBQVIsT0FBQTtBQUFxRCxJQUFBUyxxQkFBQSxFQXJCckQ7QUFDQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLFlBQVksR0FBQUMsT0FBQSxDQUFBRCxZQUFBLEdBQUcsSUFBSTtBQUN6QixJQUFNRSxZQUFZLEdBQUFELE9BQUEsQ0FBQUMsWUFBQSxHQUFHLENBQUMsSUFBSTtBQUMxQixJQUFNQyxhQUFhLEdBQUFGLE9BQUEsQ0FBQUUsYUFBQSxHQUFHLEdBQUc7QUFDekIsSUFBTUMsYUFBYSxHQUFBSCxPQUFBLENBQUFHLGFBQUEsR0FBRyxDQUFDLEdBQUc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsZ0JBQWdCQSxDQUFDQyxRQUE0QixFQUFVO0VBQ3JFLE9BQU9DLGtCQUFrQixDQUFDRCxRQUFRLGFBQVJBLFFBQVEsY0FBUkEsUUFBUSxHQUFJLENBQUMsRUFBRUosWUFBWSxFQUFFRixZQUFZLENBQUM7QUFDdEU7O0FBRUE7QUFD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Q0FBQzJDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7RUFDcEJaLENBQUMsRUFBRS9CLElBQUksQ0FBQzJDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7RUFDcEJvRyxDQUFDLEVBQUUvSSxJQUFJLENBQUMyQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0VBQ3BCcUcsQ0FBQyxFQUFFaEosSUFBSSxDQUFDMkMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDckIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDTyxTQUFTc0csbUJBQW1CQSxDQUFDQyxHQUFXLEVBQVU7RUFDdkQsSUFBSUMsV0FBMEIsR0FBRyxJQUFJO0VBQ3JDLElBQU1DLE1BQU0sR0FBR0YsR0FBRyxDQUFDRyxJQUFJLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztFQUMzQzFILE1BQU0sQ0FBQzJILE9BQU8sQ0FBQ3ZCLGNBQWMsQ0FBQyxDQUFDbkosT0FBTyxDQUFDLFVBQUFVLENBQUMsRUFBSTtJQUMxQyxJQUFJNkosTUFBTSxDQUFDSSxRQUFRLENBQUNqSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUN6QjRKLFdBQVcsR0FBR00sVUFBVSxDQUFDTCxNQUFNLENBQUMsR0FBRzdKLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDdkMsT0FBTyxJQUFJO0lBQ2I7SUFDQSxPQUFPLEtBQUs7RUFDZCxDQUFDLENBQUM7O0VBRUY7RUFDQSxPQUFPNEosV0FBVyxLQUFLLElBQUksR0FBRzNKLE1BQU0sQ0FBQzRKLE1BQU0sQ0FBQyxHQUFHRCxXQUFXO0FBQzVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBUzNCLGlCQUFpQkEsQ0FDL0JrQyxRQUF3QixFQUNxQjtFQUM3QyxPQUFPQSxRQUFRLEdBQ1gsVUFBQXZJLE1BQU07SUFBQSxPQUFJLFVBQUF3SSxFQUFFO01BQUEsT0FBSXZJLDBCQUFNLENBQUNDLEdBQUcsQ0FBQ3NJLEVBQUUsQ0FBQyxDQUFDQyxFQUFFLENBQUNGLFFBQVEsQ0FBQyxDQUFDdkksTUFBTSxDQUFDQSxNQUFNLENBQUM7SUFBQTtFQUFBO0VBQzFEO0VBQ0EsVUFBQUEsTUFBTTtJQUFBLE9BQUksVUFBQXdJLEVBQUU7TUFBQSxPQUFJQSxFQUFFLEdBQUd2SSwwQkFBTSxDQUFDQyxHQUFHLENBQUNzSSxFQUFFLENBQUMsQ0FBQ3hJLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEdBQUcsRUFBRTtJQUFBO0VBQUE7QUFDN0QiLCJpZ25vcmVMaXN0IjpbXX0=
package/dist/index.d.ts CHANGED
@@ -28,7 +28,7 @@ export * from './utils';
28
28
  export { computeDeckEffects, fixEffectOrder, reorderEffectOrder, validateEffectParameters } from './effect-utils';
29
29
  export { isStyleUsingMapboxTiles, isStyleUsingOpenStreetMapTiles, getBaseMapLibrary, transformRequest } from './map-style-utils/mapbox-utils';
30
30
  export * from './map-utils';
31
- export { ArrowDataContainer, arrowDataTypeToAnalyzerDataType, arrowDataTypeToFieldType } from './arrow-data-container';
31
+ export { ArrowDataContainer, arrowDataTypeToAnalyzerDataType, arrowDataTypeToFieldType, isArrowTable, isArrowFixedSizeList, isArrowStruct, isArrowVector } from './arrow-data-container';
32
32
  export type { DataContainerInterface } from './data-container-interface';
33
33
  export { DataForm, createDataContainer, createIndexedDataContainer, getSampleData as getSampleContainerData } from './data-container-utils';
34
34
  export * from './filter-utils';
package/dist/index.js CHANGED
@@ -102,6 +102,10 @@ var _exportNames = {
102
102
  ArrowDataContainer: true,
103
103
  arrowDataTypeToAnalyzerDataType: true,
104
104
  arrowDataTypeToFieldType: true,
105
+ isArrowTable: true,
106
+ isArrowFixedSizeList: true,
107
+ isArrowStruct: true,
108
+ isArrowVector: true,
105
109
  DataForm: true,
106
110
  createDataContainer: true,
107
111
  createIndexedDataContainer: true,
@@ -673,6 +677,30 @@ Object.defineProperty(exports, "isAppleDevice", {
673
677
  return _browserUtils.isAppleDevice;
674
678
  }
675
679
  });
680
+ Object.defineProperty(exports, "isArrowFixedSizeList", {
681
+ enumerable: true,
682
+ get: function get() {
683
+ return _arrowDataContainer.isArrowFixedSizeList;
684
+ }
685
+ });
686
+ Object.defineProperty(exports, "isArrowStruct", {
687
+ enumerable: true,
688
+ get: function get() {
689
+ return _arrowDataContainer.isArrowStruct;
690
+ }
691
+ });
692
+ Object.defineProperty(exports, "isArrowTable", {
693
+ enumerable: true,
694
+ get: function get() {
695
+ return _arrowDataContainer.isArrowTable;
696
+ }
697
+ });
698
+ Object.defineProperty(exports, "isArrowVector", {
699
+ enumerable: true,
700
+ get: function get() {
701
+ return _arrowDataContainer.isArrowVector;
702
+ }
703
+ });
676
704
  Object.defineProperty(exports, "isDomainQuantile", {
677
705
  enumerable: true,
678
706
  get: function get() {
@@ -1044,4 +1072,4 @@ var _browserUtils = require("./browser-utils");
1044
1072
  var _quickInsertionSort = _interopRequireDefault(require("./quick-insertion-sort"));
1045
1073
  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); }
1046
1074
  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; }
1047
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sb3JVdGlscyIsInJlcXVpcmUiLCJfbm90aWZpY2F0aW9uc1V0aWxzIiwiX2RvbVV0aWxzIiwiX2RvbVRvSW1hZ2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FnZ3JlZ2F0aW9uIiwiX3Bsb3QiLCJfZGF0YVV0aWxzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3N0cmluZ3MiLCJfdGltZSIsIl9wb3NpdGlvblV0aWxzIiwiX2RhdGFzZXRVdGlscyIsIl9leHBvcnRNYXBIdG1sIiwiX2V4cG9ydFV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZm9ybWF0IiwiX2dsVXRpbHMiLCJfbG9jYWxlVXRpbHMiLCJfbWFwSW5mb1V0aWxzIiwiX21hcGJveEdsU3R5bGVFZGl0b3IiLCJfbWFwYm94VXRpbHMiLCJfb2JzZXJ2ZURpbWVuc2lvbnMiLCJfcHJvamVjdGlvblV0aWxzIiwiX3NwbGl0TWFwVXRpbHMiLCJfdXRpbHMiLCJfZWZmZWN0VXRpbHMiLCJfbWFwYm94VXRpbHMyIiwiX21hcFV0aWxzIiwiX2Fycm93RGF0YUNvbnRhaW5lciIsIl9kYXRhQ29udGFpbmVyVXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfZGF0YVNjYWxlVXRpbHMiLCJfZGF0YVJvdyIsIl9hcHBsaWNhdGlvbkNvbmZpZyIsIl9icm93c2VyVXRpbHMiLCJfcXVpY2tJbnNlcnRpb25Tb3J0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwibiIsIl9fcHJvdG9fXyIsImEiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaSIsInNldCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBVVElMU1xuXG5leHBvcnQge1xuICBjb2xvck1heWJlVG9SR0IsXG4gIGNvbG9yUmFuZ2VCYWNrd2FyZENvbXBhdGliaWxpdHksXG4gIGNyZWF0ZUxpbmVhckdyYWRpZW50LFxuICBoYXNDb2xvck1hcCxcbiAgaGV4VG9SZ2IsXG4gIGlzSGV4Q29sb3IsXG4gIGlzUmdiQ29sb3IsXG4gIG5vcm1hbGl6ZUNvbG9yLFxuICByZXZlcnNlQ29sb3JSYW5nZSxcbiAgcmdiVG9IZXgsXG4gIGFkZEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgcmVtb3ZlQ3VzdG9tUGFsZXR0ZUNvbG9yLFxuICBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yLFxuICB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IsXG4gIHVwZGF0ZUNvbG9yUmFuZ2VCeVNlbGVjdGVkUGFsZXR0ZSxcbiAgcGFsZXR0ZUlzU3RlcHMsXG4gIHBhbGV0dGVJc1R5cGUsXG4gIHBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlLFxuICB1cGRhdGVDb2xvclJhbmdlQnlNYXRjaGluZ1BhbGV0dGUsXG4gIHVwZGF0ZUN1c3RvbUNvbG9yUmFuZ2VCeUNvbG9yVUksXG4gIGluaXRpYWxpemVDdXN0b21QYWxldHRlXG59IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuZXhwb3J0IHtlcnJvck5vdGlmaWNhdGlvbn0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuZXhwb3J0IHtjcmVhdGVOb3RpZmljYXRpb24sIGV4cG9ydEltYWdlRXJyb3IsIHN1Y2Nlc3NOb3RpZmljYXRpb259IGZyb20gJy4vbm90aWZpY2F0aW9ucy11dGlscyc7XG5cbmV4cG9ydCB7c2V0U3R5bGVTaGVldEJhc2VIcmVmfSBmcm9tICcuL2RvbS11dGlscyc7XG5leHBvcnQge2RlZmF1bHQgYXMgZG9tdG9pbWFnZX0gZnJvbSAnLi9kb20tdG8taW1hZ2UnO1xuZXhwb3J0IHtnZXRGcmVxdWVuY3ksIGdldE1vZGUsIGFnZ3JlZ2F0ZX0gZnJvbSAnLi9hZ2dyZWdhdGlvbic7XG5leHBvcnQge1xuICBhZGp1c3RWYWx1ZVRvQW5pbWF0aW9uV2luZG93LFxuICBnZXRCaW5UaHJlc2hvbGRzLFxuICBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkLFxuICBoaXN0b2dyYW1Gcm9tVmFsdWVzLFxuICBoaXN0b2dyYW1Gcm9tRG9tYWluLFxuICBoaXN0b2dyYW1Gcm9tT3JkaW5hbCxcbiAgcnVuR3B1RmlsdGVyRm9yUGxvdCxcbiAgdXBkYXRlVGltZUZpbHRlclBsb3RUeXBlXG59IGZyb20gJy4vcGxvdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgdHlwZSB7RmllbGRGb3JtYXR0ZXJ9IGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZ3MnO1xuZXhwb3J0IHtcbiAgU0FNUExFX1RJTUVMSU5FLFxuICBUSU1FTElORV9NT0RFUyxcbiAgVElNRV9JTlRFUlZBTFNfT1JERVJFRCxcbiAgTGF5ZXJUb0ZpbHRlclRpbWVJbnRlcnZhbCxcbiAgVGlsZVRpbWVJbnRlcnZhbCxcbiAgZ2V0VGltZWxpbmVGcm9tQW5pbWF0aW9uQ29uZmlnLFxuICBnZXRUaW1lbGluZUZyb21GaWx0ZXJcbn0gZnJvbSAnLi90aW1lJztcbmV4cG9ydCB7bWF5YmVIZXhUb0dlbywgZ2V0UG9zaXRpb25Gcm9tSGV4VmFsdWV9IGZyb20gJy4vcG9zaXRpb24tdXRpbHMnO1xuXG5leHBvcnQge1xuICBkYXRhc2V0Q29sb3JNYWtlcixcbiAgZmluZERlZmF1bHRDb2xvckZpZWxkLFxuICBnZXRGaWVsZEZvcm1hdExhYmVscyxcbiAgZ2V0Rm9ybWF0TGFiZWxzLFxuICB2YWxpZGF0ZUlucHV0RGF0YVxufSBmcm9tICcuL2RhdGFzZXQtdXRpbHMnO1xuZXhwb3J0IHtleHBvcnRNYXBUb0hUTUx9IGZyb20gJy4vZXhwb3J0LW1hcC1odG1sJztcbmV4cG9ydCB7XG4gIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSxcbiAgY29udmVydFRvUG5nLFxuICBkYXRhVVJJdG9CbG9iLFxuICBkb3dubG9hZEZpbGUsXG4gIGV4cG9ydEh0bWwsXG4gIGV4cG9ydEltYWdlLFxuICBleHBvcnRKc29uLFxuICBleHBvcnRNYXAsXG4gIGV4cG9ydFRvSnNvblN0cmluZyxcbiAgZGVmYXVsdCBhcyBleHBvcnRlcnMsXG4gIGdldE1hcEpTT04sXG4gIGdldFNjYWxlRnJvbUltYWdlU2l6ZSxcbiAgaXNNU0VkZ2Vcbn0gZnJvbSAnLi9leHBvcnQtdXRpbHMnO1xuZXhwb3J0IHtnZXRGb3JtYXRWYWx1ZSwgZ2V0RGVmYXVsdFRpbWVGb3JtYXR9IGZyb20gJy4vZm9ybWF0JztcbmV4cG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAnLi9nbC11dGlscyc7XG5leHBvcnQge2ZsYXR0ZW5NZXNzYWdlcywgbWVyZ2VNZXNzYWdlc30gZnJvbSAnLi9sb2NhbGUtdXRpbHMnO1xuZXhwb3J0IHtpc1ZhbGlkTWFwSW5mb30gZnJvbSAnLi9tYXAtaW5mby11dGlscyc7XG5leHBvcnQge1xuICBlZGl0Qm90dG9tTWFwU3R5bGUsXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvblxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yJztcbmV4cG9ydCB7dmFsaWRhdGVUb2tlbn0gZnJvbSAnLi9tYXBib3gtdXRpbHMnO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB1c2VEaW1lbnNpb25zLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9uc1xufSBmcm9tICcuL29ic2VydmUtZGltZW5zaW9ucyc7XG5leHBvcnQgdHlwZSB7RGltZW5zaW9uc30gZnJvbSAnLi9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuZXhwb3J0IHtzbmFwVG9NYXJrcywgZ2V0VGltZUJpbnN9IGZyb20gJy4vcGxvdCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24tdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGxpdC1tYXAtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7XG4gIGNvbXB1dGVEZWNrRWZmZWN0cyxcbiAgZml4RWZmZWN0T3JkZXIsXG4gIHJlb3JkZXJFZmZlY3RPcmRlcixcbiAgdmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzXG59IGZyb20gJy4vZWZmZWN0LXV0aWxzJztcblxuLy8gTWFwYm94XG5leHBvcnQge1xuICBpc1N0eWxlVXNpbmdNYXBib3hUaWxlcyxcbiAgaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzLFxuICBnZXRCYXNlTWFwTGlicmFyeSxcbiAgdHJhbnNmb3JtUmVxdWVzdFxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuXG4vLyBNYXBcbmV4cG9ydCAqIGZyb20gJy4vbWFwLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgQXJyb3dEYXRhQ29udGFpbmVyLFxuICBhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlLFxuICBhcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGVcbn0gZnJvbSAnLi9hcnJvdy1kYXRhLWNvbnRhaW5lcic7XG5leHBvcnQgdHlwZSB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuZXhwb3J0IHtcbiAgRGF0YUZvcm0sXG4gIGNyZWF0ZURhdGFDb250YWluZXIsXG4gIGNyZWF0ZUluZGV4ZWREYXRhQ29udGFpbmVyLFxuICBnZXRTYW1wbGVEYXRhIGFzIGdldFNhbXBsZUNvbnRhaW5lckRhdGFcbn0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci11dGlscyc7XG5leHBvcnQgdHlwZSB7RmlsdGVyQ2hhbmdlZCwgRmlsdGVyUmVzdWx0LCBkYXRhVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9maWx0ZXItdXRpbHMnO1xuXG5leHBvcnQge1xuICBjb2xvck1hcFRvQ29sb3JCcmVha3MsXG4gIGNvbG9yQnJlYWtzVG9Db2xvck1hcCxcbiAgZ2V0TGF5ZXJDb2xvclNjYWxlLFxuICBnZXRMZWdlbmRPZlNjYWxlLFxuICBnZXRMaW5lYXJEb21haW4sXG4gIGdldExvZ0RvbWFpbixcbiAgZ2V0T3JkaW5hbERvbWFpbixcbiAgZ2V0UXVhbnRpbGVEb21haW4sXG4gIGdldFNjYWxlRnVuY3Rpb24sXG4gIGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSxcbiAgaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAsXG4gIGlzTnVtZXJpY0NvbG9yQnJlYWtzLFxuICBpc0RvbWFpblN0b3BzLFxuICBpc0RvbWFpblF1YW50aWxlLFxuICBnZXREb21haW5TdGVwc2J5Wm9vbSxcbiAgZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMsXG4gIGdldFF1YW50TGFiZWxGb3JtYXQsXG4gIGdldEhpc3RvZ3JhbURvbWFpbixcbiAgZ2V0UXVhbnRMZWdlbmRzLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yTWFwLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yU2NhbGUsXG4gIGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSxcbiAgY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MsXG4gIHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgsXG4gIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCxcbiAgcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcCxcbiAgYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwXG59IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5leHBvcnQgdHlwZSB7Q29sb3JCcmVhaywgQ29sb3JCcmVha09yZGluYWwsIERvbWFpblF1YW50aWxlcywgRG9tYWluU3RvcHN9IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5cbmV4cG9ydCB7RGF0YVJvd30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbi8vIEFwcGxpY2F0aW9uIGNvbmZpZ1xuZXhwb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgaW5pdEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5leHBvcnQgdHlwZSB7XG4gIEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnLFxuICBCYXNlTWFwTGlicmFyeUNvbmZpZyxcbiAgTWFwTGliSW5zdGFuY2UsXG4gIEdldE1hcFJlZlxufSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5leHBvcnQgdHlwZSB7RGF0YWJhc2VBZGFwdGVyLCBEYXRhYmFzZUNvbm5lY3Rpb259IGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlnLXR5cGVzJztcblxuLy8gQnJvd3NlciB1dGlsc1xuZXhwb3J0IHtpc0FwcGxlRGV2aWNlfSBmcm9tICcuL2Jyb3dzZXItdXRpbHMnO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgcXVpY2tJbnNlcnRpb25Tb3J0fSBmcm9tICcuL3F1aWNrLWluc2VydGlvbi1zb3J0JztcblxuZXhwb3J0IHR5cGUge0tlcGxlclRhYmxlTW9kZWx9IGZyb20gJy4vdHlwZXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUF1QkEsSUFBQUMsbUJBQUEsR0FBQUQsT0FBQTtBQUlBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUos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
1075
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sb3JVdGlscyIsInJlcXVpcmUiLCJfbm90aWZpY2F0aW9uc1V0aWxzIiwiX2RvbVV0aWxzIiwiX2RvbVRvSW1hZ2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FnZ3JlZ2F0aW9uIiwiX3Bsb3QiLCJfZGF0YVV0aWxzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3N0cmluZ3MiLCJfdGltZSIsIl9wb3NpdGlvblV0aWxzIiwiX2RhdGFzZXRVdGlscyIsIl9leHBvcnRNYXBIdG1sIiwiX2V4cG9ydFV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZm9ybWF0IiwiX2dsVXRpbHMiLCJfbG9jYWxlVXRpbHMiLCJfbWFwSW5mb1V0aWxzIiwiX21hcGJveEdsU3R5bGVFZGl0b3IiLCJfbWFwYm94VXRpbHMiLCJfb2JzZXJ2ZURpbWVuc2lvbnMiLCJfcHJvamVjdGlvblV0aWxzIiwiX3NwbGl0TWFwVXRpbHMiLCJfdXRpbHMiLCJfZWZmZWN0VXRpbHMiLCJfbWFwYm94VXRpbHMyIiwiX21hcFV0aWxzIiwiX2Fycm93RGF0YUNvbnRhaW5lciIsIl9kYXRhQ29udGFpbmVyVXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfZGF0YVNjYWxlVXRpbHMiLCJfZGF0YVJvdyIsIl9hcHBsaWNhdGlvbkNvbmZpZyIsIl9icm93c2VyVXRpbHMiLCJfcXVpY2tJbnNlcnRpb25Tb3J0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwibiIsIl9fcHJvdG9fXyIsImEiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaSIsInNldCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBVVElMU1xuXG5leHBvcnQge1xuICBjb2xvck1heWJlVG9SR0IsXG4gIGNvbG9yUmFuZ2VCYWNrd2FyZENvbXBhdGliaWxpdHksXG4gIGNyZWF0ZUxpbmVhckdyYWRpZW50LFxuICBoYXNDb2xvck1hcCxcbiAgaGV4VG9SZ2IsXG4gIGlzSGV4Q29sb3IsXG4gIGlzUmdiQ29sb3IsXG4gIG5vcm1hbGl6ZUNvbG9yLFxuICByZXZlcnNlQ29sb3JSYW5nZSxcbiAgcmdiVG9IZXgsXG4gIGFkZEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgcmVtb3ZlQ3VzdG9tUGFsZXR0ZUNvbG9yLFxuICBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yLFxuICB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IsXG4gIHVwZGF0ZUNvbG9yUmFuZ2VCeVNlbGVjdGVkUGFsZXR0ZSxcbiAgcGFsZXR0ZUlzU3RlcHMsXG4gIHBhbGV0dGVJc1R5cGUsXG4gIHBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlLFxuICB1cGRhdGVDb2xvclJhbmdlQnlNYXRjaGluZ1BhbGV0dGUsXG4gIHVwZGF0ZUN1c3RvbUNvbG9yUmFuZ2VCeUNvbG9yVUksXG4gIGluaXRpYWxpemVDdXN0b21QYWxldHRlXG59IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuZXhwb3J0IHtlcnJvck5vdGlmaWNhdGlvbn0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuZXhwb3J0IHtjcmVhdGVOb3RpZmljYXRpb24sIGV4cG9ydEltYWdlRXJyb3IsIHN1Y2Nlc3NOb3RpZmljYXRpb259IGZyb20gJy4vbm90aWZpY2F0aW9ucy11dGlscyc7XG5cbmV4cG9ydCB7c2V0U3R5bGVTaGVldEJhc2VIcmVmfSBmcm9tICcuL2RvbS11dGlscyc7XG5leHBvcnQge2RlZmF1bHQgYXMgZG9tdG9pbWFnZX0gZnJvbSAnLi9kb20tdG8taW1hZ2UnO1xuZXhwb3J0IHtnZXRGcmVxdWVuY3ksIGdldE1vZGUsIGFnZ3JlZ2F0ZX0gZnJvbSAnLi9hZ2dyZWdhdGlvbic7XG5leHBvcnQge1xuICBhZGp1c3RWYWx1ZVRvQW5pbWF0aW9uV2luZG93LFxuICBnZXRCaW5UaHJlc2hvbGRzLFxuICBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkLFxuICBoaXN0b2dyYW1Gcm9tVmFsdWVzLFxuICBoaXN0b2dyYW1Gcm9tRG9tYWluLFxuICBoaXN0b2dyYW1Gcm9tT3JkaW5hbCxcbiAgcnVuR3B1RmlsdGVyRm9yUGxvdCxcbiAgdXBkYXRlVGltZUZpbHRlclBsb3RUeXBlXG59IGZyb20gJy4vcGxvdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgdHlwZSB7RmllbGRGb3JtYXR0ZXJ9IGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZ3MnO1xuZXhwb3J0IHtcbiAgU0FNUExFX1RJTUVMSU5FLFxuICBUSU1FTElORV9NT0RFUyxcbiAgVElNRV9JTlRFUlZBTFNfT1JERVJFRCxcbiAgTGF5ZXJUb0ZpbHRlclRpbWVJbnRlcnZhbCxcbiAgVGlsZVRpbWVJbnRlcnZhbCxcbiAgZ2V0VGltZWxpbmVGcm9tQW5pbWF0aW9uQ29uZmlnLFxuICBnZXRUaW1lbGluZUZyb21GaWx0ZXJcbn0gZnJvbSAnLi90aW1lJztcbmV4cG9ydCB7bWF5YmVIZXhUb0dlbywgZ2V0UG9zaXRpb25Gcm9tSGV4VmFsdWV9IGZyb20gJy4vcG9zaXRpb24tdXRpbHMnO1xuXG5leHBvcnQge1xuICBkYXRhc2V0Q29sb3JNYWtlcixcbiAgZmluZERlZmF1bHRDb2xvckZpZWxkLFxuICBnZXRGaWVsZEZvcm1hdExhYmVscyxcbiAgZ2V0Rm9ybWF0TGFiZWxzLFxuICB2YWxpZGF0ZUlucHV0RGF0YVxufSBmcm9tICcuL2RhdGFzZXQtdXRpbHMnO1xuZXhwb3J0IHtleHBvcnRNYXBUb0hUTUx9IGZyb20gJy4vZXhwb3J0LW1hcC1odG1sJztcbmV4cG9ydCB7XG4gIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSxcbiAgY29udmVydFRvUG5nLFxuICBkYXRhVVJJdG9CbG9iLFxuICBkb3dubG9hZEZpbGUsXG4gIGV4cG9ydEh0bWwsXG4gIGV4cG9ydEltYWdlLFxuICBleHBvcnRKc29uLFxuICBleHBvcnRNYXAsXG4gIGV4cG9ydFRvSnNvblN0cmluZyxcbiAgZGVmYXVsdCBhcyBleHBvcnRlcnMsXG4gIGdldE1hcEpTT04sXG4gIGdldFNjYWxlRnJvbUltYWdlU2l6ZSxcbiAgaXNNU0VkZ2Vcbn0gZnJvbSAnLi9leHBvcnQtdXRpbHMnO1xuZXhwb3J0IHtnZXRGb3JtYXRWYWx1ZSwgZ2V0RGVmYXVsdFRpbWVGb3JtYXR9IGZyb20gJy4vZm9ybWF0JztcbmV4cG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAnLi9nbC11dGlscyc7XG5leHBvcnQge2ZsYXR0ZW5NZXNzYWdlcywgbWVyZ2VNZXNzYWdlc30gZnJvbSAnLi9sb2NhbGUtdXRpbHMnO1xuZXhwb3J0IHtpc1ZhbGlkTWFwSW5mb30gZnJvbSAnLi9tYXAtaW5mby11dGlscyc7XG5leHBvcnQge1xuICBlZGl0Qm90dG9tTWFwU3R5bGUsXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvblxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yJztcbmV4cG9ydCB7dmFsaWRhdGVUb2tlbn0gZnJvbSAnLi9tYXBib3gtdXRpbHMnO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB1c2VEaW1lbnNpb25zLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9uc1xufSBmcm9tICcuL29ic2VydmUtZGltZW5zaW9ucyc7XG5leHBvcnQgdHlwZSB7RGltZW5zaW9uc30gZnJvbSAnLi9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuZXhwb3J0IHtzbmFwVG9NYXJrcywgZ2V0VGltZUJpbnN9IGZyb20gJy4vcGxvdCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24tdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGxpdC1tYXAtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7XG4gIGNvbXB1dGVEZWNrRWZmZWN0cyxcbiAgZml4RWZmZWN0T3JkZXIsXG4gIHJlb3JkZXJFZmZlY3RPcmRlcixcbiAgdmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzXG59IGZyb20gJy4vZWZmZWN0LXV0aWxzJztcblxuLy8gTWFwYm94XG5leHBvcnQge1xuICBpc1N0eWxlVXNpbmdNYXBib3hUaWxlcyxcbiAgaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzLFxuICBnZXRCYXNlTWFwTGlicmFyeSxcbiAgdHJhbnNmb3JtUmVxdWVzdFxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuXG4vLyBNYXBcbmV4cG9ydCAqIGZyb20gJy4vbWFwLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgQXJyb3dEYXRhQ29udGFpbmVyLFxuICBhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlLFxuICBhcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGUsXG4gIGlzQXJyb3dUYWJsZSxcbiAgaXNBcnJvd0ZpeGVkU2l6ZUxpc3QsXG4gIGlzQXJyb3dTdHJ1Y3QsXG4gIGlzQXJyb3dWZWN0b3Jcbn0gZnJvbSAnLi9hcnJvdy1kYXRhLWNvbnRhaW5lcic7XG5leHBvcnQgdHlwZSB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuZXhwb3J0IHtcbiAgRGF0YUZvcm0sXG4gIGNyZWF0ZURhdGFDb250YWluZXIsXG4gIGNyZWF0ZUluZGV4ZWREYXRhQ29udGFpbmVyLFxuICBnZXRTYW1wbGVEYXRhIGFzIGdldFNhbXBsZUNvbnRhaW5lckRhdGFcbn0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci11dGlscyc7XG5leHBvcnQgdHlwZSB7RmlsdGVyQ2hhbmdlZCwgRmlsdGVyUmVzdWx0LCBkYXRhVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9maWx0ZXItdXRpbHMnO1xuXG5leHBvcnQge1xuICBjb2xvck1hcFRvQ29sb3JCcmVha3MsXG4gIGNvbG9yQnJlYWtzVG9Db2xvck1hcCxcbiAgZ2V0TGF5ZXJDb2xvclNjYWxlLFxuICBnZXRMZWdlbmRPZlNjYWxlLFxuICBnZXRMaW5lYXJEb21haW4sXG4gIGdldExvZ0RvbWFpbixcbiAgZ2V0T3JkaW5hbERvbWFpbixcbiAgZ2V0UXVhbnRpbGVEb21haW4sXG4gIGdldFNjYWxlRnVuY3Rpb24sXG4gIGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSxcbiAgaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAsXG4gIGlzTnVtZXJpY0NvbG9yQnJlYWtzLFxuICBpc0RvbWFpblN0b3BzLFxuICBpc0RvbWFpblF1YW50aWxlLFxuICBnZXREb21haW5TdGVwc2J5Wm9vbSxcbiAgZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMsXG4gIGdldFF1YW50TGFiZWxGb3JtYXQsXG4gIGdldEhpc3RvZ3JhbURvbWFpbixcbiAgZ2V0UXVhbnRMZWdlbmRzLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yTWFwLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yU2NhbGUsXG4gIGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSxcbiAgY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MsXG4gIHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgsXG4gIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCxcbiAgcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcCxcbiAgYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwXG59IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5leHBvcnQgdHlwZSB7Q29sb3JCcmVhaywgQ29sb3JCcmVha09yZGluYWwsIERvbWFpblF1YW50aWxlcywgRG9tYWluU3RvcHN9IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5cbmV4cG9ydCB7RGF0YVJvd30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbi8vIEFwcGxpY2F0aW9uIGNvbmZpZ1xuZXhwb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgaW5pdEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5leHBvcnQgdHlwZSB7XG4gIEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnLFxuICBCYXNlTWFwTGlicmFyeUNvbmZpZyxcbiAgTWFwTGliSW5zdGFuY2UsXG4gIEdldE1hcFJlZlxufSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5leHBvcnQgdHlwZSB7RGF0YWJhc2VBZGFwdGVyLCBEYXRhYmFzZUNvbm5lY3Rpb259IGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlnLXR5cGVzJztcblxuLy8gQnJvd3NlciB1dGlsc1xuZXhwb3J0IHtpc0FwcGxlRGV2aWNlfSBmcm9tICcuL2Jyb3dzZXItdXRpbHMnO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgcXVpY2tJbnNlcnRpb25Tb3J0fSBmcm9tICcuL3F1aWNrLWluc2VydGlvbi1zb3J0JztcblxuZXhwb3J0IHR5cGUge0tlcGxlclRhYmxlTW9kZWx9IGZyb20gJy4vdHlwZXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQUEs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/utils",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.2",
4
+ "version": "3.2.4",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,9 +31,9 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@deck.gl/core": "^8.9.27",
34
- "@kepler.gl/common-utils": "3.2.2",
35
- "@kepler.gl/constants": "3.2.2",
36
- "@kepler.gl/types": "3.2.2",
34
+ "@kepler.gl/common-utils": "3.2.4",
35
+ "@kepler.gl/constants": "3.2.4",
36
+ "@kepler.gl/types": "3.2.4",
37
37
  "@loaders.gl/arrow": "^4.3.2",
38
38
  "@luma.gl/constants": "^8.5.20",
39
39
  "@luma.gl/core": "^8.5.20",