bx-rest 1.5.0 → 1.5.1
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.
- package/CHANGELOG.md +83 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/esm2022/functions/mapResult.mjs +4 -2
- package/esm2022/map/disk.mjs +13 -0
- package/esm2022/map/im/recent.mjs +1 -9
- package/esm2022/map/task.mjs +11 -5
- package/esm2022/map/tasks/task.mjs +3 -3
- package/esm2022/map/tasks.mjs +4 -3
- package/esm2022/map/user.mjs +5 -4
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/request-navvy/bizproc.mjs +2 -2
- package/esm2022/request-navvy/pull/config.mjs +1 -3
- package/esm2022/request-navvy/task/operation/elapseditem.mjs +8 -65
- package/esm2022/rest/map.mjs +3 -3
- package/esm2022/services/base.mjs +7 -4
- package/esm2022/services/http/HttpBX.mjs +8 -3
- package/esm2022/services/navvy/extends/navvy-pag-base.mjs +63 -9
- package/esm2022/services/navvy/navvy-alternative-pagination-navigation.mjs +21 -71
- package/esm2022/services/navvy/navvy-pag-nav-result-key-object.mjs +10 -49
- package/esm2022/services/navvy/navvy-pag-nav-result-key.mjs +14 -73
- package/esm2022/services/navvy/navvy-pag-nav-tasks.mjs +4 -76
- package/esm2022/services/navvy/navvy-pag-nav-with-useless-key.mjs +10 -76
- package/esm2022/services/navvy/navvy-pag.mjs +7 -65
- package/esm2022/typification/rest/settings.mjs +1 -1
- package/esm2022/typification/rest/user/user.mjs +1 -1
- package/fesm2022/bx-rest.mjs +491 -1656
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/map/disk.d.ts +10 -0
- package/map/task.d.ts +3 -3
- package/map/tasks/task.d.ts +1 -1
- package/map/tasks.d.ts +1 -1
- package/package.json +5 -2
- package/public-api.d.ts +5 -2
- package/request-navvy/pull/config.d.ts +0 -2
- package/rest/map.d.ts +2 -2
- package/services/navvy/extends/navvy-pag-base.d.ts +16 -2
- package/services/navvy/navvy-alternative-pagination-navigation.d.ts +5 -2
- package/services/navvy/navvy-pag-nav-result-key-object.d.ts +0 -2
- package/services/navvy/navvy-pag-nav-result-key.d.ts +1 -4
- package/services/navvy/navvy-pag-nav-tasks.d.ts +2 -9
- package/services/navvy/navvy-pag-nav-with-useless-key.d.ts +0 -2
- package/services/navvy/navvy-pag.d.ts +0 -2
- package/typification/rest/settings.d.ts +1 -0
- package/typification/rest/user/user.d.ts +3 -3
|
@@ -107,6 +107,7 @@ export class HttpBXServices extends HttpServices {
|
|
|
107
107
|
// Преобразуем параметры в формат x-www-form-urlencoded
|
|
108
108
|
const bodyString = this.serializeBitrixParams(paramsClone);
|
|
109
109
|
return from(this.axiosInstance.post(fullUrl, bodyString, {
|
|
110
|
+
withCredentials: this.session.getWithCredentials(),
|
|
110
111
|
headers: this.buildHeaders(headers, { 'Content-Type': 'application/x-www-form-urlencoded' }),
|
|
111
112
|
}).then((response) => response.data));
|
|
112
113
|
}
|
|
@@ -125,22 +126,26 @@ export class HttpBXServices extends HttpServices {
|
|
|
125
126
|
// авторизации — как в httpPost.
|
|
126
127
|
return withAuthRefresh(defer(() => {
|
|
127
128
|
const paramsClone = clone(params);
|
|
129
|
+
const key = this.session.getKeyAuth();
|
|
128
130
|
const auth = this.session.getAuthParams();
|
|
129
131
|
const checkIsOn = this.session.getCheckAuthParamsIsOn();
|
|
130
132
|
if (checkIsOn) {
|
|
131
133
|
if (!auth) {
|
|
132
134
|
return throwError(() => this.session.getAuthError('get'));
|
|
133
135
|
}
|
|
134
|
-
|
|
136
|
+
if (key !== 'OAuth2') {
|
|
137
|
+
paramsClone[key] = auth;
|
|
138
|
+
}
|
|
135
139
|
}
|
|
136
140
|
return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
|
|
137
141
|
if (!baseUrl) {
|
|
138
142
|
return throwError(() => this.session.getBaseUrlError('get'));
|
|
139
143
|
}
|
|
140
144
|
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
141
|
-
const queryString =
|
|
145
|
+
const queryString = this.serializeBitrixParams(paramsClone);
|
|
142
146
|
const finalUrl = `${fullUrl}?${queryString}`;
|
|
143
147
|
return from(this.axiosInstance.get(finalUrl, {
|
|
148
|
+
withCredentials: this.session.getWithCredentials(),
|
|
144
149
|
headers: this.buildHeaders(headers),
|
|
145
150
|
}).then((response) => response.data));
|
|
146
151
|
}));
|
|
@@ -162,4 +167,4 @@ export class HttpBXServices extends HttpServices {
|
|
|
162
167
|
return arr.join('.');
|
|
163
168
|
}
|
|
164
169
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFL0MsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUFZO0lBRTlDOzs7O09BSUc7SUFDSCxNQUFNLENBQU8sS0FBeUQ7UUFFcEUsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBLENBQUMsbUJBQW1CO1FBQ25DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDJDQUEyQztRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENB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OUQsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUE7Z0JBQ2pELE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO2dCQUMvRCxNQUFNLFFBQVEsR0FBRyxHQUFHLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQTtnQkFFNUMsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUksUUFBUSxFQUFFO29CQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7aUJBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDckMsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssWUFBWSxDQUFDLE9BQWdDLEVBQUUsV0FBbUMsRUFBRTtRQUMxRixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUE7SUFDbEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWU7UUFDbkMsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWE7UUFDekIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIGZvcmtKb2luLCBmcm9tLCBkZWZlciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZXMgfSBmcm9tICcuL2h0dHAnXHJcbmltcG9ydCB7XHJcbiAgaUJhdGNoUmVxdWVzdEFuc3dlciwgaUJhdGNoUmVxdWVzdFBhcmFtLCBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnIsIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAsIGtleUJhdGNoLFxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2JhdGNoL2JhdGNoUmVxdWVzdFBhcmFtJ1xyXG5pbXBvcnQgeyBpQlhSZXN0QW5zd2VyIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9hbnN3ZXInXHJcbmltcG9ydCBmbGF0dGVuIGZyb20gJ2p1c3QtZmxhdHRlbi1pdCdcclxuaW1wb3J0IHsgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21hcFJlc3VsdCdcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IHByZXBhcmVCYXNlQWRkcmVzcyB9IGZyb20gJy4uL2Jhc2UnXHJcbmltcG9ydCB7IHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyBhcyBzdHJpbmdpZnlCaXRyaXhQYXJhbXMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvc2VyaWFsaXplQml0cml4UGFyYW1zJ1xyXG5pbXBvcnQgeyBpSHR0cFBhcmFtU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9zZXR0aW5ncydcclxuaW1wb3J0IHsgd2l0aEF1dGhSZWZyZXNoIH0gZnJvbSAnLi9hdXRoUmVmcmVzaCdcclxuXHJcbmV4cG9ydCBjbGFzcyBIdHRwQlhTZXJ2aWNlcyBleHRlbmRzIEh0dHBTZXJ2aWNlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqINCd0LUg0YHRh9C40YLQsNC50YLQtSDRjdGC0L7RgiDQvNC10YLQvtC0INC+0LHRgNCw0LfRhtC+0Lwv0YTQuNC90LDQu9GM0L3Ri9C8IEFQSS5cclxuICAgKiBUT0RPOiDQo9C00LDQu9C40YLRjCDQtNCw0L3QvdGL0Lkg0LzQtdGC0L7QtCDQv9C+0YHQu9C1INGA0LXQsNC70LjQt9Cw0YbQuNC4INC10LPQviDQsiDRgNCw0LfQtNC10LvQtSBOYXZ2eVxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGJyYW5jaDxULCBBPihwYXJhbTogaUJhdGNoUmVxdWVzdFBhcmFtQXJyPFQ+IHwgaUJhdGNoUmVxdWVzdFBhcmFtPFQ+W10pXHJcbiAgICA6IE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdIHwgdW5kZWZpbmVkPiB7XHJcbiAgICBsZXQgcHJlcGFyZVBhcmFtID0gT2JqZWN0LmVudHJpZXM8c3RyaW5nPih0aGlzLnByZXBhcmVCYXRjaDxUPihwYXJhbSkpXHJcbiAgICBjb25zdCBzaXplID0gNTAgLy8g0LHQvtC70YzRiNC1INC90LUg0L7RgtC00LDRgdGCXHJcbiAgICBsZXQgc3ViYXJyYXkgPSBbXSAvL9C80LDRgdGB0LjQsiDQsiDQutC+0YLQvtGA0YvQuSDQsdGD0LTQtdGCINCy0YvQstC10LTQtdC9INGA0LXQt9GD0LvRjNGC0LDRgi5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5jZWlsKHByZXBhcmVQYXJhbS5sZW5ndGggLyBzaXplKTsgaSsrKSB7XHJcbiAgICAgIHN1YmFycmF5W2ldID0gcHJlcGFyZVBhcmFtLnNsaWNlKChpICogc2l6ZSksIChpICogc2l6ZSkgKyBzaXplKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JrSm9pbihcclxuICAgICAgc3ViYXJyYXkubWFwKGkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBQb3N0KCdiYXRjaC5qc29uJywge1xyXG4gICAgICAgICAgaGFsdDogMCxcclxuICAgICAgICAgIGNtZDogT2JqZWN0LmFzc2lnbih7fSwgLi4uaS5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7W3hbMF1dOiB4WzFdfVxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICkgYXMgT2JzZXJ2YWJsZTxpQmF0Y2hSZXF1ZXN0QW5zd2VyPEE+W10+XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlQmF0Y2g8VD4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKTogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCB7XHJcbiAgICBsZXQgcmVzOiBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwID0gT2JqZWN0LmtleXMocGFyYW0pLnJlZHVjZShcclxuICAgICAgKG9iaiwga2V5KSA9PiB7XHJcbiAgICAgICAgb2JqW2tleV0gPSAnJ1xyXG4gICAgICAgIHJldHVybiBvYmpcclxuICAgICAgfSxcclxuICAgICAge30gYXMgaUJhdGNoUmVxdWVzdFBhcmFtSHR0cFxyXG4gICAgKVxyXG4gICAgZm9yIChsZXQga2V5IGluIHBhcmFtKSB7XHJcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyAmJiBwYXJhbVtrZXldLnBhcmFtKSB7XHJcbiAgICAgICAgcmVzW2tleV0gPSBwYXJhbVtrZXldLm5hbWUgKyAnPycgKyBzdHJpbmdpZnlCaXRyaXhQYXJhbXMocGFyYW1ba2V5XS5wYXJhbSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc1xyXG4gIH1cclxuXHJcbiAgbWFwQnJhbmNoUmVzdWx0PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihbXSwgLi4ucmVzLm1hcChpID0+XHJcbiAgICAgIChpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaSkgJiYgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkucmVzdWx0KSkgPyBpLnJlc3VsdC5yZXN1bHQgOiB1bmRlZmluZWQpXHJcbiAgICApIGFzIFJlY29yZDxrZXlCYXRjaCwgVD5cclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdFdpdGhvdXRLZXk8VD4ocmVzOiBpQmF0Y2hSZXF1ZXN0QW5zd2VyPFQ+W10pOiBUW10ge1xyXG4gICAgcmV0dXJuIGZsYXR0ZW48VD4oT2JqZWN0LmFzc2lnbihbXSwgLi4ucmVzLm1hcChpID0+XHJcbiAgICAgIChpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaSkgJiYgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkucmVzdWx0KSlcclxuICAgICAgICA/IGkucmVzdWx0LnJlc3VsdFxyXG4gICAgICAgIDogdW5kZWZpbmVkKSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCe0YHQvdC+0LLQvdC+0Lkg0LzQtdGC0L7QtCDQtNC70Y8g0LfQsNC/0YDQvtGB0L7QslxyXG4gICAqXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gcGFyYW1zXHJcbiAgICogQHBhcmFtIHJlc3RBcGlcclxuICAgKiBAcGFyYW0gaGVhZGVycyDQt9Cw0LPQvtC70L7QstC60Lgg0YLQvtC70YzQutC+INC00LvRjyDRjdGC0L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUgYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgXHJcbiAgICovXHJcbiAgcG9zdDxUPihuYW1lOiBzdHJpbmdbXSwgcGFyYW1zOiBhbnkgPSB7fSwgcmVzdEFwaSA9IGZhbHNlLCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgY29uc3QgbWV0aG9kID0gdGhpcy5nZXROYW1lTWV0aG9kKG5hbWUpXHJcbiAgICByZXR1cm4gdGhpcy5odHRwUG9zdDxpQlhSZXN0QW5zd2VyPFQ+PihyZXN0QXBpID8gYGFwaS8ke21ldGhvZH1gIDogbWV0aG9kLCBwYXJhbXMsIHVuZGVmaW5lZCwgaGVhZGVycylcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0YLQvtGA0L7RgdGC0LXQv9C10L3QvdGL0Lkg0LzQtdGC0L7QtCDQtNC70Y8g0LfQsNC/0YDQvtGB0L7Qsi4g0J/QviDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC70YPRh9GI0LUg0L3QtSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YxcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqIEBwYXJhbSBoZWFkZXJzINC30LDQs9C+0LvQvtCy0LrQuCDRgtC+0LvRjNC60L4g0LTQu9GPINGN0YLQvtCz0L4g0LfQsNC/0YDQvtGB0LAsINC/0L7QstC10YDRhSBgQlhSZXN0U2V0dGluZ3MuaGVhZGVyc2BcclxuICAgKi9cclxuICBnZXQ8VD4obmFtZTogc3RyaW5nW10sIHBhcmFtczogYW55ID0ge30sIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwR2V0PGlCWFJlc3RBbnN3ZXI8VD4+KHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKSwgcGFyYW1zLCB1bmRlZmluZWQsIGhlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvLyBzZXR0aW5ncyDigJQg0YLQvtC70YzQutC+INC00LvRjyDRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLQuCDRgdC40LPQvdCw0YLRg9GA0Ysg0YEgSHR0cFNlcnZpY2VzOiDQt9C00LXRgdGMINGC0LXQu9C+XHJcbiAgLy8g0YPRhdC+0LTQuNGCIEpTT04t0L7QvC91cmxlbmNvZGVkLCDQuCDQv9C10YDQtdGB0YfRkdGCINC00LDRgiDQuNC3IGlIdHRwUGFyYW1TZXR0aW5ncyDQvdC1INC90YPQttC10L0uXHJcbiAgb3ZlcnJpZGUgaHR0cFBvc3Q8VD4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIHBhcmFtczogYW55ID0ge30sXHJcbiAgICBzZXR0aW5ncz86IGlIdHRwUGFyYW1TZXR0aW5ncyxcclxuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XHJcbiAgICAvLyBkZWZlcigpINC+0YLQutC70LDQtNGL0LLQsNC10YIg0LLRgdGRINGB0L7QtNC10YDQttC40LzQvtC1ICjQsiDRgtC+0Lwg0YfQuNGB0LvQtSDRh9GC0LXQvdC40LUgQlhSZXN0U2V0dGluZ3NcclxuICAgIC8vINGH0LXRgNC10LcgdGhpcy5zZXNzaW9uLiopINC00L4g0YDQtdCw0LvRjNC90L7QuSDQv9C+0LTQv9C40YHQutC4IOKAlCDQuNC90LDRh9C1INC00LDQttC1INGBIFwi0LbQuNCy0YvQvFwiXHJcbiAgICAvLyDQs9C10YLRgtC10YDQvtC8INCyIFNlc3Npb25LZXlTZXJ2aWNlcyDQvdCw0YHRgtGA0L7QudC60Lgg0YfQuNGC0LDQu9C40YHRjCDQsdGLINCyINC80L7QvNC10L3RgiDQstGL0LfQvtCy0LBcclxuICAgIC8vIC5yZXMoKSwg0LAg0L3QtSDQsiDQvNC+0LzQtdC90YIgc3Vic2NyaWJlKCkvZmlyc3RWYWx1ZUZyb20oKSwg0YfRgtC+INC4INC+0LHQtdGJ0LDQvdC+XHJcbiAgICAvLyDQsiBSRUFETUUg0LrQsNC6INC/0L7QstC10LTQtdC90LjQtSBcItC70LXQvdC40LLQvtCz0L5cIiBSRVNULdCy0YvQt9C+0LLQsC5cclxuICAgIC8vXHJcbiAgICAvLyB3aXRoQXV0aFJlZnJlc2goKSDQv9C+0LLRgtC+0YDRj9C10YIg0LfQsNC/0YDQvtGBINC/0L7RgdC70LUgQlhSZXN0U2V0dGluZ3MuYXV0aC5yZWZyZXNoIOKAlFxyXG4gICAgLy8g0L/QvtCy0YLQvtGA0L3QvtC5INC/0L7QtNC/0LjRgdC60L7QuSDQvdCwINGN0YLQvtGCINC20LUgZGVmZXIoKSwg0L/QvtGN0YLQvtC80YMg0L/QvtCy0YLQvtGAINC30LDQvdC+0LLQviDRh9C40YLQsNC10YJcclxuICAgIC8vINGC0L7QutC10L0sINCw0LTRgNC10YEg0Lgg0LfQsNCz0L7Qu9C+0LLQutC4LiDQp9C10YDQtdC3IGh0dHBQb3N0L2h0dHBHZXQg0LjQtNGD0YIg0LLRgdC1INC30LDQv9GA0L7RgdGLXHJcbiAgICAvLyDQsdC40LHQu9C40L7RgtC10LrQuCAocG9zdC9nZXQsIGJhdGNoLCDQstGB0LUg0LLQuNC00YsgTmF2dnkt0LfQsNC/0YDQvtGB0L7QsiksINGC0LDQuiDRh9GC0L4g0L/QvtCy0YLQvtGAXHJcbiAgICAvLyDQstGB0YLRgNC+0LXQvSDRgtC+0LvRjNC60L4g0LfQtNC10YHRjC5cclxuICAgIHJldHVybiB3aXRoQXV0aFJlZnJlc2goZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCBwYXJhbXNDbG9uZSA9IGNsb25lKHBhcmFtcylcclxuICAgICAgY29uc3Qga2V5ID0gdGhpcy5zZXNzaW9uLmdldEtleUF1dGgoKVxyXG4gICAgICBjb25zdCBhdXRoID0gdGhpcy5zZXNzaW9uLmdldEF1dGhQYXJhbXMoKVxyXG4gICAgICBjb25zdCBjaGVja0lzT24gPSB0aGlzLnNlc3Npb24uZ2V0Q2hlY2tBdXRoUGFyYW1zSXNPbigpXHJcblxyXG4gICAgICBpZiAoY2hlY2tJc09uKSB7XHJcbiAgICAgICAgaWYgKCFhdXRoKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiB0aGlzLnNlc3Npb24uZ2V0QXV0aEVycm9yKCdwb3N0JykpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5ICE9PSAnT0F1dGgyJykge1xyXG4gICAgICAgICAgcGFyYW1zQ2xvbmVba2V5XSA9IGF1dGhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChiYXNlVXJsKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWJhc2VVcmwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmxFcnJvcigncG9zdCcpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBwcmVwYXJlQmFzZUFkZHJlc3MoYmFzZVVybCkgKyB1cmxcclxuXHJcbiAgICAgICAgICBpZiAoa2V5ID09PSAnc2Vzc2lkJykge1xyXG4gICAgICAgICAgICAvLyDQn9GA0LXQvtCx0YDQsNC30YPQtdC8INC/0LDRgNCw0LzQtdGC0YDRiyDQsiDRhNC+0YDQvNCw0YIgeC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHlTdHJpbmcgPSB0aGlzLnNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXNDbG9uZSlcclxuICAgICAgICAgICAgcmV0dXJuIGZyb20oXHJcbiAgICAgICAgICAgICAgdGhpcy5heGlvc0luc3RhbmNlLnBvc3Q8VD4oZnVsbFVybCwgYm9keVN0cmluZywge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30pLFxyXG4gICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGZyb20oXHJcbiAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIHBhcmFtc0Nsb25lLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9KSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBodHRwR2V0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8g0KLQsCDQttC1INC/0YDQuNGH0LjQvdCwLCDRh9GC0L4g0Lgg0YMgaHR0cFBvc3Qg0LLRi9GI0LU6INC+0YLQutC70LDQtNGL0LLQsNC10Lwg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDQtNC+INC/0L7QtNC/0LjRgdC60LgsINGH0YLQvtCx0YsgYGdldCgpYCDQstGR0Lsg0YHQtdCx0Y8g0YLQsNC6INC20LUgXCLQu9C10L3QuNCy0L5cIiwg0LrQsNC6INC4IGBwb3N0KClgXHJcbiAgICAvLyAo0YHQuNC80LzQtdGC0YDQuNGPLCDQutC+0YLQvtGA0L7QuSDQvdC1INCx0YvQu9C+INC00L4g0Y3RgtC+0LPQviDigJQgR0VUINGA0LXQt9C+0LvQstC40Lsg0L3QsNGB0YLRgNC+0LnQutC4INCyINC80L7QvNC10L3RglxyXG4gICAgLy8g0LLRi9C30L7QstCwLCDQsCDQvdC1INCyINC80L7QvNC10L3RgiBzdWJzY3JpYmUoKSkuINCf0L7QstGC0L7RgCDQv9C+0YHQu9C1INC/0YDQvtC00LvQtdC90LjRj1xyXG4gICAgLy8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCDigJQg0LrQsNC6INCyIGh0dHBQb3N0LlxyXG4gICAgcmV0dXJuIHdpdGhBdXRoUmVmcmVzaChkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxyXG4gICAgICBjb25zdCBhdXRoID0gdGhpcy5zZXNzaW9uLmdldEF1dGhQYXJhbXMoKVxyXG4gICAgICBjb25zdCBjaGVja0lzT24gPSB0aGlzLnNlc3Npb24uZ2V0Q2hlY2tBdXRoUGFyYW1zSXNPbigpXHJcblxyXG4gICAgICBpZiAoY2hlY2tJc09uKSB7XHJcbiAgICAgICAgaWYgKCFhdXRoKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiB0aGlzLnNlc3Npb24uZ2V0QXV0aEVycm9yKCdnZXQnKSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBhcmFtc0Nsb25lW3RoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKCldID0gYXV0aFxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBwcmVwYXJlQmFzZUFkZHJlc3MoYmFzZVVybCkgKyB1cmxcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXNDbG9uZSkudG9TdHJpbmcoKVxyXG4gICAgICAgICAgY29uc3QgZmluYWxVcmwgPSBgJHtmdWxsVXJsfT8ke3F1ZXJ5U3RyaW5nfWBcclxuXHJcbiAgICAgICAgICByZXR1cm4gZnJvbShcclxuICAgICAgICAgICAgdGhpcy5heGlvc0luc3RhbmNlLmdldDxUPihmaW5hbFVybCwge1xyXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuYnVpbGRIZWFkZXJzKGhlYWRlcnMpLFxyXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZGF0YSlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQs9C+0LvQvtCy0LrQuCDQt9Cw0L/RgNC+0YHQsDogYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgLCDQv9C+0LLQtdGA0YUg0L3QuNGFIOKAlCDQt9Cw0LPQvtC70L7QstC60LhcclxuICAgKiDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUg0LLRgdC10LPQviDigJQgYHJlcXVpcmVkYC4g0JIgYHJlcXVpcmVkYCDQuNC00ZHRglxyXG4gICAqIGBDb250ZW50LVR5cGVgOiDQvtGCINC90LXQs9C+INC30LDQstC40YHQuNGCLCDQutCw0Log0YHQtdGA0LLQtdGAINGA0LDQt9Cx0LXRgNGR0YIg0YLQtdC70L4sINC/0L7RjdGC0L7QvNGDXHJcbiAgICog0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0LfQsNCz0L7Qu9C+0LLQutC4INC10LPQviDQvdC1INC/0LXRgNC10LHQuNCy0LDRjtGCLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJzKGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCByZXF1aXJlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9KSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnNlc3Npb24uZ2V0SGVhZGVycygpLCAuLi5oZWFkZXJzLCAuLi5yZXF1aXJlZCB9XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdHJpbmdpZnlCaXRyaXhQYXJhbXMocGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZU1ldGhvZChhcnI6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gYXJyLmpvaW4oJy4nKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFL0MsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUFZO0lBRTlDOzs7O09BSUc7SUFDSCxNQUFNLENBQU8sS0FBeUQ7UUFFcEUsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBLENBQUMsbUJBQW1CO1FBQ25DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDJDQUEyQztRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUNiLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO2dCQUNqQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNsQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQTtnQkFDdkIsQ0FBQyxDQUFDLENBQUM7YUFDSixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FDcUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsWUFBWSxDQUFJLEtBQXlEO1FBQ3ZFLElBQUksR0FBRyxHQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FDekQsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDWCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQ2IsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQ0QsRUFBNEIsQ0FDN0IsQ0FBQTtRQUNELEtBQUssSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0UsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM1RSxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQztJQUVELGVBQWUsQ0FBSSxHQUE2QjtRQUM5QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN0QyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQ3hGLENBQUE7SUFDMUIsQ0FBQztJQUVELHlCQUF5QixDQUFJLEdBQTZCO1FBQ3hELE9BQU8sT0FBTyxDQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqRCxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3RSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQ2pCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUNoQixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFJLENBQUksSUFBYyxFQUFFLFNBQWMsRUFBRSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsT0FBZ0M7UUFDekYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQW1CLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDeEcsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEdBQUcsQ0FBSSxJQUFjLEVBQUUsU0FBYyxFQUFFLEVBQUUsT0FBZ0M7UUFDdkUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFtQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDbkUsUUFBUSxDQUNmLEdBQVcsRUFDWCxTQUFjLEVBQUUsRUFDaEIsUUFBNkIsRUFDN0IsT0FBZ0M7UUFFaEMsd0VBQXdFO1FBQ3hFLG9FQUFvRTtRQUNwRSxzRUFBc0U7UUFDdEUsb0VBQW9FO1FBQ3BFLGlEQUFpRDtRQUNqRCxFQUFFO1FBQ0YseUVBQXlFO1FBQ3pFLHVFQUF1RTtRQUN2RSxvRUFBb0U7UUFDcEUsd0VBQXdFO1FBQ3hFLHdCQUF3QjtRQUN4QixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBRXZELElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNWLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7Z0JBQzVELENBQUM7Z0JBRUQsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3JCLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDYixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO2dCQUMvRCxDQUFDO2dCQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQkFFakQsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3JCLHVEQUF1RDtvQkFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFBO29CQUMxRCxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFO3dCQUM5QyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTt3QkFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUMsY0FBYyxFQUFFLG1DQUFtQyxFQUFDLENBQUM7cUJBQzNGLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDckMsQ0FBQTtnQkFDSCxDQUFDO2dCQUVELE9BQU8sSUFBSSxDQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFJLE9BQU8sRUFBRSxXQUFXLEVBQzdDO29CQUNFLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO29CQUNsRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQztpQkFDMUUsQ0FDRixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUNwQyxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0lBRVEsT0FBTyxDQUNkLEdBQVcsRUFDWCxTQUFjLEVBQUUsRUFDaEIsUUFBNkIsRUFDN0IsT0FBZ0M7UUFFaEMsMEVBQTBFO1FBQzFFLHNFQUFzRTtRQUN0RSx5RUFBeUU7UUFDekUsNkRBQTZEO1FBQzdELGdDQUFnQztRQUNoQyxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBRXZELElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNWLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7Z0JBQzNELENBQUM7Z0JBRUQsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3JCLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDYixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO2dCQUM5RCxDQUFDO2dCQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQkFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUMzRCxNQUFNLFFBQVEsR0FBRyxHQUFHLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQTtnQkFFNUMsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUksUUFBUSxFQUFFO29CQUNsQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtvQkFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO2lCQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQ3JDLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFlBQVksQ0FBQyxPQUFnQyxFQUFFLFdBQW1DLEVBQUU7UUFDMUYsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFBO0lBQ2xFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFlO1FBQ25DLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFhO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmb3JrSm9pbiwgZnJvbSwgZGVmZXIgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgY2xvbmUgZnJvbSAnanVzdC1jbG9uZSdcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VzIH0gZnJvbSAnLi9odHRwJ1xyXG5pbXBvcnQge1xyXG4gIGlCYXRjaFJlcXVlc3RBbnN3ZXIsIGlCYXRjaFJlcXVlc3RQYXJhbSwgaUJhdGNoUmVxdWVzdFBhcmFtQXJyLCBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwLCBrZXlCYXRjaCxcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXRjaC9iYXRjaFJlcXVlc3RQYXJhbSdcclxuaW1wb3J0IHsgaUJYUmVzdEFuc3dlciB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYW5zd2VyJ1xyXG5pbXBvcnQgZmxhdHRlbiBmcm9tICdqdXN0LWZsYXR0ZW4taXQnXHJcbmltcG9ydCB7IGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tYXBSZXN1bHQnXHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBwcmVwYXJlQmFzZUFkZHJlc3MgfSBmcm9tICcuLi9iYXNlJ1xyXG5pbXBvcnQgeyBzZXJpYWxpemVCaXRyaXhQYXJhbXMgYXMgc3RyaW5naWZ5Qml0cml4UGFyYW1zIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3NlcmlhbGl6ZUJpdHJpeFBhcmFtcydcclxuaW1wb3J0IHsgaUh0dHBQYXJhbVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXHJcbmltcG9ydCB7IHdpdGhBdXRoUmVmcmVzaCB9IGZyb20gJy4vYXV0aFJlZnJlc2gnXHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cEJYU2VydmljZXMgZXh0ZW5kcyBIdHRwU2VydmljZXMge1xyXG5cclxuICAvKipcclxuICAgKiDQndC1INGB0YfQuNGC0LDQudGC0LUg0Y3RgtC+0YIg0LzQtdGC0L7QtCDQvtCx0YDQsNC30YbQvtC8L9GE0LjQvdCw0LvRjNC90YvQvCBBUEkuXHJcbiAgICogVE9ETzog0KPQtNCw0LvQuNGC0Ywg0LTQsNC90L3Ri9C5INC80LXRgtC+0LQg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCDQtdCz0L4g0LIg0YDQsNC30LTQtdC70LUgTmF2dnlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBicmFuY2g8VCwgQT4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHByZXBhcmVQYXJhbSA9IE9iamVjdC5lbnRyaWVzPHN0cmluZz4odGhpcy5wcmVwYXJlQmF0Y2g8VD4ocGFyYW0pKVxyXG4gICAgY29uc3Qgc2l6ZSA9IDUwIC8vINCx0L7Qu9GM0YjQtSDQvdC1INC+0YLQtNCw0YHRglxyXG4gICAgbGV0IHN1YmFycmF5ID0gW10gLy/QvNCw0YHRgdC40LIg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQstGL0LLQtdC00LXQvSDRgNC10LfRg9C70YzRgtCw0YIuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGguY2VpbChwcmVwYXJlUGFyYW0ubGVuZ3RoIC8gc2l6ZSk7IGkrKykge1xyXG4gICAgICBzdWJhcnJheVtpXSA9IHByZXBhcmVQYXJhbS5zbGljZSgoaSAqIHNpemUpLCAoaSAqIHNpemUpICsgc2l6ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgIHN1YmFycmF5Lm1hcChpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwUG9zdCgnYmF0Y2guanNvbicsIHtcclxuICAgICAgICAgIGhhbHQ6IDAsXHJcbiAgICAgICAgICBjbWQ6IE9iamVjdC5hc3NpZ24oe30sIC4uLmkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1t4WzBdXTogeFsxXX1cclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApIGFzIE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdPlxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZUJhdGNoPFQ+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSk6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAge1xyXG4gICAgbGV0IHJlczogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCA9IE9iamVjdC5rZXlzKHBhcmFtKS5yZWR1Y2UoXHJcbiAgICAgIChvYmosIGtleSkgPT4ge1xyXG4gICAgICAgIG9ialtrZXldID0gJydcclxuICAgICAgICByZXR1cm4gb2JqXHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHBcclxuICAgIClcclxuICAgIGZvciAobGV0IGtleSBpbiBwYXJhbSkge1xyXG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgJiYgcGFyYW1ba2V5XS5wYXJhbSkge1xyXG4gICAgICAgIHJlc1trZXldID0gcGFyYW1ba2V5XS5uYW1lICsgJz8nICsgc3RyaW5naWZ5Qml0cml4UGFyYW1zKHBhcmFtW2tleV0ucGFyYW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNcclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdDxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpID8gaS5yZXN1bHQucmVzdWx0IDogdW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8a2V5QmF0Y2gsIFQ+XHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHRXaXRob3V0S2V5PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKTogVFtdIHtcclxuICAgIHJldHVybiBmbGF0dGVuPFQ+KE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpXHJcbiAgICAgICAgPyBpLnJlc3VsdC5yZXN1bHRcclxuICAgICAgICA6IHVuZGVmaW5lZCkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGB0L3QvtCy0L3QvtC5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqIEBwYXJhbSByZXN0QXBpXHJcbiAgICogQHBhcmFtIGhlYWRlcnMg0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCwg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqL1xyXG4gIHBvc3Q8VD4obmFtZTogc3RyaW5nW10sIHBhcmFtczogYW55ID0ge30sIHJlc3RBcGkgPSBmYWxzZSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFBvc3Q8aUJYUmVzdEFuc3dlcjxUPj4ocmVzdEFwaSA/IGBhcGkvJHttZXRob2R9YCA6IG1ldGhvZCwgcGFyYW1zLCB1bmRlZmluZWQsIGhlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktGC0L7RgNC+0YHRgtC10L/QtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LIuINCf0L4g0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQu9GD0YfRiNC1INC90LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKiBAcGFyYW0gaGVhZGVycyDQt9Cw0LPQvtC70L7QstC60Lgg0YLQvtC70YzQutC+INC00LvRjyDRjdGC0L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUgYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgXHJcbiAgICovXHJcbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cEdldDxpQlhSZXN0QW5zd2VyPFQ+Pih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcywgdW5kZWZpbmVkLCBoZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgLy8gc2V0dGluZ3Mg4oCUINGC0L7Qu9GM0LrQviDQtNC70Y8g0YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0Lgg0YHQuNCz0L3QsNGC0YPRgNGLINGBIEh0dHBTZXJ2aWNlczog0LfQtNC10YHRjCDRgtC10LvQvlxyXG4gIC8vINGD0YXQvtC00LjRgiBKU09OLdC+0LwvdXJsZW5jb2RlZCwg0Lgg0L/QtdGA0LXRgdGH0ZHRgiDQtNCw0YIg0LjQtyBpSHR0cFBhcmFtU2V0dGluZ3Mg0L3QtSDQvdGD0LbQtdC9LlxyXG4gIG92ZXJyaWRlIGh0dHBQb3N0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8gZGVmZXIoKSDQvtGC0LrQu9Cw0LTRi9Cy0LDQtdGCINCy0YHRkSDRgdC+0LTQtdGA0LbQuNC80L7QtSAo0LIg0YLQvtC8INGH0LjRgdC70LUg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDRh9C10YDQtdC3IHRoaXMuc2Vzc2lvbi4qKSDQtNC+INGA0LXQsNC70YzQvdC+0Lkg0L/QvtC00L/QuNGB0LrQuCDigJQg0LjQvdCw0YfQtSDQtNCw0LbQtSDRgSBcItC20LjQstGL0LxcIlxyXG4gICAgLy8g0LPQtdGC0YLQtdGA0L7QvCDQsiBTZXNzaW9uS2V5U2VydmljZXMg0L3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0LvQuNGB0Ywg0LHRiyDQsiDQvNC+0LzQtdC90YIg0LLRi9C30L7QstCwXHJcbiAgICAvLyAucmVzKCksINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpL2ZpcnN0VmFsdWVGcm9tKCksINGH0YLQviDQuCDQvtCx0LXRidCw0L3QvlxyXG4gICAgLy8g0LIgUkVBRE1FINC60LDQuiDQv9C+0LLQtdC00LXQvdC40LUgXCLQu9C10L3QuNCy0L7Qs9C+XCIgUkVTVC3QstGL0LfQvtCy0LAuXHJcbiAgICAvL1xyXG4gICAgLy8gd2l0aEF1dGhSZWZyZXNoKCkg0L/QvtCy0YLQvtGA0Y/QtdGCINC30LDQv9GA0L7RgSDQv9C+0YHQu9C1IEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaCDigJRcclxuICAgIC8vINC/0L7QstGC0L7RgNC90L7QuSDQv9C+0LTQv9C40YHQutC+0Lkg0L3QsCDRjdGC0L7RgiDQttC1IGRlZmVyKCksINC/0L7RjdGC0L7QvNGDINC/0L7QstGC0L7RgCDQt9Cw0L3QvtCy0L4g0YfQuNGC0LDQtdGCXHJcbiAgICAvLyDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuC4g0KfQtdGA0LXQtyBodHRwUG9zdC9odHRwR2V0INC40LTRg9GCINCy0YHQtSDQt9Cw0L/RgNC+0YHRi1xyXG4gICAgLy8g0LHQuNCx0LvQuNC+0YLQtdC60LggKHBvc3QvZ2V0LCBiYXRjaCwg0LLRgdC1INCy0LjQtNGLIE5hdnZ5LdC30LDQv9GA0L7RgdC+0LIpLCDRgtCw0Log0YfRgtC+INC/0L7QstGC0L7RgFxyXG4gICAgLy8g0LLRgdGC0YDQvtC10L0g0YLQvtC70YzQutC+INC30LTQtdGB0YwuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmdWxsVXJsID0gcHJlcGFyZUJhc2VBZGRyZXNzKGJhc2VVcmwpICsgdXJsXHJcblxyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Nlc3NpZCcpIHtcclxuICAgICAgICAgICAgLy8g0J/RgNC10L7QsdGA0LDQt9GD0LXQvCDQv9Cw0YDQsNC80LXRgtGA0Ysg0LIg0YTQvtGA0LzQsNGCIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4gICAgICAgICAgICBjb25zdCBib2R5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKFxyXG4gICAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIGJvZHlTdHJpbmcsIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30pLFxyXG4gICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGZyb20oXHJcbiAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIHBhcmFtc0Nsb25lLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9KSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBodHRwR2V0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8g0KLQsCDQttC1INC/0YDQuNGH0LjQvdCwLCDRh9GC0L4g0Lgg0YMgaHR0cFBvc3Qg0LLRi9GI0LU6INC+0YLQutC70LDQtNGL0LLQsNC10Lwg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDQtNC+INC/0L7QtNC/0LjRgdC60LgsINGH0YLQvtCx0YsgYGdldCgpYCDQstGR0Lsg0YHQtdCx0Y8g0YLQsNC6INC20LUgXCLQu9C10L3QuNCy0L5cIiwg0LrQsNC6INC4IGBwb3N0KClgXHJcbiAgICAvLyAo0YHQuNC80LzQtdGC0YDQuNGPLCDQutC+0YLQvtGA0L7QuSDQvdC1INCx0YvQu9C+INC00L4g0Y3RgtC+0LPQviDigJQgR0VUINGA0LXQt9C+0LvQstC40Lsg0L3QsNGB0YLRgNC+0LnQutC4INCyINC80L7QvNC10L3RglxyXG4gICAgLy8g0LLRi9C30L7QstCwLCDQsCDQvdC1INCyINC80L7QvNC10L3RgiBzdWJzY3JpYmUoKSkuINCf0L7QstGC0L7RgCDQv9C+0YHQu9C1INC/0YDQvtC00LvQtdC90LjRj1xyXG4gICAgLy8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCDigJQg0LrQsNC6INCyIGh0dHBQb3N0LlxyXG4gICAgcmV0dXJuIHdpdGhBdXRoUmVmcmVzaChkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnNlc3Npb24uZ2V0S2V5QXV0aCgpXHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXHJcbiAgICAgIGNvbnN0IGNoZWNrSXNPbiA9IHRoaXMuc2Vzc2lvbi5nZXRDaGVja0F1dGhQYXJhbXNJc09uKClcclxuXHJcbiAgICAgIGlmIChjaGVja0lzT24pIHtcclxuICAgICAgICBpZiAoIWF1dGgpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRBdXRoRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBwcmVwYXJlQmFzZUFkZHJlc3MoYmFzZVVybCkgKyB1cmxcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICBjb25zdCBmaW5hbFVybCA9IGAke2Z1bGxVcmx9PyR7cXVlcnlTdHJpbmd9YFxyXG5cclxuICAgICAgICAgIHJldHVybiBmcm9tKFxyXG4gICAgICAgICAgICB0aGlzLmF4aW9zSW5zdGFuY2UuZ2V0PFQ+KGZpbmFsVXJsLCB7XHJcbiAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLnNlc3Npb24uZ2V0V2l0aENyZWRlbnRpYWxzKCksXHJcbiAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycyksXHJcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JfQsNCz0L7Qu9C+0LLQutC4INC30LDQv9GA0L7RgdCwOiBgQlhSZXN0U2V0dGluZ3MuaGVhZGVyc2AsINC/0L7QstC10YDRhSDQvdC40YUg4oCUINC30LDQs9C+0LvQvtCy0LrQuFxyXG4gICAqINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LfQsNC/0YDQvtGB0LAsINC/0L7QstC10YDRhSDQstGB0LXQs9C+IOKAlCBgcmVxdWlyZWRgLiDQkiBgcmVxdWlyZWRgINC40LTRkdGCXHJcbiAgICogYENvbnRlbnQtVHlwZWA6INC+0YIg0L3QtdCz0L4g0LfQsNCy0LjRgdC40YIsINC60LDQuiDRgdC10YDQstC10YAg0YDQsNC30LHQtdGA0ZHRgiDRgtC10LvQviwg0L/QvtGN0YLQvtC80YNcclxuICAgKiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQtSDQt9Cw0LPQvtC70L7QstC60Lgg0LXQs9C+INC90LUg0L/QtdGA0LXQsdC40LLQsNGO0YIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZEhlYWRlcnMoaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHJlcXVpcmVkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30pIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuc2Vzc2lvbi5nZXRIZWFkZXJzKCksIC4uLmhlYWRlcnMsIC4uLnJlcXVpcmVkIH1cclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXM6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN0cmluZ2lmeUJpdHJpeFBhcmFtcyhwYXJhbXMpXHJcbiAgfVxyXG5cclxuICBnZXROYW1lTWV0aG9kKGFycjogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiBhcnIuam9pbignLicpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
|
|
@@ -1,7 +1,23 @@
|
|
|
1
|
+
import { concatMap, from, toArray } from 'rxjs';
|
|
1
2
|
import { catchError, map } from 'rxjs/operators';
|
|
3
|
+
import clone from 'just-clone';
|
|
2
4
|
import { BXRestMapResult, instanceOfiBXRestAnswerSuccess } from '../../../functions/mapResult';
|
|
3
5
|
import { HttpBXServices } from '../../http/HttpBX';
|
|
4
6
|
import { BXRestApiError, bxRestApiErrorFromHttp, getAuthRefreshError, parseBXRestErrorBody, } from '../../../functions/errors';
|
|
7
|
+
import { serializeBitrixParams } from '../../../functions/serializeBitrixParams';
|
|
8
|
+
/** Больше команд в одном запросе `batch` Bitrix не принимает. */
|
|
9
|
+
const BATCH_COMMANDS_LIMIT = 50;
|
|
10
|
+
/**
|
|
11
|
+
* Параметры остальных страниц для методов с постраничной навигацией через `start`.
|
|
12
|
+
* Отсчёт идёт от `start` самого запроса: первая страница уже получена именно с него.
|
|
13
|
+
*/
|
|
14
|
+
export function offsetPageParams(param, total, pageSize) {
|
|
15
|
+
const pages = [];
|
|
16
|
+
for (let start = (Number(param?.start) || 0) + pageSize; start < (total ?? 0); start += pageSize) {
|
|
17
|
+
pages.push({ ...clone(param), start });
|
|
18
|
+
}
|
|
19
|
+
return pages;
|
|
20
|
+
}
|
|
5
21
|
export class NavvyPagBase {
|
|
6
22
|
constructor(url, param, map = undefined, restApi = false) {
|
|
7
23
|
this.url = url;
|
|
@@ -45,13 +61,7 @@ export class NavvyPagBase {
|
|
|
45
61
|
}
|
|
46
62
|
mapAndError(request, options) {
|
|
47
63
|
const method = this.http.getNameMethod(this.url);
|
|
48
|
-
return request.pipe(
|
|
49
|
-
if (options?.throwOnApiError && v && !instanceOfiBXRestAnswerSuccess(v)) {
|
|
50
|
-
throw this.apiErrorFromBody(v);
|
|
51
|
-
}
|
|
52
|
-
return BXRestMapResult(v);
|
|
53
|
-
}), catchError((err) => {
|
|
54
|
-
console.error(err);
|
|
64
|
+
return request.pipe(catchError((err) => {
|
|
55
65
|
if (err instanceof BXRestApiError) {
|
|
56
66
|
throw err;
|
|
57
67
|
}
|
|
@@ -71,6 +81,14 @@ export class NavvyPagBase {
|
|
|
71
81
|
Object.assign(error, { authRefreshError });
|
|
72
82
|
}
|
|
73
83
|
throw error;
|
|
84
|
+
}), map(v => {
|
|
85
|
+
if (v && typeof v !== 'object') {
|
|
86
|
+
throw this.notRestAnswerError();
|
|
87
|
+
}
|
|
88
|
+
if (options?.throwOnApiError && v && !instanceOfiBXRestAnswerSuccess(v)) {
|
|
89
|
+
throw this.apiErrorFromBody(v);
|
|
90
|
+
}
|
|
91
|
+
return BXRestMapResult(v);
|
|
74
92
|
}));
|
|
75
93
|
}
|
|
76
94
|
/**
|
|
@@ -79,15 +97,51 @@ export class NavvyPagBase {
|
|
|
79
97
|
*/
|
|
80
98
|
resFirstPage() {
|
|
81
99
|
return this.resVanilla().pipe(map(v => {
|
|
82
|
-
if (v
|
|
100
|
+
if (!v || typeof v !== 'object') {
|
|
101
|
+
throw this.notRestAnswerError();
|
|
102
|
+
}
|
|
103
|
+
if (!instanceOfiBXRestAnswerSuccess(v)) {
|
|
83
104
|
throw this.apiErrorFromBody(v);
|
|
84
105
|
}
|
|
85
106
|
return v;
|
|
86
107
|
}));
|
|
87
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Остальные страницы для `.resAll()`, в порядке `params`. Команды уходят через `batch`,
|
|
111
|
+
* пакеты — по очереди. Ошибка любой страницы завершает весь запрос: неполный список
|
|
112
|
+
* выглядел бы для вызывающего кода как полный.
|
|
113
|
+
*/
|
|
114
|
+
resPages(params) {
|
|
115
|
+
const method = this.http.getNameMethod(this.url);
|
|
116
|
+
const commands = params.map(param => method + '?' + serializeBitrixParams(param));
|
|
117
|
+
const batches = [];
|
|
118
|
+
for (let i = 0; i < commands.length; i += BATCH_COMMANDS_LIMIT) {
|
|
119
|
+
batches.push(commands.slice(i, i + BATCH_COMMANDS_LIMIT));
|
|
120
|
+
}
|
|
121
|
+
return from(batches).pipe(concatMap(cmd => this.http.post(['batch'], { halt: 1, cmd }, false, this.requestHeaders)), map(answer => this.batchPages(answer)), toArray(), map(pages => pages.flat()));
|
|
122
|
+
}
|
|
123
|
+
batchPages(answer) {
|
|
124
|
+
if (!answer || typeof answer !== 'object') {
|
|
125
|
+
throw this.notRestAnswerError();
|
|
126
|
+
}
|
|
127
|
+
if (!instanceOfiBXRestAnswerSuccess(answer)) {
|
|
128
|
+
throw this.apiErrorFromBody(answer);
|
|
129
|
+
}
|
|
130
|
+
// Портал отдаёт result_error массивом, когда ошибок нет, и объектом с ключами команд, когда есть
|
|
131
|
+
const failed = Object.values(answer.result?.result_error ?? {})[0];
|
|
132
|
+
if (failed) {
|
|
133
|
+
const parsed = parseBXRestErrorBody(failed);
|
|
134
|
+
throw new BXRestApiError(parsed?.error, parsed?.error_description, { method: this.http.getNameMethod(this.url) });
|
|
135
|
+
}
|
|
136
|
+
return Object.values(answer.result?.result ?? {}).filter(Boolean);
|
|
137
|
+
}
|
|
138
|
+
// В тексте ошибки — только метод, без тела ответа: это может быть целая HTML-страница
|
|
139
|
+
notRestAnswerError() {
|
|
140
|
+
return new Error(`Bitrix24 answered ${this.http.getNameMethod(this.url)} with a body that is not a REST response.`);
|
|
141
|
+
}
|
|
88
142
|
apiErrorFromBody(v) {
|
|
89
143
|
const parsed = parseBXRestErrorBody(v);
|
|
90
144
|
return new BXRestApiError(parsed ? parsed.error : v.error, parsed ? parsed.error_description : v.error_description, { method: this.http.getNameMethod(this.url) });
|
|
91
145
|
}
|
|
92
146
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnktcGFnLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9uYXZ2eS9leHRlbmRzL25hdnZ5LXBhZy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVsRCxPQUFPLEVBQ0wsY0FBYyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixHQUNsRixNQUFNLDJCQUEyQixDQUFBO0FBaUJsQyxNQUFNLE9BQWdCLFlBQVk7SUFNaEMsWUFDWSxHQUFhLEVBQ2IsS0FBUSxFQUNSLE1BQTRELFNBQVMsRUFDckUsVUFBVSxLQUFLO1FBSGYsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQUc7UUFDUixRQUFHLEdBQUgsR0FBRyxDQUFrRTtRQUNyRSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBTjNCLGFBQVEsR0FBRyxFQUFFLENBQUEsQ0FBQyw4QkFBOEI7UUFRMUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFdBQVcsQ0FBQyxPQUErQjtRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUE7UUFDNUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJ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LElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEMsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxDQUFxQjtRQUM1QyxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxPQUFPLElBQUksY0FBYyxDQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQ3ZELEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUM5QyxDQUFBO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGlCWFJlc3RBbnN3ZXIsIGlCWFJlc3RBbnN3ZXJFcnJvciB9IGZyb20gJy4uLy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYW5zd2VyJ1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgQlhSZXN0TWFwUmVzdWx0LCBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvbWFwUmVzdWx0J1xyXG5pbXBvcnQgeyBIdHRwQlhTZXJ2aWNlcyB9IGZyb20gJy4uLy4uL2h0dHAvSHR0cEJYJ1xyXG5pbXBvcnQgeyBSZXR1cm5UeXBlTmF2dnkgfSBmcm9tICcuLi9uYXZ2eS1zdXBwb3J0J1xyXG5pbXBvcnQge1xyXG4gIEJYUmVzdEFwaUVycm9yLCBieFJlc3RBcGlFcnJvckZyb21IdHRwLCBnZXRBdXRoUmVmcmVzaEVycm9yLCBwYXJzZUJYUmVzdEVycm9yQm9keSxcclxufSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvZXJyb3JzJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCWFJlc3RSZXNPcHRpb25zIHtcclxuICAvKipcclxuICAgKiBXaGVuIGB0cnVlYCwgYSBCaXRyaXgtbGV2ZWwgQVBJIGVycm9yIHRoYXQgY29tZXMgaW4gdGhlIGJvZHkgb2YgYSAyeHhcclxuICAgKiByZXNwb25zZSBtYWtlcyB0aGUgYE9ic2VydmFibGVgIHJldHVybmVkIGJ5IGAucmVzKClgIGVycm9yIG91dCB3aXRoIGFcclxuICAgKiBgQlhSZXN0QXBpRXJyb3JgIGluc3RlYWQgb2YgcmVzb2x2aW5nIHdpdGggYHVuZGVmaW5lZGAuXHJcbiAgICpcclxuICAgKiBFcnJvcnMgdGhhdCBCaXRyaXggc2VuZHMgd2l0aCBhIG5vbi0yeHggSFRUUCBzdGF0dXMgKG1vc3Qgb2YgdGhlbSwgZS5nLlxyXG4gICAqIGBleHBpcmVkX3Rva2VuYCwgYElOU1VGRklDSUVOVF9TQ09QRWApIGZhaWwgd2l0aCBgQlhSZXN0QXBpRXJyb3JgXHJcbiAgICogcmVnYXJkbGVzcyBvZiB0aGlzIG9wdGlvbi5cclxuICAgKlxyXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKHByZXNlcnZlcyB0aGUgaGlzdG9yaWNhbCBgLnJlcygpYCBiZWhhdmlvdXIpLlxyXG4gICAqL1xyXG4gIHRocm93T25BcGlFcnJvcj86IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdnZ5UGFnQmFzZTxULCBSLCBQPiB7XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBodHRwOiBIdHRwQlhTZXJ2aWNlc1xyXG4gIHByb3RlY3RlZCByZXF1ZXN0SGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cclxuICBwYWdlU2l6ZSA9IDUwIC8vINGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0YDQsNC30LzQtdGAINGB0YLRgNCw0L3QuNGG0YtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHVybDogc3RyaW5nW10sXHJcbiAgICBwcm90ZWN0ZWQgcGFyYW06IFAsXHJcbiAgICBwcm90ZWN0ZWQgbWFwOiAoKHBhcmFtOiBUfCB1bmRlZmluZWQpID0+IFIgfCB1bmRlZmluZWQpIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxyXG4gICAgcHJvdGVjdGVkIHJlc3RBcGkgPSBmYWxzZVxyXG4gICkge1xyXG4gICAgdGhpcy5odHRwID0gbmV3IEh0dHBCWFNlcnZpY2VzKClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhUVFAt0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCDigJQg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqICjQv9GA0Lgg0YHQvtCy0L/QsNC00LXQvdC40Lgg0LjQvNC10L3QuCDQv9C+0LHQtdC20LTQsNC10YIg0LfQvdCw0YfQtdC90LjQtSDQvtGC0YHRjtC00LApLiDQn9C+0LLRgtC+0YDQvdGL0LUg0LLRi9C30L7QstGLXHJcbiAgICog0LTQvtC/0L7Qu9C90Y/RjtGCINGD0LbQtSDQt9Cw0LTQsNC90L3Ri9C1INC30LDQs9C+0LvQvtCy0LrQuC4g0JTQtdC50YHRgtCy0YPQtdGCINC90LAgYC5yZXMoKWAsIGAucmVzVmFuaWxsYSgpYCxcclxuICAgKiBgLm1hcEZvclZhbmlsbGEoKWAg0Lgg0L3QsCDQstGB0LUgYmF0Y2gt0LfQsNC/0YDQvtGB0YsgYC5yZXNBbGwoKWAuXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGJ4LmNybS5kZWFsLmxpc3QoeyAuLi4gfSkud2l0aEhlYWRlcnMoeyAnWC1SZXF1ZXN0LVNvdXJjZSc6ICdyZXBvcnQnIH0pLnJlc0FsbCgpXHJcbiAgICovXHJcbiAgd2l0aEhlYWRlcnMoaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHRoaXMge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGVhZGVycyA9IHsgLi4udGhpcy5yZXF1ZXN0SGVhZGVycywgLi4uaGVhZGVycyB9XHJcbiAgICByZXR1cm4gdGhpc1xyXG4gIH1cclxuXHJcbiAgcmVzVmFuaWxsYSgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLnVybCwgdGhpcy5wYXJhbSwgdGhpcy5yZXN0QXBpLCB0aGlzLnJlcXVlc3RIZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgbWFwRm9yVmFuaWxsYSgpOiBPYnNlcnZhYmxlPGlCWFJlc3RBbnN3ZXI8UmV0dXJuVHlwZU5hdnZ5PFQsIFI+PiB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzVmFuaWxsYSgpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICAgIGlmICh2ICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2Vzcyh2KSAmJiB0aGlzLm1hcCkge1xyXG4gICAgICAgICAgICAvLyDQn9GA0LjQvNC10L3Rj9C10LwgdGhpcy5tYXAg0Lgg0Y/QstC90L4g0L/RgNC40LLQvtC00LjQvCDRgtC40L8g0YDQtdC30YPQu9GM0YLQsNGC0LBcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tYXAodi5yZXN1bHQgYXMgVCkgYXMgUmV0dXJuVHlwZU5hdnZ5PFQsIFI+XHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnYsIC4uLntyZXN1bHQ6IHJlc3VsdH0gfSBhcyBpQlhSZXN0QW5zd2VyPFJldHVyblR5cGVOYXZ2eTxULCBSPj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB2IGFzIGlCWFJlc3RBbnN3ZXI8UmV0dXJuVHlwZU5hdnZ5PFQsIFI+PiB8IHVuZGVmaW5lZFxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICB9XHJcblxyXG4gIHJlcyhvcHRpb25zPzogQlhSZXN0UmVzT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwQW5kRXJyb3IodGhpcy5yZXNWYW5pbGxhKCksIG9wdGlvbnMpLnBpcGUoXHJcbiAgICAgIG1hcCh2ID0+ICh2ICYmIHRoaXMubWFwKVxyXG4gICAgICAgID8gdGhpcy5tYXAodilcclxuICAgICAgICA6IHZcclxuICAgICAgKVxyXG4gICAgKSBhcyBPYnNlcnZhYmxlPFJldHVyblR5cGVOYXZ2eTxULCBSPiB8IHVuZGVmaW5lZD5cclxuICB9XHJcblxyXG4gIG1hcEFuZEVycm9yPFQ+KFxyXG4gICAgcmVxdWVzdDogT2JzZXJ2YWJsZTxpQlhSZXN0QW5zd2VyPFQ+IHwgdW5kZWZpbmVkPixcclxuICAgIG9wdGlvbnM/OiBCWFJlc3RSZXNPcHRpb25zXHJcbiAgKSB7XHJcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmh0dHAuZ2V0TmFtZU1ldGhvZCh0aGlzLnVybClcclxuICAgIHJldHVybiByZXF1ZXN0LnBpcGUoXHJcbiAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICBpZiAob3B0aW9ucz8udGhyb3dPbkFwaUVycm9yICYmIHYgJiYgIWluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2Vzcyh2KSkge1xyXG4gICAgICAgICAgdGhyb3cgdGhpcy5hcGlFcnJvckZyb21Cb2R5KHYpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBCWFJlc3RNYXBSZXN1bHQodilcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXHJcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEJYUmVzdEFwaUVycm9yKSB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g0JHQvtC70YzRiNC40L3RgdGC0LLQviDQvtGI0LjQsdC+0LogQml0cml4INC/0YDQuNGF0L7QtNC40YIg0YHQviDRgdGC0LDRgtGD0YHQvtC8INC90LUgMnh4LCDQuCBheGlvc1xyXG4gICAgICAgIC8vINC+0YLQutC70L7QvdGP0LXRgiDRgtCw0LrQvtC5INC+0YLQstC10YIg4oCUINC00L7RgdGC0LDRkdC8INC40Lcg0L3QtdCz0L4g0LrQvtC0INC4INC+0L/QuNGB0LDQvdC40LUg0L7RiNC40LHQutC4LFxyXG4gICAgICAgIC8vINCwINC90LUg0L7RgtC00LDRkdC8INCx0LXQt9C70LjQutC+0LUgXCJBeGlvc0Vycm9yOiBSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDQwMFwiLlxyXG4gICAgICAgIGNvbnN0IGFwaUVycm9yID0gYnhSZXN0QXBpRXJyb3JGcm9tSHR0cChlcnIsIG1ldGhvZClcclxuICAgICAgICBpZiAoYXBpRXJyb3IpIHtcclxuICAgICAgICAgIHRocm93IGFwaUVycm9yXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vINCh0L7QvtCx0YnQtdC90LjQtSDQv9GA0LXQttC90LXQtSwg0L3QviDQuNGB0YXQvtC00L3QsNGPINC+0YjQuNCx0LrQsCDQvtGB0YLQsNGR0YLRgdGPINCyIGNhdXNlIOKAlCDQsdC10Lcg0L3QtdGRXHJcbiAgICAgICAgLy8g0YLQtdGA0Y/Qu9GB0Y8gSFRUUC3RgdGC0LDRgtGD0YEg0L7RgtCy0LXRgtCwINC90LUg0L7RgiBCaXRyaXggKNC90LDQv9GA0LjQvNC10YAsINC/0YPRgdGC0L7Qs9C+IDQwMSDQvtGCXHJcbiAgICAgICAgLy8g0LHRjdC60LXQvdC0LdC/0YDQvtC60YHQuCk6INC+0L0g0LHRi9C7INGC0L7Qu9GM0LrQviDQsiDRgtC10LrRgdGC0LUg0YHQvtC+0LHRidC10L3QuNGPLlxyXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKChlcnIuZXJyb3IpID8gZXJyLmVycm9yIDogZXJyLCB7IGNhdXNlOiBlcnIgfSlcclxuICAgICAgICBjb25zdCBhdXRoUmVmcmVzaEVycm9yID0gZ2V0QXV0aFJlZnJlc2hFcnJvcihlcnIpXHJcbiAgICAgICAgaWYgKGF1dGhSZWZyZXNoRXJyb3IgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihlcnJvciwgeyBhdXRoUmVmcmVzaEVycm9yIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IGVycm9yXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQn9C10YDQstCw0Y8g0YHRgtGA0LDQvdC40YbQsCDQtNC70Y8gYC5yZXNBbGwoKWAuINCe0YjQuNCx0LrQsCBCaXRyaXgg0LIg0YLQtdC70LUg0L7RgtCy0LXRgtCwIDJ4eCDRgdGC0LDQvdC+0LLQuNGC0YHRjyBgQlhSZXN0QXBpRXJyb3JgOlxyXG4gICAqINGB0YLRgNCw0L3QuNGGINCyINGC0LDQutC+0Lwg0L7RgtCy0LXRgtC1INC90LXRgiwg0Lgg0LHQtdC3INGN0YLQvtCz0L4gYC5yZXNBbGwoKWAg0LfQsNCy0LXRgNGI0LjQu9GB0Y8g0LHRiyDQsdC10LfQu9C40LrQuNC8IGBFbXB0eUVycm9yYC5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcmVzRmlyc3RQYWdlKCk6IE9ic2VydmFibGU8aUJYUmVzdEFuc3dlcjxUPiB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzVmFuaWxsYSgpLnBpcGUoXHJcbiAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICBpZiAodiAmJiAhaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKHYpKSB7XHJcbiAgICAgICAgICB0aHJvdyB0aGlzLmFwaUVycm9yRnJvbUJvZHkodilcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBpRXJyb3JGcm9tQm9keSh2OiBpQlhSZXN0QW5zd2VyRXJyb3IpIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlQlhSZXN0RXJyb3JCb2R5KHYpXHJcbiAgICByZXR1cm4gbmV3IEJYUmVzdEFwaUVycm9yKFxyXG4gICAgICBwYXJzZWQgPyBwYXJzZWQuZXJyb3IgOiB2LmVycm9yLFxyXG4gICAgICBwYXJzZWQgPyBwYXJzZWQuZXJyb3JfZGVzY3JpcHRpb24gOiB2LmVycm9yX2Rlc2NyaXB0aW9uLFxyXG4gICAgICB7IG1ldGhvZDogdGhpcy5odHRwLmdldE5hbWVNZXRob2QodGhpcy51cmwpIH1cclxuICAgIClcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnktcGFnLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9uYXZ2eS9leHRlbmRzL25hdnZ5LXBhZy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2hELE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWxELE9BQU8sRUFDTCxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEdBQ2xGLE1BQU0sMkJBQTJCLENBQUE7QUFHbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUE7QUFFaEYsaUVBQWlFO0FBQ2pFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFBO0FBaUIvQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQThCLEtBQVEsRUFBRSxLQUF5QixFQUFFLFFBQWdCO0lBQ2pILE1BQU0sS0FBSyxHQUFRLEVBQUUsQ0FBQTtJQUNyQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNqRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVB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Q0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUMvQixNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUN2RCxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDOUMsQ0FBQTtJQUNILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmNhdE1hcCwgZnJvbSwgT2JzZXJ2YWJsZSwgdG9BcnJheSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBpQlhSZXN0QW5zd2VyLCBpQlhSZXN0QW5zd2VyRXJyb3IsIGlCWFJlc3RBbnN3ZXJTdWNjZXNzIH0gZnJvbSAnLi4vLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9hbnN3ZXInXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xuaW1wb3J0IHsgQlhSZXN0TWFwUmVzdWx0LCBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvbWFwUmVzdWx0J1xuaW1wb3J0IHsgSHR0cEJYU2VydmljZXMgfSBmcm9tICcuLi8uLi9odHRwL0h0dHBCWCdcbmltcG9ydCB7IFJldHVyblR5cGVOYXZ2eSB9IGZyb20gJy4uL25hdnZ5LXN1cHBvcnQnXG5pbXBvcnQge1xuICBCWFJlc3RBcGlFcnJvciwgYnhSZXN0QXBpRXJyb3JGcm9tSHR0cCwgZ2V0QXV0aFJlZnJlc2hFcnJvciwgcGFyc2VCWFJlc3RFcnJvckJvZHksXG59IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9lcnJvcnMnXG5pbXBvcnQgeyBpQlhSZXN0UGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYXBpLXBhZ2luYXRpb24tYngnXG5pbXBvcnQgeyBpQlhSZXN0QmF0Y2ggfSBmcm9tICcuLi8uLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXRjaCdcbmltcG9ydCB7IHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9zZXJpYWxpemVCaXRyaXhQYXJhbXMnXG5cbi8qKiDQkdC+0LvRjNGI0LUg0LrQvtC80LDQvdC0INCyINC+0LTQvdC+0Lwg0LfQsNC/0YDQvtGB0LUgYGJhdGNoYCBCaXRyaXgg0L3QtSDQv9GA0LjQvdC40LzQsNC10YIuICovXG5jb25zdCBCQVRDSF9DT01NQU5EU19MSU1JVCA9IDUwXG5cbmV4cG9ydCBpbnRlcmZhY2UgQlhSZXN0UmVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgYSBCaXRyaXgtbGV2ZWwgQVBJIGVycm9yIHRoYXQgY29tZXMgaW4gdGhlIGJvZHkgb2YgYSAyeHhcbiAgICogcmVzcG9uc2UgbWFrZXMgdGhlIGBPYnNlcnZhYmxlYCByZXR1cm5lZCBieSBgLnJlcygpYCBlcnJvciBvdXQgd2l0aCBhXG4gICAqIGBCWFJlc3RBcGlFcnJvcmAgaW5zdGVhZCBvZiByZXNvbHZpbmcgd2l0aCBgdW5kZWZpbmVkYC5cbiAgICpcbiAgICogRXJyb3JzIHRoYXQgQml0cml4IHNlbmRzIHdpdGggYSBub24tMnh4IEhUVFAgc3RhdHVzIChtb3N0IG9mIHRoZW0sIGUuZy5cbiAgICogYGV4cGlyZWRfdG9rZW5gLCBgSU5TVUZGSUNJRU5UX1NDT1BFYCkgZmFpbCB3aXRoIGBCWFJlc3RBcGlFcnJvcmBcbiAgICogcmVnYXJkbGVzcyBvZiB0aGlzIG9wdGlvbi5cbiAgICpcbiAgICogRGVmYXVsdDogYGZhbHNlYCAocHJlc2VydmVzIHRoZSBoaXN0b3JpY2FsIGAucmVzKClgIGJlaGF2aW91cikuXG4gICAqL1xuICB0aHJvd09uQXBpRXJyb3I/OiBib29sZWFuXG59XG5cbi8qKlxuICog0J/QsNGA0LDQvNC10YLRgNGLINC+0YHRgtCw0LvRjNC90YvRhSDRgdGC0YDQsNC90LjRhiDQtNC70Y8g0LzQtdGC0L7QtNC+0LIg0YEg0L/QvtGB0YLRgNCw0L3QuNGH0L3QvtC5INC90LDQstC40LPQsNGG0LjQtdC5INGH0LXRgNC10LcgYHN0YXJ0YC5cbiAqINCe0YLRgdGH0ZHRgiDQuNC00ZHRgiDQvtGCIGBzdGFydGAg0YHQsNC80L7Qs9C+INC30LDQv9GA0L7RgdCwOiDQv9C10YDQstCw0Y8g0YHRgtGA0LDQvdC40YbQsCDRg9C20LUg0L/QvtC70YPRh9C10L3QsCDQuNC80LXQvdC90L4g0YEg0L3QtdCz0L4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZmZzZXRQYWdlUGFyYW1zPFAgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbj4ocGFyYW06IFAsIHRvdGFsOiBudW1iZXIgfCB1bmRlZmluZWQsIHBhZ2VTaXplOiBudW1iZXIpOiBQW10ge1xuICBjb25zdCBwYWdlczogUFtdID0gW11cbiAgZm9yIChsZXQgc3RhcnQgPSAoTnVtYmVyKHBhcmFtPy5zdGFydCkgfHwgMCkgKyBwYWdlU2l6ZTsgc3RhcnQgPCAodG90YWwgPz8gMCk7IHN0YXJ0ICs9IHBhZ2VTaXplKSB7XG4gICAgcGFnZXMucHVzaCh7IC4uLmNsb25lKHBhcmFtKSwgc3RhcnQgfSlcbiAgfVxuICByZXR1cm4gcGFnZXNcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdnZ5UGFnQmFzZTxULCBSLCBQPiB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHA6IEh0dHBCWFNlcnZpY2VzXG4gIHByb3RlY3RlZCByZXF1ZXN0SGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgcGFnZVNpemUgPSA1MCAvLyDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INGA0LDQt9C80LXRgCDRgdGC0YDQsNC90LjRhtGLXG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB1cmw6IHN0cmluZ1tdLFxuICAgIHByb3RlY3RlZCBwYXJhbTogUCxcbiAgICBwcm90ZWN0ZWQgbWFwOiAoKHBhcmFtOiBUfCB1bmRlZmluZWQpID0+IFIgfCB1bmRlZmluZWQpIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIHByb3RlY3RlZCByZXN0QXBpID0gZmFsc2VcbiAgKSB7XG4gICAgdGhpcy5odHRwID0gbmV3IEh0dHBCWFNlcnZpY2VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBIVFRQLdC30LDQs9C+0LvQvtCy0LrQuCDRgtC+0LvRjNC60L4g0LTQu9GPINGN0YLQvtCz0L4g0LfQsNC/0YDQvtGB0LAg4oCUINC/0L7QstC10YDRhSBgQlhSZXN0U2V0dGluZ3MuaGVhZGVyc2BcbiAgICogKNC/0YDQuCDRgdC+0LLQv9Cw0LTQtdC90LjQuCDQuNC80LXQvdC4INC/0L7QsdC10LbQtNCw0LXRgiDQt9C90LDRh9C10L3QuNC1INC+0YLRgdGO0LTQsCkuINCf0L7QstGC0L7RgNC90YvQtSDQstGL0LfQvtCy0YtcbiAgICog0LTQvtC/0L7Qu9C90Y/RjtGCINGD0LbQtSDQt9Cw0LTQsNC90L3Ri9C1INC30LDQs9C+0LvQvtCy0LrQuC4g0JTQtdC50YHRgtCy0YPQtdGCINC90LAgYC5yZXMoKWAsIGAucmVzVmFuaWxsYSgpYCxcbiAgICogYC5tYXBGb3JWYW5pbGxhKClgINC4INC90LAg0LLRgdC1IGJhdGNoLdC30LDQv9GA0L7RgdGLIGAucmVzQWxsKClgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBieC5jcm0uZGVhbC5saXN0KHsgLi4uIH0pLndpdGhIZWFkZXJzKHsgJ1gtUmVxdWVzdC1Tb3VyY2UnOiAncmVwb3J0JyB9KS5yZXNBbGwoKVxuICAgKi9cbiAgd2l0aEhlYWRlcnMoaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHRoaXMge1xuICAgIHRoaXMucmVxdWVzdEhlYWRlcnMgPSB7IC4uLnRoaXMucmVxdWVzdEhlYWRlcnMsIC4uLmhlYWRlcnMgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICByZXNWYW5pbGxhKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLnVybCwgdGhpcy5wYXJhbSwgdGhpcy5yZXN0QXBpLCB0aGlzLnJlcXVlc3RIZWFkZXJzKVxuICB9XG5cbiAgbWFwRm9yVmFuaWxsYSgpOiBPYnNlcnZhYmxlPGlCWFJlc3RBbnN3ZXI8UmV0dXJuVHlwZU5hdnZ5PFQsIFI+PiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLnJlc1ZhbmlsbGEoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgICBpZiAodiAmJiBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3ModikgJiYgdGhpcy5tYXApIHtcbiAgICAgICAgICAgIC8vINCf0YDQuNC80LXQvdGP0LXQvCB0aGlzLm1hcCDQuCDRj9Cy0L3QviDQv9GA0LjQstC+0LTQuNC8INGC0LjQvyDRgNC10LfRg9C70YzRgtCw0YLQsFxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tYXAodi5yZXN1bHQgYXMgVCkgYXMgUmV0dXJuVHlwZU5hdnZ5PFQsIFI+XG4gICAgICAgICAgICByZXR1cm4geyAuLi52LCAuLi57cmVzdWx0OiByZXN1bHR9IH0gYXMgaUJYUmVzdEFuc3dlcjxSZXR1cm5UeXBlTmF2dnk8VCwgUj4+XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2IGFzIGlCWFJlc3RBbnN3ZXI8UmV0dXJuVHlwZU5hdnZ5PFQsIFI+PiB8IHVuZGVmaW5lZFxuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgcmVzKG9wdGlvbnM/OiBCWFJlc3RSZXNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwQW5kRXJyb3IodGhpcy5yZXNWYW5pbGxhKCksIG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAodiA9PiAodiAmJiB0aGlzLm1hcClcbiAgICAgICAgPyB0aGlzLm1hcCh2KVxuICAgICAgICA6IHZcbiAgICAgIClcbiAgICApIGFzIE9ic2VydmFibGU8UmV0dXJuVHlwZU5hdnZ5PFQsIFI+IHwgdW5kZWZpbmVkPlxuICB9XG5cbiAgbWFwQW5kRXJyb3I8VD4oXG4gICAgcmVxdWVzdDogT2JzZXJ2YWJsZTxpQlhSZXN0QW5zd2VyPFQ+IHwgdW5kZWZpbmVkPixcbiAgICBvcHRpb25zPzogQlhSZXN0UmVzT3B0aW9uc1xuICApIHtcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmh0dHAuZ2V0TmFtZU1ldGhvZCh0aGlzLnVybClcbiAgICByZXR1cm4gcmVxdWVzdC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEJYUmVzdEFwaUVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgZXJyXG4gICAgICAgIH1cbiAgICAgICAgLy8g0JHQvtC70YzRiNC40L3RgdGC0LLQviDQvtGI0LjQsdC+0LogQml0cml4INC/0YDQuNGF0L7QtNC40YIg0YHQviDRgdGC0LDRgtGD0YHQvtC8INC90LUgMnh4LCDQuCBheGlvc1xuICAgICAgICAvLyDQvtGC0LrQu9C+0L3Rj9C10YIg0YLQsNC60L7QuSDQvtGC0LLQtdGCIOKAlCDQtNC+0YHRgtCw0ZHQvCDQuNC3INC90LXQs9C+INC60L7QtCDQuCDQvtC/0LjRgdCw0L3QuNC1INC+0YjQuNCx0LrQuCxcbiAgICAgICAgLy8g0LAg0L3QtSDQvtGC0LTQsNGR0Lwg0LHQtdC30LvQuNC60L7QtSBcIkF4aW9zRXJyb3I6IFJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgNDAwXCIuXG4gICAgICAgIGNvbnN0IGFwaUVycm9yID0gYnhSZXN0QXBpRXJyb3JGcm9tSHR0cChlcnIsIG1ldGhvZClcbiAgICAgICAgaWYgKGFwaUVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgYXBpRXJyb3JcbiAgICAgICAgfVxuICAgICAgICAvLyDQodC+0L7QsdGJ0LXQvdC40LUg0L/RgNC10LbQvdC10LUsINC90L4g0LjRgdGF0L7QtNC90LDRjyDQvtGI0LjQsdC60LAg0L7RgdGC0LDRkdGC0YHRjyDQsiBjYXVzZSDigJQg0LHQtdC3INC90LXRkVxuICAgICAgICAvLyDRgtC10YDRj9C70YHRjyBIVFRQLdGB0YLQsNGC0YPRgSDQvtGC0LLQtdGC0LAg0L3QtSDQvtGCIEJpdHJpeCAo0L3QsNC/0YDQuNC80LXRgCwg0L/Rg9GB0YLQvtCz0L4gNDAxINC+0YJcbiAgICAgICAgLy8g0LHRjdC60LXQvdC0LdC/0YDQvtC60YHQuCk6INC+0L0g0LHRi9C7INGC0L7Qu9GM0LrQviDQsiDRgtC10LrRgdGC0LUg0YHQvtC+0LHRidC10L3QuNGPLlxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigoZXJyLmVycm9yKSA/IGVyci5lcnJvciA6IGVyciwgeyBjYXVzZTogZXJyIH0pXG4gICAgICAgIGNvbnN0IGF1dGhSZWZyZXNoRXJyb3IgPSBnZXRBdXRoUmVmcmVzaEVycm9yKGVycilcbiAgICAgICAgaWYgKGF1dGhSZWZyZXNoRXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXJyb3IsIHsgYXV0aFJlZnJlc2hFcnJvciB9KVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KSxcbiAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgaWYgKHYgJiYgdHlwZW9mIHYgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhyb3cgdGhpcy5ub3RSZXN0QW5zd2VyRXJyb3IoKVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zPy50aHJvd09uQXBpRXJyb3IgJiYgdiAmJiAhaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKHYpKSB7XG4gICAgICAgICAgdGhyb3cgdGhpcy5hcGlFcnJvckZyb21Cb2R5KHYpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEJYUmVzdE1hcFJlc3VsdCh2KVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICog0J/QtdGA0LLQsNGPINGB0YLRgNCw0L3QuNGG0LAg0LTQu9GPIGAucmVzQWxsKClgLiDQntGI0LjQsdC60LAgQml0cml4INCyINGC0LXQu9C1INC+0YLQstC10YLQsCAyeHgg0YHRgtCw0L3QvtCy0LjRgtGB0Y8gYEJYUmVzdEFwaUVycm9yYDpcbiAgICog0YHRgtGA0LDQvdC40YYg0LIg0YLQsNC60L7QvCDQvtGC0LLQtdGC0LUg0L3QtdGCLCDQuCDQsdC10Lcg0Y3RgtC+0LPQviBgLnJlc0FsbCgpYCDQt9Cw0LLQtdGA0YjQuNC70YHRjyDQsdGLINCx0LXQt9C70LjQutC40LwgYEVtcHR5RXJyb3JgLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc0ZpcnN0UGFnZSgpOiBPYnNlcnZhYmxlPGlCWFJlc3RBbnN3ZXJTdWNjZXNzPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVzVmFuaWxsYSgpLnBpcGUoXG4gICAgICBtYXAodiA9PiB7XG4gICAgICAgIGlmICghdiB8fCB0eXBlb2YgdiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aHJvdyB0aGlzLm5vdFJlc3RBbnN3ZXJFcnJvcigpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3M8VD4odikpIHtcbiAgICAgICAgICB0aHJvdyB0aGlzLmFwaUVycm9yRnJvbUJvZHkodilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdlxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICog0J7RgdGC0LDQu9GM0L3Ri9C1INGB0YLRgNCw0L3QuNGG0Ysg0LTQu9GPIGAucmVzQWxsKClgLCDQsiDQv9C+0YDRj9C00LrQtSBgcGFyYW1zYC4g0JrQvtC80LDQvdC00Ysg0YPRhdC+0LTRj9GCINGH0LXRgNC10LcgYGJhdGNoYCxcbiAgICog0L/QsNC60LXRgtGLIOKAlCDQv9C+INC+0YfQtdGA0LXQtNC4LiDQntGI0LjQsdC60LAg0LvRjtCx0L7QuSDRgdGC0YDQsNC90LjRhtGLINC30LDQstC10YDRiNCw0LXRgiDQstC10YHRjCDQt9Cw0L/RgNC+0YE6INC90LXQv9C+0LvQvdGL0Lkg0YHQv9C40YHQvtC6XG4gICAqINCy0YvQs9C70Y/QtNC10Lsg0LHRiyDQtNC70Y8g0LLRi9C30YvQstCw0Y7RidC10LPQviDQutC+0LTQsCDQutCw0Log0L/QvtC70L3Ri9C5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc1BhZ2VzPFBhZ2U+KHBhcmFtczogUFtdKTogT2JzZXJ2YWJsZTxQYWdlW10+IHtcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmh0dHAuZ2V0TmFtZU1ldGhvZCh0aGlzLnVybClcbiAgICBjb25zdCBjb21tYW5kcyA9IHBhcmFtcy5tYXAocGFyYW0gPT4gbWV0aG9kICsgJz8nICsgc2VyaWFsaXplQml0cml4UGFyYW1zKHBhcmFtKSlcbiAgICBjb25zdCBiYXRjaGVzOiBzdHJpbmdbXVtdID0gW11cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tbWFuZHMubGVuZ3RoOyBpICs9IEJBVENIX0NPTU1BTkRTX0xJTUlUKSB7XG4gICAgICBiYXRjaGVzLnB1c2goY29tbWFuZHMuc2xpY2UoaSwgaSArIEJBVENIX0NPTU1BTkRTX0xJTUlUKSlcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShiYXRjaGVzKS5waXBlKFxuICAgICAgY29uY2F0TWFwKGNtZCA9PiB0aGlzLmh0dHAucG9zdDxpQlhSZXN0QmF0Y2g8UGFnZVtdPj4oWydiYXRjaCddLCB7IGhhbHQ6IDEsIGNtZCB9LCBmYWxzZSwgdGhpcy5yZXF1ZXN0SGVhZGVycykpLFxuICAgICAgbWFwKGFuc3dlciA9PiB0aGlzLmJhdGNoUGFnZXM8UGFnZT4oYW5zd2VyKSksXG4gICAgICB0b0FycmF5KCksXG4gICAgICBtYXAocGFnZXMgPT4gcGFnZXMuZmxhdCgpIGFzIFBhZ2VbXSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGJhdGNoUGFnZXM8UGFnZT4oYW5zd2VyOiBpQlhSZXN0QW5zd2VyPGlCWFJlc3RCYXRjaDxQYWdlW10+PiB8IHVuZGVmaW5lZCk6IFBhZ2VbXSB7XG4gICAgaWYgKCFhbnN3ZXIgfHwgdHlwZW9mIGFuc3dlciAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IHRoaXMubm90UmVzdEFuc3dlckVycm9yKClcbiAgICB9XG4gICAgaWYgKCFpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3M8aUJYUmVzdEJhdGNoPFBhZ2VbXT4+KGFuc3dlcikpIHtcbiAgICAgIHRocm93IHRoaXMuYXBpRXJyb3JGcm9tQm9keShhbnN3ZXIpXG4gICAgfVxuICAgIC8vINCf0L7RgNGC0LDQuyDQvtGC0LTQsNGR0YIgcmVzdWx0X2Vycm9yINC80LDRgdGB0LjQstC+0LwsINC60L7Qs9C00LAg0L7RiNC40LHQvtC6INC90LXRgiwg0Lgg0L7QsdGK0LXQutGC0L7QvCDRgSDQutC70Y7Rh9Cw0LzQuCDQutC+0LzQsNC90LQsINC60L7Qs9C00LAg0LXRgdGC0YxcbiAgICBjb25zdCBmYWlsZWQgPSBPYmplY3QudmFsdWVzKGFuc3dlci5yZXN1bHQ/LnJlc3VsdF9lcnJvciA/PyB7fSlbMF1cbiAgICBpZiAoZmFpbGVkKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUJYUmVzdEVycm9yQm9keShmYWlsZWQpXG4gICAgICB0aHJvdyBuZXcgQlhSZXN0QXBpRXJyb3IocGFyc2VkPy5lcnJvciwgcGFyc2VkPy5lcnJvcl9kZXNjcmlwdGlvbiwgeyBtZXRob2Q6IHRoaXMuaHR0cC5nZXROYW1lTWV0aG9kKHRoaXMudXJsKSB9KVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhhbnN3ZXIucmVzdWx0Py5yZXN1bHQgPz8ge30pLmZpbHRlcihCb29sZWFuKSBhcyBQYWdlW11cbiAgfVxuXG4gIC8vINCSINGC0LXQutGB0YLQtSDQvtGI0LjQsdC60Lgg4oCUINGC0L7Qu9GM0LrQviDQvNC10YLQvtC0LCDQsdC10Lcg0YLQtdC70LAg0L7RgtCy0LXRgtCwOiDRjdGC0L4g0LzQvtC20LXRgiDQsdGL0YLRjCDRhtC10LvQsNGPIEhUTUwt0YHRgtGA0LDQvdC40YbQsFxuICBwcml2YXRlIG5vdFJlc3RBbnN3ZXJFcnJvcigpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKGBCaXRyaXgyNCBhbnN3ZXJlZCAke3RoaXMuaHR0cC5nZXROYW1lTWV0aG9kKHRoaXMudXJsKX0gd2l0aCBhIGJvZHkgdGhhdCBpcyBub3QgYSBSRVNUIHJlc3BvbnNlLmApXG4gIH1cblxuICBwcml2YXRlIGFwaUVycm9yRnJvbUJvZHkodjogaUJYUmVzdEFuc3dlckVycm9yKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VCWFJlc3RFcnJvckJvZHkodilcbiAgICByZXR1cm4gbmV3IEJYUmVzdEFwaUVycm9yKFxuICAgICAgcGFyc2VkID8gcGFyc2VkLmVycm9yIDogdi5lcnJvcixcbiAgICAgIHBhcnNlZCA/IHBhcnNlZC5lcnJvcl9kZXNjcmlwdGlvbiA6IHYuZXJyb3JfZGVzY3JpcHRpb24sXG4gICAgICB7IG1ldGhvZDogdGhpcy5odHRwLmdldE5hbWVNZXRob2QodGhpcy51cmwpIH1cbiAgICApXG4gIH1cblxufVxuIl19
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mergeMap, shareReplay } from 'rxjs';
|
|
2
2
|
import clone from 'just-clone';
|
|
3
|
-
import {
|
|
4
|
-
import { instanceOfiBXRestAnswerSuccess } from '../../functions/mapResult';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
5
4
|
import { NavvyPagBase } from './extends/navvy-pag-base';
|
|
6
|
-
import { serializeBitrixParams } from '../../functions/serializeBitrixParams';
|
|
7
|
-
import { BXRest } from '../../rest/base';
|
|
8
5
|
/**
|
|
9
6
|
* Класс-прослойка-обработчик для методов работающих на альтернативной постраничной навигации тика как методы по
|
|
10
7
|
* затраченному времени на задачи https://dev.1c-bitrix.ru/rest_help/tasks/task/elapseditem/index.php
|
|
@@ -13,72 +10,25 @@ import { BXRest } from '../../rest/base';
|
|
|
13
10
|
*/
|
|
14
11
|
export class NavvyAlterPagNav extends NavvyPagBase {
|
|
15
12
|
resAll() {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return save;
|
|
23
|
-
}), last(), shareReplay(1));
|
|
13
|
+
return this.resFirstPage().pipe(mergeMap(first => this.resPages(first.next ? this.pageParams(first.total) : []).pipe(map(pages => {
|
|
14
|
+
const items = [first.result ?? [], ...pages].flat();
|
|
15
|
+
return ((this.map ? this.map(items) : items) ?? []);
|
|
16
|
+
}))),
|
|
17
|
+
// refCount: без подписчиков оставшиеся страницы запрашивать незачем
|
|
18
|
+
shareReplay({ bufferSize: 1, refCount: true }));
|
|
24
19
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const batchRequests = chunks.map(chunk => {
|
|
38
|
-
return BXRestClass.batch({
|
|
39
|
-
halt: 1,
|
|
40
|
-
cmd: chunk.map(i => {
|
|
41
|
-
const param = clone(this.param);
|
|
42
|
-
if (!param.PARAMS) {
|
|
43
|
-
param.PARAMS = {
|
|
44
|
-
NAV_PARAMS: {
|
|
45
|
-
iNumPage: 0,
|
|
46
|
-
nPageSize: 50
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
// Устанавливаем start в зависимости от индекса
|
|
51
|
-
param.PARAMS.NAV_PARAMS.iNumPage = i + 2; // первая страница уже есть, старт со второй
|
|
52
|
-
// Формируем строку запроса
|
|
53
|
-
return this.http.getNameMethod(this.url)
|
|
54
|
-
+ '?' + serializeBitrixParams(param);
|
|
55
|
-
})
|
|
56
|
-
}, this.requestHeaders);
|
|
57
|
-
});
|
|
58
|
-
return from(batchRequests).pipe(concatMap(request => request), // Выполняет запросы по очереди
|
|
59
|
-
toArray(), // Собирает все результаты в массив
|
|
60
|
-
map(results => {
|
|
61
|
-
const res = items.result;
|
|
62
|
-
for (let result of results) {
|
|
63
|
-
if (result && instanceOfiBXRestAnswerSuccess(result) && result.result && result.result.result) {
|
|
64
|
-
res.push(...result.result.result.map(i => i).flat());
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return (this.map) ?
|
|
68
|
-
this.map(res)
|
|
69
|
-
: res;
|
|
70
|
-
}));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return this.mapResultForGetAll(items);
|
|
74
|
-
}), catchError(err => {
|
|
75
|
-
// this.snackBar.error("Проблемы с поточным получение затреканого времени")
|
|
76
|
-
console.error(err);
|
|
77
|
-
return throwError(() => err);
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
mapResultForGetAll(items) {
|
|
81
|
-
return (instanceOfiBXRestAnswerSuccess(items)) ? from([items.result]).pipe(map(v => (v && this.map) ? this.map(v) : v)) : from([]);
|
|
20
|
+
/**
|
|
21
|
+
* Параметры остальных страниц. Размер страницы берётся из запроса: портал ограничивает
|
|
22
|
+
* его 50 записями, но вызывающий код может попросить и меньше.
|
|
23
|
+
*/
|
|
24
|
+
pageParams(total = 0) {
|
|
25
|
+
const nav = this.param.PARAMS?.NAV_PARAMS;
|
|
26
|
+
const nPageSize = Math.min(nav?.nPageSize || this.pageSize, this.pageSize);
|
|
27
|
+
const pages = [];
|
|
28
|
+
for (let iNumPage = (nav?.iNumPage || 1) + 1; iNumPage <= Math.ceil(total / nPageSize); iNumPage++) {
|
|
29
|
+
pages.push({ ...clone(this.param), PARAMS: { ...this.param.PARAMS, NAV_PARAMS: { ...nav, nPageSize, iNumPage } } });
|
|
30
|
+
}
|
|
31
|
+
return pages;
|
|
82
32
|
}
|
|
83
33
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnktYWx0ZXJuYXRpdmUtcGFnaW5hdGlvbi1uYXZpZ2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvbmF2dnkvbmF2dnktYWx0ZXJuYXRpdmUtcGFnaW5hdGlvbi1uYXZpZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFeEYsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV4Qzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBK0QsU0FBUSxZQUF5QjtJQUUzRyxNQUFNO1FBQ0osSUFBSSxJQUFJLEdBQTRCLEVBQUUsQ0FBQTtRQUN0QyxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUU7YUFDdkIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNKLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTRCLENBQUMsQ0FBQTtZQUM1QyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQ0YsRUFDRCxJQUFJLEVBQUUsRUFDTixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FB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QUM7d0JBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzs0QkFDYixDQUFDLENBQUMsR0FBRyxDQUFBO29CQUNULENBQUMsQ0FBQyxDQUNILENBQUE7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2QyxDQUFDLENBQ0YsRUFDRCxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZiwyRUFBMkU7WUFDM0UsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsQixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQXFDO1FBQzlELE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUE2QixDQUFDLENBQUE7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uY2F0TWFwLCBmcm9tLCBsYXN0LCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHRocm93RXJyb3IsIHRvQXJyYXkgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgaUJYUmVzdEFuc3dlciB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYW5zd2VyJ1xuaW1wb3J0IGNsb25lIGZyb20gJ2p1c3QtY2xvbmUnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFJldHVyblR5cGVOYXZ2eSB9IGZyb20gJy4vbmF2dnktc3VwcG9ydCdcbmltcG9ydCB7IGlCWFJlc3RBbHRlcm5hdGl2ZVBhZ2luYXRpb24gfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXNlL2FwaS1wYWdpbmF0aW9uLWJ4J1xuaW1wb3J0IHsgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21hcFJlc3VsdCdcbmltcG9ydCB7IE5hdnZ5UGFnQmFzZSB9IGZyb20gJy4vZXh0ZW5kcy9uYXZ2eS1wYWctYmFzZSdcbmltcG9ydCB7IHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9zZXJpYWxpemVCaXRyaXhQYXJhbXMnXG5pbXBvcnQgeyBCWFJlc3QgfSBmcm9tICcuLi8uLi9yZXN0L2Jhc2UnXG5cbi8qKlxuICog0JrQu9Cw0YHRgS3Qv9GA0L7RgdC70L7QudC60LAt0L7QsdGA0LDQsdC+0YLRh9C40Log0LTQu9GPINC80LXRgtC+0LTQvtCyINGA0LDQsdC+0YLQsNGO0YnQuNGFINC90LAg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstC90L7QuSDQv9C+0YHRgtGA0LDQvdC40YfQvdC+0Lkg0L3QsNCy0LjQs9Cw0YbQuNC4INGC0LjQutCwINC60LDQuiDQvNC10YLQvtC00Ysg0L/QvlxuICog0LfQsNGC0YDQsNGH0LXQvdC90L7QvNGDINCy0YDQtdC80LXQvdC4INC90LAg0LfQsNC00LDRh9C4IGh0dHBzOi8vZGV2LjFjLWJpdHJpeC5ydS9yZXN0X2hlbHAvdGFza3MvdGFzay9lbGFwc2VkaXRlbS9pbmRleC5waHBcbiAqXG4gKiDQvdC1INC30LDQstC10YDRiNC10L3QvdGL0Lkg0LrQu9Cw0YHRgSwg0YDQsNCx0L7RgtCw0LXQvCDQvtGCINGH0LDRgdGC0L3QvtCz0L4g0Log0L7QsdGJ0LXQvNGDXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXZ2eUFsdGVyUGFnTmF2PFQsIFIsIFAgZXh0ZW5kcyBpQlhSZXN0QWx0ZXJuYXRpdmVQYWdpbmF0aW9uPiBleHRlbmRzIE5hdnZ5UGFnQmFzZTxUW10sIFJbXSwgUD4ge1xuXG4gIHJlc0FsbCgpIHtcbiAgICBsZXQgc2F2ZTogUmV0dXJuVHlwZU5hdnZ5PFQsIFI+W10gPSBbXVxuICAgIHJldHVybiB0aGlzLnJlc3VsdEFsbEVuZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgc2F2ZS5wdXNoKC4uLnYgYXMgUmV0dXJuVHlwZU5hdnZ5PFQsIFI+W10pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2F2ZVxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgbGFzdCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICB9XG5cbiAgcHJpdmF0ZSByZXN1bHRBbGxFbmQoKSB7XG4gICAgbGV0IEJYUmVzdENsYXNzID0gbmV3IEJYUmVzdCgpXG4gICAgLy8gcmV0dXJuICB0aGlzLm1hcEZvclZhbmlsbGFFbmQodGhpcy5mdW5jLCB0aGlzLnBhcmFtKVxuICAgIHJldHVybiB0aGlzLnJlc0ZpcnN0UGFnZSgpLnBpcGUoXG4gICAgICBtZXJnZU1hcChcbiAgICAgICAgaXRlbXMgPT4ge1xuICAgICAgICAgIGlmIChpdGVtcyAmJiBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaXRlbXMpKSB7XG4gICAgICAgICAgICBpZiAoaXRlbXMudG90YWwgJiYgaXRlbXMubmV4dCkge1xuICAgICAgICAgICAgICBjb25zdCBjb3VudCA9IFsuLi5BcnJheShNYXRoLmZsb29yKGl0ZW1zLnRvdGFsIC8gdGhpcy5wYWdlU2l6ZSkpLmtleXMoKV1cblxuICAgICAgICAgICAgICAvLyDQoNCw0LfQtNC10LvRj9C10Lwg0LzQsNGB0YHQuNCyINC90LAg0LHQu9C+0LrQuFxuICAgICAgICAgICAgICBjb25zdCBjaHVua3MgPSBbXVxuXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQubGVuZ3RoOyBpICs9IHRoaXMucGFnZVNpemUpIHtcbiAgICAgICAgICAgICAgICBjaHVua3MucHVzaChjb3VudC5zbGljZShpLCBpICsgdGhpcy5wYWdlU2l6ZSkpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBiYXRjaFJlcXVlc3RzID0gY2h1bmtzLm1hcChjaHVuayA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJYUmVzdENsYXNzLmJhdGNoPFRbXVtdPih7XG4gICAgICAgICAgICAgICAgICBoYWx0OiAxLFxuICAgICAgICAgICAgICAgICAgY21kOiBjaHVuay5tYXAoaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gY2xvbmUodGhpcy5wYXJhbSlcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtLlBBUkFNUykge1xuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLlBBUkFNUyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5BVl9QQVJBTVM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaU51bVBhZ2U6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5QYWdlU2l6ZTogNTBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCBzdGFydCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0LjQvdC00LXQutGB0LBcbiAgICAgICAgICAgICAgICAgICAgcGFyYW0uUEFSQU1TIS5OQVZfUEFSQU1TLmlOdW1QYWdlID0gaSArIDIgLy8g0L/QtdGA0LLQsNGPINGB0YLRgNCw0L3QuNGG0LAg0YPQttC1INC10YHRgtGMLCDRgdGC0LDRgNGCINGB0L4g0LLRgtC+0YDQvtC5XG5cbiAgICAgICAgICAgICAgICAgICAgLy8g0KTQvtGA0LzQuNGA0YPQtdC8INGB0YLRgNC+0LrRgyDQt9Cw0L/RgNC+0YHQsFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldE5hbWVNZXRob2QodGhpcy51cmwpXG4gICAgICAgICAgICAgICAgICAgICAgKyAnPycgKyBzZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW0pXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0sIHRoaXMucmVxdWVzdEhlYWRlcnMpXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgcmV0dXJuIGZyb20oYmF0Y2hSZXF1ZXN0cykucGlwZShcbiAgICAgICAgICAgICAgICBjb25jYXRNYXAocmVxdWVzdCA9PiByZXF1ZXN0KSwgLy8g0JLRi9C/0L7Qu9C90Y/QtdGCINC30LDQv9GA0L7RgdGLINC/0L4g0L7Rh9C10YDQtdC00LhcbiAgICAgICAgICAgICAgICB0b0FycmF5KCksIC8vINCh0L7QsdC40YDQsNC10YIg0LLRgdC1INGA0LXQt9GD0LvRjNGC0LDRgtGLINCyINC80LDRgdGB0LjQslxuICAgICAgICAgICAgICAgIG1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGl0ZW1zLnJlc3VsdCBhcyBUW11cbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKHJlc3VsdCkgJiYgcmVzdWx0LnJlc3VsdCAmJiByZXN1bHQucmVzdWx0LnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKC4uLnJlc3VsdC5yZXN1bHQucmVzdWx0Lm1hcChpID0+IGkpLmZsYXQoKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMubWFwKSA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwKHJlcylcbiAgICAgICAgICAgICAgICAgICAgOiByZXNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMubWFwUmVzdWx0Rm9yR2V0QWxsKGl0ZW1zKVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAvLyB0aGlzLnNuYWNrQmFyLmVycm9yKFwi0J/RgNC+0LHQu9C10LzRiyDRgSDQv9C+0YLQvtGH0L3Ri9C8INC/0L7Qu9GD0YfQtdC90LjQtSDQt9Cw0YLRgNC10LrQsNC90L7Qs9C+INCy0YDQtdC80LXQvdC4XCIpXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgbWFwUmVzdWx0Rm9yR2V0QWxsKGl0ZW1zOiBpQlhSZXN0QW5zd2VyPFRbXT4gfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpdGVtcykpID8gZnJvbShbaXRlbXMucmVzdWx0XSkucGlwZShcbiAgICAgIG1hcCh2ID0+ICh2ICYmIHRoaXMubWFwKSA/IHRoaXMubWFwKHYpIDogdilcbiAgICApIDogZnJvbShbXSBhcyBSZXR1cm5UeXBlTmF2dnk8VCwgUj5bXSlcbiAgfVxufVxuIl19
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnktYWx0ZXJuYXRpdmUtcGFnaW5hdGlvbi1uYXZpZ2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvbmF2dnkvbmF2dnktYWx0ZXJuYXRpdmUtcGFnaW5hdGlvbi1uYXZpZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVDLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUM5QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRXZEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGdCQUErRCxTQUFRLFlBQXlCO0lBRTNHLE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBUyxDQUFBO1lBQzFELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBNEIsQ0FBQTtRQUNoRixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0Ysb0VBQW9FO1FBQ3BFLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUE7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQTtRQUN6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDMUUsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFBO1FBRXJCLEtBQUssSUFBSSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNuRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3JILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lcmdlTWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgY2xvbmUgZnJvbSAnanVzdC1jbG9uZSdcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgUmV0dXJuVHlwZU5hdnZ5IH0gZnJvbSAnLi9uYXZ2eS1zdXBwb3J0J1xuaW1wb3J0IHsgaUJYUmVzdEFsdGVybmF0aXZlUGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYXBpLXBhZ2luYXRpb24tYngnXG5pbXBvcnQgeyBOYXZ2eVBhZ0Jhc2UgfSBmcm9tICcuL2V4dGVuZHMvbmF2dnktcGFnLWJhc2UnXG5cbi8qKlxuICog0JrQu9Cw0YHRgS3Qv9GA0L7RgdC70L7QudC60LAt0L7QsdGA0LDQsdC+0YLRh9C40Log0LTQu9GPINC80LXRgtC+0LTQvtCyINGA0LDQsdC+0YLQsNGO0YnQuNGFINC90LAg0LDQu9GM0YLQtdGA0L3QsNGC0LjQstC90L7QuSDQv9C+0YHRgtGA0LDQvdC40YfQvdC+0Lkg0L3QsNCy0LjQs9Cw0YbQuNC4INGC0LjQutCwINC60LDQuiDQvNC10YLQvtC00Ysg0L/QvlxuICog0LfQsNGC0YDQsNGH0LXQvdC90L7QvNGDINCy0YDQtdC80LXQvdC4INC90LAg0LfQsNC00LDRh9C4IGh0dHBzOi8vZGV2LjFjLWJpdHJpeC5ydS9yZXN0X2hlbHAvdGFza3MvdGFzay9lbGFwc2VkaXRlbS9pbmRleC5waHBcbiAqXG4gKiDQvdC1INC30LDQstC10YDRiNC10L3QvdGL0Lkg0LrQu9Cw0YHRgSwg0YDQsNCx0L7RgtCw0LXQvCDQvtGCINGH0LDRgdGC0L3QvtCz0L4g0Log0L7QsdGJ0LXQvNGDXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXZ2eUFsdGVyUGFnTmF2PFQsIFIsIFAgZXh0ZW5kcyBpQlhSZXN0QWx0ZXJuYXRpdmVQYWdpbmF0aW9uPiBleHRlbmRzIE5hdnZ5UGFnQmFzZTxUW10sIFJbXSwgUD4ge1xuXG4gIHJlc0FsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNGaXJzdFBhZ2UoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoZmlyc3QgPT4gdGhpcy5yZXNQYWdlczxUW10+KGZpcnN0Lm5leHQgPyB0aGlzLnBhZ2VQYXJhbXMoZmlyc3QudG90YWwpIDogW10pLnBpcGUoXG4gICAgICAgIG1hcChwYWdlcyA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBbZmlyc3QucmVzdWx0ID8/IFtdLCAuLi5wYWdlc10uZmxhdCgpIGFzIFRbXVxuICAgICAgICAgIHJldHVybiAoKHRoaXMubWFwID8gdGhpcy5tYXAoaXRlbXMpIDogaXRlbXMpID8/IFtdKSBhcyBSZXR1cm5UeXBlTmF2dnk8VCwgUj5bXVxuICAgICAgICB9KVxuICAgICAgKSksXG4gICAgICAvLyByZWZDb3VudDog0LHQtdC3INC/0L7QtNC/0LjRgdGH0LjQutC+0LIg0L7RgdGC0LDQstGI0LjQtdGB0Y8g0YHRgtGA0LDQvdC40YbRiyDQt9Cw0L/RgNCw0YjQuNCy0LDRgtGMINC90LXQt9Cw0YfQtdC8XG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqINCf0LDRgNCw0LzQtdGC0YDRiyDQvtGB0YLQsNC70YzQvdGL0YUg0YHRgtGA0LDQvdC40YYuINCg0LDQt9C80LXRgCDRgdGC0YDQsNC90LjRhtGLINCx0LXRgNGR0YLRgdGPINC40Lcg0LfQsNC/0YDQvtGB0LA6INC/0L7RgNGC0LDQuyDQvtCz0YDQsNC90LjRh9C40LLQsNC10YJcbiAgICog0LXQs9C+IDUwINC30LDQv9C40YHRj9C80LgsINC90L4g0LLRi9C30YvQstCw0Y7RidC40Lkg0LrQvtC0INC80L7QttC10YIg0L/QvtC/0YDQvtGB0LjRgtGMINC4INC80LXQvdGM0YjQtS5cbiAgICovXG4gIHByaXZhdGUgcGFnZVBhcmFtcyh0b3RhbCA9IDApOiBQW10ge1xuICAgIGNvbnN0IG5hdiA9IHRoaXMucGFyYW0uUEFSQU1TPy5OQVZfUEFSQU1TXG4gICAgY29uc3QgblBhZ2VTaXplID0gTWF0aC5taW4obmF2Py5uUGFnZVNpemUgfHwgdGhpcy5wYWdlU2l6ZSwgdGhpcy5wYWdlU2l6ZSlcbiAgICBjb25zdCBwYWdlczogUFtdID0gW11cblxuICAgIGZvciAobGV0IGlOdW1QYWdlID0gKG5hdj8uaU51bVBhZ2UgfHwgMSkgKyAxOyBpTnVtUGFnZSA8PSBNYXRoLmNlaWwodG90YWwgLyBuUGFnZVNpemUpOyBpTnVtUGFnZSsrKSB7XG4gICAgICBwYWdlcy5wdXNoKHsgLi4uY2xvbmUodGhpcy5wYXJhbSksIFBBUkFNUzogeyAuLi50aGlzLnBhcmFtLlBBUkFNUywgTkFWX1BBUkFNUzogeyAuLi5uYXYsIG5QYWdlU2l6ZSwgaU51bVBhZ2UgfSB9IH0pXG4gICAgfVxuICAgIHJldHVybiBwYWdlc1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import { instanceOfiBXRestAnswerSuccess } from '../../functions/mapResult';
|
|
5
|
-
import { serializeBitrixParams } from '../../functions/serializeBitrixParams';
|
|
6
|
-
import { BXRest } from '../../rest/base';
|
|
7
|
-
import { NavvyPagBase } from './extends/navvy-pag-base';
|
|
1
|
+
import { mergeMap, shareReplay } from 'rxjs';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { NavvyPagBase, offsetPageParams } from './extends/navvy-pag-base';
|
|
8
4
|
/** Пагинация для методов, возвращающих коллекцию как объект с идентификаторами в ключах. */
|
|
9
5
|
export class NavvyPagNavResultKeyObject extends NavvyPagBase {
|
|
10
6
|
constructor(url, param, key, mapResult) {
|
|
@@ -13,47 +9,12 @@ export class NavvyPagNavResultKeyObject extends NavvyPagBase {
|
|
|
13
9
|
this.key = key;
|
|
14
10
|
}
|
|
15
11
|
resAll() {
|
|
16
|
-
return this.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return from([]);
|
|
23
|
-
}
|
|
24
|
-
if (!items.total || items.total <= this.pageSize) {
|
|
25
|
-
return this.mapResult(items);
|
|
26
|
-
}
|
|
27
|
-
const pageCount = Math.ceil(items.total / this.pageSize);
|
|
28
|
-
const commands = Array.from({ length: pageCount - 1 }, (_, index) => {
|
|
29
|
-
const param = clone(this.param);
|
|
30
|
-
param.start = (index + 1) * this.pageSize;
|
|
31
|
-
return bxRest.batch({
|
|
32
|
-
halt: 1,
|
|
33
|
-
cmd: [this.http.getNameMethod(this.url) + '?' + serializeBitrixParams(param)]
|
|
34
|
-
}, this.requestHeaders);
|
|
35
|
-
});
|
|
36
|
-
return from(commands).pipe(concatMap(request => request), toArray(), mergeMap(results => {
|
|
37
|
-
const merged = { ...(items.result?.[this.key] ?? {}) };
|
|
38
|
-
for (const result of results) {
|
|
39
|
-
if (result && instanceOfiBXRestAnswerSuccess(result)) {
|
|
40
|
-
for (const page of result.result?.result ?? []) {
|
|
41
|
-
Object.assign(merged, page?.[this.key] ?? {});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return this.mapResult({ result: { [this.key]: merged } });
|
|
46
|
-
}));
|
|
47
|
-
}), catchError(error => {
|
|
48
|
-
console.error(error);
|
|
49
|
-
return throwError(() => error);
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
mapResult(items) {
|
|
53
|
-
if (!instanceOfiBXRestAnswerSuccess(items)) {
|
|
54
|
-
return from([]);
|
|
55
|
-
}
|
|
56
|
-
return from([items.result]).pipe(map(value => this.map?.(value)));
|
|
12
|
+
return this.resFirstPage().pipe(mergeMap(first => this.resPages(offsetPageParams(this.param, first.total, this.pageSize)).pipe(map(pages => {
|
|
13
|
+
const merged = Object.assign({}, first.result?.[this.key], ...pages.map(page => page[this.key]));
|
|
14
|
+
return this.map?.({ ...first.result, [this.key]: merged });
|
|
15
|
+
}))),
|
|
16
|
+
// refCount: без подписчиков оставшиеся страницы запрашивать незачем
|
|
17
|
+
shareReplay({ bufferSize: 1, refCount: true }));
|
|
57
18
|
}
|
|
58
19
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnktcGFnLW5hdi1yZXN1bHQta2V5LW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL25hdnZ5L25hdnZ5LXBhZy1uYXYtcmVzdWx0LWtleS1vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXBDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUl6RSw0RkFBNEY7QUFDNUYsTUFBTSxPQUFPLDBCQUtYLFNBQVEsWUFBNkM7SUFDckQsWUFDRSxHQUFhLEVBQ2IsS0FBUSxFQUNTLEdBQU0sRUFDdkIsU0FBMkU7UUFFM0UsbUdBQW1HO1FBQ25HLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQW1CLENBQUMsQ0FBQyxDQUFBO1FBSi9FLFFBQUcsR0FBSCxHQUFHLENBQUc7SUFLekIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQTBCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3JILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEcsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUE2QixDQUFDLENBQUE7UUFDdkYsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLG9FQUFvRTtRQUNwRSxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFBO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2VNYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgaUJYUmVzdFBhZ2luYXRpb24gfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXNlL2FwaS1wYWdpbmF0aW9uLWJ4J1xuaW1wb3J0IHsgTmF2dnlQYWdCYXNlLCBvZmZzZXRQYWdlUGFyYW1zIH0gZnJvbSAnLi9leHRlbmRzL25hdnZ5LXBhZy1iYXNlJ1xuXG50eXBlIEtleWVkT2JqZWN0UmVzdWx0PEsgZXh0ZW5kcyBzdHJpbmcsIFQ+ID0gUmVjb3JkPEssIFJlY29yZDxzdHJpbmcsIFQ+IHwgdW5kZWZpbmVkPlxuXG4vKiog0J/QsNCz0LjQvdCw0YbQuNGPINC00LvRjyDQvNC10YLQvtC00L7Qsiwg0LLQvtC30LLRgNCw0YnQsNGO0YnQuNGFINC60L7Qu9C70LXQutGG0LjRjiDQutCw0Log0L7QsdGK0LXQutGCINGBINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0LDQvNC4INCyINC60LvRjtGH0LDRhS4gKi9cbmV4cG9ydCBjbGFzcyBOYXZ2eVBhZ05hdlJlc3VsdEtleU9iamVjdDxcbiAgVCxcbiAgUixcbiAgUCBleHRlbmRzIGlCWFJlc3RQYWdpbmF0aW9uLFxuICBLIGV4dGVuZHMgc3RyaW5nXG4+IGV4dGVuZHMgTmF2dnlQYWdCYXNlPEtleWVkT2JqZWN0UmVzdWx0PEssIFQ+LCBSW10sIFA+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgdXJsOiBzdHJpbmdbXSxcbiAgICBwYXJhbTogUCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleTogSyxcbiAgICBtYXBSZXN1bHQ/OiAocGFyYW06IEtleWVkT2JqZWN0UmVzdWx0PEssIFQ+IHwgdW5kZWZpbmVkKSA9PiBSW10gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgLy8g0JHQtdC3INGB0LLQvtC10LPQviBtYXAg0YDQtdC30YPQu9GM0YLQsNGCIOKAlCDQt9C90LDRh9C10L3QuNGPINC+0LHRitC10LrRgtCwINC/0L4g0LrQu9GO0YfRgywg0LrQsNC6INC4INC+0LHQtdGJ0LDRjtGCINGC0LjQv9GLIGAucmVzKClgINC4IGAucmVzQWxsKClgLlxuICAgIHN1cGVyKHVybCwgcGFyYW0sIG1hcFJlc3VsdCA/PyAocmVzdWx0ID0+IE9iamVjdC52YWx1ZXMocmVzdWx0Py5ba2V5XSA/PyB7fSkgYXMgdW5rbm93biBhcyBSW10pKVxuICB9XG5cbiAgcmVzQWxsKCkge1xuICAgIHJldHVybiB0aGlzLnJlc0ZpcnN0UGFnZSgpLnBpcGUoXG4gICAgICBtZXJnZU1hcChmaXJzdCA9PiB0aGlzLnJlc1BhZ2VzPEtleWVkT2JqZWN0UmVzdWx0PEssIFQ+PihvZmZzZXRQYWdlUGFyYW1zKHRoaXMucGFyYW0sIGZpcnN0LnRvdGFsLCB0aGlzLnBhZ2VTaXplKSkucGlwZShcbiAgICAgICAgbWFwKHBhZ2VzID0+IHtcbiAgICAgICAgICBjb25zdCBtZXJnZWQgPSBPYmplY3QuYXNzaWduKHt9LCBmaXJzdC5yZXN1bHQ/Llt0aGlzLmtleV0sIC4uLnBhZ2VzLm1hcChwYWdlID0+IHBhZ2VbdGhpcy5rZXldKSlcbiAgICAgICAgICByZXR1cm4gdGhpcy5tYXA/Lih7IC4uLmZpcnN0LnJlc3VsdCwgW3RoaXMua2V5XTogbWVyZ2VkIH0gYXMgS2V5ZWRPYmplY3RSZXN1bHQ8SywgVD4pXG4gICAgICAgIH0pXG4gICAgICApKSxcbiAgICAgIC8vIHJlZkNvdW50OiDQsdC10Lcg0L/QvtC00L/QuNGB0YfQuNC60L7QsiDQvtGB0YLQsNCy0YjQuNC10YHRjyDRgdGC0YDQsNC90LjRhtGLINC30LDQv9GA0LDRiNC40LLQsNGC0Ywg0L3QtdC30LDRh9C10LxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
|