valtech-components 4.0.630 → 4.0.633

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.
Files changed (30) hide show
  1. package/esm2022/lib/components/organisms/mini-games/chessimals-adventure-data.mjs +3 -3
  2. package/esm2022/lib/components/organisms/mini-games/chessimals-adventure.component.mjs +75 -20
  3. package/esm2022/lib/components/organisms/mini-games/chessimals-engine.mjs +10 -10
  4. package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +11 -11
  5. package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +5 -5
  6. package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
  7. package/esm2022/lib/services/auth/auth.service.mjs +78 -1
  8. package/esm2022/lib/services/auth/types.mjs +1 -1
  9. package/esm2022/lib/version.mjs +2 -2
  10. package/fesm2022/valtech-components.mjs +177 -45
  11. package/fesm2022/valtech-components.mjs.map +1 -1
  12. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +1 -1
  13. package/lib/components/molecules/cta-card/cta-card.component.d.ts +1 -1
  14. package/lib/components/molecules/metric-card/metric-card.component.d.ts +1 -1
  15. package/lib/components/molecules/phone-display/phone-display.component.d.ts +1 -1
  16. package/lib/components/organisms/account-view/account-view.component.d.ts +1 -1
  17. package/lib/components/organisms/article/article.component.d.ts +1 -1
  18. package/lib/components/organisms/auth-cta/auth-cta.component.d.ts +1 -1
  19. package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +1 -1
  20. package/lib/components/organisms/mini-games/chessimals-adventure.component.d.ts +4 -1
  21. package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
  22. package/lib/components/organisms/mini-games/memory-game.component.d.ts +1 -1
  23. package/lib/components/organisms/mini-games/types.d.ts +2 -2
  24. package/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.d.ts +1 -1
  25. package/lib/components/organisms/organization-view/organization-view.component.d.ts +1 -1
  26. package/lib/services/auth/auth.service.d.ts +33 -0
  27. package/lib/services/auth/types.d.ts +35 -0
  28. package/lib/version.d.ts +1 -1
  29. package/package.json +1 -1
  30. /package/src/lib/assets/games/chessimals/challenge-avatars/{nightmare-magnus.png → nightmare-mandrill.png} +0 -0
@@ -130,10 +130,10 @@ export const CHESSIMALS_BOT_PROFILES = [
130
130
  descriptionKey: 'chessimalsBotAnacondaBody',
131
131
  },
132
132
  {
133
- id: 'magnus',
133
+ id: 'mandrill',
134
134
  difficulty: 'hard',
135
135
  avatar: '♟',
136
- avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/nightmare-magnus.png`,
136
+ avatarSrc: `${CHESSIMALS_CHALLENGE_AVATAR_BASE}/nightmare-mandrill.png`,
137
137
  labelKey: 'chessimalsBotMagnus',
138
138
  descriptionKey: 'chessimalsBotMagnusBody',
139
139
  },
@@ -363,7 +363,7 @@ const BOT_STYLES = {
363
363
  trap: 1.02,
364
364
  endgame: 1.86,
365
365
  },
366
- magnus: {
366
+ mandrill: {
367
367
  advancement: 1.04,
368
368
  capture: 1.22,
369
369
  safety: 1.9,
@@ -382,7 +382,7 @@ const DEFAULT_BOT_PROFILE_BY_DIFFICULTY = {
382
382
  easy: 'explorer',
383
383
  normal: 'hunter',
384
384
  hard: 'strategist',
385
- master: 'magnus',
385
+ master: 'mandrill',
386
386
  };
387
387
  export function createChessimalsGame(boardSize = 6, options = {}) {
388
388
  const pieces = [];
@@ -471,7 +471,7 @@ export function chooseChessimalsBotMove(state, difficulty = 'normal', profileId
471
471
  score: scoreBotMove(state, move, difficulty, style, challengePressure, false, options.nightmareMode),
472
472
  }))
473
473
  .sort((a, b) => b.score - a.score);
474
- const lookaheadLimit = options.nightmareMode === 'magnus' || difficulty === 'master'
474
+ const lookaheadLimit = options.nightmareMode === 'mandrill' || difficulty === 'master'
475
475
  ? 48
476
476
  : difficulty === 'hard'
477
477
  ? 32
@@ -792,8 +792,8 @@ function scoreBotMove(state, move, difficulty, style, challengePressure = 0, inc
792
792
  (targetPiece ? 120 : difficulty === 'hard' ? -60 - 170 * challengePressure : -30) *
793
793
  style.power;
794
794
  }
795
- if (nightmareMode === 'magnus' && move.kind === 'power') {
796
- score += scoreMagnusPowerPatience(state, move, targetPiece, style);
795
+ if (nightmareMode === 'mandrill' && move.kind === 'power') {
796
+ score += scoreMandrillPowerPatience(state, move, targetPiece, style);
797
797
  }
798
798
  if (move.animal === 'lion')
799
799
  score += nightmareMode === 'pride' ? 260 * style.power : -20 * style.power;
@@ -937,7 +937,7 @@ function tuneBotStyle(style, difficulty, challengePressure, nightmareMode = 'non
937
937
  randomness: Math.min(style.randomness, 16),
938
938
  };
939
939
  }
940
- if (nightmareMode === 'magnus') {
940
+ if (nightmareMode === 'mandrill') {
941
941
  style = {
942
942
  ...style,
943
943
  advancement: style.advancement * 1.04,
@@ -1005,7 +1005,7 @@ function chooseNightmareCapture(scored, nightmareMode) {
1005
1005
  return undefined;
1006
1006
  return best.score - capture.score <= 1800 ? capture.move : undefined;
1007
1007
  }
1008
- function scoreMagnusPowerPatience(state, move, targetPiece, style) {
1008
+ function scoreMandrillPowerPatience(state, move, targetPiece, style) {
1009
1009
  const color = state.currentTurn;
1010
1010
  const fromAdvancement = color === 'white' ? state.boardSize - 1 - move.from.row : move.from.row;
1011
1011
  const toAdvancement = color === 'white' ? state.boardSize - 1 - move.to.row : move.to.row;
@@ -1183,4 +1183,4 @@ function otherColor(color) {
1183
1183
  function createLocalId() {
1184
1184
  return `local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
1185
1185
  }
