@tilde-nlp/ngx-translate 5.0.29 → 5.0.30

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.
@@ -375,7 +375,7 @@ export class TldTranslateFileService {
375
375
  this._onClear.next(null);
376
376
  }
377
377
  onTranslationFileError(translationFile, error) {
378
- if (error.error?.error.code == ErrorCode.E_429001) {
378
+ if (error.error?.error?.code == ErrorCode.E_429001) {
379
379
  this.quotaService.getQuotaUsage().subscribe((res) => {
380
380
  const msg = this.alerts.findErrorTitleAndLocalizationKey({ ...error, ErrorCode: `E_${error.error.error.code}` }, this.errorTranslationSubKeys);
381
381
  this.alerts.error(msg.description, msg.title, { quotaFileLimit: res.usage[0].quotaLimit, pricingUrl: this.config.supscriptionConfig.pricingUrl });
@@ -408,4 +408,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
408
408
  providedIn: 'root'
409
409
  }]
410
410
  }], ctorParameters: function () { return [{ type: i1.FileApiService }, { type: i2.AlertService }, { type: i3.DomSanitizer }, { type: i4.TldTranslateConfigService }, { type: i4.TldTranslateSystemManagementService }, { type: i2.QuotaService }]; } });
411
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtZG9jdW1lbnQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBa0MsaUJBQWlCLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDak0sT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQWMsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUU1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQU81RSxNQUFNLE9BQU8sdUJBQXVCO0lBdUNmO0lBQ0E7SUFDVDtJQUNBO0lBQ1M7SUFDQTtJQTFDbkIsa0JBQWtCLENBQVU7SUFDNUIsK0dBQStHO0lBQy9HLElBQUksZUFBZSxLQUFjLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDMUUsZ0JBQWdCLEdBQXVCLEVBQUUsQ0FBQztJQUMxQyxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLFVBQVUsQ0FBUztJQUNuQixn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bnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBDb252ZXJzaW9uSGVscGVyLCBGaWxlRXh0ZW5zaW9uSGVscGVyLCBGaWxlRXh0ZW5zaW9ucywgRmlsZVVwbG9hZEVycm9yLCBJbmxpbmVNZXNzYWdlLCBJbmxpbmVNZXNzYWdlVHlwZSwgUXVvdGFTZXJ2aWNlLCBTeXN0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1lcmdlTWFwLCByZXRyeVdoZW4gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlTWV0YSwgSUdldEZpbGVTdGF0dXNQYXJhbXMsIElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSwgSVJlbW92ZUZpbGVQYXJhbXMsIElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlLCBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMsIElUbGRFcnJvciwgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdGF0dXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmlsZUNvbnZlcnNpb25UeXBlcyB9IGZyb20gJy4uL21vZGVscy9maWxlLWNvbnZlcnNpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRpb25GaWxlIH0gZnJvbSAnLi4vbW9kZWxzL3RyYW5zbGF0ZS1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS9maWxlLWFwaS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlIHtcclxuXHJcbiAgdHJhbnNsYXRpb25TdGFydGVkOiBib29sZWFuO1xyXG4gIC8qKiBWYWx1ZSB0byBiZSBzZXQgdG8gdHJ1ZSB3aGlsZSBsb2FkaW5nIHNvdXJjZSBwcmV2aWV3LiBBdCB0aGF0IHRpbWUsIHRyYW5zbGF0ZSBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xyXG4gIGdldCBpc1VwbG9hZGluZ0ZpbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmZpbGVzVXBsb2FkaW5nLmxlbmd0aCA+IDA7IH07XHJcbiAgdHJhbnNsYXRpb25GaWxlczogSVRyYW5zbGF0aW9uRmlsZVtdID0gW107XHJcbiAgZmlsZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzQWRkZWQ6IG51bWJlcjtcclxuICBhbnlQZGZGaWxlTG9hZGVkOiBib29sZWFuO1xyXG4gIGFueUltYWdlRmlsZUxvYWRlZDogYm9vbGVhbjtcclxuICAvL2ZvciBtdWx0aXBsZSBmaWxlIGNvbXBvbmVudFxyXG4gIHRyYW5zbGF0ZWRDb3VudDogbnVtYmVyID0gMDtcclxuICBtdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGRpc2FibGVUcmFuc2xhdGVCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgfHwgdGhpcy5pc1VwbG9hZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkZpbGVzVXBsb2FkZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSBhY3RpdmVTeXN0ZW06IFN5c3RlbTtcclxuICAvLyBUT0RPLiBDb25maWd1cmFibGU/XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFN0YXR1c0NoZWNrVGltZW91dCA9IDEwMDA7XHJcbiAgLy8gMCBpcyBuZXR3b3JrIGVycm9yLCBzaG91bGQgdHJ5IGFnYWluXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmV0cnlFcnJvckNvZGVzID0gWzBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtFcnJvck1heFJldHJpZXMgPSAyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1c1RpbWVvdXRzID0ge307XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25DbGVhciA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbWFnZUV4dGVuc2lvbnMgPSBbXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiYm1wXCJdO1xyXG4gIHByaXZhdGUgZmlsZXNVcGxvYWRpbmc6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBub3RGb3VuZEVycm9yQ29kZSA9IFwiRV80MDRcIjtcclxuICBwcml2YXRlIG5vdEZvdW5kUmVtb3ZlRXJyb3JDb2RlID0gXCJFXzQwNF9SRU1PVkVcIjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvclRyYW5zbGF0aW9uU3ViS2V5cyA9IFtcclxuICAgICdGSUxFX1RSQU5TTEFUSU9OX1NVQlNUQVRVUycsXHJcbiAgICAnRklMRV9VUExPQUQnLFxyXG4gICAgJ0ZJTEVfVFJBTlNMQVRJT05fTElNSVRTJ1xyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlQXBpOiBGaWxlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFN5c3RlbTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuRVhUUkFDVElOR10gPSAxMDAwO1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLkVYVFJBQ1RJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5JTklUSUFMSVpJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5RVUVVSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuU0FWSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuVFJBTlNMQVRJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5XQUlUSU5HXSA9IDEwMDAwO1xyXG4gIH1cclxuXHJcbiAgLy8gY2xlYXJzIGFsbCBsb2FkZWQgZGF0YVxyXG4gIGNsZWFyKCkge1xyXG4gICAgY29uc3QgZmlsZUFyciA9IHRoaXMudHJhbnNsYXRpb25GaWxlcztcclxuICAgIGZpbGVBcnIuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICBmaWxlLnRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGVhclBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9vbkZpbGVzVXBsb2FkZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgLy8gZmlsZS50cmFuc2xhdGluZyBuZWVkcyB0byBiZSBzZXQsIHNvIG5vIG90aGVyIGdldCBzdGF0dXMgcmVxdWVzdHMgYXJlIHNlbnQgdG8gc2VydmVyLlxyXG4gICAgZmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaXggPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChpeCA8IDApIHtcclxuICAgICAgdGhyb3cgXCJDYW4ndCByZW1vdmUgZmlsZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtczogSVJlbW92ZUZpbGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IGZpbGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5maWxlQXBpLnJlbW92ZShwYXJhbXMpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogdGhpcy5ub3RGb3VuZFJlbW92ZUVycm9yQ29kZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5zcGxpY2UoaXgsIDEpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMuc3BsaWNlKGl4LCAxKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmhhc0FueUltYWdlT3JQZGYoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZG93bmxvYWQodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBmaWxlTWV0YTogSUZpbGVNZXRhKSB7XHJcbiAgICBpZiAodHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRvd25sb2FkUGFyYW1zOiBJRG93bmxvYWRGaWxlUGFyYW1zID0ge1xyXG4gICAgICBpZDogdHJhbnNsYXRpb25GaWxlLmlkLFxyXG4gICAgICBmaWxlTWV0YTogZmlsZU1ldGFcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbGVBcGkuZG93bmxvYWQoZG93bmxvYWRQYXJhbXMpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgc2F2ZUFzKHJlc3BvbnNlLCBmaWxlTWV0YSA/IGZpbGVNZXRhLmZpbGVOYW1lIDogdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMub25FcnJvcihlcnJvciwgdHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVQcmV2aWV3KGZpbGU6IEZpbGUpOiBJVHJhbnNsYXRpb25GaWxlIHtcclxuICAgIGNvbnN0IGZpbGVzQWxsb3dlZCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA+PSBmaWxlc0FsbG93ZWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gXCJFUlJPUlMuXCIgKyAoZmlsZXNBbGxvd2VkID4gMSA/IFwiTUFYX05VTUJFUl9PRl9GSUxFU1wiIDogXCJJTkNSRUFTRV9NQVhfTlVNQkVSX09GX0ZJTEVTXCIpO1xyXG4gICAgICB0aGlzLmFsZXJ0cy5lcnJvcihlcnJvckNvZGUsIG51bGwsIHsgbGluazogdGhpcy5jb25maWcuY29yZUNvbmZpZy5yZWdpc3RlckxpbmssIGxpbWl0OiBmaWxlc0FsbG93ZWQgfSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpbGVOYW1lcy5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IoXCJFUlJPUlMuRklMRV9BTFJFQURZX0FEREVEXCIsIG51bGwsIHsgZmlsZU5hbWU6IGZpbGUubmFtZSB9KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlc1VwbG9hZGluZy5wdXNoKGZpbGVOYW1lKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSA9IHtcclxuICAgICAgb3JpZ2luYWxGaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIC8vIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICBvcmlnaW5hbEV4dGVuc2lvbjogRmlsZUV4dGVuc2lvbkhlbHBlci5nZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lKSxcclxuICAgICAgdHJhbnNsYXRpb25TdGF0dXNzOiBUcmFuc2xhdGlvblN0YXR1c3MuVVBMT0FESU5HLFxyXG4gICAgICBmaWxlLFxyXG4gICAgICBtZXNzYWdlczogW11cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMucHVzaCh0cmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMucHVzaChmaWxlTmFtZSk7XHJcbiAgICBjb25zdCBpc0ltYWdlID0gdGhpcy5fc3VwcG9ydGVkSW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKEZpbGVFeHRlbnNpb25IZWxwZXIuZ2V0RmlsZUV4dGVuc2lvbih0cmFuc2xhdGlvbkZpbGUub3JpZ2luYWxGaWxlTmFtZSkpO1xyXG4gICAgaWYgKGlzSW1hZ2UpIHtcclxuICAgICAgdGhpcy5hbnlJbWFnZUZpbGVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVR5cGUgPSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNQZGYgPSBcInBkZlwiID09PSBGaWxlRXh0ZW5zaW9uSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgaWYgKGlzUGRmKSB7XHJcbiAgICAgIHRoaXMuYW55UGRmRmlsZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5maWxlVHlwZSA9IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlQXBpLnNvdXJjZUZpbGVQcmV2aWV3KHRyYW5zbGF0aW9uRmlsZSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLmlzRmlsZVByZXZpZXdMb2FkZWQpIHtcclxuICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gVHJhbnNsYXRpb25TdGF0dXNzLlVQTE9BREVEO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZGVkKGZpbGVOYW1lKTtcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3QWxlcnRzKGlzUGRmKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uRmlsZVByZXZpZXdMb2FkKHJlc3AsIHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgdGhpcy5hbGVydHMudW5oYW5kZWxlZEVycm9yKGVycm9yKTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGU7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVCdXR0b25DbGljayhhY3RpdmU6IEFjdGl2ZURhdGEpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TdGFydGVkID0gdHJ1ZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhcnRGaWxlVHJhbnNsYXRpb24oYWN0aXZlLCBmaWxlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGFydEZpbGVUcmFuc2xhdGlvbihhY3RpdmVTeXN0ZW06IEFjdGl2ZURhdGEsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgaWYgKCF0aGlzLmNhblN0YXJ0VHJhbnNsYXRpb24odHJhbnNsYXRpb25GaWxlKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHN0YXJ0IGZpbGUgdHJhbnNsYXRpb24hXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhcnRlZCA9IHRydWU7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpbmcgPSB0cnVlO1xyXG4gICAgLy8gcXVpdGUgd2VpcmQuIFJlc3BvbnNlIGNhbiBiZSBzdHJ1Y3R1cmUgd2l0aCBzdWNjZXNzIGFuZCBlcnJvciBwYXJhbXMgYW5kIGl0IGNhbiBhbHNvIGJlIHBsYWluIHN0cmluZyBpbiBzdWNjZXNzLlxyXG4gICAgY29uc3QgcGFyYW1zOiBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IHRyYW5zbGF0aW9uRmlsZSxcclxuICAgICAgc3lzdGVtOiBhY3RpdmVTeXN0ZW0uc3lzdGVtXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWxlQXBpLnN0YXJ0VHJhbnNsYXRpb24ocGFyYW1zKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUFwaUVycm9yKHRyYW5zbGF0aW9uRmlsZSwgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAvLyB0aHJvdyBlcnJvcjtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIC8vIHNvbWV0aGluZyBnb25lIHdyb25nXHJcbiAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5pZCA9IHJlc3BvbnNlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGFydGVkT25TZXJ2ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5jaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbGVVcGxvYWRFcnJvcihlcnJvcjogRmlsZVVwbG9hZEVycm9yKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGZpbGVOYW1lOiBlcnJvci5maWxlTmFtZSxcclxuICAgICAgbWF4U2l6ZU1COiBDb252ZXJzaW9uSGVscGVyLmJ5dGVzVG9NYih0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm1heFNpemUpLFxyXG4gICAgICBmb3JtYXRzOiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmFsbG93ZWRGaWxlVHlwZXMuam9pbihcIiwgXCIpLFxyXG4gICAgICByZWdpc3Rlckxpbms6IHRoaXMuY29uZmlnLmNvcmVDb25maWcucmVnaXN0ZXJMaW5rXHJcbiAgICB9XHJcbiAgICB0aGlzLmFsZXJ0cy5lcnJvcihgRVJST1JTLkZJTEVfVVBMT0FELiR7ZXJyb3IuY29kZX1gLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfVxyXG5cclxuICAvLyBjaGVja3MgYWxsIG5lY2Vzc2FyeSBwYXJhbXMgdGhhdCBhcmUgcmVzcG9uc2libGUgd2hldGVyIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgbmV3IHRyYW5zbGF0aW9uLlxyXG4gIHByaXZhdGUgY2FuU3RhcnRUcmFuc2xhdGlvbih0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSAmJiAhdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBjb25zdCBmaW5pc2hlZFN0YXR1cyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5DT01QTEVURUQ7XHJcbiAgICBjb25zdCBwYXJhbXM6IElHZXRGaWxlU3RhdHVzUGFyYW1zID0ge1xyXG4gICAgICBmaWxlOiB0cmFuc2xhdGlvbkZpbGUsXHJcbiAgICAgIHNyY0xhbmc6IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICB0cmdMYW5nOiB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS5nZXRTdGF0dXMocGFyYW1zKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICAvLyBJZiBuZXR3b3JrIGVycm9yLCBjaGVjayBhZ2FpbiBiZWNhdXNlIGZpbGUgaGFzIG5vdCBmYWlsZWQuXHJcbiAgICAgICAgLy8gdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHRlc3RlZCwgYmVjYXVzZSBjYW50IHJlcGVhdCBpdFxyXG4gICAgICAgIHJldHJ5V2hlbigob2JzZXJ2YWJsZXMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlcy5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoZXJyb3IsIGkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaSA8IHRoaXMuX25ldHdvcmtFcnJvck1heFJldHJpZXMgJiYgdGhpcy5fcmV0cnlFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aW1lcih0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN5c3RlbUlkICYmIHJlc3BvbnNlLnN5c3RlbUlkICE9PSB0aGlzLmFjdGl2ZVN5c3RlbS5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VTeXN0ZW0ocmVzcG9uc2Uuc3lzdGVtSWQsIGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gcmVzcG9uc2UudHJhbnNsYXRpb25TdGF0dXNzO1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnNvdXJjZURvd25sb2FkQXZhaWxhYmxlID0gcmVzcG9uc2Uuc291cmNlRG93bmxvYWRBdmFpbGFibGU7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUucHJvZ3Jlc3MgPSByZXNwb25zZS5wcm9ncmVzcztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5hdmFpbGFibGVFeHRlbnNpb25zID0gcmVzcG9uc2UuZXh0ZW5zaW9ucztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VGaWxlTmFtZSA9IHJlc3BvbnNlLnNvdXJjZUZpbGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT0gVHJhbnNsYXRpb25TdGF0dXNzLkVSUk9SKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yOiBJVGxkRXJyb3IgPSB7XHJcbiAgICAgICAgICAgICAgRXJyb3JDb2RlOlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3Vic3RhdHVzID8/IEVycm9yQ29kZS5FX0ZBSUxFRF9JTl9UUkFOU0xBVElPTixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5maWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvcik7XHJcbiAgICAgICAgICAgIC8vdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT09IGZpbmlzaGVkU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZENvdW50ICs9IDE7XHJcbiAgICAgICAgICAgIC8vdHJhbnNsYXRpb25GaWxlLm5hbWUgPSByZXNwb25zZS5uYW1lO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUuZG93bmxvYWRBdmFpbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlRmlsZVVwbG9hZEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZERvY1ByZXZpZXcodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSB0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZmlsZUNvbmZpZy5maWxlRG93bmxvYWRUaW1lb3V0cyAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmZpbGVEb3dubG9hZFRpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdKSB7XHJcbiAgICAgICAgICAgICAgdGltZW91dCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhdHVzVGltZW91dHMgJiYgdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc10pIHtcclxuICAgICAgICAgICAgICB0aW1lb3V0ID0gdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUcmFuc2xhdGlvblByb2dyZXNzKHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25GaWxlUHJldmlld0xvYWQoZGF0YTogSVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2UsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLmlzRmlsZVByZXZpZXdMb2FkZWQgPSBkYXRhLmlzRmlsZVByZXZpZXdMb2FkZWQ7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSA9IGRhdGEudG1wTmFtZTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VQcmV2aWV3SGFzSHRtbCA9IGRhdGEuc291cmNlUHJldmlld0hhc0h0bWw7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuc291cmNlUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEuc291cmNlUHJldmlldyk7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVByZXZpZXdQcm9ncmVzcyA9IGRhdGEucGVyY2VudERvbmU7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVkRG9jUHJldmlldyh0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIC8vIHNob3cgcHJldmlldyBmb3Igb3JpZ2luYWwgZXh0ZW5zaW9uIGlmIGV4aXN0cywgaWYgbm90LCB0aGVuIHByZXZpZXcgZm9yIGRvY3gsIGlmIG5vdCB0aGVuIHRyeSB3aXRoIG9yaWdpbmFsIGZpbGVuYW1lLlxyXG4gICAgY29uc3QgZmlsZU5hbWUgPSB0cmFuc2xhdGlvbkZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucy5maW5kKGV4dCA9PiBleHQuZXh0ZW5zaW9uID09PSBGaWxlRXh0ZW5zaW9ucy5ET0NYKT8uZmlsZU5hbWVcclxuICAgICAgPz8gdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWU7XHJcbiAgICBjb25zdCBwYXJhbXM6IElUcmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3UGFyYW1zID0ge1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIHRyYW5zbGF0aW9uRG9jSWQ6IHRyYW5zbGF0aW9uRmlsZS5pZFxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS50cmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3KHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IHsgc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBzdHJpbmcsIHN0YXR1czogc3RyaW5nLCBwcmV2aWV3OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0cy51bmhhbmRlbGVkRXJyb3IocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByZXZpZXcpIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJlc3BvbnNlLnByZXZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBlcnJvcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsZVByZXZpZXdBbGVydHMoaXNQZGY6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGFsZXJ0UGFyYW1zID0ge1xyXG4gICAgICBhcHBOYW1lOiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcE5hbWUsXHJcbiAgICAgIHByaWNpbmdVcmw6IHRoaXMuY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmZpbGVDb25maWcuc2hvd1RyYW5zbGF0aW9uTGltaXRzKSB7XHJcbiAgICAgIGlmIChpc1BkZiAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm9jclBhZ2VMaW1pdCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoXCJUTERfVFJBTlNMQVRFLlBERl9QQUdFX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnNob3dXb3JkTGltaXRXYXJuaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMud2FybmluZyhcIlRMRF9UUkFOU0xBVEUuRE9DX1dPUkRfQ05UX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25FcnJvcihlcnJvcjogYW55LCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIGlmICh0cmFuc2xhdGlvbkZpbGUpIHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvckZvck1lc3NhZ2UgPSBlcnJvci5zdGF0dXMgPT09IDQwNCA/IHsgRXJyb3JDb2RlOiB0aGlzLm5vdEZvdW5kRXJyb3JDb2RlIH0gOiBlcnJvcjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yRm9yTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGVVcGxvYWRlZChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlSXggPSB0aGlzLmZpbGVzVXBsb2FkaW5nLmluZGV4T2YoZmlsZU5hbWUpO1xyXG4gICAgaWYgKGZpbGVJeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcuc3BsaWNlKGZpbGVJeCwgMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWxlc1VwbG9hZGluZy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fb25GaWxlc1VwbG9hZGVkLm5leHQobnVsbClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQW55SW1hZ2VPclBkZigpIHtcclxuICAgIGxldCBhbnlJbWFnZSA9IGZhbHNlO1xyXG4gICAgbGV0IGFueVBkZiA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyYW5zbGF0aW9uRmlsZXMubGVuZ3RoICYmICEoYW55UGRmICYmIGFueUltYWdlKTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXNbaV07XHJcbiAgICAgIGlmIChmaWxlLmZpbGVUeXBlID09PSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFKSB7XHJcbiAgICAgICAgYW55SW1hZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGZpbGUuZmlsZVR5cGUgPT09IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGKSB7XHJcbiAgICAgICAgYW55UGRmID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW55SW1hZ2VGaWxlTG9hZGVkID0gYW55SW1hZ2U7XHJcbiAgICB0aGlzLmFueVBkZkZpbGVMb2FkZWQgPSBhbnlQZGY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUGFyYW1zKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5hbnlQZGZGaWxlTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmFueUltYWdlRmlsZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZXMgPSBbXTtcclxuICAgIHRoaXMudHJhbnNsYXRlZENvdW50ID0gMDtcclxuICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcgPSBbXTtcclxuICAgIHRoaXMuX29uQ2xlYXIubmV4dChudWxsKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblRyYW5zbGF0aW9uRmlsZUVycm9yKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSwgZXJyb3I6IGFueSkge1xyXG4gICAgaWYgKGVycm9yLmVycm9yPy5lcnJvci5jb2RlID09IEVycm9yQ29kZS5FXzQyOTAwMSkge1xyXG4gICAgICB0aGlzLnF1b3RhU2VydmljZS5nZXRRdW90YVVzYWdlKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBjb25zdCBtc2cgPSB0aGlzLmFsZXJ0cy5maW5kRXJyb3JUaXRsZUFuZExvY2FsaXphdGlvbktleSh7IC4uLmVycm9yLCBFcnJvckNvZGU6IGBFXyR7ZXJyb3IuZXJyb3IuZXJyb3IuY29kZX1gIH0sIHRoaXMuZXJyb3JUcmFuc2xhdGlvblN1YktleXMpO1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLmVycm9yKG1zZy5kZXNjcmlwdGlvbiwgbXNnLnRpdGxlLCB7IHF1b3RhRmlsZUxpbWl0OiByZXMudXNhZ2VbMF0ucXVvdGFMaW1pdCwgcHJpY2luZ1VybDogdGhpcy5jb25maWcuc3Vwc2NyaXB0aW9uQ29uZmlnLnByaWNpbmdVcmwgfSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gXHJcblxyXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuYWxlcnRzLmZpbmRFcnJvclRpdGxlQW5kTG9jYWxpemF0aW9uS2V5KGVycm9yLCB0aGlzLmVycm9yVHJhbnNsYXRpb25TdWJLZXlzKTtcclxuICAgIGNvbnN0IG9yaWdpbmFsRmlsZU5hbWUgPSB0cmFuc2xhdGlvbkZpbGUub3JpZ2luYWxGaWxlTmFtZTtcclxuICAgIGNvbnN0IGlubGluZU1lc3NhZ2U6IElubGluZU1lc3NhZ2UgPSB7XHJcbiAgICAgIHRpdGxlOiBtZXNzYWdlLnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogbWVzc2FnZS5kZXNjcmlwdGlvbixcclxuICAgICAgdHlwZTogSW5saW5lTWVzc2FnZVR5cGUuRVJST1IsXHJcbiAgICAgIGxvY2FsaXphdGlvblBhcmFtczogeyBmaWxlTmFtZTogb3JpZ2luYWxGaWxlTmFtZSwgLi4udGhpcy5hbGVydHMuZGVmYXVsdFBhcmFtcyB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICghdGhpcy5tdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmUpIHtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IobWVzc2FnZS5kZXNjcmlwdGlvbiwgbWVzc2FnZS50aXRsZSwgeyBmaWxlTmFtZTogb3JpZ2luYWxGaWxlTmFtZSB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1lc3NhZ2VTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShpbmxpbmVNZXNzYWdlKTtcclxuICAgIGlmICghdHJhbnNsYXRpb25GaWxlLm1lc3NhZ2VzLnNvbWUobXNnID0+IEpTT04uc3RyaW5naWZ5KG1zZykgPT09IG1lc3NhZ2VTdHJpbmcpKSB7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5tZXNzYWdlcy5wdXNoKGlubGluZU1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtZG9jdW1lbnQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBa0MsaUJBQWlCLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDak0sT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQWMsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUU1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQU81RSxNQUFNLE9BQU8sdUJBQXVCO0lBdUNmO0lBQ0E7SUFDVDtJQUNBO0lBQ1M7SUFDQTtJQTFDbkIsa0JBQWtCLENBQVU7SUFDNUIsK0dBQStHO0lBQy9HLElBQUksZUFBZSxLQUFjLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDMUUsZ0JBQWdCLEdBQXVCLEVBQUUsQ0FBQztJQUMxQyxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLFVBQVUsQ0FBUztJQUNuQixn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bnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBDb252ZXJzaW9uSGVscGVyLCBGaWxlRXh0ZW5zaW9uSGVscGVyLCBGaWxlRXh0ZW5zaW9ucywgRmlsZVVwbG9hZEVycm9yLCBJbmxpbmVNZXNzYWdlLCBJbmxpbmVNZXNzYWdlVHlwZSwgUXVvdGFTZXJ2aWNlLCBTeXN0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1lcmdlTWFwLCByZXRyeVdoZW4gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlTWV0YSwgSUdldEZpbGVTdGF0dXNQYXJhbXMsIElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSwgSVJlbW92ZUZpbGVQYXJhbXMsIElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlLCBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMsIElUbGRFcnJvciwgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdGF0dXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmlsZUNvbnZlcnNpb25UeXBlcyB9IGZyb20gJy4uL21vZGVscy9maWxlLWNvbnZlcnNpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRpb25GaWxlIH0gZnJvbSAnLi4vbW9kZWxzL3RyYW5zbGF0ZS1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS9maWxlLWFwaS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlIHtcclxuXHJcbiAgdHJhbnNsYXRpb25TdGFydGVkOiBib29sZWFuO1xyXG4gIC8qKiBWYWx1ZSB0byBiZSBzZXQgdG8gdHJ1ZSB3aGlsZSBsb2FkaW5nIHNvdXJjZSBwcmV2aWV3LiBBdCB0aGF0IHRpbWUsIHRyYW5zbGF0ZSBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xyXG4gIGdldCBpc1VwbG9hZGluZ0ZpbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmZpbGVzVXBsb2FkaW5nLmxlbmd0aCA+IDA7IH07XHJcbiAgdHJhbnNsYXRpb25GaWxlczogSVRyYW5zbGF0aW9uRmlsZVtdID0gW107XHJcbiAgZmlsZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzQWRkZWQ6IG51bWJlcjtcclxuICBhbnlQZGZGaWxlTG9hZGVkOiBib29sZWFuO1xyXG4gIGFueUltYWdlRmlsZUxvYWRlZDogYm9vbGVhbjtcclxuICAvL2ZvciBtdWx0aXBsZSBmaWxlIGNvbXBvbmVudFxyXG4gIHRyYW5zbGF0ZWRDb3VudDogbnVtYmVyID0gMDtcclxuICBtdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGRpc2FibGVUcmFuc2xhdGVCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgfHwgdGhpcy5pc1VwbG9hZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkZpbGVzVXBsb2FkZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSBhY3RpdmVTeXN0ZW06IFN5c3RlbTtcclxuICAvLyBUT0RPLiBDb25maWd1cmFibGU/XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFN0YXR1c0NoZWNrVGltZW91dCA9IDEwMDA7XHJcbiAgLy8gMCBpcyBuZXR3b3JrIGVycm9yLCBzaG91bGQgdHJ5IGFnYWluXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmV0cnlFcnJvckNvZGVzID0gWzBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtFcnJvck1heFJldHJpZXMgPSAyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1c1RpbWVvdXRzID0ge307XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25DbGVhciA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbWFnZUV4dGVuc2lvbnMgPSBbXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiYm1wXCJdO1xyXG4gIHByaXZhdGUgZmlsZXNVcGxvYWRpbmc6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBub3RGb3VuZEVycm9yQ29kZSA9IFwiRV80MDRcIjtcclxuICBwcml2YXRlIG5vdEZvdW5kUmVtb3ZlRXJyb3JDb2RlID0gXCJFXzQwNF9SRU1PVkVcIjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvclRyYW5zbGF0aW9uU3ViS2V5cyA9IFtcclxuICAgICdGSUxFX1RSQU5TTEFUSU9OX1NVQlNUQVRVUycsXHJcbiAgICAnRklMRV9VUExPQUQnLFxyXG4gICAgJ0ZJTEVfVFJBTlNMQVRJT05fTElNSVRTJ1xyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlQXBpOiBGaWxlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFN5c3RlbTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuRVhUUkFDVElOR10gPSAxMDAwO1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLkVYVFJBQ1RJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5JTklUSUFMSVpJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5RVUVVSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuU0FWSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuVFJBTlNMQVRJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5XQUlUSU5HXSA9IDEwMDAwO1xyXG4gIH1cclxuXHJcbiAgLy8gY2xlYXJzIGFsbCBsb2FkZWQgZGF0YVxyXG4gIGNsZWFyKCkge1xyXG4gICAgY29uc3QgZmlsZUFyciA9IHRoaXMudHJhbnNsYXRpb25GaWxlcztcclxuICAgIGZpbGVBcnIuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICBmaWxlLnRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGVhclBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9vbkZpbGVzVXBsb2FkZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgLy8gZmlsZS50cmFuc2xhdGluZyBuZWVkcyB0byBiZSBzZXQsIHNvIG5vIG90aGVyIGdldCBzdGF0dXMgcmVxdWVzdHMgYXJlIHNlbnQgdG8gc2VydmVyLlxyXG4gICAgZmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaXggPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChpeCA8IDApIHtcclxuICAgICAgdGhyb3cgXCJDYW4ndCByZW1vdmUgZmlsZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtczogSVJlbW92ZUZpbGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IGZpbGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5maWxlQXBpLnJlbW92ZShwYXJhbXMpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogdGhpcy5ub3RGb3VuZFJlbW92ZUVycm9yQ29kZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5zcGxpY2UoaXgsIDEpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMuc3BsaWNlKGl4LCAxKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmhhc0FueUltYWdlT3JQZGYoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZG93bmxvYWQodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBmaWxlTWV0YTogSUZpbGVNZXRhKSB7XHJcbiAgICBpZiAodHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRvd25sb2FkUGFyYW1zOiBJRG93bmxvYWRGaWxlUGFyYW1zID0ge1xyXG4gICAgICBpZDogdHJhbnNsYXRpb25GaWxlLmlkLFxyXG4gICAgICBmaWxlTWV0YTogZmlsZU1ldGFcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbGVBcGkuZG93bmxvYWQoZG93bmxvYWRQYXJhbXMpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgc2F2ZUFzKHJlc3BvbnNlLCBmaWxlTWV0YSA/IGZpbGVNZXRhLmZpbGVOYW1lIDogdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMub25FcnJvcihlcnJvciwgdHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVQcmV2aWV3KGZpbGU6IEZpbGUpOiBJVHJhbnNsYXRpb25GaWxlIHtcclxuICAgIGNvbnN0IGZpbGVzQWxsb3dlZCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA+PSBmaWxlc0FsbG93ZWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gXCJFUlJPUlMuXCIgKyAoZmlsZXNBbGxvd2VkID4gMSA/IFwiTUFYX05VTUJFUl9PRl9GSUxFU1wiIDogXCJJTkNSRUFTRV9NQVhfTlVNQkVSX09GX0ZJTEVTXCIpO1xyXG4gICAgICB0aGlzLmFsZXJ0cy5lcnJvcihlcnJvckNvZGUsIG51bGwsIHsgbGluazogdGhpcy5jb25maWcuY29yZUNvbmZpZy5yZWdpc3RlckxpbmssIGxpbWl0OiBmaWxlc0FsbG93ZWQgfSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpbGVOYW1lcy5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IoXCJFUlJPUlMuRklMRV9BTFJFQURZX0FEREVEXCIsIG51bGwsIHsgZmlsZU5hbWU6IGZpbGUubmFtZSB9KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlc1VwbG9hZGluZy5wdXNoKGZpbGVOYW1lKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSA9IHtcclxuICAgICAgb3JpZ2luYWxGaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIC8vIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICBvcmlnaW5hbEV4dGVuc2lvbjogRmlsZUV4dGVuc2lvbkhlbHBlci5nZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lKSxcclxuICAgICAgdHJhbnNsYXRpb25TdGF0dXNzOiBUcmFuc2xhdGlvblN0YXR1c3MuVVBMT0FESU5HLFxyXG4gICAgICBmaWxlLFxyXG4gICAgICBtZXNzYWdlczogW11cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMucHVzaCh0cmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMucHVzaChmaWxlTmFtZSk7XHJcbiAgICBjb25zdCBpc0ltYWdlID0gdGhpcy5fc3VwcG9ydGVkSW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKEZpbGVFeHRlbnNpb25IZWxwZXIuZ2V0RmlsZUV4dGVuc2lvbih0cmFuc2xhdGlvbkZpbGUub3JpZ2luYWxGaWxlTmFtZSkpO1xyXG4gICAgaWYgKGlzSW1hZ2UpIHtcclxuICAgICAgdGhpcy5hbnlJbWFnZUZpbGVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVR5cGUgPSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNQZGYgPSBcInBkZlwiID09PSBGaWxlRXh0ZW5zaW9uSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgaWYgKGlzUGRmKSB7XHJcbiAgICAgIHRoaXMuYW55UGRmRmlsZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5maWxlVHlwZSA9IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlQXBpLnNvdXJjZUZpbGVQcmV2aWV3KHRyYW5zbGF0aW9uRmlsZSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLmlzRmlsZVByZXZpZXdMb2FkZWQpIHtcclxuICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gVHJhbnNsYXRpb25TdGF0dXNzLlVQTE9BREVEO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZGVkKGZpbGVOYW1lKTtcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3QWxlcnRzKGlzUGRmKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uRmlsZVByZXZpZXdMb2FkKHJlc3AsIHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgdGhpcy5hbGVydHMudW5oYW5kZWxlZEVycm9yKGVycm9yKTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGU7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVCdXR0b25DbGljayhhY3RpdmU6IEFjdGl2ZURhdGEpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TdGFydGVkID0gdHJ1ZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhcnRGaWxlVHJhbnNsYXRpb24oYWN0aXZlLCBmaWxlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGFydEZpbGVUcmFuc2xhdGlvbihhY3RpdmVTeXN0ZW06IEFjdGl2ZURhdGEsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgaWYgKCF0aGlzLmNhblN0YXJ0VHJhbnNsYXRpb24odHJhbnNsYXRpb25GaWxlKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHN0YXJ0IGZpbGUgdHJhbnNsYXRpb24hXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhcnRlZCA9IHRydWU7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpbmcgPSB0cnVlO1xyXG4gICAgLy8gcXVpdGUgd2VpcmQuIFJlc3BvbnNlIGNhbiBiZSBzdHJ1Y3R1cmUgd2l0aCBzdWNjZXNzIGFuZCBlcnJvciBwYXJhbXMgYW5kIGl0IGNhbiBhbHNvIGJlIHBsYWluIHN0cmluZyBpbiBzdWNjZXNzLlxyXG4gICAgY29uc3QgcGFyYW1zOiBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IHRyYW5zbGF0aW9uRmlsZSxcclxuICAgICAgc3lzdGVtOiBhY3RpdmVTeXN0ZW0uc3lzdGVtXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWxlQXBpLnN0YXJ0VHJhbnNsYXRpb24ocGFyYW1zKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUFwaUVycm9yKHRyYW5zbGF0aW9uRmlsZSwgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAvLyB0aHJvdyBlcnJvcjtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIC8vIHNvbWV0aGluZyBnb25lIHdyb25nXHJcbiAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5pZCA9IHJlc3BvbnNlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGFydGVkT25TZXJ2ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5jaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbGVVcGxvYWRFcnJvcihlcnJvcjogRmlsZVVwbG9hZEVycm9yKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGZpbGVOYW1lOiBlcnJvci5maWxlTmFtZSxcclxuICAgICAgbWF4U2l6ZU1COiBDb252ZXJzaW9uSGVscGVyLmJ5dGVzVG9NYih0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm1heFNpemUpLFxyXG4gICAgICBmb3JtYXRzOiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmFsbG93ZWRGaWxlVHlwZXMuam9pbihcIiwgXCIpLFxyXG4gICAgICByZWdpc3Rlckxpbms6IHRoaXMuY29uZmlnLmNvcmVDb25maWcucmVnaXN0ZXJMaW5rXHJcbiAgICB9XHJcbiAgICB0aGlzLmFsZXJ0cy5lcnJvcihgRVJST1JTLkZJTEVfVVBMT0FELiR7ZXJyb3IuY29kZX1gLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfVxyXG5cclxuICAvLyBjaGVja3MgYWxsIG5lY2Vzc2FyeSBwYXJhbXMgdGhhdCBhcmUgcmVzcG9uc2libGUgd2hldGVyIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgbmV3IHRyYW5zbGF0aW9uLlxyXG4gIHByaXZhdGUgY2FuU3RhcnRUcmFuc2xhdGlvbih0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSAmJiAhdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBjb25zdCBmaW5pc2hlZFN0YXR1cyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5DT01QTEVURUQ7XHJcbiAgICBjb25zdCBwYXJhbXM6IElHZXRGaWxlU3RhdHVzUGFyYW1zID0ge1xyXG4gICAgICBmaWxlOiB0cmFuc2xhdGlvbkZpbGUsXHJcbiAgICAgIHNyY0xhbmc6IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICB0cmdMYW5nOiB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS5nZXRTdGF0dXMocGFyYW1zKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICAvLyBJZiBuZXR3b3JrIGVycm9yLCBjaGVjayBhZ2FpbiBiZWNhdXNlIGZpbGUgaGFzIG5vdCBmYWlsZWQuXHJcbiAgICAgICAgLy8gdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHRlc3RlZCwgYmVjYXVzZSBjYW50IHJlcGVhdCBpdFxyXG4gICAgICAgIHJldHJ5V2hlbigob2JzZXJ2YWJsZXMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlcy5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoZXJyb3IsIGkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaSA8IHRoaXMuX25ldHdvcmtFcnJvck1heFJldHJpZXMgJiYgdGhpcy5fcmV0cnlFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aW1lcih0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN5c3RlbUlkICYmIHJlc3BvbnNlLnN5c3RlbUlkICE9PSB0aGlzLmFjdGl2ZVN5c3RlbS5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VTeXN0ZW0ocmVzcG9uc2Uuc3lzdGVtSWQsIGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gcmVzcG9uc2UudHJhbnNsYXRpb25TdGF0dXNzO1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnNvdXJjZURvd25sb2FkQXZhaWxhYmxlID0gcmVzcG9uc2Uuc291cmNlRG93bmxvYWRBdmFpbGFibGU7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUucHJvZ3Jlc3MgPSByZXNwb25zZS5wcm9ncmVzcztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5hdmFpbGFibGVFeHRlbnNpb25zID0gcmVzcG9uc2UuZXh0ZW5zaW9ucztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VGaWxlTmFtZSA9IHJlc3BvbnNlLnNvdXJjZUZpbGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT0gVHJhbnNsYXRpb25TdGF0dXNzLkVSUk9SKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yOiBJVGxkRXJyb3IgPSB7XHJcbiAgICAgICAgICAgICAgRXJyb3JDb2RlOlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3Vic3RhdHVzID8/IEVycm9yQ29kZS5FX0ZBSUxFRF9JTl9UUkFOU0xBVElPTixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5maWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvcik7XHJcbiAgICAgICAgICAgIC8vdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT09IGZpbmlzaGVkU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZENvdW50ICs9IDE7XHJcbiAgICAgICAgICAgIC8vdHJhbnNsYXRpb25GaWxlLm5hbWUgPSByZXNwb25zZS5uYW1lO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUuZG93bmxvYWRBdmFpbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlRmlsZVVwbG9hZEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZERvY1ByZXZpZXcodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSB0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZmlsZUNvbmZpZy5maWxlRG93bmxvYWRUaW1lb3V0cyAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmZpbGVEb3dubG9hZFRpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdKSB7XHJcbiAgICAgICAgICAgICAgdGltZW91dCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhdHVzVGltZW91dHMgJiYgdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc10pIHtcclxuICAgICAgICAgICAgICB0aW1lb3V0ID0gdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUcmFuc2xhdGlvblByb2dyZXNzKHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25GaWxlUHJldmlld0xvYWQoZGF0YTogSVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2UsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLmlzRmlsZVByZXZpZXdMb2FkZWQgPSBkYXRhLmlzRmlsZVByZXZpZXdMb2FkZWQ7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSA9IGRhdGEudG1wTmFtZTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VQcmV2aWV3SGFzSHRtbCA9IGRhdGEuc291cmNlUHJldmlld0hhc0h0bWw7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuc291cmNlUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEuc291cmNlUHJldmlldyk7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVByZXZpZXdQcm9ncmVzcyA9IGRhdGEucGVyY2VudERvbmU7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVkRG9jUHJldmlldyh0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIC8vIHNob3cgcHJldmlldyBmb3Igb3JpZ2luYWwgZXh0ZW5zaW9uIGlmIGV4aXN0cywgaWYgbm90LCB0aGVuIHByZXZpZXcgZm9yIGRvY3gsIGlmIG5vdCB0aGVuIHRyeSB3aXRoIG9yaWdpbmFsIGZpbGVuYW1lLlxyXG4gICAgY29uc3QgZmlsZU5hbWUgPSB0cmFuc2xhdGlvbkZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucy5maW5kKGV4dCA9PiBleHQuZXh0ZW5zaW9uID09PSBGaWxlRXh0ZW5zaW9ucy5ET0NYKT8uZmlsZU5hbWVcclxuICAgICAgPz8gdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWU7XHJcbiAgICBjb25zdCBwYXJhbXM6IElUcmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3UGFyYW1zID0ge1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIHRyYW5zbGF0aW9uRG9jSWQ6IHRyYW5zbGF0aW9uRmlsZS5pZFxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS50cmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3KHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IHsgc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBzdHJpbmcsIHN0YXR1czogc3RyaW5nLCBwcmV2aWV3OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0cy51bmhhbmRlbGVkRXJyb3IocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByZXZpZXcpIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJlc3BvbnNlLnByZXZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBlcnJvcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsZVByZXZpZXdBbGVydHMoaXNQZGY6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGFsZXJ0UGFyYW1zID0ge1xyXG4gICAgICBhcHBOYW1lOiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcE5hbWUsXHJcbiAgICAgIHByaWNpbmdVcmw6IHRoaXMuY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmZpbGVDb25maWcuc2hvd1RyYW5zbGF0aW9uTGltaXRzKSB7XHJcbiAgICAgIGlmIChpc1BkZiAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm9jclBhZ2VMaW1pdCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoXCJUTERfVFJBTlNMQVRFLlBERl9QQUdFX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnNob3dXb3JkTGltaXRXYXJuaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMud2FybmluZyhcIlRMRF9UUkFOU0xBVEUuRE9DX1dPUkRfQ05UX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25FcnJvcihlcnJvcjogYW55LCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIGlmICh0cmFuc2xhdGlvbkZpbGUpIHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvckZvck1lc3NhZ2UgPSBlcnJvci5zdGF0dXMgPT09IDQwNCA/IHsgRXJyb3JDb2RlOiB0aGlzLm5vdEZvdW5kRXJyb3JDb2RlIH0gOiBlcnJvcjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yRm9yTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGVVcGxvYWRlZChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlSXggPSB0aGlzLmZpbGVzVXBsb2FkaW5nLmluZGV4T2YoZmlsZU5hbWUpO1xyXG4gICAgaWYgKGZpbGVJeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcuc3BsaWNlKGZpbGVJeCwgMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWxlc1VwbG9hZGluZy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fb25GaWxlc1VwbG9hZGVkLm5leHQobnVsbClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQW55SW1hZ2VPclBkZigpIHtcclxuICAgIGxldCBhbnlJbWFnZSA9IGZhbHNlO1xyXG4gICAgbGV0IGFueVBkZiA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyYW5zbGF0aW9uRmlsZXMubGVuZ3RoICYmICEoYW55UGRmICYmIGFueUltYWdlKTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXNbaV07XHJcbiAgICAgIGlmIChmaWxlLmZpbGVUeXBlID09PSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFKSB7XHJcbiAgICAgICAgYW55SW1hZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGZpbGUuZmlsZVR5cGUgPT09IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGKSB7XHJcbiAgICAgICAgYW55UGRmID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW55SW1hZ2VGaWxlTG9hZGVkID0gYW55SW1hZ2U7XHJcbiAgICB0aGlzLmFueVBkZkZpbGVMb2FkZWQgPSBhbnlQZGY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUGFyYW1zKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5hbnlQZGZGaWxlTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmFueUltYWdlRmlsZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZXMgPSBbXTtcclxuICAgIHRoaXMudHJhbnNsYXRlZENvdW50ID0gMDtcclxuICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcgPSBbXTtcclxuICAgIHRoaXMuX29uQ2xlYXIubmV4dChudWxsKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblRyYW5zbGF0aW9uRmlsZUVycm9yKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSwgZXJyb3I6IGFueSkge1xyXG4gICAgaWYgKGVycm9yLmVycm9yPy5lcnJvcj8uY29kZSA9PSBFcnJvckNvZGUuRV80MjkwMDEpIHtcclxuICAgICAgdGhpcy5xdW90YVNlcnZpY2UuZ2V0UXVvdGFVc2FnZSgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gdGhpcy5hbGVydHMuZmluZEVycm9yVGl0bGVBbmRMb2NhbGl6YXRpb25LZXkoeyAuLi5lcnJvciwgRXJyb3JDb2RlOiBgRV8ke2Vycm9yLmVycm9yLmVycm9yLmNvZGV9YCB9LCB0aGlzLmVycm9yVHJhbnNsYXRpb25TdWJLZXlzKTtcclxuICAgICAgICB0aGlzLmFsZXJ0cy5lcnJvcihtc2cuZGVzY3JpcHRpb24sIG1zZy50aXRsZSwgeyBxdW90YUZpbGVMaW1pdDogcmVzLnVzYWdlWzBdLnF1b3RhTGltaXQsIHByaWNpbmdVcmw6IHRoaXMuY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9IFxyXG5cclxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmFsZXJ0cy5maW5kRXJyb3JUaXRsZUFuZExvY2FsaXphdGlvbktleShlcnJvciwgdGhpcy5lcnJvclRyYW5zbGF0aW9uU3ViS2V5cyk7XHJcbiAgICBjb25zdCBvcmlnaW5hbEZpbGVOYW1lID0gdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWU7XHJcbiAgICBjb25zdCBpbmxpbmVNZXNzYWdlOiBJbmxpbmVNZXNzYWdlID0ge1xyXG4gICAgICB0aXRsZTogbWVzc2FnZS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IG1lc3NhZ2UuZGVzY3JpcHRpb24sXHJcbiAgICAgIHR5cGU6IElubGluZU1lc3NhZ2VUeXBlLkVSUk9SLFxyXG4gICAgICBsb2NhbGl6YXRpb25QYXJhbXM6IHsgZmlsZU5hbWU6IG9yaWdpbmFsRmlsZU5hbWUsIC4uLnRoaXMuYWxlcnRzLmRlZmF1bHRQYXJhbXMgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGVGaWxlVXBsb2FkQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRzLmVycm9yKG1lc3NhZ2UuZGVzY3JpcHRpb24sIG1lc3NhZ2UudGl0bGUsIHsgZmlsZU5hbWU6IG9yaWdpbmFsRmlsZU5hbWUgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtZXNzYWdlU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoaW5saW5lTWVzc2FnZSk7XHJcbiAgICBpZiAoIXRyYW5zbGF0aW9uRmlsZS5tZXNzYWdlcy5zb21lKG1zZyA9PiBKU09OLnN0cmluZ2lmeShtc2cpID09PSBtZXNzYWdlU3RyaW5nKSkge1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUubWVzc2FnZXMucHVzaChpbmxpbmVNZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -5385,7 +5385,7 @@ class TldTranslateFileService {
5385
5385
  this._onClear.next(null);
5386
5386
  }
5387
5387
  onTranslationFileError(translationFile, error) {
5388
- if (error.error?.error.code == ErrorCode.E_429001) {
5388
+ if (error.error?.error?.code == ErrorCode.E_429001) {
5389
5389
  this.quotaService.getQuotaUsage().subscribe((res) => {
5390
5390
  const msg = this.alerts.findErrorTitleAndLocalizationKey({ ...error, ErrorCode: `E_${error.error.error.code}` }, this.errorTranslationSubKeys);
5391
5391
  this.alerts.error(msg.description, msg.title, { quotaFileLimit: res.usage[0].quotaLimit, pricingUrl: this.config.supscriptionConfig.pricingUrl });