@carto/kepler.gl 0.0.71-alpha.6 → 0.0.71-alpha.7

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.
@@ -136,7 +136,7 @@ var KEPLER_GL_NAME = 'kepler.gl'; // __PACKAGE_VERSION__ is automatically inject
136
136
  // an empty string which will allow us to retrieve the latest umd version
137
137
 
138
138
  exports.KEPLER_GL_NAME = KEPLER_GL_NAME;
139
- var KEPLER_GL_VERSION = "0.0.71-alpha.6";
139
+ var KEPLER_GL_VERSION = "0.0.71-alpha.7";
140
140
  exports.KEPLER_GL_VERSION = KEPLER_GL_VERSION;
141
141
  var KEPLER_GL_WEBSITE = 'http://kepler.gl/';
142
142
  exports.KEPLER_GL_WEBSITE = KEPLER_GL_WEBSITE;
@@ -393,7 +393,7 @@ var KeplerTable = /*#__PURE__*/function () {
393
393
  label: row.left,
394
394
  color: row.right
395
395
  };
396
- });
396
+ }).slice(0, 20);
397
397
  }
398
398
  /**
399
399
  * Get a sample of rows to calculate layer boundaries
@@ -557,4 +557,4 @@ function copyTableAndUpdate(original) {
557
557
 
558
558
  var _default = KeplerTable;
559
559
  exports["default"] = _default;
560
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy90YWJsZS11dGlscy9rZXBsZXItdGFibGUuanMiXSwibmFtZXMiOlsiRklEX0tFWSIsIktlcGxlclRhYmxlIiwiaW5mbyIsImRhdGEiLCJjb2xvciIsIm1ldGFkYXRhIiwic3VwcG9ydGVkRmlsdGVyVHlwZXMiLCJkYXRhQ29udGFpbmVyIiwicm93cyIsImZpZWxkcyIsImRhdGFzZXRJbmZvIiwiaWQiLCJsYWJlbCIsImRhdGFJZCIsIm1hcCIsImYiLCJpIiwiZmllbGRJZHgiLCJuYW1lIiwiZGlzcGxheU5hbWUiLCJ2YWx1ZUFjY2Vzc29yIiwibWF5YmVUb0RhdGUiLCJiaW5kIiwidHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInRpbWVzdGFtcCIsImRhdGUiLCJmb3JtYXQiLCJhbGxJbmRleGVzIiwiZ2V0UGxhaW5JbmRleCIsImZpbHRlcmVkSW5kZXgiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmllbGRQYWlycyIsImZpbmRQb2ludEZpZWxkUGFpcnMiLCJncHVGaWx0ZXIiLCJjb2x1bW5OYW1lIiwiZmllbGQiLCJmaW5kIiwiZmQiLCJfYXNzZXRGaWVsZCIsImZpbmRJbmRleCIsIkJvb2xlYW4iLCJyb3dJZHgiLCJnZXRDb2x1bW5GaWVsZCIsImluZGV4IiwibmV3RmllbGQiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXRDb2x1bW5GaWVsZElkeCIsImhhc093blByb3BlcnR5IiwiZmlsdGVyUHJvcHMiLCJmaWVsZERvbWFpbiIsImdldENvbHVtbkZpbHRlckRvbWFpbiIsInVwZGF0ZUNvbHVtbkZpZWxkIiwiZmlsdGVycyIsImxheWVycyIsIm9wdCIsIm9sZEZpbHRlclJlY29yZCIsImZpbHRlclJlY29yZCIsImxlbmd0aCIsImNoYW5nZWRGaWx0ZXJzIiwic2hvdWxkQ2FsRG9tYWluIiwiZHluYW1pY0RvbWFpbiIsInNob3VsZENhbEluZGV4IiwiY3B1IiwiZmlsdGVyUmVzdWx0IiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJyZWR1Y2UiLCJhY2MiLCJmaWx0ZXIiLCJmaWVsZEluZGV4IiwiY3B1T25seSIsImlnbm9yZURvbWFpbiIsImZpbHRlcmVkSWR4Q1BVIiwiZmlsdGVyUmVjb3JkQ1BVIiwiZ3B1IiwiY29waWVkIiwiY29weVRhYmxlIiwiZmlsdGVyZWQiLCJmaWx0ZXJUYWJsZSIsImRvbWFpbiIsInJlYWwiLCJpbnRlZ2VyIiwic3RyaW5nIiwic2NhbGVUeXBlIiwiU0NBTEVfVFlQRVMiLCJDb25zb2xlIiwiZXJyb3IiLCJpbmRleFZhbHVlQWNjZXNzb3IiLCJzb3J0RnVuY3Rpb24iLCJvcmRpbmFsIiwicG9pbnQiLCJxdWFudGlsZSIsImxvZyIsInF1YW50aXplIiwibGluZWFyIiwic3FydCIsImxlZnRGaWVsZCIsInJpZ2h0RmllbGQiLCJsZWZ0VmFsdWVzIiwibWFwSW5kZXgiLCJyaWdodFZhbHVlcyIsInBhaXJpbmciLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpZHgiLCJwdXNoIiwicm93IiwibGVmdCIsInJpZ2h0IiwiZmllbGROYW1lIiwiY29uZGl0aW9uIiwicmVtb3ZlU3VmZml4QW5kRGVsaW1pdGVycyIsImxheWVyTmFtZSIsInN1ZmZpeCIsInJlcGxhY2UiLCJSZWdFeHAiLCJ0cmltIiwiYWxsTmFtZXMiLCJ0b0xvd2VyQ2FzZSIsInJlc3VsdCIsImNhcnJ5IiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJzdWZmaXhQYWlyIiwiZW5kc1dpdGgiLCJvdGhlclBhdHRlcm4iLCJwYXJ0bmVyIiwicGFydG5lcklkeCIsImQiLCJkZWZhdWx0TmFtZSIsInBhaXIiLCJsYXQiLCJ2YWx1ZSIsImxuZyIsInNvcnQiLCJhIiwiYiIsInNvcnREYXRhc2V0QnlDb2x1bW4iLCJkYXRhc2V0IiwiY29sdW1uIiwibW9kZSIsInNvcnRCeSIsIlNPUlRfT1JERVIiLCJBU0NFTkRJTkciLCJVTlNPUlQiLCJzb3J0Q29sdW1uIiwic29ydE9yZGVyIiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsInNsaWNlIiwidmFsdWVBdCIsIm9yaWdpbmFsIiwiY3JlYXRlIiwiZ2V0UHJvdG90eXBlT2YiLCJjb3B5VGFibGVBbmRVcGRhdGUiLCJvcHRpb25zIiwiZW50cmllcyIsImVudHJ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBU0E7O0FBQ0E7O0FBU0E7Ozs7Ozs7Ozs7OztBQUdBO0FBQ0EsSUFBTUEsT0FBTyxHQUFHLE1BQWhCO0FBRUE7O0FBRUE7QUFDQTtBQUNBOztJQUNNQyxXO0FBQ0osNkJBQXNFO0FBQUEseUJBQXpEQyxJQUF5RDtBQUFBLFFBQXpEQSxJQUF5RCwwQkFBbEQsRUFBa0Q7QUFBQSxRQUE5Q0MsSUFBOEMsUUFBOUNBLElBQThDO0FBQUEsUUFBeENDLEtBQXdDLFFBQXhDQSxLQUF3QztBQUFBLFFBQWpDQyxRQUFpQyxRQUFqQ0EsUUFBaUM7QUFBQSxRQUF2QkMsb0JBQXVCLFFBQXZCQSxvQkFBdUI7QUFBQTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsUUFBTUMsYUFBYSxHQUFHLDZDQUFvQkosSUFBSSxDQUFDSyxJQUF6QixFQUErQjtBQUFDQyxNQUFBQSxNQUFNLEVBQUVOLElBQUksQ0FBQ007QUFBZCxLQUEvQixDQUF0Qjs7QUFFQSxRQUFNQyxXQUFXO0FBQ2ZDLE1BQUFBLEVBQUUsRUFBRSwyQkFBZSxDQUFmLENBRFc7QUFFZkMsTUFBQUEsS0FBSyxFQUFFO0FBRlEsT0FHWFYsSUFBSSxJQUFJLEVBSEcsQ0FBakI7O0FBS0EsUUFBTVcsTUFBTSxHQUFHSCxXQUFXLENBQUNDLEVBQTNCO0FBRUEsUUFBTUYsTUFBTSxHQUFHTixJQUFJLENBQUNNLE1BQUwsQ0FBWUssR0FBWixDQUFnQixVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSw2Q0FDMUJELENBRDBCO0FBRTdCRSxRQUFBQSxRQUFRLEVBQUVELENBRm1CO0FBRzdCTCxRQUFBQSxFQUFFLEVBQUVJLENBQUMsQ0FBQ0csSUFIdUI7QUFJN0JDLFFBQUFBLFdBQVcsRUFBRUosQ0FBQyxDQUFDSSxXQUFGLElBQWlCSixDQUFDLENBQUNHLElBSkg7QUFLN0JFLFFBQUFBLGFBQWEsRUFBRUMsdUJBQVlDLElBQVosQ0FDYixJQURhLEVBRWI7QUFDQVAsUUFBQUEsQ0FBQyxDQUFDUSxJQUFGLEtBQVdDLGlDQUFnQkMsU0FBM0IsSUFBd0NWLENBQUMsQ0FBQ1EsSUFBRixLQUFXQyxpQ0FBZ0JFLElBSHRELEVBSWJWLENBSmEsRUFLYkQsQ0FBQyxDQUFDWSxNQUxXLEVBTWJwQixhQU5hO0FBTGM7QUFBQSxLQUFoQixDQUFmO0FBZUEsUUFBTXFCLFVBQVUsR0FBR3JCLGFBQWEsQ0FBQ3NCLGFBQWQsRUFBbkI7QUFFQSxTQUFLbEIsRUFBTCxHQUFVRCxXQUFXLENBQUNDLEVBQXRCO0FBQ0EsU0FBS0MsS0FBTCxHQUFhRixXQUFXLENBQUNFLEtBQXpCO0FBQ0EsU0FBS1IsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsU0FBS0MsUUFBTCxtQ0FDS0EsUUFETDtBQUVFTSxNQUFBQSxFQUFFLEVBQUVELFdBQVcsQ0FBQ0MsRUFGbEI7QUFHRUMsTUFBQUEsS0FBSyxFQUFFRixXQUFXLENBQUNFO0FBSHJCO0FBTUEsU0FBS0wsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLcUIsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxTQUFLRSxhQUFMLEdBQXFCRixVQUFyQjtBQUNBLFNBQUtHLHNCQUFMLEdBQThCSCxVQUE5QjtBQUNBLFNBQUtJLFVBQUwsR0FBa0JDLG1CQUFtQixDQUFDeEIsTUFBRCxDQUFyQztBQUNBLFNBQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUt5QixTQUFMLEdBQWlCLHVDQUFrQixFQUFsQixFQUFzQnJCLE1BQXRCLEVBQThCSixNQUE5QixDQUFqQjs7QUFDQSxRQUFJSCxvQkFBSixFQUEwQjtBQUN4QixXQUFLQSxvQkFBTCxHQUE0QkEsb0JBQTVCO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBOzs7OztXQUNFLHdCQUFlNkIsVUFBZixFQUEyQjtBQUN6QixVQUFNQyxLQUFLLEdBQUcsS0FBSzNCLE1BQUwsQ0FBWTRCLElBQVosQ0FBaUIsVUFBQUMsRUFBRTtBQUFBLGVBQUlBLEVBQUUsQ0FBQ3RDLE9BQUQsQ0FBRixLQUFnQm1DLFVBQXBCO0FBQUEsT0FBbkIsQ0FBZDs7QUFDQSxXQUFLSSxXQUFMLENBQWlCSixVQUFqQixFQUE2QkMsS0FBN0I7O0FBQ0EsYUFBT0EsS0FBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7Ozs7V0FDRSwyQkFBa0JELFVBQWxCLEVBQThCO0FBQzVCLFVBQU1sQixRQUFRLEdBQUcsS0FBS1IsTUFBTCxDQUFZK0IsU0FBWixDQUFzQixVQUFBRixFQUFFO0FBQUEsZUFBSUEsRUFBRSxDQUFDdEMsT0FBRCxDQUFGLEtBQWdCbUMsVUFBcEI7QUFBQSxPQUF4QixDQUFqQjs7QUFDQSxXQUFLSSxXQUFMLENBQWlCSixVQUFqQixFQUE2Qk0sT0FBTyxDQUFDeEIsUUFBUSxHQUFHLENBQUMsQ0FBYixDQUFwQzs7QUFDQSxhQUFPQSxRQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7Ozs7V0FDRSxrQkFBU2tCLFVBQVQsRUFBcUJPLE1BQXJCLEVBQTZCO0FBQzNCLFVBQU1OLEtBQUssR0FBRyxLQUFLTyxjQUFMLENBQW9CUixVQUFwQixDQUFkO0FBQ0EsYUFBT0MsS0FBSyxHQUFHQSxLQUFLLENBQUNoQixhQUFOLENBQW9CO0FBQUN3QixRQUFBQSxLQUFLLEVBQUVGO0FBQVIsT0FBcEIsQ0FBSCxHQUEwQyxJQUF0RDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztXQUNFLDJCQUFrQnpCLFFBQWxCLEVBQTRCNEIsUUFBNUIsRUFBc0M7QUFDcEMsV0FBS3BDLE1BQUwsR0FBY3FDLE1BQU0sQ0FBQ0MsTUFBUCxxQ0FBa0IsS0FBS3RDLE1BQXZCLHdDQUFrQ1EsUUFBbEMsRUFBNkM0QixRQUE3QyxFQUFkO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTs7OztXQUNFLDhCQUFxQlYsVUFBckIsRUFBaUM7QUFDL0IsVUFBTWxCLFFBQVEsR0FBRyxLQUFLK0IsaUJBQUwsQ0FBdUJiLFVBQXZCLENBQWpCOztBQUNBLFVBQUlsQixRQUFRLEdBQUcsQ0FBZixFQUFrQjtBQUNoQixlQUFPLElBQVA7QUFDRDs7QUFDRCxVQUFNbUIsS0FBSyxHQUFHLEtBQUszQixNQUFMLENBQVlRLFFBQVosQ0FBZDs7QUFDQSxVQUFJbUIsS0FBSyxDQUFDYSxjQUFOLENBQXFCLGFBQXJCLENBQUosRUFBeUM7QUFDdkMsZUFBT2IsS0FBSyxDQUFDYyxXQUFiO0FBQ0Q7O0FBRUQsVUFBTUMsV0FBVyxHQUFHLEtBQUtDLHFCQUFMLENBQTJCaEIsS0FBM0IsQ0FBcEI7O0FBQ0EsVUFBSSxDQUFDZSxXQUFMLEVBQWtCO0FBQ2hCLGVBQU8sSUFBUDtBQUNEOztBQUVELFVBQU1ELFdBQVcsR0FBRyxpQ0FBZWQsS0FBZixFQUFzQmUsV0FBdEIsQ0FBcEI7O0FBQ0EsVUFBTU4sUUFBUSxtQ0FDVFQsS0FEUztBQUVaYyxRQUFBQSxXQUFXLEVBQVhBO0FBRlksUUFBZDs7QUFLQSxXQUFLRyxpQkFBTCxDQUF1QnBDLFFBQXZCLEVBQWlDNEIsUUFBakM7QUFFQSxhQUFPSyxXQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7V0FDRSxxQkFBWUksT0FBWixFQUFxQkMsTUFBckIsRUFBNkJDLEdBQTdCLEVBQWtDO0FBQUE7O0FBQUEsVUFDekJqRCxhQUR5QixHQUMyQyxJQUQzQyxDQUN6QkEsYUFEeUI7QUFBQSxVQUNOTSxNQURNLEdBQzJDLElBRDNDLENBQ1ZGLEVBRFU7QUFBQSxVQUNnQjhDLGVBRGhCLEdBQzJDLElBRDNDLENBQ0VDLFlBREY7QUFBQSxVQUNpQ2pELE1BRGpDLEdBQzJDLElBRDNDLENBQ2lDQSxNQURqQyxFQUdoQzs7QUFDQSxVQUFNaUQsWUFBWSxHQUFHLGtDQUFnQjdDLE1BQWhCLEVBQXdCeUMsT0FBeEIsRUFBaUNFLEdBQUcsSUFBSSxFQUF4QyxDQUFyQjtBQUVBLFdBQUtFLFlBQUwsR0FBb0JBLFlBQXBCO0FBQ0EsV0FBS3hCLFNBQUwsR0FBaUIsdUNBQWtCb0IsT0FBbEIsRUFBMkJ6QyxNQUEzQixFQUFtQ0osTUFBbkMsQ0FBakIsQ0FQZ0MsQ0FTaEM7O0FBRUEsVUFBSSxDQUFDNkMsT0FBTyxDQUFDSyxNQUFiLEVBQXFCO0FBQ25CLGFBQUs3QixhQUFMLEdBQXFCLEtBQUtGLFVBQTFCO0FBQ0EsYUFBS0csc0JBQUwsR0FBOEIsS0FBS0gsVUFBbkM7QUFDQSxlQUFPLElBQVA7QUFDRDs7QUFFRCxXQUFLZ0MsY0FBTCxHQUFzQiw4QkFBWUYsWUFBWixFQUEwQkQsZUFBMUIsQ0FBdEIsQ0FqQmdDLENBbUJoQztBQUNBO0FBQ0E7O0FBQ0EsVUFBTUksZUFBZSxHQUFHcEIsT0FBTyxDQUFDLEtBQUttQixjQUFMLENBQW9CRSxhQUFyQixDQUEvQjtBQUNBLFVBQU1DLGNBQWMsR0FBR3RCLE9BQU8sQ0FBQyxLQUFLbUIsY0FBTCxDQUFvQkksR0FBckIsQ0FBOUI7QUFFQSxVQUFJQyxZQUFZLEdBQUcsRUFBbkI7O0FBQ0EsVUFBSUosZUFBZSxJQUFJRSxjQUF2QixFQUF1QztBQUNyQyxZQUFNRyxvQkFBb0IsR0FBR0wsZUFBZSxHQUFHSCxZQUFZLENBQUNJLGFBQWhCLEdBQWdDLElBQTVFO0FBQ0EsWUFBTUssVUFBVSxHQUFHSixjQUFjLEdBQUdMLFlBQVksQ0FBQ00sR0FBaEIsR0FBc0IsSUFBdkQ7QUFFQSxZQUFNSSxXQUFXLEdBQUdkLE9BQU8sQ0FBQ2UsTUFBUixDQUFlLFVBQUNDLEdBQUQsRUFBTUMsTUFBTixFQUFpQjtBQUNsRCxjQUFNQyxVQUFVLEdBQUcsbURBQThCLEtBQUksQ0FBQzdELEVBQW5DLEVBQXVDNEQsTUFBdkMsQ0FBbkI7QUFDQSxjQUFNbkMsS0FBSyxHQUFHb0MsVUFBVSxLQUFLLENBQUMsQ0FBaEIsR0FBb0IvRCxNQUFNLENBQUMrRCxVQUFELENBQTFCLEdBQXlDLElBQXZEO0FBRUEsaURBQ0tGLEdBREwsNENBRUdDLE1BQU0sQ0FBQzVELEVBRlYsRUFFZSxvQ0FBa0J5QixLQUFsQixFQUF5QixLQUFJLENBQUN6QixFQUE5QixFQUFrQzRELE1BQWxDLEVBQTBDaEIsTUFBMUMsRUFBa0RoRCxhQUFsRCxDQUZmO0FBSUQsU0FSbUIsRUFRakIsRUFSaUIsQ0FBcEI7QUFVQTBELFFBQUFBLFlBQVksR0FBRywwQ0FDYjtBQUFDQyxVQUFBQSxvQkFBb0IsRUFBcEJBLG9CQUFEO0FBQXVCQyxVQUFBQSxVQUFVLEVBQVZBLFVBQXZCO0FBQW1DQyxVQUFBQSxXQUFXLEVBQVhBO0FBQW5DLFNBRGEsRUFFYjdELGFBRmEsQ0FBZjtBQUlEOztBQUVELFdBQUt1QixhQUFMLEdBQXFCbUMsWUFBWSxDQUFDbkMsYUFBYixJQUE4QixLQUFLQSxhQUF4RDtBQUNBLFdBQUtDLHNCQUFMLEdBQ0VrQyxZQUFZLENBQUNsQyxzQkFBYixJQUF1QyxLQUFLQSxzQkFEOUM7QUFHQSxhQUFPLElBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7V0FDRSx3QkFBZXVCLE9BQWYsRUFBd0JDLE1BQXhCLEVBQWdDO0FBQzlCLFVBQU1DLEdBQUcsR0FBRztBQUNWaUIsUUFBQUEsT0FBTyxFQUFFLElBREM7QUFFVkMsUUFBQUEsWUFBWSxFQUFFO0FBRkosT0FBWixDQUQ4QixDQU05Qjs7QUFDQSxVQUFJLENBQUNwQixPQUFPLENBQUNLLE1BQWIsRUFBcUI7QUFDbkIsYUFBS2dCLGNBQUwsR0FBc0IsS0FBSy9DLFVBQTNCO0FBQ0EsYUFBS2dELGVBQUwsR0FBdUIsa0NBQWdCLEtBQUtqRSxFQUFyQixFQUF5QjJDLE9BQXpCLEVBQWtDRSxHQUFsQyxDQUF2QjtBQUNBLGVBQU8sSUFBUDtBQUNELE9BWDZCLENBYTlCOzs7QUFDQSxVQUFJLENBQUNGLE9BQU8sQ0FBQ2pCLElBQVIsQ0FBYSxVQUFBdEIsQ0FBQztBQUFBLGVBQUlBLENBQUMsQ0FBQzhELEdBQU47QUFBQSxPQUFkLENBQUwsRUFBK0I7QUFDN0IsYUFBS0YsY0FBTCxHQUFzQixLQUFLN0MsYUFBM0I7QUFDQSxhQUFLOEMsZUFBTCxHQUF1QixrQ0FBZ0IsS0FBS2pFLEVBQXJCLEVBQXlCMkMsT0FBekIsRUFBa0NFLEdBQWxDLENBQXZCO0FBQ0EsZUFBTyxJQUFQO0FBQ0QsT0FsQjZCLENBb0I5Qjs7O0FBQ0EsVUFBTXNCLE1BQU0sR0FBR0MsU0FBUyxDQUFDLElBQUQsQ0FBeEI7QUFFQUQsTUFBQUEsTUFBTSxDQUFDcEIsWUFBUCxHQUFzQixLQUFLa0IsZUFBM0I7QUFDQUUsTUFBQUEsTUFBTSxDQUFDaEQsYUFBUCxHQUF1QixLQUFLNkMsY0FBTCxJQUF1QixFQUE5QztBQUVBLFVBQU1LLFFBQVEsR0FBR0YsTUFBTSxDQUFDRyxXQUFQLENBQW1CM0IsT0FBbkIsRUFBNEJDLE1BQTVCLEVBQW9DQyxHQUFwQyxDQUFqQjtBQUVBLFdBQUttQixjQUFMLEdBQXNCSyxRQUFRLENBQUNsRCxhQUEvQjtBQUNBLFdBQUs4QyxlQUFMLEdBQXVCSSxRQUFRLENBQUN0QixZQUFoQztBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7Ozs7V0FDRSwrQkFBc0J0QixLQUF0QixFQUE2QjtBQUFBLFVBQ3BCN0IsYUFEb0IsR0FDSCxJQURHLENBQ3BCQSxhQURvQjtBQUFBLFVBRXBCYSxhQUZvQixHQUVIZ0IsS0FGRyxDQUVwQmhCLGFBRm9CO0FBSTNCLFVBQUk4RCxNQUFKOztBQUVBLGNBQVE5QyxLQUFLLENBQUNiLElBQWQ7QUFDRSxhQUFLQyxpQ0FBZ0IyRCxJQUFyQjtBQUNBLGFBQUszRCxpQ0FBZ0I0RCxPQUFyQjtBQUNFO0FBQ0EsaUJBQU8sd0NBQXNCN0UsYUFBdEIsRUFBcUNhLGFBQXJDLENBQVA7O0FBRUYsYUFBS0ksMkNBQUw7QUFDRSxpQkFBTztBQUFDMEQsWUFBQUEsTUFBTSxFQUFFLENBQUMsSUFBRCxFQUFPLEtBQVA7QUFBVCxXQUFQOztBQUVGLGFBQUsxRCxpQ0FBZ0I2RCxNQUFyQjtBQUNBLGFBQUs3RCxpQ0FBZ0JFLElBQXJCO0FBQ0V3RCxVQUFBQSxNQUFNLEdBQUcsc0NBQWlCM0UsYUFBakIsRUFBZ0NhLGFBQWhDLENBQVQ7QUFDQSxpQkFBTztBQUFDOEQsWUFBQUEsTUFBTSxFQUFOQTtBQUFELFdBQVA7O0FBRUYsYUFBSzFELGlDQUFnQkMsU0FBckI7QUFDRSxpQkFBTywwQ0FBd0JsQixhQUF4QixFQUF1Q2EsYUFBdkMsQ0FBUDs7QUFFRjtBQUNFLGlCQUFPO0FBQUM4RCxZQUFBQSxNQUFNLEVBQUUsc0NBQWlCM0UsYUFBakIsRUFBZ0NhLGFBQWhDO0FBQVQsV0FBUDtBQWxCSjtBQW9CRDtBQUVEO0FBQ0Y7QUFDQTs7OztXQUNFLDhCQUFxQmdCLEtBQXJCLEVBQTRCa0QsU0FBNUIsRUFBdUM7QUFBQSxVQUM5Qi9FLGFBRDhCLEdBQ1csSUFEWCxDQUM5QkEsYUFEOEI7QUFBQSxVQUNmd0Isc0JBRGUsR0FDVyxJQURYLENBQ2ZBLHNCQURlOztBQUdyQyxVQUFJLENBQUN3RCw2QkFBWUQsU0FBWixDQUFMLEVBQTZCO0FBQzNCRSx5QkFBUUMsS0FBUixzQkFBNEJILFNBQTVCOztBQUNBLGVBQU8sSUFBUDtBQUNEOztBQU5vQyxVQVE5QmxFLGFBUjhCLEdBUWJnQixLQVJhLENBUTlCaEIsYUFSOEI7O0FBU3JDLFVBQU1zRSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQXFCLENBQUExRSxDQUFDO0FBQUEsZUFBSUksYUFBYSxDQUFDO0FBQUN3QixVQUFBQSxLQUFLLEVBQUU1QjtBQUFSLFNBQUQsQ0FBakI7QUFBQSxPQUE1Qjs7QUFDQSxVQUFNMkUsWUFBWSxHQUFHLG1DQUFtQnZELEtBQUssQ0FBQ2IsSUFBekIsQ0FBckI7O0FBRUEsY0FBUStELFNBQVI7QUFDRSxhQUFLQyw2QkFBWUssT0FBakI7QUFDQSxhQUFLTCw2QkFBWU0sS0FBakI7QUFDRTtBQUNBO0FBQ0EsaUJBQU8sc0NBQWlCdEYsYUFBakIsRUFBZ0NhLGFBQWhDLENBQVA7O0FBRUYsYUFBS21FLDZCQUFZTyxRQUFqQjtBQUNFLGlCQUFPLHVDQUFrQi9ELHNCQUFsQixFQUEwQzJELGtCQUExQyxFQUE4REMsWUFBOUQsQ0FBUDs7QUFFRixhQUFLSiw2QkFBWVEsR0FBakI7QUFDRSxpQkFBTyxrQ0FBYWhFLHNCQUFiLEVBQXFDMkQsa0JBQXJDLENBQVA7O0FBRUYsYUFBS0gsNkJBQVlTLFFBQWpCO0FBQ0EsYUFBS1QsNkJBQVlVLE1BQWpCO0FBQ0EsYUFBS1YsNkJBQVlXLElBQWpCO0FBQ0E7QUFDRSxpQkFBTyxxQ0FBZ0JuRSxzQkFBaEIsRUFBd0MyRCxrQkFBeEMsQ0FBUDtBQWpCSjtBQW1CRDs7O1dBRUQseUJBQWdCUyxTQUFoQixFQUEyQkMsVUFBM0IsRUFBdUM7QUFDckMsVUFBTUMsVUFBVSxHQUFHLEtBQUs5RixhQUFMLENBQW1CK0YsUUFBbkIsQ0FBNEJILFNBQVMsQ0FBQy9FLGFBQXRDLENBQW5CO0FBQ0EsVUFBTW1GLFdBQVcsR0FBRyxLQUFLaEcsYUFBTCxDQUFtQitGLFFBQW5CLENBQTRCRixVQUFVLENBQUNoRixhQUF2QyxDQUFwQjtBQUVBLFVBQU1vRixPQUFPLEdBQUdILFVBQVUsQ0FBQ2hDLE1BQVgsQ0FBa0IsVUFBQ29DLFFBQUQsRUFBV0MsT0FBWCxFQUFvQkMsR0FBcEIsRUFBNEI7QUFDNURGLFFBQUFBLFFBQVEsQ0FBQ0csSUFBVCxDQUFjLENBQUNGLE9BQUQsRUFBVUgsV0FBVyxDQUFDSSxHQUFELENBQXJCLENBQWQ7QUFDQSxlQUFPRixRQUFQO0FBQ0QsT0FIZSxFQUdiLEVBSGEsQ0FBaEI7QUFJQSxhQUFPLDRDQUE0QkQsT0FBNUIsRUFBcUMxRixHQUFyQyxDQUF5QyxVQUFBK0YsR0FBRztBQUFBLGVBQUs7QUFBQ2pHLFVBQUFBLEtBQUssRUFBRWlHLEdBQUcsQ0FBQ0MsSUFBWjtBQUFrQjFHLFVBQUFBLEtBQUssRUFBRXlHLEdBQUcsQ0FBQ0U7QUFBN0IsU0FBTDtBQUFBLE9BQTVDLENBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNFOztBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0U7QUFFQTs7QUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7O1dBQ0UscUJBQVlDLFNBQVosRUFBdUJDLFNBQXZCLEVBQWtDO0FBQ2hDLFVBQUksQ0FBQ0EsU0FBTCxFQUFnQjtBQUNkekIseUJBQVFDLEtBQVIsV0FBaUJ1QixTQUFqQixzQ0FBc0QsS0FBS3JHLEVBQTNEO0FBQ0Q7QUFDRjs7O0tBR0g7OztBQUVPLFNBQVN1Ryx5QkFBVCxDQUFtQ0MsU0FBbkMsRUFBOENDLE1BQTlDLEVBQXNEO0FBQzNELFNBQU9ELFNBQVMsQ0FDYkUsT0FESSxDQUNJLElBQUlDLE1BQUosQ0FBV0YsTUFBWCxFQUFtQixJQUFuQixDQURKLEVBQzhCLEVBRDlCLEVBRUpDLE9BRkksQ0FFSSxTQUZKLEVBRWUsR0FGZixFQUdKRSxJQUhJLEVBQVA7QUFJRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTdEYsbUJBQVQsQ0FBNkJ4QixNQUE3QixFQUFxQztBQUMxQyxNQUFNK0csUUFBUSxHQUFHL0csTUFBTSxDQUFDSyxHQUFQLENBQVcsVUFBQUMsQ0FBQztBQUFBLFdBQUlBLENBQUMsQ0FBQ0csSUFBRixDQUFPdUcsV0FBUCxFQUFKO0FBQUEsR0FBWixDQUFqQixDQUQwQyxDQUcxQzs7QUFDQSxNQUFNbkQsR0FBRyxHQUFHLEVBQVo7QUFDQSxNQUFNb0QsTUFBTSxHQUFHRixRQUFRLENBQUNuRCxNQUFULENBQWdCLFVBQUNzRCxLQUFELEVBQVFYLFNBQVIsRUFBbUJMLEdBQW5CLEVBQTJCO0FBQ3hEO0FBRHdELCtDQUUvQmlCLGtDQUYrQjtBQUFBOztBQUFBO0FBRXhELDBEQUE0QztBQUFBLFlBQWpDQyxVQUFpQzs7QUFDMUM7QUFDQSxZQUFJYixTQUFTLENBQUNjLFFBQVYsQ0FBbUJELFVBQVUsQ0FBQyxDQUFELENBQTdCLENBQUosRUFBdUM7QUFBQTtBQUNyQztBQUNBLGdCQUFNRSxZQUFZLEdBQUcsSUFBSVQsTUFBSixXQUFjTyxVQUFVLENBQUMsQ0FBRCxDQUF4QixPQUFyQjtBQUNBLGdCQUFNRyxPQUFPLEdBQUdoQixTQUFTLENBQUNLLE9BQVYsQ0FBa0JVLFlBQWxCLEVBQWdDRixVQUFVLENBQUMsQ0FBRCxDQUExQyxDQUFoQjtBQUVBLGdCQUFNSSxVQUFVLEdBQUdULFFBQVEsQ0FBQ2hGLFNBQVQsQ0FBbUIsVUFBQTBGLENBQUM7QUFBQSxxQkFBSUEsQ0FBQyxLQUFLRixPQUFWO0FBQUEsYUFBcEIsQ0FBbkI7O0FBQ0EsZ0JBQUlDLFVBQVUsR0FBRyxDQUFDLENBQWxCLEVBQXFCO0FBQ25CLGtCQUFNRSxXQUFXLEdBQUdqQix5QkFBeUIsQ0FBQ0YsU0FBRCxFQUFZYSxVQUFVLENBQUMsQ0FBRCxDQUF0QixDQUE3QztBQUVBRixjQUFBQSxLQUFLLENBQUNmLElBQU4sQ0FBVztBQUNUdUIsZ0JBQUFBLFdBQVcsRUFBWEEsV0FEUztBQUVUQyxnQkFBQUEsSUFBSSxFQUFFO0FBQ0pDLGtCQUFBQSxHQUFHLEVBQUU7QUFDSHBILG9CQUFBQSxRQUFRLEVBQUUwRixHQURQO0FBRUgyQixvQkFBQUEsS0FBSyxFQUFFN0gsTUFBTSxDQUFDa0csR0FBRCxDQUFOLENBQVl6RjtBQUZoQixtQkFERDtBQUtKcUgsa0JBQUFBLEdBQUcsRUFBRTtBQUNIdEgsb0JBQUFBLFFBQVEsRUFBRWdILFVBRFA7QUFFSEssb0JBQUFBLEtBQUssRUFBRTdILE1BQU0sQ0FBQ3dILFVBQUQsQ0FBTixDQUFtQi9HO0FBRnZCO0FBTEQsaUJBRkc7QUFZVGtHLGdCQUFBQSxNQUFNLEVBQUVTO0FBWkMsZUFBWDtBQWNBO0FBQUEsbUJBQU9GO0FBQVA7QUFDRDtBQXhCb0M7O0FBQUE7QUF5QnRDO0FBQ0Y7QUE5QnVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBK0J4RCxXQUFPQSxLQUFQO0FBQ0QsR0FoQ2MsRUFnQ1pyRCxHQWhDWSxDQUFmLENBTDBDLENBdUMxQzs7QUFDQW9ELEVBQUFBLE1BQU0sQ0FBQ2MsSUFBUCxDQUFZLFVBQUNDLENBQUQsRUFBSUMsQ0FBSixFQUFVO0FBQ3BCLFFBQUlELENBQUMsQ0FBQ04sV0FBRixLQUFrQixFQUFsQixJQUF3Qk0sQ0FBQyxDQUFDckIsTUFBRixDQUFTLENBQVQsTUFBZ0IsVUFBNUMsRUFBd0QsT0FBTyxDQUFDLENBQVI7QUFDeEQsUUFBSXNCLENBQUMsQ0FBQ1AsV0FBRixLQUFrQixFQUFsQixJQUF3Qk8sQ0FBQyxDQUFDdEIsTUFBRixDQUFTLENBQVQsTUFBZ0IsVUFBNUMsRUFBd0QsT0FBTyxDQUFQO0FBQ3hELFdBQU8sQ0FBUDtBQUNELEdBSkQ7QUFNQSxTQUFPTSxNQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU2lCLG1CQUFULENBQTZCQyxPQUE3QixFQUFzQ0MsTUFBdEMsRUFBOENDLElBQTlDLEVBQW9EO0FBQUEsTUFDbERsSCxVQURrRCxHQUNiZ0gsT0FEYSxDQUNsRGhILFVBRGtEO0FBQUEsTUFDdENuQixNQURzQyxHQUNibUksT0FEYSxDQUN0Q25JLE1BRHNDO0FBQUEsTUFDOUJGLGFBRDhCLEdBQ2JxSSxPQURhLENBQzlCckksYUFEOEI7QUFFekQsTUFBTWlFLFVBQVUsR0FBRy9ELE1BQU0sQ0FBQytCLFNBQVAsQ0FBaUIsVUFBQXpCLENBQUM7QUFBQSxXQUFJQSxDQUFDLENBQUNHLElBQUYsS0FBVzJILE1BQWY7QUFBQSxHQUFsQixDQUFuQjs7QUFDQSxNQUFJckUsVUFBVSxHQUFHLENBQWpCLEVBQW9CO0FBQ2xCLFdBQU9vRSxPQUFQO0FBQ0Q7O0FBRUQsTUFBTUcsTUFBTSxHQUFHQyw0QkFBV0YsSUFBWCxLQUFvQkUsNEJBQVdDLFNBQTlDOztBQUVBLE1BQUlGLE1BQU0sS0FBS0MsNEJBQVdFLE1BQTFCLEVBQWtDO0FBQ2hDLDJDQUNLTixPQURMO0FBRUVPLE1BQUFBLFVBQVUsRUFBRSxFQUZkO0FBR0VDLE1BQUFBLFNBQVMsRUFBRTtBQUhiO0FBS0Q7O0FBRUQsTUFBTXpELFlBQVksR0FBR29ELE1BQU0sS0FBS0MsNEJBQVdDLFNBQXRCLEdBQWtDSSxrQkFBbEMsR0FBOENDLG1CQUFuRTtBQUNBLE1BQU1GLFNBQVMsR0FBR3hILFVBQVUsQ0FDekIySCxLQURlLEdBRWZmLElBRmUsQ0FFVixVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxXQUNKL0MsWUFBWSxDQUFDcEYsYUFBYSxDQUFDaUosT0FBZCxDQUFzQmYsQ0FBdEIsRUFBeUJqRSxVQUF6QixDQUFELEVBQXVDakUsYUFBYSxDQUFDaUosT0FBZCxDQUFzQmQsQ0FBdEIsRUFBeUJsRSxVQUF6QixDQUF2QyxDQURSO0FBQUEsR0FGVSxDQUFsQjtBQU1BLHlDQUNLb0UsT0FETDtBQUVFTyxJQUFBQSxVQUFVLHVDQUNQTixNQURPLEVBQ0VFLE1BREYsQ0FGWjtBQUtFSyxJQUFBQSxTQUFTLEVBQVRBO0FBTEY7QUFPRDs7QUFFTSxTQUFTckUsU0FBVCxDQUFtQjBFLFFBQW5CLEVBQTZCO0FBQ2xDLFNBQU8zRyxNQUFNLENBQUNDLE1BQVAsQ0FBY0QsTUFBTSxDQUFDNEcsTUFBUCxDQUFjNUcsTUFBTSxDQUFDNkcsY0FBUCxDQUFzQkYsUUFBdEIsQ0FBZCxDQUFkLEVBQThEQSxRQUE5RCxDQUFQO0FBQ0Q7O0FBRU0sU0FBU0csa0JBQVQsQ0FBNEJILFFBQTVCLEVBQW9EO0FBQUEsTUFBZEksT0FBYyx1RUFBSixFQUFJO0FBQ3pELFNBQU8vRyxNQUFNLENBQUNnSCxPQUFQLENBQWVELE9BQWYsRUFBd0J4RixNQUF4QixDQUErQixVQUFDQyxHQUFELEVBQU15RixLQUFOLEVBQWdCO0FBQ3BEekYsSUFBQUEsR0FBRyxDQUFDeUYsS0FBSyxDQUFDLENBQUQsQ0FBTixDQUFILEdBQWdCQSxLQUFLLENBQUMsQ0FBRCxDQUFyQjtBQUNBLFdBQU96RixHQUFQO0FBQ0QsR0FITSxFQUdKUyxTQUFTLENBQUMwRSxRQUFELENBSEwsQ0FBUDtBQUlEOztlQUVjeEosVyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y29uc29sZSBhcyBDb25zb2xlfSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge1RSSVBfUE9JTlRfRklFTERTLCBTT1JUX09SREVSfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge2FzY2VuZGluZywgZGVzY2VuZGluZ30gZnJvbSAnZDMtYXJyYXknO1xuXG4vLyBpbXBvcnQge3ZhbGlkYXRlSW5wdXREYXRhfSBmcm9tICdwcm9jZXNzb3JzL2RhdGEtcHJvY2Vzc29yJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ3V0aWxzL3V0aWxzJztcbmltcG9ydCB7Z2V0R3B1RmlsdGVyUHJvcHMsIGdldERhdGFzZXRGaWVsZEluZGV4Rm9yRmlsdGVyfSBmcm9tICd1dGlscy9ncHUtZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7XG4gIGdldEZpbHRlclByb3BzLFxuICBnZXRGaWx0ZXJSZWNvcmQsXG4gIGRpZmZGaWx0ZXJzLFxuICBnZXRGaWx0ZXJGdW5jdGlvbixcbiAgZmlsdGVyRGF0YUJ5RmlsdGVyVHlwZXMsXG4gIGdldE51bWVyaWNGaWVsZERvbWFpbixcbiAgZ2V0VGltZXN0YW1wRmllbGREb21haW5cbn0gZnJvbSAndXRpbHMvZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7bWF5YmVUb0RhdGUsIGdldFNvcnRpbmdGdW5jdGlvbn0gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5pbXBvcnQge1xuICBnZXRRdWFudGlsZURvbWFpbixcbiAgZ2V0T3JkaW5hbERvbWFpbixcbiAgZ2V0TG9nRG9tYWluLFxuICBnZXRMaW5lYXJEb21haW5cbn0gZnJvbSAndXRpbHMvZGF0YS1zY2FsZS11dGlscyc7XG5cbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBTQ0FMRV9UWVBFU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5pbXBvcnQge2NyZWF0ZURhdGFDb250YWluZXJ9IGZyb20gJy4vZGF0YS1jb250YWluZXItdXRpbHMnO1xuaW1wb3J0IHt1bmlxdWVTb3J0ZWRQYWlyQnlGcmVxdWVuY3l9IGZyb20gJ3V0aWxzL2RhdGEtdXRpbHMnO1xuXG4vLyBVbmlxdWUgaWRlbnRpZmllciBvZiBlYWNoIGZpZWxkXG5jb25zdCBGSURfS0VZID0gJ25hbWUnO1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi9rZXBsZXItdGFibGUnKS5LZXBsZXJUYWJsZX0gS2VwbGVyVGFibGVDbGFzc30gKi9cblxuLyoqXG4gKiBAdHlwZSB7S2VwbGVyVGFibGVDbGFzc31cbiAqL1xuY2xhc3MgS2VwbGVyVGFibGUge1xuICBjb25zdHJ1Y3Rvcih7aW5mbyA9IHt9LCBkYXRhLCBjb2xvciwgbWV0YWRhdGEsIHN1cHBvcnRlZEZpbHRlclR5cGVzfSkge1xuICAgIC8vIFRPRE8gLSB3aGF0IHRvIGRvIGlmIHZhbGlkYXRpb24gZmFpbHM/IENhbiBrZXBsZXIgaGFuZGxlIGV4Y2VwdGlvbnM/XG4gICAgLy8gY29uc3QgdmFsaWRhdGVkRGF0YSA9IHZhbGlkYXRlSW5wdXREYXRhKGRhdGEpO1xuICAgIC8vIGlmICghdmFsaWRhdGVkRGF0YSkge1xuICAgIC8vICAgcmV0dXJuIHRoaXM7XG4gICAgLy8gfVxuXG4gICAgY29uc3QgZGF0YUNvbnRhaW5lciA9IGNyZWF0ZURhdGFDb250YWluZXIoZGF0YS5yb3dzLCB7ZmllbGRzOiBkYXRhLmZpZWxkc30pO1xuXG4gICAgY29uc3QgZGF0YXNldEluZm8gPSB7XG4gICAgICBpZDogZ2VuZXJhdGVIYXNoSWQoNCksXG4gICAgICBsYWJlbDogJ25ldyBkYXRhc2V0JyxcbiAgICAgIC4uLihpbmZvIHx8IHt9KVxuICAgIH07XG4gICAgY29uc3QgZGF0YUlkID0gZGF0YXNldEluZm8uaWQ7XG5cbiAgICBjb25zdCBmaWVsZHMgPSBkYXRhLmZpZWxkcy5tYXAoKGYsIGkpID0+ICh7XG4gICAgICAuLi5mLFxuICAgICAgZmllbGRJZHg6IGksXG4gICAgICBpZDogZi5uYW1lLFxuICAgICAgZGlzcGxheU5hbWU6IGYuZGlzcGxheU5hbWUgfHwgZi5uYW1lLFxuICAgICAgdmFsdWVBY2Nlc3NvcjogbWF5YmVUb0RhdGUuYmluZChcbiAgICAgICAgbnVsbCxcbiAgICAgICAgLy8gaXMgdGltZVxuICAgICAgICBmLnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAgfHwgZi50eXBlID09PSBBTExfRklFTERfVFlQRVMuZGF0ZSxcbiAgICAgICAgaSxcbiAgICAgICAgZi5mb3JtYXQsXG4gICAgICAgIGRhdGFDb250YWluZXJcbiAgICAgIClcbiAgICB9KSk7XG5cbiAgICBjb25zdCBhbGxJbmRleGVzID0gZGF0YUNvbnRhaW5lci5nZXRQbGFpbkluZGV4KCk7XG5cbiAgICB0aGlzLmlkID0gZGF0YXNldEluZm8uaWQ7XG4gICAgdGhpcy5sYWJlbCA9IGRhdGFzZXRJbmZvLmxhYmVsO1xuICAgIHRoaXMuY29sb3IgPSBjb2xvcjtcbiAgICB0aGlzLm1ldGFkYXRhID0ge1xuICAgICAgLi4ubWV0YWRhdGEsXG4gICAgICBpZDogZGF0YXNldEluZm8uaWQsXG4gICAgICBsYWJlbDogZGF0YXNldEluZm8ubGFiZWxcbiAgICB9O1xuXG4gICAgdGhpcy5kYXRhQ29udGFpbmVyID0gZGF0YUNvbnRhaW5lcjtcbiAgICB0aGlzLmFsbEluZGV4ZXMgPSBhbGxJbmRleGVzO1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleCA9IGFsbEluZGV4ZXM7XG4gICAgdGhpcy5maWx0ZXJlZEluZGV4Rm9yRG9tYWluID0gYWxsSW5kZXhlcztcbiAgICB0aGlzLmZpZWxkUGFpcnMgPSBmaW5kUG9pbnRGaWVsZFBhaXJzKGZpZWxkcyk7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gICAgdGhpcy5ncHVGaWx0ZXIgPSBnZXRHcHVGaWx0ZXJQcm9wcyhbXSwgZGF0YUlkLCBmaWVsZHMpO1xuICAgIGlmIChzdXBwb3J0ZWRGaWx0ZXJUeXBlcykge1xuICAgICAgdGhpcy5zdXBwb3J0ZWRGaWx0ZXJUeXBlcyA9IHN1cHBvcnRlZEZpbHRlclR5cGVzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZmllbGRcbiAgICogQHBhcmFtIGNvbHVtbk5hbWVcbiAgICovXG4gIGdldENvbHVtbkZpZWxkKGNvbHVtbk5hbWUpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoZmQgPT4gZmRbRklEX0tFWV0gPT09IGNvbHVtbk5hbWUpO1xuICAgIHRoaXMuX2Fzc2V0RmllbGQoY29sdW1uTmFtZSwgZmllbGQpO1xuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZmllbGRJZHhcbiAgICogQHBhcmFtIGNvbHVtbk5hbWVcbiAgICovXG4gIGdldENvbHVtbkZpZWxkSWR4KGNvbHVtbk5hbWUpIHtcbiAgICBjb25zdCBmaWVsZElkeCA9IHRoaXMuZmllbGRzLmZpbmRJbmRleChmZCA9PiBmZFtGSURfS0VZXSA9PT0gY29sdW1uTmFtZSk7XG4gICAgdGhpcy5fYXNzZXRGaWVsZChjb2x1bW5OYW1lLCBCb29sZWFuKGZpZWxkSWR4ID4gLTEpKTtcbiAgICByZXR1cm4gZmllbGRJZHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiBhIGNlbGxcbiAgICovXG4gIGdldFZhbHVlKGNvbHVtbk5hbWUsIHJvd0lkeCkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRDb2x1bW5GaWVsZChjb2x1bW5OYW1lKTtcbiAgICByZXR1cm4gZmllbGQgPyBmaWVsZC52YWx1ZUFjY2Vzc29yKHtpbmRleDogcm93SWR4fSkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgZXhpc3RpbmcgZmllbGQgd2l0aCBhIG5ldyBvYmplY3RcbiAgICogQHBhcmFtIGZpZWxkSWR4XG4gICAqIEBwYXJhbSBuZXdGaWVsZFxuICAgKi9cbiAgdXBkYXRlQ29sdW1uRmllbGQoZmllbGRJZHgsIG5ld0ZpZWxkKSB7XG4gICAgdGhpcy5maWVsZHMgPSBPYmplY3QuYXNzaWduKFsuLi50aGlzLmZpZWxkc10sIHtbZmllbGRJZHhdOiBuZXdGaWVsZH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgZmlsdGVyUHJvcHMgdG8gZmllbGQgYW5kIHJldHJpZXZlIGl0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2x1bW5OYW1lXG4gICAqL1xuICBnZXRDb2x1bW5GaWx0ZXJQcm9wcyhjb2x1bW5OYW1lKSB7XG4gICAgY29uc3QgZmllbGRJZHggPSB0aGlzLmdldENvbHVtbkZpZWxkSWR4KGNvbHVtbk5hbWUpO1xuICAgIGlmIChmaWVsZElkeCA8IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzW2ZpZWxkSWR4XTtcbiAgICBpZiAoZmllbGQuaGFzT3duUHJvcGVydHkoJ2ZpbHRlclByb3BzJykpIHtcbiAgICAgIHJldHVybiBmaWVsZC5maWx0ZXJQcm9wcztcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZERvbWFpbiA9IHRoaXMuZ2V0Q29sdW1uRmlsdGVyRG9tYWluKGZpZWxkKTtcbiAgICBpZiAoIWZpZWxkRG9tYWluKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJQcm9wcyA9IGdldEZpbHRlclByb3BzKGZpZWxkLCBmaWVsZERvbWFpbik7XG4gICAgY29uc3QgbmV3RmllbGQgPSB7XG4gICAgICAuLi5maWVsZCxcbiAgICAgIGZpbHRlclByb3BzXG4gICAgfTtcblxuICAgIHRoaXMudXBkYXRlQ29sdW1uRmllbGQoZmllbGRJZHgsIG5ld0ZpZWxkKTtcblxuICAgIHJldHVybiBmaWx0ZXJQcm9wcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBmaWx0ZXJzIHRvIGRhdGFzZXQsIHJldHVybiB0aGUgZmlsdGVyZWQgZGF0YXNldCB3aXRoIHVwZGF0ZWQgYGdwdUZpbHRlcmAsIGBmaWx0ZXJSZWNvcmRgLCBgZmlsdGVyZWRJbmRleGAsIGBmaWx0ZXJlZEluZGV4Rm9yRG9tYWluYFxuICAgKiBAcGFyYW0gZmlsdGVyc1xuICAgKiBAcGFyYW0gbGF5ZXJzXG4gICAqIEBwYXJhbSBvcHRcbiAgICovXG4gIGZpbHRlclRhYmxlKGZpbHRlcnMsIGxheWVycywgb3B0KSB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXIsIGlkOiBkYXRhSWQsIGZpbHRlclJlY29yZDogb2xkRmlsdGVyUmVjb3JkLCBmaWVsZHN9ID0gdGhpcztcblxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIGZpbHRlcnNcbiAgICBjb25zdCBmaWx0ZXJSZWNvcmQgPSBnZXRGaWx0ZXJSZWNvcmQoZGF0YUlkLCBmaWx0ZXJzLCBvcHQgfHwge30pO1xuXG4gICAgdGhpcy5maWx0ZXJSZWNvcmQgPSBmaWx0ZXJSZWNvcmQ7XG4gICAgdGhpcy5ncHVGaWx0ZXIgPSBnZXRHcHVGaWx0ZXJQcm9wcyhmaWx0ZXJzLCBkYXRhSWQsIGZpZWxkcyk7XG5cbiAgICAvLyBjb25zdCBuZXdEYXRhc2V0ID0gc2V0KFsnZmlsdGVyUmVjb3JkJ10sIGZpbHRlclJlY29yZCwgZGF0YXNldCk7XG5cbiAgICBpZiAoIWZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSB0aGlzLmFsbEluZGV4ZXM7XG4gICAgICB0aGlzLmZpbHRlcmVkSW5kZXhGb3JEb21haW4gPSB0aGlzLmFsbEluZGV4ZXM7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZWRGaWx0ZXJzID0gZGlmZkZpbHRlcnMoZmlsdGVyUmVjb3JkLCBvbGRGaWx0ZXJSZWNvcmQpO1xuXG4gICAgLy8gZ2VuZXJhdGUgMiBzZXRzIG9mIGZpbHRlciByZXN1bHRcbiAgICAvLyBmaWx0ZXJlZEluZGV4IHVzZWQgdG8gY2FsY3VsYXRlIGxheWVyIGRhdGFcbiAgICAvLyBmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIHVzZWQgdG8gY2FsY3VsYXRlIGxheWVyIERvbWFpblxuICAgIGNvbnN0IHNob3VsZENhbERvbWFpbiA9IEJvb2xlYW4odGhpcy5jaGFuZ2VkRmlsdGVycy5keW5hbWljRG9tYWluKTtcbiAgICBjb25zdCBzaG91bGRDYWxJbmRleCA9IEJvb2xlYW4odGhpcy5jaGFuZ2VkRmlsdGVycy5jcHUpO1xuXG4gICAgbGV0IGZpbHRlclJlc3VsdCA9IHt9O1xuICAgIGlmIChzaG91bGRDYWxEb21haW4gfHwgc2hvdWxkQ2FsSW5kZXgpIHtcbiAgICAgIGNvbnN0IGR5bmFtaWNEb21haW5GaWx0ZXJzID0gc2hvdWxkQ2FsRG9tYWluID8gZmlsdGVyUmVjb3JkLmR5bmFtaWNEb21haW4gOiBudWxsO1xuICAgICAgY29uc3QgY3B1RmlsdGVycyA9IHNob3VsZENhbEluZGV4ID8gZmlsdGVyUmVjb3JkLmNwdSA6IG51bGw7XG5cbiAgICAgIGNvbnN0IGZpbHRlckZ1bmNzID0gZmlsdGVycy5yZWR1Y2UoKGFjYywgZmlsdGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBnZXREYXRhc2V0RmllbGRJbmRleEZvckZpbHRlcih0aGlzLmlkLCBmaWx0ZXIpO1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkSW5kZXggIT09IC0xID8gZmllbGRzW2ZpZWxkSW5kZXhdIDogbnVsbDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBbZmlsdGVyLmlkXTogZ2V0RmlsdGVyRnVuY3Rpb24oZmllbGQsIHRoaXMuaWQsIGZpbHRlciwgbGF5ZXJzLCBkYXRhQ29udGFpbmVyKVxuICAgICAgICB9O1xuICAgICAgfSwge30pO1xuXG4gICAgICBmaWx0ZXJSZXN1bHQgPSBmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyhcbiAgICAgICAge2R5bmFtaWNEb21haW5GaWx0ZXJzLCBjcHVGaWx0ZXJzLCBmaWx0ZXJGdW5jc30sXG4gICAgICAgIGRhdGFDb250YWluZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZEluZGV4ID0gZmlsdGVyUmVzdWx0LmZpbHRlcmVkSW5kZXggfHwgdGhpcy5maWx0ZXJlZEluZGV4O1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbiA9XG4gICAgICBmaWx0ZXJSZXN1bHQuZmlsdGVyZWRJbmRleEZvckRvbWFpbiB8fCB0aGlzLmZpbHRlcmVkSW5kZXhGb3JEb21haW47XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBmaWx0ZXJzIHRvIGEgZGF0YXNldCBhbGwgb24gQ1BVLCBhc3NpZ24gdG8gYGZpbHRlcmVkSWR4Q1BVYCwgYGZpbHRlclJlY29yZENQVWBcbiAgICogQHBhcmFtIGZpbHRlcnNcbiAgICogQHBhcmFtIGxheWVyc1xuICAgKi9cbiAgZmlsdGVyVGFibGVDUFUoZmlsdGVycywgbGF5ZXJzKSB7XG4gICAgY29uc3Qgb3B0ID0ge1xuICAgICAgY3B1T25seTogdHJ1ZSxcbiAgICAgIGlnbm9yZURvbWFpbjogdHJ1ZVxuICAgIH07XG5cbiAgICAvLyBubyBmaWx0ZXJcbiAgICBpZiAoIWZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWR4Q1BVID0gdGhpcy5hbGxJbmRleGVzO1xuICAgICAgdGhpcy5maWx0ZXJSZWNvcmRDUFUgPSBnZXRGaWx0ZXJSZWNvcmQodGhpcy5pZCwgZmlsdGVycywgb3B0KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIG5vIGdwdSBmaWx0ZXJcbiAgICBpZiAoIWZpbHRlcnMuZmluZChmID0+IGYuZ3B1KSkge1xuICAgICAgdGhpcy5maWx0ZXJlZElkeENQVSA9IHRoaXMuZmlsdGVyZWRJbmRleDtcbiAgICAgIHRoaXMuZmlsdGVyUmVjb3JkQ1BVID0gZ2V0RmlsdGVyUmVjb3JkKHRoaXMuaWQsIGZpbHRlcnMsIG9wdCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBtYWtlIGEgY29weSBmb3IgY3B1IGZpbHRlcmluZ1xuICAgIGNvbnN0IGNvcGllZCA9IGNvcHlUYWJsZSh0aGlzKTtcblxuICAgIGNvcGllZC5maWx0ZXJSZWNvcmQgPSB0aGlzLmZpbHRlclJlY29yZENQVTtcbiAgICBjb3BpZWQuZmlsdGVyZWRJbmRleCA9IHRoaXMuZmlsdGVyZWRJZHhDUFUgfHwgW107XG5cbiAgICBjb25zdCBmaWx0ZXJlZCA9IGNvcGllZC5maWx0ZXJUYWJsZShmaWx0ZXJzLCBsYXllcnMsIG9wdCk7XG5cbiAgICB0aGlzLmZpbHRlcmVkSWR4Q1BVID0gZmlsdGVyZWQuZmlsdGVyZWRJbmRleDtcbiAgICB0aGlzLmZpbHRlclJlY29yZENQVSA9IGZpbHRlcmVkLmZpbHRlclJlY29yZDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBmaWVsZCBkb21haW4gYmFzZWQgb24gZmllbGQgdHlwZSBhbmQgZGF0YVxuICAgKiBmb3IgRmlsdGVyXG4gICAqL1xuICBnZXRDb2x1bW5GaWx0ZXJEb21haW4oZmllbGQpIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lcn0gPSB0aGlzO1xuICAgIGNvbnN0IHt2YWx1ZUFjY2Vzc29yfSA9IGZpZWxkO1xuXG4gICAgbGV0IGRvbWFpbjtcblxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgICAgIC8vIGNhbGN1bGF0ZSBkb21haW4gYW5kIHN0ZXBcbiAgICAgICAgcmV0dXJuIGdldE51bWVyaWNGaWVsZERvbWFpbihkYXRhQ29udGFpbmVyLCB2YWx1ZUFjY2Vzc29yKTtcblxuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMuYm9vbGVhbjpcbiAgICAgICAgcmV0dXJuIHtkb21haW46IFt0cnVlLCBmYWxzZV19O1xuXG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5kYXRlOlxuICAgICAgICBkb21haW4gPSBnZXRPcmRpbmFsRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpO1xuICAgICAgICByZXR1cm4ge2RvbWFpbn07XG5cbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgICAgcmV0dXJuIGdldFRpbWVzdGFtcEZpZWxkRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4ge2RvbWFpbjogZ2V0T3JkaW5hbERvbWFpbihkYXRhQ29udGFpbmVyLCB2YWx1ZUFjY2Vzc29yKX07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBHZXQgdGhlIGRvbWFpbiBvZiB0aGlzIGNvbHVtbiBiYXNlZCBvbiBzY2FsZSB0eXBlXG4gICAqL1xuICBnZXRDb2x1bW5MYXllckRvbWFpbihmaWVsZCwgc2NhbGVUeXBlKSB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpbHRlcmVkSW5kZXhGb3JEb21haW59ID0gdGhpcztcblxuICAgIGlmICghU0NBTEVfVFlQRVNbc2NhbGVUeXBlXSkge1xuICAgICAgQ29uc29sZS5lcnJvcihgc2NhbGUgdHlwZSAke3NjYWxlVHlwZX0gbm90IHN1cHBvcnRlZGApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qge3ZhbHVlQWNjZXNzb3J9ID0gZmllbGQ7XG4gICAgY29uc3QgaW5kZXhWYWx1ZUFjY2Vzc29yID0gaSA9PiB2YWx1ZUFjY2Vzc29yKHtpbmRleDogaX0pO1xuICAgIGNvbnN0IHNvcnRGdW5jdGlvbiA9IGdldFNvcnRpbmdGdW5jdGlvbihmaWVsZC50eXBlKTtcblxuICAgIHN3aXRjaCAoc2NhbGVUeXBlKSB7XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLm9yZGluYWw6XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnBvaW50OlxuICAgICAgICAvLyBkbyBub3QgcmVjYWxjdWxhdGUgb3JkaW5hbCBkb21haW4gYmFzZWQgb24gZmlsdGVyZWQgZGF0YVxuICAgICAgICAvLyBkb24ndCBuZWVkIHRvIHVwZGF0ZSBvcmRpbmFsIGRvbWFpbiBldmVyeSB0aW1lXG4gICAgICAgIHJldHVybiBnZXRPcmRpbmFsRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpO1xuXG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnF1YW50aWxlOlxuICAgICAgICByZXR1cm4gZ2V0UXVhbnRpbGVEb21haW4oZmlsdGVyZWRJbmRleEZvckRvbWFpbiwgaW5kZXhWYWx1ZUFjY2Vzc29yLCBzb3J0RnVuY3Rpb24pO1xuXG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLmxvZzpcbiAgICAgICAgcmV0dXJuIGdldExvZ0RvbWFpbihmaWx0ZXJlZEluZGV4Rm9yRG9tYWluLCBpbmRleFZhbHVlQWNjZXNzb3IpO1xuXG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnF1YW50aXplOlxuICAgICAgY2FzZSBTQ0FMRV9UWVBFUy5saW5lYXI6XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLnNxcnQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZ2V0TGluZWFyRG9tYWluKGZpbHRlcmVkSW5kZXhGb3JEb21haW4sIGluZGV4VmFsdWVBY2Nlc3Nvcik7XG4gICAgfVxuICB9XG5cbiAgY2FsY3VsYXRlTGVnZW5kKGxlZnRGaWVsZCwgcmlnaHRGaWVsZCkge1xuICAgIGNvbnN0IGxlZnRWYWx1ZXMgPSB0aGlzLmRhdGFDb250YWluZXIubWFwSW5kZXgobGVmdEZpZWxkLnZhbHVlQWNjZXNzb3IpO1xuICAgIGNvbnN0IHJpZ2h0VmFsdWVzID0gdGhpcy5kYXRhQ29udGFpbmVyLm1hcEluZGV4KHJpZ2h0RmllbGQudmFsdWVBY2Nlc3Nvcik7XG5cbiAgICBjb25zdCBwYWlyaW5nID0gbGVmdFZhbHVlcy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50LCBpZHgpID0+IHtcbiAgICAgIHByZXZpb3VzLnB1c2goW2N1cnJlbnQsIHJpZ2h0VmFsdWVzW2lkeF1dKTtcbiAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIHVuaXF1ZVNvcnRlZFBhaXJCeUZyZXF1ZW5jeShwYWlyaW5nKS5tYXAocm93ID0+ICh7bGFiZWw6IHJvdy5sZWZ0LCBjb2xvcjogcm93LnJpZ2h0fSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNhbXBsZSBvZiByb3dzIHRvIGNhbGN1bGF0ZSBsYXllciBib3VuZGFyaWVzXG4gICAqL1xuICAvLyBnZXRTYW1wbGVEYXRhKHJvd3MpXG5cbiAgLyoqXG4gICAqIFBhcnNlIGNlbGwgdmFsdWUgYmFzZWQgb24gY29sdW1uIHR5cGUgYW5kIHJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKiBWYWx1ZSB0aGUgZmllbGQgdmFsdWUsIHR5cGUgdGhlIGZpZWxkIHR5cGVcbiAgICovXG4gIC8vIHBhcnNlRmllbGRWYWx1ZSh2YWx1ZSwgdHlwZSlcblxuICAvLyBzb3J0RGF0YXNldEJ5Q29sdW1uKClcblxuICAvKipcbiAgICogQXNzZXJ0IHdoZXRoZXIgZmllbGQgZXhpc3RcbiAgICogQHBhcmFtIGZpZWxkTmFtZVxuICAgKiBAcGFyYW0gY29uZGl0aW9uXG4gICAqL1xuICBfYXNzZXRGaWVsZChmaWVsZE5hbWUsIGNvbmRpdGlvbikge1xuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICBDb25zb2xlLmVycm9yKGAke2ZpZWxkTmFtZX0gZG9lc250IGV4aXN0IGluIGRhdGFzZXQgJHt0aGlzLmlkfWApO1xuICAgIH1cbiAgfVxufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TIChNQUlOTFkgRVhQT1JURUQgRk9SIFRFU1QuLi4pXG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVTdWZmaXhBbmREZWxpbWl0ZXJzKGxheWVyTmFtZSwgc3VmZml4KSB7XG4gIHJldHVybiBsYXllck5hbWVcbiAgICAucmVwbGFjZShuZXcgUmVnRXhwKHN1ZmZpeCwgJ2lnJyksICcnKVxuICAgIC5yZXBsYWNlKC9bXywuXSsvZywgJyAnKVxuICAgIC50cmltKCk7XG59XG5cbi8qKlxuICogRmluZCBwb2ludCBmaWVsZHMgcGFpcnMgZnJvbSBmaWVsZHNcbiAqXG4gKiBAcGFyYW0gZmllbGRzXG4gKiBAcmV0dXJucyBmb3VuZCBwb2ludCBmaWVsZHNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2tlcGxlci10YWJsZScpLmZpbmRQb2ludEZpZWxkUGFpcnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUG9pbnRGaWVsZFBhaXJzKGZpZWxkcykge1xuICBjb25zdCBhbGxOYW1lcyA9IGZpZWxkcy5tYXAoZiA9PiBmLm5hbWUudG9Mb3dlckNhc2UoKSk7XG5cbiAgLy8gZ2V0IGxpc3Qgb2YgYWxsIGZpZWxkcyB3aXRoIG1hdGNoaW5nIHN1ZmZpeGVzXG4gIGNvbnN0IGFjYyA9IFtdO1xuICBjb25zdCByZXN1bHQgPSBhbGxOYW1lcy5yZWR1Y2UoKGNhcnJ5LCBmaWVsZE5hbWUsIGlkeCkgPT4ge1xuICAgIC8vIFRoaXMgc2VhcmNoIGZvciBwYWlycyB3aWxsIGVhcmx5IGV4aXQgaWYgZm91bmQuXG4gICAgZm9yIChjb25zdCBzdWZmaXhQYWlyIG9mIFRSSVBfUE9JTlRfRklFTERTKSB7XG4gICAgICAvLyBtYXRjaCBmaXJzdCBzdWZmaXhgYGBcbiAgICAgIGlmIChmaWVsZE5hbWUuZW5kc1dpdGgoc3VmZml4UGFpclswXSkpIHtcbiAgICAgICAgLy8gbWF0Y2ggc2Vjb25kIHN1ZmZpeFxuICAgICAgICBjb25zdCBvdGhlclBhdHRlcm4gPSBuZXcgUmVnRXhwKGAke3N1ZmZpeFBhaXJbMF19XFwkYCk7XG4gICAgICAgIGNvbnN0IHBhcnRuZXIgPSBmaWVsZE5hbWUucmVwbGFjZShvdGhlclBhdHRlcm4sIHN1ZmZpeFBhaXJbMV0pO1xuXG4gICAgICAgIGNvbnN0IHBhcnRuZXJJZHggPSBhbGxOYW1lcy5maW5kSW5kZXgoZCA9PiBkID09PSBwYXJ0bmVyKTtcbiAgICAgICAgaWYgKHBhcnRuZXJJZHggPiAtMSkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHROYW1lID0gcmVtb3ZlU3VmZml4QW5kRGVsaW1pdGVycyhmaWVsZE5hbWUsIHN1ZmZpeFBhaXJbMF0pO1xuXG4gICAgICAgICAgY2FycnkucHVzaCh7XG4gICAgICAgICAgICBkZWZhdWx0TmFtZSxcbiAgICAgICAgICAgIHBhaXI6IHtcbiAgICAgICAgICAgICAgbGF0OiB7XG4gICAgICAgICAgICAgICAgZmllbGRJZHg6IGlkeCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGRzW2lkeF0ubmFtZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsbmc6IHtcbiAgICAgICAgICAgICAgICBmaWVsZElkeDogcGFydG5lcklkeCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGRzW3BhcnRuZXJJZHhdLm5hbWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1ZmZpeDogc3VmZml4UGFpclxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBjYXJyeTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2Fycnk7XG4gIH0sIGFjYyk7XG5cbiAgLy8gcHJpb3JpdGl6ZSB0aGUgJ2xhdGl0dWRlJy8nbG9uZ2l0dWRlJyBwYWlyXG4gIHJlc3VsdC5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGEuZGVmYXVsdE5hbWUgPT09ICcnICYmIGEuc3VmZml4WzBdID09PSAnbGF0aXR1ZGUnKSByZXR1cm4gLTE7XG4gICAgaWYgKGIuZGVmYXVsdE5hbWUgPT09ICcnICYmIGIuc3VmZml4WzBdID09PSAnbGF0aXR1ZGUnKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMDtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFzZXRcbiAqIEBwYXJhbSBjb2x1bW5cbiAqIEBwYXJhbSBtb2RlXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9rZXBsZXItdGFibGUnKS5zb3J0RGF0YXNldEJ5Q29sdW1ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydERhdGFzZXRCeUNvbHVtbihkYXRhc2V0LCBjb2x1bW4sIG1vZGUpIHtcbiAgY29uc3Qge2FsbEluZGV4ZXMsIGZpZWxkcywgZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0O1xuICBjb25zdCBmaWVsZEluZGV4ID0gZmllbGRzLmZpbmRJbmRleChmID0+IGYubmFtZSA9PT0gY29sdW1uKTtcbiAgaWYgKGZpZWxkSW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGRhdGFzZXQ7XG4gIH1cblxuICBjb25zdCBzb3J0QnkgPSBTT1JUX09SREVSW21vZGVdIHx8IFNPUlRfT1JERVIuQVNDRU5ESU5HO1xuXG4gIGlmIChzb3J0QnkgPT09IFNPUlRfT1JERVIuVU5TT1JUKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRhdGFzZXQsXG4gICAgICBzb3J0Q29sdW1uOiB7fSxcbiAgICAgIHNvcnRPcmRlcjogbnVsbFxuICAgIH07XG4gIH1cblxuICBjb25zdCBzb3J0RnVuY3Rpb24gPSBzb3J0QnkgPT09IFNPUlRfT1JERVIuQVNDRU5ESU5HID8gYXNjZW5kaW5nIDogZGVzY2VuZGluZztcbiAgY29uc3Qgc29ydE9yZGVyID0gYWxsSW5kZXhlc1xuICAgIC5zbGljZSgpXG4gICAgLnNvcnQoKGEsIGIpID0+XG4gICAgICBzb3J0RnVuY3Rpb24oZGF0YUNvbnRhaW5lci52YWx1ZUF0KGEsIGZpZWxkSW5kZXgpLCBkYXRhQ29udGFpbmVyLnZhbHVlQXQoYiwgZmllbGRJbmRleCkpXG4gICAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmRhdGFzZXQsXG4gICAgc29ydENvbHVtbjoge1xuICAgICAgW2NvbHVtbl06IHNvcnRCeVxuICAgIH0sXG4gICAgc29ydE9yZGVyXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5VGFibGUob3JpZ2luYWwpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3JpZ2luYWwpKSwgb3JpZ2luYWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlQW5kVXBkYXRlKG9yaWdpbmFsLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLnJlZHVjZSgoYWNjLCBlbnRyeSkgPT4ge1xuICAgIGFjY1tlbnRyeVswXV0gPSBlbnRyeVsxXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCBjb3B5VGFibGUob3JpZ2luYWwpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgS2VwbGVyVGFibGU7XG4iXX0=
560
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy90YWJsZS11dGlscy9rZXBsZXItdGFibGUuanMiXSwibmFtZXMiOlsiRklEX0tFWSIsIktlcGxlclRhYmxlIiwiaW5mbyIsImRhdGEiLCJjb2xvciIsIm1ldGFkYXRhIiwic3VwcG9ydGVkRmlsdGVyVHlwZXMiLCJkYXRhQ29udGFpbmVyIiwicm93cyIsImZpZWxkcyIsImRhdGFzZXRJbmZvIiwiaWQiLCJsYWJlbCIsImRhdGFJZCIsIm1hcCIsImYiLCJpIiwiZmllbGRJZHgiLCJuYW1lIiwiZGlzcGxheU5hbWUiLCJ2YWx1ZUFjY2Vzc29yIiwibWF5YmVUb0RhdGUiLCJiaW5kIiwidHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInRpbWVzdGFtcCIsImRhdGUiLCJmb3JtYXQiLCJhbGxJbmRleGVzIiwiZ2V0UGxhaW5JbmRleCIsImZpbHRlcmVkSW5kZXgiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmllbGRQYWlycyIsImZpbmRQb2ludEZpZWxkUGFpcnMiLCJncHVGaWx0ZXIiLCJjb2x1bW5OYW1lIiwiZmllbGQiLCJmaW5kIiwiZmQiLCJfYXNzZXRGaWVsZCIsImZpbmRJbmRleCIsIkJvb2xlYW4iLCJyb3dJZHgiLCJnZXRDb2x1bW5GaWVsZCIsImluZGV4IiwibmV3RmllbGQiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXRDb2x1bW5GaWVsZElkeCIsImhhc093blByb3BlcnR5IiwiZmlsdGVyUHJvcHMiLCJmaWVsZERvbWFpbiIsImdldENvbHVtbkZpbHRlckRvbWFpbiIsInVwZGF0ZUNvbHVtbkZpZWxkIiwiZmlsdGVycyIsImxheWVycyIsIm9wdCIsIm9sZEZpbHRlclJlY29yZCIsImZpbHRlclJlY29yZCIsImxlbmd0aCIsImNoYW5nZWRGaWx0ZXJzIiwic2hvdWxkQ2FsRG9tYWluIiwiZHluYW1pY0RvbWFpbiIsInNob3VsZENhbEluZGV4IiwiY3B1IiwiZmlsdGVyUmVzdWx0IiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJyZWR1Y2UiLCJhY2MiLCJmaWx0ZXIiLCJmaWVsZEluZGV4IiwiY3B1T25seSIsImlnbm9yZURvbWFpbiIsImZpbHRlcmVkSWR4Q1BVIiwiZmlsdGVyUmVjb3JkQ1BVIiwiZ3B1IiwiY29waWVkIiwiY29weVRhYmxlIiwiZmlsdGVyZWQiLCJmaWx0ZXJUYWJsZSIsImRvbWFpbiIsInJlYWwiLCJpbnRlZ2VyIiwic3RyaW5nIiwic2NhbGVUeXBlIiwiU0NBTEVfVFlQRVMiLCJDb25zb2xlIiwiZXJyb3IiLCJpbmRleFZhbHVlQWNjZXNzb3IiLCJzb3J0RnVuY3Rpb24iLCJvcmRpbmFsIiwicG9pbnQiLCJxdWFudGlsZSIsImxvZyIsInF1YW50aXplIiwibGluZWFyIiwic3FydCIsImxlZnRGaWVsZCIsInJpZ2h0RmllbGQiLCJsZWZ0VmFsdWVzIiwibWFwSW5kZXgiLCJyaWdodFZhbHVlcyIsInBhaXJpbmciLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpZHgiLCJwdXNoIiwicm93IiwibGVmdCIsInJpZ2h0Iiwic2xpY2UiLCJmaWVsZE5hbWUiLCJjb25kaXRpb24iLCJyZW1vdmVTdWZmaXhBbmREZWxpbWl0ZXJzIiwibGF5ZXJOYW1lIiwic3VmZml4IiwicmVwbGFjZSIsIlJlZ0V4cCIsInRyaW0iLCJhbGxOYW1lcyIsInRvTG93ZXJDYXNlIiwicmVzdWx0IiwiY2FycnkiLCJUUklQX1BPSU5UX0ZJRUxEUyIsInN1ZmZpeFBhaXIiLCJlbmRzV2l0aCIsIm90aGVyUGF0dGVybiIsInBhcnRuZXIiLCJwYXJ0bmVySWR4IiwiZCIsImRlZmF1bHROYW1lIiwicGFpciIsImxhdCIsInZhbHVlIiwibG5nIiwic29ydCIsImEiLCJiIiwic29ydERhdGFzZXRCeUNvbHVtbiIsImRhdGFzZXQiLCJjb2x1bW4iLCJtb2RlIiwic29ydEJ5IiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIlVOU09SVCIsInNvcnRDb2x1bW4iLCJzb3J0T3JkZXIiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwidmFsdWVBdCIsIm9yaWdpbmFsIiwiY3JlYXRlIiwiZ2V0UHJvdG90eXBlT2YiLCJjb3B5VGFibGVBbmRVcGRhdGUiLCJvcHRpb25zIiwiZW50cmllcyIsImVudHJ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBU0E7O0FBQ0E7O0FBU0E7Ozs7Ozs7Ozs7OztBQUdBO0FBQ0EsSUFBTUEsT0FBTyxHQUFHLE1BQWhCO0FBRUE7O0FBRUE7QUFDQTtBQUNBOztJQUNNQyxXO0FBQ0osNkJBQXNFO0FBQUEseUJBQXpEQyxJQUF5RDtBQUFBLFFBQXpEQSxJQUF5RCwwQkFBbEQsRUFBa0Q7QUFBQSxRQUE5Q0MsSUFBOEMsUUFBOUNBLElBQThDO0FBQUEsUUFBeENDLEtBQXdDLFFBQXhDQSxLQUF3QztBQUFBLFFBQWpDQyxRQUFpQyxRQUFqQ0EsUUFBaUM7QUFBQSxRQUF2QkMsb0JBQXVCLFFBQXZCQSxvQkFBdUI7QUFBQTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsUUFBTUMsYUFBYSxHQUFHLDZDQUFvQkosSUFBSSxDQUFDSyxJQUF6QixFQUErQjtBQUFDQyxNQUFBQSxNQUFNLEVBQUVOLElBQUksQ0FBQ007QUFBZCxLQUEvQixDQUF0Qjs7QUFFQSxRQUFNQyxXQUFXO0FBQ2ZDLE1BQUFBLEVBQUUsRUFBRSwyQkFBZSxDQUFmLENBRFc7QUFFZkMsTUFBQUEsS0FBSyxFQUFFO0FBRlEsT0FHWFYsSUFBSSxJQUFJLEVBSEcsQ0FBakI7O0FBS0EsUUFBTVcsTUFBTSxHQUFHSCxXQUFXLENBQUNDLEVBQTNCO0FBRUEsUUFBTUYsTUFBTSxHQUFHTixJQUFJLENBQUNNLE1BQUwsQ0FBWUssR0FBWixDQUFnQixVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSw2Q0FDMUJELENBRDBCO0FBRTdCRSxRQUFBQSxRQUFRLEVBQUVELENBRm1CO0FBRzdCTCxRQUFBQSxFQUFFLEVBQUVJLENB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LENBQUQsRUFBSUMsQ0FBSjtBQUFBLFdBQ0poRCxZQUFZLENBQUNwRixhQUFhLENBQUNpSixPQUFkLENBQXNCZCxDQUF0QixFQUF5QmxFLFVBQXpCLENBQUQsRUFBdUNqRSxhQUFhLENBQUNpSixPQUFkLENBQXNCYixDQUF0QixFQUF5Qm5FLFVBQXpCLENBQXZDLENBRFI7QUFBQSxHQUZVLENBQWxCO0FBTUEseUNBQ0txRSxPQURMO0FBRUVPLElBQUFBLFVBQVUsdUNBQ1BOLE1BRE8sRUFDRUUsTUFERixDQUZaO0FBS0VLLElBQUFBLFNBQVMsRUFBVEE7QUFMRjtBQU9EOztBQUVNLFNBQVN0RSxTQUFULENBQW1CMEUsUUFBbkIsRUFBNkI7QUFDbEMsU0FBTzNHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRCxNQUFNLENBQUM0RyxNQUFQLENBQWM1RyxNQUFNLENBQUM2RyxjQUFQLENBQXNCRixRQUF0QixDQUFkLENBQWQsRUFBOERBLFFBQTlELENBQVA7QUFDRDs7QUFFTSxTQUFTRyxrQkFBVCxDQUE0QkgsUUFBNUIsRUFBb0Q7QUFBQSxNQUFkSSxPQUFjLHVFQUFKLEVBQUk7QUFDekQsU0FBTy9HLE1BQU0sQ0FBQ2dILE9BQVAsQ0FBZUQsT0FBZixFQUF3QnhGLE1BQXhCLENBQStCLFVBQUNDLEdBQUQsRUFBTXlGLEtBQU4sRUFBZ0I7QUFDcER6RixJQUFBQSxHQUFHLENBQUN5RixLQUFLLENBQUMsQ0FBRCxDQUFOLENBQUgsR0FBZ0JBLEtBQUssQ0FBQyxDQUFELENBQXJCO0FBQ0EsV0FBT3pGLEdBQVA7QUFDRCxHQUhNLEVBR0pTLFNBQVMsQ0FBQzBFLFFBQUQsQ0FITCxDQUFQO0FBSUQ7O2VBRWN4SixXIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCB7VFJJUF9QT0lOVF9GSUVMRFMsIFNPUlRfT1JERVJ9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7YXNjZW5kaW5nLCBkZXNjZW5kaW5nfSBmcm9tICdkMy1hcnJheSc7XG5cbi8vIGltcG9ydCB7dmFsaWRhdGVJbnB1dERhdGF9IGZyb20gJ3Byb2Nlc3NvcnMvZGF0YS1wcm9jZXNzb3InO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtnZXRHcHVGaWx0ZXJQcm9wcywgZ2V0RGF0YXNldEZpZWxkSW5kZXhGb3JGaWx0ZXJ9IGZyb20gJ3V0aWxzL2dwdS1maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsdGVyUHJvcHMsXG4gIGdldEZpbHRlclJlY29yZCxcbiAgZGlmZkZpbHRlcnMsXG4gIGdldEZpbHRlckZ1bmN0aW9uLFxuICBmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyxcbiAgZ2V0TnVtZXJpY0ZpZWxkRG9tYWluLFxuICBnZXRUaW1lc3RhbXBGaWVsZERvbWFpblxufSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHttYXliZVRvRGF0ZSwgZ2V0U29ydGluZ0Z1bmN0aW9ufSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7XG4gIGdldFF1YW50aWxlRG9tYWluLFxuICBnZXRPcmRpbmFsRG9tYWluLFxuICBnZXRMb2dEb21haW4sXG4gIGdldExpbmVhckRvbWFpblxufSBmcm9tICd1dGlscy9kYXRhLXNjYWxlLXV0aWxzJztcblxuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIFNDQUxFX1RZUEVTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7Y3JlYXRlRGF0YUNvbnRhaW5lcn0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci11dGlscyc7XG5pbXBvcnQge3VuaXF1ZVNvcnRlZFBhaXJCeUZyZXF1ZW5jeX0gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5cbi8vIFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVhY2ggZmllbGRcbmNvbnN0IEZJRF9LRVkgPSAnbmFtZSc7XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2tlcGxlci10YWJsZScpLktlcGxlclRhYmxlfSBLZXBsZXJUYWJsZUNsYXNzfSAqL1xuXG4vKipcbiAqIEB0eXBlIHtLZXBsZXJUYWJsZUNsYXNzfVxuICovXG5jbGFzcyBLZXBsZXJUYWJsZSB7XG4gIGNvbnN0cnVjdG9yKHtpbmZvID0ge30sIGRhdGEsIGNvbG9yLCBtZXRhZGF0YSwgc3VwcG9ydGVkRmlsdGVyVHlwZXN9KSB7XG4gICAgLy8gVE9ETyAtIHdoYXQgdG8gZG8gaWYgdmFsaWRhdGlvbiBmYWlscz8gQ2FuIGtlcGxlciBoYW5kbGUgZXhjZXB0aW9ucz9cbiAgICAvLyBjb25zdCB2YWxpZGF0ZWREYXRhID0gdmFsaWRhdGVJbnB1dERhdGEoZGF0YSk7XG4gICAgLy8gaWYgKCF2YWxpZGF0ZWREYXRhKSB7XG4gICAgLy8gICByZXR1cm4gdGhpcztcbiAgICAvLyB9XG5cbiAgICBjb25zdCBkYXRhQ29udGFpbmVyID0gY3JlYXRlRGF0YUNvbnRhaW5lcihkYXRhLnJvd3MsIHtmaWVsZHM6IGRhdGEuZmllbGRzfSk7XG5cbiAgICBjb25zdCBkYXRhc2V0SW5mbyA9IHtcbiAgICAgIGlkOiBnZW5lcmF0ZUhhc2hJZCg0KSxcbiAgICAgIGxhYmVsOiAnbmV3IGRhdGFzZXQnLFxuICAgICAgLi4uKGluZm8gfHwge30pXG4gICAgfTtcbiAgICBjb25zdCBkYXRhSWQgPSBkYXRhc2V0SW5mby5pZDtcblxuICAgIGNvbnN0IGZpZWxkcyA9IGRhdGEuZmllbGRzLm1hcCgoZiwgaSkgPT4gKHtcbiAgICAgIC4uLmYsXG4gICAgICBmaWVsZElkeDogaSxcbiAgICAgIGlkOiBmLm5hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogZi5kaXNwbGF5TmFtZSB8fCBmLm5hbWUsXG4gICAgICB2YWx1ZUFjY2Vzc29yOiBtYXliZVRvRGF0ZS5iaW5kKFxuICAgICAgICBudWxsLFxuICAgICAgICAvLyBpcyB0aW1lXG4gICAgICAgIGYudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCB8fCBmLnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5kYXRlLFxuICAgICAgICBpLFxuICAgICAgICBmLmZvcm1hdCxcbiAgICAgICAgZGF0YUNvbnRhaW5lclxuICAgICAgKVxuICAgIH0pKTtcblxuICAgIGNvbnN0IGFsbEluZGV4ZXMgPSBkYXRhQ29udGFpbmVyLmdldFBsYWluSW5kZXgoKTtcblxuICAgIHRoaXMuaWQgPSBkYXRhc2V0SW5mby5pZDtcbiAgICB0aGlzLmxhYmVsID0gZGF0YXNldEluZm8ubGFiZWw7XG4gICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICAuLi5tZXRhZGF0YSxcbiAgICAgIGlkOiBkYXRhc2V0SW5mby5pZCxcbiAgICAgIGxhYmVsOiBkYXRhc2V0SW5mby5sYWJlbFxuICAgIH07XG5cbiAgICB0aGlzLmRhdGFDb250YWluZXIgPSBkYXRhQ29udGFpbmVyO1xuICAgIHRoaXMuYWxsSW5kZXhlcyA9IGFsbEluZGV4ZXM7XG4gICAgdGhpcy5maWx0ZXJlZEluZGV4ID0gYWxsSW5kZXhlcztcbiAgICB0aGlzLmZpbHRlcmVkSW5kZXhGb3JEb21haW4gPSBhbGxJbmRleGVzO1xuICAgIHRoaXMuZmllbGRQYWlycyA9IGZpbmRQb2ludEZpZWxkUGFpcnMoZmllbGRzKTtcbiAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgICB0aGlzLmdwdUZpbHRlciA9IGdldEdwdUZpbHRlclByb3BzKFtdLCBkYXRhSWQsIGZpZWxkcyk7XG4gICAgaWYgKHN1cHBvcnRlZEZpbHRlclR5cGVzKSB7XG4gICAgICB0aGlzLnN1cHBvcnRlZEZpbHRlclR5cGVzID0gc3VwcG9ydGVkRmlsdGVyVHlwZXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBmaWVsZFxuICAgKiBAcGFyYW0gY29sdW1uTmFtZVxuICAgKi9cbiAgZ2V0Q29sdW1uRmllbGQoY29sdW1uTmFtZSkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZChmZCA9PiBmZFtGSURfS0VZXSA9PT0gY29sdW1uTmFtZSk7XG4gICAgdGhpcy5fYXNzZXRGaWVsZChjb2x1bW5OYW1lLCBmaWVsZCk7XG4gICAgcmV0dXJuIGZpZWxkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBmaWVsZElkeFxuICAgKiBAcGFyYW0gY29sdW1uTmFtZVxuICAgKi9cbiAgZ2V0Q29sdW1uRmllbGRJZHgoY29sdW1uTmFtZSkge1xuICAgIGNvbnN0IGZpZWxkSWR4ID0gdGhpcy5maWVsZHMuZmluZEluZGV4KGZkID0+IGZkW0ZJRF9LRVldID09PSBjb2x1bW5OYW1lKTtcbiAgICB0aGlzLl9hc3NldEZpZWxkKGNvbHVtbk5hbWUsIEJvb2xlYW4oZmllbGRJZHggPiAtMSkpO1xuICAgIHJldHVybiBmaWVsZElkeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIG9mIGEgY2VsbFxuICAgKi9cbiAgZ2V0VmFsdWUoY29sdW1uTmFtZSwgcm93SWR4KSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmdldENvbHVtbkZpZWxkKGNvbHVtbk5hbWUpO1xuICAgIHJldHVybiBmaWVsZCA/IGZpZWxkLnZhbHVlQWNjZXNzb3Ioe2luZGV4OiByb3dJZHh9KSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBleGlzdGluZyBmaWVsZCB3aXRoIGEgbmV3IG9iamVjdFxuICAgKiBAcGFyYW0gZmllbGRJZHhcbiAgICogQHBhcmFtIG5ld0ZpZWxkXG4gICAqL1xuICB1cGRhdGVDb2x1bW5GaWVsZChmaWVsZElkeCwgbmV3RmllbGQpIHtcbiAgICB0aGlzLmZpZWxkcyA9IE9iamVjdC5hc3NpZ24oWy4uLnRoaXMuZmllbGRzXSwge1tmaWVsZElkeF06IG5ld0ZpZWxkfSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBmaWx0ZXJQcm9wcyB0byBmaWVsZCBhbmQgcmV0cmlldmUgaXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbk5hbWVcbiAgICovXG4gIGdldENvbHVtbkZpbHRlclByb3BzKGNvbHVtbk5hbWUpIHtcbiAgICBjb25zdCBmaWVsZElkeCA9IHRoaXMuZ2V0Q29sdW1uRmllbGRJZHgoY29sdW1uTmFtZSk7XG4gICAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHNbZmllbGRJZHhdO1xuICAgIGlmIChmaWVsZC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyUHJvcHMnKSkge1xuICAgICAgcmV0dXJuIGZpZWxkLmZpbHRlclByb3BzO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkRG9tYWluID0gdGhpcy5nZXRDb2x1bW5GaWx0ZXJEb21haW4oZmllbGQpO1xuICAgIGlmICghZmllbGREb21haW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZ2V0RmlsdGVyUHJvcHMoZmllbGQsIGZpZWxkRG9tYWluKTtcbiAgICBjb25zdCBuZXdGaWVsZCA9IHtcbiAgICAgIC4uLmZpZWxkLFxuICAgICAgZmlsdGVyUHJvcHNcbiAgICB9O1xuXG4gICAgdGhpcy51cGRhdGVDb2x1bW5GaWVsZChmaWVsZElkeCwgbmV3RmllbGQpO1xuXG4gICAgcmV0dXJuIGZpbHRlclByb3BzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGZpbHRlcnMgdG8gZGF0YXNldCwgcmV0dXJuIHRoZSBmaWx0ZXJlZCBkYXRhc2V0IHdpdGggdXBkYXRlZCBgZ3B1RmlsdGVyYCwgYGZpbHRlclJlY29yZGAsIGBmaWx0ZXJlZEluZGV4YCwgYGZpbHRlcmVkSW5kZXhGb3JEb21haW5gXG4gICAqIEBwYXJhbSBmaWx0ZXJzXG4gICAqIEBwYXJhbSBsYXllcnNcbiAgICogQHBhcmFtIG9wdFxuICAgKi9cbiAgZmlsdGVyVGFibGUoZmlsdGVycywgbGF5ZXJzLCBvcHQpIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgaWQ6IGRhdGFJZCwgZmlsdGVyUmVjb3JkOiBvbGRGaWx0ZXJSZWNvcmQsIGZpZWxkc30gPSB0aGlzO1xuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gZmlsdGVyc1xuICAgIGNvbnN0IGZpbHRlclJlY29yZCA9IGdldEZpbHRlclJlY29yZChkYXRhSWQsIGZpbHRlcnMsIG9wdCB8fCB7fSk7XG5cbiAgICB0aGlzLmZpbHRlclJlY29yZCA9IGZpbHRlclJlY29yZDtcbiAgICB0aGlzLmdwdUZpbHRlciA9IGdldEdwdUZpbHRlclByb3BzKGZpbHRlcnMsIGRhdGFJZCwgZmllbGRzKTtcblxuICAgIC8vIGNvbnN0IG5ld0RhdGFzZXQgPSBzZXQoWydmaWx0ZXJSZWNvcmQnXSwgZmlsdGVyUmVjb3JkLCBkYXRhc2V0KTtcblxuICAgIGlmICghZmlsdGVycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJbmRleCA9IHRoaXMuYWxsSW5kZXhlcztcbiAgICAgIHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbiA9IHRoaXMuYWxsSW5kZXhlcztcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlZEZpbHRlcnMgPSBkaWZmRmlsdGVycyhmaWx0ZXJSZWNvcmQsIG9sZEZpbHRlclJlY29yZCk7XG5cbiAgICAvLyBnZW5lcmF0ZSAyIHNldHMgb2YgZmlsdGVyIHJlc3VsdFxuICAgIC8vIGZpbHRlcmVkSW5kZXggdXNlZCB0byBjYWxjdWxhdGUgbGF5ZXIgZGF0YVxuICAgIC8vIGZpbHRlcmVkSW5kZXhGb3JEb21haW4gdXNlZCB0byBjYWxjdWxhdGUgbGF5ZXIgRG9tYWluXG4gICAgY29uc3Qgc2hvdWxkQ2FsRG9tYWluID0gQm9vbGVhbih0aGlzLmNoYW5nZWRGaWx0ZXJzLmR5bmFtaWNEb21haW4pO1xuICAgIGNvbnN0IHNob3VsZENhbEluZGV4ID0gQm9vbGVhbih0aGlzLmNoYW5nZWRGaWx0ZXJzLmNwdSk7XG5cbiAgICBsZXQgZmlsdGVyUmVzdWx0ID0ge307XG4gICAgaWYgKHNob3VsZENhbERvbWFpbiB8fCBzaG91bGRDYWxJbmRleCkge1xuICAgICAgY29uc3QgZHluYW1pY0RvbWFpbkZpbHRlcnMgPSBzaG91bGRDYWxEb21haW4gPyBmaWx0ZXJSZWNvcmQuZHluYW1pY0RvbWFpbiA6IG51bGw7XG4gICAgICBjb25zdCBjcHVGaWx0ZXJzID0gc2hvdWxkQ2FsSW5kZXggPyBmaWx0ZXJSZWNvcmQuY3B1IDogbnVsbDtcblxuICAgICAgY29uc3QgZmlsdGVyRnVuY3MgPSBmaWx0ZXJzLnJlZHVjZSgoYWNjLCBmaWx0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRJbmRleCA9IGdldERhdGFzZXRGaWVsZEluZGV4Rm9yRmlsdGVyKHRoaXMuaWQsIGZpbHRlcik7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRJbmRleCAhPT0gLTEgPyBmaWVsZHNbZmllbGRJbmRleF0gOiBudWxsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgIFtmaWx0ZXIuaWRdOiBnZXRGaWx0ZXJGdW5jdGlvbihmaWVsZCwgdGhpcy5pZCwgZmlsdGVyLCBsYXllcnMsIGRhdGFDb250YWluZXIpXG4gICAgICAgIH07XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIGZpbHRlclJlc3VsdCA9IGZpbHRlckRhdGFCeUZpbHRlclR5cGVzKFxuICAgICAgICB7ZHluYW1pY0RvbWFpbkZpbHRlcnMsIGNwdUZpbHRlcnMsIGZpbHRlckZ1bmNzfSxcbiAgICAgICAgZGF0YUNvbnRhaW5lclxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBmaWx0ZXJSZXN1bHQuZmlsdGVyZWRJbmRleCB8fCB0aGlzLmZpbHRlcmVkSW5kZXg7XG4gICAgdGhpcy5maWx0ZXJlZEluZGV4Rm9yRG9tYWluID1cbiAgICAgIGZpbHRlclJlc3VsdC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluIHx8IHRoaXMuZmlsdGVyZWRJbmRleEZvckRvbWFpbjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGZpbHRlcnMgdG8gYSBkYXRhc2V0IGFsbCBvbiBDUFUsIGFzc2lnbiB0byBgZmlsdGVyZWRJZHhDUFVgLCBgZmlsdGVyUmVjb3JkQ1BVYFxuICAgKiBAcGFyYW0gZmlsdGVyc1xuICAgKiBAcGFyYW0gbGF5ZXJzXG4gICAqL1xuICBmaWx0ZXJUYWJsZUNQVShmaWx0ZXJzLCBsYXllcnMpIHtcbiAgICBjb25zdCBvcHQgPSB7XG4gICAgICBjcHVPbmx5OiB0cnVlLFxuICAgICAgaWdub3JlRG9tYWluOiB0cnVlXG4gICAgfTtcblxuICAgIC8vIG5vIGZpbHRlclxuICAgIGlmICghZmlsdGVycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJZHhDUFUgPSB0aGlzLmFsbEluZGV4ZXM7XG4gICAgICB0aGlzLmZpbHRlclJlY29yZENQVSA9IGdldEZpbHRlclJlY29yZCh0aGlzLmlkLCBmaWx0ZXJzLCBvcHQpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gbm8gZ3B1IGZpbHRlclxuICAgIGlmICghZmlsdGVycy5maW5kKGYgPT4gZi5ncHUpKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWR4Q1BVID0gdGhpcy5maWx0ZXJlZEluZGV4O1xuICAgICAgdGhpcy5maWx0ZXJSZWNvcmRDUFUgPSBnZXRGaWx0ZXJSZWNvcmQodGhpcy5pZCwgZmlsdGVycywgb3B0KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIG1ha2UgYSBjb3B5IGZvciBjcHUgZmlsdGVyaW5nXG4gICAgY29uc3QgY29waWVkID0gY29weVRhYmxlKHRoaXMpO1xuXG4gICAgY29waWVkLmZpbHRlclJlY29yZCA9IHRoaXMuZmlsdGVyUmVjb3JkQ1BVO1xuICAgIGNvcGllZC5maWx0ZXJlZEluZGV4ID0gdGhpcy5maWx0ZXJlZElkeENQVSB8fCBbXTtcblxuICAgIGNvbnN0IGZpbHRlcmVkID0gY29waWVkLmZpbHRlclRhYmxlKGZpbHRlcnMsIGxheWVycywgb3B0KTtcblxuICAgIHRoaXMuZmlsdGVyZWRJZHhDUFUgPSBmaWx0ZXJlZC5maWx0ZXJlZEluZGV4O1xuICAgIHRoaXMuZmlsdGVyUmVjb3JkQ1BVID0gZmlsdGVyZWQuZmlsdGVyUmVjb3JkO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIGZpZWxkIGRvbWFpbiBiYXNlZCBvbiBmaWVsZCB0eXBlIGFuZCBkYXRhXG4gICAqIGZvciBGaWx0ZXJcbiAgICovXG4gIGdldENvbHVtbkZpbHRlckRvbWFpbihmaWVsZCkge1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IHRoaXM7XG4gICAgY29uc3Qge3ZhbHVlQWNjZXNzb3J9ID0gZmllbGQ7XG5cbiAgICBsZXQgZG9tYWluO1xuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgICAgLy8gY2FsY3VsYXRlIGRvbWFpbiBhbmQgc3RlcFxuICAgICAgICByZXR1cm4gZ2V0TnVtZXJpY0ZpZWxkRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpO1xuXG4gICAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5ib29sZWFuOlxuICAgICAgICByZXR1cm4ge2RvbWFpbjogW3RydWUsIGZhbHNlXX07XG5cbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZzpcbiAgICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICAgIGRvbWFpbiA9IGdldE9yZGluYWxEb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcik7XG4gICAgICAgIHJldHVybiB7ZG9tYWlufTtcblxuICAgICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgICByZXR1cm4gZ2V0VGltZXN0YW1wRmllbGREb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7ZG9tYWluOiBnZXRPcmRpbmFsRG9tYWluKGRhdGFDb250YWluZXIsIHZhbHVlQWNjZXNzb3IpfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEdldCB0aGUgZG9tYWluIG9mIHRoaXMgY29sdW1uIGJhc2VkIG9uIHNjYWxlIHR5cGVcbiAgICovXG4gIGdldENvbHVtbkxheWVyRG9tYWluKGZpZWxkLCBzY2FsZVR5cGUpIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgZmlsdGVyZWRJbmRleEZvckRvbWFpbn0gPSB0aGlzO1xuXG4gICAgaWYgKCFTQ0FMRV9UWVBFU1tzY2FsZVR5cGVdKSB7XG4gICAgICBDb25zb2xlLmVycm9yKGBzY2FsZSB0eXBlICR7c2NhbGVUeXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7dmFsdWVBY2Nlc3Nvcn0gPSBmaWVsZDtcbiAgICBjb25zdCBpbmRleFZhbHVlQWNjZXNzb3IgPSBpID0+IHZhbHVlQWNjZXNzb3Ioe2luZGV4OiBpfSk7XG4gICAgY29uc3Qgc29ydEZ1bmN0aW9uID0gZ2V0U29ydGluZ0Z1bmN0aW9uKGZpZWxkLnR5cGUpO1xuXG4gICAgc3dpdGNoIChzY2FsZVR5cGUpIHtcbiAgICAgIGNhc2UgU0NBTEVfVFlQRVMub3JkaW5hbDpcbiAgICAgIGNhc2UgU0NBTEVfVFlQRVMucG9pbnQ6XG4gICAgICAgIC8vIGRvIG5vdCByZWNhbGN1bGF0ZSBvcmRpbmFsIGRvbWFpbiBiYXNlZCBvbiBmaWx0ZXJlZCBkYXRhXG4gICAgICAgIC8vIGRvbid0IG5lZWQgdG8gdXBkYXRlIG9yZGluYWwgZG9tYWluIGV2ZXJ5IHRpbWVcbiAgICAgICAgcmV0dXJuIGdldE9yZGluYWxEb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgICAgIGNhc2UgU0NBTEVfVFlQRVMucXVhbnRpbGU6XG4gICAgICAgIHJldHVybiBnZXRRdWFudGlsZURvbWFpbihmaWx0ZXJlZEluZGV4Rm9yRG9tYWluLCBpbmRleFZhbHVlQWNjZXNzb3IsIHNvcnRGdW5jdGlvbik7XG5cbiAgICAgIGNhc2UgU0NBTEVfVFlQRVMubG9nOlxuICAgICAgICByZXR1cm4gZ2V0TG9nRG9tYWluKGZpbHRlcmVkSW5kZXhGb3JEb21haW4sIGluZGV4VmFsdWVBY2Nlc3Nvcik7XG5cbiAgICAgIGNhc2UgU0NBTEVfVFlQRVMucXVhbnRpemU6XG4gICAgICBjYXNlIFNDQUxFX1RZUEVTLmxpbmVhcjpcbiAgICAgIGNhc2UgU0NBTEVfVFlQRVMuc3FydDpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRMaW5lYXJEb21haW4oZmlsdGVyZWRJbmRleEZvckRvbWFpbiwgaW5kZXhWYWx1ZUFjY2Vzc29yKTtcbiAgICB9XG4gIH1cblxuICBjYWxjdWxhdGVMZWdlbmQobGVmdEZpZWxkLCByaWdodEZpZWxkKSB7XG4gICAgY29uc3QgbGVmdFZhbHVlcyA9IHRoaXMuZGF0YUNvbnRhaW5lci5tYXBJbmRleChsZWZ0RmllbGQudmFsdWVBY2Nlc3Nvcik7XG4gICAgY29uc3QgcmlnaHRWYWx1ZXMgPSB0aGlzLmRhdGFDb250YWluZXIubWFwSW5kZXgocmlnaHRGaWVsZC52YWx1ZUFjY2Vzc29yKTtcblxuICAgIGNvbnN0IHBhaXJpbmcgPSBsZWZ0VmFsdWVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQsIGlkeCkgPT4ge1xuICAgICAgcHJldmlvdXMucHVzaChbY3VycmVudCwgcmlnaHRWYWx1ZXNbaWR4XV0pO1xuICAgICAgcmV0dXJuIHByZXZpb3VzO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gdW5pcXVlU29ydGVkUGFpckJ5RnJlcXVlbmN5KHBhaXJpbmcpXG4gICAgICAubWFwKHJvdyA9PiAoe2xhYmVsOiByb3cubGVmdCwgY29sb3I6IHJvdy5yaWdodH0pKVxuICAgICAgLnNsaWNlKDAsIDIwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzYW1wbGUgb2Ygcm93cyB0byBjYWxjdWxhdGUgbGF5ZXIgYm91bmRhcmllc1xuICAgKi9cbiAgLy8gZ2V0U2FtcGxlRGF0YShyb3dzKVxuXG4gIC8qKlxuICAgKiBQYXJzZSBjZWxsIHZhbHVlIGJhc2VkIG9uIGNvbHVtbiB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICogVmFsdWUgdGhlIGZpZWxkIHZhbHVlLCB0eXBlIHRoZSBmaWVsZCB0eXBlXG4gICAqL1xuICAvLyBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIHR5cGUpXG5cbiAgLy8gc29ydERhdGFzZXRCeUNvbHVtbigpXG5cbiAgLyoqXG4gICAqIEFzc2VydCB3aGV0aGVyIGZpZWxkIGV4aXN0XG4gICAqIEBwYXJhbSBmaWVsZE5hbWVcbiAgICogQHBhcmFtIGNvbmRpdGlvblxuICAgKi9cbiAgX2Fzc2V0RmllbGQoZmllbGROYW1lLCBjb25kaXRpb24pIHtcbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgQ29uc29sZS5lcnJvcihgJHtmaWVsZE5hbWV9IGRvZXNudCBleGlzdCBpbiBkYXRhc2V0ICR7dGhpcy5pZH1gKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OUyAoTUFJTkxZIEVYUE9SVEVEIEZPUiBURVNULi4uKVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU3VmZml4QW5kRGVsaW1pdGVycyhsYXllck5hbWUsIHN1ZmZpeCkge1xuICByZXR1cm4gbGF5ZXJOYW1lXG4gICAgLnJlcGxhY2UobmV3IFJlZ0V4cChzdWZmaXgsICdpZycpLCAnJylcbiAgICAucmVwbGFjZSgvW18sLl0rL2csICcgJylcbiAgICAudHJpbSgpO1xufVxuXG4vKipcbiAqIEZpbmQgcG9pbnQgZmllbGRzIHBhaXJzIGZyb20gZmllbGRzXG4gKlxuICogQHBhcmFtIGZpZWxkc1xuICogQHJldHVybnMgZm91bmQgcG9pbnQgZmllbGRzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9rZXBsZXItdGFibGUnKS5maW5kUG9pbnRGaWVsZFBhaXJzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFBvaW50RmllbGRQYWlycyhmaWVsZHMpIHtcbiAgY29uc3QgYWxsTmFtZXMgPSBmaWVsZHMubWFwKGYgPT4gZi5uYW1lLnRvTG93ZXJDYXNlKCkpO1xuXG4gIC8vIGdldCBsaXN0IG9mIGFsbCBmaWVsZHMgd2l0aCBtYXRjaGluZyBzdWZmaXhlc1xuICBjb25zdCBhY2MgPSBbXTtcbiAgY29uc3QgcmVzdWx0ID0gYWxsTmFtZXMucmVkdWNlKChjYXJyeSwgZmllbGROYW1lLCBpZHgpID0+IHtcbiAgICAvLyBUaGlzIHNlYXJjaCBmb3IgcGFpcnMgd2lsbCBlYXJseSBleGl0IGlmIGZvdW5kLlxuICAgIGZvciAoY29uc3Qgc3VmZml4UGFpciBvZiBUUklQX1BPSU5UX0ZJRUxEUykge1xuICAgICAgLy8gbWF0Y2ggZmlyc3Qgc3VmZml4YGBgXG4gICAgICBpZiAoZmllbGROYW1lLmVuZHNXaXRoKHN1ZmZpeFBhaXJbMF0pKSB7XG4gICAgICAgIC8vIG1hdGNoIHNlY29uZCBzdWZmaXhcbiAgICAgICAgY29uc3Qgb3RoZXJQYXR0ZXJuID0gbmV3IFJlZ0V4cChgJHtzdWZmaXhQYWlyWzBdfVxcJGApO1xuICAgICAgICBjb25zdCBwYXJ0bmVyID0gZmllbGROYW1lLnJlcGxhY2Uob3RoZXJQYXR0ZXJuLCBzdWZmaXhQYWlyWzFdKTtcblxuICAgICAgICBjb25zdCBwYXJ0bmVySWR4ID0gYWxsTmFtZXMuZmluZEluZGV4KGQgPT4gZCA9PT0gcGFydG5lcik7XG4gICAgICAgIGlmIChwYXJ0bmVySWR4ID4gLTEpIHtcbiAgICAgICAgICBjb25zdCBkZWZhdWx0TmFtZSA9IHJlbW92ZVN1ZmZpeEFuZERlbGltaXRlcnMoZmllbGROYW1lLCBzdWZmaXhQYWlyWzBdKTtcblxuICAgICAgICAgIGNhcnJ5LnB1c2goe1xuICAgICAgICAgICAgZGVmYXVsdE5hbWUsXG4gICAgICAgICAgICBwYWlyOiB7XG4gICAgICAgICAgICAgIGxhdDoge1xuICAgICAgICAgICAgICAgIGZpZWxkSWR4OiBpZHgsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkc1tpZHhdLm5hbWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbG5nOiB7XG4gICAgICAgICAgICAgICAgZmllbGRJZHg6IHBhcnRuZXJJZHgsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkc1twYXJ0bmVySWR4XS5uYW1lXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdWZmaXg6IHN1ZmZpeFBhaXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gY2Fycnk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9LCBhY2MpO1xuXG4gIC8vIHByaW9yaXRpemUgdGhlICdsYXRpdHVkZScvJ2xvbmdpdHVkZScgcGFpclxuICByZXN1bHQuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChhLmRlZmF1bHROYW1lID09PSAnJyAmJiBhLnN1ZmZpeFswXSA9PT0gJ2xhdGl0dWRlJykgcmV0dXJuIC0xO1xuICAgIGlmIChiLmRlZmF1bHROYW1lID09PSAnJyAmJiBiLnN1ZmZpeFswXSA9PT0gJ2xhdGl0dWRlJykgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcGFyYW0gbW9kZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4va2VwbGVyLXRhYmxlJykuc29ydERhdGFzZXRCeUNvbHVtbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnREYXRhc2V0QnlDb2x1bW4oZGF0YXNldCwgY29sdW1uLCBtb2RlKSB7XG4gIGNvbnN0IHthbGxJbmRleGVzLCBmaWVsZHMsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldDtcbiAgY29uc3QgZmllbGRJbmRleCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGNvbHVtbik7XG4gIGlmIChmaWVsZEluZGV4IDwgMCkge1xuICAgIHJldHVybiBkYXRhc2V0O1xuICB9XG5cbiAgY29uc3Qgc29ydEJ5ID0gU09SVF9PUkRFUlttb2RlXSB8fCBTT1JUX09SREVSLkFTQ0VORElORztcblxuICBpZiAoc29ydEJ5ID09PSBTT1JUX09SREVSLlVOU09SVCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kYXRhc2V0LFxuICAgICAgc29ydENvbHVtbjoge30sXG4gICAgICBzb3J0T3JkZXI6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgc29ydEZ1bmN0aW9uID0gc29ydEJ5ID09PSBTT1JUX09SREVSLkFTQ0VORElORyA/IGFzY2VuZGluZyA6IGRlc2NlbmRpbmc7XG4gIGNvbnN0IHNvcnRPcmRlciA9IGFsbEluZGV4ZXNcbiAgICAuc2xpY2UoKVxuICAgIC5zb3J0KChhLCBiKSA9PlxuICAgICAgc29ydEZ1bmN0aW9uKGRhdGFDb250YWluZXIudmFsdWVBdChhLCBmaWVsZEluZGV4KSwgZGF0YUNvbnRhaW5lci52YWx1ZUF0KGIsIGZpZWxkSW5kZXgpKVxuICAgICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5kYXRhc2V0LFxuICAgIHNvcnRDb2x1bW46IHtcbiAgICAgIFtjb2x1bW5dOiBzb3J0QnlcbiAgICB9LFxuICAgIHNvcnRPcmRlclxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlKG9yaWdpbmFsKSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9yaWdpbmFsKSksIG9yaWdpbmFsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlUYWJsZUFuZFVwZGF0ZShvcmlnaW5hbCwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhvcHRpb25zKS5yZWR1Y2UoKGFjYywgZW50cnkpID0+IHtcbiAgICBhY2NbZW50cnlbMF1dID0gZW50cnlbMV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgY29weVRhYmxlKG9yaWdpbmFsKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEtlcGxlclRhYmxlO1xuIl19
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@carto/kepler.gl",
3
3
  "author": "CARTO",
4
4
  "homepage": "https://github.com/CartoDB/carto-kepler#readme",
5
- "version": "0.0.71-alpha.6",
5
+ "version": "0.0.71-alpha.7",
6
6
  "description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
7
7
  "license": "MIT",
8
8
  "main": "dist/index.js",
@@ -351,7 +351,9 @@ class KeplerTable {
351
351
  previous.push([current, rightValues[idx]]);
352
352
  return previous;
353
353
  }, []);
354
- return uniqueSortedPairByFrequency(pairing).map(row => ({label: row.left, color: row.right}));
354
+ return uniqueSortedPairByFrequency(pairing)
355
+ .map(row => ({label: row.left, color: row.right}))
356
+ .slice(0, 20);
355
357
  }
356
358
 
357
359
  /**