@c8y/ngx-components 1018.0.203 → 1018.0.205

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.
@@ -140,6 +140,7 @@ export class DropAreaComponent {
140
140
  this.clearErrors();
141
141
  this.dropped.emit(null);
142
142
  this.onChange(null);
143
+ this.onTouched();
143
144
  this.cd.markForCheck();
144
145
  }
145
146
  writeValue(value) {
@@ -159,6 +160,7 @@ export class DropAreaComponent {
159
160
  this.onTouched = fn;
160
161
  }
161
162
  async onFilesSelected(files) {
163
+ this.onTouched();
162
164
  const hasValidNameLength = this.filesService.checkMaxLength(files);
163
165
  if (!hasValidNameLength) {
164
166
  this.onFileInvalidNameLength();
@@ -351,4 +353,4 @@ var ReadAsType;
351
353
  ReadAsType[ReadAsType["ARRAY_BUFFER"] = 2] = "ARRAY_BUFFER";
352
354
  ReadAsType[ReadAsType["BINARY_STRING"] = 3] = "BINARY_STRING";
353
355
  })(ReadAsType || (ReadAsType = {}));
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBRTFDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQXdENUIsWUFDVSxFQUFxQixFQUNyQixZQUEwQixFQUMxQixTQUEyQixFQUMzQixLQUFnQixFQUNoQixHQUFlO1FBSmYsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBM0RoQixVQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEs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RSxlQUFlLGFBRWQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzttTkFHL0UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQTBCRyxNQUFNO3NCQUFkLEtBQUs7Z0JBUStCLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxJQUFJO3NCQUF6QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ksTUFBTTtzQkFBN0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVd0QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQXFTbkMsSUFBSyxVQUtKO0FBTEQsV0FBSyxVQUFVO0lBQ2IsMkNBQUksQ0FBQTtJQUNKLG1EQUFRLENBQUE7SUFDUiwyREFBWSxDQUFBO0lBQ1osNkRBQWEsQ0FBQTtBQUNmLENBQUMsRUFMSSxVQUFVLEtBQVYsVUFBVSxRQUtkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGdldCwgbWFwLCBzb21lLCBtaW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnl0ZXNQaXBlIH0gZnJvbSAnLi4vY29tbW9uL2J5dGVzLnBpcGUnO1xuaW1wb3J0IHsgRmlsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2ZpbGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbi8qKlxuICogQSBkcm9wLXpvbmUgd2hpY2ggaXMgYSBmaWxlIHNlbGVjdG9yIGFsbG93aW5nIHVzZXJzIHRvIHNlbGVjdCBmaWxlKHMpIGZyb20gdGhlaXIgZmlsZSBzeXN0ZW0sIGVpdGhlciBuYXRpdmVseSBvciBieSBkcmFnIGFuZCBkcm9wLlxuICpcbiAqICMjIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogIDxkaXY+XG4gKiAgICA8Yzh5LWRyb3AtYXJlYVxuICogICAgICAoZHJvcHBlZCk9XCJ1cGxvYWRGaWxlKCRldmVudClcIlxuICogICAgICBbaWNvbl09XCIndXBsb2FkJ1wiXG4gKiAgICAgIFthY2NlcHRdPVwiJy56aXAsLjd6LHZpZGVvJ1wiPlxuICogICAgPC9jOHktZHJvcC1hcmVhPlxuICogIDwvZGl2PlxuICogYGBgXG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRyb3AtYXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJvcEFyZWFDb21wb25lbnQsIG11bHRpOiB0cnVlIH1dXG59KVxuZXhwb3J0IGNsYXNzIERyb3BBcmVhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICBASW5wdXQoKSB0aXRsZSA9IGdldHRleHQoJ1VwbG9hZCBmaWxlJyk7XG4gIEBJbnB1dCgpIG1lc3NhZ2UgPSBnZXR0ZXh0KCdEcm9wIGZpbGUgaGVyZScpO1xuICBASW5wdXQoKSBpY29uID0gJ3BsdXMtc3F1YXJlJztcbiAgQElucHV0KCkgbG9hZGluZ01lc3NhZ2UgPSBnZXR0ZXh0KCdVcGxvYWRpbmfigKYnKTtcbiAgQElucHV0KCkgZm9yY2VIaWRlTGlzdCA9IGZhbHNlO1xuICAvKiogQWZmZWN0cyBkaXNwbGF5aW5nIGJvdGggdGhlIGRyb3Agem9uZSBhbmQgdGhlIGxpc3Qgb2YgZHJvcHBlZCBmaWxlcy4gKi9cbiAgQElucHV0KCkgYWx3YXlzU2hvdyA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGlja1RvT3BlbiA9IHRydWU7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIHVwbG9hZCBhcyBhIHBlcmNlbnRhZ2UuIElmIG5vdCBnaXZlbiBhIHNwaW5uZXIgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBwcm9ncmVzcyA9IC0xOyAvLyAtMSA9IHNwaW5uZXJcbiAgQE91dHB1dCgpIGRyb3BwZWQ6IEV2ZW50RW1pdHRlcjxEcm9wcGVkRmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbWF4QWxsb3dlZEZpbGVzID0gSW5maW5pdHk7XG4gIEBJbnB1dCgpIGZpbGVzOiBGaWxlTGlzdDtcbiAgQElucHV0KCkgbWF4RmlsZVNpemVJbk1lZ2FCeXRlczogbnVtYmVyO1xuICAvKiogU3BlY2lmaWVzIGEgZmlsdGVyIGZvciB3aGF0IGZpbGUgdHlwZXMgdGhlIHVzZXIgY2FuIHBpY2sgZnJvbSB0aGUgZmlsZSBpbnB1dCBkaWFsb2cgYm94LlxuICAgKiAjIyBFeGFtcGxlOlxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9uczpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicuemlwLC43eidcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9ucyBhbmQgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicucGRmLGFyY2hpdmUnXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqICBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJ2FyY2hpdmUsdmlkZW8nXCJcbiAgICogIC4uLlxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBpc092ZXIgPSBmYWxzZTtcbiAgZXJyb3JzID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBmaWxlc05hbWVTdHJpbmc6IHN0cmluZztcbiAgYWNjZXB0ZWRFeHRzOiBzdHJpbmdbXTtcbiAgaGFzRHJvcEFyZWFTbWFsbENsYXNzOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2FyZWEnLCB7IHN0YXRpYzogdHJ1ZSB9KSBhcmVhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd6b25lJywgeyBzdGF0aWM6IGZhbHNlIH0pIHpvbmU6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwaWNrZXI6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmaWxlc1NlcnZpY2U6IEZpbGVzU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGJ5dGVzOiBCeXRlc1BpcGUsXG4gICAgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgb25rZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjY2VwdGVkRXh0cyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmV4dHJhY3RGaWxlRXh0ZW5zaW9ucyh0aGlzLmFjY2VwdCkubWFwKHQgPT4gYC4ke3R9YCk7XG4gICAgdGhpcy5hbHdheXNTaG93ID0gdGhpcy5hbHdheXNTaG93IHx8IHRoaXMuYXJlYS5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcblxuICAgIGlmICh0aGlzLmZpbGVzICYmIHRoaXMuaXNGaWxlc0FuT2JqZWN0T3JBcnJheSgpICYmIHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQodGhpcy5maWxlcyk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuaGFzRHJvcEFyZWFTbWFsbENsYXNzID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2Ryb3AtYXJlYS1zbScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHN0eWxlIG9mIHRoZSBkcm9wIHpvbmUgZWxlbWVudCB3aGVuIGEgZmlsZSBpcyBkcmFnZ2VkIG92ZXIgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmFyZWEubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKyAncHgnO1xuICAgIHRoaXMub25PdmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgY29tcHV0ZXIgYnJvd3NlciB3aXRoIGZpbGVzIHRvIGRyb3AgaW50byBkcm9wLWFyZWEgem9uZS5cbiAgICovXG4gIHNob3dQaWNrZXIoJGV2ZW50Pyk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudERlZmF1bHQoJGV2ZW50KTtcbiAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGZpbGUgaXMgb24gb3ZlciBkcm9wIGFyZWEsIGJ1dCBub3QgZHJvcHBlZC5cbiAgICovXG4gIG9uT3ZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNPdmVyKSB7XG4gICAgICB0aGlzLmlzT3ZlciA9IHRydWU7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIGRyb3BwZWQuXG4gICAqL1xuICBvblBpY2soJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcnMgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LnRhcmdldC5maWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGZpbGUgd2hlbiBpdCBpcyBkcm9wcGVkIGludG8gZHJvcC1hcmVhLlxuICAgKi9cbiAgb25Ecm9wKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudERlZmF1bHQoJGV2ZW50KTtcbiAgICB0aGlzLm9uRmlsZXNTZWxlY3RlZCgkZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICB0aGlzLnN0b3BEcmFnZ2luZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBjb25kaXRpb24gd2hhdCBzaG91bGQgYmUgZGlzcGxheWVkOiBkcm9wLWFyZWEgem9uZSBvciBsaXN0IG9mIGRyb3BwZWQgZmlsZXMuXG4gICAqL1xuICBzaG91bGRTaG93RmlsZXNMaXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSAmJlxuICAgICAgIXRoaXMuZm9yY2VIaWRlTGlzdCAmJlxuICAgICAgdGhpcy5hbHdheXNTaG93ICYmXG4gICAgICAhdGhpcy5pc0ZpbGVzQXJyYXlFbXB0eSgpICYmXG4gICAgICAhdGhpcy5oYXNFbXB0eUZpbGVzKCkgJiZcbiAgICAgICF0aGlzLmlzVG9vTWFueUZpbGVzKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGZpbGUgaXMgcGlja2VkIG92ZXIgd2ViIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgc3RvcERyYWdnaW5nKCk6IHZvaWQge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIHRoaXMuaXNPdmVyID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGZpbGVzIGFscmVhZHkgZHJvcHBlZCBmaWxlcy5cbiAgICovXG4gIG9uRGVsZXRlKCkge1xuICAgIGRlbGV0ZSB0aGlzLmZpbGVzO1xuICAgIGRlbGV0ZSB0aGlzLmZpbGVzTmFtZVN0cmluZztcbiAgICB0aGlzLmNsZWFyRXJyb3JzKCk7XG4gICAgdGhpcy5kcm9wcGVkLmVtaXQobnVsbCk7XG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gXyA9PiB1bmRlZmluZWQ7XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmZpbGVzID0gdmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5vbkRlbGV0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVzTmFtZVN0cmluZyA9IHRoaXMuZ2V0RmlsZXNOYW1lc0FzU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25GaWxlc1NlbGVjdGVkKGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGhhc1ZhbGlkTmFtZUxlbmd0aCA9IHRoaXMuZmlsZXNTZXJ2aWNlLmNoZWNrTWF4TGVuZ3RoKGZpbGVzKTtcbiAgICBpZiAoIWhhc1ZhbGlkTmFtZUxlbmd0aCkge1xuICAgICAgdGhpcy5vbkZpbGVJbnZhbGlkTmFtZUxlbmd0aCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhdmVWYWxpZFR5cGVzID0gdGhpcy5maWxlc1NlcnZpY2UuaGF2ZVZhbGlkRXh0ZW5zaW9ucyhmaWxlcywgdGhpcy5hY2NlcHQpO1xuICAgIGlmICghaGF2ZVZhbGlkVHlwZXMpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZFR5cGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcywgbWF4RmlsZVNpemVJbkJ5dGVzKTtcbiAgICBpZiAoIWhhdmVWYWxpZFNpemVzKSB7XG4gICAgICBhd2FpdCB0aGlzLm9uRmlsZUludmFsaWRTaXplKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWxlcyA9IGZpbGVzO1xuICAgIHRoaXMuZmlsZXNOYW1lU3RyaW5nID0gdGhpcy5nZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXMpO1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc1Rvb01hbnlGaWxlcygpKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyB0b29NYW55RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RvbyBtYW55IGZpbGVzIHNlbGVjdGVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0VtcHR5RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgZW1wdHlGaWxlczogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnRmlsZSBtdXN0IG5vdCBiZSBlbXB0eSwgc2VsZWN0IGFub3RoZXIgb25lLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXSA9IHRoaXMuY29tcG9zZShmaWxlcyk7XG4gICAgdGhpcy5kcm9wcGVkLmVtaXQoZHJvcHBlZEZpbGVzKTtcbiAgICB0aGlzLm9uQ2hhbmdlKGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWROYW1lTGVuZ3RoOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIGZpbGVuYW1lIGlzIHRvbyBsb25nLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbnZhbGlkVHlwZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFR5cGU6IHRydWUgfSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUaGUgc2VsZWN0ZWQgZmlsZSBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkZpbGVJbnZhbGlkU2l6ZSgpIHtcbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKFxuICAgICAgbWluKFttYXhGaWxlU2l6ZUluQnl0ZXMsIGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpXSlcbiAgICApO1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkU2l6ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyhtYXhGaWxlU2l6ZUluTWVnYUJ5dGVzOiBTaXplSW5NZWdhQnl0ZXMpOiBTaXplSW5CeXRlcyB7XG4gICAgcmV0dXJuIG1heEZpbGVTaXplSW5NZWdhQnl0ZXMgKiAxXzA0OF81NzY7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVzTmFtZXNBc1N0cmluZyhmaWxlczogRmlsZUxpc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBtYXAoZmlsZXMsICh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbignLCAnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWxlc0FycmF5RW1wdHkoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCAnZmlsZXMubGVuZ3RoJywgMCkgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzVG9vTWFueUZpbGVzKCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID4gdGhpcy5tYXhBbGxvd2VkRmlsZXM7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmZpbGVzID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIHByaXZhdGUgaGFzRW1wdHlGaWxlcygpIHtcbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5pc0FueUZpbGVFbXB0eSgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FueUZpbGVFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc29tZShBcnJheS5mcm9tKHRoaXMuZmlsZXMpLCBbJ3NpemUnLCAwXSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXJyb3JzKCkge1xuICAgIGRlbGV0ZSB0aGlzLmVycm9yTWVzc2FnZTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyhudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoJGV2ZW50Pykge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcG9zZShmaWxlczogRmlsZUxpc3QpOiBEcm9wcGVkRmlsZVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaWxlcykubWFwKGZpbGUgPT4gKHtcbiAgICAgIGZpbGUsXG4gICAgICByZWFkQXNKc29uOiBhc3luYyAoKSA9PiBKU09OLnBhcnNlKGF3YWl0IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpKSxcbiAgICAgIHJlYWRBc1RleHQ6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpLFxuICAgICAgcmVhZEFzQXJyYXlCdWZmZXI6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUiksXG4gICAgICByZWFkQXNCaW5hcnlTdHJpbmc6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkJJTkFSWV9TVFJJTkcpLFxuICAgICAgcmVhZEFzRGF0YVVSTDogYXN5bmMgKCkgPT4gdGhpcy5yZWFkKGZpbGUsIFJlYWRBc1R5cGUuREFUQV9VUkwpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWFkKGZpbGUsIHR5cGU6IFJlYWRBc1R5cGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLlRFWFQ6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQVJSQVlfQlVGRkVSOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuREFUQV9VUkw6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHRoaXMub25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHJlYWRlci5yZWFkeVN0YXRlICE9PSAyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWFkZXIuZXJyb3IpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpO1xuICAgIH1cbiAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcHBlZEZpbGUge1xuICBmaWxlOiBGaWxlO1xuICByZWFkQXNUZXh0KCk7XG4gIHJlYWRBc0FycmF5QnVmZmVyKCk7XG4gIHJlYWRBc0JpbmFyeVN0cmluZygpO1xuICByZWFkQXNEYXRhVVJMKCk7XG4gIHJlYWRBc0pzb24oKTtcbn1cblxuZW51bSBSZWFkQXNUeXBlIHtcbiAgVEVYVCxcbiAgREFUQV9VUkwsXG4gIEFSUkFZX0JVRkZFUixcbiAgQklOQVJZX1NUUklOR1xufVxuXG50eXBlIFNpemVJbk1lZ2FCeXRlcyA9IG51bWJlcjtcbnR5cGUgU2l6ZUluQnl0ZXMgPSBudW1iZXI7XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcC16b25lXCJcbiAgKm5nSWY9XCIhc2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW25nQ2xhc3NdPVwieyAnaGFzLWVycm9ycyc6IGVycm9ycyB9XCJcbiAgW3N0eWxlLnBvaW50ZXJFdmVudHNdPVwibG9hZGluZyA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICN6b25lXG4gIChkcmFnbGVhdmUpPVwic3RvcERyYWdnaW5nKClcIlxuICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gIChkcmFnb3Zlcik9XCJvbk92ZXIoKVwiXG4gIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlciB8fCBhbHdheXNTaG93IHx8IGxvYWRpbmcgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgKGNsaWNrKT1cInNob3dQaWNrZXIoJGV2ZW50KVwiXG4gIHRhYmluZGV4PVwiMFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyXCIgW25nQ2xhc3NdPVwieyAnZHJhZy1vdmVyJzogaXNPdmVyIH1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiZC1mbGV4IGQtY29sIHAtNCBmbGV4LWNlbnRlclwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIG0tMFwiXG4gICAgICAgICpuZ0lmPVwicHJvZ3Jlc3MgIT09IC0xXCJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDUwJVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXG4gICAgICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbm93PVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJwcm9ncmVzcyArICclJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItc25ha2VcIiAqbmdJZj1cInByb2dyZXNzID09PSAtMVwiPjwvZGl2PlxuICAgICAgPHAgKm5nSWY9XCIhaGFzRHJvcEFyZWFTbWFsbENsYXNzXCIgY2xhc3M9XCJtLXQtYXV0byBtLWItYXV0byBtLXItOFwiPlxuICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJoaW50LXBsYWNlaG9sZGVyIHBvaW50ZXJcIj5cbiAgICAgIDxpIGNsYXNzPVwiZGx0LWM4eS1pY29uLXt7IGljb24gfX1cIj48L2k+XG4gICAgICA8cCAqbmdJZj1cIiFlcnJvcnNcIj5cbiAgICAgICAgPGI+e3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYWx3YXlzU2hvdyAmJiBjbGlja1RvT3BlblwiIHRyYW5zbGF0ZT48L3NwYW4+XG4gICAgICA8L3A+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JzXCIgY2xhc3M9XCJoYXMtZXJyb3JzXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2VcIj5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICAqbmdJZj1cInNob3VsZFNob3dGaWxlc0xpc3QoKVwiXG4gIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlciB8fCBhbHdheXNTaG93IHx8IGxvYWRpbmcgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgdGFiaW5kZXg9XCIwXCJcbj5cbiAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInAtYWJzb2x1dGUgcC00IGZpdC13IGZpdC1oIGQtZmxleCBkLWNvbCBqLWMtY2VudGVyIGEtaS1jZW50ZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIG0tMFwiXG4gICAgICAqbmdJZj1cInByb2dyZXNzICE9PSAtMVwiXG4gICAgICBzdHlsZT1cIm1pbi13aWR0aDogODAlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXG4gICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICA8cCAqbmdJZj1cIiFoYXNEcm9wQXJlYVNtYWxsQ2xhc3NcIiBjbGFzcz1cIm0tYi04XCI+XG4gICAgICA8c3Ryb25nPlxuICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHAtNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcC00IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxpIGM4eUljb249XCJmaWxlLW9cIiBjbGFzcz1cImljb24tMjAgbS1yLThcIj48L2k+XG4gICAgICA8c3BhbiB0aXRsZT1cInt7IGZpbGVzTmFtZVN0cmluZyB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBmaWxlc05hbWVTdHJpbmcgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgc2hvd09uSG92ZXIgbS1sLWF1dG9cIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCIgKGNsaWNrKT1cIm9uRGVsZXRlKClcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxsYWJlbCBmb3I9XCJmaWxlXCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgJ1NlbGVjdCBmaWxlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG48aW5wdXRcbiAgI3BpY2tlclxuICAqbmdJZj1cImNsaWNrVG9PcGVuXCJcbiAgKGNoYW5nZSk9XCJvblBpY2soJGV2ZW50KVwiXG4gIChjbGljayk9XCJwaWNrZXIuZm9jdXMoKVwiXG4gIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgW2FjY2VwdF09XCJhY2NlcHRlZEV4dHNcIlxuICBbbXVsdGlwbGVdPVwibWF4QWxsb3dlZEZpbGVzID4gMVwiXG4gIHR5cGU9XCJmaWxlXCJcbiAgY2xhc3M9XCJoaWRkZW5cIlxuICBpZD1cImZpbGVcIlxuLz5cbjxkaXYgI2FyZWEgW2hpZGRlbl09XCJpc092ZXIgfHwgbG9hZGluZ1wiIChkcmFnb3Zlcik9XCJ0b2dnbGUoKVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBRTFDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQXdENUIsWUFDVSxFQUFxQixFQUNyQixZQUEwQixFQUMxQixTQUEyQixFQUMzQixLQUFnQixFQUNoQixHQUFlO1FBSmYsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBM0RoQixVQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxTQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQy9CLDJFQUEyRTtRQUNsRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDekI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlO1FBQzdCLFlBQU8sR0FBZ0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQTZCcEMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFdBQU0sR0FBRyxLQUFLLENBQUM7UUF3SGYsYUFBUSxHQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUNoRCxjQUFTLEdBQWUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBekdyQyxDQUFDO0lBR0osT0FBTyxDQUFDLEtBQW9CO1FBQzFCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUVuRixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ25GLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsTUFBTztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQU07UUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxDQUNMLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM3QixDQUFDLElBQUksQ0FBQyxhQUFhO1lBQ25CLElBQUksQ0FBQyxVQUFVO1lBQ2YsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDekIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFLRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBZTtRQUMzQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsT0FBTztTQUNSO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsT0FBTztTQUNSO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQzNELENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDVCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDeEQsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQzNFLE9BQU87U0FDUjtRQUVELE1BQU0sWUFBWSxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCO1FBQzdCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQjtZQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7UUFDdEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQ2hDLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FDeEUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxzQkFBdUM7UUFDckUsT0FBTyxzQkFBc0IsR0FBRyxPQUFTLENBQUM7SUFDNUMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEtBQWU7UUFDM0MsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLGNBQWM7UUFDcEIsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdELENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDN0IsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNoQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBTztRQUM1QixJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTyxPQUFPLENBQUMsS0FBZTtRQUM3QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxJQUFJO1lBQ0osVUFBVSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxRSxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3hELGlCQUFpQixFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQztZQUN2RSxrQkFBa0IsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDekUsYUFBYSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFnQjtRQUN2QyxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsUUFBUSxJQUFJLEVBQUU7Z0JBQ1osS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLE1BQU07aUJBQ1A7Z0JBQ0QsS0FBSyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzVCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0IsTUFBTTtpQkFDUDtnQkFDRCxLQUFLLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDN0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxNQUFNO2lCQUNQO2dCQUNELEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNO1FBQ3BDLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDM0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEI7UUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OzhHQTNWVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixrZkFGakIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLHdTQ3RDMUYsK2lIQW9IQTsyRkQ1RWEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWUsYUFFZCxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO21OQUcvRSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBMEJHLE1BQU07c0JBQWQsS0FBSztnQkFRK0IsSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNHLElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSSxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBV3RDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBdVNuQyxJQUFLLFVBS0o7QUFMRCxXQUFLLFVBQVU7SUFDYiwyQ0FBSSxDQUFBO0lBQ0osbURBQVEsQ0FBQTtJQUNSLDJEQUFZLENBQUE7SUFDWiw2REFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxJLFVBQVUsS0FBVixVQUFVLFFBS2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0LCBtYXAsIHNvbWUsIG1pbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCeXRlc1BpcGUgfSBmcm9tICcuLi9jb21tb24vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBGaWxlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vZmlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBBIGRyb3Atem9uZSB3aGljaCBpcyBhIGZpbGUgc2VsZWN0b3IgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IGZpbGUocykgZnJvbSB0aGVpciBmaWxlIHN5c3RlbSwgZWl0aGVyIG5hdGl2ZWx5IG9yIGJ5IGRyYWcgYW5kIGRyb3AuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgPGRpdj5cbiAqICAgIDxjOHktZHJvcC1hcmVhXG4gKiAgICAgIChkcm9wcGVkKT1cInVwbG9hZEZpbGUoJGV2ZW50KVwiXG4gKiAgICAgIFtpY29uXT1cIid1cGxvYWQnXCJcbiAqICAgICAgW2FjY2VwdF09XCInLnppcCwuN3osdmlkZW8nXCI+XG4gKiAgICA8L2M4eS1kcm9wLWFyZWE+XG4gKiAgPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHJvcC1hcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEcm9wQXJlYUNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBJbnB1dCgpIHRpdGxlID0gZ2V0dGV4dCgnVXBsb2FkIGZpbGUnKTtcbiAgQElucHV0KCkgbWVzc2FnZSA9IGdldHRleHQoJ0Ryb3AgZmlsZSBoZXJlJyk7XG4gIEBJbnB1dCgpIGljb24gPSAncGx1cy1zcXVhcmUnO1xuICBASW5wdXQoKSBsb2FkaW5nTWVzc2FnZSA9IGdldHRleHQoJ1VwbG9hZGluZ+KApicpO1xuICBASW5wdXQoKSBmb3JjZUhpZGVMaXN0ID0gZmFsc2U7XG4gIC8qKiBBZmZlY3RzIGRpc3BsYXlpbmcgYm90aCB0aGUgZHJvcCB6b25lIGFuZCB0aGUgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLiAqL1xuICBASW5wdXQoKSBhbHdheXNTaG93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWNrVG9PcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICAvKipcbiAgICogQ3VycmVudCBwcm9ncmVzcyBvZiB0aGUgdXBsb2FkIGFzIGEgcGVyY2VudGFnZS4gSWYgbm90IGdpdmVuIGEgc3Bpbm5lciB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzID0gLTE7IC8vIC0xID0gc3Bpbm5lclxuICBAT3V0cHV0KCkgZHJvcHBlZDogRXZlbnRFbWl0dGVyPERyb3BwZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXMgPSBJbmZpbml0eTtcbiAgQElucHV0KCkgZmlsZXM6IEZpbGVMaXN0O1xuICBASW5wdXQoKSBtYXhGaWxlU2l6ZUluTWVnYUJ5dGVzOiBudW1iZXI7XG4gIC8qKiBTcGVjaWZpZXMgYSBmaWx0ZXIgZm9yIHdoYXQgZmlsZSB0eXBlcyB0aGUgdXNlciBjYW4gcGljayBmcm9tIHRoZSBmaWxlIGlucHV0IGRpYWxvZyBib3guXG4gICAqICMjIEV4YW1wbGU6XG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBleHRlbnNpb25zOlxuICAgKiBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJy56aXAsLjd6J1wiXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBleHRlbnNpb25zIGFuZCBnZW5lcmljIHR5cGVzIFtHRU5FUklDX0ZJTEVfVFlQRV17QGxpbmsgR0VORVJJQ19GSUxFX1RZUEV9OlxuICAgKiBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJy5wZGYsYXJjaGl2ZSdcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInYXJjaGl2ZSx2aWRlbydcIlxuICAgKiAgLi4uXG4gICAqXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCkgYWNjZXB0OiBzdHJpbmc7XG4gIGlzT3ZlciA9IGZhbHNlO1xuICBlcnJvcnMgPSBmYWxzZTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIGZpbGVzTmFtZVN0cmluZzogc3RyaW5nO1xuICBhY2NlcHRlZEV4dHM6IHN0cmluZ1tdO1xuICBoYXNEcm9wQXJlYVNtYWxsQ2xhc3M6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgnYXJlYScsIHsgc3RhdGljOiB0cnVlIH0pIGFyZWE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3pvbmUnLCB7IHN0YXRpYzogZmFsc2UgfSkgem9uZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncGlja2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBpY2tlcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGZpbGVzU2VydmljZTogRmlsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnl0ZXM6IEJ5dGVzUGlwZSxcbiAgICBwcml2YXRlIHJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICBvbmtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0ZWRFeHRzID0gdGhpcy5maWxlc1NlcnZpY2UuZXh0cmFjdEZpbGVFeHRlbnNpb25zKHRoaXMuYWNjZXB0KS5tYXAodCA9PiBgLiR7dH1gKTtcbiAgICB0aGlzLmFsd2F5c1Nob3cgPSB0aGlzLmFsd2F5c1Nob3cgfHwgdGhpcy5hcmVhLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xuXG4gICAgaWYgKHRoaXMuZmlsZXMgJiYgdGhpcy5pc0ZpbGVzQW5PYmplY3RPckFycmF5KCkgJiYgdGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9uRmlsZXNTZWxlY3RlZCh0aGlzLmZpbGVzKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5oYXNEcm9wQXJlYVNtYWxsQ2xhc3MgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZHJvcC1hcmVhLXNtJyk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc3R5bGUgb2YgdGhlIGRyb3Agem9uZSBlbGVtZW50IHdoZW4gYSBmaWxlIGlzIGRyYWdnZWQgb3ZlciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuYXJlYS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArICdweCc7XG4gICAgdGhpcy5vbk92ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyBjb21wdXRlciBicm93c2VyIHdpdGggZmlsZXMgdG8gZHJvcCBpbnRvIGRyb3AtYXJlYSB6b25lLlxuICAgKi9cbiAgc2hvd1BpY2tlcigkZXZlbnQ/KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBvbiBvdmVyIGRyb3AgYXJlYSwgYnV0IG5vdCBkcm9wcGVkLlxuICAgKi9cbiAgb25PdmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc092ZXIpIHtcbiAgICAgIHRoaXMuaXNPdmVyID0gdHJ1ZTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGZpbGUgaXMgZHJvcHBlZC5cbiAgICovXG4gIG9uUGljaygkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMucHJldmVudERlZmF1bHQoJGV2ZW50KTtcbiAgICB0aGlzLm9uRmlsZXNTZWxlY3RlZCgkZXZlbnQudGFyZ2V0LmZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgZmlsZSB3aGVuIGl0IGlzIGRyb3BwZWQgaW50byBkcm9wLWFyZWEuXG4gICAqL1xuICBvbkRyb3AoJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKCRldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIHRoaXMuc3RvcERyYWdnaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGNvbmRpdGlvbiB3aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQ6IGRyb3AtYXJlYSB6b25lIG9yIGxpc3Qgb2YgZHJvcHBlZCBmaWxlcy5cbiAgICovXG4gIHNob3VsZFNob3dGaWxlc0xpc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNGaWxlc0FuT2JqZWN0T3JBcnJheSgpICYmXG4gICAgICAhdGhpcy5mb3JjZUhpZGVMaXN0ICYmXG4gICAgICB0aGlzLmFsd2F5c1Nob3cgJiZcbiAgICAgICF0aGlzLmlzRmlsZXNBcnJheUVtcHR5KCkgJiZcbiAgICAgICF0aGlzLmhhc0VtcHR5RmlsZXMoKSAmJlxuICAgICAgIXRoaXMuaXNUb29NYW55RmlsZXMoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBwaWNrZWQgb3ZlciB3ZWIgYXBwbGljYXRpb24uXG4gICAqL1xuICBzdG9wRHJhZ2dpbmcoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgdGhpcy5pc092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgZmlsZXMgYWxyZWFkeSBkcm9wcGVkIGZpbGVzLlxuICAgKi9cbiAgb25EZWxldGUoKSB7XG4gICAgZGVsZXRlIHRoaXMuZmlsZXM7XG4gICAgZGVsZXRlIHRoaXMuZmlsZXNOYW1lU3RyaW5nO1xuICAgIHRoaXMuY2xlYXJFcnJvcnMoKTtcbiAgICB0aGlzLmRyb3BwZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IF8gPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMub25EZWxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlc05hbWVTdHJpbmcgPSB0aGlzLmdldEZpbGVzTmFtZXNBc1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZXNTZWxlY3RlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIGNvbnN0IGhhc1ZhbGlkTmFtZUxlbmd0aCA9IHRoaXMuZmlsZXNTZXJ2aWNlLmNoZWNrTWF4TGVuZ3RoKGZpbGVzKTtcbiAgICBpZiAoIWhhc1ZhbGlkTmFtZUxlbmd0aCkge1xuICAgICAgdGhpcy5vbkZpbGVJbnZhbGlkTmFtZUxlbmd0aCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhdmVWYWxpZFR5cGVzID0gdGhpcy5maWxlc1NlcnZpY2UuaGF2ZVZhbGlkRXh0ZW5zaW9ucyhmaWxlcywgdGhpcy5hY2NlcHQpO1xuICAgIGlmICghaGF2ZVZhbGlkVHlwZXMpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZFR5cGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcywgbWF4RmlsZVNpemVJbkJ5dGVzKTtcbiAgICBpZiAoIWhhdmVWYWxpZFNpemVzKSB7XG4gICAgICBhd2FpdCB0aGlzLm9uRmlsZUludmFsaWRTaXplKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWxlcyA9IGZpbGVzO1xuICAgIHRoaXMuZmlsZXNOYW1lU3RyaW5nID0gdGhpcy5nZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXMpO1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc1Rvb01hbnlGaWxlcygpKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyB0b29NYW55RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RvbyBtYW55IGZpbGVzIHNlbGVjdGVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0VtcHR5RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgZW1wdHlGaWxlczogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnRmlsZSBtdXN0IG5vdCBiZSBlbXB0eSwgc2VsZWN0IGFub3RoZXIgb25lLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXSA9IHRoaXMuY29tcG9zZShmaWxlcyk7XG4gICAgdGhpcy5kcm9wcGVkLmVtaXQoZHJvcHBlZEZpbGVzKTtcbiAgICB0aGlzLm9uQ2hhbmdlKGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWROYW1lTGVuZ3RoOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIGZpbGVuYW1lIGlzIHRvbyBsb25nLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbnZhbGlkVHlwZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFR5cGU6IHRydWUgfSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUaGUgc2VsZWN0ZWQgZmlsZSBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkZpbGVJbnZhbGlkU2l6ZSgpIHtcbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKFxuICAgICAgbWluKFttYXhGaWxlU2l6ZUluQnl0ZXMsIGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpXSlcbiAgICApO1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkU2l6ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyhtYXhGaWxlU2l6ZUluTWVnYUJ5dGVzOiBTaXplSW5NZWdhQnl0ZXMpOiBTaXplSW5CeXRlcyB7XG4gICAgcmV0dXJuIG1heEZpbGVTaXplSW5NZWdhQnl0ZXMgKiAxXzA0OF81NzY7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVzTmFtZXNBc1N0cmluZyhmaWxlczogRmlsZUxpc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBtYXAoZmlsZXMsICh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbignLCAnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWxlc0FycmF5RW1wdHkoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCAnZmlsZXMubGVuZ3RoJywgMCkgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzVG9vTWFueUZpbGVzKCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID4gdGhpcy5tYXhBbGxvd2VkRmlsZXM7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmZpbGVzID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIHByaXZhdGUgaGFzRW1wdHlGaWxlcygpIHtcbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5pc0FueUZpbGVFbXB0eSgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FueUZpbGVFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc29tZShBcnJheS5mcm9tKHRoaXMuZmlsZXMpLCBbJ3NpemUnLCAwXSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXJyb3JzKCkge1xuICAgIGRlbGV0ZSB0aGlzLmVycm9yTWVzc2FnZTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyhudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoJGV2ZW50Pykge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcG9zZShmaWxlczogRmlsZUxpc3QpOiBEcm9wcGVkRmlsZVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaWxlcykubWFwKGZpbGUgPT4gKHtcbiAgICAgIGZpbGUsXG4gICAgICByZWFkQXNKc29uOiBhc3luYyAoKSA9PiBKU09OLnBhcnNlKGF3YWl0IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpKSxcbiAgICAgIHJlYWRBc1RleHQ6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpLFxuICAgICAgcmVhZEFzQXJyYXlCdWZmZXI6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUiksXG4gICAgICByZWFkQXNCaW5hcnlTdHJpbmc6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkJJTkFSWV9TVFJJTkcpLFxuICAgICAgcmVhZEFzRGF0YVVSTDogYXN5bmMgKCkgPT4gdGhpcy5yZWFkKGZpbGUsIFJlYWRBc1R5cGUuREFUQV9VUkwpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWFkKGZpbGUsIHR5cGU6IFJlYWRBc1R5cGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLlRFWFQ6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQVJSQVlfQlVGRkVSOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuREFUQV9VUkw6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHRoaXMub25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHJlYWRlci5yZWFkeVN0YXRlICE9PSAyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWFkZXIuZXJyb3IpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpO1xuICAgIH1cbiAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcHBlZEZpbGUge1xuICBmaWxlOiBGaWxlO1xuICByZWFkQXNUZXh0KCk7XG4gIHJlYWRBc0FycmF5QnVmZmVyKCk7XG4gIHJlYWRBc0JpbmFyeVN0cmluZygpO1xuICByZWFkQXNEYXRhVVJMKCk7XG4gIHJlYWRBc0pzb24oKTtcbn1cblxuZW51bSBSZWFkQXNUeXBlIHtcbiAgVEVYVCxcbiAgREFUQV9VUkwsXG4gIEFSUkFZX0JVRkZFUixcbiAgQklOQVJZX1NUUklOR1xufVxuXG50eXBlIFNpemVJbk1lZ2FCeXRlcyA9IG51bWJlcjtcbnR5cGUgU2l6ZUluQnl0ZXMgPSBudW1iZXI7XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcC16b25lXCJcbiAgKm5nSWY9XCIhc2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW25nQ2xhc3NdPVwieyAnaGFzLWVycm9ycyc6IGVycm9ycyB9XCJcbiAgW3N0eWxlLnBvaW50ZXJFdmVudHNdPVwibG9hZGluZyA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICN6b25lXG4gIChkcmFnbGVhdmUpPVwic3RvcERyYWdnaW5nKClcIlxuICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gIChkcmFnb3Zlcik9XCJvbk92ZXIoKVwiXG4gIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlciB8fCBhbHdheXNTaG93IHx8IGxvYWRpbmcgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgKGNsaWNrKT1cInNob3dQaWNrZXIoJGV2ZW50KVwiXG4gIHRhYmluZGV4PVwiMFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyXCIgW25nQ2xhc3NdPVwieyAnZHJhZy1vdmVyJzogaXNPdmVyIH1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiZC1mbGV4IGQtY29sIHAtNCBmbGV4LWNlbnRlclwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIG0tMFwiXG4gICAgICAgICpuZ0lmPVwicHJvZ3Jlc3MgIT09IC0xXCJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDUwJVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXG4gICAgICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbm93PVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJwcm9ncmVzcyArICclJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItc25ha2VcIiAqbmdJZj1cInByb2dyZXNzID09PSAtMVwiPjwvZGl2PlxuICAgICAgPHAgKm5nSWY9XCIhaGFzRHJvcEFyZWFTbWFsbENsYXNzXCIgY2xhc3M9XCJtLXQtYXV0byBtLWItYXV0byBtLXItOFwiPlxuICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJoaW50LXBsYWNlaG9sZGVyIHBvaW50ZXJcIj5cbiAgICAgIDxpIGNsYXNzPVwiZGx0LWM4eS1pY29uLXt7IGljb24gfX1cIj48L2k+XG4gICAgICA8cCAqbmdJZj1cIiFlcnJvcnNcIj5cbiAgICAgICAgPGI+e3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYWx3YXlzU2hvdyAmJiBjbGlja1RvT3BlblwiIHRyYW5zbGF0ZT48L3NwYW4+XG4gICAgICA8L3A+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JzXCIgY2xhc3M9XCJoYXMtZXJyb3JzXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2VcIj5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICAqbmdJZj1cInNob3VsZFNob3dGaWxlc0xpc3QoKVwiXG4gIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlciB8fCBhbHdheXNTaG93IHx8IGxvYWRpbmcgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgdGFiaW5kZXg9XCIwXCJcbj5cbiAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInAtYWJzb2x1dGUgcC00IGZpdC13IGZpdC1oIGQtZmxleCBkLWNvbCBqLWMtY2VudGVyIGEtaS1jZW50ZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIG0tMFwiXG4gICAgICAqbmdJZj1cInByb2dyZXNzICE9PSAtMVwiXG4gICAgICBzdHlsZT1cIm1pbi13aWR0aDogODAlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXG4gICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICA8cCAqbmdJZj1cIiFoYXNEcm9wQXJlYVNtYWxsQ2xhc3NcIiBjbGFzcz1cIm0tYi04XCI+XG4gICAgICA8c3Ryb25nPlxuICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHAtNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcC00IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxpIGM4eUljb249XCJmaWxlLW9cIiBjbGFzcz1cImljb24tMjAgbS1yLThcIj48L2k+XG4gICAgICA8c3BhbiB0aXRsZT1cInt7IGZpbGVzTmFtZVN0cmluZyB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBmaWxlc05hbWVTdHJpbmcgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgc2hvd09uSG92ZXIgbS1sLWF1dG9cIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCIgKGNsaWNrKT1cIm9uRGVsZXRlKClcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxsYWJlbCBmb3I9XCJmaWxlXCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgJ1NlbGVjdCBmaWxlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG48aW5wdXRcbiAgI3BpY2tlclxuICAqbmdJZj1cImNsaWNrVG9PcGVuXCJcbiAgKGNoYW5nZSk9XCJvblBpY2soJGV2ZW50KVwiXG4gIChjbGljayk9XCJwaWNrZXIuZm9jdXMoKVwiXG4gIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgW2FjY2VwdF09XCJhY2NlcHRlZEV4dHNcIlxuICBbbXVsdGlwbGVdPVwibWF4QWxsb3dlZEZpbGVzID4gMVwiXG4gIHR5cGU9XCJmaWxlXCJcbiAgY2xhc3M9XCJoaWRkZW5cIlxuICBpZD1cImZpbGVcIlxuLz5cbjxkaXYgI2FyZWEgW2hpZGRlbl09XCJpc092ZXIgfHwgbG9hZGluZ1wiIChkcmFnb3Zlcik9XCJ0b2dnbGUoKVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
@@ -20264,6 +20264,7 @@ class DropAreaComponent {
20264
20264
  this.clearErrors();
20265
20265
  this.dropped.emit(null);
20266
20266
  this.onChange(null);
20267
+ this.onTouched();
20267
20268
  this.cd.markForCheck();
20268
20269
  }
20269
20270
  writeValue(value) {
@@ -20285,6 +20286,7 @@ class DropAreaComponent {
20285
20286
  onFilesSelected(files) {
20286
20287
  var _a, _b;
20287
20288
  return __awaiter(this, void 0, void 0, function* () {
20289
+ this.onTouched();
20288
20290
  const hasValidNameLength = this.filesService.checkMaxLength(files);
20289
20291
  if (!hasValidNameLength) {
20290
20292
  this.onFileInvalidNameLength();