bx-rest 0.26.1 → 1.0.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.
@@ -1,4 +1,4 @@
1
- import { throwError, forkJoin, from } from 'rxjs';
1
+ import { throwError, forkJoin, from, defer } from 'rxjs';
2
2
  import clone from 'just-clone';
3
3
  import { HttpServices } from './http';
4
4
  import flatten from 'just-flatten-it';
@@ -68,37 +68,44 @@ export class HttpBXServices extends HttpServices {
68
68
  return this.httpGet(this.getNameMethod(name), params);
69
69
  }
70
70
  httpPost(url, params = {}) {
71
- const paramsClone = clone(params);
72
- const key = this.session.getKeyAuth();
73
- const auth = this.session.getAuthParams();
74
- const checkIsOn = this.session.getCheckAuthParamsIsOn();
75
- if (checkIsOn) {
76
- if (!auth) {
77
- return throwError(() => this.session.getAuthError('post'));
78
- }
79
- if (key !== 'OAuth2') {
80
- paramsClone[key] = auth;
81
- }
82
- }
83
- return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
84
- if (!baseUrl) {
85
- return throwError(() => this.session.getBaseUrlError('post'));
86
- }
87
- const fullUrl = prepareBaseAddress(baseUrl) + url;
88
- if (key === 'sessid') {
89
- // Преобразуем параметры в формат x-www-form-urlencoded
90
- const bodyString = this.serializeBitrixParams(paramsClone);
91
- return from(this.axiosInstance.post(fullUrl, bodyString, {
92
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
93
- }).then((response) => response.data));
71
+ // defer() откладывает всё содержимое (в том числе чтение BXRestSettings
72
+ // через this.session.*) до реальной подписки — иначе даже с "живым"
73
+ // геттером в SessionKeyServices настройки читались бы в момент вызова
74
+ // .res(), а не в момент subscribe()/firstValueFrom(), что и обещано
75
+ // в README как поведение "ленивого" REST-вызова.
76
+ return defer(() => {
77
+ const paramsClone = clone(params);
78
+ const key = this.session.getKeyAuth();
79
+ const auth = this.session.getAuthParams();
80
+ const checkIsOn = this.session.getCheckAuthParamsIsOn();
81
+ if (checkIsOn) {
82
+ if (!auth) {
83
+ return throwError(() => this.session.getAuthError('post'));
84
+ }
85
+ if (key !== 'OAuth2') {
86
+ paramsClone[key] = auth;
87
+ }
94
88
  }
95
- return from(this.axiosInstance.post(fullUrl, paramsClone, {
96
- withCredentials: key === 'OAuth2',
97
- headers: {
98
- 'Content-Type': 'application/json',
89
+ return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
90
+ if (!baseUrl) {
91
+ return throwError(() => this.session.getBaseUrlError('post'));
99
92
  }
100
- }).then((response) => response.data));
101
- }));
93
+ const fullUrl = prepareBaseAddress(baseUrl) + url;
94
+ if (key === 'sessid') {
95
+ // Преобразуем параметры в формат x-www-form-urlencoded
96
+ const bodyString = this.serializeBitrixParams(paramsClone);
97
+ return from(this.axiosInstance.post(fullUrl, bodyString, {
98
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
99
+ }).then((response) => response.data));
100
+ }
101
+ return from(this.axiosInstance.post(fullUrl, paramsClone, {
102
+ withCredentials: this.session.getWithCredentials(),
103
+ headers: {
104
+ 'Content-Type': 'application/json',
105
+ }
106
+ }).then((response) => response.data));
107
+ }));
108
+ });
102
109
  }
