@valtimo/dossier 5.7.0 → 5.8.0

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.
@@ -81,7 +81,7 @@ export class DossierListComponent {
81
81
  ]).pipe(filter(([pagination]) => !!pagination), map(([pagination, documentDefinitionName, sequence, createdBy, globalSearchFilter]) => new DocumentSearchRequestImpl(documentDefinitionName, pagination.page - 1, pagination.size, sequence, createdBy, globalSearchFilter, pagination.sort)));
82
82
  this.documentsRequest$ = this.documentSearchRequest$.pipe(distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)), tap(request => {
83
83
  this.storedSearchRequestKey$.pipe(take(1)).subscribe(storedSearchRequestKey => {
84
- this.logger.log(`store request in local storage: ${JSON.stringify(request)}`);
84
+ this.logger.debug(`store request in local storage: ${JSON.stringify(request)}`);
85
85
  localStorage.setItem(storedSearchRequestKey, JSON.stringify(request));
86
86
  });
87
87
  }), switchMap(documentSearchRequest => this.documentService.getDocuments(documentSearchRequest)), tap(documents => {
@@ -106,7 +106,7 @@ export class DossierListComponent {
106
106
  pageChange(newPage) {
107
107
  this.pagination$.pipe(take(1)).subscribe(pagination => {
108
108
  if (pagination && pagination.page !== newPage) {
109
- this.logger.log(`Page change: ${newPage}`);
109
+ this.logger.debug(`Page change: ${newPage}`);
110
110
  this.pagination$.next({ ...pagination, page: newPage });
111
111
  }
112
112
  });
@@ -116,7 +116,7 @@ export class DossierListComponent {
116
116
  if (pagination && pagination.size !== newPageSize) {
117
117
  const amountOfAvailablePages = Math.ceil(pagination.collectionSize / newPageSize);
118
118
  const newPage = amountOfAvailablePages < pagination.page ? amountOfAvailablePages : pagination.page;
119
- this.logger.log(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);
119
+ this.logger.debug(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);
120
120
  this.pagination$.next({ ...pagination, size: newPageSize, page: newPage });
121
121
  }
122
122
  });
@@ -124,7 +124,7 @@ export class DossierListComponent {
124
124
  sortChanged(newSortState) {
125
125
  this.pagination$.pipe(take(1)).subscribe(pagination => {
126
126
  if (pagination && JSON.stringify(pagination.sort) !== JSON.stringify(newSortState)) {
127
- this.logger.log(`Sort state change: ${JSON.stringify(newSortState)}`);
127
+ this.logger.debug(`Sort state change: ${JSON.stringify(newSortState)}`);
128
128
  this.pagination$.next({ ...pagination, sort: newSortState });
129
129
  }
130
130
  });
@@ -162,7 +162,7 @@ export class DossierListComponent {
162
162
  this.settingPaginationForDocName$.pipe(take(1)).subscribe(settingPaginationForDocName => {
163
163
  if (documentDefinitionName !== settingPaginationForDocName) {
164
164
  this.pagination$.next(undefined);
165
- this.logger.log('clear pagination');
165
+ this.logger.debug('clear pagination');
166
166
  this.settingPaginationForDocName$.next(documentDefinitionName);
167
167
  this.setPagination(documentDefinitionName);
168
168
  }
@@ -174,7 +174,7 @@ export class DossierListComponent {
174
174
  .subscribe(([hasStoredSearchRequest, storedSearchRequestKey, columns]) => {
175
175
  const defaultPagination = this.getDefaultPagination(columns);
176
176
  const storedPagination = this.getStoredPagination(hasStoredSearchRequest, storedSearchRequestKey);
177
- this.logger.log(`Set pagination: ${JSON.stringify(storedPagination || defaultPagination)}`);
177
+ this.logger.debug(`Set pagination: ${JSON.stringify(storedPagination || defaultPagination)}`);
178
178
  this.pagination$.next(storedPagination || defaultPagination);
179
179
  });
180
180
  }
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
217
217
  type: ViewChild,
218
218
  args: ['processStartModal']
219
219
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUl0RSxPQUFPLEVBRUwseUJBQXlCLEdBTTFCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUViLG9CQUFvQixFQUNwQixNQUFNLEVBRU4sR0FBRyxFQUVILEVBQUUsRUFHRixTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3ZELE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQU9yRCxNQUFNLE9BQU8sb0JBQW9CO0lBa0kvQixZQUNtQixLQUFxQixFQUNyQixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLE1BQWlCO1FBTGpCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFr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WSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsaUNBQWlDLEdBQUcsSUFBSSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQzs7a0hBeFJVLG9CQUFvQjtzR0FBcEIsb0JBQW9CLCtLQzlEakMsb2tLQTRJQTs0RkQ5RWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHNCQUFzQjs0T0FLQSxZQUFZO3NCQUEzQyxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0RlZmluaXRpb25Db2x1bW59IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBEb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gIERvY3VtZW50U2VhcmNoUmVxdWVzdEltcGwsXG4gIERvY3VtZW50U2VydmljZSxcbiAgU29ydFN0YXRlLFxuICBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLFxuICBEb2N1bWVudHMsXG4gIERvY3VtZW50RGVmaW5pdGlvbixcbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGVmYXVsdFRhYnN9IGZyb20gJy4uL2Rvc3NpZXItZGV0YWlsLXRhYi1lbnVtJztcbmltcG9ydCB7RG9zc2llclByb2Nlc3NTdGFydE1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwvZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJTZXJ2aWNlfSBmcm9tICcuLi9kb3NzaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdpbmF0aW9uLCBMaXN0RmllbGR9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyXG5kZWNsYXJlIHZhciAkO1xuXG5tb21lbnQubG9jYWxlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nS2V5JykgfHwgJycpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3Byb2Nlc3NTdGFydE1vZGFsJykgcHJvY2Vzc1N0YXJ0OiBEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBtb2RhbExpc3RlbmVyQWRkZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8ICcnKSxcbiAgICB0YXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLnJlc2V0UGFnaW5hdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyQ6IE9ic2VydmFibGU8QXJyYXk8UHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbj4+ID1cbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICBkb2N1bWVudERlZmluaXRpb25OYW1lXG4gICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgICAgICA6IG9mKFtdKVxuICAgICAgKSxcbiAgICAgIG1hcChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9PlxuICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5maWx0ZXIoZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLmNhbkluaXRpYWxpemVEb2N1bWVudClcbiAgICAgIClcbiAgICApO1xuXG4gIHJlYWRvbmx5IHNjaGVtYSQgPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50RGVmaW5pdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgbWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiBkb2N1bWVudERlZmluaXRpb24/LnNjaGVtYSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlZFNlYXJjaFJlcXVlc3RLZXkkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgbWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gYGxpc3Qtc2VhcmNoLSR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFzU3RvcmVkU2VhcmNoUmVxdWVzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnN0b3JlZFNlYXJjaFJlcXVlc3RLZXkkLnBpcGUoXG4gICAgbWFwKHN0b3JlZFNlYXJjaFJlcXVlc3RLZXkgPT4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmVkU2VhcmNoUmVxdWVzdEtleSkgIT09IG51bGwpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5zJDogT2JzZXJ2YWJsZTxBcnJheTxEZWZpbml0aW9uQ29sdW1uPj4gPVxuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIG1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuZG9zc2llclNlcnZpY2UuZ2V0RGVmaW5pdGlvbkNvbHVtbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIClcbiAgICApO1xuXG4gIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmNvbHVtbnMkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2NvbHVtbnNdKSA9PlxuICAgICAgY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XG4gICAgICAgIGtleTogY29sdW1uLnByb3BlcnR5TmFtZSxcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBmaWVsZExhYmVscy4ke2NvbHVtbi50cmFuc2xhdGlvbktleX1gKSxcbiAgICAgICAgc29ydGFibGU6IGNvbHVtbi5zb3J0YWJsZSxcbiAgICAgICAgLi4uKGNvbHVtbi52aWV3VHlwZSAmJiB7dmlld1R5cGU6IGNvbHVtbi52aWV3VHlwZX0pLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QQUdJTkFUSU9OOiBQYWdpbmF0aW9uID0ge1xuICAgIGNvbGxlY3Rpb25TaXplOiAwLFxuICAgIHBhZ2U6IDEsXG4gICAgc2l6ZTogMTAsXG4gICAgbWF4UGFnaW5hdGlvbkl0ZW1TaXplOiA1LFxuICAgIHNvcnQ6IHVuZGVmaW5lZCxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IHBhZ2luYXRpb25Db3B5JCA9IHRoaXMucGFnaW5hdGlvbiQucGlwZShcbiAgICBtYXAocGFnaW5hdGlvbiA9PiBwYWdpbmF0aW9uICYmIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFnaW5hdGlvbikpKVxuICApO1xuXG4gIHJlYWRvbmx5IHNlcXVlbmNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGdsb2JhbFNlYXJjaEZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNyZWF0ZWRCeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VhcmNoUmVxdWVzdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRTZWFyY2hSZXF1ZXN0PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMucGFnaW5hdGlvbiQsXG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJCxcbiAgICB0aGlzLnNlcXVlbmNlJCxcbiAgICB0aGlzLmNyZWF0ZWRCeSQsXG4gICAgdGhpcy5nbG9iYWxTZWFyY2hGaWx0ZXIkLFxuICBdKS5waXBlKFxuICAgIGZpbHRlcigoW3BhZ2luYXRpb25dKSA9PiAhIXBhZ2luYXRpb24pLFxuICAgIG1hcChcbiAgICAgIChbcGFnaW5hdGlvbiwgZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgc2VxdWVuY2UsIGNyZWF0ZWRCeSwgZ2xvYmFsU2VhcmNoRmlsdGVyXSkgPT5cbiAgICAgICAgbmV3IERvY3VtZW50U2VhcmNoUmVxdWVzdEltcGwoXG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICBwYWdpbmF0aW9uLnBhZ2UgLSAxLFxuICAgICAgICAgIHBhZ2luYXRpb24uc2l6ZSxcbiAgICAgICAgICBzZXF1ZW5jZSxcbiAgICAgICAgICBjcmVhdGVkQnksXG4gICAgICAgICAgZ2xvYmFsU2VhcmNoRmlsdGVyLFxuICAgICAgICAgIHBhZ2luYXRpb24uc29ydFxuICAgICAgICApXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRzUmVxdWVzdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRzPiA9IHRoaXMuZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2KSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VycikpLFxuICAgIHRhcChyZXF1ZXN0ID0+IHtcbiAgICAgIHRoaXMuc3RvcmVkU2VhcmNoUmVxdWVzdEtleSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc3RvcmVkU2VhcmNoUmVxdWVzdEtleSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgc3RvcmUgcmVxdWVzdCBpbiBsb2NhbCBzdG9yYWdlOiAke0pTT04uc3RyaW5naWZ5KHJlcXVlc3QpfWApO1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5LCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSk7XG4gICAgICB9KTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnRTZWFyY2hSZXF1ZXN0ID0+IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50cyhkb2N1bWVudFNlYXJjaFJlcXVlc3QpKSxcbiAgICB0YXAoZG9jdW1lbnRzID0+IHtcbiAgICAgIHRoaXMuc2V0Q29sbGVjdGlvblNpemUoZG9jdW1lbnRzKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50SXRlbXMkID0gdGhpcy5kb2N1bWVudHNSZXF1ZXN0JC5waXBlKFxuICAgIG1hcChkb2N1bWVudHMgPT5cbiAgICAgIGRvY3VtZW50cy5jb250ZW50Lm1hcChkb2N1bWVudCA9PiB7XG4gICAgICAgIGNvbnN0IHtjb250ZW50LCAuLi5vdGhlcnN9ID0gZG9jdW1lbnQ7XG4gICAgICAgIHJldHVybiB7Li4uY29udGVudCwgLi4ub3RoZXJzfTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyU2VydmljZTogRG9zc2llclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlclxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbExpc3RlbmVyQWRkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGdsb2JhbFNlYXJjaEZpbHRlckNoYW5nZShzZWFyY2hGaWx0ZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZ2xvYmFsU2VhcmNoRmlsdGVyJC5uZXh0KHNlYXJjaEZpbHRlcik7XG4gICAgdGhpcy5wYWdlQ2hhbmdlKDEpO1xuICB9XG5cbiAgc2VxdWVuY2VDaGFuZ2Uoc2VxdWVuY2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VxdWVuY2UkLm5leHQoTnVtYmVyKHNlcXVlbmNlKSk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlKDEpO1xuICB9XG5cbiAgcGFnZUNoYW5nZShuZXdQYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhZ2luYXRpb24gPT4ge1xuICAgICAgaWYgKHBhZ2luYXRpb24gJiYgcGFnaW5hdGlvbi5wYWdlICE9PSBuZXdQYWdlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgUGFnZSBjaGFuZ2U6ICR7bmV3UGFnZX1gKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi5wYWdpbmF0aW9uLCBwYWdlOiBuZXdQYWdlfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwYWdlU2l6ZUNoYW5nZShuZXdQYWdlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYWdpbmF0aW9uID0+IHtcbiAgICAgIGlmIChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uc2l6ZSAhPT0gbmV3UGFnZVNpemUpIHtcbiAgICAgICAgY29uc3QgYW1vdW50T2ZBdmFpbGFibGVQYWdlcyA9IE1hdGguY2VpbChwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplIC8gbmV3UGFnZVNpemUpO1xuICAgICAgICBjb25zdCBuZXdQYWdlID1cbiAgICAgICAgICBhbW91bnRPZkF2YWlsYWJsZVBhZ2VzIDwgcGFnaW5hdGlvbi5wYWdlID8gYW1vdW50T2ZBdmFpbGFibGVQYWdlcyA6IHBhZ2luYXRpb24ucGFnZTtcblxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFBhZ2Ugc2l6ZSBjaGFuZ2UuIE5ldyBQYWdlOiAke25ld1BhZ2V9IE5ldyBwYWdlIHNpemU6ICR7bmV3UGFnZVNpemV9YCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgc2l6ZTogbmV3UGFnZVNpemUsIHBhZ2U6IG5ld1BhZ2V9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNvcnRDaGFuZ2VkKG5ld1NvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYWdpbmF0aW9uID0+IHtcbiAgICAgIGlmIChwYWdpbmF0aW9uICYmIEpTT04uc3RyaW5naWZ5KHBhZ2luYXRpb24uc29ydCkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1NvcnRTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBTb3J0IHN0YXRlIGNoYW5nZTogJHtKU09OLnN0cmluZ2lmeShuZXdTb3J0U3RhdGUpfWApO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnBhZ2luYXRpb24sIHNvcnQ6IG5ld1NvcnRTdGF0ZX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcm93Q2xpY2soZG9jdW1lbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgIGAvZG9zc2llcnMvJHtkb2N1bWVudERlZmluaXRpb25OYW1lfS9kb2N1bWVudC8ke2RvY3VtZW50LmlkfS8ke0RlZmF1bHRUYWJzLnN1bW1hcnl9YCxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhcnREb3NzaWVyKCk6IHZvaWQge1xuICAgIHRoaXMuYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zJFxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+IHtcbiAgICAgICAgaWYgKGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgJCgnI3N0YXJ0UHJvY2VzcycpLm1vZGFsKCdzaG93Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPSBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNbMF07XG4gICAgICAgICAgdGhpcy5zaG93U3RhcnRQcm9jZXNzTW9kYWwoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBzZWxlY3RQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9ICQoJyNzdGFydFByb2Nlc3MnKTtcbiAgICBpZiAoIXRoaXMubW9kYWxMaXN0ZW5lckFkZGVkKSB7XG4gICAgICBtb2RhbC5vbignaGlkZGVuLmJzLm1vZGFsJywgdGhpcy5zaG93U3RhcnRQcm9jZXNzTW9kYWwuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1vZGFsTGlzdGVuZXJBZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjtcbiAgICBtb2RhbC5tb2RhbCgnaGlkZScpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFBhZ2luYXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZSk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ1BhZ2luYXRpb25Gb3JEb2NOYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZXR0aW5nUGFnaW5hdGlvbkZvckRvY05hbWUgPT4ge1xuICAgICAgaWYgKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgIT09IHNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSkge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdjbGVhciBwYWdpbmF0aW9uJyk7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BhZ2luYXRpb25Gb3JEb2NOYW1lJC5uZXh0KGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpO1xuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBhZ2luYXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5oYXNTdG9yZWRTZWFyY2hSZXF1ZXN0JCwgdGhpcy5zdG9yZWRTZWFyY2hSZXF1ZXN0S2V5JCwgdGhpcy5jb2x1bW5zJF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoW2hhc1N0b3JlZFNlYXJjaFJlcXVlc3QsIHN0b3JlZFNlYXJjaFJlcXVlc3RLZXksIGNvbHVtbnNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYWdpbmF0aW9uOiBQYWdpbmF0aW9uID0gdGhpcy5nZXREZWZhdWx0UGFnaW5hdGlvbihjb2x1bW5zKTtcbiAgICAgICAgY29uc3Qgc3RvcmVkUGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHRoaXMuZ2V0U3RvcmVkUGFnaW5hdGlvbihcbiAgICAgICAgICBoYXNTdG9yZWRTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgIHN0b3JlZFNlYXJjaFJlcXVlc3RLZXlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFNldCBwYWdpbmF0aW9uOiAke0pTT04uc3RyaW5naWZ5KHN0b3JlZFBhZ2luYXRpb24gfHwgZGVmYXVsdFBhZ2luYXRpb24pfWApO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoc3RvcmVkUGFnaW5hdGlvbiB8fCBkZWZhdWx0UGFnaW5hdGlvbik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFBhZ2luYXRpb24oY29sdW1uczogQXJyYXk8RGVmaW5pdGlvbkNvbHVtbj4pOiBQYWdpbmF0aW9uIHtcbiAgICBjb25zdCBkZWZhdWx0U29ydFN0YXRlID0gdGhpcy5kb3NzaWVyU2VydmljZS5nZXRJbml0aWFsU29ydFN0YXRlKGNvbHVtbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuREVGQVVMVF9QQUdJTkFUSU9OLFxuICAgICAgc29ydDogZGVmYXVsdFNvcnRTdGF0ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdG9yZWRQYWdpbmF0aW9uKFxuICAgIGhhc1N0b3JlZFNlYXJjaFJlcXVlc3Q6IGJvb2xlYW4sXG4gICAgc3RvcmVkU2VhcmNoUmVxdWVzdEtleTogc3RyaW5nXG4gICk6IFBhZ2luYXRpb24gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHN0b3JlZFNlYXJjaFJlcXVlc3QgPVxuICAgICAgaGFzU3RvcmVkU2VhcmNoUmVxdWVzdCAmJiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JlZFNlYXJjaFJlcXVlc3RLZXkpKTtcblxuICAgIHJldHVybiAoXG4gICAgICBzdG9yZWRTZWFyY2hSZXF1ZXN0ICYmIHtcbiAgICAgICAgLi4udGhpcy5ERUZBVUxUX1BBR0lOQVRJT04sXG4gICAgICAgIHNvcnQ6IHN0b3JlZFNlYXJjaFJlcXVlc3Quc29ydCxcbiAgICAgICAgcGFnZTogc3RvcmVkU2VhcmNoUmVxdWVzdC5wYWdlICsgMSxcbiAgICAgICAgc2l6ZTogc3RvcmVkU2VhcmNoUmVxdWVzdC5zaXplLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbGxlY3Rpb25TaXplKGRvY3VtZW50czogRG9jdW1lbnRzKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYWdpbmF0aW9uID0+IHtcbiAgICAgIGlmIChwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplICE9PSBkb2N1bWVudHMudG90YWxFbGVtZW50cykge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnBhZ2luYXRpb24sIGNvbGxlY3Rpb25TaXplOiBkb2N1bWVudHMudG90YWxFbGVtZW50c30pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93U3RhcnRQcm9jZXNzTW9kYWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnByb2Nlc3NTdGFydC5vcGVuTW9kYWwodGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pO1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZWJhclwiPjwvbmctY29udGFpbmVyPlxuXG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50IHB0LTBcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zJCB8IGFzeW5jIGFzIGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtdC1tM3B4IG1iLTNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tcHJpbWFyeSBtci0wXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzdGFydERvc3NpZXIoKVwiXG4gICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwID8gJ05vIGFjdGlvbicgOiBudWxsXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktcGx1cyBtci0xXCI+PC9pPlxuICAgICAgICAgICAge3sgJ1N0YXJ0IERvc3NpZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vZGFsIGZhZGVcIlxuICAgICAgICAgIGlkPVwic3RhcnRQcm9jZXNzXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJzdGFydFByb2Nlc3NMYWJlbFwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInN0YXJ0UHJvY2Vzc0xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnZGFzaGJvYXJkLnN0YXJ0UHJvY2Vzcy50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG0tMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiBvZiBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5wcm9jZXNzTmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ2N0YS5jbG9zZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx2YWx0aW1vLXdpZGdldD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdmFsdGltby13aWRnZXQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8dmFsdGltby1kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwgI3Byb2Nlc3NTdGFydE1vZGFsPjwvdmFsdGltby1kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWw+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsaXN0PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnaW5hdGlvbkNvcHkkIHwgYXN5bmMgYXMgcGFnaW5hdGlvblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZHMkIHwgYXN5bmMgYXMgZmllbGRzXCI+XG4gICAgICA8dmFsdGltby1saXN0XG4gICAgICAgICpuZ0lmPVwiZG9jdW1lbnRJdGVtcyQgfCBhc3luYyBhcyBkb2N1bWVudEl0ZW1zXCJcbiAgICAgICAgW2l0ZW1zXT1cImRvY3VtZW50SXRlbXNcIlxuICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgIChyb3dDbGlja2VkKT1cInJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgICAgICAgW3ZpZXdNb2RlXT1cInRydWVcIlxuICAgICAgICBbaGVhZGVyXT1cInRydWVcIlxuICAgICAgICBwYWdpbmF0aW9uSWRlbnRpZmllcj1cImRvc3NpZXJMaXN0XCJcbiAgICAgICAgKHBhZ2luYXRpb25DbGlja2VkKT1cInBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChwYWdpbmF0aW9uU2V0KT1cInBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbaW5pdGlhbFNvcnRTdGF0ZV09XCJwYWdpbmF0aW9uLnNvcnRcIlxuICAgICAgICAoc29ydENoYW5nZWQpPVwic29ydENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgaGVhZGVyPlxuICAgICAgICAgIDxoMyBjbGFzcz1cImxpc3QtaGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgICB7eyAoc2NoZW1hJCB8IGFzeW5jKT8udGl0bGUgfX1cbiAgICAgICAgICAgIDxzdXAgY2xhc3M9XCJtbC0xIGJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeVwiPnt7IGRvY3VtZW50SXRlbXM/Lmxlbmd0aCB8fCAwIH19PC9zdXA+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3ZhbHRpbW8tbGlzdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpZGViYXI+XG4gIDx2YWx0aW1vLWZpbHRlci1zaWRlYmFyPlxuICAgIDxoNCBjbGFzcz1cInRpdGxlXCI+U2VhcmNoPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdkb3NzaWVyLmZvcm1zLmdsb2JhbFNlYXJjaFBsYWNlSG9sZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFtuZ01vZGVsXT1cImdsb2JhbFNlYXJjaEZpbHRlciQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImdsb2JhbFNlYXJjaEZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2Rvc3NpZXIuZm9ybXMucmVmZXJlbmNlTnVtYmVyUGxhY2VIb2xkZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW25nTW9kZWxdPVwic2VxdWVuY2UkIHwgYXN5bmNcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXF1ZW5jZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvdmFsdGltby1maWx0ZXItc2lkZWJhcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUl0RSxPQUFPLEVBRUwseUJBQXlCLEdBTTFCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUViLG9CQUFvQixFQUNwQixNQUFNLEVBRU4sR0FBRyxFQUVILEVBQUUsRUFHRixTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3ZELE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQU9yRCxNQUFNLE9BQU8sb0JBQW9CO0lBa0kvQixZQUNtQixLQUFxQixFQUNyQixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLE1BQWlCO1FBTGpCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFr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WSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsaUNBQWlDLEdBQUcsSUFBSSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQzs7a0hBMVJVLG9CQUFvQjtzR0FBcEIsb0JBQW9CLCtLQzlEakMsb2tLQTRJQTs0RkQ5RWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHNCQUFzQjs0T0FLQSxZQUFZO3NCQUEzQyxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0RlZmluaXRpb25Db2x1bW59IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBEb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gIERvY3VtZW50U2VhcmNoUmVxdWVzdEltcGwsXG4gIERvY3VtZW50U2VydmljZSxcbiAgU29ydFN0YXRlLFxuICBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLFxuICBEb2N1bWVudHMsXG4gIERvY3VtZW50RGVmaW5pdGlvbixcbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGVmYXVsdFRhYnN9IGZyb20gJy4uL2Rvc3NpZXItZGV0YWlsLXRhYi1lbnVtJztcbmltcG9ydCB7RG9zc2llclByb2Nlc3NTdGFydE1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwvZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJTZXJ2aWNlfSBmcm9tICcuLi9kb3NzaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdpbmF0aW9uLCBMaXN0RmllbGR9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyXG5kZWNsYXJlIHZhciAkO1xuXG5tb21lbnQubG9jYWxlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nS2V5JykgfHwgJycpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3Byb2Nlc3NTdGFydE1vZGFsJykgcHJvY2Vzc1N0YXJ0OiBEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBtb2RhbExpc3RlbmVyQWRkZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8ICcnKSxcbiAgICB0YXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLnJlc2V0UGFnaW5hdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyQ6IE9ic2VydmFibGU8QXJyYXk8UHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbj4+ID1cbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICBkb2N1bWVudERlZmluaXRpb25OYW1lXG4gICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgICAgICA6IG9mKFtdKVxuICAgICAgKSxcbiAgICAgIG1hcChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9PlxuICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5maWx0ZXIoZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLmNhbkluaXRpYWxpemVEb2N1bWVudClcbiAgICAgIClcbiAgICApO1xuXG4gIHJlYWRvbmx5IHNjaGVtYSQgPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50RGVmaW5pdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgbWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiBkb2N1bWVudERlZmluaXRpb24/LnNjaGVtYSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlZFNlYXJjaFJlcXVlc3RLZXkkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgbWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gYGxpc3Qtc2VhcmNoLSR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFzU3RvcmVkU2VhcmNoUmVxdWVzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnN0b3JlZFNlYXJjaFJlcXVlc3RLZXkkLnBpcGUoXG4gICAgbWFwKHN0b3JlZFNlYXJjaFJlcXVlc3RLZXkgPT4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmVkU2VhcmNoUmVxdWVzdEtleSkgIT09IG51bGwpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5zJDogT2JzZXJ2YWJsZTxBcnJheTxEZWZpbml0aW9uQ29sdW1uPj4gPVxuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIG1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuZG9zc2llclNlcnZpY2UuZ2V0RGVmaW5pdGlvbkNvbHVtbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIClcbiAgICApO1xuXG4gIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmNvbHVtbnMkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2NvbHVtbnNdKSA9PlxuICAgICAgY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XG4gICAgICAgIGtleTogY29sdW1uLnByb3BlcnR5TmFtZSxcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBmaWVsZExhYmVscy4ke2NvbHVtbi50cmFuc2xhdGlvbktleX1gKSxcbiAgICAgICAgc29ydGFibGU6IGNvbHVtbi5zb3J0YWJsZSxcbiAgICAgICAgLi4uKGNvbHVtbi52aWV3VHlwZSAmJiB7dmlld1R5cGU6IGNvbHVtbi52aWV3VHlwZX0pLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QQUdJTkFUSU9OOiBQYWdpbmF0aW9uID0ge1xuICAgIGNvbGxlY3Rpb25TaXplOiAwLFxuICAgIHBhZ2U6IDEsXG4gICAgc2l6ZTogMTAsXG4gICAgbWF4UGFnaW5hdGlvbkl0ZW1TaXplOiA1LFxuICAgIHNvcnQ6IHVuZGVmaW5lZCxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IHBhZ2luYXRpb25Db3B5JCA9IHRoaXMucGFnaW5hdGlvbiQucGlwZShcbiAgICBtYXAocGFnaW5hdGlvbiA9PiBwYWdpbmF0aW9uICYmIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFnaW5hdGlvbikpKVxuICApO1xuXG4gIHJlYWRvbmx5IHNlcXVlbmNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGdsb2JhbFNlYXJjaEZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNyZWF0ZWRCeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VhcmNoUmVxdWVzdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRTZWFyY2hSZXF1ZXN0PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMucGFnaW5hdGlvbiQsXG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJCxcbiAgICB0aGlzLnNlcXVlbmNlJCxcbiAgICB0aGlzLmNyZWF0ZWRCeSQsXG4gICAgdGhpcy5nbG9iYWxTZWFyY2hGaWx0ZXIkLFxuICBdKS5waXBlKFxuICAgIGZpbHRlcigoW3BhZ2luYXRpb25dKSA9PiAhIXBhZ2luYXRpb24pLFxuICAgIG1hcChcbiAgICAgIChbcGFnaW5hdGlvbiwgZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgc2VxdWVuY2UsIGNyZWF0ZWRCeSwgZ2xvYmFsU2VhcmNoRmlsdGVyXSkgPT5cbiAgICAgICAgbmV3IERvY3VtZW50U2VhcmNoUmVxdWVzdEltcGwoXG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICBwYWdpbmF0aW9uLnBhZ2UgLSAxLFxuICAgICAgICAgIHBhZ2luYXRpb24uc2l6ZSxcbiAgICAgICAgICBzZXF1ZW5jZSxcbiAgICAgICAgICBjcmVhdGVkQnksXG4gICAgICAgICAgZ2xvYmFsU2VhcmNoRmlsdGVyLFxuICAgICAgICAgIHBhZ2luYXRpb24uc29ydFxuICAgICAgICApXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRzUmVxdWVzdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRzPiA9IHRoaXMuZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2KSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VycikpLFxuICAgIHRhcChyZXF1ZXN0ID0+IHtcbiAgICAgIHRoaXMuc3RvcmVkU2VhcmNoUmVxdWVzdEtleSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc3RvcmVkU2VhcmNoUmVxdWVzdEtleSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBzdG9yZSByZXF1ZXN0IGluIGxvY2FsIHN0b3JhZ2U6ICR7SlNPTi5zdHJpbmdpZnkocmVxdWVzdCl9YCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JlZFNlYXJjaFJlcXVlc3RLZXksIEpTT04uc3RyaW5naWZ5KHJlcXVlc3QpKTtcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHN3aXRjaE1hcChkb2N1bWVudFNlYXJjaFJlcXVlc3QgPT4gdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRzKGRvY3VtZW50U2VhcmNoUmVxdWVzdCkpLFxuICAgIHRhcChkb2N1bWVudHMgPT4ge1xuICAgICAgdGhpcy5zZXRDb2xsZWN0aW9uU2l6ZShkb2N1bWVudHMpO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnRJdGVtcyQgPSB0aGlzLmRvY3VtZW50c1JlcXVlc3QkLnBpcGUoXG4gICAgbWFwKGRvY3VtZW50cyA9PlxuICAgICAgZG9jdW1lbnRzLmNvbnRlbnQubWFwKGRvY3VtZW50ID0+IHtcbiAgICAgICAgY29uc3Qge2NvbnRlbnQsIC4uLm90aGVyc30gPSBkb2N1bWVudDtcbiAgICAgICAgcmV0dXJuIHsuLi5jb250ZW50LCAuLi5vdGhlcnN9O1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJTZXJ2aWNlOiBEb3NzaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTkdYTG9nZ2VyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsTGlzdGVuZXJBZGRlZCA9IGZhbHNlO1xuICB9XG5cbiAgZ2xvYmFsU2VhcmNoRmlsdGVyQ2hhbmdlKHNlYXJjaEZpbHRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5nbG9iYWxTZWFyY2hGaWx0ZXIkLm5leHQoc2VhcmNoRmlsdGVyKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2UoMSk7XG4gIH1cblxuICBzZXF1ZW5jZUNoYW5nZShzZXF1ZW5jZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXF1ZW5jZSQubmV4dChOdW1iZXIoc2VxdWVuY2UpKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2UoMSk7XG4gIH1cblxuICBwYWdlQ2hhbmdlKG5ld1BhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFnaW5hdGlvbiA9PiB7XG4gICAgICBpZiAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnBhZ2UgIT09IG5ld1BhZ2UpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFBhZ2UgY2hhbmdlOiAke25ld1BhZ2V9YCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgcGFnZTogbmV3UGFnZX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcGFnZVNpemVDaGFuZ2UobmV3UGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFnaW5hdGlvbiA9PiB7XG4gICAgICBpZiAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnNpemUgIT09IG5ld1BhZ2VTaXplKSB7XG4gICAgICAgIGNvbnN0IGFtb3VudE9mQXZhaWxhYmxlUGFnZXMgPSBNYXRoLmNlaWwocGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZSAvIG5ld1BhZ2VTaXplKTtcbiAgICAgICAgY29uc3QgbmV3UGFnZSA9XG4gICAgICAgICAgYW1vdW50T2ZBdmFpbGFibGVQYWdlcyA8IHBhZ2luYXRpb24ucGFnZSA/IGFtb3VudE9mQXZhaWxhYmxlUGFnZXMgOiBwYWdpbmF0aW9uLnBhZ2U7XG5cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFBhZ2Ugc2l6ZSBjaGFuZ2UuIE5ldyBQYWdlOiAke25ld1BhZ2V9IE5ldyBwYWdlIHNpemU6ICR7bmV3UGFnZVNpemV9YCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgc2l6ZTogbmV3UGFnZVNpemUsIHBhZ2U6IG5ld1BhZ2V9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNvcnRDaGFuZ2VkKG5ld1NvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYWdpbmF0aW9uID0+IHtcbiAgICAgIGlmIChwYWdpbmF0aW9uICYmIEpTT04uc3RyaW5naWZ5KHBhZ2luYXRpb24uc29ydCkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1NvcnRTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFNvcnQgc3RhdGUgY2hhbmdlOiAke0pTT04uc3RyaW5naWZ5KG5ld1NvcnRTdGF0ZSl9YCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgc29ydDogbmV3U29ydFN0YXRlfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByb3dDbGljayhkb2N1bWVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgYC9kb3NzaWVycy8ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9L2RvY3VtZW50LyR7ZG9jdW1lbnQuaWR9LyR7RGVmYXVsdFRhYnMuc3VtbWFyeX1gLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGFydERvc3NpZXIoKTogdm9pZCB7XG4gICAgdGhpcy5hc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMkXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT4ge1xuICAgICAgICBpZiAoYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAkKCcjc3RhcnRQcm9jZXNzJykubW9kYWwoJ3Nob3cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9IGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1swXTtcbiAgICAgICAgICB0aGlzLnNob3dTdGFydFByb2Nlc3NNb2RhbCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsID0gJCgnI3N0YXJ0UHJvY2VzcycpO1xuICAgIGlmICghdGhpcy5tb2RhbExpc3RlbmVyQWRkZWQpIHtcbiAgICAgIG1vZGFsLm9uKCdoaWRkZW4uYnMubW9kYWwnLCB0aGlzLnNob3dTdGFydFByb2Nlc3NNb2RhbC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMubW9kYWxMaXN0ZW5lckFkZGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uO1xuICAgIG1vZGFsLm1vZGFsKCdoaWRlJyk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0UGFnaW5hdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKTogdm9pZCB7XG4gICAgdGhpcy5zZXR0aW5nUGFnaW5hdGlvbkZvckRvY05hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSA9PiB7XG4gICAgICBpZiAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSAhPT0gc2V0dGluZ1BhZ2luYXRpb25Gb3JEb2NOYW1lKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnY2xlYXIgcGFnaW5hdGlvbicpO1xuICAgICAgICB0aGlzLnNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSQubmV4dChkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWdpbmF0aW9uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuaGFzU3RvcmVkU2VhcmNoUmVxdWVzdCQsIHRoaXMuc3RvcmVkU2VhcmNoUmVxdWVzdEtleSQsIHRoaXMuY29sdW1ucyRdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtoYXNTdG9yZWRTZWFyY2hSZXF1ZXN0LCBzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5LCBjb2x1bW5zXSkgPT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0UGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHRoaXMuZ2V0RGVmYXVsdFBhZ2luYXRpb24oY29sdW1ucyk7XG4gICAgICAgIGNvbnN0IHN0b3JlZFBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB0aGlzLmdldFN0b3JlZFBhZ2luYXRpb24oXG4gICAgICAgICAgaGFzU3RvcmVkU2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICBzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYFNldCBwYWdpbmF0aW9uOiAke0pTT04uc3RyaW5naWZ5KHN0b3JlZFBhZ2luYXRpb24gfHwgZGVmYXVsdFBhZ2luYXRpb24pfWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHN0b3JlZFBhZ2luYXRpb24gfHwgZGVmYXVsdFBhZ2luYXRpb24pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRQYWdpbmF0aW9uKGNvbHVtbnM6IEFycmF5PERlZmluaXRpb25Db2x1bW4+KTogUGFnaW5hdGlvbiB7XG4gICAgY29uc3QgZGVmYXVsdFNvcnRTdGF0ZSA9IHRoaXMuZG9zc2llclNlcnZpY2UuZ2V0SW5pdGlhbFNvcnRTdGF0ZShjb2x1bW5zKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLkRFRkFVTFRfUEFHSU5BVElPTixcbiAgICAgIHNvcnQ6IGRlZmF1bHRTb3J0U3RhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RvcmVkUGFnaW5hdGlvbihcbiAgICBoYXNTdG9yZWRTZWFyY2hSZXF1ZXN0OiBib29sZWFuLFxuICAgIHN0b3JlZFNlYXJjaFJlcXVlc3RLZXk6IHN0cmluZ1xuICApOiBQYWdpbmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdG9yZWRTZWFyY2hSZXF1ZXN0ID1cbiAgICAgIGhhc1N0b3JlZFNlYXJjaFJlcXVlc3QgJiYgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5KSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgc3RvcmVkU2VhcmNoUmVxdWVzdCAmJiB7XG4gICAgICAgIC4uLnRoaXMuREVGQVVMVF9QQUdJTkFUSU9OLFxuICAgICAgICBzb3J0OiBzdG9yZWRTZWFyY2hSZXF1ZXN0LnNvcnQsXG4gICAgICAgIHBhZ2U6IHN0b3JlZFNlYXJjaFJlcXVlc3QucGFnZSArIDEsXG4gICAgICAgIHNpemU6IHN0b3JlZFNlYXJjaFJlcXVlc3Quc2l6ZSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb2xsZWN0aW9uU2l6ZShkb2N1bWVudHM6IERvY3VtZW50cyk6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFnaW5hdGlvbiA9PiB7XG4gICAgICBpZiAocGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZSAhPT0gZG9jdW1lbnRzLnRvdGFsRWxlbWVudHMpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi5wYWdpbmF0aW9uLCBjb2xsZWN0aW9uU2l6ZTogZG9jdW1lbnRzLnRvdGFsRWxlbWVudHN9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1N0YXJ0UHJvY2Vzc01vZGFsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5wcm9jZXNzU3RhcnQub3Blbk1vZGFsKHRoaXMuc2VsZWN0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJcIj48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cIm1haW4tY29udGVudCBwdC0wXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHB4LTAgbWItNVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyQgfCBhc3luYyBhcyBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbXQtbTNweCBtYi0zXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3BhY2UgYnRuLXByaW1hcnkgbXItMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic3RhcnREb3NzaWVyKClcIlxuICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMCA/ICdObyBhY3Rpb24nIDogbnVsbFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5sZW5ndGggPT09IDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLXBsdXMgbXItMVwiPjwvaT5cbiAgICAgICAgICAgIHt7ICdTdGFydCBEb3NzaWVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJtb2RhbCBmYWRlXCJcbiAgICAgICAgICBpZD1cInN0YXJ0UHJvY2Vzc1wiXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic3RhcnRQcm9jZXNzTGFiZWxcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZFwiIHJvbGU9XCJkb2N1bWVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzdGFydFByb2Nlc3NMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ2Rhc2hib2FyZC5zdGFydFByb2Nlc3MudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gb2YgYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24ucHJvY2Vzc05hbWUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdjdGEuY2xvc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8dmFsdGltby13aWRnZXQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3ZhbHRpbW8td2lkZ2V0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHZhbHRpbW8tZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsICNwcm9jZXNzU3RhcnRNb2RhbD48L3ZhbHRpbW8tZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2luYXRpb25Db3B5JCB8IGFzeW5jIGFzIHBhZ2luYXRpb25cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGRzJCB8IGFzeW5jIGFzIGZpZWxkc1wiPlxuICAgICAgPHZhbHRpbW8tbGlzdFxuICAgICAgICAqbmdJZj1cImRvY3VtZW50SXRlbXMkIHwgYXN5bmMgYXMgZG9jdW1lbnRJdGVtc1wiXG4gICAgICAgIFtpdGVtc109XCJkb2N1bWVudEl0ZW1zXCJcbiAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICAocm93Q2xpY2tlZCk9XCJyb3dDbGljaygkZXZlbnQpXCJcbiAgICAgICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgICAgIFt2aWV3TW9kZV09XCJ0cnVlXCJcbiAgICAgICAgW2hlYWRlcl09XCJ0cnVlXCJcbiAgICAgICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJkb3NzaWVyTGlzdFwiXG4gICAgICAgIChwYWdpbmF0aW9uQ2xpY2tlZCk9XCJwYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAocGFnaW5hdGlvblNldCk9XCJwYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2luaXRpYWxTb3J0U3RhdGVdPVwicGFnaW5hdGlvbi5zb3J0XCJcbiAgICAgICAgKHNvcnRDaGFuZ2VkKT1cInNvcnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGhlYWRlcj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJsaXN0LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAge3sgKHNjaGVtYSQgfCBhc3luYyk/LnRpdGxlIH19XG4gICAgICAgICAgICA8c3VwIGNsYXNzPVwibWwtMSBiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXByaW1hcnlcIj57eyBkb2N1bWVudEl0ZW1zPy5sZW5ndGggfHwgMCB9fTwvc3VwPlxuICAgICAgICAgIDwvaDM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC92YWx0aW1vLWxpc3Q+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaWRlYmFyPlxuICA8dmFsdGltby1maWx0ZXItc2lkZWJhcj5cbiAgICA8aDQgY2xhc3M9XCJ0aXRsZVwiPlNlYXJjaDwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZG9zc2llci5mb3Jtcy5nbG9iYWxTZWFyY2hQbGFjZUhvbGRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbbmdNb2RlbF09XCJnbG9iYWxTZWFyY2hGaWx0ZXIkIHwgYXN5bmNcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJnbG9iYWxTZWFyY2hGaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdkb3NzaWVyLmZvcm1zLnJlZmVyZW5jZU51bWJlclBsYWNlSG9sZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFtuZ01vZGVsXT1cInNlcXVlbmNlJCB8IGFzeW5jXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VxdWVuY2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L3ZhbHRpbW8tZmlsdGVyLXNpZGViYXI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -397,7 +397,7 @@ class DossierListComponent {
397
397
  ]).pipe(filter(([pagination]) => !!pagination), map(([pagination, documentDefinitionName, sequence, createdBy, globalSearchFilter]) => new DocumentSearchRequestImpl(documentDefinitionName, pagination.page - 1, pagination.size, sequence, createdBy, globalSearchFilter, pagination.sort)));
398
398
  this.documentsRequest$ = this.documentSearchRequest$.pipe(distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)), tap(request => {
399
399
  this.storedSearchRequestKey$.pipe(take(1)).subscribe(storedSearchRequestKey => {
400
- this.logger.log(`store request in local storage: ${JSON.stringify(request)}`);
400
+ this.logger.debug(`store request in local storage: ${JSON.stringify(request)}`);
401
401
  localStorage.setItem(storedSearchRequestKey, JSON.stringify(request));
402
402
  });
403
403
  }), switchMap(documentSearchRequest => this.documentService.getDocuments(documentSearchRequest)), tap(documents => {
@@ -422,7 +422,7 @@ class DossierListComponent {
422
422
  pageChange(newPage) {
423
423
  this.pagination$.pipe(take(1)).subscribe(pagination => {
424
424
  if (pagination && pagination.page !== newPage) {
425
- this.logger.log(`Page change: ${newPage}`);
425
+ this.logger.debug(`Page change: ${newPage}`);
426
426
  this.pagination$.next(Object.assign(Object.assign({}, pagination), { page: newPage }));
427
427
  }
428
428
  });
@@ -432,7 +432,7 @@ class DossierListComponent {
432
432
  if (pagination && pagination.size !== newPageSize) {
433
433
  const amountOfAvailablePages = Math.ceil(pagination.collectionSize / newPageSize);
434
434
  const newPage = amountOfAvailablePages < pagination.page ? amountOfAvailablePages : pagination.page;
435
- this.logger.log(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);
435
+ this.logger.debug(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);
436
436
  this.pagination$.next(Object.assign(Object.assign({}, pagination), { size: newPageSize, page: newPage }));
437
437
  }
438
438
  });
@@ -440,7 +440,7 @@ class DossierListComponent {
440
440
  sortChanged(newSortState) {
441
441
  this.pagination$.pipe(take(1)).subscribe(pagination => {
442
442
  if (pagination && JSON.stringify(pagination.sort) !== JSON.stringify(newSortState)) {
443
- this.logger.log(`Sort state change: ${JSON.stringify(newSortState)}`);
443
+ this.logger.debug(`Sort state change: ${JSON.stringify(newSortState)}`);
444
444
  this.pagination$.next(Object.assign(Object.assign({}, pagination), { sort: newSortState }));
445
445
  }
446
446
  });
@@ -478,7 +478,7 @@ class DossierListComponent {
478
478
  this.settingPaginationForDocName$.pipe(take(1)).subscribe(settingPaginationForDocName => {
479
479
  if (documentDefinitionName !== settingPaginationForDocName) {
480
480
  this.pagination$.next(undefined);
481
- this.logger.log('clear pagination');
481
+ this.logger.debug('clear pagination');
482
482
  this.settingPaginationForDocName$.next(documentDefinitionName);
483
483
  this.setPagination(documentDefinitionName);
484
484
  }
@@ -490,7 +490,7 @@ class DossierListComponent {
490
490
  .subscribe(([hasStoredSearchRequest, storedSearchRequestKey, columns]) => {
491
491
  const defaultPagination = this.getDefaultPagination(columns);
492
492
  const storedPagination = this.getStoredPagination(hasStoredSearchRequest, storedSearchRequestKey);
493
- this.logger.log(`Set pagination: ${JSON.stringify(storedPagination || defaultPagination)}`);
493
+ this.logger.debug(`Set pagination: ${JSON.stringify(storedPagination || defaultPagination)}`);
494
494
  this.pagination$.next(storedPagination || defaultPagination);
495
495
  });
496
496
  }