kepler.gl 3.2.1 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/src/utils/src/arrow-data-container.d.ts +3 -2
  2. package/dist/src/utils/src/data-container-utils.d.ts +2 -0
  3. package/package.json +2 -2
  4. package/src/actions/package.json +8 -8
  5. package/src/ai-assistant/package.json +7 -7
  6. package/src/cloud-providers/package.json +2 -2
  7. package/src/common-utils/package.json +3 -3
  8. package/src/components/package.json +15 -15
  9. package/src/constants/dist/default-settings.js +1 -1
  10. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/1b/11/43d4199b6142de0b88c672f2b036c5aa4ca836cf35977bbafcdb1962b91e94f8336655a57f0742571ceb13fc69ef4ba0e3cb91dc9a8d61ef041c6eb15e7a +1 -0
  11. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/ac/e2/e903ec95ada0b0075fdcfb6133e2e75c9b3b0504a29ca665704aaed90b2b +2 -0
  12. package/src/constants/package.json +2 -2
  13. package/src/constants/umd/keplergl.min.js +1 -1
  14. package/src/deckgl-arrow-layers/package.json +2 -2
  15. package/src/deckgl-layers/package.json +4 -4
  16. package/src/duckdb/package.json +6 -6
  17. package/src/effects/package.json +5 -5
  18. package/src/layers/dist/geojson-layer/geojson-utils.js +23 -5
  19. package/src/layers/package.json +9 -9
  20. package/src/layers/src/geojson-layer/geojson-utils.ts +22 -0
  21. package/src/localization/package.json +1 -1
  22. package/src/processors/package.json +7 -7
  23. package/src/reducers/package.json +16 -16
  24. package/src/schemas/package.json +7 -7
  25. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/53/93/f8e389b6450ee0636bf336363d2d6865d8a1fe2445c15cc1e36c651e1ddf448358eb74e894f4bf6fc48ef881dc64cc221c48b133ecf0e02132f2c5fbfe11 +1 -0
  26. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/2e/45/ed6e0c1beb8bca4698a47b5feda8789a22d96978bc4839949bd26e827454 +2 -0
  27. package/src/styles/package.json +2 -2
  28. package/src/styles/umd/keplergl.min.js +1 -1
  29. package/src/table/dist/dataset-utils.js +18 -7
  30. package/src/table/dist/kepler-table.js +2 -1
  31. package/src/table/package.json +5 -5
  32. package/src/table/src/dataset-utils.ts +7 -2
  33. package/src/table/src/kepler-table.ts +1 -0
  34. package/src/tasks/package.json +2 -2
  35. package/src/types/actions.d.ts +1 -0
  36. package/src/types/package.json +1 -1
  37. package/src/utils/dist/arrow-data-container.d.ts +3 -2
  38. package/src/utils/dist/arrow-data-container.js +3 -3
  39. package/src/utils/dist/data-container-utils.d.ts +2 -0
  40. package/src/utils/dist/data-container-utils.js +3 -2
  41. package/src/utils/package.json +4 -4
  42. package/src/utils/src/arrow-data-container.ts +9 -7
  43. package/src/utils/src/data-container-utils.ts +3 -1
  44. package/umd/keplergl.min.js +642 -642
@@ -9,8 +9,8 @@ exports.getNewDatasetColor = getNewDatasetColor;
9
9
  exports.getWMSCapabilities = getWMSCapabilities;
10
10
  exports.wmsCapabilitiesToDatasetMetadata = wmsCapabilitiesToDatasetMetadata;
11
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
15
  var _uniq = _interopRequireDefault(require("lodash/uniq"));
16
16
  var _keplerTable = _interopRequireDefault(require("./kepler-table"));
@@ -83,7 +83,9 @@ function createNewDataEntry(_ref) {
83
83
  info: info,
84
84
  color: color,
85
85
  opts: opts,
86
- data: validatedData
86
+ data: data.arrowTable ? _objectSpread(_objectSpread({}, validatedData), {}, {
87
+ arrowTable: data.arrowTable
88
+ }) : validatedData
87
89
  });
88
90
  }
89
91
  function updateTable(_x) {
@@ -138,17 +140,26 @@ function _createTable() {
138
140
  }, opts), {}, {
139
141
  metadata: metadata
140
142
  }));
141
- _context2.next = 10;
143
+ _context2.prev = 8;
144
+ _context2.next = 11;
142
145
  return table.importData({
143
146
  data: data
144
147
  });
145
- case 10:
146
- return _context2.abrupt("return", table);
147
148
  case 11:
149
+ _context2.next = 17;
150
+ break;
151
+ case 13:
152
+ _context2.prev = 13;
153
+ _context2.t0 = _context2["catch"](8);
154
+ console.error('Failed to create table', _context2.t0);
155
+ throw _context2.t0;
156
+ case 17:
157
+ return _context2.abrupt("return", table);
158
+ case 18:
148
159
  case "end":
149
160
  return _context2.stop();
150
161
  }
151
- }, _callee2);
162
+ }, _callee2, null, [[8, 13]]);
152
163
  }));
153
164
  return _createTable.apply(this, arguments);
154
165
  }
@@ -422,4 +433,4 @@ function wmsCapabilitiesToDatasetMetadata(capabilities) {
422
433
  version: capabilities.version || '1.3.0'
423
434
  };
424
435
  }
