@pepperi-addons/ngx-lib 0.2.49 → 0.2.51-beta.10

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 (66) hide show
  1. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
  2. package/bundles/pepperi-addons-ngx-lib-form.umd.js +3296 -50
  3. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  4. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
  5. package/bundles/pepperi-addons-ngx-lib-icon.umd.js +6 -0
  6. package/bundles/pepperi-addons-ngx-lib-icon.umd.js.map +1 -1
  7. package/bundles/pepperi-addons-ngx-lib-image.umd.js +133 -72
  8. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
  10. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1 -1
  11. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  12. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
  14. package/bundles/pepperi-addons-ngx-lib.umd.js +15 -0
  15. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  16. package/core/common/model/wapi.model.d.ts +1 -0
  17. package/core/customization/customization.model.d.ts +10 -0
  18. package/esm2015/checkbox/checkbox.component.js +1 -1
  19. package/esm2015/core/common/model/wapi.model.js +2 -1
  20. package/esm2015/core/customization/customization.model.js +10 -1
  21. package/esm2015/form/field-generator.component.js +2 -2
  22. package/esm2015/form/form.component.js +35 -16
  23. package/esm2015/form/form.module.js +5 -1
  24. package/esm2015/form/internal-carusel.component.js +3223 -0
  25. package/esm2015/form/internal-carusel.service.js +32 -0
  26. package/esm2015/form/internal-page.component.js +1 -32
  27. package/esm2015/form/pepperi-addons-ngx-lib-form.js +3 -1
  28. package/esm2015/group-buttons/group-buttons.component.js +1 -1
  29. package/esm2015/icon/icon-generated-all.model.js +2 -1
  30. package/esm2015/icon/icon-generated.model.js +5 -1
  31. package/esm2015/image/image.component.js +20 -36
  32. package/esm2015/image/image.module.js +3 -1
  33. package/esm2015/image/image.service.js +55 -0
  34. package/esm2015/image/public-api.js +2 -1
  35. package/esm2015/slider/slider.component.js +1 -1
  36. package/esm2015/smart-filters/common/model/base-filter-component.js +2 -2
  37. package/esm2015/textbox/textbox.component.js +2 -2
  38. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
  39. package/fesm2015/pepperi-addons-ngx-lib-form.js +3286 -48
  40. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  41. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
  42. package/fesm2015/pepperi-addons-ngx-lib-icon.js +6 -1
  43. package/fesm2015/pepperi-addons-ngx-lib-icon.js.map +1 -1
  44. package/fesm2015/pepperi-addons-ngx-lib-image.js +73 -36
  45. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  46. package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
  47. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1 -1
  48. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  49. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +1 -1
  50. package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
  51. package/fesm2015/pepperi-addons-ngx-lib.js +11 -1
  52. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  53. package/form/form.component.d.ts +4 -2
  54. package/form/internal-carusel.component.d.ts +34 -0
  55. package/form/internal-carusel.service.d.ts +12 -0
  56. package/form/pepperi-addons-ngx-lib-form.d.ts +2 -0
  57. package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
  58. package/icon/icon-generated-all.model.d.ts +1 -0
  59. package/icon/icon-generated.model.d.ts +5 -1
  60. package/icon/pepperi-addons-ngx-lib-icon.metadata.json +1 -1
  61. package/image/image.component.d.ts +5 -5
  62. package/image/image.service.d.ts +11 -0
  63. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  64. package/image/public-api.d.ts +1 -0
  65. package/package.json +1 -1
  66. package/pepperi-addons-ngx-lib.metadata.json +1 -1
@@ -1,12 +1,11 @@
1
1
  import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ElementRef, Renderer2, } from '@angular/core';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
3
  import { PepFileService, PepCustomizationService, DEFAULT_HORIZONTAL_ALIGNMENT, PepImageField, } from '@pepperi-addons/ngx-lib';
4
- import { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';
5
- import { PepImagesFilmstripComponent } from '@pepperi-addons/ngx-lib/images-filmstrip';
6
4
  import { pepIconNoImage2 } from '@pepperi-addons/ngx-lib/icon';
5
+ import { PepImageService } from './image.service';
7
6
  export class PepImageComponent {
8
- constructor(dialogService, customizationService, fileService, renderer, element, translate) {
9
- this.dialogService = dialogService;
7
+ constructor(imageService, customizationService, fileService, renderer, element, translate) {
8
+ this.imageService = imageService;
10
9
  this.customizationService = customizationService;
11
10
  this.fileService = fileService;
12
11
  this.renderer = renderer;
@@ -144,7 +143,6 @@ export class PepImageComponent {
144
143
  this.src.indexOf('no-image') > -1) {
145
144
  hasParentImage = false;
146
145
  }
147
- this.openImageModal(hasParentImage);
148
146
  this.elementClick.emit(event);
149
147
  }
150
148
  itemImageClick(event) {
@@ -157,36 +155,22 @@ export class PepImageComponent {
157
155
  (nextElementSRC && nextElementSRC.src.indexOf('no-image') > -1)) {
158
156
  hasParentImage = false;
159
157
  }
160
- this.openImageModal(hasParentImage);
161
- }
162
- openImageModal(hasParentImage) {
163
- if (this.dataURI) {
164
- const fileStrArr = this.dataURI.fileStr.split(';');
165
- if (fileStrArr.length === 2) {
166
- const win = window.open('', '_blank');
167
- const contentType = fileStrArr[0].split(':')[1];
168
- const base64 = fileStrArr[1].split(',')[1];
169
- const blob = this.fileService.convertFromb64toBlob(base64, contentType);
170
- const url = URL.createObjectURL(blob);
171
- win.location.href = url;
158
+ // this.openImageModal(hasParentImage);
159
+ // if (this.dataURI) {
160
+ // this.imageService.openFromURI(this.dataURI);
161
+ // } else {
162
+ // this.imageService.openImageDialog(this.srcLarge || this.src, this.options, this.label);
163
+ // }
164
+ this.elementClick.emit({
165
+ key: this.key,
166
+ controlType: this.controlType,
167
+ eventWhich: event.which,
168
+ otherData: {
169
+ imageSrc: this.srcLarge || this.src,
170
+ options: this.options,
171
+ title: this.label
172
172
  }
173
- }
174
- else {
175
- const arr = [this.srcLarge || this.src].concat((this.options || []).map((opt) => opt.value));
176
- const imagesValue = arr.join(';');
177
- // Show image in modal.
178
- const config = this.dialogService.getDialogConfig({}, 'inline');
179
- config.maxWidth = '75vw';
180
- config.height = '95vh';
181
- this.dialogService.openDialog(PepImagesFilmstripComponent, {
182
- currIndex: 0,
183
- key: this.key,
184
- value: imagesValue,
185
- label: this.label,
186
- uid: this.uid,
187
- showThumbnails: arr.length > 1,
188
- }, config);
189
- }
173
+ });
190
174
  }
191
175
  }
192
176
  PepImageComponent.MENU_CLICKED = '[MenuClicked]';
@@ -199,7 +183,7 @@ PepImageComponent.decorators = [
199
183
  },] }
200
184
  ];
