valtech-components 2.0.1035 → 4.0.1

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 (81) hide show
  1. package/esm2022/lib/components/atoms/box/box.component.mjs +6 -8
  2. package/esm2022/lib/components/atoms/button/factory.mjs +24 -217
  3. package/esm2022/lib/components/atoms/divider/divider.component.mjs +2 -4
  4. package/esm2022/lib/components/atoms/href/href.component.mjs +1 -2
  5. package/esm2022/lib/components/atoms/image/image.component.mjs +36 -3
  6. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +4 -9
  7. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +4 -4
  8. package/esm2022/lib/components/molecules/card/card.component.mjs +53 -10
  9. package/esm2022/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.mjs +27 -36
  10. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +44 -6
  11. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +32 -7
  12. package/esm2022/lib/components/molecules/comment/comment.component.mjs +28 -12
  13. package/esm2022/lib/components/molecules/cta-card/cta-card.component.mjs +4 -9
  14. package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +3 -3
  15. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +7 -7
  16. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +159 -71
  17. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +7 -3
  18. package/esm2022/lib/components/molecules/hint/hint.component.mjs +30 -5
  19. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +75 -19
  20. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +42 -9
  21. package/esm2022/lib/components/molecules/permission-selector/types.mjs +1 -1
  22. package/esm2022/lib/components/molecules/rating/rating.component.mjs +88 -12
  23. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +15 -7
  24. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +93 -7
  25. package/esm2022/lib/components/organisms/change-email-modal/change-email-modal.component.mjs +5 -5
  26. package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +4 -4
  27. package/esm2022/lib/components/organisms/form/form.component.mjs +62 -20
  28. package/esm2022/lib/components/organisms/login/login.component.mjs +8 -8
  29. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  30. package/esm2022/lib/components/types.mjs +1 -1
  31. package/esm2022/lib/services/presets/default-presets.mjs +45 -0
  32. package/esm2022/lib/services/presets/index.mjs +3 -1
  33. package/esm2022/lib/services/presets/preset.service.mjs +17 -4
  34. package/esm2022/lib/services/requests/request-form-builder.service.mjs +8 -3
  35. package/esm2022/lib/shared/utils/ionic-color.mjs +36 -0
  36. package/esm2022/lib/version.mjs +2 -2
  37. package/esm2022/public-api.mjs +2 -8
  38. package/fesm2022/valtech-components.mjs +1140 -1024
  39. package/fesm2022/valtech-components.mjs.map +1 -1
  40. package/lib/components/atoms/box/box.component.d.ts +2 -5
  41. package/lib/components/atoms/button/factory.d.ts +15 -69
  42. package/lib/components/atoms/divider/divider.component.d.ts +1 -4
  43. package/lib/components/atoms/href/href.component.d.ts +2 -3
  44. package/lib/components/atoms/image/image.component.d.ts +5 -0
  45. package/lib/components/molecules/action-card/action-card.component.d.ts +1 -1
  46. package/lib/components/molecules/card/card.component.d.ts +2 -1
  47. package/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.d.ts +2 -3
  48. package/lib/components/molecules/chip-group/chip-group.component.d.ts +5 -0
  49. package/lib/components/molecules/command-display/command-display.component.d.ts +4 -0
  50. package/lib/components/molecules/comment/comment.component.d.ts +3 -0
  51. package/lib/components/molecules/cta-card/cta-card.component.d.ts +0 -1
  52. package/lib/components/molecules/hint/hint.component.d.ts +11 -1
  53. package/lib/components/molecules/pagination/pagination.component.d.ts +5 -0
  54. package/lib/components/molecules/password-input/password-input.component.d.ts +4 -2
  55. package/lib/components/molecules/permission-selector/types.d.ts +1 -0
  56. package/lib/components/molecules/rating/rating.component.d.ts +11 -0
  57. package/lib/components/molecules/text-input/text-input.component.d.ts +21 -0
  58. package/lib/components/organisms/form/form.component.d.ts +19 -0
  59. package/lib/components/types.d.ts +21 -1
  60. package/lib/services/presets/default-presets.d.ts +22 -0
  61. package/lib/services/presets/index.d.ts +1 -0
  62. package/lib/services/presets/preset.service.d.ts +4 -0
  63. package/lib/shared/utils/ionic-color.d.ts +20 -0
  64. package/lib/version.d.ts +1 -1
  65. package/package.json +1 -1
  66. package/public-api.d.ts +1 -7
  67. package/src/lib/components/styles/mixins.scss +16 -0
  68. package/esm2022/lib/components/molecules/content-card/content-card.component.mjs +0 -86
  69. package/esm2022/lib/components/molecules/content-card/types.mjs +0 -11
  70. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +0 -68
  71. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +0 -28
  72. package/esm2022/lib/components/molecules/info-card/info-card.component.mjs +0 -126
  73. package/esm2022/lib/components/molecules/info-card/types.mjs +0 -11
  74. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +0 -34
  75. package/lib/components/molecules/content-card/content-card.component.d.ts +0 -26
  76. package/lib/components/molecules/content-card/types.d.ts +0 -30
  77. package/lib/components/molecules/email-input/email-input.component.d.ts +0 -34
  78. package/lib/components/molecules/hour-input/hour-input.component.d.ts +0 -15
  79. package/lib/components/molecules/info-card/info-card.component.d.ts +0 -37
  80. package/lib/components/molecules/info-card/types.d.ts +0 -44
  81. package/lib/components/molecules/number-input/number-input.component.d.ts +0 -16
@@ -3,7 +3,7 @@ import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
3
3
  import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonInput, IonItem, IonLabel, IonModal, IonRadio, IonRadioGroup, IonSpinner, IonToolbar, } from '@ionic/angular/standalone';
4
4
  import { addIcons } from 'ionicons';
5
5
  import { informationCircleOutline, copyOutline, checkmarkOutline } from 'ionicons/icons';
6
- import { SolidDefaultBlock } from '../../atoms/button/factory';
6
+ import { button } from '../../atoms/button/factory';
7
7
  import { DisplayComponent } from '../../atoms/display/display.component';
8
8
  import { QrCodeComponent } from '../../atoms/qr-code/qr-code.component';
9
9
  import { TextComponent } from '../../atoms/text/text.component';
@@ -137,7 +137,7 @@ export class MfaModalComponent {
137
137
  },
138
138
  ],
139
139
  actions: {
140
- ...SolidDefaultBlock('', 'submit'),
140
+ ...button({ text: '', type: 'submit', fill: 'solid', expand: 'block' }),
141
141
  token: 'mfa-disable-submit',
142
142
  textKey: 'mfaDisableButton',
143
143
  },
@@ -535,4 +535,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
535
535
  }], dismissed: [{
536
536
  type: Output
537
537
  }] } });
