@kepler.gl/reducers 3.1.8 → 3.1.9

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.
@@ -63,7 +63,7 @@ var getDefaultState = function getDefaultState() {
63
63
  * @public
64
64
  * @example
65
65
  *
66
- * import keplerGlReducer, {mapStyleUpdaters} from 'kepler.gl/reducers';
66
+ * import keplerGlReducer, {mapStyleUpdaters} from '@kepler.gl/reducers';
67
67
  * // Root Reducer
68
68
  * const reducers = combineReducers({
69
69
  * keplerGl: keplerGlReducer,
@@ -658,4 +658,4 @@ function getInitialInputStyle() {
658
658
  uploadedFile: null
659
659
  };
660
660
  }
661
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xvbmVEZWVwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl90YXNrczIiLCJfZDNDb2xvciIsIl9hY3Rpb25zIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImdldERlZmF1bHRNYXBTdHlsZXMiLCJleHBvcnRzIiwiY2RuVXJsIiwiREVGQVVMVF9NQVBfU1RZTEVTIiwicmVkdWNlIiwiYWNjdSIsImN1cnIiLCJpZCIsImljb24iLCJjb25jYXQiLCJnZXREZWZhdWx0U3RhdGUiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJ0b3BMYXllckdyb3VwcyIsInN0eWxlVHlwZSIsIkRFRkFVTFRfQkFTRV9NQVBfU1RZTEUiLCJtYXBTdHlsZXMiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5wdXRTdHlsZSIsImdldEluaXRpYWxJbnB1dFN0eWxlIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsImhleFRvUmdiIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiY3VzdG9tM0RCdWlsZGluZ0NvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiaXNMb2FkaW5nIiwiYm90dG9tTWFwU3R5bGUiLCJ1bmRlZmluZWQiLCJ0b3BNYXBTdHlsZSIsIm1hcFN0eWxlVXBkYXRlcnMiLCJJTklUSUFMX01BUF9TVFlMRSIsImdldE1hcFN0eWxlcyIsIl9yZWYiLCJtYXBTdHlsZSIsInN0eWxlIiwiZWRpdGFibGUiLCJlZGl0Qm90dG9tTWFwU3R5bGUiLCJoYXNUb3BMYXllciIsInZhbHVlcyIsInNvbWUiLCJ2IiwidG9wTGF5ZXJzIiwia2V5IiwiZWRpdFRvcE1hcFN0eWxlIiwiZmluZExheWVyRmlsbENvbG9yIiwibGF5ZXIiLCJwYWludCIsImdldFBhaW50Q29sb3IiLCJjb2xvciIsIkFycmF5IiwiaXNBcnJheSIsImdldDNEQnVpbGRpbmdDb2xvciIsImJhY2tncm91bmRMYXllciIsImxheWVycyIsImZpbmQiLCJfcmVmMiIsImJ1aWxkaW5nTGF5ZXIiLCJfcmVmMyIsIm1hdGNoIiwiYnVpbGRpbmdDb2xvciIsIm9wZXJhdGlvbiIsImFscGhhIiwicmdiT2JqIiwicmdiIiwiZyIsImIiLCJnZXRCYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGVCYXNlTGF5ZXIiLCJiYWNrdXBCYWNrZ3JvdW5kQ29sb3IiLCJfY29sb3JNYXliZVRvUkdCIiwiY29sb3JNYXliZVRvUkdCIiwiYmFzZUxheWVyIiwiX3JlZjQiLCJCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyIsImluY2x1ZGVzIiwiYmFja2dyb3VuZENvbG9yT2ZCYXNlTGF5ZXIiLCJuZXdCYWNrZ3JvdW5kQ29sb3IiLCJuZXdCYWNrZ3JvdW5kQ29sb3JBc1JHQkFycmF5IiwibWFwIiwiY2hhbm5lbE51bWJlciIsIk1hdGgiLCJyb3VuZCIsImdldEJhY2tncm91bmRDb2xvciIsInByZXZpb3VzU3RhdGUiLCJwcmV2aW91c1N0YXRlTWFwU3R5bGUiLCJOT19NQVBfSUQiLCJnZXRMYXllckdyb3Vwc0Zyb21TdHlsZSIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwibGciLCJyZXF1ZXN0TWFwU3R5bGVzVXBkYXRlciIsInN0YXRlIiwiX3JlZjUiLCJfcmVmNSRwYXlsb2FkIiwicGF5bG9hZCIsIm9uU3VjY2VzcyIsInRvTG9hZCIsImxvYWRNYXBTdHlsZVRhc2tzIiwiZ2V0TG9hZE1hcFN0eWxlVGFza3MiLCJuZXh0U3RhdGUiLCJ3aXRoVGFzayIsImluaXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmNyIsIl9yZWY3JHBheWxvYWQiLCJtYXBDb25maWdDaGFuZ2VVcGRhdGVyIiwiYWN0aW9uIiwiaGFzU3R5bGVPYmplY3QiLCJpc1BsYWluT2JqZWN0IiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX3JlZjgiLCJfc3RhdGUkbWFwU3R5bGVzJHN0eWwiLCJfc3RhdGUkbWFwU3R5bGVzJHN0eWwyIiwiX3JlZjgkcGF5bG9hZCIsImN1c3RvbSIsInVybCIsImRlZmF1bHRMR1Zpc2liaWxpdHkiLCJnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkiLCJtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5IiwibG9hZE1hcFN0eWxlc1VwZGF0ZXIiLCJfcmVmOSIsIm5ld1N0eWxlcyIsImFkZExheWVyR3JvdXBzIiwibGF5ZXJHcm91cHMiLCJuZXdTdGF0ZSIsInRhc2tzIiwiY3JlYXRlQWN0aW9uVGFzayIsIkFDVElPTl9UQVNLIiwibG9hZE1hcFN0eWxlRXJyVXBkYXRlciIsIl9yZWYxMiIsIl9yZWYxMiRwYXlsb2FkIiwiaWRzIiwiZXJyb3IiLCJDb25zb2xlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMTUiLCJjb25maWciLCJfcmVmMTYiLCJtZXJnZWQiLCJCb29sZWFuIiwiVGFzayIsImFsbCIsIl9yZWYxNyIsImFjY2Vzc1Rva2VuIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsIkxPQURfTUFQX1NUWUxFX1RBU0siLCJiaW1hcCIsInJlc3VsdHMiLCJsb2FkTWFwU3R5bGVzIiwiX3JlZjE4IiwiZXJyIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTkiLCJfcmVmMTkkcGF5bG9hZCIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMjAiLCJfdXBkYXRlZCRpY29uIiwiX3VwZGF0ZWQkdXJsIiwiX3VwZGF0ZWQkdXJsMiIsIl9yZWYyMCRwYXlsb2FkIiwibWFwU3RhdGUiLCJ1cGRhdGVkIiwiaXNVcGRhdGVkSWNvbkRhdGFVcmkiLCJzdGFydHNXaXRoIiwiaXNNYXBib3hTdHlsZVVybCIsImdldFN0eWxlSW1hZ2VJY29uIiwic3R5bGVVcmwiLCJpc1ZhbGlkIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsImdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlIiwiZWRpdEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsInJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlciIsIl9zdGF0ZSRtYXBTdHlsZXMiLCJfIiwicmVzdE9mTWFwU3R5bGVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMjEiLCJzZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyIiwiX3JlZjIyIiwidXBsb2FkZWRGaWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdHlsZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgVGFzaywge3dpdGhUYXNrfSBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5cbi8vIFV0aWxzXG5pbXBvcnQge1xuICBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGdldFN0eWxlRG93bmxvYWRVcmwsXG4gIG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZWRpdEJvdHRvbU1hcFN0eWxlLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgaXNQbGFpbk9iamVjdCxcbiAgaGV4VG9SZ2IsXG4gIGNvbG9yTWF5YmVUb1JHQixcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBERUZBVUxUX01BUF9TVFlMRVMsXG4gIERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICBOT19NQVBfSUQsXG4gIERFRkFVTFRfQkxER19DT0xPUixcbiAgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SLFxuICBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyxcbiAgREVGQVVMVF9CQVNFX01BUF9TVFlMRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0FDVElPTl9UQVNLLCBMT0FEX01BUF9TVFlMRV9UQVNLfSBmcm9tICdAa2VwbGVyLmdsL3Rhc2tzJztcbmltcG9ydCB7cmdifSBmcm9tICdkMy1jb2xvcic7XG5cbmltcG9ydCB7XG4gIFJHQkNvbG9yLFxuICBMYXllckdyb3VwLFxuICBCYXNlTWFwU3R5bGUsXG4gIE1hcFN0eWxlcyxcbiAgSW5wdXRTdHlsZSxcbiAgVmlzaWJsZUxheWVyR3JvdXBzXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLFxuICBLZXBsZXJHbEluaXRQYXlsb2FkLFxuICBNYXBTdHlsZUFjdGlvbnMsXG4gIGxvYWRNYXBTdHlsZXMsXG4gIGxvYWRNYXBTdHlsZUVyclxufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBNYXBib3hTdHlsZVVybCA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgTWFwU3R5bGUgPSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgdG9wTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgbWFwU3R5bGVzOiBNYXBTdHlsZXM7XG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWFwYm94QXBpVXJsOiBzdHJpbmc7XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBib29sZWFuO1xuICBpbnB1dFN0eWxlOiBJbnB1dFN0eWxlO1xuICB0aHJlZURCdWlsZGluZ0NvbG9yOiBSR0JDb2xvcjtcbiAgYmFja2dyb3VuZENvbG9yOiBSR0JDb2xvcjtcbiAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBib29sZWFuO1xuICBib3R0b21NYXBTdHlsZTogYW55O1xuICB0b3BNYXBTdHlsZTogYW55O1xuICBpbml0aWFsU3RhdGU/OiBNYXBTdHlsZTtcbiAgaXNMb2FkaW5nOiB7XG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0TWFwU3R5bGVzID0gKGNkblVybDogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBERUZBVUxUX01BUF9TVFlMRVMucmVkdWNlKFxuICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtjdXJyLmlkXToge1xuICAgICAgICAuLi5jdXJyLFxuICAgICAgICBpY29uOiBgJHtjZG5Vcmx9LyR7Y3Vyci5pY29ufWBcbiAgICAgIH1cbiAgICB9KSxcbiAgICB7fVxuICApO1xufTtcblxuY29uc3QgZ2V0RGVmYXVsdFN0YXRlID0gKCk6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHRvcExheWVyR3JvdXBzID0ge307XG5cbiAgcmV0dXJuIHtcbiAgICBzdHlsZVR5cGU6IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgIHRvcExheWVyR3JvdXBzLFxuICAgIG1hcFN0eWxlczogZ2V0RGVmYXVsdE1hcFN0eWxlcyhnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmNkblVybCksXG4gICAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG51bGwsXG4gICAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUiksXG4gICAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkFDS0dST1VORF9DT0xPUiksXG4gICAgaXNMb2FkaW5nOiB7fSxcbiAgICBib3R0b21NYXBTdHlsZTogdW5kZWZpbmVkLFxuICAgIHRvcE1hcFN0eWxlOiB1bmRlZmluZWRcbiAgfTtcbn07XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGBtYXBTdHlsZWAuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7bWFwU3R5bGVVcGRhdGVyc30gZnJvbSAna2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBoaWRlIGxhYmVsIGZyb20gYmFja2dyb3VuZCBtYXBcbiAqICAgIGNhc2UgJ0NMSUNLX0JVVFRPTic6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgZm9vOiB7XG4gKiAgICAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbC5mb28sXG4gKiAgICAgICAgICAgICBtYXBTdHlsZTogbWFwU3R5bGVVcGRhdGVycy5tYXBDb25maWdDaGFuZ2VVcGRhdGVyKFxuICogICAgICAgICAgICAgICBtYXBTdHlsZSxcbiAqICAgICAgICAgICAgICAge3BheWxvYWQ6IHt2aXNpYmxlTGF5ZXJHcm91cHM6IHtsYWJlbDogZmFsc2UsIHJvYWQ6IHRydWUsIGJhY2tncm91bmQ6IHRydWV9fX1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3R5bGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0eWxlYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHN0eWxlVHlwZSAtIERlZmF1bHQ6IGAnZGFyaydgXG4gKiBAcHJvcGVydHkgdmlzaWJsZUxheWVyR3JvdXBzIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IHRvcExheWVyR3JvdXBzIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IG1hcFN0eWxlcyAtIG1hcHBpbmcgZnJvbSBzdHlsZSBrZXkgdG8gc3R5bGUgb2JqZWN0XG4gKiBAcHJvcGVydHkgbWFwYm94QXBpQWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBgbnVsbGBcbiAqIEBQcm9wZXJ0eSBtYXBib3hBcGlVcmwgLSBEZWZhdWx0IG51bGxcbiAqIEBQcm9wZXJ0eSBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCAtIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBpbnB1dFN0eWxlIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IHRocmVlREJ1aWxkaW5nQ29sb3IgLSBEZWZhdWx0OiBgW3IsIGcsIGJdYFxuICogQHByb3BlcnR5IGJhY2tncm91bmRDb2xvciAtIERlZmF1bHQ6IGBbciwgZywgYl1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX01BUF9TVFlMRTogTWFwU3R5bGUgPSBnZXREZWZhdWx0U3RhdGUoKTtcblxuaW50ZXJmYWNlIEdldE1hcFN0eWxlc1BhcmFtIHtcbiAgc3R5bGVUeXBlOiBzdHJpbmc7XG4gIHZpc2libGVMYXllckdyb3Vwczoge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59O1xuICB0b3BMYXllckdyb3Vwczoge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59O1xuICBtYXBTdHlsZXM6IHtbaWQ6IHN0cmluZ106IGFueX07XG59XG5cbi8qKlxuICogQ3JlYXRlIHR3byBtYXAgc3R5bGVzIGZyb20gcHJlc2V0IG1hcCBzdHlsZSwgb25lIGZvciB0b3AgbWFwIG9uZSBmb3IgYm90dG9tXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlVHlwZSAtIGN1cnJlbnQgbWFwIHN0eWxlXG4gKiBAcGFyYW0ge09iamVjdH0gdmlzaWJsZUxheWVyR3JvdXBzIC0gdmlzaWJsZSBsYXllcnMgb2YgYm90dG9tIG1hcFxuICogQHBhcmFtIHtPYmplY3R9IHRvcExheWVyR3JvdXBzIC0gdmlzaWJsZSBsYXllcnMgb2YgdG9wIG1hcFxuICogQHBhcmFtIHtPYmplY3R9IG1hcFN0eWxlcyAtIGEgZGljdGlvbmFyeSBvZiBhbGwgbWFwIHN0eWxlc1xuICogQHJldHVybnMge09iamVjdH0gYm90dG9tTWFwU3R5bGUgfCB0b3BNYXBTdHlsZSB8IGlzUmFzdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXBTdHlsZXMoe1xuICBzdHlsZVR5cGUsXG4gIHZpc2libGVMYXllckdyb3VwcyxcbiAgdG9wTGF5ZXJHcm91cHMsXG4gIG1hcFN0eWxlc1xufTogR2V0TWFwU3R5bGVzUGFyYW0pIHtcbiAgY29uc3QgbWFwU3R5bGUgPSBtYXBTdHlsZXNbc3R5bGVUeXBlXTtcblxuICAvLyBzdHlsZSBtaWdodCBub3QgYmUgbG9hZGVkIHlldFxuICBpZiAoIW1hcFN0eWxlIHx8ICFtYXBTdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGVkaXRhYmxlID0gT2JqZWN0LmtleXModmlzaWJsZUxheWVyR3JvdXBzKS5sZW5ndGg7XG5cbiAgY29uc3QgYm90dG9tTWFwU3R5bGUgPSAhZWRpdGFibGVcbiAgICA/IG1hcFN0eWxlLnN0eWxlXG4gICAgOiBlZGl0Qm90dG9tTWFwU3R5bGUoe1xuICAgICAgICBpZDogc3R5bGVUeXBlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgdmlzaWJsZUxheWVyR3JvdXBzXG4gICAgICB9KTtcblxuICBjb25zdCBoYXNUb3BMYXllciA9IGVkaXRhYmxlID4gMCAmJiBPYmplY3QudmFsdWVzKHRvcExheWVyR3JvdXBzKS5zb21lKHYgPT4gdik7XG5cbiAgLy8gbXV0ZSB0b3AgbGF5ZXIgaWYgbm90IHZpc2libGUgaW4gYm90dG9tIGxheWVyXG4gIGNvbnN0IHRvcExheWVycyA9XG4gICAgaGFzVG9wTGF5ZXIgJiZcbiAgICBPYmplY3Qua2V5cyh0b3BMYXllckdyb3VwcykucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IHRvcExheWVyR3JvdXBzW2tleV0gJiYgdmlzaWJsZUxheWVyR3JvdXBzW2tleV1cbiAgICAgIH0pLFxuICAgICAge30gYXMge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59XG4gICAgKTtcblxuICBjb25zdCB0b3BNYXBTdHlsZSA9IGhhc1RvcExheWVyXG4gICAgPyBlZGl0VG9wTWFwU3R5bGUoe1xuICAgICAgICBpZDogc3R5bGVUeXBlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgdmlzaWJsZUxheWVyR3JvdXBzOiB0b3BMYXllcnNcbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiB7Ym90dG9tTWFwU3R5bGUsIHRvcE1hcFN0eWxlLCBlZGl0YWJsZX07XG59XG5cbmZ1bmN0aW9uIGZpbmRMYXllckZpbGxDb2xvcihsYXllcikge1xuICByZXR1cm4gbGF5ZXIgJiYgbGF5ZXIucGFpbnQgJiYgbGF5ZXIucGFpbnRbJ2JhY2tncm91bmQtY29sb3InXTtcbn1cblxuLy8gbmVlZCB0byBiZSBjYXJlZnVsIGJlY2F1c2Ugc29tZSBiYXNlbWFwIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ10gdmFsdWVzIG1heSBiZSBhbiBpbnRlcnBvbGF0ZSBhcnJheSBleHByZXNzaW9uIGluc3RlYWQgb2YgYSBjb2xvciBzdHJpbmdcbi8vIGh0dHBzOi8vZG9jcy5tYXBib3guY29tL21hcGJveC1nbC1qcy9zdHlsZS1zcGVjL2xheWVycy8jcGFpbnQtYmFja2dyb3VuZC1iYWNrZ3JvdW5kLWNvbG9yXG4vLyBodHRwczovL2RvY3MubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvc3R5bGUtc3BlYy9leHByZXNzaW9ucy8jaW50ZXJwb2xhdGVcbmZ1bmN0aW9uIGdldFBhaW50Q29sb3IoY29sb3IpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3IpICYmIGNvbG9yWzBdID09PSAnaW50ZXJwb2xhdGUnKSB7XG4gICAgLy8gZ2V0IGNvbG9yIG9mIGZpcnN0IHpvb20gYnJlYWtcbiAgICAvLyBbXCJpbnRlcnBvbGF0ZVwiLCBbXCJsaW5lYXJcIl0sIFtcInpvb21cIl0sIDExLCBcImhzbCgzNSwgMzIlLCA5MSUpXCIsIDEzLCBcImhzbCgzNSwgMTIlLCA4OSUpXCJdXG4gICAgcmV0dXJuIGNvbG9yWzRdO1xuICB9XG4gIHJldHVybiBjb2xvcjtcbn1cblxuZnVuY3Rpb24gZ2V0M0RCdWlsZGluZ0NvbG9yKHN0eWxlKTogUkdCQ29sb3Ige1xuICAvLyBzZXQgYnVpbGRpbmcgY29sb3IgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGJhY2tncm91bmQgY29sb3IuXG4gIGlmICghc3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4gaGV4VG9SZ2IoREVGQVVMVF9CTERHX0NPTE9SKTtcbiAgfVxuXG4gIGNvbnN0IGJhY2tncm91bmRMYXllciA9IChzdHlsZS5zdHlsZS5sYXllcnMgfHwgW10pLmZpbmQoKHtpZH0pID0+IGlkID09PSAnYmFja2dyb3VuZCcpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSk7XG5cbiAgY29uc3QgYnVpbGRpbmdDb2xvciA9XG4gICAgZmluZExheWVyRmlsbENvbG9yKGJ1aWxkaW5nTGF5ZXIpIHx8IGZpbmRMYXllckZpbGxDb2xvcihiYWNrZ3JvdW5kTGF5ZXIpIHx8IERFRkFVTFRfQkxER19DT0xPUjtcblxuICAvLyBicmlnaHRlbiBvciBkYXJrZW4gYnVpbGRpbmcgYmFzZWQgb24gc3R5bGVcbiAgY29uc3Qgb3BlcmF0aW9uID0gc3R5bGUuaWQubWF0Y2goLyg/PShkYXJrfG5pZ2h0KSkvKSA/ICdicmlnaHRlcicgOiAnZGFya2VyJztcblxuICBjb25zdCBhbHBoYSA9IDAuMjtcbiAgY29uc3QgcmdiT2JqID0gcmdiKGJ1aWxkaW5nQ29sb3IpW29wZXJhdGlvbl0oW2FscGhhXSk7XG4gIHJldHVybiBbcmdiT2JqLnIsIHJnYk9iai5nLCByZ2JPYmouYl07XG59XG5cbmZ1bmN0aW9uIGdldEJhY2tncm91bmRDb2xvckZyb21TdHlsZUJhc2VMYXllcihcbiAgc3R5bGU6IEJhc2VNYXBTdHlsZSxcbiAgYmFja3VwQmFja2dyb3VuZENvbG9yOiBSR0JDb2xvclxuKTogUkdCQ29sb3Ige1xuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGNvbG9yTWF5YmVUb1JHQihiYWNrdXBCYWNrZ3JvdW5kQ29sb3IpIHx8IGJhY2t1cEJhY2tncm91bmRDb2xvcjtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3Igc3R5bGUuc3R5bGUgbm90IHR5cGVkXG4gIGNvbnN0IGJhc2VMYXllciA9IChzdHlsZS5zdHlsZS5sYXllcnMgfHwgW10pLmZpbmQoKHtpZH0pID0+XG4gICAgQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMuaW5jbHVkZXMoaWQpXG4gICk7XG5cbiAgY29uc3QgYmFja2dyb3VuZENvbG9yT2ZCYXNlTGF5ZXIgPSBnZXRQYWludENvbG9yKGZpbmRMYXllckZpbGxDb2xvcihiYXNlTGF5ZXIpKTtcblxuICBjb25zdCBuZXdCYWNrZ3JvdW5kQ29sb3IgPVxuICAgIHR5cGVvZiBiYWNrZ3JvdW5kQ29sb3JPZkJhc2VMYXllciA9PT0gJ3N0cmluZydcbiAgICAgID8gYmFja2dyb3VuZENvbG9yT2ZCYXNlTGF5ZXJcbiAgICAgIDogYmFja3VwQmFja2dyb3VuZENvbG9yO1xuXG4gIGNvbnN0IG5ld0JhY2tncm91bmRDb2xvckFzUkdCQXJyYXkgPSBjb2xvck1heWJlVG9SR0IobmV3QmFja2dyb3VuZENvbG9yKVxuICAgIC8vIGlmIG5ld0JhY2tncm91bmRDb2xvciB3YXMgaW4gc3RyaW5nIEhTTCBmb3JtYXQgaXQgY2FuIGludHJvZHVjZSBSR0IgbnVtYmVycyB3aXRoIGRlY2ltYWxzLFxuICAgIC8vIHdoaWNoIG1heSByZW5kZXIgdGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIG9mIHRoZSA8U3R5bGVkTWFwPiBjb250YWluZXIgaW5jb3JyZWN0bHkgd2hlbiB1c2luZyBvdXIgb3duIGNvbG9yIHV0aWxzIGByZ2JUb0hleCgpYFxuICAgIC8vIHNvIHdlIGF0dGVtcHQgdG8gcm91bmQgdG8gbmVhcmVzdCBpbnRlZ2VyIGhlcmVcbiAgICA/Lm1hcChjaGFubmVsTnVtYmVyID0+IE1hdGgucm91bmQoY2hhbm5lbE51bWJlcikpIGFzIFJHQkNvbG9yIHwgbnVsbDtcblxuICByZXR1cm4gbmV3QmFja2dyb3VuZENvbG9yQXNSR0JBcnJheSB8fCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3I7XG59XG5cbi8vIGRldGVybWluZSBuZXcgYmFja2dyb3VuZENvbG9yIGZyb20gZWl0aGVyIHByZXZpb3VzIHN0YXRlIGJhc2VtYXAgc3R5bGUsIHByZXZpb3VzIHN0YXRlIGJhY2tncm91bmRDb2xvciwgb3IgdGhlIERFRkFVTFRfQkFDS0dST1VORF9DT0xPUlxuZnVuY3Rpb24gZ2V0QmFja2dyb3VuZENvbG9yKHByZXZpb3VzU3RhdGU6IE1hcFN0eWxlLCBzdHlsZVR5cGU6IHN0cmluZykge1xuICBjb25zdCBwcmV2aW91c1N0YXRlTWFwU3R5bGUgPSBwcmV2aW91c1N0YXRlLm1hcFN0eWxlc1twcmV2aW91c1N0YXRlLnN0eWxlVHlwZV07XG4gIGNvbnN0IGJhY2t1cEJhY2tncm91bmRDb2xvciA9IHByZXZpb3VzU3RhdGUuYmFja2dyb3VuZENvbG9yIHx8IERFRkFVTFRfQkFDS0dST1VORF9DT0xPUjtcbiAgY29uc3QgYmFja2dyb3VuZENvbG9yID1cbiAgICBzdHlsZVR5cGUgPT09IE5PX01BUF9JRFxuICAgICAgPyAvLyBpZiB0aGUgc3R5bGUgaGFzIHN3aXRjaGVkIHRvIHRoZSBcIm5vIGJhc2VtYXBcIiBzdHlsZSxcbiAgICAgICAgLy8gYXR0ZW1wdCB0byBkZXRlY3QgYmFja2dyb3VuZENvbG9yIG9mIHRoZSBwcmV2aW91cyBiYXNlbWFwIGlmIGl0IHdhcyBhIG1hcGJveCBiYXNlbWFwXG4gICAgICAgIC8vIGFuZCBzZXQgaXQgYXMgdGhlIFwibm8gYmFzZW1hcFwiIGJhY2tncm91bmRDb2xvclxuICAgICAgICBnZXRCYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGVCYXNlTGF5ZXIocHJldmlvdXNTdGF0ZU1hcFN0eWxlLCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3IpXG4gICAgICA6IC8vIG90aGVyd2lzZSBsZWF2ZSBpdCBhbG9uZSBhbmQgcmVseSBvbiB0aGUgcHJldmlvdXMgc3RhdGUncyBwcmVleGlzdGluZyBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgLy8gb3IgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIGFzIGEgbGFzdCByZXNvcnRcbiAgICAgICAgYmFja3VwQmFja2dyb3VuZENvbG9yO1xuXG4gIHJldHVybiBiYWNrZ3JvdW5kQ29sb3I7XG59XG5cbmZ1bmN0aW9uIGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHN0eWxlPy5sYXllcnMpXG4gICAgPyBERUZBVUxUX0xBWUVSX0dST1VQUy5maWx0ZXIobGcgPT4gc3R5bGUubGF5ZXJzLmZpbHRlcihsZy5maWx0ZXIpLmxlbmd0aClcbiAgICA6IFtdO1xufVxuXG4vLyBVcGRhdGVyc1xuXG4vKipcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXF1ZXN0TWFwU3R5bGVzVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge21hcFN0eWxlcywgb25TdWNjZXNzfX06IE1hcFN0eWxlQWN0aW9ucy5SZXF1ZXN0TWFwU3R5bGVzVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB0b0xvYWQgPSBPYmplY3Qua2V5cyhtYXBTdHlsZXMpLnJlZHVjZShcbiAgICAoYWNjdSwgaWQpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKCFzdGF0ZS5pc0xvYWRpbmdbaWRdID8ge1tpZF06IG1hcFN0eWxlc1tpZF19IDoge30pXG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgY29uc3QgbG9hZE1hcFN0eWxlVGFza3MgPSBnZXRMb2FkTWFwU3R5bGVUYXNrcyhcbiAgICB0b0xvYWQsXG4gICAgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgc3RhdGUubWFwYm94QXBpVXJsLFxuICAgIG9uU3VjY2Vzc1xuICApO1xuXG4gIGNvbnN0IGlzTG9hZGluZyA9IE9iamVjdC5rZXlzKHRvTG9hZCkucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2tleV06IHRydWVcbiAgICB9KSxcbiAgICB7fVxuICApO1xuICBjb25zdCBuZXh0U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNMb2FkaW5nXG4gIH07XG4gIHJldHVybiB3aXRoVGFzayhuZXh0U3RhdGUsIGxvYWRNYXBTdHlsZVRhc2tzKTtcbn07XG5cbi8qKlxuICogUHJvcGFnYXRlIGBtYXBTdHlsZWAgcmVkdWNlciB3aXRoIGBtYXBib3hBcGlBY2Nlc3NUb2tlbmAgYW5kIGBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdGAuXG4gKiBpZiBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCBpcyB0cnVlIG1hcFN0eWxlcyBpcyBlbXB0aWVkOyBsb2FkTWFwU3R5bGVzVXBkYXRlcigpIHdpbGxcbiAqIHBvcHVsYXRlIG1hcFN0eWxlcy5cbiAqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5pdE1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7XG4gICAgcGF5bG9hZCA9IHt9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLklOSVQ7XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlbiB0byBtYXAgc3R5bGUgc3RhdGVcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHBheWxvYWQubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcGF5bG9hZC5tYXBib3hBcGlVcmwgfHwgc3RhdGUubWFwYm94QXBpVXJsLFxuICBtYXBTdHlsZXM6ICFwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0ID8gc3RhdGUubWFwU3R5bGVzIDoge30sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IHx8IGZhbHNlXG59KTtcbi8vIH0pO1xuXG4vKipcbiAqIFVwZGF0ZSBgdmlzaWJsZUxheWVyR3JvdXBzYHRvIGNoYW5nZSBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwQ29uZmlnQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5NYXBDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uYWN0aW9uLnBheWxvYWQsXG4gICAgLi4uZ2V0TWFwU3R5bGVzKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLi4uYWN0aW9uLnBheWxvYWRcbiAgICB9KVxuICB9O1xufTtcblxuY29uc3QgaGFzU3R5bGVPYmplY3QgPSBzdHlsZSA9PiBpc1BsYWluT2JqZWN0KHN0eWxlPy5zdHlsZSk7XG5cbi8qKlxuICogQ2hhbmdlIHRvIGFub3RoZXIgbWFwIHN0eWxlLiBUaGUgc2VsZWN0ZWQgc3R5bGUgc2hvdWxkIGFscmVhZHkgYmVlbiBsb2FkZWQgaW50byBgbWFwU3R5bGUubWFwU3R5bGVzYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge3N0eWxlVHlwZSwgb25TdWNjZXNzfX06IE1hcFN0eWxlQWN0aW9ucy5NYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgaWYgKFxuICAgIC8vIHdlIG1pZ2h0IG5vdCBoYXZlIHJlY2VpdmVkIHRoZSBzdHlsZSB5ZXRcbiAgICAhc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0gfHxcbiAgICAvLyBvciBpZiBpdCBpcyBhIG1hbmFnZWQgY3VzdG9tIHN0eWxlIGFzc2V0XG4gICAgLy8gYW5kIGlmIGl0IGhhcyBub3QgYmVlbiBoeWRyYXRlZCB3aXRoIFVSTCBpbmZvIHlldCAoZHVyaW5nIGFwcCBmaXJzdCBpbml0aWFsaXphdGlvbilcbiAgICAvLyBhbmQgaXQgZG9lcyBub3QgaGF2ZSBhIHN0eWxlIG9iamVjdCAoZHVyaW5nIGFkZGluZyBhIGN1c3RvbSBzdHlsZSlcbiAgICAoc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0/LmN1c3RvbSA9PT0gJ01BTkFHRUQnICYmXG4gICAgICAhc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0/LnVybCAmJlxuICAgICAgIWhhc1N0eWxlT2JqZWN0KHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKSlcbiAgKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgaWYgKCFoYXNTdHlsZU9iamVjdChzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSkpIHtcbiAgICAvLyBzdHlsZSBoYXNuJ3QgbG9hZGVkIHlldFxuICAgIHJldHVybiByZXF1ZXN0TWFwU3R5bGVzVXBkYXRlcihcbiAgICAgIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHN0eWxlVHlwZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgICAgW3N0eWxlVHlwZV06IHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblN1Y2Nlc3NcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjb25zdCBkZWZhdWx0TEdWaXNpYmlsaXR5ID0gZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5KHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKTtcblxuICBjb25zdCB2aXNpYmxlTGF5ZXJHcm91cHMgPSBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KFxuICAgIGRlZmF1bHRMR1Zpc2liaWxpdHksXG4gICAgc3RhdGUudmlzaWJsZUxheWVyR3JvdXBzXG4gICk7XG5cbiAgY29uc3QgdGhyZWVEQnVpbGRpbmdDb2xvcjogUkdCQ29sb3IgPSBzdGF0ZS5jdXN0b20zREJ1aWxkaW5nQ29sb3JcbiAgICA/IHN0YXRlLnRocmVlREJ1aWxkaW5nQ29sb3JcbiAgICA6IGdldDNEQnVpbGRpbmdDb2xvcihzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSk7XG5cbiAgLy8gZGV0ZXJtaW5lIG5ldyBiYWNrZ3JvdW5kQ29sb3IgZnJvbSBlaXRoZXIgcHJldmlvdXMgc3RhdGUgYmFzZW1hcCBzdHlsZSwgcHJldmlvdXMgc3RhdGUgYmFja2dyb3VuZENvbG9yLCBvciB0aGUgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SXG4gIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGdldEJhY2tncm91bmRDb2xvcihzdGF0ZSwgc3R5bGVUeXBlKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHN0eWxlVHlwZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgdGhyZWVEQnVpbGRpbmdDb2xvcixcbiAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgLi4uZ2V0TWFwU3R5bGVzKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgICAgc3R5bGVUeXBlXG4gICAgfSlcbiAgfTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBzdWNjZXNzXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAgYWN0aW9uOiBNYXBTdHlsZUFjdGlvbnMuTG9hZE1hcFN0eWxlc1VwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3Qge25ld1N0eWxlcywgb25TdWNjZXNzfSA9IGFjdGlvbi5wYXlsb2FkIHx8IHt9O1xuXG4gIGNvbnN0IGFkZExheWVyR3JvdXBzID0gT2JqZWN0LmtleXMobmV3U3R5bGVzKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGlkKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtpZF06IHtcbiAgICAgICAgLi4ubmV3U3R5bGVzW2lkXSxcbiAgICAgICAgbGF5ZXJHcm91cHM6IG5ld1N0eWxlc1tpZF0ubGF5ZXJHcm91cHMgfHwgZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUobmV3U3R5bGVzW2lkXS5zdHlsZSlcbiAgICAgIH1cbiAgICB9KSxcbiAgICB7fVxuICApO1xuICAvLyByZXNldCBpc0xvYWRpbmdcbiAgY29uc3QgaXNMb2FkaW5nID0gT2JqZWN0LmtleXMoc3RhdGUuaXNMb2FkaW5nKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICAuLi4oc3RhdGUuaXNMb2FkaW5nW2tleV0gJiYgaGFzU3R5bGVPYmplY3QobmV3U3R5bGVzW2tleV0pXG4gICAgICAgID8ge1trZXldOiBmYWxzZX1cbiAgICAgICAgOiB7W2tleV06IHN0YXRlLmlzTG9hZGluZ1trZXldfSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuICAvLyBhZGQgbmV3IHN0eWxlcyB0byBzdGF0ZVxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc0xvYWRpbmcsXG4gICAgbWFwU3R5bGVzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBTdHlsZXMsXG4gICAgICAuLi5hZGRMYXllckdyb3Vwc1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB0YXNrcyA9IGNyZWF0ZUFjdGlvblRhc2sob25TdWNjZXNzLCB7c3R5bGVUeXBlOiBzdGF0ZS5zdHlsZVR5cGV9KTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSBuZXdTdHlsZXNbc3RhdGUuc3R5bGVUeXBlXVxuICAgID8gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDoge3N0eWxlVHlwZTogc3RhdGUuc3R5bGVUeXBlfX0pXG4gICAgOiBuZXdTdGF0ZTtcblxuICByZXR1cm4gdGFza3MgPyB3aXRoVGFzayhuZXh0U3RhdGUsIHRhc2tzKSA6IG5leHRTdGF0ZTtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUFjdGlvblRhc2soYWN0aW9uLCBwYXlsb2FkKSB7XG4gIGlmICh0eXBlb2YgYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IGFjdGlvbihwYXlsb2FkKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGxvYWQgbWFwIHN0eWxlIGVycm9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG4vLyBkbyBub3RoaW5nIGZvciBub3csIGlmIGRpZG4ndCBsb2FkLCBza2lwIGl0XG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlRXJyVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge2lkcywgZXJyb3J9fTogTWFwU3R5bGVBY3Rpb25zLkxvYWRNYXBTdHlsZUVyclVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgQ29uc29sZS5lcnJvcihlcnJvcik7XG4gIC8vIHJlc2V0IGlzTG9hZGluZ1xuICBjb25zdCBpc0xvYWRpbmcgPSBPYmplY3Qua2V5cyhzdGF0ZS5pc0xvYWRpbmcpLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihzdGF0ZS5pc0xvYWRpbmdba2V5XSAmJiAoaWRzIHx8IFtdKS5pbmNsdWRlcyhrZXkpXG4gICAgICAgID8ge1trZXldOiBmYWxzZX1cbiAgICAgICAgOiB7W2tleV06IHN0YXRlLmlzTG9hZGluZ1trZXldfSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNMb2FkaW5nXG4gIH07XG59O1xuXG4vKipcbiAqIExvYWQgbWFwIHN0eWxlIG9iamVjdCB3aGVuIHBhc3MgaW4gc2F2ZWQgbWFwIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgbWFwU3R5bGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlIG9yIGByZWFjdC1wYW1gIHRhc2tzIHRvIGxvYWQgbWFwIHN0eWxlIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge1xuICAgIHBheWxvYWQ6IHtjb25maWd9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB7bWFwU3R5bGV9ID0gY29uZmlnIHx8IHt9O1xuXG4gIGlmICghbWFwU3R5bGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBtZXJnZSBkZWZhdWx0IG1hcFN0eWxlc1xuICBjb25zdCBtZXJnZWQgPSBtYXBTdHlsZS5tYXBTdHlsZXNcbiAgICA/IHtcbiAgICAgICAgLi4ubWFwU3R5bGUsXG4gICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgIC4uLm1hcFN0eWxlLm1hcFN0eWxlcyxcbiAgICAgICAgICAuLi5zdGF0ZS5tYXBTdHlsZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIDogbWFwU3R5bGU7XG5cbiAgLy8gc2V0IGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZSBpZiBtYXBTdHlsZSBjb250YWlucyB0aHJlZURCdWlsZGluZ0NvbG9yXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvciA9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIEJvb2xlYW4obWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvcikgfHwgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvcjtcbiAgY29uc3QgbmV3U3RhdGUgPSBtYXBDb25maWdDaGFuZ2VVcGRhdGVyKHN0YXRlLCB7cGF5bG9hZDogbWVyZ2VkfSk7XG5cbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IG5ld1N0YXRlLnN0eWxlVHlwZX19KTtcbn07XG5cbmZ1bmN0aW9uIGdldExvYWRNYXBTdHlsZVRhc2tzKG1hcFN0eWxlcywgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgb25TdWNjZXNzKSB7XG4gIHJldHVybiBbXG4gICAgVGFzay5hbGwoXG4gICAgICBPYmplY3QudmFsdWVzKG1hcFN0eWxlcylcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAubWFwKCh7aWQsIHVybCwgYWNjZXNzVG9rZW59KSA9PiAoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHVybDogZ2V0U3R5bGVEb3dubG9hZFVybCh1cmwsIGFjY2Vzc1Rva2VuIHx8IG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpXG4gICAgICAgIH0pKVxuICAgICAgICAubWFwKExPQURfTUFQX1NUWUxFX1RBU0spXG4gICAgKS5iaW1hcChcbiAgICAgIC8vIHN1Y2Nlc3NcbiAgICAgIHJlc3VsdHMgPT5cbiAgICAgICAgbG9hZE1hcFN0eWxlcyhcbiAgICAgICAgICByZXN1bHRzLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCB7aWQsIHN0eWxlfSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgICAgW2lkXToge1xuICAgICAgICAgICAgICAgIC4uLm1hcFN0eWxlc1tpZF0sXG4gICAgICAgICAgICAgICAgc3R5bGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgICksXG4gICAgICAgICAgb25TdWNjZXNzXG4gICAgICAgICksXG4gICAgICAvLyBlcnJvclxuICAgICAgZXJyID0+IGxvYWRNYXBTdHlsZUVycihPYmplY3Qua2V5cyhtYXBTdHlsZXMpLCBlcnIpXG4gICAgKVxuICBdO1xufVxuLyoqXG4gKiBSZXNldCBtYXAgc3R5bGUgY29uZmlnIHRvIGluaXRpYWwgc3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYG1hcFN0eWxlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE1hcENvbmZpZ01hcFN0eWxlVXBkYXRlciA9IChzdGF0ZTogTWFwU3R5bGUpOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IGVtcHR5Q29uZmlnID0ge1xuICAgIC4uLklOSVRJQUxfTUFQX1NUWUxFLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmw6IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogc3RhdGUubWFwU3R5bGVzUmVwbGFjZURlZmF1bHQsXG4gICAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICAgIG1hcFN0eWxlczogc3RhdGUubWFwU3R5bGVzLFxuICAgIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG4gIH07XG5cbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihlbXB0eUNvbmZpZywge3BheWxvYWQ6IHtzdHlsZVR5cGU6IGVtcHR5Q29uZmlnLnN0eWxlVHlwZX19KTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0IGlzIHJlY2VpdmVkXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge2ljb24sIHN0eWxlLCBlcnJvcn19OiBNYXBTdHlsZUFjdGlvbnMuTG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgaW5wdXRTdHlsZToge1xuICAgIC4uLnN0YXRlLmlucHV0U3R5bGUsXG4gICAgLy8gc3R5bGUganNvbiBhbmQgaWNvbiB3aWxsIGxvYWQgYXN5bmNocm9ub3VzbHlcbiAgICAuLi4oc3R5bGVcbiAgICAgID8ge1xuICAgICAgICAgIGlkOlxuICAgICAgICAgICAgc3RhdGUuaW5wdXRTdHlsZS5jdXN0b20gPT09ICdNQU5BR0VEJ1xuICAgICAgICAgICAgICA/IHN0YXRlLmlucHV0U3R5bGUuaWQgLy8gY3VzdG9tIE1BTkFHRUQgdHlwZVxuICAgICAgICAgICAgICA6IC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgICBzdHlsZS5pZCB8fCBnZW5lcmF0ZUhhc2hJZCgpLCAvLyBjdXN0b20gTE9DQUwgdHlwZVxuICAgICAgICAgIC8vIG1ha2UgYSBjb3B5IG9mIHRoZSBzdHlsZSBvYmplY3RcbiAgICAgICAgICBzdHlsZTogY2xvbmVEZWVwKHN0eWxlKSxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgbGFiZWw6IHN0YXRlLmlucHV0U3R5bGUubGFiZWwgfHwgc3R5bGUubmFtZSxcbiAgICAgICAgICAvLyBnYXRoZXJpbmcgbGF5ZXIgZ3JvdXAgaW5mbyBmcm9tIHN0eWxlIGpzb25cbiAgICAgICAgICBsYXllckdyb3VwczogZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUoc3R5bGUpXG4gICAgICAgIH1cbiAgICAgIDoge30pLFxuICAgIC4uLihpY29uID8ge2ljb259IDoge30pLFxuICAgIC4uLihlcnJvciAhPT0gdW5kZWZpbmVkID8ge2Vycm9yfSA6IHt9KVxuICB9XG59KTtcblxuLyoqXG4gKiBJbnB1dCBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5wdXRNYXBTdHlsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtpbnB1dFN0eWxlLCBtYXBTdGF0ZX19OiBNYXBTdHlsZUFjdGlvbnMuSW5wdXRNYXBTdHlsZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC4uLmlucHV0U3R5bGVcbiAgfTtcblxuICAvLyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZWl0aGVyIGEgdXJsIHRvIGhvc3RlZCBzdHlsZSBqc29uIHRoYXQgbmVlZHMgYW4gaWNvbiB1cmwsXG4gIC8vIG9yIGFuIGljb24gYWxyZWFkeSBhdmFpbGFibGUgY2xpZW50LXNpZGUgYXMgYSBkYXRhIHVyaVxuICBjb25zdCBpc1VwZGF0ZWRJY29uRGF0YVVyaSA9IHVwZGF0ZWQuaWNvbj8uc3RhcnRzV2l0aCgnZGF0YTppbWFnZScpO1xuICBjb25zdCBpc01hcGJveFN0eWxlVXJsID1cbiAgICB1cGRhdGVkLnVybD8uc3RhcnRzV2l0aCgnbWFwYm94Oi8vJykgfHwgdXBkYXRlZC51cmw/LmluY2x1ZGVzKCdtYXBib3guY29tJyk7XG5cbiAgY29uc3QgaWNvbiA9XG4gICAgIWlzVXBkYXRlZEljb25EYXRhVXJpICYmIGlzTWFwYm94U3R5bGVVcmxcbiAgICAgID8gLy8gR2V0IGltYWdlIGljb24gdXJscyBvbmx5IGZvciBtYXBib3ggbWFwIGxpYi5cbiAgICAgICAgZ2V0U3R5bGVJbWFnZUljb24oe1xuICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgIHN0eWxlVXJsOiB1cGRhdGVkLnVybCB8fCAnJyxcbiAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogdXBkYXRlZC5hY2Nlc3NUb2tlbiB8fCBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbiB8fCAnJyxcbiAgICAgICAgICBtYXBib3hBcGlVcmw6IHN0YXRlLm1hcGJveEFwaVVybCB8fCBERUZBVUxUX01BUEJPWF9BUElfVVJMXG4gICAgICAgIH0pXG4gICAgICA6IHVwZGF0ZWQuaWNvbjtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlucHV0U3R5bGU6IHtcbiAgICAgIC4uLnVwZGF0ZWQsXG4gICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgaWNvblxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIG1hcCBzdHlsZSBmcm9tIHVzZXIgaW5wdXQgdG8gcmVkdWNlciBhbmQgc2V0IGl0IHRvIGN1cnJlbnQgc3R5bGVcbiAqIFRoaXMgYWN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgY2xpY2sgY29uZmlybSBhZnRlciBwdXR0aW5nIGluIGEgdmFsaWQgc3R5bGUgdXJsIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChzdGF0ZTogTWFwU3R5bGUpOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdGF0ZS5pbnB1dFN0eWxlLmlkO1xuICBpZiAoIXN0eWxlSWQpIHJldHVybiBzdGF0ZTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IGdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlKHN0YXRlKTtcbiAgLy8gc2V0IG5ldyBzdHlsZVxuICByZXR1cm4gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDoge3N0eWxlVHlwZTogc3R5bGVJZH19KTtcbn07XG5cbi8qKlxuICogRWRpdCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIuXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBjb25maXJtIGFmdGVyIGVkaXRpbmcgYW4gZXhpc3RpbmcgY3VzdG9tIHN0eWxlIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICByZXR1cm4gZ2V0TmV3U3RhdGVXaXRoQ3VzdG9tTWFwU3R5bGUoc3RhdGUpO1xufTtcblxuZnVuY3Rpb24gZ2V0TmV3U3RhdGVXaXRoQ3VzdG9tTWFwU3R5bGUoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUge1xuICBjb25zdCBzdHlsZUlkID0gc3RhdGUuaW5wdXRTdHlsZS5pZDtcbiAgaWYgKCFzdHlsZUlkKSByZXR1cm4gc3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFByb3BlcnR5ICdsYXllckdyb3VwcycgaXMgbWlzc2luZyBpbiB0eXBlICdJbnB1dFN0eWxlJyBidXQgcmVxdWlyZWQgaW4gdHlwZSAnQmFzZU1hcFN0eWxlJy4gTGVnYWN5IGNhc2U/XG4gICAgbWFwU3R5bGVzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBTdHlsZXMsXG4gICAgICBbc3R5bGVJZF06IHtcbiAgICAgICAgLi4uc3RhdGUubWFwU3R5bGVzW3N0eWxlSWRdLCAvLyBkbyBub3QgdW5pbnRlbnRpb25hbGx5IGRyb3AgYW55IGFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgICAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlXG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBzZXQgdG8gZGVmYXVsdFxuICAgIGlucHV0U3R5bGU6IGdldEluaXRpYWxJbnB1dFN0eWxlKClcbiAgfTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBjdXN0b20gbWFwIHN0eWxlIGZyb20gYHN0YXRlLm1hcFN0eWxlLm1hcFN0eWxlc2AuXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlQ3VzdG9tTWFwU3R5bGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIGFjdGlvbjogTWFwU3R5bGVBY3Rpb25zLlJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB7aWR9ID0gYWN0aW9uLnBheWxvYWQ7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBjb25zdCB7W2lkXTogXywgLi4ucmVzdE9mTWFwU3R5bGVzfSA9IHN0YXRlLm1hcFN0eWxlcztcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHJlc3RPZk1hcFN0eWxlc1xuICB9O1xuXG4gIGlmIChzdGF0ZS5zdHlsZVR5cGUgPT09IGlkKSB7XG4gICAgLy8gaWYgcmVtb3ZpbmcgYSBjdXN0b20gc3R5bGUgdGhhdCBpcyBhbHNvIHRoZSBjdXJyZW50IGFjdGl2ZSBiYXNlIG1hcCxcbiAgICAvLyB0aGVuIHJlc2V0IHRvIHRoZSBkZWZhdWx0IGFjdGl2ZSBiYXNlIG1hcCAoYG1hcFN0eWxlLnN0eWxlVHlwZWApXG4gICAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IGdldERlZmF1bHRTdGF0ZSgpLnN0eWxlVHlwZX19KTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogVXBkYXRlcyAzZCBidWlsZGluZyBjb2xvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IGNvbG9yfTogTWFwU3R5bGVBY3Rpb25zLlNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aHJlZURCdWlsZGluZ0NvbG9yOiBjb2xvcixcbiAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiB0cnVlXG59KTtcblxuLyoqXG4gKiBVcGRhdGVzIGJhY2tncm91bmQgY29sb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtwYXlsb2FkOiBjb2xvcn06IE1hcFN0eWxlQWN0aW9ucy5TZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgYmFja2dyb3VuZENvbG9yOiBjb2xvclxufSk7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBpbml0aWFsIGlucHV0IHN0eWxlXG4gKiBAcmV0dXJuIE9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5pdGlhbElucHV0U3R5bGUoKTogSW5wdXRTdHlsZSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IG51bGwsXG4gICAgYWNjZXNzVG9rZW46IG51bGwsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgIGxhYmVsOiBudWxsLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHVybDogbnVsbCxcbiAgICBpY29uOiBudWxsLFxuICAgIGN1c3RvbTogJ0xPQ0FMJyxcbiAgICB1cGxvYWRlZEZpbGU6IG51bGxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQVlBLElBQUFLLFlBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQVVBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVIsT0FBQTtBQVVBLElBQUFTLFFBQUEsR0FBQVQsT0FBQTtBQU80QixTQUFBVSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVosd0JBQUFZLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxP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
661
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xvbmVEZWVwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl90YXNrczIiLCJfZDNDb2xvciIsIl9hY3Rpb25zIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImdldERlZmF1bHRNYXBTdHlsZXMiLCJleHBvcnRzIiwiY2RuVXJsIiwiREVGQVVMVF9NQVBfU1RZTEVTIiwicmVkdWNlIiwiYWNjdSIsImN1cnIiLCJpZCIsImljb24iLCJjb25jYXQiLCJnZXREZWZhdWx0U3RhdGUiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJ0b3BMYXllckdyb3VwcyIsInN0eWxlVHlwZSIsIkRFRkFVTFRfQkFTRV9NQVBfU1RZTEUiLCJtYXBTdHlsZXMiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5wdXRTdHlsZSIsImdldEluaXRpYWxJbnB1dFN0eWxlIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsImhleFRvUmdiIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiY3VzdG9tM0RCdWlsZGluZ0NvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiaXNMb2FkaW5nIiwiYm90dG9tTWFwU3R5bGUiLCJ1bmRlZmluZWQiLCJ0b3BNYXBTdHlsZSIsIm1hcFN0eWxlVXBkYXRlcnMiLCJJTklUSUFMX01BUF9TVFlMRSIsImdldE1hcFN0eWxlcyIsIl9yZWYiLCJtYXBTdHlsZSIsInN0eWxlIiwiZWRpdGFibGUiLCJlZGl0Qm90dG9tTWFwU3R5bGUiLCJoYXNUb3BMYXllciIsInZhbHVlcyIsInNvbWUiLCJ2IiwidG9wTGF5ZXJzIiwia2V5IiwiZWRpdFRvcE1hcFN0eWxlIiwiZmluZExheWVyRmlsbENvbG9yIiwibGF5ZXIiLCJwYWludCIsImdldFBhaW50Q29sb3IiLCJjb2xvciIsIkFycmF5IiwiaXNBcnJheSIsImdldDNEQnVpbGRpbmdDb2xvciIsImJhY2tncm91bmRMYXllciIsImxheWVycyIsImZpbmQiLCJfcmVmMiIsImJ1aWxkaW5nTGF5ZXIiLCJfcmVmMyIsIm1hdGNoIiwiYnVpbGRpbmdDb2xvciIsIm9wZXJhdGlvbiIsImFscGhhIiwicmdiT2JqIiwicmdiIiwiZyIsImIiLCJnZXRCYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGVCYXNlTGF5ZXIiLCJiYWNrdXBCYWNrZ3JvdW5kQ29sb3IiLCJfY29sb3JNYXliZVRvUkdCIiwiY29sb3JNYXliZVRvUkdCIiwiYmFzZUxheWVyIiwiX3JlZjQiLCJCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyIsImluY2x1ZGVzIiwiYmFja2dyb3VuZENvbG9yT2ZCYXNlTGF5ZXIiLCJuZXdCYWNrZ3JvdW5kQ29sb3IiLCJuZXdCYWNrZ3JvdW5kQ29sb3JBc1JHQkFycmF5IiwibWFwIiwiY2hhbm5lbE51bWJlciIsIk1hdGgiLCJyb3VuZCIsImdldEJhY2tncm91bmRDb2xvciIsInByZXZpb3VzU3RhdGUiLCJwcmV2aW91c1N0YXRlTWFwU3R5bGUiLCJOT19NQVBfSUQiLCJnZXRMYXllckdyb3Vwc0Zyb21TdHlsZSIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwibGciLCJyZXF1ZXN0TWFwU3R5bGVzVXBkYXRlciIsInN0YXRlIiwiX3JlZjUiLCJfcmVmNSRwYXlsb2FkIiwicGF5bG9hZCIsIm9uU3VjY2VzcyIsInRvTG9hZCIsImxvYWRNYXBTdHlsZVRhc2tzIiwiZ2V0TG9hZE1hcFN0eWxlVGFza3MiLCJuZXh0U3RhdGUiLCJ3aXRoVGFzayIsImluaXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmNyIsIl9yZWY3JHBheWxvYWQiLCJtYXBDb25maWdDaGFuZ2VVcGRhdGVyIiwiYWN0aW9uIiwiaGFzU3R5bGVPYmplY3QiLCJpc1BsYWluT2JqZWN0IiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX3JlZjgiLCJfc3RhdGUkbWFwU3R5bGVzJHN0eWwiLCJfc3RhdGUkbWFwU3R5bGVzJHN0eWwyIiwiX3JlZjgkcGF5bG9hZCIsImN1c3RvbSIsInVybCIsImRlZmF1bHRMR1Zpc2liaWxpdHkiLCJnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkiLCJtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5IiwibG9hZE1hcFN0eWxlc1VwZGF0ZXIiLCJfcmVmOSIsIm5ld1N0eWxlcyIsImFkZExheWVyR3JvdXBzIiwibGF5ZXJHcm91cHMiLCJuZXdTdGF0ZSIsInRhc2tzIiwiY3JlYXRlQWN0aW9uVGFzayIsIkFDVElPTl9UQVNLIiwibG9hZE1hcFN0eWxlRXJyVXBkYXRlciIsIl9yZWYxMiIsIl9yZWYxMiRwYXlsb2FkIiwiaWRzIiwiZXJyb3IiLCJDb25zb2xlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMTUiLCJjb25maWciLCJfcmVmMTYiLCJtZXJnZWQiLCJCb29sZWFuIiwiVGFzayIsImFsbCIsIl9yZWYxNyIsImFjY2Vzc1Rva2VuIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsIkxPQURfTUFQX1NUWUxFX1RBU0siLCJiaW1hcCIsInJlc3VsdHMiLCJsb2FkTWFwU3R5bGVzIiwiX3JlZjE4IiwiZXJyIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTkiLCJfcmVmMTkkcGF5bG9hZCIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMjAiLCJfdXBkYXRlZCRpY29uIiwiX3VwZGF0ZWQkdXJsIiwiX3VwZGF0ZWQkdXJsMiIsIl9yZWYyMCRwYXlsb2FkIiwibWFwU3RhdGUiLCJ1cGRhdGVkIiwiaXNVcGRhdGVkSWNvbkRhdGFVcmkiLCJzdGFydHNXaXRoIiwiaXNNYXBib3hTdHlsZVVybCIsImdldFN0eWxlSW1hZ2VJY29uIiwic3R5bGVVcmwiLCJpc1ZhbGlkIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsImdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlIiwiZWRpdEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsInJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlciIsIl9zdGF0ZSRtYXBTdHlsZXMiLCJfIiwicmVzdE9mTWFwU3R5bGVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMjEiLCJzZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyIiwiX3JlZjIyIiwidXBsb2FkZWRGaWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdHlsZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgVGFzaywge3dpdGhUYXNrfSBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5cbi8vIFV0aWxzXG5pbXBvcnQge1xuICBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGdldFN0eWxlRG93bmxvYWRVcmwsXG4gIG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZWRpdEJvdHRvbU1hcFN0eWxlLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgaXNQbGFpbk9iamVjdCxcbiAgaGV4VG9SZ2IsXG4gIGNvbG9yTWF5YmVUb1JHQixcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBERUZBVUxUX01BUF9TVFlMRVMsXG4gIERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICBOT19NQVBfSUQsXG4gIERFRkFVTFRfQkxER19DT0xPUixcbiAgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SLFxuICBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyxcbiAgREVGQVVMVF9CQVNFX01BUF9TVFlMRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0FDVElPTl9UQVNLLCBMT0FEX01BUF9TVFlMRV9UQVNLfSBmcm9tICdAa2VwbGVyLmdsL3Rhc2tzJztcbmltcG9ydCB7cmdifSBmcm9tICdkMy1jb2xvcic7XG5cbmltcG9ydCB7XG4gIFJHQkNvbG9yLFxuICBMYXllckdyb3VwLFxuICBCYXNlTWFwU3R5bGUsXG4gIE1hcFN0eWxlcyxcbiAgSW5wdXRTdHlsZSxcbiAgVmlzaWJsZUxheWVyR3JvdXBzXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLFxuICBLZXBsZXJHbEluaXRQYXlsb2FkLFxuICBNYXBTdHlsZUFjdGlvbnMsXG4gIGxvYWRNYXBTdHlsZXMsXG4gIGxvYWRNYXBTdHlsZUVyclxufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBNYXBib3hTdHlsZVVybCA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgTWFwU3R5bGUgPSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgdG9wTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgbWFwU3R5bGVzOiBNYXBTdHlsZXM7XG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWFwYm94QXBpVXJsOiBzdHJpbmc7XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBib29sZWFuO1xuICBpbnB1dFN0eWxlOiBJbnB1dFN0eWxlO1xuICB0aHJlZURCdWlsZGluZ0NvbG9yOiBSR0JDb2xvcjtcbiAgYmFja2dyb3VuZENvbG9yOiBSR0JDb2xvcjtcbiAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBib29sZWFuO1xuICBib3R0b21NYXBTdHlsZTogYW55O1xuICB0b3BNYXBTdHlsZTogYW55O1xuICBpbml0aWFsU3RhdGU/OiBNYXBTdHlsZTtcbiAgaXNMb2FkaW5nOiB7XG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0TWFwU3R5bGVzID0gKGNkblVybDogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBERUZBVUxUX01BUF9TVFlMRVMucmVkdWNlKFxuICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtjdXJyLmlkXToge1xuICAgICAgICAuLi5jdXJyLFxuICAgICAgICBpY29uOiBgJHtjZG5Vcmx9LyR7Y3Vyci5pY29ufWBcbiAgICAgIH1cbiAgICB9KSxcbiAgICB7fVxuICApO1xufTtcblxuY29uc3QgZ2V0RGVmYXVsdFN0YXRlID0gKCk6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHRvcExheWVyR3JvdXBzID0ge307XG5cbiAgcmV0dXJuIHtcbiAgICBzdHlsZVR5cGU6IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgIHRvcExheWVyR3JvdXBzLFxuICAgIG1hcFN0eWxlczogZ2V0RGVmYXVsdE1hcFN0eWxlcyhnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmNkblVybCksXG4gICAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG51bGwsXG4gICAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUiksXG4gICAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkFDS0dST1VORF9DT0xPUiksXG4gICAgaXNMb2FkaW5nOiB7fSxcbiAgICBib3R0b21NYXBTdHlsZTogdW5kZWZpbmVkLFxuICAgIHRvcE1hcFN0eWxlOiB1bmRlZmluZWRcbiAgfTtcbn07XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGBtYXBTdHlsZWAuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7bWFwU3R5bGVVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gaGlkZSBsYWJlbCBmcm9tIGJhY2tncm91bmQgbWFwXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3R5bGU6IG1hcFN0eWxlVXBkYXRlcnMubWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3R5bGUsXG4gKiAgICAgICAgICAgICAgIHtwYXlsb2FkOiB7dmlzaWJsZUxheWVyR3JvdXBzOiB7bGFiZWw6IGZhbHNlLCByb2FkOiB0cnVlLCBiYWNrZ3JvdW5kOiB0cnVlfX19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1hcFN0eWxlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdHlsZWBcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzdHlsZVR5cGUgLSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IHZpc2libGVMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0b3BMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSBtYXBTdHlsZXMgLSBtYXBwaW5nIGZyb20gc3R5bGUga2V5IHRvIHN0eWxlIG9iamVjdFxuICogQHByb3BlcnR5IG1hcGJveEFwaUFjY2Vzc1Rva2VuIC0gRGVmYXVsdDogYG51bGxgXG4gKiBAUHJvcGVydHkgbWFwYm94QXBpVXJsIC0gRGVmYXVsdCBudWxsXG4gKiBAUHJvcGVydHkgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgaW5wdXRTdHlsZSAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0aHJlZURCdWlsZGluZ0NvbG9yIC0gRGVmYXVsdDogYFtyLCBnLCBiXWBcbiAqIEBwcm9wZXJ0eSBiYWNrZ3JvdW5kQ29sb3IgLSBEZWZhdWx0OiBgW3IsIGcsIGJdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RZTEU6IE1hcFN0eWxlID0gZ2V0RGVmYXVsdFN0YXRlKCk7XG5cbmludGVyZmFjZSBHZXRNYXBTdHlsZXNQYXJhbSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgdG9wTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgbWFwU3R5bGVzOiB7W2lkOiBzdHJpbmddOiBhbnl9O1xufVxuXG4vKipcbiAqIENyZWF0ZSB0d28gbWFwIHN0eWxlcyBmcm9tIHByZXNldCBtYXAgc3R5bGUsIG9uZSBmb3IgdG9wIG1hcCBvbmUgZm9yIGJvdHRvbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVR5cGUgLSBjdXJyZW50IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZXMgLSBhIGRpY3Rpb25hcnkgb2YgYWxsIG1hcCBzdHlsZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbU1hcFN0eWxlIHwgdG9wTWFwU3R5bGUgfCBpc1Jhc3RlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwU3R5bGVzKHtcbiAgc3R5bGVUeXBlLFxuICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gIHRvcExheWVyR3JvdXBzLFxuICBtYXBTdHlsZXNcbn06IEdldE1hcFN0eWxlc1BhcmFtKSB7XG4gIGNvbnN0IG1hcFN0eWxlID0gbWFwU3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgLy8gc3R5bGUgbWlnaHQgbm90IGJlIGxvYWRlZCB5ZXRcbiAgaWYgKCFtYXBTdHlsZSB8fCAhbWFwU3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBlZGl0YWJsZSA9IE9iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcykubGVuZ3RoO1xuXG4gIGNvbnN0IGJvdHRvbU1hcFN0eWxlID0gIWVkaXRhYmxlXG4gICAgPyBtYXBTdHlsZS5zdHlsZVxuICAgIDogZWRpdEJvdHRvbU1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3Vwc1xuICAgICAgfSk7XG5cbiAgY29uc3QgaGFzVG9wTGF5ZXIgPSBlZGl0YWJsZSA+IDAgJiYgT2JqZWN0LnZhbHVlcyh0b3BMYXllckdyb3Vwcykuc29tZSh2ID0+IHYpO1xuXG4gIC8vIG11dGUgdG9wIGxheWVyIGlmIG5vdCB2aXNpYmxlIGluIGJvdHRvbSBsYXllclxuICBjb25zdCB0b3BMYXllcnMgPVxuICAgIGhhc1RvcExheWVyICYmXG4gICAgT2JqZWN0LmtleXModG9wTGF5ZXJHcm91cHMpLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiB0b3BMYXllckdyb3Vwc1trZXldICYmIHZpc2libGVMYXllckdyb3Vwc1trZXldXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufVxuICAgICk7XG5cbiAgY29uc3QgdG9wTWFwU3R5bGUgPSBoYXNUb3BMYXllclxuICAgID8gZWRpdFRvcE1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3VwczogdG9wTGF5ZXJzXG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge2JvdHRvbU1hcFN0eWxlLCB0b3BNYXBTdHlsZSwgZWRpdGFibGV9O1xufVxuXG5mdW5jdGlvbiBmaW5kTGF5ZXJGaWxsQ29sb3IobGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyICYmIGxheWVyLnBhaW50ICYmIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ107XG59XG5cbi8vIG5lZWQgdG8gYmUgY2FyZWZ1bCBiZWNhdXNlIHNvbWUgYmFzZW1hcCBsYXllci5wYWludFsnYmFja2dyb3VuZC1jb2xvciddIHZhbHVlcyBtYXkgYmUgYW4gaW50ZXJwb2xhdGUgYXJyYXkgZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGEgY29sb3Igc3RyaW5nXG4vLyBodHRwczovL2RvY3MubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvc3R5bGUtc3BlYy9sYXllcnMvI3BhaW50LWJhY2tncm91bmQtYmFja2dyb3VuZC1jb2xvclxuLy8gaHR0cHM6Ly9kb2NzLm1hcGJveC5jb20vbWFwYm94LWdsLWpzL3N0eWxlLXNwZWMvZXhwcmVzc2lvbnMvI2ludGVycG9sYXRlXG5mdW5jdGlvbiBnZXRQYWludENvbG9yKGNvbG9yKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSAmJiBjb2xvclswXSA9PT0gJ2ludGVycG9sYXRlJykge1xuICAgIC8vIGdldCBjb2xvciBvZiBmaXJzdCB6b29tIGJyZWFrXG4gICAgLy8gW1wiaW50ZXJwb2xhdGVcIiwgW1wibGluZWFyXCJdLCBbXCJ6b29tXCJdLCAxMSwgXCJoc2woMzUsIDMyJSwgOTElKVwiLCAxMywgXCJoc2woMzUsIDEyJSwgODklKVwiXVxuICAgIHJldHVybiBjb2xvcls0XTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5cbmZ1bmN0aW9uIGdldDNEQnVpbGRpbmdDb2xvcihzdHlsZSk6IFJHQkNvbG9yIHtcbiAgLy8gc2V0IGJ1aWxkaW5nIGNvbG9yIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUik7XG4gIH1cblxuICBjb25zdCBiYWNrZ3JvdW5kTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZCA9PT0gJ2JhY2tncm91bmQnKTtcblxuICBjb25zdCBidWlsZGluZ0xheWVyID0gKHN0eWxlLnN0eWxlLmxheWVycyB8fCBbXSkuZmluZCgoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLykpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nQ29sb3IgPVxuICAgIGZpbmRMYXllckZpbGxDb2xvcihidWlsZGluZ0xheWVyKSB8fCBmaW5kTGF5ZXJGaWxsQ29sb3IoYmFja2dyb3VuZExheWVyKSB8fCBERUZBVUxUX0JMREdfQ09MT1I7XG5cbiAgLy8gYnJpZ2h0ZW4gb3IgZGFya2VuIGJ1aWxkaW5nIGJhc2VkIG9uIHN0eWxlXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHN0eWxlLmlkLm1hdGNoKC8oPz0oZGFya3xuaWdodCkpLykgPyAnYnJpZ2h0ZXInIDogJ2Rhcmtlcic7XG5cbiAgY29uc3QgYWxwaGEgPSAwLjI7XG4gIGNvbnN0IHJnYk9iaiA9IHJnYihidWlsZGluZ0NvbG9yKVtvcGVyYXRpb25dKFthbHBoYV0pO1xuICByZXR1cm4gW3JnYk9iai5yLCByZ2JPYmouZywgcmdiT2JqLmJdO1xufVxuXG5mdW5jdGlvbiBnZXRCYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGVCYXNlTGF5ZXIoXG4gIHN0eWxlOiBCYXNlTWFwU3R5bGUsXG4gIGJhY2t1cEJhY2tncm91bmRDb2xvcjogUkdCQ29sb3Jcbik6IFJHQkNvbG9yIHtcbiAgaWYgKCFzdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiBjb2xvck1heWJlVG9SR0IoYmFja3VwQmFja2dyb3VuZENvbG9yKSB8fCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3I7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yIHN0eWxlLnN0eWxlIG5vdCB0eXBlZFxuICBjb25zdCBiYXNlTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PlxuICAgIEJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTLmluY2x1ZGVzKGlkKVxuICApO1xuXG4gIGNvbnN0IGJhY2tncm91bmRDb2xvck9mQmFzZUxheWVyID0gZ2V0UGFpbnRDb2xvcihmaW5kTGF5ZXJGaWxsQ29sb3IoYmFzZUxheWVyKSk7XG5cbiAgY29uc3QgbmV3QmFja2dyb3VuZENvbG9yID1cbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yT2ZCYXNlTGF5ZXIgPT09ICdzdHJpbmcnXG4gICAgICA/IGJhY2tncm91bmRDb2xvck9mQmFzZUxheWVyXG4gICAgICA6IGJhY2t1cEJhY2tncm91bmRDb2xvcjtcblxuICBjb25zdCBuZXdCYWNrZ3JvdW5kQ29sb3JBc1JHQkFycmF5ID0gY29sb3JNYXliZVRvUkdCKG5ld0JhY2tncm91bmRDb2xvcilcbiAgICAvLyBpZiBuZXdCYWNrZ3JvdW5kQ29sb3Igd2FzIGluIHN0cmluZyBIU0wgZm9ybWF0IGl0IGNhbiBpbnRyb2R1Y2UgUkdCIG51bWJlcnMgd2l0aCBkZWNpbWFscyxcbiAgICAvLyB3aGljaCBtYXkgcmVuZGVyIHRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBvZiB0aGUgPFN0eWxlZE1hcD4gY29udGFpbmVyIGluY29ycmVjdGx5IHdoZW4gdXNpbmcgb3VyIG93biBjb2xvciB1dGlscyBgcmdiVG9IZXgoKWBcbiAgICAvLyBzbyB3ZSBhdHRlbXB0IHRvIHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciBoZXJlXG4gICAgPy5tYXAoY2hhbm5lbE51bWJlciA9PiBNYXRoLnJvdW5kKGNoYW5uZWxOdW1iZXIpKSBhcyBSR0JDb2xvciB8IG51bGw7XG5cbiAgcmV0dXJuIG5ld0JhY2tncm91bmRDb2xvckFzUkdCQXJyYXkgfHwgYmFja3VwQmFja2dyb3VuZENvbG9yO1xufVxuXG4vLyBkZXRlcm1pbmUgbmV3IGJhY2tncm91bmRDb2xvciBmcm9tIGVpdGhlciBwcmV2aW91cyBzdGF0ZSBiYXNlbWFwIHN0eWxlLCBwcmV2aW91cyBzdGF0ZSBiYWNrZ3JvdW5kQ29sb3IsIG9yIHRoZSBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1JcbmZ1bmN0aW9uIGdldEJhY2tncm91bmRDb2xvcihwcmV2aW91c1N0YXRlOiBNYXBTdHlsZSwgc3R5bGVUeXBlOiBzdHJpbmcpIHtcbiAgY29uc3QgcHJldmlvdXNTdGF0ZU1hcFN0eWxlID0gcHJldmlvdXNTdGF0ZS5tYXBTdHlsZXNbcHJldmlvdXNTdGF0ZS5zdHlsZVR5cGVdO1xuICBjb25zdCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3IgPSBwcmV2aW91c1N0YXRlLmJhY2tncm91bmRDb2xvciB8fCBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1I7XG4gIGNvbnN0IGJhY2tncm91bmRDb2xvciA9XG4gICAgc3R5bGVUeXBlID09PSBOT19NQVBfSURcbiAgICAgID8gLy8gaWYgdGhlIHN0eWxlIGhhcyBzd2l0Y2hlZCB0byB0aGUgXCJubyBiYXNlbWFwXCIgc3R5bGUsXG4gICAgICAgIC8vIGF0dGVtcHQgdG8gZGV0ZWN0IGJhY2tncm91bmRDb2xvciBvZiB0aGUgcHJldmlvdXMgYmFzZW1hcCBpZiBpdCB3YXMgYSBtYXBib3ggYmFzZW1hcFxuICAgICAgICAvLyBhbmQgc2V0IGl0IGFzIHRoZSBcIm5vIGJhc2VtYXBcIiBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgZ2V0QmFja2dyb3VuZENvbG9yRnJvbVN0eWxlQmFzZUxheWVyKHByZXZpb3VzU3RhdGVNYXBTdHlsZSwgYmFja3VwQmFja2dyb3VuZENvbG9yKVxuICAgICAgOiAvLyBvdGhlcndpc2UgbGVhdmUgaXQgYWxvbmUgYW5kIHJlbHkgb24gdGhlIHByZXZpb3VzIHN0YXRlJ3MgcHJlZXhpc3RpbmcgYmFja2dyb3VuZENvbG9yXG4gICAgICAgIC8vIG9yIERFRkFVTFRfQkFDS0dST1VORF9DT0xPUiBhcyBhIGxhc3QgcmVzb3J0XG4gICAgICAgIGJhY2t1cEJhY2tncm91bmRDb2xvcjtcblxuICByZXR1cm4gYmFja2dyb3VuZENvbG9yO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdHlsZT8ubGF5ZXJzKVxuICAgID8gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmlsdGVyKGxnID0+IHN0eWxlLmxheWVycy5maWx0ZXIobGcuZmlsdGVyKS5sZW5ndGgpXG4gICAgOiBbXTtcbn1cblxuLy8gVXBkYXRlcnNcblxuLyoqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHttYXBTdHlsZXMsIG9uU3VjY2Vzc319OiBNYXBTdHlsZUFjdGlvbnMuUmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdG9Mb2FkID0gT2JqZWN0LmtleXMobWFwU3R5bGVzKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGlkKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLighc3RhdGUuaXNMb2FkaW5nW2lkXSA/IHtbaWRdOiBtYXBTdHlsZXNbaWRdfSA6IHt9KVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IGxvYWRNYXBTdHlsZVRhc2tzID0gZ2V0TG9hZE1hcFN0eWxlVGFza3MoXG4gICAgdG9Mb2FkLFxuICAgIHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIHN0YXRlLm1hcGJveEFwaVVybCxcbiAgICBvblN1Y2Nlc3NcbiAgKTtcblxuICBjb25zdCBpc0xvYWRpbmcgPSBPYmplY3Qua2V5cyh0b0xvYWQpLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtrZXldOiB0cnVlXG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgY29uc3QgbmV4dFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzTG9hZGluZ1xuICB9O1xuICByZXR1cm4gd2l0aFRhc2sobmV4dFN0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcyk7XG59O1xuXG4vKipcbiAqIFByb3BhZ2F0ZSBgbWFwU3R5bGVgIHJlZHVjZXIgd2l0aCBgbWFwYm94QXBpQWNjZXNzVG9rZW5gIGFuZCBgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHRgLlxuICogaWYgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgaXMgdHJ1ZSBtYXBTdHlsZXMgaXMgZW1wdGllZDsgbG9hZE1hcFN0eWxlc1VwZGF0ZXIoKSB3aWxsXG4gKiBwb3B1bGF0ZSBtYXBTdHlsZXMuXG4gKlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRNYXBTdHlsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge1xuICAgIHBheWxvYWQgPSB7fVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5JTklUO1xuICAgIHBheWxvYWQ6IEtlcGxlckdsSW5pdFBheWxvYWQ7XG4gIH1cbik6IE1hcFN0eWxlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBzYXZlIG1hcGJveCBhY2Nlc3MgdG9rZW4gdG8gbWFwIHN0eWxlIHN0YXRlXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwYXlsb2FkLm1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8IHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHBheWxvYWQubWFwYm94QXBpVXJsIHx8IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgbWFwU3R5bGVzOiAhcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCA/IHN0YXRlLm1hcFN0eWxlcyA6IHt9LFxuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB8fCBmYWxzZVxufSk7XG4vLyB9KTtcblxuLyoqXG4gKiBVcGRhdGUgYHZpc2libGVMYXllckdyb3Vwc2B0byBjaGFuZ2UgbGF5ZXIgZ3JvdXAgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAgYWN0aW9uOiBNYXBTdHlsZUFjdGlvbnMuTWFwQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmFjdGlvbi5wYXlsb2FkLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gICAgfSlcbiAgfTtcbn07XG5cbmNvbnN0IGhhc1N0eWxlT2JqZWN0ID0gc3R5bGUgPT4gaXNQbGFpbk9iamVjdChzdHlsZT8uc3R5bGUpO1xuXG4vKipcbiAqIENoYW5nZSB0byBhbm90aGVyIG1hcCBzdHlsZS4gVGhlIHNlbGVjdGVkIHN0eWxlIHNob3VsZCBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8gYG1hcFN0eWxlLm1hcFN0eWxlc2BcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtzdHlsZVR5cGUsIG9uU3VjY2Vzc319OiBNYXBTdHlsZUFjdGlvbnMuTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGlmIChcbiAgICAvLyB3ZSBtaWdodCBub3QgaGF2ZSByZWNlaXZlZCB0aGUgc3R5bGUgeWV0XG4gICAgIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdIHx8XG4gICAgLy8gb3IgaWYgaXQgaXMgYSBtYW5hZ2VkIGN1c3RvbSBzdHlsZSBhc3NldFxuICAgIC8vIGFuZCBpZiBpdCBoYXMgbm90IGJlZW4gaHlkcmF0ZWQgd2l0aCBVUkwgaW5mbyB5ZXQgKGR1cmluZyBhcHAgZmlyc3QgaW5pdGlhbGl6YXRpb24pXG4gICAgLy8gYW5kIGl0IGRvZXMgbm90IGhhdmUgYSBzdHlsZSBvYmplY3QgKGR1cmluZyBhZGRpbmcgYSBjdXN0b20gc3R5bGUpXG4gICAgKHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdPy5jdXN0b20gPT09ICdNQU5BR0VEJyAmJlxuICAgICAgIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdPy51cmwgJiZcbiAgICAgICFoYXNTdHlsZU9iamVjdChzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSkpXG4gICkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmICghaGFzU3R5bGVPYmplY3Qoc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pKSB7XG4gICAgLy8gc3R5bGUgaGFzbid0IGxvYWRlZCB5ZXRcbiAgICByZXR1cm4gcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIoXG4gICAgICB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzdHlsZVR5cGVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAgIFtzdHlsZVR5cGVdOiBzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25TdWNjZXNzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdExHVmlzaWJpbGl0eSA9IGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eShzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSk7XG5cbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0gbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eShcbiAgICBkZWZhdWx0TEdWaXNpYmlsaXR5LFxuICAgIHN0YXRlLnZpc2libGVMYXllckdyb3Vwc1xuICApO1xuXG4gIGNvbnN0IHRocmVlREJ1aWxkaW5nQ29sb3I6IFJHQkNvbG9yID0gc3RhdGUuY3VzdG9tM0RCdWlsZGluZ0NvbG9yXG4gICAgPyBzdGF0ZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgOiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIC8vIGRldGVybWluZSBuZXcgYmFja2dyb3VuZENvbG9yIGZyb20gZWl0aGVyIHByZXZpb3VzIHN0YXRlIGJhc2VtYXAgc3R5bGUsIHByZXZpb3VzIHN0YXRlIGJhY2tncm91bmRDb2xvciwgb3IgdGhlIERFRkFVTFRfQkFDS0dST1VORF9DT0xPUlxuICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGUsIHN0eWxlVHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdHlsZVR5cGUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgYmFja2dyb3VuZENvbG9yLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICAgIHN0eWxlVHlwZVxuICAgIH0pXG4gIH07XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgc3VjY2Vzc1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZXNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIGFjdGlvbjogTWFwU3R5bGVBY3Rpb25zLkxvYWRNYXBTdHlsZXNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IHtuZXdTdHlsZXMsIG9uU3VjY2Vzc30gPSBhY3Rpb24ucGF5bG9hZCB8fCB7fTtcblxuICBjb25zdCBhZGRMYXllckdyb3VwcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykucmVkdWNlKFxuICAgIChhY2N1LCBpZCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbaWRdOiB7XG4gICAgICAgIC4uLm5ld1N0eWxlc1tpZF0sXG4gICAgICAgIGxheWVyR3JvdXBzOiBuZXdTdHlsZXNbaWRdLmxheWVyR3JvdXBzIHx8IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKG5ld1N0eWxlc1tpZF0uc3R5bGUpXG4gICAgICB9XG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgLy8gcmVzZXQgaXNMb2FkaW5nXG4gIGNvbnN0IGlzTG9hZGluZyA9IE9iamVjdC5rZXlzKHN0YXRlLmlzTG9hZGluZykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHN0YXRlLmlzTG9hZGluZ1trZXldICYmIGhhc1N0eWxlT2JqZWN0KG5ld1N0eWxlc1trZXldKVxuICAgICAgICA/IHtba2V5XTogZmFsc2V9XG4gICAgICAgIDoge1trZXldOiBzdGF0ZS5pc0xvYWRpbmdba2V5XX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgLy8gYWRkIG5ldyBzdHlsZXMgdG8gc3RhdGVcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNMb2FkaW5nLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgLi4uYWRkTGF5ZXJHcm91cHNcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdGFza3MgPSBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3N0eWxlVHlwZTogc3RhdGUuc3R5bGVUeXBlfSk7XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gbmV3U3R5bGVzW3N0YXRlLnN0eWxlVHlwZV1cbiAgICA/IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IHN0YXRlLnN0eWxlVHlwZX19KVxuICAgIDogbmV3U3RhdGU7XG5cbiAgcmV0dXJuIHRhc2tzID8gd2l0aFRhc2sobmV4dFN0YXRlLCB0YXNrcykgOiBuZXh0U3RhdGU7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25UYXNrKGFjdGlvbiwgcGF5bG9hZCkge1xuICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBBQ1RJT05fVEFTSygpLm1hcCgoKSA9PiBhY3Rpb24ocGF5bG9hZCkpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBlcnJvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuLy8gZG8gbm90aGluZyBmb3Igbm93LCBpZiBkaWRuJ3QgbG9hZCwgc2tpcCBpdFxuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZUVyclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtpZHMsIGVycm9yfX06IE1hcFN0eWxlQWN0aW9ucy5Mb2FkTWFwU3R5bGVFcnJVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIENvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAvLyByZXNldCBpc0xvYWRpbmdcbiAgY29uc3QgaXNMb2FkaW5nID0gT2JqZWN0LmtleXMoc3RhdGUuaXNMb2FkaW5nKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICAuLi4oc3RhdGUuaXNMb2FkaW5nW2tleV0gJiYgKGlkcyB8fCBbXSkuaW5jbHVkZXMoa2V5KVxuICAgICAgICA/IHtba2V5XTogZmFsc2V9XG4gICAgICAgIDoge1trZXldOiBzdGF0ZS5pc0xvYWRpbmdba2V5XX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzTG9hZGluZ1xuICB9O1xufTtcblxuLyoqXG4gKiBMb2FkIG1hcCBzdHlsZSBvYmplY3Qgd2hlbiBwYXNzIGluIHNhdmVkIG1hcCBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYG1hcFN0eWxlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZSBvciBgcmVhY3QtcGFtYCB0YXNrcyB0byBsb2FkIG1hcCBzdHlsZSBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Y29uZmlnfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3Qge21hcFN0eWxlfSA9IGNvbmZpZyB8fCB7fTtcblxuICBpZiAoIW1hcFN0eWxlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbWVyZ2UgZGVmYXVsdCBtYXBTdHlsZXNcbiAgY29uc3QgbWVyZ2VkID0gbWFwU3R5bGUubWFwU3R5bGVzXG4gICAgPyB7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAuLi5tYXBTdHlsZS5tYXBTdHlsZXMsXG4gICAgICAgICAgLi4uc3RhdGUubWFwU3R5bGVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA6IG1hcFN0eWxlO1xuXG4gIC8vIHNldCBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IHRydWUgaWYgbWFwU3R5bGUgY29udGFpbnMgdGhyZWVEQnVpbGRpbmdDb2xvclxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3IgPVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBCb29sZWFuKG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IpIHx8IG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3I7XG4gIGNvbnN0IG5ld1N0YXRlID0gbWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IG1lcmdlZH0pO1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBuZXdTdGF0ZS5zdHlsZVR5cGV9fSk7XG59O1xuXG5mdW5jdGlvbiBnZXRMb2FkTWFwU3R5bGVUYXNrcyhtYXBTdHlsZXMsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwsIG9uU3VjY2Vzcykge1xuICByZXR1cm4gW1xuICAgIFRhc2suYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhtYXBTdHlsZXMpXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgLm1hcCgoe2lkLCB1cmwsIGFjY2Vzc1Rva2VufSkgPT4gKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB1cmw6IGdldFN0eWxlRG93bmxvYWRVcmwodXJsLCBhY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKVxuICAgICAgICB9KSlcbiAgICAgICAgLm1hcChMT0FEX01BUF9TVFlMRV9UQVNLKVxuICAgICkuYmltYXAoXG4gICAgICAvLyBzdWNjZXNzXG4gICAgICByZXN1bHRzID0+XG4gICAgICAgIGxvYWRNYXBTdHlsZXMoXG4gICAgICAgICAgcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwge2lkLCBzdHlsZX0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIFtpZF06IHtcbiAgICAgICAgICAgICAgICAuLi5tYXBTdHlsZXNbaWRdLFxuICAgICAgICAgICAgICAgIHN0eWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApLFxuICAgICAgICAgIG9uU3VjY2Vzc1xuICAgICAgICApLFxuICAgICAgLy8gZXJyb3JcbiAgICAgIGVyciA9PiBsb2FkTWFwU3R5bGVFcnIoT2JqZWN0LmtleXMobWFwU3R5bGVzKSwgZXJyKVxuICAgIClcbiAgXTtcbn1cbi8qKlxuICogUmVzZXQgbWFwIHN0eWxlIGNvbmZpZyB0byBpbml0aWFsIHN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGBtYXBTdHlsZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBlbXB0eUNvbmZpZyA9IHtcbiAgICAuLi5JTklUSUFMX01BUF9TVFlMRSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IHN0YXRlLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHN0YXRlLm1hcFN0eWxlcyxcbiAgICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxuICB9O1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIoZW1wdHlDb25maWcsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBlbXB0eUNvbmZpZy5zdHlsZVR5cGV9fSk7XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdCBpcyByZWNlaXZlZFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtpY29uLCBzdHlsZSwgZXJyb3J9fTogTWFwU3R5bGVBY3Rpb25zLkxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGlucHV0U3R5bGU6IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC8vIHN0eWxlIGpzb24gYW5kIGljb24gd2lsbCBsb2FkIGFzeW5jaHJvbm91c2x5XG4gICAgLi4uKHN0eWxlXG4gICAgICA/IHtcbiAgICAgICAgICBpZDpcbiAgICAgICAgICAgIHN0YXRlLmlucHV0U3R5bGUuY3VzdG9tID09PSAnTUFOQUdFRCdcbiAgICAgICAgICAgICAgPyBzdGF0ZS5pbnB1dFN0eWxlLmlkIC8vIGN1c3RvbSBNQU5BR0VEIHR5cGVcbiAgICAgICAgICAgICAgOiAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgc3R5bGUuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKSwgLy8gY3VzdG9tIExPQ0FMIHR5cGVcbiAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgc3R5bGUgb2JqZWN0XG4gICAgICAgICAgc3R5bGU6IGNsb25lRGVlcChzdHlsZSksXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIGxhYmVsOiBzdGF0ZS5pbnB1dFN0eWxlLmxhYmVsIHx8IHN0eWxlLm5hbWUsXG4gICAgICAgICAgLy8gZ2F0aGVyaW5nIGxheWVyIGdyb3VwIGluZm8gZnJvbSBzdHlsZSBqc29uXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKVxuICAgICAgICB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4oaWNvbiA/IHtpY29ufSA6IHt9KSxcbiAgICAuLi4oZXJyb3IgIT09IHVuZGVmaW5lZCA/IHtlcnJvcn0gOiB7fSlcbiAgfVxufSk7XG5cbi8qKlxuICogSW5wdXQgYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0TWFwU3R5bGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtwYXlsb2FkOiB7aW5wdXRTdHlsZSwgbWFwU3RhdGV9fTogTWFwU3R5bGVBY3Rpb25zLklucHV0TWFwU3R5bGVVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IHVwZGF0ZWQgPSB7XG4gICAgLi4uc3RhdGUuaW5wdXRTdHlsZSxcbiAgICAuLi5pbnB1dFN0eWxlXG4gIH07XG5cbiAgLy8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGVpdGhlciBhIHVybCB0byBob3N0ZWQgc3R5bGUganNvbiB0aGF0IG5lZWRzIGFuIGljb24gdXJsLFxuICAvLyBvciBhbiBpY29uIGFscmVhZHkgYXZhaWxhYmxlIGNsaWVudC1zaWRlIGFzIGEgZGF0YSB1cmlcbiAgY29uc3QgaXNVcGRhdGVkSWNvbkRhdGFVcmkgPSB1cGRhdGVkLmljb24/LnN0YXJ0c1dpdGgoJ2RhdGE6aW1hZ2UnKTtcbiAgY29uc3QgaXNNYXBib3hTdHlsZVVybCA9XG4gICAgdXBkYXRlZC51cmw/LnN0YXJ0c1dpdGgoJ21hcGJveDovLycpIHx8IHVwZGF0ZWQudXJsPy5pbmNsdWRlcygnbWFwYm94LmNvbScpO1xuXG4gIGNvbnN0IGljb24gPVxuICAgICFpc1VwZGF0ZWRJY29uRGF0YVVyaSAmJiBpc01hcGJveFN0eWxlVXJsXG4gICAgICA/IC8vIEdldCBpbWFnZSBpY29uIHVybHMgb25seSBmb3IgbWFwYm94IG1hcCBsaWIuXG4gICAgICAgIGdldFN0eWxlSW1hZ2VJY29uKHtcbiAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICBzdHlsZVVybDogdXBkYXRlZC51cmwgfHwgJycsXG4gICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHVwZGF0ZWQuYWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgJycsXG4gICAgICAgICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwgfHwgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuICAgICAgICB9KVxuICAgICAgOiB1cGRhdGVkLmljb247XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnB1dFN0eWxlOiB7XG4gICAgICAuLi51cGRhdGVkLFxuICAgICAgaXNWYWxpZDogdHJ1ZSxcbiAgICAgIGljb25cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEFkZCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIgYW5kIHNldCBpdCB0byBjdXJyZW50IHN0eWxlXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrIGNvbmZpcm0gYWZ0ZXIgcHV0dGluZyBpbiBhIHZhbGlkIHN0eWxlIHVybCBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBzdHlsZUlkID0gc3RhdGUuaW5wdXRTdHlsZS5pZDtcbiAgaWYgKCFzdHlsZUlkKSByZXR1cm4gc3RhdGU7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSBnZXROZXdTdGF0ZVdpdGhDdXN0b21NYXBTdHlsZShzdGF0ZSk7XG4gIC8vIHNldCBuZXcgc3R5bGVcbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IHN0eWxlSWR9fSk7XG59O1xuXG4vKipcbiAqIEVkaXQgbWFwIHN0eWxlIGZyb20gdXNlciBpbnB1dCB0byByZWR1Y2VyLlxuICogVGhpcyBhY3Rpb24gaXMgY2FsbGVkIHdoZW4gdXNlciBjbGlja3MgY29uZmlybSBhZnRlciBlZGl0aW5nIGFuIGV4aXN0aW5nIGN1c3RvbSBzdHlsZSBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0Q3VzdG9tTWFwU3R5bGVVcGRhdGVyID0gKHN0YXRlOiBNYXBTdHlsZSk6IE1hcFN0eWxlID0+IHtcbiAgcmV0dXJuIGdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlKHN0YXRlKTtcbn07XG5cbmZ1bmN0aW9uIGdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlKHN0YXRlOiBNYXBTdHlsZSk6IE1hcFN0eWxlIHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0YXRlLmlucHV0U3R5bGUuaWQ7XG4gIGlmICghc3R5bGVJZCkgcmV0dXJuIHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQcm9wZXJ0eSAnbGF5ZXJHcm91cHMnIGlzIG1pc3NpbmcgaW4gdHlwZSAnSW5wdXRTdHlsZScgYnV0IHJlcXVpcmVkIGluIHR5cGUgJ0Jhc2VNYXBTdHlsZScuIExlZ2FjeSBjYXNlP1xuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgW3N0eWxlSWRdOiB7XG4gICAgICAgIC4uLnN0YXRlLm1hcFN0eWxlc1tzdHlsZUlkXSwgLy8gZG8gbm90IHVuaW50ZW50aW9uYWxseSBkcm9wIGFueSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICAgICAgLi4uc3RhdGUuaW5wdXRTdHlsZVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8gc2V0IHRvIGRlZmF1bHRcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY3VzdG9tIG1hcCBzdHlsZSBmcm9tIGBzdGF0ZS5tYXBTdHlsZS5tYXBTdHlsZXNgLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5SZW1vdmVDdXN0b21NYXBTdHlsZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3Qge2lkfSA9IGFjdGlvbi5wYXlsb2FkO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3Qge1tpZF06IF8sIC4uLnJlc3RPZk1hcFN0eWxlc30gPSBzdGF0ZS5tYXBTdHlsZXM7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3R5bGVzOiByZXN0T2ZNYXBTdHlsZXNcbiAgfTtcblxuICBpZiAoc3RhdGUuc3R5bGVUeXBlID09PSBpZCkge1xuICAgIC8vIGlmIHJlbW92aW5nIGEgY3VzdG9tIHN0eWxlIHRoYXQgaXMgYWxzbyB0aGUgY3VycmVudCBhY3RpdmUgYmFzZSBtYXAsXG4gICAgLy8gdGhlbiByZXNldCB0byB0aGUgZGVmYXVsdCBhY3RpdmUgYmFzZSBtYXAgKGBtYXBTdHlsZS5zdHlsZVR5cGVgKVxuICAgIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBnZXREZWZhdWx0U3RhdGUoKS5zdHlsZVR5cGV9fSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgM2QgYnVpbGRpbmcgY29sb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtwYXlsb2FkOiBjb2xvcn06IE1hcFN0eWxlQWN0aW9ucy5TZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdGhyZWVEQnVpbGRpbmdDb2xvcjogY29sb3IsXG4gIGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZVxufSk7XG5cbi8qKlxuICogVXBkYXRlcyBiYWNrZ3JvdW5kIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3Qgc2V0QmFja2dyb3VuZENvbG9yVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDogY29sb3J9OiBNYXBTdHlsZUFjdGlvbnMuU2V0QmFja2dyb3VuZENvbG9yVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGJhY2tncm91bmRDb2xvcjogY29sb3Jcbn0pO1xuXG4vKipcbiAqIFJldHVybiB0aGUgaW5pdGlhbCBpbnB1dCBzdHlsZVxuICogQHJldHVybiBPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxJbnB1dFN0eWxlKCk6IElucHV0U3R5bGUge1xuICByZXR1cm4ge1xuICAgIGlkOiBudWxsLFxuICAgIGFjY2Vzc1Rva2VuOiBudWxsLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB1cmw6IG51bGwsXG4gICAgaWNvbjogbnVsbCxcbiAgICBjdXN0b206ICdMT0NBTCcsXG4gICAgdXBsb2FkZWRGaWxlOiBudWxsXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFHQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFZQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFVQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFVQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFPNEIsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFaLHdCQUFBWSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEs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
package/dist/root.d.ts CHANGED
@@ -8,7 +8,7 @@ export declare function provideInitialState(initialState: any, extraReducers?: a
8
8
  * to mount it at another address e.g. `foo` you will need to specify it when you mount `KeplerGl` component in your app with `getState: state => state.foo`
9
9
  * @public
10
10
  * @example
11
- * import keplerGlReducer from 'kepler.gl/reducers';
11
+ * import keplerGlReducer from '@kepler.gl/reducers';
12
12
  * import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
13
13
  * import {taskMiddleware} from 'react-palm/tasks';
14
14
  *
package/dist/root.js CHANGED
@@ -186,7 +186,7 @@ function decorate(target) {
186
186
  * to mount it at another address e.g. `foo` you will need to specify it when you mount `KeplerGl` component in your app with `getState: state => state.foo`
187
187
  * @public
188
188
  * @example
189
- * import keplerGlReducer from 'kepler.gl/reducers';
189
+ * import keplerGlReducer from '@kepler.gl/reducers';
190
190
  * import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
191
191
  * import {taskMiddleware} from 'react-palm/tasks';
192
192
  *
@@ -204,4 +204,4 @@ function decorate(target) {
204
204
  */
205
205
  var keplerGlReducer = decorate(_keplerGlReducer);
206
206
  var _default = exports["default"] = keplerGlReducer;
207
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9ucyIsInJlcXVpcmUiLCJfcmVkdXhBY3Rpb25zIiwiX2NvcmUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiY29yZVJlZHVjZXJGYWN0b3J5IiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwiX3JlZiIsIl9yZWYkcGF5bG9hZCIsInBheWxvYWQiLCJpZCIsIm1pbnQiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5pdGlhbFVpU3RhdGUiLCJwcmV2aW91c1N0YXRlIiwidW5kZWZpbmVkIiwia2VwbGVyR2xJbml0IiwiaGFuZGxlRGVsZXRlRW50cnkiLCJfcmVmMiIsInJlZHVjZSIsImFjY3UiLCJjdXJyIiwiaGFuZGxlUmVuYW1lRW50cnkiLCJfcmVmNCIsIl9yZWY0JHBheWxvYWQiLCJvbGRJZCIsIm5ld0lkIiwiYWN0aW9uIiwidXBkYXRlSXRlbVN0YXRlIiwiX2FjdGlvbkZvciIsIl91cGRhdGVQcm9wZXJ0eSIsImhhbmRsZXJzIiwiQWN0aW9uVHlwZXMiLCJSRUdJU1RFUl9FTlRSWSIsIkRFTEVURV9FTlRSWSIsIlJFTkFNRV9FTlRSWSIsImhhbmRsZUFjdGlvbnMiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIm5ld1N0YXRlIiwia2V5IiwiZGVjb3JhdGUiLCJ0YXJnZXQiLCJzYXZlZEluaXRpYWxTdGF0ZSIsInRhcmdldEluaXRpYWxTdGF0ZSIsInBsdWdpbiIsImN1c3RvbVJlZHVjZXIiLCJvcHRpb25zIiwiX3RoaXMiLCJfdHlwZW9mMiIsIl9vcHRpb25zJG92ZXJyaWRlIiwibmV4dFN0YXRlIiwidHlwZSIsIm92ZXJyaWRlIiwiaW5pU3QiLCJtZXJnZWQiLCJ0YXJnZXRSZWR1Y2VyIiwia2VwbGVyR2xSZWR1Y2VyIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Jvb3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIGtlcGxlckdsSW5pdCxcbiAgX2FjdGlvbkZvcixcbiAgX3VwZGF0ZVByb3BlcnR5LFxuICBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvbixcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuXG5pbXBvcnQge2NvcmVSZWR1Y2VyRmFjdG9yeSwgS2VwbGVyR2xTdGF0ZX0gZnJvbSAnLi9jb3JlJztcblxudHlwZSBLZXBsZXJHbFN0YXRlTWFwID0ge1xuICBbaWQ6IHN0cmluZ106IFBhcnRpYWw8S2VwbGVyR2xTdGF0ZT47XG59O1xuXG50eXBlIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnMgPSBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddICZcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107IC8vIEV4dGVuZCB0aGlzIHR5cGUgd2l0aCBhZGRpdGlvbmFsIGFjdGlvbnMgdG8gZW5mb3JjZSBzdHJpY3QgdHlwaW5nc1xuXG4vLyBJTklUSUFMX1NUQVRFXG5jb25zdCBpbml0aWFsQ29yZVN0YXRlID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycz8pIHtcbiAgY29uc3QgY29yZVJlZHVjZXIgPSBjb3JlUmVkdWNlckZhY3RvcnkoaW5pdGlhbFN0YXRlLCBleHRyYVJlZHVjZXJzKTtcblxuICBjb25zdCBoYW5kbGVSZWdpc3RlckVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIG1pbnQsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgICAgICBpbml0aWFsVWlTdGF0ZVxuICAgICAgfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlZ2lzdGVyRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107XG4gICAgfVxuICApOiBLZXBsZXJHbFN0YXRlTWFwID0+IHtcbiAgICAvLyBieSBkZWZhdWx0LCBhbHdheXMgY3JlYXRlIGEgbWludCBzdGF0ZSBldmVuIGlmIHRoZSBzYW1lIGlkIGFscmVhZHkgZXhpc3RcbiAgICAvLyBpZiBzdGF0ZS5pZCBleGlzdCBhbmQgbWludD1mYWxzZSwga2VlcCB0aGUgZXhpc3Rpbmcgc3RhdGVcbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gc3RhdGVbaWRdICYmIG1pbnQgPT09IGZhbHNlID8gc3RhdGVbaWRdIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGVudHJ5IHRvIGtlcGxlci5nbCBwYXNzaW5nIGluIG1hcGJveCBjb25maWcgdG8gbWFwU3R5bGVcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgW2lkXTogY29yZVJlZHVjZXIoXG4gICAgICAgIHByZXZpb3VzU3RhdGUsXG4gICAgICAgIGtlcGxlckdsSW5pdCh7bWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQsIGluaXRpYWxVaVN0YXRlfSlcbiAgICAgIClcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtwYXlsb2FkOiB7aWR9fToge3BheWxvYWQ6IHtpZDogc3RyaW5nfX1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4uKGN1cnIgPT09IGlkID8ge30gOiB7W2N1cnJdOiBzdGF0ZVtjdXJyXX0pXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICBjb25zdCBoYW5kbGVSZW5hbWVFbnRyeSA9IChcbiAgICBzdGF0ZTogS2VwbGVyR2xTdGF0ZU1hcCxcbiAgICB7XG4gICAgICBwYXlsb2FkOiB7b2xkSWQsIG5ld0lkfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlbmFtZUVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddO1xuICAgIH1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4ue1tjdXJyID09PSBvbGRJZCA/IG5ld0lkIDogY3Vycl06IHN0YXRlW2N1cnJdfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgcmV0dXJuIChzdGF0ZSA9IGluaXRpYWxDb3JlU3RhdGUsIGFjdGlvbikgPT4ge1xuICAgIC8vIHVwZGF0ZSBjaGlsZCBzdGF0ZXNcbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVJdGVtU3RhdGUgPSBjb3JlUmVkdWNlcihzdGF0ZVtpZF0sIF9hY3Rpb25Gb3IoaWQsIGFjdGlvbikpO1xuICAgICAgc3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoc3RhdGUsIGlkLCB1cGRhdGVJdGVtU3RhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gcGVyZm9ybSBhZGRpdGlvbmFsIHN0YXRlIHJlZHVjaW5nIChlLmcuIHN3aXRjaCBhY3Rpb24udHlwZSBldGMuLi4pXG4gICAgY29uc3QgaGFuZGxlcnMgPSB7XG4gICAgICBbQWN0aW9uVHlwZXMuUkVHSVNURVJfRU5UUlldOiBoYW5kbGVSZWdpc3RlckVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLkRFTEVURV9FTlRSWV06IGhhbmRsZURlbGV0ZUVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLlJFTkFNRV9FTlRSWV06IGhhbmRsZVJlbmFtZUVudHJ5XG4gICAgfTtcblxuICAgIHJldHVybiBoYW5kbGVBY3Rpb25zPEtlcGxlckdsU3RhdGVNYXAsIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnM+KFxuICAgICAgaGFuZGxlcnMsXG4gICAgICBpbml0aWFsQ29yZVN0YXRlXG4gICAgKShzdGF0ZSwgYWN0aW9uKTtcbiAgfTtcbn1cblxuY29uc3QgX2tlcGxlckdsUmVkdWNlciA9IHByb3ZpZGVJbml0aWFsU3RhdGUoaW5pdGlhbENvcmVTdGF0ZSk7XG5cbmZ1bmN0aW9uIG1lcmdlSW5pdGlhbFN0YXRlKHNhdmVkID0ge30sIHByb3ZpZGVkID0ge30sIGV4dHJhSW5pdGlhbFN0YXRlS2V5czogc3RyaW5nW10gPSBbXSkge1xuICBjb25zdCBrZXlzID0gWydtYXBTdGF0ZScsICdtYXBTdHlsZScsICd2aXNTdGF0ZScsICd1aVN0YXRlJywgLi4uZXh0cmFJbml0aWFsU3RhdGVLZXlzXTtcblxuICAvLyBzaGFsbG93IG1lcmdlIGVhY2ggcmVkdWNlclxuICBjb25zdCBuZXdTdGF0ZSA9IGtleXMucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHNhdmVkW2tleV0gJiYgcHJvdmlkZWRba2V5XVxuICAgICAgICA/IHtba2V5XTogey4uLnNhdmVkW2tleV0sIC4uLnByb3ZpZGVkW2tleV19fVxuICAgICAgICA6IHtba2V5XTogc2F2ZWRba2V5XSB8fCBwcm92aWRlZFtrZXldIHx8IHt9fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGUodGFyZ2V0LCBzYXZlZEluaXRpYWxTdGF0ZSA9IHt9KSB7XG4gIGNvbnN0IHRhcmdldEluaXRpYWxTdGF0ZSA9IHNhdmVkSW5pdGlhbFN0YXRlO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEga2VwbGVyLmdsIHJlZHVjZXIgdGhhdCB3aWxsIGFsc28gcGFzcyBlYWNoIGFjdGlvbiB0aHJvdWdoIGFkZGl0aW9uYWwgcmVkdWNlcnMgc3BpZWNpZmllZC5cbiAgICogVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgZWl0aGVyIGEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyIGZ1bmN0aW9uLlxuICAgKiBUaGUgc3RhdGUgcGFzc2VkIGludG8gdGhlIGFkZGl0aW9uYWwgYWN0aW9uIGhhbmRsZXIgaXMgdGhlIGluc3RhbmNlIHN0YXRlLlxuICAgKiBJdCB3aWxsIGluY2x1ZGUgYWxsIHRoZSBzdWJyZWR1Y2VycyBgdmlzU3RhdGVgLCBgdWlTdGF0ZWAsIGBtYXBTdGF0ZWAgYW5kIGBtYXBTdHlsZWAuXG4gICAqIGAucGx1Z2luYCBpcyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBvbmNlIHdoZW4gbW91bnRpbmcgdGhlIGtlcGxlckdsUmVkdWNlciB0byB0aGUgc3RvcmUuXG4gICAqICoqTm90ZSoqIFRoaXMgaXMgYW4gYWR2YW5jZWQgb3B0aW9uIHRvIGdpdmUgeW91IG1vcmUgZnJlZWRvbSB0byBtb2RpZnkgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBrZXBsZXIuZ2wgaW5zdGFuY2UuXG4gICAqIFlvdSBzaG91bGQgb25seSB1c2UgdGhpcyB0byBhZGRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIGluc3RlYWQgb2YgcmVwbGFjaW5nIGRlZmF1bHQgYWN0aW9ucy5cbiAgICpcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5wbHVnaW5cbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gY3VzdG9tUmVkdWNlciAtIEEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGN1c3RvbSByZWR1Y2VyIGxvZ2ljXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLm92ZXJyaWRlIC0gb2JqZWN0cyB0aGF0IGRlc2NyaWJlIHdoaWNoIGFjdGlvbiB0byBvdmVycmlkZSwgZS5nLiB7W0FjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFXTogdHJ1ZX1cbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLnBsdWdpbih7XG4gICAqICAgIC8vIDEuIGFzIHJlZHVjZXIgbWFwXG4gICAqICAgIEhJREVfQU5EX1NIT1dfU0lERV9QQU5FTDogKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gICAqICAgICAgLi4uc3RhdGUsXG4gICAqICAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAgLi4uc3RhdGUudWlTdGF0ZSxcbiAgICogICAgICAgIHJlYWRPbmx5OiAhc3RhdGUudWlTdGF0ZS5yZWFkT25seVxuICAgKiAgICAgIH1cbiAgICogICAgfSlcbiAgICogIH0pXG4gICAqIC5wbHVnaW4oaGFuZGxlQWN0aW9ucyh7XG4gICAqICAgLy8gMi4gYXMgcmVkdWNlclxuICAgKiAgICdISURFX01BUF9DT05UUk9MUyc6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgLi4uc3RhdGUsXG4gICAqICAgICB1aVN0YXRlOiB7XG4gICAqICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgIG1hcENvbnRyb2xzOiBoaWRkZW5NYXBDb250cm9sXG4gICAqICAgICB9XG4gICAqICAgfSlcbiAgICogfSwge30pKTtcbiAgICovXG4gIHRhcmdldC5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4oY3VzdG9tUmVkdWNlciwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUmVkdWNlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGlmIG9ubHkgcHJvdmlkZWQgYSByZWR1Y2VyTWFwLCB3cmFwIGl0IGluIGEgcmVkdWNlclxuICAgICAgY3VzdG9tUmVkdWNlciA9IGhhbmRsZUFjdGlvbnMoY3VzdG9tUmVkdWNlciwge30pO1xuICAgIH1cblxuICAgIC8vIHVzZSAnZnVuY3Rpb24nIGtleXdvcmQgdG8gZW5hYmxlICd0aGlzJ1xuICAgIC8vIFRPRE86IHRlbXBvcmFyaWx5IG1ha2luZyBhY3Rpb24gdHlwZSB0byBhbnksIHdpbGwgZml4IHRoYXQgYnkgY3JlYXRpbmcgYSBzaGFyZWQgYWN0aW9uIGludGVyZmFjZVxuICAgIHJldHVybiBkZWNvcmF0ZSgoc3RhdGUgPSB7fSwgYWN0aW9uOiBhbnkgPSB7fSkgPT4ge1xuICAgICAgbGV0IG5leHRTdGF0ZSA9IHN0YXRlO1xuICAgICAgaWYgKGFjdGlvbi50eXBlICYmICFvcHRpb25zPy5vdmVycmlkZT8uW2FjdGlvbi50eXBlXSkge1xuICAgICAgICBuZXh0U3RhdGUgPSB0aGlzKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgc3RhdGVuXG4gICAgICBPYmplY3Qua2V5cyhuZXh0U3RhdGUpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgY2hpbGQgc3RhdGVzXG4gICAgICAgIG5leHRTdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShcbiAgICAgICAgICBuZXh0U3RhdGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY3VzdG9tUmVkdWNlcihuZXh0U3RhdGVbaWRdLCBfYWN0aW9uRm9yKGlkLCBhY3Rpb24pKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZWR1Y2VyIHRoYXQgaW5pdGlhdGVkIHdpdGggY3VzdG9tIGluaXRpYWwgc3RhdGUuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCBtYXBwaW5nIGZyb20gYHN1YnJlZHVjZXJgIG5hbWUgdG8gY3VzdG9tIHN1YnJlZHVjZXIgc3RhdGUsXG4gICAqIHdoaWNoIHdpbGwgYmUgc2hhbGxvdyAqKm1lcmdlZCoqIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlLlxuICAgKlxuICAgKiBEZWZhdWx0IHN1YnJlZHVjZXIgc3RhdGU6XG4gICAqICAtIFtgdmlzU3RhdGVgXSguL3Zpcy1zdGF0ZS5tZCNJTklUSUFMX1ZJU19TVEFURSlcbiAgICogIC0gW2BtYXBTdGF0ZWBdKC4vbWFwLXN0YXRlLm1kI0lOSVRJQUxfTUFQX1NUQVRFKVxuICAgKiAgLSBbYG1hcFN0eWxlYF0oLi9tYXAtc3R5bGUubWQjSU5JVElBTF9NQVBfU1RZTEUpXG4gICAqICAtIFtgdWlTdGF0ZWBdKC4vdWktc3RhdGUubWQjSU5JVElBTF9VSV9TVEFURSlcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5pbml0aWFsU3RhdGVcbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gaW5pU3QgLSBjdXN0b20gc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBleHRyYVJlZHVjZXJzIC0gb3B0aW9uYWwgY3VzdG9tIHJlZHVjZXJzIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLmluaXRpYWxTdGF0ZSh7XG4gICAqICAgIHVpU3RhdGU6IHtyZWFkT25seTogdHJ1ZX1cbiAgICogIH0pO1xuICAgKi9cbiAgdGFyZ2V0LmluaXRpYWxTdGF0ZSA9IGZ1bmN0aW9uIGluaXRpYWxTdGF0ZShpbmlTdCwgZXh0cmFSZWR1Y2VycyA9IHt9KSB7XG4gICAgLy8gcGFzc2luZyB0aHJvdWdoIGV4dHJhSW5pdGlhbFN0YXRlS2V5cyBhbmQgZXh0cmFSZWR1Y2VycyBhbGxvd3MgZXh0ZXJuYWwgY3VzdG9taXphdGlvbiBieSBhZGRpbmcgYWRkaXRpb25hbCBzdWJyZWR1Y2VycyBhbmQgc3RhdGUgYmV5b25kIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICBjb25zdCBleHRyYUluaXRpYWxTdGF0ZUtleXMgPSBPYmplY3Qua2V5cyhleHRyYVJlZHVjZXJzKTtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZUluaXRpYWxTdGF0ZSh0YXJnZXRJbml0aWFsU3RhdGUsIGluaVN0LCBleHRyYUluaXRpYWxTdGF0ZUtleXMpO1xuICAgIGNvbnN0IHRhcmdldFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKG1lcmdlZCwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgICByZXR1cm4gZGVjb3JhdGUodGFyZ2V0UmVkdWNlciwgbWVyZ2VkKTtcbiAgfTtcblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIEtlcGxlci5nbCByZWR1Y2VyIHRvIGJlIG1vdW50ZWQgdG8geW91ciBzdG9yZS4gWW91IGNhbiBtb3VudCBga2VwbGVyR2xSZWR1Y2VyYCBhdCBwcm9wZXJ0eSBga2VwbGVyR2xgLCBpZiB5b3UgY2hvb3NlXG4gKiB0byBtb3VudCBpdCBhdCBhbm90aGVyIGFkZHJlc3MgZS5nLiBgZm9vYCB5b3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgaXQgd2hlbiB5b3UgbW91bnQgYEtlcGxlckdsYCBjb21wb25lbnQgaW4geW91ciBhcHAgd2l0aCBgZ2V0U3RhdGU6IHN0YXRlID0+IHN0YXRlLmZvb2BcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyIGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiBpbXBvcnQge2NyZWF0ZVN0b3JlLCBjb21iaW5lUmVkdWNlcnMsIGFwcGx5TWlkZGxld2FyZSwgY29tcG9zZX0gZnJvbSAncmVkdXgnO1xuICogaW1wb3J0IHt0YXNrTWlkZGxld2FyZX0gZnJvbSAncmVhY3QtcGFsbS90YXNrcyc7XG4gKlxuICogY29uc3QgaW5pdGlhbFN0YXRlID0ge307XG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAgIC8vIDwtLSBtb3VudCBrZXBsZXIuZ2wgcmVkdWNlciBpbiB5b3VyIGFwcFxuICogICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICpcbiAqICAgLy8gWW91ciBvdGhlciByZWR1Y2VycyBoZXJlXG4gKiAgIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogLy8gdXNpbmcgY3JlYXRlU3RvcmVcbiAqIGV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN0b3JlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSwgYXBwbHlNaWRkbGV3YXJlKHRhc2tNaWRkbGV3YXJlKSk7XG4gKi9cbmNvbnN0IGtlcGxlckdsUmVkdWNlciA9IGRlY29yYXRlKF9rZXBsZXJHbFJlZHVjZXIpO1xuZXhwb3J0IGRlZmF1bHQga2VwbGVyR2xSZWR1Y2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQVFBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLEtBQUEsR0FBQUYsT0FBQTtBQUF5RCxTQUFBRyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLGFBQUFoQixDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFFLE1BQUEsQ0FBQWMseUJBQUEsR0FBQWQsTUFBQSxDQUFBZSxnQkFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxNQUFBLENBQUFjLHlCQUFBLENBQUFmLENBQUEsS0FBQUgsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEs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
207
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9ucyIsInJlcXVpcmUiLCJfcmVkdXhBY3Rpb25zIiwiX2NvcmUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiY29yZVJlZHVjZXJGYWN0b3J5IiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwiX3JlZiIsIl9yZWYkcGF5bG9hZCIsInBheWxvYWQiLCJpZCIsIm1pbnQiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5pdGlhbFVpU3RhdGUiLCJwcmV2aW91c1N0YXRlIiwidW5kZWZpbmVkIiwia2VwbGVyR2xJbml0IiwiaGFuZGxlRGVsZXRlRW50cnkiLCJfcmVmMiIsInJlZHVjZSIsImFjY3UiLCJjdXJyIiwiaGFuZGxlUmVuYW1lRW50cnkiLCJfcmVmNCIsIl9yZWY0JHBheWxvYWQiLCJvbGRJZCIsIm5ld0lkIiwiYWN0aW9uIiwidXBkYXRlSXRlbVN0YXRlIiwiX2FjdGlvbkZvciIsIl91cGRhdGVQcm9wZXJ0eSIsImhhbmRsZXJzIiwiQWN0aW9uVHlwZXMiLCJSRUdJU1RFUl9FTlRSWSIsIkRFTEVURV9FTlRSWSIsIlJFTkFNRV9FTlRSWSIsImhhbmRsZUFjdGlvbnMiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIm5ld1N0YXRlIiwia2V5IiwiZGVjb3JhdGUiLCJ0YXJnZXQiLCJzYXZlZEluaXRpYWxTdGF0ZSIsInRhcmdldEluaXRpYWxTdGF0ZSIsInBsdWdpbiIsImN1c3RvbVJlZHVjZXIiLCJvcHRpb25zIiwiX3RoaXMiLCJfdHlwZW9mMiIsIl9vcHRpb25zJG92ZXJyaWRlIiwibmV4dFN0YXRlIiwidHlwZSIsIm92ZXJyaWRlIiwiaW5pU3QiLCJtZXJnZWQiLCJ0YXJnZXRSZWR1Y2VyIiwia2VwbGVyR2xSZWR1Y2VyIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Jvb3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIGtlcGxlckdsSW5pdCxcbiAgX2FjdGlvbkZvcixcbiAgX3VwZGF0ZVByb3BlcnR5LFxuICBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvbixcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuXG5pbXBvcnQge2NvcmVSZWR1Y2VyRmFjdG9yeSwgS2VwbGVyR2xTdGF0ZX0gZnJvbSAnLi9jb3JlJztcblxudHlwZSBLZXBsZXJHbFN0YXRlTWFwID0ge1xuICBbaWQ6IHN0cmluZ106IFBhcnRpYWw8S2VwbGVyR2xTdGF0ZT47XG59O1xuXG50eXBlIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnMgPSBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddICZcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107IC8vIEV4dGVuZCB0aGlzIHR5cGUgd2l0aCBhZGRpdGlvbmFsIGFjdGlvbnMgdG8gZW5mb3JjZSBzdHJpY3QgdHlwaW5nc1xuXG4vLyBJTklUSUFMX1NUQVRFXG5jb25zdCBpbml0aWFsQ29yZVN0YXRlID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycz8pIHtcbiAgY29uc3QgY29yZVJlZHVjZXIgPSBjb3JlUmVkdWNlckZhY3RvcnkoaW5pdGlhbFN0YXRlLCBleHRyYVJlZHVjZXJzKTtcblxuICBjb25zdCBoYW5kbGVSZWdpc3RlckVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIG1pbnQsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgICAgICBpbml0aWFsVWlTdGF0ZVxuICAgICAgfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlZ2lzdGVyRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107XG4gICAgfVxuICApOiBLZXBsZXJHbFN0YXRlTWFwID0+IHtcbiAgICAvLyBieSBkZWZhdWx0LCBhbHdheXMgY3JlYXRlIGEgbWludCBzdGF0ZSBldmVuIGlmIHRoZSBzYW1lIGlkIGFscmVhZHkgZXhpc3RcbiAgICAvLyBpZiBzdGF0ZS5pZCBleGlzdCBhbmQgbWludD1mYWxzZSwga2VlcCB0aGUgZXhpc3Rpbmcgc3RhdGVcbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gc3RhdGVbaWRdICYmIG1pbnQgPT09IGZhbHNlID8gc3RhdGVbaWRdIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGVudHJ5IHRvIGtlcGxlci5nbCBwYXNzaW5nIGluIG1hcGJveCBjb25maWcgdG8gbWFwU3R5bGVcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgW2lkXTogY29yZVJlZHVjZXIoXG4gICAgICAgIHByZXZpb3VzU3RhdGUsXG4gICAgICAgIGtlcGxlckdsSW5pdCh7bWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQsIGluaXRpYWxVaVN0YXRlfSlcbiAgICAgIClcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtwYXlsb2FkOiB7aWR9fToge3BheWxvYWQ6IHtpZDogc3RyaW5nfX1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4uKGN1cnIgPT09IGlkID8ge30gOiB7W2N1cnJdOiBzdGF0ZVtjdXJyXX0pXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICBjb25zdCBoYW5kbGVSZW5hbWVFbnRyeSA9IChcbiAgICBzdGF0ZTogS2VwbGVyR2xTdGF0ZU1hcCxcbiAgICB7XG4gICAgICBwYXlsb2FkOiB7b2xkSWQsIG5ld0lkfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlbmFtZUVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddO1xuICAgIH1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4ue1tjdXJyID09PSBvbGRJZCA/IG5ld0lkIDogY3Vycl06IHN0YXRlW2N1cnJdfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgcmV0dXJuIChzdGF0ZSA9IGluaXRpYWxDb3JlU3RhdGUsIGFjdGlvbikgPT4ge1xuICAgIC8vIHVwZGF0ZSBjaGlsZCBzdGF0ZXNcbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVJdGVtU3RhdGUgPSBjb3JlUmVkdWNlcihzdGF0ZVtpZF0sIF9hY3Rpb25Gb3IoaWQsIGFjdGlvbikpO1xuICAgICAgc3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoc3RhdGUsIGlkLCB1cGRhdGVJdGVtU3RhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gcGVyZm9ybSBhZGRpdGlvbmFsIHN0YXRlIHJlZHVjaW5nIChlLmcuIHN3aXRjaCBhY3Rpb24udHlwZSBldGMuLi4pXG4gICAgY29uc3QgaGFuZGxlcnMgPSB7XG4gICAgICBbQWN0aW9uVHlwZXMuUkVHSVNURVJfRU5UUlldOiBoYW5kbGVSZWdpc3RlckVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLkRFTEVURV9FTlRSWV06IGhhbmRsZURlbGV0ZUVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLlJFTkFNRV9FTlRSWV06IGhhbmRsZVJlbmFtZUVudHJ5XG4gICAgfTtcblxuICAgIHJldHVybiBoYW5kbGVBY3Rpb25zPEtlcGxlckdsU3RhdGVNYXAsIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnM+KFxuICAgICAgaGFuZGxlcnMsXG4gICAgICBpbml0aWFsQ29yZVN0YXRlXG4gICAgKShzdGF0ZSwgYWN0aW9uKTtcbiAgfTtcbn1cblxuY29uc3QgX2tlcGxlckdsUmVkdWNlciA9IHByb3ZpZGVJbml0aWFsU3RhdGUoaW5pdGlhbENvcmVTdGF0ZSk7XG5cbmZ1bmN0aW9uIG1lcmdlSW5pdGlhbFN0YXRlKHNhdmVkID0ge30sIHByb3ZpZGVkID0ge30sIGV4dHJhSW5pdGlhbFN0YXRlS2V5czogc3RyaW5nW10gPSBbXSkge1xuICBjb25zdCBrZXlzID0gWydtYXBTdGF0ZScsICdtYXBTdHlsZScsICd2aXNTdGF0ZScsICd1aVN0YXRlJywgLi4uZXh0cmFJbml0aWFsU3RhdGVLZXlzXTtcblxuICAvLyBzaGFsbG93IG1lcmdlIGVhY2ggcmVkdWNlclxuICBjb25zdCBuZXdTdGF0ZSA9IGtleXMucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHNhdmVkW2tleV0gJiYgcHJvdmlkZWRba2V5XVxuICAgICAgICA/IHtba2V5XTogey4uLnNhdmVkW2tleV0sIC4uLnByb3ZpZGVkW2tleV19fVxuICAgICAgICA6IHtba2V5XTogc2F2ZWRba2V5XSB8fCBwcm92aWRlZFtrZXldIHx8IHt9fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGUodGFyZ2V0LCBzYXZlZEluaXRpYWxTdGF0ZSA9IHt9KSB7XG4gIGNvbnN0IHRhcmdldEluaXRpYWxTdGF0ZSA9IHNhdmVkSW5pdGlhbFN0YXRlO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEga2VwbGVyLmdsIHJlZHVjZXIgdGhhdCB3aWxsIGFsc28gcGFzcyBlYWNoIGFjdGlvbiB0aHJvdWdoIGFkZGl0aW9uYWwgcmVkdWNlcnMgc3BpZWNpZmllZC5cbiAgICogVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgZWl0aGVyIGEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyIGZ1bmN0aW9uLlxuICAgKiBUaGUgc3RhdGUgcGFzc2VkIGludG8gdGhlIGFkZGl0aW9uYWwgYWN0aW9uIGhhbmRsZXIgaXMgdGhlIGluc3RhbmNlIHN0YXRlLlxuICAgKiBJdCB3aWxsIGluY2x1ZGUgYWxsIHRoZSBzdWJyZWR1Y2VycyBgdmlzU3RhdGVgLCBgdWlTdGF0ZWAsIGBtYXBTdGF0ZWAgYW5kIGBtYXBTdHlsZWAuXG4gICAqIGAucGx1Z2luYCBpcyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBvbmNlIHdoZW4gbW91bnRpbmcgdGhlIGtlcGxlckdsUmVkdWNlciB0byB0aGUgc3RvcmUuXG4gICAqICoqTm90ZSoqIFRoaXMgaXMgYW4gYWR2YW5jZWQgb3B0aW9uIHRvIGdpdmUgeW91IG1vcmUgZnJlZWRvbSB0byBtb2RpZnkgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBrZXBsZXIuZ2wgaW5zdGFuY2UuXG4gICAqIFlvdSBzaG91bGQgb25seSB1c2UgdGhpcyB0byBhZGRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIGluc3RlYWQgb2YgcmVwbGFjaW5nIGRlZmF1bHQgYWN0aW9ucy5cbiAgICpcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5wbHVnaW5cbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gY3VzdG9tUmVkdWNlciAtIEEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGN1c3RvbSByZWR1Y2VyIGxvZ2ljXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLm92ZXJyaWRlIC0gb2JqZWN0cyB0aGF0IGRlc2NyaWJlIHdoaWNoIGFjdGlvbiB0byBvdmVycmlkZSwgZS5nLiB7W0FjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFXTogdHJ1ZX1cbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLnBsdWdpbih7XG4gICAqICAgIC8vIDEuIGFzIHJlZHVjZXIgbWFwXG4gICAqICAgIEhJREVfQU5EX1NIT1dfU0lERV9QQU5FTDogKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gICAqICAgICAgLi4uc3RhdGUsXG4gICAqICAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAgLi4uc3RhdGUudWlTdGF0ZSxcbiAgICogICAgICAgIHJlYWRPbmx5OiAhc3RhdGUudWlTdGF0ZS5yZWFkT25seVxuICAgKiAgICAgIH1cbiAgICogICAgfSlcbiAgICogIH0pXG4gICAqIC5wbHVnaW4oaGFuZGxlQWN0aW9ucyh7XG4gICAqICAgLy8gMi4gYXMgcmVkdWNlclxuICAgKiAgICdISURFX01BUF9DT05UUk9MUyc6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgLi4uc3RhdGUsXG4gICAqICAgICB1aVN0YXRlOiB7XG4gICAqICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgIG1hcENvbnRyb2xzOiBoaWRkZW5NYXBDb250cm9sXG4gICAqICAgICB9XG4gICAqICAgfSlcbiAgICogfSwge30pKTtcbiAgICovXG4gIHRhcmdldC5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4oY3VzdG9tUmVkdWNlciwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUmVkdWNlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGlmIG9ubHkgcHJvdmlkZWQgYSByZWR1Y2VyTWFwLCB3cmFwIGl0IGluIGEgcmVkdWNlclxuICAgICAgY3VzdG9tUmVkdWNlciA9IGhhbmRsZUFjdGlvbnMoY3VzdG9tUmVkdWNlciwge30pO1xuICAgIH1cblxuICAgIC8vIHVzZSAnZnVuY3Rpb24nIGtleXdvcmQgdG8gZW5hYmxlICd0aGlzJ1xuICAgIC8vIFRPRE86IHRlbXBvcmFyaWx5IG1ha2luZyBhY3Rpb24gdHlwZSB0byBhbnksIHdpbGwgZml4IHRoYXQgYnkgY3JlYXRpbmcgYSBzaGFyZWQgYWN0aW9uIGludGVyZmFjZVxuICAgIHJldHVybiBkZWNvcmF0ZSgoc3RhdGUgPSB7fSwgYWN0aW9uOiBhbnkgPSB7fSkgPT4ge1xuICAgICAgbGV0IG5leHRTdGF0ZSA9IHN0YXRlO1xuICAgICAgaWYgKGFjdGlvbi50eXBlICYmICFvcHRpb25zPy5vdmVycmlkZT8uW2FjdGlvbi50eXBlXSkge1xuICAgICAgICBuZXh0U3RhdGUgPSB0aGlzKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgc3RhdGVuXG4gICAgICBPYmplY3Qua2V5cyhuZXh0U3RhdGUpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgY2hpbGQgc3RhdGVzXG4gICAgICAgIG5leHRTdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShcbiAgICAgICAgICBuZXh0U3RhdGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY3VzdG9tUmVkdWNlcihuZXh0U3RhdGVbaWRdLCBfYWN0aW9uRm9yKGlkLCBhY3Rpb24pKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZWR1Y2VyIHRoYXQgaW5pdGlhdGVkIHdpdGggY3VzdG9tIGluaXRpYWwgc3RhdGUuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCBtYXBwaW5nIGZyb20gYHN1YnJlZHVjZXJgIG5hbWUgdG8gY3VzdG9tIHN1YnJlZHVjZXIgc3RhdGUsXG4gICAqIHdoaWNoIHdpbGwgYmUgc2hhbGxvdyAqKm1lcmdlZCoqIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlLlxuICAgKlxuICAgKiBEZWZhdWx0IHN1YnJlZHVjZXIgc3RhdGU6XG4gICAqICAtIFtgdmlzU3RhdGVgXSguL3Zpcy1zdGF0ZS5tZCNJTklUSUFMX1ZJU19TVEFURSlcbiAgICogIC0gW2BtYXBTdGF0ZWBdKC4vbWFwLXN0YXRlLm1kI0lOSVRJQUxfTUFQX1NUQVRFKVxuICAgKiAgLSBbYG1hcFN0eWxlYF0oLi9tYXAtc3R5bGUubWQjSU5JVElBTF9NQVBfU1RZTEUpXG4gICAqICAtIFtgdWlTdGF0ZWBdKC4vdWktc3RhdGUubWQjSU5JVElBTF9VSV9TVEFURSlcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5pbml0aWFsU3RhdGVcbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gaW5pU3QgLSBjdXN0b20gc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBleHRyYVJlZHVjZXJzIC0gb3B0aW9uYWwgY3VzdG9tIHJlZHVjZXJzIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLmluaXRpYWxTdGF0ZSh7XG4gICAqICAgIHVpU3RhdGU6IHtyZWFkT25seTogdHJ1ZX1cbiAgICogIH0pO1xuICAgKi9cbiAgdGFyZ2V0LmluaXRpYWxTdGF0ZSA9IGZ1bmN0aW9uIGluaXRpYWxTdGF0ZShpbmlTdCwgZXh0cmFSZWR1Y2VycyA9IHt9KSB7XG4gICAgLy8gcGFzc2luZyB0aHJvdWdoIGV4dHJhSW5pdGlhbFN0YXRlS2V5cyBhbmQgZXh0cmFSZWR1Y2VycyBhbGxvd3MgZXh0ZXJuYWwgY3VzdG9taXphdGlvbiBieSBhZGRpbmcgYWRkaXRpb25hbCBzdWJyZWR1Y2VycyBhbmQgc3RhdGUgYmV5b25kIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICBjb25zdCBleHRyYUluaXRpYWxTdGF0ZUtleXMgPSBPYmplY3Qua2V5cyhleHRyYVJlZHVjZXJzKTtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZUluaXRpYWxTdGF0ZSh0YXJnZXRJbml0aWFsU3RhdGUsIGluaVN0LCBleHRyYUluaXRpYWxTdGF0ZUtleXMpO1xuICAgIGNvbnN0IHRhcmdldFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKG1lcmdlZCwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgICByZXR1cm4gZGVjb3JhdGUodGFyZ2V0UmVkdWNlciwgbWVyZ2VkKTtcbiAgfTtcblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIEtlcGxlci5nbCByZWR1Y2VyIHRvIGJlIG1vdW50ZWQgdG8geW91ciBzdG9yZS4gWW91IGNhbiBtb3VudCBga2VwbGVyR2xSZWR1Y2VyYCBhdCBwcm9wZXJ0eSBga2VwbGVyR2xgLCBpZiB5b3UgY2hvb3NlXG4gKiB0byBtb3VudCBpdCBhdCBhbm90aGVyIGFkZHJlc3MgZS5nLiBgZm9vYCB5b3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgaXQgd2hlbiB5b3UgbW91bnQgYEtlcGxlckdsYCBjb21wb25lbnQgaW4geW91ciBhcHAgd2l0aCBgZ2V0U3RhdGU6IHN0YXRlID0+IHN0YXRlLmZvb2BcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyIGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogaW1wb3J0IHtjcmVhdGVTdG9yZSwgY29tYmluZVJlZHVjZXJzLCBhcHBseU1pZGRsZXdhcmUsIGNvbXBvc2V9IGZyb20gJ3JlZHV4JztcbiAqIGltcG9ydCB7dGFza01pZGRsZXdhcmV9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuICpcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogICAvLyA8LS0gbW91bnQga2VwbGVyLmdsIHJlZHVjZXIgaW4geW91ciBhcHBcbiAqICAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqXG4gKiAgIC8vIFlvdXIgb3RoZXIgcmVkdWNlcnMgaGVyZVxuICogICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIC8vIHVzaW5nIGNyZWF0ZVN0b3JlXG4gKiBleHBvcnQgZGVmYXVsdCBjcmVhdGVTdG9yZShyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGFwcGx5TWlkZGxld2FyZSh0YXNrTWlkZGxld2FyZSkpO1xuICovXG5jb25zdCBrZXBsZXJHbFJlZHVjZXIgPSBkZWNvcmF0ZShfa2VwbGVyR2xSZWR1Y2VyKTtcbmV4cG9ydCBkZWZhdWx0IGtlcGxlckdsUmVkdWNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFRQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFBeUQsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFB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
@@ -1,6 +1,5 @@
1
- import { ExportImage } from '@kepler.gl/constants';
2
1
  import { ActionTypes, KeplerGlInitPayload, LoadFilesErrUpdaterAction, UIStateActions } from '@kepler.gl/actions';
3
- import { ExportData, ExportHtml, ExportJson, ExportMap, MapControls, UiState } from '@kepler.gl/types';
2
+ import { ExportData, ExportHtml, ExportJson, ExportMap, ExportImage, MapControls, UiState } from '@kepler.gl/types';
4
3
  export declare const DEFAULT_ACTIVE_SIDE_PANEL = "layer";
5
4
  export declare const DEFAULT_MODAL = "addData";
6
5
  /**