@seniorsistemas/angular-components 19.9.3 → 19.9.4

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 (95) hide show
  1. package/checkbox/lib/checkbox/checkbox.component.d.ts +1 -6
  2. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +8 -0
  3. package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -2
  4. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -0
  5. package/drawer/README.md +9 -2
  6. package/drawer/lib/drawer/drawer.component.d.ts +12 -1
  7. package/editor/lib/editor/editor.component.d.ts +1 -1
  8. package/esm2022/button/lib/button/button.component.mjs +3 -3
  9. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -9
  10. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +17 -5
  11. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +9 -8
  12. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +18 -3
  13. package/esm2022/drawer/lib/drawer/drawer.component.mjs +33 -11
  14. package/esm2022/drawer/lib/drawer/drawer.module.mjs +2 -2
  15. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
  16. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
  17. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
  18. package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +4 -3
  19. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
  20. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
  21. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
  22. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
  23. package/esm2022/editor/lib/editor/editor.component.mjs +8 -8
  24. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +4 -4
  25. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +4 -4
  26. package/esm2022/global-search/lib/global-search/global-search.module.mjs +2 -2
  27. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +3 -3
  28. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +2 -3
  29. package/esm2022/paginator/lib/models/paginator.models.mjs +1 -1
  30. package/esm2022/paginator/lib/paginator/paginator.component.mjs +19 -13
  31. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +19 -8
  32. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +3 -4
  33. package/esm2022/select/lib/select/select.component.mjs +3 -3
  34. package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +6 -5
  35. package/esm2022/slider/lib/slider/slider.component.mjs +3 -3
  36. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +54 -8
  37. package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
  38. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +14 -21
  39. package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
  40. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +3 -2
  41. package/esm2022/utils/lib/utils/utils.mjs +49 -3
  42. package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
  43. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  44. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +16 -4
  45. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  46. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -8
  47. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  48. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +8 -6
  49. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  50. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -2
  51. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  52. package/fesm2022/seniorsistemas-angular-components-drawer.mjs +32 -9
  53. package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
  54. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +16 -16
  55. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  56. package/fesm2022/seniorsistemas-angular-components-editor.mjs +7 -7
  57. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
  58. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +3 -3
  59. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  60. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +3 -3
  61. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  62. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +3 -4
  63. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  64. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +18 -12
  65. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  66. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +20 -9
  67. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  68. package/fesm2022/seniorsistemas-angular-components-select.mjs +2 -2
  69. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  70. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +5 -4
  71. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
  72. package/fesm2022/seniorsistemas-angular-components-slider.mjs +2 -2
  73. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  74. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +53 -7
  75. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  76. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
  77. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  78. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +13 -20
  79. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  80. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
  81. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  82. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -1
  83. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  84. package/fesm2022/seniorsistemas-angular-components-utils.mjs +49 -3
  85. package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
  86. package/global-search/lib/global-search/global-search.module.d.ts +1 -1
  87. package/package.json +7 -9
  88. package/paginator/lib/models/paginator.models.d.ts +1 -0
  89. package/paginator/lib/paginator/paginator.component.d.ts +3 -1
  90. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +3 -1
  91. package/side-sheet/README.md +4 -4
  92. package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +1 -0
  93. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +2 -1
  94. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -4
  95. package/utils/lib/utils/utils.d.ts +21 -0