538
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZhLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWZhLW1vZGFsL21mYS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21mYS1tb2RhbC9tZmEtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFj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QVEsc0RBR1IsVUFBVSx5R0FDVixVQUFVLG1GQUNWLGdCQUFnQiwyRUFDaEIsYUFBYSw4SEFDYixlQUFlLG1JQUNmLGFBQWEsd0VBQ2IsY0FBYyx5RUFDZCxpQkFBaUI7OzRGQUtSLGlCQUFpQjtrQkE1QjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxRQUFRO3dCQUNSLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsYUFBYTt3QkFDYixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGlCQUFpQjtxQkFDbEI7d0RBU0csTUFBTTtzQkFEVCxLQUFLO2dCQXFCRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdJLE9BQU87c0JBQWhCLE1BQU07Z0JBT0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbkljb24sXG4gIElvbklucHV0LFxuICBJb25JdGVtLFxuICBJb25MYWJlbCxcbiAgSW9uTW9kYWwsXG4gIElvblJhZGlvLFxuICBJb25SYWRpb0dyb3VwLFxuICBJb25TcGlubmVyLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgaW5mb3JtYXRpb25DaXJjbGVPdXRsaW5lLCBjb3B5T3V0bGluZSwgY2hlY2ttYXJrT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgU29saWREZWZhdWx0QmxvY2sgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vZmFjdG9yeSc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRckNvZGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9xci1jb2RlL3FyLWNvZGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3Bpbi1pbnB1dC9waW4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgTUZBTWV0aG9kLCBUT1RQU2V0dXBSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIElucHV0STE4bkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgUXJHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXItZ2VuZXJhdG9yL3FyLWdlbmVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFFyUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXItZ2VuZXJhdG9yL3R5cGVzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG4vKiogUGFzbyBkZWwgZmx1am8gZGVsIG1vZGFsLiAqL1xudHlwZSBNZmFTdGVwID0gJ2xvYWRpbmcnIHwgJ3N0YXR1cycgfCAnbWV0aG9kLXNlbGVjdCcgfCAndG90cC1zZXR1cCcgfCAnY29kZS1jb25maXJtJyB8ICdkaXNhYmxlJztcblxuLyoqIFNlZ3VuZG9zIGRlIGVzcGVyYSBhbnRlcyBkZSBwb2RlciByZWVudmlhciBlbCBjw7NkaWdvIEVNQUlML1NNUy4gKi9cbmNvbnN0IFJFU0VORF9DT09MRE9XTl9TRUNPTkRTID0gMzA7XG5cbi8qKlxuICogYHZhbC1tZmEtbW9kYWxgIOKAlCBtb2RhbCBkZSBnZXN0acOzbiBkZSBhdXRlbnRpY2FjacOzbiBkZSBkb3MgZmFjdG9yZXMgKE1GQSlcbiAqIHBhcmEgdW4gdXN1YXJpbyBhdXRlbnRpY2Fkby4gTWlzbW8gcGF0csOzbiBxdWUgYHZhbC1jaGFuZ2UtcGFzc3dvcmQtbW9kYWxgLlxuICpcbiAqIEZsdWpvIChtw6FxdWluYSBkZSBlc3RhZG9zIGludGVybmEpOlxuICogIC0gYGxvYWRpbmdgIOKGkiBgZ2V0UHJvZmlsZSgpYCBwYXJhIGNvbm9jZXIgZWwgZXN0YWRvIE1GQS5cbiAqICAtIGBzdGF0dXNgIOKGkiBtdWVzdHJhIE1GQSBoYWJpbGl0YWRvL2Rlc2hhYmlsaXRhZG8uIFNpIGVzdMOhIGhhYmlsaXRhZG86XG4gKiAgICBnZXN0acOzbiBkZSBiYWNrdXAgY29kZXMgKFRPVFApICsgZGVzaGFiaWxpdGFyLiBTaSBubzogYm90w7NuIGhhYmlsaXRhci5cbiAqICAtIGBtZXRob2Qtc2VsZWN0YCDihpIgZWxlZ2lyIFRPVFAgLyBFTUFJTCAvIFNNUy5cbiAqICAtIGB0b3RwLXNldHVwYCDihpIgUVIgKyBzZWNyZXRvIG1hbnVhbCArIGJhY2t1cCBjb2RlcyDihpIgdmVyaWZpY2FyIGPDs2RpZ28uXG4gKiAgLSBgY29kZS1jb25maXJtYCDihpIgKEVNQUlML1NNUykgaW5ncmVzYXIgY8OzZGlnbyByZWNpYmlkbywgY29uIHJlZW52w61vLlxuICogIC0gYGRpc2FibGVgIOKGkiBjb250cmFzZcOxYSBwYXJhIGRlc2hhYmlsaXRhciBNRkEuXG4gKlxuICogRWwgUVIgc2UgZ2VuZXJhICoqY2xpZW50LXNpZGUqKiAoYFFyR2VuZXJhdG9yU2VydmljZWApIOKAlCBlbCBzZWNyZXRvIFRPVFBcbiAqIG51bmNhIHNhbGUgZGVsIG5hdmVnYWRvci5cbiAqXG4gKiBTZWxmLWNvbnRhaW5lZDogaW55ZWN0YSBgQXV0aFNlcnZpY2VgIHkgbGxhbWEgbG9zIGVuZHBvaW50cyBkaXJlY3RvLiBMYSBhcHBcbiAqIGNvbnRyb2xhIGBbaXNPcGVuXWAgeSByZWFjY2lvbmEgYSBgKGNoYW5nZWQpYCAvIGAoZGlzbWlzc2VkKWAuXG4gKlxuICogaTE4bjogbmFtZXNwYWNlIGNvbXBhcnRpZG8gYF9hdXRoYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1tZmEtbW9kYWxcbiAqICAgW2lzT3Blbl09XCJpc01vZGFsT3BlbigpXCJcbiAqICAgKGRpc21pc3NlZCk9XCJpc01vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1mYS1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uSGVhZGVyLFxuICAgIElvbkljb24sXG4gICAgSW9uSW5wdXQsXG4gICAgSW9uSXRlbSxcbiAgICBJb25MYWJlbCxcbiAgICBJb25Nb2RhbCxcbiAgICBJb25SYWRpbyxcbiAgICBJb25SYWRpb0dyb3VwLFxuICAgIElvblNwaW5uZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIEZvcm1Db21wb25lbnQsXG4gICAgUXJDb2RlQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgUGluSW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tZmEtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZmEtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWZhTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICAvKiogQ29udHJvbGEgbGEgdmlzaWJpbGlkYWQuIENhZGEgYXBlcnR1cmEgcmUtcmVzdWVsdmUgZWwgZXN0YWRvIE1GQS4gKi9cbiAgQElucHV0KClcbiAgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG9wZW5pbmcgPSB2YWx1ZSAmJiAhdGhpcy5faXNPcGVuO1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIGlmIChvcGVuaW5nKSB7XG4gICAgICAvLyBEaWZlcmltb3MgYWwgcHLDs3hpbW8gbWljcm90YXNrIHBhcmEgcXVlIGVsIHJlc3RvIGRlIEBJbnB1dFxuICAgICAgLy8gKGBwcmVmaWxsQ29kZWApIHlhIGVzdMOpbiBhc2lnbmFkb3Mg4oCUIEFuZ3VsYXIgcHJvY2VzYSBsb3MgaW5wdXRzIGVuXG4gICAgICAvLyBvcmRlbiBkZSBkZWNsYXJhY2nDs24sIHkgc2luIGVzdG8gYG9wZW4oKWAgbGVlIGBwcmVmaWxsQ29kZWAgdW5kZWZpbmVkXG4gICAgICAvLyBjdWFuZG8gZWwgcGFkcmUgc2V0ZWEgYW1ib3MgZW4gZWwgbWlzbW8gdGljayAoZGVlcC1saW5rIE1GQS1lbWFpbCkuXG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLm9wZW4oKSk7XG4gICAgfVxuICB9XG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDw7NkaWdvIE1GQSBwcmUtY2FyZ2FkbyAoZGVlcC1saW5rIGRlc2RlIGVsIGVtYWlsIGRlIHNldHVwIE1GQS1lbWFpbCkuIFNpXG4gICAqIGVzdMOhIHByZXNlbnRlIGFsIGFicmlyLCBlbCBtb2RhbCBzYWx0YSBkaXJlY3RvIGFsIHBhc28gZGUgY29uZmlybWFjacOzblxuICAgKiBjb24gZWwgY8OzZGlnbyByZWxsZW5hZG8uXG4gICAqL1xuICBASW5wdXQoKSBwcmVmaWxsQ29kZT86IHN0cmluZztcblxuICAvKiogRW1pdGUgY3VhbmRvIGVsIGVzdGFkbyBNRkEgY2FtYmlhIChoYWJpbGl0YWRvIC8gZGVzaGFiaWxpdGFkbykuICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0aWRvIGN1YW5kbyB1biBzZXR1cCBNRkEgc2UgY29uZmlybWEgZXhpdG9zYW1lbnRlIHkgZWwgbW9kYWwgZnVlIGFiaWVydG9cbiAgICogdsOtYSBkZWVwLWxpbmsgKGNvbiBgcHJlZmlsbENvZGVgKS4gRWwgaG9zdCBwdWVkZSB1c2FybG8gcGFyYSBjZXJyYXIgZWxcbiAgICogbW9kYWwgeSBuYXZlZ2FyIChlai4gYSBob21lKSBlbiBsdWdhciBkZSBxdWVkYXJzZSBlbiBsYSBww6FnaW5hIGRlIFNlY3VyaXR5LlxuICAgKi9cbiAgQE91dHB1dCgpIGVuYWJsZWRWaWFEZWVwbGluayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdGUgY3VhbmRvIGVsIHVzZXIgY2llcnJhIGVsIG1vZGFsIChib3TDs24gWCBvIGJhY2tkcm9wKS4gKi9cbiAgQE91dHB1dCgpIGRpc21pc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgaTE4bkhlbHBlciA9IGluamVjdChJbnB1dEkxOG5IZWxwZXIpO1xuICBwcml2YXRlIHFyR2VuID0gaW5qZWN0KFFyR2VuZXJhdG9yU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RlcCA9IHNpZ25hbDxNZmFTdGVwPignbG9hZGluZycpO1xuICAvKiogUGFzbyBhY3R1YWwgZGVsIGZsdWpvLiAqL1xuICByZWFkb25seSBzdGVwID0gdGhpcy5fc3RlcC5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIGB0cnVlYCBtaWVudHJhcyB1bmEgbGxhbWFkYSBhbCBiYWNrZW5kIGVzdMOhIGVuIGN1cnNvLiAqL1xuICByZWFkb25seSB3b3JraW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBFc3RhZG8gTUZBIGFjdHVhbC5cbiAgcmVhZG9ubHkgbWZhRW5hYmxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1mYU1ldGhvZCA9IHNpZ25hbDxNRkFNZXRob2QgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgdXNlclBob25lID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBiYWNrdXBDb2Rlc0NvdW50ID0gc2lnbmFsKDApO1xuICAvKiogRGVmYXVsdCB0cnVlIHBhcmEgbm8gcm9tcGVyIGVsIGZsb3cgdmllam8gc2kgZWwgYmFja2VuZCBubyBkZXZ1ZWx2ZSBlbCBjYW1wby4gKi9cbiAgcmVhZG9ubHkgaGFzUGFzc3dvcmQgPSBzaWduYWwodHJ1ZSk7XG5cbiAgLy8gRXN0YWRvIGRlbCBmbHVqbyBkZSBoYWJpbGl0YWNpw7NuLlxuICByZWFkb25seSBzZWxlY3RlZE1ldGhvZCA9IHNpZ25hbDxNRkFNZXRob2Q+KCdUT1RQJyk7XG4gIHJlYWRvbmx5IHRvdHBTZXR1cCA9IHNpZ25hbDxUT1RQU2V0dXBSZXNwb25zZSB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSB0b3RwUXIgPSBzaWduYWw8UXJSZXN1bHQgfCBudWxsPihudWxsKTtcbiAgLyoqIEPDs2RpZ29zIGRlIHJlc3BhbGRvIHJlY2nDqW4gcmVnZW5lcmFkb3Mg4oCUIHNlIG11ZXN0cmFuIHVuYSBzb2xhIHZlei4gKi9cbiAgcmVhZG9ubHkgcmVnZW5lcmF0ZWRDb2RlcyA9IHNpZ25hbDxzdHJpbmdbXSB8IG51bGw+KG51bGwpO1xuICAvKiogTWFyY2EgbW9tZW50w6FuZWEgY3VhbmRvIGVsIHNlY3JldG8gVE9UUCBzZSBhY2FiYSBkZSBjb3BpYXIgKGZlZWRiYWNrIHZpc3VhbCkuICovXG4gIHJlYWRvbmx5IGNvcGllZFNlY3JldCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHJlc2VuZENvb2xkb3duID0gc2lnbmFsKDApO1xuICByZWFkb25seSBkaXNhYmxlQ29kZVNlbnQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHBpbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKTtcbiAgcmVhZG9ubHkgcGhvbmVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eXFwrWzEtOV1cXGR7NiwxNH0kLyldKTtcblxuICByZWFkb25seSBwaW5JbnB1dFByb3BzID0ge1xuICAgIGNvbnRyb2w6IHRoaXMucGluQ29udHJvbCxcbiAgICB0b2tlbjogJ21mYS1jb2RlJyxcbiAgICBsZW5ndGg6IDYsXG4gICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgICBhdXRvRm9jdXM6IHRydWUsXG4gIH07XG5cbiAgLyoqIEZvcm0gZGUgZGVzaGFiaWxpdGFjacOzbiDigJQgYHZhbC1mb3JtYCBjb24gdW4gY2FtcG8gZGUgY29udHJhc2XDsWEuICovXG4gIHJlYWRvbmx5IGRpc2FibGVGb3JtUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+XG4gICAgdGhpcy5pMThuSGVscGVyLnJlc29sdmVGb3JtKHtcbiAgICAgIG5hbWVLZXk6ICdtZmFEaXNhYmxlVGl0bGUnLFxuICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnQoJ21mYURpc2FibGVQcm9tcHQnKSxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBBU1NXT1JELFxuICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICB0b2tlbjogJ21mYS1kaXNhYmxlLXBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgbGFiZWxLZXk6ICdtZmFQYXNzd29yZExhYmVsJyxcbiAgICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ21mYVBhc3N3b3JkUmVxdWlyZWQnIH0sXG4gICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIC4uLlNvbGlkRGVmYXVsdEJsb2NrKCcnLCAnc3VibWl0JyksXG4gICAgICAgIHRva2VuOiAnbWZhLWRpc2FibGUtc3VibWl0JyxcbiAgICAgICAgdGV4dEtleTogJ21mYURpc2FibGVCdXR0b24nLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLndvcmtpbmcoKSA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHJlc2VuZFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGluZm9ybWF0aW9uQ2lyY2xlT3V0bGluZSwgY29weU91dGxpbmUsIGNoZWNrbWFya091dGxpbmUgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICB9XG5cbiAgLyoqIFRyYWR1Y2UgdW5hIGNsYXZlIGRlbCBuYW1lc3BhY2UgYF9hdXRoYC4gKi9cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ19hdXRoJyk7XG4gIH1cblxuICAvKiogQ2llcnJlIGluaWNpYWRvIHBvciBlbCB1c2VyIChYIC8gYmFja2Ryb3ApLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogUHVudG8gZGUgZW50cmFkYSBhbCBhYnJpciBlbCBtb2RhbC4gQ29uIGBwcmVmaWxsQ29kZWAgKGRlZXAtbGluayBkZWwgZW1haWxcbiAgICogZGUgc2V0dXAgTUZBLWVtYWlsKSBzYWx0YSBkaXJlY3RvIGEgbGEgY29uZmlybWFjacOzbjsgc2kgbm8sIHJlc3VlbHZlIGVsXG4gICAqIGVzdGFkbyBNRkEgYWN0dWFsLlxuICAgKi9cbiAgcHJpdmF0ZSBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZWZpbGxDb2RlKSB7XG4gICAgICB0aGlzLnJlc2V0RmxvdygpO1xuICAgICAgdGhpcy5zZWxlY3RlZE1ldGhvZC5zZXQoJ0VNQUlMJyk7XG4gICAgICB0aGlzLnBpbkNvbnRyb2wuc2V0VmFsdWUodGhpcy5wcmVmaWxsQ29kZSk7XG4gICAgICB0aGlzLl9zdGVwLnNldCgnY29kZS1jb25maXJtJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVzb2x2ZVN0YXR1cygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENhcmdhIGRlIGVzdGFkb1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogQ29uc3VsdGEgZWwgcGVyZmlsIHBhcmEgY29ub2NlciBlbCBlc3RhZG8gTUZBIHkgcG9zaWNpb25hciBlbCBmbHVqby4gKi9cbiAgcHJpdmF0ZSByZXNvbHZlU3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0ZXAuc2V0KCdsb2FkaW5nJyk7XG4gICAgdGhpcy5yZXNldEZsb3coKTtcbiAgICB0aGlzLmF1dGguZ2V0UHJvZmlsZSgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBwcm9maWxlID0+IHtcbiAgICAgICAgdGhpcy5tZmFFbmFibGVkLnNldChwcm9maWxlLm1mYUVuYWJsZWQpO1xuICAgICAgICB0aGlzLm1mYU1ldGhvZC5zZXQocHJvZmlsZS5tZmFNZXRob2QgPz8gbnVsbCk7XG4gICAgICAgIHRoaXMudXNlclBob25lLnNldChwcm9maWxlLnBob25lID8/IG51bGwpO1xuICAgICAgICB0aGlzLmhhc1Bhc3N3b3JkLnNldChwcm9maWxlLmhhc1Bhc3N3b3JkID8/IHRydWUpO1xuICAgICAgICBpZiAocHJvZmlsZS5tZmFFbmFibGVkICYmIHByb2ZpbGUubWZhTWV0aG9kID09PSAnVE9UUCcpIHtcbiAgICAgICAgICB0aGlzLmxvYWRCYWNrdXBDb3VudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0ZXAuc2V0KCdzdGF0dXMnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAvLyBGYWxsYmFjazogdXNhciBlbCBzaWduYWwgZGUgdXN1YXJpbyBlbiBzZXNpw7NuLlxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoLnVzZXIoKTtcbiAgICAgICAgdGhpcy5tZmFFbmFibGVkLnNldCh1c2VyPy5tZmFFbmFibGVkID8/IGZhbHNlKTtcbiAgICAgICAgdGhpcy5tZmFNZXRob2Quc2V0KHVzZXI/Lm1mYU1ldGhvZCA/PyBudWxsKTtcbiAgICAgICAgdGhpcy5fc3RlcC5zZXQoJ3N0YXR1cycpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEJhY2t1cENvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aC5nZXRCYWNrdXBDb2Rlc0NvdW50KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLmJhY2t1cENvZGVzQ291bnQuc2V0KHJlcy5jb3VudCksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5iYWNrdXBDb2Rlc0NvdW50LnNldCgwKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBOYXZlZ2FjacOzbiBlbnRyZSBwYXNvc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBnb1RvTWV0aG9kU2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMucmVnZW5lcmF0ZWRDb2Rlcy5zZXQobnVsbCk7XG4gICAgdGhpcy5fc3RlcC5zZXQoJ21ldGhvZC1zZWxlY3QnKTtcbiAgfVxuXG4gIGdvVG9EaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMucGluQ29udHJvbC5yZXNldCgpO1xuICAgIHRoaXMuX3N0ZXAuc2V0KCdkaXNhYmxlJyk7XG4gIH1cblxuICBiYWNrVG9TdGF0dXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wQ29vbGRvd24oKTtcbiAgICB0aGlzLmRpc2FibGVDb2RlU2VudC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzb2x2ZVN0YXR1cygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhhYmlsaXRhciBNRkFcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIENvbnRpbsO6YSBkZXNkZSBlbCBzZWxlY3RvciBkZSBtw6l0b2RvIGFsIHNldHVwIGNvcnJlc3BvbmRpZW50ZS4gKi9cbiAgcHJvY2VlZFdpdGhNZXRob2QoKTogdm9pZCB7XG4gICAgY29uc3QgbWV0aG9kID0gdGhpcy5zZWxlY3RlZE1ldGhvZCgpO1xuICAgIGlmIChtZXRob2QgPT09ICdUT1RQJykge1xuICAgICAgdGhpcy5zZXR1cFRvdHAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcGhvbmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAobWV0aG9kID09PSAnU01TJyAmJiAhdGhpcy51c2VyUGhvbmUoKSkge1xuICAgICAgaWYgKHRoaXMucGhvbmVDb250cm9sLmludmFsaWQpIHtcbiAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYVBob25lSW52YWxpZCcpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcGhvbmUgPSB0aGlzLnBob25lQ29udHJvbC52YWx1ZSA/PyB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy53b3JraW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1dGguc2V0dXBNRkEobWV0aG9kLCBwaG9uZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICBpZiAocmVzLmNvZGVTZW50KSB7XG4gICAgICAgICAgdGhpcy5waW5Db250cm9sLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy5fc3RlcC5zZXQoJ2NvZGUtY29uZmlybScpO1xuICAgICAgICAgIHRoaXMuc3RhcnRDb29sZG93bigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwVG90cCgpOiB2b2lkIHtcbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYXV0aC5zZXR1cFRPVFAoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgdGhpcy50b3RwU2V0dXAuc2V0KHJlcyk7XG4gICAgICAgIHRoaXMucGluQ29udHJvbC5yZXNldCgpO1xuICAgICAgICB0aGlzLnFyR2VuXG4gICAgICAgICAgLmdlbmVyYXRlKHsgZGF0YTogcmVzLnFyQ29kZVVybCwgd2lkdGg6IDIyMCB9KVxuICAgICAgICAgIC50aGVuKHFyID0+IHRoaXMudG90cFFyLnNldChxcikpXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMudG90cFFyLnNldChudWxsKSk7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgndG90cC1zZXR1cCcpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5yZXNvbHZlRXJyb3IoZXJyKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIFZlcmlmaWNhIGVsIGPDs2RpZ28gVE9UUCBkZSBsYSBhcHAgZGUgYXV0ZW50aWNhY2nDs24geSBhY3RpdmEgTUZBLiAqL1xuICB2ZXJpZnlUb3RwKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvZGUgPSB0aGlzLnBpbkNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCFjb2RlIHx8IGNvZGUubGVuZ3RoICE9PSA2KSB7XG4gICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYUNvZGVJbnZhbGlkJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYXV0aC52ZXJpZnlUT1RQU2V0dXAoY29kZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICBpZiAocmVzLmVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYUVuYWJsZWRPaycpKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xuICAgICAgICAgIHRoaXMucmVzb2x2ZVN0YXR1cygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogQ29uZmlybWEgZWwgY8OzZGlnbyBFTUFJTC9TTVMgeSBhY3RpdmEgTUZBLiAqL1xuICBjb25maXJtQ29kZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5waW5Db250cm9sLnZhbHVlO1xuICAgIGlmICghY29kZSB8fCBjb2RlLmxlbmd0aCAhPT0gNikge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy53b3JraW5nLnNldCh0cnVlKTtcbiAgICBjb25zdCBjYW1lRnJvbURlZXBsaW5rID0gISF0aGlzLnByZWZpbGxDb2RlO1xuICAgIHRoaXMuYXV0aC5jb25maXJtTUZBKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgaWYgKHJlcy5tZmFFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFFbmFibGVkT2snKSk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICAgICAgICBpZiAoY2FtZUZyb21EZWVwbGluaykge1xuICAgICAgICAgICAgLy8gRWwgdXNlciBsbGVnw7MgdsOtYSBsaW5rIGRlbCBlbWFpbCDihpIgZWwgaG9zdCBzZSBlbmNhcmdhIGRlIGNlcnJhclxuICAgICAgICAgICAgLy8gZWwgbW9kYWwgeSBuYXZlZ2FyIChlai4gYSBob21lKS4gTm8gcmVzb2x2ZW1vcyBzdGF0dXMgYWPDoSBwb3JxdWVcbiAgICAgICAgICAgIC8vIGltcGxpY2Fyw61hIGRlamFyIGVsIG1vZGFsIGFiaWVydG8gbW9zdHJhbmRvIGVsIGVzdGFkbyBudWV2by5cbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFZpYURlZXBsaW5rLmVtaXQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlU3RhdHVzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogUmVlbnbDrWEgZWwgY8OzZGlnbyBFTUFJTC9TTVMgKHJlLWVqZWN1dGEgZWwgc2V0dXApLiAqL1xuICByZXNlbmRDb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc2VuZENvb2xkb3duKCkgPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJvY2VlZFdpdGhNZXRob2QoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBHZXN0acOzbiAoTUZBIGhhYmlsaXRhZG8pXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBSZWdlbmVyYSBsb3MgY8OzZGlnb3MgZGUgcmVzcGFsZG8gVE9UUCB5IGxvcyBtdWVzdHJhIHVuYSB2ZXouICovXG4gIHJlZ2VuZXJhdGVCYWNrdXBDb2RlcygpOiB2b2lkIHtcbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYXV0aC5yZWdlbmVyYXRlQmFja3VwQ29kZXMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuYmFja3VwQ29kZXNDb3VudC5zZXQocmVzLmJhY2t1cENvZGVzLmxlbmd0aCk7XG4gICAgICAgIHRoaXMucmVnZW5lcmF0ZWRDb2Rlcy5zZXQocmVzLmJhY2t1cENvZGVzKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBEZXNoYWJpbGl0YSBNRkEgdXNhbmRvIGxhIGNvbnRyYXNlw7FhIGRlIGxhIGN1ZW50YS4gKi9cbiAgb25EaXNhYmxlU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ3Bhc3N3b3JkJ107XG4gICAgaWYgKCFwYXNzd29yZCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFQYXNzd29yZFJlcXVpcmVkJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc2FibGUoeyBwYXNzd29yZCB9KTtcbiAgfVxuXG4gIC8qKiBEZXNoYWJpbGl0YSBNRkEgdXNhbmRvIHVuIGPDs2RpZ28gVE9UUCDigJQgcGFyYSBjdWVudGFzIE9BdXRoLW9ubHkgc2luIGNvbnRyYXNlw7FhLiAqL1xuICBkaXNhYmxlV2l0aE1mYUNvZGUoKTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMucGluQ29udHJvbC52YWx1ZTtcbiAgICBpZiAoIWNvZGUgfHwgY29kZS5sZW5ndGggIT09IDYpIHtcbiAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnbWZhQ29kZUludmFsaWQnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZSh7IG1mYUNvZGU6IGNvZGUgfSk7XG4gIH1cblxuICBzZW5kRGlzYWJsZUNvZGUoKTogdm9pZCB7XG4gICAgdGhpcy53b3JraW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1dGguc2VuZE1GQURpc2FibGVDb2RlKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZGlzYWJsZUNvZGVTZW50LnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFEaXNhYmxlQ29kZVNlbnQnKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoaW5wdXQ6IHsgcGFzc3dvcmQ/OiBzdHJpbmc7IG1mYUNvZGU/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHRoaXMud29ya2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdXRoLmRpc2FibGVNRkEoaW5wdXQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgaWYgKHJlcy5tZmFEaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnbWZhRGlzYWJsZWRPaycpKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xuICAgICAgICAgIHRoaXMucmVzb2x2ZVN0YXR1cygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogQ29waWEgdW5hIGxpc3RhIGRlIGPDs2RpZ29zIGRlIHJlc3BhbGRvIGFsIHBvcnRhcGFwZWxlcy4gKi9cbiAgYXN5bmMgY29weUNvZGVzKGNvZGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb2Rlcy5qb2luKCdcXG4nKSk7XG4gICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYUNvZGVzQ29waWVkJykpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLyogc2luIHJlY3Vyc28gZGUgY29waWEgZGlzcG9uaWJsZSAqL1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDb3BpYSBlbCBzZWNyZXRvIFRPVFAgYWwgcG9ydGFwYXBlbGVzICsgZmVlZGJhY2sgdmlzdWFsIChjaGVjaykgZHVyYW50ZSAycy4gKi9cbiAgYXN5bmMgY29weVNlY3JldChzZWNyZXQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWNyZXQpO1xuICAgICAgdGhpcy5jb3BpZWRTZWNyZXQuc2V0KHRydWUpO1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFTZWNyZXRDb3BpZWQnKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29waWVkU2VjcmV0LnNldChmYWxzZSksIDIwMDApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLyogc2luIHJlY3Vyc28gZGUgY29waWEgZGlzcG9uaWJsZSAqL1xuICAgIH1cbiAgfVxuXG4gIC8qKiBFdGlxdWV0YSBpMThuIGxlZ2libGUgcGFyYSB1biBtw6l0b2RvIE1GQS4gKi9cbiAgbWV0aG9kTGFiZWwobWV0aG9kOiBNRkFNZXRob2QgfCBudWxsKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnVE9UUCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYU1ldGhvZFRvdHAnKTtcbiAgICAgIGNhc2UgJ0VNQUlMJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnbWZhTWV0aG9kRW1haWwnKTtcbiAgICAgIGNhc2UgJ1NNUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYU1ldGhvZFNtcycpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBIZWxwZXJzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVzZXRGbG93KCk6IHZvaWQge1xuICAgIHRoaXMucGluQ29udHJvbC5yZXNldCgpO1xuICAgIHRoaXMucGhvbmVDb250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy50b3RwU2V0dXAuc2V0KG51bGwpO1xuICAgIHRoaXMudG90cFFyLnNldChudWxsKTtcbiAgICB0aGlzLnJlZ2VuZXJhdGVkQ29kZXMuc2V0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRNZXRob2Quc2V0KCdUT1RQJyk7XG4gICAgdGhpcy5zdG9wQ29vbGRvd24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDb29sZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICAgIHRoaXMucmVzZW5kQ29vbGRvd24uc2V0KFJFU0VORF9DT09MRE9XTl9TRUNPTkRTKTtcbiAgICB0aGlzLnJlc2VuZFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNlbmRDb29sZG93bi51cGRhdGUodiA9PiB2IC0gMSk7XG4gICAgICBpZiAodGhpcy5yZXNlbmRDb29sZG93bigpIDw9IDApIHtcbiAgICAgICAgdGhpcy5zdG9wQ29vbGRvd24oKTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcENvb2xkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc2VuZFRpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMucmVzZW5kVGltZXIpO1xuICAgICAgdGhpcy5yZXNlbmRUaW1lciA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucmVzZW5kQ29vbGRvd24uc2V0KDApO1xuICB9XG5cbiAgLyoqIE1hcGVhIGxvcyBjw7NkaWdvcyBkZSBlcnJvciBNRkEgZGVsIGJhY2tlbmQgYSBtZW5zYWplcyBkZWwgbmFtZXNwYWNlIGBfYXV0aGAuICovXG4gIHByaXZhdGUgcmVzb2x2ZUVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pPy5jb2RlO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAnQVVUSFYyX01GQV9JTlZBTElEX0NPREUnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdtZmFFcnJvckludmFsaWRDb2RlJyk7XG4gICAgICBjYXNlICdBVVRIVjJfRVhQSVJFRF9DT0RFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnbWZhRXJyb3JFeHBpcmVkQ29kZScpO1xuICAgICAgY2FzZSAnQVVUSFYyX0NPREVfVVNFRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYUVycm9yQ29kZVVzZWQnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9NRkFfQUxSRUFEWV9BQ1RJVkUnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdtZmFFcnJvckFscmVhZHlBY3RpdmUnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9NRkFfTk9UX0VOQUJMRUQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdtZmFFcnJvck5vdEVuYWJsZWQnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9QSE9ORV9SRVFVSVJFRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYUVycm9yUGhvbmVSZXF1aXJlZCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX1BIT05FX0VYSVNUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYUVycm9yUGhvbmVFeGlzdHMnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9UT09fTUFOWV9BVFRFTVBUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yVG9vTWFueUF0dGVtcHRzJyk7XG4gICAgICBjYXNlICdBVVRIVjJfSU5WQUxJRF9DVVJSRU5UX1BBU1NXT1JEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JDdXJyZW50UGFzc3dvcmRXcm9uZycpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JHZW5lcmljJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93VG9hc3QobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZSwgZHVyYXRpb246IDM1MDAgfSk7XG4gIH1cbn1cbiIsIjxpb24tbW9kYWwgW2lzT3Blbl09XCJpc09wZW5cIiAoZGlkRGlzbWlzcyk9XCJjbG9zZSgpXCI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtZmEtbW9kYWxcIj5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ21mYU1hbmFnZVRpdGxlJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG5cbiAgICAgICAgQHN3aXRjaCAoc3RlcCgpKSB7IEBjYXNlICgnbG9hZGluZycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1sb2FkaW5nXCI+XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBjYXNlICgnc3RhdHVzJykgeyBAaWYgKG1mYUVuYWJsZWQoKSkge1xuICAgICAgICA8cCBjbGFzcz1cIm1mYS1zdGF0dXMgbWZhLXN0YXR1cy0tb25cIj57eyB0KCdtZmFFbmFibGVkTGFiZWwnKSB9fSDCtyB7eyBtZXRob2RMYWJlbChtZmFNZXRob2QoKSkgfX08L3A+XG5cbiAgICAgICAgQGlmIChtZmFNZXRob2QoKSA9PT0gJ1RPVFAnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtYmxvY2tcIj5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUsIGNvbnRlbnQ6IHQoJ21mYUJhY2t1cENvZGVzVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhQmFja3VwQ29kZXNBdmFpbGFibGUnKSArICc6ICcgKyBiYWNrdXBDb2Rlc0NvdW50KCkgfVwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIEBpZiAocmVnZW5lcmF0ZWRDb2RlcygpOyBhcyBjb2Rlcykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtYWxlcnRcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaW5mb3JtYXRpb24tY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPHA+e3sgdCgnbWZhQmFja3VwQ29kZXNTYXZlV2FybmluZycpIH19IHt7IHQoJ21mYUJhY2t1cENvZGVzRXhwbGFpbicpIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtY29kZXNcIj5cbiAgICAgICAgICAgIEBmb3IgKGNvZGUgb2YgY29kZXM7IHRyYWNrIGNvZGUpIHtcbiAgICAgICAgICAgIDxjb2RlIGNsYXNzPVwibWZhLWNvZGVcIj57eyBjb2RlIH19PC9jb2RlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgY29sb3I9XCJkYXJrXCIgZmlsbD1cIm91dGxpbmVcIiAoY2xpY2spPVwiY29weUNvZGVzKGNvZGVzKVwiPlxuICAgICAgICAgICAge3sgdCgnbWZhQ29weUNvZGVzJykgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgfSBAZWxzZSB7IEBpZiAoYmFja3VwQ29kZXNDb3VudCgpIDwgMykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtYWxlcnRcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaW5mb3JtYXRpb24tY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPHA+e3sgdCgnbWZhQmFja3VwQ29kZXNMb3cnKSB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwid29ya2luZygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZWdlbmVyYXRlQmFja3VwQ29kZXMoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmICh3b3JraW5nKCkpIHtcbiAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7IHt7IHQoJ21mYVJlZ2VuZXJhdGVDb2RlcycpIH19IH1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgY29sb3I9XCJkYXJrXCIgZmlsbD1cIm91dGxpbmVcIiAoY2xpY2spPVwiZ29Ub0Rpc2FibGUoKVwiPlxuICAgICAgICAgIHt7IHQoJ21mYURpc2FibGVCdXR0b24nKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8cCBjbGFzcz1cIm1mYS1zdGF0dXMgbWZhLXN0YXR1cy0tb2ZmXCI+e3sgdCgnbWZhRGlzYWJsZWRMYWJlbCcpIH19PC9wPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFEaXNhYmxlZEhpbnQnKSB9XCIgLz5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiZ29Ub01ldGhvZFNlbGVjdCgpXCI+IHt7IHQoJ21mYUVuYWJsZUJ1dHRvbicpIH19IDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSB9IEBjYXNlICgnbWV0aG9kLXNlbGVjdCcpIHtcbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZmFFbmFibGVUaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhTWV0aG9kUHJvbXB0JykgfVwiIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1tZXRob2QtbGlzdFwiIHJvbGU9XCJyYWRpb2dyb3VwXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIm1mYS1tZXRob2QtY2FyZFwiXG4gICAgICAgICAgICBbY2xhc3MubWZhLW1ldGhvZC1jYXJkLS1hY3RpdmVdPVwic2VsZWN0ZWRNZXRob2QoKSA9PT0gJ1RPVFAnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZE1ldGhvZC5zZXQoJ1RPVFAnKVwiXG4gICAgICAgICAgICByb2xlPVwicmFkaW9cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cInNlbGVjdGVkTWV0aG9kKCkgPT09ICdUT1RQJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZmEtbWV0aG9kLWNhcmRfX2RvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWZhLW1ldGhvZC1jYXJkX19ib2R5XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnbWZhTWV0aG9kVG90cCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ21mYU1ldGhvZFRvdHBIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIm1mYS1tZXRob2QtY2FyZFwiXG4gICAgICAgICAgICBbY2xhc3MubWZhLW1ldGhvZC1jYXJkLS1hY3RpdmVdPVwic2VsZWN0ZWRNZXRob2QoKSA9PT0gJ0VNQUlMJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRNZXRob2Quc2V0KCdFTUFJTCcpXCJcbiAgICAgICAgICAgIHJvbGU9XCJyYWRpb1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwic2VsZWN0ZWRNZXRob2QoKSA9PT0gJ0VNQUlMJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZmEtbWV0aG9kLWNhcmRfX2RvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWZhLW1ldGhvZC1jYXJkX19ib2R5XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnbWZhTWV0aG9kRW1haWwnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdtZmFNZXRob2RFbWFpbEhpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWZhLW1ldGhvZC1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5tZmEtbWV0aG9kLWNhcmQtLWFjdGl2ZV09XCJzZWxlY3RlZE1ldGhvZCgpID09PSAnU01TJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRNZXRob2Quc2V0KCdTTVMnKVwiXG4gICAgICAgICAgICByb2xlPVwicmFkaW9cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cInNlbGVjdGVkTWV0aG9kKCkgPT09ICdTTVMnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1mYS1tZXRob2QtY2FyZF9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZmEtbWV0aG9kLWNhcmRfX2JvZHlcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdtZmFNZXRob2RTbXMnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdtZmFNZXRob2RTbXNIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoc2VsZWN0ZWRNZXRob2QoKSA9PT0gJ1NNUycgJiYgIXVzZXJQaG9uZSgpKSB7XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICBsYWJlbD1cInt7IHQoJ21mYVBob25lTGFiZWwnKSB9fVwiXG4gICAgICAgICAgbGFiZWxQbGFjZW1lbnQ9XCJmbG9hdGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZWxcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiKzU2OTEyMzQ1Njc4XCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicGhvbmVDb250cm9sXCJcbiAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICBAaWYgKHBob25lQ29udHJvbC5pbnZhbGlkICYmIHBob25lQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICAgIDxwIGNsYXNzPVwibWZhLWVycm9yXCI+e3sgdCgnbWZhUGhvbmVJbnZhbGlkJykgfX08L3A+XG4gICAgICAgIH0gfSBAaWYgKHNlbGVjdGVkTWV0aG9kKCkgPT09ICdTTVMnICYmIHVzZXJQaG9uZSgpOyBhcyBwaG9uZSkge1xuICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHQoJ21mYVBob25lUmVnaXN0ZXJlZCcpICsgJzogJyArIHBob25lIH1cIlxuICAgICAgICAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBbZGlzYWJsZWRdPVwid29ya2luZygpXCIgKGNsaWNrKT1cInByb2NlZWRXaXRoTWV0aG9kKClcIj5cbiAgICAgICAgICBAaWYgKHdvcmtpbmcoKSkge1xuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2UgeyB7eyB0KCdtZmFDb250aW51ZScpIH19IH1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJiYWNrVG9TdGF0dXMoKVwiPlxuICAgICAgICAgIHt7IHQoJ21mYUNhbmNlbCcpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAY2FzZSAoJ3RvdHAtc2V0dXAnKSB7XG4gICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnbWZhVG90cFNldHVwVGl0bGUnKSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhVG90cFN0ZXAxJykgfVwiIC8+XG5cbiAgICAgICAgQGlmICh0b3RwUXIoKTsgYXMgcXIpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1xclwiPlxuICAgICAgICAgIDx2YWwtcXItY29kZSBbcHJvcHNdPVwieyBxcjogcXIgfVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBpZiAodG90cFNldHVwKCk7IGFzIHNldHVwKSB7XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHQoJ21mYVRvdHBNYW51YWxFbnRyeScpIH1cIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLXNlY3JldC1yb3dcIj5cbiAgICAgICAgICA8Y29kZSBjbGFzcz1cIm1mYS1zZWNyZXRcIj57eyBzZXR1cC5zZWNyZXQgfX08L2NvZGU+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNvcHlTZWNyZXQoc2V0dXAuc2VjcmV0KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY29weScpXCI+XG4gICAgICAgICAgICBAaWYgKGNvcGllZFNlY3JldCgpKSB7XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjb3B5LW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhVG90cFN0ZXAyJykgfVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtcGluXCI+XG4gICAgICAgICAgPHZhbC1waW4taW5wdXQgW3Byb3BzXT1cInBpbklucHV0UHJvcHNcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIFtkaXNhYmxlZF09XCJ3b3JraW5nKClcIiAoY2xpY2spPVwidmVyaWZ5VG90cCgpXCI+XG4gICAgICAgICAgQGlmICh3b3JraW5nKCkpIHtcbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgICB9IEBlbHNlIHsge3sgdCgnbWZhVG90cFZlcmlmeScpIH19IH1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtYmFja3VwXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiB0cnVlLCBjb250ZW50OiB0KCdtZmFCYWNrdXBDb2Rlc1RpdGxlJykgfVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1hbGVydFwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJpbmZvcm1hdGlvbi1jaXJjbGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8cD57eyB0KCdtZmFCYWNrdXBDb2Rlc1NhdmVXYXJuaW5nJykgfX0ge3sgdCgnbWZhQmFja3VwQ29kZXNFeHBsYWluJykgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1jb2Rlc1wiPlxuICAgICAgICAgICAgQGZvciAoY29kZSBvZiBzZXR1cC5iYWNrdXBDb2RlczsgdHJhY2sgY29kZSkge1xuICAgICAgICAgICAgPGNvZGUgY2xhc3M9XCJtZmEtY29kZVwiPnt7IGNvZGUgfX08L2NvZGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJjb3B5Q29kZXMoc2V0dXAuYmFja3VwQ29kZXMpXCI+XG4gICAgICAgICAgICB7eyB0KCdtZmFDb3B5Q29kZXMnKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJiYWNrVG9TdGF0dXMoKVwiPlxuICAgICAgICAgIHt7IHQoJ21mYUNhbmNlbCcpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAY2FzZSAoJ2NvZGUtY29uZmlybScpIHtcbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZmFDb25maXJtVGl0bGUnKSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiBzZWxlY3RlZE1ldGhvZCgpID09PSAnRU1BSUwnID8gdCgnbWZhQ29uZmlybVByb21wdEVtYWlsJykgOiB0KCdtZmFDb25maXJtUHJvbXB0U21zJykgfVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1waW5cIj5cbiAgICAgICAgICA8dmFsLXBpbi1pbnB1dCBbcHJvcHNdPVwicGluSW5wdXRQcm9wc1wiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgW2Rpc2FibGVkXT1cIndvcmtpbmcoKVwiIChjbGljayk9XCJjb25maXJtQ29kZSgpXCI+XG4gICAgICAgICAgQGlmICh3b3JraW5nKCkpIHtcbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgICB9IEBlbHNlIHsge3sgdCgnbWZhQ29uZmlybUJ1dHRvbicpIH19IH1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDxwIGNsYXNzPVwibWZhLXJlc2VuZFwiPlxuICAgICAgICAgIHt7IHQoJ21mYU5vQ29kZScpIH19IEBpZiAocmVzZW5kQ29vbGRvd24oKSA+IDApIHtcbiAgICAgICAgICA8c3Bhbj57eyB0KCdtZmFSZXNlbmRJbicpIH19IHt7IHJlc2VuZENvb2xkb3duKCkgfX1zPC9zcGFuPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxhIChjbGljayk9XCJyZXNlbmRDb2RlKClcIj57eyB0KCdtZmFSZXNlbmQnKSB9fTwvYT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJiYWNrVG9TdGF0dXMoKVwiPlxuICAgICAgICAgIHt7IHQoJ21mYUNhbmNlbCcpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAY2FzZSAoJ2Rpc2FibGUnKSB7IEBpZiAoaGFzUGFzc3dvcmQoKSkge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cImRpc2FibGVGb3JtUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJvbkRpc2FibGVTdWJtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKG1mYU1ldGhvZCgpID09PSAnVE9UUCcpIHtcbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZmFEaXNhYmxlVGl0bGUnKSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhRGlzYWJsZVRvdHBQcm9tcHQnKSB9XCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1waW5cIj5cbiAgICAgICAgICA8dmFsLXBpbi1pbnB1dCBbcHJvcHNdPVwicGluSW5wdXRQcm9wc1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIFtkaXNhYmxlZF09XCJ3b3JraW5nKClcIiAoY2xpY2spPVwiZGlzYWJsZVdpdGhNZmFDb2RlKClcIj5cbiAgICAgICAgICBAaWYgKHdvcmtpbmcoKSkge1xuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2UgeyB7eyB0KCdtZmFEaXNhYmxlQnV0dG9uJykgfX0gfVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIH0gQGVsc2UgaWYgKG1mYU1ldGhvZCgpID09PSAnRU1BSUwnIHx8IG1mYU1ldGhvZCgpID09PSAnU01TJykge1xuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ21mYURpc2FibGVUaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICBAaWYgKCFkaXNhYmxlQ29kZVNlbnQoKSkge1xuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFEaXNhYmxlQ29kZVByb21wdCcpIH1cIiAvPlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIFtkaXNhYmxlZF09XCJ3b3JraW5nKClcIiAoY2xpY2spPVwic2VuZERpc2FibGVDb2RlKClcIj5cbiAgICAgICAgICBAaWYgKHdvcmtpbmcoKSkge1xuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2UgeyB7eyB0KCdtZmFEaXNhYmxlU2VuZENvZGUnKSB9fSB9XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHQoJ21mYURpc2FibGVDb2RlUHJvbXB0JykgfVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtcGluXCI+XG4gICAgICAgICAgPHZhbC1waW4taW5wdXQgW3Byb3BzXT1cInBpbklucHV0UHJvcHNcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBbZGlzYWJsZWRdPVwid29ya2luZygpXCIgKGNsaWNrKT1cImRpc2FibGVXaXRoTWZhQ29kZSgpXCI+XG4gICAgICAgICAgQGlmICh3b3JraW5nKCkpIHtcbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgICB9IEBlbHNlIHsge3sgdCgnbWZhRGlzYWJsZUJ1dHRvbicpIH19IH1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwibWVkaXVtXCIgW2Rpc2FibGVkXT1cIndvcmtpbmcoKVwiIChjbGljayk9XCJzZW5kRGlzYWJsZUNvZGUoKVwiPlxuICAgICAgICAgIHt7IHQoJ21mYURpc2FibGVSZXNlbmRDb2RlJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IH0gQGVsc2Uge1xuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ21mYURpc2FibGVUaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFEaXNhYmxlTmVlZHNQYXNzd29yZCcpIH1cIiAvPlxuICAgICAgICB9XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImJhY2tUb1N0YXR1cygpXCI+XG4gICAgICAgICAge3sgdCgnbWZhQ2FuY2VsJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2lvbi1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuPC9pb24tbW9kYWw+XG4iXX0=
538
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZhLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWZhLW1vZGFsL21mYS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21mYS1tb2RhbC9tZmEtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxF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QVMsb1BBQ1QsVUFBVSw4RUFDVixVQUFVLHdLQUNWLFNBQVMsb0dBQ1QsT0FBTywySkFDUCxRQUFRLDhlQUdSLFFBQVEsc0RBR1IsVUFBVSx5R0FDVixVQUFVLG1GQUNWLGdCQUFnQiwyRUFDaEIsYUFBYSw4SEFDYixlQUFlLG1JQUNmLGFBQWEsd0VBQ2IsY0FBYyx5RUFDZCxpQkFBaUI7OzRGQUtSLGlCQUFpQjtrQkE1QjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxRQUFRO3dCQUNSLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsYUFBYTt3QkFDYixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGlCQUFpQjtxQkFDbEI7d0RBU0csTUFBTTtzQkFEVCxLQUFLO2dCQXFCRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdJLE9BQU87c0JBQWhCLE1BQU07Z0JBT0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbkljb24sXG4gIElvbklucHV0LFxuICBJb25JdGVtLFxuICBJb25MYWJlbCxcbiAgSW9uTW9kYWwsXG4gIElvblJhZGlvLFxuICBJb25SYWRpb0dyb3VwLFxuICBJb25TcGlubmVyLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgaW5mb3JtYXRpb25DaXJjbGVPdXRsaW5lLCBjb3B5T3V0bGluZSwgY2hlY2ttYXJrT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgYnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXJDb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvcXItY29kZS9xci1jb2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaW5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waW4taW5wdXQvcGluLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoJztcbmltcG9ydCB7IE1GQU1ldGhvZCwgVE9UUFNldHVwUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJbnB1dEkxOG5IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFFyR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3FyLWdlbmVyYXRvci9xci1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBRclJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3FyLWdlbmVyYXRvci90eXBlcyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcblxuLyoqIFBhc28gZGVsIGZsdWpvIGRlbCBtb2RhbC4gKi9cbnR5cGUgTWZhU3RlcCA9ICdsb2FkaW5nJyB8ICdzdGF0dXMnIHwgJ21ldGhvZC1zZWxlY3QnIHwgJ3RvdHAtc2V0dXAnIHwgJ2NvZGUtY29uZmlybScgfCAnZGlzYWJsZSc7XG5cbi8qKiBTZWd1bmRvcyBkZSBlc3BlcmEgYW50ZXMgZGUgcG9kZXIgcmVlbnZpYXIgZWwgY8OzZGlnbyBFTUFJTC9TTVMuICovXG5jb25zdCBSRVNFTkRfQ09PTERPV05fU0VDT05EUyA9IDMwO1xuXG4vKipcbiAqIGB2YWwtbWZhLW1vZGFsYCDigJQgbW9kYWwgZGUgZ2VzdGnDs24gZGUgYXV0ZW50aWNhY2nDs24gZGUgZG9zIGZhY3RvcmVzIChNRkEpXG4gKiBwYXJhIHVuIHVzdWFyaW8gYXV0ZW50aWNhZG8uIE1pc21vIHBhdHLDs24gcXVlIGB2YWwtY2hhbmdlLXBhc3N3b3JkLW1vZGFsYC5cbiAqXG4gKiBGbHVqbyAobcOhcXVpbmEgZGUgZXN0YWRvcyBpbnRlcm5hKTpcbiAqICAtIGBsb2FkaW5nYCDihpIgYGdldFByb2ZpbGUoKWAgcGFyYSBjb25vY2VyIGVsIGVzdGFkbyBNRkEuXG4gKiAgLSBgc3RhdHVzYCDihpIgbXVlc3RyYSBNRkEgaGFiaWxpdGFkby9kZXNoYWJpbGl0YWRvLiBTaSBlc3TDoSBoYWJpbGl0YWRvOlxuICogICAgZ2VzdGnDs24gZGUgYmFja3VwIGNvZGVzIChUT1RQKSArIGRlc2hhYmlsaXRhci4gU2kgbm86IGJvdMOzbiBoYWJpbGl0YXIuXG4gKiAgLSBgbWV0aG9kLXNlbGVjdGAg4oaSIGVsZWdpciBUT1RQIC8gRU1BSUwgLyBTTVMuXG4gKiAgLSBgdG90cC1zZXR1cGAg4oaSIFFSICsgc2VjcmV0byBtYW51YWwgKyBiYWNrdXAgY29kZXMg4oaSIHZlcmlmaWNhciBjw7NkaWdvLlxuICogIC0gYGNvZGUtY29uZmlybWAg4oaSIChFTUFJTC9TTVMpIGluZ3Jlc2FyIGPDs2RpZ28gcmVjaWJpZG8sIGNvbiByZWVudsOtby5cbiAqICAtIGBkaXNhYmxlYCDihpIgY29udHJhc2XDsWEgcGFyYSBkZXNoYWJpbGl0YXIgTUZBLlxuICpcbiAqIEVsIFFSIHNlIGdlbmVyYSAqKmNsaWVudC1zaWRlKiogKGBRckdlbmVyYXRvclNlcnZpY2VgKSDigJQgZWwgc2VjcmV0byBUT1RQXG4gKiBudW5jYSBzYWxlIGRlbCBuYXZlZ2Fkb3IuXG4gKlxuICogU2VsZi1jb250YWluZWQ6IGlueWVjdGEgYEF1dGhTZXJ2aWNlYCB5IGxsYW1hIGxvcyBlbmRwb2ludHMgZGlyZWN0by4gTGEgYXBwXG4gKiBjb250cm9sYSBgW2lzT3Blbl1gIHkgcmVhY2Npb25hIGEgYChjaGFuZ2VkKWAgLyBgKGRpc21pc3NlZClgLlxuICpcbiAqIGkxOG46IG5hbWVzcGFjZSBjb21wYXJ0aWRvIGBfYXV0aGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtbWZhLW1vZGFsXG4gKiAgIFtpc09wZW5dPVwiaXNNb2RhbE9wZW4oKVwiXG4gKiAgIChkaXNtaXNzZWQpPVwiaXNNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1tZmEtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Db250ZW50LFxuICAgIElvbkhlYWRlcixcbiAgICBJb25JY29uLFxuICAgIElvbklucHV0LFxuICAgIElvbkl0ZW0sXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uTW9kYWwsXG4gICAgSW9uUmFkaW8sXG4gICAgSW9uUmFkaW9Hcm91cCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBGb3JtQ29tcG9uZW50LFxuICAgIFFyQ29kZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFBpbklucHV0Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWZhLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWZhLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1mYU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgLyoqIENvbnRyb2xhIGxhIHZpc2liaWxpZGFkLiBDYWRhIGFwZXJ0dXJhIHJlLXJlc3VlbHZlIGVsIGVzdGFkbyBNRkEuICovXG4gIEBJbnB1dCgpXG4gIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcGVuaW5nID0gdmFsdWUgJiYgIXRoaXMuX2lzT3BlbjtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICBpZiAob3BlbmluZykge1xuICAgICAgLy8gRGlmZXJpbW9zIGFsIHByw7N4aW1vIG1pY3JvdGFzayBwYXJhIHF1ZSBlbCByZXN0byBkZSBASW5wdXRcbiAgICAgIC8vIChgcHJlZmlsbENvZGVgKSB5YSBlc3TDqW4gYXNpZ25hZG9zIOKAlCBBbmd1bGFyIHByb2Nlc2EgbG9zIGlucHV0cyBlblxuICAgICAgLy8gb3JkZW4gZGUgZGVjbGFyYWNpw7NuLCB5IHNpbiBlc3RvIGBvcGVuKClgIGxlZSBgcHJlZmlsbENvZGVgIHVuZGVmaW5lZFxuICAgICAgLy8gY3VhbmRvIGVsIHBhZHJlIHNldGVhIGFtYm9zIGVuIGVsIG1pc21vIHRpY2sgKGRlZXAtbGluayBNRkEtZW1haWwpLlxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5vcGVuKCkpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKipcbiAgICogQ8OzZGlnbyBNRkEgcHJlLWNhcmdhZG8gKGRlZXAtbGluayBkZXNkZSBlbCBlbWFpbCBkZSBzZXR1cCBNRkEtZW1haWwpLiBTaVxuICAgKiBlc3TDoSBwcmVzZW50ZSBhbCBhYnJpciwgZWwgbW9kYWwgc2FsdGEgZGlyZWN0byBhbCBwYXNvIGRlIGNvbmZpcm1hY2nDs25cbiAgICogY29uIGVsIGPDs2RpZ28gcmVsbGVuYWRvLlxuICAgKi9cbiAgQElucHV0KCkgcHJlZmlsbENvZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEVtaXRlIGN1YW5kbyBlbCBlc3RhZG8gTUZBIGNhbWJpYSAoaGFiaWxpdGFkbyAvIGRlc2hhYmlsaXRhZG8pLiAqL1xuICBAT3V0cHV0KCkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogRW1pdGlkbyBjdWFuZG8gdW4gc2V0dXAgTUZBIHNlIGNvbmZpcm1hIGV4aXRvc2FtZW50ZSB5IGVsIG1vZGFsIGZ1ZSBhYmllcnRvXG4gICAqIHbDrWEgZGVlcC1saW5rIChjb24gYHByZWZpbGxDb2RlYCkuIEVsIGhvc3QgcHVlZGUgdXNhcmxvIHBhcmEgY2VycmFyIGVsXG4gICAqIG1vZGFsIHkgbmF2ZWdhciAoZWouIGEgaG9tZSkgZW4gbHVnYXIgZGUgcXVlZGFyc2UgZW4gbGEgcMOhZ2luYSBkZSBTZWN1cml0eS5cbiAgICovXG4gIEBPdXRwdXQoKSBlbmFibGVkVmlhRGVlcGxpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEVtaXRlIGN1YW5kbyBlbCB1c2VyIGNpZXJyYSBlbCBtb2RhbCAoYm90w7NuIFggbyBiYWNrZHJvcCkuICovXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG5IZWxwZXIgPSBpbmplY3QoSW5wdXRJMThuSGVscGVyKTtcbiAgcHJpdmF0ZSBxckdlbiA9IGluamVjdChRckdlbmVyYXRvclNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0ZXAgPSBzaWduYWw8TWZhU3RlcD4oJ2xvYWRpbmcnKTtcbiAgLyoqIFBhc28gYWN0dWFsIGRlbCBmbHVqby4gKi9cbiAgcmVhZG9ubHkgc3RlcCA9IHRoaXMuX3N0ZXAuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBgdHJ1ZWAgbWllbnRyYXMgdW5hIGxsYW1hZGEgYWwgYmFja2VuZCBlc3TDoSBlbiBjdXJzby4gKi9cbiAgcmVhZG9ubHkgd29ya2luZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLy8gRXN0YWRvIE1GQSBhY3R1YWwuXG4gIHJlYWRvbmx5IG1mYUVuYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtZmFNZXRob2QgPSBzaWduYWw8TUZBTWV0aG9kIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHVzZXJQaG9uZSA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgYmFja3VwQ29kZXNDb3VudCA9IHNpZ25hbCgwKTtcbiAgLyoqIERlZmF1bHQgdHJ1ZSBwYXJhIG5vIHJvbXBlciBlbCBmbG93IHZpZWpvIHNpIGVsIGJhY2tlbmQgbm8gZGV2dWVsdmUgZWwgY2FtcG8uICovXG4gIHJlYWRvbmx5IGhhc1Bhc3N3b3JkID0gc2lnbmFsKHRydWUpO1xuXG4gIC8vIEVzdGFkbyBkZWwgZmx1am8gZGUgaGFiaWxpdGFjacOzbi5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRNZXRob2QgPSBzaWduYWw8TUZBTWV0aG9kPignVE9UUCcpO1xuICByZWFkb25seSB0b3RwU2V0dXAgPSBzaWduYWw8VE9UUFNldHVwUmVzcG9uc2UgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgdG90cFFyID0gc2lnbmFsPFFyUmVzdWx0IHwgbnVsbD4obnVsbCk7XG4gIC8qKiBDw7NkaWdvcyBkZSByZXNwYWxkbyByZWNpw6luIHJlZ2VuZXJhZG9zIOKAlCBzZSBtdWVzdHJhbiB1bmEgc29sYSB2ZXouICovXG4gIHJlYWRvbmx5IHJlZ2VuZXJhdGVkQ29kZXMgPSBzaWduYWw8c3RyaW5nW10gfCBudWxsPihudWxsKTtcbiAgLyoqIE1hcmNhIG1vbWVudMOhbmVhIGN1YW5kbyBlbCBzZWNyZXRvIFRPVFAgc2UgYWNhYmEgZGUgY29waWFyIChmZWVkYmFjayB2aXN1YWwpLiAqL1xuICByZWFkb25seSBjb3BpZWRTZWNyZXQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSByZXNlbmRDb29sZG93biA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUNvZGVTZW50ID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBwaW5Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNiksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXSk7XG4gIHJlYWRvbmx5IHBob25lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybigvXlxcK1sxLTldXFxkezYsMTR9JC8pXSk7XG5cbiAgcmVhZG9ubHkgcGluSW5wdXRQcm9wcyA9IHtcbiAgICBjb250cm9sOiB0aGlzLnBpbkNvbnRyb2wsXG4gICAgdG9rZW46ICdtZmEtY29kZScsXG4gICAgbGVuZ3RoOiA2LFxuICAgIGFsbG93TnVtYmVyc09ubHk6IHRydWUsXG4gICAgYXV0b0ZvY3VzOiB0cnVlLFxuICB9O1xuXG4gIC8qKiBGb3JtIGRlIGRlc2hhYmlsaXRhY2nDs24g4oCUIGB2YWwtZm9ybWAgY29uIHVuIGNhbXBvIGRlIGNvbnRyYXNlw7FhLiAqL1xuICByZWFkb25seSBkaXNhYmxlRm9ybVByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PlxuICAgIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnbWZhRGlzYWJsZVRpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogdGhpcy50KCdtZmFEaXNhYmxlUHJvbXB0JyksXG4gICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgdG9rZW46ICdtZmEtZGlzYWJsZS1wYXNzd29yZCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnbWZhUGFzc3dvcmRMYWJlbCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJ3Bhc3N3b3JkUGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHsgcmVxdWlyZWQ6ICdtZmFQYXNzd29yZFJlcXVpcmVkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAuLi5idXR0b24oeyB0ZXh0OiAnJywgdHlwZTogJ3N1Ym1pdCcsIGZpbGw6ICdzb2xpZCcsIGV4cGFuZDogJ2Jsb2NrJyB9KSxcbiAgICAgICAgdG9rZW46ICdtZmEtZGlzYWJsZS1zdWJtaXQnLFxuICAgICAgICB0ZXh0S2V5OiAnbWZhRGlzYWJsZUJ1dHRvbicsXG4gICAgICB9LFxuICAgICAgc3RhdGU6IHRoaXMud29ya2luZygpID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVzZW5kVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHsgaW5mb3JtYXRpb25DaXJjbGVPdXRsaW5lLCBjb3B5T3V0bGluZSwgY2hlY2ttYXJrT3V0bGluZSB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcENvb2xkb3duKCk7XG4gIH1cblxuICAvKiogVHJhZHVjZSB1bmEgY2xhdmUgZGVsIG5hbWVzcGFjZSBgX2F1dGhgLiAqL1xuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnX2F1dGgnKTtcbiAgfVxuXG4gIC8qKiBDaWVycmUgaW5pY2lhZG8gcG9yIGVsIHVzZXIgKFggLyBiYWNrZHJvcCkuICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdW50byBkZSBlbnRyYWRhIGFsIGFicmlyIGVsIG1vZGFsLiBDb24gYHByZWZpbGxDb2RlYCAoZGVlcC1saW5rIGRlbCBlbWFpbFxuICAgKiBkZSBzZXR1cCBNRkEtZW1haWwpIHNhbHRhIGRpcmVjdG8gYSBsYSBjb25maXJtYWNpw7NuOyBzaSBubywgcmVzdWVsdmUgZWxcbiAgICogZXN0YWRvIE1GQSBhY3R1YWwuXG4gICAqL1xuICBwcml2YXRlIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJlZmlsbENvZGUpIHtcbiAgICAgIHRoaXMucmVzZXRGbG93KCk7XG4gICAgICB0aGlzLnNlbGVjdGVkTWV0aG9kLnNldCgnRU1BSUwnKTtcbiAgICAgIHRoaXMucGluQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnByZWZpbGxDb2RlKTtcbiAgICAgIHRoaXMuX3N0ZXAuc2V0KCdjb2RlLWNvbmZpcm0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZXNvbHZlU3RhdHVzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ2FyZ2EgZGUgZXN0YWRvXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBDb25zdWx0YSBlbCBwZXJmaWwgcGFyYSBjb25vY2VyIGVsIGVzdGFkbyBNRkEgeSBwb3NpY2lvbmFyIGVsIGZsdWpvLiAqL1xuICBwcml2YXRlIHJlc29sdmVTdGF0dXMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcC5zZXQoJ2xvYWRpbmcnKTtcbiAgICB0aGlzLnJlc2V0RmxvdygpO1xuICAgIHRoaXMuYXV0aC5nZXRQcm9maWxlKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHByb2ZpbGUgPT4ge1xuICAgICAgICB0aGlzLm1mYUVuYWJsZWQuc2V0KHByb2ZpbGUubWZhRW5hYmxlZCk7XG4gICAgICAgIHRoaXMubWZhTWV0aG9kLnNldChwcm9maWxlLm1mYU1ldGhvZCA/PyBudWxsKTtcbiAgICAgICAgdGhpcy51c2VyUGhvbmUuc2V0KHByb2ZpbGUucGhvbmUgPz8gbnVsbCk7XG4gICAgICAgIHRoaXMuaGFzUGFzc3dvcmQuc2V0KHByb2ZpbGUuaGFzUGFzc3dvcmQgPz8gdHJ1ZSk7XG4gICAgICAgIGlmIChwcm9maWxlLm1mYUVuYWJsZWQgJiYgcHJvZmlsZS5tZmFNZXRob2QgPT09ICdUT1RQJykge1xuICAgICAgICAgIHRoaXMubG9hZEJhY2t1cENvdW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3RlcC5zZXQoJ3N0YXR1cycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIC8vIEZhbGxiYWNrOiB1c2FyIGVsIHNpZ25hbCBkZSB1c3VhcmlvIGVuIHNlc2nDs24uXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGgudXNlcigpO1xuICAgICAgICB0aGlzLm1mYUVuYWJsZWQuc2V0KHVzZXI/Lm1mYUVuYWJsZWQgPz8gZmFsc2UpO1xuICAgICAgICB0aGlzLm1mYU1ldGhvZC5zZXQodXNlcj8ubWZhTWV0aG9kID8/IG51bGwpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RhdHVzJyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQmFja3VwQ291bnQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoLmdldEJhY2t1cENvZGVzQ291bnQoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcmVzID0+IHRoaXMuYmFja3VwQ29kZXNDb3VudC5zZXQocmVzLmNvdW50KSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmJhY2t1cENvZGVzQ291bnQuc2V0KDApLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE5hdmVnYWNpw7NuIGVudHJlIHBhc29zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGdvVG9NZXRob2RTZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdlbmVyYXRlZENvZGVzLnNldChudWxsKTtcbiAgICB0aGlzLl9zdGVwLnNldCgnbWV0aG9kLXNlbGVjdCcpO1xuICB9XG5cbiAgZ29Ub0Rpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5waW5Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5fc3RlcC5zZXQoJ2Rpc2FibGUnKTtcbiAgfVxuXG4gIGJhY2tUb1N0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICAgIHRoaXMuZGlzYWJsZUNvZGVTZW50LnNldChmYWxzZSk7XG4gICAgdGhpcy5yZXNvbHZlU3RhdHVzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSGFiaWxpdGFyIE1GQVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogQ29udGluw7phIGRlc2RlIGVsIHNlbGVjdG9yIGRlIG3DqXRvZG8gYWwgc2V0dXAgY29ycmVzcG9uZGllbnRlLiAqL1xuICBwcm9jZWVkV2l0aE1ldGhvZCgpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLnNlbGVjdGVkTWV0aG9kKCk7XG4gICAgaWYgKG1ldGhvZCA9PT0gJ1RPVFAnKSB7XG4gICAgICB0aGlzLnNldHVwVG90cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwaG9uZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmIChtZXRob2QgPT09ICdTTVMnICYmICF0aGlzLnVzZXJQaG9uZSgpKSB7XG4gICAgICBpZiAodGhpcy5waG9uZUNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgICB0aGlzLnBob25lQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnbWZhUGhvbmVJbnZhbGlkJykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwaG9uZSA9IHRoaXMucGhvbmVDb250cm9sLnZhbHVlID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYXV0aC5zZXR1cE1GQShtZXRob2QsIHBob25lKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIGlmIChyZXMuY29kZVNlbnQpIHtcbiAgICAgICAgICB0aGlzLnBpbkNvbnRyb2wucmVzZXQoKTtcbiAgICAgICAgICB0aGlzLl9zdGVwLnNldCgnY29kZS1jb25maXJtJyk7XG4gICAgICAgICAgdGhpcy5zdGFydENvb2xkb3duKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBUb3RwKCk6IHZvaWQge1xuICAgIHRoaXMud29ya2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdXRoLnNldHVwVE9UUCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICB0aGlzLnRvdHBTZXR1cC5zZXQocmVzKTtcbiAgICAgICAgdGhpcy5waW5Db250cm9sLnJlc2V0KCk7XG4gICAgICAgIHRoaXMucXJHZW5cbiAgICAgICAgICAuZ2VuZXJhdGUoeyBkYXRhOiByZXMucXJDb2RlVXJsLCB3aWR0aDogMjIwIH0pXG4gICAgICAgICAgLnRoZW4ocXIgPT4gdGhpcy50b3RwUXIuc2V0KHFyKSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy50b3RwUXIuc2V0KG51bGwpKTtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuX3N0ZXAuc2V0KCd0b3RwLXNldHVwJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogVmVyaWZpY2EgZWwgY8OzZGlnbyBUT1RQIGRlIGxhIGFwcCBkZSBhdXRlbnRpY2FjacOzbiB5IGFjdGl2YSBNRkEuICovXG4gIHZlcmlmeVRvdHAoKTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMucGluQ29udHJvbC52YWx1ZTtcbiAgICBpZiAoIWNvZGUgfHwgY29kZS5sZW5ndGggIT09IDYpIHtcbiAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnbWZhQ29kZUludmFsaWQnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMud29ya2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdXRoLnZlcmlmeVRPVFBTZXR1cChjb2RlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIGlmIChyZXMuZW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnbWZhRW5hYmxlZE9rJykpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5yZXNvbHZlU3RhdHVzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBDb25maXJtYSBlbCBjw7NkaWdvIEVNQUlML1NNUyB5IGFjdGl2YSBNRkEuICovXG4gIGNvbmZpcm1Db2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvZGUgPSB0aGlzLnBpbkNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCFjb2RlIHx8IGNvZGUubGVuZ3RoICE9PSA2KSB7XG4gICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYUNvZGVJbnZhbGlkJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIGNvbnN0IGNhbWVGcm9tRGVlcGxpbmsgPSAhIXRoaXMucHJlZmlsbENvZGU7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1NRkEoY29kZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICBpZiAocmVzLm1mYUVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYUVuYWJsZWRPaycpKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xuICAgICAgICAgIGlmIChjYW1lRnJvbURlZXBsaW5rKSB7XG4gICAgICAgICAgICAvLyBFbCB1c2VyIGxsZWfDsyB2w61hIGxpbmsgZGVsIGVtYWlsIOKGkiBlbCBob3N0IHNlIGVuY2FyZ2EgZGUgY2VycmFyXG4gICAgICAgICAgICAvLyBlbCBtb2RhbCB5IG5hdmVnYXIgKGVqLiBhIGhvbWUpLiBObyByZXNvbHZlbW9zIHN0YXR1cyBhY8OhIHBvcnF1ZVxuICAgICAgICAgICAgLy8gaW1wbGljYXLDrWEgZGVqYXIgZWwgbW9kYWwgYWJpZXJ0byBtb3N0cmFuZG8gZWwgZXN0YWRvIG51ZXZvLlxuICAgICAgICAgICAgdGhpcy5lbmFibGVkVmlhRGVlcGxpbmsuZW1pdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVTdGF0dXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZWVudsOtYSBlbCBjw7NkaWdvIEVNQUlML1NNUyAocmUtZWplY3V0YSBlbCBzZXR1cCkuICovXG4gIHJlc2VuZENvZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzZW5kQ29vbGRvd24oKSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9jZWVkV2l0aE1ldGhvZCgpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEdlc3Rpw7NuIChNRkEgaGFiaWxpdGFkbylcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIFJlZ2VuZXJhIGxvcyBjw7NkaWdvcyBkZSByZXNwYWxkbyBUT1RQIHkgbG9zIG11ZXN0cmEgdW5hIHZlei4gKi9cbiAgcmVnZW5lcmF0ZUJhY2t1cENvZGVzKCk6IHZvaWQge1xuICAgIHRoaXMud29ya2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdXRoLnJlZ2VuZXJhdGVCYWNrdXBDb2RlcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5iYWNrdXBDb2Rlc0NvdW50LnNldChyZXMuYmFja3VwQ29kZXMubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5yZWdlbmVyYXRlZENvZGVzLnNldChyZXMuYmFja3VwQ29kZXMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5yZXNvbHZlRXJyb3IoZXJyKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIERlc2hhYmlsaXRhIE1GQSB1c2FuZG8gbGEgY29udHJhc2XDsWEgZGUgbGEgY3VlbnRhLiAqL1xuICBvbkRpc2FibGVTdWJtaXQoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXNzd29yZCA9IGV2ZW50LmZpZWxkc1sncGFzc3dvcmQnXTtcbiAgICBpZiAoIXBhc3N3b3JkKSB7XG4gICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYVBhc3N3b3JkUmVxdWlyZWQnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZSh7IHBhc3N3b3JkIH0pO1xuICB9XG5cbiAgLyoqIERlc2hhYmlsaXRhIE1GQSB1c2FuZG8gdW4gY8OzZGlnbyBUT1RQIOKAlCBwYXJhIGN1ZW50YXMgT0F1dGgtb25seSBzaW4gY29udHJhc2XDsWEuICovXG4gIGRpc2FibGVXaXRoTWZhQ29kZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5waW5Db250cm9sLnZhbHVlO1xuICAgIGlmICghY29kZSB8fCBjb2RlLmxlbmd0aCAhPT0gNikge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxlKHsgbWZhQ29kZTogY29kZSB9KTtcbiAgfVxuXG4gIHNlbmREaXNhYmxlQ29kZSgpOiB2b2lkIHtcbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYXV0aC5zZW5kTUZBRGlzYWJsZUNvZGUoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlQ29kZVNlbnQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYURpc2FibGVDb2RlU2VudCcpKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZShpbnB1dDogeyBwYXNzd29yZD86IHN0cmluZzsgbWZhQ29kZT86IHN0cmluZyB9KTogdm9pZCB7XG4gICAgdGhpcy53b3JraW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1dGguZGlzYWJsZU1GQShpbnB1dCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMud29ya2luZy5zZXQoZmFsc2UpO1xuICAgICAgICBpZiAocmVzLm1mYURpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFEaXNhYmxlZE9rJykpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5yZXNvbHZlU3RhdHVzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBDb3BpYSB1bmEgbGlzdGEgZGUgY8OzZGlnb3MgZGUgcmVzcGFsZG8gYWwgcG9ydGFwYXBlbGVzLiAqL1xuICBhc3luYyBjb3B5Q29kZXMoY29kZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvZGVzLmpvaW4oJ1xcbicpKTtcbiAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnbWZhQ29kZXNDb3BpZWQnKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBzaW4gcmVjdXJzbyBkZSBjb3BpYSBkaXNwb25pYmxlICovXG4gICAgfVxuICB9XG5cbiAgLyoqIENvcGlhIGVsIHNlY3JldG8gVE9UUCBhbCBwb3J0YXBhcGVsZXMgKyBmZWVkYmFjayB2aXN1YWwgKGNoZWNrKSBkdXJhbnRlIDJzLiAqL1xuICBhc3luYyBjb3B5U2VjcmV0KHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlY3JldCk7XG4gICAgICB0aGlzLmNvcGllZFNlY3JldC5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ21mYVNlY3JldENvcGllZCcpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb3BpZWRTZWNyZXQuc2V0KGZhbHNlKSwgMjAwMCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBzaW4gcmVjdXJzbyBkZSBjb3BpYSBkaXNwb25pYmxlICovXG4gICAgfVxuICB9XG5cbiAgLyoqIEV0aXF1ZXRhIGkxOG4gbGVnaWJsZSBwYXJhIHVuIG3DqXRvZG8gTUZBLiAqL1xuICBtZXRob2RMYWJlbChtZXRob2Q6IE1GQU1ldGhvZCB8IG51bGwpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdUT1RQJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnbWZhTWV0aG9kVG90cCcpO1xuICAgICAgY2FzZSAnRU1BSUwnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdtZmFNZXRob2RFbWFpbCcpO1xuICAgICAgY2FzZSAnU01TJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnbWZhTWV0aG9kU21zJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhlbHBlcnNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSByZXNldEZsb3coKTogdm9pZCB7XG4gICAgdGhpcy5waW5Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5waG9uZUNvbnRyb2wucmVzZXQoKTtcbiAgICB0aGlzLnRvdHBTZXR1cC5zZXQobnVsbCk7XG4gICAgdGhpcy50b3RwUXIuc2V0KG51bGwpO1xuICAgIHRoaXMucmVnZW5lcmF0ZWRDb2Rlcy5zZXQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZE1ldGhvZC5zZXQoJ1RPVFAnKTtcbiAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENvb2xkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcENvb2xkb3duKCk7XG4gICAgdGhpcy5yZXNlbmRDb29sZG93bi5zZXQoUkVTRU5EX0NPT0xET1dOX1NFQ09ORFMpO1xuICAgIHRoaXMucmVzZW5kVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2VuZENvb2xkb3duLnVwZGF0ZSh2ID0+IHYgLSAxKTtcbiAgICAgIGlmICh0aGlzLnJlc2VuZENvb2xkb3duKCkgPD0gMCkge1xuICAgICAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wQ29vbGRvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzZW5kVGltZXIpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5yZXNlbmRUaW1lcik7XG4gICAgICB0aGlzLnJlc2VuZFRpbWVyID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5yZXNlbmRDb29sZG93bi5zZXQoMCk7XG4gIH1cblxuICAvKiogTWFwZWEgbG9zIGPDs2RpZ29zIGRlIGVycm9yIE1GQSBkZWwgYmFja2VuZCBhIG1lbnNhamVzIGRlbCBuYW1lc3BhY2UgYF9hdXRoYC4gKi9cbiAgcHJpdmF0ZSByZXNvbHZlRXJyb3IoZXJyOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gKGVyciBhcyB7IGNvZGU/OiBzdHJpbmcgfSk/LmNvZGU7XG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlICdBVVRIVjJfTUZBX0lOVkFMSURfQ09ERSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYUVycm9ySW52YWxpZENvZGUnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FWFBJUkVEX0NPREUnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdtZmFFcnJvckV4cGlyZWRDb2RlJyk7XG4gICAgICBjYXNlICdBVVRIVjJfQ09ERV9VU0VEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnbWZhRXJyb3JDb2RlVXNlZCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX01GQV9BTFJFQURZX0FDVElWRSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYUVycm9yQWxyZWFkeUFjdGl2ZScpO1xuICAgICAgY2FzZSAnQVVUSFYyX01GQV9OT1RfRU5BQkxFRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ21mYUVycm9yTm90RW5hYmxlZCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX1BIT05FX1JFUVVJUkVEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnbWZhRXJyb3JQaG9uZVJlcXVpcmVkJyk7XG4gICAgICBjYXNlICdBVVRIVjJfUEhPTkVfRVhJU1RTJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnbWZhRXJyb3JQaG9uZUV4aXN0cycpO1xuICAgICAgY2FzZSAnQVVUSFYyX1RPT19NQU5ZX0FUVEVNUFRTJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JUb29NYW55QXR0ZW1wdHMnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9JTlZBTElEX0NVUlJFTlRfUEFTU1dPUkQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckN1cnJlbnRQYXNzd29yZFdyb25nJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckdlbmVyaWMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlLCBkdXJhdGlvbjogMzUwMCB9KTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbCBbaXNPcGVuXT1cImlzT3BlblwiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cblxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1mYS1tb2RhbFwiPlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogdCgnbWZhTWFuYWdlVGl0bGUnKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cblxuICAgICAgICBAc3dpdGNoIChzdGVwKCkpIHsgQGNhc2UgKCdsb2FkaW5nJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLWxvYWRpbmdcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGNhc2UgKCdzdGF0dXMnKSB7IEBpZiAobWZhRW5hYmxlZCgpKSB7XG4gICAgICAgIDxwIGNsYXNzPVwibWZhLXN0YXR1cyBtZmEtc3RhdHVzLS1vblwiPnt7IHQoJ21mYUVuYWJsZWRMYWJlbCcpIH19IMK3IHt7IG1ldGhvZExhYmVsKG1mYU1ldGhvZCgpKSB9fTwvcD5cblxuICAgICAgICBAaWYgKG1mYU1ldGhvZCgpID09PSAnVE9UUCcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1ibG9ja1wiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJywgYm9sZDogdHJ1ZSwgY29udGVudDogdCgnbWZhQmFja3VwQ29kZXNUaXRsZScpIH1cIiAvPlxuICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFCYWNrdXBDb2Rlc0F2YWlsYWJsZScpICsgJzogJyArIGJhY2t1cENvZGVzQ291bnQoKSB9XCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgQGlmIChyZWdlbmVyYXRlZENvZGVzKCk7IGFzIGNvZGVzKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1hbGVydFwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJpbmZvcm1hdGlvbi1jaXJjbGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8cD57eyB0KCdtZmFCYWNrdXBDb2Rlc1NhdmVXYXJuaW5nJykgfX0ge3sgdCgnbWZhQmFja3VwQ29kZXNFeHBsYWluJykgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1jb2Rlc1wiPlxuICAgICAgICAgICAgQGZvciAoY29kZSBvZiBjb2RlczsgdHJhY2sgY29kZSkge1xuICAgICAgICAgICAgPGNvZGUgY2xhc3M9XCJtZmEtY29kZVwiPnt7IGNvZGUgfX08L2NvZGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJjb3B5Q29kZXMoY29kZXMpXCI+XG4gICAgICAgICAgICB7eyB0KCdtZmFDb3B5Q29kZXMnKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIHsgQGlmIChiYWNrdXBDb2Rlc0NvdW50KCkgPCAzKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1hbGVydFwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJpbmZvcm1hdGlvbi1jaXJjbGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8cD57eyB0KCdtZmFCYWNrdXBDb2Rlc0xvdycpIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ3b3JraW5nKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlZ2VuZXJhdGVCYWNrdXBDb2RlcygpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHdvcmtpbmcoKSkge1xuICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgICB9IEBlbHNlIHsge3sgdCgnbWZhUmVnZW5lcmF0ZUNvZGVzJykgfX0gfVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJnb1RvRGlzYWJsZSgpXCI+XG4gICAgICAgICAge3sgdCgnbWZhRGlzYWJsZUJ1dHRvbicpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxwIGNsYXNzPVwibWZhLXN0YXR1cyBtZmEtc3RhdHVzLS1vZmZcIj57eyB0KCdtZmFEaXNhYmxlZExhYmVsJykgfX08L3A+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHQoJ21mYURpc2FibGVkSGludCcpIH1cIiAvPlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJnb1RvTWV0aG9kU2VsZWN0KClcIj4ge3sgdCgnbWZhRW5hYmxlQnV0dG9uJykgfX0gPC9pb24tYnV0dG9uPlxuICAgICAgICB9IH0gQGNhc2UgKCdtZXRob2Qtc2VsZWN0Jykge1xuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ21mYUVuYWJsZVRpdGxlJyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFNZXRob2RQcm9tcHQnKSB9XCIgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLW1ldGhvZC1saXN0XCIgcm9sZT1cInJhZGlvZ3JvdXBcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWZhLW1ldGhvZC1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5tZmEtbWV0aG9kLWNhcmQtLWFjdGl2ZV09XCJzZWxlY3RlZE1ldGhvZCgpID09PSAnVE9UUCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkTWV0aG9kLnNldCgnVE9UUCcpXCJcbiAgICAgICAgICAgIHJvbGU9XCJyYWRpb1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwic2VsZWN0ZWRNZXRob2QoKSA9PT0gJ1RPVFAnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1mYS1tZXRob2QtY2FyZF9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZmEtbWV0aG9kLWNhcmRfX2JvZHlcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdtZmFNZXRob2RUb3RwJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnbWZhTWV0aG9kVG90cEhpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWZhLW1ldGhvZC1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5tZmEtbWV0aG9kLWNhcmQtLWFjdGl2ZV09XCJzZWxlY3RlZE1ldGhvZCgpID09PSAnRU1BSUwnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZE1ldGhvZC5zZXQoJ0VNQUlMJylcIlxuICAgICAgICAgICAgcm9sZT1cInJhZGlvXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJzZWxlY3RlZE1ldGhvZCgpID09PSAnRU1BSUwnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1mYS1tZXRob2QtY2FyZF9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZmEtbWV0aG9kLWNhcmRfX2JvZHlcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdtZmFNZXRob2RFbWFpbCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ21mYU1ldGhvZEVtYWlsSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtZmEtbWV0aG9kLWNhcmRcIlxuICAgICAgICAgICAgW2NsYXNzLm1mYS1tZXRob2QtY2FyZC0tYWN0aXZlXT1cInNlbGVjdGVkTWV0aG9kKCkgPT09ICdTTVMnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZE1ldGhvZC5zZXQoJ1NNUycpXCJcbiAgICAgICAgICAgIHJvbGU9XCJyYWRpb1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwic2VsZWN0ZWRNZXRob2QoKSA9PT0gJ1NNUydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWZhLW1ldGhvZC1jYXJkX19kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1mYS1tZXRob2QtY2FyZF9fYm9keVwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ21mYU1ldGhvZFNtcycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ21mYU1ldGhvZFNtc0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChzZWxlY3RlZE1ldGhvZCgpID09PSAnU01TJyAmJiAhdXNlclBob25lKCkpIHtcbiAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgIGxhYmVsPVwie3sgdCgnbWZhUGhvbmVMYWJlbCcpIH19XCJcbiAgICAgICAgICBsYWJlbFBsYWNlbWVudD1cImZsb2F0aW5nXCJcbiAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCIrNTY5MTIzNDU2NzhcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwaG9uZUNvbnRyb2xcIlxuICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgIEBpZiAocGhvbmVDb250cm9sLmludmFsaWQgJiYgcGhvbmVDb250cm9sLnRvdWNoZWQpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJtZmEtZXJyb3JcIj57eyB0KCdtZmFQaG9uZUludmFsaWQnKSB9fTwvcD5cbiAgICAgICAgfSB9IEBpZiAoc2VsZWN0ZWRNZXRob2QoKSA9PT0gJ1NNUycgJiYgdXNlclBob25lKCk7IGFzIHBob25lKSB7XG4gICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgIFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhUGhvbmVSZWdpc3RlcmVkJykgKyAnOiAnICsgcGhvbmUgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIFtkaXNhYmxlZF09XCJ3b3JraW5nKClcIiAoY2xpY2spPVwicHJvY2VlZFdpdGhNZXRob2QoKVwiPlxuICAgICAgICAgIEBpZiAod29ya2luZygpKSB7XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgfSBAZWxzZSB7IHt7IHQoJ21mYUNvbnRpbnVlJykgfX0gfVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImJhY2tUb1N0YXR1cygpXCI+XG4gICAgICAgICAge3sgdCgnbWZhQ2FuY2VsJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBjYXNlICgndG90cC1zZXR1cCcpIHtcbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZmFUb3RwU2V0dXBUaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFUb3RwU3RlcDEnKSB9XCIgLz5cblxuICAgICAgICBAaWYgKHRvdHBRcigpOyBhcyBxcikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLXFyXCI+XG4gICAgICAgICAgPHZhbC1xci1jb2RlIFtwcm9wc109XCJ7IHFyOiBxciB9XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGlmICh0b3RwU2V0dXAoKTsgYXMgc2V0dXApIHtcbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhVG90cE1hbnVhbEVudHJ5JykgfVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZmEtc2VjcmV0LXJvd1wiPlxuICAgICAgICAgIDxjb2RlIGNsYXNzPVwibWZhLXNlY3JldFwiPnt7IHNldHVwLnNlY3JldCB9fTwvY29kZT5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiY29weVNlY3JldChzZXR1cC5zZWNyZXQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjb3B5JylcIj5cbiAgICAgICAgICAgIEBpZiAoY29waWVkU2VjcmV0KCkpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFUb3RwU3RlcDInKSB9XCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1waW5cIj5cbiAgICAgICAgICA8dmFsLXBpbi1pbnB1dCBbcHJvcHNdPVwicGluSW5wdXRQcm9wc1wiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgW2Rpc2FibGVkXT1cIndvcmtpbmcoKVwiIChjbGljayk9XCJ2ZXJpZnlUb3RwKClcIj5cbiAgICAgICAgICBAaWYgKHdvcmtpbmcoKSkge1xuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2UgeyB7eyB0KCdtZmFUb3RwVmVyaWZ5JykgfX0gfVxuICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1iYWNrdXBcIj5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUsIGNvbnRlbnQ6IHQoJ21mYUJhY2t1cENvZGVzVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLWFsZXJ0XCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImluZm9ybWF0aW9uLWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxwPnt7IHQoJ21mYUJhY2t1cENvZGVzU2F2ZVdhcm5pbmcnKSB9fSB7eyB0KCdtZmFCYWNrdXBDb2Rlc0V4cGxhaW4nKSB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLWNvZGVzXCI+XG4gICAgICAgICAgICBAZm9yIChjb2RlIG9mIHNldHVwLmJhY2t1cENvZGVzOyB0cmFjayBjb2RlKSB7XG4gICAgICAgICAgICA8Y29kZSBjbGFzcz1cIm1mYS1jb2RlXCI+e3sgY29kZSB9fTwvY29kZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGNvbG9yPVwiZGFya1wiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImNvcHlDb2RlcyhzZXR1cC5iYWNrdXBDb2RlcylcIj5cbiAgICAgICAgICAgIHt7IHQoJ21mYUNvcHlDb2RlcycpIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImJhY2tUb1N0YXR1cygpXCI+XG4gICAgICAgICAge3sgdCgnbWZhQ2FuY2VsJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBjYXNlICgnY29kZS1jb25maXJtJykge1xuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ21mYUNvbmZpcm1UaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHNlbGVjdGVkTWV0aG9kKCkgPT09ICdFTUFJTCcgPyB0KCdtZmFDb25maXJtUHJvbXB0RW1haWwnKSA6IHQoJ21mYUNvbmZpcm1Qcm9tcHRTbXMnKSB9XCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLXBpblwiPlxuICAgICAgICAgIDx2YWwtcGluLWlucHV0IFtwcm9wc109XCJwaW5JbnB1dFByb3BzXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBbZGlzYWJsZWRdPVwid29ya2luZygpXCIgKGNsaWNrKT1cImNvbmZpcm1Db2RlKClcIj5cbiAgICAgICAgICBAaWYgKHdvcmtpbmcoKSkge1xuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2UgeyB7eyB0KCdtZmFDb25maXJtQnV0dG9uJykgfX0gfVxuICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgPHAgY2xhc3M9XCJtZmEtcmVzZW5kXCI+XG4gICAgICAgICAge3sgdCgnbWZhTm9Db2RlJykgfX0gQGlmIChyZXNlbmRDb29sZG93bigpID4gMCkge1xuICAgICAgICAgIDxzcGFuPnt7IHQoJ21mYVJlc2VuZEluJykgfX0ge3sgcmVzZW5kQ29vbGRvd24oKSB9fXM8L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGEgKGNsaWNrKT1cInJlc2VuZENvZGUoKVwiPnt7IHQoJ21mYVJlc2VuZCcpIH19PC9hPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImJhY2tUb1N0YXR1cygpXCI+XG4gICAgICAgICAge3sgdCgnbWZhQ2FuY2VsJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBjYXNlICgnZGlzYWJsZScpIHsgQGlmIChoYXNQYXNzd29yZCgpKSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwiZGlzYWJsZUZvcm1Qcm9wcygpXCIgKG9uU3VibWl0KT1cIm9uRGlzYWJsZVN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAobWZhTWV0aG9kKCkgPT09ICdUT1RQJykge1xuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ21mYURpc2FibGVUaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0KCdtZmFEaXNhYmxlVG90cFByb21wdCcpIH1cIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWZhLXBpblwiPlxuICAgICAgICAgIDx2YWwtcGluLWlucHV0IFtwcm9wc109XCJwaW5JbnB1dFByb3BzXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgW2Rpc2FibGVkXT1cIndvcmtpbmcoKVwiIChjbGljayk9XCJkaXNhYmxlV2l0aE1mYUNvZGUoKVwiPlxuICAgICAgICAgIEBpZiAod29ya2luZygpKSB7XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgfSBAZWxzZSB7IHt7IHQoJ21mYURpc2FibGVCdXR0b24nKSB9fSB9XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAZWxzZSBpZiAobWZhTWV0aG9kKCkgPT09ICdFTUFJTCcgfHwgbWZhTWV0aG9kKCkgPT09ICdTTVMnKSB7XG4gICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnbWZhRGlzYWJsZVRpdGxlJyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG4gICAgICAgIEBpZiAoIWRpc2FibGVDb2RlU2VudCgpKSB7XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHQoJ21mYURpc2FibGVDb2RlUHJvbXB0JykgfVwiIC8+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgW2Rpc2FibGVkXT1cIndvcmtpbmcoKVwiIChjbGljayk9XCJzZW5kRGlzYWJsZUNvZGUoKVwiPlxuICAgICAgICAgIEBpZiAod29ya2luZygpKSB7XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgfSBAZWxzZSB7IHt7IHQoJ21mYURpc2FibGVTZW5kQ29kZScpIH19IH1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdCgnbWZhRGlzYWJsZUNvZGVQcm9tcHQnKSB9XCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1mYS1waW5cIj5cbiAgICAgICAgICA8dmFsLXBpbi1pbnB1dCBbcHJvcHNdPVwicGluSW5wdXRQcm9wc1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIFtkaXNhYmxlZF09XCJ3b3JraW5nKClcIiAoY2xpY2spPVwiZGlzYWJsZVdpdGhNZmFDb2RlKClcIj5cbiAgICAgICAgICBAaWYgKHdvcmtpbmcoKSkge1xuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2UgeyB7eyB0KCdtZmFEaXNhYmxlQnV0dG9uJykgfX0gfVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJtZWRpdW1cIiBbZGlzYWJsZWRdPVwid29ya2luZygpXCIgKGNsaWNrKT1cInNlbmREaXNhYmxlQ29kZSgpXCI+XG4gICAgICAgICAge3sgdCgnbWZhRGlzYWJsZVJlc2VuZENvZGUnKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIH0gfSBAZWxzZSB7XG4gICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnbWZhRGlzYWJsZVRpdGxlJyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHQoJ21mYURpc2FibGVOZWVkc1Bhc3N3b3JkJykgfVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiYmFja1RvU3RhdHVzKClcIj5cbiAgICAgICAgICB7eyB0KCdtZmFDYW5jZWwnKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIH0gfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lvbi1tb2RhbD5cbiJdfQ==
@@ -58,4 +58,4 @@ export var ToolbarActionType;
58
58
  ToolbarActionType["IMAGE"] = "IMAGE";