425
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2tlcGxlclRhYmxlIiwiX3Rhc2tzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9jb3JlIiwiX3BtdGlsZXMiLCJfd21zIiwiX3RpbGVzZXRVdGlscyIsIl9yYXN0ZXJUaWxlVXRpbHMiLCJfdmVjdG9yVGlsZVV0aWxzIiwiX2V4Y2x1ZGVkIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkYXRhc2V0Q29sb3JzIiwibWFwIiwiaGV4VG9SZ2IiLCJnZXROZXdEYXRhc2V0Q29sb3IiLCJkYXRhc2V0cyIsInByZXNldENvbG9ycyIsIlN0cmluZyIsInVzZWRDb2xvcnMiLCJ1bmlxIiwidmFsdWVzIiwiZCIsImNvbG9yIiwiYyIsImluY2x1ZGVzIiwiZGF0YXNldENvbG9yTWFrZXIiLCJuZXh0IiwidmFsdWUiLCJjcmVhdGVOZXdEYXRhRW50cnkiLCJfcmVmIiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnIiwiaW5mbyIsImRhdGEiLCJvcHRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInVuZGVmaW5lZCIsIlRhYmxlQ2xhc3MiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsInRhYmxlIiwiS2VwbGVyVGFibGUiLCJkYXRhVmFsaWRhdG9yIiwidmFsaWRhdGVJbnB1dERhdGEiLCJnZXRJbnB1dERhdGFWYWxpZGF0b3IiLCJ2YWxpZGF0ZWREYXRhIiwiaWQiLCJrZXBsZXJUYWJsZSIsIlVQREFURV9UQUJMRV9UQVNLIiwiQ1JFQVRFX1RBQkxFX1RBU0siLCJ1cGRhdGVUYWJsZSIsIl94IiwiX3VwZGF0ZVRhYmxlIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmMiIsInVwZGF0ZWQiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJ1cGRhdGUiLCJzZW50IiwiYWJydXB0Iiwic3RvcCIsImNyZWF0ZVRhYmxlIiwiX3gyIiwiX2NyZWF0ZVRhYmxlIiwiX2NhbGxlZTIiLCJkYXRhc2V0SW5mbyIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZzIiLCJyZWZyZXNoZWRNZXRhZGF0YSIsIm1ldGFkYXRhIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicmVmcmVzaFJlbW90ZURhdGEiLCJmaWVsZHMiLCJpbXBvcnREYXRhIiwiVGFzayIsImZyb21Qcm9taXNlIiwiX3gzIiwiX3JlZnJlc2hSZW1vdGVEYXRhIiwiX2NhbGxlZTMiLCJ0eXBlIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwidDAiLCJEYXRhc2V0VHlwZSIsIlZFQ1RPUl9USUxFIiwiUkFTVEVSX1RJTEUiLCJXTVNfVElMRSIsInJlZnJlc2hWZWN0b3JUaWxlTWV0YWRhdGEiLCJyZWZyZXNoUmFzdGVyVGlsZU1ldGFkYXRhIiwicmVmcmVzaFdNU01ldGFkYXRhIiwiX3g0IiwiX3JlZnJlc2hWZWN0b3JUaWxlTWV0YWRhdGEiLCJfY2FsbGVlNCIsIl9yZWYzIiwicmVtb3RlVGlsZUZvcm1hdCIsInRpbGVzZXRNZXRhZGF0YVVybCIsInRpbGVzZXREYXRhVXJsIiwicmF3TWV0YWRhdGEiLCJ0aWxlU291cmNlIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiUmVtb3RlVGlsZUZvcm1hdCIsIlBNVElMRVMiLCJNVlQiLCJnZXRNVlRNZXRhZGF0YSIsIlBNVGlsZXNTb3VyY2UiLCJjcmVhdGVEYXRhU291cmNlIiwicGFyc2VWZWN0b3JNZXRhZGF0YSIsImdldEZpZWxkc0Zyb21UaWxlIiwidGlsZXNldFVybCIsIm1ldGFkYXRhVXJsIiwiX3g1IiwiX3JlZnJlc2hSYXN0ZXJUaWxlTWV0YWRhdGEiLCJfY2FsbGVlNSIsIl9yZWY0IiwicG10aWxlc1R5cGUiLCJyZXNwb25zZSIsIl9yYXdNZXRhZGF0YSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIlBNVGlsZXNUeXBlIiwiUkFTVEVSIiwiZmV0Y2giLCJvayIsIkVycm9yIiwiY29uY2F0IiwianNvbiIsInBhcnNlUmFzdGVyTWV0YWRhdGEiLCJhbGxvd0NvbGxlY3Rpb25zIiwibWVzc2FnZSIsIl94NiIsIl9yZWZyZXNoV01TTWV0YWRhdGEiLCJfY2FsbGVlNiIsIl9yZWY1IiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwiV01TIiwiZ2V0V01TQ2FwYWJpbGl0aWVzIiwid21zQ2FwYWJpbGl0aWVzVG9EYXRhc2V0TWV0YWRhdGEiLCJfeDciLCJfZ2V0V01TQ2FwYWJpbGl0aWVzIiwiX2NhbGxlZTciLCJ3c21VcmwiLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJsb2FkIiwiV01TQ2FwYWJpbGl0aWVzTG9hZGVyIiwiY2FwYWJpbGl0aWVzIiwibGF5ZXJzIiwiZmxhdE1hcCIsImxheWVyIiwiYXZhaWxhYmxlTGF5ZXJzIiwiQXJyYXkiLCJpc0FycmF5IiwiYmIiLCJnZW9ncmFwaGljQm91bmRpbmdCb3giLCJib3VuZGluZ0JveCIsIm5hbWUiLCJ0aXRsZSIsInF1ZXJ5YWJsZSIsInZlcnNpb24iXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YXNldC11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgS2VwbGVyVGFibGUsIHtEYXRhc2V0c30gZnJvbSAnLi9rZXBsZXItdGFibGUnO1xuaW1wb3J0IHtQcm90b0RhdGFzZXQsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCBUYXNrIGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuXG5pbXBvcnQge1xuICBEYXRhc2V0VHlwZSxcbiAgUmFzdGVyVGlsZURhdGFzZXRNZXRhZGF0YSxcbiAgUE1UaWxlc1R5cGUsXG4gIFJlbW90ZVRpbGVGb3JtYXQsXG4gIFZlY3RvclRpbGVEYXRhc2V0TWV0YWRhdGEsXG4gIFdNU0RhdGFzZXRNZXRhZGF0YVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBoZXhUb1JnYixcbiAgdmFsaWRhdGVJbnB1dERhdGEsXG4gIGRhdGFzZXRDb2xvck1ha2VyLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZ1xufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtsb2FkfSBmcm9tICdAbG9hZGVycy5nbC9jb3JlJztcbmltcG9ydCB7LyogTVZUU291cmNlLCovIFRpbGVKU09OfSBmcm9tICdAbG9hZGVycy5nbC9tdnQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzTWV0YWRhdGF9IGZyb20gJ0Bsb2FkZXJzLmdsL3BtdGlsZXMnO1xuaW1wb3J0IHtXTVNDYXBhYmlsaXRpZXMsIFdNU0NhcGFiaWxpdGllc0xvYWRlcn0gZnJvbSAnQGxvYWRlcnMuZ2wvd21zJztcblxuaW1wb3J0IHtnZXRNVlRNZXRhZGF0YX0gZnJvbSAnLi90aWxlc2V0L3RpbGVzZXQtdXRpbHMnO1xuaW1wb3J0IHtwYXJzZVJhc3Rlck1ldGFkYXRhfSBmcm9tICcuL3RpbGVzZXQvcmFzdGVyLXRpbGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VWZWN0b3JNZXRhZGF0YSxcbiAgZ2V0RmllbGRzRnJvbVRpbGUsXG4gIFZlY3RvclRpbGVNZXRhZGF0YVxufSBmcm9tICcuL3RpbGVzZXQvdmVjdG9yLXRpbGUtdXRpbHMnO1xuXG4vLyBhcHBseSBhIGNvbG9yIGZvciBlYWNoIGRhdGFzZXRcbi8vIHRvIHVzZSBhcyBsYWJlbCBjb2xvcnNcbmNvbnN0IGRhdGFzZXRDb2xvcnMgPSBbXG4gICcjOEYyRkJGJyxcbiAgJyMwMDVDRkYnLFxuICAnI0MwNkM4NCcsXG4gICcjRjhCMTk1JyxcbiAgJyM1NDdBODInLFxuICAnIzNFQUNBOCcsXG4gICcjQTJENEFCJ1xuXS5tYXAoaGV4VG9SZ2IpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3RGF0YXNldENvbG9yKGRhdGFzZXRzOiBEYXRhc2V0cyk6IFJHQkNvbG9yIHtcbiAgY29uc3QgcHJlc2V0Q29sb3JzID0gZGF0YXNldENvbG9ycy5tYXAoU3RyaW5nKTtcbiAgY29uc3QgdXNlZENvbG9ycyA9IHVuaXEoT2JqZWN0LnZhbHVlcyhkYXRhc2V0cykubWFwKGQgPT4gU3RyaW5nKGQuY29sb3IpKSkuZmlsdGVyKGMgPT5cbiAgICBwcmVzZXRDb2xvcnMuaW5jbHVkZXMoYylcbiAgKTtcblxuICBpZiAodXNlZENvbG9ycy5sZW5ndGggPT09IHByZXNldENvbG9ycy5sZW5ndGgpIHtcbiAgICAvLyBpZiB3ZSBhbHJlYWR5IGRlcGxldGVkIHRoZSBwb29sIG9mIGNvbG9yXG4gICAgcmV0dXJuIGRhdGFzZXRDb2xvck1ha2VyLm5leHQoKS52YWx1ZTtcbiAgfVxuXG4gIGxldCBjb2xvciA9IGRhdGFzZXRDb2xvck1ha2VyLm5leHQoKS52YWx1ZTtcbiAgd2hpbGUgKHVzZWRDb2xvcnMuaW5jbHVkZXMoU3RyaW5nKGNvbG9yKSkpIHtcbiAgICBjb2xvciA9IGRhdGFzZXRDb2xvck1ha2VyLm5leHQoKS52YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBjb2xvcjtcbn1cblxuLyoqXG4gKiBUYWtlIGRhdGFzZXRzIHBheWxvYWQgZnJvbSBhZGREYXRhVG9NYXAsIGNyZWF0ZSBkYXRhc2V0cyBlbnRyeSBzYXZlIHRvIHZpc1N0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdEYXRhRW50cnkoXG4gIHtpbmZvLCBkYXRhLCAuLi5vcHRzfTogUHJvdG9EYXRhc2V0LFxuICBkYXRhc2V0czogRGF0YXNldHMgPSB7fVxuKTogRGF0YXNldHMgfCBudWxsIHtcbiAgY29uc3QgVGFibGVDbGFzcyA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkudGFibGUgPz8gS2VwbGVyVGFibGU7XG4gIGxldCBkYXRhVmFsaWRhdG9yID0gdmFsaWRhdGVJbnB1dERhdGE7XG4gIGlmICh0eXBlb2YgVGFibGVDbGFzcy5nZXRJbnB1dERhdGFWYWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkYXRhVmFsaWRhdG9yID0gVGFibGVDbGFzcy5nZXRJbnB1dERhdGFWYWxpZGF0b3IoKTtcbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRlZERhdGEgPSBkYXRhVmFsaWRhdG9yKGRhdGEpO1xuICBpZiAoIXZhbGlkYXRlZERhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIGNoZWNrIGlmIGRhdGFzZXQgYWxyZWFkeSBleGlzdHMsIGFuZCB1cGRhdGUgaXQgd2hlbiBsb2FkaW5nIGRhdGEgYnkgYmF0Y2hlcyBpbmNyZW1lbnRhbGx5XG4gIGlmIChpbmZvICYmIGluZm8uaWQgJiYgZGF0YXNldHNbaW5mby5pZF0pIHtcbiAgICAvLyBnZXQga2VwbGVyVGFibGUgZnJvbSBkYXRhc2V0c1xuICAgIGNvbnN0IGtlcGxlclRhYmxlID0gZGF0YXNldHNbaW5mby5pZF07XG4gICAgLy8gdXBkYXRlIHRoZSBkYXRhIGluIGtlcGxlclRhYmxlXG4gICAgcmV0dXJuIFVQREFURV9UQUJMRV9UQVNLKHt0YWJsZToga2VwbGVyVGFibGUsIGRhdGE6IHZhbGlkYXRlZERhdGF9KTtcbiAgfVxuXG4gIGluZm8gPSBpbmZvIHx8IHt9O1xuICBjb25zdCBjb2xvciA9IGluZm8uY29sb3IgfHwgZ2V0TmV3RGF0YXNldENvbG9yKGRhdGFzZXRzKTtcblxuICByZXR1cm4gQ1JFQVRFX1RBQkxFX1RBU0soe1xuICAgIGluZm8sXG4gICAgY29sb3IsXG4gICAgb3B0cyxcbiAgICBkYXRhOiB2YWxpZGF0ZWREYXRhXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVUYWJsZSh7dGFibGUsIGRhdGF9KSB7XG4gIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0YWJsZS51cGRhdGUoZGF0YSk7IC8vIEFzc3VtaW5nIGB0YWJsZWAgaGFzIGFuIGB1cGRhdGVgIG1ldGhvZFxuICByZXR1cm4gdXBkYXRlZDtcbn1cblxudHlwZSBDcmVhdGVUYWJsZVByb3BzID0ge1xuICBpbmZvOiBhbnk7XG4gIGNvbG9yOiBSR0JDb2xvcjtcbiAgb3B0czoge1xuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH07XG4gIGRhdGE6IGFueTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRhYmxlKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKSB7XG4gIGNvbnN0IHtpbmZvLCBjb2xvciwgb3B0cywgZGF0YX0gPSBkYXRhc2V0SW5mbztcblxuICAvLyB1cGRhdGUgbWV0YWRhdGEgZm9yIHJlbW90ZSB0aWxlZCBkYXRhc2V0c1xuICBjb25zdCByZWZyZXNoZWRNZXRhZGF0YSA9IGF3YWl0IHJlZnJlc2hSZW1vdGVEYXRhKGRhdGFzZXRJbmZvKTtcbiAgbGV0IG1ldGFkYXRhID0gb3B0cy5tZXRhZGF0YTtcbiAgaWYgKHJlZnJlc2hlZE1ldGFkYXRhKSB7XG4gICAgbWV0YWRhdGEgPSB7Li4ub3B0cy5tZXRhZGF0YSwgLi4ucmVmcmVzaGVkTWV0YWRhdGF9O1xuICAgIGlmIChtZXRhZGF0YS5maWVsZHMpIHtcbiAgICAgIGRhdGEuZmllbGRzID0gbWV0YWRhdGEuZmllbGRzO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IFRhYmxlQ2xhc3MgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZUNsYXNzKHtcbiAgICBpbmZvLFxuICAgIGNvbG9yLFxuICAgIC4uLm9wdHMsXG4gICAgbWV0YWRhdGFcbiAgfSk7XG4gIGF3YWl0IHRhYmxlLmltcG9ydERhdGEoe2RhdGF9KTtcblxuICByZXR1cm4gdGFibGU7XG59XG5jb25zdCBVUERBVEVfVEFCTEVfVEFTSyA9IFRhc2suZnJvbVByb21pc2UodXBkYXRlVGFibGUsICdVUERBVEVfVEFCTEVfVEFTSycpO1xuY29uc3QgQ1JFQVRFX1RBQkxFX1RBU0sgPSBUYXNrLmZyb21Qcm9taXNlKGNyZWF0ZVRhYmxlLCAnQ1JFQVRFX1RBQkxFX1RBU0snKTtcblxuLyoqXG4gKiBGZXRjaCBtZXRhZGF0YSBmb3IgdmVjdG9yIHRpbGUgbGF5ZXJzIHVzaW5nIHRpbGVzZXRNZXRhZGF0YVVybCBmcm9tIG1ldGFkYXRhXG4gKiBAcGFyYW0gZGF0YXNldEluZm9cbiAqIEByZXR1cm5zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hSZW1vdGVEYXRhKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKTogUHJvbWlzZTxvYmplY3QgfCBudWxsPiB7XG4gIGNvbnN0IHt0eXBlfSA9IGRhdGFzZXRJbmZvLmluZm87XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRGF0YXNldFR5cGUuVkVDVE9SX1RJTEU6XG4gICAgICByZXR1cm4gYXdhaXQgcmVmcmVzaFZlY3RvclRpbGVNZXRhZGF0YShkYXRhc2V0SW5mbyk7XG4gICAgY2FzZSBEYXRhc2V0VHlwZS5SQVNURVJfVElMRTpcbiAgICAgIHJldHVybiBhd2FpdCByZWZyZXNoUmFzdGVyVGlsZU1ldGFkYXRhKGRhdGFzZXRJbmZvKTtcbiAgICBjYXNlIERhdGFzZXRUeXBlLldNU19USUxFOlxuICAgICAgcmV0dXJuIGF3YWl0IHJlZnJlc2hXTVNNZXRhZGF0YShkYXRhc2V0SW5mbyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hWZWN0b3JUaWxlTWV0YWRhdGEoXG4gIGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzXG4pOiBQcm9taXNlPFZlY3RvclRpbGVNZXRhZGF0YSB8IG51bGw+IHtcbiAgY29uc3Qge3JlbW90ZVRpbGVGb3JtYXQsIHRpbGVzZXRNZXRhZGF0YVVybCwgdGlsZXNldERhdGFVcmx9ID1cbiAgICAoZGF0YXNldEluZm8ub3B0cy5tZXRhZGF0YSBhcyBWZWN0b3JUaWxlRGF0YXNldE1ldGFkYXRhKSB8fCB7fTtcblxuICBpZiAoXG4gICAgIShyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0LlBNVElMRVMgfHwgcmVtb3RlVGlsZUZvcm1hdCA9PT0gUmVtb3RlVGlsZUZvcm1hdC5NVlQpIHx8XG4gICAgdHlwZW9mIHRpbGVzZXRNZXRhZGF0YVVybCAhPT0gJ3N0cmluZycgfHxcbiAgICB0eXBlb2YgdGlsZXNldERhdGFVcmwgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsZXQgcmF3TWV0YWRhdGE6IFBNVGlsZXNNZXRhZGF0YSB8IFRpbGVKU09OIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHJlbW90ZVRpbGVGb3JtYXQgPT09IFJlbW90ZVRpbGVGb3JtYXQuTVZUKSB7XG4gICAgICByYXdNZXRhZGF0YSA9IGF3YWl0IGdldE1WVE1ldGFkYXRhKHRpbGVzZXRNZXRhZGF0YVVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRpbGVTb3VyY2UgPSBQTVRpbGVzU291cmNlLmNyZWF0ZURhdGFTb3VyY2UodGlsZXNldE1ldGFkYXRhVXJsLCB7fSk7XG4gICAgICByYXdNZXRhZGF0YSA9IGF3YWl0IHRpbGVTb3VyY2UubWV0YWRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHJhd01ldGFkYXRhKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHBhcnNlVmVjdG9yTWV0YWRhdGEocmF3TWV0YWRhdGEpO1xuXG4gICAgICBhd2FpdCBnZXRGaWVsZHNGcm9tVGlsZSh7XG4gICAgICAgIHJlbW90ZVRpbGVGb3JtYXQsXG4gICAgICAgIHRpbGVzZXRVcmw6IHRpbGVzZXREYXRhVXJsLFxuICAgICAgICBtZXRhZGF0YVVybDogdGlsZXNldE1ldGFkYXRhVXJsLFxuICAgICAgICBtZXRhZGF0YVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlnbm9yZSBmb3Igbm93LCBhbmQgdXNlIG9sZCBtZXRhZGF0YVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoUmFzdGVyVGlsZU1ldGFkYXRhKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKTogUHJvbWlzZTxhbnkgfCBudWxsPiB7XG4gIGNvbnN0IHttZXRhZGF0YVVybCwgcG10aWxlc1R5cGV9ID0gKGRhdGFzZXRJbmZvLm9wdHMubWV0YWRhdGEgYXMgUmFzdGVyVGlsZURhdGFzZXRNZXRhZGF0YSkgfHwge307XG5cbiAgaWYgKHR5cGVvZiBtZXRhZGF0YVVybCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKHBtdGlsZXNUeXBlID09PSBQTVRpbGVzVHlwZS5SQVNURVIpIHtcbiAgICAgIGNvbnN0IHRpbGVTb3VyY2UgPSBQTVRpbGVzU291cmNlLmNyZWF0ZURhdGFTb3VyY2UobWV0YWRhdGFVcmwsIHt9KTtcbiAgICAgIGNvbnN0IHJhd01ldGFkYXRhOiBQTVRpbGVzTWV0YWRhdGEgPSBhd2FpdCB0aWxlU291cmNlLm1ldGFkYXRhO1xuXG4gICAgICBpZiAocmF3TWV0YWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlVmVjdG9yTWV0YWRhdGEocmF3TWV0YWRhdGEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpdCdzIHN0YWMgcmFzdGVyIHRpbGVzXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKG1ldGFkYXRhVXJsKTtcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgRmV0Y2ggJHttZXRhZGF0YVVybH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhd01ldGFkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHBhcnNlUmFzdGVyTWV0YWRhdGEocmF3TWV0YWRhdGEsIHthbGxvd0NvbGxlY3Rpb25zOiB0cnVlfSk7XG4gICAgICBpZiAobWV0YWRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBtZXRhZGF0YSAke21ldGFkYXRhLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlnbm9yZSBmb3Igbm93LCBhbmQgdXNlIG9sZCBtZXRhZGF0YVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoV01TTWV0YWRhdGEoZGF0YXNldEluZm86IENyZWF0ZVRhYmxlUHJvcHMpOiBQcm9taXNlPGFueSB8IG51bGw+IHtcbiAgY29uc3Qge3JlbW90ZVRpbGVGb3JtYXQsIHRpbGVzZXREYXRhVXJsfSA9XG4gICAgKGRhdGFzZXRJbmZvLm9wdHMubWV0YWRhdGEgYXMgV01TRGF0YXNldE1ldGFkYXRhKSB8fCB7fTtcblxuICBpZiAocmVtb3RlVGlsZUZvcm1hdCAhPT0gUmVtb3RlVGlsZUZvcm1hdC5XTVMgfHwgdHlwZW9mIHRpbGVzZXREYXRhVXJsICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0V01TQ2FwYWJpbGl0aWVzKHRpbGVzZXREYXRhVXJsKTtcbiAgICByZXR1cm4gd21zQ2FwYWJpbGl0aWVzVG9EYXRhc2V0TWV0YWRhdGEoZGF0YSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlnbm9yZSBmb3Igbm93LCBhbmQgdXNlIG9sZCBtZXRhZGF0YVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V01TQ2FwYWJpbGl0aWVzKHdzbVVybDogc3RyaW5nKTogUHJvbWlzZTxXTVNDYXBhYmlsaXRpZXM+IHtcbiAgcmV0dXJuIChhd2FpdCBsb2FkKFxuICAgIGAke3dzbVVybH0/c2VydmljZT1XTVMmcmVxdWVzdD1HZXRDYXBhYmlsaXRpZXNgLFxuICAgIFdNU0NhcGFiaWxpdGllc0xvYWRlclxuICApKSBhcyBXTVNDYXBhYmlsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3bXNDYXBhYmlsaXRpZXNUb0RhdGFzZXRNZXRhZGF0YShjYXBhYmlsaXRpZXM6IFdNU0NhcGFiaWxpdGllcyk6IGFueSB8IG51bGwge1xuICAvLyBGbGF0dGVuIGxheWVycyBpZiB0aGV5IGFyZSBuZXN0ZWRcbiAgY29uc3QgbGF5ZXJzID0gY2FwYWJpbGl0aWVzLmxheWVycy5mbGF0TWFwKGxheWVyID0+IHtcbiAgICBpZiAobGF5ZXIubGF5ZXJzICYmIGxheWVyLmxheWVycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbGF5ZXIubGF5ZXJzO1xuICAgIH1cbiAgICByZXR1cm4gbGF5ZXI7XG4gIH0pO1xuXG4gIGxldCBhdmFpbGFibGVMYXllcnM6IFdNU0RhdGFzZXRNZXRhZGF0YVsnbGF5ZXJzJ10gPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobGF5ZXJzKSkge1xuICAgIGF2YWlsYWJsZUxheWVycyA9IGxheWVycy5tYXAoKGxheWVyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGJiID0gbGF5ZXIuZ2VvZ3JhcGhpY0JvdW5kaW5nQm94O1xuXG4gICAgICBsZXQgYm91bmRpbmdCb3g6IG51bWJlcltdIHwgbnVsbCA9IG51bGw7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShiYikgJiYgQXJyYXkuaXNBcnJheShiYlswXSkgJiYgQXJyYXkuaXNBcnJheShiYlsxXSkpIHtcbiAgICAgICAgYm91bmRpbmdCb3ggPSBbYmJbMF1bMF0sIGJiWzBdWzFdLCBiYlsxXVswXSwgYmJbMV1bMV1dO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBsYXllci5uYW1lLFxuICAgICAgICB0aXRsZTogbGF5ZXIudGl0bGUgfHwgbGF5ZXIubmFtZSxcbiAgICAgICAgYm91bmRpbmdCb3gsXG4gICAgICAgIHF1ZXJ5YWJsZTogbGF5ZXIucXVlcnlhYmxlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsYXllcnM6IGF2YWlsYWJsZUxheWVycyxcbiAgICB2ZXJzaW9uOiBjYXBhYmlsaXRpZXMudmVyc2lvbiB8fCAnMS4zLjAnXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBUUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBT0EsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sSUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGdCQUFBLEdBQUFWLE9BQUE7QUFJcUMsSUFBQVcsU0FBQSxxQkFsQ3JDO0FBQ0E7QUFBQSxTQUFBQyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxx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
436
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2tlcGxlclRhYmxlIiwiX3Rhc2tzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9jb3JlIiwiX3BtdGlsZXMiLCJfd21zIiwiX3RpbGVzZXRVdGlscyIsIl9yYXN0ZXJUaWxlVXRpbHMiLCJfdmVjdG9yVGlsZVV0aWxzIiwiX2V4Y2x1ZGVkIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkYXRhc2V0Q29sb3JzIiwibWFwIiwiaGV4VG9SZ2IiLCJnZXROZXdEYXRhc2V0Q29sb3IiLCJkYXRhc2V0cyIsInByZXNldENvbG9ycyIsIlN0cmluZyIsInVzZWRDb2xvcnMiLCJ1bmlxIiwidmFsdWVzIiwiZCIsImNvbG9yIiwiYyIsImluY2x1ZGVzIiwiZGF0YXNldENvbG9yTWFrZXIiLCJuZXh0IiwidmFsdWUiLCJjcmVhdGVOZXdEYXRhRW50cnkiLCJfcmVmIiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnIiwiaW5mbyIsImRhdGEiLCJvcHRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInVuZGVmaW5lZCIsIlRhYmxlQ2xhc3MiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsInRhYmxlIiwiS2VwbGVyVGFibGUiLCJkYXRhVmFsaWRhdG9yIiwidmFsaWRhdGVJbnB1dERhdGEiLCJnZXRJbnB1dERhdGFWYWxpZGF0b3IiLCJ2YWxpZGF0ZWREYXRhIiwiaWQiLCJrZXBsZXJUYWJsZSIsIlVQREFURV9UQUJMRV9UQVNLIiwiQ1JFQVRFX1RBQkxFX1RBU0siLCJhcnJvd1RhYmxlIiwidXBkYXRlVGFibGUiLCJfeCIsIl91cGRhdGVUYWJsZSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJ1cGRhdGVkIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwidXBkYXRlIiwic2VudCIsImFicnVwdCIsInN0b3AiLCJjcmVhdGVUYWJsZSIsIl94MiIsIl9jcmVhdGVUYWJsZSIsIl9jYWxsZWUyIiwiZGF0YXNldEluZm8iLCJfZ2V0QXBwbGljYXRpb25Db25maWcyIiwicmVmcmVzaGVkTWV0YWRhdGEiLCJtZXRhZGF0YSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInJlZnJlc2hSZW1vdGVEYXRhIiwiZmllbGRzIiwiaW1wb3J0RGF0YSIsInQwIiwiY29uc29sZSIsImVycm9yIiwiVGFzayIsImZyb21Qcm9taXNlIiwiX3gzIiwiX3JlZnJlc2hSZW1vdGVEYXRhIiwiX2NhbGxlZTMiLCJ0eXBlIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiRGF0YXNldFR5cGUiLCJWRUNUT1JfVElMRSIsIlJBU1RFUl9USUxFIiwiV01TX1RJTEUiLCJyZWZyZXNoVmVjdG9yVGlsZU1ldGFkYXRhIiwicmVmcmVzaFJhc3RlclRpbGVNZXRhZGF0YSIsInJlZnJlc2hXTVNNZXRhZGF0YSIsIl94NCIsIl9yZWZyZXNoVmVjdG9yVGlsZU1ldGFkYXRhIiwiX2NhbGxlZTQiLCJfcmVmMyIsInJlbW90ZVRpbGVGb3JtYXQiLCJ0aWxlc2V0TWV0YWRhdGFVcmwiLCJ0aWxlc2V0RGF0YVVybCIsInJhd01ldGFkYXRhIiwidGlsZVNvdXJjZSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsIlJlbW90ZVRpbGVGb3JtYXQiLCJQTVRJTEVTIiwiTVZUIiwiZ2V0TVZUTWV0YWRhdGEiLCJQTVRpbGVzU291cmNlIiwiY3JlYXRlRGF0YVNvdXJjZSIsInBhcnNlVmVjdG9yTWV0YWRhdGEiLCJnZXRGaWVsZHNGcm9tVGlsZSIsInRpbGVzZXRVcmwiLCJtZXRhZGF0YVVybCIsIl94NSIsIl9yZWZyZXNoUmFzdGVyVGlsZU1ldGFkYXRhIiwiX2NhbGxlZTUiLCJfcmVmNCIsInBtdGlsZXNUeXBlIiwicmVzcG9uc2UiLCJfcmF3TWV0YWRhdGEiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJQTVRpbGVzVHlwZSIsIlJBU1RFUiIsImZldGNoIiwib2siLCJFcnJvciIsImNvbmNhdCIsImpzb24iLCJwYXJzZVJhc3Rlck1ldGFkYXRhIiwiYWxsb3dDb2xsZWN0aW9ucyIsIm1lc3NhZ2UiLCJfeDYiLCJfcmVmcmVzaFdNU01ldGFkYXRhIiwiX2NhbGxlZTYiLCJfcmVmNSIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsIldNUyIsImdldFdNU0NhcGFiaWxpdGllcyIsIndtc0NhcGFiaWxpdGllc1RvRGF0YXNldE1ldGFkYXRhIiwiX3g3IiwiX2dldFdNU0NhcGFiaWxpdGllcyIsIl9jYWxsZWU3Iiwid3NtVXJsIiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3IiwibG9hZCIsIldNU0NhcGFiaWxpdGllc0xvYWRlciIsImNhcGFiaWxpdGllcyIsImxheWVycyIsImZsYXRNYXAiLCJsYXllciIsImF2YWlsYWJsZUxheWVycyIsIkFycmF5IiwiaXNBcnJheSIsImJiIiwiZ2VvZ3JhcGhpY0JvdW5kaW5nQm94IiwiYm91bmRpbmdCb3giLCJuYW1lIiwidGl0bGUiLCJxdWVyeWFibGUiLCJ2ZXJzaW9uIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGFzZXQtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IEtlcGxlclRhYmxlLCB7RGF0YXNldHN9IGZyb20gJy4va2VwbGVyLXRhYmxlJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0LCBSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQgVGFzayBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzJztcblxuaW1wb3J0IHtcbiAgRGF0YXNldFR5cGUsXG4gIFJhc3RlclRpbGVEYXRhc2V0TWV0YWRhdGEsXG4gIFBNVGlsZXNUeXBlLFxuICBSZW1vdGVUaWxlRm9ybWF0LFxuICBWZWN0b3JUaWxlRGF0YXNldE1ldGFkYXRhLFxuICBXTVNEYXRhc2V0TWV0YWRhdGFcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgaGV4VG9SZ2IsXG4gIHZhbGlkYXRlSW5wdXREYXRhLFxuICBkYXRhc2V0Q29sb3JNYWtlcixcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7bG9hZH0gZnJvbSAnQGxvYWRlcnMuZ2wvY29yZSc7XG5pbXBvcnQgey8qIE1WVFNvdXJjZSwqLyBUaWxlSlNPTn0gZnJvbSAnQGxvYWRlcnMuZ2wvbXZ0JztcbmltcG9ydCB7UE1UaWxlc1NvdXJjZSwgUE1UaWxlc01ldGFkYXRhfSBmcm9tICdAbG9hZGVycy5nbC9wbXRpbGVzJztcbmltcG9ydCB7V01TQ2FwYWJpbGl0aWVzLCBXTVNDYXBhYmlsaXRpZXNMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL3dtcyc7XG5cbmltcG9ydCB7Z2V0TVZUTWV0YWRhdGF9IGZyb20gJy4vdGlsZXNldC90aWxlc2V0LXV0aWxzJztcbmltcG9ydCB7cGFyc2VSYXN0ZXJNZXRhZGF0YX0gZnJvbSAnLi90aWxlc2V0L3Jhc3Rlci10aWxlLXV0aWxzJztcbmltcG9ydCB7XG4gIHBhcnNlVmVjdG9yTWV0YWRhdGEsXG4gIGdldEZpZWxkc0Zyb21UaWxlLFxuICBWZWN0b3JUaWxlTWV0YWRhdGFcbn0gZnJvbSAnLi90aWxlc2V0L3ZlY3Rvci10aWxlLXV0aWxzJztcblxuLy8gYXBwbHkgYSBjb2xvciBmb3IgZWFjaCBkYXRhc2V0XG4vLyB0byB1c2UgYXMgbGFiZWwgY29sb3JzXG5jb25zdCBkYXRhc2V0Q29sb3JzID0gW1xuICAnIzhGMkZCRicsXG4gICcjMDA1Q0ZGJyxcbiAgJyNDMDZDODQnLFxuICAnI0Y4QjE5NScsXG4gICcjNTQ3QTgyJyxcbiAgJyMzRUFDQTgnLFxuICAnI0EyRDRBQidcbl0ubWFwKGhleFRvUmdiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5ld0RhdGFzZXRDb2xvcihkYXRhc2V0czogRGF0YXNldHMpOiBSR0JDb2xvciB7XG4gIGNvbnN0IHByZXNldENvbG9ycyA9IGRhdGFzZXRDb2xvcnMubWFwKFN0cmluZyk7XG4gIGNvbnN0IHVzZWRDb2xvcnMgPSB1bmlxKE9iamVjdC52YWx1ZXMoZGF0YXNldHMpLm1hcChkID0+IFN0cmluZyhkLmNvbG9yKSkpLmZpbHRlcihjID0+XG4gICAgcHJlc2V0Q29sb3JzLmluY2x1ZGVzKGMpXG4gICk7XG5cbiAgaWYgKHVzZWRDb2xvcnMubGVuZ3RoID09PSBwcmVzZXRDb2xvcnMubGVuZ3RoKSB7XG4gICAgLy8gaWYgd2UgYWxyZWFkeSBkZXBsZXRlZCB0aGUgcG9vbCBvZiBjb2xvclxuICAgIHJldHVybiBkYXRhc2V0Q29sb3JNYWtlci5uZXh0KCkudmFsdWU7XG4gIH1cblxuICBsZXQgY29sb3IgPSBkYXRhc2V0Q29sb3JNYWtlci5uZXh0KCkudmFsdWU7XG4gIHdoaWxlICh1c2VkQ29sb3JzLmluY2x1ZGVzKFN0cmluZyhjb2xvcikpKSB7XG4gICAgY29sb3IgPSBkYXRhc2V0Q29sb3JNYWtlci5uZXh0KCkudmFsdWU7XG4gIH1cblxuICByZXR1cm4gY29sb3I7XG59XG5cbi8qKlxuICogVGFrZSBkYXRhc2V0cyBwYXlsb2FkIGZyb20gYWRkRGF0YVRvTWFwLCBjcmVhdGUgZGF0YXNldHMgZW50cnkgc2F2ZSB0byB2aXNTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmV3RGF0YUVudHJ5KFxuICB7aW5mbywgZGF0YSwgLi4ub3B0c306IFByb3RvRGF0YXNldCxcbiAgZGF0YXNldHM6IERhdGFzZXRzID0ge31cbik6IERhdGFzZXRzIHwgbnVsbCB7XG4gIGNvbnN0IFRhYmxlQ2xhc3MgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuICBsZXQgZGF0YVZhbGlkYXRvciA9IHZhbGlkYXRlSW5wdXREYXRhO1xuICBpZiAodHlwZW9mIFRhYmxlQ2xhc3MuZ2V0SW5wdXREYXRhVmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGF0YVZhbGlkYXRvciA9IFRhYmxlQ2xhc3MuZ2V0SW5wdXREYXRhVmFsaWRhdG9yKCk7XG4gIH1cblxuICBjb25zdCB2YWxpZGF0ZWREYXRhID0gZGF0YVZhbGlkYXRvcihkYXRhKTtcbiAgaWYgKCF2YWxpZGF0ZWREYXRhKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjaGVjayBpZiBkYXRhc2V0IGFscmVhZHkgZXhpc3RzLCBhbmQgdXBkYXRlIGl0IHdoZW4gbG9hZGluZyBkYXRhIGJ5IGJhdGNoZXMgaW5jcmVtZW50YWxseVxuICBpZiAoaW5mbyAmJiBpbmZvLmlkICYmIGRhdGFzZXRzW2luZm8uaWRdKSB7XG4gICAgLy8gZ2V0IGtlcGxlclRhYmxlIGZyb20gZGF0YXNldHNcbiAgICBjb25zdCBrZXBsZXJUYWJsZSA9IGRhdGFzZXRzW2luZm8uaWRdO1xuICAgIC8vIHVwZGF0ZSB0aGUgZGF0YSBpbiBrZXBsZXJUYWJsZVxuICAgIHJldHVybiBVUERBVEVfVEFCTEVfVEFTSyh7dGFibGU6IGtlcGxlclRhYmxlLCBkYXRhOiB2YWxpZGF0ZWREYXRhfSk7XG4gIH1cblxuICBpbmZvID0gaW5mbyB8fCB7fTtcbiAgY29uc3QgY29sb3IgPSBpbmZvLmNvbG9yIHx8IGdldE5ld0RhdGFzZXRDb2xvcihkYXRhc2V0cyk7XG5cbiAgcmV0dXJuIENSRUFURV9UQUJMRV9UQVNLKHtcbiAgICBpbmZvLFxuICAgIGNvbG9yLFxuICAgIG9wdHMsXG4gICAgZGF0YTogZGF0YS5hcnJvd1RhYmxlID8gey4uLnZhbGlkYXRlZERhdGEsIGFycm93VGFibGU6IGRhdGEuYXJyb3dUYWJsZX0gOiB2YWxpZGF0ZWREYXRhXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVUYWJsZSh7dGFibGUsIGRhdGF9KSB7XG4gIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0YWJsZS51cGRhdGUoZGF0YSk7IC8vIEFzc3VtaW5nIGB0YWJsZWAgaGFzIGFuIGB1cGRhdGVgIG1ldGhvZFxuICByZXR1cm4gdXBkYXRlZDtcbn1cblxudHlwZSBDcmVhdGVUYWJsZVByb3BzID0ge1xuICBpbmZvOiBhbnk7XG4gIGNvbG9yOiBSR0JDb2xvcjtcbiAgb3B0czoge1xuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH07XG4gIGRhdGE6IGFueTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRhYmxlKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKSB7XG4gIGNvbnN0IHtpbmZvLCBjb2xvciwgb3B0cywgZGF0YX0gPSBkYXRhc2V0SW5mbztcblxuICAvLyB1cGRhdGUgbWV0YWRhdGEgZm9yIHJlbW90ZSB0aWxlZCBkYXRhc2V0c1xuICBjb25zdCByZWZyZXNoZWRNZXRhZGF0YSA9IGF3YWl0IHJlZnJlc2hSZW1vdGVEYXRhKGRhdGFzZXRJbmZvKTtcbiAgbGV0IG1ldGFkYXRhID0gb3B0cy5tZXRhZGF0YTtcbiAgaWYgKHJlZnJlc2hlZE1ldGFkYXRhKSB7XG4gICAgbWV0YWRhdGEgPSB7Li4ub3B0cy5tZXRhZGF0YSwgLi4ucmVmcmVzaGVkTWV0YWRhdGF9O1xuICAgIGlmIChtZXRhZGF0YS5maWVsZHMpIHtcbiAgICAgIGRhdGEuZmllbGRzID0gbWV0YWRhdGEuZmllbGRzO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IFRhYmxlQ2xhc3MgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZUNsYXNzKHtcbiAgICBpbmZvLFxuICAgIGNvbG9yLFxuICAgIC4uLm9wdHMsXG4gICAgbWV0YWRhdGFcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgdGFibGUuaW1wb3J0RGF0YSh7ZGF0YX0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgdGFibGUnLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICByZXR1cm4gdGFibGU7XG59XG5jb25zdCBVUERBVEVfVEFCTEVfVEFTSyA9IFRhc2suZnJvbVByb21pc2UodXBkYXRlVGFibGUsICdVUERBVEVfVEFCTEVfVEFTSycpO1xuY29uc3QgQ1JFQVRFX1RBQkxFX1RBU0sgPSBUYXNrLmZyb21Qcm9taXNlKGNyZWF0ZVRhYmxlLCAnQ1JFQVRFX1RBQkxFX1RBU0snKTtcblxuLyoqXG4gKiBGZXRjaCBtZXRhZGF0YSBmb3IgdmVjdG9yIHRpbGUgbGF5ZXJzIHVzaW5nIHRpbGVzZXRNZXRhZGF0YVVybCBmcm9tIG1ldGFkYXRhXG4gKiBAcGFyYW0gZGF0YXNldEluZm9cbiAqIEByZXR1cm5zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hSZW1vdGVEYXRhKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKTogUHJvbWlzZTxvYmplY3QgfCBudWxsPiB7XG4gIGNvbnN0IHt0eXBlfSA9IGRhdGFzZXRJbmZvLmluZm87XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRGF0YXNldFR5cGUuVkVDVE9SX1RJTEU6XG4gICAgICByZXR1cm4gYXdhaXQgcmVmcmVzaFZlY3RvclRpbGVNZXRhZGF0YShkYXRhc2V0SW5mbyk7XG4gICAgY2FzZSBEYXRhc2V0VHlwZS5SQVNURVJfVElMRTpcbiAgICAgIHJldHVybiBhd2FpdCByZWZyZXNoUmFzdGVyVGlsZU1ldGFkYXRhKGRhdGFzZXRJbmZvKTtcbiAgICBjYXNlIERhdGFzZXRUeXBlLldNU19USUxFOlxuICAgICAgcmV0dXJuIGF3YWl0IHJlZnJlc2hXTVNNZXRhZGF0YShkYXRhc2V0SW5mbyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hWZWN0b3JUaWxlTWV0YWRhdGEoXG4gIGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzXG4pOiBQcm9taXNlPFZlY3RvclRpbGVNZXRhZGF0YSB8IG51bGw+IHtcbiAgY29uc3Qge3JlbW90ZVRpbGVGb3JtYXQsIHRpbGVzZXRNZXRhZGF0YVVybCwgdGlsZXNldERhdGFVcmx9ID1cbiAgICAoZGF0YXNldEluZm8ub3B0cy5tZXRhZGF0YSBhcyBWZWN0b3JUaWxlRGF0YXNldE1ldGFkYXRhKSB8fCB7fTtcblxuICBpZiAoXG4gICAgIShyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0LlBNVElMRVMgfHwgcmVtb3RlVGlsZUZvcm1hdCA9PT0gUmVtb3RlVGlsZUZvcm1hdC5NVlQpIHx8XG4gICAgdHlwZW9mIHRpbGVzZXRNZXRhZGF0YVVybCAhPT0gJ3N0cmluZycgfHxcbiAgICB0eXBlb2YgdGlsZXNldERhdGFVcmwgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsZXQgcmF3TWV0YWRhdGE6IFBNVGlsZXNNZXRhZGF0YSB8IFRpbGVKU09OIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHJlbW90ZVRpbGVGb3JtYXQgPT09IFJlbW90ZVRpbGVGb3JtYXQuTVZUKSB7XG4gICAgICByYXdNZXRhZGF0YSA9IGF3YWl0IGdldE1WVE1ldGFkYXRhKHRpbGVzZXRNZXRhZGF0YVVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRpbGVTb3VyY2UgPSBQTVRpbGVzU291cmNlLmNyZWF0ZURhdGFTb3VyY2UodGlsZXNldE1ldGFkYXRhVXJsLCB7fSk7XG4gICAgICByYXdNZXRhZGF0YSA9IGF3YWl0IHRpbGVTb3VyY2UubWV0YWRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHJhd01ldGFkYXRhKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHBhcnNlVmVjdG9yTWV0YWRhdGEocmF3TWV0YWRhdGEpO1xuXG4gICAgICBhd2FpdCBnZXRGaWVsZHNGcm9tVGlsZSh7XG4gICAgICAgIHJlbW90ZVRpbGVGb3JtYXQsXG4gICAgICAgIHRpbGVzZXRVcmw6IHRpbGVzZXREYXRhVXJsLFxuICAgICAgICBtZXRhZGF0YVVybDogdGlsZXNldE1ldGFkYXRhVXJsLFxuICAgICAgICBtZXRhZGF0YVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlnbm9yZSBmb3Igbm93LCBhbmQgdXNlIG9sZCBtZXRhZGF0YVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoUmFzdGVyVGlsZU1ldGFkYXRhKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKTogUHJvbWlzZTxhbnkgfCBudWxsPiB7XG4gIGNvbnN0IHttZXRhZGF0YVVybCwgcG10aWxlc1R5cGV9ID0gKGRhdGFzZXRJbmZvLm9wdHMubWV0YWRhdGEgYXMgUmFzdGVyVGlsZURhdGFzZXRNZXRhZGF0YSkgfHwge307XG5cbiAgaWYgKHR5cGVvZiBtZXRhZGF0YVVybCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKHBtdGlsZXNUeXBlID09PSBQTVRpbGVzVHlwZS5SQVNURVIpIHtcbiAgICAgIGNvbnN0IHRpbGVTb3VyY2UgPSBQTVRpbGVzU291cmNlLmNyZWF0ZURhdGFTb3VyY2UobWV0YWRhdGFVcmwsIHt9KTtcbiAgICAgIGNvbnN0IHJhd01ldGFkYXRhOiBQTVRpbGVzTWV0YWRhdGEgPSBhd2FpdCB0aWxlU291cmNlLm1ldGFkYXRhO1xuXG4gICAgICBpZiAocmF3TWV0YWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlVmVjdG9yTWV0YWRhdGEocmF3TWV0YWRhdGEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpdCdzIHN0YWMgcmFzdGVyIHRpbGVzXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKG1ldGFkYXRhVXJsKTtcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgRmV0Y2ggJHttZXRhZGF0YVVybH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhd01ldGFkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHBhcnNlUmFzdGVyTWV0YWRhdGEocmF3TWV0YWRhdGEsIHthbGxvd0NvbGxlY3Rpb25zOiB0cnVlfSk7XG4gICAgICBpZiAobWV0YWRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBtZXRhZGF0YSAke21ldGFkYXRhLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlnbm9yZSBmb3Igbm93LCBhbmQgdXNlIG9sZCBtZXRhZGF0YVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoV01TTWV0YWRhdGEoZGF0YXNldEluZm86IENyZWF0ZVRhYmxlUHJvcHMpOiBQcm9taXNlPGFueSB8IG51bGw+IHtcbiAgY29uc3Qge3JlbW90ZVRpbGVGb3JtYXQsIHRpbGVzZXREYXRhVXJsfSA9XG4gICAgKGRhdGFzZXRJbmZvLm9wdHMubWV0YWRhdGEgYXMgV01TRGF0YXNldE1ldGFkYXRhKSB8fCB7fTtcblxuICBpZiAocmVtb3RlVGlsZUZvcm1hdCAhPT0gUmVtb3RlVGlsZUZvcm1hdC5XTVMgfHwgdHlwZW9mIHRpbGVzZXREYXRhVXJsICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0V01TQ2FwYWJpbGl0aWVzKHRpbGVzZXREYXRhVXJsKTtcbiAgICByZXR1cm4gd21zQ2FwYWJpbGl0aWVzVG9EYXRhc2V0TWV0YWRhdGEoZGF0YSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlnbm9yZSBmb3Igbm93LCBhbmQgdXNlIG9sZCBtZXRhZGF0YVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V01TQ2FwYWJpbGl0aWVzKHdzbVVybDogc3RyaW5nKTogUHJvbWlzZTxXTVNDYXBhYmlsaXRpZXM+IHtcbiAgcmV0dXJuIChhd2FpdCBsb2FkKFxuICAgIGAke3dzbVVybH0/c2VydmljZT1XTVMmcmVxdWVzdD1HZXRDYXBhYmlsaXRpZXNgLFxuICAgIFdNU0NhcGFiaWxpdGllc0xvYWRlclxuICApKSBhcyBXTVNDYXBhYmlsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3bXNDYXBhYmlsaXRpZXNUb0RhdGFzZXRNZXRhZGF0YShjYXBhYmlsaXRpZXM6IFdNU0NhcGFiaWxpdGllcyk6IGFueSB8IG51bGwge1xuICAvLyBGbGF0dGVuIGxheWVycyBpZiB0aGV5IGFyZSBuZXN0ZWRcbiAgY29uc3QgbGF5ZXJzID0gY2FwYWJpbGl0aWVzLmxheWVycy5mbGF0TWFwKGxheWVyID0+IHtcbiAgICBpZiAobGF5ZXIubGF5ZXJzICYmIGxheWVyLmxheWVycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbGF5ZXIubGF5ZXJzO1xuICAgIH1cbiAgICByZXR1cm4gbGF5ZXI7XG4gIH0pO1xuXG4gIGxldCBhdmFpbGFibGVMYXllcnM6IFdNU0RhdGFzZXRNZXRhZGF0YVsnbGF5ZXJzJ10gPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobGF5ZXJzKSkge1xuICAgIGF2YWlsYWJsZUxheWVycyA9IGxheWVycy5tYXAoKGxheWVyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGJiID0gbGF5ZXIuZ2VvZ3JhcGhpY0JvdW5kaW5nQm94O1xuXG4gICAgICBsZXQgYm91bmRpbmdCb3g6IG51bWJlcltdIHwgbnVsbCA9IG51bGw7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShiYikgJiYgQXJyYXkuaXNBcnJheShiYlswXSkgJiYgQXJyYXkuaXNBcnJheShiYlsxXSkpIHtcbiAgICAgICAgYm91bmRpbmdCb3ggPSBbYmJbMF1bMF0sIGJiWzBdWzFdLCBiYlsxXVswXSwgYmJbMV1bMV1dO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBsYXllci5uYW1lLFxuICAgICAgICB0aXRsZTogbGF5ZXIudGl0bGUgfHwgbGF5ZXIubmFtZSxcbiAgICAgICAgYm91bmRpbmdCb3gsXG4gICAgICAgIHF1ZXJ5YWJsZTogbGF5ZXIucXVlcnlhYmxlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsYXllcnM6IGF2YWlsYWJsZUxheWVycyxcbiAgICB2ZXJzaW9uOiBjYXBhYmlsaXRpZXMudmVyc2lvbiB8fCAnMS4zLjAnXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBUUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBT0EsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sSUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFB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
@@ -117,6 +117,7 @@ var KeplerTable = /*#__PURE__*/function () {
117
117
  inputDataFormat = data.cols ? _utils.DataForm.COLS_ARRAY : _utils.DataForm.ROWS_ARRAY;
118
118
  dataContainer = (0, _utils.createDataContainer)(dataContainerData, {
119
119
  fields: data.fields,
120
+ arrowTable: data.arrowTable,
120
121
  inputDataFormat: inputDataFormat
121
122
  });
122
123
  fields = data.fields.map(function (f, i) {
@@ -644,4 +645,4 @@ function getFieldValueAccessor(f, i, dc) {
644
645
  f.type === _constants.ALL_FIELD_TYPES.timestamp, i, f.format || '', dc);
645
646
  }
646
647
  var _default = exports["default"] = KeplerTable;
647
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2QzQXJyYXkiLCJfY29uc3RhbnRzIiwiX2dwdUZpbHRlclV0aWxzIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiRklEX0tFWSIsIm1heWJlVG9EYXRlIiwiaXNUaW1lIiwiZmllbGRJZHgiLCJmb3JtYXQiLCJkYyIsImQiLCJ0aW1lVG9Vbml4TWlsbGkiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJLZXBsZXJUYWJsZSIsIl9yZWYiLCJpbmZvIiwiY29sb3IiLCJtZXRhZGF0YSIsIl9yZWYkc3VwcG9ydGVkRmlsdGVyVCIsInN1cHBvcnRlZEZpbHRlclR5cGVzIiwiX3JlZiRkaXNhYmxlRGF0YU9wZXJhIiwiZGlzYWJsZURhdGFPcGVyYXRpb24iLCJfY2xhc3NDYWxsQ2hlY2syIiwiZGF0YXNldEluZm8iLCJpZCIsImdlbmVyYXRlSGFzaElkIiwibGFiZWwiLCJ0eXBlIiwiZGVmYXVsdE1ldGFkYXRhIiwiZGF0YUNvbnRhaW5lciIsImNyZWF0ZURhdGFDb250YWluZXIiLCJncHVGaWx0ZXIiLCJnZXRHcHVGaWx0ZXJQcm9wcyIsInVuZGVmaW5lZCIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJfaW1wb3J0RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJkYXRhIiwiZGF0YUNvbnRhaW5lckRhdGEiLCJpbnB1dERhdGFGb3JtYXQiLCJmaWVsZHMiLCJhbGxJbmRleGVzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwiY29scyIsInJvd3MiLCJEYXRhRm9ybSIsIkNPTFNfQVJSQVkiLCJST1dTX0FSUkFZIiwibWFwIiwiaSIsImRpc3BsYXlOYW1lIiwiYW5hbHl6ZXJUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwic3RyaW5nIiwidmFsdWVBY2Nlc3NvciIsImdldEZpZWxkVmFsdWVBY2Nlc3NvciIsImdldFBsYWluSW5kZXgiLCJmaWx0ZXJlZEluZGV4IiwiZmlsdGVyZWRJbmRleEZvckRvbWFpbiIsImZpZWxkUGFpcnMiLCJmaW5kUG9pbnRGaWVsZFBhaXJzIiwic3RvcCIsImltcG9ydERhdGEiLCJfeCIsIl91cGRhdGUiLCJfY2FsbGVlMiIsIl90aGlzJGRhdGFDb250YWluZXIkdSIsIl90aGlzJGRhdGFDb250YWluZXIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ1cGRhdGUiLCJhYnJ1cHQiLCJfeDIiLCJnZXQiLCJudW1Sb3dzIiwiZ2V0Q29sdW1uRmllbGQiLCJjb2x1bW5OYW1lIiwiZmllbGQiLCJmaW5kIiwiZmQiLCJfYXNzZXRGaWVsZCIsImdldENvbHVtbkZpZWxkSWR4IiwiZmluZEluZGV4IiwiQm9vbGVhbiIsImdldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJkaXNwbGF5Rm9ybWF0IiwiZ2V0VmFsdWUiLCJyb3dJZHgiLCJ1cGRhdGVDb2x1bW5GaWVsZCIsIm5ld0ZpZWxkIiwiYXNzaWduIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInVwZGF0ZVRhYmxlQ29sb3IiLCJuZXdDb2xvciIsImdldENvbHVtbkZpbHRlclByb3BzIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJmaWx0ZXJQcm9wcyIsImZpZWxkRG9tYWluIiwiZ2V0Q29sdW1uRmlsdGVyRG9tYWluIiwiZ2V0RmlsdGVyUHJvcHMiLCJmaWx0ZXJUYWJsZSIsImZpbHRlcnMiLCJsYXllcnMiLCJvcHQiLCJfdGhpcyIsImRhdGFJZCIsIm9sZEZpbHRlclJlY29yZCIsImZpbHRlclJlY29yZCIsImdldEZpbHRlclJlY29yZCIsImNoYW5nZWRGaWx0ZXJzIiwiZGlmZkZpbHRlcnMiLCJzaG91bGRDYWxEb21haW4iLCJkeW5hbWljRG9tYWluIiwic2hvdWxkQ2FsSW5kZXgiLCJjcHUiLCJmaWx0ZXJSZXN1bHQiLCJkeW5hbWljRG9tYWluRmlsdGVycyIsImNwdUZpbHRlcnMiLCJmaWx0ZXJGdW5jcyIsInJlZHVjZSIsImFjYyIsImZpZWxkSW5kZXgiLCJnZXREYXRhc2V0RmllbGRJbmRleEZvckZpbHRlciIsImdldEZpbHRlckZ1bmN0aW9uIiwiZmlsdGVyRGF0YUJ5RmlsdGVyVHlwZXMiLCJmaWx0ZXJUYWJsZUNQVSIsImNwdU9ubHkiLCJpZ25vcmVEb21haW4iLCJmaWx0ZXJlZElkeENQVSIsImZpbHRlclJlY29yZENQVSIsImdwdSIsImNvcGllZCIsImNvcHlUYWJsZSIsImZpbHRlcmVkIiwiZG9tYWluIiwicmVhbCIsImludGVnZXIiLCJnZXROdW1lcmljRmllbGREb21haW4iLCJoMyIsImRhdGUiLCJnZXRPcmRpbmFsRG9tYWluIiwidGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wRmllbGREb21haW4iLCJnZXRDb2x1bW5MYXllckRvbWFpbiIsInNjYWxlVHlwZSIsIlNDQUxFX1RZUEVTIiwiQ29uc29sZSIsImVycm9yIiwiY29uY2F0IiwiaW5kZXhWYWx1ZUFjY2Vzc29yIiwic29ydEZ1bmN0aW9uIiwiZ2V0U29ydGluZ0Z1bmN0aW9uIiwib3JkaW5hbCIsImN1c3RvbU9yZGluYWwiLCJwb2ludCIsInF1YW50aWxlIiwiZ2V0UXVhbnRpbGVEb21haW4iLCJsb2ciLCJnZXRMb2dEb21haW4iLCJxdWFudGl6ZSIsImxpbmVhciIsInNxcnQiLCJjdXN0b20iLCJnZXRMaW5lYXJEb21haW4iLCJmaWVsZE5hbWUiLCJjb25kaXRpb24iLCJzcGVjaWFsQ2hhcmFjdGVyU2V0IiwiZm91bmRNYXRjaGluZ0ZpZWxkcyIsInJlIiwic3VmZml4UGFpciIsImFsbE5hbWVzIiwicGFydG5lcklkeCIsInJlcGxhY2UiLCJtYXRjaCIsImFsdElkeCIsIkFMVElUVURFX0ZJRUxEUyIsInNvbWUiLCJhbHQiLCJ0b0xvd2VyQ2FzZSIsImNhcnJ5IiwiaWR4IiwiX2l0ZXJhdG9yIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJfc3RlcCIsIlJlZ0V4cCIsIl9mb3VuZE1hdGNoaW5nRmllbGRzIiwidHJpbU5hbWUiLCJ0cmltIiwiZGVmYXVsdE5hbWUiLCJwYWlyIiwibGF0IiwibG5nIiwiYWx0aXR1ZGUiLCJzdWZmaXgiLCJlcnIiLCJzb3J0RGF0YXNldEJ5Q29sdW1uIiwiZGF0YXNldCIsImNvbHVtbiIsIm1vZGUiLCJzb3J0QnkiLCJTT1JUX09SREVSIiwiQVNDRU5ESU5HIiwiVU5TT1JUIiwic29ydENvbHVtbiIsInNvcnRPcmRlciIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJzb3J0IiwiYiIsInZhbHVlMSIsInZhbHVlMiIsIm5vdE51bGxvclVuZGVmaW5lZCIsInBpblRhYmxlQ29sdW1ucyIsInBpbm5lZENvbHVtbnMiLCJpbmNsdWRlcyIsImNvIiwiY29weVRhYmxlQW5kVXBkYXRlIiwib3JpZ2luYWwiLCJjcmVhdGUiLCJnZXRQcm90b3R5cGVPZiIsIm9wdGlvbnMiLCJlbnRyaWVzIiwiZW50cnkiLCJiaW5kIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2tlcGxlci10YWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2FzY2VuZGluZywgZGVzY2VuZGluZ30gZnJvbSAnZDMtYXJyYXknO1xuXG5pbXBvcnQge1xuICBUUklQX1BPSU5UX0ZJRUxEUyxcbiAgU09SVF9PUkRFUixcbiAgQUxMX0ZJRUxEX1RZUEVTLFxuICBBTFRJVFVERV9GSUVMRFMsXG4gIFNDQUxFX1RZUEVTXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIFJHQkNvbG9yLFxuICBGaWVsZCxcbiAgRmllbGRQYWlyLFxuICBGaWVsZERvbWFpbixcbiAgRmlsdGVyLFxuICBQcm90b0RhdGFzZXQsXG4gIEZpbHRlclJlY29yZCxcbiAgRmlsdGVyRGF0YXNldE9wdCxcbiAgUmFuZ2VGaWVsZERvbWFpbixcbiAgU2VsZWN0RmllbGREb21haW4sXG4gIE11bHRpU2VsZWN0RmllbGREb21haW4sXG4gIFRpbWVSYW5nZUZpZWxkRG9tYWluXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge2dldEdwdUZpbHRlclByb3BzLCBnZXREYXRhc2V0RmllbGRJbmRleEZvckZpbHRlcn0gZnJvbSAnLi9ncHUtZmlsdGVyLXV0aWxzJztcblxuaW1wb3J0IHtcbiAgZ2V0U29ydGluZ0Z1bmN0aW9uLFxuICB0aW1lVG9Vbml4TWlsbGksXG4gIGNyZWF0ZURhdGFDb250YWluZXIsXG4gIERhdGFGb3JtLFxuICBkaWZmRmlsdGVycyxcbiAgZmlsdGVyRGF0YUJ5RmlsdGVyVHlwZXMsXG4gIEZpbHRlclJlc3VsdCxcbiAgZ2V0RmlsdGVyRnVuY3Rpb24sXG4gIGdldEZpbHRlclByb3BzLFxuICBnZXRGaWx0ZXJSZWNvcmQsXG4gIGdldE51bWVyaWNGaWVsZERvbWFpbixcbiAgZ2V0VGltZXN0YW1wRmllbGREb21haW4sXG4gIGdldExpbmVhckRvbWFpbixcbiAgZ2V0TG9nRG9tYWluLFxuICBnZXRPcmRpbmFsRG9tYWluLFxuICBnZXRRdWFudGlsZURvbWFpbixcbiAgRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgRmlsdGVyQ2hhbmdlZFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWQsIG5vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG4vLyBUT0RPIGlzb2xhdGUgbGF5ZXIgdHlwZSwgZGVwZW5kcyBvbiBAa2VwbGVyLmdsL2xheWVyc1xudHlwZSBMYXllciA9IGFueTtcblxuZXhwb3J0IHR5cGUgR3B1RmlsdGVyID0ge1xuICBmaWx0ZXJSYW5nZTogbnVtYmVyW11bXTtcbiAgZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyczoge1xuICAgIFtpZDogc3RyaW5nXToge25hbWU6IHN0cmluZzsgZG9tYWluMDogbnVtYmVyfSB8IG51bGw7XG4gIH07XG4gIGZpbHRlclZhbHVlQWNjZXNzb3I6IChcbiAgICBkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZVxuICApID0+IChcbiAgICBnZXRJbmRleD86IChhbnkpID0+IG51bWJlcixcbiAgICBnZXREYXRhPzogKGRjXzogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgZDogYW55LCBmaWVsZEluZGV4OiBudW1iZXIpID0+IGFueVxuICApID0+IChkOiBhbnksIG9iamVjdEluZm8/OiB7aW5kZXg6IG51bWJlcn0pID0+IChudW1iZXIgfCBudW1iZXJbXSlbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlclByb3BzID1cbiAgfCBOdW1lcmljRmllbGRGaWx0ZXJQcm9wc1xuICB8IEJvb2xlYW5GaWVsZEZpbHRlclByb3BzXG4gIHwgU3RyaW5nRmllbGRGaWx0ZXJQcm9wc1xuICB8IFRpbWVGaWVsZEZpbHRlclByb3BzO1xuXG5leHBvcnQgdHlwZSBOdW1lcmljRmllbGRGaWx0ZXJQcm9wcyA9IFJhbmdlRmllbGREb21haW4gJiB7XG4gIHZhbHVlOiBbbnVtYmVyLCBudW1iZXJdO1xuICB0eXBlOiBzdHJpbmc7XG4gIHR5cGVPcHRpb25zOiBzdHJpbmdbXTtcbiAgZ3B1OiBib29sZWFuO1xuICBjb2x1bW5TdGF0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuZXhwb3J0IHR5cGUgQm9vbGVhbkZpZWxkRmlsdGVyUHJvcHMgPSBTZWxlY3RGaWVsZERvbWFpbiAmIHtcbiAgdHlwZTogc3RyaW5nO1xuICB2YWx1ZTogYm9vbGVhbjtcbiAgZ3B1OiBib29sZWFuO1xuICBjb2x1bW5TdGF0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuZXhwb3J0IHR5cGUgU3RyaW5nRmllbGRGaWx0ZXJQcm9wcyA9IE11bHRpU2VsZWN0RmllbGREb21haW4gJiB7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZ1tdO1xuICBncHU6IGJvb2xlYW47XG4gIGNvbHVtblN0YXRzPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5leHBvcnQgdHlwZSBUaW1lRmllbGRGaWx0ZXJQcm9wcyA9IFRpbWVSYW5nZUZpZWxkRG9tYWluICYge1xuICB0eXBlOiBzdHJpbmc7XG4gIHZpZXc6IEZpbHRlclsndmlldyddO1xuICBmaXhlZERvbWFpbjogYm9vbGVhbjtcbiAgdmFsdWU6IG51bWJlcltdO1xuICBncHU6IGJvb2xlYW47XG4gIGNvbHVtblN0YXRzPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cbi8vIFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVhY2ggZmllbGRcbmNvbnN0IEZJRF9LRVkgPSAnbmFtZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXliZVRvRGF0ZShcbiAgaXNUaW1lOiBib29sZWFuLFxuICBmaWVsZElkeDogbnVtYmVyLFxuICBmb3JtYXQ6IHN0cmluZyxcbiAgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIC8vIEFuIG9iamVjdCB3aXRoIHJvdyBpbmRleCBvciBhIG1hdGVyaWFsaXplZCByb3cgYXJyYXkgKGZvciBtYXRlcmlhbGl6ZWQgaG92ZXIgaW5mbyBmcm9tIHRyaXAgbGF5ZXIpXG4gIGQ6IHtpbmRleDogbnVtYmVyfSB8IGFueVtdXG4pIHtcbiAgaWYgKGlzVGltZSkge1xuICAgIHJldHVybiB0aW1lVG9Vbml4TWlsbGkoQXJyYXkuaXNBcnJheShkKSA/IGRbZmllbGRJZHhdIDogZGMudmFsdWVBdChkLmluZGV4LCBmaWVsZElkeCksIGZvcm1hdCk7XG4gIH1cblxuICByZXR1cm4gQXJyYXkuaXNBcnJheShkKSA/IGRbZmllbGRJZHhdIDogZGMudmFsdWVBdChkLmluZGV4LCBmaWVsZElkeCk7XG59XG5cbmNsYXNzIEtlcGxlclRhYmxlPEYgZXh0ZW5kcyBGaWVsZCA9IEZpZWxkPiB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgdHlwZT86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3I6IFJHQkNvbG9yO1xuXG4gIC8vIGZpZWxkcyBhbmQgZGF0YVxuICBmaWVsZHM6IEZbXSA9IFtdO1xuXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2U7XG5cbiAgYWxsSW5kZXhlczogbnVtYmVyW10gPSBbXTtcbiAgZmlsdGVyZWRJbmRleDogbnVtYmVyW10gPSBbXTtcbiAgZmlsdGVyZWRJZHhDUFU/OiBudW1iZXJbXTtcbiAgZmlsdGVyZWRJbmRleEZvckRvbWFpbjogbnVtYmVyW10gPSBbXTtcbiAgZmllbGRQYWlyczogRmllbGRQYWlyW10gPSBbXTtcbiAgZ3B1RmlsdGVyOiBHcHVGaWx0ZXI7XG4gIGZpbHRlclJlY29yZD86IEZpbHRlclJlY29yZDtcbiAgZmlsdGVyUmVjb3JkQ1BVPzogRmlsdGVyUmVjb3JkO1xuICBjaGFuZ2VkRmlsdGVycz86IEZpbHRlckNoYW5nZWQ7XG5cbiAgLy8gdGFibGUtaW5qZWN0ZWQgbWV0YWRhdGFcbiAgc29ydENvbHVtbj86IHtcbiAgICAvLyBjb2x1bW4gbmFtZTogc29ydGVkIGlkeFxuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZzsgLy8gQVNDRU5ESU5HIHwgREVTQ0VORElORyB8IFVOU09SVFxuICB9O1xuICBzb3J0T3JkZXI/OiBudW1iZXJbXSB8IG51bGw7XG5cbiAgcGlubmVkQ29sdW1ucz86IHN0cmluZ1tdO1xuICBzdXBwb3J0ZWRGaWx0ZXJUeXBlcz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgZGlzYWJsZURhdGFPcGVyYXRpb24/OiBib29sZWFuO1xuXG4gIC8vIHRhYmxlLWluamVjdGVkIG1ldGFkYXRhXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGdldEZpbGVQcm9jZXNzb3I/OiAoZGF0YTogYW55LCBpbnB1dEZvcm1hdD86IHN0cmluZykgPT4ge2RhdGE6IGFueTsgZm9ybWF0OiBzdHJpbmd9O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBpbmZvLFxuICAgIGNvbG9yLFxuICAgIG1ldGFkYXRhLFxuICAgIHN1cHBvcnRlZEZpbHRlclR5cGVzID0gbnVsbCxcbiAgICBkaXNhYmxlRGF0YU9wZXJhdGlvbiA9IGZhbHNlXG4gIH06IHtcbiAgICBpbmZvPzogUHJvdG9EYXRhc2V0WydpbmZvJ107XG4gICAgY29sb3I6IFJHQkNvbG9yO1xuICAgIG1ldGFkYXRhPzogUHJvdG9EYXRhc2V0WydtZXRhZGF0YSddO1xuICAgIHN1cHBvcnRlZEZpbHRlclR5cGVzPzogUHJvdG9EYXRhc2V0WydzdXBwb3J0ZWRGaWx0ZXJUeXBlcyddO1xuICAgIGRpc2FibGVEYXRhT3BlcmF0aW9uPzogUHJvdG9EYXRhc2V0WydkaXNhYmxlRGF0YU9wZXJhdGlvbiddO1xuICB9KSB7XG4gICAgLy8gVE9ETyAtIHdoYXQgdG8gZG8gaWYgdmFsaWRhdGlvbiBmYWlscz8gQ2FuIGtlcGxlciBoYW5kbGUgZXhjZXB0aW9ucz9cbiAgICAvLyBjb25zdCB2YWxpZGF0ZWREYXRhID0gdmFsaWRhdGVJbnB1dERhdGEoZGF0YSk7XG4gICAgLy8gaWYgKCF2YWxpZGF0ZWREYXRhKSB7XG4gICAgLy8gICByZXR1cm4gdGhpcztcbiAgICAvLyB9XG5cbiAgICBjb25zdCBkYXRhc2V0SW5mbyA9IHtcbiAgICAgIGlkOiBnZW5lcmF0ZUhhc2hJZCg0KSxcbiAgICAgIGxhYmVsOiAnbmV3IGRhdGFzZXQnLFxuICAgICAgdHlwZTogJycsXG4gICAgICAuLi5pbmZvXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRNZXRhZGF0YSA9IHtcbiAgICAgIGlkOiBkYXRhc2V0SW5mby5pZCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZvcm1hdDogZGF0YXNldEluZm8uZm9ybWF0IHx8ICcnLFxuICAgICAgbGFiZWw6IGRhdGFzZXRJbmZvLmxhYmVsIHx8ICcnXG4gICAgfTtcblxuICAgIHRoaXMuaWQgPSBkYXRhc2V0SW5mby5pZDtcbiAgICB0aGlzLnR5cGUgPSBkYXRhc2V0SW5mby50eXBlO1xuICAgIHRoaXMubGFiZWwgPSBkYXRhc2V0SW5mby5sYWJlbDtcbiAgICB0aGlzLmNvbG9yID0gY29sb3I7XG4gICAgdGhpcy5tZXRhZGF0YSA9IHtcbiAgICAgIC4uLmRlZmF1bHRNZXRhZGF0YSxcbiAgICAgIC4uLm1ldGFkYXRhXG4gICAgfTtcblxuICAgIHRoaXMuc3VwcG9ydGVkRmlsdGVyVHlwZXMgPSBzdXBwb3J0ZWRGaWx0ZXJUeXBlcztcbiAgICB0aGlzLmRpc2FibGVEYXRhT3BlcmF0aW9uID0gZGlzYWJsZURhdGFPcGVyYXRpb247XG5cbiAgICB0aGlzLmRhdGFDb250YWluZXIgPSBjcmVhdGVEYXRhQ29udGFpbmVyKFtdKTtcbiAgICB0aGlzLmdwdUZpbHRlciA9IGdldEdwdUZpbHRlclByb3BzKFtdLCB0aGlzLmlkLCBbXSwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIGFzeW5jIGltcG9ydERhdGEoe2RhdGF9OiB7ZGF0YTogUHJvdG9EYXRhc2V0WydkYXRhJ119KSB7XG4gICAgY29uc3QgZGF0YUNvbnRhaW5lckRhdGEgPSBkYXRhLmNvbHMgPyBkYXRhLmNvbHMgOiBkYXRhLnJvd3M7XG4gICAgY29uc3QgaW5wdXREYXRhRm9ybWF0ID0gZGF0YS5jb2xzID8gRGF0YUZvcm0uQ09MU19BUlJBWSA6IERhdGFGb3JtLlJPV1NfQVJSQVk7XG5cbiAgICBjb25zdCBkYXRhQ29udGFpbmVyID0gY3JlYXRlRGF0YUNvbnRhaW5lcihkYXRhQ29udGFpbmVyRGF0YSwge1xuICAgICAgZmllbGRzOiBkYXRhLmZpZWxkcyxcbiAgICAgIGlucHV0RGF0YUZvcm1hdFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gZGF0YS5maWVsZHMubWFwKChmLCBpKSA9PiAoe1xuICAgICAgLi4uZixcbiAgICAgIGZpZWxkSWR4OiBpLFxuICAgICAgaWQ6IGYubmFtZSxcbiAgICAgIGRpc3BsYXlOYW1lOiBmLmRpc3BsYXlOYW1lIHx8IGYubmFtZSxcbiAgICAgIGFuYWx5emVyVHlwZTogZi5hbmFseXplclR5cGUgfHwgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyxcbiAgICAgIGZvcm1hdDogZi5mb3JtYXQgfHwgJycsXG4gICAgICB2YWx1ZUFjY2Vzc29yOiBnZXRGaWVsZFZhbHVlQWNjZXNzb3IoZiwgaSwgZGF0YUNvbnRhaW5lcilcbiAgICB9KSk7XG5cbiAgICBjb25zdCBhbGxJbmRleGVzID0gZGF0YUNvbnRhaW5lci5nZXRQbGFpbkluZGV4KCk7XG4gICAgdGhpcy5kYXRhQ29udGFpbmVyID0gZGF0YUNvbnRhaW5lcjtcbiAgICB0aGlzLmFsbEluZGV4ZXMgPSBhbGxJbmRleGVzO1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleCA9IGFsbEluZGV4ZXM7XG4gICAgdGhpcy5maWx0ZXJlZEluZGV4Rm9yRG9tYWluID0gYWxsSW5kZXhlcztcbiAgICB0aGlzLmZpZWxkUGFpcnMgPSBmaW5kUG9pbnRGaWVsZFBhaXJzKGZpZWxkcyk7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBNYWtlIHN1cmUgdGhhdCBmaWVsZHMgc2F0aXNmaWVzIEYgZXh0ZW5kcyBGaWVsZFxuICAgIHRoaXMuZmllbGRzID0gZmllbGRzO1xuICAgIHRoaXMuZ3B1RmlsdGVyID0gZ2V0R3B1RmlsdGVyUHJvcHMoW10sIHRoaXMuaWQsIGZpZWxkcywgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGUgdGFibGUgd2l0aCBuZXcgZGF0YVxuICAgKiBAcGFyYW0gZGF0YSAtIG5ldyBkYXRhIGUuZy4gdGhlIGFycm93IGRhdGEgd2l0aCBuZXcgYmF0Y2hlcyBsb2FkZWRcbiAgICovXG4gIGFzeW5jIHVwZGF0ZShkYXRhOiBQcm90b0RhdGFzZXRbJ2RhdGEnXSkge1xuICAgIGNvbnN0IGRhdGFDb250YWluZXJEYXRhID0gZGF0YS5jb2xzID8gZGF0YS5jb2xzIDogZGF0YS5yb3dzO1xuICAgIHRoaXMuZGF0YUNvbnRhaW5lci51cGRhdGU/LihkYXRhQ29udGFpbmVyRGF0YSk7XG4gICAgdGhpcy5hbGxJbmRleGVzID0gdGhpcy5kYXRhQ29udGFpbmVyLmdldFBsYWluSW5kZXgoKTtcbiAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSB0aGlzLmFsbEluZGV4ZXM7XG4gICAgdGhpcy5maWx0ZXJlZEluZGV4Rm9yRG9tYWluID0gdGhpcy5hbGxJbmRleGVzO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250YWluZXIubnVtUm93cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBmaWVsZFxuICAgKiBAcGFyYW0gY29sdW1uTmFtZVxuICAgKi9cbiAgZ2V0Q29sdW1uRmllbGQoY29sdW1uTmFtZTogc3RyaW5nKTogRiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKGZkID0+IGZkW0ZJRF9LRVldID09PSBjb2x1bW5OYW1lKTtcbiAgICB0aGlzLl9hc3NldEZpZWxkKGNvbHVtbk5hbWUsIGZpZWxkKTtcbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGZpZWxkSWR4XG4gICAqIEBwYXJhbSBjb2x1bW5OYW1lXG4gICAqL1xuICBnZXRDb2x1bW5GaWVsZElkeChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpZWxkSWR4ID0gdGhpcy5maWVsZHMuZmluZEluZGV4KGZkID0+IGZkW0ZJRF9LRVldID09PSBjb2x1bW5OYW1lKTtcbiAgICB0aGlzLl9hc3NldEZpZWxkKGNvbHVtbk5hbWUsIEJvb2xlYW4oZmllbGRJZHggPiAtMSkpO1xuICAgIHJldHVybiBmaWVsZElkeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGlzcGxheUZvcm1hdFxuICAgKiBAcGFyYW0gY29sdW1uTmFtZVxuICAgKi9cbiAgZ2V0Q29sdW1uRGlzcGxheUZvcm1hdChjb2x1bW5OYW1lKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKGZkID0+IGZkW0ZJRF9LRVldID09PSBjb2x1bW5OYW1lKTtcbiAgICB0aGlzLl9hc3NldEZpZWxkKGNvbHVtbk5hbWUsIGZpZWxkKTtcbiAgICByZXR1cm4gZmllbGQ/LmRpc3BsYXlGb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiBhIGNlbGxcbiAgICovXG4gIGdldFZhbHVlKGNvbHVtbk5hbWU6IHN0cmluZywgcm93SWR4OiBudW1iZXIpOiBhbnkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRDb2x1bW5GaWVsZChjb2x1bW5OYW1lKTtcbiAgICByZXR1cm4gZmllbGQgPyBmaWVsZC52YWx1ZUFjY2Vzc29yKHtpbmRleDogcm93SWR4fSkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgZXhpc3RpbmcgZmllbGQgd2l0aCBhIG5ldyBvYmplY3RcbiAgICogQHBhcmFtIGZpZWxkSWR4XG4gICAqIEBwYXJhbSBuZXdGaWVsZFxuICAgKi9cbiAgdXBkYXRlQ29sdW1uRmllbGQoZmllbGRJZHg6IG51bWJlciwgbmV3RmllbGQ6IEYpOiB2b2lkIHtcbiAgICB0aGlzLmZpZWxkcyA9IE9iamVjdC5hc3NpZ24oWy4uLnRoaXMuZmllbGRzXSwge1tmaWVsZElkeF06IG5ld0ZpZWxkfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGRhdGFzZXQgY29sb3IgYnkgY3VzdG9tIGNvbG9yXG4gICAqIEBwYXJhbSBuZXdDb2xvclxuICAgKi9cbiAgdXBkYXRlVGFibGVDb2xvcihuZXdDb2xvcjogUkdCQ29sb3IpOiB2b2lkIHtcbiAgICB0aGlzLmNvbG9yID0gbmV3Q29sb3I7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBmaWx0ZXJQcm9wcyB0byBmaWVsZCBhbmQgcmV0cmlldmUgaXRcbiAgICogQHBhcmFtIGNvbHVtbk5hbWVcbiAgICovXG4gIGdldENvbHVtbkZpbHRlclByb3BzKGNvbHVtbk5hbWU6IHN0cmluZyk6IEZbJ2ZpbHRlclByb3BzJ10gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmaWVsZElkeCA9IHRoaXMuZ2V0Q29sdW1uRmllbGRJZHgoY29sdW1uTmFtZSk7XG4gICAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHNbZmllbGRJZHhdO1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmllbGQsICdmaWx0ZXJQcm9wcycpKSB7XG4gICAgICByZXR1cm4gZmllbGQuZmlsdGVyUHJvcHM7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGREb21haW4gPSB0aGlzLmdldENvbHVtbkZpbHRlckRvbWFpbihmaWVsZCk7XG4gICAgaWYgKCFmaWVsZERvbWFpbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyUHJvcHMgPSBnZXRGaWx0ZXJQcm9wcyhmaWVsZCwgZmllbGREb21haW4pO1xuICAgIGNvbnN0IG5ld0ZpZWxkID0ge1xuICAgICAgLi4uZmllbGQsXG4gICAgICBmaWx0ZXJQcm9wc1xuICAgIH07XG5cbiAgICB0aGlzLnVwZGF0ZUNvbHVtbkZpZWxkKGZpZWxkSWR4LCBuZXdGaWVsZCk7XG5cbiAgICByZXR1cm4gZmlsdGVyUHJvcHM7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgZmlsdGVycyB0byBkYXRhc2V0LCByZXR1cm4gdGhlIGZpbHRlcmVkIGRhdGFzZXQgd2l0aCB1cGRhdGVkIGBncHVGaWx0ZXJgLCBgZmlsdGVyUmVjb3JkYCwgYGZpbHRlcmVkSW5kZXhgLCBgZmlsdGVyZWRJbmRleEZvckRvbWFpbmBcbiAgICogQHBhcmFtIGZpbHRlcnNcbiAgICogQHBhcmFtIGxheWVyc1xuICAgKiBAcGFyYW0gb3B0XG4gICAqL1xuICBmaWx0ZXJUYWJsZShmaWx0ZXJzOiBGaWx0ZXJbXSwgbGF5ZXJzOiBMYXllcltdLCBvcHQ/OiBGaWx0ZXJEYXRhc2V0T3B0KTogS2VwbGVyVGFibGU8RmllbGQ+IHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgaWQ6IGRhdGFJZCwgZmlsdGVyUmVjb3JkOiBvbGRGaWx0ZXJSZWNvcmQsIGZpZWxkc30gPSB0aGlzO1xuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gZmlsdGVyc1xuICAgIGNvbnN0IGZpbHRlclJlY29yZCA9IGdldEZpbHRlclJlY29yZChkYXRhSWQsIGZpbHRlcnMsIG9wdCB8fCB7fSk7XG5cbiAgICB0aGlzLmZpbHRlclJlY29yZCA9IGZpbHRlclJlY29yZDtcbiAgICB0aGlzLmdwdUZpbHRlciA9IGdldEdwdUZpbHRlclByb3BzKGZpbHRlcnMsIGRhdGFJZCwgZmllbGRzLCB0aGlzLmdwdUZpbHRlcik7XG5cbiAgICB0aGlzLmNoYW5nZWRGaWx0ZXJzID0gZGlmZkZpbHRlcnMoZmlsdGVyUmVjb3JkLCBvbGRGaWx0ZXJSZWNvcmQpO1xuXG4gICAgaWYgKCFmaWx0ZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWx0ZXJlZEluZGV4ID0gdGhpcy5hbGxJbmRleGVzO1xuICAgICAgdGhpcy5maWx0ZXJlZEluZGV4Rm9yRG9tYWluID0gdGhpcy5hbGxJbmRleGVzO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gZ2VuZXJhdGUgMiBzZXRzIG9mIGZpbHRlciByZXN1bHRcbiAgICAvLyBmaWx0ZXJlZEluZGV4IHVzZWQgdG8gY2FsY3VsYXRlIGxheWVyIGRhdGFcbiAgICAvLyBmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIHVzZWQgdG8gY2FsY3VsYXRlIGxheWVyIERvbWFpblxuICAgIGNvbnN0IHNob3VsZENhbERvbWFpbiA9IEJvb2xlYW4odGhpcy5jaGFuZ2VkRmlsdGVycy5keW5hbWljRG9tYWluKTtcbiAgICBjb25zdCBzaG91bGRDYWxJbmRleCA9IEJvb2xlYW4odGhpcy5jaGFuZ2VkRmlsdGVycy5jcHUpO1xuXG4gICAgbGV0IGZpbHRlclJlc3VsdDogRmlsdGVyUmVzdWx0ID0ge307XG4gICAgaWYgKHNob3VsZENhbERvbWFpbiB8fCBzaG91bGRDYWxJbmRleCkge1xuICAgICAgY29uc3QgZHluYW1pY0RvbWFpbkZpbHRlcnMgPSBzaG91bGRDYWxEb21haW4gPyBmaWx0ZXJSZWNvcmQuZHluYW1pY0RvbWFpbiA6IG51bGw7XG4gICAgICBjb25zdCBjcHVGaWx0ZXJzID0gc2hvdWxkQ2FsSW5kZXggPyBmaWx0ZXJSZWNvcmQuY3B1IDogbnVsbDtcblxuICAgICAgY29uc3QgZmlsdGVyRnVuY3MgPSBmaWx0ZXJzLnJlZHVjZSgoYWNjLCBmaWx0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRJbmRleCA9IGdldERhdGFzZXRGaWVsZEluZGV4Rm9yRmlsdGVyKHRoaXMuaWQsIGZpbHRlcik7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRJbmRleCAhPT0gLTEgPyBmaWVsZHNbZmllbGRJbmRleF0gOiBudWxsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgIFtmaWx0ZXIuaWRdOiBnZXRGaWx0ZXJGdW5jdGlvbihmaWVsZCwgdGhpcy5pZCwgZmlsdGVyLCBsYXllcnMsIGRhdGFDb250YWluZXIpXG4gICAgICAgIH07XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIGZpbHRlclJlc3VsdCA9IGZpbHRlckRhdGFCeUZpbHRlclR5cGVzKFxuICAgICAgICB7ZHluYW1pY0RvbWFpbkZpbHRlcnMsIGNwdUZpbHRlcnMsIGZpbHRlckZ1bmNzfSxcbiAgICAgICAgZGF0YUNvbnRhaW5lclxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBmaWx0ZXJSZXN1bHQuZmlsdGVyZWRJbmRleCB8fCB0aGlzLmZpbHRlcmVkSW5kZXg7XG4gICAgdGhpcy5maWx0ZXJlZEluZGV4Rm9yRG9tYWluID1cbiAgICAgIGZpbHRlclJlc3VsdC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluIHx8IHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGZpbHRlcnMgdG8gYSBkYXRhc2V0IGFsbCBvbiBDUFUsIGFzc2lnbiB0byBgZmlsdGVyZWRJZHhDUFVgLCBgZmlsdGVyUmVjb3JkQ1BVYFxuICAgKiBAcGFyYW0gZmlsdGVyc1xuICAgKiBAcGFyYW0gbGF5ZXJzXG4gICAqL1xuICBmaWx0ZXJUYWJsZUNQVShmaWx0ZXJzOiBGaWx0ZXJbXSwgbGF5ZXJzOiBMYXllcltdKTogS2VwbGVyVGFibGU8RmllbGQ+IHtcbiAgICBjb25zdCBvcHQgPSB7XG4gICAgICBjcHVPbmx5OiB0cnVlLFxuICAgICAgaWdub3JlRG9tYWluOiB0cnVlXG4gICAgfTtcblxuICAgIC8vIG5vIGZpbHRlclxuICAgIGlmICghZmlsdGVycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJZHhDUFUgPSB0aGlzLmFsbEluZGV4ZXM7XG4gICAgICB0aGlzLmZpbHRlclJlY29yZENQVSA9IGdldEZpbHRlclJlY29yZCh0aGlzLmlkLCBmaWx0ZXJzLCBvcHQpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gbm8gZ3B1IGZpbHRlclxuICAgIGlmICghZmlsdGVycy5maW5kKGYgPT4gZi5ncHUpKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWR4Q1BVID0gdGhpcy5maWx0ZXJlZEluZGV4O1xuICAgICAgdGhpcy5maWx0ZXJSZWNvcmRDUFUgPSBnZXRGaWx0ZXJSZWNvcmQodGhpcy5pZCwgZmlsdGVycywgb3B0KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIG1ha2UgYSBjb3B5IGZvciBjcHUgZmlsdGVyaW5nXG4gICAgY29uc3QgY29waWVkID0gY29weVRhYmxlKHRoaXMpO1xuXG4gICAgY29waWVkLmZpbHRlclJlY29yZCA9IHRoaXMuZmlsdGVyUmVjb3JkQ1BVO1xuICAgIGNvcGllZC5maWx0ZXJlZEluZGV4ID0gdGhpcy5maWx0ZXJlZElkeENQVSB8fCBbXTtcblxuICAgIGNvbnN0IGZpbHRlcmVkID0gY29waWVkLmZpbHRlclRhYmxlKGZpbHRlcnMsIGxheWVycywgb3B0KTtcblxuICAgIHRoaXMuZmlsdGVyZWRJZHhDUFUgPSBmaWx0ZXJlZC5maWx0ZXJlZEluZGV4O1xuICAgIHRoaXMuZmlsdGVyUmVjb3JkQ1BVID0gZmlsdGVyZWQuZmlsdGVyUmVjb3JkO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIGZpZWxkIGRvbWFpbiBiYXNlZCBvbiBmaWVsZCB0eXBlIGFuZCBkYXRhXG4gICAqIGZvciBGaWx0ZXJcbiAgICovXG4gIGdldENvbHVtbkZpbHRlckRvbWFpbihmaWVsZDogRik6IEZpZWxkRG9tYWluIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lcn0gPSB0aGlzO1xuICAgIGNvbnN0IHt2YWx1ZUFjY2Vzc29yfSA9IGZpZWxkO1xuXG4gICAgbGV0IGRvbWFpbjtcblxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgICAgIC8vIGNhbGN1bGF0ZSBkb21haW4gYW5kIHN0ZXBcbiAgICAgICAgcmV0dXJuIGdldE51bWVyaWNGaWVsZERvbWFpbihkYXRhQ29udGFpbmVyLCB2YWx1ZUFjY2Vzc29yKTtcblxuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMuYm9vbGVhbjpcbiAgICAgICAgcmV0dXJuIHtkb21haW46IFt0cnVlLCBmYWxzZV19O1xuXG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5oMzpcbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICAgIGRvbWFpbiA9IGdldE9yZGluYWxEb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcik7XG4gICAgICAgIHJldHVybiB7ZG9tYWlufTtcblxuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgICByZXR1cm4gZ2V0VGltZXN0YW1wRmllbGREb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7ZG9tYWluOiBnZXRPcmRpbmFsRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEdldCB0aGUgZG9tYWluIG9mIHRoaXMgY29sdW1uIGJhc2VkIG9uIHNjYWxlIHR5cGVcbiAgICovXG4gIGdldENvbHVtbkxheWVyRG9tYWluKGZpZWxkOiBGLCBzY2FsZVR5cGU6IHN0cmluZyk6IG51bWJlcltdIHwgc3RyaW5nW10gfCBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpbHRlcmVkSW5kZXhGb3JEb21haW59ID0gdGhpcztcblxuICAgIGlmICghU0NBTEVfVFlQRVNbc2NhbGVUeXBlXSkge1xuICAgICAgQ29uc29sZS5lcnJvcihgc2NhbGUgdHlwZSAke3NjYWxlVHlwZX0gbm90IHN1cHBvcnRlZGApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qge3ZhbHVlQWNjZXNzb3J9ID0gZmllbGQ7XG4gICAgY29uc3QgaW5kZXhWYWx1ZUFjY2Vzc29yID0gaSA9PiB2YWx1ZUFjY2Vzc29yKHtpbmRleDogaX0pO1xuICAgIGNvbnN0IHNvcnRGdW5jdGlvbiA9IGdldFNvcnRpbmdGdW5jdGlvbihmaWVsZC50eXBlKTtcblxuICAgIHN3aXRjaCAoc2NhbGVUeXBlKSB7XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLm9yZGluYWw6XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWw6XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnBvaW50OlxuICAgICAgICAvLyBkbyBub3QgcmVjYWxjdWxhdGUgb3JkaW5hbCBkb21haW4gYmFzZWQgb24gZmlsdGVyZWQgZGF0YVxuICAgICAgICAvLyBkb24ndCBuZWVkIHRvIHVwZGF0ZSBvcmRpbmFsIGRvbWFpbiBldmVyeSB0aW1lXG4gICAgICAgIHJldHVybiBnZXRPcmRpbmFsRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpO1xuXG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnF1YW50aWxlOlxuICAgICAgICByZXR1cm4gZ2V0UXVhbnRpbGVEb21haW4oZmlsdGVyZWRJbmRleEZvckRvbWFpbiwgaW5kZXhWYWx1ZUFjY2Vzc29yLCBzb3J0RnVuY3Rpb24pO1xuXG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLmxvZzpcbiAgICAgICAgcmV0dXJuIGdldExvZ0RvbWFpbihmaWx0ZXJlZEluZGV4Rm9yRG9tYWluLCBpbmRleFZhbHVlQWNjZXNzb3IpO1xuXG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnF1YW50aXplOlxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5saW5lYXI6XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnNxcnQ6XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLmN1c3RvbTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRMaW5lYXJEb21haW4oZmlsdGVyZWRJbmRleEZvckRvbWFpbiwgaW5kZXhWYWx1ZUFjY2Vzc29yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2FtcGxlIG9mIHJvd3MgdG8gY2FsY3VsYXRlIGxheWVyIGJvdW5kYXJpZXNcbiAgICovXG4gIC8vIGdldFNhbXBsZURhdGEocm93cylcblxuICAvKipcbiAgICogUGFyc2UgY2VsbCB2YWx1ZSBiYXNlZCBvbiBjb2x1bW4gdHlwZSBhbmQgcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gICAqIFZhbHVlIHRoZSBmaWVsZCB2YWx1ZSwgdHlwZSB0aGUgZmllbGQgdHlwZVxuICAgKi9cbiAgLy8gcGFyc2VGaWVsZFZhbHVlKHZhbHVlLCB0eXBlKVxuXG4gIC8vIHNvcnREYXRhc2V0QnlDb2x1bW4oKVxuXG4gIC8qKlxuICAgKiBBc3NlcnQgd2hldGhlciBmaWVsZCBleGlzdFxuICAgKiBAcGFyYW0gZmllbGROYW1lXG4gICAqIEBwYXJhbSBjb25kaXRpb25cbiAgICovXG4gIF9hc3NldEZpZWxkKGZpZWxkTmFtZTogc3RyaW5nLCBjb25kaXRpb246IGFueSk6IHZvaWQge1xuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICBDb25zb2xlLmVycm9yKGAke2ZpZWxkTmFtZX0gZG9lc250IGV4aXN0IGluIGRhdGFzZXQgJHt0aGlzLmlkfWApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBEYXRhc2V0cyA9IHtcbiAgW2tleTogc3RyaW5nXTogS2VwbGVyVGFibGU8RmllbGQ+O1xufTtcblxuLy8gSEVMUEVSIEZVTkNUSU9OUyAoTUFJTkxZIEVYUE9SVEVEIEZPUiBURVNULi4uKVxuLy8gaGF2ZSB0byBkb3VibGUgZXhjYXBlXG5jb25zdCBzcGVjaWFsQ2hhcmFjdGVyU2V0ID0gYFsjXyZAXFxcXC5cXFxcLVxcXFwgXWA7XG5cbmZ1bmN0aW9uIGZvdW5kTWF0Y2hpbmdGaWVsZHMocmUsIHN1ZmZpeFBhaXIsIGFsbE5hbWVzLCBmaWVsZE5hbWUpIHtcbiAgY29uc3QgcGFydG5lcklkeCA9IGFsbE5hbWVzLmZpbmRJbmRleChcbiAgICBkID0+IGQgPT09IGZpZWxkTmFtZS5yZXBsYWNlKHJlLCBtYXRjaCA9PiBtYXRjaC5yZXBsYWNlKHN1ZmZpeFBhaXJbMF0sIHN1ZmZpeFBhaXJbMV0pKVxuICApO1xuICBsZXQgYWx0SWR4ID0gLTE7XG4gIGlmIChwYXJ0bmVySWR4ID4gLTEpIHtcbiAgICAvLyBpZiBmb3VuZCBwYXJ0bmVyLCBnbyBvbiBhbmQgbG9vayBmb3IgYWx0aXR1ZGVcbiAgICBBTFRJVFVERV9GSUVMRFMuc29tZShhbHQgPT4ge1xuICAgICAgYWx0SWR4ID0gYWxsTmFtZXMuZmluZEluZGV4KFxuICAgICAgICBkID0+IGQgPT09IGZpZWxkTmFtZS5yZXBsYWNlKHJlLCBtYXRjaCA9PiBtYXRjaC5yZXBsYWNlKHN1ZmZpeFBhaXJbMF0sIGFsdCkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGFsdElkeCA+IC0xO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB7cGFydG5lcklkeCwgYWx0SWR4fTtcbn1cbi8qKlxuICogRmluZCBwb2ludCBmaWVsZHMgcGFpcnMgZnJvbSBmaWVsZHNcbiAqXG4gKiBAcGFyYW0gZmllbGRzXG4gKiBAcmV0dXJucyBmb3VuZCBwb2ludCBmaWVsZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQb2ludEZpZWxkUGFpcnMoZmllbGRzOiBGaWVsZFtdKTogRmllbGRQYWlyW10ge1xuICBjb25zdCBhbGxOYW1lcyA9IGZpZWxkcy5tYXAoZiA9PiBmLm5hbWUudG9Mb3dlckNhc2UoKSk7XG5cbiAgLy8gZ2V0IGxpc3Qgb2YgYWxsIGZpZWxkcyB3aXRoIG1hdGNoaW5nIHN1ZmZpeGVzXG4gIGNvbnN0IGFjYzogRmllbGRQYWlyW10gPSBbXTtcbiAgcmV0dXJuIGFsbE5hbWVzLnJlZHVjZSgoY2FycnksIGZpZWxkTmFtZSwgaWR4KSA9PiB7XG4gICAgLy8gVGhpcyBzZWFyY2ggZm9yIHBhaXJzIHdpbGwgZWFybHkgZXhpdCBpZiBmb3VuZC5cbiAgICBmb3IgKGNvbnN0IHN1ZmZpeFBhaXIgb2YgVFJJUF9QT0lOVF9GSUVMRFMpIHtcbiAgICAgIC8vIG1hdGNoIGZpcnN0IHN1ZmZpeFxuICAgICAgLy8gKF58WyNfJkBcXC5cXC1cXCBdKWxhdChbI18mQFxcLlxcLVxcIF18JClcbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChgKF58JHtzcGVjaWFsQ2hhcmFjdGVyU2V0fSkke3N1ZmZpeFBhaXJbMF19KCR7c3BlY2lhbENoYXJhY3RlclNldH18JClgKTtcblxuICAgICAgaWYgKHJlLnRlc3QoZmllbGROYW1lKSkge1xuICAgICAgICBjb25zdCB7cGFydG5lcklkeCwgYWx0SWR4fSA9IGZvdW5kTWF0Y2hpbmdGaWVsZHMocmUsIHN1ZmZpeFBhaXIsIGFsbE5hbWVzLCBmaWVsZE5hbWUpO1xuXG4gICAgICAgIGlmIChwYXJ0bmVySWR4ID4gLTEpIHtcbiAgICAgICAgICBjb25zdCB0cmltTmFtZSA9IGZpZWxkTmFtZS5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xuXG4gICAgICAgICAgY2FycnkucHVzaCh7XG4gICAgICAgICAgICBkZWZhdWx0TmFtZTogdHJpbU5hbWUgfHwgJ3BvaW50JyxcbiAgICAgICAgICAgIHBhaXI6IHtcbiAgICAgICAgICAgICAgbGF0OiB7XG4gICAgICAgICAgICAgICAgZmllbGRJZHg6IGlkeCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGRzW2lkeF0ubmFtZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsbmc6IHtcbiAgICAgICAgICAgICAgICBmaWVsZElkeDogcGFydG5lcklkeCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGRzW3BhcnRuZXJJZHhdLm5hbWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLi4uKGFsdElkeCA+IC0xXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGFsdGl0dWRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZmllbGRJZHg6IGFsdElkeCxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGRzW2FsdElkeF0ubmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdWZmaXg6IHN1ZmZpeFBhaXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gY2Fycnk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9LCBhY2MpO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YXNldFxuICogQHBhcmFtIGNvbHVtblxuICogQHBhcmFtIG1vZGVcbiAqIEB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RGF0YXNldEJ5Q29sdW1uKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZTxGaWVsZD4sXG4gIGNvbHVtbjogc3RyaW5nLFxuICBtb2RlPzogc3RyaW5nXG4pOiBLZXBsZXJUYWJsZTxGaWVsZD4ge1xuICBjb25zdCB7YWxsSW5kZXhlcywgZmllbGRzLCBkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IGZpZWxkSW5kZXggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBjb2x1bW4pO1xuICBpZiAoZmllbGRJbmRleCA8IDApIHtcbiAgICByZXR1cm4gZGF0YXNldDtcbiAgfVxuXG4gIGNvbnN0IHNvcnRCeSA9IFNPUlRfT1JERVJbbW9kZSB8fCAnJ10gfHwgU09SVF9PUkRFUi5BU0NFTkRJTkc7XG5cbiAgaWYgKHNvcnRCeSA9PT0gU09SVF9PUkRFUi5VTlNPUlQpIHtcbiAgICBkYXRhc2V0LnNvcnRDb2x1bW4gPSB7fTtcbiAgICBkYXRhc2V0LnNvcnRPcmRlciA9IG51bGw7XG5cbiAgICByZXR1cm4gZGF0YXNldDtcbiAgfVxuXG4gIGNvbnN0IHNvcnRGdW5jdGlvbiA9IHNvcnRCeSA9PT0gU09SVF9PUkRFUi5BU0NFTkRJTkcgPyBhc2NlbmRpbmcgOiBkZXNjZW5kaW5nO1xuICBjb25zdCBzb3J0T3JkZXIgPSBhbGxJbmRleGVzLnNsaWNlKCkuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IHZhbHVlMSA9IGRhdGFDb250YWluZXIudmFsdWVBdChhLCBmaWVsZEluZGV4KTtcbiAgICBjb25zdCB2YWx1ZTIgPSBkYXRhQ29udGFpbmVyLnZhbHVlQXQoYiwgZmllbGRJbmRleCk7XG4gICAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUxKSAmJiBub3ROdWxsb3JVbmRlZmluZWQodmFsdWUyKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUxKSAmJiAhbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlMikpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIHNvcnRGdW5jdGlvbih2YWx1ZTEsIHZhbHVlMik7XG4gIH0pO1xuXG4gIGRhdGFzZXQuc29ydENvbHVtbiA9IHtcbiAgICBbY29sdW1uXTogc29ydEJ5XG4gIH07XG4gIGRhdGFzZXQuc29ydE9yZGVyID0gc29ydE9yZGVyO1xuXG4gIHJldHVybiBkYXRhc2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGluVGFibGVDb2x1bW5zKGRhdGFzZXQ6IEtlcGxlclRhYmxlPEZpZWxkPiwgY29sdW1uOiBzdHJpbmcpOiBLZXBsZXJUYWJsZTxGaWVsZD4ge1xuICBjb25zdCBmaWVsZCA9IGRhdGFzZXQuZ2V0Q29sdW1uRmllbGQoY29sdW1uKTtcbiAgaWYgKCFmaWVsZCkge1xuICAgIHJldHVybiBkYXRhc2V0O1xuICB9XG5cbiAgbGV0IHBpbm5lZENvbHVtbnM7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGFzZXQucGlubmVkQ29sdW1ucykgJiYgZGF0YXNldC5waW5uZWRDb2x1bW5zLmluY2x1ZGVzKGZpZWxkLm5hbWUpKSB7XG4gICAgLy8gdW5waW4gaXRcbiAgICBwaW5uZWRDb2x1bW5zID0gZGF0YXNldC5waW5uZWRDb2x1bW5zLmZpbHRlcihjbyA9PiBjbyAhPT0gZmllbGQubmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcGlubmVkQ29sdW1ucyA9IChkYXRhc2V0LnBpbm5lZENvbHVtbnMgfHwgW10pLmNvbmNhdChmaWVsZC5uYW1lKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGNvcHlUYWJsZUFuZFVwZGF0ZShkYXRhc2V0LCB7cGlubmVkQ29sdW1uc30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlKG9yaWdpbmFsOiBLZXBsZXJUYWJsZTxGaWVsZD4pOiBLZXBsZXJUYWJsZTxGaWVsZD4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvcmlnaW5hbCkpLCBvcmlnaW5hbCk7XG59XG5cbi8qKlxuICogQHR5cGVcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5VGFibGVBbmRVcGRhdGUoXG4gIG9yaWdpbmFsOiBLZXBsZXJUYWJsZTxGaWVsZD4sXG4gIG9wdGlvbnM6IFBhcnRpYWw8S2VwbGVyVGFibGU8RmllbGQ+PiA9IHt9XG4pOiBLZXBsZXJUYWJsZTxGaWVsZD4ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob3B0aW9ucykucmVkdWNlKChhY2MsIGVudHJ5KSA9PiB7XG4gICAgYWNjW2VudHJ5WzBdXSA9IGVudHJ5WzFdO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIGNvcHlUYWJsZShvcmlnaW5hbCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRWYWx1ZUFjY2Vzc29yPFxuICBGIGV4dGVuZHMge1xuICAgIHR5cGU/OiBGaWVsZFsndHlwZSddO1xuICAgIGZvcm1hdD86IEZpZWxkWydmb3JtYXQnXTtcbiAgfVxuPihmOiBGLCBpOiBudW1iZXIsIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSB7XG4gIHJldHVybiBtYXliZVRvRGF0ZS5iaW5kKFxuICAgIG51bGwsXG4gICAgLy8gaXMgdGltZVxuICAgIGYudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCxcbiAgICBpLFxuICAgIGYuZm9ybWF0IHx8ICcnLFxuICAgIGRjXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEtlcGxlclRhYmxlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQXNCQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFvQkEsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQTJFLFNBQUFNLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQSxFQUFBLFdBQUFILEVBQUEsSUFBQVQsQ0FBQSxDQUFBUSxNQUFBLEtBQUFLLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUFkLENBQUEsQ0FBQVMsRUFBQSxVQUFBUixDQUFBLFdBQUFBLEVBQUFELENBQUEsVUFBQUEsQ0FBQSxLQUFBZSxDQUFBLEVBQUFMLENBQUEsZ0JBQUFNLFNBQUEsaUpBQUFDLENBQUEsRUFBQUMsQ0FBQSxPQUFBQyxDQUFBLGdCQUFBUixDQUFBLFdBQUFBLEVBQUEsSUFBQVQsQ0FBQSxHQUFBQSxDQUFBLENBQUFrQixJQUFBLENBQUFwQixDQUFBLE1BQUFZLENBQUEsV0FBQUEsRUFBQSxRQUFBWixDQUFBLEdBQUFFLENBQUEsQ0FBQW1CLElBQUEsV0FBQUgsQ0FBQSxHQUFBbEIsQ0FBQSxDQUFBYSxJQUFBLEVBQUFiLENBQUEsS0FBQUMsQ0FBQSxXQUFBQSxFQUFBRCxDQUFBLElBQUFtQixDQUFBLE9BQUFGLENBQUEsR0FBQWpCLENBQUEsS0FBQWUsQ0FBQSxXQUFBQSxFQUFBLFVBQUFHLENBQUEsWUFBQWhCLENBQUEsY0FBQUEsQ0FBQSw4QkFBQWlCLENBQUEsUUFBQUYsQ0FBQTtBQUFBLFNBQUFWLDRCQUFBUCxDQUFBLEVBQUFrQixDQUFBLFFBQUFsQixDQUFBLDJCQUFBQSxDQUFBLFNBQUFzQixpQkFBQSxDQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQSxPQUFBaEIsQ0FBQSxNQUFBcUIsUUFBQSxDQUFBSCxJQUFBLENBQUFwQixDQUFBLEVBQUF3QixLQUFBLDZCQUFBdEIsQ0FBQSxJQUFBRixDQUFBLENBQUF5QixXQUFBLEtBQUF2QixDQUFBLEdBQUFGLENBQUEsQ0FBQXlCLFdBQUEsQ0FBQUMsSUFBQSxhQUFBeEIsQ0FBQSxjQUFBQSxDQUFBLEdBQUFHLEtBQUEsQ0FBQXNCLElBQUEsQ0FBQTNCLENBQUEsb0JBQUFFLENBQUEsK0NBQUEwQixJQUFBLENBQUExQixDQUFBLElBQUFvQixpQkFBQSxDQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQTtBQUFBLFNBQUFJLGtCQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQSxhQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQWxCLENBQUEsQ0FBQVEsTUFBQSxNQUFBVSxDQUFBLEdBQUFsQixDQUFBLENBQUFRLE1BQUEsWUFBQVAsQ0FBQSxNQUFBVyxDQUFBLEdBQUFQLEtBQUEsQ0FBQWEsQ0FBQSxHQUFBakIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBakIsQ0FBQSxJQUFBVyxDQUFBLENBQUFYLENBQUEsSUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFVBQUFXLENBQUE7QUFBQSxTQUFBaUIsUUFBQTVCLENBQUEsRUFBQUQsQ0FBQSxRQUFBRSxDQUFBLEdBQUE0QixNQUFBLENBQUFDLElBQUEsQ0FBQTlCLENBQUEsT0FBQTZCLE1BQUEsQ0FBQUUscUJBQUEsUUFBQWYsQ0FBQSxHQUFBYSxNQUFBLENBQUFFLHFCQUFBLENBQUEvQixDQUFBLEdBQUFELENBQUEsS0FBQWlCLENBQUEsR0FBQUEsQ0FBQSxDQUFBZ0IsTUFBQSxXQUFBakMsQ0FBQSxXQUFBOEIsTUFBQSxDQUFBSSx3QkFBQSxDQUFBakMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFtQyxVQUFBLE9BQUFqQyxDQUFBLENBQUFrQyxJQUFBLENBQUFDLEtBQUEsQ0FBQW5DLENBQUEsRUFBQWUsQ0FBQSxZQUFBZixDQUFBO0FBQUEsU0FBQW9DLGNBQUFyQyxDQUFBLGFBQUFELENBQUEsTUFBQUEsQ0FBQSxHQUFBdUMsU0FBQSxDQUFBL0IsTUFBQSxFQUFBUixDQUFBLFVBQUFFLENBQUEsV0FBQXFDLFNBQUEsQ0FBQXZDLENBQUEsSUFBQXVDLFNBQUEsQ0FBQXZDLENBQUEsUUFBQUEsQ0FBQSxPQUFBNkIsT0FBQSxDQUFBQyxNQUFBLENBQUE1QixDQUFBLE9BQUFzQyxPQUFBLFdBQUF4QyxDQUFBLFFBQUF5QyxnQkFBQSxhQUFBeEMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsQ0FBQUYsQ0FBQSxTQUFBOEIsTUFBQSxDQUFBWSx5QkFBQSxHQUFBWixNQUFBLENBQUFhLGdCQUFBLENBQUExQyxDQUFBLEVBQUE2QixNQUFBLENBQUFZLHlCQUFBLENBQUF4QyxDQUFBLEtBQUEyQixPQUFBLENBQUFDLE1BQUEsQ0FBQTVCLENBQUEsR0FBQXNDLE9BQUEsV0FBQXhDLENBQUEsSUFBQThCLE1BQUEsQ0FBQWMsY0FBQSxDQUFBM0MsQ0FBQSxFQUFBRCxDQUFBLEVBQUE4QixNQUFBLENBQUFJLHdCQUFBLENBQUFoQyxDQUFBLEVBQUFGLENBQUEsaUJBQUFDLENBQUEsSUFsRDNFO0FBQ0E7QUFtREE7O0FBa0RBO0FBQ0EsSUFBTTRDLE9BQU8sR0FBRyxNQUFNO0FBRWYsU0FBU0MsV0FBV0EsQ0FDekJDLE1BQWUsRUFDZkMsUUFBZ0IsRUFDaEJDLE1BQWMsRUFDZEMsRUFBMEI7QUFDMUI7QUFDQUMsQ0FBMEIsRUFDMUI7RUFDQSxJQUFJSixNQUFNLEVBQUU7SUFDVixPQUFPLElBQUFLLHNCQUFlLEVBQUMvQyxLQUFLLENBQUNDLE9BQU8sQ0FBQzZDLENBQUMsQ0FBQyxHQUFHQSxDQUFDLENBQUNILFFBQVEsQ0FBQyxHQUFHRSxFQUFFLENBQUNHLE9BQU8sQ0FBQ0YsQ0FBQyxDQUFDRyxLQUFLLEVBQUVOLFFBQVEsQ0FBQyxFQUFFQyxNQUFNLENBQUM7RUFDaEc7RUFFQSxPQUFPNUMsS0FBSyxDQUFDQyxPQUFPLENBQUM2QyxDQUFDLENBQUMsR0FBR0EsQ0FBQyxDQUFDSCxRQUFRLENBQUMsR0FBR0UsRUFBRSxDQUFDRyxPQUFPLENBQUNGLENBQUMsQ0FBQ0csS0FBSyxFQUFFTixRQUFRLENBQUM7QUFDdkU7QUFBQyxJQUVLTyxXQUFXO0VBc0NmLFNBQUFBLFlBQUFDLElBQUEsRUFZRztJQUFBLElBWERDLElBQUksR0FBQUQsSUFBQSxDQUFKQyxJQUFJO01BQ0pDLEtBQUssR0FBQUYsSUFBQSxDQUFMRSxLQUFLO01BQ0xDLFFBQVEsR0FBQUgsSUFBQSxDQUFSRyxRQUFRO01BQUFDLHFCQUFBLEdBQUFKLElBQUEsQ0FDUkssb0JBQW9CO01BQXBCQSxvQkFBb0IsR0FBQUQscUJBQUEsY0FBRyxJQUFJLEdBQUFBLHFCQUFBO01BQUFFLHFCQUFBLEdBQUFOLElBQUEsQ0FDM0JPLG9CQUFvQjtNQUFwQkEsb0JBQW9CLEdBQUFELHFCQUFBLGNBQUcsS0FBSyxHQUFBQSxxQkFBQTtJQUFBLElBQUFFLGdCQUFBLG1CQUFBVCxXQUFBO0lBQUEsSUFBQWQsZ0JBQUE7SUFBQSxJQUFBQSxnQkFBQTtJQUFBLElBQUFBLGdCQUFBO0lBQUEsSUFBQUEsZ0JBQUE7SUFwQzlCO0lBQUEsSUFBQUEsZ0JBQUEsNkJBQ2MsRUFBRTtJQUFBLElBQUFBLGdCQUFBO0lBQUEsSUFBQUEsZ0JBQUEsaUNBSU8sRUFBRTtJQUFBLElBQUFBLGdCQUFBLG9DQUNDLEVBQUU7SUFBQSxJQUFBQSxnQkFBQTtJQUFBLElBQUFBLGdCQUFBLDZDQUVPLEVBQUU7SUFBQSxJQUFBQSxnQkFBQSxpQ0FDWCxFQUFFO0lBQUEsSUFBQUEsZ0JBQUE7SUFBQSxJQUFBQSxnQkFBQTtJQUFBLElBQUFBLGdCQUFBO0lBQUEsSUFBQUEsZ0JBQUE7SUFNNUI7SUFBQSxJQUFBQSxnQkFBQTtJQUFBLElBQUFBLGdCQUFBO0lBQUEsSUFBQUEsZ0JBQUE7SUFBQSxJQUFBQSxnQkFBQTtJQUFBLElBQUFBLGdCQUFBO0lBV0E7SUFBQSxJQUFBQSxnQkFBQTtJQUFBLElBQUFBLGdCQUFBO0lBa0JFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0lBRUEsSUFBTXdCLFdBQVcsR0FBQTNCLGFBQUE7TUFDZjRCLEVBQUUsRUFBRSxJQUFBQywyQkFBYyxFQUFDLENBQUMsQ0FBQztNQUNyQkMsS0FBSyxFQUFFLGFBQWE7TUFDcEJDLElBQUksRUFBRTtJQUFFLEdBQ0xaLElBQUksQ0FDUjtJQUVELElBQU1hLGVBQWUsR0FBRztNQUN0QkosRUFBRSxFQUFFRCxXQUFXLENBQUNDLEVBQUU7TUFDbEI7TUFDQWpCLE1BQU0sRUFBRWdCLFdBQVcsQ0FBQ2hCLE1BQU0sSUFBSSxFQUFFO01BQ2hDbUIsS0FBSyxFQUFFSCxXQUFXLENBQUNHLEtBQUssSUFBSTtJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDRixFQUFFLEdBQUdELFdBQVcsQ0FBQ0MsRUFBRTtJQUN4QixJQUFJLENBQUNHLElBQUksR0FBR0osV0FBVyxDQUFDSSxJQUFJO0lBQzVCLElBQUksQ0FBQ0QsS0FBSyxHQUFHSCxXQUFXLENBQUNHLEtBQUs7SUFDOUIsSUFBSSxDQUFDVixLQUFLLEdBQUdBLEtBQUs7SUFDbEIsSUFBSSxDQUFDQyxRQUFRLEdBQUFyQixhQUFBLENBQUFBLGFBQUEsS0FDUmdDLGVBQWUsR0FDZlgsUUFBUSxDQUNaO0lBRUQsSUFBSSxDQUFDRSxvQkFBb0IsR0FBR0Esb0JBQW9CO0lBQ2hELElBQUksQ0FBQ0Usb0JBQW9CLEdBQUdBLG9CQUFvQjtJQUVoRCxJQUFJLENBQUNRLGFBQWEsR0FBRyxJQUFBQywwQkFBbUIsRUFBQyxFQUFFLENBQUM7SUFDNUMsSUFBSSxDQUFDQyxTQUFTLEdBQUcsSUFBQUMsaUNBQWlCLEVBQUMsRUFBRSxFQUFFLElBQUksQ0FBQ1IsRUFBRSxFQUFFLEVBQUUsRUFBRVMsU0FBUyxDQUFDO0VBQ2hFO0VBQUMsV0FBQUMsYUFBQSxhQUFBckIsV0FBQTtJQUFBc0IsR0FBQTtJQUFBL0QsS0FBQTtNQUFBLElBQUFnRSxXQUFBLE9BQUFDLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FFRCxTQUFBQyxRQUFBQyxLQUFBO1FBQUEsSUFBQUMsSUFBQSxFQUFBQyxpQkFBQSxFQUFBQyxlQUFBLEVBQUFmLGFBQUEsRUFBQWdCLE1BQUEsRUFBQUMsVUFBQTtRQUFBLE9BQUFSLFlBQUEsWUFBQVMsSUFBQSxVQUFBQyxTQUFBQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUF0RSxJQUFBO1lBQUE7Y0FBa0IrRCxJQUFJLEdBQUFELEtBQUEsQ0FBSkMsSUFBSTtjQUNkQyxpQkFBaUIsR0FBR0QsSUFBSSxDQUFDUyxJQUFJLEdBQUdULElBQUksQ0FBQ1MsSUFBSSxHQUFHVCxJQUFJLENBQUNVLElBQUk7Y0FDckRSLGVBQWUsR0FBR0YsSUFBSSxDQUFDUyxJQUFJLEdBQUdFLGVBQVEsQ0FBQ0MsVUFBVSxHQUFHRCxlQUFRLENBQUNFLFVBQVU7Y0FFdkUxQixhQUFhLEdBQUcsSUFBQUMsMEJBQW1CLEVBQUNhLGlCQUFpQixFQUFFO2dCQUMzREUsTUFBTSxFQUFFSCxJQUFJLENBQUNHLE1BQU07Z0JBQ25CRCxlQUFlLEVBQWZBO2NBQ0YsQ0FBQyxDQUFDO2NBRUlDLE1BQWUsR0FBR0gsSUFBSSxDQUFDRyxNQUFNLENBQUNXLEdBQUcsQ0FBQyxVQUFDbkYsQ0FBQyxFQUFFb0YsQ0FBQztnQkFBQSxPQUFBN0QsYUFBQSxDQUFBQSxhQUFBLEtBQ3hDdkIsQ0FBQztrQkFDSmlDLFFBQVEsRUFBRW1ELENBQUM7a0JBQ1hqQyxFQUFFLEVBQUVuRCxDQUFDLENBQUNXLElBQUk7a0JBQ1YwRSxXQUFXLEVBQUVyRixDQUFDLENBQUNxRixXQUFXLElBQUlyRixDQUFDLENBQUNXLElBQUk7a0JBQ3BDMkUsWUFBWSxFQUFFdEYsQ0FBQyxDQUFDc0YsWUFBWSxJQUFJQywwQkFBZSxDQUFDQyxNQUFNO2tCQUN0RHRELE1BQU0sRUFBRWxDLENBQUMsQ0FBQ2tDLE1BQU0sSUFBSSxFQUFFO2tCQUN0QnVELGFBQWEsRUFBRUMscUJBQXFCLENBQUMxRixDQUFDLEVBQUVvRixDQUFDLEVBQUU1QixhQUFhO2dCQUFDO2NBQUEsQ0FDekQsQ0FBQztjQUVHaUIsVUFBVSxHQUFHakIsYUFBYSxDQUFDbUMsYUFBYSxDQUFDLENBQUM7Y0FDaEQsSUFBSSxDQUFDbkMsYUFBYSxHQUFHQSxhQUFhO2NBQ2xDLElBQUksQ0FBQ2lCLFVBQVUsR0FBR0EsVUFBVTtjQUM1QixJQUFJLENBQUNtQixhQUFhLEdBQUduQixVQUFVO2NBQy9CLElBQUksQ0FBQ29CLHNCQUFzQixHQUFHcEIsVUFBVTtjQUN4QyxJQUFJLENBQUNxQixVQUFVLEdBQUdDLG1CQUFtQixDQUFDdkIsTUFBTSxDQUFDO2NBQzdDO2NBQ0EsSUFBSSxDQUFDQSxNQUFNLEdBQUdBLE1BQU07Y0FDcEIsSUFBSSxDQUFDZCxTQUFTLEdBQUcsSUFBQUMsaUNBQWlCLEVBQUMsRUFBRSxFQUFFLElBQUksQ0FBQ1IsRUFBRSxFQUFFcUIsTUFBTSxFQUFFWixTQUFTLENBQUM7WUFBQztZQUFBO2NBQUEsT0FBQWdCLFFBQUEsQ0FBQW9CLElBQUE7VUFBQTtRQUFBLEdBQUE3QixPQUFBO01BQUEsQ0FDcEU7TUFBQSxTQTVCSzhCLFVBQVVBLENBQUFDLEVBQUE7UUFBQSxPQUFBbkMsV0FBQSxDQUFBekMsS0FBQSxPQUFBRSxTQUFBO01BQUE7TUFBQSxPQUFWeUUsVUFBVTtJQUFBO0lBOEJoQjtBQUNGO0FBQ0E7QUFDQTtFQUhFO0lBQUFuQyxHQUFBO0lBQUEvRCxLQUFBO01BQUEsSUFBQW9HLE9BQUEsT0FBQW5DLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FJQSxTQUFBa0MsU0FBYS9CLElBQTBCO1FBQUEsSUFBQWdDLHFCQUFBLEVBQUFDLG1CQUFBO1FBQUEsSUFBQWhDLGlCQUFBO1FBQUEsT0FBQUwsWUFBQSxZQUFBUyxJQUFBLFVBQUE2QixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTNCLElBQUEsR0FBQTJCLFNBQUEsQ0FBQWxHLElBQUE7WUFBQTtjQUMvQmdFLGlCQUFpQixHQUFHRCxJQUFJLENBQUNTLElBQUksR0FBR1QsSUFBSSxDQUFDUyxJQUFJLEdBQUdULElBQUksQ0FBQ1UsSUFBSTtjQUMzRCxDQUFBc0IscUJBQUEsSUFBQUMsbUJBQUEsT0FBSSxDQUFDOUMsYUFBYSxFQUFDaUQsTUFBTSxjQUFBSixxQkFBQSxlQUF6QkEscUJBQUEsQ0FBQWhHLElBQUEsQ0FBQWlHLG1CQUFBLEVBQTRCaEMsaUJBQWlCLENBQUM7Y0FDOUMsSUFBSSxDQUFDRyxVQUFVLEdBQUcsSUFBSSxDQUFDakIsYUFBYSxDQUFDbUMsYUFBYSxDQUFDLENBQUM7Y0FDcEQsSUFBSSxDQUFDQyxhQUFhLEdBQUcsSUFBSSxDQUFDbkIsVUFBVTtjQUNwQyxJQUFJLENBQUNvQixzQkFBc0IsR0FBRyxJQUFJLENBQUNwQixVQUFVO2NBQUMsT0FBQStCLFNBQUEsQ0FBQUUsTUFBQSxXQUV2QyxJQUFJO1lBQUE7WUFBQTtjQUFBLE9BQUFGLFNBQUEsQ0FBQVIsSUFBQTtVQUFBO1FBQUEsR0FBQUksUUFBQTtNQUFBLENBQ1o7TUFBQSxTQVJLSyxNQUFNQSxDQUFBRSxHQUFBO1FBQUEsT0FBQVIsT0FBQSxDQUFBN0UsS0FBQSxPQUFBRSxTQUFBO01BQUE7TUFBQSxPQUFOaUYsTUFBTTtJQUFBO0VBQUE7SUFBQTNDLEdBQUE7SUFBQThDLEdBQUEsRUFVWixTQUFBQSxJQUFBLEVBQWE7TUFDWCxPQUFPLElBQUksQ0FBQ3BELGFBQWEsQ0FBQ3FELE9BQU8sQ0FBQyxDQUFDO0lBQ3JDOztJQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBSEU7SUFBQS9DLEdBQUE7SUFBQS9ELEtBQUEsRUFJQSxTQUFBK0csY0FBY0EsQ0FBQ0MsVUFBa0IsRUFBaUI7TUFDaEQsSUFBTUMsS0FBSyxHQUFHLElBQUksQ0FBQ3hDLE1BQU0sQ0FBQ3lDLElBQUksQ0FBQyxVQUFBQyxFQUFFO1FBQUEsT0FBSUEsRUFBRSxDQUFDcEYsT0FBTyxDQUFDLEtBQUtpRixVQUFVO01BQUEsRUFBQztNQUNoRSxJQUFJLENBQUNJLFdBQVcsQ0FBQ0osVUFBVSxFQUFFQyxLQUFLLENBQUM7TUFDbkMsT0FBT0EsS0FBSztJQUNkOztJQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBSEU7SUFBQWxELEdBQUE7SUFBQS9ELEtBQUEsRUFJQSxTQUFBcUgsaUJBQWlCQSxDQUFDTCxVQUFrQixFQUFVO01BQzVDLElBQU05RSxRQUFRLEdBQUcsSUFBSSxDQUFDdUMsTUFBTSxDQUFDNkMsU0FBUyxDQUFDLFVBQUFILEVBQUU7UUFBQSxPQUFJQSxFQUFFLENBQUNwRixPQUFPLENBQUMsS0FBS2lGLFVBQVU7TUFBQSxFQUFDO01BQ3hFLElBQUksQ0FBQ0ksV0FBVyxDQUFDSixVQUFVLEVBQUVPLE9BQU8sQ0FBQ3JGLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3BELE9BQU9BLFFBQVE7SUFDakI7O0lBRUE7QUFDRjtBQUNBO0FBQ0E7RUFIRTtJQUFBNkIsR0FBQTtJQUFBL0QsS0FBQSxFQUlBLFNBQUF3SCxzQkFBc0JBLENBQUNSLFVBQVUsRUFBRTtNQUNqQyxJQUFNQyxLQUFLLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDeUMsSUFBSSxDQUFDLFVBQUFDLEVBQUU7UUFBQSxPQUFJQSxFQUFFLENBQUNwRixPQUFPLENBQUMsS0FBS2lGLFVBQVU7TUFBQSxFQUFDO01BQ2hFLElBQUksQ0FBQ0ksV0FBVyxDQUFDSixVQUFVLEVBQUVDLEtBQUssQ0FBQztNQUNuQyxPQUFPQSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRVEsYUFBYTtJQUM3Qjs7SUFFQTtBQUNGO0FBQ0E7RUFGRTtJQUFBMUQsR0FBQTtJQUFBL0QsS0FBQSxFQUdBLFNBQUEwSCxRQUFRQSxDQUFDVixVQUFrQixFQUFFVyxNQUFjLEVBQU87TUFDaEQsSUFBTVYsS0FBSyxHQUFHLElBQUksQ0FBQ0YsY0FBYyxDQUFDQyxVQUFVLENBQUM7TUFDN0MsT0FBT0MsS0FBSyxHQUFHQSxLQUFLLENBQUN2QixhQUFhLENBQUM7UUFBQ2xELEtBQUssRUFBRW1GO01BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSTtJQUM1RDs7SUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBSkU7SUFBQTVELEdBQUE7SUFBQS9ELEtBQUEsRUFLQSxTQUFBNEgsaUJBQWlCQSxDQUFDMUYsUUFBZ0IsRUFBRTJGLFFBQVcsRUFBUTtNQUNyRCxJQUFJLENBQUNwRCxNQUFNLEdBQUd6RCxNQUFNLENBQUM4RyxNQUFNLEtBQUFDLG1CQUFBLGFBQUssSUFBSSxDQUFDdEQsTUFBTSxPQUFBOUMsZ0JBQUEsaUJBQUtPLFFBQVEsRUFBRzJGLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFOztJQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBSEU7SUFBQTlELEdBQUE7SUFBQS9ELEtBQUEsRUFJQSxTQUFBZ0ksZ0JBQWdCQSxDQUFDQyxRQUFrQixFQUFRO01BQ3pDLElBQUksQ0FBQ3JGLEtBQUssR0FBR3FGLFFBQVE7SUFDdkI7O0lBRUE7QUFDRjtBQUNBO0FBQ0E7RUFIRTtJQUFBbEUsR0FBQTtJQUFBL0QsS0FBQSxFQUlBLFNBQUFrSSxvQkFBb0JBLENBQUNsQixVQUFrQixFQUF1QztNQUM1RSxJQUFNOUUsUUFBUSxHQUFHLElBQUksQ0FBQ21GLGlCQUFpQixDQUFDTCxVQUFVLENBQUM7TUFDbkQsSUFBSTlFLFFBQVEsR0FBRyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxJQUFJO01BQ2I7TUFDQSxJQUFNK0UsS0FBSyxHQUFHLElBQUksQ0FBQ3hDLE1BQU0sQ0FBQ3ZDLFFBQVEsQ0FBQztNQUNuQyxJQUFJbEIsTUFBTSxDQUFDbUgsU0FBUyxDQUFDQyxjQUFjLENBQUM5SCxJQUFJLENBQUMyRyxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUU7UUFDOUQsT0FBT0EsS0FBSyxDQUFDb0IsV0FBVztNQUMxQjtNQUVBLElBQU1DLFdBQVcsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDdEIsS0FBSyxDQUFDO01BQ3JELElBQUksQ0FBQ3FCLFdBQVcsRUFBRTtRQUNoQixPQUFPLElBQUk7TUFDYjtNQUVBLElBQU1ELFdBQVcsR0FBRyxJQUFBRyxxQkFBYyxFQUFDdkIsS0FBSyxFQUFFcUIsV0FBVyxDQUFDO01BQ3RELElBQU1ULFFBQVEsR0FBQXJHLGFBQUEsQ0FBQUEsYUFBQSxLQUNUeUYsS0FBSztRQUNSb0IsV0FBVyxFQUFYQTtNQUFXLEVBQ1o7TUFFRCxJQUFJLENBQUNULGlCQUFpQixDQUFDMUYsUUFBUSxFQUFFMkYsUUFBUSxDQUFDO01BRTFDLE9BQU9RLFdBQVc7SUFDcEI7O0lBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEU7SUFBQXRFLEdBQUE7SUFBQS9ELEtBQUEsRUFNQSxTQUFBeUksV0FBV0EsQ0FBQ0MsT0FBaUIsRUFBRUMsTUFBZSxFQUFFQyxHQUFzQixFQUFzQjtNQUFBLElBQUFDLEtBQUE7TUFDMUYsSUFBT3BGLGFBQWEsR0FBdUQsSUFBSSxDQUF4RUEsYUFBYTtRQUFNcUYsTUFBTSxHQUEyQyxJQUFJLENBQXpEMUYsRUFBRTtRQUF3QjJGLGVBQWUsR0FBWSxJQUFJLENBQTdDQyxZQUFZO1FBQW1CdkUsTUFBTSxHQUFJLElBQUksQ0FBZEEsTUFBTTs7TUFFdkU7TUFDQSxJQUFNdUUsWUFBWSxHQUFHLElBQUFDLHNCQUFlLEVBQUNILE1BQU0sRUFBRUosT0FBTyxFQUFFRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7TUFFaEUsSUFBSSxDQUFDSSxZQUFZLEdBQUdBLFlBQVk7TUFDaEMsSUFBSSxDQUFDckYsU0FBUyxHQUFHLElBQUFDLGlDQUFpQixFQUFDOEUsT0FBTyxFQUFFSSxNQUFNLEVBQUVyRSxNQUFNLEVBQUUsSUFBSSxDQUFDZCxTQUFTLENBQUM7TUFFM0UsSUFBSSxDQUFDdUYsY0FBYyxHQUFHLElBQUFDLGtCQUFXLEVBQUNILFlBQVksRUFBRUQsZUFBZSxDQUFDO01BRWhFLElBQUksQ0FBQ0wsT0FBTyxDQUFDaEosTUFBTSxFQUFFO1FBQ25CLElBQUksQ0FBQ21HLGFBQWEsR0FBRyxJQUFJLENBQUNuQixVQUFVO1FBQ3BDLElBQUksQ0FBQ29CLHNCQUFzQixHQUFHLElBQUksQ0FBQ3BCLFVBQVU7UUFDN0MsT0FBTyxJQUFJO01BQ2I7O01BRUE7TUFDQTtNQUNBO01BQ0EsSUFBTTBFLGVBQWUsR0FBRzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMyQixjQUFjLENBQUNHLGFBQWEsQ0FBQztNQUNsRSxJQUFNQyxjQUFjLEdBQUcvQixPQUFPLENBQUMsSUFBSSxDQUFDMkIsY0FBYyxDQUFDSyxHQUFHLENBQUM7TUFFdkQsSUFBSUMsWUFBMEIsR0FBRyxDQUFDLENBQUM7TUFDbkMsSUFBSUosZUFBZSxJQUFJRSxjQUFjLEVBQUU7UUFDckMsSUFBTUcsb0JBQW9CLEdBQUdMLGVBQWUsR0FBR0osWUFBWSxDQUFDSyxhQUFhLEdBQUcsSUFBSTtRQUNoRixJQUFNSyxVQUFVLEdBQUdKLGNBQWMsR0FBR04sWUFBWSxDQUFDTyxHQUFHLEdBQUcsSUFBSTtRQUUzRCxJQUFNSSxXQUFXLEdBQUdqQixPQUFPLENBQUNrQixNQUFNLENBQUMsVUFBQ0MsR0FBRyxFQUFFMUksTUFBTSxFQUFLO1VBQ2xELElBQU0ySSxVQUFVLEdBQUcsSUFBQUMsNkNBQTZCLEVBQUNsQixLQUFJLENBQUN6RixFQUFFLEVBQUVqQyxNQUFNLENBQUM7VUFDakUsSUFBTThGLEtBQUssR0FBRzZDLFVBQVUsS0FBSyxDQUFDLENBQUMsR0FBR3JGLE1BQU0sQ0FBQ3FGLFVBQVUsQ0FBQyxHQUFHLElBQUk7VUFFM0QsT0FBQXRJLGFBQUEsQ0FBQUEsYUFBQSxLQUNLcUksR0FBRyxXQUFBbEksZ0JBQUEsaUJBQ0xSLE1BQU0sQ0FBQ2lDLEVBQUUsRUFBRyxJQUFBNEcsd0JBQWlCLEVBQUMvQyxLQUFLLEVBQUU0QixLQUFJLENBQUN6RixFQUFFLEVBQUVqQyxNQUFNLEVBQUV3SCxNQUFNLEVBQUVsRixhQUFhLENBQUM7UUFFakYsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRU4rRixZQUFZLEdBQUcsSUFBQVMsOEJBQXVCLEVBQ3BDO1VBQUNSLG9CQUFvQixFQUFwQkEsb0JBQW9CO1VBQUVDLFVBQVUsRUFBVkEsVUFBVTtVQUFFQyxXQUFXLEVBQVhBO1FBQVcsQ0FBQyxFQUMvQ2xHLGFBQ0YsQ0FBQztNQUNIO01BRUEsSUFBSSxDQUFDb0MsYUFBYSxHQUFHMkQsWUFBWSxDQUFDM0QsYUFBYSxJQUFJLElBQUksQ0FBQ0EsYUFBYTtNQUNyRSxJQUFJLENBQUNDLHNCQUFzQixHQUN6QjBELFlBQVksQ0FBQzFELHNCQUFzQixJQUFJLElBQUksQ0FBQ0Esc0JBQXNCO01BRXBFLE9BQU8sSUFBSTtJQUNiOztJQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFKRTtJQUFBL0IsR0FBQTtJQUFBL0QsS0FBQSxFQUtBLFNBQUFrSyxjQUFjQSxDQUFDeEIsT0FBaUIsRUFBRUMsTUFBZSxFQUFzQjtNQUNyRSxJQUFNQyxHQUFHLEdBQUc7UUFDVnVCLE9BQU8sRUFBRSxJQUFJO1FBQ2JDLFlBQVksRUFBRTtNQUNoQixDQUFDOztNQUVEO01BQ0EsSUFBSSxDQUFDMUIsT0FBTyxDQUFDaEosTUFBTSxFQUFFO1FBQ25CLElBQUksQ0FBQzJLLGNBQWMsR0FBRyxJQUFJLENBQUMzRixVQUFVO1FBQ3JDLElBQUksQ0FBQzRGLGVBQWUsR0FBRyxJQUFBckIsc0JBQWUsRUFBQyxJQUFJLENBQUM3RixFQUFFLEVBQUVzRixPQUFPLEVBQUVFLEdBQUcsQ0FBQztRQUM3RCxPQUFPLElBQUk7TUFDYjs7TUFFQTtNQUNBLElBQUksQ0FBQ0YsT0FBTyxDQUFDeEIsSUFBSSxDQUFDLFVBQUFqSCxDQUFDO1FBQUEsT0FBSUEsQ0FBQyxDQUFDc0ssR0FBRztNQUFBLEVBQUMsRUFBRTtRQUM3QixJQUFJLENBQUNGLGNBQWMsR0FBRyxJQUFJLENBQUN4RSxhQUFhO1FBQ3hDLElBQUksQ0FBQ3lFLGVBQWUsR0FBRyxJQUFBckIsc0JBQWUsRUFBQyxJQUFJLENBQUM3RixFQUFFLEVBQUVzRixPQUFPLEVBQUVFLEdBQUcsQ0FBQztRQUM3RCxPQUFPLElBQUk7TUFDYjs7TUFFQTtNQUNBLElBQU00QixNQUFNLEdBQUdDLFNBQVMsQ0FBQyxJQUFJLENBQUM7TUFFOUJELE1BQU0sQ0FBQ3hCLFlBQVksR0FBRyxJQUFJLENBQUNzQixlQUFlO01BQzFDRSxNQUFNLENBQUMzRSxhQUFhLEdBQUcsSUFBSSxDQUFDd0UsY0FBYyxJQUFJLEVBQUU7TUFFaEQsSUFBTUssUUFBUSxHQUFHRixNQUFNLENBQUMvQixXQUFXLENBQUNDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxHQUFHLENBQUM7TUFFekQsSUFBSSxDQUFDeUIsY0FBYyxHQUFHSyxRQUFRLENBQUM3RSxhQUFhO01BQzVDLElBQUksQ0FBQ3lFLGVBQWUsR0FBR0ksUUFBUSxDQUFDMUIsWUFBWTtNQUU1QyxPQUFPLElBQUk7SUFDYjs7SUFFQTtBQUNGO0FBQ0E7QUFDQTtFQUhFO0lBQUFqRixHQUFBO0lBQUEvRCxLQUFBLEVBSUEsU0FBQXVJLHFCQUFxQkEsQ0FBQ3RCLEtBQVEsRUFBZTtNQUMzQyxJQUFPeEQsYUFBYSxHQUFJLElBQUksQ0FBckJBLGFBQWE7TUFDcEIsSUFBT2lDLGFBQWEsR0FBSXVCLEtBQUssQ0FBdEJ2QixhQUFhO01BRXBCLElBQUlpRixNQUFNO01BRVYsUUFBUTFELEtBQUssQ0FBQzFELElBQUk7UUFDaEIsS0FBS2lDLDBCQUFlLENBQUNvRixJQUFJO1FBQ3pCLEtBQUtwRiwwQkFBZSxDQUFDcUYsT0FBTztVQUMxQjtVQUNBLE9BQU8sSUFBQUMsNEJBQXFCLEVBQUNySCxhQUFhLEVBQUVpQyxhQUFhLENBQUM7UUFFNUQsS0FBS0YsMEJBQWUsV0FBUTtVQUMxQixPQUFPO1lBQUNtRixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSztVQUFDLENBQUM7UUFFaEMsS0FBS25GLDBCQUFlLENBQUNDLE1BQU07UUFDM0IsS0FBS0QsMEJBQWUsQ0FBQ3VGLEVBQUU7UUFDdkIsS0FBS3ZGLDBCQUFlLENBQUN3RixJQUFJO1VBQ3ZCTCxNQUFNLEdBQUcsSUFBQU0sdUJBQWdCLEVBQUN4SCxhQUFhLEVBQUVpQyxhQUFhLENBQUM7VUFDdkQsT0FBTztZQUFDaUYsTUFBTSxFQUFOQTtVQUFNLENBQUM7UUFFakIsS0FBS25GLDBCQUFlLENBQUMwRixTQUFTO1VBQzVCLE9BQU8sSUFBQUMsOEJBQXVCLEVBQUMxSCxhQUFhLEVBQUVpQyxhQUFhLENBQUM7UUFFOUQ7VUFDRSxPQUFPO1lBQUNpRixNQUFNLEVBQUUsSUFBQU0sdUJBQWdCLEVBQUN4SCxhQUFhLEVBQUVpQyxhQUFhO1VBQUMsQ0FBQztNQUNuRTtJQUNGOztJQUVBO0FBQ0Y7QUFDQTtFQUZFO0lBQUEzQixHQUFBO0lBQUEvRCxLQUFBLEVBR0EsU0FBQW9MLG9CQUFvQkEsQ0FBQ25FLEtBQVEsRUFBRW9FLFNBQWlCLEVBQWlEO01BQy9GLElBQU81SCxhQUFhLEdBQTRCLElBQUksQ0FBN0NBLGFBQWE7UUFBRXFDLHNCQUFzQixHQUFJLElBQUksQ0FBOUJBLHNCQUFzQjtNQUU1QyxJQUFJLENBQUN3RixzQkFBVyxDQUFDRCxTQUFTLENBQUMsRUFBRTtRQUMzQkUsbUJBQU8sQ0FBQ0MsS0FBSyxlQUFBQyxNQUFBLENBQWVKLFNBQVMsbUJBQWdCLENBQUM7UUFDdEQsT0FBTyxJQUFJO01BQ2I7TUFFQSxJQUFPM0YsYUFBYSxHQUFJdUIsS0FBSyxDQUF0QnZCLGFBQWE7TUFDcEIsSUFBTWdHLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUdyRyxDQUFDO1FBQUEsT0FBSUssYUFBYSxDQUFDO1VBQUNsRCxLQUFLLEVBQUU2QztRQUFDLENBQUMsQ0FBQztNQUFBO01BQ3pELElBQU1zRyxZQUFZLEdBQUcsSUFBQUMseUJBQWtCLEVBQUMzRSxLQUFLLENBQUMxRCxJQUFJLENBQUM7TUFFbkQsUUFBUThILFNBQVM7UUFDZixLQUFLQyxzQkFBVyxDQUFDTyxPQUFPO1FBQ3hCLEtBQUtQLHNCQUFXLENBQUNRLGFBQWE7UUFDOUIsS0FBS1Isc0JBQVcsQ0FBQ1MsS0FBSztVQUNwQjtVQUNBO1VBQ0EsT0FBTyxJQUFBZCx1QkFBZ0IsRUFBQ3hILGFBQWEsRUFBRWlDLGFBQWEsQ0FBQztRQUV2RCxLQUFLNEYsc0JBQVcsQ0FBQ1UsUUFBUTtVQUN2QixPQUFPLElBQUFDLHdCQUFpQixFQUFDbkcsc0JBQXNCLEVBQUU0RixrQkFBa0IsRUFBRUMsWUFBWSxDQUFDO1FBRXBGLEtBQUtMLHNCQUFXLENBQUNZLEdBQUc7VUFDbEIsT0FBTyxJQUFBQyxtQkFBWSxFQUFDckcsc0JBQXNCLEVBQUU0RixrQkFBa0IsQ0FBQztRQUVqRSxLQUFLSixzQkFBVyxDQUFDYyxRQUFRO1FBQ3pCLEtBQUtkLHNCQUFXLENBQUNlLE1BQU07UUFDdkIsS0FBS2Ysc0JBQVcsQ0FBQ2dCLElBQUk7UUFDckIsS0FBS2hCLHNCQUFXLENBQUNpQixNQUFNO1FBQ3ZCO1VBQ0UsT0FBTyxJQUFBQyxzQkFBZSxFQUFDMUcsc0JBQXNCLEVBQUU0RixrQkFBa0IsQ0FBQztNQUN0RTtJQUNGOztJQUVBO0FBQ0Y7QUFDQTtJQUNFOztJQUVBO0FBQ0Y7QUFDQTtBQUNBO0lBQ0U7O0lBRUE7O0lBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUpFO0lBQUEzSCxHQUFBO0lBQUEvRCxLQUFBLEVBS0EsU0FBQW9ILFdBQVdBLENBQUNxRixTQUFpQixFQUFFQyxTQUFjLEVBQVE7TUFDbkQsSUFBSSxDQUFDQSxTQUFTLEVBQUU7UUFDZG5CLG1CQUFPLENBQUNDLEtBQUssSUFBQUMsTUFBQSxDQUFJZ0IsU0FBUywrQkFBQWhCLE1BQUEsQ0FBNEIsSUFBSSxDQUFDckksRUFBRSxDQUFFLENBQUM7TUFDbEU7SUFDRjtFQUFDO0FBQUE7QUFPSDtBQUNBO0FBQ0EsSUFBTXVKLG1CQUFtQixvQkFBb0I7QUFFN0MsU0FBU0MsbUJBQW1CQSxDQUFDQyxFQUFFLEVBQUVDLFVBQVUsRUFBRUMsUUFBUSxFQUFFTixTQUFTLEVBQUU7RUFDaEUsSUFBTU8sVUFBVSxHQUFHRCxRQUFRLENBQUN6RixTQUFTLENBQ25DLFVBQUFqRixDQUFDO0lBQUEsT0FBSUEsQ0FBQyxLQUFLb0ssU0FBUyxDQUFDUSxPQUFPLENBQUNKLEVBQUUsRUFBRSxVQUFBSyxLQUFLO01BQUEsT0FBSUEsS0FBSyxDQUFDRCxPQUFPLENBQUNILFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRUEsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUEsRUFBQztFQUFBLENBQ3hGLENBQUM7RUFDRCxJQUFJSyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ25CO0lBQ0FJLDBCQUFlLENBQUNDLElBQUksQ0FBQyxVQUFBQyxHQUFHLEVBQUk7TUFDMUJILE1BQU0sR0FBR0osUUFBUSxDQUFDekYsU0FBUyxDQUN6QixVQUFBakYsQ0FBQztRQUFBLE9BQUlBLENBQUMsS0FBS29LLFNBQVMsQ0FBQ1EsT0FBTyxDQUFDSixFQUFFLEVBQUUsVUFBQUssS0FBSztVQUFBLE9BQUlBLEtBQUssQ0FBQ0QsT0FBTyxDQUFDSCxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUVRLEdBQUcsQ0FBQztRQUFBLEVBQUM7TUFBQSxDQUM5RSxDQUFDO01BQ0QsT0FBT0gsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUM7RUFDSjtFQUNBLE9BQU87SUFBQ0gsVUFBVSxFQUFWQSxVQUFVO0lBQUVHLE1BQU0sRUFBTkE7RUFBTSxDQUFDO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU25ILG1CQUFtQkEsQ0FBQ3ZCLE1BQWUsRUFBZTtFQUNoRSxJQUFNc0ksUUFBUSxHQUFHdEksTUFBTSxDQUFDVyxHQUFHLENBQUMsVUFBQW5GLENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUNXLElBQUksQ0FBQzJNLFdBQVcsQ0FBQyxDQUFDO0VBQUEsRUFBQzs7RUFFdEQ7RUFDQSxJQUFNMUQsR0FBZ0IsR0FBRyxFQUFFO0VBQzNCLE9BQU9rRCxRQUFRLENBQUNuRCxNQUFNLENBQUMsVUFBQzRELEtBQUssRUFBRWYsU0FBUyxFQUFFZ0IsR0FBRyxFQUFLO0lBQ2hEO0lBQUEsSUFBQUMsU0FBQSxHQUFBek8sMEJBQUEsQ0FDeUIwTyw0QkFBaUI7TUFBQUMsS0FBQTtJQUFBO01BQTFDLEtBQUFGLFNBQUEsQ0FBQTdOLENBQUEsTUFBQStOLEtBQUEsR0FBQUYsU0FBQSxDQUFBNU4sQ0FBQSxJQUFBQyxJQUFBLEdBQTRDO1FBQUEsSUFBakMrTSxVQUFVLEdBQUFjLEtBQUEsQ0FBQTVOLEtBQUE7UUFDbkI7UUFDQTtRQUNBLElBQU02TSxFQUFFLEdBQUcsSUFBSWdCLE1BQU0sT0FBQXBDLE1BQUEsQ0FBT2tCLG1CQUFtQixPQUFBbEIsTUFBQSxDQUFJcUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFBckIsTUFBQSxDQUFJa0IsbUJBQW1CLFFBQUssQ0FBQztRQUU3RixJQUFJRSxFQUFFLENBQUMvTCxJQUFJLENBQUMyTCxTQUFTLENBQUMsRUFBRTtVQUN0QixJQUFBcUIsb0JBQUEsR0FBNkJsQixtQkFBbUIsQ0FBQ0MsRUFBRSxFQUFFQyxVQUFVLEVBQUVDLFFBQVEsRUFBRU4sU0FBUyxDQUFDO1lBQTlFTyxVQUFVLEdBQUFjLG9CQUFBLENBQVZkLFVBQVU7WUFBRUcsTUFBTSxHQUFBVyxvQkFBQSxDQUFOWCxNQUFNO1VBRXpCLElBQUlILFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNuQixJQUFNZSxRQUFRLEdBQUd0QixTQUFTLENBQUNRLE9BQU8sQ0FBQ0osRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDbUIsSUFBSSxDQUFDLENBQUM7WUFFakRSLEtBQUssQ0FBQ2xNLElBQUksQ0FBQztjQUNUMk0sV0FBVyxFQUFFRixRQUFRLElBQUksT0FBTztjQUNoQ0csSUFBSSxFQUFBMU0sYUFBQTtnQkFDRjJNLEdBQUcsRUFBRTtrQkFDSGpNLFFBQVEsRUFBRXVMLEdBQUc7a0JBQ2J6TixLQUFLLEVBQUV5RSxNQUFNLENBQUNnSixHQUFHLENBQUMsQ0FBQzdNO2dCQUNyQixDQUFDO2dCQUNEd04sR0FBRyxFQUFFO2tCQUNIbE0sUUFBUSxFQUFFOEssVUFBVTtrQkFDcEJoTixLQUFLLEVBQUV5RSxNQUFNLENBQUN1SSxVQUFVLENBQUMsQ0FBQ3BNO2dCQUM1QjtjQUFDLEdBQ0d1TSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQ1g7Z0JBQ0VrQixRQUFRLEVBQUU7a0JBQ1JuTSxRQUFRLEVBQUVpTCxNQUFNO2tCQUNoQm5OLEtBQUssRUFBRXlFLE1BQU0sQ0FBQzBJLE1BQU0sQ0FBQyxDQUFDdk07Z0JBQ3hCO2NBQ0YsQ0FBQyxHQUNELENBQUMsQ0FBQyxDQUNQO2NBQ0QwTixNQUFNLEVBQUV4QjtZQUNWLENBQUMsQ0FBQztZQUNGLE9BQU9VLEtBQUs7VUFDZDtRQUNGO01BQ0Y7SUFBQyxTQUFBZSxHQUFBO01BQUFiLFNBQUEsQ0FBQXZPLENBQUEsQ0FBQW9QLEdBQUE7SUFBQTtNQUFBYixTQUFBLENBQUF6TixDQUFBO0lBQUE7SUFDRCxPQUFPdU4sS0FBSztFQUNkLENBQUMsRUFBRTNELEdBQUcsQ0FBQztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBUzJFLG1CQUFtQkEsQ0FDakNDLE9BQTJCLEVBQzNCQyxNQUFjLEVBQ2RDLElBQWEsRUFDTztFQUNwQixJQUFPakssVUFBVSxHQUEyQitKLE9BQU8sQ0FBNUMvSixVQUFVO0lBQUVELE1BQU0sR0FBbUJnSyxPQUFPLENBQWhDaEssTUFBTTtJQUFFaEIsYUFBYSxHQUFJZ0wsT0FBTyxDQUF4QmhMLGFBQWE7RUFDeEMsSUFBTXFHLFVBQVUsR0FBR3JGLE1BQU0sQ0FBQzZDLFNBQVMsQ0FBQyxVQUFBckgsQ0FBQztJQUFBLE9BQUlBLENBQUMsQ0FBQ1csSUFBSSxLQUFLOE4sTUFBTTtFQUFBLEVBQUM7RUFDM0QsSUFBSTVFLFVBQVUsR0FBRyxDQUFDLEVBQUU7SUFDbEIsT0FBTzJFLE9BQU87RUFDaEI7RUFFQSxJQUFNRyxNQUFNLEdBQUdDLHFCQUFVLENBQUNGLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSUUscUJBQVUsQ0FBQ0MsU0FBUztFQUU3RCxJQUFJRixNQUFNLEtBQUtDLHFCQUFVLENBQUNFLE1BQU0sRUFBRTtJQUNoQ04sT0FBTyxDQUFDTyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCUCxPQUFPLENBQUNRLFNBQVMsR0FBRyxJQUFJO0lBRXhCLE9BQU9SLE9BQU87RUFDaEI7RUFFQSxJQUFNOUMsWUFBWSxHQUFHaUQsTUFBTSxLQUFLQyxxQkFBVSxDQUFDQyxTQUFTLEdBQUdJLGtCQUFTLEdBQUdDLG1CQUFVO0VBQzdFLElBQU1GLFNBQVMsR0FBR3ZLLFVBQVUsQ0FBQ2hFLEtBQUssQ0FBQyxDQUFDLENBQUMwTyxJQUFJLENBQUMsVUFBQ2hQLENBQUMsRUFBRWlQLENBQUMsRUFBSztJQUNsRCxJQUFNQyxNQUFNLEdBQUc3TCxhQUFhLENBQUNsQixPQUFPLENBQUNuQyxDQUFDLEVBQUUwSixVQUFVLENBQUM7SUFDbkQsSUFBTXlGLE1BQU0sR0FBRzlMLGFBQWEsQ0FBQ2xCLE9BQU8sQ0FBQzhNLENBQUMsRUFBRXZGLFVBQVUsQ0FBQztJQUNuRCxJQUFJLENBQUMsSUFBQTBGLCtCQUFrQixFQUFDRixNQUFNLENBQUMsSUFBSSxJQUFBRSwrQkFBa0IsRUFBQ0QsTUFBTSxDQUFDLEVBQUU7TUFDN0QsT0FBTyxDQUFDO0lBQ1YsQ0FBQyxNQUFNLElBQUksSUFBQUMsK0JBQWtCLEVBQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBQUUsK0JBQWtCLEVBQUNELE1BQU0sQ0FBQyxFQUFFO01BQ3BFLE9BQU8sQ0FBQyxDQUFDO0lBQ1g7SUFDQSxPQUFPNUQsWUFBWSxDQUFDMkQsTUFBTSxFQUFFQyxNQUFNLENBQUM7RUFDckMsQ0FBQyxDQUFDO0VBRUZkLE9BQU8sQ0FBQ08sVUFBVSxPQUFBck4sZ0JBQUEsaUJBQ2YrTSxNQUFNLEVBQUdFLE1BQU0sQ0FDakI7RUFDREgsT0FBTyxDQUFDUSxTQUFTLEdBQUdBLFNBQVM7RUFFN0IsT0FBT1IsT0FBTztBQUNoQjtBQUVPLFNBQVNnQixlQUFlQSxDQUFDaEIsT0FBMkIsRUFBRUMsTUFBYyxFQUFzQjtFQUMvRixJQUFNekgsS0FBSyxHQUFHd0gsT0FBTyxDQUFDMUgsY0FBYyxDQUFDMkgsTUFBTSxDQUFDO0VBQzVDLElBQUksQ0FBQ3pILEtBQUssRUFBRTtJQUNWLE9BQU93SCxPQUFPO0VBQ2hCO0VBRUEsSUFBSWlCLGFBQWE7RUFDakIsSUFBSW5RLEtBQUssQ0FBQ0MsT0FBTyxDQUFDaVAsT0FBTyxDQUFDaUIsYUFBYSxDQUFDLElBQUlqQixPQUFPLENBQUNpQixhQUFhLENBQUNDLFFBQVEsQ0FBQzFJLEtBQUssQ0FBQ3JHLElBQUksQ0FBQyxFQUFFO0lBQ3RGO0lBQ0E4TyxhQUFhLEdBQUdqQixPQUFPLENBQUNpQixhQUFhLENBQUN2TyxNQUFNLENBQUMsVUFBQXlPLEVBQUU7TUFBQSxPQUFJQSxFQUFFLEtBQUszSSxLQUFLLENBQUNyRyxJQUFJO0lBQUEsRUFBQztFQUN2RSxDQUFDLE1BQU07SUFDTDhPLGFBQWEsR0FBRyxDQUFDakIsT0FBTyxDQUFDaUIsYUFBYSxJQUFJLEVBQUUsRUFBRWpFLE1BQU0sQ0FBQ3hFLEtBQUssQ0FBQ3JHLElBQUksQ0FBQztFQUNsRTs7RUFFQTtFQUNBLE9BQU9pUCxrQkFBa0IsQ0FBQ3BCLE9BQU8sRUFBRTtJQUFDaUIsYUFBYSxFQUFiQTtFQUFhLENBQUMsQ0FBQztBQUNyRDtBQUVPLFNBQVNqRixTQUFTQSxDQUFDcUYsUUFBNEIsRUFBc0I7RUFDMUUsT0FBTzlPLE1BQU0sQ0FBQzhHLE1BQU0sQ0FBQzlHLE1BQU0sQ0FBQytPLE1BQU0sQ0FBQy9PLE1BQU0sQ0FBQ2dQLGNBQWMsQ0FBQ0YsUUFBUSxDQUFDLENBQUMsRUFBRUEsUUFBUSxDQUFDO0FBQ2hGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0Qsa0JBQWtCQSxDQUNoQ0MsUUFBNEIsRUFFUjtFQUFBLElBRHBCRyxPQUFvQyxHQUFBeE8sU0FBQSxDQUFBL0IsTUFBQSxRQUFBK0IsU0FBQSxRQUFBb0MsU0FBQSxHQUFBcEMsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUV6QyxPQUFPVCxNQUFNLENBQUNrUCxPQUFPLENBQUNELE9BQU8sQ0FBQyxDQUFDckcsTUFBTSxDQUFDLFVBQUNDLEdBQUcsRUFBRXNHLEtBQUssRUFBSztJQUNwRHRHLEdBQUcsQ0FBQ3NHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE9BQU90RyxHQUFHO0VBQ1osQ0FBQyxFQUFFWSxTQUFTLENBQUNxRixRQUFRLENBQUMsQ0FBQztBQUN6QjtBQUVPLFNBQVNuSyxxQkFBcUJBLENBS25DMUYsQ0FBSSxFQUFFb0YsQ0FBUyxFQUFFakQsRUFBMEIsRUFBRTtFQUM3QyxPQUFPSixXQUFXLENBQUNvTyxJQUFJLENBQ3JCLElBQUk7RUFDSjtFQUNBblEsQ0FBQyxDQUFDc0QsSUFBSSxLQUFLaUMsMEJBQWUsQ0FBQzBGLFNBQVMsRUFDcEM3RixDQUFDLEVBQ0RwRixDQUFDLENBQUNrQyxNQUFNLElBQUksRUFBRSxFQUNkQyxFQUNGLENBQUM7QUFDSDtBQUFDLElBQUFpTyxRQUFBLEdBQUFDLE9BQUEsY0FFYzdOLFdBQVciLCJpZ25vcmVMaXN0IjpbXX0=
648
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2QzQXJyYXkiLCJfY29uc3RhbnRzIiwiX2dwdUZpbHRlclV0aWxzIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiRklEX0tFWSIsIm1heWJlVG9EYXRlIiwiaXNUaW1lIiwiZmllbGRJZHgiLCJmb3JtYXQiLCJkYyIsImQiLCJ0aW1lVG9Vbml4TWlsbGkiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJLZXBsZXJUYWJsZSIsIl9yZWYiLCJpbmZvIiwiY29sb3IiLCJtZXRhZGF0YSIsIl9yZWYkc3VwcG9ydGVkRmlsdGVyVCIsInN1cHBvcnRlZEZpbHRlclR5cGVzIiwiX3JlZiRkaXNhYmxlRGF0YU9wZXJhIiwiZGlzYWJsZURhdGFPcGVyYXRpb24iLCJfY2xhc3NDYWxsQ2hlY2syIiwiZGF0YXNldEluZm8iLCJpZCIsImdlbmVyYXRlSGFzaElkIiwibGFiZWwiLCJ0eXBlIiwiZGVmYXVsdE1ldGFkYXRhIiwiZGF0YUNvbnRhaW5lciIsImNyZWF0ZURhdGFDb250YWluZXIiLCJncHVGaWx0ZXIiLCJnZXRHcHVGaWx0ZXJQcm9wcyIsInVuZGVmaW5lZCIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJfaW1wb3J0RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJkYXRhIiwiZGF0YUNvbnRhaW5lckRhdGEiLCJpbnB1dERhdGFGb3JtYXQiLCJmaWVsZHMiLCJhbGxJbmRleGVzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwiY29scyIsInJvd3MiLCJEYXRhRm9ybSIsIkNPTFNfQVJSQVkiLCJST1dTX0FSUkFZIiwiYXJyb3dUYWJsZSIsIm1hcCIsImkiLCJkaXNwbGF5TmFtZSIsImFuYWx5emVyVHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInN0cmluZyIsInZhbHVlQWNjZXNzb3IiLCJnZXRGaWVsZFZhbHVlQWNjZXNzb3IiLCJnZXRQbGFpbkluZGV4IiwiZmlsdGVyZWRJbmRleCIsImZpbHRlcmVkSW5kZXhGb3JEb21haW4iLCJmaWVsZFBhaXJzIiwiZmluZFBvaW50RmllbGRQYWlycyIsInN0b3AiLCJpbXBvcnREYXRhIiwiX3giLCJfdXBkYXRlIiwiX2NhbGxlZTIiLCJfdGhpcyRkYXRhQ29udGFpbmVyJHUiLCJfdGhpcyRkYXRhQ29udGFpbmVyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwidXBkYXRlIiwiYWJydXB0IiwiX3gyIiwiZ2V0IiwibnVtUm93cyIsImdldENvbHVtbkZpZWxkIiwiY29sdW1uTmFtZSIsImZpZWxkIiwiZmluZCIsImZkIiwiX2Fzc2V0RmllbGQiLCJnZXRDb2x1bW5GaWVsZElkeCIsImZpbmRJbmRleCIsIkJvb2xlYW4iLCJnZXRDb2x1bW5EaXNwbGF5Rm9ybWF0IiwiZGlzcGxheUZvcm1hdCIsImdldFZhbHVlIiwicm93SWR4IiwidXBkYXRlQ29sdW1uRmllbGQiLCJuZXdGaWVsZCIsImFzc2lnbiIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJ1cGRhdGVUYWJsZUNvbG9yIiwibmV3Q29sb3IiLCJnZXRDb2x1bW5GaWx0ZXJQcm9wcyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiZmlsdGVyUHJvcHMiLCJmaWVsZERvbWFpbiIsImdldENvbHVtbkZpbHRlckRvbWFpbiIsImdldEZpbHRlclByb3BzIiwiZmlsdGVyVGFibGUiLCJmaWx0ZXJzIiwibGF5ZXJzIiwib3B0IiwiX3RoaXMiLCJkYXRhSWQiLCJvbGRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJSZWNvcmQiLCJnZXRGaWx0ZXJSZWNvcmQiLCJjaGFuZ2VkRmlsdGVycyIsImRpZmZGaWx0ZXJzIiwic2hvdWxkQ2FsRG9tYWluIiwiZHluYW1pY0RvbWFpbiIsInNob3VsZENhbEluZGV4IiwiY3B1IiwiZmlsdGVyUmVzdWx0IiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZEluZGV4IiwiZ2V0RGF0YXNldEZpZWxkSW5kZXhGb3JGaWx0ZXIiLCJnZXRGaWx0ZXJGdW5jdGlvbiIsImZpbHRlckRhdGFCeUZpbHRlclR5cGVzIiwiZmlsdGVyVGFibGVDUFUiLCJjcHVPbmx5IiwiaWdub3JlRG9tYWluIiwiZmlsdGVyZWRJZHhDUFUiLCJmaWx0ZXJSZWNvcmRDUFUiLCJncHUiLCJjb3BpZWQiLCJjb3B5VGFibGUiLCJmaWx0ZXJlZCIsImRvbWFpbiIsInJlYWwiLCJpbnRlZ2VyIiwiZ2V0TnVtZXJpY0ZpZWxkRG9tYWluIiwiaDMiLCJkYXRlIiwiZ2V0T3JkaW5hbERvbWFpbiIsInRpbWVzdGFtcCIsImdldFRpbWVzdGFtcEZpZWxkRG9tYWluIiwiZ2V0Q29sdW1uTGF5ZXJEb21haW4iLCJzY2FsZVR5cGUiLCJTQ0FMRV9UWVBFUyIsIkNvbnNvbGUiLCJlcnJvciIsImNvbmNhdCIsImluZGV4VmFsdWVBY2Nlc3NvciIsInNvcnRGdW5jdGlvbiIsImdldFNvcnRpbmdGdW5jdGlvbiIsIm9yZGluYWwiLCJjdXN0b21PcmRpbmFsIiwicG9pbnQiLCJxdWFudGlsZSIsImdldFF1YW50aWxlRG9tYWluIiwibG9nIiwiZ2V0TG9nRG9tYWluIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwiY3VzdG9tIiwiZ2V0TGluZWFyRG9tYWluIiwiZmllbGROYW1lIiwiY29uZGl0aW9uIiwic3BlY2lhbENoYXJhY3RlclNldCIsImZvdW5kTWF0Y2hpbmdGaWVsZHMiLCJyZSIsInN1ZmZpeFBhaXIiLCJhbGxOYW1lcyIsInBhcnRuZXJJZHgiLCJyZXBsYWNlIiwibWF0Y2giLCJhbHRJZHgiLCJBTFRJVFVERV9GSUVMRFMiLCJzb21lIiwiYWx0IiwidG9Mb3dlckNhc2UiLCJjYXJyeSIsImlkeCIsIl9pdGVyYXRvciIsIlRSSVBfUE9JTlRfRklFTERTIiwiX3N0ZXAiLCJSZWdFeHAiLCJfZm91bmRNYXRjaGluZ0ZpZWxkcyIsInRyaW1OYW1lIiwidHJpbSIsImRlZmF1bHROYW1lIiwicGFpciIsImxhdCIsImxuZyIsImFsdGl0dWRlIiwic3VmZml4IiwiZXJyIiwic29ydERhdGFzZXRCeUNvbHVtbiIsImRhdGFzZXQiLCJjb2x1bW4iLCJtb2RlIiwic29ydEJ5IiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIlVOU09SVCIsInNvcnRDb2x1bW4iLCJzb3J0T3JkZXIiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwic29ydCIsImIiLCJ2YWx1ZTEiLCJ2YWx1ZTIiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJwaW5UYWJsZUNvbHVtbnMiLCJwaW5uZWRDb2x1bW5zIiwiaW5jbHVkZXMiLCJjbyIsImNvcHlUYWJsZUFuZFVwZGF0ZSIsIm9yaWdpbmFsIiwiY3JlYXRlIiwiZ2V0UHJvdG90eXBlT2YiLCJvcHRpb25zIiwiZW50cmllcyIsImVudHJ5IiwiYmluZCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9rZXBsZXItdGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHthc2NlbmRpbmcsIGRlc2NlbmRpbmd9IGZyb20gJ2QzLWFycmF5JztcblxuaW1wb3J0IHtcbiAgVFJJUF9QT0lOVF9GSUVMRFMsXG4gIFNPUlRfT1JERVIsXG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgQUxUSVRVREVfRklFTERTLFxuICBTQ0FMRV9UWVBFU1xufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBSR0JDb2xvcixcbiAgRmllbGQsXG4gIEZpZWxkUGFpcixcbiAgRmllbGREb21haW4sXG4gIEZpbHRlcixcbiAgUHJvdG9EYXRhc2V0LFxuICBGaWx0ZXJSZWNvcmQsXG4gIEZpbHRlckRhdGFzZXRPcHQsXG4gIFJhbmdlRmllbGREb21haW4sXG4gIFNlbGVjdEZpZWxkRG9tYWluLFxuICBNdWx0aVNlbGVjdEZpZWxkRG9tYWluLFxuICBUaW1lUmFuZ2VGaWVsZERvbWFpblxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtnZXRHcHVGaWx0ZXJQcm9wcywgZ2V0RGF0YXNldEZpZWxkSW5kZXhGb3JGaWx0ZXJ9IGZyb20gJy4vZ3B1LWZpbHRlci11dGlscyc7XG5cbmltcG9ydCB7XG4gIGdldFNvcnRpbmdGdW5jdGlvbixcbiAgdGltZVRvVW5peE1pbGxpLFxuICBjcmVhdGVEYXRhQ29udGFpbmVyLFxuICBEYXRhRm9ybSxcbiAgZGlmZkZpbHRlcnMsXG4gIGZpbHRlckRhdGFCeUZpbHRlclR5cGVzLFxuICBGaWx0ZXJSZXN1bHQsXG4gIGdldEZpbHRlckZ1bmN0aW9uLFxuICBnZXRGaWx0ZXJQcm9wcyxcbiAgZ2V0RmlsdGVyUmVjb3JkLFxuICBnZXROdW1lcmljRmllbGREb21haW4sXG4gIGdldFRpbWVzdGFtcEZpZWxkRG9tYWluLFxuICBnZXRMaW5lYXJEb21haW4sXG4gIGdldExvZ0RvbWFpbixcbiAgZ2V0T3JkaW5hbERvbWFpbixcbiAgZ2V0UXVhbnRpbGVEb21haW4sXG4gIERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIEZpbHRlckNoYW5nZWRcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCBub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuLy8gVE9ETyBpc29sYXRlIGxheWVyIHR5cGUsIGRlcGVuZHMgb24gQGtlcGxlci5nbC9sYXllcnNcbnR5cGUgTGF5ZXIgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIEdwdUZpbHRlciA9IHtcbiAgZmlsdGVyUmFuZ2U6IG51bWJlcltdW107XG4gIGZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnM6IHtcbiAgICBbaWQ6IHN0cmluZ106IHtuYW1lOiBzdHJpbmc7IGRvbWFpbjA6IG51bWJlcn0gfCBudWxsO1xuICB9O1xuICBmaWx0ZXJWYWx1ZUFjY2Vzc29yOiAoXG4gICAgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2VcbiAgKSA9PiAoXG4gICAgZ2V0SW5kZXg/OiAoYW55KSA9PiBudW1iZXIsXG4gICAgZ2V0RGF0YT86IChkY186IERhdGFDb250YWluZXJJbnRlcmZhY2UsIGQ6IGFueSwgZmllbGRJbmRleDogbnVtYmVyKSA9PiBhbnlcbiAgKSA9PiAoZDogYW55LCBvYmplY3RJbmZvPzoge2luZGV4OiBudW1iZXJ9KSA9PiAobnVtYmVyIHwgbnVtYmVyW10pW107XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJQcm9wcyA9XG4gIHwgTnVtZXJpY0ZpZWxkRmlsdGVyUHJvcHNcbiAgfCBCb29sZWFuRmllbGRGaWx0ZXJQcm9wc1xuICB8IFN0cmluZ0ZpZWxkRmlsdGVyUHJvcHNcbiAgfCBUaW1lRmllbGRGaWx0ZXJQcm9wcztcblxuZXhwb3J0IHR5cGUgTnVtZXJpY0ZpZWxkRmlsdGVyUHJvcHMgPSBSYW5nZUZpZWxkRG9tYWluICYge1xuICB2YWx1ZTogW251bWJlciwgbnVtYmVyXTtcbiAgdHlwZTogc3RyaW5nO1xuICB0eXBlT3B0aW9uczogc3RyaW5nW107XG4gIGdwdTogYm9vbGVhbjtcbiAgY29sdW1uU3RhdHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcbmV4cG9ydCB0eXBlIEJvb2xlYW5GaWVsZEZpbHRlclByb3BzID0gU2VsZWN0RmllbGREb21haW4gJiB7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IGJvb2xlYW47XG4gIGdwdTogYm9vbGVhbjtcbiAgY29sdW1uU3RhdHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcbmV4cG9ydCB0eXBlIFN0cmluZ0ZpZWxkRmlsdGVyUHJvcHMgPSBNdWx0aVNlbGVjdEZpZWxkRG9tYWluICYge1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmdbXTtcbiAgZ3B1OiBib29sZWFuO1xuICBjb2x1bW5TdGF0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuZXhwb3J0IHR5cGUgVGltZUZpZWxkRmlsdGVyUHJvcHMgPSBUaW1lUmFuZ2VGaWVsZERvbWFpbiAmIHtcbiAgdHlwZTogc3RyaW5nO1xuICB2aWV3OiBGaWx0ZXJbJ3ZpZXcnXTtcbiAgZml4ZWREb21haW46IGJvb2xlYW47XG4gIHZhbHVlOiBudW1iZXJbXTtcbiAgZ3B1OiBib29sZWFuO1xuICBjb2x1bW5TdGF0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG4vLyBVbmlxdWUgaWRlbnRpZmllciBvZiBlYWNoIGZpZWxkXG5jb25zdCBGSURfS0VZID0gJ25hbWUnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVUb0RhdGUoXG4gIGlzVGltZTogYm9vbGVhbixcbiAgZmllbGRJZHg6IG51bWJlcixcbiAgZm9ybWF0OiBzdHJpbmcsXG4gIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICAvLyBBbiBvYmplY3Qgd2l0aCByb3cgaW5kZXggb3IgYSBtYXRlcmlhbGl6ZWQgcm93IGFycmF5IChmb3IgbWF0ZXJpYWxpemVkIGhvdmVyIGluZm8gZnJvbSB0cmlwIGxheWVyKVxuICBkOiB7aW5kZXg6IG51bWJlcn0gfCBhbnlbXVxuKSB7XG4gIGlmIChpc1RpbWUpIHtcbiAgICByZXR1cm4gdGltZVRvVW5peE1pbGxpKEFycmF5LmlzQXJyYXkoZCkgPyBkW2ZpZWxkSWR4XSA6IGRjLnZhbHVlQXQoZC5pbmRleCwgZmllbGRJZHgpLCBmb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZCkgPyBkW2ZpZWxkSWR4XSA6IGRjLnZhbHVlQXQoZC5pbmRleCwgZmllbGRJZHgpO1xufVxuXG5jbGFzcyBLZXBsZXJUYWJsZTxGIGV4dGVuZHMgRmllbGQgPSBGaWVsZD4ge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIHR5cGU/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvbG9yOiBSR0JDb2xvcjtcblxuICAvLyBmaWVsZHMgYW5kIGRhdGFcbiAgZmllbGRzOiBGW10gPSBbXTtcblxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlO1xuXG4gIGFsbEluZGV4ZXM6IG51bWJlcltdID0gW107XG4gIGZpbHRlcmVkSW5kZXg6IG51bWJlcltdID0gW107XG4gIGZpbHRlcmVkSWR4Q1BVPzogbnVtYmVyW107XG4gIGZpbHRlcmVkSW5kZXhGb3JEb21haW46IG51bWJlcltdID0gW107XG4gIGZpZWxkUGFpcnM6IEZpZWxkUGFpcltdID0gW107XG4gIGdwdUZpbHRlcjogR3B1RmlsdGVyO1xuICBmaWx0ZXJSZWNvcmQ/OiBGaWx0ZXJSZWNvcmQ7XG4gIGZpbHRlclJlY29yZENQVT86IEZpbHRlclJlY29yZDtcbiAgY2hhbmdlZEZpbHRlcnM/OiBGaWx0ZXJDaGFuZ2VkO1xuXG4gIC8vIHRhYmxlLWluamVjdGVkIG1ldGFkYXRhXG4gIHNvcnRDb2x1bW4/OiB7XG4gICAgLy8gY29sdW1uIG5hbWU6IHNvcnRlZCBpZHhcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7IC8vIEFTQ0VORElORyB8IERFU0NFTkRJTkcgfCBVTlNPUlRcbiAgfTtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xuXG4gIHBpbm5lZENvbHVtbnM/OiBzdHJpbmdbXTtcbiAgc3VwcG9ydGVkRmlsdGVyVHlwZXM/OiBzdHJpbmdbXSB8IG51bGw7XG4gIGRpc2FibGVEYXRhT3BlcmF0aW9uPzogYm9vbGVhbjtcblxuICAvLyB0YWJsZS1pbmplY3RlZCBtZXRhZGF0YVxuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBnZXRGaWxlUHJvY2Vzc29yPzogKGRhdGE6IGFueSwgaW5wdXRGb3JtYXQ/OiBzdHJpbmcpID0+IHtkYXRhOiBhbnk7IGZvcm1hdDogc3RyaW5nfTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgaW5mbyxcbiAgICBjb2xvcixcbiAgICBtZXRhZGF0YSxcbiAgICBzdXBwb3J0ZWRGaWx0ZXJUeXBlcyA9IG51bGwsXG4gICAgZGlzYWJsZURhdGFPcGVyYXRpb24gPSBmYWxzZVxuICB9OiB7XG4gICAgaW5mbz86IFByb3RvRGF0YXNldFsnaW5mbyddO1xuICAgIGNvbG9yOiBSR0JDb2xvcjtcbiAgICBtZXRhZGF0YT86IFByb3RvRGF0YXNldFsnbWV0YWRhdGEnXTtcbiAgICBzdXBwb3J0ZWRGaWx0ZXJUeXBlcz86IFByb3RvRGF0YXNldFsnc3VwcG9ydGVkRmlsdGVyVHlwZXMnXTtcbiAgICBkaXNhYmxlRGF0YU9wZXJhdGlvbj86IFByb3RvRGF0YXNldFsnZGlzYWJsZURhdGFPcGVyYXRpb24nXTtcbiAgfSkge1xuICAgIC8vIFRPRE8gLSB3aGF0IHRvIGRvIGlmIHZhbGlkYXRpb24gZmFpbHM/IENhbiBrZXBsZXIgaGFuZGxlIGV4Y2VwdGlvbnM/XG4gICAgLy8gY29uc3QgdmFsaWRhdGVkRGF0YSA9IHZhbGlkYXRlSW5wdXREYXRhKGRhdGEpO1xuICAgIC8vIGlmICghdmFsaWRhdGVkRGF0YSkge1xuICAgIC8vICAgcmV0dXJuIHRoaXM7XG4gICAgLy8gfVxuXG4gICAgY29uc3QgZGF0YXNldEluZm8gPSB7XG4gICAgICBpZDogZ2VuZXJhdGVIYXNoSWQoNCksXG4gICAgICBsYWJlbDogJ25ldyBkYXRhc2V0JyxcbiAgICAgIHR5cGU6ICcnLFxuICAgICAgLi4uaW5mb1xuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0TWV0YWRhdGEgPSB7XG4gICAgICBpZDogZGF0YXNldEluZm8uaWQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmb3JtYXQ6IGRhdGFzZXRJbmZvLmZvcm1hdCB8fCAnJyxcbiAgICAgIGxhYmVsOiBkYXRhc2V0SW5mby5sYWJlbCB8fCAnJ1xuICAgIH07XG5cbiAgICB0aGlzLmlkID0gZGF0YXNldEluZm8uaWQ7XG4gICAgdGhpcy50eXBlID0gZGF0YXNldEluZm8udHlwZTtcbiAgICB0aGlzLmxhYmVsID0gZGF0YXNldEluZm8ubGFiZWw7XG4gICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICAuLi5kZWZhdWx0TWV0YWRhdGEsXG4gICAgICAuLi5tZXRhZGF0YVxuICAgIH07XG5cbiAgICB0aGlzLnN1cHBvcnRlZEZpbHRlclR5cGVzID0gc3VwcG9ydGVkRmlsdGVyVHlwZXM7XG4gICAgdGhpcy5kaXNhYmxlRGF0YU9wZXJhdGlvbiA9IGRpc2FibGVEYXRhT3BlcmF0aW9uO1xuXG4gICAgdGhpcy5kYXRhQ29udGFpbmVyID0gY3JlYXRlRGF0YUNvbnRhaW5lcihbXSk7XG4gICAgdGhpcy5ncHVGaWx0ZXIgPSBnZXRHcHVGaWx0ZXJQcm9wcyhbXSwgdGhpcy5pZCwgW10sIHVuZGVmaW5lZCk7XG4gIH1cblxuICBhc3luYyBpbXBvcnREYXRhKHtkYXRhfToge2RhdGE6IFByb3RvRGF0YXNldFsnZGF0YSddfSkge1xuICAgIGNvbnN0IGRhdGFDb250YWluZXJEYXRhID0gZGF0YS5jb2xzID8gZGF0YS5jb2xzIDogZGF0YS5yb3dzO1xuICAgIGNvbnN0IGlucHV0RGF0YUZvcm1hdCA9IGRhdGEuY29scyA/IERhdGFGb3JtLkNPTFNfQVJSQVkgOiBEYXRhRm9ybS5ST1dTX0FSUkFZO1xuXG4gICAgY29uc3QgZGF0YUNvbnRhaW5lciA9IGNyZWF0ZURhdGFDb250YWluZXIoZGF0YUNvbnRhaW5lckRhdGEsIHtcbiAgICAgIGZpZWxkczogZGF0YS5maWVsZHMsXG4gICAgICBhcnJvd1RhYmxlOiBkYXRhLmFycm93VGFibGUsXG4gICAgICBpbnB1dERhdGFGb3JtYXRcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IGRhdGEuZmllbGRzLm1hcCgoZiwgaSkgPT4gKHtcbiAgICAgIC4uLmYsXG4gICAgICBmaWVsZElkeDogaSxcbiAgICAgIGlkOiBmLm5hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogZi5kaXNwbGF5TmFtZSB8fCBmLm5hbWUsXG4gICAgICBhbmFseXplclR5cGU6IGYuYW5hbHl6ZXJUeXBlIHx8IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcsXG4gICAgICBmb3JtYXQ6IGYuZm9ybWF0IHx8ICcnLFxuICAgICAgdmFsdWVBY2Nlc3NvcjogZ2V0RmllbGRWYWx1ZUFjY2Vzc29yKGYsIGksIGRhdGFDb250YWluZXIpXG4gICAgfSkpO1xuXG4gICAgY29uc3QgYWxsSW5kZXhlcyA9IGRhdGFDb250YWluZXIuZ2V0UGxhaW5JbmRleCgpO1xuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IGRhdGFDb250YWluZXI7XG4gICAgdGhpcy5hbGxJbmRleGVzID0gYWxsSW5kZXhlcztcbiAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBhbGxJbmRleGVzO1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbiA9IGFsbEluZGV4ZXM7XG4gICAgdGhpcy5maWVsZFBhaXJzID0gZmluZFBvaW50RmllbGRQYWlycyhmaWVsZHMpO1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTWFrZSBzdXJlIHRoYXQgZmllbGRzIHNhdGlzZmllcyBGIGV4dGVuZHMgRmllbGRcbiAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgICB0aGlzLmdwdUZpbHRlciA9IGdldEdwdUZpbHRlclByb3BzKFtdLCB0aGlzLmlkLCBmaWVsZHMsIHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlIHRhYmxlIHdpdGggbmV3IGRhdGFcbiAgICogQHBhcmFtIGRhdGEgLSBuZXcgZGF0YSBlLmcuIHRoZSBhcnJvdyBkYXRhIHdpdGggbmV3IGJhdGNoZXMgbG9hZGVkXG4gICAqL1xuICBhc3luYyB1cGRhdGUoZGF0YTogUHJvdG9EYXRhc2V0WydkYXRhJ10pIHtcbiAgICBjb25zdCBkYXRhQ29udGFpbmVyRGF0YSA9IGRhdGEuY29scyA/IGRhdGEuY29scyA6IGRhdGEucm93cztcbiAgICB0aGlzLmRhdGFDb250YWluZXIudXBkYXRlPy4oZGF0YUNvbnRhaW5lckRhdGEpO1xuICAgIHRoaXMuYWxsSW5kZXhlcyA9IHRoaXMuZGF0YUNvbnRhaW5lci5nZXRQbGFpbkluZGV4KCk7XG4gICAgdGhpcy5maWx0ZXJlZEluZGV4ID0gdGhpcy5hbGxJbmRleGVzO1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbiA9IHRoaXMuYWxsSW5kZXhlcztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZmllbGRcbiAgICogQHBhcmFtIGNvbHVtbk5hbWVcbiAgICovXG4gIGdldENvbHVtbkZpZWxkKGNvbHVtbk5hbWU6IHN0cmluZyk6IEYgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZChmZCA9PiBmZFtGSURfS0VZXSA9PT0gY29sdW1uTmFtZSk7XG4gICAgdGhpcy5fYXNzZXRGaWVsZChjb2x1bW5OYW1lLCBmaWVsZCk7XG4gICAgcmV0dXJuIGZpZWxkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBmaWVsZElkeFxuICAgKiBAcGFyYW0gY29sdW1uTmFtZVxuICAgKi9cbiAgZ2V0Q29sdW1uRmllbGRJZHgoY29sdW1uTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBmaWVsZElkeCA9IHRoaXMuZmllbGRzLmZpbmRJbmRleChmZCA9PiBmZFtGSURfS0VZXSA9PT0gY29sdW1uTmFtZSk7XG4gICAgdGhpcy5fYXNzZXRGaWVsZChjb2x1bW5OYW1lLCBCb29sZWFuKGZpZWxkSWR4ID4gLTEpKTtcbiAgICByZXR1cm4gZmllbGRJZHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRpc3BsYXlGb3JtYXRcbiAgICogQHBhcmFtIGNvbHVtbk5hbWVcbiAgICovXG4gIGdldENvbHVtbkRpc3BsYXlGb3JtYXQoY29sdW1uTmFtZSkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZChmZCA9PiBmZFtGSURfS0VZXSA9PT0gY29sdW1uTmFtZSk7XG4gICAgdGhpcy5fYXNzZXRGaWVsZChjb2x1bW5OYW1lLCBmaWVsZCk7XG4gICAgcmV0dXJuIGZpZWxkPy5kaXNwbGF5Rm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgYSBjZWxsXG4gICAqL1xuICBnZXRWYWx1ZShjb2x1bW5OYW1lOiBzdHJpbmcsIHJvd0lkeDogbnVtYmVyKTogYW55IHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0Q29sdW1uRmllbGQoY29sdW1uTmFtZSk7XG4gICAgcmV0dXJuIGZpZWxkID8gZmllbGQudmFsdWVBY2Nlc3Nvcih7aW5kZXg6IHJvd0lkeH0pIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGV4aXN0aW5nIGZpZWxkIHdpdGggYSBuZXcgb2JqZWN0XG4gICAqIEBwYXJhbSBmaWVsZElkeFxuICAgKiBAcGFyYW0gbmV3RmllbGRcbiAgICovXG4gIHVwZGF0ZUNvbHVtbkZpZWxkKGZpZWxkSWR4OiBudW1iZXIsIG5ld0ZpZWxkOiBGKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZHMgPSBPYmplY3QuYXNzaWduKFsuLi50aGlzLmZpZWxkc10sIHtbZmllbGRJZHhdOiBuZXdGaWVsZH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBkYXRhc2V0IGNvbG9yIGJ5IGN1c3RvbSBjb2xvclxuICAgKiBAcGFyYW0gbmV3Q29sb3JcbiAgICovXG4gIHVwZGF0ZVRhYmxlQ29sb3IobmV3Q29sb3I6IFJHQkNvbG9yKTogdm9pZCB7XG4gICAgdGhpcy5jb2xvciA9IG5ld0NvbG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgZmlsdGVyUHJvcHMgdG8gZmllbGQgYW5kIHJldHJpZXZlIGl0XG4gICAqIEBwYXJhbSBjb2x1bW5OYW1lXG4gICAqL1xuICBnZXRDb2x1bW5GaWx0ZXJQcm9wcyhjb2x1bW5OYW1lOiBzdHJpbmcpOiBGWydmaWx0ZXJQcm9wcyddIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmllbGRJZHggPSB0aGlzLmdldENvbHVtbkZpZWxkSWR4KGNvbHVtbk5hbWUpO1xuICAgIGlmIChmaWVsZElkeCA8IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzW2ZpZWxkSWR4XTtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZpZWxkLCAnZmlsdGVyUHJvcHMnKSkge1xuICAgICAgcmV0dXJuIGZpZWxkLmZpbHRlclByb3BzO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkRG9tYWluID0gdGhpcy5nZXRDb2x1bW5GaWx0ZXJEb21haW4oZmllbGQpO1xuICAgIGlmICghZmllbGREb21haW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZ2V0RmlsdGVyUHJvcHMoZmllbGQsIGZpZWxkRG9tYWluKTtcbiAgICBjb25zdCBuZXdGaWVsZCA9IHtcbiAgICAgIC4uLmZpZWxkLFxuICAgICAgZmlsdGVyUHJvcHNcbiAgICB9O1xuXG4gICAgdGhpcy51cGRhdGVDb2x1bW5GaWVsZChmaWVsZElkeCwgbmV3RmllbGQpO1xuXG4gICAgcmV0dXJuIGZpbHRlclByb3BzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGZpbHRlcnMgdG8gZGF0YXNldCwgcmV0dXJuIHRoZSBmaWx0ZXJlZCBkYXRhc2V0IHdpdGggdXBkYXRlZCBgZ3B1RmlsdGVyYCwgYGZpbHRlclJlY29yZGAsIGBmaWx0ZXJlZEluZGV4YCwgYGZpbHRlcmVkSW5kZXhGb3JEb21haW5gXG4gICAqIEBwYXJhbSBmaWx0ZXJzXG4gICAqIEBwYXJhbSBsYXllcnNcbiAgICogQHBhcmFtIG9wdFxuICAgKi9cbiAgZmlsdGVyVGFibGUoZmlsdGVyczogRmlsdGVyW10sIGxheWVyczogTGF5ZXJbXSwgb3B0PzogRmlsdGVyRGF0YXNldE9wdCk6IEtlcGxlclRhYmxlPEZpZWxkPiB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXIsIGlkOiBkYXRhSWQsIGZpbHRlclJlY29yZDogb2xkRmlsdGVyUmVjb3JkLCBmaWVsZHN9ID0gdGhpcztcblxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIGZpbHRlcnNcbiAgICBjb25zdCBmaWx0ZXJSZWNvcmQgPSBnZXRGaWx0ZXJSZWNvcmQoZGF0YUlkLCBmaWx0ZXJzLCBvcHQgfHwge30pO1xuXG4gICAgdGhpcy5maWx0ZXJSZWNvcmQgPSBmaWx0ZXJSZWNvcmQ7XG4gICAgdGhpcy5ncHVGaWx0ZXIgPSBnZXRHcHVGaWx0ZXJQcm9wcyhmaWx0ZXJzLCBkYXRhSWQsIGZpZWxkcywgdGhpcy5ncHVGaWx0ZXIpO1xuXG4gICAgdGhpcy5jaGFuZ2VkRmlsdGVycyA9IGRpZmZGaWx0ZXJzKGZpbHRlclJlY29yZCwgb2xkRmlsdGVyUmVjb3JkKTtcblxuICAgIGlmICghZmlsdGVycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJbmRleCA9IHRoaXMuYWxsSW5kZXhlcztcbiAgICAgIHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbiA9IHRoaXMuYWxsSW5kZXhlcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGdlbmVyYXRlIDIgc2V0cyBvZiBmaWx0ZXIgcmVzdWx0XG4gICAgLy8gZmlsdGVyZWRJbmRleCB1c2VkIHRvIGNhbGN1bGF0ZSBsYXllciBkYXRhXG4gICAgLy8gZmlsdGVyZWRJbmRleEZvckRvbWFpbiB1c2VkIHRvIGNhbGN1bGF0ZSBsYXllciBEb21haW5cbiAgICBjb25zdCBzaG91bGRDYWxEb21haW4gPSBCb29sZWFuKHRoaXMuY2hhbmdlZEZpbHRlcnMuZHluYW1pY0RvbWFpbik7XG4gICAgY29uc3Qgc2hvdWxkQ2FsSW5kZXggPSBCb29sZWFuKHRoaXMuY2hhbmdlZEZpbHRlcnMuY3B1KTtcblxuICAgIGxldCBmaWx0ZXJSZXN1bHQ6IEZpbHRlclJlc3VsdCA9IHt9O1xuICAgIGlmIChzaG91bGRDYWxEb21haW4gfHwgc2hvdWxkQ2FsSW5kZXgpIHtcbiAgICAgIGNvbnN0IGR5bmFtaWNEb21haW5GaWx0ZXJzID0gc2hvdWxkQ2FsRG9tYWluID8gZmlsdGVyUmVjb3JkLmR5bmFtaWNEb21haW4gOiBudWxsO1xuICAgICAgY29uc3QgY3B1RmlsdGVycyA9IHNob3VsZENhbEluZGV4ID8gZmlsdGVyUmVjb3JkLmNwdSA6IG51bGw7XG5cbiAgICAgIGNvbnN0IGZpbHRlckZ1bmNzID0gZmlsdGVycy5yZWR1Y2UoKGFjYywgZmlsdGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBnZXREYXRhc2V0RmllbGRJbmRleEZvckZpbHRlcih0aGlzLmlkLCBmaWx0ZXIpO1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkSW5kZXggIT09IC0xID8gZmllbGRzW2ZpZWxkSW5kZXhdIDogbnVsbDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBbZmlsdGVyLmlkXTogZ2V0RmlsdGVyRnVuY3Rpb24oZmllbGQsIHRoaXMuaWQsIGZpbHRlciwgbGF5ZXJzLCBkYXRhQ29udGFpbmVyKVxuICAgICAgICB9O1xuICAgICAgfSwge30pO1xuXG4gICAgICBmaWx0ZXJSZXN1bHQgPSBmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyhcbiAgICAgICAge2R5bmFtaWNEb21haW5GaWx0ZXJzLCBjcHVGaWx0ZXJzLCBmaWx0ZXJGdW5jc30sXG4gICAgICAgIGRhdGFDb250YWluZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZEluZGV4ID0gZmlsdGVyUmVzdWx0LmZpbHRlcmVkSW5kZXggfHwgdGhpcy5maWx0ZXJlZEluZGV4O1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbiA9XG4gICAgICBmaWx0ZXJSZXN1bHQuZmlsdGVyZWRJbmRleEZvckRvbWFpbiB8fCB0aGlzLmZpbHRlcmVkSW5kZXhGb3JEb21haW47XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBmaWx0ZXJzIHRvIGEgZGF0YXNldCBhbGwgb24gQ1BVLCBhc3NpZ24gdG8gYGZpbHRlcmVkSWR4Q1BVYCwgYGZpbHRlclJlY29yZENQVWBcbiAgICogQHBhcmFtIGZpbHRlcnNcbiAgICogQHBhcmFtIGxheWVyc1xuICAgKi9cbiAgZmlsdGVyVGFibGVDUFUoZmlsdGVyczogRmlsdGVyW10sIGxheWVyczogTGF5ZXJbXSk6IEtlcGxlclRhYmxlPEZpZWxkPiB7XG4gICAgY29uc3Qgb3B0ID0ge1xuICAgICAgY3B1T25seTogdHJ1ZSxcbiAgICAgIGlnbm9yZURvbWFpbjogdHJ1ZVxuICAgIH07XG5cbiAgICAvLyBubyBmaWx0ZXJcbiAgICBpZiAoIWZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWR4Q1BVID0gdGhpcy5hbGxJbmRleGVzO1xuICAgICAgdGhpcy5maWx0ZXJSZWNvcmRDUFUgPSBnZXRGaWx0ZXJSZWNvcmQodGhpcy5pZCwgZmlsdGVycywgb3B0KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIG5vIGdwdSBmaWx0ZXJcbiAgICBpZiAoIWZpbHRlcnMuZmluZChmID0+IGYuZ3B1KSkge1xuICAgICAgdGhpcy5maWx0ZXJlZElkeENQVSA9IHRoaXMuZmlsdGVyZWRJbmRleDtcbiAgICAgIHRoaXMuZmlsdGVyUmVjb3JkQ1BVID0gZ2V0RmlsdGVyUmVjb3JkKHRoaXMuaWQsIGZpbHRlcnMsIG9wdCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBtYWtlIGEgY29weSBmb3IgY3B1IGZpbHRlcmluZ1xuICAgIGNvbnN0IGNvcGllZCA9IGNvcHlUYWJsZSh0aGlzKTtcblxuICAgIGNvcGllZC5maWx0ZXJSZWNvcmQgPSB0aGlzLmZpbHRlclJlY29yZENQVTtcbiAgICBjb3BpZWQuZmlsdGVyZWRJbmRleCA9IHRoaXMuZmlsdGVyZWRJZHhDUFUgfHwgW107XG5cbiAgICBjb25zdCBmaWx0ZXJlZCA9IGNvcGllZC5maWx0ZXJUYWJsZShmaWx0ZXJzLCBsYXllcnMsIG9wdCk7XG5cbiAgICB0aGlzLmZpbHRlcmVkSWR4Q1BVID0gZmlsdGVyZWQuZmlsdGVyZWRJbmRleDtcbiAgICB0aGlzLmZpbHRlclJlY29yZENQVSA9IGZpbHRlcmVkLmZpbHRlclJlY29yZDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBmaWVsZCBkb21haW4gYmFzZWQgb24gZmllbGQgdHlwZSBhbmQgZGF0YVxuICAgKiBmb3IgRmlsdGVyXG4gICAqL1xuICBnZXRDb2x1bW5GaWx0ZXJEb21haW4oZmllbGQ6IEYpOiBGaWVsZERvbWFpbiB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXJ9ID0gdGhpcztcbiAgICBjb25zdCB7dmFsdWVBY2Nlc3Nvcn0gPSBmaWVsZDtcblxuICAgIGxldCBkb21haW47XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgICAvLyBjYWxjdWxhdGUgZG9tYWluIGFuZCBzdGVwXG4gICAgICAgIHJldHVybiBnZXROdW1lcmljRmllbGREb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW46XG4gICAgICAgIHJldHVybiB7ZG9tYWluOiBbdHJ1ZSwgZmFsc2VdfTtcblxuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMuc3RyaW5nOlxuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMuaDM6XG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5kYXRlOlxuICAgICAgICBkb21haW4gPSBnZXRPcmRpbmFsRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpO1xuICAgICAgICByZXR1cm4ge2RvbWFpbn07XG5cbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgICAgcmV0dXJuIGdldFRpbWVzdGFtcEZpZWxkRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4ge2RvbWFpbjogZ2V0T3JkaW5hbERvbWFpbihkYXRhQ29udGFpbmVyLCB2YWx1ZUFjY2Vzc29yKX07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBHZXQgdGhlIGRvbWFpbiBvZiB0aGlzIGNvbHVtbiBiYXNlZCBvbiBzY2FsZSB0eXBlXG4gICAqL1xuICBnZXRDb2x1bW5MYXllckRvbWFpbihmaWVsZDogRiwgc2NhbGVUeXBlOiBzdHJpbmcpOiBudW1iZXJbXSB8IHN0cmluZ1tdIHwgW251bWJlciwgbnVtYmVyXSB8IG51bGwge1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4Rm9yRG9tYWlufSA9IHRoaXM7XG5cbiAgICBpZiAoIVNDQUxFX1RZUEVTW3NjYWxlVHlwZV0pIHtcbiAgICAgIENvbnNvbGUuZXJyb3IoYHNjYWxlIHR5cGUgJHtzY2FsZVR5cGV9IG5vdCBzdXBwb3J0ZWRgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHt2YWx1ZUFjY2Vzc29yfSA9IGZpZWxkO1xuICAgIGNvbnN0IGluZGV4VmFsdWVBY2Nlc3NvciA9IGkgPT4gdmFsdWVBY2Nlc3Nvcih7aW5kZXg6IGl9KTtcbiAgICBjb25zdCBzb3J0RnVuY3Rpb24gPSBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGQudHlwZSk7XG5cbiAgICBzd2l0Y2ggKHNjYWxlVHlwZSkge1xuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5vcmRpbmFsOlxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsOlxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5wb2ludDpcbiAgICAgICAgLy8gZG8gbm90IHJlY2FsY3VsYXRlIG9yZGluYWwgZG9tYWluIGJhc2VkIG9uIGZpbHRlcmVkIGRhdGFcbiAgICAgICAgLy8gZG9uJ3QgbmVlZCB0byB1cGRhdGUgb3JkaW5hbCBkb21haW4gZXZlcnkgdGltZVxuICAgICAgICByZXR1cm4gZ2V0T3JkaW5hbERvbWFpbihkYXRhQ29udGFpbmVyLCB2YWx1ZUFjY2Vzc29yKTtcblxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5xdWFudGlsZTpcbiAgICAgICAgcmV0dXJuIGdldFF1YW50aWxlRG9tYWluKGZpbHRlcmVkSW5kZXhGb3JEb21haW4sIGluZGV4VmFsdWVBY2Nlc3Nvciwgc29ydEZ1bmN0aW9uKTtcblxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5sb2c6XG4gICAgICAgIHJldHVybiBnZXRMb2dEb21haW4oZmlsdGVyZWRJbmRleEZvckRvbWFpbiwgaW5kZXhWYWx1ZUFjY2Vzc29yKTtcblxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5xdWFudGl6ZTpcbiAgICAgIGNhc2UgU0NBTEVfVFlQRVMubGluZWFyOlxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5zcXJ0OlxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5jdXN0b206XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZ2V0TGluZWFyRG9tYWluKGZpbHRlcmVkSW5kZXhGb3JEb21haW4sIGluZGV4VmFsdWVBY2Nlc3Nvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNhbXBsZSBvZiByb3dzIHRvIGNhbGN1bGF0ZSBsYXllciBib3VuZGFyaWVzXG4gICAqL1xuICAvLyBnZXRTYW1wbGVEYXRhKHJvd3MpXG5cbiAgLyoqXG4gICAqIFBhcnNlIGNlbGwgdmFsdWUgYmFzZWQgb24gY29sdW1uIHR5cGUgYW5kIHJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKiBWYWx1ZSB0aGUgZmllbGQgdmFsdWUsIHR5cGUgdGhlIGZpZWxkIHR5cGVcbiAgICovXG4gIC8vIHBhcnNlRmllbGRWYWx1ZSh2YWx1ZSwgdHlwZSlcblxuICAvLyBzb3J0RGF0YXNldEJ5Q29sdW1uKClcblxuICAvKipcbiAgICogQXNzZXJ0IHdoZXRoZXIgZmllbGQgZXhpc3RcbiAgICogQHBhcmFtIGZpZWxkTmFtZVxuICAgKiBAcGFyYW0gY29uZGl0aW9uXG4gICAqL1xuICBfYXNzZXRGaWVsZChmaWVsZE5hbWU6IHN0cmluZywgY29uZGl0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgQ29uc29sZS5lcnJvcihgJHtmaWVsZE5hbWV9IGRvZXNudCBleGlzdCBpbiBkYXRhc2V0ICR7dGhpcy5pZH1gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRGF0YXNldHMgPSB7XG4gIFtrZXk6IHN0cmluZ106IEtlcGxlclRhYmxlPEZpZWxkPjtcbn07XG5cbi8vIEhFTFBFUiBGVU5DVElPTlMgKE1BSU5MWSBFWFBPUlRFRCBGT1IgVEVTVC4uLilcbi8vIGhhdmUgdG8gZG91YmxlIGV4Y2FwZVxuY29uc3Qgc3BlY2lhbENoYXJhY3RlclNldCA9IGBbI18mQFxcXFwuXFxcXC1cXFxcIF1gO1xuXG5mdW5jdGlvbiBmb3VuZE1hdGNoaW5nRmllbGRzKHJlLCBzdWZmaXhQYWlyLCBhbGxOYW1lcywgZmllbGROYW1lKSB7XG4gIGNvbnN0IHBhcnRuZXJJZHggPSBhbGxOYW1lcy5maW5kSW5kZXgoXG4gICAgZCA9PiBkID09PSBmaWVsZE5hbWUucmVwbGFjZShyZSwgbWF0Y2ggPT4gbWF0Y2gucmVwbGFjZShzdWZmaXhQYWlyWzBdLCBzdWZmaXhQYWlyWzFdKSlcbiAgKTtcbiAgbGV0IGFsdElkeCA9IC0xO1xuICBpZiAocGFydG5lcklkeCA+IC0xKSB7XG4gICAgLy8gaWYgZm91bmQgcGFydG5lciwgZ28gb24gYW5kIGxvb2sgZm9yIGFsdGl0dWRlXG4gICAgQUxUSVRVREVfRklFTERTLnNvbWUoYWx0ID0+IHtcbiAgICAgIGFsdElkeCA9IGFsbE5hbWVzLmZpbmRJbmRleChcbiAgICAgICAgZCA9PiBkID09PSBmaWVsZE5hbWUucmVwbGFjZShyZSwgbWF0Y2ggPT4gbWF0Y2gucmVwbGFjZShzdWZmaXhQYWlyWzBdLCBhbHQpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhbHRJZHggPiAtMTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge3BhcnRuZXJJZHgsIGFsdElkeH07XG59XG4vKipcbiAqIEZpbmQgcG9pbnQgZmllbGRzIHBhaXJzIGZyb20gZmllbGRzXG4gKlxuICogQHBhcmFtIGZpZWxkc1xuICogQHJldHVybnMgZm91bmQgcG9pbnQgZmllbGRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUG9pbnRGaWVsZFBhaXJzKGZpZWxkczogRmllbGRbXSk6IEZpZWxkUGFpcltdIHtcbiAgY29uc3QgYWxsTmFtZXMgPSBmaWVsZHMubWFwKGYgPT4gZi5uYW1lLnRvTG93ZXJDYXNlKCkpO1xuXG4gIC8vIGdldCBsaXN0IG9mIGFsbCBmaWVsZHMgd2l0aCBtYXRjaGluZyBzdWZmaXhlc1xuICBjb25zdCBhY2M6IEZpZWxkUGFpcltdID0gW107XG4gIHJldHVybiBhbGxOYW1lcy5yZWR1Y2UoKGNhcnJ5LCBmaWVsZE5hbWUsIGlkeCkgPT4ge1xuICAgIC8vIFRoaXMgc2VhcmNoIGZvciBwYWlycyB3aWxsIGVhcmx5IGV4aXQgaWYgZm91bmQuXG4gICAgZm9yIChjb25zdCBzdWZmaXhQYWlyIG9mIFRSSVBfUE9JTlRfRklFTERTKSB7XG4gICAgICAvLyBtYXRjaCBmaXJzdCBzdWZmaXhcbiAgICAgIC8vIChefFsjXyZAXFwuXFwtXFwgXSlsYXQoWyNfJkBcXC5cXC1cXCBdfCQpXG4gICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYChefCR7c3BlY2lhbENoYXJhY3RlclNldH0pJHtzdWZmaXhQYWlyWzBdfSgke3NwZWNpYWxDaGFyYWN0ZXJTZXR9fCQpYCk7XG5cbiAgICAgIGlmIChyZS50ZXN0KGZpZWxkTmFtZSkpIHtcbiAgICAgICAgY29uc3Qge3BhcnRuZXJJZHgsIGFsdElkeH0gPSBmb3VuZE1hdGNoaW5nRmllbGRzKHJlLCBzdWZmaXhQYWlyLCBhbGxOYW1lcywgZmllbGROYW1lKTtcblxuICAgICAgICBpZiAocGFydG5lcklkeCA+IC0xKSB7XG4gICAgICAgICAgY29uc3QgdHJpbU5hbWUgPSBmaWVsZE5hbWUucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcblxuICAgICAgICAgIGNhcnJ5LnB1c2goe1xuICAgICAgICAgICAgZGVmYXVsdE5hbWU6IHRyaW1OYW1lIHx8ICdwb2ludCcsXG4gICAgICAgICAgICBwYWlyOiB7XG4gICAgICAgICAgICAgIGxhdDoge1xuICAgICAgICAgICAgICAgIGZpZWxkSWR4OiBpZHgsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkc1tpZHhdLm5hbWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbG5nOiB7XG4gICAgICAgICAgICAgICAgZmllbGRJZHg6IHBhcnRuZXJJZHgsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkc1twYXJ0bmVySWR4XS5uYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC4uLihhbHRJZHggPiAtMVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICBhbHRpdHVkZToge1xuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWR4OiBhbHRJZHgsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkc1thbHRJZHhdLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VmZml4OiBzdWZmaXhQYWlyXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYXJyeTtcbiAgfSwgYWNjKTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFzZXRcbiAqIEBwYXJhbSBjb2x1bW5cbiAqIEBwYXJhbSBtb2RlXG4gKiBAdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydERhdGFzZXRCeUNvbHVtbihcbiAgZGF0YXNldDogS2VwbGVyVGFibGU8RmllbGQ+LFxuICBjb2x1bW46IHN0cmluZyxcbiAgbW9kZT86IHN0cmluZ1xuKTogS2VwbGVyVGFibGU8RmllbGQ+IHtcbiAgY29uc3Qge2FsbEluZGV4ZXMsIGZpZWxkcywgZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0O1xuICBjb25zdCBmaWVsZEluZGV4ID0gZmllbGRzLmZpbmRJbmRleChmID0+IGYubmFtZSA9PT0gY29sdW1uKTtcbiAgaWYgKGZpZWxkSW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGRhdGFzZXQ7XG4gIH1cblxuICBjb25zdCBzb3J0QnkgPSBTT1JUX09SREVSW21vZGUgfHwgJyddIHx8IFNPUlRfT1JERVIuQVNDRU5ESU5HO1xuXG4gIGlmIChzb3J0QnkgPT09IFNPUlRfT1JERVIuVU5TT1JUKSB7XG4gICAgZGF0YXNldC5zb3J0Q29sdW1uID0ge307XG4gICAgZGF0YXNldC5zb3J0T3JkZXIgPSBudWxsO1xuXG4gICAgcmV0dXJuIGRhdGFzZXQ7XG4gIH1cblxuICBjb25zdCBzb3J0RnVuY3Rpb24gPSBzb3J0QnkgPT09IFNPUlRfT1JERVIuQVNDRU5ESU5HID8gYXNjZW5kaW5nIDogZGVzY2VuZGluZztcbiAgY29uc3Qgc29ydE9yZGVyID0gYWxsSW5kZXhlcy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCB2YWx1ZTEgPSBkYXRhQ29udGFpbmVyLnZhbHVlQXQoYSwgZmllbGRJbmRleCk7XG4gICAgY29uc3QgdmFsdWUyID0gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGIsIGZpZWxkSW5kZXgpO1xuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlMSkgJiYgbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlMikpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlMSkgJiYgIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZTIpKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiBzb3J0RnVuY3Rpb24odmFsdWUxLCB2YWx1ZTIpO1xuICB9KTtcblxuICBkYXRhc2V0LnNvcnRDb2x1bW4gPSB7XG4gICAgW2NvbHVtbl06IHNvcnRCeVxuICB9O1xuICBkYXRhc2V0LnNvcnRPcmRlciA9IHNvcnRPcmRlcjtcblxuICByZXR1cm4gZGF0YXNldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpblRhYmxlQ29sdW1ucyhkYXRhc2V0OiBLZXBsZXJUYWJsZTxGaWVsZD4sIGNvbHVtbjogc3RyaW5nKTogS2VwbGVyVGFibGU8RmllbGQ+IHtcbiAgY29uc3QgZmllbGQgPSBkYXRhc2V0LmdldENvbHVtbkZpZWxkKGNvbHVtbik7XG4gIGlmICghZmllbGQpIHtcbiAgICByZXR1cm4gZGF0YXNldDtcbiAgfVxuXG4gIGxldCBwaW5uZWRDb2x1bW5zO1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhc2V0LnBpbm5lZENvbHVtbnMpICYmIGRhdGFzZXQucGlubmVkQ29sdW1ucy5pbmNsdWRlcyhmaWVsZC5uYW1lKSkge1xuICAgIC8vIHVucGluIGl0XG4gICAgcGlubmVkQ29sdW1ucyA9IGRhdGFzZXQucGlubmVkQ29sdW1ucy5maWx0ZXIoY28gPT4gY28gIT09IGZpZWxkLm5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHBpbm5lZENvbHVtbnMgPSAoZGF0YXNldC5waW5uZWRDb2x1bW5zIHx8IFtdKS5jb25jYXQoZmllbGQubmFtZSk7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBjb3B5VGFibGVBbmRVcGRhdGUoZGF0YXNldCwge3Bpbm5lZENvbHVtbnN9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlUYWJsZShvcmlnaW5hbDogS2VwbGVyVGFibGU8RmllbGQ+KTogS2VwbGVyVGFibGU8RmllbGQ+IHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3JpZ2luYWwpKSwgb3JpZ2luYWwpO1xufVxuXG4vKipcbiAqIEB0eXBlXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlQW5kVXBkYXRlKFxuICBvcmlnaW5hbDogS2VwbGVyVGFibGU8RmllbGQ+LFxuICBvcHRpb25zOiBQYXJ0aWFsPEtlcGxlclRhYmxlPEZpZWxkPj4gPSB7fVxuKTogS2VwbGVyVGFibGU8RmllbGQ+IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLnJlZHVjZSgoYWNjLCBlbnRyeSkgPT4ge1xuICAgIGFjY1tlbnRyeVswXV0gPSBlbnRyeVsxXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCBjb3B5VGFibGUob3JpZ2luYWwpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkVmFsdWVBY2Nlc3NvcjxcbiAgRiBleHRlbmRzIHtcbiAgICB0eXBlPzogRmllbGRbJ3R5cGUnXTtcbiAgICBmb3JtYXQ/OiBGaWVsZFsnZm9ybWF0J107XG4gIH1cbj4oZjogRiwgaTogbnVtYmVyLCBkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSkge1xuICByZXR1cm4gbWF5YmVUb0RhdGUuYmluZChcbiAgICBudWxsLFxuICAgIC8vIGlzIHRpbWVcbiAgICBmLnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsXG4gICAgaSxcbiAgICBmLmZvcm1hdCB8fCAnJyxcbiAgICBkY1xuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBLZXBsZXJUYWJsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFzQkEsSUFBQUcsZUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBb0JBLElBQUFLLFlBQUEsR0FBQUwsT0FBQTtBQUEyRSxTQUFBTSwyQkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEseUJBQUFDLE1BQUEsSUFBQUgsQ0FBQSxDQUFBRyxNQUFBLENBQUFDLFFBQUEsS0FBQUosQ0FBQSxxQkFBQUUsQ0FBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQU4sQ0FBQSxNQUFBRSxDQUFBLEdBQUFLLDJCQUFBLENBQUFQLENBQUEsTUFBQUMsQ0FBQSxJQUFBRCxDQUFBLHVCQUFBQSxDQUFBLENBQUFRLE1BQUEsSUFBQU4sQ0FBQSxLQUFBRixDQUFBLEdBQUFFLENBQUEsT0FBQU8sRUFBQSxNQUFBQyxDQUFBLFlBQUFBLEVBQUEsZUFB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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/table",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.1",
4
+ "version": "3.2.2",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -30,10 +30,10 @@
30
30
  "umd"
31
31
  ],
32
32
  "dependencies": {
33
- "@kepler.gl/common-utils": "3.2.1",
34
- "@kepler.gl/constants": "3.2.1",
35
- "@kepler.gl/types": "3.2.1",
36
- "@kepler.gl/utils": "3.2.1",
33
+ "@kepler.gl/common-utils": "3.2.2",
34
+ "@kepler.gl/constants": "3.2.2",
35
+ "@kepler.gl/types": "3.2.2",
36
+ "@kepler.gl/utils": "3.2.2",
37
37
  "@loaders.gl/mvt": "^4.3.2",
38
38
  "@loaders.gl/pmtiles": "^4.3.2",
39
39
  "@types/d3-array": "^2.8.0",
@@ -98,7 +98,7 @@ export function createNewDataEntry(
98
98
  info,
99
99
  color,
100
100
  opts,
101
- data: validatedData
101
+ data: data.arrowTable ? {...validatedData, arrowTable: data.arrowTable} : validatedData
102
102
  });
103
103
  }
