valtech-components 4.0.442 → 4.0.443

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 (32) hide show
  1. package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +9 -18
  2. package/esm2022/lib/components/organisms/mini-games/chessimals-challenge-progress.service.mjs +145 -0
  3. package/esm2022/lib/components/organisms/mini-games/chessimals-engine.mjs +16 -109
  4. package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +541 -23
  5. package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +9 -18
  6. package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +89 -149
  7. package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +9 -18
  8. package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
  9. package/esm2022/lib/services/firebase/analytics.service.mjs +6 -4
  10. package/esm2022/lib/services/preferences/preferences.service.mjs +2 -2
  11. package/esm2022/lib/version.mjs +2 -2
  12. package/esm2022/mini-games/public-api.mjs +2 -34
  13. package/esm2022/public-api.mjs +1 -3
  14. package/fesm2022/valtech-components-mini-games.mjs +2 -34
  15. package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
  16. package/fesm2022/valtech-components.mjs +814 -1771
  17. package/fesm2022/valtech-components.mjs.map +1 -1
  18. package/lib/components/organisms/mini-games/bubble-blitz-game.component.d.ts +0 -2
  19. package/lib/components/organisms/mini-games/chessimals-challenge-progress.service.d.ts +30 -0
  20. package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +36 -4
  21. package/lib/components/organisms/mini-games/memory-game.component.d.ts +0 -2
  22. package/lib/components/organisms/mini-games/simon-game.component.d.ts +0 -2
  23. package/lib/components/organisms/mini-games/types.d.ts +57 -65
  24. package/lib/version.d.ts +1 -1
  25. package/mini-games/public-api.d.ts +0 -4
  26. package/package.json +1 -2
  27. package/public-api.d.ts +0 -2
  28. package/src/lib/services/firebase/scripts/generate-sw-config.js +0 -0
  29. package/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +0 -1385
  30. package/esm2022/lib/directives/light-ripple.directive.mjs +0 -57
  31. package/lib/components/organisms/mini-games/christianity-game.component.d.ts +0 -101
  32. package/lib/directives/light-ripple.directive.d.ts +0 -8
