@kkcompany/player 2.25.0-canary.2 → 2.25.0-canary.3

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [2.25.0-canary.3](https://gitlab.kkinternal.com/playback/web-playcraft/compare/v2.25.0-canary.2...v2.25.0-canary.3) (2025-11-21)
6
+
7
+
8
+ ### Features
9
+
10
+ * display language menu only when options are available ([f02fbc7](https://gitlab.kkinternal.com/playback/web-playcraft/commit/f02fbc775f351dff406139f2e9f2c2451441de31))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * undefined audio setting options ([3e4e5ab](https://gitlab.kkinternal.com/playback/web-playcraft/commit/3e4e5ab521b56ba349d7be8416cc98f70ca404ed))
16
+
5
17
  ## [2.25.0-canary.2](https://gitlab.kkinternal.com/playback/web-playcraft/compare/v2.25.0-canary.1...v2.25.0-canary.2) (2025-11-21)
6
18
 
7
19
 
package/dist/core.mjs CHANGED
@@ -45,7 +45,7 @@ const waitFor = (check, handler) => {
45
45
  function getVersion() {
46
46
  try {
47
47
  // eslint-disable-next-line no-undef
48
- return "2.25.0-canary.2";
48
+ return "2.25.0-canary.3";
49
49
  } catch (e) {
50
50
  return undefined;
51
51
  }
package/dist/index.js CHANGED
@@ -7242,7 +7242,7 @@ $$2({ target: 'Array', proto: true, forced: FORCED }, {
7242
7242
  function getVersion() {
7243
7243
  try {
7244
7244
  // eslint-disable-next-line no-undef
7245
- return "2.25.0-canary.2";
7245
+ return "2.25.0-canary.3";
7246
7246
  } catch (e) {
7247
7247
  return undefined;
7248
7248
  }
@@ -7970,7 +7970,7 @@ const getAudioTracks = (_, _ref2) => {
7970
7970
  const all = player.getVariantTracks().reduce((result, track) => {
7971
7971
  var _track$label;
7972
7972
 
7973
- const label = ((_track$label = track.label) === null || _track$label === void 0 ? void 0 : _track$label.trim()) || track.language;
7973
+ const label = ((_track$label = track.label) === null || _track$label === void 0 ? void 0 : _track$label.trim()) || track.language || 'unknown';
7974
7974
  const id = "".concat(track.language, ":").concat(label);
7975
7975
  result[id] = result[id] || _objectSpread$p(_objectSpread$p({}, track), {}, {
7976
7976
  type: 'audio',
@@ -8003,6 +8003,8 @@ const getCurrentAudioTrack = (media, _ref3) => {
8003
8003
  };
8004
8004
 
8005
8005
  const getSelectedAudioName = player => {
8006
+ var _currentAudio$value;
8007
+
8006
8008
  const track = getCurrentAudioTrack({}, {
8007
8009
  player
8008
8010
  });
@@ -8018,7 +8020,7 @@ const getSelectedAudioName = player => {
8018
8020
  });
8019
8021
  const currentAudio = track !== undefined ? track : audioList === null || audioList === void 0 ? void 0 : audioList[0];
8020
8022
  return currentAudio && _objectSpread$p(_objectSpread$p({}, currentAudio), {}, {
8021
- id: [currentAudio.language, currentAudio.label].join(':')
8023
+ id: ((_currentAudio$value = currentAudio.value) === null || _currentAudio$value === void 0 ? void 0 : _currentAudio$value.id) || [currentAudio.language, currentAudio.label].join(':')
8022
8024
  });
8023
8025
  };
8024
8026
 
@@ -8166,9 +8168,9 @@ const getSettingsData = _ref8 => {
8166
8168
  };
8167
8169
  };
8168
8170
 
8169
- const matchTracks = (tracks, info) => (info === null || info === void 0 ? void 0 : info.map(track => tracks.find(t => t.language === track.language && t.label === track.label)).filter(Boolean)) || tracks;
8171
+ const matchTracks = (tracks, sorted) => (sorted === null || sorted === void 0 ? void 0 : sorted.map(track => tracks.find(t => t.language === track.language && t.label === track.label)).filter(Boolean)) || tracks;
8170
8172
 
8171
- const getLanguageOptions = (player, info) => {
8173
+ const getLanguageOptions = (player, sorted) => {
8172
8174
  const audioTracks = player && getAudioTracks({}, {
8173
8175
  player
8174
8176
  });
@@ -8185,8 +8187,8 @@ const getLanguageOptions = (player, info) => {
8185
8187
  }
8186
8188
  });
8187
8189
  return {
8188
- audioTracks: matchTracks(audioTracks, info.audioTracks),
8189
- textTracks: matchTracks(textOptions, info.textTracks)
8190
+ audioTracks: matchTracks(audioTracks, sorted.audioTracks),
8191
+ textTracks: matchTracks(textOptions, sorted.textTracks)
8190
8192
  };
8191
8193
  };const vendors = {
8192
8194
  change: ['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'],
@@ -17028,7 +17030,7 @@ const SeekPreview = _ref => {
17028
17030
  }, currentThumbnail.position));
17029
17031
  };
17030
17032
 
17031
- var SeekPreview$1 = SeekPreview;const _excluded$1 = ["uiType", "audioTracks", "subtitleTracks", "getPlayer", "onChange", "slots"],
17033
+ var SeekPreview$1 = SeekPreview;const _excluded$1 = ["uiType", "audioTracks", "textTracks", "getPlayer", "onChange", "slots"],
17032
17034
  _excluded2 = ["source", "startTime", "quality", "title", "metadata", "channelTitle", "chapters", "playbackState", "currentTime", "playbackRate", "loop", "volume", "thumbnailsUrl", "controls", "marks", "intl", "settings", "blocking", "plugins", "modulesConfig", "uiType", "style", "children", "uiMode", "cast", "slots", "slotProps", "onError", "onPlaybackStateChange", "onBack", "onCast", "onChangeNext", "onChangePrevious", "onOpenSettings", "onChangeSettings", "onPlayerLoaded", "onBlockedAutoplay", "onPlaylogFired"];
17033
17035
 
17034
17036
  function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -17072,15 +17074,15 @@ const shouldPause = _ref => {
17072
17074
 
17073
17075
 
17074
17076
  const menuClasses = {
17075
- default: /*#__PURE__*/css$1(LanguageMenu.styles, "production" === "production" ? "" : ";label:default;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHN1YnRpdGxlVHJhY2tzID0gW10sXG4gIGdldFBsYXllcixcbiAgb25DaGFuZ2UsXG4gIHNsb3RzID0ge0xhbmd1YWdlTWVudX0sXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldExhbmd1YWdlT3B0aW9ucyhnZXRQbGF5ZXIoKSwge2F1ZGlvVHJhY2tzLCBzdWJ0aXRsZVRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgPE92ZXJsYXlQYW5lbCBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICApXG59XG5cbmNvbnN0IFByZW1pdW1QbGF5ZXIgPSAoe1xuICBzb3VyY2UsXG4gIHN0YXJ0VGltZSxcbiAgcXVhbGl0eSA9IHt9LFxuICB0aXRsZSxcbiAgbWV0YWRhdGEsXG4gIGNoYW5uZWxUaXRsZSxcbiAgY2hhcHRlcnMsXG4gIHBsYXliYWNrU3RhdGU6IGFwcFBsYXliYWNrU3RhdGUsXG4gIGN1cnJlbnRUaW1lOiBhcHBDdXJyZW50VGltZSxcbiAgcGxheWJhY2tSYXRlOiBhcHBQbGF5YmFja1JhdGUsXG4gIGxvb3AsXG4gIHZvbHVtZTogYXBwVm9sdW1lLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
17076
- desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, "production" === "production" ? "" : ";label:desktop;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHN1YnRpdGxlVHJhY2tzID0gW10sXG4gIGdldFBsYXllcixcbiAgb25DaGFuZ2UsXG4gIHNsb3RzID0ge0xhbmd1YWdlTWVudX0sXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldExhbmd1YWdlT3B0aW9ucyhnZXRQbGF5ZXIoKSwge2F1ZGlvVHJhY2tzLCBzdWJ0aXRsZVRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgPE92ZXJsYXlQYW5lbCBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICApXG59XG5cbmNvbnN0IFByZW1pdW1QbGF5ZXIgPSAoe1xuICBzb3VyY2UsXG4gIHN0YXJ0VGltZSxcbiAgcXVhbGl0eSA9IHt9LFxuICB0aXRsZSxcbiAgbWV0YWRhdGEsXG4gIGNoYW5uZWxUaXRsZSxcbiAgY2hhcHRlcnMsXG4gIHBsYXliYWNrU3RhdGU6IGFwcFBsYXliYWNrU3RhdGUsXG4gIGN1cnJlbnRUaW1lOiBhcHBDdXJyZW50VGltZSxcbiAgcGxheWJhY2tSYXRlOiBhcHBQbGF5YmFja1JhdGUsXG4gIGxvb3AsXG4gIHZvbHVtZTogYXBwVm9sdW1lLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
17077
+ default: /*#__PURE__*/css$1(LanguageMenu.styles, "production" === "production" ? "" : ";label:default;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgfSlcbiAgICAgIHJldHVybiB7cHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCwgdmFsdWVzLCBzZWN0aW9uc31cbiAgICB9KVxuICB9XG4gIGNvbnN0IGxhc3RTdGF0ZSA9IHVzZVJlZihwbGF5YmFja1N0YXRlKVxuICBjb25zdCBoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2Vycm9yJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT8uKGV2ZW50LCBzdGF0ZSlcbiAgICAvLyBwcmV2aW91c2x5IFVJIHBsYXliYWNrIHN0YXRlIHdhcyBzeW5jZWQgb25seSB3aGVuXG4gICAgLy8gZXhpdGluZyBpT1MgdmlkZW8gb25seSBmdWxsc2NyZWVuKHdlYmtpdGVuZGZ1bGxzY3JlZW4pXG4gICAgaWYgKFxuICAgICAgL3BsYXlpbmd8cGF1c2VkLy50ZXN0KHN0YXRlKSAmJlxuICAgICAgISh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSAmJlxuICAgICAgIXNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgKSB7XG4gICAgICB0b2dnbGVQbGF5KHN0YXRlKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdlbmRlZCcpIHtcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgaGF2ZVBvaW50ZXIoKSAmJlxuICAgIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnICYmXG4gICAgIXdhaXRpbmcgJiZcbiAgICAhL3ZvbHVtZXwnJy8udGVzdCh1c2VyRm9jdXMpICYmXG4gICAgIS90aXRsZS1vbmx5fG5vLXBhbmVsLy50ZXN0KGNvbnRyb2xzKSAmJlxuICAgIChjb250cm9scy5hdXRvaGlkZSB8fCBtb2RlID09PSAnc2hvd24nKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZEhpZGVQYW5lbHMpIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH0sIFtzaG91bGRIaWRlUGFuZWxzXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICAhaXNFbmQgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpbz17c2V0dGluZ3MudmFsdWVzLmF1ZGlvfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZXR0aW5ncy52YWx1ZXMuc3VidGl0bGVzfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+IGNoYW5nZVNldHRpbmdzKGl0ZW0udHlwZSwgaXRlbS52YWx1ZSl9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */"),
17078
+ desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, "production" === "production" ? "" : ";label:desktop;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgfSlcbiAgICAgIHJldHVybiB7cHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCwgdmFsdWVzLCBzZWN0aW9uc31cbiAgICB9KVxuICB9XG4gIGNvbnN0IGxhc3RTdGF0ZSA9IHVzZVJlZihwbGF5YmFja1N0YXRlKVxuICBjb25zdCBoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2Vycm9yJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT8uKGV2ZW50LCBzdGF0ZSlcbiAgICAvLyBwcmV2aW91c2x5IFVJIHBsYXliYWNrIHN0YXRlIHdhcyBzeW5jZWQgb25seSB3aGVuXG4gICAgLy8gZXhpdGluZyBpT1MgdmlkZW8gb25seSBmdWxsc2NyZWVuKHdlYmtpdGVuZGZ1bGxzY3JlZW4pXG4gICAgaWYgKFxuICAgICAgL3BsYXlpbmd8cGF1c2VkLy50ZXN0KHN0YXRlKSAmJlxuICAgICAgISh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSAmJlxuICAgICAgIXNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgKSB7XG4gICAgICB0b2dnbGVQbGF5KHN0YXRlKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdlbmRlZCcpIHtcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgaGF2ZVBvaW50ZXIoKSAmJlxuICAgIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnICYmXG4gICAgIXdhaXRpbmcgJiZcbiAgICAhL3ZvbHVtZXwnJy8udGVzdCh1c2VyRm9jdXMpICYmXG4gICAgIS90aXRsZS1vbmx5fG5vLXBhbmVsLy50ZXN0KGNvbnRyb2xzKSAmJlxuICAgIChjb250cm9scy5hdXRvaGlkZSB8fCBtb2RlID09PSAnc2hvd24nKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZEhpZGVQYW5lbHMpIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH0sIFtzaG91bGRIaWRlUGFuZWxzXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICAhaXNFbmQgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpbz17c2V0dGluZ3MudmFsdWVzLmF1ZGlvfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZXR0aW5ncy52YWx1ZXMuc3VidGl0bGVzfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+IGNoYW5nZVNldHRpbmdzKGl0ZW0udHlwZSwgaXRlbS52YWx1ZSl9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */")
17077
17079
  };
17078
17080
 
17079
17081
  const LanguageSettings = _ref2 => {
17080
17082
  let {
17081
17083
  uiType,
17082
17084
  audioTracks = [],
17083
- subtitleTracks = [],
17085
+ textTracks = [],
17084
17086
  getPlayer,
17085
17087
  onChange,
17086
17088
  slots = {
@@ -17091,9 +17093,9 @@ const LanguageSettings = _ref2 => {
17091
17093
 
17092
17094
  const options = getLanguageOptions(getPlayer(), {
17093
17095
  audioTracks,
17094
- subtitleTracks
17096
+ textTracks
17095
17097
  });
17096
- return /*#__PURE__*/jsxRuntime.exports.jsx(OverlayPanel, {
17098
+ return audioTracks.length > 0 && textTracks.length > 0 && /*#__PURE__*/jsxRuntime.exports.jsx(OverlayPanel, {
17097
17099
  buttonIcon: "subtitle",
17098
17100
  children: /*#__PURE__*/jsxRuntime.exports.jsx(slots.LanguageMenu, _objectSpread$2({
17099
17101
  uiType: uiType,
package/dist/index.mjs CHANGED
@@ -295,7 +295,7 @@ function convertToSeconds(timeString) {
295
295
  function getVersion() {
296
296
  try {
297
297
  // eslint-disable-next-line no-undef
298
- return "2.25.0-canary.2";
298
+ return "2.25.0-canary.3";
299
299
  } catch (e) {
300
300
  return undefined;
301
301
  }
@@ -997,7 +997,7 @@ const getAudioTracks = (_, {
997
997
  const all = player.getVariantTracks().reduce((result, track) => {
998
998
  var _track$label;
999
999
 
1000
- const label = ((_track$label = track.label) === null || _track$label === void 0 ? void 0 : _track$label.trim()) || track.language;
1000
+ const label = ((_track$label = track.label) === null || _track$label === void 0 ? void 0 : _track$label.trim()) || track.language || 'unknown';
1001
1001
  const id = `${track.language}:${label}`;
1002
1002
  result[id] = result[id] || { ...track,
1003
1003
  type: 'audio',
@@ -1027,6 +1027,8 @@ const getCurrentAudioTrack = (media, {
1027
1027
  }).find(track => track.selected);
1028
1028
 
1029
1029
  const getSelectedAudioName = player => {
1030
+ var _currentAudio$value;
1031
+
1030
1032
  const track = getCurrentAudioTrack({}, {
1031
1033
  player
1032
1034
  });
@@ -1042,7 +1044,7 @@ const getSelectedAudioName = player => {
1042
1044
  });
1043
1045
  const currentAudio = track !== undefined ? track : audioList === null || audioList === void 0 ? void 0 : audioList[0];
1044
1046
  return currentAudio && { ...currentAudio,
1045
- id: [currentAudio.language, currentAudio.label].join(':')
1047
+ id: ((_currentAudio$value = currentAudio.value) === null || _currentAudio$value === void 0 ? void 0 : _currentAudio$value.id) || [currentAudio.language, currentAudio.label].join(':')
1046
1048
  };
1047
1049
  };
1048
1050
 
@@ -1184,9 +1186,9 @@ const getSettingsData = ({
1184
1186
  };
1185
1187
  };
1186
1188
 
1187
- const matchTracks = (tracks, info) => (info === null || info === void 0 ? void 0 : info.map(track => tracks.find(t => t.language === track.language && t.label === track.label)).filter(Boolean)) || tracks;
1189
+ const matchTracks = (tracks, sorted) => (sorted === null || sorted === void 0 ? void 0 : sorted.map(track => tracks.find(t => t.language === track.language && t.label === track.label)).filter(Boolean)) || tracks;
1188
1190
 
1189
- const getLanguageOptions = (player, info) => {
1191
+ const getLanguageOptions = (player, sorted) => {
1190
1192
  const audioTracks = player && getAudioTracks({}, {
1191
1193
  player
1192
1194
  });
@@ -1203,8 +1205,8 @@ const getLanguageOptions = (player, info) => {
1203
1205
  }
1204
1206
  });
1205
1207
  return {
1206
- audioTracks: matchTracks(audioTracks, info.audioTracks),
1207
- textTracks: matchTracks(textOptions, info.textTracks)
1208
+ audioTracks: matchTracks(audioTracks, sorted.audioTracks),
1209
+ textTracks: matchTracks(textOptions, sorted.textTracks)
1208
1210
  };
1209
1211
  };
1210
1212
 
@@ -8149,14 +8151,14 @@ const shouldPause = ({
8149
8151
 
8150
8152
 
8151
8153
  const menuClasses = {
8152
- default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHN1YnRpdGxlVHJhY2tzID0gW10sXG4gIGdldFBsYXllcixcbiAgb25DaGFuZ2UsXG4gIHNsb3RzID0ge0xhbmd1YWdlTWVudX0sXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldExhbmd1YWdlT3B0aW9ucyhnZXRQbGF5ZXIoKSwge2F1ZGlvVHJhY2tzLCBzdWJ0aXRsZVRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgPE92ZXJsYXlQYW5lbCBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICApXG59XG5cbmNvbnN0IFByZW1pdW1QbGF5ZXIgPSAoe1xuICBzb3VyY2UsXG4gIHN0YXJ0VGltZSxcbiAgcXVhbGl0eSA9IHt9LFxuICB0aXRsZSxcbiAgbWV0YWRhdGEsXG4gIGNoYW5uZWxUaXRsZSxcbiAgY2hhcHRlcnMsXG4gIHBsYXliYWNrU3RhdGU6IGFwcFBsYXliYWNrU3RhdGUsXG4gIGN1cnJlbnRUaW1lOiBhcHBDdXJyZW50VGltZSxcbiAgcGxheWJhY2tSYXRlOiBhcHBQbGF5YmFja1JhdGUsXG4gIGxvb3AsXG4gIHZvbHVtZTogYXBwVm9sdW1lLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
8153
- desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHN1YnRpdGxlVHJhY2tzID0gW10sXG4gIGdldFBsYXllcixcbiAgb25DaGFuZ2UsXG4gIHNsb3RzID0ge0xhbmd1YWdlTWVudX0sXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldExhbmd1YWdlT3B0aW9ucyhnZXRQbGF5ZXIoKSwge2F1ZGlvVHJhY2tzLCBzdWJ0aXRsZVRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgPE92ZXJsYXlQYW5lbCBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICApXG59XG5cbmNvbnN0IFByZW1pdW1QbGF5ZXIgPSAoe1xuICBzb3VyY2UsXG4gIHN0YXJ0VGltZSxcbiAgcXVhbGl0eSA9IHt9LFxuICB0aXRsZSxcbiAgbWV0YWRhdGEsXG4gIGNoYW5uZWxUaXRsZSxcbiAgY2hhcHRlcnMsXG4gIHBsYXliYWNrU3RhdGU6IGFwcFBsYXliYWNrU3RhdGUsXG4gIGN1cnJlbnRUaW1lOiBhcHBDdXJyZW50VGltZSxcbiAgcGxheWJhY2tSYXRlOiBhcHBQbGF5YmFja1JhdGUsXG4gIGxvb3AsXG4gIHZvbHVtZTogYXBwVm9sdW1lLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
8154
+ default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgfSlcbiAgICAgIHJldHVybiB7cHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCwgdmFsdWVzLCBzZWN0aW9uc31cbiAgICB9KVxuICB9XG4gIGNvbnN0IGxhc3RTdGF0ZSA9IHVzZVJlZihwbGF5YmFja1N0YXRlKVxuICBjb25zdCBoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2Vycm9yJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT8uKGV2ZW50LCBzdGF0ZSlcbiAgICAvLyBwcmV2aW91c2x5IFVJIHBsYXliYWNrIHN0YXRlIHdhcyBzeW5jZWQgb25seSB3aGVuXG4gICAgLy8gZXhpdGluZyBpT1MgdmlkZW8gb25seSBmdWxsc2NyZWVuKHdlYmtpdGVuZGZ1bGxzY3JlZW4pXG4gICAgaWYgKFxuICAgICAgL3BsYXlpbmd8cGF1c2VkLy50ZXN0KHN0YXRlKSAmJlxuICAgICAgISh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSAmJlxuICAgICAgIXNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgKSB7XG4gICAgICB0b2dnbGVQbGF5KHN0YXRlKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdlbmRlZCcpIHtcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgaGF2ZVBvaW50ZXIoKSAmJlxuICAgIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnICYmXG4gICAgIXdhaXRpbmcgJiZcbiAgICAhL3ZvbHVtZXwnJy8udGVzdCh1c2VyRm9jdXMpICYmXG4gICAgIS90aXRsZS1vbmx5fG5vLXBhbmVsLy50ZXN0KGNvbnRyb2xzKSAmJlxuICAgIChjb250cm9scy5hdXRvaGlkZSB8fCBtb2RlID09PSAnc2hvd24nKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZEhpZGVQYW5lbHMpIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH0sIFtzaG91bGRIaWRlUGFuZWxzXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICAhaXNFbmQgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpbz17c2V0dGluZ3MudmFsdWVzLmF1ZGlvfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZXR0aW5ncy52YWx1ZXMuc3VidGl0bGVzfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+IGNoYW5nZVNldHRpbmdzKGl0ZW0udHlwZSwgaXRlbS52YWx1ZSl9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */"),
8155
+ desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgfSlcbiAgICAgIHJldHVybiB7cHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCwgdmFsdWVzLCBzZWN0aW9uc31cbiAgICB9KVxuICB9XG4gIGNvbnN0IGxhc3RTdGF0ZSA9IHVzZVJlZihwbGF5YmFja1N0YXRlKVxuICBjb25zdCBoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2Vycm9yJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT8uKGV2ZW50LCBzdGF0ZSlcbiAgICAvLyBwcmV2aW91c2x5IFVJIHBsYXliYWNrIHN0YXRlIHdhcyBzeW5jZWQgb25seSB3aGVuXG4gICAgLy8gZXhpdGluZyBpT1MgdmlkZW8gb25seSBmdWxsc2NyZWVuKHdlYmtpdGVuZGZ1bGxzY3JlZW4pXG4gICAgaWYgKFxuICAgICAgL3BsYXlpbmd8cGF1c2VkLy50ZXN0KHN0YXRlKSAmJlxuICAgICAgISh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSAmJlxuICAgICAgIXNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgKSB7XG4gICAgICB0b2dnbGVQbGF5KHN0YXRlKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdlbmRlZCcpIHtcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgaGF2ZVBvaW50ZXIoKSAmJlxuICAgIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnICYmXG4gICAgIXdhaXRpbmcgJiZcbiAgICAhL3ZvbHVtZXwnJy8udGVzdCh1c2VyRm9jdXMpICYmXG4gICAgIS90aXRsZS1vbmx5fG5vLXBhbmVsLy50ZXN0KGNvbnRyb2xzKSAmJlxuICAgIChjb250cm9scy5hdXRvaGlkZSB8fCBtb2RlID09PSAnc2hvd24nKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZEhpZGVQYW5lbHMpIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH0sIFtzaG91bGRIaWRlUGFuZWxzXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICAhaXNFbmQgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpbz17c2V0dGluZ3MudmFsdWVzLmF1ZGlvfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZXR0aW5ncy52YWx1ZXMuc3VidGl0bGVzfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+IGNoYW5nZVNldHRpbmdzKGl0ZW0udHlwZSwgaXRlbS52YWx1ZSl9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */")
8154
8156
  };
8155
8157
 
8156
8158
  const LanguageSettings = ({
8157
8159
  uiType,
8158
8160
  audioTracks = [],
8159
- subtitleTracks = [],
8161
+ textTracks = [],
8160
8162
  getPlayer,
8161
8163
  onChange,
8162
8164
  slots = {
@@ -8166,9 +8168,9 @@ const LanguageSettings = ({
8166
8168
  }) => {
8167
8169
  const options = getLanguageOptions(getPlayer(), {
8168
8170
  audioTracks,
8169
- subtitleTracks
8171
+ textTracks
8170
8172
  });
8171
- return /*#__PURE__*/jsx(OverlayPanel, {
8173
+ return audioTracks.length > 0 && textTracks.length > 0 && /*#__PURE__*/jsx(OverlayPanel, {
8172
8174
  buttonIcon: "subtitle",
8173
8175
  children: /*#__PURE__*/jsx(slots.LanguageMenu, {
8174
8176
  uiType: uiType,
package/dist/modules.mjs CHANGED
@@ -505,7 +505,7 @@ const getSource = (sourceOptions, {
505
505
  function getVersion() {
506
506
  try {
507
507
  // eslint-disable-next-line no-undef
508
- return "2.25.0-canary.2";
508
+ return "2.25.0-canary.3";
509
509
  } catch (e) {
510
510
  return undefined;
511
511
  }
@@ -1503,7 +1503,7 @@ const createAnalytics = ({
1503
1503
  const logTarget = mapLogEvents({
1504
1504
  video,
1505
1505
  playerName: 'shaka',
1506
- version: "2.25.0-canary.2"
1506
+ version: "2.25.0-canary.3"
1507
1507
  });
1508
1508
  logTarget.all((type, data) => {
1509
1509
  const payload = {
package/dist/react.mjs CHANGED
@@ -296,7 +296,7 @@ function convertToSeconds(timeString) {
296
296
  function getVersion() {
297
297
  try {
298
298
  // eslint-disable-next-line no-undef
299
- return "2.25.0-canary.2";
299
+ return "2.25.0-canary.3";
300
300
  } catch (e) {
301
301
  return undefined;
302
302
  }
@@ -8271,7 +8271,7 @@ const getAudioTracks = (_, {
8271
8271
  const all = player.getVariantTracks().reduce((result, track) => {
8272
8272
  var _track$label;
8273
8273
 
8274
- const label = ((_track$label = track.label) === null || _track$label === void 0 ? void 0 : _track$label.trim()) || track.language;
8274
+ const label = ((_track$label = track.label) === null || _track$label === void 0 ? void 0 : _track$label.trim()) || track.language || 'unknown';
8275
8275
  const id = `${track.language}:${label}`;
8276
8276
  result[id] = result[id] || { ...track,
8277
8277
  type: 'audio',
@@ -8301,6 +8301,8 @@ const getCurrentAudioTrack = (media, {
8301
8301
  }).find(track => track.selected);
8302
8302
 
8303
8303
  const getSelectedAudioName = player => {
8304
+ var _currentAudio$value;
8305
+
8304
8306
  const track = getCurrentAudioTrack({}, {
8305
8307
  player
8306
8308
  });
@@ -8316,7 +8318,7 @@ const getSelectedAudioName = player => {
8316
8318
  });
8317
8319
  const currentAudio = track !== undefined ? track : audioList === null || audioList === void 0 ? void 0 : audioList[0];
8318
8320
  return currentAudio && { ...currentAudio,
8319
- id: [currentAudio.language, currentAudio.label].join(':')
8321
+ id: ((_currentAudio$value = currentAudio.value) === null || _currentAudio$value === void 0 ? void 0 : _currentAudio$value.id) || [currentAudio.language, currentAudio.label].join(':')
8320
8322
  };
8321
8323
  };
8322
8324
 
@@ -8458,9 +8460,9 @@ const getSettingsData = ({
8458
8460
  };
8459
8461
  };
8460
8462
 
8461
- const matchTracks = (tracks, info) => (info === null || info === void 0 ? void 0 : info.map(track => tracks.find(t => t.language === track.language && t.label === track.label)).filter(Boolean)) || tracks;
8463
+ const matchTracks = (tracks, sorted) => (sorted === null || sorted === void 0 ? void 0 : sorted.map(track => tracks.find(t => t.language === track.language && t.label === track.label)).filter(Boolean)) || tracks;
8462
8464
 
8463
- const getLanguageOptions = (player, info) => {
8465
+ const getLanguageOptions = (player, sorted) => {
8464
8466
  const audioTracks = player && getAudioTracks({}, {
8465
8467
  player
8466
8468
  });
@@ -8477,8 +8479,8 @@ const getLanguageOptions = (player, info) => {
8477
8479
  }
8478
8480
  });
8479
8481
  return {
8480
- audioTracks: matchTracks(audioTracks, info.audioTracks),
8481
- textTracks: matchTracks(textOptions, info.textTracks)
8482
+ audioTracks: matchTracks(audioTracks, sorted.audioTracks),
8483
+ textTracks: matchTracks(textOptions, sorted.textTracks)
8482
8484
  };
8483
8485
  };
8484
8486
 
@@ -8663,14 +8665,14 @@ const shouldPause = ({
8663
8665
 
8664
8666
 
8665
8667
  const menuClasses = {
8666
- default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHN1YnRpdGxlVHJhY2tzID0gW10sXG4gIGdldFBsYXllcixcbiAgb25DaGFuZ2UsXG4gIHNsb3RzID0ge0xhbmd1YWdlTWVudX0sXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldExhbmd1YWdlT3B0aW9ucyhnZXRQbGF5ZXIoKSwge2F1ZGlvVHJhY2tzLCBzdWJ0aXRsZVRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgPE92ZXJsYXlQYW5lbCBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICApXG59XG5cbmNvbnN0IFByZW1pdW1QbGF5ZXIgPSAoe1xuICBzb3VyY2UsXG4gIHN0YXJ0VGltZSxcbiAgcXVhbGl0eSA9IHt9LFxuICB0aXRsZSxcbiAgbWV0YWRhdGEsXG4gIGNoYW5uZWxUaXRsZSxcbiAgY2hhcHRlcnMsXG4gIHBsYXliYWNrU3RhdGU6IGFwcFBsYXliYWNrU3RhdGUsXG4gIGN1cnJlbnRUaW1lOiBhcHBDdXJyZW50VGltZSxcbiAgcGxheWJhY2tSYXRlOiBhcHBQbGF5YmFja1JhdGUsXG4gIGxvb3AsXG4gIHZvbHVtZTogYXBwVm9sdW1lLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
8667
- desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHN1YnRpdGxlVHJhY2tzID0gW10sXG4gIGdldFBsYXllcixcbiAgb25DaGFuZ2UsXG4gIHNsb3RzID0ge0xhbmd1YWdlTWVudX0sXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldExhbmd1YWdlT3B0aW9ucyhnZXRQbGF5ZXIoKSwge2F1ZGlvVHJhY2tzLCBzdWJ0aXRsZVRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgPE92ZXJsYXlQYW5lbCBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICApXG59XG5cbmNvbnN0IFByZW1pdW1QbGF5ZXIgPSAoe1xuICBzb3VyY2UsXG4gIHN0YXJ0VGltZSxcbiAgcXVhbGl0eSA9IHt9LFxuICB0aXRsZSxcbiAgbWV0YWRhdGEsXG4gIGNoYW5uZWxUaXRsZSxcbiAgY2hhcHRlcnMsXG4gIHBsYXliYWNrU3RhdGU6IGFwcFBsYXliYWNrU3RhdGUsXG4gIGN1cnJlbnRUaW1lOiBhcHBDdXJyZW50VGltZSxcbiAgcGxheWJhY2tSYXRlOiBhcHBQbGF5YmFja1JhdGUsXG4gIGxvb3AsXG4gIHZvbHVtZTogYXBwVm9sdW1lLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
8668
+ default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgfSlcbiAgICAgIHJldHVybiB7cHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCwgdmFsdWVzLCBzZWN0aW9uc31cbiAgICB9KVxuICB9XG4gIGNvbnN0IGxhc3RTdGF0ZSA9IHVzZVJlZihwbGF5YmFja1N0YXRlKVxuICBjb25zdCBoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2Vycm9yJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT8uKGV2ZW50LCBzdGF0ZSlcbiAgICAvLyBwcmV2aW91c2x5IFVJIHBsYXliYWNrIHN0YXRlIHdhcyBzeW5jZWQgb25seSB3aGVuXG4gICAgLy8gZXhpdGluZyBpT1MgdmlkZW8gb25seSBmdWxsc2NyZWVuKHdlYmtpdGVuZGZ1bGxzY3JlZW4pXG4gICAgaWYgKFxuICAgICAgL3BsYXlpbmd8cGF1c2VkLy50ZXN0KHN0YXRlKSAmJlxuICAgICAgISh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSAmJlxuICAgICAgIXNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgKSB7XG4gICAgICB0b2dnbGVQbGF5KHN0YXRlKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdlbmRlZCcpIHtcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgaGF2ZVBvaW50ZXIoKSAmJlxuICAgIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnICYmXG4gICAgIXdhaXRpbmcgJiZcbiAgICAhL3ZvbHVtZXwnJy8udGVzdCh1c2VyRm9jdXMpICYmXG4gICAgIS90aXRsZS1vbmx5fG5vLXBhbmVsLy50ZXN0KGNvbnRyb2xzKSAmJlxuICAgIChjb250cm9scy5hdXRvaGlkZSB8fCBtb2RlID09PSAnc2hvd24nKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZEhpZGVQYW5lbHMpIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH0sIFtzaG91bGRIaWRlUGFuZWxzXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICAhaXNFbmQgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpbz17c2V0dGluZ3MudmFsdWVzLmF1ZGlvfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZXR0aW5ncy52YWx1ZXMuc3VidGl0bGVzfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+IGNoYW5nZVNldHRpbmdzKGl0ZW0udHlwZSwgaXRlbS52YWx1ZSl9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */"),
8669
+ desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgfSlcbiAgICAgIHJldHVybiB7cHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCwgdmFsdWVzLCBzZWN0aW9uc31cbiAgICB9KVxuICB9XG4gIGNvbnN0IGxhc3RTdGF0ZSA9IHVzZVJlZihwbGF5YmFja1N0YXRlKVxuICBjb25zdCBoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2Vycm9yJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT8uKGV2ZW50LCBzdGF0ZSlcbiAgICAvLyBwcmV2aW91c2x5IFVJIHBsYXliYWNrIHN0YXRlIHdhcyBzeW5jZWQgb25seSB3aGVuXG4gICAgLy8gZXhpdGluZyBpT1MgdmlkZW8gb25seSBmdWxsc2NyZWVuKHdlYmtpdGVuZGZ1bGxzY3JlZW4pXG4gICAgaWYgKFxuICAgICAgL3BsYXlpbmd8cGF1c2VkLy50ZXN0KHN0YXRlKSAmJlxuICAgICAgISh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSAmJlxuICAgICAgIXNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgKSB7XG4gICAgICB0b2dnbGVQbGF5KHN0YXRlKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdlbmRlZCcpIHtcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgaGF2ZVBvaW50ZXIoKSAmJlxuICAgIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnICYmXG4gICAgIXdhaXRpbmcgJiZcbiAgICAhL3ZvbHVtZXwnJy8udGVzdCh1c2VyRm9jdXMpICYmXG4gICAgIS90aXRsZS1vbmx5fG5vLXBhbmVsLy50ZXN0KGNvbnRyb2xzKSAmJlxuICAgIChjb250cm9scy5hdXRvaGlkZSB8fCBtb2RlID09PSAnc2hvd24nKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZEhpZGVQYW5lbHMpIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH0sIFtzaG91bGRIaWRlUGFuZWxzXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICAhaXNFbmQgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpbz17c2V0dGluZ3MudmFsdWVzLmF1ZGlvfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZXR0aW5ncy52YWx1ZXMuc3VidGl0bGVzfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+IGNoYW5nZVNldHRpbmdzKGl0ZW0udHlwZSwgaXRlbS52YWx1ZSl9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */")
8668
8670
  };
8669
8671
 
8670
8672
  const LanguageSettings = ({
8671
8673
  uiType,
8672
8674
  audioTracks = [],
8673
- subtitleTracks = [],
8675
+ textTracks = [],
8674
8676
  getPlayer,
8675
8677
  onChange,
8676
8678
  slots = {
@@ -8680,9 +8682,9 @@ const LanguageSettings = ({
8680
8682
  }) => {
8681
8683
  const options = getLanguageOptions(getPlayer(), {
8682
8684
  audioTracks,
8683
- subtitleTracks
8685
+ textTracks
8684
8686
  });
8685
- return /*#__PURE__*/jsx(OverlayPanel, {
8687
+ return audioTracks.length > 0 && textTracks.length > 0 && /*#__PURE__*/jsx(OverlayPanel, {
8686
8688
  buttonIcon: "subtitle",
8687
8689
  children: /*#__PURE__*/jsx(slots.LanguageMenu, {
8688
8690
  uiType: uiType,
@@ -11155,7 +11157,7 @@ const PremiumPlusPlayer = ({
11155
11157
  const restPlayerName = ['shaka', 'bitmovin'].find(name => name in rest);
11156
11158
  logTarget.current = mapLogEvents({
11157
11159
  playerName: restPlayerName || 'shaka',
11158
- version: "2.25.0-canary.2",
11160
+ version: "2.25.0-canary.3",
11159
11161
  video: videoRef.current,
11160
11162
  getPlaybackStatus: () => getMediaTime(videoRef.current, {
11161
11163
  player: corePlayerRef.current,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kkcompany/player",
3
- "version": "2.25.0-canary.2",
3
+ "version": "2.25.0-canary.3",
4
4
  "module": "dist/index.mjs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",