103
110
  serializeBitrixParams(params) {
104
111
  return stringifyBitrixParams(params);
@@ -107,4 +114,4 @@ export class HttpBXServices extends HttpServices {
107
114
  return arr.join('.');
108
115
  }
109
116
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzdELE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBS3JDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFBO0FBQ3JDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFFdEcsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUFZO0lBRTlDOzs7O09BSUc7SUFDSCxNQUFNLENBQU8sS0FBeUQ7UUFFcEUsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBLENBQUMsbUJBQW1CO1FBQ25DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDJDQUEyQztRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENB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S0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsdURBQXVEO2dCQUN2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQzFELE9BQU8sSUFBSSxDQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUU7b0JBQzlDLE9BQU8sRUFBRSxFQUFDLGNBQWMsRUFBRSxtQ0FBbUMsRUFBQztpQkFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUNyQyxDQUFBO1lBQ0gsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFJLE9BQU8sRUFBRSxXQUFXLEVBQzdDO2dCQUNFLGVBQWUsRUFBRSxHQUFHLEtBQUssUUFBUTtnQkFDakMsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxrQkFBa0I7aUJBQ25DO2FBQ0YsQ0FDRixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUNwQyxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFlO1FBQ25DLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFhO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmb3JrSm9pbiwgZnJvbSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZXMgfSBmcm9tICcuL2h0dHAnXHJcbmltcG9ydCB7XHJcbiAgaUJhdGNoUmVxdWVzdEFuc3dlciwgaUJhdGNoUmVxdWVzdFBhcmFtLCBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnIsIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAsIGtleUJhdGNoLFxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2JhdGNoL2JhdGNoUmVxdWVzdFBhcmFtJ1xyXG5pbXBvcnQgeyBpQlhSZXN0QW5zd2VyIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9hbnN3ZXInXHJcbmltcG9ydCBmbGF0dGVuIGZyb20gJ2p1c3QtZmxhdHRlbi1pdCdcclxuaW1wb3J0IHsgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21hcFJlc3VsdCdcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IHByZXBhcmVCYXNlQWRkcmVzcyB9IGZyb20gJy4uL2Jhc2UnXHJcbmltcG9ydCB7IHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyBhcyBzdHJpbmdpZnlCaXRyaXhQYXJhbXMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvc2VyaWFsaXplQml0cml4UGFyYW1zJ1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBCWFNlcnZpY2VzIGV4dGVuZHMgSHR0cFNlcnZpY2VzIHtcclxuXHJcbiAgLyoqXHJcbiAgICog0K3RgtC+INC/0LjQt9C00LXRhiDQsCDQvdC1INC80LXRgtC+0LRcclxuICAgKiBUT0RPOiDQo9C00LDQu9C40YLRjCDQtNCw0L3QvdGL0Lkg0LzQtdGC0L7QtCDQv9C+0YHQu9C1INGA0LXQsNC70LjQt9Cw0YbQuNC4INC10LPQviDQsiDRgNCw0LfQtNC10LvQtSBOYXZ2eVxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGJyYW5jaDxULCBBPihwYXJhbTogaUJhdGNoUmVxdWVzdFBhcmFtQXJyPFQ+IHwgaUJhdGNoUmVxdWVzdFBhcmFtPFQ+W10pXHJcbiAgICA6IE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdIHwgdW5kZWZpbmVkPiB7XHJcbiAgICBsZXQgcHJlcGFyZVBhcmFtID0gT2JqZWN0LmVudHJpZXM8c3RyaW5nPih0aGlzLnByZXBhcmVCYXRjaDxUPihwYXJhbSkpXHJcbiAgICBjb25zdCBzaXplID0gNTAgLy8g0LHQvtC70YzRiNC1INC90LUg0L7RgtC00LDRgdGCXHJcbiAgICBsZXQgc3ViYXJyYXkgPSBbXSAvL9C80LDRgdGB0LjQsiDQsiDQutC+0YLQvtGA0YvQuSDQsdGD0LTQtdGCINCy0YvQstC10LTQtdC9INGA0LXQt9GD0LvRjNGC0LDRgi5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5jZWlsKHByZXBhcmVQYXJhbS5sZW5ndGggLyBzaXplKTsgaSsrKSB7XHJcbiAgICAgIHN1YmFycmF5W2ldID0gcHJlcGFyZVBhcmFtLnNsaWNlKChpICogc2l6ZSksIChpICogc2l6ZSkgKyBzaXplKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JrSm9pbihcclxuICAgICAgc3ViYXJyYXkubWFwKGkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBQb3N0KCdiYXRjaC5qc29uJywge1xyXG4gICAgICAgICAgaGFsdDogMCxcclxuICAgICAgICAgIGNtZDogT2JqZWN0LmFzc2lnbih7fSwgLi4uaS5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7W3hbMF1dOiB4WzFdfVxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICkgYXMgT2JzZXJ2YWJsZTxpQmF0Y2hSZXF1ZXN0QW5zd2VyPEE+W10+XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlQmF0Y2g8VD4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKTogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCB7XHJcbiAgICBsZXQgcmVzOiBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwID0gT2JqZWN0LmtleXMocGFyYW0pLnJlZHVjZShcclxuICAgICAgKG9iaiwga2V5KSA9PiB7XHJcbiAgICAgICAgb2JqW2tleV0gPSAnJ1xyXG4gICAgICAgIHJldHVybiBvYmpcclxuICAgICAgfSxcclxuICAgICAge30gYXMgaUJhdGNoUmVxdWVzdFBhcmFtSHR0cFxyXG4gICAgKVxyXG4gICAgZm9yIChsZXQga2V5IGluIHBhcmFtKSB7XHJcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyAmJiBwYXJhbVtrZXldLnBhcmFtKSB7XHJcbiAgICAgICAgcmVzW2tleV0gPSBwYXJhbVtrZXldLm5hbWUgKyAnPycgKyBzdHJpbmdpZnlCaXRyaXhQYXJhbXMocGFyYW1ba2V5XS5wYXJhbSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc1xyXG4gIH1cclxuXHJcbiAgbWFwQnJhbmNoUmVzdWx0PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihbXSwgLi4ucmVzLm1hcChpID0+XHJcbiAgICAgIChpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaSkgJiYgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkucmVzdWx0KSkgPyBpLnJlc3VsdC5yZXN1bHQgOiB1bmRlZmluZWQpXHJcbiAgICApIGFzIFJlY29yZDxrZXlCYXRjaCwgVD5cclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdFdpdGhvdXRLZXk8VD4ocmVzOiBpQmF0Y2hSZXF1ZXN0QW5zd2VyPFQ+W10pOiBUW10ge1xyXG4gICAgcmV0dXJuIGZsYXR0ZW48VD4oT2JqZWN0LmFzc2lnbihbXSwgLi4ucmVzLm1hcChpID0+XHJcbiAgICAgIChpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaSkgJiYgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkucmVzdWx0KSlcclxuICAgICAgICA/IGkucmVzdWx0LnJlc3VsdFxyXG4gICAgICAgIDogdW5kZWZpbmVkKSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCe0YHQvdC+0LLQvdC+0Lkg0LzQtdGC0L7QtCDQtNC70Y8g0LfQsNC/0YDQvtGB0L7QslxyXG4gICAqXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gcGFyYW1zXHJcbiAgICovXHJcbiAgcG9zdDxUPihuYW1lOiBzdHJpbmdbXSwgcGFyYW1zOiBhbnkgPSB7fSwgcmVzdEFwaSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmdldE5hbWVNZXRob2QobmFtZSlcclxuICAgIHJldHVybiB0aGlzLmh0dHBQb3N0PGlCWFJlc3RBbnN3ZXI8VD4+KHJlc3RBcGkgPyBgYXBpLyR7bWV0aG9kfWAgOiBtZXRob2QsIHBhcmFtcylcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0YLQvtGA0L7RgdGC0LXQv9C10L3QvdGL0Lkg0LzQtdGC0L7QtCDQtNC70Y8g0LfQsNC/0YDQvtGB0L7Qsi4g0J/QviDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC70YPRh9GI0LUg0L3QtSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YxcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqL1xyXG4gIGdldDxUPihuYW1lOiBzdHJpbmdbXSwgcGFyYW1zOiBhbnkgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cEdldDxpQlhSZXN0QW5zd2VyPFQ+Pih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcylcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIGh0dHBQb3N0PFQ+KHVybDogc3RyaW5nLCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBwYXJhbXNDbG9uZSA9IGNsb25lKHBhcmFtcylcclxuICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXHJcbiAgICBjb25zdCBjaGVja0lzT24gPSB0aGlzLnNlc3Npb24uZ2V0Q2hlY2tBdXRoUGFyYW1zSXNPbigpXHJcblxyXG4gICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICBpZiAoIWF1dGgpIHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiB0aGlzLnNlc3Npb24uZ2V0QXV0aEVycm9yKCdwb3N0JykpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChrZXkgIT09ICdPQXV0aDInKSB7XHJcbiAgICAgICAgcGFyYW1zQ2xvbmVba2V5XSA9IGF1dGhcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgIGlmICghYmFzZVVybCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmxFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxyXG5cclxuICAgICAgICBpZiAoa2V5ID09PSAnc2Vzc2lkJykge1xyXG4gICAgICAgICAgLy8g0J/RgNC10L7QsdGA0LDQt9GD0LXQvCDQv9Cw0YDQsNC80LXRgtGA0Ysg0LIg0YTQvtGA0LzQsNGCIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4gICAgICAgICAgY29uc3QgYm9keVN0cmluZyA9IHRoaXMuc2VyaWFsaXplQml0cml4UGFyYW1zKHBhcmFtc0Nsb25lKVxyXG4gICAgICAgICAgcmV0dXJuIGZyb20oXHJcbiAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIGJvZHlTdHJpbmcsIHtcclxuICAgICAgICAgICAgICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSxcclxuICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZnJvbShcclxuICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIHBhcmFtc0Nsb25lLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBrZXkgPT09ICdPQXV0aDInLFxyXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXM6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN0cmluZ2lmeUJpdHJpeFBhcmFtcyhwYXJhbXMpXHJcbiAgfVxyXG5cclxuICBnZXROYW1lTWV0aG9kKGFycjogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiBhcnIuam9pbignLicpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE1BQU0sT0FBTyxjQUFlLFNBQVEsWUFBWTtJQUU5Qzs7OztPQUlHO0lBQ0gsTUFBTSxDQUFPLEtBQXlEO1FBRXBFLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQVMsSUFBSSxDQUFDLFlBQVksQ0FBSSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ3RFLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQSxDQUFDLG1CQUFtQjtRQUNuQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUEsQ0FBQywyQ0FBMkM7UUFDN0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9ELFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENB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IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgZm9ya0pvaW4sIGZyb20sIGRlZmVyIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IGNsb25lIGZyb20gJ2p1c3QtY2xvbmUnXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlcyB9IGZyb20gJy4vaHR0cCdcclxuaW1wb3J0IHtcclxuICBpQmF0Y2hSZXF1ZXN0QW5zd2VyLCBpQmF0Y2hSZXF1ZXN0UGFyYW0sIGlCYXRjaFJlcXVlc3RQYXJhbUFyciwgaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCwga2V5QmF0Y2gsXHJcbn0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmF0Y2gvYmF0Y2hSZXF1ZXN0UGFyYW0nXHJcbmltcG9ydCB7IGlCWFJlc3RBbnN3ZXIgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXNlL2Fuc3dlcidcclxuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnanVzdC1mbGF0dGVuLWl0J1xyXG5pbXBvcnQgeyBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvbWFwUmVzdWx0J1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgcHJlcGFyZUJhc2VBZGRyZXNzIH0gZnJvbSAnLi4vYmFzZSdcclxuaW1wb3J0IHsgc2VyaWFsaXplQml0cml4UGFyYW1zIGFzIHN0cmluZ2lmeUJpdHJpeFBhcmFtcyB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9zZXJpYWxpemVCaXRyaXhQYXJhbXMnXHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cEJYU2VydmljZXMgZXh0ZW5kcyBIdHRwU2VydmljZXMge1xyXG5cclxuICAvKipcclxuICAgKiDQrdGC0L4g0L/QuNC30LTQtdGGINCwINC90LUg0LzQtdGC0L7QtFxyXG4gICAqIFRPRE86INCj0LTQsNC70LjRgtGMINC00LDQvdC90YvQuSDQvNC10YLQvtC0INC/0L7RgdC70LUg0YDQtdCw0LvQuNC30LDRhtC40Lgg0LXQs9C+INCyINGA0LDQt9C00LXQu9C1IE5hdnZ5XHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgYnJhbmNoPFQsIEE+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSlcclxuICAgIDogT2JzZXJ2YWJsZTxpQmF0Y2hSZXF1ZXN0QW5zd2VyPEE+W10gfCB1bmRlZmluZWQ+IHtcclxuICAgIGxldCBwcmVwYXJlUGFyYW0gPSBPYmplY3QuZW50cmllczxzdHJpbmc+KHRoaXMucHJlcGFyZUJhdGNoPFQ+KHBhcmFtKSlcclxuICAgIGNvbnN0IHNpemUgPSA1MCAvLyDQsdC+0LvRjNGI0LUg0L3QtSDQvtGC0LTQsNGB0YJcclxuICAgIGxldCBzdWJhcnJheSA9IFtdIC8v0LzQsNGB0YHQuNCyINCyINC60L7RgtC+0YDRi9C5INCx0YPQtNC10YIg0LLRi9Cy0LXQtNC10L0g0YDQtdC30YPQu9GM0YLQsNGCLlxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLmNlaWwocHJlcGFyZVBhcmFtLmxlbmd0aCAvIHNpemUpOyBpKyspIHtcclxuICAgICAgc3ViYXJyYXlbaV0gPSBwcmVwYXJlUGFyYW0uc2xpY2UoKGkgKiBzaXplKSwgKGkgKiBzaXplKSArIHNpemUpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcmtKb2luKFxyXG4gICAgICBzdWJhcnJheS5tYXAoaSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFBvc3QoJ2JhdGNoLmpzb24nLCB7XHJcbiAgICAgICAgICBoYWx0OiAwLFxyXG4gICAgICAgICAgY21kOiBPYmplY3QuYXNzaWduKHt9LCAuLi5pLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtbeFswXV06IHhbMV19XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKSBhcyBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXT5cclxuICB9XHJcblxyXG4gIHByZXBhcmVCYXRjaDxUPihwYXJhbTogaUJhdGNoUmVxdWVzdFBhcmFtQXJyPFQ+IHwgaUJhdGNoUmVxdWVzdFBhcmFtPFQ+W10pOiBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwIHtcclxuICAgIGxldCByZXM6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAgPSBPYmplY3Qua2V5cyhwYXJhbSkucmVkdWNlKFxyXG4gICAgICAob2JqLCBrZXkpID0+IHtcclxuICAgICAgICBvYmpba2V5XSA9ICcnXHJcbiAgICAgICAgcmV0dXJuIG9ialxyXG4gICAgICB9LFxyXG4gICAgICB7fSBhcyBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwXHJcbiAgICApXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gcGFyYW0pIHtcclxuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBrZXkgPT09ICdudW1iZXInICYmIHBhcmFtW2tleV0ucGFyYW0pIHtcclxuICAgICAgICByZXNba2V5XSA9IHBhcmFtW2tleV0ubmFtZSArICc/JyArIHN0cmluZ2lmeUJpdHJpeFBhcmFtcyhwYXJhbVtrZXldLnBhcmFtKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzXHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHQ8VD4ocmVzOiBpQmF0Y2hSZXF1ZXN0QW5zd2VyPFQ+W10pIHtcclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFtdLCAuLi5yZXMubWFwKGkgPT5cclxuICAgICAgKGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpKSAmJiBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaS5yZXN1bHQpKSA/IGkucmVzdWx0LnJlc3VsdCA6IHVuZGVmaW5lZClcclxuICAgICkgYXMgUmVjb3JkPGtleUJhdGNoLCBUPlxyXG4gIH1cclxuXHJcbiAgbWFwQnJhbmNoUmVzdWx0V2l0aG91dEtleTxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSk6IFRbXSB7XHJcbiAgICByZXR1cm4gZmxhdHRlbjxUPihPYmplY3QuYXNzaWduKFtdLCAuLi5yZXMubWFwKGkgPT5cclxuICAgICAgKGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpKSAmJiBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaS5yZXN1bHQpKVxyXG4gICAgICAgID8gaS5yZXN1bHQucmVzdWx0XHJcbiAgICAgICAgOiB1bmRlZmluZWQpKVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0J7RgdC90L7QstC90L7QuSDQvNC10YLQvtC0INC00LvRjyDQt9Cw0L/RgNC+0YHQvtCyXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKi9cclxuICBwb3N0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCByZXN0QXBpID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFBvc3Q8aUJYUmVzdEFuc3dlcjxUPj4ocmVzdEFwaSA/IGBhcGkvJHttZXRob2R9YCA6IG1ldGhvZCwgcGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLRgtC+0YDQvtGB0YLQtdC/0LXQvdC90YvQuSDQvNC10YLQvtC0INC00LvRjyDQt9Cw0L/RgNC+0YHQvtCyLiDQn9C+INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0LvRg9GH0YjQtSDQvdC1INC40YHQv9C+0LvRjNC30L7QstCw0YLRjFxyXG4gICAqXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gcGFyYW1zXHJcbiAgICovXHJcbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwR2V0PGlCWFJlc3RBbnN3ZXI8VD4+KHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKSwgcGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgaHR0cFBvc3Q8VD4odXJsOiBzdHJpbmcsIHBhcmFtczogYW55ID0ge30pOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcclxuICAgIC8vIGRlZmVyKCkg0L7RgtC60LvQsNC00YvQstCw0LXRgiDQstGB0ZEg0YHQvtC00LXRgNC20LjQvNC+0LUgKNCyINGC0L7QvCDRh9C40YHQu9C1INGH0YLQtdC90LjQtSBCWFJlc3RTZXR0aW5nc1xyXG4gICAgLy8g0YfQtdGA0LXQtyB0aGlzLnNlc3Npb24uKikg0LTQviDRgNC10LDQu9GM0L3QvtC5INC/0L7QtNC/0LjRgdC60Lgg4oCUINC40L3QsNGH0LUg0LTQsNC20LUg0YEgXCLQttC40LLRi9C8XCJcclxuICAgIC8vINCz0LXRgtGC0LXRgNC+0Lwg0LIgU2Vzc2lvbktleVNlcnZpY2VzINC90LDRgdGC0YDQvtC50LrQuCDRh9C40YLQsNC70LjRgdGMINCx0Ysg0LIg0LzQvtC80LXQvdGCINCy0YvQt9C+0LLQsFxyXG4gICAgLy8gLnJlcygpLCDQsCDQvdC1INCyINC80L7QvNC10L3RgiBzdWJzY3JpYmUoKS9maXJzdFZhbHVlRnJvbSgpLCDRh9GC0L4g0Lgg0L7QsdC10YnQsNC90L5cclxuICAgIC8vINCyIFJFQURNRSDQutCw0Log0L/QvtCy0LXQtNC10L3QuNC1IFwi0LvQtdC90LjQstC+0LPQvlwiIFJFU1Qt0LLRi9C30L7QstCwLlxyXG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmdWxsVXJsID0gcHJlcGFyZUJhc2VBZGRyZXNzKGJhc2VVcmwpICsgdXJsXHJcblxyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Nlc3NpZCcpIHtcclxuICAgICAgICAgICAgLy8g0J/RgNC10L7QsdGA0LDQt9GD0LXQvCDQv9Cw0YDQsNC80LXRgtGA0Ysg0LIg0YTQvtGA0LzQsNGCIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4gICAgICAgICAgICBjb25zdCBib2R5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKFxyXG4gICAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIGJvZHlTdHJpbmcsIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9LFxyXG4gICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGZyb20oXHJcbiAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIHBhcmFtc0Nsb25lLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZGF0YSlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VyaWFsaXplQml0cml4UGFyYW1zKHBhcmFtczogdW5rbm93bik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3RyaW5naWZ5Qml0cml4UGFyYW1zKHBhcmFtcylcclxuICB9XHJcblxyXG4gIGdldE5hbWVNZXRob2QoYXJyOiBzdHJpbmdbXSkge1xyXG4gICAgcmV0dXJuIGFyci5qb2luKCcuJylcclxuICB9XHJcblxyXG59XHJcblxyXG4iXX0=
@@ -11,12 +11,20 @@ export class SessionKeyError extends Error {
11
11
  }
12
12
  }