@@ -1,10 +1,9 @@
1
1
  import { Component, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, inject, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { TranslateService, TranslatePipe } from '@ngx-translate/core';
4
- import { ConfirmationService } from 'primeng/api';
5
4
  import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
6
5
  import { ImageCropperService } from '@seniorsistemas/angular-components/image-cropper';
7
- import { ConfirmDialog } from 'primeng/confirmdialog';
6
+ import { ConfirmDialogService } from '@seniorsistemas/angular-components/confirm-dialog';
8
7
  import { ThumbnailComponent } from '@seniorsistemas/angular-components/thumbnail';
9
8
  import { ButtonComponent } from '@seniorsistemas/angular-components/button';
10
9
  import * as i0 from "@angular/core";
@@ -29,7 +28,7 @@ import * as i0 from "@angular/core";
29
28
  */
30
29
  export class ProfilePicturePickerComponent {
31
30
  imageCropperService = inject(ImageCropperService);
32
- confirmationService = inject(ConfirmationService);
31
+ confirmDialogService = inject(ConfirmDialogService);
33
32
  translateService = inject(TranslateService);
34
33
  /**
35
34
  * @description Título simples exibido quando nenhuma imagem está selecionada.
@@ -122,6 +121,7 @@ export class ProfilePicturePickerComponent {
122
121
  get imageBase64() {
123
122
  return typeof this.image === 'string' ? this.image : (this.image?.base64 ?? '');
124
123
  }
124
+ disabled = false;
125
125
  _onChange;
126
126
  _onTouched;
127
127
  writeValue(value) {
@@ -133,6 +133,9 @@ export class ProfilePicturePickerComponent {
133
133
  registerOnTouched(onTouched) {
134
134
  this._onTouched = onTouched;
135
135
  }
136
+ setDisabledState(isDisabled) {
137
+ this.disabled = isDisabled;
138
+ }
136
139
  ngOnInit() {
137
140
  this._normalizeSuportedExtensions();
138
141
  }
@@ -147,6 +150,9 @@ export class ProfilePicturePickerComponent {
147
150
  onDrop(event) {
148
151
  event.preventDefault();
149
152
  event.stopPropagation();
153
+ if (this.disabled) {
154
+ return;
155
+ }
150
156
  this._onTouched?.();
151
157
  const files = [];
152
158
  const dataTransferFiles = event.dataTransfer?.files;
@@ -175,13 +181,19 @@ export class ProfilePicturePickerComponent {
175
181
  }
176
182
  }
177
183
  selectPhoto() {
184
+ if (this.disabled) {
185
+ return;
186
+ }
178
187
  const fileInputElement = this.fileInput?.nativeElement;
179
188
  fileInputElement.value = '';
180
189
  fileInputElement.click();
181
190
  this._onTouched?.();
182
191
  }
183
192
  removePhoto() {
184
- this.confirmationService.confirm({
193
+ if (this.disabled) {
194
+ return;
195
+ }
196
+ this.confirmDialogService.confirm({
185
197
  message: this.confirmationTexts?.removalMessage ??
186
198
  this.translateService.instant('platform.angular_components.confirmation_remove_image'),
187
199
  acceptLabel: this.confirmationTexts?.removalAcceptLabel ??
@@ -190,7 +202,6 @@ export class ProfilePicturePickerComponent {
190
202
  this.translateService.instant('platform.angular_components.cancel'),
191
203
  header: this.confirmationTexts?.removalHeader ??
192
204
  this.translateService.instant('platform.angular_components.remove_image'),
193
- rejectButtonStyleClass: 'ui-button-secondary',
194
205
  accept: () => {
195
206
  const fileInputElement = this.fileInput?.nativeElement;
196
207
  fileInputElement.value = '';
@@ -284,7 +295,7 @@ export class ProfilePicturePickerComponent {
284
295
  useExisting: forwardRef(() => ProfilePicturePickerComponent),
285
296
  multi: true,
286
297
  },
287
- ], viewQueries: [{ propertyName: "uploadPicture", first: true, predicate: ["uploadPicture"], descendants: true }, { propertyName: "info", first: true, predicate: ["info"], descendants: true }, { propertyName: "thumbnail", first: true, predicate: ["thumbnail"], descendants: true, read: ElementRef }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<p-confirmDialog></p-confirmDialog>\n\n<input\n #fileInput\n [accept]=\"accept\"\n class=\"file-input\"\n type=\"file\"\n (change)=\"photoSelected($event)\"\n/>\n<div\n #uploadPicture\n class=\"upload-picture\"\n>\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"imageBase64\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\"\n >\n </s-thumbnail>\n <div\n #info\n class=\"info\"\n >\n @if (image) {\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel || 'platform.angular_components.change_photo' | translate\"\n priority=\"primary\"\n (clicked)=\"selectPhoto()\"\n >\n </s-button>\n <s-button\n [label]=\"removeButtonLabel || 'platform.angular_components.remove' | translate\"\n priority=\"secondary\"\n (clicked)=\"removePhoto()\"\n >\n </s-button>\n </div>\n } @else {\n <p class=\"title\">\n {{ simpleTitle || 'platform.angular_components.drag_your_photo_or' | translate }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\"\n >\n {{ actionTitle || 'platform.angular_components.select_a_file' | translate }}\n </span>\n </p>\n }\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n", styles: [".file-input{display:none}.upload-picture{display:flex;flex-wrap:wrap}.upload-picture .info{display:flex;flex-direction:column;padding:12px 20px;align-items:flex-start}.upload-picture .info .title{font-family:Open Sans,sans-serif;font-weight:700;font-size:.875rem;line-height:150%;color:#333}.upload-picture .info .title .action-title{cursor:pointer;color:#428bca}.upload-picture .info .buttons{display:flex;gap:8px}.upload-picture .info .buttons s-button{margin:0}.upload-picture .info .subtitle{padding:6px 0;font-family:Open Sans,sans-serif;font-weight:400;font-size:.75rem;line-height:150%;color:#697882;text-align:center}.upload-picture--small .info{align-items:center}.upload-picture--small .info .title,.upload-picture--small .info .subtitle{text-align:center}.upload-picture--small .info .buttons{justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "component", type: ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel", "ariaLabel"], outputs: ["clicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
298
+ ], viewQueries: [{ propertyName: "uploadPicture", first: true, predicate: ["uploadPicture"], descendants: true }, { propertyName: "info", first: true, predicate: ["info"], descendants: true }, { propertyName: "thumbnail", first: true, predicate: ["thumbnail"], descendants: true, read: ElementRef }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<input\n #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n class=\"file-input\"\n type=\"file\"\n (change)=\"photoSelected($event)\"\n/>\n<div\n #uploadPicture\n class=\"upload-picture\"\n [class.upload-picture--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"imageBase64\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\"\n >\n </s-thumbnail>\n <div\n #info\n class=\"info\"\n >\n @if (image) {\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel || 'platform.angular_components.change_photo' | translate\"\n priority=\"primary\"\n [disabled]=\"disabled\"\n (clicked)=\"selectPhoto()\"\n >\n </s-button>\n <s-button\n [label]=\"removeButtonLabel || 'platform.angular_components.remove' | translate\"\n priority=\"secondary\"\n [disabled]=\"disabled\"\n (clicked)=\"removePhoto()\"\n >\n </s-button>\n </div>\n } @else {\n <p class=\"title\">\n {{ simpleTitle || 'platform.angular_components.drag_your_photo_or' | translate }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\"\n >\n {{ actionTitle || 'platform.angular_components.select_a_file' | translate }}\n </span>\n </p>\n }\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n", styles: [".file-input{display:none}.upload-picture{display:flex;flex-wrap:wrap}.upload-picture--disabled{opacity:.5;pointer-events:none}.upload-picture .info{display:flex;flex-direction:column;padding:12px 20px;align-items:flex-start}.upload-picture .info .title{font-family:Open Sans,sans-serif;font-weight:700;font-size:.875rem;line-height:150%;color:#333}.upload-picture .info .title .action-title{cursor:pointer;color:#428bca}.upload-picture .info .buttons{display:flex;gap:8px}.upload-picture .info .buttons s-button{margin:0}.upload-picture .info .subtitle{padding:6px 0;font-family:Open Sans,sans-serif;font-weight:400;font-size:.75rem;line-height:150%;color:#697882;text-align:center}.upload-picture--small .info{align-items:center}.upload-picture--small .info .title,.upload-picture--small .info .subtitle{text-align:center}.upload-picture--small .info .buttons{justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel", "ariaLabel"], outputs: ["clicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
288
299
  }
289
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerComponent, decorators: [{
290
301
  type: Component,
@@ -294,7 +305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
294
305
  useExisting: forwardRef(() => ProfilePicturePickerComponent),
295
306
  multi: true,
296
307
  },
297
- ], standalone: true, imports: [ConfirmDialog, ThumbnailComponent, ButtonComponent, TranslatePipe], template: "<p-confirmDialog></p-confirmDialog>\n\n<input\n #fileInput\n [accept]=\"accept\"\n class=\"file-input\"\n type=\"file\"\n (change)=\"photoSelected($event)\"\n/>\n<div\n #uploadPicture\n class=\"upload-picture\"\n>\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"imageBase64\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\"\n >\n </s-thumbnail>\n <div\n #info\n class=\"info\"\n >\n @if (image) {\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel || 'platform.angular_components.change_photo' | translate\"\n priority=\"primary\"\n (clicked)=\"selectPhoto()\"\n >\n </s-button>\n <s-button\n [label]=\"removeButtonLabel || 'platform.angular_components.remove' | translate\"\n priority=\"secondary\"\n (clicked)=\"removePhoto()\"\n >\n </s-button>\n </div>\n } @else {\n <p class=\"title\">\n {{ simpleTitle || 'platform.angular_components.drag_your_photo_or' | translate }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\"\n >\n {{ actionTitle || 'platform.angular_components.select_a_file' | translate }}\n </span>\n </p>\n }\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n", styles: [".file-input{display:none}.upload-picture{display:flex;flex-wrap:wrap}.upload-picture .info{display:flex;flex-direction:column;padding:12px 20px;align-items:flex-start}.upload-picture .info .title{font-family:Open Sans,sans-serif;font-weight:700;font-size:.875rem;line-height:150%;color:#333}.upload-picture .info .title .action-title{cursor:pointer;color:#428bca}.upload-picture .info .buttons{display:flex;gap:8px}.upload-picture .info .buttons s-button{margin:0}.upload-picture .info .subtitle{padding:6px 0;font-family:Open Sans,sans-serif;font-weight:400;font-size:.75rem;line-height:150%;color:#697882;text-align:center}.upload-picture--small .info{align-items:center}.upload-picture--small .info .title,.upload-picture--small .info .subtitle{text-align:center}.upload-picture--small .info .buttons{justify-content:center;flex-wrap:wrap}\n"] }]
308
+ ], standalone: true, imports: [ThumbnailComponent, ButtonComponent, TranslatePipe], template: "<input\n #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n class=\"file-input\"\n type=\"file\"\n (change)=\"photoSelected($event)\"\n/>\n<div\n #uploadPicture\n class=\"upload-picture\"\n [class.upload-picture--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"imageBase64\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\"\n >\n </s-thumbnail>\n <div\n #info\n class=\"info\"\n >\n @if (image) {\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel || 'platform.angular_components.change_photo' | translate\"\n priority=\"primary\"\n [disabled]=\"disabled\"\n (clicked)=\"selectPhoto()\"\n >\n </s-button>\n <s-button\n [label]=\"removeButtonLabel || 'platform.angular_components.remove' | translate\"\n priority=\"secondary\"\n [disabled]=\"disabled\"\n (clicked)=\"removePhoto()\"\n >\n </s-button>\n </div>\n } @else {\n <p class=\"title\">\n {{ simpleTitle || 'platform.angular_components.drag_your_photo_or' | translate }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\"\n >\n {{ actionTitle || 'platform.angular_components.select_a_file' | translate }}\n </span>\n </p>\n }\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n", styles: [".file-input{display:none}.upload-picture{display:flex;flex-wrap:wrap}.upload-picture--disabled{opacity:.5;pointer-events:none}.upload-picture .info{display:flex;flex-direction:column;padding:12px 20px;align-items:flex-start}.upload-picture .info .title{font-family:Open Sans,sans-serif;font-weight:700;font-size:.875rem;line-height:150%;color:#333}.upload-picture .info .title .action-title{cursor:pointer;color:#428bca}.upload-picture .info .buttons{display:flex;gap:8px}.upload-picture .info .buttons s-button{margin:0}.upload-picture .info .subtitle{padding:6px 0;font-family:Open Sans,sans-serif;font-weight:400;font-size:.75rem;line-height:150%;color:#697882;text-align:center}.upload-picture--small .info{align-items:center}.upload-picture--small .info .title,.upload-picture--small .info .subtitle{text-align:center}.upload-picture--small .info .buttons{justify-content:center;flex-wrap:wrap}\n"] }]
298
309
  }], propDecorators: { simpleTitle: [{
299
310
  type: Input
300
311
  }], actionTitle: [{
@@ -353,4 +364,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
353
364
  type: HostListener,
354
365
  args: ['window:resize']
355
366
  }] } });
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvcHJvZmlsZS1waWN0dXJlLXBpY2tlci9zcmMvbGliL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIvcHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvcHJvZmlsZS1waWN0dXJlLXBpY2tlci9zcmMvbGliL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIvcHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFFNUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQWVI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QyxZQUFZO3NCQURsQixNQUFNO2dCQVFBLFdBQVc7c0JBRGpCLE1BQU07Z0JBT0EsWUFBWTtzQkFEbEIsTUFBTTtnQkFTQSxXQUFXO3NCQURqQixNQUFNO2dCQTJCQSxVQUFVO3NCQURoQixZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPN0IsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTzlCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd0J6QixRQUFRO3NCQURkLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblRleHRzLCBDcm9wcGVyTGFiZWxzQ29uZmlnLCBGaWxlVmFsaWRhdGlvbkVycm9ycywgUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhIH0gZnJvbSAnLi9tb2RlbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9pbWFnZS1jcm9wcGVyJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZyB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbmltcG9ydCB7IFRodW1ibmFpbENvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGh1bWJuYWlsJztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9idXR0b24nO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIHBhcmEgc2VsZcOnw6NvLCBlZGnDp8OjbyBlIHJlbW/Dp8OjbyBkZSBmb3RvIGRlIHBlcmZpbCBkbyB1c3XDoXJpby5cclxuICogUGVybWl0ZSBhbyB1c3XDoXJpbyBmYXplciB1cGxvYWQgZGUgdW1hIGltYWdlbSwgcmVjb3J0w6EtbGEgY29tIG8ge0BsaW5rIEltYWdlQ3JvcHBlclNlcnZpY2V9XHJcbiAqIGUgY29uZmlybWFyIG91IHJlbW92ZXIgYSBmb3RvIGF0dWFsLiBJbXBsZW1lbnRhIHtAbGluayBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gcGFyYSB1c29cclxuICogZW0gZm9ybXVsw6FyaW9zIHJlYXRpdm9zIGUgdGVtcGxhdGUtZHJpdmVuIGRvIEFuZ3VsYXIuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtcHJvZmlsZS1waWN0dXJlLXBpY2tlclxyXG4gKiAgIGZvcm1Db250cm9sTmFtZT1cImF2YXRhclwiXHJcbiAqICAgc3VidGl0bGU9XCJGb3JtYXRvcyBhY2VpdG9zOiBKUEcgZSBQTkdcIlxyXG4gKiAgIFttYXhGaWxlU2l6ZV09XCIyMDk3MTUyXCJcclxuICogICBhY2NlcHQ9XCJpbWFnZS9qcGVnLGltYWdlL3BuZ1wiXHJcbiAqICAgKGltYWdlQ2hhbmdlKT1cIm9uSW1hZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAqICAgKHJlbW92ZWRJbWFnZSk9XCJvbkltYWdlUmVtb3ZlZCgpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXByb2ZpbGUtcGljdHVyZS1waWNrZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdwcm9maWxlLXBpY3R1cmUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWydwcm9maWxlLXBpY3R1cmUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDb25maXJtRGlhbG9nLCBUaHVtYm5haWxDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgVHJhbnNsYXRlUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbWFnZUNyb3BwZXJTZXJ2aWNlID0gaW5qZWN0KEltYWdlQ3JvcHBlclNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtYXRpb25TZXJ2aWNlID0gaW5qZWN0KENvbmZpcm1hdGlvblNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFTDrXR1bG8gc2ltcGxlcyBleGliaWRvIHF1YW5kbyBuZW5odW1hIGltYWdlbSBlc3TDoSBzZWxlY2lvbmFkYS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzaW1wbGVUaXRsZSE6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUw610dWxvIGRlIGHDp8OjbyBleGliaWRvIGNvbW8gbGFiZWwgcHJpbmNpcGFsIGRvIGJvdMOjbyBkZSB1cGxvYWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWN0aW9uVGl0bGUhOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTGVnZW5kYSBleGliaWRhIGFiYWl4byBkbyB0w610dWxvLCBkZXNjcmV2ZW5kbyBmb3JtYXRvcyBzdXBvcnRhZG9zXHJcbiAgICAgKiBvdSBvdXRyYXMgb3JpZW50YcOnw7VlcyBwYXJhIG8gdXN1w6FyaW8uIENhbXBvIG9icmlnYXTDs3Jpby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyBzdWJ0aXRsZSE6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9wb3LDp8OjbyAoYXNwZWN0IHJhdGlvKSBkbyByZWNvcnRlIGRhIGltYWdlbS5cclxuICAgICAqIFBvciBleGVtcGxvLCBgMWAgcGFyYSBxdWFkcmFkbywgYDE2LzlgIHBhcmEgd2lkZXNjcmVlbi5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCAxXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXNwZWN0UmF0aW8gPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYcOnw7VlcyBkZSByw7N0dWxvcyBleGliaWRvcyBubyBjb21wb25lbnRlIGRlIHJlY29ydGUgZGUgaW1hZ2VtIChjcm9wcGVyKS5cclxuICAgICAqIFBlcm1pdGUgc29icmVzY3JldmVyIG9zIHRleHRvcyBwYWRyw6NvIGRvcyBib3TDtWVzIGUgaW5zdHJ1w6fDtWVzIGRvIGNyb3BwZXIuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY3JvcHBlckxhYmVsc0NvbmZpZz86IENyb3BwZXJMYWJlbHNDb25maWc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gZG8gYm90w6NvIGRlIHJlbW/Dp8OjbyBkYSBmb3RvIGF0dWFsLlxyXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgbyBsYWJlbCBwYWRyw6NvIGRlIHJlbW/Dp8Ojby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZW1vdmVCdXR0b25MYWJlbD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBkbyBib3TDo28gZGUgdHJvY2EgZGEgZm90byBhdHVhbC5cclxuICAgICAqIFNlIG7Do28gaW5mb3JtYWRvLCB1dGlsaXphIG8gbGFiZWwgcGFkcsOjbyBkZSBhbHRlcmHDp8Ojby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjaGFuZ2VCdXR0b25MYWJlbD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0b3MgcGVyc29uYWxpemFkb3MgZXhpYmlkb3Mgbm8gZGnDoWxvZ28gZGUgY29uZmlybWHDp8Ojb1xyXG4gICAgICogYW8gcmVtb3ZlciBvdSBzdWJzdGl0dWlyIGEgZm90by4gUGVybWl0ZSBzb2JyZXNjcmV2ZXIgdMOtdHVsbywgbWVuc2FnZW0gZSBib3TDtWVzLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbmZpcm1hdGlvblRleHRzPzogQ29uZmlybWF0aW9uVGV4dHM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGFtYW5obyBtw6F4aW1vIHBlcm1pdGlkbyBwYXJhIG8gYXJxdWl2byBkZSBpbWFnZW0sIGVtIGJ5dGVzLlxyXG4gICAgICogUXVhbmRvIG8gYXJxdWl2byBleGNlZGUgZXNzZSBsaW1pdGUsIG8gb3V0cHV0IGBpbnZhbGlkRmlsZWAgw6kgZW1pdGlkby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBtYXhGaWxlU2l6ZT86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUaXBvcyBNSU1FIGFjZWl0b3MgcGVsbyBpbnB1dCBkZSBhcnF1aXZvLlxyXG4gICAgICogRXhlbXBsbzogYFwiaW1hZ2UvanBlZyxpbWFnZS9wbmdcImAuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWNjZXB0Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3RhIGRlIGV4dGVuc8O1ZXMgZGUgYXJxdWl2byBhY2VpdGFzIHBhcmEgdmFsaWRhw6fDo28uXHJcbiAgICAgKiBFeGVtcGxvOiBgWycuanBnJywgJy5qcGVnJywgJy5wbmcnXWAuXHJcbiAgICAgKlxyXG4gICAgICogQGRlZmF1bHQgW11cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIEltYWdlbSBhdHVhbCBkbyBjb21wb25lbnRlLiBQb2RlIHNlciB1bWEgc3RyaW5nIGJhc2U2NCwgdW0gb2JqZXRvXHJcbiAgICAgKiB7QGxpbmsgUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhfSBjb20gbWV0YWRhZG9zLCBvdSBgbnVsbGAgcGFyYSBzZW0gaW1hZ2VtLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IG51bGxcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbWFnZTogc3RyaW5nIHwgUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndXBsb2FkUGljdHVyZScpXHJcbiAgICBwdWJsaWMgdXBsb2FkUGljdHVyZTogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2luZm8nKVxyXG4gICAgcHVibGljIGluZm86IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCd0aHVtYm5haWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHB1YmxpYyB0aHVtYm5haWw6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHB1YmxpYyBmaWxlSW5wdXQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgaW1hZ2VDaGFuZ2VgIGVtIHZleiBkZXN0ZSBvdXRwdXQuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBhbyBzZWxlY2lvbmFyIG91IHJlY29ydGFyIHVtYSBub3ZhIGltYWdlbS4gRW1pdGUgYSBzdHJpbmcgYmFzZTY0IGRhIGltYWdlbS5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY2hhbmdlZEltYWdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGFvIHNlbGVjaW9uYXIsIHJlY29ydGFyIG91IGFsdGVyYXIgYSBpbWFnZW0uXHJcbiAgICAgKiBFbWl0ZSBhIHN0cmluZyBiYXNlNjQgb3UgdW0gb2JqZXRvIHtAbGluayBQcm9maWxlUGljdHVyZVBpY2tlckRhdGF9IGNvbSBvcyBkYWRvcyBkYSBpbWFnZW0uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGltYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBQcm9maWxlUGljdHVyZVBpY2tlckRhdGE+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjb25maXJtYSBhIHJlbW/Dp8OjbyBkYSBmb3RvIGF0dWFsLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZW1vdmVkSW1hZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBhcnF1aXZvIHNlbGVjaW9uYWRvIG7Do28gcGFzc2EgbmEgdmFsaWRhw6fDo28uXHJcbiAgICAgKiBFbWl0ZSB1bSBvYmpldG8ge0BsaW5rIEZpbGVWYWxpZGF0aW9uRXJyb3JzfSBkZXNjcmV2ZW5kbyBvcyBlcnJvcyBlbmNvbnRyYWRvc1xyXG4gICAgICogKGV4LjogdGFtYW5obyBleGNlZGlkbywgZXh0ZW5zw6NvIGludsOhbGlkYSkuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGludmFsaWRGaWxlOiBFdmVudEVtaXR0ZXI8RmlsZVZhbGlkYXRpb25FcnJvcnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgaW1hZ2VCYXNlNjQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuaW1hZ2UgPT09ICdzdHJpbmcnID8gdGhpcy5pbWFnZSA6ICh0aGlzLmltYWdlPy5iYXNlNjQgPz8gJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX29uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcgfCBQcm9maWxlUGljdHVyZVBpY2tlckRhdGEpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9vblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBQcm9maWxlUGljdHVyZVBpY2tlckRhdGEpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmltYWdlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9ub3JtYWxpemVTdXBvcnRlZEV4dGVuc2lvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkPy4oKTtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlckZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcclxuXHJcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChkYXRhVHJhbnNmZXJGaWxlcykpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhVHJhbnNmZXJGaWxlcz8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBkYXRhVHJhbnNmZXJGaWxlcy5pdGVtKGkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3Nob3dJbWFnZUNyb3BwZXIoZmlsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZlcmlmaWNhbmRvIG8gcmVkaW1lbnNpb25hbWVudG8gcGFyYSBhanVzdGFyIG8gZGVzaWduIHBhcmEgZmljYXIgcmVzcG9uc2l2by5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxyXG4gICAgcHVibGljIG9uUmVzaXplKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZFBpY3R1cmUgJiYgdGhpcy5pbmZvICYmIHRoaXMudGh1bWJuYWlsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFBpY3R1cmVXaWR0aCA9IHRoaXMuX2dldFdpZHRoRWxlbWVudCh0aGlzLnVwbG9hZFBpY3R1cmUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmZvV2lkdGggPSB0aGlzLl9nZXRXaWR0aEVsZW1lbnQodGhpcy5pbmZvKTtcclxuICAgICAgICAgICAgY29uc3QgdGh1bWJuYWlsV2lkdGggPSB0aGlzLl9nZXRXaWR0aEVsZW1lbnQodGhpcy50aHVtYm5haWwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRodW1ibmFpbFdpZHRoICsgaW5mb1dpZHRoID4gdXBsb2FkUGljdHVyZVdpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFBpY3R1cmUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd1cGxvYWQtcGljdHVyZS0tc21hbGwnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUGljdHVyZS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3VwbG9hZC1waWN0dXJlLS1zbWFsbCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZWxlY3RQaG90bygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmaWxlSW5wdXRFbGVtZW50ID0gdGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgZmlsZUlucHV0RWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIGZpbGVJbnB1dEVsZW1lbnQuY2xpY2soKTtcclxuXHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkPy4oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlUGhvdG8oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICAgICAgICBtZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25UZXh0cz8ucmVtb3ZhbE1lc3NhZ2UgPz9cclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY29uZmlybWF0aW9uX3JlbW92ZV9pbWFnZScpLFxyXG4gICAgICAgICAgICBhY2NlcHRMYWJlbDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uVGV4dHM/LnJlbW92YWxBY2NlcHRMYWJlbCA/P1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5yZW1vdmUnKSxcclxuICAgICAgICAgICAgcmVqZWN0TGFiZWw6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblRleHRzPy5yZW1vdmFsUmVqZWN0TGFiZWwgPz9cclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY2FuY2VsJyksXHJcbiAgICAgICAgICAgIGhlYWRlcjpcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uVGV4dHM/LnJlbW92YWxIZWFkZXIgPz9cclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMucmVtb3ZlX2ltYWdlJyksXHJcbiAgICAgICAgICAgIHJlamVjdEJ1dHRvblN0eWxlQ2xhc3M6ICd1aS1idXR0b24tc2Vjb25kYXJ5JyxcclxuICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlSW5wdXRFbGVtZW50ID0gdGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBmaWxlSW5wdXRFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlZEltYWdlLmVtaXQoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcGhvdG9TZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0ltYWdlQ3JvcHBlcihldmVudC5zcmNFbGVtZW50LmZpbGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaG93SW1hZ2VDcm9wcGVyKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3ZhbGlkYXRlRGF0YShmaWxlcykpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xyXG5cclxuICAgICAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgICAgZmlsZVJlYWRlci5vbmxvYWRlbmQgPSAoZmlsZUV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZUNyb3BwZXJTZXJ2aWNlLnNob3coe1xyXG4gICAgICAgICAgICAgICAgaW1hZ2VTb3VyY2U6IGZpbGVFdmVudC50YXJnZXQucmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgY3JvcHBlZEltYWdlOiAoaW1hZ2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRJbWFnZS5lbWl0KGltYWdlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YTogUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhID0geyBzb3VyY2U6IGZpbGUsIGJhc2U2NDogaW1hZ2UgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2UgbyB0aXBvIGRvIGltYWdlIGZvciBzdHJpbmcgZXUgcHJlY2lzbyBhdHVhbGl6YXIgZSBtYW5kYXIgcGFyYSBvIGltYWdlQ2hhbmdlIHVtYSBzdHJpbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2UgZm9yIFByb2ZpbGVQaWN0dXJlUGlja2VyRGF0YSBldSBwcmVjaXNvIG1hbmRhciBvIGRhdGEgY29tcGxldG8uXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltYWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VDaGFuZ2UuZW1pdChpbWFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VDaGFuZ2UuZW1pdChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odGhpcy5pbWFnZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2hhbmdlSW1hZ2U6ICgpID0+IHRoaXMuc2VsZWN0UGhvdG8oKSxcclxuICAgICAgICAgICAgICAgIGFsbG93U2VsZWN0QW5vdGhlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbzogdGhpcy5hc3BlY3RSYXRpbyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuY3JvcHBlckxhYmVsc0NvbmZpZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9ub3JtYWxpemVTdXBvcnRlZEV4dGVuc2lvbnMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zPy5tYXAoKGV4dGVuc2lvbikgPT5cclxuICAgICAgICAgICAgZXh0ZW5zaW9uLnJlcGxhY2UoJy4nLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ZhbGlkYXRlRGF0YShmaWxlczogRmlsZVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZTogbnVsbCwgdmFsaWRhdGlvbjogJ21heEZpbGVMaW1pdCcgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuXHJcbiAgICAgICAgaWYgKCFmaWxlLnR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZSwgdmFsaWRhdGlvbjogJ3R5cGVJbnZhbGlkJyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl92YWxpZGF0ZUZpbGVFeHRlbnNpb24oZmlsZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZSwgdmFsaWRhdGlvbjogJ3Vuc3VwcG9ydGVkRXh0ZW5zaW9uJyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl92YWxpZGF0ZUZpbGVTaXplKGZpbGUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZEZpbGUuZW1pdCh7IGZpbGUsIHZhbGlkYXRpb246ICdtYXhGaWxlU2l6ZScgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ZhbGlkYXRlRmlsZUV4dGVuc2lvbihmaWxlOiBGaWxlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpID8/ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dGVuc2lvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ZhbGlkYXRlRmlsZVNpemUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1heEZpbGVTaXplKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWxlLnNpemUgPD0gdGhpcy5tYXhGaWxlU2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0V2lkdGhFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IHsgbGVmdCwgcmlnaHQgfSA9IGVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICByZXR1cm4gcmlnaHQgLSBsZWZ0O1xyXG4gICAgfVxyXG59XHJcbiIsIjxwLWNvbmZpcm1EaWFsb2c+PC9wLWNvbmZpcm1EaWFsb2c+XG5cbjxpbnB1dFxuICAgICNmaWxlSW5wdXRcbiAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICB0eXBlPVwiZmlsZVwiXG4gICAgKGNoYW5nZSk9XCJwaG90b1NlbGVjdGVkKCRldmVudClcIlxuLz5cbjxkaXZcbiAgICAjdXBsb2FkUGljdHVyZVxuICAgIGNsYXNzPVwidXBsb2FkLXBpY3R1cmVcIlxuPlxuICAgIDxzLXRodW1ibmFpbFxuICAgICAgICAjdGh1bWJuYWlsXG4gICAgICAgIGljb25DbGFzcz1cImZhciBmYS11c2VyXCJcbiAgICAgICAgW2ltYWdlU291cmNlXT1cImltYWdlQmFzZTY0XCJcbiAgICAgICAgW2hhc0FjdGlvbl09XCIhaW1hZ2VcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGhvdG8oKVwiXG4gICAgPlxuICAgIDwvcy10aHVtYm5haWw+XG4gICAgPGRpdlxuICAgICAgICAjaW5mb1xuICAgICAgICBjbGFzcz1cImluZm9cIlxuICAgID5cbiAgICAgICAgQGlmIChpbWFnZSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNoYW5nZUJ1dHRvbkxhYmVsIHx8ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY2hhbmdlX3Bob3RvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInNlbGVjdFBob3RvKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3MtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwicmVtb3ZlQnV0dG9uTGFiZWwgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5yZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJyZW1vdmVQaG90bygpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICB7eyBzaW1wbGVUaXRsZSB8fCAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmRyYWdfeW91cl9waG90b19vcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi10aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQaG90bygpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvblRpdGxlIHx8ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuc2VsZWN0X2FfZmlsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIH1cbiAgICAgICAgPHAgY2xhc3M9XCJzdWJ0aXRsZVwiPnt7IHN1YnRpdGxlIH19PC9wPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvcHJvZmlsZS1waWN0dXJlLXBpY2tlci9zcmMvbGliL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIvcHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvcHJvZmlsZS1waWN0dXJlLXBpY2tlci9zcmMvbGliL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIvcHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7O0FBRTVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFlSCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3JCLG1CQUFtQixHQUFHLE1BQU0s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QkFBQyxlQUFlO2dCQUluQixJQUFJO3NCQURWLFNBQVM7dUJBQUMsTUFBTTtnQkFJVixTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJckMsU0FBUztzQkFEZixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBUXJDLFlBQVk7c0JBRGxCLE1BQU07Z0JBUUEsV0FBVztzQkFEakIsTUFBTTtnQkFPQSxZQUFZO3NCQURsQixNQUFNO2dCQVNBLFdBQVc7c0JBRGpCLE1BQU07Z0JBaUNBLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU83QixXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPOUIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE0QnpCLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uVGV4dHMsIENyb3BwZXJMYWJlbHNDb25maWcsIEZpbGVWYWxpZGF0aW9uRXJyb3JzLCBQcm9maWxlUGljdHVyZVBpY2tlckRhdGEgfSBmcm9tICcuL21vZGVscy9pbmRleCc7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy91dGlscyc7XHJcbmltcG9ydCB7IEltYWdlQ3JvcHBlclNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ltYWdlLWNyb3BwZXInO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvY29uZmlybS1kaWFsb2cnO1xyXG5pbXBvcnQgeyBUaHVtYm5haWxDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RodW1ibmFpbCc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvYnV0dG9uJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBwYXJhIHNlbGXDp8OjbywgZWRpw6fDo28gZSByZW1vw6fDo28gZGUgZm90byBkZSBwZXJmaWwgZG8gdXN1w6FyaW8uXHJcbiAqIFBlcm1pdGUgYW8gdXN1w6FyaW8gZmF6ZXIgdXBsb2FkIGRlIHVtYSBpbWFnZW0sIHJlY29ydMOhLWxhIGNvbSBvIHtAbGluayBJbWFnZUNyb3BwZXJTZXJ2aWNlfVxyXG4gKiBlIGNvbmZpcm1hciBvdSByZW1vdmVyIGEgZm90byBhdHVhbC4gSW1wbGVtZW50YSB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IHBhcmEgdXNvXHJcbiAqIGVtIGZvcm11bMOhcmlvcyByZWF0aXZvcyBlIHRlbXBsYXRlLWRyaXZlbiBkbyBBbmd1bGFyLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLXByb2ZpbGUtcGljdHVyZS1waWNrZXJcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJhdmF0YXJcIlxyXG4gKiAgIHN1YnRpdGxlPVwiRm9ybWF0b3MgYWNlaXRvczogSlBHIGUgUE5HXCJcclxuICogICBbbWF4RmlsZVNpemVdPVwiMjA5NzE1MlwiXHJcbiAqICAgYWNjZXB0PVwiaW1hZ2UvanBlZyxpbWFnZS9wbmdcIlxyXG4gKiAgIChpbWFnZUNoYW5nZSk9XCJvbkltYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gKiAgIChyZW1vdmVkSW1hZ2UpPVwib25JbWFnZVJlbW92ZWQoKVwiIC8+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1wcm9maWxlLXBpY3R1cmUtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAncHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsncHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJvZmlsZVBpY3R1cmVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbVGh1bWJuYWlsQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIFRyYW5zbGF0ZVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZmlsZVBpY3R1cmVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW1hZ2VDcm9wcGVyU2VydmljZSA9IGluamVjdChJbWFnZUNyb3BwZXJTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybURpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQ29uZmlybURpYWxvZ1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFTDrXR1bG8gc2ltcGxlcyBleGliaWRvIHF1YW5kbyBuZW5odW1hIGltYWdlbSBlc3TDoSBzZWxlY2lvbmFkYS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzaW1wbGVUaXRsZSE6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUw610dWxvIGRlIGHDp8OjbyBleGliaWRvIGNvbW8gbGFiZWwgcHJpbmNpcGFsIGRvIGJvdMOjbyBkZSB1cGxvYWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWN0aW9uVGl0bGUhOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTGVnZW5kYSBleGliaWRhIGFiYWl4byBkbyB0w610dWxvLCBkZXNjcmV2ZW5kbyBmb3JtYXRvcyBzdXBvcnRhZG9zXHJcbiAgICAgKiBvdSBvdXRyYXMgb3JpZW50YcOnw7VlcyBwYXJhIG8gdXN1w6FyaW8uIENhbXBvIG9icmlnYXTDs3Jpby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyBzdWJ0aXRsZSE6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9wb3LDp8OjbyAoYXNwZWN0IHJhdGlvKSBkbyByZWNvcnRlIGRhIGltYWdlbS5cclxuICAgICAqIFBvciBleGVtcGxvLCBgMWAgcGFyYSBxdWFkcmFkbywgYDE2LzlgIHBhcmEgd2lkZXNjcmVlbi5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCAxXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXNwZWN0UmF0aW8gPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYcOnw7VlcyBkZSByw7N0dWxvcyBleGliaWRvcyBubyBjb21wb25lbnRlIGRlIHJlY29ydGUgZGUgaW1hZ2VtIChjcm9wcGVyKS5cclxuICAgICAqIFBlcm1pdGUgc29icmVzY3JldmVyIG9zIHRleHRvcyBwYWRyw6NvIGRvcyBib3TDtWVzIGUgaW5zdHJ1w6fDtWVzIGRvIGNyb3BwZXIuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY3JvcHBlckxhYmVsc0NvbmZpZz86IENyb3BwZXJMYWJlbHNDb25maWc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gZG8gYm90w6NvIGRlIHJlbW/Dp8OjbyBkYSBmb3RvIGF0dWFsLlxyXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgbyBsYWJlbCBwYWRyw6NvIGRlIHJlbW/Dp8Ojby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZW1vdmVCdXR0b25MYWJlbD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBkbyBib3TDo28gZGUgdHJvY2EgZGEgZm90byBhdHVhbC5cclxuICAgICAqIFNlIG7Do28gaW5mb3JtYWRvLCB1dGlsaXphIG8gbGFiZWwgcGFkcsOjbyBkZSBhbHRlcmHDp8Ojby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjaGFuZ2VCdXR0b25MYWJlbD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0b3MgcGVyc29uYWxpemFkb3MgZXhpYmlkb3Mgbm8gZGnDoWxvZ28gZGUgY29uZmlybWHDp8Ojb1xyXG4gICAgICogYW8gcmVtb3ZlciBvdSBzdWJzdGl0dWlyIGEgZm90by4gUGVybWl0ZSBzb2JyZXNjcmV2ZXIgdMOtdHVsbywgbWVuc2FnZW0gZSBib3TDtWVzLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbmZpcm1hdGlvblRleHRzPzogQ29uZmlybWF0aW9uVGV4dHM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGFtYW5obyBtw6F4aW1vIHBlcm1pdGlkbyBwYXJhIG8gYXJxdWl2byBkZSBpbWFnZW0sIGVtIGJ5dGVzLlxyXG4gICAgICogUXVhbmRvIG8gYXJxdWl2byBleGNlZGUgZXNzZSBsaW1pdGUsIG8gb3V0cHV0IGBpbnZhbGlkRmlsZWAgw6kgZW1pdGlkby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBtYXhGaWxlU2l6ZT86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUaXBvcyBNSU1FIGFjZWl0b3MgcGVsbyBpbnB1dCBkZSBhcnF1aXZvLlxyXG4gICAgICogRXhlbXBsbzogYFwiaW1hZ2UvanBlZyxpbWFnZS9wbmdcImAuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWNjZXB0Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3RhIGRlIGV4dGVuc8O1ZXMgZGUgYXJxdWl2byBhY2VpdGFzIHBhcmEgdmFsaWRhw6fDo28uXHJcbiAgICAgKiBFeGVtcGxvOiBgWycuanBnJywgJy5qcGVnJywgJy5wbmcnXWAuXHJcbiAgICAgKlxyXG4gICAgICogQGRlZmF1bHQgW11cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIEltYWdlbSBhdHVhbCBkbyBjb21wb25lbnRlLiBQb2RlIHNlciB1bWEgc3RyaW5nIGJhc2U2NCwgdW0gb2JqZXRvXHJcbiAgICAgKiB7QGxpbmsgUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhfSBjb20gbWV0YWRhZG9zLCBvdSBgbnVsbGAgcGFyYSBzZW0gaW1hZ2VtLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IG51bGxcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbWFnZTogc3RyaW5nIHwgUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndXBsb2FkUGljdHVyZScpXHJcbiAgICBwdWJsaWMgdXBsb2FkUGljdHVyZTogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2luZm8nKVxyXG4gICAgcHVibGljIGluZm86IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCd0aHVtYm5haWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHB1YmxpYyB0aHVtYm5haWw6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHB1YmxpYyBmaWxlSW5wdXQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgaW1hZ2VDaGFuZ2VgIGVtIHZleiBkZXN0ZSBvdXRwdXQuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBhbyBzZWxlY2lvbmFyIG91IHJlY29ydGFyIHVtYSBub3ZhIGltYWdlbS4gRW1pdGUgYSBzdHJpbmcgYmFzZTY0IGRhIGltYWdlbS5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY2hhbmdlZEltYWdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGFvIHNlbGVjaW9uYXIsIHJlY29ydGFyIG91IGFsdGVyYXIgYSBpbWFnZW0uXHJcbiAgICAgKiBFbWl0ZSBhIHN0cmluZyBiYXNlNjQgb3UgdW0gb2JqZXRvIHtAbGluayBQcm9maWxlUGljdHVyZVBpY2tlckRhdGF9IGNvbSBvcyBkYWRvcyBkYSBpbWFnZW0uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGltYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBQcm9maWxlUGljdHVyZVBpY2tlckRhdGE+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjb25maXJtYSBhIHJlbW/Dp8OjbyBkYSBmb3RvIGF0dWFsLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZW1vdmVkSW1hZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBhcnF1aXZvIHNlbGVjaW9uYWRvIG7Do28gcGFzc2EgbmEgdmFsaWRhw6fDo28uXHJcbiAgICAgKiBFbWl0ZSB1bSBvYmpldG8ge0BsaW5rIEZpbGVWYWxpZGF0aW9uRXJyb3JzfSBkZXNjcmV2ZW5kbyBvcyBlcnJvcyBlbmNvbnRyYWRvc1xyXG4gICAgICogKGV4LjogdGFtYW5obyBleGNlZGlkbywgZXh0ZW5zw6NvIGludsOhbGlkYSkuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGludmFsaWRGaWxlOiBFdmVudEVtaXR0ZXI8RmlsZVZhbGlkYXRpb25FcnJvcnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgaW1hZ2VCYXNlNjQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuaW1hZ2UgPT09ICdzdHJpbmcnID8gdGhpcy5pbWFnZSA6ICh0aGlzLmltYWdlPy5iYXNlNjQgPz8gJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX29uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcgfCBQcm9maWxlUGljdHVyZVBpY2tlckRhdGEpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9vblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBQcm9maWxlUGljdHVyZVBpY2tlckRhdGEpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmltYWdlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbm9ybWFsaXplU3Vwb3J0ZWRFeHRlbnNpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZD8uKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBbXTtcclxuICAgICAgICBjb25zdCBkYXRhVHJhbnNmZXJGaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XHJcblxyXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZGF0YVRyYW5zZmVyRmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YVRyYW5zZmVyRmlsZXM/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gZGF0YVRyYW5zZmVyRmlsZXMuaXRlbShpKTtcclxuICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaXRlbSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWxlcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zaG93SW1hZ2VDcm9wcGVyKGZpbGVzKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBWZXJpZmljYW5kbyBvIHJlZGltZW5zaW9uYW1lbnRvIHBhcmEgYWp1c3RhciBvIGRlc2lnbiBwYXJhIGZpY2FyIHJlc3BvbnNpdm8uXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICAgIHB1YmxpYyBvblJlc2l6ZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRQaWN0dXJlICYmIHRoaXMuaW5mbyAmJiB0aGlzLnRodW1ibmFpbCkge1xyXG4gICAgICAgICAgICBjb25zdCB1cGxvYWRQaWN0dXJlV2lkdGggPSB0aGlzLl9nZXRXaWR0aEVsZW1lbnQodGhpcy51cGxvYWRQaWN0dXJlKTtcclxuICAgICAgICAgICAgY29uc3QgaW5mb1dpZHRoID0gdGhpcy5fZ2V0V2lkdGhFbGVtZW50KHRoaXMuaW5mbyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRodW1ibmFpbFdpZHRoID0gdGhpcy5fZ2V0V2lkdGhFbGVtZW50KHRoaXMudGh1bWJuYWlsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aHVtYm5haWxXaWR0aCArIGluZm9XaWR0aCA+IHVwbG9hZFBpY3R1cmVXaWR0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQaWN0dXJlLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndXBsb2FkLXBpY3R1cmUtLXNtYWxsJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFBpY3R1cmUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd1cGxvYWQtcGljdHVyZS0tc21hbGwnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VsZWN0UGhvdG8oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsZUlucHV0RWxlbWVudCA9IHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGZpbGVJbnB1dEVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICBmaWxlSW5wdXRFbGVtZW50LmNsaWNrKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZD8uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZVBob3RvKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblRleHRzPy5yZW1vdmFsTWVzc2FnZSA/P1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb25maXJtYXRpb25fcmVtb3ZlX2ltYWdlJyksXHJcbiAgICAgICAgICAgIGFjY2VwdExhYmVsOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25UZXh0cz8ucmVtb3ZhbEFjY2VwdExhYmVsID8/XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnJlbW92ZScpLFxyXG4gICAgICAgICAgICByZWplY3RMYWJlbDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uVGV4dHM/LnJlbW92YWxSZWplY3RMYWJlbCA/P1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jYW5jZWwnKSxcclxuICAgICAgICAgICAgaGVhZGVyOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25UZXh0cz8ucmVtb3ZhbEhlYWRlciA/P1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5yZW1vdmVfaW1hZ2UnKSxcclxuICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlSW5wdXRFbGVtZW50ID0gdGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBmaWxlSW5wdXRFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlZEltYWdlLmVtaXQoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcGhvdG9TZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0ltYWdlQ3JvcHBlcihldmVudC5zcmNFbGVtZW50LmZpbGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaG93SW1hZ2VDcm9wcGVyKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3ZhbGlkYXRlRGF0YShmaWxlcykpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xyXG5cclxuICAgICAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgICAgZmlsZVJlYWRlci5vbmxvYWRlbmQgPSAoZmlsZUV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZUNyb3BwZXJTZXJ2aWNlLnNob3coe1xyXG4gICAgICAgICAgICAgICAgaW1hZ2VTb3VyY2U6IGZpbGVFdmVudC50YXJnZXQucmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgY3JvcHBlZEltYWdlOiAoaW1hZ2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRJbWFnZS5lbWl0KGltYWdlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YTogUHJvZmlsZVBpY3R1cmVQaWNrZXJEYXRhID0geyBzb3VyY2U6IGZpbGUsIGJhc2U2NDogaW1hZ2UgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2UgbyB0aXBvIGRvIGltYWdlIGZvciBzdHJpbmcgZXUgcHJlY2lzbyBhdHVhbGl6YXIgZSBtYW5kYXIgcGFyYSBvIGltYWdlQ2hhbmdlIHVtYSBzdHJpbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2UgZm9yIFByb2ZpbGVQaWN0dXJlUGlja2VyRGF0YSBldSBwcmVjaXNvIG1hbmRhciBvIGRhdGEgY29tcGxldG8uXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltYWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VDaGFuZ2UuZW1pdChpbWFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VDaGFuZ2UuZW1pdChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odGhpcy5pbWFnZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2hhbmdlSW1hZ2U6ICgpID0+IHRoaXMuc2VsZWN0UGhvdG8oKSxcclxuICAgICAgICAgICAgICAgIGFsbG93U2VsZWN0QW5vdGhlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbzogdGhpcy5hc3BlY3RSYXRpbyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuY3JvcHBlckxhYmVsc0NvbmZpZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9ub3JtYWxpemVTdXBvcnRlZEV4dGVuc2lvbnMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zPy5tYXAoKGV4dGVuc2lvbikgPT5cclxuICAgICAgICAgICAgZXh0ZW5zaW9uLnJlcGxhY2UoJy4nLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ZhbGlkYXRlRGF0YShmaWxlczogRmlsZVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZTogbnVsbCwgdmFsaWRhdGlvbjogJ21heEZpbGVMaW1pdCcgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuXHJcbiAgICAgICAgaWYgKCFmaWxlLnR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZSwgdmFsaWRhdGlvbjogJ3R5cGVJbnZhbGlkJyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl92YWxpZGF0ZUZpbGVFeHRlbnNpb24oZmlsZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZSwgdmFsaWRhdGlvbjogJ3Vuc3VwcG9ydGVkRXh0ZW5zaW9uJyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl92YWxpZGF0ZUZpbGVTaXplKGZpbGUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZEZpbGUuZW1pdCh7IGZpbGUsIHZhbGlkYXRpb246ICdtYXhGaWxlU2l6ZScgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ZhbGlkYXRlRmlsZUV4dGVuc2lvbihmaWxlOiBGaWxlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpID8/ICcnO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dGVuc2lvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ZhbGlkYXRlRmlsZVNpemUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1heEZpbGVTaXplKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWxlLnNpemUgPD0gdGhpcy5tYXhGaWxlU2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0V2lkdGhFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IHsgbGVmdCwgcmlnaHQgfSA9IGVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICByZXR1cm4gcmlnaHQgLSBsZWZ0O1xyXG4gICAgfVxyXG59XHJcbiIsIjxpbnB1dFxuICAgICNmaWxlSW5wdXRcbiAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBjbGFzcz1cImZpbGUtaW5wdXRcIlxuICAgIHR5cGU9XCJmaWxlXCJcbiAgICAoY2hhbmdlKT1cInBob3RvU2VsZWN0ZWQoJGV2ZW50KVwiXG4vPlxuPGRpdlxuICAgICN1cGxvYWRQaWN0dXJlXG4gICAgY2xhc3M9XCJ1cGxvYWQtcGljdHVyZVwiXG4gICAgW2NsYXNzLnVwbG9hZC1waWN0dXJlLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4+XG4gICAgPHMtdGh1bWJuYWlsXG4gICAgICAgICN0aHVtYm5haWxcbiAgICAgICAgaWNvbkNsYXNzPVwiZmFyIGZhLXVzZXJcIlxuICAgICAgICBbaW1hZ2VTb3VyY2VdPVwiaW1hZ2VCYXNlNjRcIlxuICAgICAgICBbaGFzQWN0aW9uXT1cIiFpbWFnZVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQaG90bygpXCJcbiAgICA+XG4gICAgPC9zLXRodW1ibmFpbD5cbiAgICA8ZGl2XG4gICAgICAgICNpbmZvXG4gICAgICAgIGNsYXNzPVwiaW5mb1wiXG4gICAgPlxuICAgICAgICBAaWYgKGltYWdlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY2hhbmdlQnV0dG9uTGFiZWwgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jaGFuZ2VfcGhvdG8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic2VsZWN0UGhvdG8oKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJyZW1vdmVCdXR0b25MYWJlbCB8fCAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnJlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInJlbW92ZVBob3RvKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3MtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7IHNpbXBsZVRpdGxlIHx8ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuZHJhZ195b3VyX3Bob3RvX29yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLXRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBob3RvKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYWN0aW9uVGl0bGUgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zZWxlY3RfYV9maWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgfVxuICAgICAgICA8cCBjbGFzcz1cInN1YnRpdGxlXCI+e3sgc3VidGl0bGUgfX08L3A+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,19 +1,18 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { ConfirmationService } from 'primeng/api';
3
2
  import { ProfilePicturePickerComponent } from './profile-picture-picker.component';
4
3
  import { ImageCropperService } from '@seniorsistemas/angular-components/image-cropper';
5
4
  import * as i0 from "@angular/core";
6
5
  export class ProfilePicturePickerModule {
7
6
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
7
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerModule, imports: [ProfilePicturePickerComponent], exports: [ProfilePicturePickerComponent] });
9
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerModule, providers: [ImageCropperService, ConfirmationService], imports: [ProfilePicturePickerComponent] });
8
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerModule, providers: [ImageCropperService], imports: [ProfilePicturePickerComponent] });
10
9
  }
11
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerModule, decorators: [{
12
11
  type: NgModule,
13
12
  args: [{
14
13
  imports: [ProfilePicturePickerComponent],
15
14
  exports: [ProfilePicturePickerComponent],
16
- providers: [ImageCropperService, ConfirmationService],
15
+ providers: [ImageCropperService],
17
16
  }]
18
17
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1waWN0dXJlLXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvcHJvZmlsZS1waWN0dXJlLXBpY2tlci9zcmMvbGliL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIvcHJvZmlsZS1waWN0dXJlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7O0FBT3ZGLE1BQU0sT0FBTywwQkFBMEI7d0dBQTFCLDBCQUEwQjt5R0FBMUIsMEJBQTBCLFlBSnpCLDZCQUE2QixhQUM3Qiw2QkFBNkI7eUdBRzlCLDBCQUEwQixhQUZ4QixDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLFlBRjNDLDZCQUE2Qjs7NEZBSTlCLDBCQUEwQjtrQkFMdEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQ3hDLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgUHJvZmlsZVBpY3R1cmVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VDcm9wcGVyU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW1hZ2UtY3JvcHBlcic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1Byb2ZpbGVQaWN0dXJlUGlja2VyQ29tcG9uZW50XSxcclxuICAgIGV4cG9ydHM6IFtQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudF0sXHJcbiAgICBwcm92aWRlcnM6IFtJbWFnZUNyb3BwZXJTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVQaWN0dXJlUGlja2VyTW9kdWxlIHt9XHJcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1waWN0dXJlLXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvcHJvZmlsZS1waWN0dXJlLXBpY2tlci9zcmMvbGliL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIvcHJvZmlsZS1waWN0dXJlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7QUFPdkYsTUFBTSxPQUFPLDBCQUEwQjt3R0FBMUIsMEJBQTBCO3lHQUExQiwwQkFBMEIsWUFKekIsNkJBQTZCLGFBQzdCLDZCQUE2Qjt5R0FHOUIsMEJBQTBCLGFBRnhCLENBQUMsbUJBQW1CLENBQUMsWUFGdEIsNkJBQTZCOzs0RkFJOUIsMEJBQTBCO2tCQUx0QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDeEMsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFByb2ZpbGVQaWN0dXJlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9maWxlLXBpY3R1cmUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEltYWdlQ3JvcHBlclNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ltYWdlLWNyb3BwZXInO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbUHJvZmlsZVBpY3R1cmVQaWNrZXJDb21wb25lbnRdLFxyXG4gICAgcHJvdmlkZXJzOiBbSW1hZ2VDcm9wcGVyU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlUGljdHVyZVBpY2tlck1vZHVsZSB7fVxyXG4iXX0=