59
59
  ToolbarActionType["BUTTON"] = "BUTTON";
60
60
  })(ToolbarActionType || (ToolbarActionType = {}));
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLEdBQW1CLFNBQVMsQ0FBQztBQUMxQyxNQUFNLFFBQVEsR0FBbUIsVUFBVSxDQUFDO0FBQzVDLE1BQU0sT0FBTyxHQUFtQixTQUFTLENBQUM7QUFDMUMsTUFBTSxLQUFLLEdBQW1CLE9BQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRXJFOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQixpRUFBZSxDQUFBO0lBQ2YsbUVBQWdCLENBQUE7SUFDaEIsaUVBQWUsQ0FBQTtJQUNmLCtEQUFjLENBQUE7SUFDZCx1RUFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckI7QUFjRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBMEJYO0FBMUJELFdBQVksU0FBUztJQUNuQix5Q0FBSSxDQUFBO0lBQ0osaURBQVEsQ0FBQTtJQUNSLDJDQUFLLENBQUE7SUFDTCxpREFBUSxDQUFBO0lBQ1IsK0NBQU8sQ0FBQTtJQUNQLDZDQUFNLENBQUE7SUFDTiw2REFBYyxDQUFBO0lBQ2QsaURBQVEsQ0FBQTtJQUNSLHlDQUFJLENBQUE7SUFDSixxREFBVSxDQUFBO0lBQ1YsMENBQUksQ0FBQTtJQUNKLDRDQUFLLENBQUE7SUFDTCw0Q0FBSyxDQUFBO0lBQ0wsOENBQU0sQ0FBQTtJQUNOLDREQUFhLENBQUE7SUFDYiwwREFBWSxDQUFBO0lBQ1osd0VBQW1CLENBQUE7SUFDbkIsMENBQUksQ0FBQTtJQUNKLDhDQUFNLENBQUE7SUFDTiw0Q0FBSyxDQUFBO0lBQ0wsNENBQUssQ0FBQTtJQUNMLGtEQUFRLENBQUE7SUFDUiw4REFBYyxDQUFBO0lBQ2QsOENBQU0sQ0FBQTtJQUNOLHNEQUFVLENBQUE7QUFDWixDQUFDLEVBMUJXLFNBQVMsS0FBVCxTQUFTLFFBMEJwQjtBQXlLRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0Isc0NBQWlCLENBQUE7SUFDakIsa0NBQWEsQ0FBQTtJQUNiLG9DQUFlLENBQUE7SUFDZixzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vYXRvbXMvaW1hZ2UvdHlwZXMnO1xuXG4vKipcbiAqIFBvc3NpYmxlIHN0YXRlcyBmb3IgYW4gaW50ZXJhY3RpdmUgY29tcG9uZW50LlxuICovXG5leHBvcnQgdHlwZSBDb21wb25lbnRTdGF0ZSA9ICdFTkFCTEVEJyB8ICdESVNBQkxFRCcgfCAnV09SS0lORycgfCAnRVJST1InO1xuY29uc3QgRU5BQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRU5BQkxFRCc7XG5jb25zdCBESVNBQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRElTQUJMRUQnO1xuY29uc3QgV09SS0lORzogQ29tcG9uZW50U3RhdGUgPSAnV09SS0lORyc7XG5jb25zdCBFUlJPUjogQ29tcG9uZW50U3RhdGUgPSAnRVJST1InO1xuXG4vKipcbiAqIE9iamVjdCBjb250YWluaW5nIGFsbCBwb3NzaWJsZSBjb21wb25lbnQgc3RhdGVzLlxuICovXG5leHBvcnQgY29uc3QgQ29tcG9uZW50U3RhdGVzID0geyBFTkFCTEVELCBESVNBQkxFRCwgV09SS0lORywgRVJST1IgfTtcblxuLyoqXG4gKiBUeXBlcyBvZiBhY3Rpb25zIHRoYXQgYSBidXR0b24gb3IgbGluayBjYW4gcGVyZm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uVHlwZSB7XG4gIEJST1dTRVJfTkVXX1RBQiwgLy8gT3BlbiBpbiBhIG5ldyBicm93c2VyIHRhYlxuICBCUk9XU0VSX0RPV05MT0FELCAvLyBEb3dubG9hZCB2aWEgYnJvd3NlclxuICBOQVRJVkVfRE9XTkxPQUQsIC8vIERvd25sb2FkIHVzaW5nIG5hdGl2ZSBjYXBhYmlsaXRpZXNcbiAgQVBQX05BVklHQVRJT04sIC8vIEludGVybmFsIGFwcCBuYXZpZ2F0aW9uXG4gIEJST1dTRVJfTkFWSUdBVElPTiwgLy8gTmF2aWdhdGlvbiBpbiB0aGUgYnJvd3NlclxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXhlY3V0YWJsZSBhY3Rpb24gZm9yIGEgYnV0dG9uIG9yIGxpbmsuXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcbiAgLyoqIEFjdGlvbiBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQWN0aW9uIHR5cGUgKi9cbiAgdHlwZTogQWN0aW9uVHlwZTtcbiAgLyoqIEFjdGlvbiBzb3VyY2Ugb3IgZGVzdGluYXRpb24gKi9cbiAgc291cmNlOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFN1cHBvcnRlZCBpbnB1dCB0eXBlcyBmb3IgZm9ybXMuXG4gKi9cbmV4cG9ydCBlbnVtIElucHV0VHlwZSB7XG4gIFRFWFQsXG4gIFRFWFRBUkVBLFxuICBFTUFJTCxcbiAgUEFTU1dPUkQsXG4gIENPTU1FTlQsXG4gIE5VTUJFUixcbiAgTlVNQkVSX0ZST01fVE8sXG4gIFBJTl9DT0RFLFxuICBEQVRFLFxuICBEQVRFX1JBTkdFLFxuICBIT1VSLFxuICBDSEVDSyxcbiAgUkFESU8sXG4gIFNFTEVDVCxcbiAgU0VBUkNIX1NFTEVDVCxcbiAgTVVMVElfU0VMRUNULFxuICBNVUxUSV9TRUxFQ1RfU0lNUExFLFxuICBGSUxFLFxuICBUT0dHTEUsXG4gIFJBTkdFLFxuICBQSE9ORSxcbiAgQ1VSUkVOQ1ksXG4gIENIRUNLQk9YX1JBRElPLFxuICBIQU5ETEUsXG4gIEFUVEFDSE1FTlQsXG59XG5cbi8qKlxuICogT3B0aW9uIGZvciBzZWxlY3QsIHJhZGlvLCBldGMuIGlucHV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5wdXRPcHRpb24gPSB7XG4gIC8qKiBVbmlxdWUgb3B0aW9uIGlkZW50aWZpZXIgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdCAqL1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG4gIC8qKiBEaXNwbGF5IG9yZGVyICovXG4gIG9yZGVyOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIGZvcm0gZmllbGQuXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0TWV0YWRhdGEgPSB7XG4gIC8qKiBBc3NvY2lhdGVkIGZvcm0gY29udHJvbCAob3B0aW9uYWwsIGNyZWF0ZWQgaW50ZXJuYWxseSBieSB2YWwtZm9ybSkgKi9cbiAgY29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogRnJvbSBjb250cm9sIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tQ29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogVG8gY29udHJvbCAob25seSBmb3IgTlVNQkVSX0ZST01fVE8gdHlwZSkgKi9cbiAgdG9Db250cm9sPzogRm9ybUNvbnRyb2w7XG4gIC8qKiBVbmlxdWUgdG9rZW4gZm9yIHRoZSBpbnB1dCAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogRGlzcGxheSBsYWJlbCAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgKHNob3duIGJlbG93IGlucHV0LCBmb3IgdmFsaWRhdGlvbiBoaW50cykgKi9cbiAgaGludDogc3RyaW5nO1xuICAvKiogRGVzY3JpcHRpb24gdGV4dCAoc2hvd24gYmVsb3cgbGFiZWwsIGV4cGxhaW5zIHRoZSBmaWVsZCBwdXJwb3NlKSAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIC8qKiBJbnB1dCB0eXBlICovXG4gIHR5cGU6IElucHV0VHlwZTtcbiAgLyoqIERpc3BsYXkgb3JkZXIgKi9cbiAgb3JkZXI6IG51bWJlcjtcbiAgLyoqIEFzc29jaWF0ZWQgdmFsaWRhdG9ycyAqL1xuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuICAvKiogT3B0aW9ucyAoZm9yIHNlbGVjdCwgcmFkaW8sIGV0Yy4pICovXG4gIG9wdGlvbnM/OiBJbnB1dE9wdGlvbltdO1xuICAvKiogQWxsb3dlZCByYW5nZSAoZm9yIG51bWJlciwgZGF0ZSwgZXRjLikgKi9cbiAgcmFuZ2U/OiB7XG4gICAgbWluOiBudW1iZXI7XG4gICAgbWF4OiBudW1iZXI7XG4gIH07XG4gIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZXMgKi9cbiAgZXJyb3JzOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuICAvKiogSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZpZWxkICovXG4gIHZhbHVlPzogc3RyaW5nO1xuICAvKiogRGVmYXVsdCB2YWx1ZSBjb25maWd1cmF0aW9uIC0gc3RyaW5nIGZvciBjdXN0b20gZGVmYXVsdHMsIHRydWUgZm9yIGF1dG8gZGVmYXVsdHMgKi9cbiAgd2l0aERlZmF1bHQ/OiBzdHJpbmcgfCBib29sZWFuO1xuICAvKiogRmllbGQgc3RhdGUgKi9cbiAgc3RhdGU6IENvbXBvbmVudFN0YXRlO1xuICAvKiogTGFiZWwgZm9yIFwiZnJvbVwiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tTGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBmb3IgXCJ0b1wiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICB0b0xhYmVsPzogc3RyaW5nO1xuICAvKiogUGxhY2Vob2xkZXIgZm9yIFwiZnJvbVwiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgXCJ0b1wiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICB0b1BsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8vIGkxOG4gc3VwcG9ydCBwcm9wZXJ0aWVzXG4gIC8qKiBLZXkgZm9yIGNvbnRlbnQgbG9va3VwICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogRmFsbGJhY2sgdGV4dCBpZiBjb250ZW50IGtleSBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuXG4gIC8vIHNlbGVjdC1pbnB1dCBzcGVjaWZpYyBpMThuIHByb3BlcnRpZXNcbiAgLyoqIEN1c3RvbSBoZWFkZXIgdGV4dCBmb3Igc2VsZWN0IG1vZGFsICovXG4gIG1vZGFsSGVhZGVyPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIGNhbmNlbCBidXR0b24gdGV4dCBmb3Igc2VsZWN0IG1vZGFsICovXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG4gIC8qKiBDdXN0b20gT0sgYnV0dG9uIHRleHQgZm9yIHNlbGVjdCBtb2RhbCAqL1xuICBva1RleHQ/OiBzdHJpbmc7XG4gIC8qKiBJbnRlcmZhY2UgZGVsIGlvbi1zZWxlY3QgKGRlZmF1bHQ6ICdwb3BvdmVyJykuICdtb2RhbCcgcGFyYSBsaXN0YXMgbGFyZ2FzLiAqL1xuICBzZWxlY3RJbnRlcmZhY2U/OiAncG9wb3ZlcicgfCAnbW9kYWwnIHwgJ2FjdGlvbi1zaGVldCcgfCAnYWxlcnQnO1xuXG4gIC8vIGNoZWNrLWlucHV0IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgLyoqIFBvc2l0aW9uIG9mIGxhYmVsIGZvciBjaGVja2JveCAoJ3N0YXJ0JyB8ICdlbmQnKSAqL1xuICBsYWJlbFBsYWNlbWVudD86ICdzdGFydCcgfCAnZW5kJztcblxuICAvLyBQSU5fQ09ERSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIC8qKiBOdW1iZXIgb2YgZGlnaXRzIGluIFBJTiAoZGVmYXVsdDogNSwgb25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgbGVuZ3RoPzogbnVtYmVyO1xuICAvKiogU2l6ZSBvZiB0aGUgaW5wdXQgYm94ZXM6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgKGRlZmF1bHQ6ICdtZWRpdW0nLCBvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcbiAgLyoqIEFsbG93IG9ubHkgbnVtYmVycyAoZGVmYXVsdDogdHJ1ZSwgb25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgYWxsb3dOdW1iZXJzT25seT86IGJvb2xlYW47XG4gIC8qKiBNYXNrIGlucHV0IC0gc2hvdyBkb3RzIGluc3RlYWQgb2YgY2hhcmFjdGVycyAob25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgbWFzaz86IGJvb2xlYW47XG4gIC8qKiBBdXRvIGZvY3VzIGZpcnN0IGlucHV0IChvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIGlucHV0IHN0eWxlcyAob25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgaW5wdXRTdHlsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBVcGxvYWQgZnVuY3Rpb24gKG9ubHkgZm9yIEFUVEFDSE1FTlQgdHlwZSkuIFJlY2VpdmVzIGEgRmlsZSwgbXVzdCByZXNvbHZlIHRvIHRoZSB1cGxvYWRlZCBVUkwuICovXG4gIHVwbG9hZEZuPzogKGZpbGU6IEZpbGUpID0+IFByb21pc2U8c3RyaW5nPjtcbn07XG5cbi8qKlxuICogQSBzZWN0aW9uIGluIGEgZm9ybSwgZ3JvdXBpbmcgbXVsdGlwbGUgZmllbGRzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VjdGlvbiA9IHtcbiAgLyoqIFNlY3Rpb24gbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG9yZGVyICovXG4gIG9yZGVyOiBudW1iZXI7XG4gIC8qKiBGaWVsZHMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gKi9cbiAgZmllbGRzOiBJbnB1dE1ldGFkYXRhW107XG59O1xuXG4vKipcbiAqIERhdGEgc2VudCB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLlxuICovXG5leHBvcnQgdHlwZSBGb3JtU3VibWl0ID0ge1xuICAvKiogRm9ybSBmaWVsZCB2YWx1ZXMgYXMga2V5LXZhbHVlIHBhaXJzICovXG4gIGZpZWxkczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIE9wdGlvbmFsIHRva2VuIGZvciB0aGUgb3BlcmF0aW9uICovXG4gIHRva2VuPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgYSBjb21wbGV0ZSBmb3JtLlxuICovXG5leHBvcnQgdHlwZSBGb3JtTWV0YWRhdGEgPSB7XG4gIC8qKiBGb3JtIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogRm9ybSBzZWN0aW9ucyAqL1xuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYWNpw7NuIGRlbCBib3TDs24gZGUgc3VibWl0LiBPcGNpb25hbDogZW4gbW9kbyBgY29udHJvbGxlZGAgZWwgZm9ybVxuICAgKiBubyByZW5kZXJpemEgc3VibWl0IHByb3BpbyAobG8gbWFuZWphIGVsIGhvc3QpIHkgYGFjdGlvbnNgIHNlIGlnbm9yYS5cbiAgICovXG4gIGFjdGlvbnM/OiBCdXR0b25NZXRhZGF0YTtcbiAgLyoqIEdsb2JhbCBmb3JtIHN0YXRlICovXG4gIHN0YXRlOiBDb21wb25lbnRTdGF0ZTtcbiAgLyoqXG4gICAqIEVzcGFjaW8gdmVydGljYWwgZW50cmUgY2FtcG9zLCBlbiBweC4gU2kgc2Ugb21pdGUsIHVzYSBlbCBkZWZhdWx0XG4gICAqIHJlc3BvbnNpdm8gZGUgbGEgbGliICg4cHggbW9iaWxlIC8gMTJweCBkZXNrdG9wKS4gw5p0aWwgcGFyYSBmb3JtdWxhcmlvc1xuICAgKiBkZW5zb3MgbyBtw6FzIGFpcmVhZG9zIHNpbiB0b2NhciBDU1MgZGVsIGNvbnN1bWVyLlxuICAgKi9cbiAgZmllbGRTcGFjaW5nPzogbnVtYmVyO1xuICAvKipcbiAgICogTW9kbyBlbWJlYmlkbzogZWwgZm9ybSBOTyByZW5kZXJpemEgc3UgYnV0dG9uLWdyb3VwL2Zvb3RlciBkZSBzdWJtaXQuXG4gICAqIFNvbG8gY2FtcG9zICsgdmFsaWRhY2nDs24uIFBhcmEgd2l6YXJkcy9ob3N0cyBxdWUgY29udHJvbGFuIGxhIG5hdmVnYWNpw7NuXG4gICAqIHkgbGVlbiBlbCBlc3RhZG8gZGVsIGZvcm0gdsOtYSBgQFZpZXdDaGlsZChGb3JtQ29tcG9uZW50KWAgKHNpZ25hbHMgcMO6YmxpY29zXG4gICAqIGB2YWx1ZWAvYHZhbGlkYCArIG3DqXRvZG8gYHZhbGlkYXRlKClgL2BtYXJrQWxsVG91Y2hlZCgpYCkuXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAsIGlnbm9yYSBgc3RpY2t5Rm9vdGVyYC5cbiAgICovXG4gIGNvbnRyb2xsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogRmlqYSBlbCBidXR0b24tZ3JvdXAgZGUgc3VibWl0IGFsIGZvbmRvIChgcG9zaXRpb246IHN0aWNreTsgYm90dG9tOiAwYClcbiAgICogcGFyYSBtb2RhbGVzIGxhcmdvcyBjb24gc2Nyb2xsLiBTb2xvIGFwbGljYSBzaSBOTyBlcyBgY29udHJvbGxlZGAuXG4gICAqIFBvciBkZWZlY3RvIChzaW4gZmxhZ3MpIGVsIHN1Ym1pdCBlcyBpbmxpbmUgYWwgZmluYWwgZGVsIGZvcm0uXG4gICAqL1xuICBzdGlja3lGb290ZXI/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBQb3NzaWJsZSBhY3Rpb24gdHlwZXMgZm9yIGEgdG9vbGJhci5cbiAqL1xuZXhwb3J0IGVudW0gVG9vbGJhckFjdGlvblR5cGUge1xuICBBVkFUQVIgPSAnQVZBVEFSJyxcbiAgSUNPTiA9ICdJQ09OJyxcbiAgSU1BR0UgPSAnSU1BR0UnLFxuICBCVVRUT04gPSAnQlVUVE9OJyxcbn1cblxuLyoqXG4gKiBUb29sYmFyIGFjdGlvbiBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgdHlwZSBUb29sYmFyQWN0aW9uID0ge1xuICAvKiogQWN0aW9uIHR5cGUgKi9cbiAgdHlwZTogJ0FWQVRBUicgfCAnSUNPTicgfCAnSU1BR0UnIHwgJ0JVVFRPTic7XG4gIC8qKiBPcHRpb25hbCB0b2tlbiBpZGVudGlmaWVyICovXG4gIHRva2VuPzogc3RyaW5nO1xuICAvKiogVG9vbGJhciBwb3NpdGlvbiAqL1xuICBwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuICAvKiogT3B0aW9uYWwgZGVzY3JpcHRpb24gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBBc3NvY2lhdGVkIGltYWdlIChpZiBhbnkpICovXG4gIGltYWdlPzogSW1hZ2VNZXRhZGF0YTtcbiAgLyoqXG4gICAqIFVzZXIgc2hhcGUgcGFyYSBlbCBtb2RvIGBBVkFUQVJgIOKAlCBoYWJpbGl0YSBmYWxsYmFjayBpbnRlbGlnZW50ZTpcbiAgICogZm90byDihpIgaW5pY2lhbGVzIChkZSBgbmFtZWAvYGVtYWlsYCkg4oaSIGljb25vIHBlcnNvbmEuIFNpIHNlIG9taXRlLCBlbFxuICAgKiB0b29sYmFyIHNvbG8gbXVlc3RyYSBsYSBpbWFnZW4gcGFzYWRhIGVuIGBkZXNjcmlwdGlvbmAuXG4gICAqL1xuICB1c2VyPzogeyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZzsgYXZhdGFyVXJsPzogc3RyaW5nOyBoYW5kbGU/OiBzdHJpbmcgfSB8IG51bGw7XG4gIC8qKiBDb250cm9scyBhdmF0YXIgc2l6ZSB3aGVuIHR5cGUgaXMgQVZBVEFSLiBEZWZhdWx0cyB0byAnc21hbGwnLiAqL1xuICBhdmF0YXJTaXplPzogJ3hzbWFsbCcgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ3hsYXJnZSc7XG59O1xuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhbiBpY29uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljb25NZXRhZGEge1xuICAvKiogSWNvbiBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEljb24gc2xvdCBwb3NpdGlvbiAqL1xuICBzbG90OiAnc3RhcnQnIHwgJ2VuZCc7XG59XG5cbi8qKlxuICogQnV0dG9uIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICogU3VwcG9ydHMgYm90aCBzdGF0aWMgYW5kIHJlYWN0aXZlIGNvbnRlbnQuXG4gKiBAdHlwZSB7QnV0dG9uTWV0YWRhdGF9XG4gKiBAcHJvcGVydHkgdGV4dCAtIFN0YXRpYyBidXR0b24gbGFiZWwgKHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0ZXh0Q29uZmlnKS5cbiAqIEBwcm9wZXJ0eSB0ZXh0Q29uZmlnIC0gUmVhY3RpdmUgY29udGVudCBjb25maWd1cmF0aW9uIGZvciBidXR0b24gdGV4dC5cbiAqIEBwcm9wZXJ0eSBjb2xvciAtIFRoZSBidXR0b24gY29sb3IgKElvbmljIGNvbG9yIHN0cmluZykuXG4gKiBAcHJvcGVydHkgaWNvbiAtIEljb24gdG8gZGlzcGxheSAob3B0aW9uYWwpLlxuICogQHByb3BlcnR5IHN0YXRlIC0gQnV0dG9uIHN0YXRlIChlbmFibGVkLCBkaXNhYmxlZCwgd29ya2luZywgZXRjLikuXG4gKiBAcHJvcGVydHkgZXhwYW5kLCBmaWxsLCBzaXplLCBzaGFwZSwgaHJlZiwgdGFyZ2V0LCBkb3dubG9hZCwgaGFuZGxlciwgZXRjLiAtIFNlZSBCdXR0b25NZXRhZGF0YSBmb3IgYWxsIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uTWV0YWRhdGEge1xuICAvKiogQXNzb2NpYXRlZCBhY3Rpb24gdHlwZSAqL1xuICBhY3Rpb25UeXBlPzogQWN0aW9uVHlwZTtcbiAgLyoqIEJ1dHRvbiBleHBhbnNpb24gKi9cbiAgZXhwYW5kPzogJ2Z1bGwnIHwgJ2Jsb2NrJztcbiAgLyoqIEFzc29jaWF0ZWQgbGluayAqL1xuICBsaW5rPzogc3RyaW5nO1xuICAvKiogQXNzb2NpYXRlZCBocmVmIGxpbmsgKi9cbiAgaHJlZj86IHN0cmluZztcbiAgLyoqIEFuZ3VsYXIgcm91dGVyIGxpbmsgKFNQQSBuYXZpZ2F0aW9uLCBubyByZWxvYWQpICovXG4gIHJvdXRlckxpbms/OiBzdHJpbmcgfCBhbnlbXTtcbiAgLyoqIExpbmsgdGFyZ2V0ICovXG4gIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJztcbiAgLyoqIERvd25sb2FkIGZpbGUgbmFtZSAqL1xuICBkb3dubG9hZD86IHN0cmluZztcbiAgLyoqIEJ1dHRvbiBjb2xvciAqL1xuICBjb2xvcjogQ29sb3I7XG4gIC8qKiBCdXR0b24gc3RhdGUgKi9cbiAgc3RhdGU6IENvbXBvbmVudFN0YXRlO1xuICAvKiogU3RhdGljIGRpc3BsYXkgdGV4dCAodGFrZXMgcHJlY2VkZW5jZSBvdmVyIHJlYWN0aXZlIGNvbnRlbnQpICovXG4gIHRleHQ/OiBzdHJpbmc7XG4gIC8qKiBSZWFjdGl2ZSBjb250ZW50IGNvbmZpZ3VyYXRpb24gZm9yIGJ1dHRvbiB0ZXh0ICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKHJlcXVpcmVkIHdpdGggY29udGVudEtleSkgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogRmFsbGJhY2sgdGV4dCBpZiBjb250ZW50S2V5IGlzIG5vdCBmb3VuZCAqL1xuICBjb250ZW50RmFsbGJhY2s/OiBzdHJpbmc7XG4gIC8qKiBWYWx1ZXMgdG8gaW50ZXJwb2xhdGUgaW50byB0aGUgY29udGVudCBzdHJpbmcgKi9cbiAgY29udGVudEludGVycG9sYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+O1xuICAvKiogQXNzb2NpYXRlZCBpY29uICovXG4gIGljb24/OiBJY29uTWV0YWRhO1xuICAvKiogQnV0dG9uIHNoYXBlICovXG4gIHNoYXBlPzogJ3JvdW5kJztcbiAgLyoqIEJ1dHRvbiBzaXplICovXG4gIHNpemU/OiAnc21hbGwnIHwgJ2RlZmF1bHQnIHwgJ2xhcmdlJztcbiAgLyoqIEJ1dHRvbiBmaWxsICovXG4gIGZpbGw/OiAnY2xlYXInIHwgJ291dGxpbmUnIHwgJ3NvbGlkJyB8ICdkZWZhdWx0JztcbiAgLyoqIEJ1dHRvbiB0eXBlICovXG4gIHR5cGU6ICdidXR0b24nIHwgJ3N1Ym1pdCcgfCAncmVzZXQnO1xuICAvKiogT3B0aW9uYWwgdG9rZW4gaWRlbnRpZmllciAqL1xuICB0b2tlbj86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHJlZmVyZW5jZSAqL1xuICByZWY/OiBhbnk7XG4gIC8qKiBBY3Rpb24gaGFuZGxlciAqL1xuICBoYW5kbGVyPzogKHZhbHVlOiBhbnkpID0+IGFueSB8IFByb21pc2U8YW55Pjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciByZWFjdGl2ZSBjb250ZW50IGluIHZhbC1idXR0b24gY29tcG9uZW50LlxuICogVXNlIHRoaXMgaW50ZXJmYWNlIHdoZW4geW91IG9ubHkgbmVlZCB0byBzcGVjaWZ5IGNvbnRlbnQtcmVsYXRlZCBwcm9wZXJ0aWVzLlxuICogVGhpcyBmb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgVGV4dENvbnRlbnRDb25maWcgZm9yIGNvbnNpc3RlbmN5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbkNvbnRlbnRDb25maWcge1xuICBjb250ZW50S2V5OiBzdHJpbmc7XG4gIGNvbnRlbnRDbGFzczogc3RyaW5nO1xuICBjb250ZW50RmFsbGJhY2s/OiBzdHJpbmc7XG4gIGNvbnRlbnRJbnRlcnBvbGF0aW9uPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPjtcbn1cbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLEdBQW1CLFNBQVMsQ0FBQztBQUMxQyxNQUFNLFFBQVEsR0FBbUIsVUFBVSxDQUFDO0FBQzVDLE1BQU0sT0FBTyxHQUFtQixTQUFTLENBQUM7QUFDMUMsTUFBTSxLQUFLLEdBQW1CLE9BQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRXJFOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQixpRUFBZSxDQUFBO0lBQ2YsbUVBQWdCLENBQUE7SUFDaEIsaUVBQWUsQ0FBQTtJQUNmLCtEQUFjLENBQUE7SUFDZCx1RUFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckI7QUFjRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBMEJYO0FBMUJELFdBQVksU0FBUztJQUNuQix5Q0FBSSxDQUFBO0lBQ0osaURBQVEsQ0FBQTtJQUNSLDJDQUFLLENBQUE7SUFDTCxpREFBUSxDQUFBO0lBQ1IsK0NBQU8sQ0FBQTtJQUNQLDZDQUFNLENBQUE7SUFDTiw2REFBYyxDQUFBO0lBQ2QsaURBQVEsQ0FBQTtJQUNSLHlDQUFJLENBQUE7SUFDSixxREFBVSxDQUFBO0lBQ1YsMENBQUksQ0FBQTtJQUNKLDRDQUFLLENBQUE7SUFDTCw0Q0FBSyxDQUFBO0lBQ0wsOENBQU0sQ0FBQTtJQUNOLDREQUFhLENBQUE7SUFDYiwwREFBWSxDQUFBO0lBQ1osd0VBQW1CLENBQUE7SUFDbkIsMENBQUksQ0FBQTtJQUNKLDhDQUFNLENBQUE7SUFDTiw0Q0FBSyxDQUFBO0lBQ0wsNENBQUssQ0FBQTtJQUNMLGtEQUFRLENBQUE7SUFDUiw4REFBYyxDQUFBO0lBQ2QsOENBQU0sQ0FBQTtJQUNOLHNEQUFVLENBQUE7QUFDWixDQUFDLEVBMUJXLFNBQVMsS0FBVCxTQUFTLFFBMEJwQjtBQStMRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0Isc0NBQWlCLENBQUE7SUFDakIsa0NBQWEsQ0FBQTtJQUNiLG9DQUFlLENBQUE7SUFDZixzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vYXRvbXMvaW1hZ2UvdHlwZXMnO1xuXG4vKipcbiAqIFBvc3NpYmxlIHN0YXRlcyBmb3IgYW4gaW50ZXJhY3RpdmUgY29tcG9uZW50LlxuICovXG5leHBvcnQgdHlwZSBDb21wb25lbnRTdGF0ZSA9ICdFTkFCTEVEJyB8ICdESVNBQkxFRCcgfCAnV09SS0lORycgfCAnRVJST1InO1xuY29uc3QgRU5BQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRU5BQkxFRCc7XG5jb25zdCBESVNBQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRElTQUJMRUQnO1xuY29uc3QgV09SS0lORzogQ29tcG9uZW50U3RhdGUgPSAnV09SS0lORyc7XG5jb25zdCBFUlJPUjogQ29tcG9uZW50U3RhdGUgPSAnRVJST1InO1xuXG4vKipcbiAqIE9iamVjdCBjb250YWluaW5nIGFsbCBwb3NzaWJsZSBjb21wb25lbnQgc3RhdGVzLlxuICovXG5leHBvcnQgY29uc3QgQ29tcG9uZW50U3RhdGVzID0geyBFTkFCTEVELCBESVNBQkxFRCwgV09SS0lORywgRVJST1IgfTtcblxuLyoqXG4gKiBUeXBlcyBvZiBhY3Rpb25zIHRoYXQgYSBidXR0b24gb3IgbGluayBjYW4gcGVyZm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uVHlwZSB7XG4gIEJST1dTRVJfTkVXX1RBQiwgLy8gT3BlbiBpbiBhIG5ldyBicm93c2VyIHRhYlxuICBCUk9XU0VSX0RPV05MT0FELCAvLyBEb3dubG9hZCB2aWEgYnJvd3NlclxuICBOQVRJVkVfRE9XTkxPQUQsIC8vIERvd25sb2FkIHVzaW5nIG5hdGl2ZSBjYXBhYmlsaXRpZXNcbiAgQVBQX05BVklHQVRJT04sIC8vIEludGVybmFsIGFwcCBuYXZpZ2F0aW9uXG4gIEJST1dTRVJfTkFWSUdBVElPTiwgLy8gTmF2aWdhdGlvbiBpbiB0aGUgYnJvd3NlclxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXhlY3V0YWJsZSBhY3Rpb24gZm9yIGEgYnV0dG9uIG9yIGxpbmsuXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcbiAgLyoqIEFjdGlvbiBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQWN0aW9uIHR5cGUgKi9cbiAgdHlwZTogQWN0aW9uVHlwZTtcbiAgLyoqIEFjdGlvbiBzb3VyY2Ugb3IgZGVzdGluYXRpb24gKi9cbiAgc291cmNlOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFN1cHBvcnRlZCBpbnB1dCB0eXBlcyBmb3IgZm9ybXMuXG4gKi9cbmV4cG9ydCBlbnVtIElucHV0VHlwZSB7XG4gIFRFWFQsXG4gIFRFWFRBUkVBLFxuICBFTUFJTCxcbiAgUEFTU1dPUkQsXG4gIENPTU1FTlQsXG4gIE5VTUJFUixcbiAgTlVNQkVSX0ZST01fVE8sXG4gIFBJTl9DT0RFLFxuICBEQVRFLFxuICBEQVRFX1JBTkdFLFxuICBIT1VSLFxuICBDSEVDSyxcbiAgUkFESU8sXG4gIFNFTEVDVCxcbiAgU0VBUkNIX1NFTEVDVCxcbiAgTVVMVElfU0VMRUNULFxuICBNVUxUSV9TRUxFQ1RfU0lNUExFLFxuICBGSUxFLFxuICBUT0dHTEUsXG4gIFJBTkdFLFxuICBQSE9ORSxcbiAgQ1VSUkVOQ1ksXG4gIENIRUNLQk9YX1JBRElPLFxuICBIQU5ETEUsXG4gIEFUVEFDSE1FTlQsXG59XG5cbi8qKlxuICogT3B0aW9uIGZvciBzZWxlY3QsIHJhZGlvLCBldGMuIGlucHV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5wdXRPcHRpb24gPSB7XG4gIC8qKiBVbmlxdWUgb3B0aW9uIGlkZW50aWZpZXIgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdCAqL1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG4gIC8qKiBEaXNwbGF5IG9yZGVyICovXG4gIG9yZGVyOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIGZvcm0gZmllbGQuXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0TWV0YWRhdGEgPSB7XG4gIC8qKiBBc3NvY2lhdGVkIGZvcm0gY29udHJvbCAob3B0aW9uYWwsIGNyZWF0ZWQgaW50ZXJuYWxseSBieSB2YWwtZm9ybSkgKi9cbiAgY29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogRnJvbSBjb250cm9sIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tQ29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogVG8gY29udHJvbCAob25seSBmb3IgTlVNQkVSX0ZST01fVE8gdHlwZSkgKi9cbiAgdG9Db250cm9sPzogRm9ybUNvbnRyb2w7XG4gIC8qKiBVbmlxdWUgdG9rZW4gZm9yIHRoZSBpbnB1dCAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogRGlzcGxheSBsYWJlbCAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgKHNob3duIGJlbG93IGlucHV0LCBmb3IgdmFsaWRhdGlvbiBoaW50cykgKi9cbiAgaGludDogc3RyaW5nO1xuICAvKiogRGVzY3JpcHRpb24gdGV4dCAoc2hvd24gYmVsb3cgbGFiZWwsIGV4cGxhaW5zIHRoZSBmaWVsZCBwdXJwb3NlKSAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIC8qKiBJbnB1dCB0eXBlIChkcml2ZXMgdmFsLWZvcm0gcm91dGluZyDigJQgd2hpY2ggaW5wdXQgY29tcG9uZW50IHJlbmRlcnMpICovXG4gIHR5cGU6IElucHV0VHlwZTtcbiAgLyoqXG4gICAqIE5hdGl2ZSBIVE1MIGlucHV0IHR5cGUgZm9yIGB2YWwtdGV4dC1pbnB1dGAgKHRoZSBgW3R5cGVdYCBhdHRyaWJ1dGUgb2YgdGhlXG4gICAqIHVuZGVybHlpbmcgYDxpb24taW5wdXQ+YCAvIGNvbnRyb2wpLiBEZWNvdXBsZWQgZnJvbSBgSW5wdXRUeXBlYCAod2hpY2ggaXMgdGhlXG4gICAqIGZvcm0tcm91dGluZyBlbnVtKS4gV2hlbiBgdHlwZSA9PT0gSW5wdXRUeXBlLlRFWFRgLCBgdmFsLWZvcm1gIGZvcndhcmRzIGFcbiAgICogc2Vuc2libGUgYGlucHV0VHlwZWAgKCd0ZXh0JyBieSBkZWZhdWx0LCAnZW1haWwnLydudW1iZXInLyd0aW1lJy8uLi4gZm9yIHRoZVxuICAgKiBjb2xsYXBzZWQgZW1haWwvbnVtYmVyL2hvdXIgY2FzZXMpLiBgJ3RpbWUnYCBtYWtlcyBgdmFsLXRleHQtaW5wdXRgIHJlbmRlciBhblxuICAgKiBgPGlvbi1kYXRldGltZSBwcmVzZW50YXRpb249XCJ0aW1lXCI+YCBpbnN0ZWFkIG9mIGFuIGA8aW9uLWlucHV0PmAuXG4gICAqL1xuICBpbnB1dFR5cGU/OiAndGV4dCcgfCAnZW1haWwnIHwgJ251bWJlcicgfCAndGVsJyB8ICdwYXNzd29yZCcgfCAndGltZScgfCAndXJsJyB8ICdzZWFyY2gnIHwgJ2RhdGUnO1xuICAvKiogRGlzcGxheSBvcmRlciAqL1xuICBvcmRlcjogbnVtYmVyO1xuICAvKiogQXNzb2NpYXRlZCB2YWxpZGF0b3JzICovXG4gIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW107XG4gIC8qKiBPcHRpb25zIChmb3Igc2VsZWN0LCByYWRpbywgZXRjLikgKi9cbiAgb3B0aW9ucz86IElucHV0T3B0aW9uW107XG4gIC8qKiBBbGxvd2VkIHJhbmdlIChmb3IgbnVtYmVyLCBkYXRlLCBldGMuKSAqL1xuICByYW5nZT86IHtcbiAgICBtaW46IG51bWJlcjtcbiAgICBtYXg6IG51bWJlcjtcbiAgfTtcbiAgLyoqIEN1c3RvbSBlcnJvciBtZXNzYWdlcyAqL1xuICBlcnJvcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG4gIC8qKiBJbml0aWFsIHZhbHVlIGZvciB0aGUgZmllbGQgKi9cbiAgdmFsdWU/OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IHZhbHVlIGNvbmZpZ3VyYXRpb24gLSBzdHJpbmcgZm9yIGN1c3RvbSBkZWZhdWx0cywgdHJ1ZSBmb3IgYXV0byBkZWZhdWx0cyAqL1xuICB3aXRoRGVmYXVsdD86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBGaWVsZCBzdGF0ZSAqL1xuICBzdGF0ZTogQ29tcG9uZW50U3RhdGU7XG4gIC8qKiBMYWJlbCBmb3IgXCJmcm9tXCIgZmllbGQgKG9ubHkgZm9yIE5VTUJFUl9GUk9NX1RPIHR5cGUpICovXG4gIGZyb21MYWJlbD86IHN0cmluZztcbiAgLyoqIExhYmVsIGZvciBcInRvXCIgZmllbGQgKG9ubHkgZm9yIE5VTUJFUl9GUk9NX1RPIHR5cGUpICovXG4gIHRvTGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgXCJmcm9tXCIgZmllbGQgKG9ubHkgZm9yIE5VTUJFUl9GUk9NX1RPIHR5cGUpICovXG4gIGZyb21QbGFjZWhvbGRlcj86IHN0cmluZztcbiAgLyoqIFBsYWNlaG9sZGVyIGZvciBcInRvXCIgZmllbGQgKG9ubHkgZm9yIE5VTUJFUl9GUk9NX1RPIHR5cGUpICovXG4gIHRvUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgLy8gaTE4biBzdXBwb3J0IHByb3BlcnRpZXNcbiAgLyoqIEtleSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbXBvbmVudCBjbGFzcyBuYW1lIGZvciBjb250ZW50IGxvb2t1cCAqL1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBGYWxsYmFjayB0ZXh0IGlmIGNvbnRlbnQga2V5IGlzIG5vdCBmb3VuZCAqL1xuICBjb250ZW50RmFsbGJhY2s/OiBzdHJpbmc7XG5cbiAgLy8gc2VsZWN0LWlucHV0IHNwZWNpZmljIGkxOG4gcHJvcGVydGllc1xuICAvKiogQ3VzdG9tIGhlYWRlciB0ZXh0IGZvciBzZWxlY3QgbW9kYWwgKi9cbiAgbW9kYWxIZWFkZXI/OiBzdHJpbmc7XG4gIC8qKiBDdXN0b20gY2FuY2VsIGJ1dHRvbiB0ZXh0IGZvciBzZWxlY3QgbW9kYWwgKi9cbiAgY2FuY2VsVGV4dD86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBPSyBidXR0b24gdGV4dCBmb3Igc2VsZWN0IG1vZGFsICovXG4gIG9rVGV4dD86IHN0cmluZztcbiAgLyoqIEludGVyZmFjZSBkZWwgaW9uLXNlbGVjdCAoZGVmYXVsdDogJ3BvcG92ZXInKS4gJ21vZGFsJyBwYXJhIGxpc3RhcyBsYXJnYXMuICovXG4gIHNlbGVjdEludGVyZmFjZT86ICdwb3BvdmVyJyB8ICdtb2RhbCcgfCAnYWN0aW9uLXNoZWV0JyB8ICdhbGVydCc7XG5cbiAgLy8gY2hlY2staW5wdXQgc3BlY2lmaWMgcHJvcGVydGllc1xuICAvKiogUG9zaXRpb24gb2YgbGFiZWwgZm9yIGNoZWNrYm94ICgnc3RhcnQnIHwgJ2VuZCcpICovXG4gIGxhYmVsUGxhY2VtZW50PzogJ3N0YXJ0JyB8ICdlbmQnO1xuXG4gIC8vIFBJTl9DT0RFIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgLyoqIE51bWJlciBvZiBkaWdpdHMgaW4gUElOIChkZWZhdWx0OiA1LCBvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIC8qKiBTaXplIG9mIHRoZSBpbnB1dCBib3hlczogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyAoZGVmYXVsdDogJ21lZGl1bScsIG9ubHkgZm9yIFBJTl9DT0RFIHR5cGUpICovXG4gIHNpemU/OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuICAvKiogQWxsb3cgb25seSBudW1iZXJzIChkZWZhdWx0OiB0cnVlLCBvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBhbGxvd051bWJlcnNPbmx5PzogYm9vbGVhbjtcbiAgLyoqIE1hc2sgaW5wdXQgLSBzaG93IGRvdHMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzIChvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBtYXNrPzogYm9vbGVhbjtcbiAgLyoqIEF1dG8gZm9jdXMgZmlyc3QgaW5wdXQgKG9ubHkgZm9yIFBJTl9DT0RFIHR5cGUpICovXG4gIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gIC8qKiBDdXN0b20gaW5wdXQgc3R5bGVzIChvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBpbnB1dFN0eWxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqIFVwbG9hZCBmdW5jdGlvbiAob25seSBmb3IgQVRUQUNITUVOVCB0eXBlKS4gUmVjZWl2ZXMgYSBGaWxlLCBtdXN0IHJlc29sdmUgdG8gdGhlIHVwbG9hZGVkIFVSTC4gKi9cbiAgdXBsb2FkRm4/OiAoZmlsZTogRmlsZSkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4gIC8vIEFjY2Vzc2liaWxpdHkgd2lyaW5nIChvcmNoZXN0cmF0ZWQgYnkgdmFsLWZvcm0pXG4gIC8qKlxuICAgKiBJZCBkZWwgZWxlbWVudG8gcXVlIGFjdMO6YSBjb21vIGxhYmVsIHZpc2libGUgZGVsIGNhbXBvLiBgdmFsLWZvcm1gIGxvIGFzaWduYVxuICAgKiBhbCBgPHZhbC10aXRsZT5gIHF1ZSByZW5kZXJpemEgc29icmUgZWwgaW5wdXQgeSBsbyBwYXNhIGFsIGlucHV0IHBhcmEgZW5sYXphclxuICAgKiB2w61hIGBhcmlhLWxhYmVsbGVkYnlgLiBTaSBzZSBvbWl0ZSwgZWwgaW5wdXQgZ2VuZXJhIHN1IHByb3BpbyBpZCBpbnRlcm5vLlxuICAgKi9cbiAgbGFiZWxJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIElkIGRlbCBjb250ZW5lZG9yIGRlIGVycm9yIChgdmFsLWhpbnRgKS4gYHZhbC1mb3JtYCBsbyBhc2lnbmEgYWwgYDx2YWwtaGludD5gXG4gICAqIHkgbG8gcGFzYSBhbCBpbnB1dCBwYXJhIGVubGF6YXIgdsOtYSBgYXJpYS1kZXNjcmliZWRieWAgY3VhbmRvIGhheSBlcnJvci5cbiAgICovXG4gIGVycm9ySWQ/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEEgc2VjdGlvbiBpbiBhIGZvcm0sIGdyb3VwaW5nIG11bHRpcGxlIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVNlY3Rpb24gPSB7XG4gIC8qKiBTZWN0aW9uIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogRGlzcGxheSBvcmRlciAqL1xuICBvcmRlcjogbnVtYmVyO1xuICAvKiogRmllbGRzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uICovXG4gIGZpZWxkczogSW5wdXRNZXRhZGF0YVtdO1xufTtcblxuLyoqXG4gKiBEYXRhIHNlbnQgd2hlbiBzdWJtaXR0aW5nIGEgZm9ybS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVN1Ym1pdCA9IHtcbiAgLyoqIEZvcm0gZmllbGQgdmFsdWVzIGFzIGtleS12YWx1ZSBwYWlycyAqL1xuICBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKiBPcHRpb25hbCB0b2tlbiBmb3IgdGhlIG9wZXJhdGlvbiAqL1xuICB0b2tlbj86IHN0cmluZztcbn07XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIGEgY29tcGxldGUgZm9ybS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybU1ldGFkYXRhID0ge1xuICAvKiogRm9ybSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEZvcm0gc2VjdGlvbnMgKi9cbiAgc2VjdGlvbnM6IEZvcm1TZWN0aW9uW107XG4gIC8qKlxuICAgKiBDb25maWd1cmFjacOzbiBkZWwgYm90w7NuIGRlIHN1Ym1pdC4gT3BjaW9uYWw6IGVuIG1vZG8gYGNvbnRyb2xsZWRgIGVsIGZvcm1cbiAgICogbm8gcmVuZGVyaXphIHN1Ym1pdCBwcm9waW8gKGxvIG1hbmVqYSBlbCBob3N0KSB5IGBhY3Rpb25zYCBzZSBpZ25vcmEuXG4gICAqL1xuICBhY3Rpb25zPzogQnV0dG9uTWV0YWRhdGE7XG4gIC8qKiBHbG9iYWwgZm9ybSBzdGF0ZSAqL1xuICBzdGF0ZTogQ29tcG9uZW50U3RhdGU7XG4gIC8qKlxuICAgKiBFc3BhY2lvIHZlcnRpY2FsIGVudHJlIGNhbXBvcywgZW4gcHguIFNpIHNlIG9taXRlLCB1c2EgZWwgZGVmYXVsdFxuICAgKiByZXNwb25zaXZvIGRlIGxhIGxpYiAoOHB4IG1vYmlsZSAvIDEycHggZGVza3RvcCkuIMOadGlsIHBhcmEgZm9ybXVsYXJpb3NcbiAgICogZGVuc29zIG8gbcOhcyBhaXJlYWRvcyBzaW4gdG9jYXIgQ1NTIGRlbCBjb25zdW1lci5cbiAgICovXG4gIGZpZWxkU3BhY2luZz86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1vZG8gZW1iZWJpZG86IGVsIGZvcm0gTk8gcmVuZGVyaXphIHN1IGJ1dHRvbi1ncm91cC9mb290ZXIgZGUgc3VibWl0LlxuICAgKiBTb2xvIGNhbXBvcyArIHZhbGlkYWNpw7NuLiBQYXJhIHdpemFyZHMvaG9zdHMgcXVlIGNvbnRyb2xhbiBsYSBuYXZlZ2FjacOzblxuICAgKiB5IGxlZW4gZWwgZXN0YWRvIGRlbCBmb3JtIHbDrWEgYEBWaWV3Q2hpbGQoRm9ybUNvbXBvbmVudClgIChzaWduYWxzIHDDumJsaWNvc1xuICAgKiBgdmFsdWVgL2B2YWxpZGAgKyBtw6l0b2RvIGB2YWxpZGF0ZSgpYC9gbWFya0FsbFRvdWNoZWQoKWApLlxuICAgKiBDdWFuZG8gZXMgYHRydWVgLCBpZ25vcmEgYHN0aWNreUZvb3RlcmAuXG4gICAqL1xuICBjb250cm9sbGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZpamEgZWwgYnV0dG9uLWdyb3VwIGRlIHN1Ym1pdCBhbCBmb25kbyAoYHBvc2l0aW9uOiBzdGlja3k7IGJvdHRvbTogMGApXG4gICAqIHBhcmEgbW9kYWxlcyBsYXJnb3MgY29uIHNjcm9sbC4gU29sbyBhcGxpY2Egc2kgTk8gZXMgYGNvbnRyb2xsZWRgLlxuICAgKiBQb3IgZGVmZWN0byAoc2luIGZsYWdzKSBlbCBzdWJtaXQgZXMgaW5saW5lIGFsIGZpbmFsIGRlbCBmb3JtLlxuICAgKi9cbiAgc3RpY2t5Rm9vdGVyPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogUG9zc2libGUgYWN0aW9uIHR5cGVzIGZvciBhIHRvb2xiYXIuXG4gKi9cbmV4cG9ydCBlbnVtIFRvb2xiYXJBY3Rpb25UeXBlIHtcbiAgQVZBVEFSID0gJ0FWQVRBUicsXG4gIElDT04gPSAnSUNPTicsXG4gIElNQUdFID0gJ0lNQUdFJyxcbiAgQlVUVE9OID0gJ0JVVFRPTicsXG59XG5cbi8qKlxuICogVG9vbGJhciBhY3Rpb24gZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVG9vbGJhckFjdGlvbiA9IHtcbiAgLyoqIEFjdGlvbiB0eXBlICovXG4gIHR5cGU6ICdBVkFUQVInIHwgJ0lDT04nIHwgJ0lNQUdFJyB8ICdCVVRUT04nO1xuICAvKiogT3B0aW9uYWwgdG9rZW4gaWRlbnRpZmllciAqL1xuICB0b2tlbj86IHN0cmluZztcbiAgLyoqIFRvb2xiYXIgcG9zaXRpb24gKi9cbiAgcG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJztcbiAgLyoqIE9wdGlvbmFsIGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogQXNzb2NpYXRlZCBpbWFnZSAoaWYgYW55KSAqL1xuICBpbWFnZT86IEltYWdlTWV0YWRhdGE7XG4gIC8qKlxuICAgKiBVc2VyIHNoYXBlIHBhcmEgZWwgbW9kbyBgQVZBVEFSYCDigJQgaGFiaWxpdGEgZmFsbGJhY2sgaW50ZWxpZ2VudGU6XG4gICAqIGZvdG8g4oaSIGluaWNpYWxlcyAoZGUgYG5hbWVgL2BlbWFpbGApIOKGkiBpY29ubyBwZXJzb25hLiBTaSBzZSBvbWl0ZSwgZWxcbiAgICogdG9vbGJhciBzb2xvIG11ZXN0cmEgbGEgaW1hZ2VuIHBhc2FkYSBlbiBgZGVzY3JpcHRpb25gLlxuICAgKi9cbiAgdXNlcj86IHsgbmFtZT86IHN0cmluZzsgZW1haWw/OiBzdHJpbmc7IGF2YXRhclVybD86IHN0cmluZzsgaGFuZGxlPzogc3RyaW5nIH0gfCBudWxsO1xuICAvKiogQ29udHJvbHMgYXZhdGFyIHNpemUgd2hlbiB0eXBlIGlzIEFWQVRBUi4gRGVmYXVsdHMgdG8gJ3NtYWxsJy4gKi9cbiAgYXZhdGFyU2l6ZT86ICd4c21hbGwnIHwgJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICd4bGFyZ2UnO1xufTtcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgYW4gaWNvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY29uTWV0YWRhIHtcbiAgLyoqIEljb24gbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBJY29uIHNsb3QgcG9zaXRpb24gKi9cbiAgc2xvdDogJ3N0YXJ0JyB8ICdlbmQnO1xufVxuXG4vKipcbiAqIEJ1dHRvbiBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAqIFN1cHBvcnRzIGJvdGggc3RhdGljIGFuZCByZWFjdGl2ZSBjb250ZW50LlxuICogQHR5cGUge0J1dHRvbk1ldGFkYXRhfVxuICogQHByb3BlcnR5IHRleHQgLSBTdGF0aWMgYnV0dG9uIGxhYmVsICh0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGV4dENvbmZpZykuXG4gKiBAcHJvcGVydHkgdGV4dENvbmZpZyAtIFJlYWN0aXZlIGNvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgYnV0dG9uIHRleHQuXG4gKiBAcHJvcGVydHkgY29sb3IgLSBUaGUgYnV0dG9uIGNvbG9yIChJb25pYyBjb2xvciBzdHJpbmcpLlxuICogQHByb3BlcnR5IGljb24gLSBJY29uIHRvIGRpc3BsYXkgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBzdGF0ZSAtIEJ1dHRvbiBzdGF0ZSAoZW5hYmxlZCwgZGlzYWJsZWQsIHdvcmtpbmcsIGV0Yy4pLlxuICogQHByb3BlcnR5IGV4cGFuZCwgZmlsbCwgc2l6ZSwgc2hhcGUsIGhyZWYsIHRhcmdldCwgZG93bmxvYWQsIGhhbmRsZXIsIGV0Yy4gLSBTZWUgQnV0dG9uTWV0YWRhdGEgZm9yIGFsbCBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbk1ldGFkYXRhIHtcbiAgLyoqIEFzc29jaWF0ZWQgYWN0aW9uIHR5cGUgKi9cbiAgYWN0aW9uVHlwZT86IEFjdGlvblR5cGU7XG4gIC8qKiBCdXR0b24gZXhwYW5zaW9uICovXG4gIGV4cGFuZD86ICdmdWxsJyB8ICdibG9jayc7XG4gIC8qKiBBc3NvY2lhdGVkIGxpbmsgKi9cbiAgbGluaz86IHN0cmluZztcbiAgLyoqIEFzc29jaWF0ZWQgaHJlZiBsaW5rICovXG4gIGhyZWY/OiBzdHJpbmc7XG4gIC8qKiBBbmd1bGFyIHJvdXRlciBsaW5rIChTUEEgbmF2aWdhdGlvbiwgbm8gcmVsb2FkKSAqL1xuICByb3V0ZXJMaW5rPzogc3RyaW5nIHwgYW55W107XG4gIC8qKiBMaW5rIHRhcmdldCAqL1xuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XG4gIC8qKiBEb3dubG9hZCBmaWxlIG5hbWUgKi9cbiAgZG93bmxvYWQ/OiBzdHJpbmc7XG4gIC8qKiBCdXR0b24gY29sb3IgKi9cbiAgY29sb3I6IENvbG9yO1xuICAvKiogQnV0dG9uIHN0YXRlICovXG4gIHN0YXRlOiBDb21wb25lbnRTdGF0ZTtcbiAgLyoqIFN0YXRpYyBkaXNwbGF5IHRleHQgKHRha2VzIHByZWNlZGVuY2Ugb3ZlciByZWFjdGl2ZSBjb250ZW50KSAqL1xuICB0ZXh0Pzogc3RyaW5nO1xuICAvKiogUmVhY3RpdmUgY29udGVudCBjb25maWd1cmF0aW9uIGZvciBidXR0b24gdGV4dCAqL1xuICBjb250ZW50S2V5Pzogc3RyaW5nO1xuICAvKiogQ29tcG9uZW50IGNsYXNzIG5hbWUgZm9yIGNvbnRlbnQgbG9va3VwIChyZXF1aXJlZCB3aXRoIGNvbnRlbnRLZXkpICovXG4gIGNvbnRlbnRDbGFzcz86IHN0cmluZztcbiAgLyoqIEZhbGxiYWNrIHRleHQgaWYgY29udGVudEtleSBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuICAvKiogVmFsdWVzIHRvIGludGVycG9sYXRlIGludG8gdGhlIGNvbnRlbnQgc3RyaW5nICovXG4gIGNvbnRlbnRJbnRlcnBvbGF0aW9uPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPjtcbiAgLyoqIEFzc29jaWF0ZWQgaWNvbiAqL1xuICBpY29uPzogSWNvbk1ldGFkYTtcbiAgLyoqIEJ1dHRvbiBzaGFwZSAqL1xuICBzaGFwZT86ICdyb3VuZCc7XG4gIC8qKiBCdXR0b24gc2l6ZSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdkZWZhdWx0JyB8ICdsYXJnZSc7XG4gIC8qKiBCdXR0b24gZmlsbCAqL1xuICBmaWxsPzogJ2NsZWFyJyB8ICdvdXRsaW5lJyB8ICdzb2xpZCcgfCAnZGVmYXVsdCc7XG4gIC8qKiBCdXR0b24gdHlwZSAqL1xuICB0eXBlOiAnYnV0dG9uJyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JztcbiAgLyoqIE9wdGlvbmFsIHRva2VuIGlkZW50aWZpZXIgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCByZWZlcmVuY2UgKi9cbiAgcmVmPzogYW55O1xuICAvKiogQWN0aW9uIGhhbmRsZXIgKi9cbiAgaGFuZGxlcj86ICh2YWx1ZTogYW55KSA9PiBhbnkgfCBQcm9taXNlPGFueT47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgcmVhY3RpdmUgY29udGVudCBpbiB2YWwtYnV0dG9uIGNvbXBvbmVudC5cbiAqIFVzZSB0aGlzIGludGVyZmFjZSB3aGVuIHlvdSBvbmx5IG5lZWQgdG8gc3BlY2lmeSBjb250ZW50LXJlbGF0ZWQgcHJvcGVydGllcy5cbiAqIFRoaXMgZm9sbG93cyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFRleHRDb250ZW50Q29uZmlnIGZvciBjb25zaXN0ZW5jeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Db250ZW50Q29uZmlnIHtcbiAgY29udGVudEtleTogc3RyaW5nO1xuICBjb250ZW50Q2xhc3M6IHN0cmluZztcbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuICBjb250ZW50SW50ZXJwb2xhdGlvbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj47XG59XG4iXX0=
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Presets de botón por defecto provistos por la librería.
3
+ *
4
+ * Son el reemplazo recomendado de las factories deprecadas de
5
+ * `atoms/button/factory.ts`: en vez de construir el `ButtonMetadata` a mano,
6
+ * el consumer usa `<val-button preset="primary-round" [props]="{ text }">`.
7
+ *
8
+ * Cada preset define solo el ESTILO reutilizable (color/fill/shape/expand/size).
9
+ * El `text`, `type`, `state`, `icon` y `href` se pasan por `[props]` en cada uso.
10
+ *
11
+ * Disponibles sin configuración: `PresetService` los siembra de fábrica y
12
+ * `provideValtechPresets` los preserva (las apps EXTIENDEN estos defaults en
13
+ * vez de pisarlos). Una app puede sobrescribir un preset declarando la misma
14
+ * clave bajo `button` en su `APP_PRESETS`.
15
+ */
16
+ export const DEFAULT_BUTTON_PRESETS = {
17
+ // Primary
18
+ primary: { color: 'primary', fill: 'solid' },
19
+ 'primary-round': { color: 'primary', fill: 'solid', shape: 'round' },
20
+ 'primary-block': { color: 'primary', fill: 'solid', expand: 'block' },
21
+ 'primary-full': { color: 'primary', fill: 'solid', expand: 'full' },
22
+ // Secondary
23
+ secondary: { color: 'secondary', fill: 'solid' },
24
+ 'secondary-round': { color: 'secondary', fill: 'solid', shape: 'round' },
25
+ // Generic solid (color-agnostic — color comes from val-button default / props)
26
+ solid: { fill: 'solid' },
27
+ 'solid-round': { fill: 'solid', shape: 'round' },
28
+ 'solid-block': { color: 'primary', fill: 'solid', expand: 'block' },
29
+ // Outline / Clear
30
+ outline: { fill: 'outline' },
31
+ 'outline-round': { fill: 'outline', shape: 'round' },
32
+ clear: { fill: 'clear' },
33
+ 'clear-round': { fill: 'clear', shape: 'round' },
34
+ // Intent
35
+ danger: { color: 'danger', fill: 'solid' },
36
+ 'danger-round': { color: 'danger', fill: 'solid', shape: 'round' },
37
+ };
38
+ /**
39
+ * Presets que la librería siembra de fábrica en `PresetService`.
40
+ * Hoy solo botón; agregar otros componentes acá a medida que se definan.
41
+ */
42
+ export const DEFAULT_PRESETS = {
43
+ button: DEFAULT_BUTTON_PRESETS,
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wcmVzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wcmVzZXRzL2RlZmF1bHQtcHJlc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFxQjtJQUN0RCxVQUFVO0lBQ1YsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzVDLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3BFLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ3JFLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0lBQ25FLFlBQVk7SUFDWixTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDaEQsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtJQUN4RSwrRUFBK0U7SUFDL0UsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtJQUN4QixhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDaEQsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7SUFDbkUsa0JBQWtCO0lBQ2xCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDNUIsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3BELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDeEIsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ2hELFNBQVM7SUFDVCxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDMUMsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Q0FDbkUsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBaUI7SUFDM0MsTUFBTSxFQUFFLHNCQUFzQjtDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJlc2V0Q29uZmlnLCBDb21wb25lbnRQcmVzZXRzIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogUHJlc2V0cyBkZSBib3TDs24gcG9yIGRlZmVjdG8gcHJvdmlzdG9zIHBvciBsYSBsaWJyZXLDrWEuXG4gKlxuICogU29uIGVsIHJlZW1wbGF6byByZWNvbWVuZGFkbyBkZSBsYXMgZmFjdG9yaWVzIGRlcHJlY2FkYXMgZGVcbiAqIGBhdG9tcy9idXR0b24vZmFjdG9yeS50c2A6IGVuIHZleiBkZSBjb25zdHJ1aXIgZWwgYEJ1dHRvbk1ldGFkYXRhYCBhIG1hbm8sXG4gKiBlbCBjb25zdW1lciB1c2EgYDx2YWwtYnV0dG9uIHByZXNldD1cInByaW1hcnktcm91bmRcIiBbcHJvcHNdPVwieyB0ZXh0IH1cIj5gLlxuICpcbiAqIENhZGEgcHJlc2V0IGRlZmluZSBzb2xvIGVsIEVTVElMTyByZXV0aWxpemFibGUgKGNvbG9yL2ZpbGwvc2hhcGUvZXhwYW5kL3NpemUpLlxuICogRWwgYHRleHRgLCBgdHlwZWAsIGBzdGF0ZWAsIGBpY29uYCB5IGBocmVmYCBzZSBwYXNhbiBwb3IgYFtwcm9wc11gIGVuIGNhZGEgdXNvLlxuICpcbiAqIERpc3BvbmlibGVzIHNpbiBjb25maWd1cmFjacOzbjogYFByZXNldFNlcnZpY2VgIGxvcyBzaWVtYnJhIGRlIGbDoWJyaWNhIHlcbiAqIGBwcm92aWRlVmFsdGVjaFByZXNldHNgIGxvcyBwcmVzZXJ2YSAobGFzIGFwcHMgRVhUSUVOREVOIGVzdG9zIGRlZmF1bHRzIGVuXG4gKiB2ZXogZGUgcGlzYXJsb3MpLiBVbmEgYXBwIHB1ZWRlIHNvYnJlc2NyaWJpciB1biBwcmVzZXQgZGVjbGFyYW5kbyBsYSBtaXNtYVxuICogY2xhdmUgYmFqbyBgYnV0dG9uYCBlbiBzdSBgQVBQX1BSRVNFVFNgLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CVVRUT05fUFJFU0VUUzogQ29tcG9uZW50UHJlc2V0cyA9IHtcbiAgLy8gUHJpbWFyeVxuICBwcmltYXJ5OiB7IGNvbG9yOiAncHJpbWFyeScsIGZpbGw6ICdzb2xpZCcgfSxcbiAgJ3ByaW1hcnktcm91bmQnOiB7IGNvbG9yOiAncHJpbWFyeScsIGZpbGw6ICdzb2xpZCcsIHNoYXBlOiAncm91bmQnIH0sXG4gICdwcmltYXJ5LWJsb2NrJzogeyBjb2xvcjogJ3ByaW1hcnknLCBmaWxsOiAnc29saWQnLCBleHBhbmQ6ICdibG9jaycgfSxcbiAgJ3ByaW1hcnktZnVsbCc6IHsgY29sb3I6ICdwcmltYXJ5JywgZmlsbDogJ3NvbGlkJywgZXhwYW5kOiAnZnVsbCcgfSxcbiAgLy8gU2Vjb25kYXJ5XG4gIHNlY29uZGFyeTogeyBjb2xvcjogJ3NlY29uZGFyeScsIGZpbGw6ICdzb2xpZCcgfSxcbiAgJ3NlY29uZGFyeS1yb3VuZCc6IHsgY29sb3I6ICdzZWNvbmRhcnknLCBmaWxsOiAnc29saWQnLCBzaGFwZTogJ3JvdW5kJyB9LFxuICAvLyBHZW5lcmljIHNvbGlkIChjb2xvci1hZ25vc3RpYyDigJQgY29sb3IgY29tZXMgZnJvbSB2YWwtYnV0dG9uIGRlZmF1bHQgLyBwcm9wcylcbiAgc29saWQ6IHsgZmlsbDogJ3NvbGlkJyB9LFxuICAnc29saWQtcm91bmQnOiB7IGZpbGw6ICdzb2xpZCcsIHNoYXBlOiAncm91bmQnIH0sXG4gICdzb2xpZC1ibG9jayc6IHsgY29sb3I6ICdwcmltYXJ5JywgZmlsbDogJ3NvbGlkJywgZXhwYW5kOiAnYmxvY2snIH0sXG4gIC8vIE91dGxpbmUgLyBDbGVhclxuICBvdXRsaW5lOiB7IGZpbGw6ICdvdXRsaW5lJyB9LFxuICAnb3V0bGluZS1yb3VuZCc6IHsgZmlsbDogJ291dGxpbmUnLCBzaGFwZTogJ3JvdW5kJyB9LFxuICBjbGVhcjogeyBmaWxsOiAnY2xlYXInIH0sXG4gICdjbGVhci1yb3VuZCc6IHsgZmlsbDogJ2NsZWFyJywgc2hhcGU6ICdyb3VuZCcgfSxcbiAgLy8gSW50ZW50XG4gIGRhbmdlcjogeyBjb2xvcjogJ2RhbmdlcicsIGZpbGw6ICdzb2xpZCcgfSxcbiAgJ2Rhbmdlci1yb3VuZCc6IHsgY29sb3I6ICdkYW5nZXInLCBmaWxsOiAnc29saWQnLCBzaGFwZTogJ3JvdW5kJyB9LFxufTtcblxuLyoqXG4gKiBQcmVzZXRzIHF1ZSBsYSBsaWJyZXLDrWEgc2llbWJyYSBkZSBmw6FicmljYSBlbiBgUHJlc2V0U2VydmljZWAuXG4gKiBIb3kgc29sbyBib3TDs247IGFncmVnYXIgb3Ryb3MgY29tcG9uZW50ZXMgYWPDoSBhIG1lZGlkYSBxdWUgc2UgZGVmaW5hbi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJFU0VUUzogUHJlc2V0Q29uZmlnID0ge1xuICBidXR0b246IERFRkFVTFRfQlVUVE9OX1BSRVNFVFMsXG59O1xuIl19
@@ -2,4 +2,6 @@
2
2
  export { PresetService } from './preset.service';
3
3
  // Config
4
4
  export { provideValtechPresets } from './config';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ByZXNldHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsVUFBVTtBQUNWLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxTQUFTO0FBQ1QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVHlwZXNcbmV4cG9ydCB7IFByZXNldENvbmZpZywgQ29tcG9uZW50UHJlc2V0cywgUHJlc2V0c09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuLy8gU2VydmljZVxuZXhwb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4vcHJlc2V0LnNlcnZpY2UnO1xuXG4vLyBDb25maWdcbmV4cG9ydCB7IHByb3ZpZGVWYWx0ZWNoUHJlc2V0cyB9IGZyb20gJy4vY29uZmlnJztcbiJdfQ==
5
+ // Default presets shipped by the library (button presets, etc.)
6
+ export { DEFAULT_BUTTON_PRESETS, DEFAULT_PRESETS } from './default-presets';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ByZXNldHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsVUFBVTtBQUNWLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxTQUFTO0FBQ1QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELGdFQUFnRTtBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUeXBlc1xuZXhwb3J0IHsgUHJlc2V0Q29uZmlnLCBDb21wb25lbnRQcmVzZXRzLCBQcmVzZXRzT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBTZXJ2aWNlXG5leHBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi9wcmVzZXQuc2VydmljZSc7XG5cbi8vIENvbmZpZ1xuZXhwb3J0IHsgcHJvdmlkZVZhbHRlY2hQcmVzZXRzIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vLyBEZWZhdWx0IHByZXNldHMgc2hpcHBlZCBieSB0aGUgbGlicmFyeSAoYnV0dG9uIHByZXNldHMsIGV0Yy4pXG5leHBvcnQgeyBERUZBVUxUX0JVVFRPTl9QUkVTRVRTLCBERUZBVUxUX1BSRVNFVFMgfSBmcm9tICcuL2RlZmF1bHQtcHJlc2V0cyc7XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { Injectable, signal } from '@angular/core';
2
+ import { DEFAULT_PRESETS } from './default-presets';
2
3
  import * as i0 from "@angular/core";
3
4
  /**
4
5
  * Servicio para gestionar presets de componentes.
@@ -17,7 +18,9 @@ import * as i0 from "@angular/core";
17
18
  */
18
19
  export class PresetService {
19
20
  constructor() {
20
- this._presets = signal({});
21
+ // Seeded with library defaults (e.g. button presets). Apps EXTEND these via
22
+ // registerPresets (merge), so the defaults survive app-level registration.
23
+ this._presets = signal(structuredClone(DEFAULT_PRESETS));
21
24
  }
22
25
  /**
23
26
  * Obtiene un preset específico para un componente
@@ -57,6 +60,10 @@ export class PresetService {
57
60
  *
58
61
  * @param presets Configuración de presets
59
62
  *
63
+ * Hace MERGE por componente sobre lo ya registrado (incluidos los defaults
64
+ * de la librería), así que las apps EXTIENDEN los presets existentes en vez
65
+ * de reemplazarlos. Para sobrescribir un preset, declarar la misma clave.
66
+ *
60
67
  * @example
61
68
  * presets.registerPresets({
62
69
  * button: {
@@ -68,13 +75,19 @@ export class PresetService {
68
75
  * });
69
76
  */
70
77
  registerPresets(presets) {
71
- this._presets.set(presets);
78
+ this._presets.update(current => {
79
+ const merged = { ...current };
80
+ for (const [component, componentPresets] of Object.entries(presets)) {
81
+ merged[component] = { ...(current[component] ?? {}), ...componentPresets };
82
+ }
83
+ return merged;
84
+ });
72
85
  }
73
86
  /**
74
87
  * Agrega presets para un componente específico (merge con existentes)
75
88
  */
76
89
  registerComponentPresets(component, presets) {
77
- this._presets.update((current) => ({
90
+ this._presets.update(current => ({
78
91
  ...current,
79
92
  [component]: {
80
93
  ...current[component],
@@ -101,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
101
114
  type: Injectable,
102
115
  args: [{ providedIn: 'root' }]
103
116
  }] });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ByZXNldHMvcHJlc2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25EOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFbUIsYUFBUSxHQUFHLE1BQU0sQ0FBZSxFQUFFLENBQUMsQ0FBQztLQW9GdEQ7SUFsRkM7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILEdBQUcsQ0FBb0MsU0FBaUIsRUFBRSxVQUFrQjtRQUMxRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLE9BQU8sRUFBZ0IsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsVUFBVSw4QkFBOEIsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN2RixPQUFPLEVBQWdCLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sTUFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsU0FBaUIsRUFBRSxVQUFrQjtRQUN2QyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxlQUFlLENBQUMsT0FBcUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsU0FBaUIsRUFBRSxPQUF5QjtRQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQyxHQUFHLE9BQU87WUFDVixDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNYLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztnQkFDckIsR0FBRyxPQUFPO2FBQ1g7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQzsrR0FwRlUsYUFBYTttSEFBYixhQUFhLGNBREEsTUFBTTs7NEZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmVzZXRDb25maWcsIENvbXBvbmVudFByZXNldHMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGdlc3Rpb25hciBwcmVzZXRzIGRlIGNvbXBvbmVudGVzLlxuICpcbiAqIExvcyBwcmVzZXRzIHBlcm1pdGVuIGRlZmluaXIgY29uZmlndXJhY2lvbmVzIHJldXRpbGl6YWJsZXNcbiAqIGRlIGNvbXBvbmVudGVzICh0YW1hw7FvLCBjb2xvciwgdmFyaWFudGUsIGV0Yy4pIHF1ZSBzZSBwdWVkZW5cbiAqIGFwbGljYXIgY29uIHVuIG5vbWJyZSBzZW3DoW50aWNvLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbiB1biBjb21wb25lbnRlXG4gKiBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuICpcbiAqIC8vIE9idGVuZXIgcHJlc2V0XG4gKiBjb25zdCBidXR0b25Qcm9wcyA9IHRoaXMucHJlc2V0cy5nZXQ8QnV0dG9uTWV0YWRhdGE+KCdidXR0b24nLCAncHJpbWFyeS1hY3Rpb24nKTtcbiAqIC8vIHsgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICdwcmltYXJ5JywgZmlsbDogJ3NvbGlkJyB9XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJlc2V0U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZXNldHMgPSBzaWduYWw8UHJlc2V0Q29uZmlnPih7fSk7XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdW4gcHJlc2V0IGVzcGVjw61maWNvIHBhcmEgdW4gY29tcG9uZW50ZVxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50IFRpcG8gZGUgY29tcG9uZW50ZSAoZWo6ICdidXR0b24nLCAnY2FyZCcsICdpbnB1dCcpXG4gICAqIEBwYXJhbSBwcmVzZXROYW1lIE5vbWJyZSBkZWwgcHJlc2V0IChlajogJ3ByaW1hcnktYWN0aW9uJywgJ2NvbXBhY3QnKVxuICAgKiBAcmV0dXJucyBQcm9waWVkYWRlcyBkZWwgcHJlc2V0IG8gb2JqZXRvIHZhY8OtbyBzaSBubyBleGlzdGVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gT2J0ZW5lciBwcmVzZXQgZGUgYm90w7NuXG4gICAqIGNvbnN0IHByb3BzID0gcHJlc2V0cy5nZXQ8QnV0dG9uTWV0YWRhdGE+KCdidXR0b24nLCAncHJpbWFyeS1hY3Rpb24nKTtcbiAgICpcbiAgICogLy8gVXNhciBlbiBjb21wb25lbnRlXG4gICAqIDx2YWwtYnV0dG9uIFtwcm9wc109XCJwcm9wc1wiPjwvdmFsLWJ1dHRvbj5cbiAgICovXG4gIGdldDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KGNvbXBvbmVudDogc3RyaW5nLCBwcmVzZXROYW1lOiBzdHJpbmcpOiBQYXJ0aWFsPFQ+IHtcbiAgICBjb25zdCBjb21wb25lbnRQcmVzZXRzID0gdGhpcy5fcHJlc2V0cygpW2NvbXBvbmVudF07XG4gICAgaWYgKCFjb21wb25lbnRQcmVzZXRzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtwcmVzZXRzXSBObyBwcmVzZXRzIHJlZ2lzdGVyZWQgZm9yIGNvbXBvbmVudDogJHtjb21wb25lbnR9YCk7XG4gICAgICByZXR1cm4ge30gYXMgUGFydGlhbDxUPjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVzZXQgPSBjb21wb25lbnRQcmVzZXRzW3ByZXNldE5hbWVdO1xuICAgIGlmICghcHJlc2V0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtwcmVzZXRzXSBQcmVzZXQgJyR7cHJlc2V0TmFtZX0nIG5vdCBmb3VuZCBmb3IgY29tcG9uZW50OiAke2NvbXBvbmVudH1gKTtcbiAgICAgIHJldHVybiB7fSBhcyBQYXJ0aWFsPFQ+O1xuICAgIH1cblxuICAgIHJldHVybiBwcmVzZXQgYXMgUGFydGlhbDxUPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBleGlzdGUgdW4gcHJlc2V0XG4gICAqL1xuICBoYXMoY29tcG9uZW50OiBzdHJpbmcsIHByZXNldE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ByZXNldHMoKVtjb21wb25lbnRdPy5bcHJlc2V0TmFtZV07XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgcHJlc2V0cyBkZSBsYSBhcGxpY2FjacOzblxuICAgKlxuICAgKiBAcGFyYW0gcHJlc2V0cyBDb25maWd1cmFjacOzbiBkZSBwcmVzZXRzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHByZXNldHMucmVnaXN0ZXJQcmVzZXRzKHtcbiAgICogICBidXR0b246IHtcbiAgICogICAgICdwcmltYXJ5LWFjdGlvbic6IHsgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICdwcmltYXJ5JyB9LFxuICAgKiAgIH0sXG4gICAqICAgY2FyZDoge1xuICAgKiAgICAgJ2ZlYXR1cmUnOiB7IHZhcmlhbnQ6ICdlbGV2YXRlZCcgfSxcbiAgICogICB9XG4gICAqIH0pO1xuICAgKi9cbiAgcmVnaXN0ZXJQcmVzZXRzKHByZXNldHM6IFByZXNldENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuX3ByZXNldHMuc2V0KHByZXNldHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFncmVnYSBwcmVzZXRzIHBhcmEgdW4gY29tcG9uZW50ZSBlc3BlY8OtZmljbyAobWVyZ2UgY29uIGV4aXN0ZW50ZXMpXG4gICAqL1xuICByZWdpc3RlckNvbXBvbmVudFByZXNldHMoY29tcG9uZW50OiBzdHJpbmcsIHByZXNldHM6IENvbXBvbmVudFByZXNldHMpOiB2b2lkIHtcbiAgICB0aGlzLl9wcmVzZXRzLnVwZGF0ZSgoY3VycmVudCkgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICBbY29tcG9uZW50XToge1xuICAgICAgICAuLi5jdXJyZW50W2NvbXBvbmVudF0sXG4gICAgICAgIC4uLnByZXNldHMsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZG9zIGxvcyBub21icmVzIGRlIHByZXNldHMgcGFyYSB1biBjb21wb25lbnRlXG4gICAqL1xuICBnZXRQcmVzZXROYW1lcyhjb21wb25lbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcHJlc2V0cygpW2NvbXBvbmVudF0gfHwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdG9kb3MgbG9zIGNvbXBvbmVudGVzIGNvbiBwcmVzZXRzIHJlZ2lzdHJhZG9zXG4gICAqL1xuICBnZXRSZWdpc3RlcmVkQ29tcG9uZW50cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3ByZXNldHMoKSk7XG4gIH1cbn1cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ByZXNldHMvcHJlc2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVwRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRUUsNEVBQTRFO1FBQzVFLDJFQUEyRTtRQUMxRCxhQUFRLEdBQUcsTUFBTSxDQUFlLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0tBOEZwRjtJQTVGQzs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsR0FBRyxDQUFvQyxTQUFpQixFQUFFLFVBQWtCO1FBQzFFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0RBQWtELFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDNUUsT0FBTyxFQUFnQixDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixVQUFVLDhCQUE4QixTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sRUFBZ0IsQ0FBQztRQUMxQixDQUFDO1FBRUQsT0FBTyxNQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxTQUFpQixFQUFFLFVBQWtCO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0gsZUFBZSxDQUFDLE9BQXFCO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdCLE1BQU0sTUFBTSxHQUFpQixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDNUMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3RSxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0IsQ0FBQyxTQUFpQixFQUFFLE9BQXlCO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvQixHQUFHLE9BQU87WUFDVixDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNYLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztnQkFDckIsR0FBRyxPQUFPO2FBQ1g7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQzsrR0FoR1UsYUFBYTttSEFBYixhQUFhLGNBREEsTUFBTTs7NEZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmVzZXRDb25maWcsIENvbXBvbmVudFByZXNldHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IERFRkFVTFRfUFJFU0VUUyB9IGZyb20gJy4vZGVmYXVsdC1wcmVzZXRzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGdlc3Rpb25hciBwcmVzZXRzIGRlIGNvbXBvbmVudGVzLlxuICpcbiAqIExvcyBwcmVzZXRzIHBlcm1pdGVuIGRlZmluaXIgY29uZmlndXJhY2lvbmVzIHJldXRpbGl6YWJsZXNcbiAqIGRlIGNvbXBvbmVudGVzICh0YW1hw7FvLCBjb2xvciwgdmFyaWFudGUsIGV0Yy4pIHF1ZSBzZSBwdWVkZW5cbiAqIGFwbGljYXIgY29uIHVuIG5vbWJyZSBzZW3DoW50aWNvLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbiB1biBjb21wb25lbnRlXG4gKiBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuICpcbiAqIC8vIE9idGVuZXIgcHJlc2V0XG4gKiBjb25zdCBidXR0b25Qcm9wcyA9IHRoaXMucHJlc2V0cy5nZXQ8QnV0dG9uTWV0YWRhdGE+KCdidXR0b24nLCAncHJpbWFyeS1hY3Rpb24nKTtcbiAqIC8vIHsgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICdwcmltYXJ5JywgZmlsbDogJ3NvbGlkJyB9XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJlc2V0U2VydmljZSB7XG4gIC8vIFNlZWRlZCB3aXRoIGxpYnJhcnkgZGVmYXVsdHMgKGUuZy4gYnV0dG9uIHByZXNldHMpLiBBcHBzIEVYVEVORCB0aGVzZSB2aWFcbiAgLy8gcmVnaXN0ZXJQcmVzZXRzIChtZXJnZSksIHNvIHRoZSBkZWZhdWx0cyBzdXJ2aXZlIGFwcC1sZXZlbCByZWdpc3RyYXRpb24uXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZXNldHMgPSBzaWduYWw8UHJlc2V0Q29uZmlnPihzdHJ1Y3R1cmVkQ2xvbmUoREVGQVVMVF9QUkVTRVRTKSk7XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdW4gcHJlc2V0IGVzcGVjw61maWNvIHBhcmEgdW4gY29tcG9uZW50ZVxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50IFRpcG8gZGUgY29tcG9uZW50ZSAoZWo6ICdidXR0b24nLCAnY2FyZCcsICdpbnB1dCcpXG4gICAqIEBwYXJhbSBwcmVzZXROYW1lIE5vbWJyZSBkZWwgcHJlc2V0IChlajogJ3ByaW1hcnktYWN0aW9uJywgJ2NvbXBhY3QnKVxuICAgKiBAcmV0dXJucyBQcm9waWVkYWRlcyBkZWwgcHJlc2V0IG8gb2JqZXRvIHZhY8OtbyBzaSBubyBleGlzdGVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gT2J0ZW5lciBwcmVzZXQgZGUgYm90w7NuXG4gICAqIGNvbnN0IHByb3BzID0gcHJlc2V0cy5nZXQ8QnV0dG9uTWV0YWRhdGE+KCdidXR0b24nLCAncHJpbWFyeS1hY3Rpb24nKTtcbiAgICpcbiAgICogLy8gVXNhciBlbiBjb21wb25lbnRlXG4gICAqIDx2YWwtYnV0dG9uIFtwcm9wc109XCJwcm9wc1wiPjwvdmFsLWJ1dHRvbj5cbiAgICovXG4gIGdldDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KGNvbXBvbmVudDogc3RyaW5nLCBwcmVzZXROYW1lOiBzdHJpbmcpOiBQYXJ0aWFsPFQ+IHtcbiAgICBjb25zdCBjb21wb25lbnRQcmVzZXRzID0gdGhpcy5fcHJlc2V0cygpW2NvbXBvbmVudF07XG4gICAgaWYgKCFjb21wb25lbnRQcmVzZXRzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtwcmVzZXRzXSBObyBwcmVzZXRzIHJlZ2lzdGVyZWQgZm9yIGNvbXBvbmVudDogJHtjb21wb25lbnR9YCk7XG4gICAgICByZXR1cm4ge30gYXMgUGFydGlhbDxUPjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVzZXQgPSBjb21wb25lbnRQcmVzZXRzW3ByZXNldE5hbWVdO1xuICAgIGlmICghcHJlc2V0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtwcmVzZXRzXSBQcmVzZXQgJyR7cHJlc2V0TmFtZX0nIG5vdCBmb3VuZCBmb3IgY29tcG9uZW50OiAke2NvbXBvbmVudH1gKTtcbiAgICAgIHJldHVybiB7fSBhcyBQYXJ0aWFsPFQ+O1xuICAgIH1cblxuICAgIHJldHVybiBwcmVzZXQgYXMgUGFydGlhbDxUPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBleGlzdGUgdW4gcHJlc2V0XG4gICAqL1xuICBoYXMoY29tcG9uZW50OiBzdHJpbmcsIHByZXNldE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ByZXNldHMoKVtjb21wb25lbnRdPy5bcHJlc2V0TmFtZV07XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgcHJlc2V0cyBkZSBsYSBhcGxpY2FjacOzblxuICAgKlxuICAgKiBAcGFyYW0gcHJlc2V0cyBDb25maWd1cmFjacOzbiBkZSBwcmVzZXRzXG4gICAqXG4gICAqIEhhY2UgTUVSR0UgcG9yIGNvbXBvbmVudGUgc29icmUgbG8geWEgcmVnaXN0cmFkbyAoaW5jbHVpZG9zIGxvcyBkZWZhdWx0c1xuICAgKiBkZSBsYSBsaWJyZXLDrWEpLCBhc8OtIHF1ZSBsYXMgYXBwcyBFWFRJRU5ERU4gbG9zIHByZXNldHMgZXhpc3RlbnRlcyBlbiB2ZXpcbiAgICogZGUgcmVlbXBsYXphcmxvcy4gUGFyYSBzb2JyZXNjcmliaXIgdW4gcHJlc2V0LCBkZWNsYXJhciBsYSBtaXNtYSBjbGF2ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcHJlc2V0cy5yZWdpc3RlclByZXNldHMoe1xuICAgKiAgIGJ1dHRvbjoge1xuICAgKiAgICAgJ3ByaW1hcnktYWN0aW9uJzogeyBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAqICAgfSxcbiAgICogICBjYXJkOiB7XG4gICAqICAgICAnZmVhdHVyZSc6IHsgdmFyaWFudDogJ2VsZXZhdGVkJyB9LFxuICAgKiAgIH1cbiAgICogfSk7XG4gICAqL1xuICByZWdpc3RlclByZXNldHMocHJlc2V0czogUHJlc2V0Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5fcHJlc2V0cy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCBtZXJnZWQ6IFByZXNldENvbmZpZyA9IHsgLi4uY3VycmVudCB9O1xuICAgICAgZm9yIChjb25zdCBbY29tcG9uZW50LCBjb21wb25lbnRQcmVzZXRzXSBvZiBPYmplY3QuZW50cmllcyhwcmVzZXRzKSkge1xuICAgICAgICBtZXJnZWRbY29tcG9uZW50XSA9IHsgLi4uKGN1cnJlbnRbY29tcG9uZW50XSA/PyB7fSksIC4uLmNvbXBvbmVudFByZXNldHMgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIHByZXNldHMgcGFyYSB1biBjb21wb25lbnRlIGVzcGVjw61maWNvIChtZXJnZSBjb24gZXhpc3RlbnRlcylcbiAgICovXG4gIHJlZ2lzdGVyQ29tcG9uZW50UHJlc2V0cyhjb21wb25lbnQ6IHN0cmluZywgcHJlc2V0czogQ29tcG9uZW50UHJlc2V0cyk6IHZvaWQge1xuICAgIHRoaXMuX3ByZXNldHMudXBkYXRlKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICBbY29tcG9uZW50XToge1xuICAgICAgICAuLi5jdXJyZW50W2NvbXBvbmVudF0sXG4gICAgICAgIC4uLnByZXNldHMsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZG9zIGxvcyBub21icmVzIGRlIHByZXNldHMgcGFyYSB1biBjb21wb25lbnRlXG4gICAqL1xuICBnZXRQcmVzZXROYW1lcyhjb21wb25lbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcHJlc2V0cygpW2NvbXBvbmVudF0gfHwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdG9kb3MgbG9zIGNvbXBvbmVudGVzIGNvbiBwcmVzZXRzIHJlZ2lzdHJhZG9zXG4gICAqL1xuICBnZXRSZWdpc3RlcmVkQ29tcG9uZW50cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3ByZXNldHMoKSk7XG4gIH1cbn1cbiJdfQ==