@kepler.gl/utils 3.1.0-alpha.7 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -54,8 +54,8 @@ function isStyleUsingOpenStreetMapTiles(mapStyle) {
54
54
  * @param mapboxKey mapbox api key
55
55
  * @returns transformed url
56
56
  */
57
- var transformRequest = exports.transformRequest = function transformRequest(mapboxKey) {
58
- return function (url, resourceType) {
57
+ var transformRequest = exports.transformRequest = function transformRequest(_mapboxKey) {
58
+ return function (url, _resourceType) {
59
59
  /*
60
60
  if (isMapboxURL(url)) {
61
61
  // ! TODO - use MapBox directly?
@@ -78,4 +78,4 @@ var getBaseMapLibrary = exports.getBaseMapLibrary = function getBaseMapLibrary(b
78
78
  }
79
79
  return _constants.MAP_LIB_OPTIONS.MAPLIBRE;
80
80
  };
81
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsImlzU3R5bGVVc2luZ01hcGJveFRpbGVzIiwibWFwU3R5bGUiLCJfbWFwU3R5bGUkc3R5bGVzaGVldCIsInNvdXJjZXMiLCJzdHlsZXNoZWV0IiwiT2JqZWN0Iiwia2V5cyIsInNvbWUiLCJzb3VyY2VJZCIsIl9yZWYiLCJ1cmwiLCJ0aWxlcyIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsInRpbGVVcmwiLCJpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXMiLCJfbWFwU3R5bGUkc3R5bGVzaGVldDIiLCJfcmVmMiIsImF0dHJpYnV0aW9uIiwiaW5jbHVkZXMiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiZXhwb3J0cyIsIm1hcGJveEtleSIsInJlc291cmNlVHlwZSIsImdldEJhc2VNYXBMaWJyYXJ5IiwiYmFzZU1hcFN0eWxlIiwiX2Jhc2VNYXBTdHlsZSR1cmwiLCJfYmFzZU1hcFN0eWxlJHVybDIiLCJfYmFzZU1hcFN0eWxlJHN0eWxlIiwiTUFQX0xJQl9PUFRJT05TIiwiTUFQQk9YIiwic3R5bGUiLCJNQVBMSUJSRSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGltcG9ydCB7aXNNYXBib3hVUkwsIHRyYW5zZm9ybU1hcGJveFVybH0gZnJvbSAnbWFwbGlicmVnbC1tYXBib3gtcmVxdWVzdC10cmFuc2Zvcm1lcic7XG5cbmltcG9ydCB7TUFQX0xJQl9PUFRJT05TLCBCYXNlTWFwTGlicmFyeVR5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBNYXAgU3R5bGUgaXMgdXNpbmcgTWFwYm94IFRpbGVzXG4gKiBAcGFyYW0ge2FueX0gbWFwU3R5bGUgdGhlIG1hcFN0eWxlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzdHlsZSBpcyB1c2luZyBNYXBib3ggdGlsZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3R5bGVVc2luZ01hcGJveFRpbGVzKG1hcFN0eWxlKSB7XG4gIGNvbnN0IHNvdXJjZXMgPSBtYXBTdHlsZS5zdHlsZXNoZWV0Py5zb3VyY2VzIHx8IHt9O1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2VzKS5zb21lKHNvdXJjZUlkID0+IHtcbiAgICBjb25zdCB7dXJsLCB0aWxlc30gPSBzb3VyY2VzW3NvdXJjZUlkXSB8fCB7fTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdtYXBib3g6Ly8nKTtcbiAgICB9XG5cbiAgICBpZiAodGlsZXMpIHtcbiAgICAgIHJldHVybiB0aWxlcy5zb21lKHRpbGVVcmwgPT4gdGlsZVVybC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ21hcGJveDovLycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzKG1hcFN0eWxlOiBhbnkpIHtcbiAgY29uc3Qgc291cmNlcyA9IG1hcFN0eWxlPy5zdHlsZXNoZWV0Py5zb3VyY2VzIHx8IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlcykuc29tZShzb3VyY2VJZCA9PiB7XG4gICAgY29uc3Qge2F0dHJpYnV0aW9ufSA9IHNvdXJjZXNbc291cmNlSWRdIHx8IHt9O1xuICAgIGlmICh0eXBlb2YgYXR0cmlidXRpb24/LmF0dHJpYnV0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uLmluY2x1ZGVzKCdvcGVuc3RyZWV0bWFwLm9yZycpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBtYXBib3ggcHJvdG9jb2wgc28gY2FuIGJlIHVzZWQgd2l0aCBtYXBsaWJyZVxuICogQHBhcmFtIG1hcGJveEtleSBtYXBib3ggYXBpIGtleVxuICogQHJldHVybnMgdHJhbnNmb3JtZWQgdXJsXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1SZXF1ZXN0ID0gKFxuICBtYXBib3hLZXk6IHN0cmluZ1xuKTogKCh1cmw6IHN0cmluZywgcmVzb3VyY2VUeXBlOiBzdHJpbmcpID0+IHt1cmw6IHN0cmluZ30pID0+IHtcbiAgcmV0dXJuICh1cmw6IHN0cmluZywgcmVzb3VyY2VUeXBlOiBzdHJpbmcpID0+IHtcbiAgICAvKlxuICAgIGlmIChpc01hcGJveFVSTCh1cmwpKSB7XG4gICAgICAvLyAhIFRPRE8gLSB1c2UgTWFwQm94IGRpcmVjdGx5P1xuICAgICAgcmV0dXJuIHRyYW5zZm9ybU1hcGJveFVybCh1cmwsIHJlc291cmNlVHlwZSwgbWFwYm94S2V5KTtcbiAgICB9XG4gICAgKi9cblxuICAgIHJldHVybiB7dXJsfTtcbiAgfTtcbn07XG5cbnR5cGUgU3R5bGVXaXRoU291cmNlcyA9IHtcbiAgc291cmNlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmFzZU1hcExpYnJhcnkgPSAoYmFzZU1hcFN0eWxlPzoge1xuICB1cmw/OiBzdHJpbmcgfCBudWxsO1xuICBzdHlsZT86IGFueTtcbn0pOiBCYXNlTWFwTGlicmFyeVR5cGUgPT4ge1xuICBpZiAoYmFzZU1hcFN0eWxlKSB7XG4gICAgaWYgKGJhc2VNYXBTdHlsZS51cmw/LnN0YXJ0c1dpdGgoJ21hcGJveDovLycpIHx8IGJhc2VNYXBTdHlsZS51cmw/LmluY2x1ZGVzKCdtYXBib3guY29tJykpIHtcbiAgICAgIHJldHVybiBNQVBfTElCX09QVElPTlMuTUFQQk9YO1xuICAgIH1cblxuICAgIGlmICgoYmFzZU1hcFN0eWxlLnN0eWxlIGFzIFN0eWxlV2l0aFNvdXJjZXMpPy5zb3VyY2VzPy5bJ21hcGJveCddKVxuICAgICAgcmV0dXJuIE1BUF9MSUJfT1BUSU9OUy5NQVBCT1g7XG4gIH1cblxuICByZXR1cm4gTUFQX0xJQl9PUFRJT05TLk1BUExJQlJFO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBS0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBTEE7QUFDQTs7QUFFQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsdUJBQXVCQSxDQUFDQyxRQUFRLEVBQUU7RUFBQSxJQUFBQyxvQkFBQTtFQUNoRCxJQUFNQyxPQUFPLEdBQUcsRUFBQUQsb0JBQUEsR0FBQUQsUUFBUSxDQUFDRyxVQUFVLGNBQUFGLG9CQUFBLHVCQUFuQkEsb0JBQUEsQ0FBcUJDLE9BQU8sS0FBSSxDQUFDLENBQUM7RUFFbEQsT0FBT0UsTUFBTSxDQUFDQyxJQUFJLENBQUNILE9BQU8sQ0FBQyxDQUFDSSxJQUFJLENBQUMsVUFBQUMsUUFBUSxFQUFJO0lBQzNDLElBQUFDLElBQUEsR0FBcUJOLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO01BQXJDRSxHQUFHLEdBQUFELElBQUEsQ0FBSEMsR0FBRztNQUFFQyxLQUFLLEdBQUFGLElBQUEsQ0FBTEUsS0FBSztJQUVqQixJQUFJRCxHQUFHLEVBQUU7TUFDUCxPQUFPQSxHQUFHLENBQUNFLFdBQVcsQ0FBQyxDQUFDLENBQUNDLFVBQVUsQ0FBQyxXQUFXLENBQUM7SUFDbEQ7SUFFQSxJQUFJRixLQUFLLEVBQUU7TUFDVCxPQUFPQSxLQUFLLENBQUNKLElBQUksQ0FBQyxVQUFBTyxPQUFPO1FBQUEsT0FBSUEsT0FBTyxDQUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDQyxVQUFVLENBQUMsV0FBVyxDQUFDO01BQUEsRUFBQztJQUM3RTtJQUVBLE9BQU8sS0FBSztFQUNkLENBQUMsQ0FBQztBQUNKO0FBRU8sU0FBU0UsOEJBQThCQSxDQUFDZCxRQUFhLEVBQUU7RUFBQSxJQUFBZSxxQkFBQTtFQUM1RCxJQUFNYixPQUFPLEdBQUcsQ0FBQUYsUUFBUSxhQUFSQSxRQUFRLGdCQUFBZSxxQkFBQSxHQUFSZixRQUFRLENBQUVHLFVBQVUsY0FBQVkscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQmIsT0FBTyxLQUFJLENBQUMsQ0FBQztFQUNuRCxPQUFPRSxNQUFNLENBQUNDLElBQUksQ0FBQ0gsT0FBTyxDQUFDLENBQUNJLElBQUksQ0FBQyxVQUFBQyxRQUFRLEVBQUk7SUFDM0MsSUFBQVMsS0FBQSxHQUFzQmQsT0FBTyxDQUFDSyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7TUFBdENVLFdBQVcsR0FBQUQsS0FBQSxDQUFYQyxXQUFXO0lBQ2xCLElBQUksUUFBT0EsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVBLFdBQVcsTUFBSyxRQUFRLEVBQUU7TUFDaEQsT0FBT0EsV0FBVyxDQUFDQSxXQUFXLENBQUNDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztJQUM5RDtJQUNBLE9BQU8sS0FBSztFQUNkLENBQUMsQ0FBQztBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBQUMsT0FBQSxDQUFBRCxnQkFBQSxHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQzNCRSxTQUFpQixFQUMwQztFQUMzRCxPQUFPLFVBQUNaLEdBQVcsRUFBRWEsWUFBb0IsRUFBSztJQUM1QztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBRUksT0FBTztNQUFDYixHQUFHLEVBQUhBO0lBQUcsQ0FBQztFQUNkLENBQUM7QUFDSCxDQUFDO0FBTU0sSUFBTWMsaUJBQWlCLEdBQUFILE9BQUEsQ0FBQUcsaUJBQUEsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJQyxZQUdqQyxFQUF5QjtFQUN4QixJQUFJQSxZQUFZLEVBQUU7SUFBQSxJQUFBQyxpQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyxtQkFBQTtJQUNoQixJQUFJLENBQUFGLGlCQUFBLEdBQUFELFlBQVksQ0FBQ2YsR0FBRyxjQUFBZ0IsaUJBQUEsZUFBaEJBLGlCQUFBLENBQWtCYixVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUFjLGtCQUFBLEdBQUlGLFlBQVksQ0FBQ2YsR0FBRyxjQUFBaUIsa0JBQUEsZUFBaEJBLGtCQUFBLENBQWtCUixRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7TUFDekYsT0FBT1UsMEJBQWUsQ0FBQ0MsTUFBTTtJQUMvQjtJQUVBLEtBQUFGLG1CQUFBLEdBQUtILFlBQVksQ0FBQ00sS0FBSyxjQUFBSCxtQkFBQSxnQkFBQUEsbUJBQUEsR0FBbkJBLG1CQUFBLENBQTBDekIsT0FBTyxjQUFBeUIsbUJBQUEsZUFBakRBLG1CQUFBLENBQW9ELFFBQVEsQ0FBQyxFQUMvRCxPQUFPQywwQkFBZSxDQUFDQyxNQUFNO0VBQ2pDO0VBRUEsT0FBT0QsMEJBQWUsQ0FBQ0csUUFBUTtBQUNqQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
81
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsImlzU3R5bGVVc2luZ01hcGJveFRpbGVzIiwibWFwU3R5bGUiLCJfbWFwU3R5bGUkc3R5bGVzaGVldCIsInNvdXJjZXMiLCJzdHlsZXNoZWV0IiwiT2JqZWN0Iiwia2V5cyIsInNvbWUiLCJzb3VyY2VJZCIsIl9yZWYiLCJ1cmwiLCJ0aWxlcyIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsInRpbGVVcmwiLCJpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXMiLCJfbWFwU3R5bGUkc3R5bGVzaGVldDIiLCJfcmVmMiIsImF0dHJpYnV0aW9uIiwiaW5jbHVkZXMiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiZXhwb3J0cyIsIl9tYXBib3hLZXkiLCJfcmVzb3VyY2VUeXBlIiwiZ2V0QmFzZU1hcExpYnJhcnkiLCJiYXNlTWFwU3R5bGUiLCJfYmFzZU1hcFN0eWxlJHVybCIsIl9iYXNlTWFwU3R5bGUkdXJsMiIsIl9iYXNlTWFwU3R5bGUkc3R5bGUiLCJNQVBfTElCX09QVElPTlMiLCJNQVBCT1giLCJzdHlsZSIsIk1BUExJQlJFIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gaW1wb3J0IHtpc01hcGJveFVSTCwgdHJhbnNmb3JtTWFwYm94VXJsfSBmcm9tICdtYXBsaWJyZWdsLW1hcGJveC1yZXF1ZXN0LXRyYW5zZm9ybWVyJztcblxuaW1wb3J0IHtNQVBfTElCX09QVElPTlMsIEJhc2VNYXBMaWJyYXJ5VHlwZX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIE1hcCBTdHlsZSBpcyB1c2luZyBNYXBib3ggVGlsZXNcbiAqIEBwYXJhbSB7YW55fSBtYXBTdHlsZSB0aGUgbWFwU3R5bGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHN0eWxlIGlzIHVzaW5nIE1hcGJveCB0aWxlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHlsZVVzaW5nTWFwYm94VGlsZXMobWFwU3R5bGUpIHtcbiAgY29uc3Qgc291cmNlcyA9IG1hcFN0eWxlLnN0eWxlc2hlZXQ/LnNvdXJjZXMgfHwge307XG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZXMpLnNvbWUoc291cmNlSWQgPT4ge1xuICAgIGNvbnN0IHt1cmwsIHRpbGVzfSA9IHNvdXJjZXNbc291cmNlSWRdIHx8IHt9O1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgcmV0dXJuIHVybC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ21hcGJveDovLycpO1xuICAgIH1cblxuICAgIGlmICh0aWxlcykge1xuICAgICAgcmV0dXJuIHRpbGVzLnNvbWUodGlsZVVybCA9PiB0aWxlVXJsLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFwYm94Oi8vJykpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXMobWFwU3R5bGU6IGFueSkge1xuICBjb25zdCBzb3VyY2VzID0gbWFwU3R5bGU/LnN0eWxlc2hlZXQ/LnNvdXJjZXMgfHwge307XG4gIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2VzKS5zb21lKHNvdXJjZUlkID0+IHtcbiAgICBjb25zdCB7YXR0cmlidXRpb259ID0gc291cmNlc1tzb3VyY2VJZF0gfHwge307XG4gICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGlvbj8uYXR0cmlidXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gYXR0cmlidXRpb24uYXR0cmlidXRpb24uaW5jbHVkZXMoJ29wZW5zdHJlZXRtYXAub3JnJyk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtIG1hcGJveCBwcm90b2NvbCBzbyBjYW4gYmUgdXNlZCB3aXRoIG1hcGxpYnJlXG4gKiBAcGFyYW0gbWFwYm94S2V5IG1hcGJveCBhcGkga2V5XG4gKiBAcmV0dXJucyB0cmFuc2Zvcm1lZCB1cmxcbiAqL1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVJlcXVlc3QgPSAoXG4gIF9tYXBib3hLZXk6IHN0cmluZ1xuKTogKCh1cmw6IHN0cmluZywgcmVzb3VyY2VUeXBlOiBzdHJpbmcpID0+IHt1cmw6IHN0cmluZ30pID0+IHtcbiAgcmV0dXJuICh1cmw6IHN0cmluZywgX3Jlc291cmNlVHlwZTogc3RyaW5nKSA9PiB7XG4gICAgLypcbiAgICBpZiAoaXNNYXBib3hVUkwodXJsKSkge1xuICAgICAgLy8gISBUT0RPIC0gdXNlIE1hcEJveCBkaXJlY3RseT9cbiAgICAgIHJldHVybiB0cmFuc2Zvcm1NYXBib3hVcmwodXJsLCByZXNvdXJjZVR5cGUsIG1hcGJveEtleSk7XG4gICAgfVxuICAgICovXG5cbiAgICByZXR1cm4ge3VybH07XG4gIH07XG59O1xuXG50eXBlIFN0eWxlV2l0aFNvdXJjZXMgPSB7XG4gIHNvdXJjZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJhc2VNYXBMaWJyYXJ5ID0gKGJhc2VNYXBTdHlsZT86IHtcbiAgdXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgc3R5bGU/OiBhbnk7XG59KTogQmFzZU1hcExpYnJhcnlUeXBlID0+IHtcbiAgaWYgKGJhc2VNYXBTdHlsZSkge1xuICAgIGlmIChiYXNlTWFwU3R5bGUudXJsPy5zdGFydHNXaXRoKCdtYXBib3g6Ly8nKSB8fCBiYXNlTWFwU3R5bGUudXJsPy5pbmNsdWRlcygnbWFwYm94LmNvbScpKSB7XG4gICAgICByZXR1cm4gTUFQX0xJQl9PUFRJT05TLk1BUEJPWDtcbiAgICB9XG5cbiAgICBpZiAoKGJhc2VNYXBTdHlsZS5zdHlsZSBhcyBTdHlsZVdpdGhTb3VyY2VzKT8uc291cmNlcz8uWydtYXBib3gnXSlcbiAgICAgIHJldHVybiBNQVBfTElCX09QVElPTlMuTUFQQk9YO1xuICB9XG5cbiAgcmV0dXJuIE1BUF9MSUJfT1BUSU9OUy5NQVBMSUJSRTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUtBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUxBO0FBQ0E7O0FBRUE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLHVCQUF1QkEsQ0FBQ0MsUUFBUSxFQUFFO0VBQUEsSUFBQUMsb0JBQUE7RUFDaEQsSUFBTUMsT0FBTyxHQUFHLEVBQUFELG9CQUFBLEdBQUFELFFBQVEsQ0FBQ0csVUFBVSxjQUFBRixvQkFBQSx1QkFBbkJBLG9CQUFBLENBQXFCQyxPQUFPLEtBQUksQ0FBQyxDQUFDO0VBRWxELE9BQU9FLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSCxPQUFPLENBQUMsQ0FBQ0ksSUFBSSxDQUFDLFVBQUFDLFFBQVEsRUFBSTtJQUMzQyxJQUFBQyxJQUFBLEdBQXFCTixPQUFPLENBQUNLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztNQUFyQ0UsR0FBRyxHQUFBRCxJQUFBLENBQUhDLEdBQUc7TUFBRUMsS0FBSyxHQUFBRixJQUFBLENBQUxFLEtBQUs7SUFFakIsSUFBSUQsR0FBRyxFQUFFO01BQ1AsT0FBT0EsR0FBRyxDQUFDRSxXQUFXLENBQUMsQ0FBQyxDQUFDQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQ2xEO0lBRUEsSUFBSUYsS0FBSyxFQUFFO01BQ1QsT0FBT0EsS0FBSyxDQUFDSixJQUFJLENBQUMsVUFBQU8sT0FBTztRQUFBLE9BQUlBLE9BQU8sQ0FBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQ0MsVUFBVSxDQUFDLFdBQVcsQ0FBQztNQUFBLEVBQUM7SUFDN0U7SUFFQSxPQUFPLEtBQUs7RUFDZCxDQUFDLENBQUM7QUFDSjtBQUVPLFNBQVNFLDhCQUE4QkEsQ0FBQ2QsUUFBYSxFQUFFO0VBQUEsSUFBQWUscUJBQUE7RUFDNUQsSUFBTWIsT0FBTyxHQUFHLENBQUFGLFFBQVEsYUFBUkEsUUFBUSxnQkFBQWUscUJBQUEsR0FBUmYsUUFBUSxDQUFFRyxVQUFVLGNBQUFZLHFCQUFBLHVCQUFwQkEscUJBQUEsQ0FBc0JiLE9BQU8sS0FBSSxDQUFDLENBQUM7RUFDbkQsT0FBT0UsTUFBTSxDQUFDQyxJQUFJLENBQUNILE9BQU8sQ0FBQyxDQUFDSSxJQUFJLENBQUMsVUFBQUMsUUFBUSxFQUFJO0lBQzNDLElBQUFTLEtBQUEsR0FBc0JkLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO01BQXRDVSxXQUFXLEdBQUFELEtBQUEsQ0FBWEMsV0FBVztJQUNsQixJQUFJLFFBQU9BLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFQSxXQUFXLE1BQUssUUFBUSxFQUFFO01BQ2hELE9BQU9BLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7SUFDOUQ7SUFDQSxPQUFPLEtBQUs7RUFDZCxDQUFDLENBQUM7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZ0JBQWdCLEdBQUFDLE9BQUEsQ0FBQUQsZ0JBQUEsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUMzQkUsVUFBa0IsRUFDeUM7RUFDM0QsT0FBTyxVQUFDWixHQUFXLEVBQUVhLGFBQXFCLEVBQUs7SUFDN0M7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVJLE9BQU87TUFBQ2IsR0FBRyxFQUFIQTtJQUFHLENBQUM7RUFDZCxDQUFDO0FBQ0gsQ0FBQztBQU1NLElBQU1jLGlCQUFpQixHQUFBSCxPQUFBLENBQUFHLGlCQUFBLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsWUFHakMsRUFBeUI7RUFDeEIsSUFBSUEsWUFBWSxFQUFFO0lBQUEsSUFBQUMsaUJBQUEsRUFBQUMsa0JBQUEsRUFBQUMsbUJBQUE7SUFDaEIsSUFBSSxDQUFBRixpQkFBQSxHQUFBRCxZQUFZLENBQUNmLEdBQUcsY0FBQWdCLGlCQUFBLGVBQWhCQSxpQkFBQSxDQUFrQmIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFBYyxrQkFBQSxHQUFJRixZQUFZLENBQUNmLEdBQUcsY0FBQWlCLGtCQUFBLGVBQWhCQSxrQkFBQSxDQUFrQlIsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO01BQ3pGLE9BQU9VLDBCQUFlLENBQUNDLE1BQU07SUFDL0I7SUFFQSxLQUFBRixtQkFBQSxHQUFLSCxZQUFZLENBQUNNLEtBQUssY0FBQUgsbUJBQUEsZ0JBQUFBLG1CQUFBLEdBQW5CQSxtQkFBQSxDQUEwQ3pCLE9BQU8sY0FBQXlCLG1CQUFBLGVBQWpEQSxtQkFBQSxDQUFvRCxRQUFRLENBQUMsRUFDL0QsT0FBT0MsMEJBQWUsQ0FBQ0MsTUFBTTtFQUNqQztFQUVBLE9BQU9ELDBCQUFlLENBQUNHLFFBQVE7QUFDakMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
package/dist/plot.d.ts CHANGED
@@ -115,9 +115,9 @@ export declare function adjustValueToAnimationWindow<S extends MinVisStateForAni
115
115
  * @param datasets
116
116
  * @param dataId
117
117
  */
118
- export declare function updateTimeFilterPlotType(filter: TimeRangeFilter, plotType: TimeRangeFilter['plotType'], datasets: Datasets, dataId?: string): TimeRangeFilter;
118
+ export declare function updateTimeFilterPlotType(filter: TimeRangeFilter, plotType: TimeRangeFilter['plotType'], datasets: Datasets, _dataId?: string): TimeRangeFilter;
119
119
  export declare function getRangeFilterBins(filter: any, datasets: any, numBins: any): any;
120
- export declare function updateRangeFilterPlotType(filter: RangeFilter, plotType: RangeFilter['plotType'], datasets: Datasets, dataId?: string): RangeFilter;
120
+ export declare function updateRangeFilterPlotType(filter: RangeFilter, plotType: RangeFilter['plotType'], datasets: Datasets, _dataId?: string): RangeFilter;
121
121
  export declare function getChartTitle(yAxis: Field, plotType: PlotType): string;
122
122
  export declare function getDefaultPlotType(filter: any, datasets: any): {
123
123
  interval: string;
package/dist/plot.js CHANGED
@@ -165,7 +165,7 @@ function histogramFromDomain(domain, values, numBins, valueAccessor) {
165
165
  */
166
166
  function getTimeBins(filter, datasets, interval) {
167
167
  var bins = filter.timeBins || {};
168
- filter.dataId.forEach(function (dataId, dataIdIdx) {
168
+ filter.dataId.forEach(function (dataId) {
169
169
  // reuse bins if filterData did not change
170
170
  if (bins[dataId] && bins[dataId][interval]) {
171
171
  return;
@@ -362,7 +362,7 @@ var getAggregationOptiosnBasedOnField = exports.getAggregationOptiosnBasedOnFiel
362
362
  }
363
363
  return _constants.TIME_AGGREGATION;
364
364
  };
365
- function getDelta(bins, y, interval) {
365
+ function getDelta(bins, y, _interval) {
366
366
  // if (WOW[interval]) return getWow(bins, y, interval);
367
367
  var lastBin = bins[bins.length - 1];
368
368
  return {
@@ -401,7 +401,7 @@ function getLineChart(datasets, filter) {
401
401
  var dataset = datasets[seriesDataId];
402
402
  var getYValue = getValueAggrFunc(yAxis, aggregation, dataset);
403
403
  var init = [];
404
- var series = (bins || []).reduce(function (accu, bin, i) {
404
+ var series = (bins || []).reduce(function (accu, bin) {
405
405
  var y = getYValue(bin);
406
406
  var delta = getDelta(accu, y, interval);
407
407
  accu.push(_objectSpread({
@@ -540,7 +540,7 @@ function getFilterPlotColorsByDataId(filter, datasets, oldColorsByDataId) {
540
540
  * @param datasets
541
541
  * @param dataId
542
542
  */
543
- function updateTimeFilterPlotType(filter, plotType, datasets, dataId) {
543
+ function updateTimeFilterPlotType(filter, plotType, datasets, _dataId) {
544
544
  var nextFilter = filter;
545
545
  var nextPlotType = plotType;
546
546
  if ((0, _typeof2["default"])(nextPlotType) !== 'object' || !nextPlotType.aggregation || !nextPlotType.interval) {
@@ -595,7 +595,7 @@ function getRangeFilterBins(filter, datasets, numBins) {
595
595
  return acc;
596
596
  }, {});
597
597
  }
598
- function updateRangeFilterPlotType(filter, plotType, datasets, dataId) {
598
+ function updateRangeFilterPlotType(filter, plotType, datasets, _dataId) {
599
599
  var nextFilter = _objectSpread(_objectSpread({}, filter), {}, {
600
600
  plotType: plotType
601
601
  });
@@ -634,4 +634,4 @@ function getDefaultPlotType(filter, datasets) {
634
634
  aggregation: _constants.AGGREGATION_TYPES.sum
635
635
  };
636
636
  }
637
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl90aW1lIiwiX21vbWVudCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfZGF0YVV0aWxzIiwiX2FnZ3JlZ2F0aW9uIiwiX3N0cmluZ3MiLCJfZm9ybWF0IiwiX2NvbG9yVXRpbHMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJoaXN0b2dyYW1Gcm9tVGhyZXNob2xkIiwidGhyZXNob2xkcyIsInZhbHVlcyIsInZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJFbXB0eUJpbnMiLCJ1bmRlZmluZWQiLCJnZXRCaW5zIiwiZDNIaXN0b2dyYW0iLCJkb21haW4iLCJiaW5zIiwibWFwIiwiYmluIiwiY291bnQiLCJpbmRleGVzIiwieDAiLCJ4MSIsImIiLCJoaXN0b2dyYW1Gcm9tVmFsdWVzIiwibnVtQmlucyIsImlzTnVtYmVyIiwiaGlzdG9ncmFtRnJvbU9yZGluYWwiLCJoaXN0b2dyYW1Gcm9tRG9tYWluIiwidGlja3MiLCJnZXRUaW1lQmlucyIsImRhdGFzZXRzIiwiaW50ZXJ2YWwiLCJ0aW1lQmlucyIsImRhdGFJZCIsImRhdGFJZElkeCIsImRhdGFzZXQiLCJydW5HcHVGaWx0ZXJGb3JQbG90IiwiYmluQnlUaW1lIiwibWFwcGVkVmFsdWUiLCJnZXRGaWx0ZXJNYXBwZWRWYWx1ZSIsImludGVydmFsQmlucyIsImdldEJpblRocmVzaG9sZHMiLCJpZHgiLCJ0aW1lSW50ZXJ2YWwiLCJpbnRlcnZhbFRvRnVuY3Rpb24iLCJfZG9tYWluIiwiX3NsaWNlZFRvQXJyYXkyIiwidDAiLCJ0MSIsImZsb29yIiwiZ2V0VGltZSIsImNlaWxpbmciLCJjZWlsIiwiZHVyYXRpb25EYXkiLCJiaW5UaHJlc2hvbGRzIiwicmFuZ2UiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwibGFzdFN0ZXAiLCJvZmZzZXQiLCJza2lwSW5kZXhlcyIsImdldFNraXBJbmRleGVzIiwiX2RhdGFzZXQkZ3B1RmlsdGVyIiwiZ3B1RmlsdGVyIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImZpbHRlclJhbmdlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImZpbHRlcmVkSW5kZXgiLCJnZXRGaWx0ZXJWYWx1ZSIsImRhdGFDb250YWluZXIiLCJhbGxDaGFubmVscyIsIl8iLCJpIiwic2tpcEFsbCIsImluY2x1ZGVzIiwiZmlsdGVyRGF0YSIsImdldEZpbHRlckRhdGFGdW5jIiwiZ3B1RmlsdGVycyIsInZhbHVlSW5kZXgiLCJmaW5kSW5kZXgiLCJpZCIsImZpbHRlckNvbHVtbiIsInJlZHVjZSIsImFjY3UiLCJpdGVtIiwic2tpcHMiLCJpbmRleCIsImV2ZXJ5IiwidmFsIiwidmFsaWRCaW4iLCJzbmFwVG9NYXJrcyIsIm1hcmtzIiwiYmlzZWN0TGVmdCIsIm5vcm1hbGl6ZVZhbHVlIiwibWluVmFsdWUiLCJzdGVwIiwicm91bmRWYWxUb1N0ZXAiLCJpc1BlcmNlbnRGaWVsZCIsImZpZWxkIiwibWV0YWRhdGEiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsInVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZCIsImFnZ3JlZ2F0aW9uIiwiQUdHUkVHQVRJT05fVFlQRVMiLCJhdmVyYWdlIiwiZ2V0QWdyZWdhdGlvblR5cGUiLCJnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yIiwiZmllbGRzIiwibnVtZXJhdG9ySWR4IiwiZGVub21pbmF0b3JJZHgiLCJnZXROdW1lcmF0b3IiLCJ2YWx1ZUF0IiwiZ2V0RGVub21pbmF0b3IiLCJnZXRWYWx1ZUFnZ3JGdW5jIiwiZXhwb3J0cyIsImRhdGFzZXRGaWVsZCIsImZpbmQiLCJhZ2dyZWdhdGUiLCJnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQiLCJUSU1FX0FHR1JFR0FUSU9OIiwiX3JlZiIsInN1bSIsImdldERlbHRhIiwieSIsImxhc3RCaW4iLCJkZWx0YSIsInBjdCIsImdldFBjdENoYW5nZSIsInkwIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRMaW5lQ2hhcnQiLCJfdGltZUJpbnMiLCJ5QXhpcyIsInBsb3RUeXBlIiwibGluZUNoYXJ0Iiwic2VyaWVzRGF0YUlkIiwiaXNFcXVhbCIsImdldFlWYWx1ZSIsImluaXQiLCJzZXJpZXMiLCJ4IiwieURvbWFpbiIsImV4dGVudCIsImQiLCJ4RG9tYWluIiwic3BsaXQiLCJzcGxpdFNlcmllcyIsImFnZ3JOYW1lIiwiQUdHUkVHQVRJT05fTkFNRSIsInRpdGxlIiwiY29uY2F0IiwiZmllbGRUeXBlIiwidHlwZSIsImFsbFRpbWUiLCJsaW5lcyIsInRlbXAiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJtYXJrZXJzIiwiYWRqdXN0VmFsdWVUb0FuaW1hdGlvbldpbmRvdyIsInN0YXRlIiwiX2ZpbHRlciR2YWx1ZSIsInZhbHVlMCIsInZhbHVlMSIsImFuaW1hdGlvbldpbmRvdyIsImdldEluaXRpYWxJbnRlcnZhbCIsImRhdGFzZXRCaW5zIiwidmFsMCIsInZhbDEiLCJBTklNQVRJT05fV0lORE9XIiwiaW5kZXhPZiIsIk5hTiIsInVwZGF0ZWRGaWx0ZXIiLCJnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQiLCJvbGRDb2xvcnNCeURhdGFJZCIsImNvbG9yc0J5RGF0YUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJyZ2JUb0hleCIsImNvbG9yIiwiZXJyIiwidXBkYXRlVGltZUZpbHRlclBsb3RUeXBlIiwibmV4dEZpbHRlciIsIm5leHRQbG90VHlwZSIsIl90eXBlb2YyIiwiZ2V0RGVmYXVsdFBsb3RUeXBlIiwiUExPVF9UWVBFUyIsImhpc3RvZ3JhbSIsImdldFJhbmdlRmlsdGVyQmlucyIsImFjYyIsImRhdGFzZXRJZHgiLCJfZmlsdGVyJGJpbnMiLCJmaWVsZE5hbWUiLCJnZXRDb2x1bW5GaWVsZCIsInVwZGF0ZVJhbmdlRmlsdGVyUGxvdFR5cGUiLCJCSU5TIiwiZ2V0Q2hhcnRUaXRsZSIsInlBeGlzTmFtZSIsImRpc3BsYXlOYW1lIiwiY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIiwiZGVmYXVsdFRpbWVGb3JtYXQiLCJnZXREZWZhdWx0VGltZUZvcm1hdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wbG90LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7YmlzZWN0TGVmdCwgZXh0ZW50LCBoaXN0b2dyYW0gYXMgZDNIaXN0b2dyYW0sIHRpY2tzfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2guaXNlcXVhbCc7XG5pbXBvcnQge2dldEZpbHRlck1hcHBlZFZhbHVlLCBnZXRJbml0aWFsSW50ZXJ2YWwsIGludGVydmFsVG9GdW5jdGlvbn0gZnJvbSAnLi90aW1lJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7XG4gIEJpbixcbiAgVGltZUJpbnMsXG4gIE1pbGxpc2Vjb25kLFxuICBUaW1lUmFuZ2VGaWx0ZXIsXG4gIFJhbmdlRmlsdGVyLFxuICBQbG90VHlwZSxcbiAgRmlsdGVyLFxuICBMaW5lQ2hhcnQsXG4gIEZpZWxkLFxuICBWYWx1ZU9mLFxuICBMaW5lRGF0dW1cbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgQU5JTUFUSU9OX1dJTkRPVyxcbiAgQklOUyxcbiAgZHVyYXRpb25EYXksXG4gIFRJTUVfQUdHUkVHQVRJT04sXG4gIEFHR1JFR0FUSU9OX1RZUEVTLFxuICBQTE9UX1RZUEVTLFxuICBBZ2dyZWdhdGlvblR5cGVzXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtpc051bWJlciwgcm91bmRWYWxUb1N0ZXB9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge2FnZ3JlZ2F0ZSwgQUdHUkVHQVRJT05fTkFNRX0gZnJvbSAnLi9hZ2dyZWdhdGlvbic7XG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAnLi9zdHJpbmdzJztcbmltcG9ydCB7Z2V0RGVmYXVsdFRpbWVGb3JtYXR9IGZyb20gJy4vZm9ybWF0JztcbmltcG9ydCB7cmdiVG9IZXh9IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuJztcbmltcG9ydCB7S2VwbGVyVGFibGVNb2RlbH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFRPRE8ga2VwbGVyLXRhYmxlIG1vZHVsZSBpc24ndCBhY2Nlc3NpYmxlIGZyb20gdXRpbHMuIEFkZCBjb21wYXRpYmxlIGludGVyZmFjZSB0byB0eXBlc1xudHlwZSBEYXRhc2V0cyA9IGFueTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHRocmVzaG9sZHNcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEBwYXJhbSBpbmRleGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKFxuICB0aHJlc2hvbGRzOiBudW1iZXJbXSxcbiAgdmFsdWVzOiBudW1iZXJbXSxcbiAgdmFsdWVBY2Nlc3Nvcj86IChkOiB1bmtub3duKSA9PiBudW1iZXIsXG4gIGZpbHRlckVtcHR5QmlucyA9IHRydWVcbik6IEJpbltdIHtcbiAgY29uc3QgZ2V0QmlucyA9IGQzSGlzdG9ncmFtKClcbiAgICAuZG9tYWluKFt0aHJlc2hvbGRzWzBdLCB0aHJlc2hvbGRzW3RocmVzaG9sZHMubGVuZ3RoIC0gMV1dKVxuICAgIC50aHJlc2hvbGRzKHRocmVzaG9sZHMpO1xuXG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgYmlucyA9IGdldEJpbnModmFsdWVzKS5tYXAoYmluID0+ICh7XG4gICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgaW5kZXhlczogYmluLFxuICAgIHgwOiBiaW4ueDAsXG4gICAgeDE6IGJpbi54MVxuICB9KSk7XG5cbiAgLy8gZDMtaGlzdG9ncmFtIGlnbm9yZXMgdGhyZXNob2xkIHZhbHVlcyBvdXRzaWRlIHRoZSBkb21haW5cbiAgLy8gVGhlIGZpcnN0IGJpbi54MCBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIG1pbmltdW0gZG9tYWluIHZhbHVlLCBhbmQgdGhlIGxhc3QgYmluLngxIGlzIGFsd2F5cyBlcXVhbCB0byB0aGUgbWF4aW11bSBkb21haW4gdmFsdWUuXG5cbiAgLy8gYmluc1swXS54MCA9IHRocmVzaG9sZHNbMF07XG4gIC8vIGJpbnNbYmlucy5sZW5ndGggLSAxXS54MSA9IHRocmVzaG9sZHNbdGhyZXNob2xkcy5sZW5ndGggLSAxXTtcblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBmaWx0ZXJFbXB0eUJpbnMgPyBiaW5zLmZpbHRlcihiID0+IGIuY291bnQgPiAwKSA6IGJpbnM7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEBwYXJhbSBudW1CaW5zXG4gKiBAcGFyYW0gdmFsdWVBY2Nlc3NvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbVZhbHVlcyhcbiAgdmFsdWVzOiAoTWlsbGlzZWNvbmQgfCBudWxsIHwgbnVtYmVyKVtdLFxuICBudW1CaW5zOiBudW1iZXIsXG4gIHZhbHVlQWNjZXNzb3I/OiAoZDogbnVtYmVyKSA9PiBudW1iZXJcbikge1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKS50aHJlc2hvbGRzKG51bUJpbnMpO1xuXG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgZDMtYXJyYXkgdHlwZXMgZG9lc24ndCBtYXRjaFxuICByZXR1cm4gZ2V0Qmlucyh2YWx1ZXMpXG4gICAgLm1hcChiaW4gPT4gKHtcbiAgICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgICAgaW5kZXhlczogYmluLFxuICAgICAgeDA6IGJpbi54MCxcbiAgICAgIHgxOiBiaW4ueDFcbiAgICB9KSlcbiAgICAuZmlsdGVyKGIgPT4ge1xuICAgICAgY29uc3Qge3gwLCB4MX0gPSBiO1xuICAgICAgcmV0dXJuIGlzTnVtYmVyKHgwKSAmJiBpc051bWJlcih4MSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tT3JkaW5hbChcbiAgZG9tYWluOiBbc3RyaW5nXSxcbiAgdmFsdWVzOiAoTWlsbGlzZWNvbmQgfCBudWxsIHwgbnVtYmVyKVtdLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IHVua25vd24pID0+IHN0cmluZ1xuKTogQmluW10ge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIHRvIHR5cGVkIHRvIGV4cGVjdCBzdHJpbmdzXG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpLnRocmVzaG9sZHMoZG9tYWluKTtcbiAgaWYgKHZhbHVlQWNjZXNzb3IpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRvIHR5cGVkIHRvIGV4cGVjdCBzdHJpbmdzXG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgbnVsbCB2YWx1ZXMgYXJlbid0IGV4cGVjdGVkXG4gIGNvbnN0IGJpbnMgPSBnZXRCaW5zKHZhbHVlcyk7XG5cbiAgLy8gQHRzLWlnbm9yZSBkMy1hcnJheSB0eXBlcyBkb2Vzbid0IG1hdGNoXG4gIHJldHVybiBiaW5zLm1hcChiaW4gPT4gKHtcbiAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICBpbmRleGVzOiBiaW4sXG4gICAgeDA6IGJpbi54MCxcbiAgICB4MTogYmluLngwXG4gIH0pKTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRvbWFpblxuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIG51bUJpbnNcbiAqIEBwYXJhbSB2YWx1ZUFjY2Vzc29yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tRG9tYWluKFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgbnVtQmluczogbnVtYmVyLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IHVua25vd24pID0+IG51bWJlclxuKTogQmluW10ge1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKS50aHJlc2hvbGRzKHRpY2tzKGRvbWFpblswXSwgZG9tYWluWzFdLCBudW1CaW5zKSkuZG9tYWluKGRvbWFpbik7XG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgZDMtYXJyYXkgdHlwZXMgZG9lc24ndCBtYXRjaFxuICByZXR1cm4gZ2V0Qmlucyh2YWx1ZXMpLm1hcChiaW4gPT4gKHtcbiAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICBpbmRleGVzOiBiaW4sXG4gICAgeDA6IGJpbi54MCxcbiAgICB4MTogYmluLngxXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBpbnRlcnZhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZUJpbnMoXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyLFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIGludGVydmFsOiBQbG90VHlwZVsnaW50ZXJ2YWwnXVxuKTogVGltZUJpbnMge1xuICBsZXQgYmlucyA9IGZpbHRlci50aW1lQmlucyB8fCB7fTtcblxuICBmaWx0ZXIuZGF0YUlkLmZvckVhY2goKGRhdGFJZCwgZGF0YUlkSWR4KSA9PiB7XG4gICAgLy8gcmV1c2UgYmlucyBpZiBmaWx0ZXJEYXRhIGRpZCBub3QgY2hhbmdlXG4gICAgaWYgKGJpbnNbZGF0YUlkXSAmJiBiaW5zW2RhdGFJZF1baW50ZXJ2YWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gZG8gbm90IGFwcGx5IGN1cnJlbnQgZmlsdGVyXG4gICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcblxuICAgIGJpbnMgPSB7XG4gICAgICAuLi5iaW5zLFxuICAgICAgW2RhdGFJZF06IHtcbiAgICAgICAgLi4uYmluc1tkYXRhSWRdLFxuICAgICAgICBbaW50ZXJ2YWxdOiBiaW5CeVRpbWUoaW5kZXhlcywgZGF0YXNldCwgaW50ZXJ2YWwsIGZpbHRlcilcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gYmlucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbkJ5VGltZShpbmRleGVzLCBkYXRhc2V0LCBpbnRlcnZhbCwgZmlsdGVyKSB7XG4gIC8vIGdwdUZpbHRlcnMgbmVlZCB0byBiZSBhcHBseSB0byBmaWx0ZXJlZEluZGV4XG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZ2V0RmlsdGVyTWFwcGVkVmFsdWUoZGF0YXNldCwgZmlsdGVyKTtcbiAgaWYgKCFtYXBwZWRWYWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGludGVydmFsQmlucyA9IGdldEJpblRocmVzaG9sZHMoaW50ZXJ2YWwsIGZpbHRlci5kb21haW4pO1xuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gaWR4ID0+IG1hcHBlZFZhbHVlW2lkeF07XG4gIGNvbnN0IGJpbnMgPSBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKGludGVydmFsQmlucywgaW5kZXhlcywgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgcmV0dXJuIGJpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaW5UaHJlc2hvbGRzKGludGVydmFsOiBzdHJpbmcsIGRvbWFpbjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGludGVydmFsVG9GdW5jdGlvbihpbnRlcnZhbCk7XG4gIGNvbnN0IFt0MCwgdDFdID0gZG9tYWluO1xuICBjb25zdCBmbG9vciA9IHRpbWVJbnRlcnZhbC5mbG9vcih0MCkuZ2V0VGltZSgpO1xuICBjb25zdCBjZWlsaW5nID0gdGltZUludGVydmFsLmNlaWwodDEpLmdldFRpbWUoKTtcblxuICBpZiAoIXRpbWVJbnRlcnZhbCkge1xuICAgIC8vIGlmIHRpbWUgaW50ZXJ2YWwgaXMgbm90IGRlZmluZWRcbiAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgcmV0dXJuIFt0MCwgdDAgKyBkdXJhdGlvbkRheV07XG4gIH1cbiAgY29uc3QgYmluVGhyZXNob2xkcyA9IHRpbWVJbnRlcnZhbC5yYW5nZShmbG9vciwgY2VpbGluZyArIDEpLm1hcCh0ID0+IG1vbWVudC51dGModCkudmFsdWVPZigpKTtcbiAgY29uc3QgbGFzdFN0ZXAgPSBiaW5UaHJlc2hvbGRzW2JpblRocmVzaG9sZHMubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0U3RlcCA9PT0gdDEpIHtcbiAgICAvLyB3aGVuIGxhc3Qgc3RlcCBlcXVhbCB0byBkb21haW4gbWF4LCBhZGQgb25lIG1vcmUgc3RlcFxuICAgIGJpblRocmVzaG9sZHMucHVzaChtb21lbnQudXRjKHRpbWVJbnRlcnZhbC5vZmZzZXQobGFzdFN0ZXApKS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgcmV0dXJuIGJpblRocmVzaG9sZHM7XG59XG5cbi8qKlxuICogUnVuIEdQVSBmaWx0ZXIgb24gY3VycmVudCBmaWx0ZXIgcmVzdWx0IHRvIGdlbmVyYXRlIGluZGV4ZXMgZm9yIHBsb3RpbmcgY2hhcnRcbiAqIFNraXAgcnV1bmluZyBmb3IgdGhlIHNhbWUgZmllbGRcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5HcHVGaWx0ZXJGb3JQbG90PEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIEw+LCBMPihcbiAgZGF0YXNldDogSyxcbiAgZmlsdGVyPzogRmlsdGVyXG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHNraXBJbmRleGVzID0gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKTtcblxuICBjb25zdCB7XG4gICAgZ3B1RmlsdGVyOiB7ZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycywgZmlsdGVyUmFuZ2UsIGZpbHRlclZhbHVlQWNjZXNzb3J9LFxuICAgIGZpbHRlcmVkSW5kZXhcbiAgfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IGdldEZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhc2V0LmRhdGFDb250YWluZXIpKCk7XG5cbiAgY29uc3QgYWxsQ2hhbm5lbHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzKVxuICAgIC5tYXAoKF8sIGkpID0+IGkpXG4gICAgLmZpbHRlcihpID0+IE9iamVjdC52YWx1ZXMoZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycylbaV0pO1xuICBjb25zdCBza2lwQWxsID0gIWFsbENoYW5uZWxzLmZpbHRlcihpID0+ICFza2lwSW5kZXhlcy5pbmNsdWRlcyhpKSkubGVuZ3RoO1xuICBpZiAoc2tpcEFsbCkge1xuICAgIHJldHVybiBmaWx0ZXJlZEluZGV4O1xuICB9XG5cbiAgY29uc3QgZmlsdGVyRGF0YSA9IGdldEZpbHRlckRhdGFGdW5jKFxuICAgIGZpbHRlclJhbmdlLFxuICAgIGdldEZpbHRlclZhbHVlLFxuICAgIGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICBza2lwSW5kZXhlc1xuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZEluZGV4LmZpbHRlcihmaWx0ZXJEYXRhKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKSB7XG4gIC8vIGFycmF5IG9mIGdwdSBmaWx0ZXIgbmFtZXNcbiAgaWYgKCFmaWx0ZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgZ3B1RmlsdGVycyA9IE9iamVjdC52YWx1ZXMoZGF0YXNldC5ncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycykgYXMgKHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0gfCBudWxsKVtdO1xuICBjb25zdCB2YWx1ZUluZGV4ID0gZmlsdGVyLmRhdGFJZC5maW5kSW5kZXgoaWQgPT4gaWQgPT09IGRhdGFzZXQuaWQpO1xuICBjb25zdCBmaWx0ZXJDb2x1bW4gPSBmaWx0ZXIubmFtZVt2YWx1ZUluZGV4XTtcblxuICByZXR1cm4gZ3B1RmlsdGVycy5yZWR1Y2UoKGFjY3UsIGl0ZW0sIGlkeCkgPT4ge1xuICAgIGlmIChpdGVtICYmIGZpbHRlckNvbHVtbiA9PT0gaXRlbS5uYW1lKSB7XG4gICAgICBhY2N1LnB1c2goaWR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIFtdIGFzIG51bWJlcltdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckRhdGFGdW5jKFxuICBmaWx0ZXJSYW5nZSxcbiAgZ2V0RmlsdGVyVmFsdWUsXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHNraXBzXG4pIHtcbiAgcmV0dXJuIGluZGV4ID0+XG4gICAgZ2V0RmlsdGVyVmFsdWUoe2luZGV4fSkuZXZlcnkoXG4gICAgICAodmFsLCBpKSA9PiBza2lwcy5pbmNsdWRlcyhpKSB8fCAodmFsID49IGZpbHRlclJhbmdlW2ldWzBdICYmIHZhbCA8PSBmaWx0ZXJSYW5nZVtpXVsxXSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRCaW4oYikge1xuICByZXR1cm4gYi54MCAhPT0gdW5kZWZpbmVkICYmIGIueDEgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXkuXG4gKiBUYWtlcyBhIHZhbHVlLCB0aW1lc3RlcHMgYW5kIHJldHVybiB0aGUgYWN0dWFsIHN0ZXAuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcFRvTWFya3ModmFsdWU6IG51bWJlciwgbWFya3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgLy8gYWx3YXlzIHVzZSBiaW4geDBcbiAgaWYgKCFtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tpbmcgYXQgdGhlIHVzYWdlIG51bGwgcmV0dXJuIHZhbHVlIGlzbid0IGV4cGVjdGVkIGFuZCByZXF1aXJlcyBleHRyYSBoYW5kbGluZyBpbiBhIGxvdCBvZiBwbGFjZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpID0gYmlzZWN0TGVmdChtYXJrcywgdmFsdWUpO1xuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBtYXJrc1tpXTtcbiAgfSBlbHNlIGlmIChpID09PSBtYXJrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbWFya3NbaSAtIDFdO1xuICB9XG4gIGNvbnN0IGlkeCA9IG1hcmtzW2ldIC0gdmFsdWUgPCB2YWx1ZSAtIG1hcmtzW2kgLSAxXSA/IGkgOiBpIC0gMTtcbiAgcmV0dXJuIG1hcmtzW2lkeF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWwsIG1pblZhbHVlLCBzdGVwLCBtYXJrcykge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJjZW50RmllbGQoZmllbGQpIHtcbiAgcmV0dXJuIGZpZWxkLm1ldGFkYXRhICYmIGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvciAmJiBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZChmaWVsZDogRmllbGQsIGFnZ3JlZ2F0aW9uOiBWYWx1ZU9mPEFnZ3JlZ2F0aW9uVHlwZXM+KSB7XG4gIC8vIHNob3VsZG4ndCBhcHBseSBzdW0gdG8gcGVyY2VudCBmaWVsZSB0eXBlXG4gIC8vIGRlZmF1bHQgYWdncmVnYXRpb24gaXMgYXZlcmFnZVxuICByZXR1cm4gZmllbGQgJiYgaXNQZXJjZW50RmllbGQoZmllbGQpXG4gICAgPyBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXG4gICAgOiBhZ2dyZWdhdGlvbiB8fCBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlO1xufVxuXG5jb25zdCBnZXRBZ3JlZ2F0aW9uVHlwZSA9IChmaWVsZCwgYWdncmVnYXRpb24pID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIHJldHVybiAnbWVhbl9vZl9wZXJjZW50JztcbiAgfVxuICByZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yID0gKGZpZWxkLCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBmaWVsZHMpID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIGNvbnN0IG51bWVyYXRvcklkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvcik7XG4gICAgY29uc3QgZGVub21pbmF0b3JJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0TnVtZXJhdG9yOiBpID0+IGRhdGFDb250YWluZXIudmFsdWVBdChpLCBudW1lcmF0b3JJZHgpLFxuICAgICAgZ2V0RGVub21pbmF0b3I6IGkgPT4gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGksIGRlbm9taW5hdG9ySWR4KVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gaSA9PiBmaWVsZC52YWx1ZUFjY2Vzc29yKHtpbmRleDogaX0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlQWdnckZ1bmMgPSAoXG4gIGZpZWxkOiBGaWVsZCB8IHN0cmluZyB8IG51bGwsXG4gIGFnZ3JlZ2F0aW9uOiBzdHJpbmcsXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlTW9kZWw8YW55LCBhbnk+XG4pOiAoKGJpbjogQmluKSA9PiBudW1iZXIpID0+IHtcbiAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0O1xuXG4gIC8vIFRoZSBwYXNzZWQtaW4gZmllbGQgbWlnaHQgbm90IGhhdmUgYWxsIHRoZSBmaWVsZHMgc2V0IChlLmcuIHZhbHVlQWNjZXNzb3IpXG4gIGNvbnN0IGRhdGFzZXRGaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgIGYgPT4gZmllbGQgJiYgKGYubmFtZSA9PT0gZmllbGQgfHwgZi5uYW1lID09PSAoZmllbGQgYXMgRmllbGQpLm5hbWUpXG4gICk7XG5cbiAgcmV0dXJuIGRhdGFzZXRGaWVsZCAmJiBhZ2dyZWdhdGlvblxuICAgID8gYmluID0+XG4gICAgICAgIGFnZ3JlZ2F0ZShcbiAgICAgICAgICBiaW4uaW5kZXhlcyxcbiAgICAgICAgICBnZXRBZ3JlZ2F0aW9uVHlwZShkYXRhc2V0RmllbGQsIGFnZ3JlZ2F0aW9uKSxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGNhbiByZXR1cm4ge2dldE51bWVyYXRvciwgZ2V0RGVub21pbmF0b3J9XG4gICAgICAgICAgZ2V0QWdncmVnYXRpb25BY2Nlc3NvcihkYXRhc2V0RmllbGQsIGRhdGFDb250YWluZXIsIGZpZWxkcylcbiAgICAgICAgKVxuICAgIDogYmluID0+IGJpbi5jb3VudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQgPSBmaWVsZCA9PiB7XG4gIGlmIChpc1BlcmNlbnRGaWVsZChmaWVsZCkpIHtcbiAgICAvLyBkb24ndCBzaG93IHN1bVxuICAgIHJldHVybiBUSU1FX0FHR1JFR0FUSU9OLmZpbHRlcigoe2lkfSkgPT4gaWQgIT09IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSk7XG4gIH1cbiAgcmV0dXJuIFRJTUVfQUdHUkVHQVRJT047XG59O1xuXG5mdW5jdGlvbiBnZXREZWx0YShcbiAgYmluczogTGluZURhdHVtW10sXG4gIHk6IG51bWJlcixcbiAgaW50ZXJ2YWw6IFBsb3RUeXBlWydpbnRlcnZhbCddXG4pOiBQYXJ0aWFsPExpbmVEYXR1bT4gJiB7ZGVsdGE6ICdsYXN0JzsgcGN0OiBudW1iZXIgfCBudWxsfSB7XG4gIC8vIGlmIChXT1dbaW50ZXJ2YWxdKSByZXR1cm4gZ2V0V293KGJpbnMsIHksIGludGVydmFsKTtcbiAgY29uc3QgbGFzdEJpbiA9IGJpbnNbYmlucy5sZW5ndGggLSAxXTtcblxuICByZXR1cm4ge1xuICAgIGRlbHRhOiAnbGFzdCcsXG4gICAgcGN0OiBsYXN0QmluID8gZ2V0UGN0Q2hhbmdlKHksIGxhc3RCaW4ueSkgOiBudWxsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQY3RDaGFuZ2UoeTogdW5rbm93biwgeTA6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKE51bWJlci5pc0Zpbml0ZSh5KSAmJiBOdW1iZXIuaXNGaW5pdGUoeTApICYmIHkwICE9PSAwKSB7XG4gICAgcmV0dXJuICgoeSBhcyBudW1iZXIpIC0gKHkwIGFzIG51bWJlcikpIC8gKHkwIGFzIG51bWJlcik7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZUNoYXJ0KGRhdGFzZXRzOiBEYXRhc2V0cywgZmlsdGVyOiBGaWx0ZXIpOiBMaW5lQ2hhcnQge1xuICBjb25zdCB7ZGF0YUlkLCB5QXhpcywgcGxvdFR5cGUsIGxpbmVDaGFydH0gPSBmaWx0ZXI7XG4gIGNvbnN0IHthZ2dyZWdhdGlvbiwgaW50ZXJ2YWx9ID0gcGxvdFR5cGU7XG4gIGNvbnN0IHNlcmllc0RhdGFJZCA9IGRhdGFJZFswXTtcbiAgY29uc3QgYmlucyA9IChmaWx0ZXIgYXMgVGltZVJhbmdlRmlsdGVyKS50aW1lQmlucz8uW3Nlcmllc0RhdGFJZF0/LltpbnRlcnZhbF07XG5cbiAgaWYgKFxuICAgIGxpbmVDaGFydCAmJlxuICAgIGxpbmVDaGFydC5hZ2dyZWdhdGlvbiA9PT0gYWdncmVnYXRpb24gJiZcbiAgICBsaW5lQ2hhcnQuaW50ZXJ2YWwgPT09IGludGVydmFsICYmXG4gICAgbGluZUNoYXJ0LnlBeGlzID09PSB5QXhpcz8ubmFtZSAmJlxuICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHZhbGlkYXRlIGJpbnMgYmVjYXVzZSBvZiBjcm9zcyBmaWx0ZXIgZGF0YSBjaGFuZ2VzXG4gICAgaXNFcXVhbChiaW5zLCBsaW5lQ2hhcnQ/LmJpbnMpXG4gICkge1xuICAgIC8vIGRvbid0IHVwZGF0ZSBsaW5lQ2hhcnQgaWYgcGxvdFR5cGUgaGFzbid0IGNoYW5nZVxuICAgIHJldHVybiBsaW5lQ2hhcnQ7XG4gIH1cblxuICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbc2VyaWVzRGF0YUlkXTtcbiAgY29uc3QgZ2V0WVZhbHVlID0gZ2V0VmFsdWVBZ2dyRnVuYyh5QXhpcywgYWdncmVnYXRpb24sIGRhdGFzZXQpO1xuXG4gIGNvbnN0IGluaXQ6IExpbmVEYXR1bVtdID0gW107XG4gIGNvbnN0IHNlcmllcyA9IChiaW5zIHx8IFtdKS5yZWR1Y2UoKGFjY3UsIGJpbiwgaSkgPT4ge1xuICAgIGNvbnN0IHkgPSBnZXRZVmFsdWUoYmluKTtcbiAgICBjb25zdCBkZWx0YSA9IGdldERlbHRhKGFjY3UsIHksIGludGVydmFsKTtcbiAgICBhY2N1LnB1c2goe1xuICAgICAgeDogYmluLngwLFxuICAgICAgeSxcbiAgICAgIC4uLmRlbHRhXG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIGluaXQpO1xuXG4gIGNvbnN0IHlEb21haW4gPSBleHRlbnQ8e3k6IGFueX0+KHNlcmllcywgZCA9PiBkLnkpO1xuICBjb25zdCB4RG9tYWluID0gYmlucyA/IFtiaW5zWzBdLngwLCBiaW5zW2JpbnMubGVuZ3RoIC0gMV0ueDFdIDogW107XG5cbiAgLy8gdHJlYXQgbWlzc2luZyBkYXRhIGFzIGFub3RoZXIgc2VyaWVzXG4gIGNvbnN0IHNwbGl0ID0gc3BsaXRTZXJpZXMoc2VyaWVzKTtcbiAgY29uc3QgYWdnck5hbWUgPSBBR0dSRUdBVElPTl9OQU1FW2FnZ3JlZ2F0aW9uXTtcblxuICByZXR1cm4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB5RG9tYWluLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB4RG9tYWluLFxuICAgIGludGVydmFsLFxuICAgIGFnZ3JlZ2F0aW9uLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXJpZXM6IHNwbGl0LFxuICAgIHRpdGxlOiBgJHthZ2dyTmFtZX0keycgb2YgJ30ke3lBeGlzID8geUF4aXMubmFtZSA6ICdDb3VudCd9YCxcbiAgICBmaWVsZFR5cGU6IHlBeGlzID8geUF4aXMudHlwZSA6ICdpbnRlZ2VyJyxcbiAgICB5QXhpczogeUF4aXMgPyB5QXhpcy5uYW1lIDogbnVsbCxcbiAgICBhbGxUaW1lOiB7XG4gICAgICB0aXRsZTogYEFsbCBUaW1lIEF2ZXJhZ2VgLFxuICAgICAgdmFsdWU6IGFnZ3JlZ2F0ZShzZXJpZXMsIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsIGQgPT4gZC55KVxuICAgIH0sXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBiaW5zIGlzIEJpbnNbXSwgbm90IGEgQmlucyBtYXAuIFJlZmFjdG9yIHRvIHVzZSBjb3JyZWN0IHR5cGVzLlxuICAgIGJpbnNcbiAgfTtcbn1cblxuLy8gc3BsaXQgaW50byBtdWx0aXBsZSBzZXJpZXMgd2hlbiBzZWUgbWlzc2luZyBkYXRhXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRTZXJpZXMoc2VyaWVzKSB7XG4gIGNvbnN0IGxpbmVzOiBhbnlbXSA9IFtdO1xuICBsZXQgdGVtcDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBkID0gc2VyaWVzW2ldO1xuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGQueSkgJiYgdGVtcC5sZW5ndGgpIHtcbiAgICAgIC8vIGVuZHMgdGVtcFxuICAgICAgbGluZXMucHVzaCh0ZW1wKTtcbiAgICAgIHRlbXAgPSBbXTtcbiAgICB9IGVsc2UgaWYgKG5vdE51bGxvclVuZGVmaW5lZChkLnkpKSB7XG4gICAgICB0ZW1wLnB1c2goZCk7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHNlcmllcy5sZW5ndGggLSAxICYmIHRlbXAubGVuZ3RoKSB7XG4gICAgICBsaW5lcy5wdXNoKHRlbXApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1hcmtlcnMgPSBsaW5lcy5sZW5ndGggPiAxID8gc2VyaWVzLmZpbHRlcihkID0+IG5vdE51bGxvclVuZGVmaW5lZChkLnkpKSA6IFtdO1xuXG4gIHJldHVybiB7bGluZXMsIG1hcmtlcnN9O1xufVxuXG50eXBlIE1pblZpc1N0YXRlRm9yQW5pbWF0aW9uV2luZG93ID0ge1xuICBkYXRhc2V0czogRGF0YXNldHM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVUb0FuaW1hdGlvbldpbmRvdzxTIGV4dGVuZHMgTWluVmlzU3RhdGVGb3JBbmltYXRpb25XaW5kb3c+KFxuICBzdGF0ZTogUyxcbiAgZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXJcbikge1xuICBjb25zdCB7XG4gICAgcGxvdFR5cGUsXG4gICAgdmFsdWU6IFt2YWx1ZTAsIHZhbHVlMV0sXG4gICAgYW5pbWF0aW9uV2luZG93XG4gIH0gPSBmaWx0ZXI7XG5cbiAgY29uc3QgaW50ZXJ2YWwgPSBwbG90VHlwZS5pbnRlcnZhbCB8fCBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBzdGF0ZS5kYXRhc2V0cyk7XG4gIGNvbnN0IGJpbnMgPSBnZXRUaW1lQmlucyhmaWx0ZXIsIHN0YXRlLmRhdGFzZXRzLCBpbnRlcnZhbCk7XG4gIGNvbnN0IGRhdGFzZXRCaW5zID0gYmlucyAmJiBPYmplY3Qua2V5cyhiaW5zKS5sZW5ndGggJiYgT2JqZWN0LnZhbHVlcyhiaW5zKVswXVtpbnRlcnZhbF07XG4gIGNvbnN0IHRocmVzaG9sZHMgPSAoZGF0YXNldEJpbnMgfHwgW10pLm1hcChiID0+IGIueDApO1xuXG4gIGxldCB2YWwwID0gdmFsdWUwO1xuICBsZXQgdmFsMSA9IHZhbHVlMTtcbiAgbGV0IGlkeDtcbiAgaWYgKGFuaW1hdGlvbldpbmRvdyA9PT0gQU5JTUFUSU9OX1dJTkRPVy5pbnRlcnZhbCkge1xuICAgIHZhbDAgPSBzbmFwVG9NYXJrcyh2YWx1ZTEsIHRocmVzaG9sZHMpO1xuICAgIGlkeCA9IHRocmVzaG9sZHMuaW5kZXhPZih2YWwwKTtcbiAgICB2YWwxID0gaWR4ID4gLTEgPyBkYXRhc2V0Qmluc1tpZHhdLngxIDogTmFOO1xuICB9IGVsc2Uge1xuICAgIC8vIGZpdCBjdXJyZW50IHZhbHVlIHRvIHdpbmRvd1xuICAgIHZhbDAgPSBzbmFwVG9NYXJrcyh2YWx1ZTAsIHRocmVzaG9sZHMpO1xuICAgIHZhbDEgPSBzbmFwVG9NYXJrcyh2YWx1ZTEsIHRocmVzaG9sZHMpO1xuXG4gICAgaWYgKHZhbDAgPT09IHZhbDEpIHtcbiAgICAgIGlkeCA9IHRocmVzaG9sZHMuaW5kZXhPZih2YWwwKTtcbiAgICAgIGlmIChpZHggPT09IHRocmVzaG9sZHMubGVuZ3RoIC0gMSkge1xuICAgICAgICB2YWwwID0gdGhyZXNob2xkc1tpZHggLSAxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbDEgPSB0aHJlc2hvbGRzW2lkeCArIDFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlOiB7XG4gICAgICAuLi5maWx0ZXIucGxvdFR5cGUsXG4gICAgICBpbnRlcnZhbFxuICAgIH0sXG4gICAgdGltZUJpbnM6IGJpbnMsXG4gICAgdmFsdWU6IFt2YWwwLCB2YWwxXVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVkRmlsdGVyO1xufVxuXG4vKipcbiAqIENyZWF0ZSBvciB1cGRhdGUgY29sb3JzIGZvciBhIGZpbHRlciBwbG90XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBvbGRDb2xvcnNCeURhdGFJZFxuICovXG5mdW5jdGlvbiBnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQoZmlsdGVyLCBkYXRhc2V0cywgb2xkQ29sb3JzQnlEYXRhSWQpIHtcbiAgbGV0IGNvbG9yc0J5RGF0YUlkID0gb2xkQ29sb3JzQnlEYXRhSWQgfHwge307XG4gIGZvciAoY29uc3QgZGF0YUlkIG9mIGZpbHRlci5kYXRhSWQpIHtcbiAgICBpZiAoIWNvbG9yc0J5RGF0YUlkW2RhdGFJZF0gJiYgZGF0YXNldHNbZGF0YUlkXSkge1xuICAgICAgY29sb3JzQnlEYXRhSWQgPSB7XG4gICAgICAgIC4uLmNvbG9yc0J5RGF0YUlkLFxuICAgICAgICBbZGF0YUlkXTogcmdiVG9IZXgoZGF0YXNldHNbZGF0YUlkXS5jb2xvcilcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBjb2xvcnNCeURhdGFJZDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIHBsb3RUeXBlXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBkYXRhSWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZShcbiAgZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXIsXG4gIHBsb3RUeXBlOiBUaW1lUmFuZ2VGaWx0ZXJbJ3Bsb3RUeXBlJ10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZGF0YUlkPzogc3RyaW5nXG4pOiBUaW1lUmFuZ2VGaWx0ZXIge1xuICBsZXQgbmV4dEZpbHRlciA9IGZpbHRlcjtcbiAgbGV0IG5leHRQbG90VHlwZSA9IHBsb3RUeXBlO1xuICBpZiAodHlwZW9mIG5leHRQbG90VHlwZSAhPT0gJ29iamVjdCcgfHwgIW5leHRQbG90VHlwZS5hZ2dyZWdhdGlvbiB8fCAhbmV4dFBsb3RUeXBlLmludGVydmFsKSB7XG4gICAgbmV4dFBsb3RUeXBlID0gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpO1xuICB9XG5cbiAgaWYgKGZpbHRlci5kYXRhSWQubGVuZ3RoID4gMSkge1xuICAgIG5leHRQbG90VHlwZSA9IHtcbiAgICAgIC4uLm5leHRQbG90VHlwZSxcbiAgICAgIGNvbG9yc0J5RGF0YUlkOiBnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQoZmlsdGVyLCBkYXRhc2V0cywgbmV4dFBsb3RUeXBlLmNvbG9yc0J5RGF0YUlkKVxuICAgIH07XG4gIH1cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHBsb3RUeXBlOiBuZXh0UGxvdFR5cGVcbiAgfTtcblxuICBjb25zdCBiaW5zID0gZ2V0VGltZUJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIG5leHRQbG90VHlwZS5pbnRlcnZhbCk7XG5cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHRpbWVCaW5zOiBiaW5zXG4gIH07XG5cbiAgaWYgKHBsb3RUeXBlLnR5cGUgPT09IFBMT1RfVFlQRVMuaGlzdG9ncmFtKSB7XG4gICAgLy8gSGlzdG9ncmFtIGlzIGNhbGN1bGF0ZWQgYW5kIG1lbW9pemVkIGluIHRoZSBjaGFydCBpdHNlbGZcbiAgfSBlbHNlIGlmIChwbG90VHlwZS50eXBlID09PSBQTE9UX1RZUEVTLmxpbmVDaGFydCkge1xuICAgIC8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1vdmUgdGhpcyBpbnRvIGl0cyBvd24gY29tcG9uZW50IHNvIHJlYWN0IHdpbGwgZG8gdGhlIHNoYWxsb3cgY29tcGFyaXNvbiBmb3IgdXMuXG4gICAgbmV4dEZpbHRlciA9IHtcbiAgICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgICBsaW5lQ2hhcnQ6IGdldExpbmVDaGFydChkYXRhc2V0cywgbmV4dEZpbHRlcilcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG5leHRGaWx0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZUZpbHRlckJpbnMoZmlsdGVyLCBkYXRhc2V0cywgbnVtQmlucykge1xuICBjb25zdCB7ZG9tYWlufSA9IGZpbHRlcjtcbiAgaWYgKCFmaWx0ZXIuZGF0YUlkKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gZmlsdGVyLmRhdGFJZC5yZWR1Y2UoKGFjYywgZGF0YUlkLCBkYXRhc2V0SWR4KSA9PiB7XG4gICAgaWYgKGZpbHRlci5iaW5zPy5bZGF0YUlkXSkge1xuICAgICAgLy8gZG9uJ3QgcmVjYWxjdWxhdGUgYmluc1xuICAgICAgYWNjW2RhdGFJZF0gPSBmaWx0ZXIuYmluc1tkYXRhSWRdO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG4gICAgY29uc3QgZmllbGROYW1lID0gZmlsdGVyLm5hbWVbZGF0YXNldElkeF07XG4gICAgaWYgKGRhdGFJZCAmJiBmaWVsZE5hbWUpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZmllbGQgPSBkYXRhc2V0Py5nZXRDb2x1bW5GaWVsZChmaWVsZE5hbWUpO1xuICAgICAgaWYgKGRhdGFzZXQgJiYgZmllbGQpIHtcbiAgICAgICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcbiAgICAgICAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IGluZGV4ID0+IGZpZWxkLnZhbHVlQWNjZXNzb3Ioe2luZGV4fSk7XG4gICAgICAgIGFjY1tkYXRhSWRdID0gaGlzdG9ncmFtRnJvbURvbWFpbihkb21haW4sIGluZGV4ZXMsIG51bUJpbnMsIHZhbHVlQWNjZXNzb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlKFxuICBmaWx0ZXI6IFJhbmdlRmlsdGVyLFxuICBwbG90VHlwZTogUmFuZ2VGaWx0ZXJbJ3Bsb3RUeXBlJ10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZGF0YUlkPzogc3RyaW5nXG4pOiBSYW5nZUZpbHRlciB7XG4gIGNvbnN0IG5leHRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlXG4gIH07XG5cbiAgLy8gaWYgKGRhdGFJZCkge1xuICAvLyAgIC8vIGNsZWFyIGJpbnNcbiAgLy8gICBuZXh0RmlsdGVyID0ge1xuICAvLyAgICAgLi4ubmV4dEZpbHRlcixcbiAgLy8gICAgIGJpbnM6IHtcbiAgLy8gICAgICAgLi4ubmV4dEZpbHRlci5iaW5zLFxuICAvLyAgICAgICBbZGF0YUlkXTogbnVsbFxuICAvLyAgICAgfVxuICAvLyAgIH07XG4gIC8vIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZSxcbiAgICBiaW5zOiBnZXRSYW5nZUZpbHRlckJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIEJJTlMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFydFRpdGxlKHlBeGlzOiBGaWVsZCwgcGxvdFR5cGU6IFBsb3RUeXBlKTogc3RyaW5nIHtcbiAgY29uc3QgeUF4aXNOYW1lID0geUF4aXM/LmRpc3BsYXlOYW1lO1xuICBjb25zdCB7YWdncmVnYXRpb259ID0gcGxvdFR5cGU7XG5cbiAgaWYgKHlBeGlzTmFtZSkge1xuICAgIHJldHVybiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYCR7YWdncmVnYXRpb259ICR7eUF4aXNOYW1lfSBvdmVyIFRpbWVgKTtcbiAgfVxuXG4gIHJldHVybiBgQ291bnQgb2YgUm93cyBvdmVyIFRpbWVgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpIHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBkYXRhc2V0cyk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0RGVmYXVsdFRpbWVGb3JtYXQoaW50ZXJ2YWwpO1xuICByZXR1cm4ge1xuICAgIGludGVydmFsLFxuICAgIGRlZmF1bHRUaW1lRm9ybWF0LFxuICAgIHR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtLFxuICAgIGFnZ3JlZ2F0aW9uOiBBR0dSRUdBVElPTl9UWVBFUy5zdW1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FB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UUFDM0R3RyxHQUFHLENBQUM5SixNQUFNLENBQUMsR0FBR04sbUJBQW1CLENBQUNiLE1BQU0sRUFBRUssT0FBTyxFQUFFSyxPQUFPLEVBQUVmLGFBQWEsQ0FBQztNQUM1RTtJQUNGO0lBQ0EsT0FBT3NMLEdBQUc7RUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUjtBQUVPLFNBQVNLLHlCQUF5QkEsQ0FDdkMxTSxNQUFtQixFQUNuQjhJLFFBQWlDLEVBQ2pDMUcsUUFBa0IsRUFDbEJHLE1BQWUsRUFDRjtFQUNiLElBQU11SixVQUFVLEdBQUF6TCxhQUFBLENBQUFBLGFBQUEsS0FDWEwsTUFBTTtJQUNUOEksUUFBUSxFQUFSQTtFQUFRLEVBQ1Q7O0VBRUQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUEsT0FBQXpJLGFBQUEsQ0FBQUEsYUFBQSxLQUNLTCxNQUFNO0lBQ1Q4SSxRQUFRLEVBQVJBLFFBQVE7SUFDUnpILElBQUksRUFBRStLLGtCQUFrQixDQUFDTixVQUFVLEVBQUUxSixRQUFRLEVBQUV1SyxlQUFJO0VBQUM7QUFFeEQ7QUFFTyxTQUFTQyxhQUFhQSxDQUFDL0QsS0FBWSxFQUFFQyxRQUFrQixFQUFVO0VBQ3RFLElBQU0rRCxTQUFTLEdBQUdoRSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWlFLFdBQVc7RUFDcEMsSUFBT2hHLFdBQVcsR0FBSWdDLFFBQVEsQ0FBdkJoQyxXQUFXO0VBRWxCLElBQUkrRixTQUFTLEVBQUU7SUFDYixPQUFPLElBQUFFLDhCQUFxQixLQUFBaEQsTUFBQSxDQUFJakQsV0FBVyxPQUFBaUQsTUFBQSxDQUFJOEMsU0FBUyxlQUFZLENBQUM7RUFDdkU7RUFFQTtBQUNGO0FBRU8sU0FBU1osa0JBQWtCQSxDQUFDak0sTUFBTSxFQUFFb0MsUUFBUSxFQUFFO0VBQ25ELElBQU1DLFFBQVEsR0FBRyxJQUFBd0ksd0JBQWtCLEVBQUM3SyxNQUFNLEVBQUVvQyxRQUFRLENBQUM7RUFDckQsSUFBTTRLLGlCQUFpQixHQUFHLElBQUFDLDRCQUFvQixFQUFDNUssUUFBUSxDQUFDO0VBQ3hELE9BQU87SUFDTEEsUUFBUSxFQUFSQSxRQUFRO0lBQ1IySyxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQi9DLElBQUksRUFBRWlDLHFCQUFVLENBQUNDLFNBQVM7SUFDMUJyRixXQUFXLEVBQUVDLDRCQUFpQixDQUFDa0I7RUFDakMsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
637
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl90aW1lIiwiX21vbWVudCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfZGF0YVV0aWxzIiwiX2FnZ3JlZ2F0aW9uIiwiX3N0cmluZ3MiLCJfZm9ybWF0IiwiX2NvbG9yVXRpbHMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJoaXN0b2dyYW1Gcm9tVGhyZXNob2xkIiwidGhyZXNob2xkcyIsInZhbHVlcyIsInZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJFbXB0eUJpbnMiLCJ1bmRlZmluZWQiLCJnZXRCaW5zIiwiZDNIaXN0b2dyYW0iLCJkb21haW4iLCJiaW5zIiwibWFwIiwiYmluIiwiY291bnQiLCJpbmRleGVzIiwieDAiLCJ4MSIsImIiLCJoaXN0b2dyYW1Gcm9tVmFsdWVzIiwibnVtQmlucyIsImlzTnVtYmVyIiwiaGlzdG9ncmFtRnJvbU9yZGluYWwiLCJoaXN0b2dyYW1Gcm9tRG9tYWluIiwidGlja3MiLCJnZXRUaW1lQmlucyIsImRhdGFzZXRzIiwiaW50ZXJ2YWwiLCJ0aW1lQmlucyIsImRhdGFJZCIsImRhdGFzZXQiLCJydW5HcHVGaWx0ZXJGb3JQbG90IiwiYmluQnlUaW1lIiwibWFwcGVkVmFsdWUiLCJnZXRGaWx0ZXJNYXBwZWRWYWx1ZSIsImludGVydmFsQmlucyIsImdldEJpblRocmVzaG9sZHMiLCJpZHgiLCJ0aW1lSW50ZXJ2YWwiLCJpbnRlcnZhbFRvRnVuY3Rpb24iLCJfZG9tYWluIiwiX3NsaWNlZFRvQXJyYXkyIiwidDAiLCJ0MSIsImZsb29yIiwiZ2V0VGltZSIsImNlaWxpbmciLCJjZWlsIiwiZHVyYXRpb25EYXkiLCJiaW5UaHJlc2hvbGRzIiwicmFuZ2UiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwibGFzdFN0ZXAiLCJvZmZzZXQiLCJza2lwSW5kZXhlcyIsImdldFNraXBJbmRleGVzIiwiX2RhdGFzZXQkZ3B1RmlsdGVyIiwiZ3B1RmlsdGVyIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImZpbHRlclJhbmdlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImZpbHRlcmVkSW5kZXgiLCJnZXRGaWx0ZXJWYWx1ZSIsImRhdGFDb250YWluZXIiLCJhbGxDaGFubmVscyIsIl8iLCJpIiwic2tpcEFsbCIsImluY2x1ZGVzIiwiZmlsdGVyRGF0YSIsImdldEZpbHRlckRhdGFGdW5jIiwiZ3B1RmlsdGVycyIsInZhbHVlSW5kZXgiLCJmaW5kSW5kZXgiLCJpZCIsImZpbHRlckNvbHVtbiIsInJlZHVjZSIsImFjY3UiLCJpdGVtIiwic2tpcHMiLCJpbmRleCIsImV2ZXJ5IiwidmFsIiwidmFsaWRCaW4iLCJzbmFwVG9NYXJrcyIsIm1hcmtzIiwiYmlzZWN0TGVmdCIsIm5vcm1hbGl6ZVZhbHVlIiwibWluVmFsdWUiLCJzdGVwIiwicm91bmRWYWxUb1N0ZXAiLCJpc1BlcmNlbnRGaWVsZCIsImZpZWxkIiwibWV0YWRhdGEiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsInVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZCIsImFnZ3JlZ2F0aW9uIiwiQUdHUkVHQVRJT05fVFlQRVMiLCJhdmVyYWdlIiwiZ2V0QWdyZWdhdGlvblR5cGUiLCJnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yIiwiZmllbGRzIiwibnVtZXJhdG9ySWR4IiwiZGVub21pbmF0b3JJZHgiLCJnZXROdW1lcmF0b3IiLCJ2YWx1ZUF0IiwiZ2V0RGVub21pbmF0b3IiLCJnZXRWYWx1ZUFnZ3JGdW5jIiwiZXhwb3J0cyIsImRhdGFzZXRGaWVsZCIsImZpbmQiLCJhZ2dyZWdhdGUiLCJnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQiLCJUSU1FX0FHR1JFR0FUSU9OIiwiX3JlZiIsInN1bSIsImdldERlbHRhIiwieSIsIl9pbnRlcnZhbCIsImxhc3RCaW4iLCJkZWx0YSIsInBjdCIsImdldFBjdENoYW5nZSIsInkwIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRMaW5lQ2hhcnQiLCJfdGltZUJpbnMiLCJ5QXhpcyIsInBsb3RUeXBlIiwibGluZUNoYXJ0Iiwic2VyaWVzRGF0YUlkIiwiaXNFcXVhbCIsImdldFlWYWx1ZSIsImluaXQiLCJzZXJpZXMiLCJ4IiwieURvbWFpbiIsImV4dGVudCIsImQiLCJ4RG9tYWluIiwic3BsaXQiLCJzcGxpdFNlcmllcyIsImFnZ3JOYW1lIiwiQUdHUkVHQVRJT05fTkFNRSIsInRpdGxlIiwiY29uY2F0IiwiZmllbGRUeXBlIiwidHlwZSIsImFsbFRpbWUiLCJsaW5lcyIsInRlbXAiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJtYXJrZXJzIiwiYWRqdXN0VmFsdWVUb0FuaW1hdGlvbldpbmRvdyIsInN0YXRlIiwiX2ZpbHRlciR2YWx1ZSIsInZhbHVlMCIsInZhbHVlMSIsImFuaW1hdGlvbldpbmRvdyIsImdldEluaXRpYWxJbnRlcnZhbCIsImRhdGFzZXRCaW5zIiwidmFsMCIsInZhbDEiLCJBTklNQVRJT05fV0lORE9XIiwiaW5kZXhPZiIsIk5hTiIsInVwZGF0ZWRGaWx0ZXIiLCJnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQiLCJvbGRDb2xvcnNCeURhdGFJZCIsImNvbG9yc0J5RGF0YUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJyZ2JUb0hleCIsImNvbG9yIiwiZXJyIiwidXBkYXRlVGltZUZpbHRlclBsb3RUeXBlIiwiX2RhdGFJZCIsIm5leHRGaWx0ZXIiLCJuZXh0UGxvdFR5cGUiLCJfdHlwZW9mMiIsImdldERlZmF1bHRQbG90VHlwZSIsIlBMT1RfVFlQRVMiLCJoaXN0b2dyYW0iLCJnZXRSYW5nZUZpbHRlckJpbnMiLCJhY2MiLCJkYXRhc2V0SWR4IiwiX2ZpbHRlciRiaW5zIiwiZmllbGROYW1lIiwiZ2V0Q29sdW1uRmllbGQiLCJ1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlIiwiQklOUyIsImdldENoYXJ0VGl0bGUiLCJ5QXhpc05hbWUiLCJkaXNwbGF5TmFtZSIsImNhcGl0YWxpemVGaXJzdExldHRlciIsImRlZmF1bHRUaW1lRm9ybWF0IiwiZ2V0RGVmYXVsdFRpbWVGb3JtYXQiXSwic291cmNlcyI6WyIuLi9zcmMvcGxvdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2Jpc2VjdExlZnQsIGV4dGVudCwgaGlzdG9ncmFtIGFzIGQzSGlzdG9ncmFtLCB0aWNrc30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLmlzZXF1YWwnO1xuaW1wb3J0IHtnZXRGaWx0ZXJNYXBwZWRWYWx1ZSwgZ2V0SW5pdGlhbEludGVydmFsLCBpbnRlcnZhbFRvRnVuY3Rpb259IGZyb20gJy4vdGltZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBCaW4sXG4gIFRpbWVCaW5zLFxuICBNaWxsaXNlY29uZCxcbiAgVGltZVJhbmdlRmlsdGVyLFxuICBSYW5nZUZpbHRlcixcbiAgUGxvdFR5cGUsXG4gIEZpbHRlcixcbiAgTGluZUNoYXJ0LFxuICBGaWVsZCxcbiAgVmFsdWVPZixcbiAgTGluZURhdHVtXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIEFOSU1BVElPTl9XSU5ET1csXG4gIEJJTlMsXG4gIGR1cmF0aW9uRGF5LFxuICBUSU1FX0FHR1JFR0FUSU9OLFxuICBBR0dSRUdBVElPTl9UWVBFUyxcbiAgUExPVF9UWVBFUyxcbiAgQWdncmVnYXRpb25UeXBlc1xufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7aXNOdW1iZXIsIHJvdW5kVmFsVG9TdGVwfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuaW1wb3J0IHthZ2dyZWdhdGUsIEFHR1JFR0FUSU9OX05BTUV9IGZyb20gJy4vYWdncmVnYXRpb24nO1xuaW1wb3J0IHtjYXBpdGFsaXplRmlyc3RMZXR0ZXJ9IGZyb20gJy4vc3RyaW5ncyc7XG5pbXBvcnQge2dldERlZmF1bHRUaW1lRm9ybWF0fSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQge3JnYlRvSGV4fSBmcm9tICcuL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLic7XG5pbXBvcnQge0tlcGxlclRhYmxlTW9kZWx9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBUT0RPIGtlcGxlci10YWJsZSBtb2R1bGUgaXNuJ3QgYWNjZXNzaWJsZSBmcm9tIHV0aWxzLiBBZGQgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdHlwZXNcbnR5cGUgRGF0YXNldHMgPSBhbnk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB0aHJlc2hvbGRzXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gaW5kZXhlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbVRocmVzaG9sZChcbiAgdGhyZXNob2xkczogbnVtYmVyW10sXG4gIHZhbHVlczogbnVtYmVyW10sXG4gIHZhbHVlQWNjZXNzb3I/OiAoZDogdW5rbm93bikgPT4gbnVtYmVyLFxuICBmaWx0ZXJFbXB0eUJpbnMgPSB0cnVlXG4pOiBCaW5bXSB7XG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpXG4gICAgLmRvbWFpbihbdGhyZXNob2xkc1swXSwgdGhyZXNob2xkc1t0aHJlc2hvbGRzLmxlbmd0aCAtIDFdXSlcbiAgICAudGhyZXNob2xkcyh0aHJlc2hvbGRzKTtcblxuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGJpbnMgPSBnZXRCaW5zKHZhbHVlcykubWFwKGJpbiA9PiAoe1xuICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgIGluZGV4ZXM6IGJpbixcbiAgICB4MDogYmluLngwLFxuICAgIHgxOiBiaW4ueDFcbiAgfSkpO1xuXG4gIC8vIGQzLWhpc3RvZ3JhbSBpZ25vcmVzIHRocmVzaG9sZCB2YWx1ZXMgb3V0c2lkZSB0aGUgZG9tYWluXG4gIC8vIFRoZSBmaXJzdCBiaW4ueDAgaXMgYWx3YXlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIGRvbWFpbiB2YWx1ZSwgYW5kIHRoZSBsYXN0IGJpbi54MSBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIG1heGltdW0gZG9tYWluIHZhbHVlLlxuXG4gIC8vIGJpbnNbMF0ueDAgPSB0aHJlc2hvbGRzWzBdO1xuICAvLyBiaW5zW2JpbnMubGVuZ3RoIC0gMV0ueDEgPSB0aHJlc2hvbGRzW3RocmVzaG9sZHMubGVuZ3RoIC0gMV07XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gZmlsdGVyRW1wdHlCaW5zID8gYmlucy5maWx0ZXIoYiA9PiBiLmNvdW50ID4gMCkgOiBiaW5zO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gbnVtQmluc1xuICogQHBhcmFtIHZhbHVlQWNjZXNzb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpc3RvZ3JhbUZyb21WYWx1ZXMoXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgbnVtQmluczogbnVtYmVyLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IG51bWJlcikgPT4gbnVtYmVyXG4pIHtcbiAgY29uc3QgZ2V0QmlucyA9IGQzSGlzdG9ncmFtKCkudGhyZXNob2xkcyhudW1CaW5zKTtcblxuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIGQzLWFycmF5IHR5cGVzIGRvZXNuJ3QgbWF0Y2hcbiAgcmV0dXJuIGdldEJpbnModmFsdWVzKVxuICAgIC5tYXAoYmluID0+ICh7XG4gICAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICAgIGluZGV4ZXM6IGJpbixcbiAgICAgIHgwOiBiaW4ueDAsXG4gICAgICB4MTogYmluLngxXG4gICAgfSkpXG4gICAgLmZpbHRlcihiID0+IHtcbiAgICAgIGNvbnN0IHt4MCwgeDF9ID0gYjtcbiAgICAgIHJldHVybiBpc051bWJlcih4MCkgJiYgaXNOdW1iZXIoeDEpO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbU9yZGluYWwoXG4gIGRvbWFpbjogW3N0cmluZ10sXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgdmFsdWVBY2Nlc3Nvcj86IChkOiB1bmtub3duKSA9PiBzdHJpbmdcbik6IEJpbltdIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciB0byB0eXBlZCB0byBleHBlY3Qgc3RyaW5nc1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKS50aHJlc2hvbGRzKGRvbWFpbik7XG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0byB0eXBlZCB0byBleHBlY3Qgc3RyaW5nc1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yIG51bGwgdmFsdWVzIGFyZW4ndCBleHBlY3RlZFxuICBjb25zdCBiaW5zID0gZ2V0Qmlucyh2YWx1ZXMpO1xuXG4gIC8vIEB0cy1pZ25vcmUgZDMtYXJyYXkgdHlwZXMgZG9lc24ndCBtYXRjaFxuICByZXR1cm4gYmlucy5tYXAoYmluID0+ICh7XG4gICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgaW5kZXhlczogYmluLFxuICAgIHgwOiBiaW4ueDAsXG4gICAgeDE6IGJpbi54MFxuICB9KSk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkb21haW5cbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEBwYXJhbSBudW1CaW5zXG4gKiBAcGFyYW0gdmFsdWVBY2Nlc3NvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbURvbWFpbihcbiAgZG9tYWluOiBbbnVtYmVyLCBudW1iZXJdLFxuICB2YWx1ZXM6IChNaWxsaXNlY29uZCB8IG51bGwgfCBudW1iZXIpW10sXG4gIG51bUJpbnM6IG51bWJlcixcbiAgdmFsdWVBY2Nlc3Nvcj86IChkOiB1bmtub3duKSA9PiBudW1iZXJcbik6IEJpbltdIHtcbiAgY29uc3QgZ2V0QmlucyA9IGQzSGlzdG9ncmFtKCkudGhyZXNob2xkcyh0aWNrcyhkb21haW5bMF0sIGRvbWFpblsxXSwgbnVtQmlucykpLmRvbWFpbihkb21haW4pO1xuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIGQzLWFycmF5IHR5cGVzIGRvZXNuJ3QgbWF0Y2hcbiAgcmV0dXJuIGdldEJpbnModmFsdWVzKS5tYXAoYmluID0+ICh7XG4gICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgaW5kZXhlczogYmluLFxuICAgIHgwOiBiaW4ueDAsXG4gICAgeDE6IGJpbi54MVxuICB9KSk7XG59XG5cbi8qKlxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGRhdGFzZXRzXG4gKiBAcGFyYW0gaW50ZXJ2YWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVCaW5zKFxuICBmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlcixcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBpbnRlcnZhbDogUGxvdFR5cGVbJ2ludGVydmFsJ11cbik6IFRpbWVCaW5zIHtcbiAgbGV0IGJpbnMgPSBmaWx0ZXIudGltZUJpbnMgfHwge307XG5cbiAgZmlsdGVyLmRhdGFJZC5mb3JFYWNoKGRhdGFJZCA9PiB7XG4gICAgLy8gcmV1c2UgYmlucyBpZiBmaWx0ZXJEYXRhIGRpZCBub3QgY2hhbmdlXG4gICAgaWYgKGJpbnNbZGF0YUlkXSAmJiBiaW5zW2RhdGFJZF1baW50ZXJ2YWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gZG8gbm90IGFwcGx5IGN1cnJlbnQgZmlsdGVyXG4gICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcblxuICAgIGJpbnMgPSB7XG4gICAgICAuLi5iaW5zLFxuICAgICAgW2RhdGFJZF06IHtcbiAgICAgICAgLi4uYmluc1tkYXRhSWRdLFxuICAgICAgICBbaW50ZXJ2YWxdOiBiaW5CeVRpbWUoaW5kZXhlcywgZGF0YXNldCwgaW50ZXJ2YWwsIGZpbHRlcilcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gYmlucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbkJ5VGltZShpbmRleGVzLCBkYXRhc2V0LCBpbnRlcnZhbCwgZmlsdGVyKSB7XG4gIC8vIGdwdUZpbHRlcnMgbmVlZCB0byBiZSBhcHBseSB0byBmaWx0ZXJlZEluZGV4XG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZ2V0RmlsdGVyTWFwcGVkVmFsdWUoZGF0YXNldCwgZmlsdGVyKTtcbiAgaWYgKCFtYXBwZWRWYWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGludGVydmFsQmlucyA9IGdldEJpblRocmVzaG9sZHMoaW50ZXJ2YWwsIGZpbHRlci5kb21haW4pO1xuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gaWR4ID0+IG1hcHBlZFZhbHVlW2lkeF07XG4gIGNvbnN0IGJpbnMgPSBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKGludGVydmFsQmlucywgaW5kZXhlcywgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgcmV0dXJuIGJpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaW5UaHJlc2hvbGRzKGludGVydmFsOiBzdHJpbmcsIGRvbWFpbjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGludGVydmFsVG9GdW5jdGlvbihpbnRlcnZhbCk7XG4gIGNvbnN0IFt0MCwgdDFdID0gZG9tYWluO1xuICBjb25zdCBmbG9vciA9IHRpbWVJbnRlcnZhbC5mbG9vcih0MCkuZ2V0VGltZSgpO1xuICBjb25zdCBjZWlsaW5nID0gdGltZUludGVydmFsLmNlaWwodDEpLmdldFRpbWUoKTtcblxuICBpZiAoIXRpbWVJbnRlcnZhbCkge1xuICAgIC8vIGlmIHRpbWUgaW50ZXJ2YWwgaXMgbm90IGRlZmluZWRcbiAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgcmV0dXJuIFt0MCwgdDAgKyBkdXJhdGlvbkRheV07XG4gIH1cbiAgY29uc3QgYmluVGhyZXNob2xkcyA9IHRpbWVJbnRlcnZhbC5yYW5nZShmbG9vciwgY2VpbGluZyArIDEpLm1hcCh0ID0+IG1vbWVudC51dGModCkudmFsdWVPZigpKTtcbiAgY29uc3QgbGFzdFN0ZXAgPSBiaW5UaHJlc2hvbGRzW2JpblRocmVzaG9sZHMubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0U3RlcCA9PT0gdDEpIHtcbiAgICAvLyB3aGVuIGxhc3Qgc3RlcCBlcXVhbCB0byBkb21haW4gbWF4LCBhZGQgb25lIG1vcmUgc3RlcFxuICAgIGJpblRocmVzaG9sZHMucHVzaChtb21lbnQudXRjKHRpbWVJbnRlcnZhbC5vZmZzZXQobGFzdFN0ZXApKS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgcmV0dXJuIGJpblRocmVzaG9sZHM7XG59XG5cbi8qKlxuICogUnVuIEdQVSBmaWx0ZXIgb24gY3VycmVudCBmaWx0ZXIgcmVzdWx0IHRvIGdlbmVyYXRlIGluZGV4ZXMgZm9yIHBsb3RpbmcgY2hhcnRcbiAqIFNraXAgcnV1bmluZyBmb3IgdGhlIHNhbWUgZmllbGRcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5HcHVGaWx0ZXJGb3JQbG90PEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIEw+LCBMPihcbiAgZGF0YXNldDogSyxcbiAgZmlsdGVyPzogRmlsdGVyXG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHNraXBJbmRleGVzID0gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKTtcblxuICBjb25zdCB7XG4gICAgZ3B1RmlsdGVyOiB7ZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycywgZmlsdGVyUmFuZ2UsIGZpbHRlclZhbHVlQWNjZXNzb3J9LFxuICAgIGZpbHRlcmVkSW5kZXhcbiAgfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IGdldEZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhc2V0LmRhdGFDb250YWluZXIpKCk7XG5cbiAgY29uc3QgYWxsQ2hhbm5lbHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzKVxuICAgIC5tYXAoKF8sIGkpID0+IGkpXG4gICAgLmZpbHRlcihpID0+IE9iamVjdC52YWx1ZXMoZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycylbaV0pO1xuICBjb25zdCBza2lwQWxsID0gIWFsbENoYW5uZWxzLmZpbHRlcihpID0+ICFza2lwSW5kZXhlcy5pbmNsdWRlcyhpKSkubGVuZ3RoO1xuICBpZiAoc2tpcEFsbCkge1xuICAgIHJldHVybiBmaWx0ZXJlZEluZGV4O1xuICB9XG5cbiAgY29uc3QgZmlsdGVyRGF0YSA9IGdldEZpbHRlckRhdGFGdW5jKFxuICAgIGZpbHRlclJhbmdlLFxuICAgIGdldEZpbHRlclZhbHVlLFxuICAgIGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICBza2lwSW5kZXhlc1xuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZEluZGV4LmZpbHRlcihmaWx0ZXJEYXRhKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKSB7XG4gIC8vIGFycmF5IG9mIGdwdSBmaWx0ZXIgbmFtZXNcbiAgaWYgKCFmaWx0ZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgZ3B1RmlsdGVycyA9IE9iamVjdC52YWx1ZXMoZGF0YXNldC5ncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycykgYXMgKHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0gfCBudWxsKVtdO1xuICBjb25zdCB2YWx1ZUluZGV4ID0gZmlsdGVyLmRhdGFJZC5maW5kSW5kZXgoaWQgPT4gaWQgPT09IGRhdGFzZXQuaWQpO1xuICBjb25zdCBmaWx0ZXJDb2x1bW4gPSBmaWx0ZXIubmFtZVt2YWx1ZUluZGV4XTtcblxuICByZXR1cm4gZ3B1RmlsdGVycy5yZWR1Y2UoKGFjY3UsIGl0ZW0sIGlkeCkgPT4ge1xuICAgIGlmIChpdGVtICYmIGZpbHRlckNvbHVtbiA9PT0gaXRlbS5uYW1lKSB7XG4gICAgICBhY2N1LnB1c2goaWR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIFtdIGFzIG51bWJlcltdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckRhdGFGdW5jKFxuICBmaWx0ZXJSYW5nZSxcbiAgZ2V0RmlsdGVyVmFsdWUsXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHNraXBzXG4pIHtcbiAgcmV0dXJuIGluZGV4ID0+XG4gICAgZ2V0RmlsdGVyVmFsdWUoe2luZGV4fSkuZXZlcnkoXG4gICAgICAodmFsLCBpKSA9PiBza2lwcy5pbmNsdWRlcyhpKSB8fCAodmFsID49IGZpbHRlclJhbmdlW2ldWzBdICYmIHZhbCA8PSBmaWx0ZXJSYW5nZVtpXVsxXSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRCaW4oYikge1xuICByZXR1cm4gYi54MCAhPT0gdW5kZWZpbmVkICYmIGIueDEgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXkuXG4gKiBUYWtlcyBhIHZhbHVlLCB0aW1lc3RlcHMgYW5kIHJldHVybiB0aGUgYWN0dWFsIHN0ZXAuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcFRvTWFya3ModmFsdWU6IG51bWJlciwgbWFya3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgLy8gYWx3YXlzIHVzZSBiaW4geDBcbiAgaWYgKCFtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tpbmcgYXQgdGhlIHVzYWdlIG51bGwgcmV0dXJuIHZhbHVlIGlzbid0IGV4cGVjdGVkIGFuZCByZXF1aXJlcyBleHRyYSBoYW5kbGluZyBpbiBhIGxvdCBvZiBwbGFjZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpID0gYmlzZWN0TGVmdChtYXJrcywgdmFsdWUpO1xuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBtYXJrc1tpXTtcbiAgfSBlbHNlIGlmIChpID09PSBtYXJrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbWFya3NbaSAtIDFdO1xuICB9XG4gIGNvbnN0IGlkeCA9IG1hcmtzW2ldIC0gdmFsdWUgPCB2YWx1ZSAtIG1hcmtzW2kgLSAxXSA/IGkgOiBpIC0gMTtcbiAgcmV0dXJuIG1hcmtzW2lkeF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWwsIG1pblZhbHVlLCBzdGVwLCBtYXJrcykge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJjZW50RmllbGQoZmllbGQpIHtcbiAgcmV0dXJuIGZpZWxkLm1ldGFkYXRhICYmIGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvciAmJiBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZChmaWVsZDogRmllbGQsIGFnZ3JlZ2F0aW9uOiBWYWx1ZU9mPEFnZ3JlZ2F0aW9uVHlwZXM+KSB7XG4gIC8vIHNob3VsZG4ndCBhcHBseSBzdW0gdG8gcGVyY2VudCBmaWVsZSB0eXBlXG4gIC8vIGRlZmF1bHQgYWdncmVnYXRpb24gaXMgYXZlcmFnZVxuICByZXR1cm4gZmllbGQgJiYgaXNQZXJjZW50RmllbGQoZmllbGQpXG4gICAgPyBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXG4gICAgOiBhZ2dyZWdhdGlvbiB8fCBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlO1xufVxuXG5jb25zdCBnZXRBZ3JlZ2F0aW9uVHlwZSA9IChmaWVsZCwgYWdncmVnYXRpb24pID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIHJldHVybiAnbWVhbl9vZl9wZXJjZW50JztcbiAgfVxuICByZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yID0gKGZpZWxkLCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBmaWVsZHMpID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIGNvbnN0IG51bWVyYXRvcklkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvcik7XG4gICAgY29uc3QgZGVub21pbmF0b3JJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0TnVtZXJhdG9yOiBpID0+IGRhdGFDb250YWluZXIudmFsdWVBdChpLCBudW1lcmF0b3JJZHgpLFxuICAgICAgZ2V0RGVub21pbmF0b3I6IGkgPT4gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGksIGRlbm9taW5hdG9ySWR4KVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gaSA9PiBmaWVsZC52YWx1ZUFjY2Vzc29yKHtpbmRleDogaX0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlQWdnckZ1bmMgPSAoXG4gIGZpZWxkOiBGaWVsZCB8IHN0cmluZyB8IG51bGwsXG4gIGFnZ3JlZ2F0aW9uOiBzdHJpbmcsXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlTW9kZWw8YW55LCBhbnk+XG4pOiAoKGJpbjogQmluKSA9PiBudW1iZXIpID0+IHtcbiAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0O1xuXG4gIC8vIFRoZSBwYXNzZWQtaW4gZmllbGQgbWlnaHQgbm90IGhhdmUgYWxsIHRoZSBmaWVsZHMgc2V0IChlLmcuIHZhbHVlQWNjZXNzb3IpXG4gIGNvbnN0IGRhdGFzZXRGaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgIGYgPT4gZmllbGQgJiYgKGYubmFtZSA9PT0gZmllbGQgfHwgZi5uYW1lID09PSAoZmllbGQgYXMgRmllbGQpLm5hbWUpXG4gICk7XG5cbiAgcmV0dXJuIGRhdGFzZXRGaWVsZCAmJiBhZ2dyZWdhdGlvblxuICAgID8gYmluID0+XG4gICAgICAgIGFnZ3JlZ2F0ZShcbiAgICAgICAgICBiaW4uaW5kZXhlcyxcbiAgICAgICAgICBnZXRBZ3JlZ2F0aW9uVHlwZShkYXRhc2V0RmllbGQsIGFnZ3JlZ2F0aW9uKSxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGNhbiByZXR1cm4ge2dldE51bWVyYXRvciwgZ2V0RGVub21pbmF0b3J9XG4gICAgICAgICAgZ2V0QWdncmVnYXRpb25BY2Nlc3NvcihkYXRhc2V0RmllbGQsIGRhdGFDb250YWluZXIsIGZpZWxkcylcbiAgICAgICAgKVxuICAgIDogYmluID0+IGJpbi5jb3VudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQgPSBmaWVsZCA9PiB7XG4gIGlmIChpc1BlcmNlbnRGaWVsZChmaWVsZCkpIHtcbiAgICAvLyBkb24ndCBzaG93IHN1bVxuICAgIHJldHVybiBUSU1FX0FHR1JFR0FUSU9OLmZpbHRlcigoe2lkfSkgPT4gaWQgIT09IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSk7XG4gIH1cbiAgcmV0dXJuIFRJTUVfQUdHUkVHQVRJT047XG59O1xuXG5mdW5jdGlvbiBnZXREZWx0YShcbiAgYmluczogTGluZURhdHVtW10sXG4gIHk6IG51bWJlcixcbiAgX2ludGVydmFsOiBQbG90VHlwZVsnaW50ZXJ2YWwnXVxuKTogUGFydGlhbDxMaW5lRGF0dW0+ICYge2RlbHRhOiAnbGFzdCc7IHBjdDogbnVtYmVyIHwgbnVsbH0ge1xuICAvLyBpZiAoV09XW2ludGVydmFsXSkgcmV0dXJuIGdldFdvdyhiaW5zLCB5LCBpbnRlcnZhbCk7XG4gIGNvbnN0IGxhc3RCaW4gPSBiaW5zW2JpbnMubGVuZ3RoIC0gMV07XG5cbiAgcmV0dXJuIHtcbiAgICBkZWx0YTogJ2xhc3QnLFxuICAgIHBjdDogbGFzdEJpbiA/IGdldFBjdENoYW5nZSh5LCBsYXN0QmluLnkpIDogbnVsbFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGN0Q2hhbmdlKHk6IHVua25vd24sIHkwOiB1bmtub3duKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeSkgJiYgTnVtYmVyLmlzRmluaXRlKHkwKSAmJiB5MCAhPT0gMCkge1xuICAgIHJldHVybiAoKHkgYXMgbnVtYmVyKSAtICh5MCBhcyBudW1iZXIpKSAvICh5MCBhcyBudW1iZXIpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVDaGFydChkYXRhc2V0czogRGF0YXNldHMsIGZpbHRlcjogRmlsdGVyKTogTGluZUNoYXJ0IHtcbiAgY29uc3Qge2RhdGFJZCwgeUF4aXMsIHBsb3RUeXBlLCBsaW5lQ2hhcnR9ID0gZmlsdGVyO1xuICBjb25zdCB7YWdncmVnYXRpb24sIGludGVydmFsfSA9IHBsb3RUeXBlO1xuICBjb25zdCBzZXJpZXNEYXRhSWQgPSBkYXRhSWRbMF07XG4gIGNvbnN0IGJpbnMgPSAoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikudGltZUJpbnM/LltzZXJpZXNEYXRhSWRdPy5baW50ZXJ2YWxdO1xuXG4gIGlmIChcbiAgICBsaW5lQ2hhcnQgJiZcbiAgICBsaW5lQ2hhcnQuYWdncmVnYXRpb24gPT09IGFnZ3JlZ2F0aW9uICYmXG4gICAgbGluZUNoYXJ0LmludGVydmFsID09PSBpbnRlcnZhbCAmJlxuICAgIGxpbmVDaGFydC55QXhpcyA9PT0geUF4aXM/Lm5hbWUgJiZcbiAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB2YWxpZGF0ZSBiaW5zIGJlY2F1c2Ugb2YgY3Jvc3MgZmlsdGVyIGRhdGEgY2hhbmdlc1xuICAgIGlzRXF1YWwoYmlucywgbGluZUNoYXJ0Py5iaW5zKVxuICApIHtcbiAgICAvLyBkb24ndCB1cGRhdGUgbGluZUNoYXJ0IGlmIHBsb3RUeXBlIGhhc24ndCBjaGFuZ2VcbiAgICByZXR1cm4gbGluZUNoYXJ0O1xuICB9XG5cbiAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW3Nlcmllc0RhdGFJZF07XG4gIGNvbnN0IGdldFlWYWx1ZSA9IGdldFZhbHVlQWdnckZ1bmMoeUF4aXMsIGFnZ3JlZ2F0aW9uLCBkYXRhc2V0KTtcblxuICBjb25zdCBpbml0OiBMaW5lRGF0dW1bXSA9IFtdO1xuICBjb25zdCBzZXJpZXMgPSAoYmlucyB8fCBbXSkucmVkdWNlKChhY2N1LCBiaW4pID0+IHtcbiAgICBjb25zdCB5ID0gZ2V0WVZhbHVlKGJpbik7XG4gICAgY29uc3QgZGVsdGEgPSBnZXREZWx0YShhY2N1LCB5LCBpbnRlcnZhbCk7XG4gICAgYWNjdS5wdXNoKHtcbiAgICAgIHg6IGJpbi54MCxcbiAgICAgIHksXG4gICAgICAuLi5kZWx0YVxuICAgIH0pO1xuICAgIHJldHVybiBhY2N1O1xuICB9LCBpbml0KTtcblxuICBjb25zdCB5RG9tYWluID0gZXh0ZW50PHt5OiBhbnl9PihzZXJpZXMsIGQgPT4gZC55KTtcbiAgY29uc3QgeERvbWFpbiA9IGJpbnMgPyBbYmluc1swXS54MCwgYmluc1tiaW5zLmxlbmd0aCAtIDFdLngxXSA6IFtdO1xuXG4gIC8vIHRyZWF0IG1pc3NpbmcgZGF0YSBhcyBhbm90aGVyIHNlcmllc1xuICBjb25zdCBzcGxpdCA9IHNwbGl0U2VyaWVzKHNlcmllcyk7XG4gIGNvbnN0IGFnZ3JOYW1lID0gQUdHUkVHQVRJT05fTkFNRVthZ2dyZWdhdGlvbl07XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgeURvbWFpbixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgeERvbWFpbixcbiAgICBpbnRlcnZhbCxcbiAgICBhZ2dyZWdhdGlvbixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2VyaWVzOiBzcGxpdCxcbiAgICB0aXRsZTogYCR7YWdnck5hbWV9JHsnIG9mICd9JHt5QXhpcyA/IHlBeGlzLm5hbWUgOiAnQ291bnQnfWAsXG4gICAgZmllbGRUeXBlOiB5QXhpcyA/IHlBeGlzLnR5cGUgOiAnaW50ZWdlcicsXG4gICAgeUF4aXM6IHlBeGlzID8geUF4aXMubmFtZSA6IG51bGwsXG4gICAgYWxsVGltZToge1xuICAgICAgdGl0bGU6IGBBbGwgVGltZSBBdmVyYWdlYCxcbiAgICAgIHZhbHVlOiBhZ2dyZWdhdGUoc2VyaWVzLCBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLCBkID0+IGQueSlcbiAgICB9LFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYmlucyBpcyBCaW5zW10sIG5vdCBhIEJpbnMgbWFwLiBSZWZhY3RvciB0byB1c2UgY29ycmVjdCB0eXBlcy5cbiAgICBiaW5zXG4gIH07XG59XG5cbi8vIHNwbGl0IGludG8gbXVsdGlwbGUgc2VyaWVzIHdoZW4gc2VlIG1pc3NpbmcgZGF0YVxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0U2VyaWVzKHNlcmllcykge1xuICBjb25zdCBsaW5lczogYW55W10gPSBbXTtcbiAgbGV0IHRlbXA6IGFueVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZCA9IHNlcmllc1tpXTtcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkLnkpICYmIHRlbXAubGVuZ3RoKSB7XG4gICAgICAvLyBlbmRzIHRlbXBcbiAgICAgIGxpbmVzLnB1c2godGVtcCk7XG4gICAgICB0ZW1wID0gW107XG4gICAgfSBlbHNlIGlmIChub3ROdWxsb3JVbmRlZmluZWQoZC55KSkge1xuICAgICAgdGVtcC5wdXNoKGQpO1xuICAgIH1cblxuICAgIGlmIChpID09PSBzZXJpZXMubGVuZ3RoIC0gMSAmJiB0ZW1wLmxlbmd0aCkge1xuICAgICAgbGluZXMucHVzaCh0ZW1wKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtYXJrZXJzID0gbGluZXMubGVuZ3RoID4gMSA/IHNlcmllcy5maWx0ZXIoZCA9PiBub3ROdWxsb3JVbmRlZmluZWQoZC55KSkgOiBbXTtcblxuICByZXR1cm4ge2xpbmVzLCBtYXJrZXJzfTtcbn1cblxudHlwZSBNaW5WaXNTdGF0ZUZvckFuaW1hdGlvbldpbmRvdyA9IHtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFZhbHVlVG9BbmltYXRpb25XaW5kb3c8UyBleHRlbmRzIE1pblZpc1N0YXRlRm9yQW5pbWF0aW9uV2luZG93PihcbiAgc3RhdGU6IFMsXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyXG4pIHtcbiAgY29uc3Qge1xuICAgIHBsb3RUeXBlLFxuICAgIHZhbHVlOiBbdmFsdWUwLCB2YWx1ZTFdLFxuICAgIGFuaW1hdGlvbldpbmRvd1xuICB9ID0gZmlsdGVyO1xuXG4gIGNvbnN0IGludGVydmFsID0gcGxvdFR5cGUuaW50ZXJ2YWwgfHwgZ2V0SW5pdGlhbEludGVydmFsKGZpbHRlciwgc3RhdGUuZGF0YXNldHMpO1xuICBjb25zdCBiaW5zID0gZ2V0VGltZUJpbnMoZmlsdGVyLCBzdGF0ZS5kYXRhc2V0cywgaW50ZXJ2YWwpO1xuICBjb25zdCBkYXRhc2V0QmlucyA9IGJpbnMgJiYgT2JqZWN0LmtleXMoYmlucykubGVuZ3RoICYmIE9iamVjdC52YWx1ZXMoYmlucylbMF1baW50ZXJ2YWxdO1xuICBjb25zdCB0aHJlc2hvbGRzID0gKGRhdGFzZXRCaW5zIHx8IFtdKS5tYXAoYiA9PiBiLngwKTtcblxuICBsZXQgdmFsMCA9IHZhbHVlMDtcbiAgbGV0IHZhbDEgPSB2YWx1ZTE7XG4gIGxldCBpZHg7XG4gIGlmIChhbmltYXRpb25XaW5kb3cgPT09IEFOSU1BVElPTl9XSU5ET1cuaW50ZXJ2YWwpIHtcbiAgICB2YWwwID0gc25hcFRvTWFya3ModmFsdWUxLCB0aHJlc2hvbGRzKTtcbiAgICBpZHggPSB0aHJlc2hvbGRzLmluZGV4T2YodmFsMCk7XG4gICAgdmFsMSA9IGlkeCA+IC0xID8gZGF0YXNldEJpbnNbaWR4XS54MSA6IE5hTjtcbiAgfSBlbHNlIHtcbiAgICAvLyBmaXQgY3VycmVudCB2YWx1ZSB0byB3aW5kb3dcbiAgICB2YWwwID0gc25hcFRvTWFya3ModmFsdWUwLCB0aHJlc2hvbGRzKTtcbiAgICB2YWwxID0gc25hcFRvTWFya3ModmFsdWUxLCB0aHJlc2hvbGRzKTtcblxuICAgIGlmICh2YWwwID09PSB2YWwxKSB7XG4gICAgICBpZHggPSB0aHJlc2hvbGRzLmluZGV4T2YodmFsMCk7XG4gICAgICBpZiAoaWR4ID09PSB0aHJlc2hvbGRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdmFsMCA9IHRocmVzaG9sZHNbaWR4IC0gMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwxID0gdGhyZXNob2xkc1tpZHggKyAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGRhdGVkRmlsdGVyID0ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZToge1xuICAgICAgLi4uZmlsdGVyLnBsb3RUeXBlLFxuICAgICAgaW50ZXJ2YWxcbiAgICB9LFxuICAgIHRpbWVCaW5zOiBiaW5zLFxuICAgIHZhbHVlOiBbdmFsMCwgdmFsMV1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlZEZpbHRlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgb3IgdXBkYXRlIGNvbG9ycyBmb3IgYSBmaWx0ZXIgcGxvdFxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGRhdGFzZXRzXG4gKiBAcGFyYW0gb2xkQ29sb3JzQnlEYXRhSWRcbiAqL1xuZnVuY3Rpb24gZ2V0RmlsdGVyUGxvdENvbG9yc0J5RGF0YUlkKGZpbHRlciwgZGF0YXNldHMsIG9sZENvbG9yc0J5RGF0YUlkKSB7XG4gIGxldCBjb2xvcnNCeURhdGFJZCA9IG9sZENvbG9yc0J5RGF0YUlkIHx8IHt9O1xuICBmb3IgKGNvbnN0IGRhdGFJZCBvZiBmaWx0ZXIuZGF0YUlkKSB7XG4gICAgaWYgKCFjb2xvcnNCeURhdGFJZFtkYXRhSWRdICYmIGRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICAgIGNvbG9yc0J5RGF0YUlkID0ge1xuICAgICAgICAuLi5jb2xvcnNCeURhdGFJZCxcbiAgICAgICAgW2RhdGFJZF06IHJnYlRvSGV4KGRhdGFzZXRzW2RhdGFJZF0uY29sb3IpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29sb3JzQnlEYXRhSWQ7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBwbG90VHlwZVxuICogQHBhcmFtIGRhdGFzZXRzXG4gKiBAcGFyYW0gZGF0YUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVUaW1lRmlsdGVyUGxvdFR5cGUoXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyLFxuICBwbG90VHlwZTogVGltZVJhbmdlRmlsdGVyWydwbG90VHlwZSddLFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIF9kYXRhSWQ/OiBzdHJpbmdcbik6IFRpbWVSYW5nZUZpbHRlciB7XG4gIGxldCBuZXh0RmlsdGVyID0gZmlsdGVyO1xuICBsZXQgbmV4dFBsb3RUeXBlID0gcGxvdFR5cGU7XG4gIGlmICh0eXBlb2YgbmV4dFBsb3RUeXBlICE9PSAnb2JqZWN0JyB8fCAhbmV4dFBsb3RUeXBlLmFnZ3JlZ2F0aW9uIHx8ICFuZXh0UGxvdFR5cGUuaW50ZXJ2YWwpIHtcbiAgICBuZXh0UGxvdFR5cGUgPSBnZXREZWZhdWx0UGxvdFR5cGUoZmlsdGVyLCBkYXRhc2V0cyk7XG4gIH1cblxuICBpZiAoZmlsdGVyLmRhdGFJZC5sZW5ndGggPiAxKSB7XG4gICAgbmV4dFBsb3RUeXBlID0ge1xuICAgICAgLi4ubmV4dFBsb3RUeXBlLFxuICAgICAgY29sb3JzQnlEYXRhSWQ6IGdldEZpbHRlclBsb3RDb2xvcnNCeURhdGFJZChmaWx0ZXIsIGRhdGFzZXRzLCBuZXh0UGxvdFR5cGUuY29sb3JzQnlEYXRhSWQpXG4gICAgfTtcbiAgfVxuICBuZXh0RmlsdGVyID0ge1xuICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgcGxvdFR5cGU6IG5leHRQbG90VHlwZVxuICB9O1xuXG4gIGNvbnN0IGJpbnMgPSBnZXRUaW1lQmlucyhuZXh0RmlsdGVyLCBkYXRhc2V0cywgbmV4dFBsb3RUeXBlLmludGVydmFsKTtcblxuICBuZXh0RmlsdGVyID0ge1xuICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgdGltZUJpbnM6IGJpbnNcbiAgfTtcblxuICBpZiAocGxvdFR5cGUudHlwZSA9PT0gUExPVF9UWVBFUy5oaXN0b2dyYW0pIHtcbiAgICAvLyBIaXN0b2dyYW0gaXMgY2FsY3VsYXRlZCBhbmQgbWVtb2l6ZWQgaW4gdGhlIGNoYXJ0IGl0c2VsZlxuICB9IGVsc2UgaWYgKHBsb3RUeXBlLnR5cGUgPT09IFBMT1RfVFlQRVMubGluZUNoYXJ0KSB7XG4gICAgLy8gd2Ugc2hvdWxkIGJlIGFibGUgdG8gbW92ZSB0aGlzIGludG8gaXRzIG93biBjb21wb25lbnQgc28gcmVhY3Qgd2lsbCBkbyB0aGUgc2hhbGxvdyBjb21wYXJpc29uIGZvciB1cy5cbiAgICBuZXh0RmlsdGVyID0ge1xuICAgICAgLi4ubmV4dEZpbHRlcixcbiAgICAgIGxpbmVDaGFydDogZ2V0TGluZUNoYXJ0KGRhdGFzZXRzLCBuZXh0RmlsdGVyKVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV4dEZpbHRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmdlRmlsdGVyQmlucyhmaWx0ZXIsIGRhdGFzZXRzLCBudW1CaW5zKSB7XG4gIGNvbnN0IHtkb21haW59ID0gZmlsdGVyO1xuICBpZiAoIWZpbHRlci5kYXRhSWQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBmaWx0ZXIuZGF0YUlkLnJlZHVjZSgoYWNjLCBkYXRhSWQsIGRhdGFzZXRJZHgpID0+IHtcbiAgICBpZiAoZmlsdGVyLmJpbnM/LltkYXRhSWRdKSB7XG4gICAgICAvLyBkb24ndCByZWNhbGN1bGF0ZSBiaW5zXG4gICAgICBhY2NbZGF0YUlkXSA9IGZpbHRlci5iaW5zW2RhdGFJZF07XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWx0ZXIubmFtZVtkYXRhc2V0SWR4XTtcbiAgICBpZiAoZGF0YUlkICYmIGZpZWxkTmFtZSkge1xuICAgICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFJZF07XG4gICAgICBjb25zdCBmaWVsZCA9IGRhdGFzZXQ/LmdldENvbHVtbkZpZWxkKGZpZWxkTmFtZSk7XG4gICAgICBpZiAoZGF0YXNldCAmJiBmaWVsZCkge1xuICAgICAgICBjb25zdCBpbmRleGVzID0gcnVuR3B1RmlsdGVyRm9yUGxvdChkYXRhc2V0LCBmaWx0ZXIpO1xuICAgICAgICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gaW5kZXggPT4gZmllbGQudmFsdWVBY2Nlc3Nvcih7aW5kZXh9KTtcbiAgICAgICAgYWNjW2RhdGFJZF0gPSBoaXN0b2dyYW1Gcm9tRG9tYWluKGRvbWFpbiwgaW5kZXhlcywgbnVtQmlucywgdmFsdWVBY2Nlc3Nvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJhbmdlRmlsdGVyUGxvdFR5cGUoXG4gIGZpbHRlcjogUmFuZ2VGaWx0ZXIsXG4gIHBsb3RUeXBlOiBSYW5nZUZpbHRlclsncGxvdFR5cGUnXSxcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBfZGF0YUlkPzogc3RyaW5nXG4pOiBSYW5nZUZpbHRlciB7XG4gIGNvbnN0IG5leHRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlXG4gIH07XG5cbiAgLy8gaWYgKGRhdGFJZCkge1xuICAvLyAgIC8vIGNsZWFyIGJpbnNcbiAgLy8gICBuZXh0RmlsdGVyID0ge1xuICAvLyAgICAgLi4ubmV4dEZpbHRlcixcbiAgLy8gICAgIGJpbnM6IHtcbiAgLy8gICAgICAgLi4ubmV4dEZpbHRlci5iaW5zLFxuICAvLyAgICAgICBbZGF0YUlkXTogbnVsbFxuICAvLyAgICAgfVxuICAvLyAgIH07XG4gIC8vIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZSxcbiAgICBiaW5zOiBnZXRSYW5nZUZpbHRlckJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIEJJTlMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFydFRpdGxlKHlBeGlzOiBGaWVsZCwgcGxvdFR5cGU6IFBsb3RUeXBlKTogc3RyaW5nIHtcbiAgY29uc3QgeUF4aXNOYW1lID0geUF4aXM/LmRpc3BsYXlOYW1lO1xuICBjb25zdCB7YWdncmVnYXRpb259ID0gcGxvdFR5cGU7XG5cbiAgaWYgKHlBeGlzTmFtZSkge1xuICAgIHJldHVybiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYCR7YWdncmVnYXRpb259ICR7eUF4aXNOYW1lfSBvdmVyIFRpbWVgKTtcbiAgfVxuXG4gIHJldHVybiBgQ291bnQgb2YgUm93cyBvdmVyIFRpbWVgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpIHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBkYXRhc2V0cyk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0RGVmYXVsdFRpbWVGb3JtYXQoaW50ZXJ2YWwpO1xuICByZXR1cm4ge1xuICAgIGludGVydmFsLFxuICAgIGRlZmF1bHRUaW1lRm9ybWF0LFxuICAgIHR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtLFxuICAgIGFnZ3JlZ2F0aW9uOiBBR0dSRUdBVElPTl9UWVBFUy5zdW1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMs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QyxHQUFHTixtQkFBbUIsQ0FBQ2IsTUFBTSxFQUFFSyxPQUFPLEVBQUVLLE9BQU8sRUFBRWYsYUFBYSxDQUFDO01BQzVFO0lBQ0Y7SUFDQSxPQUFPdUwsR0FBRztFQUNaLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNSO0FBRU8sU0FBU0sseUJBQXlCQSxDQUN2QzNNLE1BQW1CLEVBQ25COEksUUFBaUMsRUFDakMxRyxRQUFrQixFQUNsQjBKLE9BQWdCLEVBQ0g7RUFDYixJQUFNQyxVQUFVLEdBQUExTCxhQUFBLENBQUFBLGFBQUEsS0FDWEwsTUFBTTtJQUNUOEksUUFBUSxFQUFSQTtFQUFRLEVBQ1Q7O0VBRUQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUEsT0FBQXpJLGFBQUEsQ0FBQUEsYUFBQSxLQUNLTCxNQUFNO0lBQ1Q4SSxRQUFRLEVBQVJBLFFBQVE7SUFDUnpILElBQUksRUFBRWdMLGtCQUFrQixDQUFDTixVQUFVLEVBQUUzSixRQUFRLEVBQUV3SyxlQUFJO0VBQUM7QUFFeEQ7QUFFTyxTQUFTQyxhQUFhQSxDQUFDaEUsS0FBWSxFQUFFQyxRQUFrQixFQUFVO0VBQ3RFLElBQU1nRSxTQUFTLEdBQUdqRSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWtFLFdBQVc7RUFDcEMsSUFBT2xHLFdBQVcsR0FBSWlDLFFBQVEsQ0FBdkJqQyxXQUFXO0VBRWxCLElBQUlpRyxTQUFTLEVBQUU7SUFDYixPQUFPLElBQUFFLDhCQUFxQixLQUFBakQsTUFBQSxDQUFJbEQsV0FBVyxPQUFBa0QsTUFBQSxDQUFJK0MsU0FBUyxlQUFZLENBQUM7RUFDdkU7RUFFQTtBQUNGO0FBRU8sU0FBU1osa0JBQWtCQSxDQUFDbE0sTUFBTSxFQUFFb0MsUUFBUSxFQUFFO0VBQ25ELElBQU1DLFFBQVEsR0FBRyxJQUFBd0ksd0JBQWtCLEVBQUM3SyxNQUFNLEVBQUVvQyxRQUFRLENBQUM7RUFDckQsSUFBTTZLLGlCQUFpQixHQUFHLElBQUFDLDRCQUFvQixFQUFDN0ssUUFBUSxDQUFDO0VBQ3hELE9BQU87SUFDTEEsUUFBUSxFQUFSQSxRQUFRO0lBQ1I0SyxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQmhELElBQUksRUFBRWtDLHFCQUFVLENBQUNDLFNBQVM7SUFDMUJ2RixXQUFXLEVBQUVDLDRCQUFpQixDQUFDa0I7RUFDakMsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/utils",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.7",
4
+ "version": "3.1.1",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -32,9 +32,10 @@
32
32
  "dependencies": {
33
33
  "@deck.gl/core": "^8.9.27",
34
34
  "@dnd-kit/sortable": "^8.0.0",
35
- "@kepler.gl/common-utils": "3.1.0-alpha.7",
36
- "@kepler.gl/constants": "3.1.0-alpha.7",
37
- "@kepler.gl/types": "3.1.0-alpha.7",
35
+ "@kepler.gl/common-utils": "3.1.1",
36
+ "@kepler.gl/constants": "3.1.1",
37
+ "@kepler.gl/types": "3.1.1",
38
+ "@loaders.gl/arrow": "^4.3.2",
38
39
  "@luma.gl/constants": "^8.5.20",
39
40
  "@luma.gl/core": "^8.5.20",
40
41
  "@mapbox/geo-viewport": "^0.4.1",