104
104
 
@@ -136,7 +136,12 @@ async function createTable(datasetInfo: CreateTableProps) {
136
136
  ...opts,
137
137
  metadata
138
138
  });
139
- await table.importData({data});
139
+ try {
140
+ await table.importData({data});
141
+ } catch (error) {
142
+ console.error('Failed to create table', error);
143
+ throw error;
144
+ }
140
145
 
141
146
  return table;
142
147
  }
@@ -211,6 +211,7 @@ class KeplerTable<F extends Field = Field> {
211
211
 
212
212
  const dataContainer = createDataContainer(dataContainerData, {
213
213
  fields: data.fields,
214
+ arrowTable: data.arrowTable,
214
215
  inputDataFormat
215
216
  });
216
217
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/tasks",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.1",
4
+ "version": "3.2.2",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -30,7 +30,7 @@
30
30
  "umd"
31
31
  ],
32
32
  "dependencies": {
33
- "@kepler.gl/processors": "3.2.1",
33
+ "@kepler.gl/processors": "3.2.2",
34
34
  "react-palm": "^3.3.8"
35
35
  },
36
36
  "nyc": {
@@ -54,6 +54,7 @@ export type ProtoDataset = {
54
54
  fields: ProtoDatasetField[];
55
55
  rows: any[][];
56
56
  cols?: any[];
57
+ arrowTable?: arrow.Table;
57
58
  };
58
59
 
59
60
  // table-injected metadata
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/types",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.1",
4
+ "version": "3.2.2",
5
5
  "description": "kepler.gl types used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "types": "index.d.ts",
@@ -1,11 +1,12 @@
1
+ import { ProtoDatasetField } from '@kepler.gl/types';
1
2
  import * as arrow from 'apache-arrow';
2
3
  import { DATA_TYPES as AnalyzerDATA_TYPES } from 'type-analyzer';
3
- import { ProtoDatasetField } from '@kepler.gl/types';
4
- import { DataRow, SharedRowOptions } from './data-row';
5
4
  import { DataContainerInterface, RangeOptions } from './data-container-interface';
5
+ import { DataRow, SharedRowOptions } from './data-row';
6
6
  declare type ArrowDataContainerInput = {
7
7
  cols: arrow.Vector[];
8
8
  fields?: ProtoDatasetField[];
9
+ arrowTable?: arrow.Table;
9
10
  };
10
11
  /**
11
12
  * A data container where all data is stored in raw Arrow table