201
185
  PepImageComponent.ctorParameters = () => [
202
- { type: PepDialogService },
186
+ { type: PepImageService },
203
187
  { type: PepCustomizationService },
204
188
  { type: PepFileService },
205
189
  { type: Renderer2 },
@@ -231,4 +215,4 @@ PepImageComponent.propDecorators = {
231
215
  fileChange: [{ type: Output }],
232
216
  elementClick: [{ type: Output }]
233
217
  };
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsRUFDdkIsVUFBVSxFQUVWLFNBQVMsR0FFWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsY0FBYyxFQUVkLHVCQUF1QixFQUV2Qiw0QkFBNEIsRUFHNUIsYUFBYSxHQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVEvRCxNQUFNLE9BQU8saUJBQWlCO0lBOEUxQixZQUNZLGFBQStCLEVBQy9CLG9CQUE2QyxFQUM3QyxXQUEyQixFQUMzQixRQUFtQixFQUNuQixPQUFtQixFQUNuQixTQUEyQjtRQUwzQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBakY5QixRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUMzQixVQUFLLEdBQUcsRUFB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QixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUV2QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FDekIsMkJBQTJCLEVBQzNCO2dCQUNJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixLQUFLLEVBQUUsV0FBVztnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQzthQUNqQyxFQUNELE1BQU0sQ0FDVCxDQUFDO1NBQ0w7SUFDTCxDQUFDOztBQTFQYSw4QkFBWSxHQUFHLGVBQWUsQ0FBQzs7WUFQaEQsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxXQUFXO2dCQUNyQiwrOUxBQXFDO2dCQUVyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQVRRLGdCQUFnQjtZQVJyQix1QkFBdUI7WUFGdkIsY0FBYztZQU5kLFNBQVM7WUFGVCxVQUFVO1lBTUwsZ0JBQWdCOzs7a0JBeUJwQixLQUFLO3VCQUNMLEtBQUs7a0JBQ0wsS0FBSztzQkFDTCxLQUFLO29CQUNMLEtBQUs7d0JBRUwsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsS0FBSztzQkFHTCxLQUFLOzhCQVNMLEtBQUs7d0JBQ0wsS0FBSzsrQkFDTCxLQUFLO3NCQUdMLEtBQUs7bUJBcUJMLEtBQUs7a0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUdMLEtBQUs7dUJBU0wsS0FBSzswQkFDTCxLQUFLOytCQUNMLEtBQUs7eUJBRUwsTUFBTTsyQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25EZXN0cm95LFxuICAgIFJlbmRlcmVyMixcbiAgICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIFBlcEZpbGVTZXJ2aWNlLFxuICAgIFBlcExheW91dFR5cGUsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgUGVwSG9yaXpvbnRhbEFsaWdubWVudCxcbiAgICBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5ULFxuICAgIElQZXBGaWVsZENsaWNrRXZlbnQsXG4gICAgSVBlcE9wdGlvbixcbiAgICBQZXBJbWFnZUZpZWxkLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5cbmltcG9ydCB7IFBlcERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kaWFsb2cnO1xuaW1wb3J0IHsgUGVwSW1hZ2VzRmlsbXN0cmlwQ29tcG9uZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvaW1hZ2VzLWZpbG1zdHJpcCc7XG5pbXBvcnQgeyBwZXBJY29uTm9JbWFnZTIgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pY29uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtaW1hZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGVwSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgc3RhdGljIE1FTlVfQ0xJQ0tFRCA9ICdbTWVudUNsaWNrZWRdJztcblxuICAgIEBJbnB1dCgpIGtleSA9ICcnO1xuICAgIEBJbnB1dCgpIHNyY0xhcmdlID0gJyc7XG4gICAgQElucHV0KCkgc3JjID0gJyc7XG4gICAgQElucHV0KCkgb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICAvLyBASW5wdXQoKSB0eXBlID0gJ2ltYWdlJztcbiAgICBASW5wdXQoKSBtYW5kYXRvcnkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgeEFsaWdubWVudDogUGVwSG9yaXpvbnRhbEFsaWdubWVudCA9IERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQ7XG5cbiAgICBwcml2YXRlIF9yb3dTcGFuID0gMTtcbiAgICBASW5wdXQoKVxuICAgIHNldCByb3dTcGFuKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3Jvd1NwYW4gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRGaWVsZEhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgcm93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93U3BhbjtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBpbmRpY2F0b3JzRmllbGQ6IGFueSA9IG51bGw7XG4gICAgQElucHV0KCkgbWVudUZpZWxkOiBhbnkgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhhc0NhbXBhaWduRmllbGQ6IGFueSA9IG51bGw7XG5cbiAgICBwcml2YXRlIF92aXNpYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHNldCB2aXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHZpc2libGU7XG4gICAgICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICdoaWRkZW4tZWxlbWVudCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICdoaWRkZW4tZWxlbWVudCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIGNvbnRyb2xUeXBlID0gJ2ltYWdlJztcblxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cCA9IG51bGw7XG4gICAgQElucHV0KCkgdWlkID0gJyc7XG4gICAgQElucHV0KCkgc2hvd1RpdGxlID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgX2xheW91dFR5cGU6IFBlcExheW91dFR5cGUgPSAnZm9ybSc7XG4gICAgQElucHV0KClcbiAgICBzZXQgbGF5b3V0VHlwZSh2YWx1ZTogUGVwTGF5b3V0VHlwZSkge1xuICAgICAgICB0aGlzLl9sYXlvdXRUeXBlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0RmllbGRIZWlnaHQoKTtcbiAgICB9XG4gICAgZ2V0IGxheW91dFR5cGUoKTogUGVwTGF5b3V0VHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXlvdXRUeXBlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2l6ZUxpbWl0TUIgPSA1O1xuICAgIEBJbnB1dCgpIGFjY2VwdEltYWdlc1R5cGUgPSAnYm1wLGpwZyxqcGVnLHBuZyxnaWYnOyAvLyBcImltYWdlL2JtcCwgaW1hZ2UvanBnLCBpbWFnZS9qcGVnLCBpbWFnZS9wbmcsIGltYWdlL3RpZiwgaW1hZ2UvdGlmZlwiO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGVsZW1lbnRDbGljazogRXZlbnRFbWl0dGVyPElQZXBGaWVsZENsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgZmllbGRIZWlnaHQgPSAnJztcbiAgICBzdGFuZEFsb25lID0gZmFsc2U7XG4gICAgZGF0YVVSSSA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmaWxlU2VydmljZTogUGVwRmlsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zdGFuZEFsb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0RmllbGRIZWlnaHQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVEFORF9BTE9ORV9GSUVMRF9DTEFTU19OQU1FXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGaWVsZEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWVsZEhlaWdodCA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlRmllbGRIZWlnaHQoXG4gICAgICAgICAgICB0aGlzLmxheW91dFR5cGUsXG4gICAgICAgICAgICB0aGlzLnJvd1NwYW4sXG4gICAgICAgICAgICB0aGlzLnN0YW5kQWxvbmVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRGb3JtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwZXBGaWVsZCA9IG5ldyBQZXBJbWFnZUZpZWxkKHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5zcmMsXG4gICAgICAgICAgICBtYW5kYXRvcnk6IHRoaXMubWFuZGF0b3J5LFxuICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHksXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuZ2V0RGVmYXVsdEZyb21Hcm91cChwZXBGaWVsZCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0YW5kQWxvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnNyYz8uY3VycmVudFZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBFbXB0eSBkYXRhVVJJIGlmIHRoZXJlIGlzIGNoYW5nZSBpbiB0aGUgc3JjLlxuICAgICAgICAgICAgdGhpcy5kYXRhVVJJID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIGVycm9ySGFuZGxlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnRhcmdldC5zcmMgPSB0aGlzLmZpbGVTZXJ2aWNlLmdldFN2Z0FzSW1hZ2VTcmMoXG4gICAgICAgICAgICBwZXBJY29uTm9JbWFnZTIuZGF0YVxuICAgICAgICApO1xuICAgICAgICBldmVudC50YXJnZXQudGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdJTUFHRS5OT19JTUFHRScpO1xuICAgIH1cblxuICAgIG9uSW1hZ2VMb2FkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgIGV2ZW50LnRhcmdldC50aXRsZSA9XG4gICAgICAgICAgICBldmVudC50YXJnZXQudGl0bGUubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdJTUFHRS5DTElDS19UT19FTkxBUkdFJylcbiAgICAgICAgICAgICAgICA6IGV2ZW50LnRhcmdldC50aXRsZTtcbiAgICB9XG5cbiAgICBvbk1lbnVDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrLmVtaXQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiBQZXBJbWFnZUNvbXBvbmVudC5NRU5VX0NMSUNLRUQsXG4gICAgICAgICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgICAgICAgIGV2ZW50V2hpY2g6IGV2ZW50LndoaWNoLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkZpbGVDaGFuZ2VkKGZpbGVEYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhVVJJID0gZmlsZURhdGE7XG4gICAgICAgIHRoaXMuc3JjID0gdGhpcy5zcmNMYXJnZSA9XG4gICAgICAgICAgICB0aGlzLnN0YW5kQWxvbmUgJiYgdGhpcy5kYXRhVVJJID8gdGhpcy5kYXRhVVJJLmZpbGVTdHIgOiAnJztcblxuICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5mb3JtLFxuICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICB0aGlzLmRhdGFVUkkgPyB0aGlzLmRhdGFVUkkuZmlsZUV4dCA6ICcnXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgIC8vICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgICAvLyAgICAgdmFsdWUsXG4gICAgICAgIC8vIH0pO1xuXG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KGZpbGVEYXRhKTtcbiAgICAgICAgLy8gdGhpcy5maWxlQ2hhbmdlLmVtaXQodmFsdWUubGVuZ3RoID4gMCA/IEpTT04ucGFyc2UodmFsdWUpIDogdmFsdWUpO1xuICAgIH1cblxuICAgIG9iamVjdElkSXNOb3RFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudWlkPy5sZW5ndGggPiAwICYmIHRoaXMudWlkICE9PSAnMCc7XG4gICAgfVxuXG4gICAgb25GaWxlQ2xpY2tlZChldmVudDogSVBlcEZpZWxkQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgaGFzUGFyZW50SW1hZ2UgPSB0cnVlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAvLyB0aGlzLm9iamVjdElkSXNOb3RFbXB0eSgpICYmXG4gICAgICAgICAgICB0aGlzLnNyYyAmJlxuICAgICAgICAgICAgdGhpcy5zcmMuaW5kZXhPZignbm8taW1hZ2UnKSA+IC0xXG4gICAgICAgICkge1xuICAgICAgICAgICAgaGFzUGFyZW50SW1hZ2UgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlbkltYWdlTW9kYWwoaGFzUGFyZW50SW1hZ2UpO1xuICAgICAgICB0aGlzLmVsZW1lbnRDbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBpdGVtSW1hZ2VDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGxldCBoYXNQYXJlbnRJbWFnZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVsZW1UYXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSBlbGVtVGFyZ2V0Lm5leHRFbGVtZW50U2libGluZyB8fCBudWxsO1xuICAgICAgICBjb25zdCBpbWFnZVNSQyA9IGVsZW1UYXJnZXQuc3JjIHx8IG51bGw7XG4gICAgICAgIGNvbnN0IG5leHRFbGVtZW50U1JDID1cbiAgICAgICAgICAgIG5leHRFbGVtZW50ICYmIG5leHRFbGVtZW50LnNyYyA/IG5leHRFbGVtZW50LnNyYyA6IG51bGw7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGltYWdlU1JDICYmIGltYWdlU1JDLmluZGV4T2YoJ25vLWltYWdlJykgPiAtMSkgfHxcbiAgICAgICAgICAgIChuZXh0RWxlbWVudFNSQyAmJiBuZXh0RWxlbWVudFNSQy5zcmMuaW5kZXhPZignbm8taW1hZ2UnKSA+IC0xKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGhhc1BhcmVudEltYWdlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wZW5JbWFnZU1vZGFsKGhhc1BhcmVudEltYWdlKTtcbiAgICB9XG5cbiAgICBvcGVuSW1hZ2VNb2RhbChoYXNQYXJlbnRJbWFnZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhVVJJKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlU3RyQXJyID0gdGhpcy5kYXRhVVJJLmZpbGVTdHIuc3BsaXQoJzsnKTtcbiAgICAgICAgICAgIGlmIChmaWxlU3RyQXJyLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBmaWxlU3RyQXJyWzBdLnNwbGl0KCc6JylbMV07XG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZmlsZVN0ckFyclsxXS5zcGxpdCgnLCcpWzFdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSB0aGlzLmZpbGVTZXJ2aWNlLmNvbnZlcnRGcm9tYjY0dG9CbG9iKFxuICAgICAgICAgICAgICAgICAgICBiYXNlNjQsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIHdpbi5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXJyID0gW3RoaXMuc3JjTGFyZ2UgfHwgdGhpcy5zcmNdLmNvbmNhdChcbiAgICAgICAgICAgICAgICAodGhpcy5vcHRpb25zIHx8IFtdKS5tYXAoKG9wdCkgPT4gb3B0LnZhbHVlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlc1ZhbHVlID0gYXJyLmpvaW4oJzsnKTtcblxuICAgICAgICAgICAgLy8gU2hvdyBpbWFnZSBpbiBtb2RhbC5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXREaWFsb2dDb25maWcoe30sICdpbmxpbmUnKTtcbiAgICAgICAgICAgIGNvbmZpZy5tYXhXaWR0aCA9ICc3NXZ3JztcbiAgICAgICAgICAgIGNvbmZpZy5oZWlnaHQgPSAnOTV2aCc7XG5cbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKFxuICAgICAgICAgICAgICAgIFBlcEltYWdlc0ZpbG1zdHJpcENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGltYWdlc1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgdWlkOiB0aGlzLnVpZCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RodW1ibmFpbHM6IGFyci5sZW5ndGggPiAxLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsRUFDdkIsVUFBVSxFQUVWLFNBQVMsR0FFWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsY0FBYyxFQUVkLHVCQUF1QixFQUV2Qiw0QkFBNEIsRUFHNUIsYUFBYSxHQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFTbEQsTUFBTSxPQUFPLGlCQUFpQjtJQThFMUIsWUFDWSxZQUE2QixFQUM3QixvQkFBNkMsRUFDN0MsV0FBMkIsRUFDM0IsUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsU0FBMkI7UUFMM0IsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWpGOUIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNwQiwyQkFBMkI7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztR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QUNQLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHO2dCQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBak9hLDhCQUFZLEdBQUcsZUFBZSxDQUFDOztZQVBoRCxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLCs5TEFBcUM7Z0JBRXJDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDs7O1lBUlEsZUFBZTtZQVRwQix1QkFBdUI7WUFGdkIsY0FBYztZQU5kLFNBQVM7WUFGVCxVQUFVO1lBTUwsZ0JBQWdCOzs7a0JBeUJwQixLQUFLO3VCQUNMLEtBQUs7a0JBQ0wsS0FBSztzQkFDTCxLQUFLO29CQUNMLEtBQUs7d0JBRUwsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsS0FBSztzQkFHTCxLQUFLOzhCQVNMLEtBQUs7d0JBQ0wsS0FBSzsrQkFDTCxLQUFLO3NCQUdMLEtBQUs7bUJBcUJMLEtBQUs7a0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUdMLEtBQUs7dUJBU0wsS0FBSzswQkFDTCxLQUFLOytCQUNMLEtBQUs7eUJBRUwsTUFBTTsyQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25EZXN0cm95LFxuICAgIFJlbmRlcmVyMixcbiAgICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIFBlcEZpbGVTZXJ2aWNlLFxuICAgIFBlcExheW91dFR5cGUsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgUGVwSG9yaXpvbnRhbEFsaWdubWVudCxcbiAgICBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5ULFxuICAgIElQZXBGaWVsZENsaWNrRXZlbnQsXG4gICAgSVBlcE9wdGlvbixcbiAgICBQZXBJbWFnZUZpZWxkLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5cbmltcG9ydCB7IHBlcEljb25Ob0ltYWdlMiB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2ljb24nO1xuaW1wb3J0IHsgUGVwSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi9pbWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IElQZXBGaWxlQ2hhbmdlRXZlbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9maWxlcy11cGxvYWRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWltYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ltYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBlcEltYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHN0YXRpYyBNRU5VX0NMSUNLRUQgPSAnW01lbnVDbGlja2VkXSc7XG5cbiAgICBASW5wdXQoKSBrZXkgPSAnJztcbiAgICBASW5wdXQoKSBzcmNMYXJnZSA9ICcnO1xuICAgIEBJbnB1dCgpIHNyYyA9ICcnO1xuICAgIEBJbnB1dCgpIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgLy8gQElucHV0KCkgdHlwZSA9ICdpbWFnZSc7XG4gICAgQElucHV0KCkgbWFuZGF0b3J5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuXG4gICAgcHJpdmF0ZSBfcm93U3BhbiA9IDE7XG4gICAgQElucHV0KClcbiAgICBzZXQgcm93U3Bhbih2YWx1ZSkge1xuICAgICAgICB0aGlzLl9yb3dTcGFuID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0RmllbGRIZWlnaHQoKTtcbiAgICB9XG4gICAgZ2V0IHJvd1NwYW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd1NwYW47XG4gICAgfVxuXG4gICAgQElucHV0KCkgaW5kaWNhdG9yc0ZpZWxkOiBhbnkgPSBudWxsO1xuICAgIEBJbnB1dCgpIG1lbnVGaWVsZDogYW55ID0gbnVsbDtcbiAgICBASW5wdXQoKSBoYXNDYW1wYWlnbkZpZWxkOiBhbnkgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICBjb250cm9sVHlwZSA9ICdpbWFnZSc7XG5cbiAgICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXAgPSBudWxsO1xuICAgIEBJbnB1dCgpIHVpZCA9ICcnO1xuICAgIEBJbnB1dCgpIHNob3dUaXRsZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIF9sYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxheW91dFR5cGUodmFsdWU6IFBlcExheW91dFR5cGUpIHtcbiAgICAgICAgdGhpcy5fbGF5b3V0VHlwZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldEZpZWxkSGVpZ2h0KCk7XG4gICAgfVxuICAgIGdldCBsYXlvdXRUeXBlKCk6IFBlcExheW91dFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0VHlwZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNpemVMaW1pdE1CID0gNTtcbiAgICBASW5wdXQoKSBhY2NlcHRJbWFnZXNUeXBlID0gJ2JtcCxqcGcsanBlZyxwbmcsZ2lmJzsgLy8gXCJpbWFnZS9ibXAsIGltYWdlL2pwZywgaW1hZ2UvanBlZywgaW1hZ2UvcG5nLCBpbWFnZS90aWYsIGltYWdlL3RpZmZcIjtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBlbGVtZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwRmllbGRDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIGZpZWxkSGVpZ2h0ID0gJyc7XG4gICAgc3RhbmRBbG9uZSA9IGZhbHNlO1xuICAgIGRhdGFVUkkgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW1hZ2VTZXJ2aWNlOiBQZXBJbWFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBQZXBGaWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YW5kQWxvbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZXRGaWVsZEhlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0Rm9ybSgpO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZpZWxkSGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpZWxkSGVpZ2h0ID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVGaWVsZEhlaWdodChcbiAgICAgICAgICAgIHRoaXMubGF5b3V0VHlwZSxcbiAgICAgICAgICAgIHRoaXMucm93U3BhbixcbiAgICAgICAgICAgIHRoaXMuc3RhbmRBbG9uZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdEZvcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBlcEZpZWxkID0gbmV3IFBlcEltYWdlRmllbGQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNyYyxcbiAgICAgICAgICAgIG1hbmRhdG9yeTogdGhpcy5tYW5kYXRvcnksXG4gICAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5nZXREZWZhdWx0RnJvbUdyb3VwKHBlcEZpZWxkKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhbmRBbG9uZSkge1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0Rm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuc3JjPy5jdXJyZW50VmFsdWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIEVtcHR5IGRhdGFVUkkgaWYgdGhlcmUgaXMgY2hhbmdlIGluIHRoZSBzcmMuXG4gICAgICAgICAgICB0aGlzLmRhdGFVUkkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgZXJyb3JIYW5kbGVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnNyYyA9IHRoaXMuZmlsZVNlcnZpY2UuZ2V0U3ZnQXNJbWFnZVNyYyhcbiAgICAgICAgICAgIHBlcEljb25Ob0ltYWdlMi5kYXRhXG4gICAgICAgICk7XG4gICAgICAgIGV2ZW50LnRhcmdldC50aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0lNQUdFLk5PX0lNQUdFJyk7XG4gICAgfVxuXG4gICAgb25JbWFnZUxvYWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBldmVudC50YXJnZXQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgZXZlbnQudGFyZ2V0LnRpdGxlID1cbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC50aXRsZS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0lNQUdFLkNMSUNLX1RPX0VOTEFSR0UnKVxuICAgICAgICAgICAgICAgIDogZXZlbnQudGFyZ2V0LnRpdGxlO1xuICAgIH1cblxuICAgIG9uTWVudUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50Q2xpY2suZW1pdCh7XG4gICAgICAgICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgICAgICAgdmFsdWU6IFBlcEltYWdlQ29tcG9uZW50Lk1FTlVfQ0xJQ0tFRCxcbiAgICAgICAgICAgIGNvbnRyb2xUeXBlOiB0aGlzLmNvbnRyb2xUeXBlLFxuICAgICAgICAgICAgZXZlbnRXaGljaDogZXZlbnQud2hpY2gsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRmlsZUNoYW5nZWQoZmlsZURhdGE6IElQZXBGaWxlQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhVVJJID0gZmlsZURhdGE7XG4gICAgICAgIHRoaXMuc3JjID0gdGhpcy5zcmNMYXJnZSA9XG4gICAgICAgICAgICB0aGlzLnN0YW5kQWxvbmUgJiYgdGhpcy5kYXRhVVJJID8gdGhpcy5kYXRhVVJJLmZpbGVTdHIgOiAnJztcblxuICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5mb3JtLFxuICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICB0aGlzLmRhdGFVUkkgPyB0aGlzLmRhdGFVUkkuZmlsZUV4dCA6ICcnXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgIC8vICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgICAvLyAgICAgdmFsdWUsXG4gICAgICAgIC8vIH0pO1xuXG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KGZpbGVEYXRhKTtcbiAgICAgICAgLy8gdGhpcy5maWxlQ2hhbmdlLmVtaXQodmFsdWUubGVuZ3RoID4gMCA/IEpTT04ucGFyc2UodmFsdWUpIDogdmFsdWUpO1xuICAgIH1cblxuICAgIG9iamVjdElkSXNOb3RFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudWlkPy5sZW5ndGggPiAwICYmIHRoaXMudWlkICE9PSAnMCc7XG4gICAgfVxuXG4gICAgb25GaWxlQ2xpY2tlZChldmVudDogSVBlcEZpZWxkQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgaGFzUGFyZW50SW1hZ2UgPSB0cnVlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAvLyB0aGlzLm9iamVjdElkSXNOb3RFbXB0eSgpICYmXG4gICAgICAgICAgICB0aGlzLnNyYyAmJlxuICAgICAgICAgICAgdGhpcy5zcmMuaW5kZXhPZignbm8taW1hZ2UnKSA+IC0xXG4gICAgICAgICkge1xuICAgICAgICAgICAgaGFzUGFyZW50SW1hZ2UgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGl0ZW1JbWFnZUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgbGV0IGhhc1BhcmVudEltYWdlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZWxlbVRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50O1xuICAgICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGVsZW1UYXJnZXQubmV4dEVsZW1lbnRTaWJsaW5nIHx8IG51bGw7XG4gICAgICAgIGNvbnN0IGltYWdlU1JDID0gZWxlbVRhcmdldC5zcmMgfHwgbnVsbDtcbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnRTUkMgPVxuICAgICAgICAgICAgbmV4dEVsZW1lbnQgJiYgbmV4dEVsZW1lbnQuc3JjID8gbmV4dEVsZW1lbnQuc3JjIDogbnVsbDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoaW1hZ2VTUkMgJiYgaW1hZ2VTUkMuaW5kZXhPZignbm8taW1hZ2UnKSA+IC0xKSB8fFxuICAgICAgICAgICAgKG5leHRFbGVtZW50U1JDICYmIG5leHRFbGVtZW50U1JDLnNyYy5pbmRleE9mKCduby1pbWFnZScpID4gLTEpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaGFzUGFyZW50SW1hZ2UgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMub3BlbkltYWdlTW9kYWwoaGFzUGFyZW50SW1hZ2UpO1xuICAgICAgICAvLyBpZiAodGhpcy5kYXRhVVJJKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmltYWdlU2VydmljZS5vcGVuRnJvbVVSSSh0aGlzLmRhdGFVUkkpO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5pbWFnZVNlcnZpY2Uub3BlbkltYWdlRGlhbG9nKHRoaXMuc3JjTGFyZ2UgfHwgdGhpcy5zcmMsIHRoaXMub3B0aW9ucywgdGhpcy5sYWJlbCk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICB0aGlzLmVsZW1lbnRDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgICAgICAgIGV2ZW50V2hpY2g6IGV2ZW50LndoaWNoLFxuICAgICAgICAgICAgb3RoZXJEYXRhOiB7XG4gICAgICAgICAgICAgICAgaW1hZ2VTcmM6IHRoaXMuc3JjTGFyZ2UgfHwgdGhpcy5zcmMsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxhYmVsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIG9wZW5JbWFnZU1vZGFsKGhhc1BhcmVudEltYWdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gICAgIGlmICh0aGlzLmRhdGFVUkkpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGZpbGVTdHJBcnIgPSB0aGlzLmRhdGFVUkkuZmlsZVN0ci5zcGxpdCgnOycpO1xuICAgIC8vICAgICAgICAgaWYgKGZpbGVTdHJBcnIubGVuZ3RoID09PSAyKSB7XG4gICAgLy8gICAgICAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4oJycsICdfYmxhbmsnKTtcbiAgICAvLyAgICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IGZpbGVTdHJBcnJbMF0uc3BsaXQoJzonKVsxXTtcbiAgICAvLyAgICAgICAgICAgICBjb25zdCBiYXNlNjQgPSBmaWxlU3RyQXJyWzFdLnNwbGl0KCcsJylbMV07XG4gICAgLy8gICAgICAgICAgICAgY29uc3QgYmxvYiA9IHRoaXMuZmlsZVNlcnZpY2UuY29udmVydEZyb21iNjR0b0Jsb2IoXG4gICAgLy8gICAgICAgICAgICAgICAgIGJhc2U2NCxcbiAgICAvLyAgICAgICAgICAgICAgICAgY29udGVudFR5cGVcbiAgICAvLyAgICAgICAgICAgICApO1xuICAgIC8vICAgICAgICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgLy8gICAgICAgICAgICAgd2luLmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICBjb25zdCBhcnIgPSBbdGhpcy5zcmNMYXJnZSB8fCB0aGlzLnNyY10uY29uY2F0KFxuICAgIC8vICAgICAgICAgICAgICh0aGlzLm9wdGlvbnMgfHwgW10pLm1hcCgob3B0KSA9PiBvcHQudmFsdWUpXG4gICAgLy8gICAgICAgICApO1xuICAgIC8vICAgICAgICAgY29uc3QgaW1hZ2VzVmFsdWUgPSBhcnIuam9pbignOycpO1xuXG4gICAgLy8gICAgICAgICAvLyBTaG93IGltYWdlIGluIG1vZGFsLlxuICAgIC8vICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ0NvbmZpZyh7fSwgJ2lubGluZScpO1xuICAgIC8vICAgICAgICAgY29uZmlnLm1heFdpZHRoID0gJzc1dncnO1xuICAgIC8vICAgICAgICAgY29uZmlnLmhlaWdodCA9ICc5NXZoJztcblxuICAgIC8vICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5EaWFsb2coXG4gICAgLy8gICAgICAgICAgICAgUGVwSW1hZ2VzRmlsbXN0cmlwQ29tcG9uZW50LFxuICAgIC8vICAgICAgICAgICAgIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgY3VyckluZGV4OiAwLFxuICAgIC8vICAgICAgICAgICAgICAgICBrZXk6IHRoaXMua2V5LFxuICAgIC8vICAgICAgICAgICAgICAgICB2YWx1ZTogaW1hZ2VzVmFsdWUsXG4gICAgLy8gICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgIC8vICAgICAgICAgICAgICAgICB1aWQ6IHRoaXMudWlkLFxuICAgIC8vICAgICAgICAgICAgICAgICBzaG93VGh1bWJuYWlsczogYXJyLmxlbmd0aCA+IDEsXG4gICAgLy8gICAgICAgICAgICAgfSxcbiAgICAvLyAgICAgICAgICAgICBjb25maWdcbiAgICAvLyAgICAgICAgICk7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG59XG4iXX0=
@@ -10,6 +10,7 @@ import { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';
10
10
  import { PepFilesUploaderModule } from '@pepperi-addons/ngx-lib/files-uploader';
11
11
  import { PepImagesFilmstripModule, PepImagesFilmstripComponent, } from '@pepperi-addons/ngx-lib/images-filmstrip';
12
12
  import { PepImageComponent } from './image.component';
13
+ import { PepImageService } from './image.service';
13
14
  export class PepImageModule {
14
15
  constructor(pepIconRegistry) {
15
16
  this.pepIconRegistry = pepIconRegistry;
@@ -39,9 +40,10 @@ PepImageModule.decorators = [
39
40
  exports: [PepImageComponent],
40
41
  declarations: [PepImageComponent],
41
42
  entryComponents: [PepImagesFilmstripComponent],
43
+ providers: [PepImageService]
42
44
  },] }
43
45
  ];
44
46
  PepImageModule.ctorParameters = () => [
45
47
  { type: PepIconRegistry }
46
48
  ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9pbWFnZS9pbWFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUNILGFBQWEsRUFDYixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQiw4QkFBOEIsR0FDakMsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLDJCQUEyQixHQUM5QixNQUFNLDBDQUEwQyxDQUFDO0FBRWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBcUJ0RCxNQUFNLE9BQU8sY0FBYztJQUN2QixZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7WUFDL0IsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQiw4QkFBOEI7U0FDakMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBMUJKLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixtQkFBbUI7b0JBQ25CLG9CQUFvQjtvQkFDcEIsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLGFBQWE7b0JBQ2Isa0JBQWtCO29CQUNsQixlQUFlO29CQUNmLGFBQWE7b0JBQ2IsbUJBQW1CO29CQUNuQix3QkFBd0I7b0JBQ3hCLHNCQUFzQjtpQkFDekI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBQzVCLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUNqQyxlQUFlLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUNqRDs7O1lBaENHLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IFBlcE5neExpYk1vZHVsZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwSWNvbk1vZHVsZSxcbiAgICBQZXBJY29uUmVnaXN0cnksXG4gICAgcGVwSWNvblN5c3RlbU1lbnUsXG4gICAgcGVwSWNvblN5c3RlbUJvbHQsXG4gICAgcGVwSWNvbkluZGljYXRvckRvdFBsYWNlaG9sZGVyLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pY29uJztcbmltcG9ydCB7IFBlcEZpZWxkVGl0bGVNb2R1bGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9maWVsZC10aXRsZSc7XG5pbXBvcnQgeyBQZXBGaWxlc1VwbG9hZGVyTW9kdWxlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZmlsZXMtdXBsb2FkZXInO1xuaW1wb3J0IHtcbiAgICBQZXBJbWFnZXNGaWxtc3RyaXBNb2R1bGUsXG4gICAgUGVwSW1hZ2VzRmlsbXN0cmlwQ29tcG9uZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pbWFnZXMtZmlsbXN0cmlwJztcblxuaW1wb3J0IHsgUGVwSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIC8vIE1hdGVyaWFsIG1vZHVsZXMsXG4gICAgICAgIE1hdENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICAvLyBuZ3gtbGliIG1vZHVsZXNcbiAgICAgICAgUGVwTmd4TGliTW9kdWxlLFxuICAgICAgICBQZXBJY29uTW9kdWxlLFxuICAgICAgICBQZXBGaWVsZFRpdGxlTW9kdWxlLFxuICAgICAgICBQZXBJbWFnZXNGaWxtc3RyaXBNb2R1bGUsXG4gICAgICAgIFBlcEZpbGVzVXBsb2FkZXJNb2R1bGUsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbUGVwSW1hZ2VDb21wb25lbnRdLFxuICAgIGRlY2xhcmF0aW9uczogW1BlcEltYWdlQ29tcG9uZW50XSxcbiAgICBlbnRyeUNvbXBvbmVudHM6IFtQZXBJbWFnZXNGaWxtc3RyaXBDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBJbWFnZU1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwZXBJY29uUmVnaXN0cnk6IFBlcEljb25SZWdpc3RyeSkge1xuICAgICAgICB0aGlzLnBlcEljb25SZWdpc3RyeS5yZWdpc3Rlckljb25zKFtcbiAgICAgICAgICAgIHBlcEljb25TeXN0ZW1NZW51LFxuICAgICAgICAgICAgcGVwSWNvblN5c3RlbUJvbHQsXG4gICAgICAgICAgICBwZXBJY29uSW5kaWNhdG9yRG90UGxhY2Vob2xkZXIsXG4gICAgICAgIF0pO1xuICAgIH1cbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9pbWFnZS9pbWFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUNILGFBQWEsRUFDYixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQiw4QkFBOEIsR0FDakMsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLDJCQUEyQixHQUM5QixNQUFNLDBDQUEwQyxDQUFDO0FBRWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQXNCbEQsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1lBQy9CLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsOEJBQThCO1NBQ2pDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQTNCSixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixvQkFBb0I7b0JBQ3BCLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixhQUFhO29CQUNiLGtCQUFrQjtvQkFDbEIsZUFBZTtvQkFDZixhQUFhO29CQUNiLG1CQUFtQjtvQkFDbkIsd0JBQXdCO29CQUN4QixzQkFBc0I7aUJBQ3pCO2dCQUNELE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUM1QixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDakMsZUFBZSxFQUFFLENBQUMsMkJBQTJCLENBQUM7Z0JBQzlDLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQzthQUMvQjs7O1lBbENHLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IFBlcE5neExpYk1vZHVsZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwSWNvbk1vZHVsZSxcbiAgICBQZXBJY29uUmVnaXN0cnksXG4gICAgcGVwSWNvblN5c3RlbU1lbnUsXG4gICAgcGVwSWNvblN5c3RlbUJvbHQsXG4gICAgcGVwSWNvbkluZGljYXRvckRvdFBsYWNlaG9sZGVyLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pY29uJztcbmltcG9ydCB7IFBlcEZpZWxkVGl0bGVNb2R1bGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9maWVsZC10aXRsZSc7XG5pbXBvcnQgeyBQZXBGaWxlc1VwbG9hZGVyTW9kdWxlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZmlsZXMtdXBsb2FkZXInO1xuaW1wb3J0IHtcbiAgICBQZXBJbWFnZXNGaWxtc3RyaXBNb2R1bGUsXG4gICAgUGVwSW1hZ2VzRmlsbXN0cmlwQ29tcG9uZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pbWFnZXMtZmlsbXN0cmlwJztcblxuaW1wb3J0IHsgUGVwSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXBJbWFnZVNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICAvLyBNYXRlcmlhbCBtb2R1bGVzLFxuICAgICAgICBNYXRDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgLy8gbmd4LWxpYiBtb2R1bGVzXG4gICAgICAgIFBlcE5neExpYk1vZHVsZSxcbiAgICAgICAgUGVwSWNvbk1vZHVsZSxcbiAgICAgICAgUGVwRmllbGRUaXRsZU1vZHVsZSxcbiAgICAgICAgUGVwSW1hZ2VzRmlsbXN0cmlwTW9kdWxlLFxuICAgICAgICBQZXBGaWxlc1VwbG9hZGVyTW9kdWxlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1BlcEltYWdlQ29tcG9uZW50XSxcbiAgICBkZWNsYXJhdGlvbnM6IFtQZXBJbWFnZUNvbXBvbmVudF0sXG4gICAgZW50cnlDb21wb25lbnRzOiBbUGVwSW1hZ2VzRmlsbXN0cmlwQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtQZXBJbWFnZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBlcEltYWdlTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcEljb25SZWdpc3RyeTogUGVwSWNvblJlZ2lzdHJ5KSB7XG4gICAgICAgIHRoaXMucGVwSWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbnMoW1xuICAgICAgICAgICAgcGVwSWNvblN5c3RlbU1lbnUsXG4gICAgICAgICAgICBwZXBJY29uU3lzdGVtQm9sdCxcbiAgICAgICAgICAgIHBlcEljb25JbmRpY2F0b3JEb3RQbGFjZWhvbGRlcixcbiAgICAgICAgXSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,55 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { PepFileService, PepCustomizationService, } from '@pepperi-addons/ngx-lib';
3
+ import { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';
4
+ import { PepImagesFilmstripComponent } from '@pepperi-addons/ngx-lib/images-filmstrip';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@pepperi-addons/ngx-lib/dialog";
7
+ import * as i2 from "@pepperi-addons/ngx-lib";
8
+ export class PepImageService {
9
+ constructor(dialogService, customizationService, fileService) {
10
+ this.dialogService = dialogService;
11
+ this.customizationService = customizationService;
12
+ this.fileService = fileService;
13
+ }
14
+ openImageDialog(imageSrc, options, title = '') {
15
+ const arr = [imageSrc].concat((options || []).map((opt) => opt.value));
16
+ const imagesValue = arr.join(';');
17
+ // Show image in modal.
18
+ const config = this.dialogService.getDialogConfig({}, 'inline');
19
+ config.maxWidth = '75vw';
20
+ config.height = '95vh';
21
+ this.dialogService.openDialog(PepImagesFilmstripComponent, {
22
+ currIndex: 0,
23
+ key: new Date().getDate(),
24
+ value: imagesValue,
25
+ label: title,
26
+ uid: '',
27
+ showThumbnails: arr.length > 1,
28
+ }, config);
29
+ }
30
+ openFromURI(event) {
31
+ if (event) {
32
+ const fileStrArr = event.fileStr.split(';');
33
+ if (fileStrArr.length === 2) {
34
+ const win = window.open('', '_blank');
35
+ const contentType = fileStrArr[0].split(':')[1];
36
+ const base64 = fileStrArr[1].split(',')[1];
37
+ const blob = this.fileService.convertFromb64toBlob(base64, contentType);
38
+ const url = URL.createObjectURL(blob);
39
+ win.location.href = url;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ PepImageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PepImageService_Factory() { return new PepImageService(i0.ɵɵinject(i1.PepDialogService), i0.ɵɵinject(i2.PepCustomizationService), i0.ɵɵinject(i2.PepFileService)); }, token: PepImageService, providedIn: "root" });
45
+ PepImageService.decorators = [
46
+ { type: Injectable, args: [{
47
+ providedIn: 'root',
48
+ },] }
49
+ ];
50
+ PepImageService.ctorParameters = () => [
51
+ { type: PepDialogService },
52
+ { type: PepCustomizationService },
53
+ { type: PepFileService }
54
+ ];
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvaW1hZ2UvaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFDSCxjQUFjLEVBQ2QsdUJBQXVCLEdBRTFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFNdkYsTUFBTSxPQUFPLGVBQWU7SUFDeEIsWUFDWSxhQUErQixFQUMvQixvQkFBNkMsRUFDN0MsV0FBMkI7UUFGM0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO0lBQ25DLENBQUM7SUFFTCxlQUFlLENBQUMsUUFBZ0IsRUFBRSxPQUFxQixFQUFFLFFBQWdCLEVBQUU7UUFDdkUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQ3pCLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUMxQyxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVsQyx1QkFBdUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXZCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUN6QiwyQkFBMkIsRUFDM0I7WUFDSSxTQUFTLEVBQUUsQ0FBQztZQUNaLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtZQUN6QixLQUFLLEVBQUUsV0FBVztZQUNsQixLQUFLLEVBQUUsS0FBSztZQUNaLEdBQUcsRUFBRSxFQUFFO1lBQ1AsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztTQUNqQyxFQUNELE1BQU0sQ0FDVCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUEwQjtRQUNsQyxJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3pCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUM5QyxNQUFNLEVBQ04sV0FBVyxDQUNkLENBQUM7Z0JBQ0YsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2FBQzNCO1NBQ0o7SUFDTCxDQUFDOzs7O1lBbERKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBTlEsZ0JBQWdCO1lBSHJCLHVCQUF1QjtZQUR2QixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIFBlcEZpbGVTZXJ2aWNlLFxyXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXHJcbiAgICBJUGVwT3B0aW9uLFxyXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcclxuaW1wb3J0IHsgUGVwRGlhbG9nU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RpYWxvZyc7XHJcbmltcG9ydCB7IFBlcEltYWdlc0ZpbG1zdHJpcENvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2ltYWdlcy1maWxtc3RyaXAnO1xyXG5pbXBvcnQgeyBJUGVwRmlsZUNoYW5nZUV2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZmlsZXMtdXBsb2FkZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVwSW1hZ2VTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogUGVwRGlhbG9nU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBQZXBGaWxlU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgb3BlbkltYWdlRGlhbG9nKGltYWdlU3JjOiBzdHJpbmcsIG9wdGlvbnM6IElQZXBPcHRpb25bXSwgdGl0bGU6IHN0cmluZyA9ICcnKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYXJyID0gW2ltYWdlU3JjXS5jb25jYXQoXHJcbiAgICAgICAgICAgIChvcHRpb25zIHx8IFtdKS5tYXAoKG9wdCkgPT4gb3B0LnZhbHVlKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VzVmFsdWUgPSBhcnIuam9pbignOycpO1xyXG5cclxuICAgICAgICAvLyBTaG93IGltYWdlIGluIG1vZGFsLlxyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXREaWFsb2dDb25maWcoe30sICdpbmxpbmUnKTtcclxuICAgICAgICBjb25maWcubWF4V2lkdGggPSAnNzV2dyc7XHJcbiAgICAgICAgY29uZmlnLmhlaWdodCA9ICc5NXZoJztcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5EaWFsb2coXHJcbiAgICAgICAgICAgIFBlcEltYWdlc0ZpbG1zdHJpcENvbXBvbmVudCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY3VyckluZGV4OiAwLFxyXG4gICAgICAgICAgICAgICAga2V5OiBuZXcgRGF0ZSgpLmdldERhdGUoKSxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBpbWFnZXNWYWx1ZSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aXRsZSxcclxuICAgICAgICAgICAgICAgIHVpZDogJycsXHJcbiAgICAgICAgICAgICAgICBzaG93VGh1bWJuYWlsczogYXJyLmxlbmd0aCA+IDEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkZyb21VUkkoZXZlbnQ6IElQZXBGaWxlQ2hhbmdlRXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZVN0ckFyciA9IGV2ZW50LmZpbGVTdHIuc3BsaXQoJzsnKTtcclxuICAgICAgICAgICAgaWYgKGZpbGVTdHJBcnIubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3aW4gPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBmaWxlU3RyQXJyWzBdLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlNjQgPSBmaWxlU3RyQXJyWzFdLnNwbGl0KCcsJylbMV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gdGhpcy5maWxlU2VydmljZS5jb252ZXJ0RnJvbWI2NHRvQmxvYihcclxuICAgICAgICAgICAgICAgICAgICBiYXNlNjQsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGVcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICAgICAgd2luLmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -3,4 +3,5 @@
3
3
  */
4
4
  export * from './image.module';
5
5
  export * from './image.component';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvaW1hZ2UvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWxpYi9pbWFnZVxuICovXG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLmNvbXBvbmVudCc7XG4iXX0=
6
+ export * from './image.service';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvaW1hZ2UvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtbGliL2ltYWdlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2Uuc2VydmljZSc7XG4iXX0=
@@ -85,4 +85,4 @@ PepSliderComponent.propDecorators = {
85
85
  value: [{ type: Input }],
86
86
  valueChange: [{ type: Output }]
87
87
  };
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqSDs7Ozs7OztHQU9HO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjtJQTBDM0IsWUFBb0IsUUFBbUIsRUFBVSxPQUFtQixFQUFVLGdCQUFrQztRQUE1RixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6Q3ZHLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQWNoQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBRWhCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFjdEIsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUvRCxlQUFVLEdBQTJCLDRCQUE0QixDQUFDO1FBQ2xFLGtCQUFhLEdBQVEsSUFBSSxDQUFDO0lBRTBGLENBQUM7SUFwQ3JILElBQ0ksVUFBVSxDQUFDLFVBQWtCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ25CO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQU9ELElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQVVPLGFBQWE7O1FBQ2pCLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3hGO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLENBQUEsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwSDtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ25FLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7O1lBbkVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsZ1lBQXNDOzthQUV6Qzs7O1lBbkJHLFNBQVM7WUFDVCxVQUFVO1lBSUwsZ0JBQWdCOzs7b0JBZ0JwQixLQUFLO3VCQUNMLEtBQUs7bUJBQ0wsS0FBSzt5QkFHTCxLQUFLO21CQWFMLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO29CQUdMLEtBQUs7MEJBWUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFJlbmRlcmVyMixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGVwTGF5b3V0U2VydmljZSwgREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVCwgUGVwSG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcblxuLyoqXG4gKiBUaGlzIGlzIGEgc2xpZGVyIGNvbXBvbmVudCB0aGF0IHN1cHBvcnQgcGVwcGVyaSB0aGVtZVxuICogc3R5bGUgJiBzdGF0ZSAmIHNpemVzXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFBlcFNsaWRlckNvbXBvbmVudFxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtc2xpZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgaGludCA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfYmFja2dyb3VuZCA9ICcnO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJhY2tncm91bmQoYmFja2dyb3VuZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghYmFja2dyb3VuZCkge1xuICAgICAgICAgICAgYmFja2dyb3VuZCA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYmFja2dyb3VuZCA9IGJhY2tncm91bmQ7XG4gICAgICAgIHRoaXMuc2V0QmFja2dyb3VuZCgpO1xuICAgIH1cbiAgICBnZXQgYmFja2dyb3VuZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzdGVwOiBudW1iZXIgPSAxO1xuICAgIEBJbnB1dCgpIG1pblZhbHVlID0gTmFOO1xuICAgIEBJbnB1dCgpIG1heFZhbHVlID0gTmFOO1xuXG4gICAgcHJpdmF0ZSBfdmFsdWUgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVDtcbiAgICBzbGlkZXJXcmFwcGVyOiBhbnkgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgcGVwTGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSkgeyB9XG5cbiAgICBwcml2YXRlIHNldEJhY2tncm91bmQoKTogdm9pZCB7XG4gICAgICAgIC8vIEdldCB0aGUgd3JhcHBlciBmb3Igc2V0IHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgICBpZiAoIXRoaXMuc2xpZGVyV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5zbGlkZXJXcmFwcGVyID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1zbGlkZXItd3JhcHBlcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2xpZGVyV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlcldyYXBwZXIsICdiYWNrZ3JvdW5kJywgdGhpcy5iYWNrZ3JvdW5kPy5sZW5ndGggPiAwID8gdGhpcy5iYWNrZ3JvdW5kIDogJyNjY2MnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnhBbGlnbm1lbnQgPSB0aGlzLnBlcExheW91dFNlcnZpY2UuaXNSdGwoKSA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgIHRoaXMuc2V0QmFja2dyb3VuZCgpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGV2ZW50LnZhbHVlKTtcbiAgICB9XG59XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqSDs7Ozs7OztHQU9HO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjtJQTBDM0IsWUFBb0IsUUFBbUIsRUFBVSxPQUFtQixFQUFVLGdCQUFrQztRQUE1RixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6Q3ZHLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQWNoQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNmLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFFaEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQWN0QixnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRS9ELGVBQVUsR0FBMkIsNEJBQTRCLENBQUM7UUFDbEUsa0JBQWEsR0FBUSxJQUFJLENBQUM7SUFFMEYsQ0FBQztJQXBDckgsSUFDSSxVQUFVLENBQUMsVUFBa0I7UUFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDbkI7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBT0QsSUFDSSxLQUFLLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBVU8sYUFBYTs7UUFDakIsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDeEY7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BIO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7WUFuRUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixnWUFBc0M7O2FBRXpDOzs7WUFuQkcsU0FBUztZQUNULFVBQVU7WUFJTCxnQkFBZ0I7OztvQkFnQnBCLEtBQUs7dUJBQ0wsS0FBSzttQkFDTCxLQUFLO3lCQUdMLEtBQUs7bUJBYUwsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7b0JBR0wsS0FBSzswQkFZTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgUmVuZGVyZXIyLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQZXBMYXlvdXRTZXJ2aWNlLCBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5ULCBQZXBIb3Jpem9udGFsQWxpZ25tZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG4vKipcbiAqIFRoaXMgaXMgYSBzbGlkZXIgY29tcG9uZW50IHRoYXQgc3VwcG9ydCBwZXBwZXJpIHRoZW1lXG4gKiBzdHlsZSAmIHN0YXRlICYgc2l6ZXNcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgUGVwU2xpZGVyQ29tcG9uZW50XG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1zbGlkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NsaWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBTbGlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBoaW50ID0gJyc7XG5cbiAgICBwcml2YXRlIF9iYWNrZ3JvdW5kID0gJyc7XG4gICAgQElucHV0KClcbiAgICBzZXQgYmFja2dyb3VuZChiYWNrZ3JvdW5kOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFiYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kID0gYmFja2dyb3VuZDtcbiAgICAgICAgdGhpcy5zZXRCYWNrZ3JvdW5kKCk7XG4gICAgfVxuICAgIGdldCBiYWNrZ3JvdW5kKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHN0ZXAgPSAxO1xuICAgIEBJbnB1dCgpIG1pblZhbHVlID0gTmFOO1xuICAgIEBJbnB1dCgpIG1heFZhbHVlID0gTmFOO1xuXG4gICAgcHJpdmF0ZSBfdmFsdWUgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVDtcbiAgICBzbGlkZXJXcmFwcGVyOiBhbnkgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgcGVwTGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSkgeyB9XG5cbiAgICBwcml2YXRlIHNldEJhY2tncm91bmQoKTogdm9pZCB7XG4gICAgICAgIC8vIEdldCB0aGUgd3JhcHBlciBmb3Igc2V0IHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgICBpZiAoIXRoaXMuc2xpZGVyV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5zbGlkZXJXcmFwcGVyID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1zbGlkZXItd3JhcHBlcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2xpZGVyV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlcldyYXBwZXIsICdiYWNrZ3JvdW5kJywgdGhpcy5iYWNrZ3JvdW5kPy5sZW5ndGggPiAwID8gdGhpcy5iYWNrZ3JvdW5kIDogJyNjY2MnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnhBbGlnbm1lbnQgPSB0aGlzLnBlcExheW91dFNlcnZpY2UuaXNSdGwoKSA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgIHRoaXMuc2V0QmFja2dyb3VuZCgpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGV2ZW50LnZhbHVlKTtcbiAgICB9XG59XG4iXX0=
@@ -24,7 +24,7 @@ export class BaseFilterComponent {
24
24
  }
25
25
  set field(value) {
26
26
  this._field = value;
27
- this._fieldIdWithNoDots = value ? value.id.replace(/./g, '_') : '';
27
+ this._fieldIdWithNoDots = value ? value.id.replace(/\./g, '_') : '';
28
28
  this.setupForm();
29
29
  }
30
30
  get field() {
@@ -230,4 +230,4 @@ BaseFilterComponent.propDecorators = {
230
230
  filterClear: [{ type: Output }],
231
231
  filterChange: [{ type: Output }]
232
232
  };
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWx0ZXItY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL2NvbW1vbi9tb2RlbC9iYXNlLWZpbHRlci1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFFTixTQUFTLEVBRVQsZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUd4QixRQUFRLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFdBQVcsRUFNWCxVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsMkJBQTJCLEdBQzlCLE1BQU0sWUFBWSxDQUFDO0FBSXBCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RSxNQUFNLE9BQWdCLG1CQUFtQjtJQTRGckMsWUFDWSxnQkFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsUUFBa0MsRUFDbEMsT0FBb0IsRUFDbEIsU0FBMkIsRUFDM0IsU0FBOEIsRUFDOUIsUUFBbUI7UUFOckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFU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QUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OztZQTlRSixTQUFTLFNBQUMsRUFBRTs7O1lBakNULGdCQUFnQjtZQUtoQixRQUFRO1lBSFIsd0JBQXdCO1lBUXhCLFdBQVc7WUFvQk4sZ0JBQWdCO1lBWGhCLG1CQUFtQjtZQXJCeEIsU0FBUzs7O29CQTJDUixLQUFLO3FCQVdMLEtBQUs7MEJBU0wsTUFBTTsyQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE91dHB1dCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIENvbXBvbmVudEZhY3RvcnksXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUdyb3VwLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3JGbixcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQZXBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcixcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXQsXG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMsXG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRzLFxufSBmcm9tICcuL29wZXJhdG9yJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQZXBTbWFydEZpbHRlckRhdGEsIElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZSB9IGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCB7IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkIH0gZnJvbSAnLi9maWVsZCc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQZXBGaWx0ZXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVyLWFjdGlvbnMuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7fSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsdGVyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD47XG4gICAgcHJpdmF0ZSBhY3Rpb25zQ29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8UGVwRmlsdGVyQWN0aW9uc0NvbXBvbmVudD47XG5cbiAgICBwcml2YXRlIF9maWVsZElkV2l0aE5vRG90cyA9ICcnO1xuICAgIHByaXZhdGUgX2ZpZWxkOiBQZXBTbWFydEZpbHRlckJhc2VGaWVsZDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWVsZCh2YWx1ZTogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQpIHtcbiAgICAgICAgdGhpcy5fZmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZmllbGRJZFdpdGhOb0RvdHMgPSB2YWx1ZSA/IHZhbHVlLmlkLnJlcGxhY2UoLy4vZywgJ18nKSA6ICcnO1xuICAgICAgICB0aGlzLnNldHVwRm9ybSgpO1xuICAgIH1cbiAgICBnZXQgZmllbGQoKTogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZmlsdGVyOiBJUGVwU21hcnRGaWx0ZXJEYXRhO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbHRlcih2YWx1ZTogSVBlcFNtYXJ0RmlsdGVyRGF0YSkge1xuICAgICAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXR1cEZpbHRlcigpO1xuICAgIH1cbiAgICBnZXQgZmlsdGVyKCk6IElQZXBTbWFydEZpbHRlckRhdGEge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBmaWx0ZXJDbGVhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPElQZXBTbWFydEZpbHRlckRhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwU21hcnRGaWx0ZXJEYXRhPigpO1xuXG4gICAgcHJpdmF0ZSBfb3BlcmF0b3I6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yO1xuICAgIHNldCBvcGVyYXRvcihvcGVyYXRvcjogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3IpIHtcbiAgICAgICAgaWYgKG9wZXJhdG9yPy5pZCAhPSB0aGlzLl9vcGVyYXRvcj8uaWQpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkYXRlIG9wZXJhdG9yXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3BlcmF0b3JzLmZpbmRJbmRleCgobykgPT4gby5pZCA9PT0gb3BlcmF0b3IuaWQpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzW2luZGV4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3IgPSB0aGlzLm9wZXJhdG9yc1swXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IG9wZXJhdG9yKCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgX29wZXJhdG9yVW5pdDogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0O1xuICAgIHNldCBvcGVyYXRvclVuaXQob3BlcmF0b3JVbml0OiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXQpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgb3BlcmF0b3IgdW5pdFxuICAgICAgICBpZiAob3BlcmF0b3JVbml0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yVW5pdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVyYXRvclVuaXRzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAob3UpID0+IG91LmlkID09PSBvcGVyYXRvclVuaXQuaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yVW5pdCA9IHRoaXMub3BlcmF0b3JVbml0c1tpbmRleF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yVW5pdCA9IHRoaXMub3BlcmF0b3JVbml0c1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgb3BlcmF0b3JVbml0KCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRvclVuaXQ7XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0Q29udHJvbEtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyBgJHt0aGlzLl9maWVsZElkV2l0aE5vRG90c31fZmlyc3RgIDogJ2ZpcnN0JztcbiAgICB9XG4gICAgZ2V0IGZpcnN0Q29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmdldCh0aGlzLmZpcnN0Q29udHJvbEtleSk7XG4gICAgfVxuICAgIGdldCBzZWNvbmRDb250cm9sS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IGAke3RoaXMuX2ZpZWxkSWRXaXRoTm9Eb3RzfV9zZWNvbmRgIDogJ3NlY29uZCc7XG4gICAgfVxuICAgIGdldCBzZWNvbmRDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KHRoaXMuc2Vjb25kQ29udHJvbEtleSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9wZXJhdG9yczogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JbXTtcbiAgICBwcm90ZWN0ZWQgb3BlcmF0b3JVbml0czogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0W107XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgT1BFUkFUT1JTX1RSQU5TTEFUSU9OX1BSRUZJWCA9ICdTTUFSVF9GSUxURVJTLk9QRVJBVE9SUyc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IE9QRVJBVE9SX1VOSVRTX1RSQU5TTEFUSU9OX1BSRUZJWCA9XG4gICAgICAgICdTTUFSVF9GSUxURVJTLk9QRVJBVE9SX1VOSVRTJztcblxuICAgIGZvcm06IEZvcm1Hcm91cDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgYnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCB2YWxpZGF0b3I6IFBlcFZhbGlkYXRvclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVBY3Rpb25zQ29tcG9uZW50KCkge1xuICAgICAgICBjb25zdCBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PFBlcEZpbHRlckFjdGlvbnNDb21wb25lbnQ+ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgICAgIFBlcEZpbHRlckFjdGlvbnNDb21wb25lbnRcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmFjdGlvbnNDb250YWluZXJSZWYgPSBmYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zQ29udGFpbmVyUmVmLmluc3RhbmNlLmZvcm0gPSB0aGlzLmZvcm07XG4gICAgICAgIHRoaXMuYWN0aW9uc0NvbnRhaW5lclJlZi5pbnN0YW5jZS5hcHBseUNsaWNrLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWN0aW9uc0NvbnRhaW5lclJlZi5pbnN0YW5jZS5jbGVhckNsaWNrLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgdGhpcy5jbGVhckZpbHRlcigpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmluc2VydCh0aGlzLmFjdGlvbnNDb250YWluZXJSZWYuaG9zdFZpZXcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGb3JtKCkge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB7fTtcbiAgICAgICAgZm9ybVZhbHVlW3RoaXMuZmlyc3RDb250cm9sS2V5XSA9IFtdO1xuICAgICAgICBmb3JtVmFsdWVbdGhpcy5zZWNvbmRDb250cm9sS2V5XSA9IFtdO1xuICAgICAgICAvLyB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpO1xuXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuYnVpbGRlci5ncm91cChmb3JtVmFsdWUpO1xuICAgICAgICAvLyB0aGlzLmZvcm1bdGhpcy5maXJzdENvbnRyb2xLZXldID0gW107XG4gICAgICAgIC8vIHRoaXMuZm9ybVt0aGlzLnNlY29uZENvbnRyb2xLZXldID0gW107XG5cbiAgICAgICAgdGhpcy5zZXR1cE9wZXJhdG9ycygpO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uc0NvbXBvbmVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBPcGVyYXRvcnMoKSB7XG4gICAgICAgIC8vIEdldCB0aGUgb3BlcmF0b3JzIGJ5IGNvbXBvbmVudFR5cGUuXG4gICAgICAgIHRoaXMub3BlcmF0b3JzID0gT2JqZWN0LmtleXMoUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMpXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnNba2V5XS5jb21wb25lbnRUeXBlLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLmNvbXBvbmVudFR5cGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnNba2V5XSk7XG5cbiAgICAgICAgLy8gRmlsdGVyIGJ5IGZyb20gZmllbGQub3BlcmF0b3JzIGlucHV0IGlmIGV4aXN0LlxuICAgICAgICBpZiAodGhpcy5maWVsZC5vcGVyYXRvcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JzID0gdGhpcy5vcGVyYXRvcnMuZmlsdGVyKChvMSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLm9wZXJhdG9ycy5zb21lKChvMikgPT4gbzEuaWQgPT09IG8yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgb3BlcmF0b3IgdW5pdHMgYnkgY29tcG9uZW50VHlwZS5cbiAgICAgICAgdGhpcy5vcGVyYXRvclVuaXRzID0gT2JqZWN0LmtleXMoUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRzKVxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0c1trZXldLmNvbXBvbmVudFR5cGUuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuY29tcG9uZW50VHlwZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdHNba2V5XSk7XG5cbiAgICAgICAgLy8gRmlsdGVyIGJ5IGZyb20gZmllbGQub3BlcmF0b3JzVW5pdHMgaW5wdXQgaWYgZXhpc3QuXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLm9wZXJhdG9yVW5pdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JVbml0cyA9IHRoaXMub3BlcmF0b3JVbml0cy5maWx0ZXIoKG8xKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQub3BlcmF0b3JVbml0cy5zb21lKChvMikgPT4gbzEuaWQgPT09IG8yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvYWQgdHJhbnNsYXRpb24gYmVmb3JlIGdldCB0aGUgb3B0aW9ucyBpbiB0aGUgY2hpbGRyZW4uXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmdldCgnU01BUlRfRklMVEVSUy5USVRMRScpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRPcGVyYXRvcnNPcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9IHRoaXMuZmlsdGVyLm9wZXJhdG9yO1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvclVuaXQgPSB0aGlzLmZpbHRlci5vcGVyYXRvclVuaXQ7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB7fTtcbiAgICAgICAgICAgIGZvcm1WYWx1ZVt0aGlzLmZpcnN0Q29udHJvbEtleV0gPSB0aGlzLmZpbHRlci52YWx1ZS5maXJzdDtcbiAgICAgICAgICAgIGZvcm1WYWx1ZVt0aGlzLnNlY29uZENvbnRyb2xLZXldID0gdGhpcy5maWx0ZXIudmFsdWUuc2Vjb25kO1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPSB0aGlzLmdldERlZmF1bHRPcGVyYXRvcigpO1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvclVuaXQgPSB0aGlzLmdldERlZmF1bHRPcGVyYXRvclVuaXQoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERlc3Ryb3llcigpIHtcbiAgICAgICAgcmV0dXJuIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmFsaWRpdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XG5cbiAgICAgICAgdGhpcy5maXJzdENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLnNlY29uZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgICAvLyBMb2FkIHRoZSBvcGVyYXRvcnMgb3B0aW9ucyBmcm9tIHRoZSB0cmFuc2xhdGlvbi5cbiAgICBwcm90ZWN0ZWQgbG9hZE9wZXJhdG9yc09wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZVxuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0IHZhbGlkYXRvcnMgLSBzb21lIGNoaWxkcyBvdmVycmlkZSB0aGlzLlxuICAgIHByb3RlY3RlZCBzZXRGaWVsZHNTdGF0ZUFuZFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB0aGlzLnNlY29uZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB1bmRlZmluZWQgLSBzb21lIGNoaWxkcyBvdmVycmlkZSB0aGlzLlxuICAgIHByb3RlY3RlZCBnZXREZWZhdWx0T3BlcmF0b3JVbml0KCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRGaWx0ZXIoKSB7XG4gICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZVxuICAgIH1cblxuICAgIGFic3RyYWN0IGdldERlZmF1bHRPcGVyYXRvcigpOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcjtcbiAgICBhYnN0cmFjdCBnZXRGaWx0ZXJWYWx1ZSgpOiBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWU7XG5cbiAgICBjbGVhckZpbHRlcihlbWl0RXZlbnQgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlciA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgICB0aGlzLmluaXRGaWx0ZXIoKTtcblxuICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNsZWFyLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5RmlsdGVyKCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZ2V0RmlsdGVyVmFsdWUoKTtcblxuICAgICAgICAvLyBJZiB0aGUgZmlsdGVyIGlzIG5vdCBudWxsIGRlY2xhcmUgaXQsIGVsc2UgLSBjbGVhciBpdC5cbiAgICAgICAgaWYgKGZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICAgICAgICAgICAgZmllbGRJZDogdGhpcy5maWVsZC5pZCxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICBvcGVyYXRvclVuaXQ6IHRoaXMub3BlcmF0b3JVbml0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KGZpbHRlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIC8vIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgICAgLy8gICAgIHRoaXMudXBkYXRlVmFsaWRpdHkoKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcblxuICAgICAgICB0aGlzLmFjdGlvbnNDb250YWluZXJSZWYuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8vIHdyaXRlVmFsdWUodmFsdWU6IElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZSk6IHZvaWQge1xuICAgIC8vICAgICBpZiAodmFsdWUpIHtcbiAgICAvLyAgICAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShcbiAgICAvLyAgICAgICAgICAgICB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGZpcnN0OiB2YWx1ZS5maXJzdCxcbiAgICAvLyAgICAgICAgICAgICAgICAgc2Vjb25kOiB2YWx1ZS5zZWNvbmQgfHwgbnVsbCxcbiAgICAvLyAgICAgICAgICAgICB9LFxuICAgIC8vICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgLy8gICAgICAgICApO1xuICAgIC8vICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG5cbiAgICAvLyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAvLyAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm4pO1xuICAgIC8vIH1cblxuICAgIC8vIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyAgICAgLyogRG8gbm90aGluZyAqL1xuICAgIC8vIH07XG5cbiAgICAvLyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgLy8gICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgLy8gfVxuXG4gICAgLy8gc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vICAgICBpc0Rpc2FibGVkID8gdGhpcy5mb3JtLmRpc2FibGUoKSA6IHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICAvLyB9XG5cbiAgICAvLyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZCA/IG51bGwgOiB7IFBlcEZpbHRlcklzTm90VmFsaWQ6IHRydWUgfTtcbiAgICAvLyB9XG59XG4iXX0=
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWx0ZXItY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL2NvbW1vbi9tb2RlbC9iYXNlLWZpbHRlci1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFFTixTQUFTLEVBRVQsZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUd4QixRQUFRLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFdBQVcsRUFNWCxVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsMkJBQTJCLEdBQzlCLE1BQU0sWUFBWSxDQUFDO0FBSXBCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RSxNQUFNLE9BQWdCLG1CQUFtQjtJQTRGckMsWUFDWSxnQkFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsUUFBa0MsRUFDbEMsT0FBb0IsRUFDbEIsU0FBMkIsRUFDM0IsU0FBOEIsRUFDOUIsUUFBbUI7UUFOckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFU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QUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OztZQTlRSixTQUFTLFNBQUMsRUFBRTs7O1lBakNULGdCQUFnQjtZQUtoQixRQUFRO1lBSFIsd0JBQXdCO1lBUXhCLFdBQVc7WUFvQk4sZ0JBQWdCO1lBWGhCLG1CQUFtQjtZQXJCeEIsU0FBUzs7O29CQTJDUixLQUFLO3FCQVdMLEtBQUs7MEJBU0wsTUFBTTsyQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE91dHB1dCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIENvbXBvbmVudEZhY3RvcnksXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUdyb3VwLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3JGbixcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQZXBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcixcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXQsXG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMsXG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRzLFxufSBmcm9tICcuL29wZXJhdG9yJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQZXBTbWFydEZpbHRlckRhdGEsIElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZSB9IGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCB7IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkIH0gZnJvbSAnLi9maWVsZCc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQZXBGaWx0ZXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVyLWFjdGlvbnMuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7fSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsdGVyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD47XG4gICAgcHJpdmF0ZSBhY3Rpb25zQ29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8UGVwRmlsdGVyQWN0aW9uc0NvbXBvbmVudD47XG5cbiAgICBwcml2YXRlIF9maWVsZElkV2l0aE5vRG90cyA9ICcnO1xuICAgIHByaXZhdGUgX2ZpZWxkOiBQZXBTbWFydEZpbHRlckJhc2VGaWVsZDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWVsZCh2YWx1ZTogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQpIHtcbiAgICAgICAgdGhpcy5fZmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZmllbGRJZFdpdGhOb0RvdHMgPSB2YWx1ZSA/IHZhbHVlLmlkLnJlcGxhY2UoL1xcLi9nLCAnXycpIDogJyc7XG4gICAgICAgIHRoaXMuc2V0dXBGb3JtKCk7XG4gICAgfVxuICAgIGdldCBmaWVsZCgpOiBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9maWx0ZXI6IElQZXBTbWFydEZpbHRlckRhdGE7XG4gICAgQElucHV0KClcbiAgICBzZXQgZmlsdGVyKHZhbHVlOiBJUGVwU21hcnRGaWx0ZXJEYXRhKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldHVwRmlsdGVyKCk7XG4gICAgfVxuICAgIGdldCBmaWx0ZXIoKTogSVBlcFNtYXJ0RmlsdGVyRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGZpbHRlckNsZWFyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcFNtYXJ0RmlsdGVyRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBTbWFydEZpbHRlckRhdGE+KCk7XG5cbiAgICBwcml2YXRlIF9vcGVyYXRvcjogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3I7XG4gICAgc2V0IG9wZXJhdG9yKG9wZXJhdG9yOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcikge1xuICAgICAgICBpZiAob3BlcmF0b3I/LmlkICE9IHRoaXMuX29wZXJhdG9yPy5pZCkge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGUgb3BlcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVyYXRvcnMuZmluZEluZGV4KChvKSA9PiBvLmlkID09PSBvcGVyYXRvci5pZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yID0gdGhpcy5vcGVyYXRvcnNbaW5kZXhdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgb3BlcmF0b3IoKTogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3Ige1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlcmF0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb3BlcmF0b3JVbml0OiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXQ7XG4gICAgc2V0IG9wZXJhdG9yVW5pdChvcGVyYXRvclVuaXQ6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCkge1xuICAgICAgICAvLyBWYWxpZGF0ZSBvcGVyYXRvciB1bml0XG4gICAgICAgIGlmIChvcGVyYXRvclVuaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JVbml0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZXJhdG9yVW5pdHMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgIChvdSkgPT4gb3UuaWQgPT09IG9wZXJhdG9yVW5pdC5pZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JVbml0ID0gdGhpcy5vcGVyYXRvclVuaXRzW2luZGV4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JVbml0ID0gdGhpcy5vcGVyYXRvclVuaXRzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBvcGVyYXRvclVuaXQoKTogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yVW5pdDtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3RDb250cm9sS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IGAke3RoaXMuX2ZpZWxkSWRXaXRoTm9Eb3RzfV9maXJzdGAgOiAnZmlyc3QnO1xuICAgIH1cbiAgICBnZXQgZmlyc3RDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KHRoaXMuZmlyc3RDb250cm9sS2V5KTtcbiAgICB9XG4gICAgZ2V0IHNlY29uZENvbnRyb2xLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkID8gYCR7dGhpcy5fZmllbGRJZFdpdGhOb0RvdHN9X3NlY29uZGAgOiAnc2Vjb25kJztcbiAgICB9XG4gICAgZ2V0IHNlY29uZENvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQodGhpcy5zZWNvbmRDb250cm9sS2V5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3BlcmF0b3JzOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcltdO1xuICAgIHByb3RlY3RlZCBvcGVyYXRvclVuaXRzOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRbXTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBPUEVSQVRPUlNfVFJBTlNMQVRJT05fUFJFRklYID0gJ1NNQVJUX0ZJTFRFUlMuT1BFUkFUT1JTJztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgT1BFUkFUT1JfVU5JVFNfVFJBTlNMQVRJT05fUFJFRklYID1cbiAgICAgICAgJ1NNQVJUX0ZJTFRFUlMuT1BFUkFUT1JfVU5JVFMnO1xuXG4gICAgZm9ybTogRm9ybUdyb3VwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBidWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHZhbGlkYXRvcjogUGVwVmFsaWRhdG9yU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkID0gbmV3IFN1YmplY3QoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFjdGlvbnNDb21wb25lbnQoKSB7XG4gICAgICAgIGNvbnN0IGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8UGVwRmlsdGVyQWN0aW9uc0NvbXBvbmVudD4gPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgICAgICAgUGVwRmlsdGVyQWN0aW9uc0NvbXBvbmVudFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWN0aW9uc0NvbnRhaW5lclJlZiA9IGZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmFjdGlvbnNDb250YWluZXJSZWYuaW5zdGFuY2UuZm9ybSA9IHRoaXMuZm9ybTtcbiAgICAgICAgdGhpcy5hY3Rpb25zQ29udGFpbmVyUmVmLmluc3RhbmNlLmFwcGx5Q2xpY2suc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zQ29udGFpbmVyUmVmLmluc3RhbmNlLmNsZWFyQ2xpY2suc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuaW5zZXJ0KHRoaXMuYWN0aW9uc0NvbnRhaW5lclJlZi5ob3N0Vmlldyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEZvcm0oKSB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHt9O1xuICAgICAgICBmb3JtVmFsdWVbdGhpcy5maXJzdENvbnRyb2xLZXldID0gW107XG4gICAgICAgIGZvcm1WYWx1ZVt0aGlzLnNlY29uZENvbnRyb2xLZXldID0gW107XG4gICAgICAgIC8vIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGZvcm1WYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5idWlsZGVyLmdyb3VwKGZvcm1WYWx1ZSk7XG4gICAgICAgIC8vIHRoaXMuZm9ybVt0aGlzLmZpcnN0Q29udHJvbEtleV0gPSBbXTtcbiAgICAgICAgLy8gdGhpcy5mb3JtW3RoaXMuc2Vjb25kQ29udHJvbEtleV0gPSBbXTtcblxuICAgICAgICB0aGlzLnNldHVwT3BlcmF0b3JzKCk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25zQ29tcG9uZW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cE9wZXJhdG9ycygpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBvcGVyYXRvcnMgYnkgY29tcG9uZW50VHlwZS5cbiAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSBPYmplY3Qua2V5cyhQZXBTbWFydEZpbHRlck9wZXJhdG9ycylcbiAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQZXBTbWFydEZpbHRlck9wZXJhdG9yc1trZXldLmNvbXBvbmVudFR5cGUuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuY29tcG9uZW50VHlwZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBQZXBTbWFydEZpbHRlck9wZXJhdG9yc1trZXldKTtcblxuICAgICAgICAvLyBGaWx0ZXIgYnkgZnJvbSBmaWVsZC5vcGVyYXRvcnMgaW5wdXQgaWYgZXhpc3QuXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLm9wZXJhdG9ycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycy5maWx0ZXIoKG8xKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQub3BlcmF0b3JzLnNvbWUoKG8yKSA9PiBvMS5pZCA9PT0gbzIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IHRoZSBvcGVyYXRvciB1bml0cyBieSBjb21wb25lbnRUeXBlLlxuICAgICAgICB0aGlzLm9wZXJhdG9yVW5pdHMgPSBPYmplY3Qua2V5cyhQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdHMpXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRzW2tleV0uY29tcG9uZW50VHlwZS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5jb21wb25lbnRUeXBlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0c1trZXldKTtcblxuICAgICAgICAvLyBGaWx0ZXIgYnkgZnJvbSBmaWVsZC5vcGVyYXRvcnNVbml0cyBpbnB1dCBpZiBleGlzdC5cbiAgICAgICAgaWYgKHRoaXMuZmllbGQub3BlcmF0b3JVbml0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvclVuaXRzID0gdGhpcy5vcGVyYXRvclVuaXRzLmZpbHRlcigobzEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC5vcGVyYXRvclVuaXRzLnNvbWUoKG8yKSA9PiBvMS5pZCA9PT0gbzIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9hZCB0cmFuc2xhdGlvbiBiZWZvcmUgZ2V0IHRoZSBvcHRpb25zIGluIHRoZSBjaGlsZHJlbi5cbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KCdTTUFSVF9GSUxURVJTLlRJVExFJykuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZE9wZXJhdG9yc09wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEZpbHRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID0gdGhpcy5maWx0ZXIub3BlcmF0b3I7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yVW5pdCA9IHRoaXMuZmlsdGVyLm9wZXJhdG9yVW5pdDtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHt9O1xuICAgICAgICAgICAgZm9ybVZhbHVlW3RoaXMuZmlyc3RDb250cm9sS2V5XSA9IHRoaXMuZmlsdGVyLnZhbHVlLmZpcnN0O1xuICAgICAgICAgICAgZm9ybVZhbHVlW3RoaXMuc2Vjb25kQ29udHJvbEtleV0gPSB0aGlzLmZpbHRlci52YWx1ZS5zZWNvbmQ7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9IHRoaXMuZ2V0RGVmYXVsdE9wZXJhdG9yKCk7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yVW5pdCA9IHRoaXMuZ2V0RGVmYXVsdE9wZXJhdG9yVW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpbHRlcihmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RGVzdHJveWVyKCkge1xuICAgICAgICByZXR1cm4gdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWxpZGl0eSgpIHtcbiAgICAgICAgdGhpcy5zZXRGaWVsZHNTdGF0ZUFuZFZhbGlkYXRvcnMoKTtcblxuICAgICAgICB0aGlzLmZpcnN0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICAgIC8vIExvYWQgdGhlIG9wZXJhdG9ycyBvcHRpb25zIGZyb20gdGhlIHRyYW5zbGF0aW9uLlxuICAgIHByb3RlY3RlZCBsb2FkT3BlcmF0b3JzT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlXG4gICAgfVxuXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsaWRhdG9ycyAtIHNvbWUgY2hpbGRzIG92ZXJyaWRlIHRoaXMuXG4gICAgcHJvdGVjdGVkIHNldEZpZWxkc1N0YXRlQW5kVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgdGhpcy5zZWNvbmRDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAtIHNvbWUgY2hpbGRzIG92ZXJyaWRlIHRoaXMuXG4gICAgcHJvdGVjdGVkIGdldERlZmF1bHRPcGVyYXRvclVuaXQoKTogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0IHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdEZpbHRlcigpIHtcbiAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlXG4gICAgfVxuXG4gICAgYWJzdHJhY3QgZ2V0RGVmYXVsdE9wZXJhdG9yKCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yO1xuICAgIGFic3RyYWN0IGdldEZpbHRlclZhbHVlKCk6IElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZTtcblxuICAgIGNsZWFyRmlsdGVyKGVtaXRFdmVudCA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuaW5pdEZpbHRlcigpO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2xlYXIuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlGaWx0ZXIoKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdGhpcy5nZXRGaWx0ZXJWYWx1ZSgpO1xuXG4gICAgICAgIC8vIElmIHRoZSBmaWx0ZXIgaXMgbm90IG51bGwgZGVjbGFyZSBpdCwgZWxzZSAtIGNsZWFyIGl0LlxuICAgICAgICBpZiAoZmlsdGVyVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHtcbiAgICAgICAgICAgICAgICBmaWVsZElkOiB0aGlzLmZpZWxkLmlkLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yVW5pdDogdGhpcy5vcGVyYXRvclVuaXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlclZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlciA9IGZpbHRlcjtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoZmlsdGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAvLyAgICAgdGhpcy51cGRhdGVWYWxpZGl0eSgpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuXG4gICAgICAgIHRoaXMuYWN0aW9uc0NvbnRhaW5lclJlZi5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLy8gd3JpdGVWYWx1ZSh2YWx1ZTogSVBlcFNtYXJ0RmlsdGVyRGF0YVZhbHVlKTogdm9pZCB7XG4gICAgLy8gICAgIGlmICh2YWx1ZSkge1xuICAgIC8vICAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKFxuICAgIC8vICAgICAgICAgICAgIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgZmlyc3Q6IHZhbHVlLmZpcnN0LFxuICAgIC8vICAgICAgICAgICAgICAgICBzZWNvbmQ6IHZhbHVlLnNlY29uZCB8fCBudWxsLFxuICAgIC8vICAgICAgICAgICAgIH0sXG4gICAgLy8gICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAvLyAgICAgICAgICk7XG4gICAgLy8gICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIC8vIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIC8vICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShmbik7XG4gICAgLy8gfVxuXG4gICAgLy8gb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIC8vICAgICAvKiBEbyBub3RoaW5nICovXG4gICAgLy8gfTtcblxuICAgIC8vIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAvLyAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICAvLyB9XG5cbiAgICAvLyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gICAgIGlzRGlzYWJsZWQgPyB0aGlzLmZvcm0uZGlzYWJsZSgpIDogdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgIC8vIH1cblxuICAgIC8vIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkID8gbnVsbCA6IHsgUGVwRmlsdGVySXNOb3RWYWxpZDogdHJ1ZSB9O1xuICAgIC8vIH1cbn1cbiJdfQ==
@@ -21,7 +21,7 @@ export class PepTextboxComponent {
21
21
  this.utilitiesService = utilitiesService;
22
22
  this.dataQa = '';
23
23
  this._key = '';
24
- this._value = null;
24
+ this._value = '';
25
25
  this._formattedValue = null;
26
26
  /**
27
27
  * The title of the textbox.
@@ -364,4 +364,4 @@ PepTextboxComponent.propDecorators = {
364
364
  formValidationChange: [{ type: Output }],
365
365
  input: [{ type: ViewChild, args: ['input',] }]
366
366
  };
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBR1QsV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLDRCQUE0QixFQUU1QixlQUFlLEVBRWYsbUJBQW1CLEdBQ3RCLE1BQU0seUJBQXlCLENBQUM7QUFFakM7Ozs7Ozs7O0dBUUc7QUFPSCxNQUFNLE9BQU8sbUJBQW1CO0lBd0s1QixZQUNXLEVBQWUsRUFDZCxvQkFBNkMsRUFDN0MsUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsU0FBMkIsRUFDM0IsZ0JBQXFDO1FBTHRDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBNUtwQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWpDLFNBQUksR0FBVyxFQUFFLENBQUM7UUFlbEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQXNCZCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQXNCL0I7Ozs7V0FJRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFcEI7Ozs7V0FJRztRQUNNLGdC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LEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7MkJBQ0wsS0FBSzt5QkFDTCxLQUFLOzZCQUNMLEtBQUs7MEJBUUwsTUFBTTttQ0FHTixNQUFNO29CQUdOLFNBQVMsU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFJlbmRlcmVyMixcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0VHlwZSxcbiAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICBQZXBIb3Jpem9udGFsQWxpZ25tZW50LFxuICAgIERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQsXG4gICAgUGVwVGV4dGJveEZpZWxkVHlwZSxcbiAgICBQZXBUZXh0Ym94RmllbGQsXG4gICAgUGVwRmllbGRCYXNlLFxuICAgIFBlcFV0aWxpdGllc1NlcnZpY2UsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcblxuLyoqXG4gKiBUaGlzIGlzIGEgdGV4dCBib3ggaW5wdXQgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZSB0b1xuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBQZXBUZXh0Ym94Q29tcG9uZW50XG4gKiBAaW1wbGVtZW50cyB7T25DaGFuZ2VzfVxuICogQGltcGxlbWVudHMge09uSW5pdH1cbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLXRleHRib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0Ym94LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90ZXh0Ym94LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBlcFRleHRib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXFhJykgZGF0YVFhID0gJyc7XG5cbiAgICBwcml2YXRlIF9rZXk6IHN0cmluZyA9ICcnO1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0IGJveCBrZXlcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBQZXBUZXh0Ym94Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQga2V5KHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2tleSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmRhdGFRYSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsdWUgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZSBvZiB0aGUgdGV4dCBib3guXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGVwVGV4dGJveENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Zvcm1hdHRlZFZhbHVlID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBUaGUgZm9ybWF0dGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmb3JtYXR0ZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fY2FsY3VsYXRlRm9ybWF0dGVkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGl0bGUgb2YgdGhlIHRleHRib3guXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGVwVGV4dGJveENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGxhY2Vob2xkZXIgKHJlbGV2YW50IG9ubHkgZm9yIGNoaWxkcmVuIC0gaWYgcGFyZW50IGlzbid0IG51bGwpLlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgdGhlIHRleHRib3guXG4gICAgICpcbiAgICAgKiBAdHlwZSB7UGVwVGV4dGJveEZpZWxkVHlwZX1cbiAgICAgKiBAbWVtYmVyb2YgUGVwVGV4dGJveENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHR5cGU6IFBlcFRleHRib3hGaWVsZFR5cGUgPSAndGV4dCc7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgdGV4dGJveCBpcyBtYW5kYXRvcnlcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBQZXBUZXh0Ym94Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgbWFuZGF0b3J5ID0gZmFsc2U7XG5cbiAgICAvLyBUT0RPOiBDaGVjayBpZiBzaG91bGQgcmVtb3ZlIGRpc2FibGVkIGFuZCBrZWVwIG9ubHkgcmVhZG9ubHkuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHRleHRib3ggaXMgZGlzYWJsZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGVwVGV4dGJveENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgdGV4dGJveCBpcyByZWFkb25seVxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG1heEZpZWxkQ2hhcmFjdGVyczogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHRleHRDb2xvciA9ICcnO1xuICAgIEBJbnB1dCgpIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuICAgIEBJbnB1dCgpIHJvd1NwYW4gPSAxO1xuICAgIC8vIEBJbnB1dCgpIGxhc3RGb2N1c0ZpZWxkOiBhbnk7XG4gICAgQElucHV0KCkgbWluVmFsdWUgPSBOYU47XG4gICAgQElucHV0KCkgbWF4VmFsdWUgPSBOYU47XG5cbiAgICBwcml2YXRlIF92aXNpYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHNldCB2aXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHZpc2libGU7XG4gICAgICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICdoaWRkZW4tZWxlbWVudCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICdoaWRkZW4tZWxlbWVudCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cCA9IG51bGw7XG4gICAgQElucHV0KCkgaXNBY3RpdmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93VGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHJlbmRlclRpdGxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSByZW5kZXJFcnJvciA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyU3ltYm9sID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuICAgIEBJbnB1dCgpIHBhcmVudEZpZWxkS2V5OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIGNoYW5nZSBldmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8c3RyaW5nPn1cbiAgICAgKiBAbWVtYmVyb2YgUGVwVGV4dGJveENvbXBvbmVudFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVZhbGlkYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSA9IHRydWU7XG4gICAgZ2V0IGNhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsY3VsYXRlRm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgY29udHJvbFR5cGUgPSAndGV4dGJveCc7XG5cbiAgICBzdGFuZEFsb25lID0gZmFsc2U7XG4gICAgaXNJbkVkaXRNb2RlID0gZmFsc2U7XG4gICAgaXNJbkZvY3VzOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXRpbGl0aWVzU2VydmljZTogUGVwVXRpbGl0aWVzU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmlzSW5Gb2N1cyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9ybWF0dGVkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5fY2FsY3VsYXRlRm9ybWF0dGVkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZFZhbHVlID0gdGhpcy5pc051bWJlclR5cGUoKVxuICAgICAgICAgICAgICAgID8gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmZvcm1hdE51bWJlcih2YWx1ZSlcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9ybWF0dGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybUZpZWxkVmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUZvcm1GaWVsZFZhbHVlKCkge1xuICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5mb3JtLFxuICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgICAgdGhpcy5wYXJlbnRGaWVsZEtleVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBkaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlcyA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICByZXMgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5pc0luRm9jdXMgPyB0aGlzLnZhbHVlIDogdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGVwRmllbGQgPSBuZXcgUGVwVGV4dGJveEZpZWxkKHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIG1hbmRhdG9yeTogdGhpcy5tYW5kYXRvcnksXG4gICAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICAgICAgbWF4RmllbGRDaGFyYWN0ZXJzOiB0aGlzLm1heEZpZWxkQ2hhcmFjdGVycyxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIG1pblZhbHVlOiB0aGlzLm1pblZhbHVlLFxuICAgICAgICAgICAgbWF4VmFsdWU6IHRoaXMubWF4VmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldERlZmF1bHRGcm9tR3JvdXAoXG4gICAgICAgICAgICBwZXBGaWVsZCxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRXJyb3JcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zdGFuZEFsb25lID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5taW5WYWx1ZSA9XG4gICAgICAgICAgICAgICAgaXNOYU4odGhpcy5taW5WYWx1ZSkgJiYgIWlzTmFOKHRoaXMubWF4VmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMubWluVmFsdWU7XG4gICAgICAgICAgICB0aGlzLm1heFZhbHVlID1cbiAgICAgICAgICAgICAgICBpc05hTih0aGlzLm1heFZhbHVlKSAmJiAhaXNOYU4odGhpcy5taW5WYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgPyA5OTk5OVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMubWF4VmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVEFORF9BTE9ORV9GSUVMRF9DTEFTU19OQU1FXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWFkb25seSA9IHRoaXMudHlwZSA9PT0gJ2R1cmF0aW9uJyA/IHRydWUgOiB0aGlzLnJlYWRvbmx5OyAvLyBIYWNrIHVudGlsIHdlIGRldmVsb3AgVGltZXIgVUkgZm9yIGVkaXRpbmcgRHVyYXRpb24gZmllbGRcblxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0YW5kQWxvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVhZG9ubHkgPSB0aGlzLnR5cGUgPT09ICdkdXJhdGlvbicgPyB0cnVlIDogdGhpcy5yZWFkb25seTsgLy8gSGFjayB1bnRpbCB3ZSBkZXZlbG9wIFRpbWVyIFVJIGZvciBlZGl0aW5nIER1cmF0aW9uIGZpZWxkXG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgb25Gb2N1cyhldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNJbkZvY3VzID0gdHJ1ZTtcblxuICAgICAgICAvLyBzZWxlY3QgdGhlIHZhbHVlIGluIGZvY3VzIChESS0xODI0NiBpbXByb3ZlbWVudClcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGV2ZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgZXZlbnRUYXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGlzTnVtYmVyVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gJ3BlcmNlbnRhZ2UnIHx8XG4gICAgICAgICAgICB0aGlzLnR5cGUgPT09ICdjdXJyZW5jeScgfHxcbiAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gJ2ludCcgfHxcbiAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gJ3JlYWwnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNWYWx1ZVZhbGlkKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTnVtYmVyVHlwZSgpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gdGhpcy5tYW5kYXRvcnkgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlclZhbHVlID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmNvZXJjZU51bWJlclByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmVzID1cbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyVmFsdWUgPj0gdGhpcy5taW5WYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBudW1iZXJWYWx1ZSA8PSB0aGlzLm1heFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVE9ETzogTWF5YmUgbmVlZCB0byBjaGVjayBvdGhlciB0eXBlcy5cbiAgICAgICAgICAgIHJlcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlzRGlmZmVyZW50VmFsdWUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcmVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNOdW1iZXJUeXBlKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnV0aWxpdGllc1NlcnZpY2UuY29lcmNlTnVtYmVyUHJvcGVydHkoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmNvZXJjZU51bWJlclByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXMgPSBjdXJyZW50VmFsdWUgIT09IG5ld1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgb25DaGFuZ2UoZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQgPyBlLnRhcmdldC52YWx1ZSA6IGU7XG5cbiAgICAgICAgLy8gVE9ETzogdW5jb21tZW50XG4gICAgICAgIC8vIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25CbHVyKGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzSW5Gb2N1cyA9IGZhbHNlO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0ID8gZS50YXJnZXQudmFsdWUgOiBlO1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWUgJiYgdGhpcy5pc0RpZmZlcmVudFZhbHVlKHZhbHVlKSkge1xuICAgICAgICAgICAgLy8gSWYgcmVuZGVyRXJyb3IgaXMgZmFsc2UgYW5kIHRoZSBuZXcgdmFsdWUgaXMgbm90IHZhbGlkLlxuICAgICAgICAgICAgaWYgKCF0aGlzLnJlbmRlckVycm9yICYmICF0aGlzLmlzVmFsdWVWYWxpZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICd2YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBpcyBzZXR0aW5nIHRoZSBmb3JtYXR0ZWQgdmFsdWUgdGhlbiBzZXQgdGhlIHZhbHVlIHRpbGwgdGhlIHVzZXIgZm9ybWF0IGl0IGFuZCByZXR1cm4gaXQgYmFjay5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5pc0luRWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFuY2hvckNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChjdXJyZW50VmFsdWUudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbignbWFpbHRvOicgKyBjdXJyZW50VmFsdWUsICdlbWFpbCcpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCd0ZWw6JyArIGN1cnJlbnRWYWx1ZSwgJ3RlbCcpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYXJkVGVtcGxhdGVDbGlja2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRWRpdE1vZGUgPSB0cnVlO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbn1cbiJdfQ==
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBR1QsV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLDRCQUE0QixFQUU1QixlQUFlLEVBRWYsbUJBQW1CLEdBQ3RCLE1BQU0seUJBQXlCLENBQUM7QUFFakM7Ozs7Ozs7O0dBUUc7QUFPSCxNQUFNLE9BQU8sbUJBQW1CO0lBd0s1QixZQUNXLEVBQWUsRUFDZCxvQkFBNkMsRUFDN0MsUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsU0FBMkIsRUFDM0IsZ0JBQXFDO1FBTHRDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBNUtwQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWpDLFNBQUksR0FBRyxFQUFFLENBQUM7UUFlVixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBc0JaLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBc0IvQjs7OztXQUlHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7OztXQUlHO1FBQ00sZ0JB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S0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7NkJBQ0wsS0FBSzswQkFRTCxNQUFNO21DQUdOLE1BQU07b0JBR04sU0FBUyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgRWxlbWVudFJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgUmVuZGVyZXIyLFxuICAgIE9uRGVzdHJveSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFBlcEhvcml6b250YWxBbGlnbm1lbnQsXG4gICAgREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVCxcbiAgICBQZXBUZXh0Ym94RmllbGRUeXBlLFxuICAgIFBlcFRleHRib3hGaWVsZCxcbiAgICBQZXBGaWVsZEJhc2UsXG4gICAgUGVwVXRpbGl0aWVzU2VydmljZSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG4vKipcbiAqIFRoaXMgaXMgYSB0ZXh0IGJveCBpbnB1dCBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlIHRvXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFBlcFRleHRib3hDb21wb25lbnRcbiAqIEBpbXBsZW1lbnRzIHtPbkNoYW5nZXN9XG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtdGV4dGJveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHRib3guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RleHRib3guY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGVwVGV4dGJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtcWEnKSBkYXRhUWEgPSAnJztcblxuICAgIHByaXZhdGUgX2tleSA9ICcnO1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0IGJveCBrZXlcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBQZXBUZXh0Ym94Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQga2V5KHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2tleSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmRhdGFRYSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcbiAgICAvKipcbiAgICAgKiBUaGUgdmFsdWUgb2YgdGhlIHRleHQgYm94LlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLl9jYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9mb3JtYXR0ZWRWYWx1ZSA9IG51bGw7XG4gICAgLyoqXG4gICAgICogVGhlIGZvcm1hdHRlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBQZXBUZXh0Ym94Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9ybWF0dGVkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSB0ZXh0Ym94LlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBsYWNlaG9sZGVyIChyZWxldmFudCBvbmx5IGZvciBjaGlsZHJlbiAtIGlmIHBhcmVudCBpc24ndCBudWxsKS5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBQZXBUZXh0Ym94Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSB0ZXh0Ym94LlxuICAgICAqXG4gICAgICogQHR5cGUge1BlcFRleHRib3hGaWVsZFR5cGV9XG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0eXBlOiBQZXBUZXh0Ym94RmllbGRUeXBlID0gJ3RleHQnO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHRleHRib3ggaXMgbWFuZGF0b3J5XG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGVwVGV4dGJveENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1hbmRhdG9yeSA9IGZhbHNlO1xuXG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgc2hvdWxkIHJlbW92ZSBkaXNhYmxlZCBhbmQga2VlcCBvbmx5IHJlYWRvbmx5LlxuICAgIC8qKlxuICAgICAqIElmIHRoZSB0ZXh0Ym94IGlzIGRpc2FibGVkLlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHRleHRib3ggaXMgcmVhZG9ubHlcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBQZXBUZXh0Ym94Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBtYXhGaWVsZENoYXJhY3RlcnM6IG51bWJlcjtcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3IgPSAnJztcbiAgICBASW5wdXQoKSB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVDtcbiAgICBASW5wdXQoKSByb3dTcGFuID0gMTtcbiAgICAvLyBASW5wdXQoKSBsYXN0Rm9jdXNGaWVsZDogYW55O1xuICAgIEBJbnB1dCgpIG1pblZhbHVlID0gTmFOO1xuICAgIEBJbnB1dCgpIG1heFZhbHVlID0gTmFOO1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXAgPSBudWxsO1xuICAgIEBJbnB1dCgpIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2hvd1RpdGxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSByZW5kZXJUaXRsZSA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyRXJyb3IgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHJlbmRlclN5bWJvbCA9IHRydWU7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcbiAgICBASW5wdXQoKSBwYXJlbnRGaWVsZEtleTogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZSBjaGFuZ2UgZXZlbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPHN0cmluZz59XG4gICAgICogQG1lbWJlcm9mIFBlcFRleHRib3hDb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1WYWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlRm9ybWF0dGVkVmFsdWUgPSB0cnVlO1xuICAgIGdldCBjYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIGNvbnRyb2xUeXBlID0gJ3RleHRib3gnO1xuXG4gICAgc3RhbmRBbG9uZSA9IGZhbHNlO1xuICAgIGlzSW5FZGl0TW9kZSA9IGZhbHNlO1xuICAgIGlzSW5Gb2N1czogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHV0aWxpdGllc1NlcnZpY2U6IFBlcFV0aWxpdGllc1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvcm1hdHRlZFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuaXNOdW1iZXJUeXBlKClcbiAgICAgICAgICAgICAgICA/IHRoaXMudXRpbGl0aWVzU2VydmljZS5mb3JtYXROdW1iZXIodmFsdWUpXG4gICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGb3JtRmllbGRWYWx1ZSgpIHtcbiAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS51cGRhdGVGb3JtRmllbGRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuZm9ybSxcbiAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICAgIHRoaXMucGFyZW50RmllbGRLZXlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXMgPSAnJztcblxuICAgICAgICBpZiAodGhpcy50eXBlID09ICdsaW5rJykge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuaXNJbkZvY3VzID8gdGhpcy52YWx1ZSA6IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdEZvcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBlcEZpZWxkID0gbmV3IFBlcFRleHRib3hGaWVsZCh7XG4gICAgICAgICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBtYW5kYXRvcnk6IHRoaXMubWFuZGF0b3J5LFxuICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHksXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgICAgIG1heEZpZWxkQ2hhcmFjdGVyczogdGhpcy5tYXhGaWVsZENoYXJhY3RlcnMsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBtaW5WYWx1ZTogdGhpcy5taW5WYWx1ZSxcbiAgICAgICAgICAgIG1heFZhbHVlOiB0aGlzLm1heFZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5nZXREZWZhdWx0RnJvbUdyb3VwKFxuICAgICAgICAgICAgcGVwRmllbGQsXG4gICAgICAgICAgICB0aGlzLnJlbmRlckVycm9yXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhbmRBbG9uZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMubWluVmFsdWUgPVxuICAgICAgICAgICAgICAgIGlzTmFOKHRoaXMubWluVmFsdWUpICYmICFpc05hTih0aGlzLm1heFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLm1pblZhbHVlO1xuICAgICAgICAgICAgdGhpcy5tYXhWYWx1ZSA9XG4gICAgICAgICAgICAgICAgaXNOYU4odGhpcy5tYXhWYWx1ZSkgJiYgIWlzTmFOKHRoaXMubWluVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gOTk5OTlcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLm1heFZhbHVlO1xuXG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRGb3JtKCk7XG5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RBTkRfQUxPTkVfRklFTERfQ0xBU1NfTkFNRVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVhZG9ubHkgPSB0aGlzLnR5cGUgPT09ICdkdXJhdGlvbicgPyB0cnVlIDogdGhpcy5yZWFkb25seTsgLy8gSGFjayB1bnRpbCB3ZSBkZXZlbG9wIFRpbWVyIFVJIGZvciBlZGl0aW5nIER1cmF0aW9uIGZpZWxkXG5cbiAgICAgICAgdGhpcy51cGRhdGVGb3JtRmllbGRWYWx1ZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFuZEFsb25lKSB7XG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRGb3JtKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy50eXBlID09PSAnZHVyYXRpb24nID8gdHJ1ZSA6IHRoaXMucmVhZG9ubHk7IC8vIEhhY2sgdW50aWwgd2UgZGV2ZWxvcCBUaW1lciBVSSBmb3IgZWRpdGluZyBEdXJhdGlvbiBmaWVsZFxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIG9uRm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzSW5Gb2N1cyA9IHRydWU7XG5cbiAgICAgICAgLy8gc2VsZWN0IHRoZSB2YWx1ZSBpbiBmb2N1cyAoREktMTgyNDYgaW1wcm92ZW1lbnQpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChldmVudFRhcmdldCkge1xuICAgICAgICAgICAgICAgIGV2ZW50VGFyZ2V0LnNlbGVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBpc051bWJlclR5cGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnR5cGUgPT09ICdwZXJjZW50YWdlJyB8fFxuICAgICAgICAgICAgdGhpcy50eXBlID09PSAnY3VycmVuY3knIHx8XG4gICAgICAgICAgICB0aGlzLnR5cGUgPT09ICdpbnQnIHx8XG4gICAgICAgICAgICB0aGlzLnR5cGUgPT09ICdyZWFsJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzVmFsdWVWYWxpZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5pc051bWJlclR5cGUoKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMubWFuZGF0b3J5ID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJWYWx1ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5jb2VyY2VOdW1iZXJQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlcyA9XG4gICAgICAgICAgICAgICAgICAgIG51bWJlclZhbHVlID49IHRoaXMubWluVmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyVmFsdWUgPD0gdGhpcy5tYXhWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRPRE86IE1heWJlIG5lZWQgdG8gY2hlY2sgb3RoZXIgdHlwZXMuXG4gICAgICAgICAgICByZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpc0RpZmZlcmVudFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTnVtYmVyVHlwZSgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmNvZXJjZU51bWJlclByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5jb2VyY2VOdW1iZXJQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcmVzID0gY3VycmVudFZhbHVlICE9PSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKGU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0ID8gZS50YXJnZXQudmFsdWUgOiBlO1xuXG4gICAgICAgIC8vIFRPRE86IHVuY29tbWVudFxuICAgICAgICAvLyB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIG9uQmx1cihlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlLnRhcmdldCA/IGUudGFyZ2V0LnZhbHVlIDogZTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlICYmIHRoaXMuaXNEaWZmZXJlbnRWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIElmIHJlbmRlckVycm9yIGlzIGZhbHNlIGFuZCB0aGUgbmV3IHZhbHVlIGlzIG5vdCB2YWxpZC5cbiAgICAgICAgICAgIGlmICghdGhpcy5yZW5kZXJFcnJvciAmJiAhdGhpcy5pc1ZhbHVlVmFsaWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAndmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgc2V0dGluZyB0aGUgZm9ybWF0dGVkIHZhbHVlIHRoZW4gc2V0IHRoZSB2YWx1ZSB0aWxsIHRoZSB1c2VyIGZvcm1hdCBpdCBhbmQgcmV0dXJuIGl0IGJhY2suXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0luRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbkVkaXRNb2RlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbmNob3JDbGlja2VkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoY3VycmVudFZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oJ21haWx0bzonICsgY3VycmVudFZhbHVlLCAnZW1haWwnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbigndGVsOicgKyBjdXJyZW50VmFsdWUsICd0ZWwnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FyZFRlbXBsYXRlQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNJbkVkaXRNb2RlID0gdHJ1ZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG59XG4iXX0=