1186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvY2hlc3NpbWFscy1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JBLE1BQU0sT0FBTyxHQUEyQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlFLE1BQU0sZ0NBQWdDLEdBQUcsMkNBQTJDLENBQUM7QUFzQnJGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUEyQjtJQUM3RDtRQUNFLEVBQUUsRUFBRSxVQUFVO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsZUFBZTtRQUM3RCxRQUFRLEVBQUUsdUJBQXVCO1FBQ2pDLGNBQWMsRUFBRSwyQkFBMkI7S0FDNUM7SUFDRDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsV0FBVztRQUN6RCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLGNBQWMsRUFBRSx1QkFBdUI7S0FDeEM7SUFDRDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsV0FBVztRQUN6RCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLGNBQWMsRUFBRSx1QkFBdUI7S0FDeEM7SUFDRDtRQUNFLEVBQUUsRUFBRSxRQUFRO1FBQ1osVUFBVSxFQUFFLFFBQVE7UUFDcEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsYUFBYTtRQUMzRCxRQUFRLEVBQUUscUJBQXFCO1FBQy9CLGNB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LEVBQUUsSUFBSTtRQUNqQixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxHQUFHO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxRQUFRLEVBQUU7UUFDUixXQUFXLEVBQUUsSUFBSTtRQUNqQixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsQ0FBQztRQUNULE1BQU0sRUFBRSxDQUFDO1FBQ1QsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsSUFBSTtRQUNqQixPQUFPLEVBQUUsR0FBRztRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLENBQUM7UUFDUixVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxRQUFRLEVBQUU7UUFDUixXQUFXLEVBQUUsR0FBRztRQUNoQixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxNQUFNLEVBQUU7UUFDTixXQUFXLEVBQUUsQ0FBQztRQUNkLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsR0FBRztRQUNWLFVBQVUsRUFBRSxDQUFDO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxHQUFHO1FBQ2hCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLEdBQUc7UUFDWCxRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLEdBQUc7UUFDWCxRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELEtBQUssRUFBRTtRQUNMLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELFNBQVMsRUFBRTtRQUNULFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLEdBQUc7UUFDWCxLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxJQUFJ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UUFBNEI7SUFDakYsT0FBTyxDQUNMLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxJQUFJLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUMvRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBcUI7SUFDaEUsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUE0QjtJQUM5QyxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLGFBQWE7SUFDcEIsT0FBTyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNHYW1lTW9kZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0dXMsXG4gIENoZXNzaW1hbHNNb3ZlLFxuICBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsXG4gIENoZXNzaW1hbHNPbmxpbmVTdGF0ZSxcbiAgQ2hlc3NpbWFsc1BpZWNlLFxuICBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIENoZXNzaW1hbHNQb3NpdGlvbixcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEFOSU1BTFM6IENoZXNzaW1hbHNBbmltYWxUeXBlW10gPSBbJ2VhZ2xlJywgJ2J1bGwnLCAna2FuZ2Fyb28nLCAnbGlvbiddO1xuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0UgPSAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvY2hhbGxlbmdlLWF2YXRhcnMnO1xuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0JvdFN0eWxlIHtcbiAgYWR2YW5jZW1lbnQ6IG51bWJlcjtcbiAgY2FwdHVyZTogbnVtYmVyO1xuICBzYWZldHk6IG51bWJlcjtcbiAgcG93ZXI6IG51bWJlcjtcbiAgY2VudGVyOiBudW1iZXI7XG4gIHVubG9jazogbnVtYmVyO1xuICByZXBseTogbnVtYmVyO1xuICByYW5kb21uZXNzOiBudW1iZXI7XG4gIHNwcmVhZDogbnVtYmVyO1xuICBtb2JpbGl0eTogbnVtYmVyO1xuICB0cmFwOiBudW1iZXI7XG4gIGVuZGdhbWU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNCb3RPcHRpb25zIHtcbiAgY2hhbGxlbmdlUm91bmQ/OiBudW1iZXI7XG4gIG5pZ2h0bWFyZU1vZGU/OiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IENIRVNTSU1BTFNfQk9UX1BST0ZJTEVTOiBDaGVzc2ltYWxzQm90UHJvZmlsZVtdID0gW1xuICB7XG4gICAgaWQ6ICdleHBsb3JlcicsXG4gICAgZGlmZmljdWx0eTogJ2Vhc3knLFxuICAgIGF2YXRhcjogJ/Cfp60nLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L2V4cGxvcmVyLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90RXhwbG9yZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEV4cGxvcmVyQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2J1bGwnLFxuICAgIGRpZmZpY3VsdHk6ICdlYXN5JyxcbiAgICBhdmF0YXI6ICfwn5CCJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9idWxsLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90QnVsbCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90QnVsbEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdoYXJlJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+QhycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vaGFyZS5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdEhhcmUnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEhhcmVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn46vJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9odW50ZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RIdW50ZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEh1bnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdndWFyZGlhbicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+boe+4jycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vZ3VhcmRpYW4ucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RHdWFyZGlhbicsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90R3VhcmRpYW5Cb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnanVtcGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn6aYJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9qdW1wZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RKdW1wZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEp1bXBlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzdHJhdGVnaXN0JyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn4pmf77iPJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9zdHJhdGVnaXN0LnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfpoEnLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L3ByZWRhdG9yLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90UHJlZGF0b3InLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdFByZWRhdG9yQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2NoZWV0YWgnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5CGJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9jaGVldGFoLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90Q2hlZXRhaCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90Q2hlZXRhaEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW50aW5lbCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/Cfj7AnLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L3NlbnRpbmVsLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U2VudGluZWwnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdFNlbnRpbmVsQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ29yYWNsZScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CflK4nLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L29yYWNsZS5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdE9yYWNsZScsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90T3JhY2xlQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2FtYnVzaGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn8J+qpCcsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vYW1idXNoZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RBbWJ1c2hlcicsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90QW1idXNoZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAndHVydGxlJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn8J+QoicsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vdHVydGxlLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90VHVydGxlJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RUdXJ0bGVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc3Rvcm0nLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn4yp77iPJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9zdG9ybS5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFN0b3JtJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTdG9ybUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdtYXRyaWFyY2gnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5GRJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9tYXRyaWFyY2gucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RNYXRyaWFyY2gnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE1hdHJpYXJjaEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdhbmFjb25kYScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfkI0nLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L2FuYWNvbmRhLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90QW5hY29uZGEnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEFuYWNvbmRhQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ21hZ251cycsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ+KZnycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vbmlnaHRtYXJlLW1hZ251cy5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdE1hZ251cycsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90TWFnbnVzQm9keScsXG4gIH0sXG5dO1xuXG5jb25zdCBCT1RfU1RZTEVTOiBSZWNvcmQ8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCwgQ2hlc3NpbWFsc0JvdFN0eWxlPiA9IHtcbiAgZXhwbG9yZXI6IHtcbiAgICBhZHZhbmNlbWVudDogMS4wNSxcbiAgICBjYXB0dXJlOiAwLjgyLFxuICAgIHNhZmV0eTogMC42MixcbiAgICBwb3dlcjogMC44LFxuICAgIGNlbnRlcjogMS4xNSxcbiAgICB1bmxvY2s6IDEuMDUsXG4gICAgcmVwbHk6IDAuNyxcbiAgICByYW5kb21uZXNzOiAyNjAsXG4gICAgc3ByZWFkOiAwLjY4LFxuICAgIG1vYmlsaXR5OiAwLjc1LFxuICAgIHRyYXA6IDAuNSxcbiAgICBlbmRnYW1lOiAwLjU1LFxuICB9LFxuICBidWxsOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDAuOSxcbiAgICBjYXB0dXJlOiAxLjQ1LFxuICAgIHNhZmV0eTogMC40OCxcbiAgICBwb3dlcjogMS4xNSxcbiAgICBjZW50ZXI6IDAuOCxcbiAgICB1bmxvY2s6IDAuOSxcbiAgICByZXBseTogMC41NSxcbiAgICByYW5kb21uZXNzOiAyOTAsXG4gICAgc3ByZWFkOiAwLjYyLFxuICAgIG1vYmlsaXR5OiAwLjg1LFxuICAgIHRyYXA6IDAuNjIsXG4gICAgZW5kZ2FtZTogMC41LFxuICB9LFxuICBoYXJlOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDEuNTUsXG4gICAgY2FwdHVyZTogMC43OCxcbiAgICBzYWZldHk6IDAuNSxcbiAgICBwb3dlcjogMC45NSxcbiAgICBjZW50ZXI6IDAuNyxcbiAgICB1bmxvY2s6IDEuMSxcbiAgICByZXBseTogMC41NSxcbiAgICByYW5kb21uZXNzOiAyNTAsXG4gICAgc3ByZWFkOiAwLjYsXG4gICAgbW9iaWxpdHk6IDAuNzIsXG4gICAgdHJhcDogMC40NSxcbiAgICBlbmRnYW1lOiAxLjEsXG4gIH0sXG4gIGh1bnRlcjoge1xuICAgIGFkdmFuY2VtZW50OiAwLjk1LFxuICAgIGNhcHR1cmU6IDEuNDUsXG4gICAgc2FmZXR5OiAwLjksXG4gICAgcG93ZXI6IDEuMDUsXG4gICAgY2VudGVyOiAwLjk1LFxuICAgIHVubG9jazogMC45NSxcbiAgICByZXBseTogMSxcbiAgICByYW5kb21uZXNzOiA5MCxcbiAgICBzcHJlYWQ6IDAuMyxcbiAgICBtb2JpbGl0eTogMC45NSxcbiAgICB0cmFwOiAwLjgyLFxuICAgIGVuZGdhbWU6IDAuNzYsXG4gIH0sXG4gIGd1YXJkaWFuOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDAuODgsXG4gICAgY2FwdHVyZTogMSxcbiAgICBzYWZldHk6IDEuNDUsXG4gICAgcG93ZXI6IDAuODUsXG4gICAgY2VudGVyOiAxLjA1LFxuICAgIHVubG9jazogMSxcbiAgICByZXBseTogMS4xNSxcbiAgICByYW5kb21uZXNzOiA3MCxcbiAgICBzcHJlYWQ6IDAuMjYsXG4gICAgbW9iaWxpdHk6IDAuODIsXG4gICAgdHJhcDogMC43MixcbiAgICBlbmRnYW1lOiAwLjcyLFxuICB9LFxuICBqdW1wZXI6IHtcbiAgICBhZHZhbmNlbWVudDogMS4xMixcbiAgICBjYXB0dXJlOiAxLFxuICAgIHNhZmV0eTogMC45MixcbiAgICBwb3dlcjogMS40MixcbiAgICBjZW50ZXI6IDEuMTgsXG4gICAgdW5sb2NrOiAxLjA4LFxuICAgIHJlcGx5OiAwLjk1LFxuICAgIHJhbmRvbW5lc3M6IDk1LFxuICAgIHNwcmVhZDogMC4zMixcbiAgICBtb2JpbGl0eTogMS4xNSxcbiAgICB0cmFwOiAwLjksXG4gICAgZW5kZ2FtZTogMC44MixcbiAgfSxcbiAgc3RyYXRlZ2lzdDoge1xuICAgIGFkdmFuY2VtZW50OiAxLjA1LFxuICAgIGNhcHR1cmU6IDEuMDgsXG4gICAgc2FmZXR5OiAxLjIyLFxuICAgIHBvd2VyOiAxLjA4LFxuICAgIGNlbnRlcjogMS4xNixcbiAgICB1bmxvY2s6IDEuMSxcbiAgICByZXBseTogMS4yNSxcbiAgICByYW5kb21uZXNzOiAyMixcbiAgICBzcHJlYWQ6IDAuMTQsXG4gICAgbW9iaWxpdHk6IDEuMDgsXG4gICAgdHJhcDogMS4wNixcbiAgICBlbmRnYW1lOiAxLFxuICB9LFxuICBwcmVkYXRvcjoge1xuICAgIGFkdmFuY2VtZW50OiAwLjk4LFxuICAgIGNhcHR1cmU6IDEuNjgsXG4gICAgc2FmZXR5OiAxLjAyLFxuICAgIHBvd2VyOiAxLjM0LFxuICAgIGNlbnRlcjogMSxcbiAgICB1bmxvY2s6IDEsXG4gICAgcmVwbHk6IDEuMTIsXG4gICAgcmFuZG9tbmVzczogMjgsXG4gICAgc3ByZWFkOiAwLjE2LFxuICAgIG1vYmlsaXR5OiAxLjAyLFxuICAgIHRyYXA6IDEuMTgsXG4gICAgZW5kZ2FtZTogMC44MixcbiAgfSxcbiAgY2hlZXRhaDoge1xuICAgIGFkdmFuY2VtZW50OiAxLjcyLFxuICAgIGNhcHR1cmU6IDAuOSxcbiAgICBzYWZldHk6IDAuOTUsXG4gICAgcG93ZXI6IDEuMDgsXG4gICAgY2VudGVyOiAwLjg2LFxuICAgIHVubG9jazogMS4xOCxcbiAgICByZXBseTogMSxcbiAgICByYW5kb21uZXNzOiAyNixcbiAgICBzcHJlYWQ6IDAuMTUsXG4gICAgbW9iaWxpdHk6IDAuOTUsXG4gICAgdHJhcDogMC43OCxcbiAgICBlbmRnYW1lOiAxLjQyLFxuICB9LFxuICBzZW50aW5lbDoge1xuICAgIGFkdmFuY2VtZW50OiAwLjksXG4gICAgY2FwdHVyZTogMS4xMixcbiAgICBzYWZldHk6IDEuNzIsXG4gICAgcG93ZXI6IDAuOTUsXG4gICAgY2VudGVyOiAxLjI4LFxuICAgIHVubG9jazogMS4wNSxcbiAgICByZXBseTogMS4zOCxcbiAgICByYW5kb21uZXNzOiAxOCxcbiAgICBzcHJlYWQ6IDAuMTIsXG4gICAgbW9iaWxpdHk6IDAuODYsXG4gICAgdHJhcDogMS4wNCxcbiAgICBlbmRnYW1lOiAwLjg0LFxuICB9LFxuICBvcmFjbGU6IHtcbiAgICBhZHZhbmNlbWVudDogMSxcbiAgICBjYXB0dXJlOiAxLjEyLFxuICAgIHNhZmV0eTogMS40MixcbiAgICBwb3dlcjogMS4xLFxuICAgIGNlbnRlcjogMS4xOCxcbiAgICB1bmxvY2s6IDEuMDgsXG4gICAgcmVwbHk6IDEuOCxcbiAgICByYW5kb21uZXNzOiA4LFxuICAgIHNwcmVhZDogMC4wOCxcbiAgICBtb2JpbGl0eTogMS4wNixcbiAgICB0cmFwOiAxLjIyLFxuICAgIGVuZGdhbWU6IDEuMDgsXG4gIH0sXG4gIGFtYnVzaGVyOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDAuOSxcbiAgICBjYXB0dXJlOiAxLjQ4LFxuICAgIHNhZmV0eTogMS4wOCxcbiAgICBwb3dlcjogMS40NixcbiAgICBjZW50ZXI6IDEuMDUsXG4gICAgdW5sb2NrOiAxLjAyLFxuICAgIHJlcGx5OiAxLjMyLFxuICAgIHJhbmRvbW5lc3M6IDE0LFxuICAgIHNwcmVhZDogMC4xLFxuICAgIG1vYmlsaXR5OiAxLjEyLFxuICAgIHRyYXA6IDEuNzIsXG4gICAgZW5kZ2FtZTogMC45MixcbiAgfSxcbiAgdHVydGxlOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDAuODgsXG4gICAgY2FwdHVyZTogMS4wNCxcbiAgICBzYWZldHk6IDEuNTUsXG4gICAgcG93ZXI6IDEuMDIsXG4gICAgY2VudGVyOiAxLjQ4LFxuICAgIHVubG9jazogMS4xMixcbiAgICByZXBseTogMS41MixcbiAgICByYW5kb21uZXNzOiAxMixcbiAgICBzcHJlYWQ6IDAuMSxcbiAgICBtb2JpbGl0eTogMS41OCxcbiAgICB0cmFwOiAxLjI0LFxuICAgIGVuZGdhbWU6IDAuODYsXG4gIH0sXG4gIHN0b3JtOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDEuMTgsXG4gICAgY2FwdHVyZTogMS4zOCxcbiAgICBzYWZldHk6IDAuOTgsXG4gICAgcG93ZXI6IDEuNjIsXG4gICAgY2VudGVyOiAxLjA4LFxuICAgIHVubG9jazogMS4xOCxcbiAgICByZXBseTogMS4yMixcbiAgICByYW5kb21uZXNzOiAxOCxcbiAgICBzcHJlYWQ6IDAuMTMsXG4gICAgbW9iaWxpdHk6IDEuMzYsXG4gICAgdHJhcDogMS4yOCxcbiAgICBlbmRnYW1lOiAxLjAyLFxuICB9LFxuICBtYXRyaWFyY2g6IHtcbiAgICBhZHZhbmNlbWVudDogMC45NixcbiAgICBjYXB0dXJlOiAxLjE4LFxuICAgIHNhZmV0eTogMS42NCxcbiAgICBwb3dlcjogMS4xOCxcbiAgICBjZW50ZXI6IDEuMjIsXG4gICAgdW5sb2NrOiAxLjA4LFxuICAgIHJlcGx5OiAxLjY2LFxuICAgIHJhbmRvbW5lc3M6IDEwLFxuICAgIHNwcmVhZDogMC4wOCxcbiAgICBtb2JpbGl0eTogMS4wMixcbiAgICB0cmFwOiAxLjM2LFxuICAgIGVuZGdhbWU6IDEsXG4gIH0sXG4gIGFuYWNvbmRhOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDEuNDYsXG4gICAgY2FwdHVyZTogMSxcbiAgICBzYWZldHk6IDEuMjgsXG4gICAgcG93ZXI6IDEuMDQsXG4gICAgY2VudGVyOiAwLjk0LFxuICAgIHVubG9jazogMS4wOCxcbiAgICByZXBseTogMS40NCxcbiAgICByYW5kb21uZXNzOiAxMCxcbiAgICBzcHJlYWQ6IDAuMDksXG4gICAgbW9iaWxpdHk6IDAuOTgsXG4gICAgdHJhcDogMS4wMixcbiAgICBlbmRnYW1lOiAxLjg2LFxuICB9LFxuICBtYWdudXM6IHtcbiAgICBhZHZhbmNlbWVudDogMS4wNCxcbiAgICBjYXB0dXJlOiAxLjIyLFxuICAgIHNhZmV0eTogMS45LFxuICAgIHBvd2VyOiAwLjksXG4gICAgY2VudGVyOiAxLjQyLFxuICAgIHVubG9jazogMS4wOCxcbiAgICByZXBseTogMi4wOCxcbiAgICByYW5kb21uZXNzOiAzLFxuICAgIHNwcmVhZDogMC4wNCxcbiAgICBtb2JpbGl0eTogMS4wOCxcbiAgICB0cmFwOiAxLjQyLFxuICAgIGVuZGdhbWU6IDEuODYsXG4gIH0sXG59O1xuXG5jb25zdCBERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFk6IFJlY29yZDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eSwgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZD4gPSB7XG4gIGVhc3k6ICdleHBsb3JlcicsXG4gIG5vcm1hbDogJ2h1bnRlcicsXG4gIGhhcmQ6ICdzdHJhdGVnaXN0JyxcbiAgbWFzdGVyOiAnbWFnbnVzJyxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2hlc3NpbWFsc0dhbWVPcHRpb25zIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG1vZGU/OiBDaGVzc2ltYWxzR2FtZU1vZGU7XG4gIHN0YXR1cz86IENoZXNzaW1hbHNHYW1lU3RhdHVzO1xuICBvbmxpbmU/OiBDaGVzc2ltYWxzT25saW5lU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGVzc2ltYWxzR2FtZShcbiAgYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplID0gNixcbiAgb3B0aW9uczogQ3JlYXRlQ2hlc3NpbWFsc0dhbWVPcHRpb25zID0ge31cbik6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICBjb25zdCBwaWVjZXM6IENoZXNzaW1hbHNQaWVjZVtdID0gW107XG4gIGNvbnN0IHdoaXRlUm93ID0gYm9hcmRTaXplIC0gMjtcbiAgY29uc3QgYmxhY2tSb3cgPSAxO1xuXG4gIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IGJvYXJkU2l6ZTsgY29sICs9IDEpIHtcbiAgICBwaWVjZXMucHVzaCh7XG4gICAgICBpZDogYFcke2NvbCArIDF9YCxcbiAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgcG9zaXRpb246IHsgcm93OiB3aGl0ZVJvdywgY29sIH0sXG4gICAgICBjYXB0dXJlZDogZmFsc2UsXG4gICAgfSk7XG4gICAgcGllY2VzLnB1c2goe1xuICAgICAgaWQ6IGBCJHtjb2wgKyAxfWAsXG4gICAgICBjb2xvcjogJ2JsYWNrJyxcbiAgICAgIHBvc2l0aW9uOiB7IHJvdzogYmxhY2tSb3csIGNvbCB9LFxuICAgICAgY2FwdHVyZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgc3RhdGUgPSByZWZyZXNoQ2hlc3NpbWFsc1Bvd2VyVW5sb2Nrcyh7XG4gICAgaWQ6IG9wdGlvbnMuaWQgPz8gY3JlYXRlTG9jYWxJZCgpLFxuICAgIG1vZGU6IG9wdGlvbnMubW9kZSA/PyAnbG9jYWwnLFxuICAgIGJvYXJkU2l6ZSxcbiAgICBzdGF0dXM6IG9wdGlvbnMuc3RhdHVzID8/ICdpbl9wcm9ncmVzcycsXG4gICAgY3VycmVudFR1cm46ICd3aGl0ZScsXG4gICAgcGllY2VzLFxuICAgIHBsYXllcnM6IHtcbiAgICAgIHdoaXRlOiB7IGNvbG9yOiAnd2hpdGUnLCBwb3dlclVubG9ja2VkOiBmYWxzZSwgY2FyZHM6IGNyZWF0ZUNhcmRzKCkgfSxcbiAgICAgIGJsYWNrOiB7IGNvbG9yOiAnYmxhY2snLCBwb3dlclVubG9ja2VkOiBmYWxzZSwgY2FyZHM6IGNyZWF0ZUNhcmRzKCkgfSxcbiAgICB9LFxuICAgIG1vdmVDb3VudDogMCxcbiAgICBvbmxpbmU6IG9wdGlvbnMub25saW5lLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1vdmVIaXN0b3J5OiBbY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShzdGF0ZSldLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uXG4pOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKFxuICAgIHBpZWNlID0+XG4gICAgICAhcGllY2UuY2FwdHVyZWQgJiYgcGllY2UucG9zaXRpb24ucm93ID09PSBwb3NpdGlvbi5yb3cgJiYgcGllY2UucG9zaXRpb24uY29sID09PSBwb3NpdGlvbi5jb2xcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgcGllY2VJZDogc3RyaW5nLFxuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZVxuKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGlmIChzdGF0ZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBbXTtcblxuICBjb25zdCBwaWVjZSA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHBpZWNlSWQgJiYgIWl0ZW0uY2FwdHVyZWQpO1xuICBpZiAoIXBpZWNlIHx8IHBpZWNlLmNvbG9yICE9PSBzdGF0ZS5jdXJyZW50VHVybikgcmV0dXJuIFtdO1xuXG4gIGlmIChhbmltYWwpIHtcbiAgICBjb25zdCBwbGF5ZXIgPSBzdGF0ZS5wbGF5ZXJzW3BpZWNlLmNvbG9yXTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8ICFoYXNQb3dlckNhcmRVc2UocGxheWVyLmNhcmRzW2FuaW1hbF0pKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGdldFBvd2VyTW92ZXMoc3RhdGUsIHBpZWNlLCBhbmltYWwpO1xuICB9XG5cbiAgcmV0dXJuIGdldEJhc2ljTW92ZXMoc3RhdGUsIHBpZWNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciA9IHN0YXRlLmN1cnJlbnRUdXJuXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgaWYgKHN0YXRlLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHR1cm5TdGF0ZSA9IGNvbG9yID09PSBzdGF0ZS5jdXJyZW50VHVybiA/IHN0YXRlIDogeyAuLi5zdGF0ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gIGNvbnN0IHBsYXllciA9IHR1cm5TdGF0ZS5wbGF5ZXJzW2NvbG9yXTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHBpZWNlIG9mIGFjdGl2ZVBpZWNlcyh0dXJuU3RhdGUpKSB7XG4gICAgaWYgKHBpZWNlLmNhcHR1cmVkIHx8IHBpZWNlLmNvbG9yICE9PSBjb2xvcikgY29udGludWU7XG5cbiAgICBtb3Zlcy5wdXNoKC4uLmdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQpKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkKSBjb250aW51ZTtcblxuICAgIGZvciAoY29uc3QgYW5pbWFsIG9mIEFOSU1BTFMpIHtcbiAgICAgIGlmICghaGFzUG93ZXJDYXJkVXNlKHBsYXllci5jYXJkc1thbmltYWxdKSkgY29udGludWU7XG4gICAgICBtb3Zlcy5wdXNoKC4uLmdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQsIGFuaW1hbCkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtb3Zlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNob29zZUNoZXNzaW1hbHNCb3RNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkgPSAnbm9ybWFsJyxcbiAgcHJvZmlsZUlkOiBDaGVzc2ltYWxzQm90UHJvZmlsZUlkID0gREVGQVVMVF9CT1RfUFJPRklMRV9CWV9ESUZGSUNVTFRZW2RpZmZpY3VsdHldLFxuICBvcHRpb25zOiBDaGVzc2ltYWxzQm90T3B0aW9ucyA9IHt9XG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1vdmVzID0gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoc3RhdGUpO1xuICBpZiAobW92ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBiYXNlU3R5bGUgPVxuICAgIEJPVF9TVFlMRVNbcHJvZmlsZUlkXSA/PyBCT1RfU1RZTEVTW0RFRkFVTFRfQk9UX1BST0ZJTEVfQllfRElGRklDVUxUWVtkaWZmaWN1bHR5XV07XG4gIGNvbnN0IGNoYWxsZW5nZVByZXNzdXJlID0gZ2V0Q2hhbGxlbmdlUHJlc3N1cmUob3B0aW9ucy5jaGFsbGVuZ2VSb3VuZCk7XG4gIGNvbnN0IHN0eWxlID0gdHVuZUJvdFN0eWxlKGJhc2VTdHlsZSwgZGlmZmljdWx0eSwgY2hhbGxlbmdlUHJlc3N1cmUsIG9wdGlvbnMubmlnaHRtYXJlTW9kZSk7XG5cbiAgY29uc3QgcXVpY2tTY29yZWQgPSBtb3Zlc1xuICAgIC5tYXAobW92ZSA9PiAoe1xuICAgICAgbW92ZSxcbiAgICAgIHNjb3JlOiBzY29yZUJvdE1vdmUoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBtb3ZlLFxuICAgICAgICBkaWZmaWN1bHR5LFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgY2hhbGxlbmdlUHJlc3N1cmUsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBvcHRpb25zLm5pZ2h0bWFyZU1vZGVcbiAgICAgICksXG4gICAgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlKTtcbiAgY29uc3QgbG9va2FoZWFkTGltaXQgPVxuICAgIG9wdGlvbnMubmlnaHRtYXJlTW9kZSA9PT0gJ21hZ251cycgfHwgZGlmZmljdWx0eSA9PT0gJ21hc3RlcidcbiAgICAgID8gNDhcbiAgICAgIDogZGlmZmljdWx0eSA9PT0gJ2hhcmQnXG4gICAgICAgID8gMzJcbiAgICAgICAgOiBkaWZmaWN1bHR5ID09PSAnbm9ybWFsJ1xuICAgICAgICAgID8gMjRcbiAgICAgICAgICA6IDA7XG4gIGNvbnN0IHNjb3JlZCA9IHF1aWNrU2NvcmVkXG4gICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICBtb3ZlOiBpdGVtLm1vdmUsXG4gICAgICBzY29yZTpcbiAgICAgICAgaW5kZXggPCBsb29rYWhlYWRMaW1pdFxuICAgICAgICAgID8gc2NvcmVCb3RNb3ZlV2l0aExvb2thaGVhZChcbiAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgIGl0ZW0ubW92ZSxcbiAgICAgICAgICAgICAgZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgICAgIGNoYWxsZW5nZVByZXNzdXJlLFxuICAgICAgICAgICAgICBvcHRpb25zLm5pZ2h0bWFyZU1vZGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGl0ZW0uc2NvcmUsXG4gICAgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlKTtcblxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSB7XG4gICAgY29uc3QgcGxheWFibGUgPSBzY29yZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zY29yZSA+IC0zMDAwKTtcbiAgICByZXR1cm4gcGlja05vaXN5Qm90TW92ZShwbGF5YWJsZS5sZW5ndGggPyBwbGF5YWJsZSA6IHNjb3JlZCwgMC41NSk7XG4gIH1cblxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcpIHtcbiAgICByZXR1cm4gc2NvcmVkWzBdPy5tb3ZlO1xuICB9XG5cbiAgY29uc3Qgd2lubmluZ01vdmUgPSBzY29yZWQuZmluZChpdGVtID0+IGl0ZW0uc2NvcmUgPj0gMTAwMDApO1xuICBpZiAod2lubmluZ01vdmUpIHJldHVybiB3aW5uaW5nTW92ZS5tb3ZlO1xuXG4gIGNvbnN0IG9wcG9uZW50V2lubmluZ1RhcmdldHMgPSBuZXcgU2V0KFxuICAgIGdldEltbWVkaWF0ZVdpbm5pbmdNb3ZlcyhzdGF0ZSwgb3RoZXJDb2xvcihzdGF0ZS5jdXJyZW50VHVybikpLm1hcChtb3ZlID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKVxuICApO1xuICBpZiAob3Bwb25lbnRXaW5uaW5nVGFyZ2V0cy5zaXplID4gMCkge1xuICAgIGNvbnN0IGJsb2NraW5nTW92ZSA9IHNjb3JlZC5maW5kKFxuICAgICAgaXRlbSA9PiBpdGVtLm1vdmUuY2FwdHVyZXNQaWVjZUlkIHx8IG9wcG9uZW50V2lubmluZ1RhcmdldHMuaGFzKHBvc2l0aW9uS2V5KGl0ZW0ubW92ZS50bykpXG4gICAgKTtcbiAgICBpZiAoYmxvY2tpbmdNb3ZlKSByZXR1cm4gYmxvY2tpbmdNb3ZlLm1vdmU7XG4gIH1cblxuICBjb25zdCBjaGFsbGVuZ2VDYXB0dXJlID0gY2hvb3NlQ2hhbGxlbmdlQmFzaWNDYXB0dXJlKHNjb3JlZCwgY2hhbGxlbmdlUHJlc3N1cmUpO1xuICBpZiAoY2hhbGxlbmdlQ2FwdHVyZSkgcmV0dXJuIGNoYWxsZW5nZUNhcHR1cmU7XG5cbiAgY29uc3QgbmlnaHRtYXJlQ2FwdHVyZSA9IGNob29zZU5pZ2h0bWFyZUNhcHR1cmUoc2NvcmVkLCBvcHRpb25zLm5pZ2h0bWFyZU1vZGUpO1xuICBpZiAobmlnaHRtYXJlQ2FwdHVyZSkgcmV0dXJuIG5pZ2h0bWFyZUNhcHR1cmU7XG5cbiAgY29uc3QgY29uc2VydmF0aXZlQ2FwdHVyZSA9IGNob29zZUNvbnNlcnZhdGl2ZUhhcmRDYXB0dXJlKHN0YXRlLCBzY29yZWQpO1xuICBpZiAoY29uc2VydmF0aXZlQ2FwdHVyZSkgcmV0dXJuIGNvbnNlcnZhdGl2ZUNhcHR1cmU7XG5cbiAgcmV0dXJuIHNjb3JlZFswXT8ubW92ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q2hlc3NpbWFsc01vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjYW5kaWRhdGU6IENoZXNzaW1hbHNNb3ZlXG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgbGVnYWxNb3ZlID0gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXMoc3RhdGUsIGNhbmRpZGF0ZS5waWVjZUlkLCBjYW5kaWRhdGUuYW5pbWFsKS5maW5kKFxuICAgIG1vdmUgPT4gc2FtZVBvc2l0aW9uKG1vdmUuZnJvbSwgY2FuZGlkYXRlLmZyb20pICYmIHNhbWVQb3NpdGlvbihtb3ZlLnRvLCBjYW5kaWRhdGUudG8pXG4gICk7XG5cbiAgaWYgKCFsZWdhbE1vdmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NIRVNTSU1BTFNfSUxMRUdBTF9NT1ZFJyk7XG4gIH1cblxuICBjb25zdCBtb3ZlZFBpZWNlID0gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKHBpZWNlID0+IHBpZWNlLmlkID09PSBsZWdhbE1vdmUucGllY2VJZCk7XG4gIGlmICghbW92ZWRQaWVjZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ0hFU1NJTUFMU19QSUVDRV9OT1RfRk9VTkQnKTtcbiAgfVxuXG4gIGNvbnN0IHBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkubWFwKHBpZWNlID0+IHtcbiAgICBpZiAocGllY2UuaWQgPT09IGxlZ2FsTW92ZS5waWVjZUlkKSB7XG4gICAgICByZXR1cm4geyAuLi5waWVjZSwgcG9zaXRpb246IHsgLi4ubGVnYWxNb3ZlLnRvIH0gfTtcbiAgICB9XG4gICAgaWYgKHBpZWNlLmlkID09PSBsZWdhbE1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICByZXR1cm4geyAuLi5waWVjZSwgY2FwdHVyZWQ6IHRydWUgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBpZWNlO1xuICB9KTtcblxuICBjb25zdCBwbGF5ZXJzID0ge1xuICAgIC4uLnN0YXRlLnBsYXllcnMsXG4gICAgW21vdmVkUGllY2UuY29sb3JdOiB7XG4gICAgICAuLi5zdGF0ZS5wbGF5ZXJzW21vdmVkUGllY2UuY29sb3JdLFxuICAgICAgY2FyZHM6XG4gICAgICAgIGxlZ2FsTW92ZS5raW5kID09PSAncG93ZXInICYmIGxlZ2FsTW92ZS5hbmltYWxcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUucGxheWVyc1ttb3ZlZFBpZWNlLmNvbG9yXS5jYXJkcyxcbiAgICAgICAgICAgICAgW2xlZ2FsTW92ZS5hbmltYWxdOiBjb25zdW1lUG93ZXJDYXJkVXNlKFxuICAgICAgICAgICAgICAgIHN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHNbbGVnYWxNb3ZlLmFuaW1hbF1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHMsXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSByZWZyZXNoQ2hlc3NpbWFsc1Bvd2VyVW5sb2Nrcyh7XG4gICAgLi4uc3RhdGUsXG4gICAgcGllY2VzLFxuICAgIHBsYXllcnMsXG4gICAgY3VycmVudFR1cm46IG90aGVyQ29sb3IobW92ZWRQaWVjZS5jb2xvciksXG4gICAgbW92ZUNvdW50OiBzdGF0ZS5tb3ZlQ291bnQgKyAxLFxuICAgIGxhc3RNb3ZlOiBsZWdhbE1vdmUsXG4gIH0pO1xuXG4gIGNvbnN0IHByb21vdGVkID0gaXNQcm9tb3Rpb25Sb3cobmV4dFN0YXRlLmJvYXJkU2l6ZSwgbW92ZWRQaWVjZS5jb2xvciwgbGVnYWxNb3ZlLnRvKTtcbiAgY29uc3QgZW5lbXlQaWVjZXMgPSBhY3RpdmVQaWVjZXMobmV4dFN0YXRlKS5maWx0ZXIoXG4gICAgcGllY2UgPT4gcGllY2UuY29sb3IgIT09IG1vdmVkUGllY2UuY29sb3IgJiYgIXBpZWNlLmNhcHR1cmVkXG4gICk7XG4gIGNvbnN0IGVuZW15SGFzTGVnYWxNb3ZlcyA9XG4gICAgZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMobmV4dFN0YXRlLCBuZXh0U3RhdGUuY3VycmVudFR1cm4pLmxlbmd0aCA+IDA7XG5cbiAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9XG4gICAgcHJvbW90ZWQgfHwgZW5lbXlQaWVjZXMubGVuZ3RoID09PSAwIHx8ICFlbmVteUhhc0xlZ2FsTW92ZXNcbiAgICAgID8ge1xuICAgICAgICAgIC4uLm5leHRTdGF0ZSxcbiAgICAgICAgICBzdGF0dXM6ICdmaW5pc2hlZCcgYXMgY29uc3QsXG4gICAgICAgICAgd2lubmVyOiBtb3ZlZFBpZWNlLmNvbG9yLFxuICAgICAgICAgIHdpbm5lclJlYXNvbjogcHJvbW90ZWRcbiAgICAgICAgICAgID8gKCdwcm9tb3Rpb24nIGFzIGNvbnN0KVxuICAgICAgICAgICAgOiBlbmVteVBpZWNlcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgPyAoJ2VsaW1pbmF0aW9uJyBhcyBjb25zdClcbiAgICAgICAgICAgICAgOiAoJ2Jsb2NrZWQnIGFzIGNvbnN0KSxcbiAgICAgICAgfVxuICAgICAgOiBuZXh0U3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZXNvbHZlZFN0YXRlLFxuICAgIG1vdmVIaXN0b3J5OiBbLi4uZW5zdXJlTW92ZUhpc3Rvcnkoc3RhdGUpLCBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHJlc29sdmVkU3RhdGUsIGxlZ2FsTW92ZSldLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hlc3NpbWFsc1Jldmlld1N0YXRlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgZW50cnk6IENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5XG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgYmFzZVN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBkZWxldGUgYmFzZVN0YXRlLmxhc3RNb3ZlO1xuICBkZWxldGUgYmFzZVN0YXRlLndpbm5lcjtcbiAgZGVsZXRlIGJhc2VTdGF0ZS53aW5uZXJSZWFzb247XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZVN0YXRlLFxuICAgIHN0YXR1czogZW50cnkuc3RhdHVzLFxuICAgIGN1cnJlbnRUdXJuOiBlbnRyeS5jdXJyZW50VHVybixcbiAgICBwaWVjZXM6IGNsb25lUGllY2VzKGVudHJ5LnBpZWNlcyksXG4gICAgbW92ZUNvdW50OiBlbnRyeS5tb3ZlTnVtYmVyLFxuICAgIC4uLihlbnRyeS53aW5uZXIgPyB7IHdpbm5lcjogZW50cnkud2lubmVyIH0gOiB7fSksXG4gICAgLi4uKGVudHJ5Lndpbm5lclJlYXNvbiA/IHsgd2lubmVyUmVhc29uOiBlbnRyeS53aW5uZXJSZWFzb24gfSA6IHt9KSxcbiAgICAuLi4oZW50cnkubW92ZSA/IHsgbGFzdE1vdmU6IHNhbml0aXplTW92ZShlbnRyeS5tb3ZlKSB9IDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZT86IENoZXNzaW1hbHNNb3ZlXG4pOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgbW92ZU51bWJlcjogc3RhdGUubW92ZUNvdW50LFxuICAgIHBpZWNlczogY2xvbmVQaWVjZXMoc3RhdGUucGllY2VzKSxcbiAgICBjdXJyZW50VHVybjogc3RhdGUuY3VycmVudFR1cm4sXG4gICAgc3RhdHVzOiBzdGF0ZS5zdGF0dXMsXG4gICAgLi4uKG1vdmUgPyB7IG1vdmU6IHNhbml0aXplTW92ZShtb3ZlKSB9IDoge30pLFxuICAgIC4uLihzdGF0ZS53aW5uZXIgPyB7IHdpbm5lcjogc3RhdGUud2lubmVyIH0gOiB7fSksXG4gICAgLi4uKHN0YXRlLndpbm5lclJlYXNvbiA/IHsgd2lubmVyUmVhc29uOiBzdGF0ZS53aW5uZXJSZWFzb24gfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlTW92ZUhpc3Rvcnkoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeVtdIHtcbiAgaWYgKHN0YXRlLm1vdmVIaXN0b3J5Py5sZW5ndGgpIHJldHVybiBzdGF0ZS5tb3ZlSGlzdG9yeS5tYXAoY2xvbmVNb3ZlSGlzdG9yeUVudHJ5KTtcbiAgcmV0dXJuIFtjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHN0YXRlKV07XG59XG5cbmZ1bmN0aW9uIGNsb25lTW92ZUhpc3RvcnlFbnRyeShlbnRyeTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnkpOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgLi4uZW50cnksXG4gICAgcGllY2VzOiBjbG9uZVBpZWNlcyhlbnRyeS5waWVjZXMpLFxuICAgIC4uLihlbnRyeS5tb3ZlID8geyBtb3ZlOiBzYW5pdGl6ZU1vdmUoZW50cnkubW92ZSkgfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xvbmVQaWVjZXMocGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXSk6IENoZXNzaW1hbHNQaWVjZVtdIHtcbiAgcmV0dXJuIHBpZWNlcy5tYXAocGllY2UgPT4gKHtcbiAgICAuLi5waWVjZSxcbiAgICBwb3NpdGlvbjogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICB9KSk7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplTW92ZShtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IENoZXNzaW1hbHNNb3ZlIHtcbiAgcmV0dXJuIHtcbiAgICBwaWVjZUlkOiBtb3ZlLnBpZWNlSWQsXG4gICAgZnJvbTogeyAuLi5tb3ZlLmZyb20gfSxcbiAgICB0bzogeyAuLi5tb3ZlLnRvIH0sXG4gICAga2luZDogbW92ZS5raW5kLFxuICAgIC4uLihtb3ZlLmFuaW1hbCA/IHsgYW5pbWFsOiBtb3ZlLmFuaW1hbCB9IDoge30pLFxuICAgIC4uLihtb3ZlLmNhcHR1cmVzUGllY2VJZCA/IHsgY2FwdHVyZXNQaWVjZUlkOiBtb3ZlLmNhcHR1cmVzUGllY2VJZCB9IDoge30pLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaWduQ2hlc3NpbWFsc0dhbWUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yXG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgcmVzaWduZWRTdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdGF0dXM6ICdmaW5pc2hlZCcsXG4gICAgd2lubmVyOiBvdGhlckNvbG9yKGNvbG9yKSxcbiAgICB3aW5uZXJSZWFzb246ICdyZXNpZ25hdGlvbicsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZXNpZ25lZFN0YXRlLFxuICAgIG1vdmVIaXN0b3J5OiBbLi4uZW5zdXJlTW92ZUhpc3Rvcnkoc3RhdGUpLCBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHJlc2lnbmVkU3RhdGUpXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uS2V5KHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cG9zaXRpb24ucm93fToke3Bvc2l0aW9uLmNvbH1gO1xufVxuXG5mdW5jdGlvbiBoYXNQb3dlckNhcmRVc2UoY2FyZDogeyB1c2VkOiBib29sZWFuOyB1c2VzUmVtYWluaW5nPzogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIChjYXJkLnVzZXNSZW1haW5pbmcgPz8gKGNhcmQudXNlZCA/IDAgOiAxKSkgPiAwO1xufVxuXG5mdW5jdGlvbiBjb25zdW1lUG93ZXJDYXJkVXNlPFQgZXh0ZW5kcyB7IHVzZWQ6IGJvb2xlYW47IHVzZXNSZW1haW5pbmc/OiBudW1iZXIgfT4oY2FyZDogVCk6IFQge1xuICBjb25zdCByZW1haW5pbmcgPSBNYXRoLm1heCgwLCAoY2FyZC51c2VzUmVtYWluaW5nID8/IChjYXJkLnVzZWQgPyAwIDogMSkpIC0gMSk7XG4gIHJldHVybiB7XG4gICAgLi4uY2FyZCxcbiAgICB1c2VkOiByZW1haW5pbmcgPD0gMCxcbiAgICAuLi4oY2FyZC51c2VzUmVtYWluaW5nID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdXNlc1JlbWFpbmluZzogcmVtYWluaW5nIH0pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDYXJkcygpIHtcbiAgcmV0dXJuIEFOSU1BTFMucmVkdWNlKFxuICAgIChjYXJkcywgdHlwZSkgPT4gKHtcbiAgICAgIC4uLmNhcmRzLFxuICAgICAgW3R5cGVdOiB7IHR5cGUsIHVzZWQ6IGZhbHNlIH0sXG4gICAgfSksXG4gICAge30gYXMgUmVjb3JkPFxuICAgICAgQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4gICAgICB7IHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlOyB1c2VkOiBib29sZWFuOyB1c2VzUmVtYWluaW5nPzogbnVtYmVyIH1cbiAgICA+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGFjdGl2ZVBpZWNlcyhzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNQaWVjZVtdIHtcbiAgcmV0dXJuIHN0YXRlLnBpZWNlcy5maWx0ZXIoKHBpZWNlKTogcGllY2UgaXMgQ2hlc3NpbWFsc1BpZWNlID0+ICEhcGllY2UpO1xufVxuXG5mdW5jdGlvbiBnZXRCYXNpY01vdmVzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwaWVjZTogQ2hlc3NpbWFsc1BpZWNlKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IHBpZWNlLmNvbG9yID09PSAnd2hpdGUnID8gLTEgOiAxO1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuICBjb25zdCBmb3J3YXJkID0geyByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGRpcmVjdGlvbiwgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgfTtcblxuICBpZiAoaXNJbnNpZGVCb2FyZChzdGF0ZS5ib2FyZFNpemUsIGZvcndhcmQpICYmICFnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgZm9yd2FyZCkpIHtcbiAgICBtb3Zlcy5wdXNoKHtcbiAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgdG86IGZvcndhcmQsXG4gICAgICBraW5kOiAnYmFzaWMnLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBjb2xPZmZzZXQgb2YgWy0xLCAxXSkge1xuICAgIGNvbnN0IHRhcmdldCA9IHsgcm93OiBwaWVjZS5wb3NpdGlvbi5yb3cgKyBkaXJlY3Rpb24sIGNvbDogcGllY2UucG9zaXRpb24uY29sICsgY29sT2Zmc2V0IH07XG4gICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICBpZiAoXG4gICAgICBpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgdGFyZ2V0KSAmJlxuICAgICAgdGFyZ2V0UGllY2UgJiZcbiAgICAgIHRhcmdldFBpZWNlLmNvbG9yICE9PSBwaWVjZS5jb2xvciAmJlxuICAgICAgIWlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgcGllY2UuY29sb3IsIHRhcmdldClcbiAgICApIHtcbiAgICAgIG1vdmVzLnB1c2goe1xuICAgICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgICB0bzogdGFyZ2V0LFxuICAgICAgICBraW5kOiAnYmFzaWMnLFxuICAgICAgICBjYXB0dXJlc1BpZWNlSWQ6IHRhcmdldFBpZWNlLmlkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3dlck1vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgcGllY2U6IENoZXNzaW1hbHNQaWVjZSxcbiAgYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZVxuKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGlmIChhbmltYWwgPT09ICdrYW5nYXJvbycpIHtcbiAgICByZXR1cm4gZ2V0S2FuZ2Fyb29Nb3ZlcyhzdGF0ZSwgcGllY2UpO1xuICB9XG5cbiAgY29uc3QgZGlyZWN0aW9ucyA9IGdldFBvd2VyRGlyZWN0aW9ucyhhbmltYWwpO1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0aW9uIG9mIGRpcmVjdGlvbnMpIHtcbiAgICBmb3IgKGxldCBkaXN0YW5jZSA9IDE7IGRpc3RhbmNlIDwgc3RhdGUuYm9hcmRTaXplOyBkaXN0YW5jZSArPSAxKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB7XG4gICAgICAgIHJvdzogcGllY2UucG9zaXRpb24ucm93ICsgZGlyZWN0aW9uLnJvdyAqIGRpc3RhbmNlLFxuICAgICAgICBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGRpcmVjdGlvbi5jb2wgKiBkaXN0YW5jZSxcbiAgICAgIH07XG4gICAgICBpZiAoIWlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCB0YXJnZXQpKSBicmVhaztcbiAgICAgIGlmIChpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIHBpZWNlLmNvbG9yLCB0YXJnZXQpKSBicmVhaztcblxuICAgICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICAgIGlmICh0YXJnZXRQaWVjZT8uY29sb3IgPT09IHBpZWNlLmNvbG9yKSBicmVhaztcblxuICAgICAgbW92ZXMucHVzaCh7XG4gICAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICAgIHRvOiB0YXJnZXQsXG4gICAgICAgIGtpbmQ6ICdwb3dlcicsXG4gICAgICAgIGFuaW1hbCxcbiAgICAgICAgLi4uKHRhcmdldFBpZWNlID8geyBjYXB0dXJlc1BpZWNlSWQ6IHRhcmdldFBpZWNlLmlkIH0gOiB7fSksXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRhcmdldFBpZWNlKSBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmZ1bmN0aW9uIGdldEthbmdhcm9vTW92ZXMoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlOiBDaGVzc2ltYWxzUGllY2UpOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcbiAgY29uc3QganVtcHMgPSBbXG4gICAgeyByb3c6IC0yLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IC0yLCBjb2w6IDEgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogLTIgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogMiB9LFxuICAgIHsgcm93OiAxLCBjb2w6IC0yIH0sXG4gICAgeyByb3c6IDEsIGNvbDogMiB9LFxuICAgIHsgcm93OiAyLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IDIsIGNvbDogMSB9LFxuICBdO1xuXG4gIGZvciAoY29uc3QganVtcCBvZiBqdW1wcykge1xuICAgIGNvbnN0IHRhcmdldCA9IHtcbiAgICAgIHJvdzogcGllY2UucG9zaXRpb24ucm93ICsganVtcC5yb3csXG4gICAgICBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGp1bXAuY29sLFxuICAgIH07XG4gICAgaWYgKCFpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgdGFyZ2V0KSkgY29udGludWU7XG4gICAgaWYgKGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgcGllY2UuY29sb3IsIHRhcmdldCkpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICBpZiAodGFyZ2V0UGllY2U/LmNvbG9yID09PSBwaWVjZS5jb2xvcikgY29udGludWU7XG5cbiAgICBtb3Zlcy5wdXNoKHtcbiAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgdG86IHRhcmdldCxcbiAgICAgIGtpbmQ6ICdwb3dlcicsXG4gICAgICBhbmltYWw6ICdrYW5nYXJvbycsXG4gICAgICAuLi4odGFyZ2V0UGllY2UgPyB7IGNhcHR1cmVzUGllY2VJZDogdGFyZ2V0UGllY2UuaWQgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtb3Zlcztcbn1cblxuZnVuY3Rpb24gc2NvcmVCb3RNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBzdHlsZTogQ2hlc3NpbWFsc0JvdFN0eWxlLFxuICBjaGFsbGVuZ2VQcmVzc3VyZSA9IDAsXG4gIGluY2x1ZGVUYWN0aWNhbFByZXNzdXJlID0gdHJ1ZSxcbiAgbmlnaHRtYXJlTW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUgPSAnbm9uZSdcbik6IG51bWJlciB7XG4gIGNvbnN0IGNvbG9yID0gc3RhdGUuY3VycmVudFR1cm47XG4gIGNvbnN0IHRhcmdldFBpZWNlID0gbW92ZS5jYXB0dXJlc1BpZWNlSWRcbiAgICA/IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmluZChwaWVjZSA9PiBwaWVjZS5pZCA9PT0gbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGFkdmFuY2VtZW50ID0gY29sb3IgPT09ICd3aGl0ZScgPyBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gbW92ZS50by5yb3cgOiBtb3ZlLnRvLnJvdztcbiAgbGV0IHNjb3JlID0gYWR2YW5jZW1lbnQgKiAyNCAqIHN0eWxlLmFkdmFuY2VtZW50O1xuICBjb25zdCBzdGVwc1RvUHJvbW90aW9uID0gY29sb3IgPT09ICd3aGl0ZScgPyBtb3ZlLnRvLnJvdyA6IHN0YXRlLmJvYXJkU2l6ZSAtIDEgLSBtb3ZlLnRvLnJvdztcbiAgc2NvcmUgKz1cbiAgICBNYXRoLm1heCgwLCBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gc3RlcHNUb1Byb21vdGlvbikgKlxuICAgIDEwICpcbiAgICBjaGFsbGVuZ2VQcmVzc3VyZSAqXG4gICAgc3R5bGUuYWR2YW5jZW1lbnQ7XG5cbiAgaWYgKG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIGNvbG9yLCBtb3ZlLnRvKSkge1xuICAgIHNjb3JlICs9IDEwMDAwICsgMjUwMCAqIGNoYWxsZW5nZVByZXNzdXJlO1xuICB9XG4gIGlmIChuaWdodG1hcmVNb2RlID09PSAnaHVudCcgJiYgdGFyZ2V0UGllY2UpIHtcbiAgICBzY29yZSArPSAobW92ZS5raW5kID09PSAncG93ZXInID8gNzYwIDogNjIwKSAqIHN0eWxlLmNhcHR1cmU7XG4gIH1cbiAgaWYgKHRhcmdldFBpZWNlKSB7XG4gICAgc2NvcmUgKz0gKDUyMCArIDE4MCAqIGNoYWxsZW5nZVByZXNzdXJlKSAqIHN0eWxlLmNhcHR1cmU7XG4gICAgaWYgKG1vdmUua2luZCA9PT0gJ2Jhc2ljJykgc2NvcmUgKz0gMTYwICogY2hhbGxlbmdlUHJlc3N1cmUgKiBzdHlsZS5jYXB0dXJlO1xuICAgIGNvbnN0IHRhcmdldEFkdmFuY2VtZW50ID1cbiAgICAgIHRhcmdldFBpZWNlLmNvbG9yID09PSAnd2hpdGUnXG4gICAgICAgID8gc3RhdGUuYm9hcmRTaXplIC0gMSAtIHRhcmdldFBpZWNlLnBvc2l0aW9uLnJvd1xuICAgICAgICA6IHRhcmdldFBpZWNlLnBvc2l0aW9uLnJvdztcbiAgICBzY29yZSArPSB0YXJnZXRBZHZhbmNlbWVudCAqICgxNiArIDggKiBjaGFsbGVuZ2VQcmVzc3VyZSkgKiBzdHlsZS5jYXB0dXJlO1xuICB9XG4gIGlmIChtb3ZlLmtpbmQgPT09ICdwb3dlcicpIHtcbiAgICBzY29yZSArPVxuICAgICAgKHRhcmdldFBpZWNlID8gMTIwIDogZGlmZmljdWx0eSA9PT0gJ2hhcmQnID8gLTYwIC0gMTcwICogY2hhbGxlbmdlUHJlc3N1cmUgOiAtMzApICpcbiAgICAgIHN0eWxlLnBvd2VyO1xuICB9XG4gIGlmIChuaWdodG1hcmVNb2RlID09PSAnbWFnbnVzJyAmJiBtb3ZlLmtpbmQgPT09ICdwb3dlcicpIHtcbiAgICBzY29yZSArPSBzY29yZU1hZ251c1Bvd2VyUGF0aWVuY2Uoc3RhdGUsIG1vdmUsIHRhcmdldFBpZWNlLCBzdHlsZSk7XG4gIH1cbiAgaWYgKG1vdmUuYW5pbWFsID09PSAnbGlvbicpXG4gICAgc2NvcmUgKz0gbmlnaHRtYXJlTW9kZSA9PT0gJ3ByaWRlJyA/IDI2MCAqIHN0eWxlLnBvd2VyIDogLTIwICogc3R5bGUucG93ZXI7XG4gIGlmIChtb3ZlLmFuaW1hbCA9PT0gJ2thbmdhcm9vJykgc2NvcmUgKz0gMTQgKiBzdHlsZS5wb3dlcjtcbiAgaWYgKHdvdWxkVW5sb2NrUG93ZXIoc3RhdGUsIGNvbG9yLCBtb3ZlLnRvKSkgc2NvcmUgKz0gOTAgKiBzdHlsZS51bmxvY2s7XG4gIGlmIChpbmNsdWRlVGFjdGljYWxQcmVzc3VyZSAmJiBzdGF0ZS5ib2FyZFNpemUgPD0gNikge1xuICAgIHNjb3JlICs9XG4gICAgICBjb3VudFBvd2VyUmVhY2hBZnRlck1vdmUoc3RhdGUsIG1vdmUsIGNvbG9yKSAqXG4gICAgICAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnID8gOCA6IDQpICpcbiAgICAgIHN0eWxlLm1vYmlsaXR5O1xuICAgIHNjb3JlICs9XG4gICAgICBjb3VudFByb3RlY3RlZFRocmVhdHNBZnRlck1vdmUoc3RhdGUsIG1vdmUsIGNvbG9yKSAqXG4gICAgICAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnID8gMzYgOiAxOCkgKlxuICAgICAgc3R5bGUudHJhcDtcbiAgICBzY29yZSArPSBzY29yZUVuZGdhbWVQcmVzc3VyZShzdGF0ZSwgbW92ZSwgY29sb3IpICogc3R5bGUuZW5kZ2FtZTtcbiAgfSBlbHNlIHtcbiAgICBzY29yZSArPSBzY29yZUVuZGdhbWVQcmVzc3VyZShzdGF0ZSwgbW92ZSwgY29sb3IpICogc3R5bGUuZW5kZ2FtZTtcbiAgfVxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnICYmIGlzU3F1YXJlVnVsbmVyYWJsZUFmdGVyTW92ZShzdGF0ZSwgbW92ZSkpIHtcbiAgICBzY29yZSAtPSAodGFyZ2V0UGllY2UgPyA4MCA6IDE0MCkgKiBzdHlsZS5zYWZldHk7XG4gIH1cbiAgc2NvcmUgKz0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogc3R5bGUucmFuZG9tbmVzcztcblxuICByZXR1cm4gc2NvcmU7XG59XG5cbmZ1bmN0aW9uIHNjb3JlQm90TW92ZVdpdGhMb29rYWhlYWQoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBtb3ZlOiBDaGVzc2ltYWxzTW92ZSxcbiAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHksXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGUsXG4gIGNoYWxsZW5nZVByZXNzdXJlID0gMCxcbiAgbmlnaHRtYXJlTW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUgPSAnbm9uZSdcbik6IG51bWJlciB7XG4gIGxldCBzY29yZSA9IHNjb3JlQm90TW92ZShzdGF0ZSwgbW92ZSwgZGlmZmljdWx0eSwgc3R5bGUsIGNoYWxsZW5nZVByZXNzdXJlLCB0cnVlLCBuaWdodG1hcmVNb2RlKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGlmIChhZnRlck1vdmUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gc2NvcmUgKyA1MDAwO1xuXG4gICAgY29uc3Qgb3Bwb25lbnRNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGFmdGVyTW92ZSk7XG4gICAgY29uc3Qgb3Bwb25lbnRJbW1lZGlhdGVXaW4gPSBvcHBvbmVudE1vdmVzLnNvbWUoXG4gICAgICBvcHBvbmVudE1vdmUgPT5cbiAgICAgICAgb3Bwb25lbnRNb3ZlLmtpbmQgPT09ICdiYXNpYycgJiZcbiAgICAgICAgaXNQcm9tb3Rpb25Sb3coYWZ0ZXJNb3ZlLmJvYXJkU2l6ZSwgYWZ0ZXJNb3ZlLmN1cnJlbnRUdXJuLCBvcHBvbmVudE1vdmUudG8pXG4gICAgKTtcbiAgICBpZiAob3Bwb25lbnRJbW1lZGlhdGVXaW4pIHtcbiAgICAgIHNjb3JlIC09XG4gICAgICAgIChkaWZmaWN1bHR5ID09PSAnZWFzeSdcbiAgICAgICAgICA/IDE4MDBcbiAgICAgICAgICA6IGRpZmZpY3VsdHkgPT09ICdub3JtYWwnXG4gICAgICAgICAgICA/IDUyMDBcbiAgICAgICAgICAgIDogODAwMCArIDQyMDAgKiBjaGFsbGVuZ2VQcmVzc3VyZSkgKiBzdHlsZS5zYWZldHk7XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZWRQaWVjZSA9IGFmdGVyTW92ZS5waWVjZXMuZmluZChwaWVjZSA9PiBwaWVjZS5pZCA9PT0gbW92ZS5waWVjZUlkICYmICFwaWVjZS5jYXB0dXJlZCk7XG4gICAgaWYgKG1vdmVkUGllY2UpIHtcbiAgICAgIGNvbnN0IGNhbkNhcHR1cmVNb3ZlZFBpZWNlID0gb3Bwb25lbnRNb3Zlcy5zb21lKFxuICAgICAgICBvcHBvbmVudE1vdmUgPT4gb3Bwb25lbnRNb3ZlLmNhcHR1cmVzUGllY2VJZCA9PT0gbW92ZS5waWVjZUlkXG4gICAgICApO1xuICAgICAgaWYgKGNhbkNhcHR1cmVNb3ZlZFBpZWNlKSB7XG4gICAgICAgIHNjb3JlIC09XG4gICAgICAgICAgKG1vdmUuY2FwdHVyZXNQaWVjZUlkXG4gICAgICAgICAgICA/IDE4MFxuICAgICAgICAgICAgOiBkaWZmaWN1bHR5ID09PSAnZWFzeSdcbiAgICAgICAgICAgICAgPyAxMjBcbiAgICAgICAgICAgICAgOiBkaWZmaWN1bHR5ID09PSAnbm9ybWFsJ1xuICAgICAgICAgICAgICAgID8gMzYwXG4gICAgICAgICAgICAgICAgOiA1NjApICpcbiAgICAgICAgICBzdHlsZS5zYWZldHkgKlxuICAgICAgICAgICgxICsgY2hhbGxlbmdlUHJlc3N1cmUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjZW50ZXIgPSAoYWZ0ZXJNb3ZlLmJvYXJkU2l6ZSAtIDEpIC8gMjtcbiAgICAgIGNvbnN0IGNlbnRlckNvbnRyb2wgPSBNYXRoLm1heChcbiAgICAgICAgMCxcbiAgICAgICAgYWZ0ZXJNb3ZlLmJvYXJkU2l6ZSAvIDIgLSBNYXRoLmFicyhtb3ZlZFBpZWNlLnBvc2l0aW9uLmNvbCAtIGNlbnRlcilcbiAgICAgICk7XG4gICAgICBzY29yZSArPSBjZW50ZXJDb250cm9sICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDE4IDogMTApICogc3R5bGUuY2VudGVyO1xuICAgIH1cblxuICAgIGNvbnN0IG9wcG9uZW50QmVzdFJlcGx5ID0gb3Bwb25lbnRNb3Zlc1xuICAgICAgLm1hcChvcHBvbmVudE1vdmUgPT5cbiAgICAgICAgc2NvcmVCb3RNb3ZlKFxuICAgICAgICAgIGFmdGVyTW92ZSxcbiAgICAgICAgICBvcHBvbmVudE1vdmUsXG4gICAgICAgICAgZGlmZmljdWx0eSxcbiAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICBjaGFsbGVuZ2VQcmVzc3VyZSxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBuaWdodG1hcmVNb2RlXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlbMF07XG5cbiAgICBpZiAob3Bwb25lbnRCZXN0UmVwbHkpIHtcbiAgICAgIGNvbnN0IHJlcGx5V2VpZ2h0ID1cbiAgICAgICAgZGlmZmljdWx0eSA9PT0gJ2Vhc3knXG4gICAgICAgICAgPyAwLjEyXG4gICAgICAgICAgOiBkaWZmaWN1bHR5ID09PSAnbm9ybWFsJ1xuICAgICAgICAgICAgPyAwLjQgKyAwLjEgKiBjaGFsbGVuZ2VQcmVzc3VyZVxuICAgICAgICAgICAgOiBkaWZmaWN1bHR5ID09PSAnbWFzdGVyJ1xuICAgICAgICAgICAgICA/IDAuNzIgKyAwLjIyICogY2hhbGxlbmdlUHJlc3N1cmVcbiAgICAgICAgICAgICAgOiBuaWdodG1hcmVNb2RlICYmIG5pZ2h0bWFyZU1vZGUgIT09ICdub25lJ1xuICAgICAgICAgICAgICAgID8gMC44MiArIDAuMTggKiBjaGFsbGVuZ2VQcmVzc3VyZVxuICAgICAgICAgICAgICAgIDogMC40OCArIDAuMTYgKiBjaGFsbGVuZ2VQcmVzc3VyZTtcbiAgICAgIHNjb3JlIC09IG9wcG9uZW50QmVzdFJlcGx5ICogcmVwbHlXZWlnaHQgKiBzdHlsZS5yZXBseTtcbiAgICB9XG5cbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnIHx8IGRpZmZpY3VsdHkgPT09ICdtYXN0ZXInKSB7XG4gICAgICBjb25zdCB0b3BPcHBNb3ZlcyA9IG9wcG9uZW50TW92ZXNcbiAgICAgICAgLm1hcChtID0+ICh7XG4gICAgICAgICAgbW92ZTogbSxcbiAgICAgICAgICBzY29yZTogc2NvcmVCb3RNb3ZlKFxuICAgICAgICAgICAgYWZ0ZXJNb3ZlLFxuICAgICAgICAgICAgbSxcbiAgICAgICAgICAgIGRpZmZpY3VsdHksXG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgIGNoYWxsZW5nZVByZXNzdXJlLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBuaWdodG1hcmVNb2RlXG4gICAgICAgICAgKSxcbiAgICAgICAgfSkpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSlcbiAgICAgICAgLnNsaWNlKDAsIDQpO1xuICAgICAgZm9yIChjb25zdCB7IG1vdmU6IG9wcE1vdmUgfSBvZiB0b3BPcHBNb3Zlcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHMyID0gYXBwbHlDaGVzc2ltYWxzTW92ZShhZnRlck1vdmUsIG9wcE1vdmUpO1xuICAgICAgICAgIGlmIChzMi5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IG15Q291bnRlcnMgPSBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhzMik7XG4gICAgICAgICAgaWYgKG15Q291bnRlcnMubGVuZ3RoID09PSAwKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBteUJlc3QgPVxuICAgICAgICAgICAgbXlDb3VudGVyc1xuICAgICAgICAgICAgICAubWFwKG0gPT5cbiAgICAgICAgICAgICAgICBzY29yZUJvdE1vdmUoczIsIG0sIGRpZmZpY3VsdHksIHN0eWxlLCBjaGFsbGVuZ2VQcmVzc3VyZSwgZmFsc2UsIG5pZ2h0bWFyZU1vZGUpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIgLSBhKVswXSA/PyAwO1xuICAgICAgICAgIHNjb3JlICs9XG4gICAgICAgICAgICBteUJlc3QgKlxuICAgICAgICAgICAgKGRpZmZpY3VsdHkgPT09ICdtYXN0ZXInXG4gICAgICAgICAgICAgID8gMC4yMlxuICAgICAgICAgICAgICA6IG5pZ2h0bWFyZU1vZGUgJiYgbmlnaHRtYXJlTW9kZSAhPT0gJ25vbmUnXG4gICAgICAgICAgICAgICAgPyAwLjJcbiAgICAgICAgICAgICAgICA6IDAuMTQpICpcbiAgICAgICAgICAgIHN0eWxlLnJlcGx5O1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBza2lwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHNjb3JlIC09IDEwMDA7XG4gIH1cblxuICByZXR1cm4gc2NvcmU7XG59XG5cbmZ1bmN0aW9uIGdldENoYWxsZW5nZVByZXNzdXJlKHJvdW5kPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFyb3VuZCkgcmV0dXJuIDA7XG4gIHJldHVybiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCByb3VuZCAvIDgpKTtcbn1cblxuZnVuY3Rpb24gdHVuZUJvdFN0eWxlKFxuICBzdHlsZTogQ2hlc3NpbWFsc0JvdFN0eWxlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgY2hhbGxlbmdlUHJlc3N1cmU6IG51bWJlcixcbiAgbmlnaHRtYXJlTW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUgPSAnbm9uZSdcbik6IENoZXNzaW1hbHNCb3RTdHlsZSB7XG4gIGlmIChuaWdodG1hcmVNb2RlID09PSAnaHVudCcpIHtcbiAgICBzdHlsZSA9IHtcbiAgICAgIC4uLnN0eWxlLFxuICAgICAgYWR2YW5jZW1lbnQ6IHN0eWxlLmFkdmFuY2VtZW50ICogMS4xMixcbiAgICAgIGNhcHR1cmU6IHN0eWxlLmNhcHR1cmUgKiAxLjcyLFxuICAgICAgcG93ZXI6IHN0eWxlLnBvd2VyICogMS4zLFxuICAgICAgc2FmZXR5OiBzdHlsZS5zYWZldHkgKiAwLjgyLFxuICAgICAgcmFuZG9tbmVzczogTWF0aC5taW4oc3R5bGUucmFuZG9tbmVzcywgMTIpLFxuICAgICAgdHJhcDogc3R5bGUudHJhcCAqIDEuMjgsXG4gICAgfTtcbiAgfVxuICBpZiAobmlnaHRtYXJlTW9kZSA9PT0gJ3ByaWRlJykge1xuICAgIHN0eWxlID0ge1xuICAgICAgLi4uc3R5bGUsXG4gICAgICBhZHZhbmNlbWVudDogc3R5bGUuYWR2YW5jZW1lbnQgKiAxLjA4LFxuICAgICAgY2FwdHVyZTogc3R5bGUuY2FwdHVyZSAqIDEuMzIsXG4gICAgICBwb3dlcjogc3R5bGUucG93ZXIgKiAxLjU1LFxuICAgICAgcmFuZG9tbmVzczogTWF0aC5taW4oc3R5bGUucmFuZG9tbmVzcywgMTYpLFxuICAgIH07XG4gIH1cbiAgaWYgKG5pZ2h0bWFyZU1vZGUgPT09ICdtYWdudXMnKSB7XG4gICAgc3R5bGUgPSB7XG4gICAgICAuLi5zdHlsZSxcbiAgICAgIGFkdmFuY2VtZW50OiBzdHlsZS5hZHZhbmNlbWVudCAqIDEuMDQsXG4gICAgICBjYXB0dXJlOiBzdHlsZS5jYXB0dXJlICogMS4xNixcbiAgICAgIHNhZmV0eTogc3R5bGUuc2FmZXR5ICogMS4zOCxcbiAgICAgIHBvd2VyOiBzdHlsZS5wb3dlciAqIDAuODIsXG4gICAgICBjZW50ZXI6IHN0eWxlLmNlbnRlciAqIDEuMixcbiAgICAgIHJlcGx5OiBzdHlsZS5yZXBseSAqIDEuMyxcbiAgICAgIHJhbmRvbW5lc3M6IE1hdGgubWluKHN0eWxlLnJhbmRvbW5lc3MsIDIpLFxuICAgICAgc3ByZWFkOiBzdHlsZS5zcHJlYWQgKiAwLjYsXG4gICAgICB0cmFwOiBzdHlsZS50cmFwICogMS4yMixcbiAgICAgIGVuZGdhbWU6IHN0eWxlLmVuZGdhbWUgKiAxLjI4LFxuICAgIH07XG4gIH1cbiAgaWYgKGRpZmZpY3VsdHkgPT09ICdtYXN0ZXInKSB7XG4gICAgc3R5bGUgPSB7XG4gICAgICAuLi5zdHlsZSxcbiAgICAgIGNhcHR1cmU6IHN0eWxlLmNhcHR1cmUgKiAxLjA4LFxuICAgICAgc2FmZXR5OiBzdHlsZS5zYWZldHkgKiAxLjIyLFxuICAgICAgcmVwbHk6IHN0eWxlLnJlcGx5ICogMS4zMixcbiAgICAgIGNlbnRlcjogc3R5bGUuY2VudGVyICogMS4xMixcbiAgICAgIHJhbmRvbW5lc3M6IE1hdGgubWluKHN0eWxlLnJhbmRvbW5lc3MsIDMpLFxuICAgICAgc3ByZWFkOiBzdHlsZS5zcHJlYWQgKiAwLjUsXG4gICAgICB0cmFwOiBzdHlsZS50cmFwICogMS4xNCxcbiAgICAgIGVuZGdhbWU6IHN0eWxlLmVuZGdhbWUgKiAxLjE4LFxuICAgIH07XG4gIH1cbiAgaWYgKCFjaGFsbGVuZ2VQcmVzc3VyZSkgcmV0dXJuIHN0eWxlO1xuICBjb25zdCBwcmVzc3VyZSA9XG4gICAgZGlmZmljdWx0eSA9PT0gJ2Vhc3knXG4gICAgICA/IGNoYWxsZW5nZVByZXNzdXJlICogMC40NVxuICAgICAgOiBkaWZmaWN1bHR5ID09PSAnbWFzdGVyJ1xuICAgICAgICA/IGNoYWxsZW5nZVByZXNzdXJlICogMS4xNVxuICAgICAgICA6IG5pZ2h0bWFyZU1vZGUgJiYgbmlnaHRtYXJlTW9kZSAhPT0gJ25vbmUnXG4gICAgICAgICAgPyBjaGFsbGVuZ2VQcmVzc3VyZSAqIDEuMjVcbiAgICAgICAgICA6IGNoYWxsZW5nZVByZXNzdXJlO1xuICByZXR1cm4ge1xuICAgIC4uLnN0eWxlLFxuICAgIGNhcHR1cmU6IHN0eWxlLmNhcHR1cmUgKiAoMSArIHByZXNzdXJlICogMC4yOCksXG4gICAgc2FmZXR5OiBzdHlsZS5zYWZldHkgKiAoMSArIHByZXNzdXJlICogMC4zNCksXG4gICAgcmVwbHk6IHN0eWxlLnJlcGx5ICogKDEgKyBwcmVzc3VyZSAqIDAuMjIpLFxuICAgIGNlbnRlcjogc3R5bGUuY2VudGVyICogKDEgKyBwcmVzc3VyZSAqIDAuMTIpLFxuICAgIHJhbmRvbW5lc3M6IHN0eWxlLnJhbmRvbW5lc3MgKiAoMSAtIHByZXNzdXJlICogMC42NSksXG4gICAgc3ByZWFkOiBzdHlsZS5zcHJlYWQgKiAoMSAtIHByZXNzdXJlICogMC4zNSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNob29zZUNoYWxsZW5nZUJhc2ljQ2FwdHVyZShcbiAgc2NvcmVkOiB7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH1bXSxcbiAgY2hhbGxlbmdlUHJlc3N1cmU6IG51bWJlclxuKTogQ2hlc3NpbWFsc01vdmUgfCB1bmRlZmluZWQge1xuICBpZiAoY2hhbGxlbmdlUHJlc3N1cmUgPCAwLjUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgYmVzdCA9IHNjb3JlZFswXTtcbiAgY29uc3QgYmVzdEJhc2ljQ2FwdHVyZSA9IHNjb3JlZC5maW5kKFxuICAgIGl0ZW0gPT4gaXRlbS5tb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgaXRlbS5tb3ZlLmNhcHR1cmVzUGllY2VJZFxuICApO1xuICBpZiAoIWJlc3QgfHwgIWJlc3RCYXNpY0NhcHR1cmUpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChiZXN0Lm1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBiZXN0Lm1vdmUuY2FwdHVyZXNQaWVjZUlkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHRvbGVyYW5jZSA9IGJlc3QubW92ZS5raW5kID09PSAncG93ZXInICYmICFiZXN0Lm1vdmUuY2FwdHVyZXNQaWVjZUlkID8gMTgwMCA6IDkwMDtcbiAgcmV0dXJuIGJlc3Quc2NvcmUgLSBiZXN0QmFzaWNDYXB0dXJlLnNjb3JlIDw9IHRvbGVyYW5jZSA/IGJlc3RCYXNpY0NhcHR1cmUubW92ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY2hvb3NlTmlnaHRtYXJlQ2FwdHVyZShcbiAgc2NvcmVkOiB7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH1bXSxcbiAgbmlnaHRtYXJlTW9kZT86IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlXG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGlmIChuaWdodG1hcmVNb2RlICE9PSAnaHVudCcpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgYmVzdCA9IHNjb3JlZFswXTtcbiAgY29uc3QgY2FwdHVyZSA9IHNjb3JlZC5maW5kKGl0ZW0gPT4gaXRlbS5tb3ZlLmNhcHR1cmVzUGllY2VJZCk7XG4gIGlmICghYmVzdCB8fCAhY2FwdHVyZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICByZXR1cm4gYmVzdC5zY29yZSAtIGNhcHR1cmUuc2NvcmUgPD0gMTgwMCA/IGNhcHR1cmUubW92ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gc2NvcmVNYWdudXNQb3dlclBhdGllbmNlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIHRhcmdldFBpZWNlOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQsXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGVcbik6IG51bWJlciB7XG4gIGNvbnN0IGNvbG9yID0gc3RhdGUuY3VycmVudFR1cm47XG4gIGNvbnN0IGZyb21BZHZhbmNlbWVudCA9IGNvbG9yID09PSAnd2hpdGUnID8gc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUuZnJvbS5yb3cgOiBtb3ZlLmZyb20ucm93O1xuICBjb25zdCB0b0FkdmFuY2VtZW50ID0gY29sb3IgPT09ICd3aGl0ZScgPyBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gbW92ZS50by5yb3cgOiBtb3ZlLnRvLnJvdztcbiAgY29uc3QgYWR2YW5jZW1lbnRHYWluID0gTWF0aC5tYXgoMCwgdG9BZHZhbmNlbWVudCAtIGZyb21BZHZhbmNlbWVudCk7XG4gIGNvbnN0IHN0ZXBzVG9Qcm9tb3Rpb24gPSBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICBjb25zdCBjcmVhdGVzUHJvbW90aW9uVGhyZWF0ID0gYWR2YW5jZW1lbnRHYWluID4gMCAmJiBzdGVwc1RvUHJvbW90aW9uIDw9IDE7XG5cbiAgaWYgKHRhcmdldFBpZWNlKSByZXR1cm4gMjYwICogc3R5bGUucG93ZXI7XG4gIGlmIChjcmVhdGVzUHJvbW90aW9uVGhyZWF0KSByZXR1cm4gMTgwICogc3R5bGUuZW5kZ2FtZTtcblxuICBjb25zdCBlYXJseUdhbWUgPSBzdGF0ZS5tb3ZlQ291bnQgPCBzdGF0ZS5ib2FyZFNpemU7XG4gIGNvbnN0IHdhbmRlcmluZ1BlbmFsdHkgPSBlYXJseUdhbWUgPyAxMTgwIDogNjIwO1xuICBjb25zdCBhbmltYWxQZW5hbHR5ID0gbW92ZS5hbmltYWwgPT09ICdrYW5nYXJvbycgPyAyMjAgOiBtb3ZlLmFuaW1hbCA9PT0gJ2xpb24nID8gMTYwIDogMDtcblxuICByZXR1cm4gLSh3YW5kZXJpbmdQZW5hbHR5ICsgYW5pbWFsUGVuYWx0eSkgKiBzdHlsZS5wb3dlcjtcbn1cblxuZnVuY3Rpb24gY291bnRQb3dlclJlYWNoQWZ0ZXJNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3Jcbik6IG51bWJlciB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgY29uc3QgZXZhbHVhdGlvblN0YXRlID0geyAuLi5hZnRlck1vdmUsIGN1cnJlbnRUdXJuOiBjb2xvciB9O1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhldmFsdWF0aW9uU3RhdGUsIGNvbG9yKS5maWx0ZXIoXG4gICAgICBuZXh0TW92ZSA9PiBuZXh0TW92ZS5raW5kID09PSAncG93ZXInXG4gICAgKS5sZW5ndGg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvdW50UHJvdGVjdGVkVGhyZWF0c0FmdGVyTW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yXG4pOiBudW1iZXIge1xuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGNvbnN0IGV2YWx1YXRpb25TdGF0ZSA9IHsgLi4uYWZ0ZXJNb3ZlLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICBjb25zdCBvdXJNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpO1xuICAgIGNvbnN0IGVuZW15UGllY2VzID0gYWN0aXZlUGllY2VzKGFmdGVyTW92ZSkuZmlsdGVyKFxuICAgICAgcGllY2UgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZFxuICAgICk7XG4gICAgcmV0dXJuIGVuZW15UGllY2VzLmZpbHRlcihwaWVjZSA9PlxuICAgICAgb3VyTW92ZXMuc29tZShuZXh0TW92ZSA9PiBuZXh0TW92ZS5jYXB0dXJlc1BpZWNlSWQgPT09IHBpZWNlLmlkKVxuICAgICkubGVuZ3RoO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzY29yZUVuZGdhbWVQcmVzc3VyZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yXG4pOiBudW1iZXIge1xuICBjb25zdCByZW1haW5pbmdFbmVteVBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmlsdGVyKFxuICAgIHBpZWNlID0+IHBpZWNlLmNvbG9yICE9PSBjb2xvciAmJiAhcGllY2UuY2FwdHVyZWRcbiAgKS5sZW5ndGg7XG4gIGNvbnN0IHVyZ2VuY3kgPSByZW1haW5pbmdFbmVteVBpZWNlcyA8PSBNYXRoLm1heCgyLCBNYXRoLmZsb29yKHN0YXRlLmJvYXJkU2l6ZSAvIDIpKSA/IDEuNiA6IDE7XG4gIGNvbnN0IGRpc3RhbmNlVG9Qcm9tb3Rpb24gPSBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICByZXR1cm4gTWF0aC5tYXgoMCwgc3RhdGUuYm9hcmRTaXplIC0gZGlzdGFuY2VUb1Byb21vdGlvbikgKiAxNCAqIHVyZ2VuY3k7XG59XG5cbmZ1bmN0aW9uIGNob29zZUNvbnNlcnZhdGl2ZUhhcmRDYXB0dXJlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgc2NvcmVkOiB7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH1bXVxuKTogQ2hlc3NpbWFsc01vdmUgfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdGUuYm9hcmRTaXplICE9PSA4KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGJlc3QgPSBzY29yZWRbMF07XG4gIGlmICghYmVzdCB8fCBiZXN0Lm1vdmUua2luZCAhPT0gJ3Bvd2VyJyB8fCAhYmVzdC5tb3ZlLmNhcHR1cmVzUGllY2VJZCB8fCBiZXN0LnNjb3JlID49IDEwMDAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGJlc3RCYXNpY0NhcHR1cmUgPSBzY29yZWQuZmluZChcbiAgICBpdGVtID0+IGl0ZW0ubW92ZS5raW5kID09PSAnYmFzaWMnICYmIGl0ZW0ubW92ZS5jYXB0dXJlc1BpZWNlSWRcbiAgKTtcbiAgaWYgKCFiZXN0QmFzaWNDYXB0dXJlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiBiZXN0LnNjb3JlIC0gYmVzdEJhc2ljQ2FwdHVyZS5zY29yZSA8PSA2NTAgPyBiZXN0QmFzaWNDYXB0dXJlLm1vdmUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHBpY2tOb2lzeUJvdE1vdmUoXG4gIHNjb3JlZDogQXJyYXk8eyBtb3ZlOiBDaGVzc2ltYWxzTW92ZTsgc2NvcmU6IG51bWJlciB9PixcbiAgc3ByZWFkOiBudW1iZXJcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNjb3JlZC5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHBvb2xTaXplID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHNjb3JlZC5sZW5ndGggKiBzcHJlYWQpKTtcbiAgY29uc3QgcG9vbCA9IHNjb3JlZC5zbGljZSgwLCBwb29sU2l6ZSk7XG4gIGNvbnN0IHRvcFNjb3JlID0gcG9vbFswXT8uc2NvcmUgPz8gMDtcbiAgY29uc3Qgd2VpZ2h0ZWQgPSBwb29sLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCByZWxhdGl2ZSA9IE1hdGgubWF4KDAsIGl0ZW0uc2NvcmUgLSB0b3BTY29yZSArIDEyMDApO1xuICAgIGNvbnN0IHdlaWdodCA9IE1hdGgubWF4KDEsIHJlbGF0aXZlIC8gMTIwICsgKHBvb2wubGVuZ3RoIC0gaW5kZXgpICogMik7XG4gICAgcmV0dXJuIHsgLi4uaXRlbSwgd2VpZ2h0IH07XG4gIH0pO1xuICBjb25zdCB0b3RhbFdlaWdodCA9IHdlaWdodGVkLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHRvdGFsICsgaXRlbS53ZWlnaHQsIDApO1xuICBsZXQgY3Vyc29yID0gTWF0aC5yYW5kb20oKSAqIHRvdGFsV2VpZ2h0O1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygd2VpZ2h0ZWQpIHtcbiAgICBjdXJzb3IgLT0gaXRlbS53ZWlnaHQ7XG4gICAgaWYgKGN1cnNvciA8PSAwKSByZXR1cm4gaXRlbS5tb3ZlO1xuICB9XG4gIHJldHVybiBwb29sWzBdPy5tb3ZlO1xufVxuXG5mdW5jdGlvbiBnZXRJbW1lZGlhdGVXaW5uaW5nTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgcmV0dXJuIGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKHN0YXRlLCBjb2xvcikuZmlsdGVyKFxuICAgIG1vdmUgPT4gbW92ZS5raW5kID09PSAnYmFzaWMnICYmIGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgY29sb3IsIG1vdmUudG8pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHdvdWxkVW5sb2NrUG93ZXIoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uXG4pOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHBvc2l0aW9uLnJvdyA8PSBjZW50ZXJUb3AgOiBwb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tO1xufVxuXG5mdW5jdGlvbiBpc1NxdWFyZVZ1bG5lcmFibGVBZnRlck1vdmUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgaWYgKGFmdGVyTW92ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoYWZ0ZXJNb3ZlKS5zb21lKFxuICAgICAgZW5lbXlNb3ZlID0+IHNhbWVQb3NpdGlvbihlbmVteU1vdmUudG8sIG1vdmUudG8pICYmICEhZW5lbXlNb3ZlLmNhcHR1cmVzUGllY2VJZFxuICAgICk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQb3dlckRpcmVjdGlvbnMoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IENoZXNzaW1hbHNQb3NpdGlvbltdIHtcbiAgaWYgKGFuaW1hbCA9PT0gJ2VhZ2xlJykge1xuICAgIHJldHVybiBbXG4gICAgICB7IHJvdzogLTEsIGNvbDogLTEgfSxcbiAgICAgIHsgcm93OiAtMSwgY29sOiAxIH0sXG4gICAgICB7IHJvdzogMSwgY29sOiAtMSB9LFxuICAgICAgeyByb3c6IDEsIGNvbDogMSB9LFxuICAgIF07XG4gIH1cbiAgaWYgKGFuaW1hbCA9PT0gJ2J1bGwnKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgcm93OiAtMSwgY29sOiAwIH0sXG4gICAgICB7IHJvdzogMSwgY29sOiAwIH0sXG4gICAgICB7IHJvdzogMCwgY29sOiAtMSB9LFxuICAgICAgeyByb3c6IDAsIGNvbDogMSB9LFxuICAgIF07XG4gIH1cbiAgcmV0dXJuIFtcbiAgICB7IHJvdzogLTEsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogMCB9LFxuICAgIHsgcm93OiAtMSwgY29sOiAxIH0sXG4gICAgeyByb3c6IDAsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogMCwgY29sOiAxIH0sXG4gICAgeyByb3c6IDEsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogMSwgY29sOiAwIH0sXG4gICAgeyByb3c6IDEsIGNvbDogMSB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiByZWZyZXNoQ2hlc3NpbWFsc1Bvd2VyVW5sb2NrcyhzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHBsYXllcnM6IHtcbiAgICAgIHdoaXRlOiB7XG4gICAgICAgIC4uLnN0YXRlLnBsYXllcnMud2hpdGUsXG4gICAgICAgIHBvd2VyVW5sb2NrZWQ6XG4gICAgICAgICAgc3RhdGUucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkIHx8XG4gICAgICAgICAgaGFzQ3Jvc3NlZENlbnRlcihzdGF0ZSwgJ3doaXRlJykgfHxcbiAgICAgICAgICBoYXNFbmVteUVudGVyZWRIb21lKHN0YXRlLCAnd2hpdGUnKSxcbiAgICAgIH0sXG4gICAgICBibGFjazoge1xuICAgICAgICAuLi5zdGF0ZS5wbGF5ZXJzLmJsYWNrLFxuICAgICAgICBwb3dlclVubG9ja2VkOlxuICAgICAgICAgIHN0YXRlLnBsYXllcnMuYmxhY2sucG93ZXJVbmxvY2tlZCB8fFxuICAgICAgICAgIGhhc0Nyb3NzZWRDZW50ZXIoc3RhdGUsICdibGFjaycpIHx8XG4gICAgICAgICAgaGFzRW5lbXlFbnRlcmVkSG9tZShzdGF0ZSwgJ2JsYWNrJyksXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGhhc0Nyb3NzZWRDZW50ZXIoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBib29sZWFuIHtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLnNvbWUocGllY2UgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gY29sb3IgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPD0gY2VudGVyVG9wIDogcGllY2UucG9zaXRpb24ucm93ID49IGNlbnRlckJvdHRvbTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBib29sZWFuIHtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIGNvbnN0IGVuZW15ID0gb3RoZXJDb2xvcihjb2xvcik7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLnNvbWUocGllY2UgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gZW5lbXkgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tIDogcGllY2UucG9zaXRpb24ucm93IDw9IGNlbnRlclRvcDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzUHJvbW90aW9uUm93KFxuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb25cbik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwb3NpdGlvbi5yb3cgPT09IDAgOiBwb3NpdGlvbi5yb3cgPT09IGJvYXJkU2l6ZSAtIDE7XG59XG5cbmZ1bmN0aW9uIGlzSW5zaWRlQm9hcmQoYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplLCBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgcG9zaXRpb24ucm93ID49IDAgJiYgcG9zaXRpb24ucm93IDwgYm9hcmRTaXplICYmIHBvc2l0aW9uLmNvbCA+PSAwICYmIHBvc2l0aW9uLmNvbCA8IGJvYXJkU2l6ZVxuICApO1xufVxuXG5mdW5jdGlvbiBzYW1lUG9zaXRpb24oYTogQ2hlc3NpbWFsc1Bvc2l0aW9uLCBiOiBDaGVzc2ltYWxzUG9zaXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGEucm93ID09PSBiLnJvdyAmJiBhLmNvbCA9PT0gYi5jb2w7XG59XG5cbmZ1bmN0aW9uIG90aGVyQ29sb3IoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2NhbElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBgbG9jYWwtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xufVxuIl19
1186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvY2hlc3NpbWFscy1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JBLE1BQU0sT0FBTyxHQUEyQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlFLE1BQU0sZ0NBQWdDLEdBQUcsMkNBQTJDLENBQUM7QUFzQnJGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUEyQjtJQUM3RDtRQUNFLEVBQUUsRUFBRSxVQUFVO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsZUFBZTtRQUM3RCxRQUFRLEVBQUUsdUJBQXVCO1FBQ2pDLGNBQWMsRUFBRSwyQkFBMkI7S0FDNUM7SUFDRDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsV0FBVztRQUN6RCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLGNBQWMsRUFBRSx1QkFBdUI7S0FDeEM7SUFDRDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsV0FBVztRQUN6RCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLGNBQWMsRUFBRSx1QkFBdUI7S0FDeEM7SUFDRDtRQUNFLEVBQUUsRUFBRSxRQUFRO1FBQ1osVUFBVSxFQUFFLFFBQVE7UUFDcEIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsR0FBRyxnQ0FBZ0MsYUFBYTtRQUMzRCxRQUFRLEVBQUUscUJBQXFCO1FBQy9CLGNB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LEVBQUUsSUFBSTtRQUNqQixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxHQUFHO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxRQUFRLEVBQUU7UUFDUixXQUFXLEVBQUUsSUFBSTtRQUNqQixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsQ0FBQztRQUNULE1BQU0sRUFBRSxDQUFDO1FBQ1QsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsSUFBSTtRQUNqQixPQUFPLEVBQUUsR0FBRztRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLENBQUM7UUFDUixVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxRQUFRLEVBQUU7UUFDUixXQUFXLEVBQUUsR0FBRztRQUNoQixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxNQUFNLEVBQUU7UUFDTixXQUFXLEVBQUUsQ0FBQztRQUNkLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsR0FBRztRQUNWLFVBQVUsRUFBRSxDQUFDO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxHQUFHO1FBQ2hCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLEdBQUc7UUFDWCxRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLEdBQUc7UUFDWCxRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELEtBQUssRUFBRTtRQUNMLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELFNBQVMsRUFBRTtRQUNULFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLEdBQUc7UUFDWCxLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxJQUFJ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UUFBNEI7SUFDakYsT0FBTyxDQUNMLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxJQUFJLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUMvRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBcUI7SUFDaEUsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUE0QjtJQUM5QyxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLGFBQWE7SUFDcEIsT0FBTyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNHYW1lTW9kZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0dXMsXG4gIENoZXNzaW1hbHNNb3ZlLFxuICBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsXG4gIENoZXNzaW1hbHNPbmxpbmVTdGF0ZSxcbiAgQ2hlc3NpbWFsc1BpZWNlLFxuICBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIENoZXNzaW1hbHNQb3NpdGlvbixcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEFOSU1BTFM6IENoZXNzaW1hbHNBbmltYWxUeXBlW10gPSBbJ2VhZ2xlJywgJ2J1bGwnLCAna2FuZ2Fyb28nLCAnbGlvbiddO1xuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0UgPSAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvY2hhbGxlbmdlLWF2YXRhcnMnO1xuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0JvdFN0eWxlIHtcbiAgYWR2YW5jZW1lbnQ6IG51bWJlcjtcbiAgY2FwdHVyZTogbnVtYmVyO1xuICBzYWZldHk6IG51bWJlcjtcbiAgcG93ZXI6IG51bWJlcjtcbiAgY2VudGVyOiBudW1iZXI7XG4gIHVubG9jazogbnVtYmVyO1xuICByZXBseTogbnVtYmVyO1xuICByYW5kb21uZXNzOiBudW1iZXI7XG4gIHNwcmVhZDogbnVtYmVyO1xuICBtb2JpbGl0eTogbnVtYmVyO1xuICB0cmFwOiBudW1iZXI7XG4gIGVuZGdhbWU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNCb3RPcHRpb25zIHtcbiAgY2hhbGxlbmdlUm91bmQ/OiBudW1iZXI7XG4gIG5pZ2h0bWFyZU1vZGU/OiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IENIRVNTSU1BTFNfQk9UX1BST0ZJTEVTOiBDaGVzc2ltYWxzQm90UHJvZmlsZVtdID0gW1xuICB7XG4gICAgaWQ6ICdleHBsb3JlcicsXG4gICAgZGlmZmljdWx0eTogJ2Vhc3knLFxuICAgIGF2YXRhcjogJ/Cfp60nLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L2V4cGxvcmVyLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90RXhwbG9yZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEV4cGxvcmVyQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2J1bGwnLFxuICAgIGRpZmZpY3VsdHk6ICdlYXN5JyxcbiAgICBhdmF0YXI6ICfwn5CCJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9idWxsLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90QnVsbCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90QnVsbEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdoYXJlJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+QhycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vaGFyZS5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdEhhcmUnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEhhcmVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn46vJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9odW50ZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RIdW50ZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEh1bnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdndWFyZGlhbicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+boe+4jycsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vZ3VhcmRpYW4ucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RHdWFyZGlhbicsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90R3VhcmRpYW5Cb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnanVtcGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn6aYJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9qdW1wZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RKdW1wZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEp1bXBlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzdHJhdGVnaXN0JyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn4pmf77iPJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9zdHJhdGVnaXN0LnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfpoEnLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L3ByZWRhdG9yLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90UHJlZGF0b3InLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdFByZWRhdG9yQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2NoZWV0YWgnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5CGJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9jaGVldGFoLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90Q2hlZXRhaCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90Q2hlZXRhaEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW50aW5lbCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/Cfj7AnLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L3NlbnRpbmVsLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U2VudGluZWwnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdFNlbnRpbmVsQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ29yYWNsZScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CflK4nLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L29yYWNsZS5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdE9yYWNsZScsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90T3JhY2xlQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2FtYnVzaGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn8J+qpCcsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vYW1idXNoZXIucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RBbWJ1c2hlcicsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90QW1idXNoZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAndHVydGxlJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn8J+QoicsXG4gICAgYXZhdGFyU3JjOiBgJHtDSEVTU0lNQUxTX0NIQUxMRU5HRV9BVkFUQVJfQkFTRX0vdHVydGxlLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90VHVydGxlJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RUdXJ0bGVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc3Rvcm0nLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn4yp77iPJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9zdG9ybS5wbmdgLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFN0b3JtJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTdG9ybUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdtYXRyaWFyY2gnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5GRJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9tYXRyaWFyY2gucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RNYXRyaWFyY2gnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE1hdHJpYXJjaEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdhbmFjb25kYScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfkI0nLFxuICAgIGF2YXRhclNyYzogYCR7Q0hFU1NJTUFMU19DSEFMTEVOR0VfQVZBVEFSX0JBU0V9L2FuYWNvbmRhLnBuZ2AsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90QW5hY29uZGEnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEFuYWNvbmRhQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ21hbmRyaWxsJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn4pmfJyxcbiAgICBhdmF0YXJTcmM6IGAke0NIRVNTSU1BTFNfQ0hBTExFTkdFX0FWQVRBUl9CQVNFfS9uaWdodG1hcmUtbWFuZHJpbGwucG5nYCxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RNYWdudXMnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE1hZ251c0JvZHknLFxuICB9LFxuXTtcblxuY29uc3QgQk9UX1NUWUxFUzogUmVjb3JkPENoZXNzaW1hbHNCb3RQcm9maWxlSWQsIENoZXNzaW1hbHNCb3RTdHlsZT4gPSB7XG4gIGV4cGxvcmVyOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDEuMDUsXG4gICAgY2FwdHVyZTogMC44MixcbiAgICBzYWZldHk6IDAuNjIsXG4gICAgcG93ZXI6IDAuOCxcbiAgICBjZW50ZXI6IDEuMTUsXG4gICAgdW5sb2NrOiAxLjA1LFxuICAgIHJlcGx5OiAwLjcsXG4gICAgcmFuZG9tbmVzczogMjYwLFxuICAgIHNwcmVhZDogMC42OCxcbiAgICBtb2JpbGl0eTogMC43NSxcbiAgICB0cmFwOiAwLjUsXG4gICAgZW5kZ2FtZTogMC41NSxcbiAgfSxcbiAgYnVsbDoge1xuICAgIGFkdmFuY2VtZW50OiAwLjksXG4gICAgY2FwdHVyZTogMS40NSxcbiAgICBzYWZldHk6IDAuNDgsXG4gICAgcG93ZXI6IDEuMTUsXG4gICAgY2VudGVyOiAwLjgsXG4gICAgdW5sb2NrOiAwLjksXG4gICAgcmVwbHk6IDAuNTUsXG4gICAgcmFuZG9tbmVzczogMjkwLFxuICAgIHNwcmVhZDogMC42MixcbiAgICBtb2JpbGl0eTogMC44NSxcbiAgICB0cmFwOiAwLjYyLFxuICAgIGVuZGdhbWU6IDAuNSxcbiAgfSxcbiAgaGFyZToge1xuICAgIGFkdmFuY2VtZW50OiAxLjU1LFxuICAgIGNhcHR1cmU6IDAuNzgsXG4gICAgc2FmZXR5OiAwLjUsXG4gICAgcG93ZXI6IDAuOTUsXG4gICAgY2VudGVyOiAwLjcsXG4gICAgdW5sb2NrOiAxLjEsXG4gICAgcmVwbHk6IDAuNTUsXG4gICAgcmFuZG9tbmVzczogMjUwLFxuICAgIHNwcmVhZDogMC42LFxuICAgIG1vYmlsaXR5OiAwLjcyLFxuICAgIHRyYXA6IDAuNDUsXG4gICAgZW5kZ2FtZTogMS4xLFxuICB9LFxuICBodW50ZXI6IHtcbiAgICBhZHZhbmNlbWVudDogMC45NSxcbiAgICBjYXB0dXJlOiAxLjQ1LFxuICAgIHNhZmV0eTogMC45LFxuICAgIHBvd2VyOiAxLjA1LFxuICAgIGNlbnRlcjogMC45NSxcbiAgICB1bmxvY2s6IDAuOTUsXG4gICAgcmVwbHk6IDEsXG4gICAgcmFuZG9tbmVzczogOTAsXG4gICAgc3ByZWFkOiAwLjMsXG4gICAgbW9iaWxpdHk6IDAuOTUsXG4gICAgdHJhcDogMC44MixcbiAgICBlbmRnYW1lOiAwLjc2LFxuICB9LFxuICBndWFyZGlhbjoge1xuICAgIGFkdmFuY2VtZW50OiAwLjg4LFxuICAgIGNhcHR1cmU6IDEsXG4gICAgc2FmZXR5OiAxLjQ1LFxuICAgIHBvd2VyOiAwLjg1LFxuICAgIGNlbnRlcjogMS4wNSxcbiAgICB1bmxvY2s6IDEsXG4gICAgcmVwbHk6IDEuMTUsXG4gICAgcmFuZG9tbmVzczogNzAsXG4gICAgc3ByZWFkOiAwLjI2LFxuICAgIG1vYmlsaXR5OiAwLjgyLFxuICAgIHRyYXA6IDAuNzIsXG4gICAgZW5kZ2FtZTogMC43MixcbiAgfSxcbiAganVtcGVyOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDEuMTIsXG4gICAgY2FwdHVyZTogMSxcbiAgICBzYWZldHk6IDAuOTIsXG4gICAgcG93ZXI6IDEuNDIsXG4gICAgY2VudGVyOiAxLjE4LFxuICAgIHVubG9jazogMS4wOCxcbiAgICByZXBseTogMC45NSxcbiAgICByYW5kb21uZXNzOiA5NSxcbiAgICBzcHJlYWQ6IDAuMzIsXG4gICAgbW9iaWxpdHk6IDEuMTUsXG4gICAgdHJhcDogMC45LFxuICAgIGVuZGdhbWU6IDAuODIsXG4gIH0sXG4gIHN0cmF0ZWdpc3Q6IHtcbiAgICBhZHZhbmNlbWVudDogMS4wNSxcbiAgICBjYXB0dXJlOiAxLjA4LFxuICAgIHNhZmV0eTogMS4yMixcbiAgICBwb3dlcjogMS4wOCxcbiAgICBjZW50ZXI6IDEuMTYsXG4gICAgdW5sb2NrOiAxLjEsXG4gICAgcmVwbHk6IDEuMjUsXG4gICAgcmFuZG9tbmVzczogMjIsXG4gICAgc3ByZWFkOiAwLjE0LFxuICAgIG1vYmlsaXR5OiAxLjA4LFxuICAgIHRyYXA6IDEuMDYsXG4gICAgZW5kZ2FtZTogMSxcbiAgfSxcbiAgcHJlZGF0b3I6IHtcbiAgICBhZHZhbmNlbWVudDogMC45OCxcbiAgICBjYXB0dXJlOiAxLjY4LFxuICAgIHNhZmV0eTogMS4wMixcbiAgICBwb3dlcjogMS4zNCxcbiAgICBjZW50ZXI6IDEsXG4gICAgdW5sb2NrOiAxLFxuICAgIHJlcGx5OiAxLjEyLFxuICAgIHJhbmRvbW5lc3M6IDI4LFxuICAgIHNwcmVhZDogMC4xNixcbiAgICBtb2JpbGl0eTogMS4wMixcbiAgICB0cmFwOiAxLjE4LFxuICAgIGVuZGdhbWU6IDAuODIsXG4gIH0sXG4gIGNoZWV0YWg6IHtcbiAgICBhZHZhbmNlbWVudDogMS43MixcbiAgICBjYXB0dXJlOiAwLjksXG4gICAgc2FmZXR5OiAwLjk1LFxuICAgIHBvd2VyOiAxLjA4LFxuICAgIGNlbnRlcjogMC44NixcbiAgICB1bmxvY2s6IDEuMTgsXG4gICAgcmVwbHk6IDEsXG4gICAgcmFuZG9tbmVzczogMjYsXG4gICAgc3ByZWFkOiAwLjE1LFxuICAgIG1vYmlsaXR5OiAwLjk1LFxuICAgIHRyYXA6IDAuNzgsXG4gICAgZW5kZ2FtZTogMS40MixcbiAgfSxcbiAgc2VudGluZWw6IHtcbiAgICBhZHZhbmNlbWVudDogMC45LFxuICAgIGNhcHR1cmU6IDEuMTIsXG4gICAgc2FmZXR5OiAxLjcyLFxuICAgIHBvd2VyOiAwLjk1LFxuICAgIGNlbnRlcjogMS4yOCxcbiAgICB1bmxvY2s6IDEuMDUsXG4gICAgcmVwbHk6IDEuMzgsXG4gICAgcmFuZG9tbmVzczogMTgsXG4gICAgc3ByZWFkOiAwLjEyLFxuICAgIG1vYmlsaXR5OiAwLjg2LFxuICAgIHRyYXA6IDEuMDQsXG4gICAgZW5kZ2FtZTogMC44NCxcbiAgfSxcbiAgb3JhY2xlOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDEsXG4gICAgY2FwdHVyZTogMS4xMixcbiAgICBzYWZldHk6IDEuNDIsXG4gICAgcG93ZXI6IDEuMSxcbiAgICBjZW50ZXI6IDEuMTgsXG4gICAgdW5sb2NrOiAxLjA4LFxuICAgIHJlcGx5OiAxLjgsXG4gICAgcmFuZG9tbmVzczogOCxcbiAgICBzcHJlYWQ6IDAuMDgsXG4gICAgbW9iaWxpdHk6IDEuMDYsXG4gICAgdHJhcDogMS4yMixcbiAgICBlbmRnYW1lOiAxLjA4LFxuICB9LFxuICBhbWJ1c2hlcjoge1xuICAgIGFkdmFuY2VtZW50OiAwLjksXG4gICAgY2FwdHVyZTogMS40OCxcbiAgICBzYWZldHk6IDEuMDgsXG4gICAgcG93ZXI6IDEuNDYsXG4gICAgY2VudGVyOiAxLjA1LFxuICAgIHVubG9jazogMS4wMixcbiAgICByZXBseTogMS4zMixcbiAgICByYW5kb21uZXNzOiAxNCxcbiAgICBzcHJlYWQ6IDAuMSxcbiAgICBtb2JpbGl0eTogMS4xMixcbiAgICB0cmFwOiAxLjcyLFxuICAgIGVuZGdhbWU6IDAuOTIsXG4gIH0sXG4gIHR1cnRsZToge1xuICAgIGFkdmFuY2VtZW50OiAwLjg4LFxuICAgIGNhcHR1cmU6IDEuMDQsXG4gICAgc2FmZXR5OiAxLjU1LFxuICAgIHBvd2VyOiAxLjAyLFxuICAgIGNlbnRlcjogMS40OCxcbiAgICB1bmxvY2s6IDEuMTIsXG4gICAgcmVwbHk6IDEuNTIsXG4gICAgcmFuZG9tbmVzczogMTIsXG4gICAgc3ByZWFkOiAwLjEsXG4gICAgbW9iaWxpdHk6IDEuNTgsXG4gICAgdHJhcDogMS4yNCxcbiAgICBlbmRnYW1lOiAwLjg2LFxuICB9LFxuICBzdG9ybToge1xuICAgIGFkdmFuY2VtZW50OiAxLjE4LFxuICAgIGNhcHR1cmU6IDEuMzgsXG4gICAgc2FmZXR5OiAwLjk4LFxuICAgIHBvd2VyOiAxLjYyLFxuICAgIGNlbnRlcjogMS4wOCxcbiAgICB1bmxvY2s6IDEuMTgsXG4gICAgcmVwbHk6IDEuMjIsXG4gICAgcmFuZG9tbmVzczogMTgsXG4gICAgc3ByZWFkOiAwLjEzLFxuICAgIG1vYmlsaXR5OiAxLjM2LFxuICAgIHRyYXA6IDEuMjgsXG4gICAgZW5kZ2FtZTogMS4wMixcbiAgfSxcbiAgbWF0cmlhcmNoOiB7XG4gICAgYWR2YW5jZW1lbnQ6IDAuOTYsXG4gICAgY2FwdHVyZTogMS4xOCxcbiAgICBzYWZldHk6IDEuNjQsXG4gICAgcG93ZXI6IDEuMTgsXG4gICAgY2VudGVyOiAxLjIyLFxuICAgIHVubG9jazogMS4wOCxcbiAgICByZXBseTogMS42NixcbiAgICByYW5kb21uZXNzOiAxMCxcbiAgICBzcHJlYWQ6IDAuMDgsXG4gICAgbW9iaWxpdHk6IDEuMDIsXG4gICAgdHJhcDogMS4zNixcbiAgICBlbmRnYW1lOiAxLFxuICB9LFxuICBhbmFjb25kYToge1xuICAgIGFkdmFuY2VtZW50OiAxLjQ2LFxuICAgIGNhcHR1cmU6IDEsXG4gICAgc2FmZXR5OiAxLjI4LFxuICAgIHBvd2VyOiAxLjA0LFxuICAgIGNlbnRlcjogMC45NCxcbiAgICB1bmxvY2s6IDEuMDgsXG4gICAgcmVwbHk6IDEuNDQsXG4gICAgcmFuZG9tbmVzczogMTAsXG4gICAgc3ByZWFkOiAwLjA5LFxuICAgIG1vYmlsaXR5OiAwLjk4LFxuICAgIHRyYXA6IDEuMDIsXG4gICAgZW5kZ2FtZTogMS44NixcbiAgfSxcbiAgbWFuZHJpbGw6IHtcbiAgICBhZHZhbmNlbWVudDogMS4wNCxcbiAgICBjYXB0dXJlOiAxLjIyLFxuICAgIHNhZmV0eTogMS45LFxuICAgIHBvd2VyOiAwLjksXG4gICAgY2VudGVyOiAxLjQyLFxuICAgIHVubG9jazogMS4wOCxcbiAgICByZXBseTogMi4wOCxcbiAgICByYW5kb21uZXNzOiAzLFxuICAgIHNwcmVhZDogMC4wNCxcbiAgICBtb2JpbGl0eTogMS4wOCxcbiAgICB0cmFwOiAxLjQyLFxuICAgIGVuZGdhbWU6IDEuODYsXG4gIH0sXG59O1xuXG5jb25zdCBERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFk6IFJlY29yZDxDaGVzc2ltYWxzQm90RGlmZmljdWx0eSwgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZD4gPSB7XG4gIGVhc3k6ICdleHBsb3JlcicsXG4gIG5vcm1hbDogJ2h1bnRlcicsXG4gIGhhcmQ6ICdzdHJhdGVnaXN0JyxcbiAgbWFzdGVyOiAnbWFuZHJpbGwnLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDaGVzc2ltYWxzR2FtZU9wdGlvbnMge1xuICBpZD86IHN0cmluZztcbiAgbW9kZT86IENoZXNzaW1hbHNHYW1lTW9kZTtcbiAgc3RhdHVzPzogQ2hlc3NpbWFsc0dhbWVTdGF0dXM7XG4gIG9ubGluZT86IENoZXNzaW1hbHNPbmxpbmVTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoZXNzaW1hbHNHYW1lKFxuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemUgPSA2LFxuICBvcHRpb25zOiBDcmVhdGVDaGVzc2ltYWxzR2FtZU9wdGlvbnMgPSB7fVxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXTtcbiAgY29uc3Qgd2hpdGVSb3cgPSBib2FyZFNpemUgLSAyO1xuICBjb25zdCBibGFja1JvdyA9IDE7XG5cbiAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgYm9hcmRTaXplOyBjb2wgKz0gMSkge1xuICAgIHBpZWNlcy5wdXNoKHtcbiAgICAgIGlkOiBgVyR7Y29sICsgMX1gLFxuICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICBwb3NpdGlvbjogeyByb3c6IHdoaXRlUm93LCBjb2wgfSxcbiAgICAgIGNhcHR1cmVkOiBmYWxzZSxcbiAgICB9KTtcbiAgICBwaWVjZXMucHVzaCh7XG4gICAgICBpZDogYEIke2NvbCArIDF9YCxcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgcG9zaXRpb246IHsgcm93OiBibGFja1JvdywgY29sIH0sXG4gICAgICBjYXB0dXJlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHJlZnJlc2hDaGVzc2ltYWxzUG93ZXJVbmxvY2tzKHtcbiAgICBpZDogb3B0aW9ucy5pZCA/PyBjcmVhdGVMb2NhbElkKCksXG4gICAgbW9kZTogb3B0aW9ucy5tb2RlID8/ICdsb2NhbCcsXG4gICAgYm9hcmRTaXplLFxuICAgIHN0YXR1czogb3B0aW9ucy5zdGF0dXMgPz8gJ2luX3Byb2dyZXNzJyxcbiAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICBwaWVjZXMsXG4gICAgcGxheWVyczoge1xuICAgICAgd2hpdGU6IHsgY29sb3I6ICd3aGl0ZScsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgICAgYmxhY2s6IHsgY29sb3I6ICdibGFjaycsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgIH0sXG4gICAgbW92ZUNvdW50OiAwLFxuICAgIG9ubGluZTogb3B0aW9ucy5vbmxpbmUsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbW92ZUhpc3Rvcnk6IFtjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHN0YXRlKV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVzc2ltYWxzUGllY2VBdChcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb25cbik6IENoZXNzaW1hbHNQaWVjZSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQoXG4gICAgcGllY2UgPT5cbiAgICAgICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5wb3NpdGlvbi5yb3cgPT09IHBvc2l0aW9uLnJvdyAmJiBwaWVjZS5wb3NpdGlvbi5jb2wgPT09IHBvc2l0aW9uLmNvbFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBwaWVjZUlkOiBzdHJpbmcsXG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgaWYgKHN0YXRlLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHBpZWNlID0gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gcGllY2VJZCAmJiAhaXRlbS5jYXB0dXJlZCk7XG4gIGlmICghcGllY2UgfHwgcGllY2UuY29sb3IgIT09IHN0YXRlLmN1cnJlbnRUdXJuKSByZXR1cm4gW107XG5cbiAgaWYgKGFuaW1hbCkge1xuICAgIGNvbnN0IHBsYXllciA9IHN0YXRlLnBsYXllcnNbcGllY2UuY29sb3JdO1xuICAgIGlmICghcGxheWVyLnBvd2VyVW5sb2NrZWQgfHwgIWhhc1Bvd2VyQ2FyZFVzZShwbGF5ZXIuY2FyZHNbYW5pbWFsXSkpIHJldHVybiBbXTtcbiAgICByZXR1cm4gZ2V0UG93ZXJNb3ZlcyhzdGF0ZSwgcGllY2UsIGFuaW1hbCk7XG4gIH1cblxuICByZXR1cm4gZ2V0QmFzaWNNb3ZlcyhzdGF0ZSwgcGllY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gc3RhdGUuY3VycmVudFR1cm5cbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBpZiAoc3RhdGUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gW107XG5cbiAgY29uc3QgdHVyblN0YXRlID0gY29sb3IgPT09IHN0YXRlLmN1cnJlbnRUdXJuID8gc3RhdGUgOiB7IC4uLnN0YXRlLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgY29uc3QgcGxheWVyID0gdHVyblN0YXRlLnBsYXllcnNbY29sb3JdO1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcGllY2Ugb2YgYWN0aXZlUGllY2VzKHR1cm5TdGF0ZSkpIHtcbiAgICBpZiAocGllY2UuY2FwdHVyZWQgfHwgcGllY2UuY29sb3IgIT09IGNvbG9yKSBjb250aW51ZTtcblxuICAgIG1vdmVzLnB1c2goLi4uZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCkpO1xuICAgIGlmICghcGxheWVyLnBvd2VyVW5sb2NrZWQpIGNvbnRpbnVlO1xuXG4gICAgZm9yIChjb25zdCBhbmltYWwgb2YgQU5JTUFMUykge1xuICAgICAgaWYgKCFoYXNQb3dlckNhcmRVc2UocGxheWVyLmNhcmRzW2FuaW1hbF0pKSBjb250aW51ZTtcbiAgICAgIG1vdmVzLnB1c2goLi4uZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCwgYW5pbWFsKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSA9ICdub3JtYWwnLFxuICBwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQgPSBERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFlbZGlmZmljdWx0eV0sXG4gIG9wdGlvbnM6IENoZXNzaW1hbHNCb3RPcHRpb25zID0ge31cbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbW92ZXMgPSBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhzdGF0ZSk7XG4gIGlmIChtb3Zlcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2VTdHlsZSA9XG4gICAgQk9UX1NUWUxFU1twcm9maWxlSWRdID8/IEJPVF9TVFlMRVNbREVGQVVMVF9CT1RfUFJPRklMRV9CWV9ESUZGSUNVTFRZW2RpZmZpY3VsdHldXTtcbiAgY29uc3QgY2hhbGxlbmdlUHJlc3N1cmUgPSBnZXRDaGFsbGVuZ2VQcmVzc3VyZShvcHRpb25zLmNoYWxsZW5nZVJvdW5kKTtcbiAgY29uc3Qgc3R5bGUgPSB0dW5lQm90U3R5bGUoYmFzZVN0eWxlLCBkaWZmaWN1bHR5LCBjaGFsbGVuZ2VQcmVzc3VyZSwgb3B0aW9ucy5uaWdodG1hcmVNb2RlKTtcblxuICBjb25zdCBxdWlja1Njb3JlZCA9IG1vdmVzXG4gICAgLm1hcChtb3ZlID0+ICh7XG4gICAgICBtb3ZlLFxuICAgICAgc2NvcmU6IHNjb3JlQm90TW92ZShcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIG1vdmUsXG4gICAgICAgIGRpZmZpY3VsdHksXG4gICAgICAgIHN0eWxlLFxuICAgICAgICBjaGFsbGVuZ2VQcmVzc3VyZSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIG9wdGlvbnMubmlnaHRtYXJlTW9kZVxuICAgICAgKSxcbiAgICB9KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYi5zY29yZSAtIGEuc2NvcmUpO1xuICBjb25zdCBsb29rYWhlYWRMaW1pdCA9XG4gICAgb3B0aW9ucy5uaWdodG1hcmVNb2RlID09PSAnbWFuZHJpbGwnIHx8IGRpZmZpY3VsdHkgPT09ICdtYXN0ZXInXG4gICAgICA/IDQ4XG4gICAgICA6IGRpZmZpY3VsdHkgPT09ICdoYXJkJ1xuICAgICAgICA/IDMyXG4gICAgICAgIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCdcbiAgICAgICAgICA/IDI0XG4gICAgICAgICAgOiAwO1xuICBjb25zdCBzY29yZWQgPSBxdWlja1Njb3JlZFxuICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgbW92ZTogaXRlbS5tb3ZlLFxuICAgICAgc2NvcmU6XG4gICAgICAgIGluZGV4IDwgbG9va2FoZWFkTGltaXRcbiAgICAgICAgICA/IHNjb3JlQm90TW92ZVdpdGhMb29rYWhlYWQoXG4gICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICBpdGVtLm1vdmUsXG4gICAgICAgICAgICAgIGRpZmZpY3VsdHksXG4gICAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgICBjaGFsbGVuZ2VQcmVzc3VyZSxcbiAgICAgICAgICAgICAgb3B0aW9ucy5uaWdodG1hcmVNb2RlXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBpdGVtLnNjb3JlLFxuICAgIH0pKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSk7XG5cbiAgaWYgKGRpZmZpY3VsdHkgPT09ICdlYXN5Jykge1xuICAgIGNvbnN0IHBsYXlhYmxlID0gc2NvcmVkLmZpbHRlcihpdGVtID0+IGl0ZW0uc2NvcmUgPiAtMzAwMCk7XG4gICAgcmV0dXJuIHBpY2tOb2lzeUJvdE1vdmUocGxheWFibGUubGVuZ3RoID8gcGxheWFibGUgOiBzY29yZWQsIDAuNTUpO1xuICB9XG5cbiAgaWYgKGRpZmZpY3VsdHkgPT09ICdub3JtYWwnKSB7XG4gICAgcmV0dXJuIHNjb3JlZFswXT8ubW92ZTtcbiAgfVxuXG4gIGNvbnN0IHdpbm5pbmdNb3ZlID0gc2NvcmVkLmZpbmQoaXRlbSA9PiBpdGVtLnNjb3JlID49IDEwMDAwKTtcbiAgaWYgKHdpbm5pbmdNb3ZlKSByZXR1cm4gd2lubmluZ01vdmUubW92ZTtcblxuICBjb25zdCBvcHBvbmVudFdpbm5pbmdUYXJnZXRzID0gbmV3IFNldChcbiAgICBnZXRJbW1lZGlhdGVXaW5uaW5nTW92ZXMoc3RhdGUsIG90aGVyQ29sb3Ioc3RhdGUuY3VycmVudFR1cm4pKS5tYXAobW92ZSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSlcbiAgKTtcbiAgaWYgKG9wcG9uZW50V2lubmluZ1RhcmdldHMuc2l6ZSA+IDApIHtcbiAgICBjb25zdCBibG9ja2luZ01vdmUgPSBzY29yZWQuZmluZChcbiAgICAgIGl0ZW0gPT4gaXRlbS5tb3ZlLmNhcHR1cmVzUGllY2VJZCB8fCBvcHBvbmVudFdpbm5pbmdUYXJnZXRzLmhhcyhwb3NpdGlvbktleShpdGVtLm1vdmUudG8pKVxuICAgICk7XG4gICAgaWYgKGJsb2NraW5nTW92ZSkgcmV0dXJuIGJsb2NraW5nTW92ZS5tb3ZlO1xuICB9XG5cbiAgY29uc3QgY2hhbGxlbmdlQ2FwdHVyZSA9IGNob29zZUNoYWxsZW5nZUJhc2ljQ2FwdHVyZShzY29yZWQsIGNoYWxsZW5nZVByZXNzdXJlKTtcbiAgaWYgKGNoYWxsZW5nZUNhcHR1cmUpIHJldHVybiBjaGFsbGVuZ2VDYXB0dXJlO1xuXG4gIGNvbnN0IG5pZ2h0bWFyZUNhcHR1cmUgPSBjaG9vc2VOaWdodG1hcmVDYXB0dXJlKHNjb3JlZCwgb3B0aW9ucy5uaWdodG1hcmVNb2RlKTtcbiAgaWYgKG5pZ2h0bWFyZUNhcHR1cmUpIHJldHVybiBuaWdodG1hcmVDYXB0dXJlO1xuXG4gIGNvbnN0IGNvbnNlcnZhdGl2ZUNhcHR1cmUgPSBjaG9vc2VDb25zZXJ2YXRpdmVIYXJkQ2FwdHVyZShzdGF0ZSwgc2NvcmVkKTtcbiAgaWYgKGNvbnNlcnZhdGl2ZUNhcHR1cmUpIHJldHVybiBjb25zZXJ2YXRpdmVDYXB0dXJlO1xuXG4gIHJldHVybiBzY29yZWRbMF0/Lm1vdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNoZXNzaW1hbHNNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY2FuZGlkYXRlOiBDaGVzc2ltYWxzTW92ZVxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IGxlZ2FsTW92ZSA9IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHN0YXRlLCBjYW5kaWRhdGUucGllY2VJZCwgY2FuZGlkYXRlLmFuaW1hbCkuZmluZChcbiAgICBtb3ZlID0+IHNhbWVQb3NpdGlvbihtb3ZlLmZyb20sIGNhbmRpZGF0ZS5mcm9tKSAmJiBzYW1lUG9zaXRpb24obW92ZS50bywgY2FuZGlkYXRlLnRvKVxuICApO1xuXG4gIGlmICghbGVnYWxNb3ZlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDSEVTU0lNQUxTX0lMTEVHQUxfTU9WRScpO1xuICB9XG5cbiAgY29uc3QgbW92ZWRQaWVjZSA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmluZChwaWVjZSA9PiBwaWVjZS5pZCA9PT0gbGVnYWxNb3ZlLnBpZWNlSWQpO1xuICBpZiAoIW1vdmVkUGllY2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NIRVNTSU1BTFNfUElFQ0VfTk9UX0ZPVU5EJyk7XG4gIH1cblxuICBjb25zdCBwaWVjZXMgPSBhY3RpdmVQaWVjZXMoc3RhdGUpLm1hcChwaWVjZSA9PiB7XG4gICAgaWYgKHBpZWNlLmlkID09PSBsZWdhbE1vdmUucGllY2VJZCkge1xuICAgICAgcmV0dXJuIHsgLi4ucGllY2UsIHBvc2l0aW9uOiB7IC4uLmxlZ2FsTW92ZS50byB9IH07XG4gICAgfVxuICAgIGlmIChwaWVjZS5pZCA9PT0gbGVnYWxNb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgcmV0dXJuIHsgLi4ucGllY2UsIGNhcHR1cmVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJldHVybiBwaWVjZTtcbiAgfSk7XG5cbiAgY29uc3QgcGxheWVycyA9IHtcbiAgICAuLi5zdGF0ZS5wbGF5ZXJzLFxuICAgIFttb3ZlZFBpZWNlLmNvbG9yXToge1xuICAgICAgLi4uc3RhdGUucGxheWVyc1ttb3ZlZFBpZWNlLmNvbG9yXSxcbiAgICAgIGNhcmRzOlxuICAgICAgICBsZWdhbE1vdmUua2luZCA9PT0gJ3Bvd2VyJyAmJiBsZWdhbE1vdmUuYW5pbWFsXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHMsXG4gICAgICAgICAgICAgIFtsZWdhbE1vdmUuYW5pbWFsXTogY29uc3VtZVBvd2VyQ2FyZFVzZShcbiAgICAgICAgICAgICAgICBzdGF0ZS5wbGF5ZXJzW21vdmVkUGllY2UuY29sb3JdLmNhcmRzW2xlZ2FsTW92ZS5hbmltYWxdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBzdGF0ZS5wbGF5ZXJzW21vdmVkUGllY2UuY29sb3JdLmNhcmRzLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gcmVmcmVzaENoZXNzaW1hbHNQb3dlclVubG9ja3Moe1xuICAgIC4uLnN0YXRlLFxuICAgIHBpZWNlcyxcbiAgICBwbGF5ZXJzLFxuICAgIGN1cnJlbnRUdXJuOiBvdGhlckNvbG9yKG1vdmVkUGllY2UuY29sb3IpLFxuICAgIG1vdmVDb3VudDogc3RhdGUubW92ZUNvdW50ICsgMSxcbiAgICBsYXN0TW92ZTogbGVnYWxNb3ZlLFxuICB9KTtcblxuICBjb25zdCBwcm9tb3RlZCA9IGlzUHJvbW90aW9uUm93KG5leHRTdGF0ZS5ib2FyZFNpemUsIG1vdmVkUGllY2UuY29sb3IsIGxlZ2FsTW92ZS50byk7XG4gIGNvbnN0IGVuZW15UGllY2VzID0gYWN0aXZlUGllY2VzKG5leHRTdGF0ZSkuZmlsdGVyKFxuICAgIHBpZWNlID0+IHBpZWNlLmNvbG9yICE9PSBtb3ZlZFBpZWNlLmNvbG9yICYmICFwaWVjZS5jYXB0dXJlZFxuICApO1xuICBjb25zdCBlbmVteUhhc0xlZ2FsTW92ZXMgPVxuICAgIGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKG5leHRTdGF0ZSwgbmV4dFN0YXRlLmN1cnJlbnRUdXJuKS5sZW5ndGggPiAwO1xuXG4gIGNvbnN0IHJlc29sdmVkU3RhdGUgPVxuICAgIHByb21vdGVkIHx8IGVuZW15UGllY2VzLmxlbmd0aCA9PT0gMCB8fCAhZW5lbXlIYXNMZWdhbE1vdmVzXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5uZXh0U3RhdGUsXG4gICAgICAgICAgc3RhdHVzOiAnZmluaXNoZWQnIGFzIGNvbnN0LFxuICAgICAgICAgIHdpbm5lcjogbW92ZWRQaWVjZS5jb2xvcixcbiAgICAgICAgICB3aW5uZXJSZWFzb246IHByb21vdGVkXG4gICAgICAgICAgICA/ICgncHJvbW90aW9uJyBhcyBjb25zdClcbiAgICAgICAgICAgIDogZW5lbXlQaWVjZXMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgID8gKCdlbGltaW5hdGlvbicgYXMgY29uc3QpXG4gICAgICAgICAgICAgIDogKCdibG9ja2VkJyBhcyBjb25zdCksXG4gICAgICAgIH1cbiAgICAgIDogbmV4dFN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucmVzb2x2ZWRTdGF0ZSxcbiAgICBtb3ZlSGlzdG9yeTogWy4uLmVuc3VyZU1vdmVIaXN0b3J5KHN0YXRlKSwgY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShyZXNvbHZlZFN0YXRlLCBsZWdhbE1vdmUpXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGVudHJ5OiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeVxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IGJhc2VTdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgZGVsZXRlIGJhc2VTdGF0ZS5sYXN0TW92ZTtcbiAgZGVsZXRlIGJhc2VTdGF0ZS53aW5uZXI7XG4gIGRlbGV0ZSBiYXNlU3RhdGUud2lubmVyUmVhc29uO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VTdGF0ZSxcbiAgICBzdGF0dXM6IGVudHJ5LnN0YXR1cyxcbiAgICBjdXJyZW50VHVybjogZW50cnkuY3VycmVudFR1cm4sXG4gICAgcGllY2VzOiBjbG9uZVBpZWNlcyhlbnRyeS5waWVjZXMpLFxuICAgIG1vdmVDb3VudDogZW50cnkubW92ZU51bWJlcixcbiAgICAuLi4oZW50cnkud2lubmVyID8geyB3aW5uZXI6IGVudHJ5Lndpbm5lciB9IDoge30pLFxuICAgIC4uLihlbnRyeS53aW5uZXJSZWFzb24gPyB7IHdpbm5lclJlYXNvbjogZW50cnkud2lubmVyUmVhc29uIH0gOiB7fSksXG4gICAgLi4uKGVudHJ5Lm1vdmUgPyB7IGxhc3RNb3ZlOiBzYW5pdGl6ZU1vdmUoZW50cnkubW92ZSkgfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU/OiBDaGVzc2ltYWxzTW92ZVxuKTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnkge1xuICByZXR1cm4ge1xuICAgIG1vdmVOdW1iZXI6IHN0YXRlLm1vdmVDb3VudCxcbiAgICBwaWVjZXM6IGNsb25lUGllY2VzKHN0YXRlLnBpZWNlcyksXG4gICAgY3VycmVudFR1cm46IHN0YXRlLmN1cnJlbnRUdXJuLFxuICAgIHN0YXR1czogc3RhdGUuc3RhdHVzLFxuICAgIC4uLihtb3ZlID8geyBtb3ZlOiBzYW5pdGl6ZU1vdmUobW92ZSkgfSA6IHt9KSxcbiAgICAuLi4oc3RhdGUud2lubmVyID8geyB3aW5uZXI6IHN0YXRlLndpbm5lciB9IDoge30pLFxuICAgIC4uLihzdGF0ZS53aW5uZXJSZWFzb24gPyB7IHdpbm5lclJlYXNvbjogc3RhdGUud2lubmVyUmVhc29uIH0gOiB7fSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGVuc3VyZU1vdmVIaXN0b3J5KHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnlbXSB7XG4gIGlmIChzdGF0ZS5tb3ZlSGlzdG9yeT8ubGVuZ3RoKSByZXR1cm4gc3RhdGUubW92ZUhpc3RvcnkubWFwKGNsb25lTW92ZUhpc3RvcnlFbnRyeSk7XG4gIHJldHVybiBbY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShzdGF0ZSldO1xufVxuXG5mdW5jdGlvbiBjbG9uZU1vdmVIaXN0b3J5RW50cnkoZW50cnk6IENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5KTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnkge1xuICByZXR1cm4ge1xuICAgIC4uLmVudHJ5LFxuICAgIHBpZWNlczogY2xvbmVQaWVjZXMoZW50cnkucGllY2VzKSxcbiAgICAuLi4oZW50cnkubW92ZSA/IHsgbW92ZTogc2FuaXRpemVNb3ZlKGVudHJ5Lm1vdmUpIH0gOiB7fSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsb25lUGllY2VzKHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10pOiBDaGVzc2ltYWxzUGllY2VbXSB7XG4gIHJldHVybiBwaWVjZXMubWFwKHBpZWNlID0+ICh7XG4gICAgLi4ucGllY2UsXG4gICAgcG9zaXRpb246IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZU1vdmUobW92ZTogQ2hlc3NpbWFsc01vdmUpOiBDaGVzc2ltYWxzTW92ZSB7XG4gIHJldHVybiB7XG4gICAgcGllY2VJZDogbW92ZS5waWVjZUlkLFxuICAgIGZyb206IHsgLi4ubW92ZS5mcm9tIH0sXG4gICAgdG86IHsgLi4ubW92ZS50byB9LFxuICAgIGtpbmQ6IG1vdmUua2luZCxcbiAgICAuLi4obW92ZS5hbmltYWwgPyB7IGFuaW1hbDogbW92ZS5hbmltYWwgfSA6IHt9KSxcbiAgICAuLi4obW92ZS5jYXB0dXJlc1BpZWNlSWQgPyB7IGNhcHR1cmVzUGllY2VJZDogbW92ZS5jYXB0dXJlc1BpZWNlSWQgfSA6IHt9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2lnbkNoZXNzaW1hbHNHYW1lKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvclxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IHJlc2lnbmVkU3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3RhdHVzOiAnZmluaXNoZWQnLFxuICAgIHdpbm5lcjogb3RoZXJDb2xvcihjb2xvciksXG4gICAgd2lubmVyUmVhc29uOiAncmVzaWduYXRpb24nLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgLi4ucmVzaWduZWRTdGF0ZSxcbiAgICBtb3ZlSGlzdG9yeTogWy4uLmVuc3VyZU1vdmVIaXN0b3J5KHN0YXRlKSwgY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShyZXNpZ25lZFN0YXRlKV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbktleShwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3Bvc2l0aW9uLnJvd306JHtwb3NpdGlvbi5jb2x9YDtcbn1cblxuZnVuY3Rpb24gaGFzUG93ZXJDYXJkVXNlKGNhcmQ6IHsgdXNlZDogYm9vbGVhbjsgdXNlc1JlbWFpbmluZz86IG51bWJlciB9KTogYm9vbGVhbiB7XG4gIHJldHVybiAoY2FyZC51c2VzUmVtYWluaW5nID8/IChjYXJkLnVzZWQgPyAwIDogMSkpID4gMDtcbn1cblxuZnVuY3Rpb24gY29uc3VtZVBvd2VyQ2FyZFVzZTxUIGV4dGVuZHMgeyB1c2VkOiBib29sZWFuOyB1c2VzUmVtYWluaW5nPzogbnVtYmVyIH0+KGNhcmQ6IFQpOiBUIHtcbiAgY29uc3QgcmVtYWluaW5nID0gTWF0aC5tYXgoMCwgKGNhcmQudXNlc1JlbWFpbmluZyA/PyAoY2FyZC51c2VkID8gMCA6IDEpKSAtIDEpO1xuICByZXR1cm4ge1xuICAgIC4uLmNhcmQsXG4gICAgdXNlZDogcmVtYWluaW5nIDw9IDAsXG4gICAgLi4uKGNhcmQudXNlc1JlbWFpbmluZyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHVzZXNSZW1haW5pbmc6IHJlbWFpbmluZyB9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2FyZHMoKSB7XG4gIHJldHVybiBBTklNQUxTLnJlZHVjZShcbiAgICAoY2FyZHMsIHR5cGUpID0+ICh7XG4gICAgICAuLi5jYXJkcyxcbiAgICAgIFt0eXBlXTogeyB0eXBlLCB1c2VkOiBmYWxzZSB9LFxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxcbiAgICAgIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICAgICAgeyB0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTsgdXNlZDogYm9vbGVhbjsgdXNlc1JlbWFpbmluZz86IG51bWJlciB9XG4gICAgPlxuICApO1xufVxuXG5mdW5jdGlvbiBhY3RpdmVQaWVjZXMoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzUGllY2VbXSB7XG4gIHJldHVybiBzdGF0ZS5waWVjZXMuZmlsdGVyKChwaWVjZSk6IHBpZWNlIGlzIENoZXNzaW1hbHNQaWVjZSA9PiAhIXBpZWNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0QmFzaWNNb3ZlcyhzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGllY2U6IENoZXNzaW1hbHNQaWVjZSk6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBjb25zdCBkaXJlY3Rpb24gPSBwaWVjZS5jb2xvciA9PT0gJ3doaXRlJyA/IC0xIDogMTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcbiAgY29uc3QgZm9yd2FyZCA9IHsgcm93OiBwaWVjZS5wb3NpdGlvbi5yb3cgKyBkaXJlY3Rpb24sIGNvbDogcGllY2UucG9zaXRpb24uY29sIH07XG5cbiAgaWYgKGlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCBmb3J3YXJkKSAmJiAhZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIGZvcndhcmQpKSB7XG4gICAgbW92ZXMucHVzaCh7XG4gICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgIGZyb206IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgICAgIHRvOiBmb3J3YXJkLFxuICAgICAga2luZDogJ2Jhc2ljJyxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgY29sT2Zmc2V0IG9mIFstMSwgMV0pIHtcbiAgICBjb25zdCB0YXJnZXQgPSB7IHJvdzogcGllY2UucG9zaXRpb24ucm93ICsgZGlyZWN0aW9uLCBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGNvbE9mZnNldCB9O1xuICAgIGNvbnN0IHRhcmdldFBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIHRhcmdldCk7XG4gICAgaWYgKFxuICAgICAgaXNJbnNpZGVCb2FyZChzdGF0ZS5ib2FyZFNpemUsIHRhcmdldCkgJiZcbiAgICAgIHRhcmdldFBpZWNlICYmXG4gICAgICB0YXJnZXRQaWVjZS5jb2xvciAhPT0gcGllY2UuY29sb3IgJiZcbiAgICAgICFpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIHBpZWNlLmNvbG9yLCB0YXJnZXQpXG4gICAgKSB7XG4gICAgICBtb3Zlcy5wdXNoKHtcbiAgICAgICAgcGllY2VJZDogcGllY2UuaWQsXG4gICAgICAgIGZyb206IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgICAgICAgdG86IHRhcmdldCxcbiAgICAgICAga2luZDogJ2Jhc2ljJyxcbiAgICAgICAgY2FwdHVyZXNQaWVjZUlkOiB0YXJnZXRQaWVjZS5pZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtb3Zlcztcbn1cblxuZnVuY3Rpb24gZ2V0UG93ZXJNb3ZlcyhcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIHBpZWNlOiBDaGVzc2ltYWxzUGllY2UsXG4gIGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGVcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBpZiAoYW5pbWFsID09PSAna2FuZ2Fyb28nKSB7XG4gICAgcmV0dXJuIGdldEthbmdhcm9vTW92ZXMoc3RhdGUsIHBpZWNlKTtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdGlvbnMgPSBnZXRQb3dlckRpcmVjdGlvbnMoYW5pbWFsKTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGRpcmVjdGlvbiBvZiBkaXJlY3Rpb25zKSB7XG4gICAgZm9yIChsZXQgZGlzdGFuY2UgPSAxOyBkaXN0YW5jZSA8IHN0YXRlLmJvYXJkU2l6ZTsgZGlzdGFuY2UgKz0gMSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0ge1xuICAgICAgICByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGRpcmVjdGlvbi5yb3cgKiBkaXN0YW5jZSxcbiAgICAgICAgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgKyBkaXJlY3Rpb24uY29sICogZGlzdGFuY2UsXG4gICAgICB9O1xuICAgICAgaWYgKCFpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgdGFyZ2V0KSkgYnJlYWs7XG4gICAgICBpZiAoaXNQcm9tb3Rpb25Sb3coc3RhdGUuYm9hcmRTaXplLCBwaWVjZS5jb2xvciwgdGFyZ2V0KSkgYnJlYWs7XG5cbiAgICAgIGNvbnN0IHRhcmdldFBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIHRhcmdldCk7XG4gICAgICBpZiAodGFyZ2V0UGllY2U/LmNvbG9yID09PSBwaWVjZS5jb2xvcikgYnJlYWs7XG5cbiAgICAgIG1vdmVzLnB1c2goe1xuICAgICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgICB0bzogdGFyZ2V0LFxuICAgICAgICBraW5kOiAncG93ZXInLFxuICAgICAgICBhbmltYWwsXG4gICAgICAgIC4uLih0YXJnZXRQaWVjZSA/IHsgY2FwdHVyZXNQaWVjZUlkOiB0YXJnZXRQaWVjZS5pZCB9IDoge30pLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0YXJnZXRQaWVjZSkgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5mdW5jdGlvbiBnZXRLYW5nYXJvb01vdmVzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwaWVjZTogQ2hlc3NpbWFsc1BpZWNlKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGNvbnN0IG1vdmVzOiBDaGVzc2ltYWxzTW92ZVtdID0gW107XG4gIGNvbnN0IGp1bXBzID0gW1xuICAgIHsgcm93OiAtMiwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAtMiwgY29sOiAxIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IC0yIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IDIgfSxcbiAgICB7IHJvdzogMSwgY29sOiAtMiB9LFxuICAgIHsgcm93OiAxLCBjb2w6IDIgfSxcbiAgICB7IHJvdzogMiwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAyLCBjb2w6IDEgfSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IGp1bXAgb2YganVtcHMpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB7XG4gICAgICByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGp1bXAucm93LFxuICAgICAgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgKyBqdW1wLmNvbCxcbiAgICB9O1xuICAgIGlmICghaXNJbnNpZGVCb2FyZChzdGF0ZS5ib2FyZFNpemUsIHRhcmdldCkpIGNvbnRpbnVlO1xuICAgIGlmIChpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIHBpZWNlLmNvbG9yLCB0YXJnZXQpKSBjb250aW51ZTtcblxuICAgIGNvbnN0IHRhcmdldFBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIHRhcmdldCk7XG4gICAgaWYgKHRhcmdldFBpZWNlPy5jb2xvciA9PT0gcGllY2UuY29sb3IpIGNvbnRpbnVlO1xuXG4gICAgbW92ZXMucHVzaCh7XG4gICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgIGZyb206IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgICAgIHRvOiB0YXJnZXQsXG4gICAgICBraW5kOiAncG93ZXInLFxuICAgICAgYW5pbWFsOiAna2FuZ2Fyb28nLFxuICAgICAgLi4uKHRhcmdldFBpZWNlID8geyBjYXB0dXJlc1BpZWNlSWQ6IHRhcmdldFBpZWNlLmlkIH0gOiB7fSksXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmZ1bmN0aW9uIHNjb3JlQm90TW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgc3R5bGU6IENoZXNzaW1hbHNCb3RTdHlsZSxcbiAgY2hhbGxlbmdlUHJlc3N1cmUgPSAwLFxuICBpbmNsdWRlVGFjdGljYWxQcmVzc3VyZSA9IHRydWUsXG4gIG5pZ2h0bWFyZU1vZGU6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlID0gJ25vbmUnXG4pOiBudW1iZXIge1xuICBjb25zdCBjb2xvciA9IHN0YXRlLmN1cnJlbnRUdXJuO1xuICBjb25zdCB0YXJnZXRQaWVjZSA9IG1vdmUuY2FwdHVyZXNQaWVjZUlkXG4gICAgPyBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQocGllY2UgPT4gcGllY2UuaWQgPT09IG1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBhZHZhbmNlbWVudCA9IGNvbG9yID09PSAnd2hpdGUnID8gc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93IDogbW92ZS50by5yb3c7XG4gIGxldCBzY29yZSA9IGFkdmFuY2VtZW50ICogMjQgKiBzdHlsZS5hZHZhbmNlbWVudDtcbiAgY29uc3Qgc3RlcHNUb1Byb21vdGlvbiA9IGNvbG9yID09PSAnd2hpdGUnID8gbW92ZS50by5yb3cgOiBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gbW92ZS50by5yb3c7XG4gIHNjb3JlICs9XG4gICAgTWF0aC5tYXgoMCwgc3RhdGUuYm9hcmRTaXplIC0gMSAtIHN0ZXBzVG9Qcm9tb3Rpb24pICpcbiAgICAxMCAqXG4gICAgY2hhbGxlbmdlUHJlc3N1cmUgKlxuICAgIHN0eWxlLmFkdmFuY2VtZW50O1xuXG4gIGlmIChtb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgaXNQcm9tb3Rpb25Sb3coc3RhdGUuYm9hcmRTaXplLCBjb2xvciwgbW92ZS50bykpIHtcbiAgICBzY29yZSArPSAxMDAwMCArIDI1MDAgKiBjaGFsbGVuZ2VQcmVzc3VyZTtcbiAgfVxuICBpZiAobmlnaHRtYXJlTW9kZSA9PT0gJ2h1bnQnICYmIHRhcmdldFBpZWNlKSB7XG4gICAgc2NvcmUgKz0gKG1vdmUua2luZCA9PT0gJ3Bvd2VyJyA/IDc2MCA6IDYyMCkgKiBzdHlsZS5jYXB0dXJlO1xuICB9XG4gIGlmICh0YXJnZXRQaWVjZSkge1xuICAgIHNjb3JlICs9ICg1MjAgKyAxODAgKiBjaGFsbGVuZ2VQcmVzc3VyZSkgKiBzdHlsZS5jYXB0dXJlO1xuICAgIGlmIChtb3ZlLmtpbmQgPT09ICdiYXNpYycpIHNjb3JlICs9IDE2MCAqIGNoYWxsZW5nZVByZXNzdXJlICogc3R5bGUuY2FwdHVyZTtcbiAgICBjb25zdCB0YXJnZXRBZHZhbmNlbWVudCA9XG4gICAgICB0YXJnZXRQaWVjZS5jb2xvciA9PT0gJ3doaXRlJ1xuICAgICAgICA/IHN0YXRlLmJvYXJkU2l6ZSAtIDEgLSB0YXJnZXRQaWVjZS5wb3NpdGlvbi5yb3dcbiAgICAgICAgOiB0YXJnZXRQaWVjZS5wb3NpdGlvbi5yb3c7XG4gICAgc2NvcmUgKz0gdGFyZ2V0QWR2YW5jZW1lbnQgKiAoMTYgKyA4ICogY2hhbGxlbmdlUHJlc3N1cmUpICogc3R5bGUuY2FwdHVyZTtcbiAgfVxuICBpZiAobW92ZS5raW5kID09PSAncG93ZXInKSB7XG4gICAgc2NvcmUgKz1cbiAgICAgICh0YXJnZXRQaWVjZSA/IDEyMCA6IGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IC02MCAtIDE3MCAqIGNoYWxsZW5nZVByZXNzdXJlIDogLTMwKSAqXG4gICAgICBzdHlsZS5wb3dlcjtcbiAgfVxuICBpZiAobmlnaHRtYXJlTW9kZSA9PT0gJ21hbmRyaWxsJyAmJiBtb3ZlLmtpbmQgPT09ICdwb3dlcicpIHtcbiAgICBzY29yZSArPSBzY29yZU1hbmRyaWxsUG93ZXJQYXRpZW5jZShzdGF0ZSwgbW92ZSwgdGFyZ2V0UGllY2UsIHN0eWxlKTtcbiAgfVxuICBpZiAobW92ZS5hbmltYWwgPT09ICdsaW9uJylcbiAgICBzY29yZSArPSBuaWdodG1hcmVNb2RlID09PSAncHJpZGUnID8gMjYwICogc3R5bGUucG93ZXIgOiAtMjAgKiBzdHlsZS5wb3dlcjtcbiAgaWYgKG1vdmUuYW5pbWFsID09PSAna2FuZ2Fyb28nKSBzY29yZSArPSAxNCAqIHN0eWxlLnBvd2VyO1xuICBpZiAod291bGRVbmxvY2tQb3dlcihzdGF0ZSwgY29sb3IsIG1vdmUudG8pKSBzY29yZSArPSA5MCAqIHN0eWxlLnVubG9jaztcbiAgaWYgKGluY2x1ZGVUYWN0aWNhbFByZXNzdXJlICYmIHN0YXRlLmJvYXJkU2l6ZSA8PSA2KSB7XG4gICAgc2NvcmUgKz1cbiAgICAgIGNvdW50UG93ZXJSZWFjaEFmdGVyTW92ZShzdGF0ZSwgbW92ZSwgY29sb3IpICpcbiAgICAgIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgPyA4IDogNCkgKlxuICAgICAgc3R5bGUubW9iaWxpdHk7XG4gICAgc2NvcmUgKz1cbiAgICAgIGNvdW50UHJvdGVjdGVkVGhyZWF0c0FmdGVyTW92ZShzdGF0ZSwgbW92ZSwgY29sb3IpICpcbiAgICAgIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgPyAzNiA6IDE4KSAqXG4gICAgICBzdHlsZS50cmFwO1xuICAgIHNjb3JlICs9IHNjb3JlRW5kZ2FtZVByZXNzdXJlKHN0YXRlLCBtb3ZlLCBjb2xvcikgKiBzdHlsZS5lbmRnYW1lO1xuICB9IGVsc2Uge1xuICAgIHNjb3JlICs9IHNjb3JlRW5kZ2FtZVByZXNzdXJlKHN0YXRlLCBtb3ZlLCBjb2xvcikgKiBzdHlsZS5lbmRnYW1lO1xuICB9XG4gIGlmIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgJiYgaXNTcXVhcmVWdWxuZXJhYmxlQWZ0ZXJNb3ZlKHN0YXRlLCBtb3ZlKSkge1xuICAgIHNjb3JlIC09ICh0YXJnZXRQaWVjZSA/IDgwIDogMTQwKSAqIHN0eWxlLnNhZmV0eTtcbiAgfVxuICBzY29yZSArPSAoTWF0aC5yYW5kb20oKSAtIDAuNSkgKiBzdHlsZS5yYW5kb21uZXNzO1xuXG4gIHJldHVybiBzY29yZTtcbn1cblxuZnVuY3Rpb24gc2NvcmVCb3RNb3ZlV2l0aExvb2thaGVhZChcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgc3R5bGU6IENoZXNzaW1hbHNCb3RTdHlsZSxcbiAgY2hhbGxlbmdlUHJlc3N1cmUgPSAwLFxuICBuaWdodG1hcmVNb2RlOiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZSA9ICdub25lJ1xuKTogbnVtYmVyIHtcbiAgbGV0IHNjb3JlID0gc2NvcmVCb3RNb3ZlKHN0YXRlLCBtb3ZlLCBkaWZmaWN1bHR5LCBzdHlsZSwgY2hhbGxlbmdlUHJlc3N1cmUsIHRydWUsIG5pZ2h0bWFyZU1vZGUpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgaWYgKGFmdGVyTW92ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiBzY29yZSArIDUwMDA7XG5cbiAgICBjb25zdCBvcHBvbmVudE1vdmVzID0gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoYWZ0ZXJNb3ZlKTtcbiAgICBjb25zdCBvcHBvbmVudEltbWVkaWF0ZVdpbiA9IG9wcG9uZW50TW92ZXMuc29tZShcbiAgICAgIG9wcG9uZW50TW92ZSA9PlxuICAgICAgICBvcHBvbmVudE1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJlxuICAgICAgICBpc1Byb21vdGlvblJvdyhhZnRlck1vdmUuYm9hcmRTaXplLCBhZnRlck1vdmUuY3VycmVudFR1cm4sIG9wcG9uZW50TW92ZS50bylcbiAgICApO1xuICAgIGlmIChvcHBvbmVudEltbWVkaWF0ZVdpbikge1xuICAgICAgc2NvcmUgLT1cbiAgICAgICAgKGRpZmZpY3VsdHkgPT09ICdlYXN5J1xuICAgICAgICAgID8gMTgwMFxuICAgICAgICAgIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCdcbiAgICAgICAgICAgID8gNTIwMFxuICAgICAgICAgICAgOiA4MDAwICsgNDIwMCAqIGNoYWxsZW5nZVByZXNzdXJlKSAqIHN0eWxlLnNhZmV0eTtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlZFBpZWNlID0gYWZ0ZXJNb3ZlLnBpZWNlcy5maW5kKHBpZWNlID0+IHBpZWNlLmlkID09PSBtb3ZlLnBpZWNlSWQgJiYgIXBpZWNlLmNhcHR1cmVkKTtcbiAgICBpZiAobW92ZWRQaWVjZSkge1xuICAgICAgY29uc3QgY2FuQ2FwdHVyZU1vdmVkUGllY2UgPSBvcHBvbmVudE1vdmVzLnNvbWUoXG4gICAgICAgIG9wcG9uZW50TW92ZSA9PiBvcHBvbmVudE1vdmUuY2FwdHVyZXNQaWVjZUlkID09PSBtb3ZlLnBpZWNlSWRcbiAgICAgICk7XG4gICAgICBpZiAoY2FuQ2FwdHVyZU1vdmVkUGllY2UpIHtcbiAgICAgICAgc2NvcmUgLT1cbiAgICAgICAgICAobW92ZS5jYXB0dXJlc1BpZWNlSWRcbiAgICAgICAgICAgID8gMTgwXG4gICAgICAgICAgICA6IGRpZmZpY3VsdHkgPT09ICdlYXN5J1xuICAgICAgICAgICAgICA/IDEyMFxuICAgICAgICAgICAgICA6IGRpZmZpY3VsdHkgPT09ICdub3JtYWwnXG4gICAgICAgICAgICAgICAgPyAzNjBcbiAgICAgICAgICAgICAgICA6IDU2MCkgKlxuICAgICAgICAgIHN0eWxlLnNhZmV0eSAqXG4gICAgICAgICAgKDEgKyBjaGFsbGVuZ2VQcmVzc3VyZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNlbnRlciA9IChhZnRlck1vdmUuYm9hcmRTaXplIC0gMSkgLyAyO1xuICAgICAgY29uc3QgY2VudGVyQ29udHJvbCA9IE1hdGgubWF4KFxuICAgICAgICAwLFxuICAgICAgICBhZnRlck1vdmUuYm9hcmRTaXplIC8gMiAtIE1hdGguYWJzKG1vdmVkUGllY2UucG9zaXRpb24uY29sIC0gY2VudGVyKVxuICAgICAgKTtcbiAgICAgIHNjb3JlICs9IGNlbnRlckNvbnRyb2wgKiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnID8gMTggOiAxMCkgKiBzdHlsZS5jZW50ZXI7XG4gICAgfVxuXG4gICAgY29uc3Qgb3Bwb25lbnRCZXN0UmVwbHkgPSBvcHBvbmVudE1vdmVzXG4gICAgICAubWFwKG9wcG9uZW50TW92ZSA9PlxuICAgICAgICBzY29yZUJvdE1vdmUoXG4gICAgICAgICAgYWZ0ZXJNb3ZlLFxuICAgICAgICAgIG9wcG9uZW50TW92ZSxcbiAgICAgICAgICBkaWZmaWN1bHR5LFxuICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIGNoYWxsZW5nZVByZXNzdXJlLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIG5pZ2h0bWFyZU1vZGVcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIgLSBhKVswXTtcblxuICAgIGlmIChvcHBvbmVudEJlc3RSZXBseSkge1xuICAgICAgY29uc3QgcmVwbHlXZWlnaHQgPVxuICAgICAgICBkaWZmaWN1bHR5ID09PSAnZWFzeSdcbiAgICAgICAgICA/IDAuMTJcbiAgICAgICAgICA6IGRpZmZpY3VsdHkgPT09ICdub3JtYWwnXG4gICAgICAgICAgICA/IDAuNCArIDAuMSAqIGNoYWxsZW5nZVByZXNzdXJlXG4gICAgICAgICAgICA6IGRpZmZpY3VsdHkgPT09ICdtYXN0ZXInXG4gICAgICAgICAgICAgID8gMC43MiArIDAuMjIgKiBjaGFsbGVuZ2VQcmVzc3VyZVxuICAgICAgICAgICAgICA6IG5pZ2h0bWFyZU1vZGUgJiYgbmlnaHRtYXJlTW9kZSAhPT0gJ25vbmUnXG4gICAgICAgICAgICAgICAgPyAwLjgyICsgMC4xOCAqIGNoYWxsZW5nZVByZXNzdXJlXG4gICAgICAgICAgICAgICAgOiAwLjQ4ICsgMC4xNiAqIGNoYWxsZW5nZVByZXNzdXJlO1xuICAgICAgc2NvcmUgLT0gb3Bwb25lbnRCZXN0UmVwbHkgKiByZXBseVdlaWdodCAqIHN0eWxlLnJlcGx5O1xuICAgIH1cblxuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgfHwgZGlmZmljdWx0eSA9PT0gJ21hc3RlcicpIHtcbiAgICAgIGNvbnN0IHRvcE9wcE1vdmVzID0gb3Bwb25lbnRNb3Zlc1xuICAgICAgICAubWFwKG0gPT4gKHtcbiAgICAgICAgICBtb3ZlOiBtLFxuICAgICAgICAgIHNjb3JlOiBzY29yZUJvdE1vdmUoXG4gICAgICAgICAgICBhZnRlck1vdmUsXG4gICAgICAgICAgICBtLFxuICAgICAgICAgICAgZGlmZmljdWx0eSxcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgY2hhbGxlbmdlUHJlc3N1cmUsXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIG5pZ2h0bWFyZU1vZGVcbiAgICAgICAgICApLFxuICAgICAgICB9KSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlKVxuICAgICAgICAuc2xpY2UoMCwgNCk7XG4gICAgICBmb3IgKGNvbnN0IHsgbW92ZTogb3BwTW92ZSB9IG9mIHRvcE9wcE1vdmVzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgczIgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGFmdGVyTW92ZSwgb3BwTW92ZSk7XG4gICAgICAgICAgaWYgKHMyLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgY29udGludWU7XG4gICAgICAgICAgY29uc3QgbXlDb3VudGVycyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKHMyKTtcbiAgICAgICAgICBpZiAobXlDb3VudGVycy5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IG15QmVzdCA9XG4gICAgICAgICAgICBteUNvdW50ZXJzXG4gICAgICAgICAgICAgIC5tYXAobSA9PlxuICAgICAgICAgICAgICAgIHNjb3JlQm90TW92ZShzMiwgbSwgZGlmZmljdWx0eSwgc3R5bGUsIGNoYWxsZW5nZVByZXNzdXJlLCBmYWxzZSwgbmlnaHRtYXJlTW9kZSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYiAtIGEpWzBdID8/IDA7XG4gICAgICAgICAgc2NvcmUgKz1cbiAgICAgICAgICAgIG15QmVzdCAqXG4gICAgICAgICAgICAoZGlmZmljdWx0eSA9PT0gJ21hc3RlcidcbiAgICAgICAgICAgICAgPyAwLjIyXG4gICAgICAgICAgICAgIDogbmlnaHRtYXJlTW9kZSAmJiBuaWdodG1hcmVNb2RlICE9PSAnbm9uZSdcbiAgICAgICAgICAgICAgICA/IDAuMlxuICAgICAgICAgICAgICAgIDogMC4xNCkgKlxuICAgICAgICAgICAgc3R5bGUucmVwbHk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIHNraXBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgc2NvcmUgLT0gMTAwMDtcbiAgfVxuXG4gIHJldHVybiBzY29yZTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhbGxlbmdlUHJlc3N1cmUocm91bmQ/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIXJvdW5kKSByZXR1cm4gMDtcbiAgcmV0dXJuIE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHJvdW5kIC8gOCkpO1xufVxuXG5mdW5jdGlvbiB0dW5lQm90U3R5bGUoXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGUsXG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBjaGFsbGVuZ2VQcmVzc3VyZTogbnVtYmVyLFxuICBuaWdodG1hcmVNb2RlOiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZSA9ICdub25lJ1xuKTogQ2hlc3NpbWFsc0JvdFN0eWxlIHtcbiAgaWYgKG5pZ2h0bWFyZU1vZGUgPT09ICdodW50Jykge1xuICAgIHN0eWxlID0ge1xuICAgICAgLi4uc3R5bGUsXG4gICAgICBhZHZhbmNlbWVudDogc3R5bGUuYWR2YW5jZW1lbnQgKiAxLjEyLFxuICAgICAgY2FwdHVyZTogc3R5bGUuY2FwdHVyZSAqIDEuNzIsXG4gICAgICBwb3dlcjogc3R5bGUucG93ZXIgKiAxLjMsXG4gICAgICBzYWZldHk6IHN0eWxlLnNhZmV0eSAqIDAuODIsXG4gICAgICByYW5kb21uZXNzOiBNYXRoLm1pbihzdHlsZS5yYW5kb21uZXNzLCAxMiksXG4gICAgICB0cmFwOiBzdHlsZS50cmFwICogMS4yOCxcbiAgICB9O1xuICB9XG4gIGlmIChuaWdodG1hcmVNb2RlID09PSAncHJpZGUnKSB7XG4gICAgc3R5bGUgPSB7XG4gICAgICAuLi5zdHlsZSxcbiAgICAgIGFkdmFuY2VtZW50OiBzdHlsZS5hZHZhbmNlbWVudCAqIDEuMDgsXG4gICAgICBjYXB0dXJlOiBzdHlsZS5jYXB0dXJlICogMS4zMixcbiAgICAgIHBvd2VyOiBzdHlsZS5wb3dlciAqIDEuNTUsXG4gICAgICByYW5kb21uZXNzOiBNYXRoLm1pbihzdHlsZS5yYW5kb21uZXNzLCAxNiksXG4gICAgfTtcbiAgfVxuICBpZiAobmlnaHRtYXJlTW9kZSA9PT0gJ21hbmRyaWxsJykge1xuICAgIHN0eWxlID0ge1xuICAgICAgLi4uc3R5bGUsXG4gICAgICBhZHZhbmNlbWVudDogc3R5bGUuYWR2YW5jZW1lbnQgKiAxLjA0LFxuICAgICAgY2FwdHVyZTogc3R5bGUuY2FwdHVyZSAqIDEuMTYsXG4gICAgICBzYWZldHk6IHN0eWxlLnNhZmV0eSAqIDEuMzgsXG4gICAgICBwb3dlcjogc3R5bGUucG93ZXIgKiAwLjgyLFxuICAgICAgY2VudGVyOiBzdHlsZS5jZW50ZXIgKiAxLjIsXG4gICAgICByZXBseTogc3R5bGUucmVwbHkgKiAxLjMsXG4gICAgICByYW5kb21uZXNzOiBNYXRoLm1pbihzdHlsZS5yYW5kb21uZXNzLCAyKSxcbiAgICAgIHNwcmVhZDogc3R5bGUuc3ByZWFkICogMC42LFxuICAgICAgdHJhcDogc3R5bGUudHJhcCAqIDEuMjIsXG4gICAgICBlbmRnYW1lOiBzdHlsZS5lbmRnYW1lICogMS4yOCxcbiAgICB9O1xuICB9XG4gIGlmIChkaWZmaWN1bHR5ID09PSAnbWFzdGVyJykge1xuICAgIHN0eWxlID0ge1xuICAgICAgLi4uc3R5bGUsXG4gICAgICBjYXB0dXJlOiBzdHlsZS5jYXB0dXJlICogMS4wOCxcbiAgICAgIHNhZmV0eTogc3R5bGUuc2FmZXR5ICogMS4yMixcbiAgICAgIHJlcGx5OiBzdHlsZS5yZXBseSAqIDEuMzIsXG4gICAgICBjZW50ZXI6IHN0eWxlLmNlbnRlciAqIDEuMTIsXG4gICAgICByYW5kb21uZXNzOiBNYXRoLm1pbihzdHlsZS5yYW5kb21uZXNzLCAzKSxcbiAgICAgIHNwcmVhZDogc3R5bGUuc3ByZWFkICogMC41LFxuICAgICAgdHJhcDogc3R5bGUudHJhcCAqIDEuMTQsXG4gICAgICBlbmRnYW1lOiBzdHlsZS5lbmRnYW1lICogMS4xOCxcbiAgICB9O1xuICB9XG4gIGlmICghY2hhbGxlbmdlUHJlc3N1cmUpIHJldHVybiBzdHlsZTtcbiAgY29uc3QgcHJlc3N1cmUgPVxuICAgIGRpZmZpY3VsdHkgPT09ICdlYXN5J1xuICAgICAgPyBjaGFsbGVuZ2VQcmVzc3VyZSAqIDAuNDVcbiAgICAgIDogZGlmZmljdWx0eSA9PT0gJ21hc3RlcidcbiAgICAgICAgPyBjaGFsbGVuZ2VQcmVzc3VyZSAqIDEuMTVcbiAgICAgICAgOiBuaWdodG1hcmVNb2RlICYmIG5pZ2h0bWFyZU1vZGUgIT09ICdub25lJ1xuICAgICAgICAgID8gY2hhbGxlbmdlUHJlc3N1cmUgKiAxLjI1XG4gICAgICAgICAgOiBjaGFsbGVuZ2VQcmVzc3VyZTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdHlsZSxcbiAgICBjYXB0dXJlOiBzdHlsZS5jYXB0dXJlICogKDEgKyBwcmVzc3VyZSAqIDAuMjgpLFxuICAgIHNhZmV0eTogc3R5bGUuc2FmZXR5ICogKDEgKyBwcmVzc3VyZSAqIDAuMzQpLFxuICAgIHJlcGx5OiBzdHlsZS5yZXBseSAqICgxICsgcHJlc3N1cmUgKiAwLjIyKSxcbiAgICBjZW50ZXI6IHN0eWxlLmNlbnRlciAqICgxICsgcHJlc3N1cmUgKiAwLjEyKSxcbiAgICByYW5kb21uZXNzOiBzdHlsZS5yYW5kb21uZXNzICogKDEgLSBwcmVzc3VyZSAqIDAuNjUpLFxuICAgIHNwcmVhZDogc3R5bGUuc3ByZWFkICogKDEgLSBwcmVzc3VyZSAqIDAuMzUpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaG9vc2VDaGFsbGVuZ2VCYXNpY0NhcHR1cmUoXG4gIHNjb3JlZDogeyBtb3ZlOiBDaGVzc2ltYWxzTW92ZTsgc2NvcmU6IG51bWJlciB9W10sXG4gIGNoYWxsZW5nZVByZXNzdXJlOiBudW1iZXJcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNoYWxsZW5nZVByZXNzdXJlIDwgMC41KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGJlc3QgPSBzY29yZWRbMF07XG4gIGNvbnN0IGJlc3RCYXNpY0NhcHR1cmUgPSBzY29yZWQuZmluZChcbiAgICBpdGVtID0+IGl0ZW0ubW92ZS5raW5kID09PSAnYmFzaWMnICYmIGl0ZW0ubW92ZS5jYXB0dXJlc1BpZWNlSWRcbiAgKTtcbiAgaWYgKCFiZXN0IHx8ICFiZXN0QmFzaWNDYXB0dXJlKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoYmVzdC5tb3ZlLmtpbmQgPT09ICdiYXNpYycgJiYgYmVzdC5tb3ZlLmNhcHR1cmVzUGllY2VJZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCB0b2xlcmFuY2UgPSBiZXN0Lm1vdmUua2luZCA9PT0gJ3Bvd2VyJyAmJiAhYmVzdC5tb3ZlLmNhcHR1cmVzUGllY2VJZCA/IDE4MDAgOiA5MDA7XG4gIHJldHVybiBiZXN0LnNjb3JlIC0gYmVzdEJhc2ljQ2FwdHVyZS5zY29yZSA8PSB0b2xlcmFuY2UgPyBiZXN0QmFzaWNDYXB0dXJlLm1vdmUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNob29zZU5pZ2h0bWFyZUNhcHR1cmUoXG4gIHNjb3JlZDogeyBtb3ZlOiBDaGVzc2ltYWxzTW92ZTsgc2NvcmU6IG51bWJlciB9W10sXG4gIG5pZ2h0bWFyZU1vZGU/OiBDaGVzc2ltYWxzTmlnaHRtYXJlTW9kZVxuKTogQ2hlc3NpbWFsc01vdmUgfCB1bmRlZmluZWQge1xuICBpZiAobmlnaHRtYXJlTW9kZSAhPT0gJ2h1bnQnKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGJlc3QgPSBzY29yZWRbMF07XG4gIGNvbnN0IGNhcHR1cmUgPSBzY29yZWQuZmluZChpdGVtID0+IGl0ZW0ubW92ZS5jYXB0dXJlc1BpZWNlSWQpO1xuICBpZiAoIWJlc3QgfHwgIWNhcHR1cmUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIGJlc3Quc2NvcmUgLSBjYXB0dXJlLnNjb3JlIDw9IDE4MDAgPyBjYXB0dXJlLm1vdmUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHNjb3JlTWFuZHJpbGxQb3dlclBhdGllbmNlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIHRhcmdldFBpZWNlOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQsXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGVcbik6IG51bWJlciB7XG4gIGNvbnN0IGNvbG9yID0gc3RhdGUuY3VycmVudFR1cm47XG4gIGNvbnN0IGZyb21BZHZhbmNlbWVudCA9IGNvbG9yID09PSAnd2hpdGUnID8gc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUuZnJvbS5yb3cgOiBtb3ZlLmZyb20ucm93O1xuICBjb25zdCB0b0FkdmFuY2VtZW50ID0gY29sb3IgPT09ICd3aGl0ZScgPyBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gbW92ZS50by5yb3cgOiBtb3ZlLnRvLnJvdztcbiAgY29uc3QgYWR2YW5jZW1lbnRHYWluID0gTWF0aC5tYXgoMCwgdG9BZHZhbmNlbWVudCAtIGZyb21BZHZhbmNlbWVudCk7XG4gIGNvbnN0IHN0ZXBzVG9Qcm9tb3Rpb24gPSBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICBjb25zdCBjcmVhdGVzUHJvbW90aW9uVGhyZWF0ID0gYWR2YW5jZW1lbnRHYWluID4gMCAmJiBzdGVwc1RvUHJvbW90aW9uIDw9IDE7XG5cbiAgaWYgKHRhcmdldFBpZWNlKSByZXR1cm4gMjYwICogc3R5bGUucG93ZXI7XG4gIGlmIChjcmVhdGVzUHJvbW90aW9uVGhyZWF0KSByZXR1cm4gMTgwICogc3R5bGUuZW5kZ2FtZTtcblxuICBjb25zdCBlYXJseUdhbWUgPSBzdGF0ZS5tb3ZlQ291bnQgPCBzdGF0ZS5ib2FyZFNpemU7XG4gIGNvbnN0IHdhbmRlcmluZ1BlbmFsdHkgPSBlYXJseUdhbWUgPyAxMTgwIDogNjIwO1xuICBjb25zdCBhbmltYWxQZW5hbHR5ID0gbW92ZS5hbmltYWwgPT09ICdrYW5nYXJvbycgPyAyMjAgOiBtb3ZlLmFuaW1hbCA9PT0gJ2xpb24nID8gMTYwIDogMDtcblxuICByZXR1cm4gLSh3YW5kZXJpbmdQZW5hbHR5ICsgYW5pbWFsUGVuYWx0eSkgKiBzdHlsZS5wb3dlcjtcbn1cblxuZnVuY3Rpb24gY291bnRQb3dlclJlYWNoQWZ0ZXJNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3Jcbik6IG51bWJlciB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgY29uc3QgZXZhbHVhdGlvblN0YXRlID0geyAuLi5hZnRlck1vdmUsIGN1cnJlbnRUdXJuOiBjb2xvciB9O1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhldmFsdWF0aW9uU3RhdGUsIGNvbG9yKS5maWx0ZXIoXG4gICAgICBuZXh0TW92ZSA9PiBuZXh0TW92ZS5raW5kID09PSAncG93ZXInXG4gICAgKS5sZW5ndGg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvdW50UHJvdGVjdGVkVGhyZWF0c0FmdGVyTW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yXG4pOiBudW1iZXIge1xuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGNvbnN0IGV2YWx1YXRpb25TdGF0ZSA9IHsgLi4uYWZ0ZXJNb3ZlLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICBjb25zdCBvdXJNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpO1xuICAgIGNvbnN0IGVuZW15UGllY2VzID0gYWN0aXZlUGllY2VzKGFmdGVyTW92ZSkuZmlsdGVyKFxuICAgICAgcGllY2UgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZFxuICAgICk7XG4gICAgcmV0dXJuIGVuZW15UGllY2VzLmZpbHRlcihwaWVjZSA9PlxuICAgICAgb3VyTW92ZXMuc29tZShuZXh0TW92ZSA9PiBuZXh0TW92ZS5jYXB0dXJlc1BpZWNlSWQgPT09IHBpZWNlLmlkKVxuICAgICkubGVuZ3RoO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzY29yZUVuZGdhbWVQcmVzc3VyZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yXG4pOiBudW1iZXIge1xuICBjb25zdCByZW1haW5pbmdFbmVteVBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmlsdGVyKFxuICAgIHBpZWNlID0+IHBpZWNlLmNvbG9yICE9PSBjb2xvciAmJiAhcGllY2UuY2FwdHVyZWRcbiAgKS5sZW5ndGg7XG4gIGNvbnN0IHVyZ2VuY3kgPSByZW1haW5pbmdFbmVteVBpZWNlcyA8PSBNYXRoLm1heCgyLCBNYXRoLmZsb29yKHN0YXRlLmJvYXJkU2l6ZSAvIDIpKSA/IDEuNiA6IDE7XG4gIGNvbnN0IGRpc3RhbmNlVG9Qcm9tb3Rpb24gPSBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICByZXR1cm4gTWF0aC5tYXgoMCwgc3RhdGUuYm9hcmRTaXplIC0gZGlzdGFuY2VUb1Byb21vdGlvbikgKiAxNCAqIHVyZ2VuY3k7XG59XG5cbmZ1bmN0aW9uIGNob29zZUNvbnNlcnZhdGl2ZUhhcmRDYXB0dXJlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgc2NvcmVkOiB7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH1bXVxuKTogQ2hlc3NpbWFsc01vdmUgfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdGUuYm9hcmRTaXplICE9PSA4KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGJlc3QgPSBzY29yZWRbMF07XG4gIGlmICghYmVzdCB8fCBiZXN0Lm1vdmUua2luZCAhPT0gJ3Bvd2VyJyB8fCAhYmVzdC5tb3ZlLmNhcHR1cmVzUGllY2VJZCB8fCBiZXN0LnNjb3JlID49IDEwMDAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGJlc3RCYXNpY0NhcHR1cmUgPSBzY29yZWQuZmluZChcbiAgICBpdGVtID0+IGl0ZW0ubW92ZS5raW5kID09PSAnYmFzaWMnICYmIGl0ZW0ubW92ZS5jYXB0dXJlc1BpZWNlSWRcbiAgKTtcbiAgaWYgKCFiZXN0QmFzaWNDYXB0dXJlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiBiZXN0LnNjb3JlIC0gYmVzdEJhc2ljQ2FwdHVyZS5zY29yZSA8PSA2NTAgPyBiZXN0QmFzaWNDYXB0dXJlLm1vdmUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHBpY2tOb2lzeUJvdE1vdmUoXG4gIHNjb3JlZDogQXJyYXk8eyBtb3ZlOiBDaGVzc2ltYWxzTW92ZTsgc2NvcmU6IG51bWJlciB9PixcbiAgc3ByZWFkOiBudW1iZXJcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNjb3JlZC5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHBvb2xTaXplID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHNjb3JlZC5sZW5ndGggKiBzcHJlYWQpKTtcbiAgY29uc3QgcG9vbCA9IHNjb3JlZC5zbGljZSgwLCBwb29sU2l6ZSk7XG4gIGNvbnN0IHRvcFNjb3JlID0gcG9vbFswXT8uc2NvcmUgPz8gMDtcbiAgY29uc3Qgd2VpZ2h0ZWQgPSBwb29sLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCByZWxhdGl2ZSA9IE1hdGgubWF4KDAsIGl0ZW0uc2NvcmUgLSB0b3BTY29yZSArIDEyMDApO1xuICAgIGNvbnN0IHdlaWdodCA9IE1hdGgubWF4KDEsIHJlbGF0aXZlIC8gMTIwICsgKHBvb2wubGVuZ3RoIC0gaW5kZXgpICogMik7XG4gICAgcmV0dXJuIHsgLi4uaXRlbSwgd2VpZ2h0IH07XG4gIH0pO1xuICBjb25zdCB0b3RhbFdlaWdodCA9IHdlaWdodGVkLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHRvdGFsICsgaXRlbS53ZWlnaHQsIDApO1xuICBsZXQgY3Vyc29yID0gTWF0aC5yYW5kb20oKSAqIHRvdGFsV2VpZ2h0O1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygd2VpZ2h0ZWQpIHtcbiAgICBjdXJzb3IgLT0gaXRlbS53ZWlnaHQ7XG4gICAgaWYgKGN1cnNvciA8PSAwKSByZXR1cm4gaXRlbS5tb3ZlO1xuICB9XG4gIHJldHVybiBwb29sWzBdPy5tb3ZlO1xufVxuXG5mdW5jdGlvbiBnZXRJbW1lZGlhdGVXaW5uaW5nTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgcmV0dXJuIGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKHN0YXRlLCBjb2xvcikuZmlsdGVyKFxuICAgIG1vdmUgPT4gbW92ZS5raW5kID09PSAnYmFzaWMnICYmIGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgY29sb3IsIG1vdmUudG8pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHdvdWxkVW5sb2NrUG93ZXIoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuICBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uXG4pOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHBvc2l0aW9uLnJvdyA8PSBjZW50ZXJUb3AgOiBwb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tO1xufVxuXG5mdW5jdGlvbiBpc1NxdWFyZVZ1bG5lcmFibGVBZnRlck1vdmUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgaWYgKGFmdGVyTW92ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoYWZ0ZXJNb3ZlKS5zb21lKFxuICAgICAgZW5lbXlNb3ZlID0+IHNhbWVQb3NpdGlvbihlbmVteU1vdmUudG8sIG1vdmUudG8pICYmICEhZW5lbXlNb3ZlLmNhcHR1cmVzUGllY2VJZFxuICAgICk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQb3dlckRpcmVjdGlvbnMoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IENoZXNzaW1hbHNQb3NpdGlvbltdIHtcbiAgaWYgKGFuaW1hbCA9PT0gJ2VhZ2xlJykge1xuICAgIHJldHVybiBbXG4gICAgICB7IHJvdzogLTEsIGNvbDogLTEgfSxcbiAgICAgIHsgcm93OiAtMSwgY29sOiAxIH0sXG4gICAgICB7IHJvdzogMSwgY29sOiAtMSB9LFxuICAgICAgeyByb3c6IDEsIGNvbDogMSB9LFxuICAgIF07XG4gIH1cbiAgaWYgKGFuaW1hbCA9PT0gJ2J1bGwnKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgcm93OiAtMSwgY29sOiAwIH0sXG4gICAgICB7IHJvdzogMSwgY29sOiAwIH0sXG4gICAgICB7IHJvdzogMCwgY29sOiAtMSB9LFxuICAgICAgeyByb3c6IDAsIGNvbDogMSB9LFxuICAgIF07XG4gIH1cbiAgcmV0dXJuIFtcbiAgICB7IHJvdzogLTEsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogMCB9LFxuICAgIHsgcm93OiAtMSwgY29sOiAxIH0sXG4gICAgeyByb3c6IDAsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogMCwgY29sOiAxIH0sXG4gICAgeyByb3c6IDEsIGNvbDogLTEgfSxcbiAgICB7IHJvdzogMSwgY29sOiAwIH0sXG4gICAgeyByb3c6IDEsIGNvbDogMSB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiByZWZyZXNoQ2hlc3NpbWFsc1Bvd2VyVW5sb2NrcyhzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHBsYXllcnM6IHtcbiAgICAgIHdoaXRlOiB7XG4gICAgICAgIC4uLnN0YXRlLnBsYXllcnMud2hpdGUsXG4gICAgICAgIHBvd2VyVW5sb2NrZWQ6XG4gICAgICAgICAgc3RhdGUucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkIHx8XG4gICAgICAgICAgaGFzQ3Jvc3NlZENlbnRlcihzdGF0ZSwgJ3doaXRlJykgfHxcbiAgICAgICAgICBoYXNFbmVteUVudGVyZWRIb21lKHN0YXRlLCAnd2hpdGUnKSxcbiAgICAgIH0sXG4gICAgICBibGFjazoge1xuICAgICAgICAuLi5zdGF0ZS5wbGF5ZXJzLmJsYWNrLFxuICAgICAgICBwb3dlclVubG9ja2VkOlxuICAgICAgICAgIHN0YXRlLnBsYXllcnMuYmxhY2sucG93ZXJVbmxvY2tlZCB8fFxuICAgICAgICAgIGhhc0Nyb3NzZWRDZW50ZXIoc3RhdGUsICdibGFjaycpIHx8XG4gICAgICAgICAgaGFzRW5lbXlFbnRlcmVkSG9tZShzdGF0ZSwgJ2JsYWNrJyksXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGhhc0Nyb3NzZWRDZW50ZXIoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBib29sZWFuIHtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLnNvbWUocGllY2UgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gY29sb3IgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPD0gY2VudGVyVG9wIDogcGllY2UucG9zaXRpb24ucm93ID49IGNlbnRlckJvdHRvbTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBib29sZWFuIHtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIGNvbnN0IGVuZW15ID0gb3RoZXJDb2xvcihjb2xvcik7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLnNvbWUocGllY2UgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gZW5lbXkgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tIDogcGllY2UucG9zaXRpb24ucm93IDw9IGNlbnRlclRvcDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzUHJvbW90aW9uUm93KFxuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb25cbik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwb3NpdGlvbi5yb3cgPT09IDAgOiBwb3NpdGlvbi5yb3cgPT09IGJvYXJkU2l6ZSAtIDE7XG59XG5cbmZ1bmN0aW9uIGlzSW5zaWRlQm9hcmQoYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplLCBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgcG9zaXRpb24ucm93ID49IDAgJiYgcG9zaXRpb24ucm93IDwgYm9hcmRTaXplICYmIHBvc2l0aW9uLmNvbCA+PSAwICYmIHBvc2l0aW9uLmNvbCA8IGJvYXJkU2l6ZVxuICApO1xufVxuXG5mdW5jdGlvbiBzYW1lUG9zaXRpb24oYTogQ2hlc3NpbWFsc1Bvc2l0aW9uLCBiOiBDaGVzc2ltYWxzUG9zaXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGEucm93ID09PSBiLnJvdyAmJiBhLmNvbCA9PT0gYi5jb2w7XG59XG5cbmZ1bmN0aW9uIG90aGVyQ29sb3IoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2NhbElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBgbG9jYWwtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xufVxuIl19