@kepler.gl/deckgl-layers 3.3.0-alpha.10 → 3.3.0-alpha.11

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.
@@ -563,4 +563,4 @@ export var getGlobeTopLayers = function getGlobeTopLayers(_ref3) {
563
563
  zoom: zoom
564
564
  }) : null].filter(Boolean);
565
565
  };
566
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT09SRElOQVRFX1NZU1RFTSIsIlNvbGlkUG9seWdvbkxheWVyIiwiQml0bWFwTGF5ZXIiLCJUaWxlTGF5ZXIiLCJNVlRMYXllciIsImdldEdsb2JlQXRtb3NwaGVyZUxheWVyIiwiZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIiLCJnZXRHbG9iZUh1Z2VIYWxvTGF5ZXIiLCJnZXRHbG9iZURlcHRoRGlza0xheWVyIiwiTVZUTGFiZWxMYXllciIsImRldmljZVBpeGVsUmF0aW8iLCJNYXRoIiwibWluIiwid2luZG93IiwiQkFDS0dST1VORF9QQVJBTUVURVJTIiwiZGVwdGhUZXN0IiwiY3VsbCIsImRlcHRoTWFzayIsIkJBU0VNQVBfUkFTVEVSX1BBUkFNRVRFUlMiLCJCQUNLR1JPVU5EX0RBVEEiLCJCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSIsIkRFRkFVTFRfQkFTRU1BUF9DT0xPUiIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJiYXNlbWFwRGVmYXVsdEZpbGxDb2xvciIsImJhc2VtYXBXYXRlckZpbGxDb2xvciIsImJhc2VtYXBEZWZhdWx0TGluZUNvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcExhYmVsQ29sb3IiLCJnZXRQYWludENvbG9yIiwiY29sb3IiLCJBcnJheSIsImlzQXJyYXkiLCJjb2xvclN0cmluZ1RvUkdCIiwiaHNsTWF0Y2giLCJtYXRjaCIsImgiLCJwYXJzZUludCIsInMiLCJsIiwiciIsImciLCJiIiwiaHVlMnJnYiIsInAiLCJxIiwidCIsInJvdW5kIiwicmdiTWF0Y2giLCJoZXhNYXRjaCIsImhleCIsInNsaWNlIiwiZmluZEZpcnN0TGF5ZXJCeUdyb3VwIiwibGF5ZXJzIiwibGF5ZXJHcm91cHMiLCJncm91cFNsdWciLCJsYXllckdyb3VwIiwiZmluZCIsImdyb3VwIiwic2x1ZyIsImxheWVyIiwiZmlsdGVyIiwiZmluZEJhY2tncm91bmRDb2xvciIsInN0eWxlIiwiX2ZvdW5kIiwiZm91bmQiLCJpZCIsInR5cGUiLCJwYWludCIsImZpbmRXYXRlckNvbG9yIiwiX2ZvdW5kJHBhaW50IiwiZmluZEFkbWluQ29sb3IiLCJfYm9yZGVyTGF5ZXJzJHBhaW50IiwiYm9yZGVyTGF5ZXJzIiwibHlyIiwiZmluZExhYmVsQ29sb3IiLCJfbGFiZWxMYXllciIsImxhYmVsTGF5ZXIiLCJnZXRCYXNlbWFwQ29sb3JzIiwibWFwU3R5bGUiLCJfZmluZEJhY2tncm91bmRDb2xvciIsIl9maW5kV2F0ZXJDb2xvciIsIl9maW5kQWRtaW5Db2xvciIsIl9maW5kTGFiZWxDb2xvciIsIl9tYXBTdHlsZSRzdHlsZSIsInN0eWxlSnNvbiIsIl9tYXBTdHlsZSRsYXllckdyb3VwcyIsIktOT1dOX1NUWUxFX0NPTE9SUyIsImRhcmsiLCJsaWdodCIsInBvc2l0cm9uIiwidm95YWdlciIsIm11dGVkIiwibXV0ZWRfbmlnaHQiLCJnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUiLCJzdHlsZVR5cGUiLCJfbWFwU3R5bGUkc3R5bGUyIiwibGVuZ3RoIiwiZ2V0R2xvYmVDbGVhckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiSU5WSVNJQkxFX0NPTE9SIiwiQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyIsIk1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQiLCJHTE9CRV9USUxFX0VYVEVOVCIsIk1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSIsIkNBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwibG9nMiIsIlBJIiwiY29zIiwiZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wZWQiLCJtYXgiLCJyZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIiLCJiYXNlTWFwTGlicmFyeSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiQ0FSVE9fVkVDVE9SX1RJTEVfVVJMUyIsIkVTUklfV09STERfSU1BR0VSWV9VUkwiLCJnZXRCYXNlbWFwTGF5ZXJLaW5kIiwibGF5ZXJOYW1lIiwiTUFQQk9YX0FUVFJJQlVUSU9OIiwibGFiZWwiLCJocmVmIiwiT1NNX0FUVFJJQlVUSU9OIiwiQ0FSVE9fQVRUUklCVVRJT04iLCJFU1JJX0FUVFJJQlVUSU9OIiwiZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZiIsIl9nbG9iZSRjb25maWciLCJnbG9iZSIsIm1hcFN0eWxlVHlwZSIsImJhc2VtYXBQcm92aWRlciIsImVuYWJsZWQiLCJjb25maWciLCJiYXNlbWFwIiwicHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJpc1NhdGVsbGl0ZSIsImdldEdsb2JlQmFzZUxheWVycyIsIl9yZWYyIiwiem9vbSIsImlzU2F0ZWxsaXRlU3RyZWV0IiwibGF0Wm9vbUNvbXBlbnNhdGlvbiIsInVzZUNhcnRvIiwiaGFzVGlsZUFjY2VzcyIsIkJvb2xlYW4iLCJhdG1vc3BoZXJlIiwiZmlsbENvbG9yIiwic3VyZmFjZUNvbG9yIiwiZGF0YSIsImdldFBvbHlnb24iLCJkIiwiZmlsbGVkIiwiZ2V0RmlsbENvbG9yIiwicGFyYW1ldGVycyIsIndhdGVyIiwid2F0ZXJDb2xvciIsImNvbmNhdCIsIm1pblpvb20iLCJtYXhab29tIiwiem9vbU9mZnNldCIsImV4dGVudCIsInRpbGVTaXplIiwicmVuZGVyU3ViTGF5ZXJzIiwicHJvcHMiLCJfcHJvcHMkdGlsZSRiYm94IiwidGlsZSIsImJib3giLCJ3ZXN0Iiwic291dGgiLCJlYXN0Iiwibm9ydGgiLCJfaW1hZ2VDb29yZGluYXRlU3lzdGVtIiwiQ0FSVEVTSUFOIiwiaW1hZ2UiLCJib3VuZHMiLCJiaW5hcnkiLCJsb2FkT3B0aW9ucyIsIm12dCIsImYiLCJwcm9wZXJ0aWVzIiwiZ2V0TGluZUNvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsImdldExpbmVXaWR0aCIsImFkbWluX2xldmVsIiwidXBkYXRlVHJpZ2dlcnMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImdldFBvaW50UmFkaXVzIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJnZXRHbG9iZVRvcExheWVycyIsIl9yZWYzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JlL2dsb2JlLWxheWVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0NPT1JESU5BVEVfU1lTVEVNLCBMYXllcn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1NvbGlkUG9seWdvbkxheWVyLCBCaXRtYXBMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7VGlsZUxheWVyLCBNVlRMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmltcG9ydCB0eXBlIHtHbG9iZX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1JHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtnZXRHbG9iZUF0bW9zcGhlcmVMYXllciwgZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIsIGdldEdsb2JlSHVnZUhhbG9MYXllcn0gZnJvbSAnLi9hdG1vc3BoZXJlLWxheWVyJztcbmltcG9ydCB7Z2V0R2xvYmVEZXB0aERpc2tMYXllcn0gZnJvbSAnLi9nbG9iZS1kZXB0aC1kaXNrLWxheWVyJztcbmltcG9ydCB7TVZUTGFiZWxMYXllcn0gZnJvbSAnLi9tdnQtbGFiZWwtbGF5ZXInO1xuXG50eXBlIExheWVyR3JvdXAgPSB7c2x1Zzogc3RyaW5nOyBmaWx0ZXI6IChsYXllcjogYW55KSA9PiBib29sZWFufTtcblxuY29uc3QgZGV2aWNlUGl4ZWxSYXRpbyA9IE1hdGgubWluKFxuICAyLFxuICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRldmljZVBpeGVsUmF0aW8pIHx8IDFcbik7XG5cbmNvbnN0IEJBQ0tHUk9VTkRfUEFSQU1FVEVSUyA9IHtcbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBjdWxsOiB0cnVlLFxuICBkZXB0aE1hc2s6IGZhbHNlXG59O1xuXG5jb25zdCBCQVNFTUFQX1JBU1RFUl9QQVJBTUVURVJTID0ge1xuICBkZXB0aE1hc2s6IGZhbHNlXG59O1xuXG5jb25zdCBCQUNLR1JPVU5EX0RBVEEgPSBbXG4gIFtcbiAgICBbLTE4MCwgOTBdLFxuICAgIFswLCA5MF0sXG4gICAgWzE4MCwgOTBdLFxuICAgIFsxODAsIC05MF0sXG4gICAgWzAsIC05MF0sXG4gICAgWy0xODAsIC05MF1cbiAgXVxuXTtcblxuY29uc3QgQkFDS0dST1VORF9OT1JUSF9QT0xFX0RBVEEgPSBbXG4gIFtcbiAgICBbLTE4MCwgOTBdLFxuICAgIFswLCA5MF0sXG4gICAgWzE4MCwgOTBdLFxuICAgIFsxODAsIDg1XSxcbiAgICBbMCwgODVdLFxuICAgIFstMTgwLCA4NV1cbiAgXVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRU1BUF9DT0xPUiA9IHtcbiAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzksIDE2LCAyOV0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBEZWZhdWx0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NV0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3LCAzNSwgNDhdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwRGVmYXVsdExpbmVDb2xvcjogWzQwLCA2MywgOTNdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs0MCwgNjMsIDkzXSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcExhYmVsQ29sb3I6IFsxMTQuNzUsIDExNC43NSwgMTE0Ljc1XSBhcyBSR0JDb2xvclxufTtcblxuZnVuY3Rpb24gZ2V0UGFpbnRDb2xvcihjb2xvcjogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSAmJiBjb2xvclswXSA9PT0gJ2ludGVycG9sYXRlJykge1xuICAgIHJldHVybiBjb2xvcls0XTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5cbmZ1bmN0aW9uIGNvbG9yU3RyaW5nVG9SR0IoY29sb3I6IHN0cmluZyB8IG51bGwpOiBSR0JDb2xvciB8IG51bGwge1xuICBpZiAoIWNvbG9yKSByZXR1cm4gbnVsbDtcbiAgaWYgKHR5cGVvZiBjb2xvciAhPT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xuXG4gIC8vIEhhbmRsZSBoc2woKSBmb3JtYXRcbiAgY29uc3QgaHNsTWF0Y2ggPSBjb2xvci5tYXRjaCgvaHNsXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKSVcXHMqLFxccyooXFxkKyklXFxzKlxcKS8pO1xuICBpZiAoaHNsTWF0Y2gpIHtcbiAgICBjb25zdCBoID0gcGFyc2VJbnQoaHNsTWF0Y2hbMV0sIDEwKSAvIDM2MDtcbiAgICBjb25zdCBzID0gcGFyc2VJbnQoaHNsTWF0Y2hbMl0sIDEwKSAvIDEwMDtcbiAgICBjb25zdCBsID0gcGFyc2VJbnQoaHNsTWF0Y2hbM10sIDEwKSAvIDEwMDtcbiAgICAvLyBIU0wgdG8gUkdCIGNvbnZlcnNpb25cbiAgICBsZXQgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcjtcbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgciA9IGcgPSBiID0gbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaHVlMnJnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICh0IDwgMCkgdCArPSAxO1xuICAgICAgICBpZiAodCA+IDEpIHQgLT0gMTtcbiAgICAgICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgICAgIGlmICh0IDwgMSAvIDIpIHJldHVybiBxO1xuICAgICAgICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7XG4gICAgICAgIHJldHVybiBwO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgY29uc3QgcCA9IDIgKiBsIC0gcTtcbiAgICAgIHIgPSBodWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICBnID0gaHVlMnJnYihwLCBxLCBoKTtcbiAgICAgIGIgPSBodWUycmdiKHAsIHEsIGggLSAxIC8gMyk7XG4gICAgfVxuICAgIHJldHVybiBbTWF0aC5yb3VuZChyICogMjU1KSwgTWF0aC5yb3VuZChnICogMjU1KSwgTWF0aC5yb3VuZChiICogMjU1KV0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICAvLyBIYW5kbGUgcmdiKCkgZm9ybWF0XG4gIGNvbnN0IHJnYk1hdGNoID0gY29sb3IubWF0Y2goL3JnYlxcKFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqXFwpLyk7XG4gIGlmIChyZ2JNYXRjaCkge1xuICAgIHJldHVybiBbXG4gICAgICBwYXJzZUludChyZ2JNYXRjaFsxXSwgMTApLFxuICAgICAgcGFyc2VJbnQocmdiTWF0Y2hbMl0sIDEwKSxcbiAgICAgIHBhcnNlSW50KHJnYk1hdGNoWzNdLCAxMClcbiAgICBdIGFzIFJHQkNvbG9yO1xuICB9XG5cbiAgLy8gSGFuZGxlIGhleCBmb3JtYXRcbiAgY29uc3QgaGV4TWF0Y2ggPSBjb2xvci5tYXRjaCgvXiMoWzAtOWEtZl17Nn0pJC9pKTtcbiAgaWYgKGhleE1hdGNoKSB7XG4gICAgY29uc3QgaGV4ID0gaGV4TWF0Y2hbMV07XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KGhleC5zbGljZSgwLCAyKSwgMTYpLFxuICAgICAgcGFyc2VJbnQoaGV4LnNsaWNlKDIsIDQpLCAxNiksXG4gICAgICBwYXJzZUludChoZXguc2xpY2UoNCwgNiksIDE2KVxuICAgIF0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZmluZEZpcnN0TGF5ZXJCeUdyb3VwKGxheWVyczogYW55W10sIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10sIGdyb3VwU2x1Zzogc3RyaW5nKSB7XG4gIGNvbnN0IGxheWVyR3JvdXAgPSBsYXllckdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLnNsdWcgPT09IGdyb3VwU2x1Zyk7XG4gIGlmICghbGF5ZXJHcm91cCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBsYXllcnMuZmluZChsYXllciA9PiBsYXllckdyb3VwLmZpbHRlcihsYXllcikpO1xufVxuXG5mdW5jdGlvbiBmaW5kQmFja2dyb3VuZENvbG9yKHN0eWxlOiBhbnkpOiBSR0JDb2xvciB8IG51bGwge1xuICBsZXQgZm91bmQgPSBzdHlsZS5sYXllcnMuZmluZCgobDogYW55KSA9PiBsLmlkID09PSAnYmFja2dyb3VuZCcgfHwgbC5pZCA9PT0gJ2xhbmQnKTtcbiAgZm91bmQgPSBmb3VuZCB8fCBzdHlsZS5sYXllcnMuZmluZCgobDogYW55KSA9PiBsLnR5cGUgPT09ICdiYWNrZ3JvdW5kJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGdldFBhaW50Q29sb3IoZm91bmQ/LnBhaW50Py5bJ2JhY2tncm91bmQtY29sb3InXSkpO1xufVxuXG5mdW5jdGlvbiBmaW5kV2F0ZXJDb2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgY29uc3QgZm91bmQgPVxuICAgIHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwuaWQgPT09ICd3YXRlcicpIHx8XG4gICAgZmluZEZpcnN0TGF5ZXJCeUdyb3VwKHN0eWxlLmxheWVycywgbGF5ZXJHcm91cHMsICd3YXRlcicpO1xuICByZXR1cm4gY29sb3JTdHJpbmdUb1JHQihmb3VuZD8ucGFpbnQ/LlsnZmlsbC1jb2xvciddKTtcbn1cblxuZnVuY3Rpb24gZmluZEFkbWluQ29sb3Ioc3R5bGU6IGFueSwgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXSk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGNvbnN0IGJvcmRlckxheWVycyA9XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGx5cjogYW55KSA9PiBseXIuaWQgPT09ICdhZG1pbi0zLTQtYm91bmRhcmllcycpIHx8XG4gICAgZmluZEZpcnN0TGF5ZXJCeUdyb3VwKHN0eWxlLmxheWVycywgbGF5ZXJHcm91cHMsICdib3JkZXInKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IoYm9yZGVyTGF5ZXJzPy5wYWludD8uWydsaW5lLWNvbG9yJ10pO1xufVxuXG5mdW5jdGlvbiBmaW5kTGFiZWxDb2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgbGV0IGxhYmVsTGF5ZXIgPSBzdHlsZS5sYXllcnMuZmluZChcbiAgICAobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2NvdW50cnktbGFiZWwtbGcnICYmIGx5ci50eXBlID09PSAnc3ltYm9sJ1xuICApO1xuICBsYWJlbExheWVyID1cbiAgICBsYWJlbExheWVyIHx8XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGx5cjogYW55KSA9PiBseXIuaWQgPT09ICdjb3VudHJ5LWxhYmVsJyAmJiBseXIudHlwZSA9PT0gJ3N5bWJvbCcpO1xuICBsYWJlbExheWVyID0gbGFiZWxMYXllciB8fCBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ2xhYmVsJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGxhYmVsTGF5ZXI/LnBhaW50Py5bJ3RleHQtY29sb3InXSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRCYXNlbWFwQ29sb3JzID0gKFxuICBtYXBTdHlsZTogUGFydGlhbDx7c3R5bGU6IGFueTsgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXX0+XG4pOiB7XG4gIGJhY2tncm91bmRGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwTGFiZWxDb2xvcjogUkdCQ29sb3I7XG59ID0+IHtcbiAgY29uc3Qge3N0eWxlOiBzdHlsZUpzb24gPSB7bGF5ZXJzOiBbXX0sIGxheWVyR3JvdXBzID0gW119ID0gbWFwU3R5bGU7XG5cbiAgcmV0dXJuIHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOlxuICAgICAgZmluZEJhY2tncm91bmRDb2xvcihzdHlsZUpzb24pID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYWNrZ3JvdW5kRmlsbENvbG9yLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjpcbiAgICAgIGZpbmRXYXRlckNvbG9yKHN0eWxlSnNvbiwgbGF5ZXJHcm91cHMpID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwV2F0ZXJGaWxsQ29sb3IsXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOlxuICAgICAgZmluZEFkbWluQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBBZG1pbkxpbmVDb2xvcixcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjpcbiAgICAgIGZpbmRMYWJlbENvbG9yKHN0eWxlSnNvbiwgbGF5ZXJHcm91cHMpID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwTGFiZWxDb2xvclxuICB9O1xufTtcblxuLy8gUHJlZGVmaW5lZCBjb2xvciBzY2hlbWVzIGZvciB3ZWxsLWtub3duIGJhc2VtYXAgc3R5bGVzXG5jb25zdCBLTk9XTl9TVFlMRV9DT0xPUlM6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogUkdCQ29sb3I7XG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBSR0JDb2xvcjtcbiAgfVxuPiA9IHtcbiAgZGFyazoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsxNSwgMTUsIDE1XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxMCwgMjAsIDM1XSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs2MCwgNjAsIDgwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzE1MCwgMTUwLCAxNTBdXG4gIH0sXG4gICdkYXJrLW1hdHRlcic6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMTgsIDE4LCAxOF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTQsIDE5LCAyOV0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbNTAsIDUwLCA2MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFsxMzAsIDEzMCwgMTMwXVxuICB9LFxuICBsaWdodDoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMzUsIDIzMywgMjI4XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNzAsIDIxMSwgMjIzXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFsxODAsIDE3NSwgMTcwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzgwLCA4MCwgODBdXG4gIH0sXG4gIHBvc2l0cm9uOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzI0MiwgMjM5LCAyMzNdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3NCwgMjA5LCAyMjBdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE5MCwgMTg1LCAxODBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbOTAsIDkwLCA5MF1cbiAgfSxcbiAgdm95YWdlcjoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMzQsIDIyOSwgMjIwXSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNzAsIDIxMSwgMjIzXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFsxODAsIDE3MCwgMTYwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzcwLCA3MCwgNzBdXG4gIH0sXG4gIG11dGVkOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIyNSwgMjI1LCAyMThdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE4MCwgMjEwLCAyMjBdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE3MCwgMTY1LCAxNjBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbOTAsIDkwLCA5MF1cbiAgfSxcbiAgbXV0ZWRfbmlnaHQ6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjIsIDI2LCAzMF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTUsIDI1LCA0MF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbNTUsIDYwLCA3MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFsxNDAsIDE0MCwgMTQwXVxuICB9XG59O1xuXG4vKipcbiAqIEdldCBiYXNlbWFwIGNvbG9ycyBlaXRoZXIgZnJvbSB0aGUgc3R5bGUgSlNPTiBvciBmcm9tIGtub3duIHN0eWxlIHByZXNldHMuXG4gKiBGYWxscyBiYWNrIHRvIGRlZmF1bHQgZGFyayBjb2xvcnMgaWYgc3R5bGUgaXMgdW5rbm93biBhbmQgbm8gSlNPTiBpcyBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUgPSAoXG4gIHN0eWxlVHlwZTogc3RyaW5nLFxuICBtYXBTdHlsZT86IFBhcnRpYWw8e3N0eWxlOiBhbnk7IGxheWVyR3JvdXBzOiBMYXllckdyb3VwW119PlxuKToge1xuICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcExhYmVsQ29sb3I6IFJHQkNvbG9yO1xufSA9PiB7XG4gIC8vIFRyeSB0byBleHRyYWN0IGZyb20gc3R5bGUgSlNPTiBmaXJzdFxuICBpZiAobWFwU3R5bGU/LnN0eWxlPy5sYXllcnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBnZXRCYXNlbWFwQ29sb3JzKG1hcFN0eWxlKTtcbiAgfVxuICAvLyBGYWxsIGJhY2sgdG8ga25vd24gc3R5bGUgcHJlc2V0c1xuICBpZiAoS05PV05fU1RZTEVfQ09MT1JTW3N0eWxlVHlwZV0pIHtcbiAgICByZXR1cm4gS05PV05fU1RZTEVfQ09MT1JTW3N0eWxlVHlwZV07XG4gIH1cbiAgLy8gRGVmYXVsdCBkYXJrIGNvbG9yc1xuICByZXR1cm4ge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYWNrZ3JvdW5kRmlsbENvbG9yLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBXYXRlckZpbGxDb2xvcixcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwQWRtaW5MaW5lQ29sb3IsXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwTGFiZWxDb2xvclxuICB9O1xufTtcblxuLyoqXG4gKiBDbGVhciBjb2xvciAoYmFja2dyb3VuZCBhcm91bmQgdGhlIGdsb2JlKSBmb3IgZ2xvYmUgbW9kZSwgaW4gUkdCQSAwLTI1NSBhc1xuICogZXhwZWN0ZWQgYnkgZGVjay5nbCdzIFZpZXcgYGNsZWFyQ29sb3JgIHByb3AgKGRlY2suZ2wgPj0gOSBubyBsb25nZXIgc3VwcG9ydHNcbiAqIHRoZSBnbG9iYWwgYHBhcmFtZXRlcnMuY2xlYXJDb2xvcmA7IGl0IG11c3QgYmUgc2V0IHBlci12aWV3IHdpdGggYGNsZWFyOiB0cnVlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iZUNsZWFyQ29sb3IoXG4gIGJhY2tncm91bmRDb2xvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bWJlcltdXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICByZXR1cm4gW2JhY2tncm91bmRDb2xvclswXSwgYmFja2dyb3VuZENvbG9yWzFdLCBiYWNrZ3JvdW5kQ29sb3JbMl0sIDI1NV07XG4gIH1cbiAgLy8gRGVmYXVsdCBtYXRjaGVzIHRoZSBwcmV2aW91cyBoYXJkY29kZWQgY2xlYXIgY29sb3IgWzAuMDE1LCAwLjAzNSwgMC4wNjVdIGluIDAtMSBzcGFjZS5cbiAgcmV0dXJuIFs0LCA5LCAxNywgMjU1XTtcbn1cblxuY29uc3QgSU5WSVNJQkxFX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwLCAwXTtcblxuY29uc3QgQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyA9IHtcbiAgLy8gT2NjbHVkZSB0aGUgZmFyIHNpZGUgb2YgdGhlIGdsb2JlIHZpYSB0aGUgREVQVEggRElTSyAoZ2V0R2xvYmVEZXB0aERpc2tMYXllcilcbiAgLy8gcmF0aGVyIHRoYW4gYmFjay1mYWNlIGN1bGxpbmcuIEdsb2JlIG1vZGUgc2V0cyBhIGdsb2JhbCBgY3VsbDogdHJ1ZWAgZm9yIHRoZVxuICAvLyBvcGFxdWUgc3BoZXJlIHN1cmZhY2UsIGJ1dCBiYWNrLWZhY2UgY3VsbGluZyByZWxpZXMgb24gc3RhYmxlIHRyaWFuZ2xlXG4gIC8vIHdpbmRpbmcg4oCUIGFuZCBkZWNrLmdsIDkncyBnbG9iZSBwcm9qZWN0aW9uIGxvc2VzIHByZWNpc2lvbiBhdCBoaWdoIHpvb21cbiAgLy8gKGZsb2F0MzIpLCBmbGlwcGluZyB0aGUgd2luZGluZyBvZiB0aGUgc21hbGwgYWRtaW4vd2F0ZXIgdHJpYW5nbGVzIHNvIHRoZXlcbiAgLy8gZ2V0IHdyb25nbHkgY3VsbGVkIGFuZCB0aGUgZ2VvbWV0cnkgdmFuaXNoZXMgcGFzdCB+em9vbSAxMiAoeW91IHRoZW4gc2VlXG4gIC8vIHRocm91Z2ggdG8gdGhlIGZhciBzaWRlIC8gXCJkaWZmZXJlbnQgZ2VvbWV0cnlcIikuIERlcHRoIHRlc3RpbmcgYWdhaW5zdCB0aGUgZGlza1xuICAvLyBpcyBhIHByZWNpc2lvbi1yb2J1c3Qgb2NjbHVkZXIgdGhhdCB3b3JrcyBhdCBhbnkgem9vbSwgc286XG4gIC8vICAgLSBjdWxsOiBmYWxzZSAgICAg4oaSIGRvbid0IHdpbmRpbmctY3VsbCB0aGUgbmVhci1zaWRlIGdlb21ldHJ5XG4gIC8vICAgLSBkZXB0aFRlc3Q6IHRydWUg4oaSIGZhci1zaWRlIGdlb21ldHJ5IChiZWhpbmQgdGhlIGRpc2spIGZhaWxzIGRlcHRoLCBoaWRkZW5cbiAgLy8gICAtIGRlcHRoTWFzazogZmFsc2Ug4oaSIGRvbid0IHdyaXRlIGRlcHRoIChhdm9pZCBzZWxmIHotZmlnaHRpbmcgb24gdGhlIHNoZWxsKVxuICAvLyBSYXN0ZXIgdGlsZXMgYXJlIHVuYWZmZWN0ZWQgKHRoZWlyIDQtY29ybmVyIHF1YWRzIGtlZXAgc3RhYmxlIHdpbmRpbmcpLCB3aGljaFxuICAvLyBpcyB3aHkgc2F0ZWxsaXRlIGFscmVhZHkgem9vbXMgdG8gbWF4IGNsZWFubHkuIExhYmVscyBkaXNhYmxlIGN1bGwgZm9yIHRoZVxuICAvLyBzYW1lIHJlYXNvbiAoc2VlIG12dC1sYWJlbC1sYXllci50cykuXG4gIGRlcHRoVGVzdDogdHJ1ZSxcbiAgZGVwdGhNYXNrOiBmYWxzZSxcbiAgY3VsbDogZmFsc2Vcbn07XG5cbi8vIGRlY2suZ2wgOSdzIGdsb2JlIHNlbGVjdHMgZmluZXIgdGlsZXMgdGhhbiBuZWVkZWQgZm9yIGEgZ2l2ZW4gdmlldyAoaXRzXG4vLyBHbG9iZVZpZXdwb3J0IHNjYWxlIGlzIH4zeCBzbWFsbGVyIHRoYW4gdGhlIGVxdWl2YWxlbnQgbWVyY2F0b3Igem9vbSksIHNvIGJpYXNcbi8vIHZlY3RvciB0aWxlIHNlbGVjdGlvbiBjb2Fyc2VyIHRvIGtlZXAgdGhlIHRpbGUgY291bnQg4oCUIGFuZCB0aHVzIHBlcmZvcm1hbmNlIOKAlFxuLy8gaW4gY2hlY2suIFRoaXMgdHJhZGVzIGEgbGl0dGxlIGRldGFpbCBmb3IgZmFyIGZld2VyIHRpbGVzOyBtYWtlIGl0IGxlc3MgbmVnYXRpdmVcbi8vICh0b3dhcmQgMCkgZm9yIHNoYXJwZXIgZGV0YWlsLCBvciBtb3JlIG5lZ2F0aXZlIGZvciBtb3JlIHBlcmYuXG4vLyBUaGVzZSBhcmUgKmJhc2UqIG9mZnNldHM6IGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uIGlzIGFkZGVkIG9uIHRvcCBhdCBkcmF3XG4vLyB0aW1lLCBzbyB0aGUgZWZmZWN0aXZlIHpvb21PZmZzZXQgb25seSBlcXVhbHMgdGhlc2UgZXhhY3QgdmFsdWVzIGF0IHRoZSBlcXVhdG9yLlxuLy8gU2F0ZWxsaXRlIHJhc3RlciB1c2VzIGJhc2UgMCDigJQgaXQgZG9lc24ndCBuZWVkIHRoZSB2ZWN0b3IgYmlhcyAoYSBjb2Fyc2VyIHJhc3RlclxuLy8gdGlsZSBqdXN0IGxvb2tzIHNvZnRlciByYXRoZXIgdGhhbiBkcm9wcGluZyBmZWF0dXJlcykuXG5jb25zdCBNQVBCT1hfR0xPQkVfVkVDVE9SX1pPT01fT0ZGU0VUID0gLTI7XG5jb25zdCBDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgPSAtMjtcbmNvbnN0IEdMT0JFX1NBVEVMTElURV9aT09NX09GRlNFVCA9IDA7XG5cbi8vIFdob2xlLXdvcmxkIHRpbGUgZXh0ZW50IChXZWIgTWVyY2F0b3IgbGF0aXR1ZGUgbGltaXQpLiBSZXF1aXJlZCB3aGVuZXZlciBhXG4vLyBuZWdhdGl2ZSBgem9vbU9mZnNldGAgaXMgdXNlZDogZGVjaydzIGBnZXRUaWxlSW5kaWNlc2AgcmV0dXJucyBOTyB0aWxlcyB3aGVuXG4vLyB0aGUgdGFyZ2V0IHpvb20gZHJvcHMgYmVsb3cgYG1pblpvb21gICp1bmxlc3MqIGFuIGBleHRlbnRgIGlzIHNldCAoaW4gd2hpY2hcbi8vIGNhc2UgaXQgY2xhbXBzIHRvIGBtaW5ab29tYCBpbnN0ZWFkKS4gV2l0aG91dCB0aGlzLCB6b29taW5nIG91dCBvciBwYW5uaW5nXG4vLyB0b3dhcmQgdGhlIHBvbGVzICh3aGVyZSBkZWNrIDkncyBnbG9iZSBjb250cm9sbGVyIGxvd2VycyB0aGUgZWZmZWN0aXZlIHpvb20pXG4vLyBtYWtlcyB0aGUgd2hvbGUgZ2xvYmUgYmFzZW1hcCBkaXNhcHBlYXIuXG5jb25zdCBHTE9CRV9USUxFX0VYVEVOVDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbXG4gIC0xODAsIC04NS4wNTExMjksIDE4MCwgODUuMDUxMTI5XG5dO1xuXG4vLyBNYXggKm5hdGl2ZSogem9vbSBvZiBlYWNoIHZlY3RvciB0aWxlIHNvdXJjZS4gU2V0IHRoaXMgKG5vdCBhbiBhcmJpdHJhcmlseVxuLy8gaGlnaCBudW1iZXIpIHNvIGRlY2sgb3Zlcnpvb21zIOKAlCBpLmUuIGtlZXBzIHJlbmRlcmluZyB0aGUgZGVlcGVzdCByZWFsIHRpbGVcbi8vIHdoZW4gdGhlIHZpZXcgem9vbXMgcGFzdCBpdCDigJQgaW5zdGVhZCBvZiByZXF1ZXN0aW5nIHRpbGVzIHRoYXQgZG9uJ3QgZXhpc3Rcbi8vIGFuZCA0MDQgKHdoaWNoIHNob3dzIHVwIGFzIGVtcHR5IHJlY3RhbmdsZXMpLiBUaGUgcmF3IGAudmVjdG9yLnBiZmAgL2AubXZ0YFxuLy8gZW5kcG9pbnRzIGRvIE5PVCBhdXRvLW92ZXJ6b29tIHRoZSB3YXkgTWFwYm94IEdMIGRvZXMuXG4vLyAgIC0gbWFwYm94LXN0cmVldHMtdjggaGFzIGRhdGEgdXAgdG8gejE2XG4vLyAgIC0gQ0FSVE8gY2FydG8uc3RyZWV0cyB2MSBoYXMgZGF0YSB1cCB0byB6MTRcbmNvbnN0IE1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSA9IDE2O1xuY29uc3QgQ0FSVE9fVkVDVE9SX01BWF9EQVRBX1pPT00gPSAxNDtcblxuLyoqXG4gKiBkZWNrLmdsIDkncyBnbG9iZSBjb3VwbGVzIHpvb20gdG8gbGF0aXR1ZGUgdmlhIGB6b29tQWRqdXN0YCAoc2VlXG4gKiBnbG9iZS12aWV3cG9ydC5qcyk6IGBzY2FsZSA9IDJeKHpvb20gLSB6b29tQWRqdXN0KGxhdCkpYCwgYW5kIGl0cyBjb250cm9sbGVyXG4gKiAqbG93ZXJzKiB0aGUgc3RvcmVkIGB6b29tYCBhcyB5b3UgcGFuIHRvd2FyZCB0aGUgcG9sZXMgdG8ga2VlcCB0aGUgZ2xvYmUnc1xuICogb24tc2NyZWVuIHNpemUgY29uc3RhbnQuIFRpbGUgTE9ELCBob3dldmVyLCBpcyBzZWxlY3RlZCBmcm9tIHRoZSByYXcgYHpvb21gLFxuICogc28gcm90YXRpbmcgdG93YXJkIGEgcG9sZSBzaWxlbnRseSBkcm9wcyB0aGUgTE9EIGFuZCB0aGlucyBvdXQgbGFiZWxzLlxuICogUmVwbGljYXRlZCBmcm9tIGBAZGVjay5nbC9jb3JlYCBnbG9iZS12aWV3cG9ydC5qcyBgem9vbUFkanVzdGAuXG4gKi9cbmZ1bmN0aW9uIHpvb21BZGp1c3QobGF0aXR1ZGU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmxvZzIoTWF0aC5QSSAqIE1hdGguY29zKChsYXRpdHVkZSAqIE1hdGguUEkpIC8gMTgwKSk7XG59XG5cbi8qKlxuICogTGF0aXR1ZGUgY29tcGVuc2F0aW9uIHRvIGFkZCB0byBhIGdsb2JlIHRpbGUgbGF5ZXIncyBgem9vbU9mZnNldGAsIHNvIHRpbGUgTE9EXG4gKiB0cmFja3MgdGhlICp2aXN1YWwqIChvbi1zY3JlZW4pIHNjYWxlIGluc3RlYWQgb2YgdGhlIGxhdGl0dWRlLWFkanVzdGVkIG1lcmNhdG9yXG4gKiB6b29tLiBUaGlzIGNhbmNlbHMgdGhlIHBhbi1pbmR1Y2VkIHpvb20gZHJvcCwga2VlcGluZyB0aWxlIGRldGFpbC9sYWJlbHNcbiAqIGNvbnN0YW50IHdoaWxlIHJvdGF0aW5nIHRvd2FyZCB0aGUgcG9sZXMuXG4gKi9cbmZ1bmN0aW9uIGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uKGxhdGl0dWRlPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGxhdGl0dWRlID09IG51bGwgfHwgIU51bWJlci5pc0Zpbml0ZShsYXRpdHVkZSkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICAvLyBDbGFtcCBhd2F5IGZyb20gdGhlIHBvbGVzIHRvIGF2b2lkIGxvZzIoMCkgPSAtSW5maW5pdHkgYXQgfGxhdHwgPSA5MC5cbiAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KC04NSwgTWF0aC5taW4oODUsIGxhdGl0dWRlKSk7XG4gIHJldHVybiB6b29tQWRqdXN0KDApIC0gem9vbUFkanVzdChjbGFtcGVkKTtcbn1cblxuLyoqXG4gKiBHbG9iZSBiYXNlbWFwIHRpbGUgcHJvdmlkZXIuXG4gKlxuICogLSBgbWFwYm94YCB1c2VzIE1hcGJveCB2ZWN0b3IvcmFzdGVyIHRpbGVzIGFuZCByZXF1aXJlcyBhbiBhY2Nlc3MgdG9rZW4uXG4gKiAtIGBjYXJ0b2AgdXNlcyBDQVJUTydzIGZyZWUgT3Blbk1hcFRpbGVzIHZlY3RvciB0aWxlcyArIEVzcmkgV29ybGQgSW1hZ2VyeVxuICogICByYXN0ZXIsIGFuZCBuZWVkcyBubyB0b2tlbi4gVXNlZCBhcyBhbiBhdXRvbWF0aWMgZmFsbGJhY2sgd2hlbiBubyBNYXBib3hcbiAqICAgdG9rZW4gaXMgYXZhaWxhYmxlIChlLmcuIE1hcExpYnJlIC8gQ0FSVE8gYmFzZW1hcCBzZXR1cHMpLCBzbyB0aGUgZ2xvYmVcbiAqICAgYmFzZW1hcCBzdGlsbCByZW5kZXJzIGluc3RlYWQgb2Ygc2hvd2luZyBhIHNvbGlkLWNvbG9yIHNwaGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2xvYmVCYXNlbWFwUHJvdmlkZXIgPSAnbWFwYm94JyB8ICdjYXJ0byc7XG5cbi8qKlxuICogUmVzb2x2ZSB3aGljaCBnbG9iZSBiYXNlbWFwIHRpbGUgcHJvdmlkZXIgdG8gdXNlLlxuICpcbiAqIFRoZSBnbG9iZSBzaG91bGQgZm9sbG93IHRoZSAqc2VsZWN0ZWQgYmFzZW1hcCBzdHlsZSdzKiByZW5kZXJpbmcgbGlicmFyeSBzb1xuICogaXQgc3RheXMgY29uc2lzdGVudCB3aXRoIHRoZSBmbGF0IDJEIG1hcDogYSBNYXBMaWJyZS9DQVJUTyBzdHlsZSB1c2VzIHRoZVxuICogZnJlZSBDQVJUTyB0aWxlcyAoZXZlbiB3aGVuIGEgTWFwYm94IHRva2VuIGlzIGF2YWlsYWJsZSksIGFuZCBhIE1hcGJveCBzdHlsZVxuICogdXNlcyBNYXBib3ggdGlsZXMuIEEgTWFwYm94IHN0eWxlIHdpdGggbm8gdG9rZW4gZmFsbHMgYmFjayB0byBDQVJUTyBzbyB0aGVcbiAqIGdsb2JlIHN0aWxsIHJlbmRlcnMgaW5zdGVhZCBvZiBzaG93aW5nIGEgYmFyZSBjb2xvcmVkIHNwaGVyZS5cbiAqXG4gKiBAcGFyYW0gYmFzZU1hcExpYnJhcnkgdGhlIHNlbGVjdGVkIHN0eWxlJ3MgbGlicmFyeSAoJ21hcGJveCcgfCAnbWFwbGlicmUnKSxcbiAqICAgZS5nLiBmcm9tIGBnZXRCYXNlTWFwTGlicmFyeShjdXJyZW50U3R5bGUpYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlciA9IChcbiAgYmFzZU1hcExpYnJhcnk6ICdtYXBib3gnIHwgJ21hcGxpYnJlJyB8IHVuZGVmaW5lZCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmdcbik6IEdsb2JlQmFzZW1hcFByb3ZpZGVyID0+IHtcbiAgaWYgKGJhc2VNYXBMaWJyYXJ5ID09PSAnbWFwbGlicmUnKSB7XG4gICAgcmV0dXJuICdjYXJ0byc7XG4gIH1cbiAgaWYgKGJhc2VNYXBMaWJyYXJ5ID09PSAnbWFwYm94Jykge1xuICAgIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/ICdtYXBib3gnIDogJ2NhcnRvJztcbiAgfVxuICAvLyBVbmtub3duIGxpYnJhcnk6IHByZWZlciBNYXBib3ggd2hlbiBhIHRva2VuIGV4aXN0cywgb3RoZXJ3aXNlIENBUlRPLlxuICByZXR1cm4gbWFwYm94QXBpQWNjZXNzVG9rZW4gPyAnbWFwYm94JyA6ICdjYXJ0byc7XG59O1xuXG4vLyBDQVJUTyBmcmVlIHZlY3RvciB0aWxlcyAoT3Blbk1hcFRpbGVzIHNjaGVtYSwgbm8gQVBJIGtleSByZXF1aXJlZCkuXG5jb25zdCBDQVJUT19WRUNUT1JfVElMRV9VUkxTID0gW1xuICAnaHR0cHM6Ly90aWxlcy1hLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCcsXG4gICdodHRwczovL3RpbGVzLWIuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0JyxcbiAgJ2h0dHBzOi8vdGlsZXMtYy5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vdmVjdG9ydGlsZXMvY2FydG8uc3RyZWV0cy92MS97en0ve3h9L3t5fS5tdnQnLFxuICAnaHR0cHM6Ly90aWxlcy1kLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCdcbl07XG5cbi8vIEZyZWUgc2F0ZWxsaXRlIHJhc3RlciBmYWxsYmFjayAoRXNyaSBXb3JsZCBJbWFnZXJ5LCBubyBBUEkga2V5IHJlcXVpcmVkKS5cbmNvbnN0IEVTUklfV09STERfSU1BR0VSWV9VUkwgPVxuICAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JztcblxuLyoqXG4gKiBNYXBzIGEgcmF3IE1WVCBzb3VyY2UtbGF5ZXIgbmFtZSB0byBhIG5vcm1hbGl6ZWQgc2VtYW50aWMgbGF5ZXIga2luZCwgc28gdGhlXG4gKiBmaWxsL2xpbmUvbGFiZWwgYWNjZXNzb3JzIHdvcmsgYWNyb3NzIGJvdGggdGhlIE1hcGJveCAoYG1hcGJveC1zdHJlZXRzLXY4YClcbiAqIGFuZCBDQVJUTy9PcGVuTWFwVGlsZXMgc2NoZW1hcy5cbiAqXG4gKiB8IHNlbWFudGljIHwgbWFwYm94ICAgICAgICB8IG9wZW5tYXB0aWxlcyB8XG4gKiB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLSB8XG4gKiB8IHdhdGVyICAgIHwgYHdhdGVyYCAgICAgICB8IGB3YXRlcmAgICAgICB8XG4gKiB8IGFkbWluICAgIHwgYGFkbWluYCAgICAgICB8IGBib3VuZGFyeWAgICB8XG4gKiB8IGxhYmVsICAgIHwgYHBsYWNlX2xhYmVsYCB8IGBwbGFjZWAgICAgICB8XG4gKi9cbnR5cGUgQmFzZW1hcExheWVyS2luZCA9ICd3YXRlcicgfCAnYWRtaW4nIHwgJ2xhYmVsJyB8ICdvdGhlcic7XG5cbmZ1bmN0aW9uIGdldEJhc2VtYXBMYXllcktpbmQobGF5ZXJOYW1lPzogc3RyaW5nKTogQmFzZW1hcExheWVyS2luZCB7XG4gIHN3aXRjaCAobGF5ZXJOYW1lKSB7XG4gICAgY2FzZSAnd2F0ZXInOlxuICAgICAgcmV0dXJuICd3YXRlcic7XG4gICAgY2FzZSAnYWRtaW4nOlxuICAgIGNhc2UgJ2JvdW5kYXJ5JzpcbiAgICAgIHJldHVybiAnYWRtaW4nO1xuICAgIGNhc2UgJ3BsYWNlX2xhYmVsJzpcbiAgICBjYXNlICdwbGFjZSc6XG4gICAgICByZXR1cm4gJ2xhYmVsJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdvdGhlcic7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgR2xvYmVBdHRyaWJ1dGlvbiA9IHtsYWJlbDogc3RyaW5nOyBocmVmOiBzdHJpbmd9O1xuXG5jb25zdCBNQVBCT1hfQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgTWFwYm94JyxcbiAgaHJlZjogJ2h0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy8nXG59O1xuY29uc3QgT1NNX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ8KpIE9wZW5TdHJlZXRNYXAnLFxuICBocmVmOiAnaHR0cHM6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0J1xufTtcbmNvbnN0IENBUlRPX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ8KpIENBUlRPJyxcbiAgaHJlZjogJ2h0dHBzOi8vY2FydG8uY29tL2F0dHJpYnV0aW9ucydcbn07XG5jb25zdCBFU1JJX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ1Bvd2VyZWQgYnkgRXNyaScsXG4gIGhyZWY6ICdodHRwczovL3d3dy5lc3JpLmNvbS8nXG59O1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIHRpbGUtc291cmNlIGF0dHJpYnV0aW9uIGVudHJpZXMgZm9yIHRoZSBnbG9iZSBiYXNlbWFwLiBkZWNrLmdsXG4gKiByZW5kZXJzIHRoZSBnbG9iZSBiYXNlbWFwIHRpbGVzIGl0c2VsZiAobm90IHRoZSBiYXNlIE1hcGxpYnJlL01hcGJveCBtYXApLCBzb1xuICogdGhlIGJhc2UgbWFwJ3MgYXR0cmlidXRpb24gbWFjaGluZXJ5IG5ldmVyIHNlZXMgdGhlbS4gVGhpcyBsZXRzIHRoZSBVSSBjcmVkaXRcbiAqIHRoZSBhY3R1YWwgdGlsZSBwcm92aWRlcihzKSBpbiBnbG9iZSBtb2RlLlxuICovXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zID0gKHtcbiAgZ2xvYmUsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBTdHlsZVR5cGUsXG4gIGJhc2VtYXBQcm92aWRlclxufToge1xuICBnbG9iZT86IEdsb2JlO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgbWFwU3R5bGVUeXBlPzogc3RyaW5nO1xuICBiYXNlbWFwUHJvdmlkZXI/OiBHbG9iZUJhc2VtYXBQcm92aWRlcjtcbn0pOiBHbG9iZUF0dHJpYnV0aW9uW10gPT4ge1xuICBpZiAoIWdsb2JlPy5lbmFibGVkIHx8ICFnbG9iZS5jb25maWc/LmJhc2VtYXApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwcm92aWRlcjogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPVxuICAgIGJhc2VtYXBQcm92aWRlciA/PyByZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIodW5kZWZpbmVkLCBtYXBib3hBcGlBY2Nlc3NUb2tlbik7XG5cbiAgaWYgKHByb3ZpZGVyID09PSAnbWFwYm94Jykge1xuICAgIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/IFtNQVBCT1hfQVRUUklCVVRJT04sIE9TTV9BVFRSSUJVVElPTl0gOiBbXTtcbiAgfVxuXG4gIGNvbnN0IGlzU2F0ZWxsaXRlID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlJyB8fCBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUtc3RyZWV0JztcbiAgLy8gQ0FSVE8gdmVjdG9yIHRpbGVzIGFyZSBPcGVuU3RyZWV0TWFwLWRlcml2ZWQ7IEVzcmkgaW1hZ2VyeSBpcyBjcmVkaXRlZCBzZXBhcmF0ZWx5LlxuICByZXR1cm4gaXNTYXRlbGxpdGVcbiAgICA/IFtFU1JJX0FUVFJJQlVUSU9OLCBDQVJUT19BVFRSSUJVVElPTiwgT1NNX0FUVFJJQlVUSU9OXVxuICAgIDogW0NBUlRPX0FUVFJJQlVUSU9OLCBPU01fQVRUUklCVVRJT05dO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBjb25zdCBnZXRHbG9iZUJhc2VMYXllcnMgPSAoe1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgZ2xvYmUsXG4gIG1hcFN0eWxlVHlwZSxcbiAgYmFzZW1hcFByb3ZpZGVyLFxuICBsYXRpdHVkZSxcbiAgem9vbVxufToge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBnbG9iZTogR2xvYmU7XG4gIG1hcFN0eWxlVHlwZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoaWNoIHRpbGUgcHJvdmlkZXIgdG8gdXNlIGZvciB0aGUgZ2xvYmUgYmFzZW1hcC4gRGVmYXVsdHMgdG8gYG1hcGJveGAgd2hlblxuICAgKiBhIHRva2VuIGlzIHByZXNlbnQsIG90aGVyd2lzZSBmYWxscyBiYWNrIHRvIHRoZSB0b2tlbi1mcmVlIGBjYXJ0b2AgdGlsZXMuXG4gICAqL1xuICBiYXNlbWFwUHJvdmlkZXI/OiBHbG9iZUJhc2VtYXBQcm92aWRlcjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2FtZXJhIGNlbnRlciBsYXRpdHVkZS4gVXNlZCB0byBrZWVwIHRpbGUgTE9EIGNvbnN0YW50IHdoaWxlIHJvdGF0aW5nXG4gICAqIHRvd2FyZCB0aGUgcG9sZXMgKGRlY2suZ2wgOSBsb3dlcnMgdGhlIGVmZmVjdGl2ZSB6b29tIG5lYXIgdGhlIHBvbGVzKS4gV2hlblxuICAgKiBvbWl0dGVkLCBubyBsYXRpdHVkZSBjb21wZW5zYXRpb24gaXMgYXBwbGllZCAoZXF1YXRvciBiZWhhdmlvcikuXG4gICAqL1xuICBsYXRpdHVkZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgbWFwIHpvb20gbGV2ZWwuIFVzZWQgdG8gZmFkZSB0aGUgYXRtb3NwaGVyZSBlZmZlY3RzIG91dCB3aGVuIHRoZSB1c2VyXG4gICAqIHpvb21zIGluIHBhc3QgYSBjZXJ0YWluIHRocmVzaG9sZCAobWlycm9ycyBHb29nbGUgTWFwcyBnbG9iZSBiZWhhdmlvdXIpLlxuICAgKi9cbiAgem9vbT86IG51bWJlcjtcbn0pOiBMYXllcltdID0+IHtcbiAgY29uc3Qge2NvbmZpZ30gPSBnbG9iZTtcblxuICBjb25zdCBpc1NhdGVsbGl0ZSA9IG1hcFN0eWxlVHlwZSA9PT0gJ3NhdGVsbGl0ZSc7XG4gIGNvbnN0IGlzU2F0ZWxsaXRlU3RyZWV0ID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlLXN0cmVldCc7XG5cbiAgY29uc3QgbGF0Wm9vbUNvbXBlbnNhdGlvbiA9IGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uKGxhdGl0dWRlKTtcblxuICAvLyBGYWxsIGJhY2sgdG8gdGhlIGZyZWUgQ0FSVE8gdGlsZXMgd2hlbmV2ZXIgbm8gTWFwYm94IHRva2VuIGlzIGF2YWlsYWJsZSBzb1xuICAvLyB0aGUgZ2xvYmUgYmFzZW1hcCBzdGlsbCByZW5kZXJzIChtYXRjaGVzIGtlcGxlcidzIGRlZmF1bHQgdG9rZW4tZnJlZVxuICAvLyBNYXBMaWJyZS9DQVJUTyBiYXNlbWFwcykuIENhbGxlcnMgc2hvdWxkIHBhc3MgYW4gZXhwbGljaXQgYGJhc2VtYXBQcm92aWRlcmBcbiAgLy8gKGRlcml2ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgc3R5bGUpIHNvIHRoZSBnbG9iZSBmb2xsb3dzIHRoZSAyRCBiYXNlbWFwLlxuICBjb25zdCBwcm92aWRlcjogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPVxuICAgIGJhc2VtYXBQcm92aWRlciA/PyByZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIodW5kZWZpbmVkLCBtYXBib3hBcGlBY2Nlc3NUb2tlbik7XG4gIGNvbnN0IHVzZUNhcnRvID0gcHJvdmlkZXIgPT09ICdjYXJ0byc7XG4gIGNvbnN0IGhhc1RpbGVBY2Nlc3MgPSB1c2VDYXJ0byB8fCBCb29sZWFuKG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcblxuICByZXR1cm4gW1xuICAgIC8vIEh1Z2UgaGFsbyBiZWhpbmQgdGhlIHRoaW4gcmVhbGlzdGljIGxpbWIgc28gYm90aCBjYW4gYmUgdmlzaWJsZSB0b2dldGhlci5cbiAgICBjb25maWcuYXRtb3NwaGVyZSA/IGdldEdsb2JlSHVnZUhhbG9MYXllcih7Y29uZmlnLCB6b29tfSkgOiBudWxsLFxuICAgIGNvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIoe2NvbmZpZywgem9vbX0pIDogbnVsbCxcblxuICAgIC8vIERlcHRoLW9ubHkgY3Jvc3Mtc2VjdGlvbiBkaXNrOiB3cml0ZXMgZGVwdGggYXQgdGhlIGdsb2JlJ3Mgc2lsaG91ZXR0ZSBzb1xuICAgIC8vIGZhci1zaWRlIGdlb21ldHJ5IChhcmNzL2xpbmVzKSBpcyBvY2NsdWRlZCBieSB0aGUgcGxhbmV0LlxuICAgIGdldEdsb2JlRGVwdGhEaXNrTGF5ZXIoe2ZpbGxDb2xvcjogY29uZmlnLnN1cmZhY2VDb2xvcn0pLFxuXG4gICAgLy8gQmFja2dyb3VuZCBzdXJmYWNlIHBvbHlnb25cbiAgICAoIWNvbmZpZy5iYXNlbWFwIHx8ICghaXNTYXRlbGxpdGUgJiYgIWlzU2F0ZWxsaXRlU3RyZWV0KSkgJiZcbiAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgIGlkOiAnZ2xvYmUtYmFja2dyb3VuZCcsXG4gICAgICAgIGRhdGE6IEJBQ0tHUk9VTkRfREFUQSxcbiAgICAgICAgZ2V0UG9seWdvbjogKChkOiBudW1iZXJbXVtdKSA9PiBkKSBhcyBhbnksXG4gICAgICAgIGZpbGxlZDogdHJ1ZSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiBjb25maWcuc3VyZmFjZUNvbG9yIGFzIGFueSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFDS0dST1VORF9QQVJBTUVURVJTXG4gICAgICB9KSxcblxuICAgIC8vIEZpbGwgaG9sZSBhdCBub3J0aCBwb2xlXG4gICAgY29uZmlnLmJhc2VtYXAgJiZcbiAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgIGlkOiAnZ2xvYmUtYmFja2dyb3VuZC1ub3J0aC1wb2xlJyxcbiAgICAgICAgZGF0YTogQkFDS0dST1VORF9OT1JUSF9QT0xFX0RBVEEsXG4gICAgICAgIGdldFBvbHlnb246ICgoZDogbnVtYmVyW11bXSkgPT4gZCkgYXMgYW55LFxuICAgICAgICBmaWxsZWQ6IHRydWUsXG4gICAgICAgIGdldEZpbGxDb2xvcjogKGNvbmZpZy53YXRlciA/IGNvbmZpZy53YXRlckNvbG9yIDogY29uZmlnLnN1cmZhY2VDb2xvcikgYXMgYW55LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQUNLR1JPVU5EX1BBUkFNRVRFUlNcbiAgICAgIH0pLFxuXG4gICAgLy8gU2F0ZWxsaXRlIHRpbGVzXG4gICAgY29uZmlnLmJhc2VtYXAgJiZcbiAgICAgIChpc1NhdGVsbGl0ZSB8fCBpc1NhdGVsbGl0ZVN0cmVldCkgJiZcbiAgICAgIGhhc1RpbGVBY2Nlc3MgJiZcbiAgICAgIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICBpZDogYGdsb2JlLXNhdGVsbGl0ZS10aWxlcy0ke3Byb3ZpZGVyfWAsXG4gICAgICAgIGRhdGE6IHVzZUNhcnRvXG4gICAgICAgICAgPyBbRVNSSV9XT1JMRF9JTUFHRVJZX1VSTF1cbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgYGh0dHBzOi8vYXBpLm1hcGJveC5jb20vdjQvbWFwYm94LnNhdGVsbGl0ZS97en0ve3h9L3t5fUAyeC5wbmc/YWNjZXNzX3Rva2VuPSR7bWFwYm94QXBpQWNjZXNzVG9rZW59YFxuICAgICAgICAgICAgXSxcbiAgICAgICAgbWluWm9vbTogMCxcbiAgICAgICAgbWF4Wm9vbTogdXNlQ2FydG8gPyAxOCA6IDE5LFxuICAgICAgICB6b29tT2Zmc2V0OiBHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQgKyBsYXRab29tQ29tcGVuc2F0aW9uLFxuICAgICAgICBleHRlbnQ6IEdMT0JFX1RJTEVfRVhURU5ULFxuICAgICAgICAvLyBFc3JpIHRpbGVzIGFyZSAyNTZweDsgTWFwYm94IEAyeCB0aWxlcyBhcmUgNTEycHguXG4gICAgICAgIHRpbGVTaXplOiB1c2VDYXJ0byA/IDI1NiA6IDUxMiAvIGRldmljZVBpeGVsUmF0aW8sXG4gICAgICAgIHJlbmRlclN1YkxheWVyczogKHByb3BzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBiYm94OiB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofVxuICAgICAgICAgIH0gPSBwcm9wcy50aWxlO1xuXG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBCaXRtYXBMYXllcihwcm9wcywge1xuICAgICAgICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgaW1hZ2U6IHByb3BzLmRhdGEsXG4gICAgICAgICAgICAgIGJvdW5kczogW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFTRU1BUF9SQVNURVJfUEFSQU1FVEVSU1xuICAgICAgfSksXG5cbiAgICAvLyBWZWN0b3IgYmFzZW1hcCAoTVZUIGxhYmVscy9hZG1pbi93YXRlcilcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgIWlzU2F0ZWxsaXRlICYmXG4gICAgICBoYXNUaWxlQWNjZXNzICYmXG4gICAgICBuZXcgTVZUTGF5ZXIoe1xuICAgICAgICAvLyBmb3JjZSB0aGUgbGF5ZXIgdG8gdXBkYXRlIHdoZW4gdGhlIHN0eWxlL2xhYmVsL3Byb3ZpZGVyIGNvbmZpZyBjaGFuZ2VzXG4gICAgICAgIGlkOiBgZ2xvYmUtYmFzZW1hcC1tdnQtbGF5ZXItJHtwcm92aWRlcn0tJHttYXBTdHlsZVR5cGV9YCxcbiAgICAgICAgZGF0YTogdXNlQ2FydG9cbiAgICAgICAgICA/IENBUlRPX1ZFQ1RPUl9USUxFX1VSTFNcbiAgICAgICAgICA6IGBodHRwczovL2EudGlsZXMubWFwYm94LmNvbS92NC9tYXBib3gubWFwYm94LXN0cmVldHMtdjgve3p9L3t4fS97eX0udmVjdG9yLnBiZj9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn1gLFxuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICAvLyBPdmVyem9vbSBwYXN0IHRoZSBzb3VyY2UncyBuYXRpdmUgbWF4IGluc3RlYWQgb2YgNDA0LWluZyBvbiB0aWxlcyB0aGF0XG4gICAgICAgIC8vIGRvbid0IGV4aXN0ICh3aGljaCByZW5kZXJzIGFzIGVtcHR5IHJlY3RhbmdsZXMgYXQgaGlnaCB6b29tKS5cbiAgICAgICAgbWF4Wm9vbTogdXNlQ2FydG8gPyBDQVJUT19WRUNUT1JfTUFYX0RBVEFfWk9PTSA6IE1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSxcbiAgICAgICAgem9vbU9mZnNldDpcbiAgICAgICAgICAodXNlQ2FydG8gPyBDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgOiBNQVBCT1hfR0xPQkVfVkVDVE9SX1pPT01fT0ZGU0VUKSArXG4gICAgICAgICAgbGF0Wm9vbUNvbXBlbnNhdGlvbixcbiAgICAgICAgZXh0ZW50OiBHTE9CRV9USUxFX0VYVEVOVCxcbiAgICAgICAgYmluYXJ5OiBmYWxzZSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyxcbiAgICAgICAgbG9hZE9wdGlvbnM6IHVzZUNhcnRvXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC8vIE9wZW5NYXBUaWxlcyBzY2hlbWE6IGBib3VuZGFyeWAgPSBhZG1pbiBsaW5lcywgYHBsYWNlYCA9IGxhYmVscy5cbiAgICAgICAgICAgICAgbXZ0OiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJzOiBpc1NhdGVsbGl0ZVN0cmVldFxuICAgICAgICAgICAgICAgICAgPyBbJ3BsYWNlJywgJ2JvdW5kYXJ5J11cbiAgICAgICAgICAgICAgICAgIDogWydwbGFjZScsICdib3VuZGFyeScsICd3YXRlcicsICd0cmFuc3BvcnRhdGlvbiddXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgbXZ0OiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJzOiBpc1NhdGVsbGl0ZVN0cmVldFxuICAgICAgICAgICAgICAgICAgPyBbJ3BsYWNlX2xhYmVsJywgJ2FkbWluJ11cbiAgICAgICAgICAgICAgICAgIDogWydwbGFjZV9sYWJlbCcsICdhZG1pbicsICd3YXRlcicsICdyb2FkJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgLy8gUmVuZGVyIGFkbWluL3dhdGVyIHZpYSBHZW9Kc29uTGF5ZXIgYW5kIHBsYWNlIGxhYmVscyB2aWEgVGV4dExheWVyLlxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlbmRlclN1YkxheWVyczogKHByb3BzOiBhbnkpID0+IG5ldyBNVlRMYWJlbExheWVyKHByb3BzKSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICd3YXRlcic6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcud2F0ZXIgPyBjb25maWcud2F0ZXJDb2xvciA6IElOVklTSUJMRV9DT0xPUjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuc3VyZmFjZUNvbG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGluZUNvbG9yOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuYWRtaW5MaW5lcyA/IGNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgOiBJTlZJU0lCTEVfQ09MT1I7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnN1cmZhY2VDb2xvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldExpbmVXaWR0aDogKGY6IGFueSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoZ2V0QmFzZW1hcExheWVyS2luZChmLnByb3BlcnRpZXMubGF5ZXJOYW1lKSkge1xuICAgICAgICAgICAgY2FzZSAnYWRtaW4nOlxuICAgICAgICAgICAgICBzd2l0Y2ggKGYucHJvcGVydGllcy5hZG1pbl9sZXZlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuNzU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IFtjb25maWcud2F0ZXJDb2xvciwgY29uZmlnLnN1cmZhY2VDb2xvciwgY29uZmlnLndhdGVyXSxcbiAgICAgICAgICBnZXRMaW5lQ29sb3I6IFtjb25maWcuYWRtaW5MaW5lc0NvbG9yLCBjb25maWcuc3VyZmFjZUNvbG9yLCBjb25maWcuYWRtaW5MaW5lc11cbiAgICAgICAgfSxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IDAsXG4gICAgICAgIGxpbmVXaWR0aE1heFBpeGVsczogMjAsXG4gICAgICAgIGdldFBvaW50UmFkaXVzOiAwLFxuICAgICAgICBwb2ludFJhZGl1c01pblBpeGVsczogMFxuICAgICAgfSBhcyBhbnkpXG4gIF0uZmlsdGVyKEJvb2xlYW4pIGFzIExheWVyW107XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVUb3BMYXllcnMgPSAoe2dsb2JlLCB6b29tfToge2dsb2JlOiBHbG9iZTsgem9vbT86IG51bWJlcn0pOiBMYXllcltdID0+IHtcbiAgY29uc3Qge2NvbmZpZ30gPSBnbG9iZTtcbiAgcmV0dXJuIFtjb25maWcuYXRtb3NwaGVyZSA/IGdldEdsb2JlQXRtb3NwaGVyZUxheWVyKHtjb25maWcsIHpvb219KSA6IG51bGxdLmZpbHRlcihCb29sZWFuKSBhcyBMYXllcltdO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQSxTQUFRQSxpQkFBaUIsUUFBYyxlQUFlO0FBQ3RELFNBQVFDLGlCQUFpQixFQUFFQyxXQUFXLFFBQU8saUJBQWlCO0FBQzlELFNBQVFDLFNBQVMsRUFBRUMsUUFBUSxRQUFPLHFCQUFxQjtBQUt2RCxTQUFRQyx1QkFBdUIsRUFBRUMsMEJBQTBCLEVBQUVDLHFCQUFxQixRQUFPLG9CQUFvQjtBQUM3RyxTQUFRQyxzQkFBc0IsUUFBTywwQkFBMEI7QUFDL0QsU0FBUUMsYUFBYSxRQUFPLG1CQUFtQjtBQUkvQyxJQUFNQyxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQy9CLENBQUMsRUFDQSxPQUFPQyxNQUFNLEtBQUssV0FBVyxJQUFJQSxNQUFNLENBQUNILGdCQUFnQixJQUFLLENBQ2hFLENBQUM7QUFFRCxJQUFNSSxxQkFBcUIsR0FBRztFQUM1QkMsU0FBUyxFQUFFLElBQUk7RUFDZkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUVELElBQU1DLHlCQUF5QixHQUFHO0VBQ2hDRCxTQUFTLEVBQUU7QUFDYixDQUFDO0FBRUQsSUFBTUUsZUFBZSxHQUFHLENBQ3RCLENBQ0UsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDVixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFDUCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDVCxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQ1IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQ0Y7QUFFRCxJQUFNQywwQkFBMEIsR0FBRyxDQUNqQyxDQUNFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQ1YsQ0FBQyxDQUFD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
566
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT09SRElOQVRFX1NZU1RFTSIsIlNvbGlkUG9seWdvbkxheWVyIiwiQml0bWFwTGF5ZXIiLCJUaWxlTGF5ZXIiLCJNVlRMYXllciIsImdldEdsb2JlQXRtb3NwaGVyZUxheWVyIiwiZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIiLCJnZXRHbG9iZUh1Z2VIYWxvTGF5ZXIiLCJnZXRHbG9iZURlcHRoRGlza0xheWVyIiwiTVZUTGFiZWxMYXllciIsImRldmljZVBpeGVsUmF0aW8iLCJNYXRoIiwibWluIiwid2luZG93IiwiQkFDS0dST1VORF9QQVJBTUVURVJTIiwiZGVwdGhUZXN0IiwiY3VsbCIsImRlcHRoTWFzayIsIkJBU0VNQVBfUkFTVEVSX1BBUkFNRVRFUlMiLCJCQUNLR1JPVU5EX0RBVEEiLCJCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSIsIkRFRkFVTFRfQkFTRU1BUF9DT0xPUiIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJiYXNlbWFwRGVmYXVsdEZpbGxDb2xvciIsImJhc2VtYXBXYXRlckZpbGxDb2xvciIsImJhc2VtYXBEZWZhdWx0TGluZUNvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcExhYmVsQ29sb3IiLCJnZXRQYWludENvbG9yIiwiY29sb3IiLCJBcnJheSIsImlzQXJyYXkiLCJjb2xvclN0cmluZ1RvUkdCIiwiaHNsTWF0Y2giLCJtYXRjaCIsImgiLCJwYXJzZUludCIsInMiLCJsIiwiciIsImciLCJiIiwiaHVlMnJnYiIsInAiLCJxIiwidCIsInJvdW5kIiwicmdiTWF0Y2giLCJoZXhNYXRjaCIsImhleCIsInNsaWNlIiwiZmluZEZpcnN0TGF5ZXJCeUdyb3VwIiwibGF5ZXJzIiwibGF5ZXJHcm91cHMiLCJncm91cFNsdWciLCJsYXllckdyb3VwIiwiZmluZCIsImdyb3VwIiwic2x1ZyIsImxheWVyIiwiZmlsdGVyIiwiZmluZEJhY2tncm91bmRDb2xvciIsInN0eWxlIiwiX2ZvdW5kIiwiZm91bmQiLCJpZCIsInR5cGUiLCJwYWludCIsImZpbmRXYXRlckNvbG9yIiwiX2ZvdW5kJHBhaW50IiwiZmluZEFkbWluQ29sb3IiLCJfYm9yZGVyTGF5ZXJzJHBhaW50IiwiYm9yZGVyTGF5ZXJzIiwibHlyIiwiZmluZExhYmVsQ29sb3IiLCJfbGFiZWxMYXllciIsImxhYmVsTGF5ZXIiLCJnZXRCYXNlbWFwQ29sb3JzIiwibWFwU3R5bGUiLCJfZmluZEJhY2tncm91bmRDb2xvciIsIl9maW5kV2F0ZXJDb2xvciIsIl9maW5kQWRtaW5Db2xvciIsIl9maW5kTGFiZWxDb2xvciIsIl9tYXBTdHlsZSRzdHlsZSIsInN0eWxlSnNvbiIsIl9tYXBTdHlsZSRsYXllckdyb3VwcyIsIktOT1dOX1NUWUxFX0NPTE9SUyIsImRhcmsiLCJsaWdodCIsInBvc2l0cm9uIiwidm95YWdlciIsIm11dGVkIiwibXV0ZWRfbmlnaHQiLCJnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUiLCJzdHlsZVR5cGUiLCJfbWFwU3R5bGUkc3R5bGUyIiwibGVuZ3RoIiwiZ2V0R2xvYmVDbGVhckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiSU5WSVNJQkxFX0NPTE9SIiwiQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyIsIk1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQiLCJHTE9CRV9USUxFX0VYVEVOVCIsIk1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSIsIkNBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwibG9nMiIsIlBJIiwiY29zIiwiZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wZWQiLCJtYXgiLCJyZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIiLCJiYXNlTWFwTGlicmFyeSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiQ0FSVE9fVkVDVE9SX1RJTEVfVVJMUyIsIkVTUklfV09STERfSU1BR0VSWV9VUkwiLCJnZXRCYXNlbWFwTGF5ZXJLaW5kIiwibGF5ZXJOYW1lIiwiTUFQQk9YX0FUVFJJQlVUSU9OIiwibGFiZWwiLCJocmVmIiwiT1NNX0FUVFJJQlVUSU9OIiwiQ0FSVE9fQVRUUklCVVRJT04iLCJFU1JJX0FUVFJJQlVUSU9OIiwiZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZiIsIl9nbG9iZSRjb25maWciLCJnbG9iZSIsIm1hcFN0eWxlVHlwZSIsImJhc2VtYXBQcm92aWRlciIsImVuYWJsZWQiLCJjb25maWciLCJiYXNlbWFwIiwicHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJpc1NhdGVsbGl0ZSIsImdldEdsb2JlQmFzZUxheWVycyIsIl9yZWYyIiwiem9vbSIsImlzU2F0ZWxsaXRlU3RyZWV0IiwibGF0Wm9vbUNvbXBlbnNhdGlvbiIsInVzZUNhcnRvIiwiaGFzVGlsZUFjY2VzcyIsIkJvb2xlYW4iLCJhdG1vc3BoZXJlIiwiZmlsbENvbG9yIiwic3VyZmFjZUNvbG9yIiwiZGF0YSIsImdldFBvbHlnb24iLCJkIiwiZmlsbGVkIiwiZ2V0RmlsbENvbG9yIiwicGFyYW1ldGVycyIsIndhdGVyIiwid2F0ZXJDb2xvciIsImNvbmNhdCIsIm1pblpvb20iLCJtYXhab29tIiwiem9vbU9mZnNldCIsImV4dGVudCIsInRpbGVTaXplIiwicmVuZGVyU3ViTGF5ZXJzIiwicHJvcHMiLCJfcHJvcHMkdGlsZSRiYm94IiwidGlsZSIsImJib3giLCJ3ZXN0Iiwic291dGgiLCJlYXN0Iiwibm9ydGgiLCJfaW1hZ2VDb29yZGluYXRlU3lzdGVtIiwiQ0FSVEVTSUFOIiwiaW1hZ2UiLCJib3VuZHMiLCJiaW5hcnkiLCJsb2FkT3B0aW9ucyIsIm12dCIsImYiLCJwcm9wZXJ0aWVzIiwiZ2V0TGluZUNvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsImdldExpbmVXaWR0aCIsImFkbWluX2xldmVsIiwidXBkYXRlVHJpZ2dlcnMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImdldFBvaW50UmFkaXVzIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJnZXRHbG9iZVRvcExheWVycyIsIl9yZWYzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JlL2dsb2JlLWxheWVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0NPT1JESU5BVEVfU1lTVEVNLCBMYXllcn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1NvbGlkUG9seWdvbkxheWVyLCBCaXRtYXBMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7VGlsZUxheWVyLCBNVlRMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmltcG9ydCB0eXBlIHtHbG9iZX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1JHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIsXG4gIGdldEdsb2JlQXRtb3NwaGVyZVNreUxheWVyLFxuICBnZXRHbG9iZUh1Z2VIYWxvTGF5ZXJcbn0gZnJvbSAnLi9hdG1vc3BoZXJlLWxheWVyJztcbmltcG9ydCB7Z2V0R2xvYmVEZXB0aERpc2tMYXllcn0gZnJvbSAnLi9nbG9iZS1kZXB0aC1kaXNrLWxheWVyJztcbmltcG9ydCB7TVZUTGFiZWxMYXllcn0gZnJvbSAnLi9tdnQtbGFiZWwtbGF5ZXInO1xuXG50eXBlIExheWVyR3JvdXAgPSB7c2x1Zzogc3RyaW5nOyBmaWx0ZXI6IChsYXllcjogYW55KSA9PiBib29sZWFufTtcblxuY29uc3QgZGV2aWNlUGl4ZWxSYXRpbyA9IE1hdGgubWluKFxuICAyLFxuICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRldmljZVBpeGVsUmF0aW8pIHx8IDFcbik7XG5cbmNvbnN0IEJBQ0tHUk9VTkRfUEFSQU1FVEVSUyA9IHtcbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBjdWxsOiB0cnVlLFxuICBkZXB0aE1hc2s6IGZhbHNlXG59O1xuXG5jb25zdCBCQVNFTUFQX1JBU1RFUl9QQVJBTUVURVJTID0ge1xuICBkZXB0aE1hc2s6IGZhbHNlXG59O1xuXG5jb25zdCBCQUNLR1JPVU5EX0RBVEEgPSBbXG4gIFtcbiAgICBbLTE4MCwgOTBdLFxuICAgIFswLCA5MF0sXG4gICAgWzE4MCwgOTBdLFxuICAgIFsxODAsIC05MF0sXG4gICAgWzAsIC05MF0sXG4gICAgWy0xODAsIC05MF1cbiAgXVxuXTtcblxuY29uc3QgQkFDS0dST1VORF9OT1JUSF9QT0xFX0RBVEEgPSBbXG4gIFtcbiAgICBbLTE4MCwgOTBdLFxuICAgIFswLCA5MF0sXG4gICAgWzE4MCwgOTBdLFxuICAgIFsxODAsIDg1XSxcbiAgICBbMCwgODVdLFxuICAgIFstMTgwLCA4NV1cbiAgXVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRU1BUF9DT0xPUiA9IHtcbiAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzksIDE2LCAyOV0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBEZWZhdWx0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NV0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3LCAzNSwgNDhdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwRGVmYXVsdExpbmVDb2xvcjogWzQwLCA2MywgOTNdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs0MCwgNjMsIDkzXSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcExhYmVsQ29sb3I6IFsxMTQuNzUsIDExNC43NSwgMTE0Ljc1XSBhcyBSR0JDb2xvclxufTtcblxuZnVuY3Rpb24gZ2V0UGFpbnRDb2xvcihjb2xvcjogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSAmJiBjb2xvclswXSA9PT0gJ2ludGVycG9sYXRlJykge1xuICAgIHJldHVybiBjb2xvcls0XTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5cbmZ1bmN0aW9uIGNvbG9yU3RyaW5nVG9SR0IoY29sb3I6IHN0cmluZyB8IG51bGwpOiBSR0JDb2xvciB8IG51bGwge1xuICBpZiAoIWNvbG9yKSByZXR1cm4gbnVsbDtcbiAgaWYgKHR5cGVvZiBjb2xvciAhPT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xuXG4gIC8vIEhhbmRsZSBoc2woKSBmb3JtYXRcbiAgY29uc3QgaHNsTWF0Y2ggPSBjb2xvci5tYXRjaCgvaHNsXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKSVcXHMqLFxccyooXFxkKyklXFxzKlxcKS8pO1xuICBpZiAoaHNsTWF0Y2gpIHtcbiAgICBjb25zdCBoID0gcGFyc2VJbnQoaHNsTWF0Y2hbMV0sIDEwKSAvIDM2MDtcbiAgICBjb25zdCBzID0gcGFyc2VJbnQoaHNsTWF0Y2hbMl0sIDEwKSAvIDEwMDtcbiAgICBjb25zdCBsID0gcGFyc2VJbnQoaHNsTWF0Y2hbM10sIDEwKSAvIDEwMDtcbiAgICAvLyBIU0wgdG8gUkdCIGNvbnZlcnNpb25cbiAgICBsZXQgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcjtcbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgciA9IGcgPSBiID0gbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaHVlMnJnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICh0IDwgMCkgdCArPSAxO1xuICAgICAgICBpZiAodCA+IDEpIHQgLT0gMTtcbiAgICAgICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgICAgIGlmICh0IDwgMSAvIDIpIHJldHVybiBxO1xuICAgICAgICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7XG4gICAgICAgIHJldHVybiBwO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgY29uc3QgcCA9IDIgKiBsIC0gcTtcbiAgICAgIHIgPSBodWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICBnID0gaHVlMnJnYihwLCBxLCBoKTtcbiAgICAgIGIgPSBodWUycmdiKHAsIHEsIGggLSAxIC8gMyk7XG4gICAgfVxuICAgIHJldHVybiBbTWF0aC5yb3VuZChyICogMjU1KSwgTWF0aC5yb3VuZChnICogMjU1KSwgTWF0aC5yb3VuZChiICogMjU1KV0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICAvLyBIYW5kbGUgcmdiKCkgZm9ybWF0XG4gIGNvbnN0IHJnYk1hdGNoID0gY29sb3IubWF0Y2goL3JnYlxcKFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqXFwpLyk7XG4gIGlmIChyZ2JNYXRjaCkge1xuICAgIHJldHVybiBbXG4gICAgICBwYXJzZUludChyZ2JNYXRjaFsxXSwgMTApLFxuICAgICAgcGFyc2VJbnQocmdiTWF0Y2hbMl0sIDEwKSxcbiAgICAgIHBhcnNlSW50KHJnYk1hdGNoWzNdLCAxMClcbiAgICBdIGFzIFJHQkNvbG9yO1xuICB9XG5cbiAgLy8gSGFuZGxlIGhleCBmb3JtYXRcbiAgY29uc3QgaGV4TWF0Y2ggPSBjb2xvci5tYXRjaCgvXiMoWzAtOWEtZl17Nn0pJC9pKTtcbiAgaWYgKGhleE1hdGNoKSB7XG4gICAgY29uc3QgaGV4ID0gaGV4TWF0Y2hbMV07XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KGhleC5zbGljZSgwLCAyKSwgMTYpLFxuICAgICAgcGFyc2VJbnQoaGV4LnNsaWNlKDIsIDQpLCAxNiksXG4gICAgICBwYXJzZUludChoZXguc2xpY2UoNCwgNiksIDE2KVxuICAgIF0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZmluZEZpcnN0TGF5ZXJCeUdyb3VwKGxheWVyczogYW55W10sIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10sIGdyb3VwU2x1Zzogc3RyaW5nKSB7XG4gIGNvbnN0IGxheWVyR3JvdXAgPSBsYXllckdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLnNsdWcgPT09IGdyb3VwU2x1Zyk7XG4gIGlmICghbGF5ZXJHcm91cCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBsYXllcnMuZmluZChsYXllciA9PiBsYXllckdyb3VwLmZpbHRlcihsYXllcikpO1xufVxuXG5mdW5jdGlvbiBmaW5kQmFja2dyb3VuZENvbG9yKHN0eWxlOiBhbnkpOiBSR0JDb2xvciB8IG51bGwge1xuICBsZXQgZm91bmQgPSBzdHlsZS5sYXllcnMuZmluZCgobDogYW55KSA9PiBsLmlkID09PSAnYmFja2dyb3VuZCcgfHwgbC5pZCA9PT0gJ2xhbmQnKTtcbiAgZm91bmQgPSBmb3VuZCB8fCBzdHlsZS5sYXllcnMuZmluZCgobDogYW55KSA9PiBsLnR5cGUgPT09ICdiYWNrZ3JvdW5kJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGdldFBhaW50Q29sb3IoZm91bmQ/LnBhaW50Py5bJ2JhY2tncm91bmQtY29sb3InXSkpO1xufVxuXG5mdW5jdGlvbiBmaW5kV2F0ZXJDb2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgY29uc3QgZm91bmQgPVxuICAgIHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwuaWQgPT09ICd3YXRlcicpIHx8XG4gICAgZmluZEZpcnN0TGF5ZXJCeUdyb3VwKHN0eWxlLmxheWVycywgbGF5ZXJHcm91cHMsICd3YXRlcicpO1xuICByZXR1cm4gY29sb3JTdHJpbmdUb1JHQihmb3VuZD8ucGFpbnQ/LlsnZmlsbC1jb2xvciddKTtcbn1cblxuZnVuY3Rpb24gZmluZEFkbWluQ29sb3Ioc3R5bGU6IGFueSwgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXSk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGNvbnN0IGJvcmRlckxheWVycyA9XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGx5cjogYW55KSA9PiBseXIuaWQgPT09ICdhZG1pbi0zLTQtYm91bmRhcmllcycpIHx8XG4gICAgZmluZEZpcnN0TGF5ZXJCeUdyb3VwKHN0eWxlLmxheWVycywgbGF5ZXJHcm91cHMsICdib3JkZXInKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IoYm9yZGVyTGF5ZXJzPy5wYWludD8uWydsaW5lLWNvbG9yJ10pO1xufVxuXG5mdW5jdGlvbiBmaW5kTGFiZWxDb2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgbGV0IGxhYmVsTGF5ZXIgPSBzdHlsZS5sYXllcnMuZmluZChcbiAgICAobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2NvdW50cnktbGFiZWwtbGcnICYmIGx5ci50eXBlID09PSAnc3ltYm9sJ1xuICApO1xuICBsYWJlbExheWVyID1cbiAgICBsYWJlbExheWVyIHx8XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGx5cjogYW55KSA9PiBseXIuaWQgPT09ICdjb3VudHJ5LWxhYmVsJyAmJiBseXIudHlwZSA9PT0gJ3N5bWJvbCcpO1xuICBsYWJlbExheWVyID0gbGFiZWxMYXllciB8fCBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ2xhYmVsJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGxhYmVsTGF5ZXI/LnBhaW50Py5bJ3RleHQtY29sb3InXSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRCYXNlbWFwQ29sb3JzID0gKFxuICBtYXBTdHlsZTogUGFydGlhbDx7c3R5bGU6IGFueTsgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXX0+XG4pOiB7XG4gIGJhY2tncm91bmRGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwTGFiZWxDb2xvcjogUkdCQ29sb3I7XG59ID0+IHtcbiAgY29uc3Qge3N0eWxlOiBzdHlsZUpzb24gPSB7bGF5ZXJzOiBbXX0sIGxheWVyR3JvdXBzID0gW119ID0gbWFwU3R5bGU7XG5cbiAgcmV0dXJuIHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOlxuICAgICAgZmluZEJhY2tncm91bmRDb2xvcihzdHlsZUpzb24pID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYWNrZ3JvdW5kRmlsbENvbG9yLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjpcbiAgICAgIGZpbmRXYXRlckNvbG9yKHN0eWxlSnNvbiwgbGF5ZXJHcm91cHMpID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwV2F0ZXJGaWxsQ29sb3IsXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOlxuICAgICAgZmluZEFkbWluQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBBZG1pbkxpbmVDb2xvcixcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjpcbiAgICAgIGZpbmRMYWJlbENvbG9yKHN0eWxlSnNvbiwgbGF5ZXJHcm91cHMpID8/IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwTGFiZWxDb2xvclxuICB9O1xufTtcblxuLy8gUHJlZGVmaW5lZCBjb2xvciBzY2hlbWVzIGZvciB3ZWxsLWtub3duIGJhc2VtYXAgc3R5bGVzXG5jb25zdCBLTk9XTl9TVFlMRV9DT0xPUlM6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogUkdCQ29sb3I7XG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBSR0JDb2xvcjtcbiAgfVxuPiA9IHtcbiAgZGFyazoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsxNSwgMTUsIDE1XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxMCwgMjAsIDM1XSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs2MCwgNjAsIDgwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzE1MCwgMTUwLCAxNTBdXG4gIH0sXG4gICdkYXJrLW1hdHRlcic6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMTgsIDE4LCAxOF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTQsIDE5LCAyOV0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbNTAsIDUwLCA2MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFsxMzAsIDEzMCwgMTMwXVxuICB9LFxuICBsaWdodDoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMzUsIDIzMywgMjI4XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNzAsIDIxMSwgMjIzXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFsxODAsIDE3NSwgMTcwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzgwLCA4MCwgODBdXG4gIH0sXG4gIHBvc2l0cm9uOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzI0MiwgMjM5LCAyMzNdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3NCwgMjA5LCAyMjBdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE5MCwgMTg1LCAxODBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbOTAsIDkwLCA5MF1cbiAgfSxcbiAgdm95YWdlcjoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMzQsIDIyOSwgMjIwXSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNzAsIDIxMSwgMjIzXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFsxODAsIDE3MCwgMTYwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzcwLCA3MCwgNzBdXG4gIH0sXG4gIG11dGVkOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIyNSwgMjI1LCAyMThdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE4MCwgMjEwLCAyMjBdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE3MCwgMTY1LCAxNjBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbOTAsIDkwLCA5MF1cbiAgfSxcbiAgbXV0ZWRfbmlnaHQ6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjIsIDI2LCAzMF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTUsIDI1LCA0MF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbNTUsIDYwLCA3MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFsxNDAsIDE0MCwgMTQwXVxuICB9XG59O1xuXG4vKipcbiAqIEdldCBiYXNlbWFwIGNvbG9ycyBlaXRoZXIgZnJvbSB0aGUgc3R5bGUgSlNPTiBvciBmcm9tIGtub3duIHN0eWxlIHByZXNldHMuXG4gKiBGYWxscyBiYWNrIHRvIGRlZmF1bHQgZGFyayBjb2xvcnMgaWYgc3R5bGUgaXMgdW5rbm93biBhbmQgbm8gSlNPTiBpcyBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUgPSAoXG4gIHN0eWxlVHlwZTogc3RyaW5nLFxuICBtYXBTdHlsZT86IFBhcnRpYWw8e3N0eWxlOiBhbnk7IGxheWVyR3JvdXBzOiBMYXllckdyb3VwW119PlxuKToge1xuICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBSR0JDb2xvcjtcbiAgYmFzZW1hcExhYmVsQ29sb3I6IFJHQkNvbG9yO1xufSA9PiB7XG4gIC8vIFRyeSB0byBleHRyYWN0IGZyb20gc3R5bGUgSlNPTiBmaXJzdFxuICBpZiAobWFwU3R5bGU/LnN0eWxlPy5sYXllcnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBnZXRCYXNlbWFwQ29sb3JzKG1hcFN0eWxlKTtcbiAgfVxuICAvLyBGYWxsIGJhY2sgdG8ga25vd24gc3R5bGUgcHJlc2V0c1xuICBpZiAoS05PV05fU1RZTEVfQ09MT1JTW3N0eWxlVHlwZV0pIHtcbiAgICByZXR1cm4gS05PV05fU1RZTEVfQ09MT1JTW3N0eWxlVHlwZV07XG4gIH1cbiAgLy8gRGVmYXVsdCBkYXJrIGNvbG9yc1xuICByZXR1cm4ge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYWNrZ3JvdW5kRmlsbENvbG9yLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBXYXRlckZpbGxDb2xvcixcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwQWRtaW5MaW5lQ29sb3IsXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwTGFiZWxDb2xvclxuICB9O1xufTtcblxuLyoqXG4gKiBDbGVhciBjb2xvciAoYmFja2dyb3VuZCBhcm91bmQgdGhlIGdsb2JlKSBmb3IgZ2xvYmUgbW9kZSwgaW4gUkdCQSAwLTI1NSBhc1xuICogZXhwZWN0ZWQgYnkgZGVjay5nbCdzIFZpZXcgYGNsZWFyQ29sb3JgIHByb3AgKGRlY2suZ2wgPj0gOSBubyBsb25nZXIgc3VwcG9ydHNcbiAqIHRoZSBnbG9iYWwgYHBhcmFtZXRlcnMuY2xlYXJDb2xvcmA7IGl0IG11c3QgYmUgc2V0IHBlci12aWV3IHdpdGggYGNsZWFyOiB0cnVlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iZUNsZWFyQ29sb3IoXG4gIGJhY2tncm91bmRDb2xvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bWJlcltdXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICByZXR1cm4gW2JhY2tncm91bmRDb2xvclswXSwgYmFja2dyb3VuZENvbG9yWzFdLCBiYWNrZ3JvdW5kQ29sb3JbMl0sIDI1NV07XG4gIH1cbiAgLy8gRGVmYXVsdCBtYXRjaGVzIHRoZSBwcmV2aW91cyBoYXJkY29kZWQgY2xlYXIgY29sb3IgWzAuMDE1LCAwLjAzNSwgMC4wNjVdIGluIDAtMSBzcGFjZS5cbiAgcmV0dXJuIFs0LCA5LCAxNywgMjU1XTtcbn1cblxuY29uc3QgSU5WSVNJQkxFX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwLCAwXTtcblxuY29uc3QgQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyA9IHtcbiAgLy8gT2NjbHVkZSB0aGUgZmFyIHNpZGUgb2YgdGhlIGdsb2JlIHZpYSB0aGUgREVQVEggRElTSyAoZ2V0R2xvYmVEZXB0aERpc2tMYXllcilcbiAgLy8gcmF0aGVyIHRoYW4gYmFjay1mYWNlIGN1bGxpbmcuIEdsb2JlIG1vZGUgc2V0cyBhIGdsb2JhbCBgY3VsbDogdHJ1ZWAgZm9yIHRoZVxuICAvLyBvcGFxdWUgc3BoZXJlIHN1cmZhY2UsIGJ1dCBiYWNrLWZhY2UgY3VsbGluZyByZWxpZXMgb24gc3RhYmxlIHRyaWFuZ2xlXG4gIC8vIHdpbmRpbmcg4oCUIGFuZCBkZWNrLmdsIDkncyBnbG9iZSBwcm9qZWN0aW9uIGxvc2VzIHByZWNpc2lvbiBhdCBoaWdoIHpvb21cbiAgLy8gKGZsb2F0MzIpLCBmbGlwcGluZyB0aGUgd2luZGluZyBvZiB0aGUgc21hbGwgYWRtaW4vd2F0ZXIgdHJpYW5nbGVzIHNvIHRoZXlcbiAgLy8gZ2V0IHdyb25nbHkgY3VsbGVkIGFuZCB0aGUgZ2VvbWV0cnkgdmFuaXNoZXMgcGFzdCB+em9vbSAxMiAoeW91IHRoZW4gc2VlXG4gIC8vIHRocm91Z2ggdG8gdGhlIGZhciBzaWRlIC8gXCJkaWZmZXJlbnQgZ2VvbWV0cnlcIikuIERlcHRoIHRlc3RpbmcgYWdhaW5zdCB0aGUgZGlza1xuICAvLyBpcyBhIHByZWNpc2lvbi1yb2J1c3Qgb2NjbHVkZXIgdGhhdCB3b3JrcyBhdCBhbnkgem9vbSwgc286XG4gIC8vICAgLSBjdWxsOiBmYWxzZSAgICAg4oaSIGRvbid0IHdpbmRpbmctY3VsbCB0aGUgbmVhci1zaWRlIGdlb21ldHJ5XG4gIC8vICAgLSBkZXB0aFRlc3Q6IHRydWUg4oaSIGZhci1zaWRlIGdlb21ldHJ5IChiZWhpbmQgdGhlIGRpc2spIGZhaWxzIGRlcHRoLCBoaWRkZW5cbiAgLy8gICAtIGRlcHRoTWFzazogZmFsc2Ug4oaSIGRvbid0IHdyaXRlIGRlcHRoIChhdm9pZCBzZWxmIHotZmlnaHRpbmcgb24gdGhlIHNoZWxsKVxuICAvLyBSYXN0ZXIgdGlsZXMgYXJlIHVuYWZmZWN0ZWQgKHRoZWlyIDQtY29ybmVyIHF1YWRzIGtlZXAgc3RhYmxlIHdpbmRpbmcpLCB3aGljaFxuICAvLyBpcyB3aHkgc2F0ZWxsaXRlIGFscmVhZHkgem9vbXMgdG8gbWF4IGNsZWFubHkuIExhYmVscyBkaXNhYmxlIGN1bGwgZm9yIHRoZVxuICAvLyBzYW1lIHJlYXNvbiAoc2VlIG12dC1sYWJlbC1sYXllci50cykuXG4gIGRlcHRoVGVzdDogdHJ1ZSxcbiAgZGVwdGhNYXNrOiBmYWxzZSxcbiAgY3VsbDogZmFsc2Vcbn07XG5cbi8vIGRlY2suZ2wgOSdzIGdsb2JlIHNlbGVjdHMgZmluZXIgdGlsZXMgdGhhbiBuZWVkZWQgZm9yIGEgZ2l2ZW4gdmlldyAoaXRzXG4vLyBHbG9iZVZpZXdwb3J0IHNjYWxlIGlzIH4zeCBzbWFsbGVyIHRoYW4gdGhlIGVxdWl2YWxlbnQgbWVyY2F0b3Igem9vbSksIHNvIGJpYXNcbi8vIHZlY3RvciB0aWxlIHNlbGVjdGlvbiBjb2Fyc2VyIHRvIGtlZXAgdGhlIHRpbGUgY291bnQg4oCUIGFuZCB0aHVzIHBlcmZvcm1hbmNlIOKAlFxuLy8gaW4gY2hlY2suIFRoaXMgdHJhZGVzIGEgbGl0dGxlIGRldGFpbCBmb3IgZmFyIGZld2VyIHRpbGVzOyBtYWtlIGl0IGxlc3MgbmVnYXRpdmVcbi8vICh0b3dhcmQgMCkgZm9yIHNoYXJwZXIgZGV0YWlsLCBvciBtb3JlIG5lZ2F0aXZlIGZvciBtb3JlIHBlcmYuXG4vLyBUaGVzZSBhcmUgKmJhc2UqIG9mZnNldHM6IGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uIGlzIGFkZGVkIG9uIHRvcCBhdCBkcmF3XG4vLyB0aW1lLCBzbyB0aGUgZWZmZWN0aXZlIHpvb21PZmZzZXQgb25seSBlcXVhbHMgdGhlc2UgZXhhY3QgdmFsdWVzIGF0IHRoZSBlcXVhdG9yLlxuLy8gU2F0ZWxsaXRlIHJhc3RlciB1c2VzIGJhc2UgMCDigJQgaXQgZG9lc24ndCBuZWVkIHRoZSB2ZWN0b3IgYmlhcyAoYSBjb2Fyc2VyIHJhc3RlclxuLy8gdGlsZSBqdXN0IGxvb2tzIHNvZnRlciByYXRoZXIgdGhhbiBkcm9wcGluZyBmZWF0dXJlcykuXG5jb25zdCBNQVBCT1hfR0xPQkVfVkVDVE9SX1pPT01fT0ZGU0VUID0gLTI7XG5jb25zdCBDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgPSAtMjtcbmNvbnN0IEdMT0JFX1NBVEVMTElURV9aT09NX09GRlNFVCA9IDA7XG5cbi8vIFdob2xlLXdvcmxkIHRpbGUgZXh0ZW50IChXZWIgTWVyY2F0b3IgbGF0aXR1ZGUgbGltaXQpLiBSZXF1aXJlZCB3aGVuZXZlciBhXG4vLyBuZWdhdGl2ZSBgem9vbU9mZnNldGAgaXMgdXNlZDogZGVjaydzIGBnZXRUaWxlSW5kaWNlc2AgcmV0dXJucyBOTyB0aWxlcyB3aGVuXG4vLyB0aGUgdGFyZ2V0IHpvb20gZHJvcHMgYmVsb3cgYG1pblpvb21gICp1bmxlc3MqIGFuIGBleHRlbnRgIGlzIHNldCAoaW4gd2hpY2hcbi8vIGNhc2UgaXQgY2xhbXBzIHRvIGBtaW5ab29tYCBpbnN0ZWFkKS4gV2l0aG91dCB0aGlzLCB6b29taW5nIG91dCBvciBwYW5uaW5nXG4vLyB0b3dhcmQgdGhlIHBvbGVzICh3aGVyZSBkZWNrIDkncyBnbG9iZSBjb250cm9sbGVyIGxvd2VycyB0aGUgZWZmZWN0aXZlIHpvb20pXG4vLyBtYWtlcyB0aGUgd2hvbGUgZ2xvYmUgYmFzZW1hcCBkaXNhcHBlYXIuXG5jb25zdCBHTE9CRV9USUxFX0VYVEVOVDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbLTE4MCwgLTg1LjA1MTEyOSwgMTgwLCA4NS4wNTExMjldO1xuXG4vLyBNYXggKm5hdGl2ZSogem9vbSBvZiBlYWNoIHZlY3RvciB0aWxlIHNvdXJjZS4gU2V0IHRoaXMgKG5vdCBhbiBhcmJpdHJhcmlseVxuLy8gaGlnaCBudW1iZXIpIHNvIGRlY2sgb3Zlcnpvb21zIOKAlCBpLmUuIGtlZXBzIHJlbmRlcmluZyB0aGUgZGVlcGVzdCByZWFsIHRpbGVcbi8vIHdoZW4gdGhlIHZpZXcgem9vbXMgcGFzdCBpdCDigJQgaW5zdGVhZCBvZiByZXF1ZXN0aW5nIHRpbGVzIHRoYXQgZG9uJ3QgZXhpc3Rcbi8vIGFuZCA0MDQgKHdoaWNoIHNob3dzIHVwIGFzIGVtcHR5IHJlY3RhbmdsZXMpLiBUaGUgcmF3IGAudmVjdG9yLnBiZmAgL2AubXZ0YFxuLy8gZW5kcG9pbnRzIGRvIE5PVCBhdXRvLW92ZXJ6b29tIHRoZSB3YXkgTWFwYm94IEdMIGRvZXMuXG4vLyAgIC0gbWFwYm94LXN0cmVldHMtdjggaGFzIGRhdGEgdXAgdG8gejE2XG4vLyAgIC0gQ0FSVE8gY2FydG8uc3RyZWV0cyB2MSBoYXMgZGF0YSB1cCB0byB6MTRcbmNvbnN0IE1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSA9IDE2O1xuY29uc3QgQ0FSVE9fVkVDVE9SX01BWF9EQVRBX1pPT00gPSAxNDtcblxuLyoqXG4gKiBkZWNrLmdsIDkncyBnbG9iZSBjb3VwbGVzIHpvb20gdG8gbGF0aXR1ZGUgdmlhIGB6b29tQWRqdXN0YCAoc2VlXG4gKiBnbG9iZS12aWV3cG9ydC5qcyk6IGBzY2FsZSA9IDJeKHpvb20gLSB6b29tQWRqdXN0KGxhdCkpYCwgYW5kIGl0cyBjb250cm9sbGVyXG4gKiAqbG93ZXJzKiB0aGUgc3RvcmVkIGB6b29tYCBhcyB5b3UgcGFuIHRvd2FyZCB0aGUgcG9sZXMgdG8ga2VlcCB0aGUgZ2xvYmUnc1xuICogb24tc2NyZWVuIHNpemUgY29uc3RhbnQuIFRpbGUgTE9ELCBob3dldmVyLCBpcyBzZWxlY3RlZCBmcm9tIHRoZSByYXcgYHpvb21gLFxuICogc28gcm90YXRpbmcgdG93YXJkIGEgcG9sZSBzaWxlbnRseSBkcm9wcyB0aGUgTE9EIGFuZCB0aGlucyBvdXQgbGFiZWxzLlxuICogUmVwbGljYXRlZCBmcm9tIGBAZGVjay5nbC9jb3JlYCBnbG9iZS12aWV3cG9ydC5qcyBgem9vbUFkanVzdGAuXG4gKi9cbmZ1bmN0aW9uIHpvb21BZGp1c3QobGF0aXR1ZGU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmxvZzIoTWF0aC5QSSAqIE1hdGguY29zKChsYXRpdHVkZSAqIE1hdGguUEkpIC8gMTgwKSk7XG59XG5cbi8qKlxuICogTGF0aXR1ZGUgY29tcGVuc2F0aW9uIHRvIGFkZCB0byBhIGdsb2JlIHRpbGUgbGF5ZXIncyBgem9vbU9mZnNldGAsIHNvIHRpbGUgTE9EXG4gKiB0cmFja3MgdGhlICp2aXN1YWwqIChvbi1zY3JlZW4pIHNjYWxlIGluc3RlYWQgb2YgdGhlIGxhdGl0dWRlLWFkanVzdGVkIG1lcmNhdG9yXG4gKiB6b29tLiBUaGlzIGNhbmNlbHMgdGhlIHBhbi1pbmR1Y2VkIHpvb20gZHJvcCwga2VlcGluZyB0aWxlIGRldGFpbC9sYWJlbHNcbiAqIGNvbnN0YW50IHdoaWxlIHJvdGF0aW5nIHRvd2FyZCB0aGUgcG9sZXMuXG4gKi9cbmZ1bmN0aW9uIGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uKGxhdGl0dWRlPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGxhdGl0dWRlID09IG51bGwgfHwgIU51bWJlci5pc0Zpbml0ZShsYXRpdHVkZSkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICAvLyBDbGFtcCBhd2F5IGZyb20gdGhlIHBvbGVzIHRvIGF2b2lkIGxvZzIoMCkgPSAtSW5maW5pdHkgYXQgfGxhdHwgPSA5MC5cbiAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KC04NSwgTWF0aC5taW4oODUsIGxhdGl0dWRlKSk7XG4gIHJldHVybiB6b29tQWRqdXN0KDApIC0gem9vbUFkanVzdChjbGFtcGVkKTtcbn1cblxuLyoqXG4gKiBHbG9iZSBiYXNlbWFwIHRpbGUgcHJvdmlkZXIuXG4gKlxuICogLSBgbWFwYm94YCB1c2VzIE1hcGJveCB2ZWN0b3IvcmFzdGVyIHRpbGVzIGFuZCByZXF1aXJlcyBhbiBhY2Nlc3MgdG9rZW4uXG4gKiAtIGBjYXJ0b2AgdXNlcyBDQVJUTydzIGZyZWUgT3Blbk1hcFRpbGVzIHZlY3RvciB0aWxlcyArIEVzcmkgV29ybGQgSW1hZ2VyeVxuICogICByYXN0ZXIsIGFuZCBuZWVkcyBubyB0b2tlbi4gVXNlZCBhcyBhbiBhdXRvbWF0aWMgZmFsbGJhY2sgd2hlbiBubyBNYXBib3hcbiAqICAgdG9rZW4gaXMgYXZhaWxhYmxlIChlLmcuIE1hcExpYnJlIC8gQ0FSVE8gYmFzZW1hcCBzZXR1cHMpLCBzbyB0aGUgZ2xvYmVcbiAqICAgYmFzZW1hcCBzdGlsbCByZW5kZXJzIGluc3RlYWQgb2Ygc2hvd2luZyBhIHNvbGlkLWNvbG9yIHNwaGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2xvYmVCYXNlbWFwUHJvdmlkZXIgPSAnbWFwYm94JyB8ICdjYXJ0byc7XG5cbi8qKlxuICogUmVzb2x2ZSB3aGljaCBnbG9iZSBiYXNlbWFwIHRpbGUgcHJvdmlkZXIgdG8gdXNlLlxuICpcbiAqIFRoZSBnbG9iZSBzaG91bGQgZm9sbG93IHRoZSAqc2VsZWN0ZWQgYmFzZW1hcCBzdHlsZSdzKiByZW5kZXJpbmcgbGlicmFyeSBzb1xuICogaXQgc3RheXMgY29uc2lzdGVudCB3aXRoIHRoZSBmbGF0IDJEIG1hcDogYSBNYXBMaWJyZS9DQVJUTyBzdHlsZSB1c2VzIHRoZVxuICogZnJlZSBDQVJUTyB0aWxlcyAoZXZlbiB3aGVuIGEgTWFwYm94IHRva2VuIGlzIGF2YWlsYWJsZSksIGFuZCBhIE1hcGJveCBzdHlsZVxuICogdXNlcyBNYXBib3ggdGlsZXMuIEEgTWFwYm94IHN0eWxlIHdpdGggbm8gdG9rZW4gZmFsbHMgYmFjayB0byBDQVJUTyBzbyB0aGVcbiAqIGdsb2JlIHN0aWxsIHJlbmRlcnMgaW5zdGVhZCBvZiBzaG93aW5nIGEgYmFyZSBjb2xvcmVkIHNwaGVyZS5cbiAqXG4gKiBAcGFyYW0gYmFzZU1hcExpYnJhcnkgdGhlIHNlbGVjdGVkIHN0eWxlJ3MgbGlicmFyeSAoJ21hcGJveCcgfCAnbWFwbGlicmUnKSxcbiAqICAgZS5nLiBmcm9tIGBnZXRCYXNlTWFwTGlicmFyeShjdXJyZW50U3R5bGUpYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlciA9IChcbiAgYmFzZU1hcExpYnJhcnk6ICdtYXBib3gnIHwgJ21hcGxpYnJlJyB8IHVuZGVmaW5lZCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmdcbik6IEdsb2JlQmFzZW1hcFByb3ZpZGVyID0+IHtcbiAgaWYgKGJhc2VNYXBMaWJyYXJ5ID09PSAnbWFwbGlicmUnKSB7XG4gICAgcmV0dXJuICdjYXJ0byc7XG4gIH1cbiAgaWYgKGJhc2VNYXBMaWJyYXJ5ID09PSAnbWFwYm94Jykge1xuICAgIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/ICdtYXBib3gnIDogJ2NhcnRvJztcbiAgfVxuICAvLyBVbmtub3duIGxpYnJhcnk6IHByZWZlciBNYXBib3ggd2hlbiBhIHRva2VuIGV4aXN0cywgb3RoZXJ3aXNlIENBUlRPLlxuICByZXR1cm4gbWFwYm94QXBpQWNjZXNzVG9rZW4gPyAnbWFwYm94JyA6ICdjYXJ0byc7XG59O1xuXG4vLyBDQVJUTyBmcmVlIHZlY3RvciB0aWxlcyAoT3Blbk1hcFRpbGVzIHNjaGVtYSwgbm8gQVBJIGtleSByZXF1aXJlZCkuXG5jb25zdCBDQVJUT19WRUNUT1JfVElMRV9VUkxTID0gW1xuICAnaHR0cHM6Ly90aWxlcy1hLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCcsXG4gICdodHRwczovL3RpbGVzLWIuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0JyxcbiAgJ2h0dHBzOi8vdGlsZXMtYy5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vdmVjdG9ydGlsZXMvY2FydG8uc3RyZWV0cy92MS97en0ve3h9L3t5fS5tdnQnLFxuICAnaHR0cHM6Ly90aWxlcy1kLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCdcbl07XG5cbi8vIEZyZWUgc2F0ZWxsaXRlIHJhc3RlciBmYWxsYmFjayAoRXNyaSBXb3JsZCBJbWFnZXJ5LCBubyBBUEkga2V5IHJlcXVpcmVkKS5cbmNvbnN0IEVTUklfV09STERfSU1BR0VSWV9VUkwgPVxuICAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JztcblxuLyoqXG4gKiBNYXBzIGEgcmF3IE1WVCBzb3VyY2UtbGF5ZXIgbmFtZSB0byBhIG5vcm1hbGl6ZWQgc2VtYW50aWMgbGF5ZXIga2luZCwgc28gdGhlXG4gKiBmaWxsL2xpbmUvbGFiZWwgYWNjZXNzb3JzIHdvcmsgYWNyb3NzIGJvdGggdGhlIE1hcGJveCAoYG1hcGJveC1zdHJlZXRzLXY4YClcbiAqIGFuZCBDQVJUTy9PcGVuTWFwVGlsZXMgc2NoZW1hcy5cbiAqXG4gKiB8IHNlbWFudGljIHwgbWFwYm94ICAgICAgICB8IG9wZW5tYXB0aWxlcyB8XG4gKiB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLSB8XG4gKiB8IHdhdGVyICAgIHwgYHdhdGVyYCAgICAgICB8IGB3YXRlcmAgICAgICB8XG4gKiB8IGFkbWluICAgIHwgYGFkbWluYCAgICAgICB8IGBib3VuZGFyeWAgICB8XG4gKiB8IGxhYmVsICAgIHwgYHBsYWNlX2xhYmVsYCB8IGBwbGFjZWAgICAgICB8XG4gKi9cbnR5cGUgQmFzZW1hcExheWVyS2luZCA9ICd3YXRlcicgfCAnYWRtaW4nIHwgJ2xhYmVsJyB8ICdvdGhlcic7XG5cbmZ1bmN0aW9uIGdldEJhc2VtYXBMYXllcktpbmQobGF5ZXJOYW1lPzogc3RyaW5nKTogQmFzZW1hcExheWVyS2luZCB7XG4gIHN3aXRjaCAobGF5ZXJOYW1lKSB7XG4gICAgY2FzZSAnd2F0ZXInOlxuICAgICAgcmV0dXJuICd3YXRlcic7XG4gICAgY2FzZSAnYWRtaW4nOlxuICAgIGNhc2UgJ2JvdW5kYXJ5JzpcbiAgICAgIHJldHVybiAnYWRtaW4nO1xuICAgIGNhc2UgJ3BsYWNlX2xhYmVsJzpcbiAgICBjYXNlICdwbGFjZSc6XG4gICAgICByZXR1cm4gJ2xhYmVsJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdvdGhlcic7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgR2xvYmVBdHRyaWJ1dGlvbiA9IHtsYWJlbDogc3RyaW5nOyBocmVmOiBzdHJpbmd9O1xuXG5jb25zdCBNQVBCT1hfQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgTWFwYm94JyxcbiAgaHJlZjogJ2h0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy8nXG59O1xuY29uc3QgT1NNX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ8KpIE9wZW5TdHJlZXRNYXAnLFxuICBocmVmOiAnaHR0cHM6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0J1xufTtcbmNvbnN0IENBUlRPX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ8KpIENBUlRPJyxcbiAgaHJlZjogJ2h0dHBzOi8vY2FydG8uY29tL2F0dHJpYnV0aW9ucydcbn07XG5jb25zdCBFU1JJX0FUVFJJQlVUSU9OOiBHbG9iZUF0dHJpYnV0aW9uID0ge1xuICBsYWJlbDogJ1Bvd2VyZWQgYnkgRXNyaScsXG4gIGhyZWY6ICdodHRwczovL3d3dy5lc3JpLmNvbS8nXG59O1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIHRpbGUtc291cmNlIGF0dHJpYnV0aW9uIGVudHJpZXMgZm9yIHRoZSBnbG9iZSBiYXNlbWFwLiBkZWNrLmdsXG4gKiByZW5kZXJzIHRoZSBnbG9iZSBiYXNlbWFwIHRpbGVzIGl0c2VsZiAobm90IHRoZSBiYXNlIE1hcGxpYnJlL01hcGJveCBtYXApLCBzb1xuICogdGhlIGJhc2UgbWFwJ3MgYXR0cmlidXRpb24gbWFjaGluZXJ5IG5ldmVyIHNlZXMgdGhlbS4gVGhpcyBsZXRzIHRoZSBVSSBjcmVkaXRcbiAqIHRoZSBhY3R1YWwgdGlsZSBwcm92aWRlcihzKSBpbiBnbG9iZSBtb2RlLlxuICovXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zID0gKHtcbiAgZ2xvYmUsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBTdHlsZVR5cGUsXG4gIGJhc2VtYXBQcm92aWRlclxufToge1xuICBnbG9iZT86IEdsb2JlO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgbWFwU3R5bGVUeXBlPzogc3RyaW5nO1xuICBiYXNlbWFwUHJvdmlkZXI/OiBHbG9iZUJhc2VtYXBQcm92aWRlcjtcbn0pOiBHbG9iZUF0dHJpYnV0aW9uW10gPT4ge1xuICBpZiAoIWdsb2JlPy5lbmFibGVkIHx8ICFnbG9iZS5jb25maWc/LmJhc2VtYXApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwcm92aWRlcjogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPVxuICAgIGJhc2VtYXBQcm92aWRlciA/PyByZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIodW5kZWZpbmVkLCBtYXBib3hBcGlBY2Nlc3NUb2tlbik7XG5cbiAgaWYgKHByb3ZpZGVyID09PSAnbWFwYm94Jykge1xuICAgIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/IFtNQVBCT1hfQVRUUklCVVRJT04sIE9TTV9BVFRSSUJVVElPTl0gOiBbXTtcbiAgfVxuXG4gIGNvbnN0IGlzU2F0ZWxsaXRlID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlJyB8fCBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUtc3RyZWV0JztcbiAgLy8gQ0FSVE8gdmVjdG9yIHRpbGVzIGFyZSBPcGVuU3RyZWV0TWFwLWRlcml2ZWQ7IEVzcmkgaW1hZ2VyeSBpcyBjcmVkaXRlZCBzZXBhcmF0ZWx5LlxuICByZXR1cm4gaXNTYXRlbGxpdGVcbiAgICA/IFtFU1JJX0FUVFJJQlVUSU9OLCBDQVJUT19BVFRSSUJVVElPTiwgT1NNX0FUVFJJQlVUSU9OXVxuICAgIDogW0NBUlRPX0FUVFJJQlVUSU9OLCBPU01fQVRUUklCVVRJT05dO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBjb25zdCBnZXRHbG9iZUJhc2VMYXllcnMgPSAoe1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgZ2xvYmUsXG4gIG1hcFN0eWxlVHlwZSxcbiAgYmFzZW1hcFByb3ZpZGVyLFxuICBsYXRpdHVkZSxcbiAgem9vbVxufToge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBnbG9iZTogR2xvYmU7XG4gIG1hcFN0eWxlVHlwZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoaWNoIHRpbGUgcHJvdmlkZXIgdG8gdXNlIGZvciB0aGUgZ2xvYmUgYmFzZW1hcC4gRGVmYXVsdHMgdG8gYG1hcGJveGAgd2hlblxuICAgKiBhIHRva2VuIGlzIHByZXNlbnQsIG90aGVyd2lzZSBmYWxscyBiYWNrIHRvIHRoZSB0b2tlbi1mcmVlIGBjYXJ0b2AgdGlsZXMuXG4gICAqL1xuICBiYXNlbWFwUHJvdmlkZXI/OiBHbG9iZUJhc2VtYXBQcm92aWRlcjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2FtZXJhIGNlbnRlciBsYXRpdHVkZS4gVXNlZCB0byBrZWVwIHRpbGUgTE9EIGNvbnN0YW50IHdoaWxlIHJvdGF0aW5nXG4gICAqIHRvd2FyZCB0aGUgcG9sZXMgKGRlY2suZ2wgOSBsb3dlcnMgdGhlIGVmZmVjdGl2ZSB6b29tIG5lYXIgdGhlIHBvbGVzKS4gV2hlblxuICAgKiBvbWl0dGVkLCBubyBsYXRpdHVkZSBjb21wZW5zYXRpb24gaXMgYXBwbGllZCAoZXF1YXRvciBiZWhhdmlvcikuXG4gICAqL1xuICBsYXRpdHVkZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgbWFwIHpvb20gbGV2ZWwuIFVzZWQgdG8gZmFkZSB0aGUgYXRtb3NwaGVyZSBlZmZlY3RzIG91dCB3aGVuIHRoZSB1c2VyXG4gICAqIHpvb21zIGluIHBhc3QgYSBjZXJ0YWluIHRocmVzaG9sZCAobWlycm9ycyBHb29nbGUgTWFwcyBnbG9iZSBiZWhhdmlvdXIpLlxuICAgKi9cbiAgem9vbT86IG51bWJlcjtcbn0pOiBMYXllcltdID0+IHtcbiAgY29uc3Qge2NvbmZpZ30gPSBnbG9iZTtcblxuICBjb25zdCBpc1NhdGVsbGl0ZSA9IG1hcFN0eWxlVHlwZSA9PT0gJ3NhdGVsbGl0ZSc7XG4gIGNvbnN0IGlzU2F0ZWxsaXRlU3RyZWV0ID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlLXN0cmVldCc7XG5cbiAgY29uc3QgbGF0Wm9vbUNvbXBlbnNhdGlvbiA9IGdsb2JlTGF0aXR1ZGVab29tQ29tcGVuc2F0aW9uKGxhdGl0dWRlKTtcblxuICAvLyBGYWxsIGJhY2sgdG8gdGhlIGZyZWUgQ0FSVE8gdGlsZXMgd2hlbmV2ZXIgbm8gTWFwYm94IHRva2VuIGlzIGF2YWlsYWJsZSBzb1xuICAvLyB0aGUgZ2xvYmUgYmFzZW1hcCBzdGlsbCByZW5kZXJzIChtYXRjaGVzIGtlcGxlcidzIGRlZmF1bHQgdG9rZW4tZnJlZVxuICAvLyBNYXBMaWJyZS9DQVJUTyBiYXNlbWFwcykuIENhbGxlcnMgc2hvdWxkIHBhc3MgYW4gZXhwbGljaXQgYGJhc2VtYXBQcm92aWRlcmBcbiAgLy8gKGRlcml2ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgc3R5bGUpIHNvIHRoZSBnbG9iZSBmb2xsb3dzIHRoZSAyRCBiYXNlbWFwLlxuICBjb25zdCBwcm92aWRlcjogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPVxuICAgIGJhc2VtYXBQcm92aWRlciA/PyByZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIodW5kZWZpbmVkLCBtYXBib3hBcGlBY2Nlc3NUb2tlbik7XG4gIGNvbnN0IHVzZUNhcnRvID0gcHJvdmlkZXIgPT09ICdjYXJ0byc7XG4gIGNvbnN0IGhhc1RpbGVBY2Nlc3MgPSB1c2VDYXJ0byB8fCBCb29sZWFuKG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcblxuICByZXR1cm4gW1xuICAgIC8vIEh1Z2UgaGFsbyBiZWhpbmQgdGhlIHRoaW4gcmVhbGlzdGljIGxpbWIgc28gYm90aCBjYW4gYmUgdmlzaWJsZSB0b2dldGhlci5cbiAgICBjb25maWcuYXRtb3NwaGVyZSA/IGdldEdsb2JlSHVnZUhhbG9MYXllcih7Y29uZmlnLCB6b29tfSkgOiBudWxsLFxuICAgIGNvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIoe2NvbmZpZywgem9vbX0pIDogbnVsbCxcblxuICAgIC8vIERlcHRoLW9ubHkgY3Jvc3Mtc2VjdGlvbiBkaXNrOiB3cml0ZXMgZGVwdGggYXQgdGhlIGdsb2JlJ3Mgc2lsaG91ZXR0ZSBzb1xuICAgIC8vIGZhci1zaWRlIGdlb21ldHJ5IChhcmNzL2xpbmVzKSBpcyBvY2NsdWRlZCBieSB0aGUgcGxhbmV0LlxuICAgIGdldEdsb2JlRGVwdGhEaXNrTGF5ZXIoe2ZpbGxDb2xvcjogY29uZmlnLnN1cmZhY2VDb2xvcn0pLFxuXG4gICAgLy8gQmFja2dyb3VuZCBzdXJmYWNlIHBvbHlnb25cbiAgICAoIWNvbmZpZy5iYXNlbWFwIHx8ICghaXNTYXRlbGxpdGUgJiYgIWlzU2F0ZWxsaXRlU3RyZWV0KSkgJiZcbiAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgIGlkOiAnZ2xvYmUtYmFja2dyb3VuZCcsXG4gICAgICAgIGRhdGE6IEJBQ0tHUk9VTkRfREFUQSxcbiAgICAgICAgZ2V0UG9seWdvbjogKChkOiBudW1iZXJbXVtdKSA9PiBkKSBhcyBhbnksXG4gICAgICAgIGZpbGxlZDogdHJ1ZSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiBjb25maWcuc3VyZmFjZUNvbG9yIGFzIGFueSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFDS0dST1VORF9QQVJBTUVURVJTXG4gICAgICB9KSxcblxuICAgIC8vIEZpbGwgaG9sZSBhdCBub3J0aCBwb2xlXG4gICAgY29uZmlnLmJhc2VtYXAgJiZcbiAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgIGlkOiAnZ2xvYmUtYmFja2dyb3VuZC1ub3J0aC1wb2xlJyxcbiAgICAgICAgZGF0YTogQkFDS0dST1VORF9OT1JUSF9QT0xFX0RBVEEsXG4gICAgICAgIGdldFBvbHlnb246ICgoZDogbnVtYmVyW11bXSkgPT4gZCkgYXMgYW55LFxuICAgICAgICBmaWxsZWQ6IHRydWUsXG4gICAgICAgIGdldEZpbGxDb2xvcjogKGNvbmZpZy53YXRlciA/IGNvbmZpZy53YXRlckNvbG9yIDogY29uZmlnLnN1cmZhY2VDb2xvcikgYXMgYW55LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQUNLR1JPVU5EX1BBUkFNRVRFUlNcbiAgICAgIH0pLFxuXG4gICAgLy8gU2F0ZWxsaXRlIHRpbGVzXG4gICAgY29uZmlnLmJhc2VtYXAgJiZcbiAgICAgIChpc1NhdGVsbGl0ZSB8fCBpc1NhdGVsbGl0ZVN0cmVldCkgJiZcbiAgICAgIGhhc1RpbGVBY2Nlc3MgJiZcbiAgICAgIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICBpZDogYGdsb2JlLXNhdGVsbGl0ZS10aWxlcy0ke3Byb3ZpZGVyfWAsXG4gICAgICAgIGRhdGE6IHVzZUNhcnRvXG4gICAgICAgICAgPyBbRVNSSV9XT1JMRF9JTUFHRVJZX1VSTF1cbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgYGh0dHBzOi8vYXBpLm1hcGJveC5jb20vdjQvbWFwYm94LnNhdGVsbGl0ZS97en0ve3h9L3t5fUAyeC5wbmc/YWNjZXNzX3Rva2VuPSR7bWFwYm94QXBpQWNjZXNzVG9rZW59YFxuICAgICAgICAgICAgXSxcbiAgICAgICAgbWluWm9vbTogMCxcbiAgICAgICAgbWF4Wm9vbTogdXNlQ2FydG8gPyAxOCA6IDE5LFxuICAgICAgICB6b29tT2Zmc2V0OiBHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQgKyBsYXRab29tQ29tcGVuc2F0aW9uLFxuICAgICAgICBleHRlbnQ6IEdMT0JFX1RJTEVfRVhURU5ULFxuICAgICAgICAvLyBFc3JpIHRpbGVzIGFyZSAyNTZweDsgTWFwYm94IEAyeCB0aWxlcyBhcmUgNTEycHguXG4gICAgICAgIHRpbGVTaXplOiB1c2VDYXJ0byA/IDI1NiA6IDUxMiAvIGRldmljZVBpeGVsUmF0aW8sXG4gICAgICAgIHJlbmRlclN1YkxheWVyczogKHByb3BzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBiYm94OiB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofVxuICAgICAgICAgIH0gPSBwcm9wcy50aWxlO1xuXG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBCaXRtYXBMYXllcihwcm9wcywge1xuICAgICAgICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgaW1hZ2U6IHByb3BzLmRhdGEsXG4gICAgICAgICAgICAgIGJvdW5kczogW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFTRU1BUF9SQVNURVJfUEFSQU1FVEVSU1xuICAgICAgfSksXG5cbiAgICAvLyBWZWN0b3IgYmFzZW1hcCAoTVZUIGxhYmVscy9hZG1pbi93YXRlcilcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgIWlzU2F0ZWxsaXRlICYmXG4gICAgICBoYXNUaWxlQWNjZXNzICYmXG4gICAgICBuZXcgTVZUTGF5ZXIoe1xuICAgICAgICAvLyBmb3JjZSB0aGUgbGF5ZXIgdG8gdXBkYXRlIHdoZW4gdGhlIHN0eWxlL2xhYmVsL3Byb3ZpZGVyIGNvbmZpZyBjaGFuZ2VzXG4gICAgICAgIGlkOiBgZ2xvYmUtYmFzZW1hcC1tdnQtbGF5ZXItJHtwcm92aWRlcn0tJHttYXBTdHlsZVR5cGV9YCxcbiAgICAgICAgZGF0YTogdXNlQ2FydG9cbiAgICAgICAgICA/IENBUlRPX1ZFQ1RPUl9USUxFX1VSTFNcbiAgICAgICAgICA6IGBodHRwczovL2EudGlsZXMubWFwYm94LmNvbS92NC9tYXBib3gubWFwYm94LXN0cmVldHMtdjgve3p9L3t4fS97eX0udmVjdG9yLnBiZj9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn1gLFxuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICAvLyBPdmVyem9vbSBwYXN0IHRoZSBzb3VyY2UncyBuYXRpdmUgbWF4IGluc3RlYWQgb2YgNDA0LWluZyBvbiB0aWxlcyB0aGF0XG4gICAgICAgIC8vIGRvbid0IGV4aXN0ICh3aGljaCByZW5kZXJzIGFzIGVtcHR5IHJlY3RhbmdsZXMgYXQgaGlnaCB6b29tKS5cbiAgICAgICAgbWF4Wm9vbTogdXNlQ2FydG8gPyBDQVJUT19WRUNUT1JfTUFYX0RBVEFfWk9PTSA6IE1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSxcbiAgICAgICAgem9vbU9mZnNldDpcbiAgICAgICAgICAodXNlQ2FydG8gPyBDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgOiBNQVBCT1hfR0xPQkVfVkVDVE9SX1pPT01fT0ZGU0VUKSArXG4gICAgICAgICAgbGF0Wm9vbUNvbXBlbnNhdGlvbixcbiAgICAgICAgZXh0ZW50OiBHTE9CRV9USUxFX0VYVEVOVCxcbiAgICAgICAgYmluYXJ5OiBmYWxzZSxcbiAgICAgICAgcGFyYW1ldGVyczogQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyxcbiAgICAgICAgbG9hZE9wdGlvbnM6IHVzZUNhcnRvXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC8vIE9wZW5NYXBUaWxlcyBzY2hlbWE6IGBib3VuZGFyeWAgPSBhZG1pbiBsaW5lcywgYHBsYWNlYCA9IGxhYmVscy5cbiAgICAgICAgICAgICAgbXZ0OiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJzOiBpc1NhdGVsbGl0ZVN0cmVldFxuICAgICAgICAgICAgICAgICAgPyBbJ3BsYWNlJywgJ2JvdW5kYXJ5J11cbiAgICAgICAgICAgICAgICAgIDogWydwbGFjZScsICdib3VuZGFyeScsICd3YXRlcicsICd0cmFuc3BvcnRhdGlvbiddXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgbXZ0OiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJzOiBpc1NhdGVsbGl0ZVN0cmVldFxuICAgICAgICAgICAgICAgICAgPyBbJ3BsYWNlX2xhYmVsJywgJ2FkbWluJ11cbiAgICAgICAgICAgICAgICAgIDogWydwbGFjZV9sYWJlbCcsICdhZG1pbicsICd3YXRlcicsICdyb2FkJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgLy8gUmVuZGVyIGFkbWluL3dhdGVyIHZpYSBHZW9Kc29uTGF5ZXIgYW5kIHBsYWNlIGxhYmVscyB2aWEgVGV4dExheWVyLlxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlbmRlclN1YkxheWVyczogKHByb3BzOiBhbnkpID0+IG5ldyBNVlRMYWJlbExheWVyKHByb3BzKSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICd3YXRlcic6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcud2F0ZXIgPyBjb25maWcud2F0ZXJDb2xvciA6IElOVklTSUJMRV9DT0xPUjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuc3VyZmFjZUNvbG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGluZUNvbG9yOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuYWRtaW5MaW5lcyA/IGNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgOiBJTlZJU0lCTEVfQ09MT1I7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnN1cmZhY2VDb2xvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldExpbmVXaWR0aDogKGY6IGFueSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoZ2V0QmFzZW1hcExheWVyS2luZChmLnByb3BlcnRpZXMubGF5ZXJOYW1lKSkge1xuICAgICAgICAgICAgY2FzZSAnYWRtaW4nOlxuICAgICAgICAgICAgICBzd2l0Y2ggKGYucHJvcGVydGllcy5hZG1pbl9sZXZlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuNzU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IFtjb25maWcud2F0ZXJDb2xvciwgY29uZmlnLnN1cmZhY2VDb2xvciwgY29uZmlnLndhdGVyXSxcbiAgICAgICAgICBnZXRMaW5lQ29sb3I6IFtjb25maWcuYWRtaW5MaW5lc0NvbG9yLCBjb25maWcuc3VyZmFjZUNvbG9yLCBjb25maWcuYWRtaW5MaW5lc11cbiAgICAgICAgfSxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IDAsXG4gICAgICAgIGxpbmVXaWR0aE1heFBpeGVsczogMjAsXG4gICAgICAgIGdldFBvaW50UmFkaXVzOiAwLFxuICAgICAgICBwb2ludFJhZGl1c01pblBpeGVsczogMFxuICAgICAgfSBhcyBhbnkpXG4gIF0uZmlsdGVyKEJvb2xlYW4pIGFzIExheWVyW107XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVUb3BMYXllcnMgPSAoe2dsb2JlLCB6b29tfToge2dsb2JlOiBHbG9iZTsgem9vbT86IG51bWJlcn0pOiBMYXllcltdID0+IHtcbiAgY29uc3Qge2NvbmZpZ30gPSBnbG9iZTtcbiAgcmV0dXJuIFtjb25maWcuYXRtb3NwaGVyZSA/IGdldEdsb2JlQXRtb3NwaGVyZUxheWVyKHtjb25maWcsIHpvb219KSA6IG51bGxdLmZpbHRlcihcbiAgICBCb29sZWFuXG4gICkgYXMgTGF5ZXJbXTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsaUJBQWlCLFFBQWMsZUFBZTtBQUN0RCxTQUFRQyxpQkFBaUIsRUFBRUMsV0FBVyxRQUFPLGlCQUFpQjtBQUM5RCxTQUFRQyxTQUFTLEVBQUVDLFFBQVEsUUFBTyxxQkFBcUI7QUFLdkQsU0FDRUMsdUJBQXVCLEVBQ3ZCQywwQkFBMEIsRUFDMUJDLHFCQUFxQixRQUNoQixvQkFBb0I7QUFDM0IsU0FBUUMsc0JBQXNCLFFBQU8sMEJBQTBCO0FBQy9ELFNBQVFDLGFBQWEsUUFBTyxtQkFBbUI7QUFJL0MsSUFBTUMsZ0JBQWdCLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUMvQixDQUFDLEVBQ0EsT0FBT0MsTUFBTSxLQUFLLFdBQVcsSUFBSUEsTUFBTSxDQUFDSCxnQkFBZ0IsSUFBSyxDQUNoRSxDQUFDO0FBRUQsSUFBTUkscUJBQXFCLEdBQUc7RUFDNUJDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLFNBQVMsRUFBRTtBQUNiLENBQUM7QUFFRCxJQUFNQyx5QkFBeUIsR0FBRztFQUNoQ0QsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUVELElBQU1FLGVBQWUsR0FBRyxDQUN0QixDQUNFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQ1YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQ1AsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQ1QsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFDVixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUNSLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FDWixDQUNGO0FBRUQsSUFBTUMsMEJBQTBCLEdBQUcsQ0FDakMsQ0FDRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUs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
@@ -89,4 +89,4 @@ export function drawStarsBackground(ctx, width, height) {
89
89
  ctx.fillStyle = pattern;
90
90
  ctx.fillRect(0, 0, width, height);
91
91
  }
92
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFSX0NBTlZBU19TSVpFIiwiU1RBUl9DT1VOVCIsInNlZWRlZFJhbmRvbSIsInNlZWQiLCJzIiwiVFJBTlNQQVJFTlRfUElYRUwiLCJjYWNoZWRDYW52YXMiLCJjYWNoZWREYXRhVXJsIiwiZ2VuZXJhdGVTdGFyc1RpbGUiLCJkb2N1bWVudCIsImNhbnZhcyIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImhlaWdodCIsImN0eCIsImdldENvbnRleHQiLCJjbGVhclJlY3QiLCJyYW5kb20iLCJpIiwieCIsInkiLCJicmlnaHRuZXNzIiwiTWF0aCIsImZsb29yIiwiYWxwaGEiLCJyYWRpdXMiLCJiZWdpblBhdGgiLCJhcmMiLCJQSSIsImZpbGxTdHlsZSIsImNvbmNhdCIsImZpbGwiLCJnZXRTdGFyc1RpbGVDYW52YXMiLCJnZXRTdGFyc0JhY2tncm91bmRJbWFnZSIsInRvRGF0YVVSTCIsImRyYXdTdGFyc0JhY2tncm91bmQiLCJ0aWxlIiwicGF0dGVybiIsImNyZWF0ZVBhdHRlcm4iLCJmaWxsUmVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9nbG9iZS1zdGFycy1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHRpbGVhYmxlIHN0YXItZmllbGQgdXNlZCBiZWhpbmQgdGhlIGdsb2JlLlxuICogVGhlIGxpdmUgbWFwIGFuZCB2aWRlby1leHBvcnQgcHJldmlldyBwYWludCBpdCBhcyBhIENTUyBgYmFja2dyb3VuZC1pbWFnZWBcbiAqIHdpdGggYGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXRgLiBWaWRlby1leHBvcnQgY2FwdHVyZSAod2hpY2ggb25seSByZWFkc1xuICogY2FudmFzIHBpeGVscykgdGlsZXMgdGhlIHNhbWUgaW1hZ2Ugb250byBhIDJEIGNvbnRleHQgdmlhXG4gKiBgZHJhd1N0YXJzQmFja2dyb3VuZGAuIFRoZSByZXN1bHQgaXMgZGV0ZXJtaW5pc3RpYyAoc2VlZGVkIFBSTkcpIGFuZCBjYWNoZWRcbiAqIHNvIGl0J3Mgb25seSBnZW5lcmF0ZWQgb25jZS5cbiAqL1xuXG5jb25zdCBTVEFSX0NBTlZBU19TSVpFID0gNTEyO1xuY29uc3QgU1RBUl9DT1VOVCA9IDYwMDtcblxuLy8gU2VlZGVkIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAoUGFyay1NaWxsZXIpIGZvciBkZXRlcm1pbmlzbS5cbmZ1bmN0aW9uIHNlZWRlZFJhbmRvbShzZWVkOiBudW1iZXIpOiAoKSA9PiBudW1iZXIge1xuICBsZXQgcyA9IHNlZWQ7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgcyA9IChzICogMTY4MDcpICUgMjE0NzQ4MzY0NztcbiAgICByZXR1cm4gKHMgLSAxKSAvIDIxNDc0ODM2NDY7XG4gIH07XG59XG5cbi8vIFRyYW5zcGFyZW50IDF4MSBQTkcgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gYSBjYW52YXMgY29udGV4dCBpcyB1bmF2YWlsYWJsZVxuLy8gKFNTUiBvciB1bnN1cHBvcnRlZCBicm93c2VyKSwgc28gdGhhdCBgdXJsKC4uLilgIG5ldmVyIHJlc29sdmVzIHRvIGFuIGVtcHR5XG4vLyB2YWx1ZSB0aGF0IGNvdWxkIHRyaWdnZXIgYSByZXF1ZXN0IGZvciB0aGUgY3VycmVudCBkb2N1bWVudC5cbmNvbnN0IFRSQU5TUEFSRU5UX1BJWEVMID1cbiAgJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBUUFBQUMxSEF3Q0FBQUFDMGxFUVZSNDJtTmtZQUFBQUFZQUFqQ0IwQzhBQUFBQVNVVk9SSzVDWUlJPSc7XG5cbmxldCBjYWNoZWRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5sZXQgY2FjaGVkRGF0YVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU3RhcnNUaWxlKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgY2FudmFzLndpZHRoID0gU1RBUl9DQU5WQVNfU0laRTtcbiAgY2FudmFzLmhlaWdodCA9IFNUQVJfQ0FOVkFTX1NJWkU7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gVHJhbnNwYXJlbnQgYmFja2dyb3VuZCBzbyBDU1MgYmFja2dyb3VuZENvbG9yIC8gY2FudmFzIGZpbGwgc2hvd3MgdGhyb3VnaFxuICBjdHguY2xlYXJSZWN0KDAsIDAsIFNUQVJfQ0FOVkFTX1NJWkUsIFNUQVJfQ0FOVkFTX1NJWkUpO1xuXG4gIGNvbnN0IHJhbmRvbSA9IHNlZWRlZFJhbmRvbSg0Mik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBTVEFSX0NPVU5UOyBpKyspIHtcbiAgICBjb25zdCB4ID0gcmFuZG9tKCkgKiBTVEFSX0NBTlZBU19TSVpFO1xuICAgIGNvbnN0IHkgPSByYW5kb20oKSAqIFNUQVJfQ0FOVkFTX1NJWkU7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDE0MCArIE1hdGguZmxvb3IocmFuZG9tKCkgKiAxMTUpOyAvLyAxNDDigJMyNTVcbiAgICBjb25zdCBhbHBoYSA9IDAuNCArIHJhbmRvbSgpICogMC42OyAvLyAwLjTigJMxLjBcbiAgICBjb25zdCByYWRpdXMgPSAwLjMgKyByYW5kb20oKSAqIDEuMDsgLy8gMC4z4oCTMS4zIHB4XG5cbiAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgY3R4LmFyYyh4LCB5LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyKTtcbiAgICBjdHguZmlsbFN0eWxlID0gYHJnYmEoJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHthbHBoYX0pYDtcbiAgICBjdHguZmlsbCgpO1xuICB9XG5cbiAgcmV0dXJuIGNhbnZhcztcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnNUaWxlQ2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gIGlmIChjYWNoZWRDYW52YXMpIHJldHVybiBjYWNoZWRDYW52YXM7XG4gIGNhY2hlZENhbnZhcyA9IGdlbmVyYXRlU3RhcnNUaWxlKCk7XG4gIHJldHVybiBjYWNoZWRDYW52YXM7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRhdGEgVVJMIG9mIGEgdGlsZWFibGUgc3Rhci1maWVsZCBpbWFnZSAoNTEyw5c1MTIgUE5HKS5cbiAqIEdlbmVyYXRlcyB0aGUgaW1hZ2Ugb25jZSBhbmQgY2FjaGVzIGl0IGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhcnNCYWNrZ3JvdW5kSW1hZ2UoKTogc3RyaW5nIHtcbiAgaWYgKGNhY2hlZERhdGFVcmwpIHJldHVybiBjYWNoZWREYXRhVXJsO1xuXG4gIGNvbnN0IGNhbnZhcyA9IGdldFN0YXJzVGlsZUNhbnZhcygpO1xuICBpZiAoIWNhbnZhcykge1xuICAgIC8vIFNTUiAvIG1pc3NpbmcgMkQgY29udGV4dDogcmV0dXJuIGEgdHJhbnNwYXJlbnQgMXgxIHBpeGVsIHNvIHVybCgpIG5ldmVyXG4gICAgLy8gcmVzb2x2ZXMgdG8gYW4gZW1wdHkgdmFsdWUgdGhhdCBjb3VsZCB0cmlnZ2VyIGEgcmVxdWVzdCBmb3IgdGhlIGRvY3VtZW50LlxuICAgIHJldHVybiAoY2FjaGVkRGF0YVVybCA9IFRSQU5TUEFSRU5UX1BJWEVMKTtcbiAgfVxuXG4gIGNhY2hlZERhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgcmV0dXJuIGNhY2hlZERhdGFVcmw7XG59XG5cbi8qKlxuICogVGlsZSB0aGUgc3Rhci1maWVsZCBvbnRvIGEgMkQgY2FudmFzIChlLmcuIHZpZGVvLWV4cG9ydCBmcmFtZSBjYXB0dXJlKS5cbiAqIFN0YXJzIGFyZSBkcmF3biB3aXRoIGFscGhhIHNvIHRoZSBjYWxsZXIgc2hvdWxkIGZpbGwgdGhlIGJhY2tncm91bmQgY29sb3IgZmlyc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcmF3U3RhcnNCYWNrZ3JvdW5kKFxuICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgd2lkdGg6IG51bWJlcixcbiAgaGVpZ2h0OiBudW1iZXJcbik6IHZvaWQge1xuICBjb25zdCB0aWxlID0gZ2V0U3RhcnNUaWxlQ2FudmFzKCk7XG4gIGlmICghdGlsZSB8fCB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSByZXR1cm47XG4gIGNvbnN0IHBhdHRlcm4gPSBjdHguY3JlYXRlUGF0dGVybih0aWxlLCAncmVwZWF0Jyk7XG4gIGlmICghcGF0dGVybikgcmV0dXJuO1xuICBjdHguZmlsbFN0eWxlID0gcGF0dGVybjtcbiAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xufVxuXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxHQUFHO0FBQzVCLElBQU1DLFVBQVUsR0FBRyxHQUFHOztBQUV0QjtBQUNBLFNBQVNDLFlBQVlBLENBQUNDLElBQVksRUFBZ0I7RUFDaEQsSUFBSUMsQ0FBQyxHQUFHRCxJQUFJO0VBQ1osT0FBTyxZQUFNO0lBQ1hDLENBQUMsR0FBSUEsQ0FBQyxHQUFHLEtBQUssR0FBSSxVQUFVO0lBQzVCLE9BQU8sQ0FBQ0EsQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVO0VBQzdCLENBQUM7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxpQkFBaUIsR0FDckIsb0hBQW9IO0FBRXRILElBQUlDLFlBQXNDLEdBQUcsSUFBSTtBQUNqRCxJQUFJQyxhQUE0QixHQUFHLElBQUk7QUFFdkMsU0FBU0MsaUJBQWlCQSxDQUFBLEVBQTZCO0VBQ3JELElBQUksT0FBT0MsUUFBUSxLQUFLLFdBQVcsRUFBRTtJQUNuQyxPQUFPLElBQUk7RUFDYjtFQUVBLElBQU1DLE1BQU0sR0FBR0QsUUFBUSxDQUFDRSxhQUFhLENBQUMsUUFBUSxDQUFDO0VBQy9DRCxNQUFNLENBQUNFLEtBQUssR0FBR1osZ0JBQWdCO0VBQy9CVSxNQUFNLENBQUNHLE1BQU0sR0FBR2IsZ0JBQWdCO0VBQ2hDLElBQU1jLEdBQUcsR0FBR0osTUFBTSxDQUFDSyxVQUFVLENBQUMsSUFBSSxDQUFDO0VBQ25DLElBQUksQ0FBQ0QsR0FBRyxFQUFFLE9BQU8sSUFBSTs7RUFFckI7RUFDQUEsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRWhCLGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQztFQUV2RCxJQUFNaUIsTUFBTSxHQUFHZixZQUFZLENBQUMsRUFBRSxDQUFDO0VBRS9CLEtBQUssSUFBSWdCLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2pCLFVBQVUsRUFBRWlCLENBQUMsRUFBRSxFQUFFO0lBQ25DLElBQU1DLENBQUMsR0FBR0YsTUFBTSxDQUFDLENBQUMsR0FBR2pCLGdCQUFnQjtJQUNyQyxJQUFNb0IsQ0FBQyxHQUFHSCxNQUFNLENBQUMsQ0FBQyxHQUFHakIsZ0JBQWdCO0lBQ3JDLElBQU1xQixVQUFVLEdBQUcsR0FBRyxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ04sTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQU1PLEtBQUssR0FBRyxHQUFHLEdBQUdQLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDcEMsSUFBTVEsTUFBTSxHQUFHLEdBQUcsR0FBR1IsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQzs7SUFFckNILEdBQUcsQ0FBQ1ksU0FBUyxDQUFDLENBQUM7SUFDZlosR0FBRyxDQUFDYSxHQUFHLENBQUNSLENBQUMsRUFBRUMsQ0FBQyxFQUFFSyxNQUFNLEVBQUUsQ0FBQyxFQUFFSCxJQUFJLENBQUNNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckNkLEdBQUcsQ0FBQ2UsU0FBUyxXQUFBQyxNQUFBLENBQVdULFVBQVUsUUFBQVMsTUFBQSxDQUFLVCxVQUFVLFFBQUFTLE1BQUEsQ0FBS1QsVUFBVSxRQUFBUyxNQUFBLENBQUtOLEtBQUssTUFBRztJQUM3RVYsR0FBRyxDQUFDaUIsSUFBSSxDQUFDLENBQUM7RUFDWjtFQUVBLE9BQU9yQixNQUFNO0FBQ2Y7QUFFQSxTQUFTc0Isa0JBQWtCQSxDQUFBLEVBQTZCO0VBQ3RELElBQUkxQixZQUFZLEVBQUUsT0FBT0EsWUFBWTtFQUNyQ0EsWUFBWSxHQUFHRSxpQkFBaUIsQ0FBQyxDQUFDO0VBQ2xDLE9BQU9GLFlBQVk7QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVMyQix1QkFBdUJBLENBQUEsRUFBVztFQUNoRCxJQUFJMUIsYUFBYSxFQUFFLE9BQU9BLGFBQWE7RUFFdkMsSUFBTUcsTUFBTSxHQUFHc0Isa0JBQWtCLENBQUMsQ0FBQztFQUNuQyxJQUFJLENBQUN0QixNQUFNLEVBQUU7SUFDWDtJQUNBO0lBQ0EsT0FBUUgsYUFBYSxHQUFHRixpQkFBaUI7RUFDM0M7RUFFQUUsYUFBYSxHQUFHRyxNQUFNLENBQUN3QixTQUFTLENBQUMsV0FBVyxDQUFDO0VBQzdDLE9BQU8zQixhQUFhO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTNEIsbUJBQW1CQSxDQUNqQ3JCLEdBQTZCLEVBQzdCRixLQUFhLEVBQ2JDLE1BQWMsRUFDUjtFQUNOLElBQU11QixJQUFJLEdBQUdKLGtCQUFrQixDQUFDLENBQUM7RUFDakMsSUFBSSxDQUFDSSxJQUFJLElBQUl4QixLQUFLLElBQUksQ0FBQyxJQUFJQyxNQUFNLElBQUksQ0FBQyxFQUFFO0VBQ3hDLElBQU13QixPQUFPLEdBQUd2QixHQUFHLENBQUN3QixhQUFhLENBQUNGLElBQUksRUFBRSxRQUFRLENBQUM7RUFDakQsSUFBSSxDQUFDQyxPQUFPLEVBQUU7RUFDZHZCLEdBQUcsQ0FBQ2UsU0FBUyxHQUFHUSxPQUFPO0VBQ3ZCdkIsR0FBRyxDQUFDeUIsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUzQixLQUFLLEVBQUVDLE1BQU0sQ0FBQztBQUNuQyIsImlnbm9yZUxpc3QiOltdfQ==
92
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFSX0NBTlZBU19TSVpFIiwiU1RBUl9DT1VOVCIsInNlZWRlZFJhbmRvbSIsInNlZWQiLCJzIiwiVFJBTlNQQVJFTlRfUElYRUwiLCJjYWNoZWRDYW52YXMiLCJjYWNoZWREYXRhVXJsIiwiZ2VuZXJhdGVTdGFyc1RpbGUiLCJkb2N1bWVudCIsImNhbnZhcyIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImhlaWdodCIsImN0eCIsImdldENvbnRleHQiLCJjbGVhclJlY3QiLCJyYW5kb20iLCJpIiwieCIsInkiLCJicmlnaHRuZXNzIiwiTWF0aCIsImZsb29yIiwiYWxwaGEiLCJyYWRpdXMiLCJiZWdpblBhdGgiLCJhcmMiLCJQSSIsImZpbGxTdHlsZSIsImNvbmNhdCIsImZpbGwiLCJnZXRTdGFyc1RpbGVDYW52YXMiLCJnZXRTdGFyc0JhY2tncm91bmRJbWFnZSIsInRvRGF0YVVSTCIsImRyYXdTdGFyc0JhY2tncm91bmQiLCJ0aWxlIiwicGF0dGVybiIsImNyZWF0ZVBhdHRlcm4iLCJmaWxsUmVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9nbG9iZS1zdGFycy1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHRpbGVhYmxlIHN0YXItZmllbGQgdXNlZCBiZWhpbmQgdGhlIGdsb2JlLlxuICogVGhlIGxpdmUgbWFwIGFuZCB2aWRlby1leHBvcnQgcHJldmlldyBwYWludCBpdCBhcyBhIENTUyBgYmFja2dyb3VuZC1pbWFnZWBcbiAqIHdpdGggYGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXRgLiBWaWRlby1leHBvcnQgY2FwdHVyZSAod2hpY2ggb25seSByZWFkc1xuICogY2FudmFzIHBpeGVscykgdGlsZXMgdGhlIHNhbWUgaW1hZ2Ugb250byBhIDJEIGNvbnRleHQgdmlhXG4gKiBgZHJhd1N0YXJzQmFja2dyb3VuZGAuIFRoZSByZXN1bHQgaXMgZGV0ZXJtaW5pc3RpYyAoc2VlZGVkIFBSTkcpIGFuZCBjYWNoZWRcbiAqIHNvIGl0J3Mgb25seSBnZW5lcmF0ZWQgb25jZS5cbiAqL1xuXG5jb25zdCBTVEFSX0NBTlZBU19TSVpFID0gNTEyO1xuY29uc3QgU1RBUl9DT1VOVCA9IDYwMDtcblxuLy8gU2VlZGVkIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAoUGFyay1NaWxsZXIpIGZvciBkZXRlcm1pbmlzbS5cbmZ1bmN0aW9uIHNlZWRlZFJhbmRvbShzZWVkOiBudW1iZXIpOiAoKSA9PiBudW1iZXIge1xuICBsZXQgcyA9IHNlZWQ7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgcyA9IChzICogMTY4MDcpICUgMjE0NzQ4MzY0NztcbiAgICByZXR1cm4gKHMgLSAxKSAvIDIxNDc0ODM2NDY7XG4gIH07XG59XG5cbi8vIFRyYW5zcGFyZW50IDF4MSBQTkcgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gYSBjYW52YXMgY29udGV4dCBpcyB1bmF2YWlsYWJsZVxuLy8gKFNTUiBvciB1bnN1cHBvcnRlZCBicm93c2VyKSwgc28gdGhhdCBgdXJsKC4uLilgIG5ldmVyIHJlc29sdmVzIHRvIGFuIGVtcHR5XG4vLyB2YWx1ZSB0aGF0IGNvdWxkIHRyaWdnZXIgYSByZXF1ZXN0IGZvciB0aGUgY3VycmVudCBkb2N1bWVudC5cbmNvbnN0IFRSQU5TUEFSRU5UX1BJWEVMID1cbiAgJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBUUFBQUMxSEF3Q0FBQUFDMGxFUVZSNDJtTmtZQUFBQUFZQUFqQ0IwQzhBQUFBQVNVVk9SSzVDWUlJPSc7XG5cbmxldCBjYWNoZWRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5sZXQgY2FjaGVkRGF0YVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU3RhcnNUaWxlKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgY2FudmFzLndpZHRoID0gU1RBUl9DQU5WQVNfU0laRTtcbiAgY2FudmFzLmhlaWdodCA9IFNUQVJfQ0FOVkFTX1NJWkU7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gVHJhbnNwYXJlbnQgYmFja2dyb3VuZCBzbyBDU1MgYmFja2dyb3VuZENvbG9yIC8gY2FudmFzIGZpbGwgc2hvd3MgdGhyb3VnaFxuICBjdHguY2xlYXJSZWN0KDAsIDAsIFNUQVJfQ0FOVkFTX1NJWkUsIFNUQVJfQ0FOVkFTX1NJWkUpO1xuXG4gIGNvbnN0IHJhbmRvbSA9IHNlZWRlZFJhbmRvbSg0Mik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBTVEFSX0NPVU5UOyBpKyspIHtcbiAgICBjb25zdCB4ID0gcmFuZG9tKCkgKiBTVEFSX0NBTlZBU19TSVpFO1xuICAgIGNvbnN0IHkgPSByYW5kb20oKSAqIFNUQVJfQ0FOVkFTX1NJWkU7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDE0MCArIE1hdGguZmxvb3IocmFuZG9tKCkgKiAxMTUpOyAvLyAxNDDigJMyNTVcbiAgICBjb25zdCBhbHBoYSA9IDAuNCArIHJhbmRvbSgpICogMC42OyAvLyAwLjTigJMxLjBcbiAgICBjb25zdCByYWRpdXMgPSAwLjMgKyByYW5kb20oKSAqIDEuMDsgLy8gMC4z4oCTMS4zIHB4XG5cbiAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgY3R4LmFyYyh4LCB5LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyKTtcbiAgICBjdHguZmlsbFN0eWxlID0gYHJnYmEoJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHthbHBoYX0pYDtcbiAgICBjdHguZmlsbCgpO1xuICB9XG5cbiAgcmV0dXJuIGNhbnZhcztcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnNUaWxlQ2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gIGlmIChjYWNoZWRDYW52YXMpIHJldHVybiBjYWNoZWRDYW52YXM7XG4gIGNhY2hlZENhbnZhcyA9IGdlbmVyYXRlU3RhcnNUaWxlKCk7XG4gIHJldHVybiBjYWNoZWRDYW52YXM7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRhdGEgVVJMIG9mIGEgdGlsZWFibGUgc3Rhci1maWVsZCBpbWFnZSAoNTEyw5c1MTIgUE5HKS5cbiAqIEdlbmVyYXRlcyB0aGUgaW1hZ2Ugb25jZSBhbmQgY2FjaGVzIGl0IGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhcnNCYWNrZ3JvdW5kSW1hZ2UoKTogc3RyaW5nIHtcbiAgaWYgKGNhY2hlZERhdGFVcmwpIHJldHVybiBjYWNoZWREYXRhVXJsO1xuXG4gIGNvbnN0IGNhbnZhcyA9IGdldFN0YXJzVGlsZUNhbnZhcygpO1xuICBpZiAoIWNhbnZhcykge1xuICAgIC8vIFNTUiAvIG1pc3NpbmcgMkQgY29udGV4dDogcmV0dXJuIGEgdHJhbnNwYXJlbnQgMXgxIHBpeGVsIHNvIHVybCgpIG5ldmVyXG4gICAgLy8gcmVzb2x2ZXMgdG8gYW4gZW1wdHkgdmFsdWUgdGhhdCBjb3VsZCB0cmlnZ2VyIGEgcmVxdWVzdCBmb3IgdGhlIGRvY3VtZW50LlxuICAgIHJldHVybiAoY2FjaGVkRGF0YVVybCA9IFRSQU5TUEFSRU5UX1BJWEVMKTtcbiAgfVxuXG4gIGNhY2hlZERhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgcmV0dXJuIGNhY2hlZERhdGFVcmw7XG59XG5cbi8qKlxuICogVGlsZSB0aGUgc3Rhci1maWVsZCBvbnRvIGEgMkQgY2FudmFzIChlLmcuIHZpZGVvLWV4cG9ydCBmcmFtZSBjYXB0dXJlKS5cbiAqIFN0YXJzIGFyZSBkcmF3biB3aXRoIGFscGhhIHNvIHRoZSBjYWxsZXIgc2hvdWxkIGZpbGwgdGhlIGJhY2tncm91bmQgY29sb3IgZmlyc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcmF3U3RhcnNCYWNrZ3JvdW5kKFxuICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgd2lkdGg6IG51bWJlcixcbiAgaGVpZ2h0OiBudW1iZXJcbik6IHZvaWQge1xuICBjb25zdCB0aWxlID0gZ2V0U3RhcnNUaWxlQ2FudmFzKCk7XG4gIGlmICghdGlsZSB8fCB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSByZXR1cm47XG4gIGNvbnN0IHBhdHRlcm4gPSBjdHguY3JlYXRlUGF0dGVybih0aWxlLCAncmVwZWF0Jyk7XG4gIGlmICghcGF0dGVybikgcmV0dXJuO1xuICBjdHguZmlsbFN0eWxlID0gcGF0dGVybjtcbiAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTUEsZ0JBQWdCLEdBQUcsR0FBRztBQUM1QixJQUFNQyxVQUFVLEdBQUcsR0FBRzs7QUFFdEI7QUFDQSxTQUFTQyxZQUFZQSxDQUFDQyxJQUFZLEVBQWdCO0VBQ2hELElBQUlDLENBQUMsR0FBR0QsSUFBSTtFQUNaLE9BQU8sWUFBTTtJQUNYQyxDQUFDLEdBQUlBLENBQUMsR0FBRyxLQUFLLEdBQUksVUFBVTtJQUM1QixPQUFPLENBQUNBLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVTtFQUM3QixDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsaUJBQWlCLEdBQ3JCLG9IQUFvSDtBQUV0SCxJQUFJQyxZQUFzQyxHQUFHLElBQUk7QUFDakQsSUFBSUMsYUFBNEIsR0FBRyxJQUFJO0FBRXZDLFNBQVNDLGlCQUFpQkEsQ0FBQSxFQUE2QjtFQUNyRCxJQUFJLE9BQU9DLFFBQVEsS0FBSyxXQUFXLEVBQUU7SUFDbkMsT0FBTyxJQUFJO0VBQ2I7RUFFQSxJQUFNQyxNQUFNLEdBQUdELFFBQVEsQ0FBQ0UsYUFBYSxDQUFDLFFBQVEsQ0FBQztFQUMvQ0QsTUFBTSxDQUFDRSxLQUFLLEdBQUdaLGdCQUFnQjtFQUMvQlUsTUFBTSxDQUFDRyxNQUFNLEdBQUdiLGdCQUFnQjtFQUNoQyxJQUFNYyxHQUFHLEdBQUdKLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDLElBQUksQ0FBQztFQUNuQyxJQUFJLENBQUNELEdBQUcsRUFBRSxPQUFPLElBQUk7O0VBRXJCO0VBQ0FBLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVoQixnQkFBZ0IsRUFBRUEsZ0JBQWdCLENBQUM7RUFFdkQsSUFBTWlCLE1BQU0sR0FBR2YsWUFBWSxDQUFDLEVBQUUsQ0FBQztFQUUvQixLQUFLLElBQUlnQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdqQixVQUFVLEVBQUVpQixDQUFDLEVBQUUsRUFBRTtJQUNuQyxJQUFNQyxDQUFDLEdBQUdGLE1BQU0sQ0FBQyxDQUFDLEdBQUdqQixnQkFBZ0I7SUFDckMsSUFBTW9CLENBQUMsR0FBR0gsTUFBTSxDQUFDLENBQUMsR0FBR2pCLGdCQUFnQjtJQUNyQyxJQUFNcUIsVUFBVSxHQUFHLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNOLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFNTyxLQUFLLEdBQUcsR0FBRyxHQUFHUCxNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQU1RLE1BQU0sR0FBRyxHQUFHLEdBQUdSLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7O0lBRXJDSCxHQUFHLENBQUNZLFNBQVMsQ0FBQyxDQUFDO0lBQ2ZaLEdBQUcsQ0FBQ2EsR0FBRyxDQUFDUixDQUFDLEVBQUVDLENBQUMsRUFBRUssTUFBTSxFQUFFLENBQUMsRUFBRUgsSUFBSSxDQUFDTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDZCxHQUFHLENBQUNlLFNBQVMsV0FBQUMsTUFBQSxDQUFXVCxVQUFVLFFBQUFTLE1BQUEsQ0FBS1QsVUFBVSxRQUFBUyxNQUFBLENBQUtULFVBQVUsUUFBQVMsTUFBQSxDQUFLTixLQUFLLE1BQUc7SUFDN0VWLEdBQUcsQ0FBQ2lCLElBQUksQ0FBQyxDQUFDO0VBQ1o7RUFFQSxPQUFPckIsTUFBTTtBQUNmO0FBRUEsU0FBU3NCLGtCQUFrQkEsQ0FBQSxFQUE2QjtFQUN0RCxJQUFJMUIsWUFBWSxFQUFFLE9BQU9BLFlBQVk7RUFDckNBLFlBQVksR0FBR0UsaUJBQWlCLENBQUMsQ0FBQztFQUNsQyxPQUFPRixZQUFZO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTMkIsdUJBQXVCQSxDQUFBLEVBQVc7RUFDaEQsSUFBSTFCLGFBQWEsRUFBRSxPQUFPQSxhQUFhO0VBRXZDLElBQU1HLE1BQU0sR0FBR3NCLGtCQUFrQixDQUFDLENBQUM7RUFDbkMsSUFBSSxDQUFDdEIsTUFBTSxFQUFFO0lBQ1g7SUFDQTtJQUNBLE9BQVFILGFBQWEsR0FBR0YsaUJBQWlCO0VBQzNDO0VBRUFFLGFBQWEsR0FBR0csTUFBTSxDQUFDd0IsU0FBUyxDQUFDLFdBQVcsQ0FBQztFQUM3QyxPQUFPM0IsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBUzRCLG1CQUFtQkEsQ0FDakNyQixHQUE2QixFQUM3QkYsS0FBYSxFQUNiQyxNQUFjLEVBQ1I7RUFDTixJQUFNdUIsSUFBSSxHQUFHSixrQkFBa0IsQ0FBQyxDQUFDO0VBQ2pDLElBQUksQ0FBQ0ksSUFBSSxJQUFJeEIsS0FBSyxJQUFJLENBQUMsSUFBSUMsTUFBTSxJQUFJLENBQUMsRUFBRTtFQUN4QyxJQUFNd0IsT0FBTyxHQUFHdkIsR0FBRyxDQUFDd0IsYUFBYSxDQUFDRixJQUFJLEVBQUUsUUFBUSxDQUFDO0VBQ2pELElBQUksQ0FBQ0MsT0FBTyxFQUFFO0VBQ2R2QixHQUFHLENBQUNlLFNBQVMsR0FBR1EsT0FBTztFQUN2QnZCLEdBQUcsQ0FBQ3lCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFM0IsS0FBSyxFQUFFQyxNQUFNLENBQUM7QUFDbkMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -37,4 +37,4 @@ describe('globe-stars-layer', function () {
37
37
  expect(destCtx.fillRect).toHaveBeenCalledWith(0, 0, 1280, 720);
38
38
  });
39
39
  });
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkcmF3U3RhcnNCYWNrZ3JvdW5kIiwiZGVzY3JpYmUiLCJhZnRlckVhY2giLCJqZXN0IiwicmVzdG9yZUFsbE1vY2tzIiwidGVzdCIsInRpbGVDdHgiLCJjbGVhclJlY3QiLCJmbiIsImJlZ2luUGF0aCIsImFyYyIsImZpbGwiLCJmaWxsU3R5bGUiLCJvcmlnaW5hbEdldENvbnRleHQiLCJIVE1MQ2FudmFzRWxlbWVudCIsInByb3RvdHlwZSIsImdldENvbnRleHQiLCJzcHlPbiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsInR5cGUiLCJjYWxsIiwicGF0dGVybiIsImlkIiwiZGVzdEN0eCIsImNyZWF0ZVBhdHRlcm4iLCJmaWxsUmVjdCIsImV4cGVjdCIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiYW55IiwidG9CZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9nbG9iZS1zdGFycy1sYXllci5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7ZHJhd1N0YXJzQmFja2dyb3VuZH0gZnJvbSAnLi9nbG9iZS1zdGFycy1sYXllcic7XG5cbmRlc2NyaWJlKCdnbG9iZS1zdGFycy1sYXllcicsICgpID0+IHtcbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuICB9KTtcblxuICB0ZXN0KCdkcmF3U3RhcnNCYWNrZ3JvdW5kIHRpbGVzIHRoZSBzdGFyIGNhbnZhcyB3aXRoIGEgcmVwZWF0aW5nIHBhdHRlcm4nLCAoKSA9PiB7XG4gICAgY29uc3QgdGlsZUN0eCA9IHtcbiAgICAgIGNsZWFyUmVjdDogamVzdC5mbigpLFxuICAgICAgYmVnaW5QYXRoOiBqZXN0LmZuKCksXG4gICAgICBhcmM6IGplc3QuZm4oKSxcbiAgICAgIGZpbGw6IGplc3QuZm4oKSxcbiAgICAgIGZpbGxTdHlsZTogJydcbiAgICB9O1xuICAgIGNvbnN0IG9yaWdpbmFsR2V0Q29udGV4dCA9IEhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDb250ZXh0O1xuICAgIGplc3Quc3B5T24oSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLCAnZ2V0Q29udGV4dCcpLm1vY2tJbXBsZW1lbnRhdGlvbihmdW5jdGlvbiBnZXRDb250ZXh0KFxuICAgICAgdGhpczogSFRNTENhbnZhc0VsZW1lbnQsXG4gICAgICB0eXBlOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIGlmICh0eXBlID09PSAnMmQnKSB7XG4gICAgICAgIHJldHVybiB0aWxlQ3R4IGFzIHVua25vd24gYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yaWdpbmFsR2V0Q29udGV4dC5jYWxsKHRoaXMsIHR5cGUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGF0dGVybiA9IHtpZDogJ3N0YXJzLXBhdHRlcm4nfTtcbiAgICBjb25zdCBkZXN0Q3R4ID0ge1xuICAgICAgY3JlYXRlUGF0dGVybjogamVzdC5mbigoKSA9PiBwYXR0ZXJuKSxcbiAgICAgIGZpbGxSZWN0OiBqZXN0LmZuKCksXG4gICAgICBmaWxsU3R5bGU6ICcnIGFzIHN0cmluZyB8IENhbnZhc1BhdHRlcm5cbiAgICB9O1xuXG4gICAgZHJhd1N0YXJzQmFja2dyb3VuZChkZXN0Q3R4IGFzIHVua25vd24gYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCAxMjgwLCA3MjApO1xuXG4gICAgZXhwZWN0KGRlc3RDdHguY3JlYXRlUGF0dGVybikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LmFueShIVE1MQ2FudmFzRWxlbWVudCksICdyZXBlYXQnKTtcbiAgICBleHBlY3QoZGVzdEN0eC5maWxsU3R5bGUpLnRvQmUocGF0dGVybik7XG4gICAgZXhwZWN0KGRlc3RDdHguZmlsbFJlY3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKDAsIDAsIDEyODAsIDcyMCk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsbUJBQW1CLFFBQU8scUJBQXFCO0FBRXZEQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsWUFBTTtFQUNsQ0MsU0FBUyxDQUFDLFlBQU07SUFDZEMsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQztFQUN4QixDQUFDLENBQUM7RUFFRkMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLFlBQU07SUFDL0UsSUFBTUMsT0FBTyxHQUFHO01BQ2RDLFNBQVMsRUFBRUosSUFBSSxDQUFDSyxFQUFFLENBQUMsQ0FBQztNQUNwQkMsU0FBUyxFQUFFTixJQUFJLENBQUNLLEVBQUUsQ0FBQyxDQUFDO01BQ3BCRSxHQUFHLEVBQUVQLElBQUksQ0FBQ0ssRUFBRSxDQUFDLENBQUM7TUFDZEcsSUFBSSxFQUFFUixJQUFJLENBQUNLLEVBQUUsQ0FBQyxDQUFDO01BQ2ZJLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFDRCxJQUFNQyxrQkFBa0IsR0FBR0MsaUJBQWlCLENBQUNDLFNBQVMsQ0FBQ0MsVUFBVTtJQUNqRWIsSUFBSSxDQUFDYyxLQUFLLENBQUNILGlCQUFpQixDQUFDQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUNHLGtCQUFrQixDQUFDLFNBQVNGLFVBQVVBLENBRTFGRyxJQUFZLEVBQ1o7TUFDQSxJQUFJQSxJQUFJLEtBQUssSUFBSSxFQUFFO1FBQ2pCLE9BQU9iLE9BQU87TUFDaEI7TUFDQSxPQUFPTyxrQkFBa0IsQ0FBQ08sSUFBSSxDQUFDLElBQUksRUFBRUQsSUFBSSxDQUFDO0lBQzVDLENBQUMsQ0FBQztJQUVGLElBQU1FLE9BQU8sR0FBRztNQUFDQyxFQUFFLEVBQUU7SUFBZSxDQUFDO0lBQ3JDLElBQU1DLE9BQU8sR0FBRztNQUNkQyxhQUFhLEVBQUVyQixJQUFJLENBQUNLLEVBQUUsQ0FBQztRQUFBLE9BQU1hLE9BQU87TUFBQSxFQUFDO01BQ3JDSSxRQUFRLEVBQUV0QixJQUFJLENBQUNLLEVBQUUsQ0FBQyxDQUFDO01BQ25CSSxTQUFTLEVBQUU7SUFDYixDQUFDO0lBRURaLG1CQUFtQixDQUFDdUIsT0FBTyxFQUF5QyxJQUFJLEVBQUUsR0FBRyxDQUFDO0lBRTlFRyxNQUFNLENBQUNILE9BQU8sQ0FBQ0MsYUFBYSxDQUFDLENBQUNHLG9CQUFvQixDQUFDRCxNQUFNLENBQUNFLEdBQUcsQ0FBQ2QsaUJBQWlCLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDM0ZZLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDWCxTQUFTLENBQUMsQ0FBQ2lCLElBQUksQ0FBQ1IsT0FBTyxDQUFDO0lBQ3ZDSyxNQUFNLENBQUNILE9BQU8sQ0FBQ0UsUUFBUSxDQUFDLENBQUNFLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztFQUNoRSxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkcmF3U3RhcnNCYWNrZ3JvdW5kIiwiZGVzY3JpYmUiLCJhZnRlckVhY2giLCJqZXN0IiwicmVzdG9yZUFsbE1vY2tzIiwidGVzdCIsInRpbGVDdHgiLCJjbGVhclJlY3QiLCJmbiIsImJlZ2luUGF0aCIsImFyYyIsImZpbGwiLCJmaWxsU3R5bGUiLCJvcmlnaW5hbEdldENvbnRleHQiLCJIVE1MQ2FudmFzRWxlbWVudCIsInByb3RvdHlwZSIsImdldENvbnRleHQiLCJzcHlPbiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsInR5cGUiLCJjYWxsIiwicGF0dGVybiIsImlkIiwiZGVzdEN0eCIsImNyZWF0ZVBhdHRlcm4iLCJmaWxsUmVjdCIsImV4cGVjdCIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiYW55IiwidG9CZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9nbG9iZS1zdGFycy1sYXllci5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7ZHJhd1N0YXJzQmFja2dyb3VuZH0gZnJvbSAnLi9nbG9iZS1zdGFycy1sYXllcic7XG5cbmRlc2NyaWJlKCdnbG9iZS1zdGFycy1sYXllcicsICgpID0+IHtcbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuICB9KTtcblxuICB0ZXN0KCdkcmF3U3RhcnNCYWNrZ3JvdW5kIHRpbGVzIHRoZSBzdGFyIGNhbnZhcyB3aXRoIGEgcmVwZWF0aW5nIHBhdHRlcm4nLCAoKSA9PiB7XG4gICAgY29uc3QgdGlsZUN0eCA9IHtcbiAgICAgIGNsZWFyUmVjdDogamVzdC5mbigpLFxuICAgICAgYmVnaW5QYXRoOiBqZXN0LmZuKCksXG4gICAgICBhcmM6IGplc3QuZm4oKSxcbiAgICAgIGZpbGw6IGplc3QuZm4oKSxcbiAgICAgIGZpbGxTdHlsZTogJydcbiAgICB9O1xuICAgIGNvbnN0IG9yaWdpbmFsR2V0Q29udGV4dCA9IEhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDb250ZXh0O1xuICAgIGplc3RcbiAgICAgIC5zcHlPbihIVE1MQ2FudmFzRWxlbWVudC5wcm90b3R5cGUsICdnZXRDb250ZXh0JylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oZnVuY3Rpb24gZ2V0Q29udGV4dCh0aGlzOiBIVE1MQ2FudmFzRWxlbWVudCwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0eXBlID09PSAnMmQnKSB7XG4gICAgICAgICAgcmV0dXJuIHRpbGVDdHggYXMgdW5rbm93biBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsR2V0Q29udGV4dC5jYWxsKHRoaXMsIHR5cGUpO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBwYXR0ZXJuID0ge2lkOiAnc3RhcnMtcGF0dGVybid9O1xuICAgIGNvbnN0IGRlc3RDdHggPSB7XG4gICAgICBjcmVhdGVQYXR0ZXJuOiBqZXN0LmZuKCgpID0+IHBhdHRlcm4pLFxuICAgICAgZmlsbFJlY3Q6IGplc3QuZm4oKSxcbiAgICAgIGZpbGxTdHlsZTogJycgYXMgc3RyaW5nIHwgQ2FudmFzUGF0dGVyblxuICAgIH07XG5cbiAgICBkcmF3U3RhcnNCYWNrZ3JvdW5kKGRlc3RDdHggYXMgdW5rbm93biBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIDEyODAsIDcyMCk7XG5cbiAgICBleHBlY3QoZGVzdEN0eC5jcmVhdGVQYXR0ZXJuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3QuYW55KEhUTUxDYW52YXNFbGVtZW50KSwgJ3JlcGVhdCcpO1xuICAgIGV4cGVjdChkZXN0Q3R4LmZpbGxTdHlsZSkudG9CZShwYXR0ZXJuKTtcbiAgICBleHBlY3QoZGVzdEN0eC5maWxsUmVjdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoMCwgMCwgMTI4MCwgNzIwKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQSxTQUFRQSxtQkFBbUIsUUFBTyxxQkFBcUI7QUFFdkRDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxZQUFNO0VBQ2xDQyxTQUFTLENBQUMsWUFBTTtJQUNkQyxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDO0VBQ3hCLENBQUMsQ0FBQztFQUVGQyxJQUFJLENBQUMsb0VBQW9FLEVBQUUsWUFBTTtJQUMvRSxJQUFNQyxPQUFPLEdBQUc7TUFDZEMsU0FBUyxFQUFFSixJQUFJLENBQUNLLEVBQUUsQ0FBQyxDQUFDO01BQ3BCQyxTQUFTLEVBQUVOLElBQUksQ0FBQ0ssRUFBRSxDQUFDLENBQUM7TUFDcEJFLEdBQUcsRUFBRVAsSUFBSSxDQUFDSyxFQUFFLENBQUMsQ0FBQztNQUNkRyxJQUFJLEVBQUVSLElBQUksQ0FBQ0ssRUFBRSxDQUFDLENBQUM7TUFDZkksU0FBUyxFQUFFO0lBQ2IsQ0FBQztJQUNELElBQU1DLGtCQUFrQixHQUFHQyxpQkFBaUIsQ0FBQ0MsU0FBUyxDQUFDQyxVQUFVO0lBQ2pFYixJQUFJLENBQ0RjLEtBQUssQ0FBQ0gsaUJBQWlCLENBQUNDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FDaERHLGtCQUFrQixDQUFDLFNBQVNGLFVBQVVBLENBQTBCRyxJQUFZLEVBQUU7TUFDN0UsSUFBSUEsSUFBSSxLQUFLLElBQUksRUFBRTtRQUNqQixPQUFPYixPQUFPO01BQ2hCO01BQ0EsT0FBT08sa0JBQWtCLENBQUNPLElBQUksQ0FBQyxJQUFJLEVBQUVELElBQUksQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFFSixJQUFNRSxPQUFPLEdBQUc7TUFBQ0MsRUFBRSxFQUFFO0lBQWUsQ0FBQztJQUNyQyxJQUFNQyxPQUFPLEdBQUc7TUFDZEMsYUFBYSxFQUFFckIsSUFBSSxDQUFDSyxFQUFFLENBQUM7UUFBQSxPQUFNYSxPQUFPO01BQUEsRUFBQztNQUNyQ0ksUUFBUSxFQUFFdEIsSUFBSSxDQUFDSyxFQUFFLENBQUMsQ0FBQztNQUNuQkksU0FBUyxFQUFFO0lBQ2IsQ0FBQztJQUVEWixtQkFBbUIsQ0FBQ3VCLE9BQU8sRUFBeUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztJQUU5RUcsTUFBTSxDQUFDSCxPQUFPLENBQUNDLGFBQWEsQ0FBQyxDQUFDRyxvQkFBb0IsQ0FBQ0QsTUFBTSxDQUFDRSxHQUFHLENBQUNkLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQzNGWSxNQUFNLENBQUNILE9BQU8sQ0FBQ1gsU0FBUyxDQUFDLENBQUNpQixJQUFJLENBQUNSLE9BQU8sQ0FBQztJQUN2Q0ssTUFBTSxDQUFDSCxPQUFPLENBQUNFLFFBQVEsQ0FBQyxDQUFDRSxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7RUFDaEUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -395,4 +395,4 @@ export var KeplerGlobeView = /*#__PURE__*/function (_DeckGlobeView) {
395
395
  }]);
396
396
  }(DeckGlobeView);
397
397
  KeplerGlobeView.displayName = 'KeplerGlobeView';
398
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWNrQ29yZSIsImNsYW1wIiwidmVjNCIsIkdMT0JFX01BWF9MQVRJVFVERSIsIkdMT0JFX0NPTU1PTl9SQURJVVMiLCJEZWNrR2xvYmVWaWV3IiwiX0dsb2JlVmlldyIsIkdsb2JlQ29udHJvbGxlciIsIl9HbG9iZUNvbnRyb2xsZXIiLCJEZWNrR2xvYmVWaWV3cG9ydCIsIl9HbG9iZVZpZXdwb3J0Iiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwiTWF0aCIsImxvZzIiLCJQSSIsImNvcyIsImlzUGl4ZWxPbkdsb2JlIiwidmlld3BvcnQiLCJwb3MiLCJtIiwicGl4ZWxVbnByb2plY3Rpb25NYXRyaXgiLCJwMCIsInRyYW5zZm9ybU1hdDQiLCJwMSIsImF4IiwiYXkiLCJheiIsImJ4IiwiYnkiLCJieiIsImR4IiwiZHkiLCJkeiIsImN4IiwiY3kiLCJjeiIsImRTcXIiLCJab29tVG9DdXJzb3JHbG9iZUNvbnRyb2xsZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIk9yaWdpbmFsR2xvYmVTdGF0ZSIsIkNvbnRyb2xsZXJTdGF0ZSIsIm9mZkdsb2JlWm9vbUF0IiwiX09yaWdpbmFsR2xvYmVTdGF0ZSIsIlBhdGNoZWRHbG9iZVN0YXRlIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJhcHBseUNvbnN0cmFpbnRzIiwicHJvcHMiLCJyZXN1bHQiLCJfc3VwZXJQcm9wR2V0IiwiY2xhbXBlZExhdGl0dWRlIiwiem9vbSIsIl9jb25zdHJhaW5ab29tIiwiZ2V0Vmlld3BvcnRQcm9wcyIsIl9wcm9wcyIsIm1heFpvb20iLCJfcHJvcHMyIiwibWluWm9vbSIsInVuZGVmaW5lZCIsIlpPT00wIiwiem9vbUFkanVzdG1lbnQiLCJfcmVmIiwic3RhcnRQb3MiLCJzY2FsZSIsIl9nZXRTdGF0ZSIsImdldFN0YXRlIiwic3RhcnRab29tIiwic3RhcnRab29tTG5nTGF0IiwiY3VycmVudFByb3BzIiwiQlVSU1RfVElNRU9VVF9NUyIsIm5vdyIsIkRhdGUiLCJhbmNob3JWaWV3cG9ydCIsIm1ha2VWaWV3cG9ydCIsIm9uR2xvYmUiLCJfZ2V0VXBkYXRlZFN0YXRlIiwiX3VucHJvamVjdCIsImlzQXJyYXkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInQiLCJtaW4iLCJkTG5nIiwibG9uZ2l0dWRlIiwiem9vbWVkVmlld3BvcnQiLCJfb2JqZWN0U3ByZWFkIiwiZnJvbVBvc2l0aW9uIiwidW5wcm9qZWN0Iiwiem9vbUVuZCIsInBhblN0YXJ0IiwiX3JlZjIiLCJzdGFydFBhbkxuZ0xhdCIsInBhbiIsIl9yZWYzIiwic3RvcmVkU3RhcnQiLCJ2aXN1YWxab29tIiwicGFuRW5kIiwiS2VwbGVyR2xvYmVWaWV3IiwiX0RlY2tHbG9iZVZpZXciLCJnZXQiLCJnZXRWaWV3cG9ydFR5cGUiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9nbG9iZS12aWV3LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIERlY2tDb3JlIGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtjbGFtcCwgdmVjNH0gZnJvbSAnQG1hdGguZ2wvY29yZSc7XG5pbXBvcnQge0dMT0JFX01BWF9MQVRJVFVERX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtHTE9CRV9DT01NT05fUkFESVVTfSBmcm9tICcuL2dsb2JlLWRlcHRoLWRpc2stbGF5ZXInO1xuXG4vLyBkZWNrLmdsIGV4cG9zZXMgR2xvYmVWaWV3IC8gR2xvYmVDb250cm9sbGVyIGFzIGV4cGVyaW1lbnRhbCwgdW5kZXJzY29yZS1wcmVmaXhlZFxuLy8gbWVtYmVycy4gVGhlaXIgbmFtZWQgdHlwZSBiaW5kaW5ncyBhcmVuJ3QgcmVsaWFibHkgcmVzb2x2YWJsZSB0aHJvdWdoIHRoZVxuLy8gcGFja2FnZSBiYXJyZWwgdW5kZXIgdGhpcyBwcm9qZWN0J3MgbW9kdWxlIHJlc29sdXRpb24sIHNvIHdlIHB1bGwgdGhlbSBvZmYgdGhlXG4vLyBuYW1lc3BhY2Ugd2l0aCBhIGxvb3NlIHR5cGUuIFJ1bnRpbWUgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuY29uc3QgRGVja0dsb2JlVmlldyA9IChEZWNrQ29yZSBhcyBhbnkpLl9HbG9iZVZpZXcgYXMgYW55O1xuY29uc3QgR2xvYmVDb250cm9sbGVyID0gKERlY2tDb3JlIGFzIGFueSkuX0dsb2JlQ29udHJvbGxlciBhcyBhbnk7XG5jb25zdCBEZWNrR2xvYmVWaWV3cG9ydCA9IChEZWNrQ29yZSBhcyBhbnkpLl9HbG9iZVZpZXdwb3J0IGFzIGFueTtcblxuLyoqXG4gKiBMYXRpdHVkZS1iYXNlZCB6b29tIGFkanVzdG1lbnQgdXNlZCBieSBkZWNrLmdsJ3MgR2xvYmVWaWV3cG9ydCwgcmVwbGljYXRlZFxuICogaGVyZSBzbyBvdXIgY3VzdG9tIGBfY29uc3RyYWluWm9vbWAgbWF0Y2hlcyBkZWNrLmdsJ3MgY29vcmRpbmF0ZSBtYXRoLlxuICogU2VlIEBkZWNrLmdsL2NvcmUgZ2xvYmUtdmlld3BvcnQuanMgYHpvb21BZGp1c3RgLlxuICovXG5mdW5jdGlvbiB6b29tQWRqdXN0KGxhdGl0dWRlOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5sb2cyKE1hdGguUEkgKiBNYXRoLmNvcygobGF0aXR1ZGUgKiBNYXRoLlBJKSAvIDE4MCkpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2NyZWVuIHBpeGVsIGBwb3NgIGxpZXMgd2l0aGluIHRoZSB2aXNpYmxlIGdsb2JlXG4gKiBzaWxob3VldHRlLlxuICpcbiAqIEdsb2JlVmlld3BvcnQudW5wcm9qZWN0KCkgY2xhbXBzIHRoZSByYXnigJNzcGhlcmUgZGlzY3JpbWluYW50IHdpdGhcbiAqIE1hdGgubWF4KDAsIHLCsuKIkmTCsiksIHNvIGl0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgbG5nL2xhdCBldmVuIGZvclxuICogb2ZmLWdsb2JlIHBpeGVscyAoc25hcHBpbmcgdG8gdGhlIGxpbWIpLiAgV2UgcmVwbGljYXRlIHRoZSBzYW1lIHJheSBjYXN0XG4gKiBidXQgY2hlY2sgdGhlIGRpc2NyaW1pbmFudCBiZWZvcmUgdGhlIGNsYW1wIHVzaW5nIHRoZSBzdGFuZGFyZFxuICogc3F1YXJlZC1kaXN0YW5jZS1mcm9tLW9yaWdpbi10by1yYXkgZm9ybXVsYTogfFDigoAgw5cgZGlyfMKyIC8gfGRpcnzCsi5cbiAqL1xuZnVuY3Rpb24gaXNQaXhlbE9uR2xvYmUodmlld3BvcnQ6IGFueSwgcG9zOiBbbnVtYmVyLCBudW1iZXJdKTogYm9vbGVhbiB7XG4gIGNvbnN0IG06IG51bWJlcltdID0gdmlld3BvcnQucGl4ZWxVbnByb2plY3Rpb25NYXRyaXg7XG4gIGlmICghbSkgcmV0dXJuIHRydWU7IC8vIGNvbnNlcnZhdGl2ZSBmYWxsYmFjayBpZiBtYXRyaXggdW5hdmFpbGFibGVcblxuICAvLyBDYXN0IGEgcmF5IHRocm91Z2ggdGhlIHBpeGVsIGF0IHRoZSBuZWFyIGFuZCBmYXIgcGxhbmVzLlxuICBjb25zdCBwMCA9IHZlYzQudHJhbnNmb3JtTWF0NChbXSwgW3Bvc1swXSwgcG9zWzFdLCAtMSwgMV0sIG0pO1xuICBjb25zdCBwMSA9IHZlYzQudHJhbnNmb3JtTWF0NChbXSwgW3Bvc1swXSwgcG9zWzFdLCAxLCAxXSwgbSk7XG4gIGlmIChwMFszXSA9PT0gMCB8fCBwMVszXSA9PT0gMCkgcmV0dXJuIHRydWU7IC8vIGRlZ2VuZXJhdGUgcHJvamVjdGlvblxuXG4gIC8vIFBlcnNwZWN0aXZlLWRpdmlkZSB0byB3b3JsZCBzcGFjZS5cbiAgY29uc3QgYXggPSBwMFswXSAvIHAwWzNdLCBheSA9IHAwWzFdIC8gcDBbM10sIGF6ID0gcDBbMl0gLyBwMFszXTtcbiAgY29uc3QgYnggPSBwMVswXSAvIHAxWzNdLCBieSA9IHAxWzFdIC8gcDFbM10sIGJ6ID0gcDFbMl0gLyBwMVszXTtcblxuICAvLyBSYXkgZGlyZWN0aW9uLlxuICBjb25zdCBkeCA9IGJ4IC0gYXgsIGR5ID0gYnkgLSBheSwgZHogPSBieiAtIGF6O1xuXG4gIC8vIFNxdWFyZWQgZGlzdGFuY2UgZnJvbSB0aGUgb3JpZ2luIChnbG9iZSBjZW50ZXIpIHRvIHRoZSByYXk6XG4gIC8vICAgZMKyID0gfFDigoAgw5cgZGlyfMKyIC8gfGRpcnzCslxuICBjb25zdCBjeCA9IGF5ICogZHogLSBheiAqIGR5O1xuICBjb25zdCBjeSA9IGF6ICogZHggLSBheCAqIGR6O1xuICBjb25zdCBjeiA9IGF4ICogZHkgLSBheSAqIGR4O1xuICBjb25zdCBkU3FyID0gKGN4ICogY3ggKyBjeSAqIGN5ICsgY3ogKiBjeikgLyAoZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6KTtcblxuICByZXR1cm4gZFNxciA8PSBHTE9CRV9DT01NT05fUkFESVVTICogR0xPQkVfQ09NTU9OX1JBRElVUztcbn1cblxuLyoqXG4gKiBDdXN0b20gR2xvYmVDb250cm9sbGVyIHRoYXQgcmVzdG9yZXMgem9vbS10by1jdXJzb3IgYmVoYXZpb3IuXG4gKlxuICogSW4gZGVjay5nbCA5LngsIHRoZSBkZWZhdWx0IEdsb2JlQ29udHJvbGxlcidzIEdsb2JlU3RhdGUuem9vbSgpIGlnbm9yZXMgdGhlXG4gKiBjdXJzb3IgcG9zaXRpb24gYW5kIGFsd2F5cyB6b29tcyB0b3dhcmQgdGhlIGNlbnRlci4gVGhpcyBjb250cm9sbGVyIHBhdGNoZXNcbiAqIHRoYXQgYmVoYXZpb3IgYnkgb3ZlcnJpZGluZyB0aGUgQ29udHJvbGxlclN0YXRlJ3Mgem9vbSBtZXRob2QgdG8gcGFuIHRoZVxuICogZ2xvYmUgdW5kZXIgdGhlIGN1cnNvciB3aGlsZSB6b29taW5nLCBzbyB6b29tLXRvLWN1cnNvciB3b3JrcyB0aGUgc2FtZSB3YXkgaXRcbiAqIGRvZXMgZm9yIHRoZSAyRCBNYXBDb250cm9sbGVyLlxuICovXG5jbGFzcyBab29tVG9DdXJzb3JHbG9iZUNvbnRyb2xsZXIgZXh0ZW5kcyBHbG9iZUNvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgIGNvbnN0IE9yaWdpbmFsR2xvYmVTdGF0ZSA9IHRoaXMuQ29udHJvbGxlclN0YXRlO1xuXG4gICAgLy8gVHJhY2tzIHdoZW4gdGhlIG1vc3QgcmVjZW50IG9mZi1nbG9iZSB3aGVlbC16b29tIHRpY2sgZmlyZWQuXG4gICAgLy8gU3RvcmVkIGFzIGEgY29udHJvbGxlci1sZXZlbCBjbG9zdXJlIHZhcmlhYmxlIHJhdGhlciB0aGFuIGluIFZpZXdTdGF0ZVxuICAgIC8vIGJlY2F1c2UgZGVjay5nbCdzIENvbnRyb2xsZXIgbmV2ZXIgY2FsbHMgem9vbUVuZCgpIGZvciB3aGVlbCBldmVudHMg4oCUXG4gICAgLy8gb25seSBmb3IgcGluY2gvdG91Y2gg4oCUIHNvIHRoZXJlIGlzIG5vIHJlbGlhYmxlIGhvb2sgdG8gY2xlYXIgYVxuICAgIC8vIFZpZXdTdGF0ZS1iYXNlZCBzZW50aW5lbCBhZnRlciBhIHdoZWVsIHNjcm9sbCBzZXNzaW9uIGVuZHMuXG4gICAgLy8gQSBzaW1wbGUgdGltZXN0YW1wIGxldHMgdXMgZGV0ZWN0IHdoZW4gYSBuZXcgc2Nyb2xsIGJ1cnN0IGhhcyBzdGFydGVkXG4gICAgLy8gKD4gQlVSU1RfVElNRU9VVF9NUyBzaW5jZSB0aGUgbGFzdCBvZmYtZ2xvYmUgdGljaykgc28gY3Vyc29yLWFuY2hvcmVkXG4gICAgLy8gem9vbSBjYW4gcmVzdW1lIG5hdHVyYWxseSBvbiB0aGUgbmV4dCBpbmRlcGVuZGVudCBzY3JvbGwuXG4gICAgbGV0IG9mZkdsb2JlWm9vbUF0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIENyZWF0ZSBwYXRjaGVkIEdsb2JlU3RhdGUgdGhhdCBzdXBwb3J0cyB6b29tLXRvLWN1cnNvclxuICAgIHRoaXMuQ29udHJvbGxlclN0YXRlID0gY2xhc3MgUGF0Y2hlZEdsb2JlU3RhdGUgZXh0ZW5kcyBPcmlnaW5hbEdsb2JlU3RhdGUge1xuICAgICAgLy8gQ29uc3RyYWluIHRoZSBjYW1lcmEgdGFyZ2V0IHRvIGEgbGF0aXR1ZGUgYmFuZCBhcm91bmQgdGhlIGVxdWF0b3Igc28gdGhlXG4gICAgICAvLyB2aWV3IGNhbid0IGJlIGNlbnRlcmVkIG9uIHRoZSBwb2xlcy4gZGVjay5nbCdzIGFwcGx5Q29uc3RyYWludHMgY2xhbXBzXG4gICAgICAvLyBsYXRpdHVkZSB0byB+ODXCsCwgd2hpY2ggc3RpbGwgbGV0cyB0aGUgY2FtZXJhIGxvb2sgc3RyYWlnaHQgYXQgYSBwb2xlLlxuICAgICAgYXBwbHlDb25zdHJhaW50cyhwcm9wczogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLmFwcGx5Q29uc3RyYWludHMocHJvcHMpO1xuICAgICAgICBjb25zdCBjbGFtcGVkTGF0aXR1ZGUgPSBjbGFtcChyZXN1bHQubGF0aXR1ZGUsIC1HTE9CRV9NQVhfTEFUSVRVREUsIEdMT0JFX01BWF9MQVRJVFVERSk7XG4gICAgICAgIGlmIChjbGFtcGVkTGF0aXR1ZGUgIT09IHJlc3VsdC5sYXRpdHVkZSkge1xuICAgICAgICAgIC8vIGRlY2suZ2wgY291cGxlcyB6b29tIHRvIGxhdGl0dWRlIHZpYSB6b29tQWRqdXN0OyB3aGVuIHdlIGZ1cnRoZXJcbiAgICAgICAgICAvLyBjbGFtcCBsYXRpdHVkZSwgcmUtYXBwbHkgdGhlIHNhbWUgZGVsdGEgc28gem9vbSBzdGF5cyBjb25zaXN0ZW50LlxuICAgICAgICAgIHJlc3VsdC56b29tICs9IHpvb21BZGp1c3QoY2xhbXBlZExhdGl0dWRlKSAtIHpvb21BZGp1c3QocmVzdWx0LmxhdGl0dWRlKTtcbiAgICAgICAgICByZXN1bHQubGF0aXR1ZGUgPSBjbGFtcGVkTGF0aXR1ZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgLy8gZGVjay5nbCdzIEdsb2JlU3RhdGUuX2NvbnN0cmFpblpvb20gZGVyaXZlcyBhIG1pbmltdW0gem9vbSBmcm9tIGBtYXhCb3VuZHNgXG4gICAgICAvLyB0aGF0IGZvcmNlcyB0aGUgZ2xvYmUgdG8gZmlsbCB0aGUgdmlld3BvcnQuIFRoYXQgYm91bmRzLWJhc2VkIG1pbmltdW1cbiAgICAgIC8vICh+MyBmb3IgYSB0eXBpY2FsIHdpbmRvdykgb3ZlcnJpZGVzIGFueSBjb25maWd1cmVkIGBtaW5ab29tYCwgc28gdGhlIHVzZXJcbiAgICAgIC8vIGNhbiBuZXZlciB6b29tIG91dCBmYXIgZW5vdWdoIHRvIHNlZSB0aGUgd2hvbGUgZ2xvYmUgc21hbGwgb24gc2NyZWVuLlxuICAgICAgLy8gT3ZlcnJpZGUgaXQgdG8gaG9ub3Igb25seSB0aGUgY29uZmlndXJlZCBtaW5ab29tL21heFpvb20gKHBsdXMgdGhlIHNhbWVcbiAgICAgIC8vIGxhdGl0dWRlIGFkanVzdG1lbnQgZGVjay5nbCB1c2VzKSwgaWdub3JpbmcgdGhlIGJvdW5kcy1iYXNlZCBmbG9vci5cbiAgICAgIF9jb25zdHJhaW5ab29tKHpvb206IG51bWJlciwgcHJvcHM/OiBhbnkpIHtcbiAgICAgICAgcHJvcHMgPSBwcm9wcyB8fCAodGhpcyBhcyBhbnkpLmdldFZpZXdwb3J0UHJvcHMoKTtcbiAgICAgICAgY29uc3Qge2xhdGl0dWRlLCBtYXhab29tfSA9IHByb3BzO1xuICAgICAgICBsZXQge21pblpvb219ID0gcHJvcHM7XG4gICAgICAgIGlmIChtaW5ab29tID09PSB1bmRlZmluZWQgfHwgbWluWm9vbSA9PT0gbnVsbCkge1xuICAgICAgICAgIG1pblpvb20gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFpPT00wID0gem9vbUFkanVzdCgwKTtcbiAgICAgICAgY29uc3Qgem9vbUFkanVzdG1lbnQgPSB6b29tQWRqdXN0KGxhdGl0dWRlKSAtIFpPT00wO1xuICAgICAgICByZXR1cm4gY2xhbXAoem9vbSwgbWluWm9vbSArIHpvb21BZGp1c3RtZW50LCBtYXhab29tICsgem9vbUFkanVzdG1lbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBFeGFjdCB6b29tLXRvLWN1cnNvci4gZGVjay5nbCA5LngncyBHbG9iZUNvbnRyb2xsZXIgZG9lcyBub3Qga2VlcCB0aGUgcG9pbnRcbiAgICAgIC8vIHVuZGVyIHRoZSBjdXJzb3IgZml4ZWQgd2hpbGUgem9vbWluZywgaW4gdHdvIHdheXMgd2Ugd29yayBhcm91bmQgaGVyZTpcbiAgICAgIC8vICAgMS4gSXRzIEdsb2JlU3RhdGUuem9vbSgpIGlnbm9yZXMgdGhlIGN1cnNvciBhbmQgem9vbXMgdG93YXJkIHRoZSBjZW50ZXIuXG4gICAgICAvLyAgIDIuIEl0cyBHbG9iZVZpZXdwb3J0LnBhbkJ5UG9zaXRpb24gaXMgYSBsb3NzeSwgKmxpbmVhcml6ZWQqIDMtYXJnXG4gICAgICAvLyAgICAgIHJvdGF0aW9uIChsb25naXR1ZGUgKz0gKDAuMjUvc2NhbGUpKihzdGFydFBpeGVsLXBpeGVsKSwgcmUtZGVyaXZlc1xuICAgICAgLy8gICAgICB6b29tKS4gVXNpbmcgaXQgcGVyIHdoZWVsIHRpY2sgYWNjdW11bGF0ZXMgZXJyb3IsIHNvIGFmdGVyIGEgbG9uZ1xuICAgICAgLy8gICAgICBjb250aW51b3VzIHpvb20gdGhlIHBvaW50IGVuZHMgdXAgbm90aWNlYWJseSBzaGlmdGVkIGZyb20gd2hhdCB3YXNcbiAgICAgIC8vICAgICAgb3JpZ2luYWxseSB1bmRlciB0aGUgY3Vyc29yLlxuICAgICAgLy8gVGhlIHJlY2VudGVyIGJlbG93IGlzIGFuICpleGFjdCBhYnNvbHV0ZSogdHJhbnNsYXRpb246IHVucHJvamVjdCB0aGVcbiAgICAgIC8vIGN1cnNvciBwaXhlbCBpbiB0aGUgem9vbWVkIHZpZXdwb3J0IHRvIGdldCB0aGUgZ2VvIHBvaW50IGN1cnJlbnRseSB1bmRlciBpdCxcbiAgICAgIC8vIHRoZW4gc2hpZnQgdGhlIGNlbnRlciBieSAoYW5jaG9yIC0gdGhhdFBvaW50KS4gTm8gem9vbSBjb3VwbGluZywgbm9cbiAgICAgIC8vIHJvdGF0aW9uU3BlZWQsIGFuZCBpdCBhcHBsaWVzIHRvIHpvb20taW4gYW5kIHpvb20tb3V0IHN5bW1ldHJpY2FsbHksIHNvXG4gICAgICAvLyB0aGVyZSBpcyBubyBwZXItdGljayBhY2N1bXVsYXRlZCBkcmlmdC5cbiAgICAgIHpvb20oe1xuICAgICAgICBwb3MsXG4gICAgICAgIHN0YXJ0UG9zLFxuICAgICAgICBzY2FsZVxuICAgICAgfToge1xuICAgICAgICBwb3M6IFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgIHN0YXJ0UG9zPzogW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgc2NhbGU6IG51bWJlcjtcbiAgICAgIH0pIHtcbiAgICAgICAgbGV0IHtzdGFydFpvb20sIHN0YXJ0Wm9vbUxuZ0xhdH0gPSAodGhpcyBhcyBhbnkpLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQcm9wcyA9ICh0aGlzIGFzIGFueSkuZ2V0Vmlld3BvcnRQcm9wcygpO1xuXG4gICAgICAgIGlmICghc3RhcnRab29tTG5nTGF0KSB7XG4gICAgICAgICAgLy8gV2hlZWwgem9vbTogcmUtZGVyaXZlIGFuY2hvciBlYWNoIHRpY2sgKHBpbmNoIHNldHMgaXQgb25jZSBpbiB6b29tU3RhcnQpLlxuICAgICAgICAgIHN0YXJ0Wm9vbSA9IGN1cnJlbnRQcm9wcy56b29tO1xuXG4gICAgICAgICAgLy8gU3VwcHJlc3MgY3Vyc29yLWFuY2hvcmluZyB3aGVuIHRoZSBjdXJzb3IgaXMgb2ZmLWdsb2JlIG9yIHdoZW4gYVxuICAgICAgICAgIC8vIHJlY2VudCB0aWNrIHdhcyBvZmYtZ2xvYmUgKHdpdGhpbiBCVVJTVF9USU1FT1VUX01TKS4gIGRlY2suZ2wgbmV2ZXJcbiAgICAgICAgICAvLyBjYWxscyB6b29tRW5kKCkgZm9yIHdoZWVsIGV2ZW50cyBzbyB3ZSB0cmFjayB0aGUgc2Vzc2lvbiB3aXRoIHRoZVxuICAgICAgICAgIC8vIGNsb3N1cmUgdmFyaWFibGUgYG9mZkdsb2JlWm9vbUF0YCByYXRoZXIgdGhhbiBWaWV3U3RhdGUuXG4gICAgICAgICAgY29uc3QgQlVSU1RfVElNRU9VVF9NUyA9IDIwMDtcbiAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGNvbnN0IGFuY2hvclZpZXdwb3J0ID0gKHRoaXMgYXMgYW55KS5tYWtlVmlld3BvcnQoY3VycmVudFByb3BzKTtcbiAgICAgICAgICBjb25zdCBvbkdsb2JlID0gaXNQaXhlbE9uR2xvYmUoYW5jaG9yVmlld3BvcnQsIHN0YXJ0UG9zIHx8IHBvcyk7XG5cbiAgICAgICAgICBpZiAoIW9uR2xvYmUpIG9mZkdsb2JlWm9vbUF0ID0gbm93O1xuXG4gICAgICAgICAgaWYgKCFvbkdsb2JlIHx8IChvZmZHbG9iZVpvb21BdCAhPT0gbnVsbCAmJiBub3cgLSBvZmZHbG9iZVpvb21BdCA8IEJVUlNUX1RJTUVPVVRfTVMpKSB7XG4gICAgICAgICAgICBjb25zdCB6b29tID0gKHRoaXMgYXMgYW55KS5fY29uc3RyYWluWm9vbShzdGFydFpvb20gKyBNYXRoLmxvZzIoc2NhbGUpKTtcbiAgICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe3pvb219KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvZmZHbG9iZVpvb21BdCA9IG51bGw7XG4gICAgICAgICAgc3RhcnRab29tTG5nTGF0ID0gKHRoaXMgYXMgYW55KS5fdW5wcm9qZWN0KHN0YXJ0UG9zKSB8fCAodGhpcyBhcyBhbnkpLl91bnByb2plY3QocG9zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHpvb20gPSAodGhpcyBhcyBhbnkpLl9jb25zdHJhaW5ab29tKHN0YXJ0Wm9vbSArIE1hdGgubG9nMihzY2FsZSkpO1xuXG4gICAgICAgIGlmICghc3RhcnRab29tTG5nTGF0KSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7em9vbX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gWm9vbS1vdXQgKHNjYWxlIDwgMSk6IGV4YWN0IGN1cnNvciBhbmNob3JpbmcgaXMgdW5zdGFibGUgbmVhciB0aGUgbGltYlxuICAgICAgICAvLyAobm9uLWxpbmVhciBnZW8tdG8tcGl4ZWwgbWFwcGluZyBwdWxscyB0aGUgdmlldyB0b3dhcmQgdGhlIHBvbGVzKS5cbiAgICAgICAgLy8gSW5zdGVhZCwgZ2VudGx5IHN0ZWVyIHRoZSBjZW50ZXIgdG93YXJkIHRoZSBjdXJzb3IgbG9jYXRpb24gcGVyIHRpY2suXG4gICAgICAgIGlmIChzY2FsZSA8IDEpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShzdGFydFpvb21MbmdMYXQpIHx8XG4gICAgICAgICAgICAhTnVtYmVyLmlzRmluaXRlKHN0YXJ0Wm9vbUxuZ0xhdFswXSkgfHxcbiAgICAgICAgICAgICFOdW1iZXIuaXNGaW5pdGUoc3RhcnRab29tTG5nTGF0WzFdKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7em9vbX0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFBlci10aWNrIGxlcnAgc3RyZW5ndGggc2NhbGVzIHdpdGggem9vbS1vdXQgYW1vdW50OyBjbGFtcGVkIHRvIGF2b2lkIG92ZXJzaG9vdC5cbiAgICAgICAgICBjb25zdCB0ID0gTWF0aC5taW4oMSwgKDEgLSBzY2FsZSkgKiAwLjExKTtcblxuICAgICAgICAgIC8vIFNob3J0ZXN0LXBhdGggbG9uZ2l0dWRlIGludGVycG9sYXRpb24gKGhhbmRsZXMgYW50aW1lcmlkaWFuIHdyYXApLlxuICAgICAgICAgIGxldCBkTG5nID0gc3RhcnRab29tTG5nTGF0WzBdIC0gY3VycmVudFByb3BzLmxvbmdpdHVkZTtcbiAgICAgICAgICBpZiAoZExuZyA+IDE4MCkgZExuZyAtPSAzNjA7XG4gICAgICAgICAgaWYgKGRMbmcgPCAtMTgwKSBkTG5nICs9IDM2MDtcblxuICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe1xuICAgICAgICAgICAgem9vbSxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogY3VycmVudFByb3BzLmxvbmdpdHVkZSArIGRMbmcgKiB0LFxuICAgICAgICAgICAgbGF0aXR1ZGU6IGN1cnJlbnRQcm9wcy5sYXRpdHVkZSArIChzdGFydFpvb21MbmdMYXRbMV0gLSBjdXJyZW50UHJvcHMubGF0aXR1ZGUpICogdFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgem9vbWVkVmlld3BvcnQgPSAodGhpcyBhcyBhbnkpLm1ha2VWaWV3cG9ydCh7XG4gICAgICAgICAgLi4uY3VycmVudFByb3BzLFxuICAgICAgICAgIHpvb21cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gWm9vbS1pbjogZXhhY3QgYW5jaG9yIOKAlCB1bnByb2plY3QgdGhlIGN1cnNvciBpbiB0aGUgcG9zdC16b29tIHZpZXdwb3J0IGFuZFxuICAgICAgICAvLyBzaGlmdCB0aGUgY2VudGVyIHNvIHRoZSBncmFiYmVkIGdlbyBwb2ludCBsYW5kcyBiYWNrIHVuZGVyIHRoZSBjdXJzb3IuXG4gICAgICAgIC8vIEd1YXJkIHdpdGggaXNQaXhlbE9uR2xvYmU6IGlmIHBvcyBtb3ZlZCBvZmYtZ2xvYmUgZHVyaW5nIGEgZmFzdCBwaW5jaCxcbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIGNlbnRlciB6b29tLlxuICAgICAgICBpZiAoIWlzUGl4ZWxPbkdsb2JlKHpvb21lZFZpZXdwb3J0LCBwb3MpKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7em9vbX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnJvbVBvc2l0aW9uID0gem9vbWVkVmlld3BvcnQudW5wcm9qZWN0KHBvcyk7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7XG4gICAgICAgICAgem9vbSxcbiAgICAgICAgICBsb25naXR1ZGU6IHN0YXJ0Wm9vbUxuZ0xhdFswXSAtIGZyb21Qb3NpdGlvblswXSArIHpvb21lZFZpZXdwb3J0LmxvbmdpdHVkZSxcbiAgICAgICAgICBsYXRpdHVkZTogc3RhcnRab29tTG5nTGF0WzFdIC0gZnJvbVBvc2l0aW9uWzFdICsgem9vbWVkVmlld3BvcnQubGF0aXR1ZGVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENsZWFyIHRoZSBwZXJzaXN0ZWQgcGluY2ggYW5jaG9yIGF0IGdlc3R1cmUgZW5kLlxuICAgICAgem9vbUVuZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7XG4gICAgICAgICAgc3RhcnRab29tOiBudWxsLFxuICAgICAgICAgIHN0YXJ0Wm9vbUxuZ0xhdDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gRXhhY3QsIGN1cnNvci1hbmNob3JlZCBwYW46IHRoZSBnZW8gcG9pbnQgZ3JhYmJlZCBvbiBtb3VzZWRvd24gc3RheXNcbiAgICAgIC8vIGxvY2tlZCB1bmRlciB0aGUgY3Vyc29yIGZvciB0aGUgd2hvbGUgZHJhZy5cbiAgICAgIC8vXG4gICAgICAvLyBkZWNrLmdsIDkueCdzIEdsb2JlQ29udHJvbGxlciBwYW5zIHdpdGggYSAqbGluZWFyaXplZCwgY2VudGVyLWFuY2hvcmVkKlxuICAgICAgLy8gcm90YXRpb24gKEdsb2JlVmlld3BvcnQucGFuQnlQb3NpdGlvbihbbG5nLGxhdCx6b29tXSwgcGl4ZWwsIHN0YXJ0UGl4ZWwpOlxuICAgICAgLy8gbG9uZ2l0dWRlICs9ICgwLjI1L3NjYWxlKSooc3RhcnRQaXhlbC1waXhlbCkpLiBCZWNhdXNlIHRoZSBhbmNob3IgaXMgdGhlXG4gICAgICAvLyB2aWV3IENFTlRFUiByYXRoZXIgdGhhbiB0aGUgZ3JhYmJlZCBwb2ludCwgdGhlIGZpcnN0IGRyYWcgZnJhbWUgc25hcHMgdGhlXG4gICAgICAvLyBjZW50ZXIgdG8gc2F0aXNmeSB0aGUgbGluZWFyIGFwcHJveGltYXRpb24sIHByb2R1Y2luZyB0aGUgdmlzaWJsZSBcImp1bXAgdG9cbiAgICAgIC8vIHRoZSBzaWRlL3VwXCIgYXQgdGhlIHN0YXJ0IG9mIGEgcGFuIChtb3N0IG5vdGljZWFibGUgYXQgaGlnaCB6b29tKSwgYWZ0ZXJcbiAgICAgIC8vIHdoaWNoIGluY3JlbWVudGFsIGRlbHRhcyB0cmFjayBmaW5lLiBUaGUgZXhhY3QgYW5jaG9yIGJlbG93IHJlbW92ZXMgdGhhdFxuICAgICAgLy8gZmlyc3QtZnJhbWUgc25hcC5cbiAgICAgIHBhblN0YXJ0KHtwb3N9OiB7cG9zOiBbbnVtYmVyLCBudW1iZXJdfSkge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9ICh0aGlzIGFzIGFueSkubWFrZVZpZXdwb3J0KCh0aGlzIGFzIGFueSkuZ2V0Vmlld3BvcnRQcm9wcygpKTtcbiAgICAgICAgLy8gSWYgdGhlIG1vdXNlZG93biBwaXhlbCBpcyBvdXRzaWRlIHRoZSBnbG9iZSBzaWxob3VldHRlLCBzdG9yZSBgZmFsc2VgXG4gICAgICAgIC8vIGFzIGFuIGV4cGxpY2l0IHNlbnRpbmVsIHNvIHRoYXQgZXZlcnkgc3Vic2VxdWVudCBgcGFuYCBjYWxsIGZvciB0aGlzXG4gICAgICAgIC8vIGdlc3R1cmUgaXMgYSBuby1vcC4gIFdlIGNhbid0IHJlbHkgb24gYF91bnByb2plY3QocG9zKWAgcmV0dXJuaW5nXG4gICAgICAgIC8vIHVuZGVmaW5lZCBoZXJlIGJlY2F1c2UgR2xvYmVWaWV3cG9ydC51bnByb2plY3QgY2xhbXBzIHRoZVxuICAgICAgICAvLyByYXnigJNzcGhlcmUgZGlzY3JpbWluYW50IHRvIDAgdmlhIE1hdGgubWF4KDAsIOKApiksIHdoaWNoIG1lYW5zIGl0XG4gICAgICAgIC8vIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQtbG9va2luZyBsbmcvbGF0IGV2ZW4gZm9yIG9mZi1nbG9iZSBwaXhlbHMuXG4gICAgICAgIGlmICghaXNQaXhlbE9uR2xvYmUodmlld3BvcnQsIHBvcykpIHtcbiAgICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtzdGFydFBhbkxuZ0xhdDogZmFsc2V9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtcbiAgICAgICAgICBzdGFydFBhbkxuZ0xhdDogKHRoaXMgYXMgYW55KS5fdW5wcm9qZWN0KHBvcylcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHBhbih7cG9zLCBzdGFydFBvc306IHtwb3M6IFtudW1iZXIsIG51bWJlcl07IHN0YXJ0UG9zPzogW251bWJlciwgbnVtYmVyXX0pIHtcbiAgICAgICAgY29uc3Qgc3RvcmVkU3RhcnQgPSAodGhpcyBhcyBhbnkpLmdldFN0YXRlKCkuc3RhcnRQYW5MbmdMYXQ7XG5cbiAgICAgICAgY29uc3QgcHJvcHMgPSAodGhpcyBhcyBhbnkpLmdldFZpZXdwb3J0UHJvcHMoKTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSAodGhpcyBhcyBhbnkpLm1ha2VWaWV3cG9ydChwcm9wcyk7XG5cbiAgICAgICAgLy8gYGZhbHNlYCBtZWFucyB0aGUgZHJhZyBzdGFydGVkIG91dHNpZGUgdGhlIGdsb2JlLiBJZiB0aGUgY3Vyc29yIGhhc1xuICAgICAgICAvLyBub3cgbW92ZWQgb250byB0aGUgZ2xvYmUsIGxhdGNoIHRoZSBjdXJyZW50IHBvc2l0aW9uIGFzIHRoZSBhbmNob3JcbiAgICAgICAgLy8gc28gcm90YXRpb24gYmVnaW5zIGZyb20gdGhlIGVudHJ5IHBvaW50LiBPdGhlcndpc2Ugc3RheSBmcm96ZW4uXG4gICAgICAgIGlmIChzdG9yZWRTdGFydCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoIWlzUGl4ZWxPbkdsb2JlKHZpZXdwb3J0LCBwb3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQ3Vyc29yIGp1c3QgZW50ZXJlZCB0aGUgZ2xvYmUg4oCUIGVzdGFibGlzaCB0aGUgYW5jaG9yIGFuZCByZXR1cm5cbiAgICAgICAgICAvLyB3aXRob3V0IG1vdmluZzsgdGhlIG5leHQgcGFuIGV2ZW50IHdpbGwgYXBwbHkgdGhlIGZpcnN0IGRlbHRhLlxuICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRQYW5MbmdMYXQ6ICh0aGlzIGFzIGFueSkuX3VucHJvamVjdChwb3MpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGFydFBhbkxuZ0xhdCA9IHN0b3JlZFN0YXJ0IHx8ICh0aGlzIGFzIGFueSkuX3VucHJvamVjdChzdGFydFBvcyk7XG4gICAgICAgIGlmICghc3RhcnRQYW5MbmdMYXQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9uY2UgdGhlIGN1cnNvciBsZWF2ZXMgdGhlIGdsb2JlIHNpbGhvdWV0dGUgbWlkLWRyYWcsIGZyZWV6ZSB0aGUgdmlldy5cbiAgICAgICAgLy8gdmlld3BvcnQudW5wcm9qZWN0KCkgc25hcHMgb2ZmLWdsb2JlIHBpeGVscyB0byB0aGUgbmVhcmVzdCBsaW1iIHBvaW50XG4gICAgICAgIC8vICh2aWEgTWF0aC5tYXgoMCwg4oCmKSBpbiBpdHMgcmF54oCTc3BoZXJlIGRpc2NyaW1pbmFudCksIHNvIHdpdGhvdXQgdGhpc1xuICAgICAgICAvLyBndWFyZCB0aGUgZ2xvYmUgd291bGQga2VlcCByb3RhdGluZyB0b3dhcmQgdGhlIGVkZ2UgYXMgdGhlIGN1cnNvciBtb3Zlc1xuICAgICAgICAvLyBmdXJ0aGVyIG91dHNpZGUuXG4gICAgICAgIGlmICghaXNQaXhlbE9uR2xvYmUodmlld3BvcnQsIHBvcykpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZyb21Qb3NpdGlvbiA9IHZpZXdwb3J0LnVucHJvamVjdChwb3MpO1xuXG4gICAgICAgIGNvbnN0IGxvbmdpdHVkZSA9IHN0YXJ0UGFuTG5nTGF0WzBdIC0gZnJvbVBvc2l0aW9uWzBdICsgcHJvcHMubG9uZ2l0dWRlO1xuICAgICAgICBsZXQgbGF0aXR1ZGUgPSBzdGFydFBhbkxuZ0xhdFsxXSAtIGZyb21Qb3NpdGlvblsxXSArIHByb3BzLmxhdGl0dWRlO1xuICAgICAgICBsYXRpdHVkZSA9IGNsYW1wKGxhdGl0dWRlLCAtR0xPQkVfTUFYX0xBVElUVURFLCBHTE9CRV9NQVhfTEFUSVRVREUpO1xuXG4gICAgICAgIC8vIGRlY2suZ2wgOSdzIEdsb2JlVmlld3BvcnQgc2NhbGUgPSAyXih6b29tIC0gem9vbUFkanVzdChsYXRpdHVkZSkpLCBzbyBhXG4gICAgICAgIC8vIGNvbnN0YW50IHpvb20gd291bGQgbWFrZSB0aGUgZ2xvYmUgZ3JvdyBvbiBzY3JlZW4gYXMgdGhlIGNlbnRlciBtb3Zlc1xuICAgICAgICAvLyB0b3dhcmQgdGhlIHBvbGVzLiBSZS1jb3VwbGUgem9vbSB0byB0aGUgbmV3IGxhdGl0dWRlIChhcyBkZWNrLmdsIDkncyBvd25cbiAgICAgICAgLy8gcGFuIGRvZXMpIHRvIGtlZXAgdGhlIG9uLXNjcmVlbiBzY2FsZSDigJQgYW5kIHRodXMgdGlsZSBMT0Qg4oCUIGNvbnN0YW50LlxuICAgICAgICBjb25zdCB2aXN1YWxab29tID0gcHJvcHMuem9vbSAtIHpvb21BZGp1c3QocHJvcHMubGF0aXR1ZGUpO1xuICAgICAgICBjb25zdCB6b29tID0gdmlzdWFsWm9vbSArIHpvb21BZGp1c3QobGF0aXR1ZGUpO1xuXG4gICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe2xvbmdpdHVkZSwgbGF0aXR1ZGUsIHpvb219KTtcbiAgICAgIH1cblxuICAgICAgcGFuRW5kKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtzdGFydFBhbkxuZ0xhdDogbnVsbH0pO1xuICAgICAgfVxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbi8qKlxuICogQ3VzdG9tIEdsb2JlVmlldyB0aGF0IHVzZXMgem9vbS10by1jdXJzb3IgY29udHJvbGxlciBiZWhhdmlvci5cbiAqL1xuZXhwb3J0IGNsYXNzIEtlcGxlckdsb2JlVmlldyBleHRlbmRzIERlY2tHbG9iZVZpZXcge1xuICAvLyBGb3J3YXJkIGNvbnN0cnVjdG9yIHByb3BzIHRvIGRlY2suZ2wncyBHbG9iZVZpZXcuIERlY2xhcmVkIGV4cGxpY2l0bHkgYmVjYXVzZVxuICAvLyB0aGUgYmFzZSBjbGFzcyBpcyBsb29zZWx5IHR5cGVkIChzZWUgRGVja0dsb2JlVmlldyBhYm92ZSksIHdoaWNoIHdvdWxkXG4gIC8vIG90aGVyd2lzZSBzdXJmYWNlIGEgcGFyYW1ldGVybGVzcyBjb25zdHJ1Y3RvciB0byBjYWxsZXJzLlxuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGFueSkge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIGdldCBDb250cm9sbGVyVHlwZSgpIHtcbiAgICByZXR1cm4gWm9vbVRvQ3Vyc29yR2xvYmVDb250cm9sbGVyO1xuICB9XG5cbiAgLy8gZGVjay5nbCA5J3MgR2xvYmVWaWV3LmdldFZpZXdwb3J0VHlwZSgpIHN3YXBzIHRoZSB2aWV3cG9ydCBjbGFzcyBiYXNlZCBvbiB6b29tOlxuICAvLyAgIGByZXR1cm4gdmlld1N0YXRlLnpvb20gPiAxMiA/IFdlYk1lcmNhdG9yVmlld3BvcnQgOiBHbG9iZVZpZXdwb3J0O2BcbiAgLy8gQ3Jvc3Npbmcgem9vbSAxMiB0aGVyZWZvcmUgcmVjb21wdXRlcyB0aWxlIGJvdW5kcyB3aXRoIGNvbXBsZXRlbHkgZGlmZmVyZW50XG4gIC8vIHByb2plY3Rpb24gbWF0aCAoZ2xvYmUgdnMgZmxhdCBtZXJjYXRvcikuIFRoYXQgbWFrZXMgZGVjaydzIFRpbGVMYXllci9NVlRMYXllclxuICAvLyByZXNlbGVjdCB0aWxlcyBpbmNvbnNpc3RlbnRseSBhY3Jvc3MgdGhlIGJvdW5kYXJ5IOKAlCBtaXhlZCBMT0RzIChlLmcuIGEgejQgdGlsZVxuICAvLyBuZXh0IHRvIHoxMSksIGEgdmlzaWJsZSBcImZsaWNrZXJcIiBhdCAxMiwgYW5kIHRpbGVzIHRoYXQgZ2V0IGRyb3BwZWQgYW5kIHN0aWNrXG4gIC8vIGFzIGJsYWNrL2VtcHR5IHF1YWRzIChtb3N0IG9mdGVuIGNyb3NzaW5nIDEyIG9uIHRoZSB3YXkgKm91dCopLlxuICAvL1xuICAvLyBGb3JjZSBHbG9iZVZpZXdwb3J0IGF0IGV2ZXJ5IHpvb20gdG8gZWxpbWluYXRlIHRoZSB6PTEyIHZpZXdwb3J0IHN3YXAgc28gdGlsZVxuICAvLyBzZWxlY3Rpb24gc3RheXMgY29uc2lzdGVudC4gVGhlIHRyYWRlLW9mZiBpcyB0aGF0IHpvb20gPiAxMiBub3cgdXNlcyBmbG9hdDMyXG4gIC8vIGdsb2JlIHByZWNpc2lvbiAoZGVjaydzIGRvY3VtZW50ZWQgXCJubyBoaWdoLXByZWNpc2lvbiByZW5kZXJpbmcgPiAxMlwiIGxpbWl0KVxuICAvLyBpbnN0ZWFkIG9mIHN3aXRjaGluZyB0byBtZXJjYXRvciDigJQgZmFyIHByZWZlcmFibGUgdG8gdGhlIGJsYWNrIHF1YWRzLlxuICBnZXRWaWV3cG9ydFR5cGUoKSB7XG4gICAgcmV0dXJuIERlY2tHbG9iZVZpZXdwb3J0O1xuICB9XG59XG5cbktlcGxlckdsb2JlVmlldy5kaXNwbGF5TmFtZSA9ICdLZXBsZXJHbG9iZVZpZXcnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPLEtBQUtBLFFBQVEsTUFBTSxlQUFlO0FBQ3pDLFNBQVFDLEtBQUssRUFBRUMsSUFBSSxRQUFPLGVBQWU7QUFDekMsU0FBUUMsa0JBQWtCLFFBQU8sc0JBQXNCO0FBQ3ZELFNBQVFDLG1CQUFtQixRQUFPLDBCQUEwQjs7QUFFNUQ7QUFDQTtB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
398
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWNrQ29yZSIsImNsYW1wIiwidmVjNCIsIkdMT0JFX01BWF9MQVRJVFVERSIsIkdMT0JFX0NPTU1PTl9SQURJVVMiLCJEZWNrR2xvYmVWaWV3IiwiX0dsb2JlVmlldyIsIkdsb2JlQ29udHJvbGxlciIsIl9HbG9iZUNvbnRyb2xsZXIiLCJEZWNrR2xvYmVWaWV3cG9ydCIsIl9HbG9iZVZpZXdwb3J0Iiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwiTWF0aCIsImxvZzIiLCJQSSIsImNvcyIsImlzUGl4ZWxPbkdsb2JlIiwidmlld3BvcnQiLCJwb3MiLCJtIiwicGl4ZWxVbnByb2plY3Rpb25NYXRyaXgiLCJwMCIsInRyYW5zZm9ybU1hdDQiLCJwMSIsImF4IiwiYXkiLCJheiIsImJ4IiwiYnkiLCJieiIsImR4IiwiZHkiLCJkeiIsImN4IiwiY3kiLCJjeiIsImRTcXIiLCJab29tVG9DdXJzb3JHbG9iZUNvbnRyb2xsZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIk9yaWdpbmFsR2xvYmVTdGF0ZSIsIkNvbnRyb2xsZXJTdGF0ZSIsIm9mZkdsb2JlWm9vbUF0IiwiX09yaWdpbmFsR2xvYmVTdGF0ZSIsIlBhdGNoZWRHbG9iZVN0YXRlIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJhcHBseUNvbnN0cmFpbnRzIiwicHJvcHMiLCJyZXN1bHQiLCJfc3VwZXJQcm9wR2V0IiwiY2xhbXBlZExhdGl0dWRlIiwiem9vbSIsIl9jb25zdHJhaW5ab29tIiwiZ2V0Vmlld3BvcnRQcm9wcyIsIl9wcm9wcyIsIm1heFpvb20iLCJfcHJvcHMyIiwibWluWm9vbSIsInVuZGVmaW5lZCIsIlpPT00wIiwiem9vbUFkanVzdG1lbnQiLCJfcmVmIiwic3RhcnRQb3MiLCJzY2FsZSIsIl9nZXRTdGF0ZSIsImdldFN0YXRlIiwic3RhcnRab29tIiwic3RhcnRab29tTG5nTGF0IiwiY3VycmVudFByb3BzIiwiQlVSU1RfVElNRU9VVF9NUyIsIm5vdyIsIkRhdGUiLCJhbmNob3JWaWV3cG9ydCIsIm1ha2VWaWV3cG9ydCIsIm9uR2xvYmUiLCJfZ2V0VXBkYXRlZFN0YXRlIiwiX3VucHJvamVjdCIsImlzQXJyYXkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInQiLCJtaW4iLCJkTG5nIiwibG9uZ2l0dWRlIiwiem9vbWVkVmlld3BvcnQiLCJfb2JqZWN0U3ByZWFkIiwiZnJvbVBvc2l0aW9uIiwidW5wcm9qZWN0Iiwiem9vbUVuZCIsInBhblN0YXJ0IiwiX3JlZjIiLCJzdGFydFBhbkxuZ0xhdCIsInBhbiIsIl9yZWYzIiwic3RvcmVkU3RhcnQiLCJ2aXN1YWxab29tIiwicGFuRW5kIiwiS2VwbGVyR2xvYmVWaWV3IiwiX0RlY2tHbG9iZVZpZXciLCJnZXQiLCJnZXRWaWV3cG9ydFR5cGUiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9nbG9iZS12aWV3LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIERlY2tDb3JlIGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtjbGFtcCwgdmVjNH0gZnJvbSAnQG1hdGguZ2wvY29yZSc7XG5pbXBvcnQge0dMT0JFX01BWF9MQVRJVFVERX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtHTE9CRV9DT01NT05fUkFESVVTfSBmcm9tICcuL2dsb2JlLWRlcHRoLWRpc2stbGF5ZXInO1xuXG4vLyBkZWNrLmdsIGV4cG9zZXMgR2xvYmVWaWV3IC8gR2xvYmVDb250cm9sbGVyIGFzIGV4cGVyaW1lbnRhbCwgdW5kZXJzY29yZS1wcmVmaXhlZFxuLy8gbWVtYmVycy4gVGhlaXIgbmFtZWQgdHlwZSBiaW5kaW5ncyBhcmVuJ3QgcmVsaWFibHkgcmVzb2x2YWJsZSB0aHJvdWdoIHRoZVxuLy8gcGFja2FnZSBiYXJyZWwgdW5kZXIgdGhpcyBwcm9qZWN0J3MgbW9kdWxlIHJlc29sdXRpb24sIHNvIHdlIHB1bGwgdGhlbSBvZmYgdGhlXG4vLyBuYW1lc3BhY2Ugd2l0aCBhIGxvb3NlIHR5cGUuIFJ1bnRpbWUgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuY29uc3QgRGVja0dsb2JlVmlldyA9IChEZWNrQ29yZSBhcyBhbnkpLl9HbG9iZVZpZXcgYXMgYW55O1xuY29uc3QgR2xvYmVDb250cm9sbGVyID0gKERlY2tDb3JlIGFzIGFueSkuX0dsb2JlQ29udHJvbGxlciBhcyBhbnk7XG5jb25zdCBEZWNrR2xvYmVWaWV3cG9ydCA9IChEZWNrQ29yZSBhcyBhbnkpLl9HbG9iZVZpZXdwb3J0IGFzIGFueTtcblxuLyoqXG4gKiBMYXRpdHVkZS1iYXNlZCB6b29tIGFkanVzdG1lbnQgdXNlZCBieSBkZWNrLmdsJ3MgR2xvYmVWaWV3cG9ydCwgcmVwbGljYXRlZFxuICogaGVyZSBzbyBvdXIgY3VzdG9tIGBfY29uc3RyYWluWm9vbWAgbWF0Y2hlcyBkZWNrLmdsJ3MgY29vcmRpbmF0ZSBtYXRoLlxuICogU2VlIEBkZWNrLmdsL2NvcmUgZ2xvYmUtdmlld3BvcnQuanMgYHpvb21BZGp1c3RgLlxuICovXG5mdW5jdGlvbiB6b29tQWRqdXN0KGxhdGl0dWRlOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5sb2cyKE1hdGguUEkgKiBNYXRoLmNvcygobGF0aXR1ZGUgKiBNYXRoLlBJKSAvIDE4MCkpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2NyZWVuIHBpeGVsIGBwb3NgIGxpZXMgd2l0aGluIHRoZSB2aXNpYmxlIGdsb2JlXG4gKiBzaWxob3VldHRlLlxuICpcbiAqIEdsb2JlVmlld3BvcnQudW5wcm9qZWN0KCkgY2xhbXBzIHRoZSByYXnigJNzcGhlcmUgZGlzY3JpbWluYW50IHdpdGhcbiAqIE1hdGgubWF4KDAsIHLCsuKIkmTCsiksIHNvIGl0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgbG5nL2xhdCBldmVuIGZvclxuICogb2ZmLWdsb2JlIHBpeGVscyAoc25hcHBpbmcgdG8gdGhlIGxpbWIpLiAgV2UgcmVwbGljYXRlIHRoZSBzYW1lIHJheSBjYXN0XG4gKiBidXQgY2hlY2sgdGhlIGRpc2NyaW1pbmFudCBiZWZvcmUgdGhlIGNsYW1wIHVzaW5nIHRoZSBzdGFuZGFyZFxuICogc3F1YXJlZC1kaXN0YW5jZS1mcm9tLW9yaWdpbi10by1yYXkgZm9ybXVsYTogfFDigoAgw5cgZGlyfMKyIC8gfGRpcnzCsi5cbiAqL1xuZnVuY3Rpb24gaXNQaXhlbE9uR2xvYmUodmlld3BvcnQ6IGFueSwgcG9zOiBbbnVtYmVyLCBudW1iZXJdKTogYm9vbGVhbiB7XG4gIGNvbnN0IG06IG51bWJlcltdID0gdmlld3BvcnQucGl4ZWxVbnByb2plY3Rpb25NYXRyaXg7XG4gIGlmICghbSkgcmV0dXJuIHRydWU7IC8vIGNvbnNlcnZhdGl2ZSBmYWxsYmFjayBpZiBtYXRyaXggdW5hdmFpbGFibGVcblxuICAvLyBDYXN0IGEgcmF5IHRocm91Z2ggdGhlIHBpeGVsIGF0IHRoZSBuZWFyIGFuZCBmYXIgcGxhbmVzLlxuICBjb25zdCBwMCA9IHZlYzQudHJhbnNmb3JtTWF0NChbXSwgW3Bvc1swXSwgcG9zWzFdLCAtMSwgMV0sIG0pO1xuICBjb25zdCBwMSA9IHZlYzQudHJhbnNmb3JtTWF0NChbXSwgW3Bvc1swXSwgcG9zWzFdLCAxLCAxXSwgbSk7XG4gIGlmIChwMFszXSA9PT0gMCB8fCBwMVszXSA9PT0gMCkgcmV0dXJuIHRydWU7IC8vIGRlZ2VuZXJhdGUgcHJvamVjdGlvblxuXG4gIC8vIFBlcnNwZWN0aXZlLWRpdmlkZSB0byB3b3JsZCBzcGFjZS5cbiAgY29uc3QgYXggPSBwMFswXSAvIHAwWzNdLFxuICAgIGF5ID0gcDBbMV0gLyBwMFszXSxcbiAgICBheiA9IHAwWzJdIC8gcDBbM107XG4gIGNvbnN0IGJ4ID0gcDFbMF0gLyBwMVszXSxcbiAgICBieSA9IHAxWzFdIC8gcDFbM10sXG4gICAgYnogPSBwMVsyXSAvIHAxWzNdO1xuXG4gIC8vIFJheSBkaXJlY3Rpb24uXG4gIGNvbnN0IGR4ID0gYnggLSBheCxcbiAgICBkeSA9IGJ5IC0gYXksXG4gICAgZHogPSBieiAtIGF6O1xuXG4gIC8vIFNxdWFyZWQgZGlzdGFuY2UgZnJvbSB0aGUgb3JpZ2luIChnbG9iZSBjZW50ZXIpIHRvIHRoZSByYXk6XG4gIC8vICAgZMKyID0gfFDigoAgw5cgZGlyfMKyIC8gfGRpcnzCslxuICBjb25zdCBjeCA9IGF5ICogZHogLSBheiAqIGR5O1xuICBjb25zdCBjeSA9IGF6ICogZHggLSBheCAqIGR6O1xuICBjb25zdCBjeiA9IGF4ICogZHkgLSBheSAqIGR4O1xuICBjb25zdCBkU3FyID0gKGN4ICogY3ggKyBjeSAqIGN5ICsgY3ogKiBjeikgLyAoZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6KTtcblxuICByZXR1cm4gZFNxciA8PSBHTE9CRV9DT01NT05fUkFESVVTICogR0xPQkVfQ09NTU9OX1JBRElVUztcbn1cblxuLyoqXG4gKiBDdXN0b20gR2xvYmVDb250cm9sbGVyIHRoYXQgcmVzdG9yZXMgem9vbS10by1jdXJzb3IgYmVoYXZpb3IuXG4gKlxuICogSW4gZGVjay5nbCA5LngsIHRoZSBkZWZhdWx0IEdsb2JlQ29udHJvbGxlcidzIEdsb2JlU3RhdGUuem9vbSgpIGlnbm9yZXMgdGhlXG4gKiBjdXJzb3IgcG9zaXRpb24gYW5kIGFsd2F5cyB6b29tcyB0b3dhcmQgdGhlIGNlbnRlci4gVGhpcyBjb250cm9sbGVyIHBhdGNoZXNcbiAqIHRoYXQgYmVoYXZpb3IgYnkgb3ZlcnJpZGluZyB0aGUgQ29udHJvbGxlclN0YXRlJ3Mgem9vbSBtZXRob2QgdG8gcGFuIHRoZVxuICogZ2xvYmUgdW5kZXIgdGhlIGN1cnNvciB3aGlsZSB6b29taW5nLCBzbyB6b29tLXRvLWN1cnNvciB3b3JrcyB0aGUgc2FtZSB3YXkgaXRcbiAqIGRvZXMgZm9yIHRoZSAyRCBNYXBDb250cm9sbGVyLlxuICovXG5jbGFzcyBab29tVG9DdXJzb3JHbG9iZUNvbnRyb2xsZXIgZXh0ZW5kcyBHbG9iZUNvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgIGNvbnN0IE9yaWdpbmFsR2xvYmVTdGF0ZSA9IHRoaXMuQ29udHJvbGxlclN0YXRlO1xuXG4gICAgLy8gVHJhY2tzIHdoZW4gdGhlIG1vc3QgcmVjZW50IG9mZi1nbG9iZSB3aGVlbC16b29tIHRpY2sgZmlyZWQuXG4gICAgLy8gU3RvcmVkIGFzIGEgY29udHJvbGxlci1sZXZlbCBjbG9zdXJlIHZhcmlhYmxlIHJhdGhlciB0aGFuIGluIFZpZXdTdGF0ZVxuICAgIC8vIGJlY2F1c2UgZGVjay5nbCdzIENvbnRyb2xsZXIgbmV2ZXIgY2FsbHMgem9vbUVuZCgpIGZvciB3aGVlbCBldmVudHMg4oCUXG4gICAgLy8gb25seSBmb3IgcGluY2gvdG91Y2gg4oCUIHNvIHRoZXJlIGlzIG5vIHJlbGlhYmxlIGhvb2sgdG8gY2xlYXIgYVxuICAgIC8vIFZpZXdTdGF0ZS1iYXNlZCBzZW50aW5lbCBhZnRlciBhIHdoZWVsIHNjcm9sbCBzZXNzaW9uIGVuZHMuXG4gICAgLy8gQSBzaW1wbGUgdGltZXN0YW1wIGxldHMgdXMgZGV0ZWN0IHdoZW4gYSBuZXcgc2Nyb2xsIGJ1cnN0IGhhcyBzdGFydGVkXG4gICAgLy8gKD4gQlVSU1RfVElNRU9VVF9NUyBzaW5jZSB0aGUgbGFzdCBvZmYtZ2xvYmUgdGljaykgc28gY3Vyc29yLWFuY2hvcmVkXG4gICAgLy8gem9vbSBjYW4gcmVzdW1lIG5hdHVyYWxseSBvbiB0aGUgbmV4dCBpbmRlcGVuZGVudCBzY3JvbGwuXG4gICAgbGV0IG9mZkdsb2JlWm9vbUF0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIENyZWF0ZSBwYXRjaGVkIEdsb2JlU3RhdGUgdGhhdCBzdXBwb3J0cyB6b29tLXRvLWN1cnNvclxuICAgIHRoaXMuQ29udHJvbGxlclN0YXRlID0gY2xhc3MgUGF0Y2hlZEdsb2JlU3RhdGUgZXh0ZW5kcyBPcmlnaW5hbEdsb2JlU3RhdGUge1xuICAgICAgLy8gQ29uc3RyYWluIHRoZSBjYW1lcmEgdGFyZ2V0IHRvIGEgbGF0aXR1ZGUgYmFuZCBhcm91bmQgdGhlIGVxdWF0b3Igc28gdGhlXG4gICAgICAvLyB2aWV3IGNhbid0IGJlIGNlbnRlcmVkIG9uIHRoZSBwb2xlcy4gZGVjay5nbCdzIGFwcGx5Q29uc3RyYWludHMgY2xhbXBzXG4gICAgICAvLyBsYXRpdHVkZSB0byB+ODXCsCwgd2hpY2ggc3RpbGwgbGV0cyB0aGUgY2FtZXJhIGxvb2sgc3RyYWlnaHQgYXQgYSBwb2xlLlxuICAgICAgYXBwbHlDb25zdHJhaW50cyhwcm9wczogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLmFwcGx5Q29uc3RyYWludHMocHJvcHMpO1xuICAgICAgICBjb25zdCBjbGFtcGVkTGF0aXR1ZGUgPSBjbGFtcChyZXN1bHQubGF0aXR1ZGUsIC1HTE9CRV9NQVhfTEFUSVRVREUsIEdMT0JFX01BWF9MQVRJVFVERSk7XG4gICAgICAgIGlmIChjbGFtcGVkTGF0aXR1ZGUgIT09IHJlc3VsdC5sYXRpdHVkZSkge1xuICAgICAgICAgIC8vIGRlY2suZ2wgY291cGxlcyB6b29tIHRvIGxhdGl0dWRlIHZpYSB6b29tQWRqdXN0OyB3aGVuIHdlIGZ1cnRoZXJcbiAgICAgICAgICAvLyBjbGFtcCBsYXRpdHVkZSwgcmUtYXBwbHkgdGhlIHNhbWUgZGVsdGEgc28gem9vbSBzdGF5cyBjb25zaXN0ZW50LlxuICAgICAgICAgIHJlc3VsdC56b29tICs9IHpvb21BZGp1c3QoY2xhbXBlZExhdGl0dWRlKSAtIHpvb21BZGp1c3QocmVzdWx0LmxhdGl0dWRlKTtcbiAgICAgICAgICByZXN1bHQubGF0aXR1ZGUgPSBjbGFtcGVkTGF0aXR1ZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgLy8gZGVjay5nbCdzIEdsb2JlU3RhdGUuX2NvbnN0cmFpblpvb20gZGVyaXZlcyBhIG1pbmltdW0gem9vbSBmcm9tIGBtYXhCb3VuZHNgXG4gICAgICAvLyB0aGF0IGZvcmNlcyB0aGUgZ2xvYmUgdG8gZmlsbCB0aGUgdmlld3BvcnQuIFRoYXQgYm91bmRzLWJhc2VkIG1pbmltdW1cbiAgICAgIC8vICh+MyBmb3IgYSB0eXBpY2FsIHdpbmRvdykgb3ZlcnJpZGVzIGFueSBjb25maWd1cmVkIGBtaW5ab29tYCwgc28gdGhlIHVzZXJcbiAgICAgIC8vIGNhbiBuZXZlciB6b29tIG91dCBmYXIgZW5vdWdoIHRvIHNlZSB0aGUgd2hvbGUgZ2xvYmUgc21hbGwgb24gc2NyZWVuLlxuICAgICAgLy8gT3ZlcnJpZGUgaXQgdG8gaG9ub3Igb25seSB0aGUgY29uZmlndXJlZCBtaW5ab29tL21heFpvb20gKHBsdXMgdGhlIHNhbWVcbiAgICAgIC8vIGxhdGl0dWRlIGFkanVzdG1lbnQgZGVjay5nbCB1c2VzKSwgaWdub3JpbmcgdGhlIGJvdW5kcy1iYXNlZCBmbG9vci5cbiAgICAgIF9jb25zdHJhaW5ab29tKHpvb206IG51bWJlciwgcHJvcHM/OiBhbnkpIHtcbiAgICAgICAgcHJvcHMgPSBwcm9wcyB8fCAodGhpcyBhcyBhbnkpLmdldFZpZXdwb3J0UHJvcHMoKTtcbiAgICAgICAgY29uc3Qge2xhdGl0dWRlLCBtYXhab29tfSA9IHByb3BzO1xuICAgICAgICBsZXQge21pblpvb219ID0gcHJvcHM7XG4gICAgICAgIGlmIChtaW5ab29tID09PSB1bmRlZmluZWQgfHwgbWluWm9vbSA9PT0gbnVsbCkge1xuICAgICAgICAgIG1pblpvb20gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFpPT00wID0gem9vbUFkanVzdCgwKTtcbiAgICAgICAgY29uc3Qgem9vbUFkanVzdG1lbnQgPSB6b29tQWRqdXN0KGxhdGl0dWRlKSAtIFpPT00wO1xuICAgICAgICByZXR1cm4gY2xhbXAoem9vbSwgbWluWm9vbSArIHpvb21BZGp1c3RtZW50LCBtYXhab29tICsgem9vbUFkanVzdG1lbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBFeGFjdCB6b29tLXRvLWN1cnNvci4gZGVjay5nbCA5LngncyBHbG9iZUNvbnRyb2xsZXIgZG9lcyBub3Qga2VlcCB0aGUgcG9pbnRcbiAgICAgIC8vIHVuZGVyIHRoZSBjdXJzb3IgZml4ZWQgd2hpbGUgem9vbWluZywgaW4gdHdvIHdheXMgd2Ugd29yayBhcm91bmQgaGVyZTpcbiAgICAgIC8vICAgMS4gSXRzIEdsb2JlU3RhdGUuem9vbSgpIGlnbm9yZXMgdGhlIGN1cnNvciBhbmQgem9vbXMgdG93YXJkIHRoZSBjZW50ZXIuXG4gICAgICAvLyAgIDIuIEl0cyBHbG9iZVZpZXdwb3J0LnBhbkJ5UG9zaXRpb24gaXMgYSBsb3NzeSwgKmxpbmVhcml6ZWQqIDMtYXJnXG4gICAgICAvLyAgICAgIHJvdGF0aW9uIChsb25naXR1ZGUgKz0gKDAuMjUvc2NhbGUpKihzdGFydFBpeGVsLXBpeGVsKSwgcmUtZGVyaXZlc1xuICAgICAgLy8gICAgICB6b29tKS4gVXNpbmcgaXQgcGVyIHdoZWVsIHRpY2sgYWNjdW11bGF0ZXMgZXJyb3IsIHNvIGFmdGVyIGEgbG9uZ1xuICAgICAgLy8gICAgICBjb250aW51b3VzIHpvb20gdGhlIHBvaW50IGVuZHMgdXAgbm90aWNlYWJseSBzaGlmdGVkIGZyb20gd2hhdCB3YXNcbiAgICAgIC8vICAgICAgb3JpZ2luYWxseSB1bmRlciB0aGUgY3Vyc29yLlxuICAgICAgLy8gVGhlIHJlY2VudGVyIGJlbG93IGlzIGFuICpleGFjdCBhYnNvbHV0ZSogdHJhbnNsYXRpb246IHVucHJvamVjdCB0aGVcbiAgICAgIC8vIGN1cnNvciBwaXhlbCBpbiB0aGUgem9vbWVkIHZpZXdwb3J0IHRvIGdldCB0aGUgZ2VvIHBvaW50IGN1cnJlbnRseSB1bmRlciBpdCxcbiAgICAgIC8vIHRoZW4gc2hpZnQgdGhlIGNlbnRlciBieSAoYW5jaG9yIC0gdGhhdFBvaW50KS4gTm8gem9vbSBjb3VwbGluZywgbm9cbiAgICAgIC8vIHJvdGF0aW9uU3BlZWQsIGFuZCBpdCBhcHBsaWVzIHRvIHpvb20taW4gYW5kIHpvb20tb3V0IHN5bW1ldHJpY2FsbHksIHNvXG4gICAgICAvLyB0aGVyZSBpcyBubyBwZXItdGljayBhY2N1bXVsYXRlZCBkcmlmdC5cbiAgICAgIHpvb20oe1xuICAgICAgICBwb3MsXG4gICAgICAgIHN0YXJ0UG9zLFxuICAgICAgICBzY2FsZVxuICAgICAgfToge1xuICAgICAgICBwb3M6IFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgIHN0YXJ0UG9zPzogW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgc2NhbGU6IG51bWJlcjtcbiAgICAgIH0pIHtcbiAgICAgICAgbGV0IHtzdGFydFpvb20sIHN0YXJ0Wm9vbUxuZ0xhdH0gPSAodGhpcyBhcyBhbnkpLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQcm9wcyA9ICh0aGlzIGFzIGFueSkuZ2V0Vmlld3BvcnRQcm9wcygpO1xuXG4gICAgICAgIGlmICghc3RhcnRab29tTG5nTGF0KSB7XG4gICAgICAgICAgLy8gV2hlZWwgem9vbTogcmUtZGVyaXZlIGFuY2hvciBlYWNoIHRpY2sgKHBpbmNoIHNldHMgaXQgb25jZSBpbiB6b29tU3RhcnQpLlxuICAgICAgICAgIHN0YXJ0Wm9vbSA9IGN1cnJlbnRQcm9wcy56b29tO1xuXG4gICAgICAgICAgLy8gU3VwcHJlc3MgY3Vyc29yLWFuY2hvcmluZyB3aGVuIHRoZSBjdXJzb3IgaXMgb2ZmLWdsb2JlIG9yIHdoZW4gYVxuICAgICAgICAgIC8vIHJlY2VudCB0aWNrIHdhcyBvZmYtZ2xvYmUgKHdpdGhpbiBCVVJTVF9USU1FT1VUX01TKS4gIGRlY2suZ2wgbmV2ZXJcbiAgICAgICAgICAvLyBjYWxscyB6b29tRW5kKCkgZm9yIHdoZWVsIGV2ZW50cyBzbyB3ZSB0cmFjayB0aGUgc2Vzc2lvbiB3aXRoIHRoZVxuICAgICAgICAgIC8vIGNsb3N1cmUgdmFyaWFibGUgYG9mZkdsb2JlWm9vbUF0YCByYXRoZXIgdGhhbiBWaWV3U3RhdGUuXG4gICAgICAgICAgY29uc3QgQlVSU1RfVElNRU9VVF9NUyA9IDIwMDtcbiAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGNvbnN0IGFuY2hvclZpZXdwb3J0ID0gKHRoaXMgYXMgYW55KS5tYWtlVmlld3BvcnQoY3VycmVudFByb3BzKTtcbiAgICAgICAgICBjb25zdCBvbkdsb2JlID0gaXNQaXhlbE9uR2xvYmUoYW5jaG9yVmlld3BvcnQsIHN0YXJ0UG9zIHx8IHBvcyk7XG5cbiAgICAgICAgICBpZiAoIW9uR2xvYmUpIG9mZkdsb2JlWm9vbUF0ID0gbm93O1xuXG4gICAgICAgICAgaWYgKCFvbkdsb2JlIHx8IChvZmZHbG9iZVpvb21BdCAhPT0gbnVsbCAmJiBub3cgLSBvZmZHbG9iZVpvb21BdCA8IEJVUlNUX1RJTUVPVVRfTVMpKSB7XG4gICAgICAgICAgICBjb25zdCB6b29tID0gKHRoaXMgYXMgYW55KS5fY29uc3RyYWluWm9vbShzdGFydFpvb20gKyBNYXRoLmxvZzIoc2NhbGUpKTtcbiAgICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe3pvb219KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvZmZHbG9iZVpvb21BdCA9IG51bGw7XG4gICAgICAgICAgc3RhcnRab29tTG5nTGF0ID0gKHRoaXMgYXMgYW55KS5fdW5wcm9qZWN0KHN0YXJ0UG9zKSB8fCAodGhpcyBhcyBhbnkpLl91bnByb2plY3QocG9zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHpvb20gPSAodGhpcyBhcyBhbnkpLl9jb25zdHJhaW5ab29tKHN0YXJ0Wm9vbSArIE1hdGgubG9nMihzY2FsZSkpO1xuXG4gICAgICAgIGlmICghc3RhcnRab29tTG5nTGF0KSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7em9vbX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gWm9vbS1vdXQgKHNjYWxlIDwgMSk6IGV4YWN0IGN1cnNvciBhbmNob3JpbmcgaXMgdW5zdGFibGUgbmVhciB0aGUgbGltYlxuICAgICAgICAvLyAobm9uLWxpbmVhciBnZW8tdG8tcGl4ZWwgbWFwcGluZyBwdWxscyB0aGUgdmlldyB0b3dhcmQgdGhlIHBvbGVzKS5cbiAgICAgICAgLy8gSW5zdGVhZCwgZ2VudGx5IHN0ZWVyIHRoZSBjZW50ZXIgdG93YXJkIHRoZSBjdXJzb3IgbG9jYXRpb24gcGVyIHRpY2suXG4gICAgICAgIGlmIChzY2FsZSA8IDEpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShzdGFydFpvb21MbmdMYXQpIHx8XG4gICAgICAgICAgICAhTnVtYmVyLmlzRmluaXRlKHN0YXJ0Wm9vbUxuZ0xhdFswXSkgfHxcbiAgICAgICAgICAgICFOdW1iZXIuaXNGaW5pdGUoc3RhcnRab29tTG5nTGF0WzFdKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7em9vbX0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFBlci10aWNrIGxlcnAgc3RyZW5ndGggc2NhbGVzIHdpdGggem9vbS1vdXQgYW1vdW50OyBjbGFtcGVkIHRvIGF2b2lkIG92ZXJzaG9vdC5cbiAgICAgICAgICBjb25zdCB0ID0gTWF0aC5taW4oMSwgKDEgLSBzY2FsZSkgKiAwLjExKTtcblxuICAgICAgICAgIC8vIFNob3J0ZXN0LXBhdGggbG9uZ2l0dWRlIGludGVycG9sYXRpb24gKGhhbmRsZXMgYW50aW1lcmlkaWFuIHdyYXApLlxuICAgICAgICAgIGxldCBkTG5nID0gc3RhcnRab29tTG5nTGF0WzBdIC0gY3VycmVudFByb3BzLmxvbmdpdHVkZTtcbiAgICAgICAgICBpZiAoZExuZyA+IDE4MCkgZExuZyAtPSAzNjA7XG4gICAgICAgICAgaWYgKGRMbmcgPCAtMTgwKSBkTG5nICs9IDM2MDtcblxuICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe1xuICAgICAgICAgICAgem9vbSxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogY3VycmVudFByb3BzLmxvbmdpdHVkZSArIGRMbmcgKiB0LFxuICAgICAgICAgICAgbGF0aXR1ZGU6IGN1cnJlbnRQcm9wcy5sYXRpdHVkZSArIChzdGFydFpvb21MbmdMYXRbMV0gLSBjdXJyZW50UHJvcHMubGF0aXR1ZGUpICogdFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgem9vbWVkVmlld3BvcnQgPSAodGhpcyBhcyBhbnkpLm1ha2VWaWV3cG9ydCh7XG4gICAgICAgICAgLi4uY3VycmVudFByb3BzLFxuICAgICAgICAgIHpvb21cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gWm9vbS1pbjogZXhhY3QgYW5jaG9yIOKAlCB1bnByb2plY3QgdGhlIGN1cnNvciBpbiB0aGUgcG9zdC16b29tIHZpZXdwb3J0IGFuZFxuICAgICAgICAvLyBzaGlmdCB0aGUgY2VudGVyIHNvIHRoZSBncmFiYmVkIGdlbyBwb2ludCBsYW5kcyBiYWNrIHVuZGVyIHRoZSBjdXJzb3IuXG4gICAgICAgIC8vIEd1YXJkIHdpdGggaXNQaXhlbE9uR2xvYmU6IGlmIHBvcyBtb3ZlZCBvZmYtZ2xvYmUgZHVyaW5nIGEgZmFzdCBwaW5jaCxcbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIGNlbnRlciB6b29tLlxuICAgICAgICBpZiAoIWlzUGl4ZWxPbkdsb2JlKHpvb21lZFZpZXdwb3J0LCBwb3MpKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7em9vbX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnJvbVBvc2l0aW9uID0gem9vbWVkVmlld3BvcnQudW5wcm9qZWN0KHBvcyk7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7XG4gICAgICAgICAgem9vbSxcbiAgICAgICAgICBsb25naXR1ZGU6IHN0YXJ0Wm9vbUxuZ0xhdFswXSAtIGZyb21Qb3NpdGlvblswXSArIHpvb21lZFZpZXdwb3J0LmxvbmdpdHVkZSxcbiAgICAgICAgICBsYXRpdHVkZTogc3RhcnRab29tTG5nTGF0WzFdIC0gZnJvbVBvc2l0aW9uWzFdICsgem9vbWVkVmlld3BvcnQubGF0aXR1ZGVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENsZWFyIHRoZSBwZXJzaXN0ZWQgcGluY2ggYW5jaG9yIGF0IGdlc3R1cmUgZW5kLlxuICAgICAgem9vbUVuZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7XG4gICAgICAgICAgc3RhcnRab29tOiBudWxsLFxuICAgICAgICAgIHN0YXJ0Wm9vbUxuZ0xhdDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gRXhhY3QsIGN1cnNvci1hbmNob3JlZCBwYW46IHRoZSBnZW8gcG9pbnQgZ3JhYmJlZCBvbiBtb3VzZWRvd24gc3RheXNcbiAgICAgIC8vIGxvY2tlZCB1bmRlciB0aGUgY3Vyc29yIGZvciB0aGUgd2hvbGUgZHJhZy5cbiAgICAgIC8vXG4gICAgICAvLyBkZWNrLmdsIDkueCdzIEdsb2JlQ29udHJvbGxlciBwYW5zIHdpdGggYSAqbGluZWFyaXplZCwgY2VudGVyLWFuY2hvcmVkKlxuICAgICAgLy8gcm90YXRpb24gKEdsb2JlVmlld3BvcnQucGFuQnlQb3NpdGlvbihbbG5nLGxhdCx6b29tXSwgcGl4ZWwsIHN0YXJ0UGl4ZWwpOlxuICAgICAgLy8gbG9uZ2l0dWRlICs9ICgwLjI1L3NjYWxlKSooc3RhcnRQaXhlbC1waXhlbCkpLiBCZWNhdXNlIHRoZSBhbmNob3IgaXMgdGhlXG4gICAgICAvLyB2aWV3IENFTlRFUiByYXRoZXIgdGhhbiB0aGUgZ3JhYmJlZCBwb2ludCwgdGhlIGZpcnN0IGRyYWcgZnJhbWUgc25hcHMgdGhlXG4gICAgICAvLyBjZW50ZXIgdG8gc2F0aXNmeSB0aGUgbGluZWFyIGFwcHJveGltYXRpb24sIHByb2R1Y2luZyB0aGUgdmlzaWJsZSBcImp1bXAgdG9cbiAgICAgIC8vIHRoZSBzaWRlL3VwXCIgYXQgdGhlIHN0YXJ0IG9mIGEgcGFuIChtb3N0IG5vdGljZWFibGUgYXQgaGlnaCB6b29tKSwgYWZ0ZXJcbiAgICAgIC8vIHdoaWNoIGluY3JlbWVudGFsIGRlbHRhcyB0cmFjayBmaW5lLiBUaGUgZXhhY3QgYW5jaG9yIGJlbG93IHJlbW92ZXMgdGhhdFxuICAgICAgLy8gZmlyc3QtZnJhbWUgc25hcC5cbiAgICAgIHBhblN0YXJ0KHtwb3N9OiB7cG9zOiBbbnVtYmVyLCBudW1iZXJdfSkge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9ICh0aGlzIGFzIGFueSkubWFrZVZpZXdwb3J0KCh0aGlzIGFzIGFueSkuZ2V0Vmlld3BvcnRQcm9wcygpKTtcbiAgICAgICAgLy8gSWYgdGhlIG1vdXNlZG93biBwaXhlbCBpcyBvdXRzaWRlIHRoZSBnbG9iZSBzaWxob3VldHRlLCBzdG9yZSBgZmFsc2VgXG4gICAgICAgIC8vIGFzIGFuIGV4cGxpY2l0IHNlbnRpbmVsIHNvIHRoYXQgZXZlcnkgc3Vic2VxdWVudCBgcGFuYCBjYWxsIGZvciB0aGlzXG4gICAgICAgIC8vIGdlc3R1cmUgaXMgYSBuby1vcC4gIFdlIGNhbid0IHJlbHkgb24gYF91bnByb2plY3QocG9zKWAgcmV0dXJuaW5nXG4gICAgICAgIC8vIHVuZGVmaW5lZCBoZXJlIGJlY2F1c2UgR2xvYmVWaWV3cG9ydC51bnByb2plY3QgY2xhbXBzIHRoZVxuICAgICAgICAvLyByYXnigJNzcGhlcmUgZGlzY3JpbWluYW50IHRvIDAgdmlhIE1hdGgubWF4KDAsIOKApiksIHdoaWNoIG1lYW5zIGl0XG4gICAgICAgIC8vIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQtbG9va2luZyBsbmcvbGF0IGV2ZW4gZm9yIG9mZi1nbG9iZSBwaXhlbHMuXG4gICAgICAgIGlmICghaXNQaXhlbE9uR2xvYmUodmlld3BvcnQsIHBvcykpIHtcbiAgICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtzdGFydFBhbkxuZ0xhdDogZmFsc2V9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtcbiAgICAgICAgICBzdGFydFBhbkxuZ0xhdDogKHRoaXMgYXMgYW55KS5fdW5wcm9qZWN0KHBvcylcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHBhbih7cG9zLCBzdGFydFBvc306IHtwb3M6IFtudW1iZXIsIG51bWJlcl07IHN0YXJ0UG9zPzogW251bWJlciwgbnVtYmVyXX0pIHtcbiAgICAgICAgY29uc3Qgc3RvcmVkU3RhcnQgPSAodGhpcyBhcyBhbnkpLmdldFN0YXRlKCkuc3RhcnRQYW5MbmdMYXQ7XG5cbiAgICAgICAgY29uc3QgcHJvcHMgPSAodGhpcyBhcyBhbnkpLmdldFZpZXdwb3J0UHJvcHMoKTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSAodGhpcyBhcyBhbnkpLm1ha2VWaWV3cG9ydChwcm9wcyk7XG5cbiAgICAgICAgLy8gYGZhbHNlYCBtZWFucyB0aGUgZHJhZyBzdGFydGVkIG91dHNpZGUgdGhlIGdsb2JlLiBJZiB0aGUgY3Vyc29yIGhhc1xuICAgICAgICAvLyBub3cgbW92ZWQgb250byB0aGUgZ2xvYmUsIGxhdGNoIHRoZSBjdXJyZW50IHBvc2l0aW9uIGFzIHRoZSBhbmNob3JcbiAgICAgICAgLy8gc28gcm90YXRpb24gYmVnaW5zIGZyb20gdGhlIGVudHJ5IHBvaW50LiBPdGhlcndpc2Ugc3RheSBmcm96ZW4uXG4gICAgICAgIGlmIChzdG9yZWRTdGFydCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoIWlzUGl4ZWxPbkdsb2JlKHZpZXdwb3J0LCBwb3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQ3Vyc29yIGp1c3QgZW50ZXJlZCB0aGUgZ2xvYmUg4oCUIGVzdGFibGlzaCB0aGUgYW5jaG9yIGFuZCByZXR1cm5cbiAgICAgICAgICAvLyB3aXRob3V0IG1vdmluZzsgdGhlIG5leHQgcGFuIGV2ZW50IHdpbGwgYXBwbHkgdGhlIGZpcnN0IGRlbHRhLlxuICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRQYW5MbmdMYXQ6ICh0aGlzIGFzIGFueSkuX3VucHJvamVjdChwb3MpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGFydFBhbkxuZ0xhdCA9IHN0b3JlZFN0YXJ0IHx8ICh0aGlzIGFzIGFueSkuX3VucHJvamVjdChzdGFydFBvcyk7XG4gICAgICAgIGlmICghc3RhcnRQYW5MbmdMYXQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9uY2UgdGhlIGN1cnNvciBsZWF2ZXMgdGhlIGdsb2JlIHNpbGhvdWV0dGUgbWlkLWRyYWcsIGZyZWV6ZSB0aGUgdmlldy5cbiAgICAgICAgLy8gdmlld3BvcnQudW5wcm9qZWN0KCkgc25hcHMgb2ZmLWdsb2JlIHBpeGVscyB0byB0aGUgbmVhcmVzdCBsaW1iIHBvaW50XG4gICAgICAgIC8vICh2aWEgTWF0aC5tYXgoMCwg4oCmKSBpbiBpdHMgcmF54oCTc3BoZXJlIGRpc2NyaW1pbmFudCksIHNvIHdpdGhvdXQgdGhpc1xuICAgICAgICAvLyBndWFyZCB0aGUgZ2xvYmUgd291bGQga2VlcCByb3RhdGluZyB0b3dhcmQgdGhlIGVkZ2UgYXMgdGhlIGN1cnNvciBtb3Zlc1xuICAgICAgICAvLyBmdXJ0aGVyIG91dHNpZGUuXG4gICAgICAgIGlmICghaXNQaXhlbE9uR2xvYmUodmlld3BvcnQsIHBvcykpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZyb21Qb3NpdGlvbiA9IHZpZXdwb3J0LnVucHJvamVjdChwb3MpO1xuXG4gICAgICAgIGNvbnN0IGxvbmdpdHVkZSA9IHN0YXJ0UGFuTG5nTGF0WzBdIC0gZnJvbVBvc2l0aW9uWzBdICsgcHJvcHMubG9uZ2l0dWRlO1xuICAgICAgICBsZXQgbGF0aXR1ZGUgPSBzdGFydFBhbkxuZ0xhdFsxXSAtIGZyb21Qb3NpdGlvblsxXSArIHByb3BzLmxhdGl0dWRlO1xuICAgICAgICBsYXRpdHVkZSA9IGNsYW1wKGxhdGl0dWRlLCAtR0xPQkVfTUFYX0xBVElUVURFLCBHTE9CRV9NQVhfTEFUSVRVREUpO1xuXG4gICAgICAgIC8vIGRlY2suZ2wgOSdzIEdsb2JlVmlld3BvcnQgc2NhbGUgPSAyXih6b29tIC0gem9vbUFkanVzdChsYXRpdHVkZSkpLCBzbyBhXG4gICAgICAgIC8vIGNvbnN0YW50IHpvb20gd291bGQgbWFrZSB0aGUgZ2xvYmUgZ3JvdyBvbiBzY3JlZW4gYXMgdGhlIGNlbnRlciBtb3Zlc1xuICAgICAgICAvLyB0b3dhcmQgdGhlIHBvbGVzLiBSZS1jb3VwbGUgem9vbSB0byB0aGUgbmV3IGxhdGl0dWRlIChhcyBkZWNrLmdsIDkncyBvd25cbiAgICAgICAgLy8gcGFuIGRvZXMpIHRvIGtlZXAgdGhlIG9uLXNjcmVlbiBzY2FsZSDigJQgYW5kIHRodXMgdGlsZSBMT0Qg4oCUIGNvbnN0YW50LlxuICAgICAgICBjb25zdCB2aXN1YWxab29tID0gcHJvcHMuem9vbSAtIHpvb21BZGp1c3QocHJvcHMubGF0aXR1ZGUpO1xuICAgICAgICBjb25zdCB6b29tID0gdmlzdWFsWm9vbSArIHpvb21BZGp1c3QobGF0aXR1ZGUpO1xuXG4gICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe2xvbmdpdHVkZSwgbGF0aXR1ZGUsIHpvb219KTtcbiAgICAgIH1cblxuICAgICAgcGFuRW5kKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtzdGFydFBhbkxuZ0xhdDogbnVsbH0pO1xuICAgICAgfVxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbi8qKlxuICogQ3VzdG9tIEdsb2JlVmlldyB0aGF0IHVzZXMgem9vbS10by1jdXJzb3IgY29udHJvbGxlciBiZWhhdmlvci5cbiAqL1xuZXhwb3J0IGNsYXNzIEtlcGxlckdsb2JlVmlldyBleHRlbmRzIERlY2tHbG9iZVZpZXcge1xuICAvLyBGb3J3YXJkIGNvbnN0cnVjdG9yIHByb3BzIHRvIGRlY2suZ2wncyBHbG9iZVZpZXcuIERlY2xhcmVkIGV4cGxpY2l0bHkgYmVjYXVzZVxuICAvLyB0aGUgYmFzZSBjbGFzcyBpcyBsb29zZWx5IHR5cGVkIChzZWUgRGVja0dsb2JlVmlldyBhYm92ZSksIHdoaWNoIHdvdWxkXG4gIC8vIG90aGVyd2lzZSBzdXJmYWNlIGEgcGFyYW1ldGVybGVzcyBjb25zdHJ1Y3RvciB0byBjYWxsZXJzLlxuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGFueSkge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIGdldCBDb250cm9sbGVyVHlwZSgpIHtcbiAgICByZXR1cm4gWm9vbVRvQ3Vyc29yR2xvYmVDb250cm9sbGVyO1xuICB9XG5cbiAgLy8gZGVjay5nbCA5J3MgR2xvYmVWaWV3LmdldFZpZXdwb3J0VHlwZSgpIHN3YXBzIHRoZSB2aWV3cG9ydCBjbGFzcyBiYXNlZCBvbiB6b29tOlxuICAvLyAgIGByZXR1cm4gdmlld1N0YXRlLnpvb20gPiAxMiA/IFdlYk1lcmNhdG9yVmlld3BvcnQgOiBHbG9iZVZpZXdwb3J0O2BcbiAgLy8gQ3Jvc3Npbmcgem9vbSAxMiB0aGVyZWZvcmUgcmVjb21wdXRlcyB0aWxlIGJvdW5kcyB3aXRoIGNvbXBsZXRlbHkgZGlmZmVyZW50XG4gIC8vIHByb2plY3Rpb24gbWF0aCAoZ2xvYmUgdnMgZmxhdCBtZXJjYXRvcikuIFRoYXQgbWFrZXMgZGVjaydzIFRpbGVMYXllci9NVlRMYXllclxuICAvLyByZXNlbGVjdCB0aWxlcyBpbmNvbnNpc3RlbnRseSBhY3Jvc3MgdGhlIGJvdW5kYXJ5IOKAlCBtaXhlZCBMT0RzIChlLmcuIGEgejQgdGlsZVxuICAvLyBuZXh0IHRvIHoxMSksIGEgdmlzaWJsZSBcImZsaWNrZXJcIiBhdCAxMiwgYW5kIHRpbGVzIHRoYXQgZ2V0IGRyb3BwZWQgYW5kIHN0aWNrXG4gIC8vIGFzIGJsYWNrL2VtcHR5IHF1YWRzIChtb3N0IG9mdGVuIGNyb3NzaW5nIDEyIG9uIHRoZSB3YXkgKm91dCopLlxuICAvL1xuICAvLyBGb3JjZSBHbG9iZVZpZXdwb3J0IGF0IGV2ZXJ5IHpvb20gdG8gZWxpbWluYXRlIHRoZSB6PTEyIHZpZXdwb3J0IHN3YXAgc28gdGlsZVxuICAvLyBzZWxlY3Rpb24gc3RheXMgY29uc2lzdGVudC4gVGhlIHRyYWRlLW9mZiBpcyB0aGF0IHpvb20gPiAxMiBub3cgdXNlcyBmbG9hdDMyXG4gIC8vIGdsb2JlIHByZWNpc2lvbiAoZGVjaydzIGRvY3VtZW50ZWQgXCJubyBoaWdoLXByZWNpc2lvbiByZW5kZXJpbmcgPiAxMlwiIGxpbWl0KVxuICAvLyBpbnN0ZWFkIG9mIHN3aXRjaGluZyB0byBtZXJjYXRvciDigJQgZmFyIHByZWZlcmFibGUgdG8gdGhlIGJsYWNrIHF1YWRzLlxuICBnZXRWaWV3cG9ydFR5cGUoKSB7XG4gICAgcmV0dXJuIERlY2tHbG9iZVZpZXdwb3J0O1xuICB9XG59XG5cbktlcGxlckdsb2JlVmlldy5kaXNwbGF5TmFtZSA9ICdLZXBsZXJHbG9iZVZpZXcnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPLEtBQUtBLFFBQVEsTUFBTSxlQUFlO0FBQ3pDLFNBQVFDLEtBQUssRUFBRUMsSUFBSSxRQUFPLGVBQWU7QUFDekMsU0FBUUMsa0JBQWtCLFFBQU8sc0JBQXNCO0FBQ3ZELFNBQVFDLG1CQUFtQixRQUFPLDBCQUEwQjs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxhQUFhLEdBQUlMLFFBQVEsQ0FBU00sVUFBaUI7QUFDekQsSUFBTUMsZUFBZSxHQUFJUCxRQUFRLENBQVNRLGdCQUF1QjtBQUNqRSxJQUFNQyxpQkFBaUIsR0FBSVQsUUFBUSxDQUFTVSxjQUFxQjs7QUFFakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLFVBQVVBLENBQUNDLFFBQWdCLEVBQVU7RUFDNUMsT0FBT0MsSUFBSSxDQUFDQyxJQUFJLENBQUNELElBQUksQ0FBQ0UsRUFBRSxHQUFHRixJQUFJLENBQUNHLEdBQUcsQ0FBRUosUUFBUSxHQUFHQyxJQUFJLENBQUNFLEVBQUUsR0FBSSxHQUFHLENBQUMsQ0FBQztBQUNsRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNFLGNBQWNBLENBQUNDLFFBQWEsRUFBRUMsR0FBcUIsRUFBVztFQUNyRSxJQUFNQyxDQUFXLEdBQUdGLFFBQVEsQ0FBQ0csdUJBQXVCO0VBQ3BELElBQUksQ0FBQ0QsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7O0VBRXJCO0VBQ0EsSUFBTUUsRUFBRSxHQUFHcEIsSUFBSSxDQUFDcUIsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDSixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUMsQ0FBQyxDQUFDO0VBQzdELElBQU1JLEVBQUUsR0FBR3RCLElBQUksQ0FBQ3FCLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQ0osR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUM7RUFDNUQsSUFBSUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDOztFQUU3QztFQUNBLElBQU1DLEVBQUUsR0FBR0gsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RCSSxFQUFFLEdBQUdKLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBR0EsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQkssRUFBRSxHQUFHTCxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUdBLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDcEIsSUFBTU0sRUFBRSxHQUFHSixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUdBLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEJLLEVBQUUsR0FBR0wsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xCTSxFQUFFLEdBQUdOLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBR0EsRUFBRSxDQUFDLENBQUMsQ0FBQzs7RUFFcEI7RUFDQSxJQUFNTyxFQUFFLEdBQUdILEVBQUUsR0FBR0gsRUFBRTtJQUNoQk8sRUFBRSxHQUFHSCxFQUFFLEdBQUdILEVBQUU7SUFDWk8sRUFBRSxHQUFHSCxFQUFFLEdBQUdILEVBQUU7O0VBRWQ7RUFDQTtFQUNBLElBQU1PLEVBQUUsR0FBR1IsRUFBRSxHQUFHTyxFQUFFLEdBQUdOLEVBQUUsR0FBR0ssRUFBRTtFQUM1QixJQUFNRyxFQUFFLEdBQUdSLEVBQUUsR0FBR0ksRUFBRSxHQUFHTixFQUFFLEdBQUdRLEVBQUU7RUFDNUIsSUFBTUcsRUFBRSxHQUFHWCxFQUFFLEdBQUdPLEVBQUUsR0FBR04sRUFBRSxHQUFHSyxFQUFFO0VBQzVCLElBQU1NLElBQUksR0FBRyxDQUFDSCxFQUFFLEdBQUdBLEVBQUUsR0FBR0MsRUFBRSxHQUFHQSxFQUFFLEdBQUdDLEVBQUUsR0FBR0EsRUFBRSxLQUFLTCxFQUFFLEdBQUdBLEVBQUUsR0FBR0MsRUFBRSxHQUFHQSxFQUFFLEdBQUdDLEVBQUUsR0FBR0EsRUFBRSxDQUFDO0VBRTFFLE9BQU9JLElBQUksSUFBSWpDLG1CQUFtQixHQUFHQSxtQkFBbUI7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkEsSUFTTWtDLDJCQUEyQiwwQkFBQTlCLGdCQUFBO0VBQy9CLFNBQUE4Qiw0QkFBQSxFQUE0QjtJQUFBLElBQUFDLEtBQUE7SUFBQUMsZUFBQSxPQUFBRiwyQkFBQTtJQUFBLFNBQUFHLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQWJDLElBQUksT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7TUFBSkYsSUFBSSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtJQUFBO0lBQ2pCUCxLQUFBLEdBQUFRLFVBQUEsT0FBQVQsMkJBQUEsS0FBQVUsTUFBQSxDQUFTSixJQUFJO0lBQ2IsSUFBTUssa0JBQWtCLEdBQUdWLEtBQUEsQ0FBS1csZUFBZTs7SUFFL0M7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUlDLGNBQTZCLEdBQUcsSUFBSTs7SUFFeEM7SUFDQVosS0FBQSxDQUFLVyxlQUFlLDBCQUFBRSxtQkFBQTtNQUFBLFNBQUFDLGtCQUFBO1FBQUFiLGVBQUEsT0FBQWEsaUJBQUE7UUFBQSxPQUFBTixVQUFBLE9BQUFNLGlCQUFBLEVBQUFYLFNBQUE7TUFBQTtNQUFBWSxTQUFBLENBQUFELGlCQUFBLEVBQUFELG1CQUFBO01BQUEsT0FBQUcsWUFBQSxDQUFBRixpQkFBQTtRQUFBRyxHQUFBO1FBQUFDLEtBQUE7UUFDbEI7UUFDQTtRQUNBO1FBQ0EsU0FBQUMsZ0JBQWdCQSxDQUFDQyxLQUFVLEVBQUU7VUFDM0IsSUFBTUMsTUFBTSxHQUFBQyxhQUFBLENBQUFSLGlCQUFBLGdDQUEwQk0sS0FBSyxFQUFDO1VBQzVDLElBQU1HLGVBQWUsR0FBRzdELEtBQUssQ0FBQzJELE1BQU0sQ0FBQ2hELFFBQVEsRUFBRSxDQUFDVCxrQkFBa0IsRUFBRUEsa0JBQWtCLENBQUM7VUFDdkYsSUFBSTJELGVBQWUsS0FBS0YsTUFBTSxDQUFDaEQsUUFBUSxFQUFFO1lBQ3ZDO1lBQ0E7WUFDQWdELE1BQU0sQ0FBQ0csSUFBSSxJQUFJcEQsVUFBVSxDQUFDbUQsZUFBZSxDQUFDLEdBQUduRCxVQUFVLENBQUNpRCxNQUFNLENBQUNoRCxRQUFRLENBQUM7WUFDeEVnRCxNQUFNLENBQUNoRCxRQUFRLEdBQUdrRCxlQUFlO1VBQ25DO1VBQ0EsT0FBT0YsTUFBTTtRQUNmOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUFBO1FBQUFKLEdBQUE7UUFBQUMsS0FBQSxFQUNBLFNBQUFPLGNBQWNBLENBQUNELElBQVksRUFBRUosS0FBVyxFQUFFO1VBQ3hDQSxLQUFLLEdBQUdBLEtBQUssSUFBSyxJQUFJLENBQVNNLGdCQUFnQixDQUFDLENBQUM7VUFDakQsSUFBQUMsTUFBQSxHQUE0QlAsS0FBSztZQUExQi9DLFFBQVEsR0FBQXNELE1BQUEsQ0FBUnRELFFBQVE7WUFBRXVELE9BQU8sR0FBQUQsTUFBQSxDQUFQQyxPQUFPO1VBQ3hCLElBQUFDLE9BQUEsR0FBZ0JULEtBQUs7WUFBaEJVLE9BQU8sR0FBQUQsT0FBQSxDQUFQQyxPQUFPO1VBQ1osSUFBSUEsT0FBTyxLQUFLQyxTQUFTLElBQUlELE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDN0NBLE9BQU8sR0FBRyxDQUFDO1VBQ2I7VUFDQSxJQUFNRSxLQUFLLEdBQUc1RCxVQUFVLENBQUMsQ0FBQyxDQUFDO1VBQzNCLElBQU02RCxjQUFjLEdBQUc3RCxVQUFVLENBQUNDLFFBQVEsQ0FBQyxHQUFHMkQsS0FBSztVQUNuRCxPQUFPdEUsS0FBSyxDQUFDOEQsSUFBSSxFQUFFTSxPQUFPLEdBQUdHLGNBQWMsRUFBRUwsT0FBTyxHQUFHSyxjQUFjLENBQUM7UUFDeEU7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFBQTtRQUFBaEIsR0FBQTtRQUFBQyxLQUFBLEVBQ0EsU0FBQU0sSUFBSUEsQ0FBQVUsSUFBQSxFQVFEO1VBQUEsSUFQRHRELEdBQUcsR0FBQXNELElBQUEsQ0FBSHRELEdBQUc7WUFDSHVELFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO1lBQ1JDLEtBQUssR0FBQUYsSUFBQSxDQUFMRSxLQUFLO1VBTUwsSUFBQUMsU0FBQSxHQUFvQyxJQUFJLENBQVNDLFFBQVEsQ0FBQyxDQUFDO1lBQXREQyxTQUFTLEdBQUFGLFNBQUEsQ0FBVEUsU0FBUztZQUFFQyxlQUFlLEdBQUFILFNBQUEsQ0FBZkcsZUFBZTtVQUMvQixJQUFNQyxZQUFZLEdBQUksSUFBSSxDQUFTZixnQkFBZ0IsQ0FBQyxDQUFDO1VBRXJELElBQUksQ0FBQ2MsZUFBZSxFQUFFO1lBQ3BCO1lBQ0FELFNBQVMsR0FBR0UsWUFBWSxDQUFDakIsSUFBSTs7WUFFN0I7WUFDQTtZQUNBO1lBQ0E7WUFDQSxJQUFNa0IsZ0JBQWdCLEdBQUcsR0FBRztZQUM1QixJQUFNQyxHQUFHLEdBQUdDLElBQUksQ0FBQ0QsR0FBRyxDQUFDLENBQUM7WUFDdEIsSUFBTUUsY0FBYyxHQUFJLElBQUksQ0FBU0MsWUFBWSxDQUFDTCxZQUFZLENBQUM7WUFDL0QsSUFBTU0sT0FBTyxHQUFHckUsY0FBYyxDQUFDbUUsY0FBYyxFQUFFVixRQUFRLElBQUl2RCxHQUFHLENBQUM7WUFFL0QsSUFBSSxDQUFDbUUsT0FBTyxFQUFFbkMsY0FBYyxHQUFHK0IsR0FBRztZQUVsQyxJQUFJLENBQUNJLE9BQU8sSUFBS25DLGNBQWMsS0FBSyxJQUFJLElBQUkrQixHQUFHLEdBQUcvQixjQUFjLEdBQUc4QixnQkFBaUIsRUFBRTtjQUNwRixJQUFNbEIsS0FBSSxHQUFJLElBQUksQ0FBU0MsY0FBYyxDQUFDYyxTQUFTLEdBQUdqRSxJQUFJLENBQUNDLElBQUksQ0FBQzZELEtBQUssQ0FBQyxDQUFDO2NBQ3ZFLE9BQVEsSUFBSSxDQUFTWSxnQkFBZ0IsQ0FBQztnQkFBQ3hCLElBQUksRUFBSkE7Y0FBSSxDQUFDLENBQUM7WUFDL0M7WUFFQVosY0FBYyxHQUFHLElBQUk7WUFDckI0QixlQUFlLEdBQUksSUFBSSxDQUFTUyxVQUFVLENBQUNkLFFBQVEsQ0FBQyxJQUFLLElBQUksQ0FBU2MsVUFBVSxDQUFDckUsR0FBRyxDQUFDO1VBQ3ZGO1VBRUEsSUFBTTRDLElBQUksR0FBSSxJQUFJLENBQVNDLGNBQWMsQ0FBQ2MsU0FBUyxHQUFHakUsSUFBSSxDQUFDQyxJQUFJLENBQUM2RCxLQUFLLENBQUMsQ0FBQztVQUV2RSxJQUFJLENBQUNJLGVBQWUsRUFBRTtZQUNwQixPQUFRLElBQUksQ0FBU1EsZ0JBQWdCLENBQUM7Y0FBQ3hCLElBQUksRUFBSkE7WUFBSSxDQUFDLENBQUM7VUFDL0M7O1VBRUE7VUFDQTtVQUNBO1VBQ0EsSUFBSVksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNiLElBQ0UsQ0FBQzlCLEtBQUssQ0FBQzRDLE9BQU8sQ0FBQ1YsZUFBZSxDQUFDLElBQy9CLENBQUNXLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDWixlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFDcEMsQ0FBQ1csTUFBTSxDQUFDQyxRQUFRLENBQUNaLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNwQztjQUNBLE9BQVEsSUFBSSxDQUFTUSxnQkFBZ0IsQ0FBQztnQkFBQ3hCLElBQUksRUFBSkE7Y0FBSSxDQUFDLENBQUM7WUFDL0M7O1lBRUE7WUFDQSxJQUFNNkIsQ0FBQyxHQUFHL0UsSUFBSSxDQUFDZ0YsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBR2xCLEtBQUssSUFBSSxJQUFJLENBQUM7O1lBRXpDO1lBQ0EsSUFBSW1CLElBQUksR0FBR2YsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHQyxZQUFZLENBQUNlLFNBQVM7WUFDdEQsSUFBSUQsSUFBSSxHQUFHLEdBQUcsRUFBRUEsSUFBSSxJQUFJLEdBQUc7WUFDM0IsSUFBSUEsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFQSxJQUFJLElBQUksR0FBRztZQUU1QixPQUFRLElBQUksQ0FBU1AsZ0JBQWdCLENBQUM7Y0FDcEN4QixJQUFJLEVBQUpBLElBQUk7Y0FDSmdDLFNBQVMsRUFBRWYsWUFBWSxDQUFDZSxTQUFTLEdBQUdELElBQUksR0FBR0YsQ0FBQztjQUM1Q2hGLFFBQVEsRUFBRW9FLFlBQVksQ0FBQ3BFLFFBQVEsR0FBRyxDQUFDbUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHQyxZQUFZLENBQUNwRSxRQUFRLElBQUlnRjtZQUNuRixDQUFDLENBQUM7VUFDSjtVQUVBLElBQU1JLGNBQWMsR0FBSSxJQUFJLENBQVNYLFlBQVksQ0FBQVksYUFBQSxDQUFBQSxhQUFBLEtBQzVDakIsWUFBWTtZQUNmakIsSUFBSSxFQUFKQTtVQUFJLEVBQ0wsQ0FBQzs7VUFFRjtVQUNBO1VBQ0E7VUFDQTtVQUNBLElBQUksQ0FBQzlDLGNBQWMsQ0FBQytFLGNBQWMsRUFBRTdFLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE9BQVEsSUFBSSxDQUFTb0UsZ0JBQWdCLENBQUM7Y0FBQ3hCLElBQUksRUFBSkE7WUFBSSxDQUFDLENBQUM7VUFDL0M7VUFFQSxJQUFNbUMsWUFBWSxHQUFHRixjQUFjLENBQUNHLFNBQVMsQ0FBQ2hGLEdBQUcsQ0FBQztVQUVsRCxPQUFRLElBQUksQ0FBU29FLGdCQUFnQixDQUFDO1lBQ3BDeEIsSUFBSSxFQUFKQSxJQUFJO1lBQ0pnQyxTQUFTLEVBQUVoQixlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUdtQixZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUdGLGNBQWMsQ0FBQ0QsU0FBUztZQUMxRW5GLFFBQVEsRUFBRW1FLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBR21CLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBR0YsY0FBYyxDQUFDcEY7VUFDbEUsQ0FBQyxDQUFDO1FBQ0o7O1FBRUE7TUFBQTtRQUFBNEMsR0FBQTtRQUFBQyxLQUFBLEVBQ0EsU0FBQTJDLE9BQU9BLENBQUEsRUFBRztVQUNSLE9BQVEsSUFBSSxDQUFTYixnQkFBZ0IsQ0FBQztZQUNwQ1QsU0FBUyxFQUFFLElBQUk7WUFDZkMsZUFBZSxFQUFFO1VBQ25CLENBQUMsQ0FBQztRQUNKOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFBQTtRQUFBdkIsR0FBQTtRQUFBQyxLQUFBLEVBQ0EsU0FBQTRDLFFBQVFBLENBQUFDLEtBQUEsRUFBaUM7VUFBQSxJQUEvQm5GLEdBQUcsR0FBQW1GLEtBQUEsQ0FBSG5GLEdBQUc7VUFDWCxJQUFNRCxRQUFRLEdBQUksSUFBSSxDQUFTbUUsWUFBWSxDQUFFLElBQUksQ0FBU3BCLGdCQUFnQixDQUFDLENBQUMsQ0FBQztVQUM3RTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQSxJQUFJLENBQUNoRCxjQUFjLENBQUNDLFFBQVEsRUFBRUMsR0FBRyxDQUFDLEVBQUU7WUFDbEMsT0FBUSxJQUFJLENBQVNvRSxnQkFBZ0IsQ0FBQztjQUFDZ0IsY0FBYyxFQUFFO1lBQUssQ0FBQyxDQUFDO1VBQ2hFO1VBQ0EsT0FBUSxJQUFJLENBQVNoQixnQkFBZ0IsQ0FBQztZQUNwQ2dCLGNBQWMsRUFBRyxJQUFJLENBQVNmLFVBQVUsQ0FBQ3JFLEdBQUc7VUFDOUMsQ0FBQyxDQUFDO1FBQ0o7TUFBQztRQUFBcUMsR0FBQTtRQUFBQyxLQUFBLEVBRUQsU0FBQStDLEdBQUdBLENBQUFDLEtBQUEsRUFBd0U7VUFBQSxJQUF0RXRGLEdBQUcsR0FBQXNGLEtBQUEsQ0FBSHRGLEdBQUc7WUFBRXVELFFBQVEsR0FBQStCLEtBQUEsQ0FBUi9CLFFBQVE7VUFDaEIsSUFBTWdDLFdBQVcsR0FBSSxJQUFJLENBQVM3QixRQUFRLENBQUMsQ0FBQyxDQUFDMEIsY0FBYztVQUUzRCxJQUFNNUMsS0FBSyxHQUFJLElBQUksQ0FBU00sZ0JBQWdCLENBQUMsQ0FBQztVQUM5QyxJQUFNL0MsUUFBUSxHQUFJLElBQUksQ0FBU21FLFlBQVksQ0FBQzFCLEtBQUssQ0FBQzs7VUFFbEQ7VUFDQTtVQUNBO1VBQ0EsSUFBSStDLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFDekIsSUFBSSxDQUFDekYsY0FBYyxDQUFDQyxRQUFRLEVBQUVDLEdBQUcsQ0FBQyxFQUFFO2NBQ2xDLE9BQU8sSUFBSTtZQUNiO1lBQ0E7WUFDQTtZQUNBLE9BQVEsSUFBSSxDQUFTb0UsZ0JBQWdCLENBQUM7Y0FDcENnQixjQUFjLEVBQUcsSUFBSSxDQUFTZixVQUFVLENBQUNyRSxHQUFHO1lBQzlDLENBQUMsQ0FBQztVQUNKO1VBRUEsSUFBTW9GLGNBQWMsR0FBR0csV0FBVyxJQUFLLElBQUksQ0FBU2xCLFVBQVUsQ0FBQ2QsUUFBUSxDQUFDO1VBQ3hFLElBQUksQ0FBQzZCLGNBQWMsRUFBRTtZQUNuQixPQUFPLElBQUk7VUFDYjs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0EsSUFBSSxDQUFDdEYsY0FBYyxDQUFDQyxRQUFRLEVBQUVDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sSUFBSTtVQUNiO1VBRUEsSUFBTStFLFlBQVksR0FBR2hGLFFBQVEsQ0FBQ2lGLFNBQVMsQ0FBQ2hGLEdBQUcsQ0FBQztVQUU1QyxJQUFNNEUsU0FBUyxHQUFHUSxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUdMLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBR3ZDLEtBQUssQ0FBQ29DLFNBQVM7VUFDdkUsSUFBSW5GLFFBQVEsR0FBRzJGLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBR0wsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDL0MsUUFBUTtVQUNuRUEsUUFBUSxHQUFHWCxLQUFLLENBQUNXLFFBQVEsRUFBRSxDQUFDVCxrQkFBa0IsRUFBRUEsa0JBQWtCLENBQUM7O1VBRW5FO1VBQ0E7VUFDQTtVQUNBO1VBQ0EsSUFBTXdHLFVBQVUsR0FBR2hELEtBQUssQ0FBQ0ksSUFBSSxHQUFHcEQsVUFBVSxDQUFDZ0QsS0FBSyxDQUFDL0MsUUFBUSxDQUFDO1VBQzFELElBQU1tRCxJQUFJLEdBQUc0QyxVQUFVLEdBQUdoRyxVQUFVLENBQUNDLFFBQVEsQ0FBQztVQUU5QyxPQUFRLElBQUksQ0FBUzJFLGdCQUFnQixDQUFDO1lBQUNRLFNBQVMsRUFBVEEsU0FBUztZQUFFbkYsUUFBUSxFQUFSQSxRQUFRO1lBQUVtRCxJQUFJLEVBQUpBO1VBQUksQ0FBQyxDQUFDO1FBQ3BFO01BQUM7UUFBQVAsR0FBQTtRQUFBQyxLQUFBLEVBRUQsU0FBQW1ELE1BQU1BLENBQUEsRUFBRztVQUNQLE9BQVEsSUFBSSxDQUFTckIsZ0JBQWdCLENBQUM7WUFBQ2dCLGNBQWMsRUFBRTtVQUFJLENBQUMsQ0FBQztRQUMvRDtNQUFDO0lBQUEsRUFqT29EdEQsa0JBQWtCLENBa09qRTtJQUFDLE9BQUFWLEtBQUE7RUFDWDtFQUFDZSxTQUFBLENBQUFoQiwyQkFBQSxFQUFBOUIsZ0JBQUE7RUFBQSxPQUFBK0MsWUFBQSxDQUFBakIsMkJBQUE7QUFBQSxFQW5QdUMvQixlQUFlO0FBc1B6RDtBQUNBO0FBQ0E7QUFDQSxXQUFhc0csZUFBZSwwQkFBQUMsY0FBQTtFQUMxQjtFQUNBO0VBQ0E7RUFDQSxTQUFBRCxnQkFBWWxELEtBQVcsRUFBRTtJQUFBbkIsZUFBQSxPQUFBcUUsZUFBQTtJQUFBLE9BQUE5RCxVQUFBLE9BQUE4RCxlQUFBLEdBQ2pCbEQsS0FBSztFQUNiO0VBQUNMLFNBQUEsQ0FBQXVELGVBQUEsRUFBQUMsY0FBQTtFQUFBLE9BQUF2RCxZQUFBLENBQUFzRCxlQUFBO0lBQUFyRCxHQUFBO0lBQUF1RCxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFxQjtNQUNuQixPQUFPekUsMkJBQTJCO0lBQ3BDOztJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUFBO0lBQUFrQixHQUFBO0lBQUFDLEtBQUEsRUFDQSxTQUFBdUQsZUFBZUEsQ0FBQSxFQUFHO01BQ2hCLE9BQU92RyxpQkFBaUI7SUFDMUI7RUFBQztBQUFBLEVBMUJrQ0osYUFBYTtBQTZCbER3RyxlQUFlLENBQUNJLFdBQVcsR0FBRyxpQkFBaUIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -109,4 +109,4 @@ _defineProperty(ScaleEnhancedGridLayer, "defaultProps", _objectSpread(_objectSpr
109
109
  }));
110
110
  export { ScaleEnhancedGridLayer as default };
111
111
  ScaleEnhancedGridLayer.layerName = 'ScaleEnhancedGridLayer';
112
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHcmlkTGF5ZXIiLCJlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlIiwiZW5yaWNoZWRSZW5kZXJMYXllcnMiLCJtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyIsInJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydCIsIlNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIiLCJfR3JpZExheWVyIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NhbGxTdXBlciIsImFyZ3VtZW50cyIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiX29uQWdncmVnYXRpb25VcGRhdGUiLCJfcmVmIiwiY2hhbm5lbCIsInJlbmRlckxheWVycyIsIl91cGRhdGVCaW5PcHRpb25zIiwiX3RoaXMiLCJwcm90b3R5cGUiLCJjYWxsIiwiZ2V0U3ViTGF5ZXJDbGFzcyIsInN1YkxheWVySWQiLCJEZWZhdWx0TGF5ZXJDbGFzcyIsInJlc29sdmVkIiwiX3N1cGVyUHJvcEdldCIsImdldFBpY2tpbmdJbmZvIiwicGFyYW1zIiwiaW5mbyIsIm9iamVjdCIsIl90aGlzJHByb3BzJGNvdmVyYWdlIiwiX3JlZjIiLCJzdGF0ZSIsImNlbGxPcmlnaW5Db21tb24iLCJjZWxsU2l6ZUNvbW1vbiIsImFnZ3JlZ2F0b3JWaWV3cG9ydCIsImNvdmVyYWdlIiwicHJvcHMiLCJjb25zb2xlIiwiZXJyb3IiLCJfcmVmMyIsImNvbCIsInJvdyIsImN4IiwiY3kiLCJodyIsImhoIiwiY2VsbE91dGxpbmUiLCJ1bnByb2plY3RGbGF0IiwiX2RlZmluZVByb3BlcnR5IiwiX29iamVjdFNwcmVhZCIsImRlZmF1bHRQcm9wcyIsImdwdUFnZ3JlZ2F0aW9uIiwiZGVmYXVsdCIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmlkLWxheWVyL2VuaGFuY2VkLWNwdS1ncmlkLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R3JpZExheWVyLCBHcmlkTGF5ZXJQaWNraW5nSW5mb30gZnJvbSAnQGRlY2suZ2wvYWdncmVnYXRpb24tbGF5ZXJzJztcbmltcG9ydCB7R2V0UGlja2luZ0luZm9QYXJhbXMsIExheWVyLCBQaWNraW5nSW5mbywgVmlld3BvcnR9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlLCBlbnJpY2hlZFJlbmRlckxheWVyc30gZnJvbSAnLi4vbGF5ZXItdXRpbHMvYWdncmVnYXRpb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgbWFrZUdsb2JlQ2VsbExheWVyQ2xhc3MsXG4gIHJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydFxufSBmcm9tICcuLi9sYXllci11dGlscy9nbG9iZS1jZWxsLXV0aWxzJztcblxuaW50ZXJmYWNlIEdyaWRJbnRlcm5hbFN0YXRlIHtcbiAgY2VsbE9yaWdpbkNvbW1vbj86IFtudW1iZXIsIG51bWJlcl07XG4gIGNlbGxTaXplQ29tbW9uPzogW251bWJlciwgbnVtYmVyXTtcbiAgYWdncmVnYXRvclZpZXdwb3J0PzogVmlld3BvcnQgJiB7dW5wcm9qZWN0RmxhdCh4eTogbnVtYmVyW10pOiBudW1iZXJbXX07XG59XG5cbmludGVyZmFjZSBHcmlkUGlja2luZ09iamVjdCB7XG4gIGNvbDogbnVtYmVyO1xuICByb3c6IG51bWJlcjtcbiAgY2VsbE91dGxpbmU/OiBudW1iZXJbXVtdO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEluIGRlY2suZ2wgOSwgR3JpZExheWVyIG5hdGl2ZWx5IHN1cHBvcnRzIENQVSBhZ2dyZWdhdGlvbiB2aWEgZ3B1QWdncmVnYXRpb246IGZhbHNlLFxuICogY3VzdG9tIGdldENvbG9yVmFsdWUvZ2V0RWxldmF0aW9uVmFsdWUgYWNjZXNzb3JzLCBwZXJjZW50aWxlIGZpbHRlcmluZywgYW5kIHNjYWxlIHR5cGVzLlxuICogVGhlIGN1c3RvbSBDUFVBZ2dyZWdhdG9yIG92ZXJyaWRlIGZyb20gZGVjay5nbCA4IGlzIG5vIGxvbmdlciBuZWVkZWQuXG4gKlxuICogV2Ugb3ZlcnJpZGUgZ2V0UGlja2luZ0luZm8gdG8gYWRkIGBjZWxsT3V0bGluZWAg4oCUIGFuIGFycmF5IG9mIFtsbmcsIGxhdF0gY29vcmRpbmF0ZXNcbiAqIGNvbXB1dGVkIGluIGNvbW1vbiBzcGFjZSBzbyB0aGUgb3V0bGluZSBhbGlnbnMgd2l0aCByZW5kZXJlZCBjZWxscyBhdCBhbGwgbGF0aXR1ZGVzLlxuICpcbiAqIFdlIGFsc28gb3ZlcnJpZGUgX29uQWdncmVnYXRpb25VcGRhdGUgdG8gc2VuZCBwZXItYmluIGFnZ3JlZ2F0ZWQgdmFsdWVzIHRocm91Z2hcbiAqIG9uU2V0Q29sb3JEb21haW4gc28gdGhlIGxlZ2VuZCBjYW4gY29tcHV0ZSBwcm9wZXIgcXVhbnRpbGUvY3VzdG9tIGJyZWFrcy5cbiAqL1xuLy8gQHRzLWV4cGVjdC1lcnJvciAtLSBvdmVycmlkaW5nIHByaXZhdGUgX29uQWdncmVnYXRpb25VcGRhdGUgdG8gZW5yaWNoIHRoZSBvblNldENvbG9yRG9tYWluIGNhbGxiYWNrXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FsZUVuaGFuY2VkR3JpZExheWVyIGV4dGVuZHMgR3JpZExheWVyPGFueT4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIC4uLkdyaWRMYXllci5kZWZhdWx0UHJvcHMsXG4gICAgZ3B1QWdncmVnYXRpb246IGZhbHNlXG4gIH07XG5cbiAgLy8gSEFDSzogZGVjay5nbCA5J3MgX29uQWdncmVnYXRpb25VcGRhdGUgaXMgcHJpdmF0ZSBhbmQgaXRzIG9uU2V0Q29sb3JEb21haW5cbiAgLy8gY2FsbGJhY2sgb25seSBwcm92aWRlcyBbbWluLCBtYXhdLiAgVGhhdCBpcyBzdWZmaWNpZW50IGZvciBxdWFudGl6ZS9saW5lYXJcbiAgLy8gc2NhbGVzIGJ1dCBkMy5zY2FsZVF1YW50aWxlIG5lZWRzIHRoZSAqZnVsbCBzb3J0ZWQgYXJyYXkqIG9mIGJpbiB2YWx1ZXMgdG9cbiAgLy8gY29tcHV0ZSBjb3JyZWN0IGJyZWFrIHBvaW50cyDigJQgd2l0aG91dCBpdCB0aGUgbGVnZW5kIGxhYmVscyBhcmUgd3JvbmdcbiAgX29uQWdncmVnYXRpb25VcGRhdGUoe2NoYW5uZWx9OiB7Y2hhbm5lbDogbnVtYmVyfSkge1xuICAgIGVucmljaGVkQWdncmVnYXRpb25VcGRhdGUodGhpcywgR3JpZExheWVyLCBjaGFubmVsKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICByZXR1cm4gZW5yaWNoZWRSZW5kZXJMYXllcnModGhpcywgR3JpZExheWVyKTtcbiAgfVxuXG4gIC8vIEluIGdsb2JlIG1vZGUsIHJ1biBkZWNrLmdsJ3MgYmluL2NvbW1vbi1zcGFjZSBzZXR1cCB1bmRlciBhIFdlYk1lcmNhdG9yVmlld3BvcnRcbiAgLy8gc28gYmlubmluZyBhbmQgdGhlIGNlbGwgc2hhZGVyJ3MgZmxhdCBjb21tb24gc3BhY2UgYXJlIGdlbnVpbmUgV2ViIE1lcmNhdG9yLCB3aGljaFxuICAvLyB0aGUgZ2xvYmUgY2VsbCBzdWJjbGFzcyB0aGVuIHJlbWFwcyBvbnRvIHRoZSBzcGhlcmUgc3VyZmFjZS4gTm8tb3AgaW4gMkQvM0QgbW9kZS5cbiAgX3VwZGF0ZUJpbk9wdGlvbnMoKSB7XG4gICAgcnVuQmluT3B0aW9uc1dpdGhNZXJjYXRvclZpZXdwb3J0KHRoaXMsICgpID0+XG4gICAgICAoR3JpZExheWVyLnByb3RvdHlwZSBhcyBhbnkpLl91cGRhdGVCaW5PcHRpb25zLmNhbGwodGhpcylcbiAgICApO1xuICB9XG5cbiAgLy8gZGVjay5nbCdzIEdyaWRDZWxsTGF5ZXIgcG9zaXRpb25zIGNlbGxzIGluIGZsYXQgY29tbW9uIHNwYWNlLCB3aGljaCBsYW5kcyB0aGVtXG4gIC8vIG9uIHRoZSBYWSBwbGFuZSB0aHJvdWdoIHRoZSBnbG9iZSBjZW50ZXIuIFN3YXAgaW4gYSBnbG9iZS1hd2FyZSBzdWJjbGFzcyB0aGF0XG4gIC8vIGN1cnZlcyBjZWxscyBvbnRvIHRoZSBzcGhlcmUgc3VyZmFjZSAobm8tb3AgaW4gMkQvM0QgbW9kZSkuXG4gIGdldFN1YkxheWVyQ2xhc3M8VCBleHRlbmRzIExheWVyPihzdWJMYXllcklkOiBzdHJpbmcsIERlZmF1bHRMYXllckNsYXNzOiB7bmV3ICguLi5hcmdzOiBhbnlbXSk6IFR9KSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci5nZXRTdWJMYXllckNsYXNzKHN1YkxheWVySWQsIERlZmF1bHRMYXllckNsYXNzKTtcbiAgICBpZiAoc3ViTGF5ZXJJZCA9PT0gJ2NlbGxzJykge1xuICAgICAgcmV0dXJuIG1ha2VHbG9iZUNlbGxMYXllckNsYXNzKFxuICAgICAgICByZXNvbHZlZCBhcyB1bmtub3duIGFzIHtuZXcgKC4uLmFyZ3M6IGFueVtdKTogVH0sXG4gICAgICAgICdncmlkJ1xuICAgICAgKSBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyhwYXJhbXM6IEdldFBpY2tpbmdJbmZvUGFyYW1zKTogUGlja2luZ0luZm8ge1xuICAgIGNvbnN0IGluZm8gPSBzdXBlci5nZXRQaWNraW5nSW5mbyhwYXJhbXMpIGFzIEdyaWRMYXllclBpY2tpbmdJbmZvPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICBpZiAoaW5mby5vYmplY3QpIHtcbiAgICAgIGNvbnN0IHtjZWxsT3JpZ2luQ29tbW9uLCBjZWxsU2l6ZUNvbW1vbiwgYWdncmVnYXRvclZpZXdwb3J0fSA9IHRoaXNcbiAgICAgICAgLnN0YXRlIGFzIHVua25vd24gYXMgR3JpZEludGVybmFsU3RhdGU7XG4gICAgICBjb25zdCBjb3ZlcmFnZSA9IHRoaXMucHJvcHMuY292ZXJhZ2UgPz8gMTtcbiAgICAgIGlmICghY2VsbE9yaWdpbkNvbW1vbiB8fCAhY2VsbFNpemVDb21tb24gfHwgIWFnZ3JlZ2F0b3JWaWV3cG9ydCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdTY2FsZUVuaGFuY2VkR3JpZExheWVyOiBleHBlY3RlZCBpbnRlcm5hbCBzdGF0ZSBwcm9wZXJ0aWVzICcgK1xuICAgICAgICAgICAgJyhjZWxsT3JpZ2luQ29tbW9uLCBjZWxsU2l6ZUNvbW1vbiwgYWdncmVnYXRvclZpZXdwb3J0KSBhcmUgbWlzc2luZy4gJyArXG4gICAgICAgICAgICAnSG92ZXIgb3V0bGluZSB3aWxsIG5vdCBiZSBzaG93bi4gVGhpcyBtYXkgaW5kaWNhdGUgYSBkZWNrLmdsIHZlcnNpb24gY2hhbmdlLidcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGluZm87XG4gICAgICB9XG4gICAgICBjb25zdCB7Y29sLCByb3d9ID0gaW5mby5vYmplY3QgYXMgR3JpZFBpY2tpbmdPYmplY3Q7XG4gICAgICBpZiAodHlwZW9mIGNvbCAhPT0gJ251bWJlcicgfHwgdHlwZW9mIHJvdyAhPT0gJ251bWJlcicpIHJldHVybiBpbmZvO1xuICAgICAgY29uc3QgY3ggPSAoY29sICsgMC41KSAqIGNlbGxTaXplQ29tbW9uWzBdICsgY2VsbE9yaWdpbkNvbW1vblswXTtcbiAgICAgIGNvbnN0IGN5ID0gKHJvdyArIDAuNSkgKiBjZWxsU2l6ZUNvbW1vblsxXSArIGNlbGxPcmlnaW5Db21tb25bMV07XG4gICAgICBjb25zdCBodyA9IDAuNSAqIGNvdmVyYWdlICogY2VsbFNpemVDb21tb25bMF07XG4gICAgICBjb25zdCBoaCA9IDAuNSAqIGNvdmVyYWdlICogY2VsbFNpemVDb21tb25bMV07XG5cbiAgICAgIChpbmZvLm9iamVjdCBhcyBHcmlkUGlja2luZ09iamVjdCkuY2VsbE91dGxpbmUgPSBbXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCAtIGh3LCBjeSAtIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCArIGh3LCBjeSAtIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCArIGh3LCBjeSArIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCAtIGh3LCBjeSArIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCAtIGh3LCBjeSAtIGhoXSlcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xuICB9XG59XG5cblNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIubGF5ZXJOYW1lID0gJ1NjYWxlRW5oYW5jZWRHcmlkTGF5ZXInO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLFNBQVMsUUFBNkIsNkJBQTZCO0FBRTNFLFNBQVFDLHlCQUF5QixFQUFFQyxvQkFBb0IsUUFBTyxrQ0FBa0M7QUFDaEcsU0FDRUMsdUJBQXVCLEVBQ3ZCQyxpQ0FBaUMsUUFDNUIsaUNBQWlDO0FBZXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLElBQ3FCQyxzQkFBc0IsMEJBQUFDLFVBQUE7RUFBQSxTQUFBRCx1QkFBQTtJQUFBRSxlQUFBLE9BQUFGLHNCQUFBO0lBQUEsT0FBQUcsVUFBQSxPQUFBSCxzQkFBQSxFQUFBSSxTQUFBO0VBQUE7RUFBQUMsU0FBQSxDQUFBTCxzQkFBQSxFQUFBQyxVQUFBO0VBQUEsT0FBQUssWUFBQSxDQUFBTixzQkFBQTtJQUFBTyxHQUFBO0lBQUFDLEtBQUE7SUFNekM7SUFDQTtJQUNBO0lBQ0E7SUFDQSxTQUFBQyxvQkFBb0JBLENBQUFDLElBQUEsRUFBK0I7TUFBQSxJQUE3QkMsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87TUFDM0JmLHlCQUF5QixDQUFDLElB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
112
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHcmlkTGF5ZXIiLCJlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlIiwiZW5yaWNoZWRSZW5kZXJMYXllcnMiLCJtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyIsInJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydCIsIlNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIiLCJfR3JpZExheWVyIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NhbGxTdXBlciIsImFyZ3VtZW50cyIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiX29uQWdncmVnYXRpb25VcGRhdGUiLCJfcmVmIiwiY2hhbm5lbCIsInJlbmRlckxheWVycyIsIl91cGRhdGVCaW5PcHRpb25zIiwiX3RoaXMiLCJwcm90b3R5cGUiLCJjYWxsIiwiZ2V0U3ViTGF5ZXJDbGFzcyIsInN1YkxheWVySWQiLCJEZWZhdWx0TGF5ZXJDbGFzcyIsInJlc29sdmVkIiwiX3N1cGVyUHJvcEdldCIsImdldFBpY2tpbmdJbmZvIiwicGFyYW1zIiwiaW5mbyIsIm9iamVjdCIsIl90aGlzJHByb3BzJGNvdmVyYWdlIiwiX3JlZjIiLCJzdGF0ZSIsImNlbGxPcmlnaW5Db21tb24iLCJjZWxsU2l6ZUNvbW1vbiIsImFnZ3JlZ2F0b3JWaWV3cG9ydCIsImNvdmVyYWdlIiwicHJvcHMiLCJjb25zb2xlIiwiZXJyb3IiLCJfcmVmMyIsImNvbCIsInJvdyIsImN4IiwiY3kiLCJodyIsImhoIiwiY2VsbE91dGxpbmUiLCJ1bnByb2plY3RGbGF0IiwiX2RlZmluZVByb3BlcnR5IiwiX29iamVjdFNwcmVhZCIsImRlZmF1bHRQcm9wcyIsImdwdUFnZ3JlZ2F0aW9uIiwiZGVmYXVsdCIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmlkLWxheWVyL2VuaGFuY2VkLWNwdS1ncmlkLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R3JpZExheWVyLCBHcmlkTGF5ZXJQaWNraW5nSW5mb30gZnJvbSAnQGRlY2suZ2wvYWdncmVnYXRpb24tbGF5ZXJzJztcbmltcG9ydCB7R2V0UGlja2luZ0luZm9QYXJhbXMsIExheWVyLCBQaWNraW5nSW5mbywgVmlld3BvcnR9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtlbnJpY2hlZEFnZ3JlZ2F0aW9uVXBkYXRlLCBlbnJpY2hlZFJlbmRlckxheWVyc30gZnJvbSAnLi4vbGF5ZXItdXRpbHMvYWdncmVnYXRpb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgbWFrZUdsb2JlQ2VsbExheWVyQ2xhc3MsXG4gIHJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydFxufSBmcm9tICcuLi9sYXllci11dGlscy9nbG9iZS1jZWxsLXV0aWxzJztcblxuaW50ZXJmYWNlIEdyaWRJbnRlcm5hbFN0YXRlIHtcbiAgY2VsbE9yaWdpbkNvbW1vbj86IFtudW1iZXIsIG51bWJlcl07XG4gIGNlbGxTaXplQ29tbW9uPzogW251bWJlciwgbnVtYmVyXTtcbiAgYWdncmVnYXRvclZpZXdwb3J0PzogVmlld3BvcnQgJiB7dW5wcm9qZWN0RmxhdCh4eTogbnVtYmVyW10pOiBudW1iZXJbXX07XG59XG5cbmludGVyZmFjZSBHcmlkUGlja2luZ09iamVjdCB7XG4gIGNvbDogbnVtYmVyO1xuICByb3c6IG51bWJlcjtcbiAgY2VsbE91dGxpbmU/OiBudW1iZXJbXVtdO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEluIGRlY2suZ2wgOSwgR3JpZExheWVyIG5hdGl2ZWx5IHN1cHBvcnRzIENQVSBhZ2dyZWdhdGlvbiB2aWEgZ3B1QWdncmVnYXRpb246IGZhbHNlLFxuICogY3VzdG9tIGdldENvbG9yVmFsdWUvZ2V0RWxldmF0aW9uVmFsdWUgYWNjZXNzb3JzLCBwZXJjZW50aWxlIGZpbHRlcmluZywgYW5kIHNjYWxlIHR5cGVzLlxuICogVGhlIGN1c3RvbSBDUFVBZ2dyZWdhdG9yIG92ZXJyaWRlIGZyb20gZGVjay5nbCA4IGlzIG5vIGxvbmdlciBuZWVkZWQuXG4gKlxuICogV2Ugb3ZlcnJpZGUgZ2V0UGlja2luZ0luZm8gdG8gYWRkIGBjZWxsT3V0bGluZWAg4oCUIGFuIGFycmF5IG9mIFtsbmcsIGxhdF0gY29vcmRpbmF0ZXNcbiAqIGNvbXB1dGVkIGluIGNvbW1vbiBzcGFjZSBzbyB0aGUgb3V0bGluZSBhbGlnbnMgd2l0aCByZW5kZXJlZCBjZWxscyBhdCBhbGwgbGF0aXR1ZGVzLlxuICpcbiAqIFdlIGFsc28gb3ZlcnJpZGUgX29uQWdncmVnYXRpb25VcGRhdGUgdG8gc2VuZCBwZXItYmluIGFnZ3JlZ2F0ZWQgdmFsdWVzIHRocm91Z2hcbiAqIG9uU2V0Q29sb3JEb21haW4gc28gdGhlIGxlZ2VuZCBjYW4gY29tcHV0ZSBwcm9wZXIgcXVhbnRpbGUvY3VzdG9tIGJyZWFrcy5cbiAqL1xuLy8gQHRzLWV4cGVjdC1lcnJvciAtLSBvdmVycmlkaW5nIHByaXZhdGUgX29uQWdncmVnYXRpb25VcGRhdGUgdG8gZW5yaWNoIHRoZSBvblNldENvbG9yRG9tYWluIGNhbGxiYWNrXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FsZUVuaGFuY2VkR3JpZExheWVyIGV4dGVuZHMgR3JpZExheWVyPGFueT4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIC4uLkdyaWRMYXllci5kZWZhdWx0UHJvcHMsXG4gICAgZ3B1QWdncmVnYXRpb246IGZhbHNlXG4gIH07XG5cbiAgLy8gSEFDSzogZGVjay5nbCA5J3MgX29uQWdncmVnYXRpb25VcGRhdGUgaXMgcHJpdmF0ZSBhbmQgaXRzIG9uU2V0Q29sb3JEb21haW5cbiAgLy8gY2FsbGJhY2sgb25seSBwcm92aWRlcyBbbWluLCBtYXhdLiAgVGhhdCBpcyBzdWZmaWNpZW50IGZvciBxdWFudGl6ZS9saW5lYXJcbiAgLy8gc2NhbGVzIGJ1dCBkMy5zY2FsZVF1YW50aWxlIG5lZWRzIHRoZSAqZnVsbCBzb3J0ZWQgYXJyYXkqIG9mIGJpbiB2YWx1ZXMgdG9cbiAgLy8gY29tcHV0ZSBjb3JyZWN0IGJyZWFrIHBvaW50cyDigJQgd2l0aG91dCBpdCB0aGUgbGVnZW5kIGxhYmVscyBhcmUgd3JvbmdcbiAgX29uQWdncmVnYXRpb25VcGRhdGUoe2NoYW5uZWx9OiB7Y2hhbm5lbDogbnVtYmVyfSkge1xuICAgIGVucmljaGVkQWdncmVnYXRpb25VcGRhdGUodGhpcywgR3JpZExheWVyLCBjaGFubmVsKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICByZXR1cm4gZW5yaWNoZWRSZW5kZXJMYXllcnModGhpcywgR3JpZExheWVyKTtcbiAgfVxuXG4gIC8vIEluIGdsb2JlIG1vZGUsIHJ1biBkZWNrLmdsJ3MgYmluL2NvbW1vbi1zcGFjZSBzZXR1cCB1bmRlciBhIFdlYk1lcmNhdG9yVmlld3BvcnRcbiAgLy8gc28gYmlubmluZyBhbmQgdGhlIGNlbGwgc2hhZGVyJ3MgZmxhdCBjb21tb24gc3BhY2UgYXJlIGdlbnVpbmUgV2ViIE1lcmNhdG9yLCB3aGljaFxuICAvLyB0aGUgZ2xvYmUgY2VsbCBzdWJjbGFzcyB0aGVuIHJlbWFwcyBvbnRvIHRoZSBzcGhlcmUgc3VyZmFjZS4gTm8tb3AgaW4gMkQvM0QgbW9kZS5cbiAgX3VwZGF0ZUJpbk9wdGlvbnMoKSB7XG4gICAgcnVuQmluT3B0aW9uc1dpdGhNZXJjYXRvclZpZXdwb3J0KHRoaXMsICgpID0+XG4gICAgICAoR3JpZExheWVyLnByb3RvdHlwZSBhcyBhbnkpLl91cGRhdGVCaW5PcHRpb25zLmNhbGwodGhpcylcbiAgICApO1xuICB9XG5cbiAgLy8gZGVjay5nbCdzIEdyaWRDZWxsTGF5ZXIgcG9zaXRpb25zIGNlbGxzIGluIGZsYXQgY29tbW9uIHNwYWNlLCB3aGljaCBsYW5kcyB0aGVtXG4gIC8vIG9uIHRoZSBYWSBwbGFuZSB0aHJvdWdoIHRoZSBnbG9iZSBjZW50ZXIuIFN3YXAgaW4gYSBnbG9iZS1hd2FyZSBzdWJjbGFzcyB0aGF0XG4gIC8vIGN1cnZlcyBjZWxscyBvbnRvIHRoZSBzcGhlcmUgc3VyZmFjZSAobm8tb3AgaW4gMkQvM0QgbW9kZSkuXG4gIGdldFN1YkxheWVyQ2xhc3M8VCBleHRlbmRzIExheWVyPihcbiAgICBzdWJMYXllcklkOiBzdHJpbmcsXG4gICAgRGVmYXVsdExheWVyQ2xhc3M6IHtuZXcgKC4uLmFyZ3M6IGFueVtdKTogVH1cbiAgKSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci5nZXRTdWJMYXllckNsYXNzKHN1YkxheWVySWQsIERlZmF1bHRMYXllckNsYXNzKTtcbiAgICBpZiAoc3ViTGF5ZXJJZCA9PT0gJ2NlbGxzJykge1xuICAgICAgcmV0dXJuIG1ha2VHbG9iZUNlbGxMYXllckNsYXNzKFxuICAgICAgICByZXNvbHZlZCBhcyB1bmtub3duIGFzIHtuZXcgKC4uLmFyZ3M6IGFueVtdKTogVH0sXG4gICAgICAgICdncmlkJ1xuICAgICAgKSBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyhwYXJhbXM6IEdldFBpY2tpbmdJbmZvUGFyYW1zKTogUGlja2luZ0luZm8ge1xuICAgIGNvbnN0IGluZm8gPSBzdXBlci5nZXRQaWNraW5nSW5mbyhwYXJhbXMpIGFzIEdyaWRMYXllclBpY2tpbmdJbmZvPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICBpZiAoaW5mby5vYmplY3QpIHtcbiAgICAgIGNvbnN0IHtjZWxsT3JpZ2luQ29tbW9uLCBjZWxsU2l6ZUNvbW1vbiwgYWdncmVnYXRvclZpZXdwb3J0fSA9IHRoaXNcbiAgICAgICAgLnN0YXRlIGFzIHVua25vd24gYXMgR3JpZEludGVybmFsU3RhdGU7XG4gICAgICBjb25zdCBjb3ZlcmFnZSA9IHRoaXMucHJvcHMuY292ZXJhZ2UgPz8gMTtcbiAgICAgIGlmICghY2VsbE9yaWdpbkNvbW1vbiB8fCAhY2VsbFNpemVDb21tb24gfHwgIWFnZ3JlZ2F0b3JWaWV3cG9ydCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdTY2FsZUVuaGFuY2VkR3JpZExheWVyOiBleHBlY3RlZCBpbnRlcm5hbCBzdGF0ZSBwcm9wZXJ0aWVzICcgK1xuICAgICAgICAgICAgJyhjZWxsT3JpZ2luQ29tbW9uLCBjZWxsU2l6ZUNvbW1vbiwgYWdncmVnYXRvclZpZXdwb3J0KSBhcmUgbWlzc2luZy4gJyArXG4gICAgICAgICAgICAnSG92ZXIgb3V0bGluZSB3aWxsIG5vdCBiZSBzaG93bi4gVGhpcyBtYXkgaW5kaWNhdGUgYSBkZWNrLmdsIHZlcnNpb24gY2hhbmdlLidcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGluZm87XG4gICAgICB9XG4gICAgICBjb25zdCB7Y29sLCByb3d9ID0gaW5mby5vYmplY3QgYXMgR3JpZFBpY2tpbmdPYmplY3Q7XG4gICAgICBpZiAodHlwZW9mIGNvbCAhPT0gJ251bWJlcicgfHwgdHlwZW9mIHJvdyAhPT0gJ251bWJlcicpIHJldHVybiBpbmZvO1xuICAgICAgY29uc3QgY3ggPSAoY29sICsgMC41KSAqIGNlbGxTaXplQ29tbW9uWzBdICsgY2VsbE9yaWdpbkNvbW1vblswXTtcbiAgICAgIGNvbnN0IGN5ID0gKHJvdyArIDAuNSkgKiBjZWxsU2l6ZUNvbW1vblsxXSArIGNlbGxPcmlnaW5Db21tb25bMV07XG4gICAgICBjb25zdCBodyA9IDAuNSAqIGNvdmVyYWdlICogY2VsbFNpemVDb21tb25bMF07XG4gICAgICBjb25zdCBoaCA9IDAuNSAqIGNvdmVyYWdlICogY2VsbFNpemVDb21tb25bMV07XG5cbiAgICAgIChpbmZvLm9iamVjdCBhcyBHcmlkUGlja2luZ09iamVjdCkuY2VsbE91dGxpbmUgPSBbXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCAtIGh3LCBjeSAtIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCArIGh3LCBjeSAtIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCArIGh3LCBjeSArIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCAtIGh3LCBjeSArIGhoXSksXG4gICAgICAgIGFnZ3JlZ2F0b3JWaWV3cG9ydC51bnByb2plY3RGbGF0KFtjeCAtIGh3LCBjeSAtIGhoXSlcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xuICB9XG59XG5cblNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIubGF5ZXJOYW1lID0gJ1NjYWxlRW5oYW5jZWRHcmlkTGF5ZXInO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLFNBQVMsUUFBNkIsNkJBQTZCO0FBRTNFLFNBQVFDLHlCQUF5QixFQUFFQyxvQkFBb0IsUUFBTyxrQ0FBa0M7QUFDaEcsU0FDRUMsdUJBQXVCLEVBQ3ZCQyxpQ0FBaUMsUUFDNUIsaUNBQWlDO0FBZXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLElBQ3FCQyxzQkFBc0IsMEJBQUFDLFVBQUE7RUFBQSxTQUFBRCx1QkFBQTtJQUFBRSxlQUFBLE9BQUFGLHNCQUFBO0lBQUEsT0FBQUcsVUFBQSxPQUFBSCxzQkFBQSxFQUFBSSxTQUFBO0VBQUE7RUFBQUMsU0FBQSxDQUFBTCxzQkFBQSxFQUFBQyxVQUFBO0VBQUEsT0FBQUssWUFBQSxDQUFBTixzQkFBQTtJQUFBTyxHQUFBO0lBQUFDLEtBQUE7SUFNekM7SUFDQTtJQUNBO0lBQ0E7SUFDQSxTQUFBQyxvQkFBb0JBLENBQUFDLElBQUEsRUFBK0I7TUFBQSxJQUE3QkMsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87TUFDM0Jm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