@@ -39,7 +39,6 @@ export class SimonGameComponent {
39
39
  this.activePad = signal(undefined);
40
40
  this.leaderboard = signal(this.readLeaderboard());
41
41
  this.confirmAction = signal(undefined);
42
- this.confirmedAction = signal(undefined);
43
42
  this.modeConfig = computed(() => SIMON_MODES[this.mode()]);
44
43
  this.bestRound = computed(() => this.modeLeaderboard()[0]?.round ?? 0);
45
44
  this.modeLeaderboard = computed(() => this.leaderboard()
@@ -139,12 +138,13 @@ export class SimonGameComponent {
139
138
  closeConfirmModal() {
140
139
  this.confirmAction.set(undefined);
141
140
  }
142
- handleConfirmModalDismissed() {
143
- this.confirmAction.set(undefined);
144
- const action = this.confirmedAction();
145
- this.confirmedAction.set(undefined);
146
- if (!action)
141
+ confirmPendingAction(token) {
142
+ if (token !== 'confirm') {
143
+ this.closeConfirmModal();
147
144
  return;
145
+ }
146
+ const action = this.confirmAction();
147
+ this.confirmAction.set(undefined);
148
148
  if (action === 'restart') {
149
149
  this.start();
150
150
  return;
@@ -157,15 +157,6 @@ export class SimonGameComponent {
157
157
  this.resetToGamesMenu();
158
158
  }
159
159
  }
160
- confirmPendingAction(token) {
161
- if (token !== 'confirm') {
162
- this.closeConfirmModal();
163
- return;
164
- }
165
- const action = this.confirmAction();
166
- this.confirmedAction.set(action);
167
- this.confirmAction.set(undefined);
168
- }
169
160
  tap(pad) {
170
161
  if (this.phase() !== 'waiting' || !this.acceptingInput)
171
162
  return;
@@ -409,7 +400,7 @@ export class SimonGameComponent {
409
400
  <ion-modal
410
401
  [isOpen]="!!confirmAction()"
411
402
  cssClass="val-modal-adaptive"
412
- (didDismiss)="handleConfirmModalDismissed()"
403
+ (didDismiss)="closeConfirmModal()"
413
404
  >
414
405
  <ng-template>
415
406
  <val-modal-layout
@@ -539,7 +530,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
539
530
  <ion-modal
540
531
  [isOpen]="!!confirmAction()"
541
532
  cssClass="val-modal-adaptive"
542
- (didDismiss)="handleConfirmModalDismissed()"
533
+ (didDismiss)="closeConfirmModal()"
543
534
  >
544
535
  <ng-template>
545
536
  <val-modal-layout
@@ -557,4 +548,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
557
548
  }], ctorParameters: () => [], propDecorators: { miniGamesRoute: [{
558
549
  type: Input
559
550
  }] } });
560
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltb24tZ2FtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvc2ltb24tZ2FtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFHM0YsUUFBUSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQWdCNUIsTUFBTSxXQUFXLEdBQTJDO0lBQzFELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7SUFDNUQsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRTtJQUNwRSxLQUFLLEVB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QUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYTtRQUM5QixPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDN0QsQ0FBQzsrR0FoVFUsa0JBQWtCO21HQUFsQixrQkFBa0Isd0hBN2FuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEhULGc1SkEvSFMsT0FBTywySkFBRSxRQUFRLHNEQUFFLG9CQUFvQjs7NEZBOGF0QyxrQkFBa0I7a0JBamI5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsWUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThIVDt3REFzVFEsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgdHJvcGh5T3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IFNpbW9uR2FtZU1vZGUsIFNpbW9uR2FtZVBoYXNlLCBTaW1vblBhZCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmFkZEljb25zKHsgdHJvcGh5T3V0bGluZSB9KTtcblxuaW50ZXJmYWNlIFNpbW9uTW9kZUNvbmZpZyB7XG4gIG1vZGU6IFNpbW9uR2FtZU1vZGU7XG4gIHNob3dNczogbnVtYmVyO1xuICBnYXBNczogbnVtYmVyO1xuICBzdGFydFN0ZXBzOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTaW1vbkxlYWRlcmJvYXJkRW50cnkge1xuICBtb2RlOiBTaW1vbkdhbWVNb2RlO1xuICByb3VuZDogbnVtYmVyO1xuICBzdGVwczogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuY29uc3QgU0lNT05fTU9ERVM6IFJlY29yZDxTaW1vbkdhbWVNb2RlLCBTaW1vbk1vZGVDb25maWc+ID0ge1xuICBraWQ6IHsgbW9kZTogJ2tpZCcsIHNob3dNczogNzIwLCBnYXBNczogMjgwLCBzdGFydFN0ZXBzOiAxIH0sXG4gIGNsYXNzaWM6IHsgbW9kZTogJ2NsYXNzaWMnLCBzaG93TXM6IDUyMCwgZ2FwTXM6IDIxMCwgc3RhcnRTdGVwczogMSB9LFxuICBuaW5qYTogeyBtb2RlOiAnbmluamEnLCBzaG93TXM6IDM0MCwgZ2FwTXM6IDE1MCwgc3RhcnRTdGVwczogMiB9LFxufTtcblxuY29uc3QgU0lNT05fUEFEUzogU2ltb25QYWRbXSA9IFtcbiAgeyBpZDogJ3BpbmsnLCBsYWJlbDogJzEnLCBjb2xvcjogJyNmZjAwYjInLCB0b25lOiAzMjkuNjMgfSxcbiAgeyBpZDogJ2N5YW4nLCBsYWJlbDogJzInLCBjb2xvcjogJyMwMGJjZDQnLCB0b25lOiAzOTIgfSxcbiAgeyBpZDogJ3llbGxvdycsIGxhYmVsOiAnMycsIGNvbG9yOiAnI2ZmYzQwOScsIHRvbmU6IDQ5My44OCB9LFxuICB7IGlkOiAncHVycGxlJywgbGFiZWw6ICc0JywgY29sb3I6ICcjNmEyZGUyJywgdG9uZTogNjU5LjI1IH0sXG5dO1xuXG5jb25zdCBMRUFERVJCT0FSRF9LRVkgPSAndmFsLW1pbmktZ2FtZXMtc2ltb24tbGVhZGVyYm9hcmQ6djEnO1xudHlwZSBTaW1vbkNvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2ltb24tZ2FtZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25JY29uLCBJb25Nb2RhbCwgTW9kYWxMYXlvdXRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYWluIGNsYXNzPVwic2ltb24tc2hlbGxcIj5cbiAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24taGVyb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ltb24taGVyb19fc3BhcmtcIj7il48g4pePIOKXjyDil488L3NwYW4+XG4gICAgICAgICAgPGgxPnt7IHQoJ3NpbW9uSG9tZVRpdGxlJykgfX08L2gxPlxuICAgICAgICAgIDxwPnt7IHQoJ3NpbW9uSG9tZVN1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNpbW9uLXBhbmVsXCI+XG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJzaW1vbi1ob3d0b1wiPlxuICAgICAgICAgICAgPGgyPnt7IHQoJ3NpbW9uSG93VG9UaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxwPnt7IHQoJ3NpbW9uSG93VG9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbW9uLW1vZGVzXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ21vZGVUaXRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIG1vZGVzOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwibW9kZSgpID09PSBpdGVtXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9kZShpdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1vZGVUaXRsZShpdGVtKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBtb2RlRGVzY3JpcHRpb24oaXRlbSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzaW1vbi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydCgpXCI+e3sgdCgnc2ltb25TdGFydCcpIH19PC9idXR0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbW9uLW1lbnUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNpbW9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGFuZ2VHYW1lJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzaW1vbi1nYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3NpbW9uUm91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgcm91bmQoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnc2ltb25TdGVwcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBzZXF1ZW5jZSgpLmxlbmd0aCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnc2ltb25CZXN0Um91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgYmVzdFJvdW5kKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbW9uLWNhbGxvdXRcIiBbY2xhc3MuaXMtZmFpbGVkXT1cInBoYXNlKCkgPT09ICdmYWlsZWQnXCI+XG4gICAgICAgICAgICBAaWYgKHBoYXNlKCkgPT09ICdzaG93aW5nJykge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uV2F0Y2gnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAocGhhc2UoKSA9PT0gJ3dhaXRpbmcnKSB7XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnc2ltb25SZXBlYXQnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAocGhhc2UoKSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnc2ltb25Hb29kJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uRmFpbGVkJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgZmFpbEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1ib2FyZFwiIFtjbGFzcy5pcy1sb2NrZWRdPVwicGhhc2UoKSAhPT0gJ3dhaXRpbmcnXCI+XG4gICAgICAgICAgICBAZm9yIChwYWQgb2YgcGFkczsgdHJhY2sgcGFkLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpbW9uLXBhZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLi0tcGFkLWNvbG9yXT1cInBhZC5jb2xvclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJhY3RpdmVQYWQoKSA9PT0gcGFkLmlkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGhhc2UoKSAhPT0gJ3dhaXRpbmcnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFwKHBhZClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcGFkLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2ltb24tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlTW9kZSgpXCI+e3sgdCgnYmFja1RvU2V0dXAnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNpbW9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPnt7IHQoJ2NoYW5nZUdhbWUnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNpbW9uLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+e3sgdCgncmVzdGFydCcpIH19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzaW1vbi1sZWFkZXJib2FyZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlXCI+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cm9waHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPGgyPnt7IGxlYWRlcmJvYXJkSGVhZGluZygpIH19PC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAobW9kZUxlYWRlcmJvYXJkKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgPHA+e3sgdCgnc2ltb25MZWFkZXJib2FyZEVtcHR5JykgfX08L3A+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG1vZGVMZWFkZXJib2FyZCgpOyB0cmFjayBlbnRyeS5jcmVhdGVkQXQpIHtcbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7ICRpbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzY29yZVRleHQoZW50cnkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGRhdGVUZXh0KGVudHJ5LmNyZWF0ZWRBdCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cIiEhY29uZmlybUFjdGlvbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1zaW1vbi1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLXNpbW9uLXRleHQ6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMmYyYTNhKTtcbiAgICAgICAgLS1zaW1vbi1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tc2ltb24tc29mdDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCk7XG4gICAgICAgIC0tc2ltb24tcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLXNpbW9uLXNlY29uZGFyeTogdmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5LCAjNmEyZGUyKTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxOHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDc2MHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLnNpbW9uLXNoZWxsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiAjMjMxZjJkO1xuICAgICAgICAtLXNpbW9uLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKTtcbiAgICAgICAgLS1zaW1vbi10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLXNpbW9uLW11dGVkOiByZ2JhKDI1NSwgMjQ4LCAyNTUsIDAuNjgpO1xuICAgICAgICAtLXNpbW9uLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyOHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgyOHB4LCA3dncsIDU0cHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjAlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaW1vbi1wcmltYXJ5KSwgdmFyKC0tc2ltb24tc2Vjb25kYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvX19zcGFyayB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yZW07XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIGgxIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDQ4cHgsIDE0dncsIDg2cHgpO1xuICAgICAgICBsaW5lLWhlaWdodDogMC45O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taGVybyBwLFxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tY2FsbG91dCBwLFxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhbmVsLFxuICAgICAgLnNpbW9uLWdhbWUsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpbW9uLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI2cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjRweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taG93dG8gaDIsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1tb2RlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbW9kZXMgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEyNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaW1vbi1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHNtYWxsLFxuICAgICAgLnNpbW9uLXN0YXR1cyBzbWFsbCxcbiAgICAgIC5zaW1vbi1sZWFkZXJib2FyZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wcmltYXJ5LFxuICAgICAgLnNpbW9uLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tcHJpbWFyeSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMThweCA0NXB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2ltb24tYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tY2FsbG91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA3NnB4O1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1jYWxsb3V0LmlzLWZhaWxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICB3aWR0aDogbWluKDEwMCUsIDQ4MHB4KTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wYWQge1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzRweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMwJSAyNSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICB2YXIoLS1wYWQtY29sb3IpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyOHB4LCA5dncsIDU2cHgpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgLTEycHggMjJweCByZ2JhKDAsIDAsIDAsIDAuMTYpLFxuICAgICAgICAgIDAgMThweCA0MnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wYWQtY29sb3IpLCB0cmFuc3BhcmVudCA2OCUpO1xuICAgICAgICBvcGFjaXR5OiAwLjgyO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMTQwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTQwbXMgZWFzZSxcbiAgICAgICAgICBmaWx0ZXIgMTQwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhZC5pcy1hY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zKSBzYXR1cmF0ZSgxLjIpO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDM1KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWJvYXJkLmlzLWxvY2tlZCAuc2ltb24tcGFkOm5vdCguaXMtYWN0aXZlKSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLXNpbW9uLXBhbmVsKSAyOCUpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbWVudS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIGlvbi1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIGxpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzOHB4IDFmciBhdXRvO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgbGkgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAuc2ltb24tbW9kZXMsXG4gICAgICAgIC5zaW1vbi1zdGF0dXMsXG4gICAgICAgIC5zaW1vbi1hY3Rpb25zLFxuICAgICAgICAuc2ltb24tbWVudS1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNpbW9uLXBhZCB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMjZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNpbW9uR2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuICBwcml2YXRlIHRpbWVyczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NlcHRpbmdJbnB1dCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcblxuICByZWFkb25seSBtb2RlczogU2ltb25HYW1lTW9kZVtdID0gWydraWQnLCAnY2xhc3NpYycsICduaW5qYSddO1xuICByZWFkb25seSBwYWRzID0gU0lNT05fUEFEUztcbiAgcmVhZG9ubHkgcGhhc2UgPSBzaWduYWw8U2ltb25HYW1lUGhhc2U+KCdob21lJyk7XG4gIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8U2ltb25HYW1lTW9kZT4oJ2tpZCcpO1xuICByZWFkb25seSByb3VuZCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc2VxdWVuY2UgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcmVhZG9ubHkgaW5wdXRJbmRleCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgYWN0aXZlUGFkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmQgPSBzaWduYWw8U2ltb25MZWFkZXJib2FyZEVudHJ5W10+KHRoaXMucmVhZExlYWRlcmJvYXJkKCkpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPFNpbW9uQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtZWRBY3Rpb24gPSBzaWduYWw8U2ltb25Db25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IG1vZGVDb25maWcgPSBjb21wdXRlZCgoKSA9PiBTSU1PTl9NT0RFU1t0aGlzLm1vZGUoKV0pO1xuICByZWFkb25seSBiZXN0Um91bmQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGVMZWFkZXJib2FyZCgpWzBdPy5yb3VuZCA/PyAwKTtcbiAgcmVhZG9ubHkgbW9kZUxlYWRlcmJvYXJkID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmxlYWRlcmJvYXJkKClcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5tb2RlID09PSB0aGlzLm1vZGUoKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBiLnJvdW5kIC0gYS5yb3VuZCB8fCBiLnN0ZXBzIC0gYS5zdGVwcylcbiAgICAgIC5zbGljZSgwLCA1KVxuICApO1xuICByZWFkb25seSBsZWFkZXJib2FyZEhlYWRpbmcgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnc2ltb25MZWFkZXJib2FyZE1vZGVUaXRsZScpLnJlcGxhY2UoJ3ttb2RlfScsIHRoaXMubW9kZVRpdGxlKHRoaXMubW9kZSgpKSlcbiAgKTtcbiAgcmVhZG9ubHkgZmFpbEJvZHkgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnc2ltb25GYWlsZWRCb2R5JykucmVwbGFjZSgne3JvdW5kfScsIFN0cmluZyhNYXRoLm1heCgwLCB0aGlzLnJvdW5kKCkgLSAxKSkpXG4gICk7XG4gIHJlYWRvbmx5IGNvbmZpcm1UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1SZXN0YXJ0VGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjb25maXJtR2FtZXNUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1Nb2RlVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY29uZmlybVJlc3RhcnRCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY29uZmlybUdhbWVzQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1Nb2RlQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6XG4gICAgICAgIHRoaXMuY29uZmlybUFjdGlvbigpID09PSAncmVzdGFydCdcbiAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgOiB0aGlzLmNvbmZpcm1BY3Rpb24oKSA9PT0gJ2dhbWVzJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoYW5nZUdhbWUnKVxuICAgICAgICAgICAgOiB0aGlzLnQoJ2JhY2tUb1NldHVwJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2NvbmZpcm0nLFxuICAgIH0sXG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHNlbGVjdE1vZGUobW9kZTogU2ltb25HYW1lTW9kZSk6IHZvaWQge1xuICAgIHRoaXMubW9kZS5zZXQobW9kZSk7XG4gIH1cblxuICBtb2RlVGl0bGUobW9kZTogU2ltb25HYW1lTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgc2ltb25Nb2RlJHt0aGlzLmNhcGl0YWxpemUobW9kZSl9YCk7XG4gIH1cblxuICBtb2RlRGVzY3JpcHRpb24obW9kZTogU2ltb25HYW1lTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgc2ltb25Nb2RlJHt0aGlzLmNhcGl0YWxpemUobW9kZSl9RGVzY3JpcHRpb25gKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICB0aGlzLnBoYXNlLnNldCgnc2hvd2luZycpO1xuICAgIHRoaXMucm91bmQuc2V0KDEpO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQoMCk7XG4gICAgdGhpcy5zZXF1ZW5jZS5zZXQodGhpcy5jcmVhdGVJbml0aWFsU2VxdWVuY2UoKSk7XG4gICAgdGhpcy5zaG93U2VxdWVuY2UoKTtcbiAgfVxuXG4gIHJlc2V0VG9TZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnJvdW5kLnNldCgwKTtcbiAgICB0aGlzLnNlcXVlbmNlLnNldChbXSk7XG4gICAgdGhpcy5pbnB1dEluZGV4LnNldCgwKTtcbiAgICB0aGlzLmFjdGl2ZVBhZC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXN0YXJ0Jyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdtb2RlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlR2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdnYW1lcycpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1lZEFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47XG5cbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldChhY3Rpb24pO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHRhcChwYWQ6IFNpbW9uUGFkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGhhc2UoKSAhPT0gJ3dhaXRpbmcnIHx8ICF0aGlzLmFjY2VwdGluZ0lucHV0KSByZXR1cm47XG4gICAgdGhpcy5mbGFzaFBhZChwYWQuaWQsIDE4MCk7XG4gICAgdGhpcy5hdWRpby5zaW1vblBhZChwYWQudG9uZSk7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnNlcXVlbmNlKClbdGhpcy5pbnB1dEluZGV4KCldO1xuICAgIGlmIChwYWQuaWQgIT09IGV4cGVjdGVkKSB7XG4gICAgICB0aGlzLmZhaWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV4dEluZGV4ID0gdGhpcy5pbnB1dEluZGV4KCkgKyAxO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQobmV4dEluZGV4KTtcbiAgICBpZiAobmV4dEluZGV4IDwgdGhpcy5zZXF1ZW5jZSgpLmxlbmd0aCkge1xuICAgICAgdGhpcy5hdWRpby5zaW1vblN0ZXBPaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbXBsZXRlUm91bmQoKTtcbiAgfVxuXG4gIHNjb3JlVGV4dChlbnRyeTogU2ltb25MZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdzaW1vblNjb3JlJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKGVudHJ5LnJvdW5kKSlcbiAgICAgIC5yZXBsYWNlKCd7c3RlcHN9JywgU3RyaW5nKGVudHJ5LnN0ZXBzKSk7XG4gIH1cblxuICBkYXRlVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgMTApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZVJvdW5kKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLnBoYXNlLnNldCgnc3VjY2VzcycpO1xuICAgIHRoaXMuYXVkaW8uc2ltb25Sb3VuZE9rKCk7XG4gICAgdGhpcy5zYXZlU2NvcmUodGhpcy5yb3VuZCgpLCB0aGlzLnNlcXVlbmNlKCkubGVuZ3RoKTtcbiAgICB0aGlzLnNldFRpbWVyKCgpID0+IHtcbiAgICAgIHRoaXMucm91bmQuc2V0KHRoaXMucm91bmQoKSArIDEpO1xuICAgICAgdGhpcy5zZXF1ZW5jZS51cGRhdGUoKGN1cnJlbnQpID0+IFsuLi5jdXJyZW50LCB0aGlzLnJhbmRvbVBhZElkKCldKTtcbiAgICAgIHRoaXMuc2hvd1NlcXVlbmNlKCk7XG4gICAgfSwgdGhpcy5tb2RlKCkgPT09ICduaW5qYScgPyA1MjAgOiA3NjApO1xuICB9XG5cbiAgcHJpdmF0ZSBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLnBoYXNlLnNldCgnZmFpbGVkJyk7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5zaW1vbkZhaWwoKTtcbiAgICB0aGlzLnNhdmVTY29yZShNYXRoLm1heCgwLCB0aGlzLnJvdW5kKCkgLSAxKSwgTWF0aC5tYXgoMCwgdGhpcy5zZXF1ZW5jZSgpLmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NlcXVlbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICB0aGlzLmFjY2VwdGluZ0lucHV0ID0gZmFsc2U7XG4gICAgdGhpcy5pbnB1dEluZGV4LnNldCgwKTtcbiAgICB0aGlzLnBoYXNlLnNldCgnc2hvd2luZycpO1xuICAgIGNvbnN0IHsgc2hvd01zLCBnYXBNcyB9ID0gdGhpcy5tb2RlQ29uZmlnKCk7XG4gICAgbGV0IGRlbGF5ID0gMjgwO1xuICAgIHRoaXMuc2VxdWVuY2UoKS5mb3JFYWNoKChwYWRJZCkgPT4ge1xuICAgICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZCA9IHRoaXMucGFkcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBwYWRJZCk7XG4gICAgICAgIGlmIChwYWQpIHRoaXMuYXVkaW8uc2ltb25QYWQocGFkLnRvbmUpO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhZC5zZXQocGFkSWQpO1xuICAgICAgfSwgZGVsYXkpO1xuICAgICAgdGhpcy5zZXRUaW1lcigoKSA9PiB0aGlzLmFjdGl2ZVBhZC5zZXQodW5kZWZpbmVkKSwgZGVsYXkgKyBzaG93TXMpO1xuICAgICAgZGVsYXkgKz0gc2hvd01zICsgZ2FwTXM7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICB0aGlzLnBoYXNlLnNldCgnd2FpdGluZycpO1xuICAgICAgdGhpcy5hY2NlcHRpbmdJbnB1dCA9IHRydWU7XG4gICAgfSwgZGVsYXkgKyAxMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBmbGFzaFBhZChwYWRJZDogc3RyaW5nLCBtczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHBhZElkKTtcbiAgICB0aGlzLnNldFRpbWVyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVBhZCgpID09PSBwYWRJZCkgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgfSwgbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbml0aWFsU2VxdWVuY2UoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLm1vZGVDb25maWcoKS5zdGFydFN0ZXBzIH0sICgpID0+IHRoaXMucmFuZG9tUGFkSWQoKSk7XG4gIH1cblxuICBwcml2YXRlIHJhbmRvbVBhZElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFkc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLnBhZHMubGVuZ3RoKV0uaWQ7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTY29yZShyb3VuZDogbnVtYmVyLCBzdGVwczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHJvdW5kIDw9IDApIHJldHVybjtcbiAgICBjb25zdCBlbnRyeTogU2ltb25MZWFkZXJib2FyZEVudHJ5ID0ge1xuICAgICAgbW9kZTogdGhpcy5tb2RlKCksXG4gICAgICByb3VuZCxcbiAgICAgIHN0ZXBzLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgICBjb25zdCB1cGRhdGVkID0gW2VudHJ5LCAuLi50aGlzLmxlYWRlcmJvYXJkKCldXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5yb3VuZCAtIGEucm91bmQgfHwgYi5zdGVwcyAtIGEuc3RlcHMpXG4gICAgICAuc2xpY2UoMCwgNDApO1xuICAgIHRoaXMubGVhZGVyYm9hcmQuc2V0KHVwZGF0ZWQpO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMRUFERVJCT0FSRF9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEVsIHJhbmtpbmcgbG9jYWwgbm8gZXMgY3LDrXRpY28gc2kgc3RvcmFnZSBubyBlc3TDoSBkaXNwb25pYmxlLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZExlYWRlcmJvYXJkKCk6IFNpbW9uTGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTEVBREVSQk9BUkRfS0VZKTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHJhdyA/IChKU09OLnBhcnNlKHJhdykgYXMgU2ltb25MZWFkZXJib2FyZEVudHJ5W10pIDogW107XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogW107XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaW1lcihjYWxsYmFjazogKCkgPT4gdm9pZCwgbXM6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIG1zKTtcbiAgICB0aGlzLnRpbWVycy5wdXNoKGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJUaW1lcnMoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lcnMuZm9yRWFjaCgoaWQpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQoaWQpKTtcbiAgICB0aGlzLnRpbWVycyA9IFtdO1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVBhZC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt2YWx1ZS5zbGljZSgxKX1gO1xuICB9XG59XG4iXX0=
551
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltb24tZ2FtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvc2ltb24tZ2FtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFHM0YsUUFBUSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQWdCNUIsTUFBTSxXQUFXLEdBQTJDO0lBQzFELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7SUFDNUQsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRTtJQUNwRSxLQUFLLEVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThIVCxnNUpBL0hTLE9BQU8sMkpBQUUsUUFBUSxzREFBRSxvQkFBb0I7OzRGQThhdEMsa0JBQWtCO2tCQWpiOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixDQUFDLFlBQ3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4SFQ7d0RBc1RRLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24sIElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHRyb3BoeU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNSU5JX0dBTUVTX0kxOE4gfSBmcm9tICcuL21pbmktZ2FtZXMuaTE4bic7XG5pbXBvcnQgeyBSZXRyb0F1ZGlvU2VydmljZSB9IGZyb20gJy4vcmV0cm8tYXVkaW8uc2VydmljZSc7XG5pbXBvcnQgeyBTaW1vbkdhbWVNb2RlLCBTaW1vbkdhbWVQaGFzZSwgU2ltb25QYWQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1vZGFsTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL21vZGFsLWxheW91dC9tb2RhbC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IHRyb3BoeU91dGxpbmUgfSk7XG5cbmludGVyZmFjZSBTaW1vbk1vZGVDb25maWcge1xuICBtb2RlOiBTaW1vbkdhbWVNb2RlO1xuICBzaG93TXM6IG51bWJlcjtcbiAgZ2FwTXM6IG51bWJlcjtcbiAgc3RhcnRTdGVwczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgU2ltb25MZWFkZXJib2FyZEVudHJ5IHtcbiAgbW9kZTogU2ltb25HYW1lTW9kZTtcbiAgcm91bmQ6IG51bWJlcjtcbiAgc3RlcHM6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbmNvbnN0IFNJTU9OX01PREVTOiBSZWNvcmQ8U2ltb25HYW1lTW9kZSwgU2ltb25Nb2RlQ29uZmlnPiA9IHtcbiAga2lkOiB7IG1vZGU6ICdraWQnLCBzaG93TXM6IDcyMCwgZ2FwTXM6IDI4MCwgc3RhcnRTdGVwczogMSB9LFxuICBjbGFzc2ljOiB7IG1vZGU6ICdjbGFzc2ljJywgc2hvd01zOiA1MjAsIGdhcE1zOiAyMTAsIHN0YXJ0U3RlcHM6IDEgfSxcbiAgbmluamE6IHsgbW9kZTogJ25pbmphJywgc2hvd01zOiAzNDAsIGdhcE1zOiAxNTAsIHN0YXJ0U3RlcHM6IDIgfSxcbn07XG5cbmNvbnN0IFNJTU9OX1BBRFM6IFNpbW9uUGFkW10gPSBbXG4gIHsgaWQ6ICdwaW5rJywgbGFiZWw6ICcxJywgY29sb3I6ICcjZmYwMGIyJywgdG9uZTogMzI5LjYzIH0sXG4gIHsgaWQ6ICdjeWFuJywgbGFiZWw6ICcyJywgY29sb3I6ICcjMDBiY2Q0JywgdG9uZTogMzkyIH0sXG4gIHsgaWQ6ICd5ZWxsb3cnLCBsYWJlbDogJzMnLCBjb2xvcjogJyNmZmM0MDknLCB0b25lOiA0OTMuODggfSxcbiAgeyBpZDogJ3B1cnBsZScsIGxhYmVsOiAnNCcsIGNvbG9yOiAnIzZhMmRlMicsIHRvbmU6IDY1OS4yNSB9LFxuXTtcblxuY29uc3QgTEVBREVSQk9BUkRfS0VZID0gJ3ZhbC1taW5pLWdhbWVzLXNpbW9uLWxlYWRlcmJvYXJkOnYxJztcbnR5cGUgU2ltb25Db25maXJtQWN0aW9uID0gJ3Jlc3RhcnQnIHwgJ21vZGUnIHwgJ2dhbWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNpbW9uLWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uSWNvbiwgSW9uTW9kYWwsIE1vZGFsTGF5b3V0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cInNpbW9uLXNoZWxsXCI+XG4gICAgICBAaWYgKHBoYXNlKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNpbW9uLWhlcm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNpbW9uLWhlcm9fX3NwYXJrXCI+4pePIOKXjyDil48g4pePPC9zcGFuPlxuICAgICAgICAgIDxoMT57eyB0KCdzaW1vbkhvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdzaW1vbkhvbWVTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzaW1vbi1wYW5lbFwiPlxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwic2ltb24taG93dG9cIj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdzaW1vbkhvd1RvVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8cD57eyB0KCdzaW1vbkhvd1RvQm9keScpIH19PC9wPlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1tb2Rlc1wiIHJvbGU9XCJyYWRpb2dyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdtb2RlVGl0bGUnKVwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtb2RlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cIm1vZGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vZGUoaXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBtb2RlVGl0bGUoaXRlbSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW9kZURlc2NyaXB0aW9uKGl0ZW0pIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2ltb24tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnQoKVwiPnt7IHQoJ3NpbW9uU3RhcnQnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1tZW51LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzaW1vbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24tZ2FtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1zdGF0dXNcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdzaW1vblJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdW5kKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3NpbW9uU3RlcHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VxdWVuY2UoKS5sZW5ndGggfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3NpbW9uQmVzdFJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJlc3RSb3VuZCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1vbi1jYWxsb3V0XCIgW2NsYXNzLmlzLWZhaWxlZF09XCJwaGFzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnc2hvd2luZycpIHtcbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdzaW1vbldhdGNoJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHBoYXNlKCkgPT09ICd3YWl0aW5nJykge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uUmVwZWF0JykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHBoYXNlKCkgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ3NpbW9uR29vZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdzaW1vbkZhaWxlZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IGZhaWxCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tYm9hcmRcIiBbY2xhc3MuaXMtbG9ja2VkXT1cInBoYXNlKCkgIT09ICd3YWl0aW5nJ1wiPlxuICAgICAgICAgICAgQGZvciAocGFkIG9mIHBhZHM7IHRyYWNrIHBhZC5pZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1vbi1wYWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLXBhZC1jb2xvcl09XCJwYWQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwiYWN0aXZlUGFkKCkgPT09IHBhZC5pZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBoYXNlKCkgIT09ICd3YWl0aW5nJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRhcChwYWQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBhZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltb24tYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNpbW9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzaW1vbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj57eyB0KCdjaGFuZ2VHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzaW1vbi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzdGFydEdhbWUoKVwiPnt7IHQoJ3Jlc3RhcnQnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2ltb24tbGVhZGVyYm9hcmRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbW9uLWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKG1vZGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ3NpbW9uTGVhZGVyYm9hcmRFbXB0eScpIH19PC9wPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8b2w+XG4gICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBtb2RlTGVhZGVyYm9hcmQoKTsgdHJhY2sgZW50cnkuY3JlYXRlZEF0KSB7XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAkaW5kZXggKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2NvcmVUZXh0KGVudHJ5KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBkYXRlVGV4dChlbnRyeS5jcmVhdGVkQXQpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L29sPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9tYWluPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1zaW1vbi1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLXNpbW9uLXRleHQ6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMmYyYTNhKTtcbiAgICAgICAgLS1zaW1vbi1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tc2ltb24tc29mdDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCk7XG4gICAgICAgIC0tc2ltb24tcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLXNpbW9uLXNlY29uZGFyeTogdmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5LCAjNmEyZGUyKTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxOHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDc2MHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLnNpbW9uLXNoZWxsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuc2ltb24tc2hlbGwge1xuICAgICAgICAtLXNpbW9uLXBhbmVsOiAjMjMxZjJkO1xuICAgICAgICAtLXNpbW9uLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKTtcbiAgICAgICAgLS1zaW1vbi10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLXNpbW9uLW11dGVkOiByZ2JhKDI1NSwgMjQ4LCAyNTUsIDAuNjgpO1xuICAgICAgICAtLXNpbW9uLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyOHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgyOHB4LCA3dncsIDU0cHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjAlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaW1vbi1wcmltYXJ5KSwgdmFyKC0tc2ltb24tc2Vjb25kYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvX19zcGFyayB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yZW07XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1oZXJvIGgxIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDQ4cHgsIDE0dncsIDg2cHgpO1xuICAgICAgICBsaW5lLWhlaWdodDogMC45O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taGVybyBwLFxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tY2FsbG91dCBwLFxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhbmVsLFxuICAgICAgLnNpbW9uLWdhbWUsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpbW9uLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI2cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjRweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24taG93dG8gaDIsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWhvd3RvIHAsXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1tb2RlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbW9kZXMgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEyNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaW1vbi1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLW1vZGVzIHNtYWxsLFxuICAgICAgLnNpbW9uLXN0YXR1cyBzbWFsbCxcbiAgICAgIC5zaW1vbi1sZWFkZXJib2FyZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wcmltYXJ5LFxuICAgICAgLnNpbW9uLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tcHJpbWFyeSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMThweCA0NXB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2ltb24tYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaW1vbi10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaW1vbi1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tY2FsbG91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA3NnB4O1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1jYWxsb3V0LmlzLWZhaWxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICB3aWR0aDogbWluKDEwMCUsIDQ4MHB4KTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1wYWQge1xuICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzRweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMwJSAyNSUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICB2YXIoLS1wYWQtY29sb3IpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyOHB4LCA5dncsIDU2cHgpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgLTEycHggMjJweCByZ2JhKDAsIDAsIDAsIDAuMTYpLFxuICAgICAgICAgIDAgMThweCA0MnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wYWQtY29sb3IpLCB0cmFuc3BhcmVudCA2OCUpO1xuICAgICAgICBvcGFjaXR5OiAwLjgyO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMTQwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTQwbXMgZWFzZSxcbiAgICAgICAgICBmaWx0ZXIgMTQwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLXBhZC5pcy1hY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zKSBzYXR1cmF0ZSgxLjIpO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDM1KTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWJvYXJkLmlzLWxvY2tlZCAuc2ltb24tcGFkOm5vdCguaXMtYWN0aXZlKSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5zaW1vbi1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLXNpbW9uLXBhbmVsKSAyOCUpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbWVudS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmRfX3RpdGxlIGlvbi1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXNpbW9uLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpbW9uLWxlYWRlcmJvYXJkIGxpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzOHB4IDFmciBhdXRvO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpbW9uLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuc2ltb24tbGVhZGVyYm9hcmQgbGkgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2ltb24tcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAuc2ltb24tbW9kZXMsXG4gICAgICAgIC5zaW1vbi1zdGF0dXMsXG4gICAgICAgIC5zaW1vbi1hY3Rpb25zLFxuICAgICAgICAuc2ltb24tbWVudS1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaW1vbi1ib2FyZCB7XG4gICAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNpbW9uLXBhZCB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMjZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNpbW9uR2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXVkaW8gPSBpbmplY3QoUmV0cm9BdWRpb1NlcnZpY2UpO1xuICBwcml2YXRlIHRpbWVyczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NlcHRpbmdJbnB1dCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcblxuICByZWFkb25seSBtb2RlczogU2ltb25HYW1lTW9kZVtdID0gWydraWQnLCAnY2xhc3NpYycsICduaW5qYSddO1xuICByZWFkb25seSBwYWRzID0gU0lNT05fUEFEUztcbiAgcmVhZG9ubHkgcGhhc2UgPSBzaWduYWw8U2ltb25HYW1lUGhhc2U+KCdob21lJyk7XG4gIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8U2ltb25HYW1lTW9kZT4oJ2tpZCcpO1xuICByZWFkb25seSByb3VuZCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc2VxdWVuY2UgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcmVhZG9ubHkgaW5wdXRJbmRleCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgYWN0aXZlUGFkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmQgPSBzaWduYWw8U2ltb25MZWFkZXJib2FyZEVudHJ5W10+KHRoaXMucmVhZExlYWRlcmJvYXJkKCkpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPFNpbW9uQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBtb2RlQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4gU0lNT05fTU9ERVNbdGhpcy5tb2RlKCldKTtcbiAgcmVhZG9ubHkgYmVzdFJvdW5kID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlTGVhZGVyYm9hcmQoKVswXT8ucm91bmQgPz8gMCk7XG4gIHJlYWRvbmx5IG1vZGVMZWFkZXJib2FyZCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5sZWFkZXJib2FyZCgpXG4gICAgICAuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkubW9kZSA9PT0gdGhpcy5tb2RlKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5yb3VuZCAtIGEucm91bmQgfHwgYi5zdGVwcyAtIGEuc3RlcHMpXG4gICAgICAuc2xpY2UoMCwgNSlcbiAgKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmRIZWFkaW5nID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3NpbW9uTGVhZGVyYm9hcmRNb2RlVGl0bGUnKS5yZXBsYWNlKCd7bW9kZX0nLCB0aGlzLm1vZGVUaXRsZSh0aGlzLm1vZGUoKSkpXG4gICk7XG4gIHJlYWRvbmx5IGZhaWxCb2R5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3NpbW9uRmFpbGVkQm9keScpLnJlcGxhY2UoJ3tyb3VuZH0nLCBTdHJpbmcoTWF0aC5tYXgoMCwgdGhpcy5yb3VuZCgpIC0gMSkpKVxuICApO1xuICByZWFkb25seSBjb25maXJtVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjb25maXJtUmVzdGFydFRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY29uZmlybUdhbWVzVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjb25maXJtTW9kZVRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1SZXN0YXJ0Qm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1HYW1lc0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjb25maXJtTW9kZUJvZHknKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb25zID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGFbXT4oKCkgPT4gW1xuICAgIHtcbiAgICAgIHRleHQ6IHRoaXMudCgnY2FuY2VsJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2NhbmNlbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OlxuICAgICAgICB0aGlzLmNvbmZpcm1BY3Rpb24oKSA9PT0gJ3Jlc3RhcnQnXG4gICAgICAgICAgPyB0aGlzLnQoJ3Jlc3RhcnQnKVxuICAgICAgICAgIDogdGhpcy5jb25maXJtQWN0aW9uKCkgPT09ICdnYW1lcydcbiAgICAgICAgICAgID8gdGhpcy50KCdjaGFuZ2VHYW1lJylcbiAgICAgICAgICAgIDogdGhpcy50KCdiYWNrVG9TZXR1cCcpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjb25maXJtJyxcbiAgICB9LFxuICBdKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWluaUdhbWVzJywgTUlOSV9HQU1FU19JMThOKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBzZWxlY3RNb2RlKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGUuc2V0KG1vZGUpO1xuICB9XG5cbiAgbW9kZVRpdGxlKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYHNpbW9uTW9kZSR7dGhpcy5jYXBpdGFsaXplKG1vZGUpfWApO1xuICB9XG5cbiAgbW9kZURlc2NyaXB0aW9uKG1vZGU6IFNpbW9uR2FtZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYHNpbW9uTW9kZSR7dGhpcy5jYXBpdGFsaXplKG1vZGUpfURlc2NyaXB0aW9uYCk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ3Nob3dpbmcnKTtcbiAgICB0aGlzLnJvdW5kLnNldCgxKTtcbiAgICB0aGlzLmlucHV0SW5kZXguc2V0KDApO1xuICAgIHRoaXMuc2VxdWVuY2Uuc2V0KHRoaXMuY3JlYXRlSW5pdGlhbFNlcXVlbmNlKCkpO1xuICAgIHRoaXMuc2hvd1NlcXVlbmNlKCk7XG4gIH1cblxuICByZXNldFRvU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdob21lJyk7XG4gICAgdGhpcy5yb3VuZC5zZXQoMCk7XG4gICAgdGhpcy5zZXF1ZW5jZS5zZXQoW10pO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQoMCk7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZXF1ZXN0UmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnbW9kZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZUdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnZ2FtZXMnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQ29uZmlybU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGNvbmZpcm1QZW5kaW5nQWN0aW9uKHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRva2VuICE9PSAnY29uZmlybScpIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb1NldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHRhcChwYWQ6IFNpbW9uUGFkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGhhc2UoKSAhPT0gJ3dhaXRpbmcnIHx8ICF0aGlzLmFjY2VwdGluZ0lucHV0KSByZXR1cm47XG4gICAgdGhpcy5mbGFzaFBhZChwYWQuaWQsIDE4MCk7XG4gICAgdGhpcy5hdWRpby5zaW1vblBhZChwYWQudG9uZSk7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnNlcXVlbmNlKClbdGhpcy5pbnB1dEluZGV4KCldO1xuICAgIGlmIChwYWQuaWQgIT09IGV4cGVjdGVkKSB7XG4gICAgICB0aGlzLmZhaWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV4dEluZGV4ID0gdGhpcy5pbnB1dEluZGV4KCkgKyAxO1xuICAgIHRoaXMuaW5wdXRJbmRleC5zZXQobmV4dEluZGV4KTtcbiAgICBpZiAobmV4dEluZGV4IDwgdGhpcy5zZXF1ZW5jZSgpLmxlbmd0aCkge1xuICAgICAgdGhpcy5hdWRpby5zaW1vblN0ZXBPaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbXBsZXRlUm91bmQoKTtcbiAgfVxuXG4gIHNjb3JlVGV4dChlbnRyeTogU2ltb25MZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdzaW1vblNjb3JlJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKGVudHJ5LnJvdW5kKSlcbiAgICAgIC5yZXBsYWNlKCd7c3RlcHN9JywgU3RyaW5nKGVudHJ5LnN0ZXBzKSk7XG4gIH1cblxuICBkYXRlVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgMTApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZVJvdW5kKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLnBoYXNlLnNldCgnc3VjY2VzcycpO1xuICAgIHRoaXMuYXVkaW8uc2ltb25Sb3VuZE9rKCk7XG4gICAgdGhpcy5zYXZlU2NvcmUodGhpcy5yb3VuZCgpLCB0aGlzLnNlcXVlbmNlKCkubGVuZ3RoKTtcbiAgICB0aGlzLnNldFRpbWVyKCgpID0+IHtcbiAgICAgIHRoaXMucm91bmQuc2V0KHRoaXMucm91bmQoKSArIDEpO1xuICAgICAgdGhpcy5zZXF1ZW5jZS51cGRhdGUoKGN1cnJlbnQpID0+IFsuLi5jdXJyZW50LCB0aGlzLnJhbmRvbVBhZElkKCldKTtcbiAgICAgIHRoaXMuc2hvd1NlcXVlbmNlKCk7XG4gICAgfSwgdGhpcy5tb2RlKCkgPT09ICduaW5qYScgPyA1MjAgOiA3NjApO1xuICB9XG5cbiAgcHJpdmF0ZSBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLnBoYXNlLnNldCgnZmFpbGVkJyk7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5zaW1vbkZhaWwoKTtcbiAgICB0aGlzLnNhdmVTY29yZShNYXRoLm1heCgwLCB0aGlzLnJvdW5kKCkgLSAxKSwgTWF0aC5tYXgoMCwgdGhpcy5zZXF1ZW5jZSgpLmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NlcXVlbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICB0aGlzLmFjY2VwdGluZ0lucHV0ID0gZmFsc2U7XG4gICAgdGhpcy5pbnB1dEluZGV4LnNldCgwKTtcbiAgICB0aGlzLnBoYXNlLnNldCgnc2hvd2luZycpO1xuICAgIGNvbnN0IHsgc2hvd01zLCBnYXBNcyB9ID0gdGhpcy5tb2RlQ29uZmlnKCk7XG4gICAgbGV0IGRlbGF5ID0gMjgwO1xuICAgIHRoaXMuc2VxdWVuY2UoKS5mb3JFYWNoKChwYWRJZCkgPT4ge1xuICAgICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZCA9IHRoaXMucGFkcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBwYWRJZCk7XG4gICAgICAgIGlmIChwYWQpIHRoaXMuYXVkaW8uc2ltb25QYWQocGFkLnRvbmUpO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhZC5zZXQocGFkSWQpO1xuICAgICAgfSwgZGVsYXkpO1xuICAgICAgdGhpcy5zZXRUaW1lcigoKSA9PiB0aGlzLmFjdGl2ZVBhZC5zZXQodW5kZWZpbmVkKSwgZGVsYXkgKyBzaG93TXMpO1xuICAgICAgZGVsYXkgKz0gc2hvd01zICsgZ2FwTXM7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRUaW1lcigoKSA9PiB7XG4gICAgICB0aGlzLnBoYXNlLnNldCgnd2FpdGluZycpO1xuICAgICAgdGhpcy5hY2NlcHRpbmdJbnB1dCA9IHRydWU7XG4gICAgfSwgZGVsYXkgKyAxMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBmbGFzaFBhZChwYWRJZDogc3RyaW5nLCBtczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVQYWQuc2V0KHBhZElkKTtcbiAgICB0aGlzLnNldFRpbWVyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVBhZCgpID09PSBwYWRJZCkgdGhpcy5hY3RpdmVQYWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgfSwgbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbml0aWFsU2VxdWVuY2UoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLm1vZGVDb25maWcoKS5zdGFydFN0ZXBzIH0sICgpID0+IHRoaXMucmFuZG9tUGFkSWQoKSk7XG4gIH1cblxuICBwcml2YXRlIHJhbmRvbVBhZElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFkc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLnBhZHMubGVuZ3RoKV0uaWQ7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTY29yZShyb3VuZDogbnVtYmVyLCBzdGVwczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHJvdW5kIDw9IDApIHJldHVybjtcbiAgICBjb25zdCBlbnRyeTogU2ltb25MZWFkZXJib2FyZEVudHJ5ID0ge1xuICAgICAgbW9kZTogdGhpcy5tb2RlKCksXG4gICAgICByb3VuZCxcbiAgICAgIHN0ZXBzLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgICBjb25zdCB1cGRhdGVkID0gW2VudHJ5LCAuLi50aGlzLmxlYWRlcmJvYXJkKCldXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5yb3VuZCAtIGEucm91bmQgfHwgYi5zdGVwcyAtIGEuc3RlcHMpXG4gICAgICAuc2xpY2UoMCwgNDApO1xuICAgIHRoaXMubGVhZGVyYm9hcmQuc2V0KHVwZGF0ZWQpO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMRUFERVJCT0FSRF9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEVsIHJhbmtpbmcgbG9jYWwgbm8gZXMgY3LDrXRpY28gc2kgc3RvcmFnZSBubyBlc3TDoSBkaXNwb25pYmxlLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUb0dhbWVzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZExlYWRlcmJvYXJkKCk6IFNpbW9uTGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTEVBREVSQk9BUkRfS0VZKTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHJhdyA/IChKU09OLnBhcnNlKHJhdykgYXMgU2ltb25MZWFkZXJib2FyZEVudHJ5W10pIDogW107XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogW107XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaW1lcihjYWxsYmFjazogKCkgPT4gdm9pZCwgbXM6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIG1zKTtcbiAgICB0aGlzLnRpbWVycy5wdXNoKGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJUaW1lcnMoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lcnMuZm9yRWFjaCgoaWQpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQoaWQpKTtcbiAgICB0aGlzLnRpbWVycyA9IFtdO1xuICAgIHRoaXMuYWNjZXB0aW5nSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVBhZC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt2YWx1ZS5zbGljZSgxKX1gO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1pbmlHYW1lU3RhdHVzID0gJ2F2YWlsYWJsZScgfCAnc29vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaUdhbWVEZWZpbml0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgcm91dGU/OiBzdHJpbmc7XG4gIHN0YXR1cz86IE1pbmlHYW1lU3RhdHVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmlHYW1lUGxheWVyUHJvZmlsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYXZhdGFyOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTWVtb3J5R2FtZURpZmZpY3VsdHkgPSAnZWFzeScgfCAnbWVkaXVtJyB8ICdoYXJkJztcblxuZXhwb3J0IHR5cGUgTWVtb3J5R2FtZU1vZGUgPSAnY2xhc3NpYycgfCAncmVsYXhlZCcgfCAndGltZWQnO1xuXG5leHBvcnQgdHlwZSBNZW1vcnlHYW1lUHJvZmlsZSA9ICdraWQnIHwgJ2NsYXNzaWMnIHwgJ25pbmphJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHYW1lQ2FyZCB7XG4gIGlkOiBzdHJpbmc7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBtYXRjaGVkOiBib29sZWFuO1xuICBmbGlwcGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTaW1vbkdhbWVNb2RlID0gJ2tpZCcgfCAnY2xhc3NpYycgfCAnbmluamEnO1xuXG5leHBvcnQgdHlwZSBTaW1vbkdhbWVQaGFzZSA9ICdob21lJyB8ICdzaG93aW5nJyB8ICd3YWl0aW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbW9uUGFkIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgdG9uZTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBCdWJibGVCbGl0ek1vZGUgPSAna2lkJyB8ICdjbGFzc2ljJyB8ICduaW5qYSc7XG5leHBvcnQgdHlwZSBCdWJibGVCbGl0elBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ2ZpbmlzaGVkJztcbmV4cG9ydCB0eXBlIEJ1YmJsZUJsaXR6Q29sb3IgPSAncm9zZScgfCAnY3lhbicgfCAnc3VuJyB8ICd2aW9sZXQnIHwgJ2xlYWYnIHwgJ29yYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnViYmxlQmxpdHpDZWxsIHtcbiAgaWQ6IHN0cmluZztcbiAgcm93OiBudW1iZXI7XG4gIGNvbDogbnVtYmVyO1xuICBjb2xvcjogQnViYmxlQmxpdHpDb2xvcjtcbiAgc3RhdGU/OiAnaWRsZScgfCAncG9wcGluZycgfCAnZmFsbGluZycgfCAnZW50ZXJpbmcnO1xuICBkcm9wPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzQm9hcmRTaXplID0gNiB8IDg7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSAnd2hpdGUnIHwgJ2JsYWNrJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNBbmltYWxUeXBlID0gJ2VhZ2xlJyB8ICdidWxsJyB8ICdrYW5nYXJvbycgfCAnbGlvbic7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzTW92ZUtpbmQgPSAnYmFzaWMnIHwgJ3Bvd2VyJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNXaW5SZWFzb24gPSAncHJvbW90aW9uJyB8ICdlbGltaW5hdGlvbicgfCAncmVzaWduYXRpb24nO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0dhbWVNb2RlID0gJ2xvY2FsJyB8ICdvbmxpbmUnO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0xvY2FsTW9kZSA9ICdvbmUtZGV2aWNlJyB8ICdib3QnO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkgPSAnZWFzeScgfCAnbm9ybWFsJyB8ICdoYXJkJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNCb3RQcm9maWxlSWQgPVxuICB8ICdleHBsb3JlcidcbiAgfCAnaW1wdWxzaXZlJ1xuICB8ICdydW5uZXInXG4gIHwgJ2h1bnRlcidcbiAgfCAnZ3VhcmRpYW4nXG4gIHwgJ2p1bXBlcidcbiAgfCAnc3RyYXRlZ2lzdCdcbiAgfCAncHJlZGF0b3InXG4gIHwgJ3NwcmludGVyJ1xuICB8ICdzZW50aW5lbCdcbiAgfCAnb3JhY2xlJ1xuICB8ICdhbWJ1c2hlcidcbiAgfCAnbG9ja3NtaXRoJ1xuICB8ICdzdG9ybSdcbiAgfCAnbWF0cmlhcmNoJ1xuICB8ICdlbmRnYW1lJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNHYW1lU3RhdHVzID0gJ3dhaXRpbmcnIHwgJ2luX3Byb2dyZXNzJyB8ICdmaW5pc2hlZCcgfCAnZXhwaXJlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc0JvdFByb2ZpbGUge1xuICBpZDogQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZDtcbiAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHk7XG4gIGF2YXRhcjogc3RyaW5nO1xuICBsYWJlbEtleTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbktleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNQb3NpdGlvbiB7XG4gIHJvdzogbnVtYmVyO1xuICBjb2w6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzUGllY2Uge1xuICBpZDogc3RyaW5nO1xuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzUG93ZXJDYXJkIHtcbiAgdHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIHVzZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc1BsYXllclN0YXRlIHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgcG93ZXJVbmxvY2tlZDogYm9vbGVhbjtcbiAgY2FyZHM6IFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgQ2hlc3NpbWFsc1Bvd2VyQ2FyZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmUge1xuICBwaWVjZUlkOiBzdHJpbmc7XG4gIGZyb206IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAga2luZDogQ2hlc3NpbWFsc01vdmVLaW5kO1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgY2FwdHVyZXNQaWVjZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5IHtcbiAgbW92ZU51bWJlcjogbnVtYmVyO1xuICBwaWVjZXM6IENoZXNzaW1hbHNQaWVjZVtdO1xuICBjdXJyZW50VHVybjogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICBzdGF0dXM6IENoZXNzaW1hbHNHYW1lU3RhdHVzO1xuICBtb3ZlPzogQ2hlc3NpbWFsc01vdmU7XG4gIHdpbm5lcj86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgd2lubmVyUmVhc29uPzogQ2hlc3NpbWFsc1dpblJlYXNvbjtcbn1cblxuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc01vdmVMb2dTdGF0dXMgPSAnYWNjZXB0ZWQnIHwgJ3JlamVjdGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUxvZ0VudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgYXQ6IHN0cmluZztcbiAgdWlkOiBzdHJpbmc7XG4gIHByb2ZpbGVJZD86IHN0cmluZztcbiAgc2VhdEtleT86IHN0cmluZztcbiAgc2lkZT86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzTW92ZUxvZ1N0YXR1cztcbiAgY29kZT86IHN0cmluZztcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmU7XG4gIG1vdmVDb3VudEJlZm9yZTogbnVtYmVyO1xuICBtb3ZlQ291bnRBZnRlcj86IG51bWJlcjtcbiAgY3VycmVudFR1cm5CZWZvcmU6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQge1xuICB1aWQ6IHN0cmluZztcbiAgYWNjb3VudFVzZXJJZD86IHN0cmluZztcbiAgcHJvZmlsZUlkOiBzdHJpbmc7XG4gIHNlYXRLZXk/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgYXZhdGFyOiBzdHJpbmc7XG4gIGF2YXRhclVybD86IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgc2lkZT86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgam9pbmVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzT25saW5lU3RhdGUge1xuICBnYW1lSWQ6IHN0cmluZztcbiAgaG9zdFVpZDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICBleHBpcmVzQXRNczogbnVtYmVyO1xuICByb3VuZDogbnVtYmVyO1xuICByZW1hdGNoT2Y/OiBzdHJpbmc7XG4gIGxvYmJ5PzogQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50O1xuICBwZW5kaW5nR3Vlc3Q/OiBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQ7XG4gIHBhcnRpY2lwYW50cz86IFBhcnRpYWw8UmVjb3JkPENoZXNzaW1hbHNQbGF5ZXJDb2xvciwgQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50Pj47XG4gIHJlbWF0Y2hSZXF1ZXN0cz86IHN0cmluZ1tdO1xuICBtb3ZlTG9nPzogQ2hlc3NpbWFsc01vdmVMb2dFbnRyeVtdO1xufVxuXG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzSGlzdG9yeU91dGNvbWUgPSAnd2FpdGluZycgfCAncGVuZGluZycgfCAnaW5fcHJvZ3Jlc3MnIHwgJ3dvbicgfCAnbG9zdCcgfCAnZGVjbGluZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNIaXN0b3J5RW50cnkge1xuICBnYW1lSWQ6IHN0cmluZztcbiAgbW9kZTogJ29ubGluZSc7XG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZTtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgb3V0Y29tZTogQ2hlc3NpbWFsc0hpc3RvcnlPdXRjb21lO1xuICBzaWRlPzogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICBvcHBvbmVudFVpZD86IHN0cmluZztcbiAgb3Bwb25lbnROYW1lPzogc3RyaW5nO1xuICB3aW5uZXI/OiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIHdpbm5lclJlYXNvbj86IENoZXNzaW1hbHNXaW5SZWFzb247XG4gIG1vdmVDb3VudDogbnVtYmVyO1xuICByb3VuZDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIGZpbmlzaGVkQXQ/OiBzdHJpbmc7XG4gIGV4cGlyZXNBdD86IHN0cmluZztcbiAgcmVtYXRjaE9mPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICBpZDogc3RyaW5nO1xuICBtb2RlOiBDaGVzc2ltYWxzR2FtZU1vZGU7XG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZTtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgY3VycmVudFR1cm46IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgcGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXTtcbiAgcGxheWVyczogUmVjb3JkPENoZXNzaW1hbHNQbGF5ZXJDb2xvciwgQ2hlc3NpbWFsc1BsYXllclN0YXRlPjtcbiAgd2lubmVyPzogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICB3aW5uZXJSZWFzb24/OiBDaGVzc2ltYWxzV2luUmVhc29uO1xuICBtb3ZlQ291bnQ6IG51bWJlcjtcbiAgbGFzdE1vdmU/OiBDaGVzc2ltYWxzTW92ZTtcbiAgbW92ZUhpc3Rvcnk/OiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeVtdO1xuICBvbmxpbmU/OiBDaGVzc2ltYWxzT25saW5lU3RhdGU7XG59XG5cbmV4cG9ydCB0eXBlIENocmlzdGlhbml0eVNlYXQgPSAnUDEnIHwgJ1AyJztcbmV4cG9ydCB0eXBlIENocmlzdGlhbml0eUdhbWVTdGF0dXMgPSAnaW5fcHJvZ3Jlc3MnIHwgJ2ZpbmlzaGVkJztcbmV4cG9ydCB0eXBlIENocmlzdGlhbml0eUdhbWVNb2RlID0gJ3NvbG9fYm90JyB8ICd0d29fcGxheWVyJyB8ICdsb2NhbF9wYXNzJztcbmV4cG9ydCB0eXBlIENocmlzdGlhbml0eUNhcmRUeXBlID0gJ2NoYXJhY3RlcicgfCAnb2ZmZXJpbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENocmlzdGlhbml0eUNhcmREZWZpbml0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBDaHJpc3RpYW5pdHlDYXJkVHlwZTtcbiAgY29zdDogbnVtYmVyO1xuICBhdHRhY2s6IG51bWJlcjtcbiAgbGlmZTogbnVtYmVyO1xuICBhYmlsaXR5TmFtZT86IHN0cmluZztcbiAgYWJpbGl0eVRleHQ/OiBzdHJpbmc7XG4gIGFiaWxpdHlDb3N0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlIHtcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICBjYXJkSWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBvd25lcjogQ2hyaXN0aWFuaXR5U2VhdDtcbiAgY29udHJvbGxlcjogQ2hyaXN0aWFuaXR5U2VhdDtcbiAgYXR0YWNrOiBudW1iZXI7XG4gIGN1cnJlbnRIcDogbnVtYmVyO1xuICBtYXhIcDogbnVtYmVyO1xuICBjYW5BdHRhY2s6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hyaXN0aWFuaXR5T2ZmZXJpbmdJbnN0YW5jZSB7XG4gIGluc3RhbmNlSWQ6IHN0cmluZztcbiAgY2FyZElkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3duZXI6IENocmlzdGlhbml0eVNlYXQ7XG4gIHJlYWR5OiBib29sZWFuO1xuICB2YWx1ZTogbnVtYmVyO1xuICBhYmlsaXR5TmFtZT86IHN0cmluZztcbiAgYWJpbGl0eVRleHQ/OiBzdHJpbmc7XG4gIGFiaWxpdHlDb3N0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENocmlzdGlhbml0eVBsYXllclN0YXRlIHtcbiAgc2VhdDogQ2hyaXN0aWFuaXR5U2VhdDtcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgYXZhdGFyPzogc3RyaW5nO1xuICBhdmF0YXJDb2xvcj86IHN0cmluZztcbiAgbGVhZGVyTmFtZTogc3RyaW5nO1xuICBsZWFkZXJIcDogbnVtYmVyO1xuICBsZWFkZXJNYXhIcDogbnVtYmVyO1xuICBvZmZlcmluZ3M6IENocmlzdGlhbml0eU9mZmVyaW5nSW5zdGFuY2VbXTtcbiAgb2ZmZXJpbmdQbGF5ZWRUaGlzVHVybjogYm9vbGVhbjtcbiAgaGFuZD86IHN0cmluZ1tdO1xuICBoYW5kQ291bnQ/OiBudW1iZXI7XG4gIGJhdHRsZVpvbmU6IENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hyaXN0aWFuaXR5R2FtZVN0YXRlIHtcbiAgZ2FtZUlkOiBzdHJpbmc7XG4gIHN0YXR1czogQ2hyaXN0aWFuaXR5R2FtZVN0YXR1cztcbiAgbW9kZTogQ2hyaXN0aWFuaXR5R2FtZU1vZGU7XG4gIHR1cm5Pd25lcjogQ2hyaXN0aWFuaXR5U2VhdDtcbiAgcmV2aXNpb246IG51bWJlcjtcbiAgdHVybkNvdW50OiBudW1iZXI7XG4gIG1hdGNoU2NvcmU6IFJlY29yZDxDaHJpc3RpYW5pdHlTZWF0LCBudW1iZXI+O1xuICBzaGFyZWREZWNrOiBzdHJpbmdbXTtcbiAgaGlzdG9yeVpvbmU6IHN0cmluZ1tdO1xuICBwbGF5ZXJzOiBSZWNvcmQ8Q2hyaXN0aWFuaXR5U2VhdCwgQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGU+O1xuICBsb2c6IHN0cmluZ1tdO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1pbmlHYW1lU3RhdHVzID0gJ2F2YWlsYWJsZScgfCAnc29vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaUdhbWVEZWZpbml0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgcm91dGU/OiBzdHJpbmc7XG4gIHN0YXR1cz86IE1pbmlHYW1lU3RhdHVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmlHYW1lUGxheWVyUHJvZmlsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYXZhdGFyOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTWVtb3J5R2FtZURpZmZpY3VsdHkgPSAnZWFzeScgfCAnbWVkaXVtJyB8ICdoYXJkJztcblxuZXhwb3J0IHR5cGUgTWVtb3J5R2FtZU1vZGUgPSAnY2xhc3NpYycgfCAncmVsYXhlZCcgfCAndGltZWQnO1xuXG5leHBvcnQgdHlwZSBNZW1vcnlHYW1lUHJvZmlsZSA9ICdraWQnIHwgJ2NsYXNzaWMnIHwgJ25pbmphJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHYW1lQ2FyZCB7XG4gIGlkOiBzdHJpbmc7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBtYXRjaGVkOiBib29sZWFuO1xuICBmbGlwcGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTaW1vbkdhbWVNb2RlID0gJ2tpZCcgfCAnY2xhc3NpYycgfCAnbmluamEnO1xuXG5leHBvcnQgdHlwZSBTaW1vbkdhbWVQaGFzZSA9ICdob21lJyB8ICdzaG93aW5nJyB8ICd3YWl0aW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbW9uUGFkIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgdG9uZTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBCdWJibGVCbGl0ek1vZGUgPSAna2lkJyB8ICdjbGFzc2ljJyB8ICduaW5qYSc7XG5leHBvcnQgdHlwZSBCdWJibGVCbGl0elBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ2ZpbmlzaGVkJztcbmV4cG9ydCB0eXBlIEJ1YmJsZUJsaXR6Q29sb3IgPSAncm9zZScgfCAnY3lhbicgfCAnc3VuJyB8ICd2aW9sZXQnIHwgJ2xlYWYnIHwgJ29yYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnViYmxlQmxpdHpDZWxsIHtcbiAgaWQ6IHN0cmluZztcbiAgcm93OiBudW1iZXI7XG4gIGNvbDogbnVtYmVyO1xuICBjb2xvcjogQnViYmxlQmxpdHpDb2xvcjtcbiAgc3RhdGU/OiAnaWRsZScgfCAncG9wcGluZycgfCAnZmFsbGluZycgfCAnZW50ZXJpbmcnO1xuICBkcm9wPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzQm9hcmRTaXplID0gNiB8IDg7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSAnd2hpdGUnIHwgJ2JsYWNrJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNBbmltYWxUeXBlID0gJ2VhZ2xlJyB8ICdidWxsJyB8ICdrYW5nYXJvbycgfCAnbGlvbic7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzTW92ZUtpbmQgPSAnYmFzaWMnIHwgJ3Bvd2VyJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNXaW5SZWFzb24gPSAncHJvbW90aW9uJyB8ICdlbGltaW5hdGlvbicgfCAncmVzaWduYXRpb24nO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0dhbWVNb2RlID0gJ2xvY2FsJyB8ICdvbmxpbmUnO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0xvY2FsTW9kZSA9ICdvbmUtZGV2aWNlJyB8ICdib3QnO1xuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkgPSAnZWFzeScgfCAnbm9ybWFsJyB8ICdoYXJkJztcbmV4cG9ydCB0eXBlIENoZXNzaW1hbHNCb3RQcm9maWxlSWQgPVxuICB8ICdleHBsb3JlcidcbiAgfCAnaW1wdWxzaXZlJ1xuICB8ICdydW5uZXInXG4gIHwgJ2h1bnRlcidcbiAgfCAnZ3VhcmRpYW4nXG4gIHwgJ2p1bXBlcidcbiAgfCAnc3RyYXRlZ2lzdCdcbiAgfCAncHJlZGF0b3InXG4gIHwgJ3NwcmludGVyJ1xuICB8ICdzZW50aW5lbCc7XG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzR2FtZVN0YXR1cyA9ICd3YWl0aW5nJyB8ICdpbl9wcm9ncmVzcycgfCAnZmluaXNoZWQnIHwgJ2V4cGlyZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNCb3RQcm9maWxlIHtcbiAgaWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQ7XG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5O1xuICBhdmF0YXI6IHN0cmluZztcbiAgbGFiZWxLZXk6IHN0cmluZztcbiAgZGVzY3JpcHRpb25LZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1cyA9ICdhY3RpdmUnIHwgJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJyB8ICdhYmFuZG9uZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNDaGFsbGVuZ2VCb3Qge1xuICBpZDogc3RyaW5nO1xuICByb3VuZDogbnVtYmVyO1xuICBwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQ7XG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5O1xuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemU7XG4gIGludHJvS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMge1xuICBwb3dlcnNVc2VkOiBSZWNvcmQ8Q2hlc3NpbWFsc0FuaW1hbFR5cGUsIG51bWJlcj47XG4gIHBvd2VyQ2FwdHVyZXM6IG51bWJlcjtcbiAgcHJvbW90aW9uczogbnVtYmVyO1xuICBjYXB0dXJlczogbnVtYmVyO1xuICBtb3ZlczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCB7XG4gIHJvdW5kOiBudW1iZXI7XG4gIGJvdElkOiBzdHJpbmc7XG4gIHByb2ZpbGVJZDogQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZDtcbiAgd29uOiBib29sZWFuO1xuICBsaXZlc1JlbWFpbmluZzogbnVtYmVyO1xuICBzdGF0czogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHM7XG4gIGZpbmlzaGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHtcbiAgaWQ6IHN0cmluZztcbiAgdXNlcklkPzogc3RyaW5nO1xuICBzdGF0dXM6IENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXM7XG4gIGxpdmVzU3RhcnQ6IDM7XG4gIGxpdmVzUmVtYWluaW5nOiBudW1iZXI7XG4gIGN1cnJlbnRSb3VuZDogbnVtYmVyO1xuICB3aW5zOiBudW1iZXI7XG4gIGxvc3NlczogbnVtYmVyO1xuICBiZXN0U3RyZWFrSW5SdW46IG51bWJlcjtcbiAgY3VycmVudFN0cmVhazogbnVtYmVyO1xuICBib3RMYWRkZXI6IHN0cmluZ1tdO1xuICByb3VuZFJlc3VsdHM6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdFtdO1xuICBzdGFydGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIGZpbmlzaGVkQXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc0NoYWxsZW5nZVN0YXRzIHtcbiAgdXNlcklkPzogc3RyaW5nO1xuICBjaGFsbGVuZ2VzUGxheWVkOiBudW1iZXI7XG4gIGNoYWxsZW5nZXNDb21wbGV0ZWQ6IG51bWJlcjtcbiAgYmVzdFdpblN0cmVhazogbnVtYmVyO1xuICBiZXN0Um91bmRSZWFjaGVkOiBudW1iZXI7XG4gIHRvdGFsV2luczogbnVtYmVyO1xuICB0b3RhbExvc3NlczogbnVtYmVyO1xuICBib3RzRGVmZWF0ZWQ6IG51bWJlcjtcbiAgcG93ZXJzVXNlZDogUmVjb3JkPENoZXNzaW1hbHNBbmltYWxUeXBlLCBudW1iZXI+O1xuICBwb3dlckNhcHR1cmVzOiBudW1iZXI7XG4gIHByb21vdGlvbnM6IG51bWJlcjtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNQb3NpdGlvbiB7XG4gIHJvdzogbnVtYmVyO1xuICBjb2w6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzUGllY2Uge1xuICBpZDogc3RyaW5nO1xuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzUG93ZXJDYXJkIHtcbiAgdHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIHVzZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc1BsYXllclN0YXRlIHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgcG93ZXJVbmxvY2tlZDogYm9vbGVhbjtcbiAgY2FyZHM6IFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgQ2hlc3NpbWFsc1Bvd2VyQ2FyZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmUge1xuICBwaWVjZUlkOiBzdHJpbmc7XG4gIGZyb206IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAga2luZDogQ2hlc3NpbWFsc01vdmVLaW5kO1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgY2FwdHVyZXNQaWVjZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5IHtcbiAgbW92ZU51bWJlcjogbnVtYmVyO1xuICBwaWVjZXM6IENoZXNzaW1hbHNQaWVjZVtdO1xuICBjdXJyZW50VHVybjogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICBzdGF0dXM6IENoZXNzaW1hbHNHYW1lU3RhdHVzO1xuICBtb3ZlPzogQ2hlc3NpbWFsc01vdmU7XG4gIHdpbm5lcj86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgd2lubmVyUmVhc29uPzogQ2hlc3NpbWFsc1dpblJlYXNvbjtcbn1cblxuZXhwb3J0IHR5cGUgQ2hlc3NpbWFsc01vdmVMb2dTdGF0dXMgPSAnYWNjZXB0ZWQnIHwgJ3JlamVjdGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUxvZ0VudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgYXQ6IHN0cmluZztcbiAgdWlkOiBzdHJpbmc7XG4gIHByb2ZpbGVJZD86IHN0cmluZztcbiAgc2VhdEtleT86IHN0cmluZztcbiAgc2lkZT86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzTW92ZUxvZ1N0YXR1cztcbiAgY29kZT86IHN0cmluZztcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmU7XG4gIG1vdmVDb3VudEJlZm9yZTogbnVtYmVyO1xuICBtb3ZlQ291bnRBZnRlcj86IG51bWJlcjtcbiAgY3VycmVudFR1cm5CZWZvcmU6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQge1xuICB1aWQ6IHN0cmluZztcbiAgYWNjb3VudFVzZXJJZD86IHN0cmluZztcbiAgcHJvZmlsZUlkOiBzdHJpbmc7XG4gIHNlYXRLZXk/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgYXZhdGFyOiBzdHJpbmc7XG4gIGF2YXRhclVybD86IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgc2lkZT86IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgam9pbmVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVzc2ltYWxzT25saW5lU3RhdGUge1xuICBnYW1lSWQ6IHN0cmluZztcbiAgaG9zdFVpZDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICBleHBpcmVzQXRNczogbnVtYmVyO1xuICByb3VuZDogbnVtYmVyO1xuICByZW1hdGNoT2Y/OiBzdHJpbmc7XG4gIGxvYmJ5PzogQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50O1xuICBwZW5kaW5nR3Vlc3Q/OiBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQ7XG4gIHBhcnRpY2lwYW50cz86IFBhcnRpYWw8UmVjb3JkPENoZXNzaW1hbHNQbGF5ZXJDb2xvciwgQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50Pj47XG4gIHJlbWF0Y2hSZXF1ZXN0cz86IHN0cmluZ1tdO1xuICBtb3ZlTG9nPzogQ2hlc3NpbWFsc01vdmVMb2dFbnRyeVtdO1xufVxuXG5leHBvcnQgdHlwZSBDaGVzc2ltYWxzSGlzdG9yeU91dGNvbWUgPSAnd2FpdGluZycgfCAncGVuZGluZycgfCAnaW5fcHJvZ3Jlc3MnIHwgJ3dvbicgfCAnbG9zdCcgfCAnZGVjbGluZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNIaXN0b3J5RW50cnkge1xuICBnYW1lSWQ6IHN0cmluZztcbiAgbW9kZTogJ29ubGluZSc7XG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZTtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgb3V0Y29tZTogQ2hlc3NpbWFsc0hpc3RvcnlPdXRjb21lO1xuICBzaWRlPzogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICBvcHBvbmVudFVpZD86IHN0cmluZztcbiAgb3Bwb25lbnROYW1lPzogc3RyaW5nO1xuICB3aW5uZXI/OiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIHdpbm5lclJlYXNvbj86IENoZXNzaW1hbHNXaW5SZWFzb247XG4gIG1vdmVDb3VudDogbnVtYmVyO1xuICByb3VuZDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIGZpbmlzaGVkQXQ/OiBzdHJpbmc7XG4gIGV4cGlyZXNBdD86IHN0cmluZztcbiAgcmVtYXRjaE9mPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICBpZDogc3RyaW5nO1xuICBtb2RlOiBDaGVzc2ltYWxzR2FtZU1vZGU7XG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZTtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgY3VycmVudFR1cm46IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgcGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXTtcbiAgcGxheWVyczogUmVjb3JkPENoZXNzaW1hbHNQbGF5ZXJDb2xvciwgQ2hlc3NpbWFsc1BsYXllclN0YXRlPjtcbiAgd2lubmVyPzogQ2hlc3NpbWFsc1BsYXllckNvbG9yO1xuICB3aW5uZXJSZWFzb24/OiBDaGVzc2ltYWxzV2luUmVhc29uO1xuICBtb3ZlQ291bnQ6IG51bWJlcjtcbiAgbGFzdE1vdmU/OiBDaGVzc2ltYWxzTW92ZTtcbiAgbW92ZUhpc3Rvcnk/OiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeVtdO1xuICBvbmxpbmU/OiBDaGVzc2ltYWxzT25saW5lU3RhdGU7XG59XG4iXX0=
@@ -626,9 +626,11 @@ export class AnalyticsService {
626
626
  params,
627
627
  sent,
628
628
  };
629
- this._debugHistory.update(history => {
630
- const newHistory = [event, ...history];
631
- return newHistory.slice(0, MAX_DEBUG_HISTORY);
629
+ queueMicrotask(() => {
630
+ this._debugHistory.update(history => {
631
+ const newHistory = [event, ...history];
632
+ return newHistory.slice(0, MAX_DEBUG_HISTORY);
633
+ });
632
634
  });
633
635
  }
634
636
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AnalyticsService, deps: [{ token: i0.Injector }, { token: VALTECH_FIREBASE_CONFIG }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -644,4 +646,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
644
646
  type: Inject,
645
647
  args: [PLATFORM_ID]
646
648
  }] }] });