13
13
  export class SessionKeyServices {
14
+ // Геттер, а не поле с одноразовым снимком: BXRestSettings.update() создаёт
15
+ // НОВЫЙ объект (this.date = {...this.date, ...}), а не мутирует старый —
16
+ // поэтому `= BXRestSettings.date` в виде обычного поля навсегда
17
+ // "заморозил" бы то, что было на момент создания SessionKeyServices.
18
+ // Геттер вместо этого читает актуальный BXRestSettings.date при каждом
19
+ // обращении.
20
+ get BX_REST_SETTINGS() {
21
+ return BXRestSettings.date;
22
+ }
14
23
  constructor() {
15
24
  this.authHave = false;
16
25
  this.subscribe = {
17
26
  authData: new Subscription()
18
27
  };
19
- this.BX_REST_SETTINGS = BXRestSettings.date;
20
28
  const authData = this.getSessionItem(this.constructor.name);
21
29
  if (this.getAuth().length > 0) {
22
30
  this.authHave = true;
@@ -53,6 +61,17 @@ export class SessionKeyServices {
53
61
  return 'auth';
54
62
  }
55
63
  }
64
+ /**
65
+ * Стоит ли прикладывать браузерные cookie к запросу (axios `withCredentials`).
66
+ * Явный `BXRestSettings.withCredentials` имеет приоритет; если не задан —
67
+ * сохраняется историческое поведение: включаем только для `auth.key === 'OAuth2'`.
68
+ */
69
+ getWithCredentials() {
70
+ if (typeof this.BX_REST_SETTINGS.withCredentials === 'boolean') {
71
+ return this.BX_REST_SETTINGS.withCredentials;
72
+ }
73
+ return this.getKeyAuth() === 'OAuth2';
74
+ }
56
75
  getSessid() {
57
76
  const check = this.getSearchParam('sessid');
58
77
  if (check) {
@@ -217,4 +236,4 @@ export class SessionKeyServices {
217
236
  return (value && value.length > 0) ? value : undefined;
218
237
  }
219
238
  }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbktleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvc2Vzc2lvbktleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sTUFBTSxnQ0FBZ0MsQ0FBQTtBQUNwRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixJQUFJLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLMUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQTtJQUMvQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBVTdCO1FBUkEsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUVoQixjQUFTLEdBQUc7WUFDVixRQUFRLEVBQUUsSUFBSSxZQUFZLEVBQUU7U0FDN0IsQ0FBQTtRQUVnQixxQkFBZ0IsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFBO1FBSXJELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQWMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4RSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7UUFDdEIsQ0FBQztRQUVE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cEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLGNBQWM7WUFDckMsQ0FBQyxDQUFDLENBQUMsT0FBTyxZQUFZLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQyxPQUFPLGNBQWMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFeEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWdDO1FBQ3JELE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDeEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvb2tpZXMgZnJvbSAnLi4vLi4vc2VydmljZXMvdmFuaWxsYS9jb29raWVzJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBwcmVwYXJlQmFzZUFkZHJlc3MgfSBmcm9tICcuLi9iYXNlJ1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZXMgYXMgTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFuaWxsYS9sb2NhbFN0b3JhZ2UnXG5pbXBvcnQgeyBCWFJlc3RTZXR0aW5ncywgREVGQVVMVF9CWF9SRVNUX1NFVFRJTkdTIH0gZnJvbSAnLi4vLi4vc2V0dGluZ3MnXG5pbXBvcnQgeyBpQlhSZXN0QXV0aCB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9hdXRoL3NhdmUnXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZSB9IGZyb20gJy4uL3ZhbmlsbGEvc2Vzc2lvblN0b3JhZ2UnXG5cbnR5cGUgSUtleUF1dGggPSAnc2Vzc2lkJyB8ICdhdXRoJyB8IHN0cmluZ1xudHlwZSBTdG9yYWdlS2luZCA9ICdsb2NhbFN0b3JhZ2UnIHwgJ3Nlc3Npb25TdG9yYWdlJ1xuXG5leHBvcnQgY2xhc3MgU2Vzc2lvbktleUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIHRoaXMubmFtZSA9ICdTZXNzaW9uS2V5RXJyb3InXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlc3Npb25LZXlTZXJ2aWNlcyB7XG5cbiAgYXV0aEhhdmUgPSBmYWxzZVxuICBhdXRoRGF0YTogaUJYUmVzdEF1dGggfCB1bmRlZmluZWRcbiAgc3Vic2NyaWJlID0ge1xuICAgIGF1dGhEYXRhOiBuZXcgU3Vic2NyaXB0aW9uKClcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgQlhfUkVTVF9TRVRUSU5HUyA9IEJYUmVzdFNldHRpbmdzLmRhdGVcblxuICBjb25zdHJ1Y3RvcihcbiAgKSB7XG4gICAgY29uc3QgYXV0aERhdGEgPSB0aGlzLmdldFNlc3Npb25JdGVtPGlCWFJlc3RBdXRoPih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG4gICAgaWYgKHRoaXMuZ2V0QXV0aCgpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYXV0aEhhdmUgPSB0cnVlXG4gICAgfVxuXG4gICAgdGhpcy5hdXRoRGF0YSA9IGF1dGhEYXRhXG5cbiAgfVxuXG4gIHN1YnNjcmliZUFsbCgpIHtcbiAgICB0aGlzLnN1YnNjcmliZS5hdXRoRGF0YS51bnN1YnNjcmliZSgpXG4gIH1cblxuICBnZXRBdXRoKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5rZXkpIHtcbiAgICAgIGNhc2UgJ2F1dGgnOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb29raWUoJ2F1dGgnKVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBieFNlc3NpZCA9IHRoaXMuZ2V0QnhTZXNzaWQoKVxuICAgICAgICBpZiAoYnhTZXNzaWQpIHtcbiAgICAgICAgICByZXR1cm4gYnhTZXNzaWRcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldFNlc3NpZCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBzdHIgPSB0aGlzLmdldFNlc3NpZCgpXG4gICAgICAgICAgcmV0dXJuIChzdHIpID8gc3RyIDogJydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb29raWUoJ2F1dGgnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0S2V5QXV0aCgpOiBJS2V5QXV0aCB7XG4gICAgaWYgKHRoaXMuQlhfUkVTVF9TRVRUSU5HUy5hdXRoLmtleS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5rZXlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdhdXRoJ1xuICAgIH1cbiAgfVxuXG4gIGdldFNlc3NpZCgpIHtcbiAgICBjb25zdCBjaGVjayA9IHRoaXMuZ2V0U2VhcmNoUGFyYW0oJ3Nlc3NpZCcpXG4gICAgaWYgKGNoZWNrKSB7XG4gICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgnc2Vzc2lkJywgY2hlY2spXG4gICAgICByZXR1cm4gY2hlY2tcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0TG9jYWxTdG9yYWdlKCdzZXNzaWQnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlKCdzZXNzaWQnKSB8fCAnJ1xuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGdldEF1dGhQYXJhbXMoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5zb3VyY2VcblxuICAgIGlmICh0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVWYWx1ZShzb3VyY2UoKSlcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChzb3VyY2UpIHtcbiAgICAgIGNhc2UgJ2Nvb2tpZXMnOlxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVWYWx1ZSh0aGlzLmdldEF1dGgoKSlcbiAgICAgIGNhc2UgJ2xvY2FsU3RvcmFnZSc6XG4gICAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZVZhbHVlKHRoaXMuZ2V0TG9jYWxTdG9yYWdlKHRoaXMuQlhfUkVTVF9TRVRUSU5HUy5hdXRoLmtleSkpXG4gICAgICBjYXNlICdvZmYnOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVWYWx1ZSgodGhpcy5hdXRoRGF0YSkgPyB0aGlzLmF1dGhEYXRhLmFjY2Vzc190b2tlbiA6IHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBnZXRDaGVja0F1dGhQYXJhbXNJc09uKCl7XG4gICAgcmV0dXJuIHRoaXMuQlhfUkVTVF9TRVRUSU5HUy5hdXRoLnNvdXJjZSAhPT0gJ29mZidcbiAgfVxuXG4gIGdldEF1dGhFcnJvcihvcGVyYXRpb24gPSAncmVxdWVzdCcpOiBTZXNzaW9uS2V5RXJyb3Ige1xuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuQlhfUkVTVF9TRVRUSU5HUy5hdXRoLnNvdXJjZVxuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5QXV0aCgpXG5cbiAgICBpZiAoIXRoaXMuZ2V0Q2hlY2tBdXRoUGFyYW1zSXNPbigpKSB7XG4gICAgICByZXR1cm4gbmV3IFNlc3Npb25LZXlFcnJvcihcbiAgICAgICAgYEF1dGhvcml6YXRpb24gaXMgZGlzYWJsZWQgZm9yICR7b3BlcmF0aW9ufTogQlhSZXN0U2V0dGluZ3MuYXV0aC5zb3VyY2UgaXMgXCJvZmZcIi5gXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlTmFtZSA9ICh0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nKSA/ICdjdXN0b20gZnVuY3Rpb24nIDogc291cmNlXG4gICAgY29uc3QgY2hlY2tlZCA9IHRoaXMuZ2V0QXV0aENoZWNrZWRQbGFjZXMoKVxuXG4gICAgcmV0dXJuIG5ldyBTZXNzaW9uS2V5RXJyb3IoW1xuICAgICAgYEF1dGhvcml6YXRpb24gdG9rZW4gd2FzIG5vdCBmb3VuZCBmb3IgJHtvcGVyYXRpb259LmAsXG4gICAgICBgYXV0aC5zb3VyY2U6ICR7c291cmNlTmFtZX0uYCxcbiAgICAgIGBhdXRoLmtleTogJHtrZXl9LmAsXG4gICAgICBgQ2hlY2tlZDogJHtjaGVja2VkLmpvaW4oJywgJyl9LmAsXG4gICAgICAnU2V0IEJYUmVzdFNldHRpbmdzLmF1dGguc291cmNlL2tleSBjb3JyZWN0bHkgb3Igc2F2ZSBhIHZhbGlkIHRva2VuIGJlZm9yZSBtYWtpbmcgdGhlIHJlcXVlc3QuJ1xuICAgIF0uam9pbignICcpKVxuICB9XG5cbiAgZ2V0QmFzZVVybCgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGFkZGl0aW9uYWxfcGFydCA9ICh0aGlzLkJYX1JFU1RfU0VUVElOR1MudXJscy5hZGRpdGlvbmFsX3BhcnQgfHwgdGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMuYWRkaXRpb25hbF9wYXJ0ID09PSAnJylcbiAgICA/IHRoaXMuQlhfUkVTVF9TRVRUSU5HUy51cmxzLmFkZGl0aW9uYWxfcGFydFxuICAgICAgOiBERUZBVUxUX0JYX1JFU1RfU0VUVElOR1MudXJscy5hZGRpdGlvbmFsX3BhcnRcblxuICAgIGlmKHRoaXMuQlhfUkVTVF9TRVRUSU5HUy51cmxzLnNvdXJjZSA9PT0gJ3N0cmluZycpe1xuICAgICAgcmV0dXJuIG9mKHByZXBhcmVCYXNlQWRkcmVzcyh0aGlzLkJYX1JFU1RfU0VUVElOR1MudXJscy5rZXksIGFkZGl0aW9uYWxfcGFydCkpXG4gICAgfVxuXG4gICAgY29uc3Qgc3RyID0gdGhpcy5nZXRMb2NhbFN0b3JhZ2UodGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMua2V5KVxuXG4gICAgcmV0dXJuIG9mKHByZXBhcmVCYXNlQWRkcmVzcygoc3RyKSA/IHN0ciA6ICcnLCBhZGRpdGlvbmFsX3BhcnQpKVxuICB9XG5cbiAgZ2V0QmFzZVVybEVycm9yKG9wZXJhdGlvbiA9ICdyZXF1ZXN0Jyk6IFNlc3Npb25LZXlFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBTZXNzaW9uS2V5RXJyb3IoW1xuICAgICAgYEJhc2UgVVJMIHdhcyBub3QgcmVzb2x2ZWQgZm9yICR7b3BlcmF0aW9ufS5gLFxuICAgICAgYHVybHMuc291cmNlOiAke3RoaXMuQlhfUkVTVF9TRVRUSU5HUy51cmxzLnNvdXJjZX0uYCxcbiAgICAgIGB1cmxzLmtleTogJHt0aGlzLkJYX1JFU1RfU0VUVElOR1MudXJscy5rZXkgfHwgJyhlbXB0eSknfS5gLFxuICAgICAgJ1NldCBCWFJlc3RTZXR0aW5ncy51cmxzLmtleSB0byBhIFVSTCBvciB0byBhIGxvY2FsU3RvcmFnZSBrZXkgY29udGFpbmluZyB0aGUgcG9ydGFsIFVSTC4nXG4gICAgXS5qb2luKCcgJykpXG4gIH1cblxuICBwcml2YXRlIGdldEF1dGhDaGVja2VkUGxhY2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5zb3VyY2VcblxuICAgIGlmICh0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gWydCWFJlc3RTZXR0aW5ncy5hdXRoLnNvdXJjZSgpJ11cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgY2FzZSAnY29va2llcyc6XG4gICAgICAgIHJldHVybiB0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5rZXkgPT09ICdhdXRoJ1xuICAgICAgICAgID8gWydjb29raWUgXCJhdXRoXCInXVxuICAgICAgICAgIDogWyd3aW5kb3cuQlguYml0cml4X3Nlc3NpZCgpJywgJ1VSTCBxdWVyeSBcInNlc3NpZFwiJywgJ2xvY2FsU3RvcmFnZSBcInNlc3NpZFwiJywgJ2Nvb2tpZSBcImF1dGhcIiddXG4gICAgICBjYXNlICdsb2NhbFN0b3JhZ2UnOlxuICAgICAgICByZXR1cm4gW2Bsb2NhbFN0b3JhZ2UgXCIke3RoaXMuQlhfUkVTVF9TRVRUSU5HUy5hdXRoLmtleX1cImBdXG4gICAgICBjYXNlICdvZmYnOlxuICAgICAgICByZXR1cm4gWydhdXRob3JpemF0aW9uIGxvb2t1cCBza2lwcGVkJ11cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbYHNlc3Npb25TdG9yYWdlIFwiJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9XCIgYWNjZXNzX3Rva2VuYF1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEJ4U2Vzc2lkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYnggPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpID8gKHdpbmRvdyBhcyBhbnkpLkJYIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoIWJ4IHx8IHR5cGVvZiBieC5iaXRyaXhfc2Vzc2lkICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplVmFsdWUoYnguYml0cml4X3Nlc3NpZCgpKSB8fCAnJ1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWFyY2hQYXJhbShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KG5hbWUpIHx8IHVuZGVmaW5lZFxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29va2llKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQ29va2llcy5nZXQobmFtZSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldFN0b3JhZ2VJdGVtKCdsb2NhbFN0b3JhZ2UnLCBuYW1lKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRMb2NhbFN0b3JhZ2UobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgTG9jYWxTdG9yYWdlLnNldChuYW1lLCB2YWx1ZSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Vzc2lvbkl0ZW08VD4obmFtZTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uU3RvcmFnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlLmdldEl0ZW08VD4obmFtZSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JhZ2VJdGVtKGtpbmQ6IFN0b3JhZ2VLaW5kLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBzdG9yYWdlID0ga2luZCA9PT0gJ2xvY2FsU3RvcmFnZSdcbiAgICAgID8gKHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnID8gbG9jYWxTdG9yYWdlIDogdW5kZWZpbmVkKVxuICAgICAgOiAodHlwZW9mIHNlc3Npb25TdG9yYWdlICE9PSAndW5kZWZpbmVkJyA/IHNlc3Npb25TdG9yYWdlIDogdW5kZWZpbmVkKVxuXG4gICAgaWYgKCFzdG9yYWdlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gc3RvcmFnZS5nZXRJdGVtKG5hbWUpXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxuICB9XG59XG4iXX0=
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbktleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvc2Vzc2lvbktleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sTUFBTSxnQ0FBZ0MsQ0FBQTtBQUNwRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixJQUFJLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLMUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQTtJQUMvQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBUTdCLDJFQUEyRTtJQUMzRSx5RUFBeUU7SUFDekUsZ0VBQWdFO0lBQ2hFLHFFQUFxRTtJQUNyRSx1RUFBdUU7SUFDdkUsYUFBYTtJQUNiLElBQVksZ0JBQWdCO1FBQzFCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQTtJQUM1QixDQUFDO0lBRUQ7UUFoQkEsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUVoQixjQUFTLEdBQUc7WUFDVixRQUFRLEVBQUUsSUFBSSxZQUFZLEVBQUU7U0FDN0IsQ0FBQTtRQWNDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQWMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4RSxJQUFJLElBQUks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TUFBTSxDQUFDO1lBQ1AsT0FBTTtRQUNSLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFJLElBQVk7UUFDcEMsSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFJLElBQUksQ0FBQyxDQUFBO1FBQ3hDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFpQixFQUFFLElBQVk7UUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLGNBQWM7WUFDckMsQ0FBQyxDQUFDLENBQUMsT0FBTyxZQUFZLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQyxPQUFPLGNBQWMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFeEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWdDO1FBQ3JELE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDeEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvb2tpZXMgZnJvbSAnLi4vLi4vc2VydmljZXMvdmFuaWxsYS9jb29raWVzJ1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgcHJlcGFyZUJhc2VBZGRyZXNzIH0gZnJvbSAnLi4vYmFzZSdcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZXMgYXMgTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFuaWxsYS9sb2NhbFN0b3JhZ2UnXHJcbmltcG9ydCB7IEJYUmVzdFNldHRpbmdzLCBERUZBVUxUX0JYX1JFU1RfU0VUVElOR1MgfSBmcm9tICcuLi8uLi9zZXR0aW5ncydcclxuaW1wb3J0IHsgaUJYUmVzdEF1dGggfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vYXV0aC9zYXZlJ1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZSB9IGZyb20gJy4uL3ZhbmlsbGEvc2Vzc2lvblN0b3JhZ2UnXHJcblxyXG50eXBlIElLZXlBdXRoID0gJ3Nlc3NpZCcgfCAnYXV0aCcgfCBzdHJpbmdcclxudHlwZSBTdG9yYWdlS2luZCA9ICdsb2NhbFN0b3JhZ2UnIHwgJ3Nlc3Npb25TdG9yYWdlJ1xyXG5cclxuZXhwb3J0IGNsYXNzIFNlc3Npb25LZXlFcnJvciBleHRlbmRzIEVycm9yIHtcclxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICB0aGlzLm5hbWUgPSAnU2Vzc2lvbktleUVycm9yJ1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNlc3Npb25LZXlTZXJ2aWNlcyB7XHJcblxyXG4gIGF1dGhIYXZlID0gZmFsc2VcclxuICBhdXRoRGF0YTogaUJYUmVzdEF1dGggfCB1bmRlZmluZWRcclxuICBzdWJzY3JpYmUgPSB7XHJcbiAgICBhdXRoRGF0YTogbmV3IFN1YnNjcmlwdGlvbigpXHJcbiAgfVxyXG5cclxuICAvLyDQk9C10YLRgtC10YAsINCwINC90LUg0L/QvtC70LUg0YEg0L7QtNC90L7RgNCw0LfQvtCy0YvQvCDRgdC90LjQvNC60L7QvDogQlhSZXN0U2V0dGluZ3MudXBkYXRlKCkg0YHQvtC30LTQsNGR0YJcclxuICAvLyDQndCe0JLQq9CZINC+0LHRitC10LrRgiAodGhpcy5kYXRlID0gey4uLnRoaXMuZGF0ZSwgLi4ufSksINCwINC90LUg0LzRg9GC0LjRgNGD0LXRgiDRgdGC0LDRgNGL0Lkg4oCUXHJcbiAgLy8g0L/QvtGN0YLQvtC80YMgYD0gQlhSZXN0U2V0dGluZ3MuZGF0ZWAg0LIg0LLQuNC00LUg0L7QsdGL0YfQvdC+0LPQviDQv9C+0LvRjyDQvdCw0LLRgdC10LPQtNCwXHJcbiAgLy8gXCLQt9Cw0LzQvtGA0L7Qt9C40LtcIiDQsdGLINGC0L4sINGH0YLQviDQsdGL0LvQviDQvdCwINC80L7QvNC10L3RgiDRgdC+0LfQtNCw0L3QuNGPIFNlc3Npb25LZXlTZXJ2aWNlcy5cclxuICAvLyDQk9C10YLRgtC10YAg0LLQvNC10YHRgtC+INGN0YLQvtCz0L4g0YfQuNGC0LDQtdGCINCw0LrRgtGD0LDQu9GM0L3Ri9C5IEJYUmVzdFNldHRpbmdzLmRhdGUg0L/RgNC4INC60LDQttC00L7QvFxyXG4gIC8vINC+0LHRgNCw0YnQtdC90LjQuC5cclxuICBwcml2YXRlIGdldCBCWF9SRVNUX1NFVFRJTkdTKCkge1xyXG4gICAgcmV0dXJuIEJYUmVzdFNldHRpbmdzLmRhdGVcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkge1xyXG4gICAgY29uc3QgYXV0aERhdGEgPSB0aGlzLmdldFNlc3Npb25JdGVtPGlCWFJlc3RBdXRoPih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXHJcbiAgICBpZiAodGhpcy5nZXRBdXRoKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmF1dGhIYXZlID0gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aERhdGEgPSBhdXRoRGF0YVxyXG5cclxuICB9XHJcblxyXG4gIHN1YnNjcmliZUFsbCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlLmF1dGhEYXRhLnVuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIGdldEF1dGgoKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGhpcy5CWF9SRVNUX1NFVFRJTkdTLmF1dGgua2V5KSB7XHJcbiAgICAgIGNhc2UgJ2F1dGgnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldENvb2tpZSgnYXV0aCcpXHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICBjb25zdCBieFNlc3NpZCA9IHRoaXMuZ2V0QnhTZXNzaWQoKVxyXG4gICAgICAgIGlmIChieFNlc3NpZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGJ4U2Vzc2lkXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldFNlc3NpZCgpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IHN0ciA9IHRoaXMuZ2V0U2Vzc2lkKClcclxuICAgICAgICAgIHJldHVybiAoc3RyKSA/IHN0ciA6ICcnXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmdldENvb2tpZSgnYXV0aCcpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRLZXlBdXRoKCk6IElLZXlBdXRoIHtcclxuICAgIGlmICh0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5rZXkubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5rZXlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnYXV0aCdcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCh0YLQvtC40YIg0LvQuCDQv9GA0LjQutC70LDQtNGL0LLQsNGC0Ywg0LHRgNCw0YPQt9C10YDQvdGL0LUgY29va2llINC6INC30LDQv9GA0L7RgdGDIChheGlvcyBgd2l0aENyZWRlbnRpYWxzYCkuXHJcbiAgICog0K/QstC90YvQuSBgQlhSZXN0U2V0dGluZ3Mud2l0aENyZWRlbnRpYWxzYCDQuNC80LXQtdGCINC/0YDQuNC+0YDQuNGC0LXRgjsg0LXRgdC70Lgg0L3QtSDQt9Cw0LTQsNC9IOKAlFxyXG4gICAqINGB0L7RhdGA0LDQvdGP0LXRgtGB0Y8g0LjRgdGC0L7RgNC40YfQtdGB0LrQvtC1INC/0L7QstC10LTQtdC90LjQtTog0LLQutC70Y7Rh9Cw0LXQvCDRgtC+0LvRjNC60L4g0LTQu9GPIGBhdXRoLmtleSA9PT0gJ09BdXRoMidgLlxyXG4gICAqL1xyXG4gIGdldFdpdGhDcmVkZW50aWFscygpOiBib29sZWFuIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5CWF9SRVNUX1NFVFRJTkdTLndpdGhDcmVkZW50aWFscyA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkJYX1JFU1RfU0VUVElOR1Mud2l0aENyZWRlbnRpYWxzXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRLZXlBdXRoKCkgPT09ICdPQXV0aDInXHJcbiAgfVxyXG5cclxuICBnZXRTZXNzaWQoKSB7XHJcbiAgICBjb25zdCBjaGVjayA9IHRoaXMuZ2V0U2VhcmNoUGFyYW0oJ3Nlc3NpZCcpXHJcbiAgICBpZiAoY2hlY2spIHtcclxuICAgICAgdGhpcy5zZXRMb2NhbFN0b3JhZ2UoJ3Nlc3NpZCcsIGNoZWNrKVxyXG4gICAgICByZXR1cm4gY2hlY2tcclxuICAgIH0gZWxzZSBpZiAodGhpcy5nZXRMb2NhbFN0b3JhZ2UoJ3Nlc3NpZCcpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldExvY2FsU3RvcmFnZSgnc2Vzc2lkJykgfHwgJydcclxuICAgIH1cclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuXHJcbiAgZ2V0QXV0aFBhcmFtcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5CWF9SRVNUX1NFVFRJTkdTLmF1dGguc291cmNlXHJcblxyXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVWYWx1ZShzb3VyY2UoKSlcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChzb3VyY2UpIHtcclxuICAgICAgY2FzZSAnY29va2llcyc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplVmFsdWUodGhpcy5nZXRBdXRoKCkpXHJcbiAgICAgIGNhc2UgJ2xvY2FsU3RvcmFnZSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplVmFsdWUodGhpcy5nZXRMb2NhbFN0b3JhZ2UodGhpcy5CWF9SRVNUX1NFVFRJTkdTLmF1dGgua2V5KSlcclxuICAgICAgY2FzZSAnb2ZmJzpcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplVmFsdWUoKHRoaXMuYXV0aERhdGEpID8gdGhpcy5hdXRoRGF0YS5hY2Nlc3NfdG9rZW4gOiB1bmRlZmluZWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja0F1dGhQYXJhbXNJc09uKCl7XHJcbiAgICByZXR1cm4gdGhpcy5CWF9SRVNUX1NFVFRJTkdTLmF1dGguc291cmNlICE9PSAnb2ZmJ1xyXG4gIH1cclxuXHJcbiAgZ2V0QXV0aEVycm9yKG9wZXJhdGlvbiA9ICdyZXF1ZXN0Jyk6IFNlc3Npb25LZXlFcnJvciB7XHJcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5zb3VyY2VcclxuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5QXV0aCgpXHJcblxyXG4gICAgaWYgKCF0aGlzLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKSkge1xyXG4gICAgICByZXR1cm4gbmV3IFNlc3Npb25LZXlFcnJvcihcclxuICAgICAgICBgQXV0aG9yaXphdGlvbiBpcyBkaXNhYmxlZCBmb3IgJHtvcGVyYXRpb259OiBCWFJlc3RTZXR0aW5ncy5hdXRoLnNvdXJjZSBpcyBcIm9mZlwiLmBcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNvdXJjZU5hbWUgPSAodHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJykgPyAnY3VzdG9tIGZ1bmN0aW9uJyA6IHNvdXJjZVxyXG4gICAgY29uc3QgY2hlY2tlZCA9IHRoaXMuZ2V0QXV0aENoZWNrZWRQbGFjZXMoKVxyXG5cclxuICAgIHJldHVybiBuZXcgU2Vzc2lvbktleUVycm9yKFtcclxuICAgICAgYEF1dGhvcml6YXRpb24gdG9rZW4gd2FzIG5vdCBmb3VuZCBmb3IgJHtvcGVyYXRpb259LmAsXHJcbiAgICAgIGBhdXRoLnNvdXJjZTogJHtzb3VyY2VOYW1lfS5gLFxyXG4gICAgICBgYXV0aC5rZXk6ICR7a2V5fS5gLFxyXG4gICAgICBgQ2hlY2tlZDogJHtjaGVja2VkLmpvaW4oJywgJyl9LmAsXHJcbiAgICAgICdTZXQgQlhSZXN0U2V0dGluZ3MuYXV0aC5zb3VyY2Uva2V5IGNvcnJlY3RseSBvciBzYXZlIGEgdmFsaWQgdG9rZW4gYmVmb3JlIG1ha2luZyB0aGUgcmVxdWVzdC4nXHJcbiAgICBdLmpvaW4oJyAnKSlcclxuICB9XHJcblxyXG4gIGdldEJhc2VVcmwoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcclxuICAgIGNvbnN0IGFkZGl0aW9uYWxfcGFydCA9ICh0aGlzLkJYX1JFU1RfU0VUVElOR1MudXJscy5hZGRpdGlvbmFsX3BhcnQgfHwgdGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMuYWRkaXRpb25hbF9wYXJ0ID09PSAnJylcclxuICAgID8gdGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMuYWRkaXRpb25hbF9wYXJ0XHJcbiAgICAgIDogREVGQVVMVF9CWF9SRVNUX1NFVFRJTkdTLnVybHMuYWRkaXRpb25hbF9wYXJ0XHJcblxyXG4gICAgaWYodGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMuc291cmNlID09PSAnc3RyaW5nJyl7XHJcbiAgICAgIHJldHVybiBvZihwcmVwYXJlQmFzZUFkZHJlc3ModGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMua2V5LCBhZGRpdGlvbmFsX3BhcnQpKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0ciA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlKHRoaXMuQlhfUkVTVF9TRVRUSU5HUy51cmxzLmtleSlcclxuXHJcbiAgICByZXR1cm4gb2YocHJlcGFyZUJhc2VBZGRyZXNzKChzdHIpID8gc3RyIDogJycsIGFkZGl0aW9uYWxfcGFydCkpXHJcbiAgfVxyXG5cclxuICBnZXRCYXNlVXJsRXJyb3Iob3BlcmF0aW9uID0gJ3JlcXVlc3QnKTogU2Vzc2lvbktleUVycm9yIHtcclxuICAgIHJldHVybiBuZXcgU2Vzc2lvbktleUVycm9yKFtcclxuICAgICAgYEJhc2UgVVJMIHdhcyBub3QgcmVzb2x2ZWQgZm9yICR7b3BlcmF0aW9ufS5gLFxyXG4gICAgICBgdXJscy5zb3VyY2U6ICR7dGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMuc291cmNlfS5gLFxyXG4gICAgICBgdXJscy5rZXk6ICR7dGhpcy5CWF9SRVNUX1NFVFRJTkdTLnVybHMua2V5IHx8ICcoZW1wdHkpJ30uYCxcclxuICAgICAgJ1NldCBCWFJlc3RTZXR0aW5ncy51cmxzLmtleSB0byBhIFVSTCBvciB0byBhIGxvY2FsU3RvcmFnZSBrZXkgY29udGFpbmluZyB0aGUgcG9ydGFsIFVSTC4nXHJcbiAgICBdLmpvaW4oJyAnKSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QXV0aENoZWNrZWRQbGFjZXMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5CWF9SRVNUX1NFVFRJTkdTLmF1dGguc291cmNlXHJcblxyXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIFsnQlhSZXN0U2V0dGluZ3MuYXV0aC5zb3VyY2UoKSddXHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChzb3VyY2UpIHtcclxuICAgICAgY2FzZSAnY29va2llcyc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQlhfUkVTVF9TRVRUSU5HUy5hdXRoLmtleSA9PT0gJ2F1dGgnXHJcbiAgICAgICAgICA/IFsnY29va2llIFwiYXV0aFwiJ11cclxuICAgICAgICAgIDogWyd3aW5kb3cuQlguYml0cml4X3Nlc3NpZCgpJywgJ1VSTCBxdWVyeSBcInNlc3NpZFwiJywgJ2xvY2FsU3RvcmFnZSBcInNlc3NpZFwiJywgJ2Nvb2tpZSBcImF1dGhcIiddXHJcbiAgICAgIGNhc2UgJ2xvY2FsU3RvcmFnZSc6XHJcbiAgICAgICAgcmV0dXJuIFtgbG9jYWxTdG9yYWdlIFwiJHt0aGlzLkJYX1JFU1RfU0VUVElOR1MuYXV0aC5rZXl9XCJgXVxyXG4gICAgICBjYXNlICdvZmYnOlxyXG4gICAgICAgIHJldHVybiBbJ2F1dGhvcml6YXRpb24gbG9va3VwIHNraXBwZWQnXVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBbYHNlc3Npb25TdG9yYWdlIFwiJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9XCIgYWNjZXNzX3Rva2VuYF1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QnhTZXNzaWQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGJ4ID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSA/ICh3aW5kb3cgYXMgYW55KS5CWCA6IHVuZGVmaW5lZFxyXG5cclxuICAgIGlmICghYnggfHwgdHlwZW9mIGJ4LmJpdHJpeF9zZXNzaWQgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuICcnXHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplVmFsdWUoYnguYml0cml4X3Nlc3NpZCgpKSB8fCAnJ1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiAnJ1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZWFyY2hQYXJhbShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KG5hbWUpIHx8IHVuZGVmaW5lZFxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29va2llKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gJydcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gQ29va2llcy5nZXQobmFtZSlcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gJydcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RvcmFnZUl0ZW0oJ2xvY2FsU3RvcmFnZScsIG5hbWUpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldExvY2FsU3RvcmFnZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0eXBlb2YgbG9jYWxTdG9yYWdlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBMb2NhbFN0b3JhZ2Uuc2V0KG5hbWUsIHZhbHVlKVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZXNzaW9uSXRlbTxUPihuYW1lOiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gU2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbTxUPihuYW1lKVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U3RvcmFnZUl0ZW0oa2luZDogU3RvcmFnZUtpbmQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3Qgc3RvcmFnZSA9IGtpbmQgPT09ICdsb2NhbFN0b3JhZ2UnXHJcbiAgICAgID8gKHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnID8gbG9jYWxTdG9yYWdlIDogdW5kZWZpbmVkKVxyXG4gICAgICA6ICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnID8gc2Vzc2lvblN0b3JhZ2UgOiB1bmRlZmluZWQpXHJcblxyXG4gICAgaWYgKCFzdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHN0b3JhZ2UuZ2V0SXRlbShuYW1lKVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5vcm1hbGl6ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9jb21wYW55L2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtQ29tcGFueUxpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XHJcbiAgb3JkZXI/OiBSZWNvcmQ8c3RyaW5nLCAnYXNjJyB8ICdkZXNjJz5cclxuICBmaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgc2VsZWN0Pzogc3RyaW5nW11cclxufVxyXG5cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9jb21wYW55L2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcbmltcG9ydCB7IGlCWFJlc3RQYXJhbVNvcnQgfSBmcm9tICcuLi8uLi9iYXNlL3NvcnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtQ29tcGFueUxpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XG4gIG9yZGVyPzogUmVjb3JkPHN0cmluZywgaUJYUmVzdFBhcmFtU29ydD5cbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PlxuICBzZWxlY3Q/OiBzdHJpbmdbXVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9jb250YWN0L2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtQ29udGFjdExpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XHJcbiAgb3JkZXI/OiBSZWNvcmQ8c3RyaW5nLCAnYXNjJyB8ICdkZXNjJz5cclxuICBmaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgc2VsZWN0Pzogc3RyaW5nW11cclxufVxyXG5cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9jb250YWN0L2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcbmltcG9ydCB7IGlCWFJlc3RQYXJhbVNvcnQgfSBmcm9tICcuLi8uLi9iYXNlL3NvcnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtQ29udGFjdExpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XG4gIG9yZGVyPzogUmVjb3JkPHN0cmluZywgaUJYUmVzdFBhcmFtU29ydD5cbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PlxuICBzZWxlY3Q/OiBzdHJpbmdbXVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9kZWFsL2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtRGVhbExpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XHJcbiAgb3JkZXI/OiBSZWNvcmQ8c3RyaW5nLCAnYXNjJyB8ICdkZXNjJz5cclxuICBmaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgc2VsZWN0Pzogc3RyaW5nW11cclxufVxyXG5cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9kZWFsL2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcbmltcG9ydCB7IGlCWFJlc3RQYXJhbVNvcnQgfSBmcm9tICcuLi8uLi9iYXNlL3NvcnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtRGVhbExpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XG4gIG9yZGVyPzogUmVjb3JkPHN0cmluZywgaUJYUmVzdFBhcmFtU29ydD5cbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PlxuICBzZWxlY3Q/OiBzdHJpbmdbXVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9sZWFkL2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtTGVhZExpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XHJcbiAgb3JkZXI/OiBSZWNvcmQ8c3RyaW5nLCAnYXNjJyB8ICdkZXNjJz5cclxuICBmaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgc2VsZWN0Pzogc3RyaW5nW11cclxufVxyXG5cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L2NybS9sZWFkL2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcbmltcG9ydCB7IGlCWFJlc3RQYXJhbVNvcnQgfSBmcm9tICcuLi8uLi9iYXNlL3NvcnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFBhcmFtQ3JtTGVhZExpc3QgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiB7XG4gIG9yZGVyPzogUmVjb3JkPHN0cmluZywgaUJYUmVzdFBhcmFtU29ydD5cbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PlxuICBzZWxlY3Q/OiBzdHJpbmdbXVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy90eXBpZmljYXRpb24vc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFNldHRpbmdzIHtcclxuICBhdXRoOiB7XHJcbiAgICBzb3VyY2U6ICdjb29raWVzJyB8ICdsb2NhbFN0b3JhZ2UnIHwgJ29mZicgfCAoKCkgPT4gc3RyaW5nKVxyXG4gICAga2V5OiAnYXV0aCcgfCAnc2Vzc2lkJyB8IHN0cmluZ1xyXG4gIH0sXHJcbiAgdXJsczoge1xyXG4gICAgc291cmNlOiAnc3RyaW5nJyB8ICdsb2NhbFN0b3JhZ2UnXHJcbiAgICBrZXk6IHN0cmluZyB8ICdPQXV0aDInXHJcbiAgICBhZGRpdGlvbmFsX3BhcnQ/OiBzdHJpbmdcclxuICB9XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy90eXBpZmljYXRpb24vc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgaUJYUmVzdFNldHRpbmdzIHtcclxuICBhdXRoOiB7XHJcbiAgICBzb3VyY2U6ICdjb29raWVzJyB8ICdsb2NhbFN0b3JhZ2UnIHwgJ29mZicgfCAoKCkgPT4gc3RyaW5nKVxyXG4gICAga2V5OiAnYXV0aCcgfCAnc2Vzc2lkJyB8IHN0cmluZ1xyXG4gIH0sXHJcbiAgdXJsczoge1xyXG4gICAgc291cmNlOiAnc3RyaW5nJyB8ICdsb2NhbFN0b3JhZ2UnXHJcbiAgICBrZXk6IHN0cmluZyB8ICdPQXV0aDInXHJcbiAgICBhZGRpdGlvbmFsX3BhcnQ/OiBzdHJpbmdcclxuICB9XHJcbiAgLyoqXHJcbiAgICog0KPQv9GA0LDQstC70Y/QtdGCIGF4aW9zLdC+0L/RhtC40LXQuSBgd2l0aENyZWRlbnRpYWxzYCAo0L/RgNC40LrQu9Cw0LTRi9Cy0LDRgtGMINC70Lgg0LHRgNCw0YPQt9C10YDQvdGL0LVcclxuICAgKiBjb29raWUg0Log0LfQsNC/0YDQvtGB0YMpINC90LXQt9Cw0LLQuNGB0LjQvNC+INC+0YIgYGF1dGgua2V5YC4g0JXRgdC70Lgg0L3QtSDQt9Cw0LTQsNC90L4g4oCUINGB0L7RhdGA0LDQvdGP0LXRgtGB0Y9cclxuICAgKiDQv9GA0LXQttC90LXQtSDQv9C+0LLQtdC00LXQvdC40LU6IGB3aXRoQ3JlZGVudGlhbHNgINCy0LrQu9GO0YfQsNC10YLRgdGPINGC0L7Qu9GM0LrQviDQv9GA0LhcclxuICAgKiBgYXV0aC5rZXkgPT09ICdPQXV0aDInYC4g0K/QstC90L7QtSDQt9C90LDRh9C10L3QuNC1INC30LTQtdGB0Ywg0LjQvNC10LXRgiDQv9GA0LjQvtGA0LjRgtC10YIg4oCUINC90YPQttC90L4sXHJcbiAgICog0L3QsNC/0YDQuNC80LXRgCwg0LrQvtCz0LTQsCBgYXV0aC5zb3VyY2U6ICdvZmYnYCDRg9C60LDQt9GL0LLQsNC10YIg0L3QsCDRgdC+0LHRgdGC0LLQtdC90L3Ri9C5INC/0YDQvtC60YHQuCxcclxuICAgKiDQsCDQsdGA0LDRg9C30LXRgCDQtNC+0LvQttC10L0g0L/RgNC40LvQvtC20LjRgtGMIGNvb2tpZSDRgdC10YHRgdC40Lgg0Y3RgtC+0LPQviDQv9GA0L7QutGB0LggKNC90LUgQml0cml4MjQpLlxyXG4gICAqL1xyXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW5cclxufVxyXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { switchMap, map, catchError, take, mergeMap as mergeMap$1 } from 'rxjs/operators';
2
- import { Subscription, of, throwError, from, forkJoin, last, shareReplay, mergeMap, concatMap, toArray, map as map$1, tap } from 'rxjs';
2
+ import { Subscription, of, throwError, from, forkJoin, defer, last, shareReplay, mergeMap, concatMap, toArray, map as map$1, tap } from 'rxjs';
3
3
  import clone from 'just-clone';
4
4
  import axios from 'axios';
5
5
  import flatten from 'just-flatten-it';
@@ -514,12 +514,20 @@ class SessionKeyError extends Error {
514
514
  }
515
515
  }
516
516
  class SessionKeyServices {
517
+ // Геттер, а не поле с одноразовым снимком: BXRestSettings.update() создаёт
518
+ // НОВЫЙ объект (this.date = {...this.date, ...}), а не мутирует старый —
519
+ // поэтому `= BXRestSettings.date` в виде обычного поля навсегда
520
+ // "заморозил" бы то, что было на момент создания SessionKeyServices.
521
+ // Геттер вместо этого читает актуальный BXRestSettings.date при каждом
522
+ // обращении.
523
+ get BX_REST_SETTINGS() {
524
+ return BXRestSettings.date;
525
+ }
517
526
  constructor() {
518
527
  this.authHave = false;
519
528
  this.subscribe = {
520
529
  authData: new Subscription()
521
530
  };
522
- this.BX_REST_SETTINGS = BXRestSettings.date;
523
531
  const authData = this.getSessionItem(this.constructor.name);
524
532
  if (this.getAuth().length > 0) {
525
533
  this.authHave = true;
@@ -556,6 +564,17 @@ class SessionKeyServices {
556
564
  return 'auth';
557
565
  }
558
566
  }
567
+ /**
568
+ * Стоит ли прикладывать браузерные cookie к запросу (axios `withCredentials`).
569
+ * Явный `BXRestSettings.withCredentials` имеет приоритет; если не задан —
570
+ * сохраняется историческое поведение: включаем только для `auth.key === 'OAuth2'`.
571
+ */
572
+ getWithCredentials() {
573
+ if (typeof this.BX_REST_SETTINGS.withCredentials === 'boolean') {
574
+ return this.BX_REST_SETTINGS.withCredentials;
575
+ }
576
+ return this.getKeyAuth() === 'OAuth2';
577
+ }
559
578
  getSessid() {
560
579
  const check = this.getSearchParam('sessid');
561
580
  if (check) {
@@ -954,37 +973,44 @@ class HttpBXServices extends HttpServices {
954
973
  return this.httpGet(this.getNameMethod(name), params);
955
974
  }
956
975
  httpPost(url, params = {}) {
957
- const paramsClone = clone(params);
958
- const key = this.session.getKeyAuth();
959
- const auth = this.session.getAuthParams();
960
- const checkIsOn = this.session.getCheckAuthParamsIsOn();
961
- if (checkIsOn) {
962
- if (!auth) {
963
- return throwError(() => this.session.getAuthError('post'));
964
- }
965
- if (key !== 'OAuth2') {
966
- paramsClone[key] = auth;
967
- }
968
- }
969
- return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
970
- if (!baseUrl) {
971
- return throwError(() => this.session.getBaseUrlError('post'));
972
- }
973
- const fullUrl = prepareBaseAddress(baseUrl) + url;
974
- if (key === 'sessid') {
975
- // Преобразуем параметры в формат x-www-form-urlencoded
976
- const bodyString = this.serializeBitrixParams(paramsClone);
977
- return from(this.axiosInstance.post(fullUrl, bodyString, {
978
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
979
- }).then((response) => response.data));
976
+ // defer() откладывает всё содержимое (в том числе чтение BXRestSettings
977
+ // через this.session.*) до реальной подписки — иначе даже с "живым"
978
+ // геттером в SessionKeyServices настройки читались бы в момент вызова
979
+ // .res(), а не в момент subscribe()/firstValueFrom(), что и обещано
980
+ // в README как поведение "ленивого" REST-вызова.
981
+ return defer(() => {
982
+ const paramsClone = clone(params);
983
+ const key = this.session.getKeyAuth();
984
+ const auth = this.session.getAuthParams();
985
+ const checkIsOn = this.session.getCheckAuthParamsIsOn();
986
+ if (checkIsOn) {
987
+ if (!auth) {
988
+ return throwError(() => this.session.getAuthError('post'));
989
+ }
990
+ if (key !== 'OAuth2') {
991
+ paramsClone[key] = auth;
992
+ }
980
993
  }
981
- return from(this.axiosInstance.post(fullUrl, paramsClone, {
982
- withCredentials: key === 'OAuth2',
983
- headers: {
984
- 'Content-Type': 'application/json',
994
+ return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
995
+ if (!baseUrl) {
996
+ return throwError(() => this.session.getBaseUrlError('post'));
985
997
  }
986
- }).then((response) => response.data));
987
- }));
998
+ const fullUrl = prepareBaseAddress(baseUrl) + url;
999
+ if (key === 'sessid') {
1000
+ // Преобразуем параметры в формат x-www-form-urlencoded
1001
+ const bodyString = this.serializeBitrixParams(paramsClone);
1002
+ return from(this.axiosInstance.post(fullUrl, bodyString, {
1003
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
1004
+ }).then((response) => response.data));
1005
+ }
1006
+ return from(this.axiosInstance.post(fullUrl, paramsClone, {
1007
+ withCredentials: this.session.getWithCredentials(),
1008
+ headers: {
1009
+ 'Content-Type': 'application/json',
1010
+ }
1011
+ }).then((response) => response.data));
1012
+ }));
1013
+ });
988
1014
  }
989
1015
  serializeBitrixParams(params) {
990
1016
  return serializeBitrixParams(params);
@@ -9139,6 +9165,29 @@ class BXRestNavvyPull {
9139
9165
  }
9140
9166
  }
9141
9167
 
9168
+ /**
9169
+ * crm.deal.list, crm.lead.list, crm.contact.list и crm.company.list — в
9170
+ * отличие от остального REST API Bitrix24 — принимают значения `order` в
9171
+ * нижнем регистре (`'asc'`/`'desc'`), а не в верхнем (`'ASC'`/`'DESC'`, как
9172
+ * везде остальном, см. {@link iBXRestParamSort}). Публичный тип этих
9173
+ * четырёх методов унифицирован на `iBXRestParamSort` ради единообразия
9174
+ * во всей библиотеке — эта функция перед отправкой запроса приводит
9175
+ * значения обратно к регистру, которого реально ожидает конкретно этот
9176
+ * метод, так что на бэкенд уходит то же самое, что уходило бы и без
9177
+ * унификации типов.
9178
+ *
9179
+ * @hidden
9180
+ */
9181
+ function lowerCaseOrder(order) {
9182
+ if (!order)
9183
+ return undefined;
9184
+ const result = {};
9185
+ for (const field of Object.keys(order)) {
9186
+ result[field] = order[field].toLowerCase();
9187
+ }
9188
+ return result;
9189
+ }
9190
+
9142
9191
  class BXRestMapCrmLead {
9143
9192
  /**
9144
9193
  * Преобразует массив лидов из HTTP формата в локальный
@@ -9743,7 +9792,12 @@ class BXRestNavvyCrmLead {
9743
9792
  * @param param
9744
9793
  */
9745
9794
  list(param) {
9746
- return this.Navvy.pagNav(this.url.list, param, BXRestMapCrmLead.list);
9795
+ return this.Navvy.pagNav(this.url.list,
9796
+ // crm.lead.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
9797
+ // от остального REST API — публичный тип унифицирован на iBXRestParamSort
9798
+ // ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
9799
+ // отправить на бэкенд. См. lowerCaseOrder.
9800
+ { ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmLead.list);
9747
9801
  }
9748
9802
  /**
9749
9803
  * Обновляет существующий лид
@@ -10015,7 +10069,12 @@ class BXRestNavvyCrmDeal {
10015
10069
  * @param param
10016
10070
  */
10017
10071
  list(param) {
10018
- return this.Navvy.pagNav(this.url.list, param, BXRestMapCrmDeal.list);
10072
+ return this.Navvy.pagNav(this.url.list,
10073
+ // crm.deal.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
10074
+ // от остального REST API — публичный тип унифицирован на iBXRestParamSort
10075
+ // ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
10076
+ // отправить на бэкенд. См. lowerCaseOrder.
10077
+ { ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmDeal.list);
10019
10078
  }
10020
10079
  /**
10021
10080
  * Обновляет существующую сделку
@@ -10227,7 +10286,12 @@ class BXRestNavvyCrmContact {
10227
10286
  * @param param
10228
10287
  */
10229
10288
  list(param) {
10230
- return this.Navvy.pagNav(this.url.list, param, BXRestMapCrmContact.list);
10289
+ return this.Navvy.pagNav(this.url.list,
10290
+ // crm.contact.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
10291
+ // от остального REST API — публичный тип унифицирован на iBXRestParamSort
10292
+ // ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
10293
+ // отправить на бэкенд. См. lowerCaseOrder.
10294
+ { ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmContact.list);
10231
10295
  }
10232
10296
  /**
10233
10297
  * Обновляет существующий контакт
@@ -10439,7 +10503,12 @@ class BXRestNavvyCrmCompany {
10439
10503
  * @param param
10440
10504
  */
10441
10505
  list(param) {
10442
- return this.Navvy.pagNav(this.url.list, param, BXRestMapCrmCompany.list);
10506
+ return this.Navvy.pagNav(this.url.list,
10507
+ // crm.company.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
10508
+ // от остального REST API — публичный тип унифицирован на iBXRestParamSort
10509
+ // ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
10510
+ // отправить на бэкенд. См. lowerCaseOrder.
10511
+ { ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmCompany.list);
10443
10512
  }
10444
10513
  /**
10445
10514
  * Обновляет существующую компанию