@tsi-developpement/tsi-shared-ui 1.10.11 → 1.10.13

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.
@@ -5,4 +5,5 @@ export * from './queryParamNames.const';
5
5
  export * from './themes';
6
6
  export * from './tsi-consts';
7
7
  export * from './app-providers';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvY29uc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaHRtbC10ZW1wbGF0ZS5jb25zdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uLWtleSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxzLmNvbnN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9xdWVyeVBhcmFtTmFtZXMuY29uc3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RoZW1lcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHNpLWNvbnN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwLXByb3ZpZGVycyc7Il19
8
+ export * from './upload-error-codes';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvY29uc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odG1sLXRlbXBsYXRlLmNvbnN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGl6YXRpb24ta2V5JztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2NhbHMuY29uc3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5UGFyYW1OYW1lcy5jb25zdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGhlbWVzJztcclxuZXhwb3J0ICogZnJvbSAnLi90c2ktY29uc3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9hcHAtcHJvdmlkZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQtZXJyb3ItY29kZXMnOyJdfQ==
@@ -0,0 +1,10 @@
1
+ export const UploadErrorCodeTranslationKeys = {
2
+ ProfileNotConfigured: 'upload_error_profile_not_configured',
3
+ EmptyFileName: 'upload_error_empty_file_name',
4
+ SuspiciousDoubleExtension: 'upload_error_suspicious_double_extension',
5
+ MissingExtension: 'upload_error_missing_extension',
6
+ ExtensionNotAllowed: 'upload_error_extension_not_allowed',
7
+ };
8
+ export const UploadErrorUnknownKey = 'upload_error_unknown';
9
+ export const UploadAllowedExtensionsLabelKey = 'upload_error_allowed_extensions_label';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWVycm9yLWNvZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL2NvbnN0cy91cGxvYWQtZXJyb3ItY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQTJCO0lBQ3BFLG9CQUFvQixFQUFFLHFDQUFxQztJQUMzRCxhQUFhLEVBQUUsOEJBQThCO0lBQzdDLHlCQUF5QixFQUFFLDBDQUEwQztJQUNyRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7SUFDbEQsbUJBQW1CLEVBQUUsb0NBQW9DO0NBQzFELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsZVVwbG9hZFJlamVjdGlvbiB7XHJcbiAgZXJyb3JDb2RlOiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU/OiBzdHJpbmcgfCBudWxsO1xyXG4gIGFsbG93ZWRFeHRlbnNpb25zPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBVcGxvYWRFcnJvckNvZGVUcmFuc2xhdGlvbktleXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgUHJvZmlsZU5vdENvbmZpZ3VyZWQ6ICd1cGxvYWRfZXJyb3JfcHJvZmlsZV9ub3RfY29uZmlndXJlZCcsXHJcbiAgRW1wdHlGaWxlTmFtZTogJ3VwbG9hZF9lcnJvcl9lbXB0eV9maWxlX25hbWUnLFxyXG4gIFN1c3BpY2lvdXNEb3VibGVFeHRlbnNpb246ICd1cGxvYWRfZXJyb3Jfc3VzcGljaW91c19kb3VibGVfZXh0ZW5zaW9uJyxcclxuICBNaXNzaW5nRXh0ZW5zaW9uOiAndXBsb2FkX2Vycm9yX21pc3NpbmdfZXh0ZW5zaW9uJyxcclxuICBFeHRlbnNpb25Ob3RBbGxvd2VkOiAndXBsb2FkX2Vycm9yX2V4dGVuc2lvbl9ub3RfYWxsb3dlZCcsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgVXBsb2FkRXJyb3JVbmtub3duS2V5ID0gJ3VwbG9hZF9lcnJvcl91bmtub3duJztcclxuZXhwb3J0IGNvbnN0IFVwbG9hZEFsbG93ZWRFeHRlbnNpb25zTGFiZWxLZXkgPSAndXBsb2FkX2Vycm9yX2FsbG93ZWRfZXh0ZW5zaW9uc19sYWJlbCc7XHJcbiJdfQ==
@@ -1,11 +1,19 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { UploadAllowedExtensionsLabelKey, UploadErrorCodeTranslationKeys, UploadErrorUnknownKey } from '../../consts/upload-error-codes';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "./tsi-message.service";
5
+ import * as i2 from "../../pipes/localize.pipe";
4
6
  export class ErrorResponseManagerService {
5
- constructor(_messageService) {
7
+ constructor(_messageService, localizePipe) {
6
8
  this._messageService = _messageService;
9
+ this.localizePipe = localizePipe;
7
10
  }
8
11
  showErrorMessage(response) {
12
+ const body = response.error;
13
+ if (body && typeof body === 'object' && typeof body.errorCode === 'string' && Array.isArray(body.allowedExtensions)) {
14
+ this.showFileUploadRejection(body);
15
+ return;
16
+ }
9
17
  if (response.error && typeof (response.error) == 'string') {
10
18
  this._messageService.error(response.error);
11
19
  return;
@@ -39,7 +47,19 @@ export class ErrorResponseManagerService {
39
47
  showUserFriendlyErrorMessage(response) {
40
48
  this._messageService.error(response.error.result);
41
49
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ErrorResponseManagerService, deps: [{ token: i1.TsiMessageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
50
+ showFileUploadRejection(body) {
51
+ const key = UploadErrorCodeTranslationKeys[body.errorCode] ?? UploadErrorUnknownKey;
52
+ let message = this.localizePipe.transform(key);
53
+ if (body.fileName) {
54
+ message += ` (${body.fileName})`;
55
+ }
56
+ const details = [];
57
+ if (body.allowedExtensions && body.allowedExtensions.length > 0) {
58
+ details.push(`${this.localizePipe.transform(UploadAllowedExtensionsLabelKey)}: ${body.allowedExtensions.join(', ')}`);
59
+ }
60
+ this._messageService.error(message, details);
61
+ }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ErrorResponseManagerService, deps: [{ token: i1.TsiMessageService }, { token: i2.LocalizePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
63
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ErrorResponseManagerService, providedIn: 'root' }); }
44
64
  }
45
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ErrorResponseManagerService, decorators: [{
@@ -47,5 +67,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
47
67
  args: [{
48
68
  providedIn: 'root'
49
69
  }]
50
- }], ctorParameters: () => [{ type: i1.TsiMessageService }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVzcG9uc2UtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9lcnJvci1yZXNwb25zZS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBb0IsZUFBa0M7UUFBbEMsb0JBQWUsR0FBZixlQUFlLENBQW1CO0lBQUksQ0FBQztJQUVwRCxnQkFBZ0IsQ0FBQyxRQUEyQjtRQUVqRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDeEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksU0FBUyxHQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO1FBQzdDLElBQUksWUFBWSxHQUFXLEVBQUUsQ0FBQztRQUM5QixJQUFJLGFBQWEsR0FBYSxFQUFFLENBQUM7UUFFakMsS0FBSyxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMvQixZQUFZLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFDL0IsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVNLDBCQUEwQixDQUFDLFFBQTJCO1FBRTNELElBQUksU0FBUyxHQUFlLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xFLElBQUksWUFBWSxHQUFXLEVBQUUsQ0FBQztRQUU5QixTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFCLFlBQVksSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxnQ0FBZ0MsQ0FBQyxhQUF1QjtRQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLDRCQUE0QixDQUFDLFFBQTJCO1FBRTdELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsQ0FBQzsrR0FqRFUsMkJBQTJCO21IQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs7NEZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRzaU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi90c2ktbWVzc2FnZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21lc3NhZ2VTZXJ2aWNlOiBUc2lNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gIHB1YmxpYyBzaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChyZXNwb25zZS5lcnJvciAmJiB0eXBlb2YgKHJlc3BvbnNlLmVycm9yKSA9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyZXNwb25zZS5lcnJvciAmJiByZXNwb25zZS5lcnJvci5lcnJvciAmJiB0eXBlb2YgKHJlc3BvbnNlLmVycm9yLmVycm9yKSA9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihyZXNwb25zZS5lcnJvci5lcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZXJyb3JMaXN0OiBbW11dID0gcmVzcG9uc2UuZXJyb3I/LmVycm9ycztcclxuICAgIGxldCBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gZXJyb3JMaXN0KSB7XHJcbiAgICAgIGVycm9yTGlzdFtrZXldLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlICs9ICdcXG4nICsgZWxlbWVudDtcclxuICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVycm9yKGVycm9yTWVzc2FnZSwgZXJyb3JNZXNzYWdlcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1ZhbGlkYXRpb25FcnJvck1lc3NhZ2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XHJcblxyXG4gICAgbGV0IGVycm9yTGlzdDogQXJyYXk8YW55PiA9IHJlc3BvbnNlLmVycm9yLmVycm9yLnZhbGlkYXRpb25FcnJvcnM7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIGVycm9yTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBlcnJvck1lc3NhZ2UgKz0gJ1xcbicgKyBlbGVtZW50Lm1lc3NhZ2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihlcnJvck1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dFcnJvck1lc3NhZ2VzRnJvbUFycmF5U3RyaW5nKGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihcIlwiLCBlcnJvck1lc3NhZ2VzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93VXNlckZyaWVuZGx5RXJyb3JNZXNzYWdlKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVycm9yKHJlc3BvbnNlLmVycm9yLnJlc3VsdCk7XHJcblxyXG4gIH1cclxufVxyXG4iXX0=
70
+ }], ctorParameters: () => [{ type: i1.TsiMessageService }, { type: i2.LocalizePipe }] });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVzcG9uc2UtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9lcnJvci1yZXNwb25zZS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQXVCLCtCQUErQixFQUFFLDhCQUE4QixFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7QUFLOUosTUFBTSxPQUFPLDJCQUEyQjtJQUV0QyxZQUFvQixlQUFrQyxFQUFVLFlBQTBCO1FBQXRFLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUksQ0FBQztJQUV4RixnQkFBZ0IsQ0FBQyxRQUEyQjtRQUVqRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUNwSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBMkIsQ0FBQyxDQUFDO1lBQzFELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLFFB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bW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUc2lNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vdHNpLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkUmVqZWN0aW9uLCBVcGxvYWRBbGxvd2VkRXh0ZW5zaW9uc0xhYmVsS2V5LCBVcGxvYWRFcnJvckNvZGVUcmFuc2xhdGlvbktleXMsIFVwbG9hZEVycm9yVW5rbm93bktleSB9IGZyb20gJy4uLy4uL2NvbnN0cy91cGxvYWQtZXJyb3ItY29kZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IFRzaU1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGxvY2FsaXplUGlwZTogTG9jYWxpemVQaXBlKSB7IH1cclxuXHJcbiAgcHVibGljIHNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlc3BvbnNlLmVycm9yO1xyXG4gICAgaWYgKGJvZHkgJiYgdHlwZW9mIGJvZHkgPT09ICdvYmplY3QnICYmIHR5cGVvZiBib2R5LmVycm9yQ29kZSA9PT0gJ3N0cmluZycgJiYgQXJyYXkuaXNBcnJheShib2R5LmFsbG93ZWRFeHRlbnNpb25zKSkge1xyXG4gICAgICB0aGlzLnNob3dGaWxlVXBsb2FkUmVqZWN0aW9uKGJvZHkgYXMgRmlsZVVwbG9hZFJlamVjdGlvbik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzcG9uc2UuZXJyb3IgJiYgdHlwZW9mIChyZXNwb25zZS5lcnJvcikgPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuZXJyb3IocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAocmVzcG9uc2UuZXJyb3IgJiYgcmVzcG9uc2UuZXJyb3IuZXJyb3IgJiYgdHlwZW9mIChyZXNwb25zZS5lcnJvci5lcnJvcikgPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuZXJyb3IocmVzcG9uc2UuZXJyb3IuZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGVycm9yTGlzdDogW1tdXSA9IHJlc3BvbnNlLmVycm9yPy5lcnJvcnM7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgbGV0IGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIGVycm9yTGlzdCkge1xyXG4gICAgICBlcnJvckxpc3Rba2V5XS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZSArPSAnXFxuJyArIGVsZW1lbnQ7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihlcnJvck1lc3NhZ2UsIGVycm9yTWVzc2FnZXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG5cclxuICAgIGxldCBlcnJvckxpc3Q6IEFycmF5PGFueT4gPSByZXNwb25zZS5lcnJvci5lcnJvci52YWxpZGF0aW9uRXJyb3JzO1xyXG4gICAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICBlcnJvckxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgZXJyb3JNZXNzYWdlICs9ICdcXG4nICsgZWxlbWVudC5tZXNzYWdlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuZXJyb3IoZXJyb3JNZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RXJyb3JNZXNzYWdlc0Zyb21BcnJheVN0cmluZyhlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuZXJyb3IoXCJcIiwgZXJyb3JNZXNzYWdlcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1VzZXJGcmllbmRseUVycm9yTWVzc2FnZShyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihyZXNwb25zZS5lcnJvci5yZXN1bHQpO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd0ZpbGVVcGxvYWRSZWplY3Rpb24oYm9keTogRmlsZVVwbG9hZFJlamVjdGlvbik6IHZvaWQge1xyXG4gICAgY29uc3Qga2V5ID0gVXBsb2FkRXJyb3JDb2RlVHJhbnNsYXRpb25LZXlzW2JvZHkuZXJyb3JDb2RlXSA/PyBVcGxvYWRFcnJvclVua25vd25LZXk7XHJcbiAgICBsZXQgbWVzc2FnZSA9IHRoaXMubG9jYWxpemVQaXBlLnRyYW5zZm9ybShrZXkpO1xyXG5cclxuICAgIGlmIChib2R5LmZpbGVOYW1lKSB7XHJcbiAgICAgIG1lc3NhZ2UgKz0gYCAoJHtib2R5LmZpbGVOYW1lfSlgO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRldGFpbHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAoYm9keS5hbGxvd2VkRXh0ZW5zaW9ucyAmJiBib2R5LmFsbG93ZWRFeHRlbnNpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGV0YWlscy5wdXNoKGAke3RoaXMubG9jYWxpemVQaXBlLnRyYW5zZm9ybShVcGxvYWRBbGxvd2VkRXh0ZW5zaW9uc0xhYmVsS2V5KX06ICR7Ym9keS5hbGxvd2VkRXh0ZW5zaW9ucy5qb2luKCcsICcpfWApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVycm9yKG1lc3NhZ2UsIGRldGFpbHMpO1xyXG4gIH1cclxufVxyXG4iXX0=