647
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWVuRCw2REFBNkQ7QUFDN0QsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztBQUV4RCw4Q0FBOEM7QUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsUUFBa0IsRUFDZSxNQUE2QixFQUN6QyxVQUFrQjtRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2UsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXBDakQsOEVBQThFO1FBQzlFLG1CQUFtQjtRQUNuQiw4RUFBOEU7UUFFN0Qsa0JBQWEsR0FBRyxNQUFNLENBQWU7WUFDcEQsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVjLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUF3QixF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QUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSTtZQUNKLElBQUk7WUFDSixNQUFNO1lBQ04sSUFBSTtTQUNMLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBM3FCVSxnQkFBZ0IsMENBb0NqQix1QkFBdUIsYUFDdkIsV0FBVzttSEFyQ1YsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXFDN0IsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUM5QixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuYWx5dGljcyBTZXJ2aWNlIChGaXJlYmFzZSBHQTQpXG4gKlxuICogU2VydmljaW8gcGFyYSB0cmFja2luZyBkZSBldmVudG9zLCBwYWdlIHZpZXdzIHkgZXJyb3JlcyBjb24gRmlyZWJhc2UgQW5hbHl0aWNzLlxuICogSW50ZWdyYSBjb24gZWwgc2lzdGVtYSBkZSBhdXRoIHBhcmEgdXNlciBwcm9wZXJ0aWVzIHkgcmVzcGV0YSBjb25zZW50IG1vZGUgR0RQUi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBQTEFURk9STV9JRCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBsb2dFdmVudCwgc2V0VXNlcklkLCBzZXRVc2VyUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYW5hbHl0aWNzJztcblxuaW1wb3J0IHsgVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBWYWx0ZWNoRmlyZWJhc2VDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc0NvbmZpZyxcbiAgQW5hbHl0aWNzRGVidWdFdmVudCxcbiAgQW5hbHl0aWNzRXZlbnROYW1lLFxuICBBbmFseXRpY3NFdmVudFBhcmFtcyxcbiAgQW5hbHl0aWNzSXRlbSxcbiAgQ29uc2VudFNldHRpbmdzLFxuICBDb25zZW50U3RhdGUsXG4gIERlYnVnRXZlbnRUeXBlLFxuICBUaW1pbmdNZXRyaWMsXG4gIFVzZXJQcm9wZXJ0aWVzLFxufSBmcm9tICcuL2FuYWx5dGljcy10eXBlcyc7XG5cbi8qKiBLZXkgcG9yIGRlZmVjdG8gcGFyYSBwZXJzaXN0aXIgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2UgKi9cbmNvbnN0IERFRkFVTFRfQ09OU0VOVF9TVE9SQUdFX0tFWSA9ICdhbmFseXRpY3NfY29uc2VudCc7XG5cbi8qKiBNw6F4aW1vIGRlIGV2ZW50b3MgZW4gaGlzdG9yaWFsIGRlIGRlYnVnICovXG5jb25zdCBNQVhfREVCVUdfSElTVE9SWSA9IDEwMDtcblxuLyoqXG4gKiBTZXJ2aWNpbyBkZSBGaXJlYmFzZSBBbmFseXRpY3MgKEdBNCkuXG4gKlxuICogUHJvcG9yY2lvbmEgdHJhY2tpbmcgZGUgZXZlbnRvcywgcGFnZSB2aWV3cywgZXJyb3JlcyB5IG3DqXRyaWNhcyBkZSBwZXJmb3JtYW5jZS5cbiAqIFNvcG9ydGEgR0RQUiBDb25zZW50IE1vZGUgeSBtb2RvIGRlYnVnIHBhcmEgZGVzYXJyb2xsby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7Li4ufSlcbiAqIGV4cG9ydCBjbGFzcyBQcm9kdWN0Q29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBhbmFseXRpY3MgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XG4gKlxuICogICBvblB1cmNoYXNlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcbiAqICAgICB0aGlzLmFuYWx5dGljcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gKiAgICAgICB0cmFuc2FjdGlvbl9pZDogb3JkZXIuaWQsXG4gKiAgICAgICB2YWx1ZTogb3JkZXIudG90YWwsXG4gKiAgICAgICBjdXJyZW5jeTogJ0VVUidcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFU1RBRE8gKFNpZ25hbHMpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnNlbnRTdGF0ZSA9IHNpZ25hbDxDb25zZW50U3RhdGU+KHtcbiAgICBzZXR0aW5nczoge30sXG4gICAgdXBkYXRlZEF0OiBudWxsLFxuICAgIGhhc0RlY2lkZWQ6IGZhbHNlLFxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RlYnVnTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlYnVnSGlzdG9yeSA9IHNpZ25hbDxBbmFseXRpY3NEZWJ1Z0V2ZW50W10+KFtdKTtcblxuICAvKiogRXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGFjdHVhbCAocmVhZG9ubHkpICovXG4gIHJlYWRvbmx5IGNvbnNlbnRTdGF0ZSA9IHRoaXMuX2NvbnNlbnRTdGF0ZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBlc3TDoSBlbiBtb2RvIGRlYnVnICovXG4gIHJlYWRvbmx5IGlzRGVidWdNb2RlID0gdGhpcy5faXNEZWJ1Z01vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBJbmRpY2Egc2kgYW5hbHl0aWNzIGVzdMOhIGhhYmlsaXRhZG8geSBmdW5jaW9uYW5kbyAqL1xuICByZWFkb25seSBpc0VuYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSAmJiB0aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncy5hbmFseXRpY3MgPT09IHRydWU7XG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05GSUdVUkFDScOTTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFuYWx5dGljc0NvbmZpZzogQW5hbHl0aWNzQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnNlbnRTdG9yYWdlS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRQcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1wbGluZ1JhdGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEZpcmViYXNlQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0XG4gICkge1xuICAgIHRoaXMuYW5hbHl0aWNzQ29uZmlnID0gY29uZmlnLmFuYWx5dGljc0NvbmZpZyA/PyB7fTtcbiAgICB0aGlzLmNvbnNlbnRTdG9yYWdlS2V5ID0gdGhpcy5hbmFseXRpY3NDb25maWcuY29uc2VudFN0b3JhZ2VLZXkgPz8gREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZO1xuICAgIHRoaXMuZXZlbnRQcmVmaXggPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5ldmVudFByZWZpeCA/PyAnJztcbiAgICB0aGlzLnNhbXBsaW5nUmF0ZSA9IHRoaXMuYW5hbHl0aWNzQ29uZmlnLnNhbXBsaW5nUmF0ZSA/PyAxLjA7XG5cbiAgICB0aGlzLmluaXRpYWxpemVBbmFseXRpY3MoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gZGUgYW5hbHl0aWNzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVBbmFseXRpY3MoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29uc2VudCBNb2RlIHYyOiBkZWZhdWx0IGRlbmllZCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgIC8vIEdhcmFudGl6YSBxdWUgbm8gc2UgcmVjb2xlY3RhbiBkYXRvcyBoYXN0YSBxdWUgZWwgdXN1YXJpbyBkZWNpZGEuXG4gICAgdGhpcy5zZXRDb25zZW50TW9kZURlZmF1bHQoKTtcblxuICAgIC8vIENhcmdhciBjb25zZW50IGRlc2RlIGxvY2FsU3RvcmFnZVxuICAgIHRoaXMubG9hZENvbnNlbnRGcm9tU3RvcmFnZSgpO1xuXG4gICAgLy8gQ29uZmlndXJhciBkZWJ1ZyBtb2RlXG4gICAgY29uc3QgZGVidWdNb2RlID0gdGhpcy5hbmFseXRpY3NDb25maWcuZGVidWdNb2RlID8/IGZhbHNlO1xuICAgIHRoaXMuX2lzRGVidWdNb2RlLnNldChkZWJ1Z01vZGUpO1xuXG4gICAgLy8gQXBsaWNhciBjb25zZW50IGluaWNpYWwgYSBndGFnXG4gICAgdGhpcy5hcHBseUNvbnNlbnRUb0d0YWcodGhpcy5fY29uc2VudFN0YXRlKCkuc2V0dGluZ3MpO1xuXG4gICAgLy8gU2V0ZWFyIHVzZXIgcHJvcGVydGllcyBwb3IgZGVmZWN0b1xuICAgIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0VXNlclByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXModGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdFVzZXJQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBpZiAoZGVidWdNb2RlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ1tBbmFseXRpY3NdIEluaWNpYWxpemFkbyBlbiBtb2RvIGRlYnVnIC0gZXZlbnRvcyBzZSBsb2d1ZWFuIGVuIGNvbnNvbGEgWSBzZSBlbnbDrWFuIGEgRmlyZWJhc2UnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGluc3RhbmNpYSBkZSBBbmFseXRpY3MgZGUgZm9ybWEgcGVyZXpvc2EuXG4gICAqIEVzdG8gZXZpdGEgZWwgZXJyb3IgZGUgQVBQX0lOSVRJQUxJWkVSIGRlIEFuZ3VsYXJGaXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBbmFseXRpY3NJbnN0YW5jZSgpOiBBbmFseXRpY3MgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZUFuYWx5dGljcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChBbmFseXRpY3MsIG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIEFuYWx5dGljcyBlc3TDoSBzb3BvcnRhZG9cbiAgICovXG4gIHByaXZhdGUgaXNBbmFseXRpY3NTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVBbmFseXRpY3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmZpcmViYXNlLm1lYXN1cmVtZW50SWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FuYWx5dGljc10gbWVhc3VyZW1lbnRJZCBubyBjb25maWd1cmFkbyBlbiBmaXJlYmFzZSBjb25maWcnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBkZWJlIGVudmlhciBlbCBldmVudG8gKHNhbXBsaW5nKVxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRTYW1wbGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2FtcGxpbmdSYXRlID49IDEuMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIDwgdGhpcy5zYW1wbGluZ1JhdGU7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUEFHRSBWSUVXU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gcGFnZSB2aWV3LlxuICAgKiBOb3JtYWxtZW50ZSBzZSB1c2EgYXV0b23DoXRpY2FtZW50ZSB2aWEgQW5hbHl0aWNzUm91dGVyVHJhY2tlci5cbiAgICpcbiAgICogQHBhcmFtIHBhZ2VQYXRoIC0gUnV0YSBkZSBsYSBww6FnaW5hIChlajogJy9wcm9kdWN0cy8xMjMnKVxuICAgKiBAcGFyYW0gcGFnZVRpdGxlIC0gVMOtdHVsbyBkZSBsYSBww6FnaW5hIChvcGNpb25hbClcbiAgICovXG4gIGxvZ1BhZ2VWaWV3KHBhZ2VQYXRoOiBzdHJpbmcsIHBhZ2VUaXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFNTUjogZG9jdW1lbnQvd2luZG93IG5vIGV4aXN0ZW4gY29tbyBnbG9iYWxzIOKAlCBvcHRpb25hbCBjaGFpbmluZyBubyBwcm90ZWdlXG4gICAgLy8gY29udHJhIFJlZmVyZW5jZUVycm9yLiBDb3J0b2NpcmN1aXRvIGV4cGzDrWNpdG8gcG9yIHBsYXRmb3JtLlxuICAgIGNvbnN0IGlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgdGhpcy5sb2dFdmVudCgncGFnZV92aWV3Jywge1xuICAgICAgcGFnZV9wYXRoOiBwYWdlUGF0aCxcbiAgICAgIHBhZ2VfdGl0bGU6IHBhZ2VUaXRsZSA/PyAoaXNCcm93c2VyID8gZG9jdW1lbnQudGl0bGUgOiB1bmRlZmluZWQpLFxuICAgICAgcGFnZV9sb2NhdGlvbjogaXNCcm93c2VyID8gd2luZG93LmxvY2F0aW9uLmhyZWYgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gc2NyZWVuIHZpZXcgKHBhcmEgYXBwcyB0aXBvIFNQQSkuXG4gICAqXG4gICAqIEBwYXJhbSBzY3JlZW5OYW1lIC0gTm9tYnJlIGRlbCBzY3JlZW5cbiAgICogQHBhcmFtIHNjcmVlbkNsYXNzIC0gQ2xhc2UgZGVsIHNjcmVlbiAob3BjaW9uYWwpXG4gICAqL1xuICBsb2dTY3JlZW5WaWV3KHNjcmVlbk5hbWU6IHN0cmluZywgc2NyZWVuQ2xhc3M/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCdzY3JlZW5fdmlldycsIHtcbiAgICAgIHNjcmVlbl9uYW1lOiBzY3JlZW5OYW1lLFxuICAgICAgc2NyZWVuX2NsYXNzOiBzY3JlZW5DbGFzcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFVkVOVE9TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gdGlwYWRvIEdBNC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50TmFtZSAtIE5vbWJyZSBkZWwgZXZlbnRvICh0aXBhZG8pXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBkZWwgZXZlbnRvICh0aXBhZG9zIHNlZ8O6biBlbCBub21icmUpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRXZlbnRvIHRpcGFkbyBjb24gYXV0b2NvbXBsZXRhZG9cbiAgICogYW5hbHl0aWNzLmxvZ0V2ZW50KCdhZGRfdG9fY2FydCcsIHtcbiAgICogICBpdGVtX2lkOiAnMTIzJyxcbiAgICogICBpdGVtX25hbWU6ICdQcm9kdWN0bycsXG4gICAqICAgdmFsdWU6IDk5Ljk5LFxuICAgKiAgIGN1cnJlbmN5OiAnRVVSJ1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBsb2dFdmVudDxUIGV4dGVuZHMgQW5hbHl0aWNzRXZlbnROYW1lPihldmVudE5hbWU6IFQsIHBhcmFtcz86IEFuYWx5dGljc0V2ZW50UGFyYW1zW1RdKTogdm9pZCB7XG4gICAgdGhpcy50cmFja0V2ZW50KGV2ZW50TmFtZSwgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gY3VzdG9tIGNvbiBwYXLDoW1ldHJvcyBsaWJyZXMuXG4gICAqIFVzYXIgY3VhbmRvIGVsIGV2ZW50byBubyBlc3TDoSBlbiBlbCBjYXTDoWxvZ28gdGlwYWRvLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIC0gTm9tYnJlIGRlbCBldmVudG8gY3VzdG9tXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBsaWJyZXNcbiAgICovXG4gIGxvZ0N1c3RvbUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZXZlbnRQcmVmaXggKyBldmVudE5hbWU7XG4gICAgdGhpcy50cmFja0V2ZW50KHByZWZpeGVkTmFtZSwgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMw7NnaWNhIGNvbcO6biBwYXJhIGVudmlhciBldmVudG9zXG4gICAqL1xuICBwcml2YXRlIHRyYWNrRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgLy8gVmVyaWZpY2FyIGNvbnNlbnRcbiAgICBpZiAoIXRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLmFuYWx5dGljcykge1xuICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFwbGljYXIgc2FtcGxpbmdcbiAgICBpZiAoIXRoaXMuc2hvdWxkU2FtcGxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBtb2RlOiBsb2d1ZWFyIGVuIGNvbnNvbGEgKHBlcm8gc2VndWlyIGVudmlhbmRvIGEgRmlyZWJhc2UpXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBFdmVudDogJHtldmVudE5hbWV9YCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBFbnZpYXIgYSBGaXJlYmFzZVxuICAgIGNvbnN0IGFuYWx5dGljcyA9IHRoaXMuZ2V0QW5hbHl0aWNzSW5zdGFuY2UoKTtcbiAgICBpZiAoYW5hbHl0aWNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dFdmVudChhbmFseXRpY3MsIGV2ZW50TmFtZSBhcyBzdHJpbmcsIHBhcmFtcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2V2ZW50JywgZXZlbnROYW1lLCBwYXJhbXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3IgZW52aWFuZG8gZXZlbnRvOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCdldmVudCcsIGV2ZW50TmFtZSwgcGFyYW1zLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVDT01NRVJDRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdmlzdGEgZGUgaXRlbVxuICAgKi9cbiAgbG9nVmlld0l0ZW0oaXRlbTogQW5hbHl0aWNzSXRlbSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3ZpZXdfaXRlbScsIHtcbiAgICAgIGl0ZW1faWQ6IGl0ZW0uaXRlbV9pZCxcbiAgICAgIGl0ZW1fbmFtZTogaXRlbS5pdGVtX25hbWUsXG4gICAgICB2YWx1ZTogaXRlbS5wcmljZSxcbiAgICAgIGN1cnJlbmN5OiBpdGVtLmN1cnJlbmN5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGFncmVnYXIgYWwgY2Fycml0b1xuICAgKi9cbiAgbG9nQWRkVG9DYXJ0KGl0ZW06IEFuYWx5dGljc0l0ZW0sIHF1YW50aXR5ID0gMSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2FkZF90b19jYXJ0Jywge1xuICAgICAgaXRlbV9pZDogaXRlbS5pdGVtX2lkLFxuICAgICAgaXRlbV9uYW1lOiBpdGVtLml0ZW1fbmFtZSxcbiAgICAgIHZhbHVlOiAoaXRlbS5wcmljZSA/PyAwKSAqIHF1YW50aXR5LFxuICAgICAgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3ksXG4gICAgICBxdWFudGl0eSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBpbmljaW8gZGUgY2hlY2tvdXRcbiAgICovXG4gIGxvZ0JlZ2luQ2hlY2tvdXQoaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSwgdmFsdWU6IG51bWJlciwgY3VycmVuY3kgPSAnRVVSJyk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2JlZ2luX2NoZWNrb3V0Jywge1xuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGNvbXByYSBjb21wbGV0YWRhXG4gICAqL1xuICBsb2dQdXJjaGFzZShcbiAgICB0cmFuc2FjdGlvbklkOiBzdHJpbmcsXG4gICAgaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSxcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGN1cnJlbmN5ID0gJ0VVUidcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gICAgICB0cmFuc2FjdGlvbl9pZDogdHJhbnNhY3Rpb25JZCxcbiAgICAgIHZhbHVlLFxuICAgICAgY3VycmVuY3ksXG4gICAgICBpdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVU0VSIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFNldGVhIGVsIHVzZXJJZCBwYXJhIGFzb2NpYXIgZXZlbnRvcyBjb24gZWwgdXN1YXJpby5cbiAgICogTGxhbWFkbyBhdXRvbcOhdGljYW1lbnRlIHNpIGVuYWJsZUF1dGhJbnRlZ3JhdGlvbj10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIC0gSUQgZGVsIHVzdWFyaW8gbyBudWxsIHBhcmEgbGltcGlhclxuICAgKi9cbiAgc2V0VXNlcklkKHVzZXJJZDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVidWcgbW9kZTogbG9ndWVhciBlbiBjb25zb2xhIChwZXJvIHNlZ3VpciBlbnZpYW5kbyBhIEZpcmViYXNlKVxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW0FuYWx5dGljc10gU2V0IHVzZXJJZDogJHt1c2VySWR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFVzZXJJZChhbmFseXRpY3MsIHVzZXJJZCk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAndXNlcl9pZCcsIHsgdXNlcklkIH0sIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlcklkOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICd1c2VyX2lkJywgeyB1c2VySWQgfSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3VzZXJfaWQnLCB7IHVzZXJJZCB9LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIHByb3BpZWRhZGVzIGRlbCB1c3VhcmlvIHBhcmEgc2VnbWVudGFjacOzbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgLSBQcm9waWVkYWRlcyBrZXktdmFsdWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhbmFseXRpY3Muc2V0VXNlclByb3BlcnRpZXMoe1xuICAgKiAgIHN1YnNjcmlwdGlvbl90aWVyOiAncHJlbWl1bScsXG4gICAqICAgcHJlZmVycmVkX2xhbmd1YWdlOiAnZXMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHNldFVzZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IFVzZXJQcm9wZXJ0aWVzIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlYnVnIG1vZGU6IGxvZ3VlYXIgZW4gY29uc29sYSAocGVybyBzZWd1aXIgZW52aWFuZG8gYSBGaXJlYmFzZSlcbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coJ1tBbmFseXRpY3NdIFNldCB1c2VyIHByb3BlcnRpZXM6JywgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENvbnZlcnRpciBhIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gcGFyYSBGaXJlYmFzZVxuICAgICAgICBjb25zdCBzdHJpbmdQcm9wczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdHJpbmdQcm9wc1trZXldID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0VXNlclByb3BlcnRpZXMoYW5hbHl0aWNzLCBzdHJpbmdQcm9wcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAncHJvcGVydGllcycsIHByb3BlcnRpZXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlciBwcm9wZXJ0aWVzOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICdwcm9wZXJ0aWVzJywgcHJvcGVydGllcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3Byb3BlcnRpZXMnLCBwcm9wZXJ0aWVzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIGxhIG9yZ2FuaXphY2nDs24gYWN0aXZhIChtdWx0aS10ZW5hbnQpLlxuICAgKiBMbGFtYWRvIGF1dG9tw6F0aWNhbWVudGUgc2kgZW5hYmxlQXV0aEludGVncmF0aW9uPXRydWUuXG4gICAqXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2nDs24gbyBudWxsXG4gICAqL1xuICBzZXRBY3RpdmVPcmdhbml6YXRpb24ob3JnSWQ6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAob3JnSWQpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXMoeyBhY3RpdmVfb3JnYW5pemF0aW9uOiBvcmdJZCB9KTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVJST1IgVFJBQ0tJTkdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIGVycm9yIHBhcmEgdHJhY2tpbmcuXG4gICAqIEludGVncmEgYXV0b23DoXRpY2FtZW50ZSBjb24gQW5ndWxhciBFcnJvckhhbmRsZXIgc2kgZW5hYmxlRXJyb3JUcmFja2luZz10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBFcnJvciBvIG1lbnNhamUgZGUgZXJyb3JcbiAgICogQHBhcmFtIGNvbnRleHQgLSBDb250ZXh0byBhZGljaW9uYWxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB0cnkge1xuICAgKiAgIGF3YWl0IHJpc2t5T3BlcmF0aW9uKCk7XG4gICAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAqICAgYW5hbHl0aWNzLmxvZ0Vycm9yKGVycm9yLCB7IGNvbnRleHQ6ICdjaGVja291dF9mbG93JyB9KTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGxvZ0Vycm9yKGVycm9yOiBFcnJvciB8IHN0cmluZywgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgIGNvbnN0IGVycm9yU3RhY2sgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZXJyb3JUeXBlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm5hbWUgOiAnRXJyb3InO1xuXG4gICAgdGhpcy5sb2dFdmVudCgnZXJyb3Jfb2NjdXJyZWQnLCB7XG4gICAgICBlcnJvcl90eXBlOiBlcnJvclR5cGUsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCksIC8vIExpbWl0YXIgbG9uZ2l0dWRcbiAgICAgIGVycm9yX3N0YWNrOiBlcnJvclN0YWNrPy5zdWJzdHJpbmcoMCwgNTAwKSxcbiAgICAgIGNvbnRleHQ6IGNvbnRleHQgPyBKU09OLnN0cmluZ2lmeShjb250ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBlcnJvciBmYXRhbCAoY3Jhc2gtbGV2ZWwpLlxuICAgKi9cbiAgbG9nRmF0YWxFcnJvcihlcnJvcjogRXJyb3IsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5sb2dFcnJvcihlcnJvciwgeyAuLi5jb250ZXh0LCBzZXZlcml0eTogJ2ZhdGFsJyB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05TRU5UIE1PREUgKEdEUFIpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGRlbCB1c3VhcmlvLlxuICAgKiBBZmVjdGEgcXXDqSBkYXRvcyBzZSByZWNvbGVjdGFuIHkgZW52w61hbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbnNlbnQgLSBTZXR0aW5ncyBkZSBjb25zZW50aW1pZW50b1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFVzdWFyaW8gYWNlcHRhIHRvZG9cbiAgICogYW5hbHl0aWNzLnVwZGF0ZUNvbnNlbnQoeyBhbmFseXRpY3M6IHRydWUsIGFkdmVydGlzaW5nOiB0cnVlIH0pO1xuICAgKlxuICAgKiAvLyBVc3VhcmlvIHJlY2hhemEgcHVibGljaWRhZFxuICAgKiBhbmFseXRpY3MudXBkYXRlQ29uc2VudCh7IGFuYWx5dGljczogdHJ1ZSwgYWR2ZXJ0aXNpbmc6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHVwZGF0ZUNvbnNlbnQoY29uc2VudDogQ29uc2VudFNldHRpbmdzKTogdm9pZCB7XG4gICAgY29uc3QgbmV3U3RhdGU6IENvbnNlbnRTdGF0ZSA9IHtcbiAgICAgIHNldHRpbmdzOiB7IC4uLnRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLCAuLi5jb25zZW50IH0sXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBoYXNEZWNpZGVkOiB0cnVlLFxuICAgIH07XG5cbiAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KG5ld1N0YXRlKTtcbiAgICB0aGlzLnNhdmVDb25zZW50VG9TdG9yYWdlKG5ld1N0YXRlKTtcbiAgICB0aGlzLmFwcGx5Q29uc2VudFRvR3RhZyhuZXdTdGF0ZS5zZXR0aW5ncyk7XG5cbiAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KFxuICAgICAgJ2NvbnNlbnQnLFxuICAgICAgJ3VwZGF0ZScsXG4gICAgICBjb25zZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVuaWVnYSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZGVueUFsbENvbnNlbnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25zZW50KHtcbiAgICAgIGFuYWx5dGljczogZmFsc2UsXG4gICAgICBhZHZlcnRpc2luZzogZmFsc2UsXG4gICAgICBmdW5jdGlvbmFsaXR5OiBmYWxzZSxcbiAgICAgIHNlY3VyaXR5OiB0cnVlLCAvLyBTaWVtcHJlIHBlcm1pdGlkb1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjZXB0YSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZ3JhbnRBbGxDb25zZW50KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uc2VudCh7XG4gICAgICBhbmFseXRpY3M6IHRydWUsXG4gICAgICBhZHZlcnRpc2luZzogdHJ1ZSxcbiAgICAgIGZ1bmN0aW9uYWxpdHk6IHRydWUsXG4gICAgICBzZWN1cml0eTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBhY3R1YWwgZGUgY29uc2VudGltaWVudG8uXG4gICAqL1xuICBnZXRDb25zZW50U3RhdGUoKTogQ29uc2VudFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29uc2VudFN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRXN0YWJsZWNlIGVsIGNvbnNlbnQgZGVmYXVsdCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgKiBSZXF1ZXJpZG8gcG9yIEdvb2dsZSBDb25zZW50IE1vZGUgdjIgcGFyYSBubyByZWNvbGVjdGFyIGRhdG9zIGhhc3RhXG4gICAqIHF1ZSBlbCB1c3VhcmlvIHRvbWUgdW5hIGRlY2lzaW9uIGV4cGxpY2l0YS5cbiAgICovXG4gIHByaXZhdGUgc2V0Q29uc2VudE1vZGVEZWZhdWx0KCk6IHZvaWQge1xuICAgIC8vIGd0YWcgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBhdW4gKEZpcmViYXNlIGxvIGNhcmdhIGFzeW5jKS5cbiAgICAvLyBVc2Ftb3MgZGF0YUxheWVyIGRpcmVjdGFtZW50ZSwgcXVlIHNpIGVzdGEgZGlzcG9uaWJsZSBkZXNkZSBpbmRleC5odG1sLlxuICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBkYXRhTGF5ZXIgPSAod1snZGF0YUxheWVyJ10gYXMgdW5rbm93bltdKSA/PyBbXTtcbiAgICB3WydkYXRhTGF5ZXInXSA9IGRhdGFMYXllcjtcbiAgICAvLyBwdXNoIGEgZGF0YUxheWVyIGZ1bmNpb25hIGFudGVzIGRlIHF1ZSBndGFnLmpzIGNhcmd1ZSDigJQgR0EgbG8gY29uc3VtZSBhbCBjYXJnYXIuXG4gICAgZGF0YUxheWVyLnB1c2goJ2NvbnNlbnQnLCAnZGVmYXVsdCcsIHtcbiAgICAgIGFuYWx5dGljc19zdG9yYWdlOiAnZGVuaWVkJyxcbiAgICAgIGFkX3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgYWRfdXNlcl9kYXRhOiAnZGVuaWVkJyxcbiAgICAgIGFkX3BlcnNvbmFsaXphdGlvbjogJ2RlbmllZCcsXG4gICAgICBmdW5jdGlvbmFsaXR5X3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgc2VjdXJpdHlfc3RvcmFnZTogJ2dyYW50ZWQnLFxuICAgICAgd2FpdF9mb3JfdXBkYXRlOiA1MDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBsaWNhIGNvbnNlbnQgc2V0dGluZ3MgYSBndGFnIChHQTQgQ29uc2VudCBNb2RlIHYyKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUNvbnNlbnRUb0d0YWcoc2V0dGluZ3M6IENvbnNlbnRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGd0YWcgPSAod2luZG93IGFzIGFueSkuZ3RhZztcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZ3RhZygnY29uc2VudCcsICd1cGRhdGUnLCB7XG4gICAgICAgIGFuYWx5dGljc19zdG9yYWdlOiBzZXR0aW5ncy5hbmFseXRpY3MgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfc3RvcmFnZTogc2V0dGluZ3MuYWR2ZXJ0aXNpbmcgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfdXNlcl9kYXRhOiBzZXR0aW5ncy5hZHZlcnRpc2luZyA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBhZF9wZXJzb25hbGl6YXRpb246IHNldHRpbmdzLmFkdmVydGlzaW5nID8gJ2dyYW50ZWQnIDogJ2RlbmllZCcsXG4gICAgICAgIGZ1bmN0aW9uYWxpdHlfc3RvcmFnZTogc2V0dGluZ3MuZnVuY3Rpb25hbGl0eSA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBzZWN1cml0eV9zdG9yYWdlOiBzZXR0aW5ncy5zZWN1cml0eSAhPT0gZmFsc2UgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGFwbGljYW5kbyBjb25zZW50IGEgZ3RhZzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGNvbnNlbnQgZGVzZGUgbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIGxvYWRDb25zZW50RnJvbVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uc2VudFN0b3JhZ2VLZXkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZCkgYXMgQ29uc2VudFN0YXRlO1xuICAgICAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KHtcbiAgICAgICAgICAuLi5wYXJzZWQsXG4gICAgICAgICAgdXBkYXRlZEF0OiBwYXJzZWQudXBkYXRlZEF0ID8gbmV3IERhdGUocGFyc2VkLnVwZGF0ZWRBdCkgOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdENvbnNlbnRHcmFudGVkKSB7XG4gICAgICAgIC8vIEF1dG8tZ3JhbnQgYWxsIGNvbnNlbnQgcGFyYSBkZXNhcnJvbGxvL3Rlc3RpbmdcbiAgICAgICAgdGhpcy5fY29uc2VudFN0YXRlLnNldCh7XG4gICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIGFuYWx5dGljczogdHJ1ZSxcbiAgICAgICAgICAgIGFkdmVydGlzaW5nOiB0cnVlLFxuICAgICAgICAgICAgZnVuY3Rpb25hbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIHNlY3VyaXR5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIGhhc0RlY2lkZWQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCkge1xuICAgICAgICAvLyBBcGxpY2FyIGNvbnNlbnQgcG9yIGRlZmVjdG8gc2kgbm8gaGF5IGd1YXJkYWRvXG4gICAgICAgIHRoaXMuX2NvbnNlbnRTdGF0ZS5zZXQoe1xuICAgICAgICAgIHNldHRpbmdzOiB0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG51bGwsXG4gICAgICAgICAgaGFzRGVjaWRlZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGNhcmdhbmRvIGNvbnNlbnQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZUNvbnNlbnRUb1N0b3JhZ2Uoc3RhdGU6IENvbnNlbnRTdGF0ZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmNvbnNlbnRTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGd1YXJkYW5kbyBjb25zZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVElNSU5HIC8gUEVSRk9STUFOQ0VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuYSBtw6l0cmljYSBkZSB0aW1pbmcvcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gTm9tYnJlIGRlIGxhIG3DqXRyaWNhXG4gICAqIEBwYXJhbSB2YWx1ZU1zIC0gVmFsb3IgZW4gbWlsaXNlZ3VuZG9zXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBhZGljaW9uYWxlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAqIGF3YWl0IGxvYWREYXRhKCk7XG4gICAqIGFuYWx5dGljcy5sb2dUaW1pbmcoJ2RhdGFfbG9hZCcsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQsIHtcbiAgICogICBjYXRlZ29yeTogJ2FwaScsXG4gICAqICAgZW5kcG9pbnQ6ICcvcHJvZHVjdHMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGxvZ1RpbWluZyhuYW1lOiBzdHJpbmcsIHZhbHVlTXM6IG51bWJlciwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3BlcmZvcm1hbmNlX21ldHJpYycsIHtcbiAgICAgIG1ldHJpY19uYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IE1hdGgucm91bmQodmFsdWVNcyksXG4gICAgICB1bml0OiAnbXMnLFxuICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERFQlVHXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBIYWJpbGl0YS9kZXNoYWJpbGl0YSBtb2RvIGRlYnVnLlxuICAgKiBFbiBkZWJ1ZzogbG9nZWEgZXZlbnRvcyBhIGNvbnNvbGEgYWRlbcOhcyBkZSBlbnZpYXJsb3MgYSBGaXJlYmFzZS5cbiAgICovXG4gIHNldERlYnVnTW9kZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNEZWJ1Z01vZGUuc2V0KGVuYWJsZWQpO1xuICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBEZWJ1ZyBtb2RlOiAke2VuYWJsZWQgPyAnT04nIDogJ09GRid9YCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBoaXN0b3JpYWwgZGUgZXZlbnRvcyAoc29sbyBlbiBkZWJ1ZyBtb2RlKS5cbiAgICogw5p0aWwgcGFyYSB0ZXN0aW5nIHkgZGVzYXJyb2xsby5cbiAgICovXG4gIGdldERlYnVnSGlzdG9yeSgpOiBBbmFseXRpY3NEZWJ1Z0V2ZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgaGlzdG9yaWFsIGRlIGRlYnVnLlxuICAgKi9cbiAgY2xlYXJEZWJ1Z0hpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnNldChbXSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIGV2ZW50byBhbCBoaXN0b3JpYWwgZGUgZGVidWdcbiAgICovXG4gIHByaXZhdGUgYWRkVG9EZWJ1Z0hpc3RvcnkoXG4gICAgdHlwZTogRGVidWdFdmVudFR5cGUsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHNlbnQgPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudDogQW5hbHl0aWNzRGVidWdFdmVudCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIHR5cGUsXG4gICAgICBuYW1lLFxuICAgICAgcGFyYW1zLFxuICAgICAgc2VudCxcbiAgICB9O1xuXG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnVwZGF0ZShoaXN0b3J5ID0+IHtcbiAgICAgIGNvbnN0IG5ld0hpc3RvcnkgPSBbZXZlbnQsIC4uLmhpc3RvcnldO1xuICAgICAgcmV0dXJuIG5ld0hpc3Rvcnkuc2xpY2UoMCwgTUFYX0RFQlVHX0hJU1RPUlkpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
649
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWVuRCw2REFBNkQ7QUFDN0QsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztBQUV4RCw4Q0FBOEM7QUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsUUFBa0IsRUFDZSxNQUE2QixFQUN6QyxVQUFrQjtRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2UsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXBDakQsOEVBQThFO1FBQzlFLG1CQUFtQjtRQUNuQiw4RUFBOEU7UUFFN0Qsa0JBQWEsR0FBRyxNQUFNLENBQWU7WUFDcEQsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVjLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUF3QixF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QUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSTtZQUNKLElBQUk7WUFDSixNQUFNO1lBQ04sSUFBSTtTQUNMLENBQUM7UUFFRixjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBN3FCVSxnQkFBZ0IsMENBb0NqQix1QkFBdUIsYUFDdkIsV0FBVzttSEFyQ1YsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXFDN0IsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUM5QixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuYWx5dGljcyBTZXJ2aWNlIChGaXJlYmFzZSBHQTQpXG4gKlxuICogU2VydmljaW8gcGFyYSB0cmFja2luZyBkZSBldmVudG9zLCBwYWdlIHZpZXdzIHkgZXJyb3JlcyBjb24gRmlyZWJhc2UgQW5hbHl0aWNzLlxuICogSW50ZWdyYSBjb24gZWwgc2lzdGVtYSBkZSBhdXRoIHBhcmEgdXNlciBwcm9wZXJ0aWVzIHkgcmVzcGV0YSBjb25zZW50IG1vZGUgR0RQUi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBQTEFURk9STV9JRCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBsb2dFdmVudCwgc2V0VXNlcklkLCBzZXRVc2VyUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYW5hbHl0aWNzJztcblxuaW1wb3J0IHsgVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBWYWx0ZWNoRmlyZWJhc2VDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc0NvbmZpZyxcbiAgQW5hbHl0aWNzRGVidWdFdmVudCxcbiAgQW5hbHl0aWNzRXZlbnROYW1lLFxuICBBbmFseXRpY3NFdmVudFBhcmFtcyxcbiAgQW5hbHl0aWNzSXRlbSxcbiAgQ29uc2VudFNldHRpbmdzLFxuICBDb25zZW50U3RhdGUsXG4gIERlYnVnRXZlbnRUeXBlLFxuICBUaW1pbmdNZXRyaWMsXG4gIFVzZXJQcm9wZXJ0aWVzLFxufSBmcm9tICcuL2FuYWx5dGljcy10eXBlcyc7XG5cbi8qKiBLZXkgcG9yIGRlZmVjdG8gcGFyYSBwZXJzaXN0aXIgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2UgKi9cbmNvbnN0IERFRkFVTFRfQ09OU0VOVF9TVE9SQUdFX0tFWSA9ICdhbmFseXRpY3NfY29uc2VudCc7XG5cbi8qKiBNw6F4aW1vIGRlIGV2ZW50b3MgZW4gaGlzdG9yaWFsIGRlIGRlYnVnICovXG5jb25zdCBNQVhfREVCVUdfSElTVE9SWSA9IDEwMDtcblxuLyoqXG4gKiBTZXJ2aWNpbyBkZSBGaXJlYmFzZSBBbmFseXRpY3MgKEdBNCkuXG4gKlxuICogUHJvcG9yY2lvbmEgdHJhY2tpbmcgZGUgZXZlbnRvcywgcGFnZSB2aWV3cywgZXJyb3JlcyB5IG3DqXRyaWNhcyBkZSBwZXJmb3JtYW5jZS5cbiAqIFNvcG9ydGEgR0RQUiBDb25zZW50IE1vZGUgeSBtb2RvIGRlYnVnIHBhcmEgZGVzYXJyb2xsby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7Li4ufSlcbiAqIGV4cG9ydCBjbGFzcyBQcm9kdWN0Q29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBhbmFseXRpY3MgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XG4gKlxuICogICBvblB1cmNoYXNlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcbiAqICAgICB0aGlzLmFuYWx5dGljcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gKiAgICAgICB0cmFuc2FjdGlvbl9pZDogb3JkZXIuaWQsXG4gKiAgICAgICB2YWx1ZTogb3JkZXIudG90YWwsXG4gKiAgICAgICBjdXJyZW5jeTogJ0VVUidcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFU1RBRE8gKFNpZ25hbHMpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnNlbnRTdGF0ZSA9IHNpZ25hbDxDb25zZW50U3RhdGU+KHtcbiAgICBzZXR0aW5nczoge30sXG4gICAgdXBkYXRlZEF0OiBudWxsLFxuICAgIGhhc0RlY2lkZWQ6IGZhbHNlLFxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RlYnVnTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlYnVnSGlzdG9yeSA9IHNpZ25hbDxBbmFseXRpY3NEZWJ1Z0V2ZW50W10+KFtdKTtcblxuICAvKiogRXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGFjdHVhbCAocmVhZG9ubHkpICovXG4gIHJlYWRvbmx5IGNvbnNlbnRTdGF0ZSA9IHRoaXMuX2NvbnNlbnRTdGF0ZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBlc3TDoSBlbiBtb2RvIGRlYnVnICovXG4gIHJlYWRvbmx5IGlzRGVidWdNb2RlID0gdGhpcy5faXNEZWJ1Z01vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBJbmRpY2Egc2kgYW5hbHl0aWNzIGVzdMOhIGhhYmlsaXRhZG8geSBmdW5jaW9uYW5kbyAqL1xuICByZWFkb25seSBpc0VuYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSAmJiB0aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncy5hbmFseXRpY3MgPT09IHRydWU7XG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05GSUdVUkFDScOTTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFuYWx5dGljc0NvbmZpZzogQW5hbHl0aWNzQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnNlbnRTdG9yYWdlS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRQcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1wbGluZ1JhdGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEZpcmViYXNlQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0XG4gICkge1xuICAgIHRoaXMuYW5hbHl0aWNzQ29uZmlnID0gY29uZmlnLmFuYWx5dGljc0NvbmZpZyA/PyB7fTtcbiAgICB0aGlzLmNvbnNlbnRTdG9yYWdlS2V5ID0gdGhpcy5hbmFseXRpY3NDb25maWcuY29uc2VudFN0b3JhZ2VLZXkgPz8gREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZO1xuICAgIHRoaXMuZXZlbnRQcmVmaXggPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5ldmVudFByZWZpeCA/PyAnJztcbiAgICB0aGlzLnNhbXBsaW5nUmF0ZSA9IHRoaXMuYW5hbHl0aWNzQ29uZmlnLnNhbXBsaW5nUmF0ZSA/PyAxLjA7XG5cbiAgICB0aGlzLmluaXRpYWxpemVBbmFseXRpY3MoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gZGUgYW5hbHl0aWNzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVBbmFseXRpY3MoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29uc2VudCBNb2RlIHYyOiBkZWZhdWx0IGRlbmllZCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgIC8vIEdhcmFudGl6YSBxdWUgbm8gc2UgcmVjb2xlY3RhbiBkYXRvcyBoYXN0YSBxdWUgZWwgdXN1YXJpbyBkZWNpZGEuXG4gICAgdGhpcy5zZXRDb25zZW50TW9kZURlZmF1bHQoKTtcblxuICAgIC8vIENhcmdhciBjb25zZW50IGRlc2RlIGxvY2FsU3RvcmFnZVxuICAgIHRoaXMubG9hZENvbnNlbnRGcm9tU3RvcmFnZSgpO1xuXG4gICAgLy8gQ29uZmlndXJhciBkZWJ1ZyBtb2RlXG4gICAgY29uc3QgZGVidWdNb2RlID0gdGhpcy5hbmFseXRpY3NDb25maWcuZGVidWdNb2RlID8/IGZhbHNlO1xuICAgIHRoaXMuX2lzRGVidWdNb2RlLnNldChkZWJ1Z01vZGUpO1xuXG4gICAgLy8gQXBsaWNhciBjb25zZW50IGluaWNpYWwgYSBndGFnXG4gICAgdGhpcy5hcHBseUNvbnNlbnRUb0d0YWcodGhpcy5fY29uc2VudFN0YXRlKCkuc2V0dGluZ3MpO1xuXG4gICAgLy8gU2V0ZWFyIHVzZXIgcHJvcGVydGllcyBwb3IgZGVmZWN0b1xuICAgIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0VXNlclByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXModGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdFVzZXJQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBpZiAoZGVidWdNb2RlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ1tBbmFseXRpY3NdIEluaWNpYWxpemFkbyBlbiBtb2RvIGRlYnVnIC0gZXZlbnRvcyBzZSBsb2d1ZWFuIGVuIGNvbnNvbGEgWSBzZSBlbnbDrWFuIGEgRmlyZWJhc2UnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGluc3RhbmNpYSBkZSBBbmFseXRpY3MgZGUgZm9ybWEgcGVyZXpvc2EuXG4gICAqIEVzdG8gZXZpdGEgZWwgZXJyb3IgZGUgQVBQX0lOSVRJQUxJWkVSIGRlIEFuZ3VsYXJGaXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBbmFseXRpY3NJbnN0YW5jZSgpOiBBbmFseXRpY3MgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZUFuYWx5dGljcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChBbmFseXRpY3MsIG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIEFuYWx5dGljcyBlc3TDoSBzb3BvcnRhZG9cbiAgICovXG4gIHByaXZhdGUgaXNBbmFseXRpY3NTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVBbmFseXRpY3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmZpcmViYXNlLm1lYXN1cmVtZW50SWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FuYWx5dGljc10gbWVhc3VyZW1lbnRJZCBubyBjb25maWd1cmFkbyBlbiBmaXJlYmFzZSBjb25maWcnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBkZWJlIGVudmlhciBlbCBldmVudG8gKHNhbXBsaW5nKVxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRTYW1wbGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2FtcGxpbmdSYXRlID49IDEuMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIDwgdGhpcy5zYW1wbGluZ1JhdGU7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUEFHRSBWSUVXU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gcGFnZSB2aWV3LlxuICAgKiBOb3JtYWxtZW50ZSBzZSB1c2EgYXV0b23DoXRpY2FtZW50ZSB2aWEgQW5hbHl0aWNzUm91dGVyVHJhY2tlci5cbiAgICpcbiAgICogQHBhcmFtIHBhZ2VQYXRoIC0gUnV0YSBkZSBsYSBww6FnaW5hIChlajogJy9wcm9kdWN0cy8xMjMnKVxuICAgKiBAcGFyYW0gcGFnZVRpdGxlIC0gVMOtdHVsbyBkZSBsYSBww6FnaW5hIChvcGNpb25hbClcbiAgICovXG4gIGxvZ1BhZ2VWaWV3KHBhZ2VQYXRoOiBzdHJpbmcsIHBhZ2VUaXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFNTUjogZG9jdW1lbnQvd2luZG93IG5vIGV4aXN0ZW4gY29tbyBnbG9iYWxzIOKAlCBvcHRpb25hbCBjaGFpbmluZyBubyBwcm90ZWdlXG4gICAgLy8gY29udHJhIFJlZmVyZW5jZUVycm9yLiBDb3J0b2NpcmN1aXRvIGV4cGzDrWNpdG8gcG9yIHBsYXRmb3JtLlxuICAgIGNvbnN0IGlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgdGhpcy5sb2dFdmVudCgncGFnZV92aWV3Jywge1xuICAgICAgcGFnZV9wYXRoOiBwYWdlUGF0aCxcbiAgICAgIHBhZ2VfdGl0bGU6IHBhZ2VUaXRsZSA/PyAoaXNCcm93c2VyID8gZG9jdW1lbnQudGl0bGUgOiB1bmRlZmluZWQpLFxuICAgICAgcGFnZV9sb2NhdGlvbjogaXNCcm93c2VyID8gd2luZG93LmxvY2F0aW9uLmhyZWYgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gc2NyZWVuIHZpZXcgKHBhcmEgYXBwcyB0aXBvIFNQQSkuXG4gICAqXG4gICAqIEBwYXJhbSBzY3JlZW5OYW1lIC0gTm9tYnJlIGRlbCBzY3JlZW5cbiAgICogQHBhcmFtIHNjcmVlbkNsYXNzIC0gQ2xhc2UgZGVsIHNjcmVlbiAob3BjaW9uYWwpXG4gICAqL1xuICBsb2dTY3JlZW5WaWV3KHNjcmVlbk5hbWU6IHN0cmluZywgc2NyZWVuQ2xhc3M/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCdzY3JlZW5fdmlldycsIHtcbiAgICAgIHNjcmVlbl9uYW1lOiBzY3JlZW5OYW1lLFxuICAgICAgc2NyZWVuX2NsYXNzOiBzY3JlZW5DbGFzcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFVkVOVE9TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gdGlwYWRvIEdBNC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50TmFtZSAtIE5vbWJyZSBkZWwgZXZlbnRvICh0aXBhZG8pXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBkZWwgZXZlbnRvICh0aXBhZG9zIHNlZ8O6biBlbCBub21icmUpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRXZlbnRvIHRpcGFkbyBjb24gYXV0b2NvbXBsZXRhZG9cbiAgICogYW5hbHl0aWNzLmxvZ0V2ZW50KCdhZGRfdG9fY2FydCcsIHtcbiAgICogICBpdGVtX2lkOiAnMTIzJyxcbiAgICogICBpdGVtX25hbWU6ICdQcm9kdWN0bycsXG4gICAqICAgdmFsdWU6IDk5Ljk5LFxuICAgKiAgIGN1cnJlbmN5OiAnRVVSJ1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBsb2dFdmVudDxUIGV4dGVuZHMgQW5hbHl0aWNzRXZlbnROYW1lPihldmVudE5hbWU6IFQsIHBhcmFtcz86IEFuYWx5dGljc0V2ZW50UGFyYW1zW1RdKTogdm9pZCB7XG4gICAgdGhpcy50cmFja0V2ZW50KGV2ZW50TmFtZSwgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gY3VzdG9tIGNvbiBwYXLDoW1ldHJvcyBsaWJyZXMuXG4gICAqIFVzYXIgY3VhbmRvIGVsIGV2ZW50byBubyBlc3TDoSBlbiBlbCBjYXTDoWxvZ28gdGlwYWRvLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIC0gTm9tYnJlIGRlbCBldmVudG8gY3VzdG9tXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBsaWJyZXNcbiAgICovXG4gIGxvZ0N1c3RvbUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZXZlbnRQcmVmaXggKyBldmVudE5hbWU7XG4gICAgdGhpcy50cmFja0V2ZW50KHByZWZpeGVkTmFtZSwgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMw7NnaWNhIGNvbcO6biBwYXJhIGVudmlhciBldmVudG9zXG4gICAqL1xuICBwcml2YXRlIHRyYWNrRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgLy8gVmVyaWZpY2FyIGNvbnNlbnRcbiAgICBpZiAoIXRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLmFuYWx5dGljcykge1xuICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFwbGljYXIgc2FtcGxpbmdcbiAgICBpZiAoIXRoaXMuc2hvdWxkU2FtcGxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBtb2RlOiBsb2d1ZWFyIGVuIGNvbnNvbGEgKHBlcm8gc2VndWlyIGVudmlhbmRvIGEgRmlyZWJhc2UpXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBFdmVudDogJHtldmVudE5hbWV9YCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBFbnZpYXIgYSBGaXJlYmFzZVxuICAgIGNvbnN0IGFuYWx5dGljcyA9IHRoaXMuZ2V0QW5hbHl0aWNzSW5zdGFuY2UoKTtcbiAgICBpZiAoYW5hbHl0aWNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dFdmVudChhbmFseXRpY3MsIGV2ZW50TmFtZSBhcyBzdHJpbmcsIHBhcmFtcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2V2ZW50JywgZXZlbnROYW1lLCBwYXJhbXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3IgZW52aWFuZG8gZXZlbnRvOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCdldmVudCcsIGV2ZW50TmFtZSwgcGFyYW1zLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVDT01NRVJDRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdmlzdGEgZGUgaXRlbVxuICAgKi9cbiAgbG9nVmlld0l0ZW0oaXRlbTogQW5hbHl0aWNzSXRlbSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3ZpZXdfaXRlbScsIHtcbiAgICAgIGl0ZW1faWQ6IGl0ZW0uaXRlbV9pZCxcbiAgICAgIGl0ZW1fbmFtZTogaXRlbS5pdGVtX25hbWUsXG4gICAgICB2YWx1ZTogaXRlbS5wcmljZSxcbiAgICAgIGN1cnJlbmN5OiBpdGVtLmN1cnJlbmN5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGFncmVnYXIgYWwgY2Fycml0b1xuICAgKi9cbiAgbG9nQWRkVG9DYXJ0KGl0ZW06IEFuYWx5dGljc0l0ZW0sIHF1YW50aXR5ID0gMSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2FkZF90b19jYXJ0Jywge1xuICAgICAgaXRlbV9pZDogaXRlbS5pdGVtX2lkLFxuICAgICAgaXRlbV9uYW1lOiBpdGVtLml0ZW1fbmFtZSxcbiAgICAgIHZhbHVlOiAoaXRlbS5wcmljZSA/PyAwKSAqIHF1YW50aXR5LFxuICAgICAgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3ksXG4gICAgICBxdWFudGl0eSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBpbmljaW8gZGUgY2hlY2tvdXRcbiAgICovXG4gIGxvZ0JlZ2luQ2hlY2tvdXQoaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSwgdmFsdWU6IG51bWJlciwgY3VycmVuY3kgPSAnRVVSJyk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2JlZ2luX2NoZWNrb3V0Jywge1xuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGNvbXByYSBjb21wbGV0YWRhXG4gICAqL1xuICBsb2dQdXJjaGFzZShcbiAgICB0cmFuc2FjdGlvbklkOiBzdHJpbmcsXG4gICAgaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSxcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGN1cnJlbmN5ID0gJ0VVUidcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gICAgICB0cmFuc2FjdGlvbl9pZDogdHJhbnNhY3Rpb25JZCxcbiAgICAgIHZhbHVlLFxuICAgICAgY3VycmVuY3ksXG4gICAgICBpdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVU0VSIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFNldGVhIGVsIHVzZXJJZCBwYXJhIGFzb2NpYXIgZXZlbnRvcyBjb24gZWwgdXN1YXJpby5cbiAgICogTGxhbWFkbyBhdXRvbcOhdGljYW1lbnRlIHNpIGVuYWJsZUF1dGhJbnRlZ3JhdGlvbj10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIC0gSUQgZGVsIHVzdWFyaW8gbyBudWxsIHBhcmEgbGltcGlhclxuICAgKi9cbiAgc2V0VXNlcklkKHVzZXJJZDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVidWcgbW9kZTogbG9ndWVhciBlbiBjb25zb2xhIChwZXJvIHNlZ3VpciBlbnZpYW5kbyBhIEZpcmViYXNlKVxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW0FuYWx5dGljc10gU2V0IHVzZXJJZDogJHt1c2VySWR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFVzZXJJZChhbmFseXRpY3MsIHVzZXJJZCk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAndXNlcl9pZCcsIHsgdXNlcklkIH0sIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlcklkOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICd1c2VyX2lkJywgeyB1c2VySWQgfSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3VzZXJfaWQnLCB7IHVzZXJJZCB9LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIHByb3BpZWRhZGVzIGRlbCB1c3VhcmlvIHBhcmEgc2VnbWVudGFjacOzbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgLSBQcm9waWVkYWRlcyBrZXktdmFsdWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhbmFseXRpY3Muc2V0VXNlclByb3BlcnRpZXMoe1xuICAgKiAgIHN1YnNjcmlwdGlvbl90aWVyOiAncHJlbWl1bScsXG4gICAqICAgcHJlZmVycmVkX2xhbmd1YWdlOiAnZXMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHNldFVzZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IFVzZXJQcm9wZXJ0aWVzIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlYnVnIG1vZGU6IGxvZ3VlYXIgZW4gY29uc29sYSAocGVybyBzZWd1aXIgZW52aWFuZG8gYSBGaXJlYmFzZSlcbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coJ1tBbmFseXRpY3NdIFNldCB1c2VyIHByb3BlcnRpZXM6JywgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENvbnZlcnRpciBhIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gcGFyYSBGaXJlYmFzZVxuICAgICAgICBjb25zdCBzdHJpbmdQcm9wczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdHJpbmdQcm9wc1trZXldID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0VXNlclByb3BlcnRpZXMoYW5hbHl0aWNzLCBzdHJpbmdQcm9wcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAncHJvcGVydGllcycsIHByb3BlcnRpZXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlciBwcm9wZXJ0aWVzOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICdwcm9wZXJ0aWVzJywgcHJvcGVydGllcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3Byb3BlcnRpZXMnLCBwcm9wZXJ0aWVzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIGxhIG9yZ2FuaXphY2nDs24gYWN0aXZhIChtdWx0aS10ZW5hbnQpLlxuICAgKiBMbGFtYWRvIGF1dG9tw6F0aWNhbWVudGUgc2kgZW5hYmxlQXV0aEludGVncmF0aW9uPXRydWUuXG4gICAqXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2nDs24gbyBudWxsXG4gICAqL1xuICBzZXRBY3RpdmVPcmdhbml6YXRpb24ob3JnSWQ6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAob3JnSWQpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXMoeyBhY3RpdmVfb3JnYW5pemF0aW9uOiBvcmdJZCB9KTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVJST1IgVFJBQ0tJTkdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIGVycm9yIHBhcmEgdHJhY2tpbmcuXG4gICAqIEludGVncmEgYXV0b23DoXRpY2FtZW50ZSBjb24gQW5ndWxhciBFcnJvckhhbmRsZXIgc2kgZW5hYmxlRXJyb3JUcmFja2luZz10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBFcnJvciBvIG1lbnNhamUgZGUgZXJyb3JcbiAgICogQHBhcmFtIGNvbnRleHQgLSBDb250ZXh0byBhZGljaW9uYWxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB0cnkge1xuICAgKiAgIGF3YWl0IHJpc2t5T3BlcmF0aW9uKCk7XG4gICAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAqICAgYW5hbHl0aWNzLmxvZ0Vycm9yKGVycm9yLCB7IGNvbnRleHQ6ICdjaGVja291dF9mbG93JyB9KTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGxvZ0Vycm9yKGVycm9yOiBFcnJvciB8IHN0cmluZywgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgIGNvbnN0IGVycm9yU3RhY2sgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZXJyb3JUeXBlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm5hbWUgOiAnRXJyb3InO1xuXG4gICAgdGhpcy5sb2dFdmVudCgnZXJyb3Jfb2NjdXJyZWQnLCB7XG4gICAgICBlcnJvcl90eXBlOiBlcnJvclR5cGUsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCksIC8vIExpbWl0YXIgbG9uZ2l0dWRcbiAgICAgIGVycm9yX3N0YWNrOiBlcnJvclN0YWNrPy5zdWJzdHJpbmcoMCwgNTAwKSxcbiAgICAgIGNvbnRleHQ6IGNvbnRleHQgPyBKU09OLnN0cmluZ2lmeShjb250ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBlcnJvciBmYXRhbCAoY3Jhc2gtbGV2ZWwpLlxuICAgKi9cbiAgbG9nRmF0YWxFcnJvcihlcnJvcjogRXJyb3IsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5sb2dFcnJvcihlcnJvciwgeyAuLi5jb250ZXh0LCBzZXZlcml0eTogJ2ZhdGFsJyB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05TRU5UIE1PREUgKEdEUFIpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGRlbCB1c3VhcmlvLlxuICAgKiBBZmVjdGEgcXXDqSBkYXRvcyBzZSByZWNvbGVjdGFuIHkgZW52w61hbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbnNlbnQgLSBTZXR0aW5ncyBkZSBjb25zZW50aW1pZW50b1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFVzdWFyaW8gYWNlcHRhIHRvZG9cbiAgICogYW5hbHl0aWNzLnVwZGF0ZUNvbnNlbnQoeyBhbmFseXRpY3M6IHRydWUsIGFkdmVydGlzaW5nOiB0cnVlIH0pO1xuICAgKlxuICAgKiAvLyBVc3VhcmlvIHJlY2hhemEgcHVibGljaWRhZFxuICAgKiBhbmFseXRpY3MudXBkYXRlQ29uc2VudCh7IGFuYWx5dGljczogdHJ1ZSwgYWR2ZXJ0aXNpbmc6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHVwZGF0ZUNvbnNlbnQoY29uc2VudDogQ29uc2VudFNldHRpbmdzKTogdm9pZCB7XG4gICAgY29uc3QgbmV3U3RhdGU6IENvbnNlbnRTdGF0ZSA9IHtcbiAgICAgIHNldHRpbmdzOiB7IC4uLnRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLCAuLi5jb25zZW50IH0sXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBoYXNEZWNpZGVkOiB0cnVlLFxuICAgIH07XG5cbiAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KG5ld1N0YXRlKTtcbiAgICB0aGlzLnNhdmVDb25zZW50VG9TdG9yYWdlKG5ld1N0YXRlKTtcbiAgICB0aGlzLmFwcGx5Q29uc2VudFRvR3RhZyhuZXdTdGF0ZS5zZXR0aW5ncyk7XG5cbiAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KFxuICAgICAgJ2NvbnNlbnQnLFxuICAgICAgJ3VwZGF0ZScsXG4gICAgICBjb25zZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVuaWVnYSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZGVueUFsbENvbnNlbnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25zZW50KHtcbiAgICAgIGFuYWx5dGljczogZmFsc2UsXG4gICAgICBhZHZlcnRpc2luZzogZmFsc2UsXG4gICAgICBmdW5jdGlvbmFsaXR5OiBmYWxzZSxcbiAgICAgIHNlY3VyaXR5OiB0cnVlLCAvLyBTaWVtcHJlIHBlcm1pdGlkb1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjZXB0YSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZ3JhbnRBbGxDb25zZW50KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uc2VudCh7XG4gICAgICBhbmFseXRpY3M6IHRydWUsXG4gICAgICBhZHZlcnRpc2luZzogdHJ1ZSxcbiAgICAgIGZ1bmN0aW9uYWxpdHk6IHRydWUsXG4gICAgICBzZWN1cml0eTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBhY3R1YWwgZGUgY29uc2VudGltaWVudG8uXG4gICAqL1xuICBnZXRDb25zZW50U3RhdGUoKTogQ29uc2VudFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29uc2VudFN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRXN0YWJsZWNlIGVsIGNvbnNlbnQgZGVmYXVsdCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgKiBSZXF1ZXJpZG8gcG9yIEdvb2dsZSBDb25zZW50IE1vZGUgdjIgcGFyYSBubyByZWNvbGVjdGFyIGRhdG9zIGhhc3RhXG4gICAqIHF1ZSBlbCB1c3VhcmlvIHRvbWUgdW5hIGRlY2lzaW9uIGV4cGxpY2l0YS5cbiAgICovXG4gIHByaXZhdGUgc2V0Q29uc2VudE1vZGVEZWZhdWx0KCk6IHZvaWQge1xuICAgIC8vIGd0YWcgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBhdW4gKEZpcmViYXNlIGxvIGNhcmdhIGFzeW5jKS5cbiAgICAvLyBVc2Ftb3MgZGF0YUxheWVyIGRpcmVjdGFtZW50ZSwgcXVlIHNpIGVzdGEgZGlzcG9uaWJsZSBkZXNkZSBpbmRleC5odG1sLlxuICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBkYXRhTGF5ZXIgPSAod1snZGF0YUxheWVyJ10gYXMgdW5rbm93bltdKSA/PyBbXTtcbiAgICB3WydkYXRhTGF5ZXInXSA9IGRhdGFMYXllcjtcbiAgICAvLyBwdXNoIGEgZGF0YUxheWVyIGZ1bmNpb25hIGFudGVzIGRlIHF1ZSBndGFnLmpzIGNhcmd1ZSDigJQgR0EgbG8gY29uc3VtZSBhbCBjYXJnYXIuXG4gICAgZGF0YUxheWVyLnB1c2goJ2NvbnNlbnQnLCAnZGVmYXVsdCcsIHtcbiAgICAgIGFuYWx5dGljc19zdG9yYWdlOiAnZGVuaWVkJyxcbiAgICAgIGFkX3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgYWRfdXNlcl9kYXRhOiAnZGVuaWVkJyxcbiAgICAgIGFkX3BlcnNvbmFsaXphdGlvbjogJ2RlbmllZCcsXG4gICAgICBmdW5jdGlvbmFsaXR5X3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgc2VjdXJpdHlfc3RvcmFnZTogJ2dyYW50ZWQnLFxuICAgICAgd2FpdF9mb3JfdXBkYXRlOiA1MDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBsaWNhIGNvbnNlbnQgc2V0dGluZ3MgYSBndGFnIChHQTQgQ29uc2VudCBNb2RlIHYyKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUNvbnNlbnRUb0d0YWcoc2V0dGluZ3M6IENvbnNlbnRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGd0YWcgPSAod2luZG93IGFzIGFueSkuZ3RhZztcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZ3RhZygnY29uc2VudCcsICd1cGRhdGUnLCB7XG4gICAgICAgIGFuYWx5dGljc19zdG9yYWdlOiBzZXR0aW5ncy5hbmFseXRpY3MgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfc3RvcmFnZTogc2V0dGluZ3MuYWR2ZXJ0aXNpbmcgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfdXNlcl9kYXRhOiBzZXR0aW5ncy5hZHZlcnRpc2luZyA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBhZF9wZXJzb25hbGl6YXRpb246IHNldHRpbmdzLmFkdmVydGlzaW5nID8gJ2dyYW50ZWQnIDogJ2RlbmllZCcsXG4gICAgICAgIGZ1bmN0aW9uYWxpdHlfc3RvcmFnZTogc2V0dGluZ3MuZnVuY3Rpb25hbGl0eSA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBzZWN1cml0eV9zdG9yYWdlOiBzZXR0aW5ncy5zZWN1cml0eSAhPT0gZmFsc2UgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGFwbGljYW5kbyBjb25zZW50IGEgZ3RhZzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGNvbnNlbnQgZGVzZGUgbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIGxvYWRDb25zZW50RnJvbVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uc2VudFN0b3JhZ2VLZXkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZCkgYXMgQ29uc2VudFN0YXRlO1xuICAgICAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KHtcbiAgICAgICAgICAuLi5wYXJzZWQsXG4gICAgICAgICAgdXBkYXRlZEF0OiBwYXJzZWQudXBkYXRlZEF0ID8gbmV3IERhdGUocGFyc2VkLnVwZGF0ZWRBdCkgOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdENvbnNlbnRHcmFudGVkKSB7XG4gICAgICAgIC8vIEF1dG8tZ3JhbnQgYWxsIGNvbnNlbnQgcGFyYSBkZXNhcnJvbGxvL3Rlc3RpbmdcbiAgICAgICAgdGhpcy5fY29uc2VudFN0YXRlLnNldCh7XG4gICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIGFuYWx5dGljczogdHJ1ZSxcbiAgICAgICAgICAgIGFkdmVydGlzaW5nOiB0cnVlLFxuICAgICAgICAgICAgZnVuY3Rpb25hbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIHNlY3VyaXR5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIGhhc0RlY2lkZWQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCkge1xuICAgICAgICAvLyBBcGxpY2FyIGNvbnNlbnQgcG9yIGRlZmVjdG8gc2kgbm8gaGF5IGd1YXJkYWRvXG4gICAgICAgIHRoaXMuX2NvbnNlbnRTdGF0ZS5zZXQoe1xuICAgICAgICAgIHNldHRpbmdzOiB0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG51bGwsXG4gICAgICAgICAgaGFzRGVjaWRlZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGNhcmdhbmRvIGNvbnNlbnQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZUNvbnNlbnRUb1N0b3JhZ2Uoc3RhdGU6IENvbnNlbnRTdGF0ZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmNvbnNlbnRTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGd1YXJkYW5kbyBjb25zZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVElNSU5HIC8gUEVSRk9STUFOQ0VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuYSBtw6l0cmljYSBkZSB0aW1pbmcvcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gTm9tYnJlIGRlIGxhIG3DqXRyaWNhXG4gICAqIEBwYXJhbSB2YWx1ZU1zIC0gVmFsb3IgZW4gbWlsaXNlZ3VuZG9zXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBhZGljaW9uYWxlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAqIGF3YWl0IGxvYWREYXRhKCk7XG4gICAqIGFuYWx5dGljcy5sb2dUaW1pbmcoJ2RhdGFfbG9hZCcsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQsIHtcbiAgICogICBjYXRlZ29yeTogJ2FwaScsXG4gICAqICAgZW5kcG9pbnQ6ICcvcHJvZHVjdHMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGxvZ1RpbWluZyhuYW1lOiBzdHJpbmcsIHZhbHVlTXM6IG51bWJlciwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3BlcmZvcm1hbmNlX21ldHJpYycsIHtcbiAgICAgIG1ldHJpY19uYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IE1hdGgucm91bmQodmFsdWVNcyksXG4gICAgICB1bml0OiAnbXMnLFxuICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERFQlVHXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBIYWJpbGl0YS9kZXNoYWJpbGl0YSBtb2RvIGRlYnVnLlxuICAgKiBFbiBkZWJ1ZzogbG9nZWEgZXZlbnRvcyBhIGNvbnNvbGEgYWRlbcOhcyBkZSBlbnZpYXJsb3MgYSBGaXJlYmFzZS5cbiAgICovXG4gIHNldERlYnVnTW9kZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNEZWJ1Z01vZGUuc2V0KGVuYWJsZWQpO1xuICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBEZWJ1ZyBtb2RlOiAke2VuYWJsZWQgPyAnT04nIDogJ09GRid9YCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBoaXN0b3JpYWwgZGUgZXZlbnRvcyAoc29sbyBlbiBkZWJ1ZyBtb2RlKS5cbiAgICogw5p0aWwgcGFyYSB0ZXN0aW5nIHkgZGVzYXJyb2xsby5cbiAgICovXG4gIGdldERlYnVnSGlzdG9yeSgpOiBBbmFseXRpY3NEZWJ1Z0V2ZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgaGlzdG9yaWFsIGRlIGRlYnVnLlxuICAgKi9cbiAgY2xlYXJEZWJ1Z0hpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnNldChbXSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIGV2ZW50byBhbCBoaXN0b3JpYWwgZGUgZGVidWdcbiAgICovXG4gIHByaXZhdGUgYWRkVG9EZWJ1Z0hpc3RvcnkoXG4gICAgdHlwZTogRGVidWdFdmVudFR5cGUsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHNlbnQgPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudDogQW5hbHl0aWNzRGVidWdFdmVudCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIHR5cGUsXG4gICAgICBuYW1lLFxuICAgICAgcGFyYW1zLFxuICAgICAgc2VudCxcbiAgICB9O1xuXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgdGhpcy5fZGVidWdIaXN0b3J5LnVwZGF0ZShoaXN0b3J5ID0+IHtcbiAgICAgICAgY29uc3QgbmV3SGlzdG9yeSA9IFtldmVudCwgLi4uaGlzdG9yeV07XG4gICAgICAgIHJldHVybiBuZXdIaXN0b3J5LnNsaWNlKDAsIE1BWF9ERUJVR19ISVNUT1JZKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=