@snabcentr/client-core 3.11.0 → 3.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog/interfaces/sc-i-range-filter.d.ts +4 -4
- package/catalog/services/sc-catalog-redirect.service.d.ts +27 -1
- package/common/interfaces/sc-i-request-state.d.ts +4 -1
- package/esm2022/catalog/interfaces/sc-i-range-filter.mjs +1 -1
- package/esm2022/catalog/services/sc-catalog-redirect.service.mjs +48 -2
- package/esm2022/common/interfaces/sc-i-request-state.mjs +5 -3
- package/esm2022/contacts/services/sc-requisites.service.mjs +7 -7
- package/esm2022/pagination/services/sc-pagination.service.mjs +4 -1
- package/esm2022/providers/sc-category.providers.mjs +33 -10
- package/esm2022/seo/classes/schema-org-factory.mjs +8 -6
- package/esm2022/seo/services/sc-seo.service.mjs +4 -4
- package/fesm2022/snabcentr-client-core.mjs +97 -24
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/package.json +2 -2
- package/providers/sc-category.providers.d.ts +6 -1
- package/release_notes.tmp +4 -3
- package/seo/services/sc-seo.service.d.ts +3 -3
|
@@ -10,17 +10,17 @@ export interface ScRangeFilter extends ScIBaseCatalogFilter {
|
|
|
10
10
|
/**
|
|
11
11
|
* Минимальное значение.
|
|
12
12
|
*/
|
|
13
|
-
min:
|
|
13
|
+
min: number;
|
|
14
14
|
/**
|
|
15
15
|
* Максимальное значение.
|
|
16
16
|
*/
|
|
17
|
-
max:
|
|
17
|
+
max: number;
|
|
18
18
|
/**
|
|
19
19
|
* Выбранное минимальное значение.
|
|
20
20
|
*/
|
|
21
|
-
selectedMin?:
|
|
21
|
+
selectedMin?: number;
|
|
22
22
|
/**
|
|
23
23
|
* Выбранное максимальное значение.
|
|
24
24
|
*/
|
|
25
|
-
selectedMax?:
|
|
25
|
+
selectedMax?: number;
|
|
26
26
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
1
|
+
import { MonoTypeOperatorFunction, Observable } from 'rxjs';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
/**
|
|
4
4
|
* Сервис редиректа на родительскую категорию при недоступности (HTTP 404) товара или категории.
|
|
@@ -56,6 +56,32 @@ export declare class ScCatalogRedirectService {
|
|
|
56
56
|
* @returns Поток, завершающийся после редиректа. Эмитит ошибку {@link HttpErrorResponse}, если родительская категория не найдена.
|
|
57
57
|
*/
|
|
58
58
|
redirectToProductParent$(productIdOrSlug: number | string): Observable<never>;
|
|
59
|
+
/**
|
|
60
|
+
* Оператор устойчивой обработки недоступной (HTTP-ошибка) категории в потоке данных: при 404 выполняет редирект
|
|
61
|
+
* на родительскую категорию, при недоступном родителе или иной ошибке сообщает код через {@link onErrorCode}.
|
|
62
|
+
* Ошибку не пробрасывает (завершает поток {@link EMPTY}), поэтому поток данных не завершается ошибкой.
|
|
63
|
+
*
|
|
64
|
+
* @param categoryIdOrSlug Идентификатор или slug недоступной категории.
|
|
65
|
+
* @param onErrorCode Колбэк установки кода ошибки (например, для отображения страницы ошибки).
|
|
66
|
+
*/
|
|
67
|
+
handleUnavailableCategory$<T>(categoryIdOrSlug: number | string, onErrorCode: (status: number) => void): MonoTypeOperatorFunction<T>;
|
|
68
|
+
/**
|
|
69
|
+
* Оператор устойчивой обработки недоступного (HTTP-ошибка) товара в потоке данных: при 404 выполняет редирект
|
|
70
|
+
* на родительскую категорию товара, при недоступном родителе или иной ошибке сообщает код через {@link onErrorCode}.
|
|
71
|
+
* Ошибку не пробрасывает (завершает поток {@link EMPTY}), поэтому поток данных не завершается ошибкой.
|
|
72
|
+
*
|
|
73
|
+
* @param productIdOrSlug Идентификатор или slug недоступного товара.
|
|
74
|
+
* @param onErrorCode Колбэк установки кода ошибки (например, для отображения страницы ошибки).
|
|
75
|
+
*/
|
|
76
|
+
handleUnavailableProduct$<T>(productIdOrSlug: number | string, onErrorCode: (status: number) => void): MonoTypeOperatorFunction<T>;
|
|
77
|
+
/**
|
|
78
|
+
* Базовый оператор устойчивой обработки недоступной сущности: при 404 — редирект на родителя (через {@link redirectToParent$}),
|
|
79
|
+
* при недоступном родителе или ином {@link HttpErrorResponse} — {@link onErrorCode} с кодом ответа; всегда {@link EMPTY}.
|
|
80
|
+
*
|
|
81
|
+
* @param redirectToParent$ Фабрика потока редиректа на родительскую категорию.
|
|
82
|
+
* @param onErrorCode Колбэк установки кода ошибки.
|
|
83
|
+
*/
|
|
84
|
+
private handleUnavailable$;
|
|
59
85
|
/**
|
|
60
86
|
* Выполняет редирект на полученную родительскую категорию.
|
|
61
87
|
*
|
|
@@ -10,6 +10,7 @@ export type ScIRequestState<T> = {
|
|
|
10
10
|
data: T;
|
|
11
11
|
} | {
|
|
12
12
|
status: ScRequestStateStatusEnum.Error;
|
|
13
|
+
error?: unknown;
|
|
13
14
|
};
|
|
14
15
|
/**
|
|
15
16
|
* Состояние загрузки.
|
|
@@ -23,8 +24,10 @@ export declare const ScLoadingRequestState: ScIRequestState<never>;
|
|
|
23
24
|
export declare const ScSuccessRequestState: <T>(requestData: T) => ScIRequestState<T>;
|
|
24
25
|
/**
|
|
25
26
|
* Состояние ошибки.
|
|
27
|
+
*
|
|
28
|
+
* @param error Причина ошибки (например, HttpErrorResponse).
|
|
26
29
|
*/
|
|
27
|
-
export declare const ScErrorRequestState: ScIRequestState<never>;
|
|
30
|
+
export declare const ScErrorRequestState: (error?: unknown) => ScIRequestState<never>;
|
|
28
31
|
/**
|
|
29
32
|
* Преобразует поток данных в поток с состояниями запроса.
|
|
30
33
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1yYW5nZS1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NhdGFsb2cvaW50ZXJmYWNlcy9zYy1pLXJhbmdlLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NJQmFzZUNhdGFsb2dGaWx0ZXIgfSBmcm9tICcuL3NjLWktYmFzZS1jYXRhbG9nLWZpbHRlcic7XG5cbi8qKlxuICog0KTQuNC70YzRgtGAINGC0LjQv9CwIFJhbmdlICjQtNC40LDQv9Cw0LfQvtC9INC30L3QsNGH0LXQvdC40LkpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjUmFuZ2VGaWx0ZXIgZXh0ZW5kcyBTY0lCYXNlQ2F0YWxvZ0ZpbHRlciB7XG4gICAgLyoqXG4gICAgICog0KLQuNC/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1yYW5nZS1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NhdGFsb2cvaW50ZXJmYWNlcy9zYy1pLXJhbmdlLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NJQmFzZUNhdGFsb2dGaWx0ZXIgfSBmcm9tICcuL3NjLWktYmFzZS1jYXRhbG9nLWZpbHRlcic7XG5cbi8qKlxuICog0KTQuNC70YzRgtGAINGC0LjQv9CwIFJhbmdlICjQtNC40LDQv9Cw0LfQvtC9INC30L3QsNGH0LXQvdC40LkpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjUmFuZ2VGaWx0ZXIgZXh0ZW5kcyBTY0lCYXNlQ2F0YWxvZ0ZpbHRlciB7XG4gICAgLyoqXG4gICAgICog0KLQuNC/INGE0LjQu9GM0YLRgNCwLlxuICAgICAqL1xuICAgIHR5cGU6ICdyYW5nZSc7XG5cbiAgICAvKipcbiAgICAgKiDQnNC40L3QuNC80LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUuXG4gICAgICovXG4gICAgbWluOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LfQvdCw0YfQtdC90LjQtS5cbiAgICAgKi9cbiAgICBtYXg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCS0YvQsdGA0LDQvdC90L7QtSDQvNC40L3QuNC80LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUuXG4gICAgICovXG4gICAgc2VsZWN0ZWRNaW4/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LHRgNCw0L3QvdC+0LUg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUuXG4gICAgICovXG4gICAgc2VsZWN0ZWRNYXg/OiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -3,7 +3,7 @@ import { HttpErrorResponse } from '@angular/common/http';
|
|
|
3
3
|
import { inject, Injectable } from '@angular/core';
|
|
4
4
|
import { Router } from '@angular/router';
|
|
5
5
|
import { tuiIsPresent } from '@taiga-ui/cdk';
|
|
6
|
-
import { EMPTY, switchMap, throwError } from 'rxjs';
|
|
6
|
+
import { catchError, EMPTY, switchMap, throwError } from 'rxjs';
|
|
7
7
|
import { IS_SERVER, RESPONSE } from '../../providers/ssr.providers';
|
|
8
8
|
import { SC_ID_OR_SLUG_IN_ROUTE } from '../../tokens/sc-id-or-slug-in-route';
|
|
9
9
|
import { ScCatalogService } from './sc-catalog.service';
|
|
@@ -70,6 +70,52 @@ export class ScCatalogRedirectService {
|
|
|
70
70
|
redirectToProductParent$(productIdOrSlug) {
|
|
71
71
|
return this.redirectToParentCategory$(this.catalogService.getProductParentCategory$(productIdOrSlug));
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Оператор устойчивой обработки недоступной (HTTP-ошибка) категории в потоке данных: при 404 выполняет редирект
|
|
75
|
+
* на родительскую категорию, при недоступном родителе или иной ошибке сообщает код через {@link onErrorCode}.
|
|
76
|
+
* Ошибку не пробрасывает (завершает поток {@link EMPTY}), поэтому поток данных не завершается ошибкой.
|
|
77
|
+
*
|
|
78
|
+
* @param categoryIdOrSlug Идентификатор или slug недоступной категории.
|
|
79
|
+
* @param onErrorCode Колбэк установки кода ошибки (например, для отображения страницы ошибки).
|
|
80
|
+
*/
|
|
81
|
+
handleUnavailableCategory$(categoryIdOrSlug, onErrorCode) {
|
|
82
|
+
return this.handleUnavailable$(() => this.redirectToCategoryParent$(categoryIdOrSlug), onErrorCode);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Оператор устойчивой обработки недоступного (HTTP-ошибка) товара в потоке данных: при 404 выполняет редирект
|
|
86
|
+
* на родительскую категорию товара, при недоступном родителе или иной ошибке сообщает код через {@link onErrorCode}.
|
|
87
|
+
* Ошибку не пробрасывает (завершает поток {@link EMPTY}), поэтому поток данных не завершается ошибкой.
|
|
88
|
+
*
|
|
89
|
+
* @param productIdOrSlug Идентификатор или slug недоступного товара.
|
|
90
|
+
* @param onErrorCode Колбэк установки кода ошибки (например, для отображения страницы ошибки).
|
|
91
|
+
*/
|
|
92
|
+
handleUnavailableProduct$(productIdOrSlug, onErrorCode) {
|
|
93
|
+
return this.handleUnavailable$(() => this.redirectToProductParent$(productIdOrSlug), onErrorCode);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Базовый оператор устойчивой обработки недоступной сущности: при 404 — редирект на родителя (через {@link redirectToParent$}),
|
|
97
|
+
* при недоступном родителе или ином {@link HttpErrorResponse} — {@link onErrorCode} с кодом ответа; всегда {@link EMPTY}.
|
|
98
|
+
*
|
|
99
|
+
* @param redirectToParent$ Фабрика потока редиректа на родительскую категорию.
|
|
100
|
+
* @param onErrorCode Колбэк установки кода ошибки.
|
|
101
|
+
*/
|
|
102
|
+
// eslint-disable-next-line class-methods-use-this
|
|
103
|
+
handleUnavailable$(redirectToParent$, onErrorCode) {
|
|
104
|
+
return (source$) => source$.pipe(catchError((error) => {
|
|
105
|
+
if (error instanceof HttpErrorResponse && error.status === 404) {
|
|
106
|
+
return redirectToParent$().pipe(catchError((redirectError) => {
|
|
107
|
+
if (redirectError instanceof HttpErrorResponse) {
|
|
108
|
+
onErrorCode(redirectError.status);
|
|
109
|
+
}
|
|
110
|
+
return EMPTY;
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
if (error instanceof HttpErrorResponse) {
|
|
114
|
+
onErrorCode(error.status);
|
|
115
|
+
}
|
|
116
|
+
return EMPTY;
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
73
119
|
/**
|
|
74
120
|
* Выполняет редирект на полученную родительскую категорию.
|
|
75
121
|
*
|
|
@@ -125,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
125
171
|
providedIn: 'root',
|
|
126
172
|
}]
|
|
127
173
|
}] });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1yZWRpcmVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2ctcmVkaXJlY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBYyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBSHJDO1FBSUk7O1dBRUc7UUFDYyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6Qzs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUUzRDs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUM7Ozs7Ozs7O1dBUUc7UUFDYyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWpFOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQThFaEQ7SUE1RUc7Ozs7O09BS0c7SUFDSSx5QkFBeUIsQ0FBQyxnQkFBaUM7UUFDOUQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksd0JBQXdCLENBQUMsZUFBZ0M7UUFDNUQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHlCQUF5QixDQUFDLGVBQXNEO1FBQ3BGLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FDdkIsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDekIsNERBQTREO1lBQzVELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFN0Msa0VBQWtFO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLHlIQUF5SDtnQkFDekgsRUFBRTtnQkFDRix5R0FBeUc7Z0JBQ3pHLDBGQUEwRjtnQkFDMUYsOElBQThJO2dCQUM5SSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFMUIsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7Z0JBRUQsbUZBQW1GO2dCQUNuRiwrRkFBK0Y7Z0JBQy9GLEVBQUU7Z0JBQ0YsMkdBQTJHO2dCQUMzRyx1SEFBdUg7Z0JBQ3ZILGdGQUFnRjtnQkFDaEYsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELHFHQUFxRztZQUNyRyx1R0FBdUc7WUFDdkcsOEdBQThHO1lBQzlHLEVBQUU7WUFDRiwwR0FBMEc7WUFDMUcsNkdBQTZHO1lBQzdHLDJIQUEySDtZQUMzSCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFMUMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7K0dBaEhRLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07OzRGQUVULHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJU19TRVJWRVIsIFJFU1BPTlNFIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3Nzci5wcm92aWRlcnMnO1xuaW1wb3J0IHsgU0NfSURfT1JfU0xVR19JTl9ST1VURSB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1pZC1vci1zbHVnLWluLXJvdXRlJztcbmltcG9ydCB7IFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktcGFyZW50LWNhdGVnb3J5LXJlZGlyZWN0JztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuL3NjLWNhdGFsb2cuc2VydmljZSc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINGA0LXQtNC40YDQtdC60YLQsCDQvdCwINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4g0L/RgNC4INC90LXQtNC+0YHRgtGD0L/QvdC+0YHRgtC4IChIVFRQIDQwNCkg0YLQvtCy0LDRgNCwINC40LvQuCDQutCw0YLQtdCz0L7RgNC40LguXG4gKlxuICog0JfQsNC/0YDQsNGI0LjQstCw0LXRgiDRgyDQsdGN0LrQtdC90LTQsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOINC90LXQtNC+0YHRgtGD0L/QvdC+0Lkg0YHRg9GJ0L3QvtGB0YLQuCDQuCDQstGL0L/QvtC70L3Rj9C10YIg0YDQtdC00LjRgNC10LrRgjpcbiAqIC0g0L3QsCDRgdC10YDQstC10YDQtSAoU1NSKSDQv9GA0Lgg0LTQvtGB0YLRg9C/0L3QvtC8IHtAbGluayBSRVNQT05TRX0g4oCUINCy0YvRgdGC0LDQstC70Y/QtdGCIEhUVFAt0YHRgtCw0YLRg9GBIDMwMiDQuCDQt9Cw0LPQvtC70L7QstC+0LogYExvY2F0aW9uYCDQtNC70Y8g0LrQvtGA0YDQtdC60YLQvdC+0LPQviDRgNC10LTQuNGA0LXQutGC0LAg0L/QvtC40YHQutC+0LLRi9GFINCx0L7RgtC+0LI7XG4gKiAtINC90LAg0YHQtdGA0LLQtdGA0LUg0LHQtdC3IHtAbGluayBSRVNQT05TRX0gKNC90LDQv9GA0LjQvNC10YAsIGRldi3RgdC10YDQstC10YAgYG5nIHNlcnZlYCkg4oCUINC30LDQstC10YDRiNCw0LXRgiDQv9C+0YLQvtC6INC+0YjQuNCx0LrQvtC5IDQwNCwg0YfRgtC+0LHRiyDQvtGC0L7QsdGA0LDQt9C40LvQsNGB0Ywg0YHRgtGA0LDQvdC40YbQsCDQvtGI0LjQsdC60Lg7XG4gKiAtINCyINCx0YDQsNGD0LfQtdGA0LUg4oCUINCy0YvQv9C+0LvQvdGP0LXRgiDQv9C+0LvQvdGD0Y4g0L3QsNCy0LjQs9Cw0YbQuNGOINC90LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRji5cbiAqXG4gKiDQldGB0LvQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAsINC/0L7RgtC+0Log0YLQsNC60LbQtSDQt9Cw0LLQtdGA0YjQsNC10YLRgdGPINC+0YjQuNCx0LrQvtC5IHtAbGluayBIdHRwRXJyb3JSZXNwb25zZX0sXG4gKiDRh9GC0L7QsdGLINCy0YvQt9GL0LLQsNGO0YnQuNC5INC60L7QtCDQvtGC0L7QsdGA0LDQt9C40Lsg0YHRgtGA0LDQvdC40YbRgyDQvtGI0LjQsdC60LguXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0YWxvZ1JlZGlyZWN0U2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQsNGC0LDQu9C+0LPQvtC8LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ1NlcnZpY2UgPSBpbmplY3QoU2NDYXRhbG9nU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0LAg0LjQu9C4IHNsdWcg0LIg0LzQsNGA0YjRgNGD0YLQsNGFINGC0L7QstCw0YDQvtCyINC4INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlkT3JTbHVnID0gaW5qZWN0KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRgtC10LrRg9GJ0LjQuSDRgdC60YDQuNC/0YIg0LjRgdC/0L7Qu9C90Y/QtdGC0YHRjyDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNTZXJ2ZXIgPSBpbmplY3QoSVNfU0VSVkVSKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQvtCxINC+0YLQstC10YLQtSDQvdCwINC30LDQv9GA0L7RgSAo0LTQvtGB0YLRg9C/0L3RiyDRgtC+0LvRjNC60L4g0L3QsCDRgdC10YDQstC10YDQtSDQv9GA0LggU1NSKS5cbiAgICAgKlxuICAgICAqIEFuZ3VsYXIgMjEgKNC80LjQs9GA0LDRhtC40Y8gU1NSKToge0BsaW5rIFJFU1BPTlNFfSDigJQg0LrQsNGB0YLQvtC80L3Ri9C5IEV4cHJlc3Mt0YLQvtC60LXQvSwg0LrQvtGC0L7RgNGL0Lkg0L/RgNC+0LLQsNC50LTQuNGC0YHRjyDQsiBgc2VydmVyLnRzYFxuICAgICAqINGH0LXRgNC10LcgQ29tbW9uRW5naW5lLiDQndCwIHVwZ3JhZGUt0LLQtdGC0LrQtSBgc2VydmVyLnRzYCDQvtGB0YLQsNC70YHRjyDQvdCwIENvbW1vbkVuZ2luZSwg0L/QvtGN0YLQvtC80YMg0L/RgNC4INGB0LvQuNGP0L3QuNC4INC30LTQtdGB0YxcbiAgICAgKiDQvdC40YfQtdCz0L4g0LzQtdC90Y/RgtGMINC90LUg0L3Rg9C20L3Qvi4g0JXRgdC70LggYHNlcnZlci50c2Ag0LzQuNCz0YDQuNGA0YPRjtGCINC90LAgYEFuZ3VsYXJOb2RlQXBwRW5naW5lYCArIGBjcmVhdGVOb2RlUmVxdWVzdEhhbmRsZXJgLFxuICAgICAqINC30LDQvNC10L3QuNGC0LUge0BsaW5rIFJFU1BPTlNFfSDQvdCwINC90LDRgtC40LLQvdGL0LkgYFJFU1BPTlNFX0lOSVRgIChgSW5qZWN0aW9uVG9rZW48UmVzcG9uc2VJbml0IHwgbnVsbD5gINC40LcgYEBhbmd1bGFyL2NvcmVgKTtcbiAgICAgKiDRgdC8LiDRgdC10YDQstC10YDQvdGD0Y4g0LLQtdGC0LrRgyDQsiB7QGxpbmsgcmVkaXJlY3RUb1BhcmVudENhdGVnb3J5JH0uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNwb25zZSA9IGluamVjdChSRVNQT05TRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqINCU0L7QutGD0LzQtdC90YIg0YLQtdC60YPRidC10Lkg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDRgNC10LTQuNGA0LXQutGCINC90LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRjiDQvdC10LTQvtGB0YLRg9C/0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC90LXQtNC+0YHRgtGD0L/QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqIEByZXR1cm5zINCf0L7RgtC+0LosINC30LDQstC10YDRiNCw0Y7RidC40LnRgdGPINC/0L7RgdC70LUg0YDQtdC00LjRgNC10LrRgtCwLiDQrdC80LjRgtC40YIg0L7RiNC40LHQutGDIHtAbGluayBIdHRwRXJyb3JSZXNwb25zZX0sINC10YHQu9C4INGA0L7QtNC40YLQtdC70YzRgdC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0L3QtSDQvdCw0LnQtNC10L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVkaXJlY3RUb0NhdGVnb3J5UGFyZW50JChjYXRlZ29yeUlkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZGlyZWN0VG9QYXJlbnRDYXRlZ29yeSQodGhpcy5jYXRhbG9nU2VydmljZS5nZXRDYXRlZ29yeVBhcmVudENhdGVnb3J5JChjYXRlZ29yeUlkT3JTbHVnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdGCINGA0LXQtNC40YDQtdC60YIg0L3QsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOINC90LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdElkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC90LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRgtC+0LLQsNGA0LAuXG4gICAgICogQHJldHVybnMg0J/QvtGC0L7Quiwg0LfQsNCy0LXRgNGI0LDRjtGJ0LjQudGB0Y8g0L/QvtGB0LvQtSDRgNC10LTQuNGA0LXQutGC0LAuINCt0LzQuNGC0LjRgiDQvtGI0LjQsdC60YMge0BsaW5rIEh0dHBFcnJvclJlc3BvbnNlfSwg0LXRgdC70Lgg0YDQvtC00LjRgtC10LvRjNGB0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDQvdC1INC90LDQudC00LXQvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWRpcmVjdFRvUHJvZHVjdFBhcmVudCQocHJvZHVjdElkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZGlyZWN0VG9QYXJlbnRDYXRlZ29yeSQodGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0UGFyZW50Q2F0ZWdvcnkkKHByb2R1Y3RJZE9yU2x1ZykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDRgNC10LTQuNGA0LXQutGCINC90LAg0L/QvtC70YPRh9C10L3QvdGD0Y4g0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRji5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJlbnRDYXRlZ29yeSQg0J/QvtGC0L7QuiDRgSDQtNCw0L3QvdGL0LzQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqIEByZXR1cm5zINCf0L7RgtC+0LosINC30LDQstC10YDRiNCw0Y7RidC40LnRgdGPINC/0L7RgdC70LUg0YDQtdC00LjRgNC10LrRgtCwLiDQrdC80LjRgtC40YIg0L7RiNC40LHQutGDIHtAbGluayBIdHRwRXJyb3JSZXNwb25zZX0g0YEg0LrQvtC00L7QvCA0MDQsINC10YHQu9C4INGA0L7QtNC40YLQtdC70YzRgdC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0L3QtSDQvdCw0LnQtNC10L3QsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlZGlyZWN0VG9QYXJlbnRDYXRlZ29yeSQocGFyZW50Q2F0ZWdvcnkkOiBPYnNlcnZhYmxlPFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3Q+KTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgICAgICByZXR1cm4gcGFyZW50Q2F0ZWdvcnkkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHBhcmVudENhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gcGFyZW50Q2F0ZWdvcnlbdGhpcy5pZE9yU2x1Z107XG5cbiAgICAgICAgICAgICAgICAvLyDQoNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAg4oCUINC+0YLQvtCx0YDQsNC20LDQtdC8INGB0YLRgNCw0L3QuNGG0YMg0L7RiNC40LHQutC4LlxuICAgICAgICAgICAgICAgIGlmICghdHVpSXNQcmVzZW50KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgc3RhdHVzOiA0MDQgfSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnL2NhdGFsb2cnLCB0YXJnZXRdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh1cmxUcmVlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VydmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNTUiDRgSDQtNC+0YHRgtGD0L/QvdGL0LwgUkVTUE9OU0UgKNC/0YDQvtC0LdGB0LXRgNCy0LXRgCk6INCy0YvRgdGC0LDQstC70Y/QtdC8IDMwMiDQuCDQt9Cw0LPQvtC70L7QstC+0LogTG9jYXRpb24g0LTQu9GPINC60L7RgNGA0LXQutGC0L3QvtCz0L4g0YDQtdC00LjRgNC10LrRgtCwINC/0L7QuNGB0LrQvtCy0YvRhSDQsdC+0YLQvtCyLlxuICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAvLyBBbmd1bGFyIDIxICjQvNC40LPRgNCw0YbQuNGPIFNTUik6INC/0YDQuCDQv9C10YDQtdGF0L7QtNC1IHNlcnZlci50cyDQvdCwIEFuZ3VsYXJOb2RlQXBwRW5naW5lINCy0YvRgdGC0LDQstC70Y/QudGC0LUg0YHRgtCw0YLRg9GBL9C30LDQs9C+0LvQvtCy0L7QulxuICAgICAgICAgICAgICAgICAgICAvLyDRh9C10YDQtdC3INC90LDRgtC40LLQvdGL0LkgUkVTUE9OU0VfSU5JVCDQstC80LXRgdGC0L4gRXhwcmVzcy3QvNC10YLQvtC00L7QsiByZXNwb25zZS5zZXRIZWFkZXIvcmVzcG9uc2Uuc3RhdHVzOlxuICAgICAgICAgICAgICAgICAgICAvLyAgIGlmICh0aGlzLnJlc3BvbnNlSW5pdCkgeyB0aGlzLnJlc3BvbnNlSW5pdC5zdGF0dXMgPSAzMDI7ICh0aGlzLnJlc3BvbnNlSW5pdC5oZWFkZXJzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pWydMb2NhdGlvbiddID0gdGFyZ2V0VXJsOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlLnNldEhlYWRlcignTG9jYXRpb24nLCB0YXJnZXRVcmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZS5zdGF0dXMoMzAyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU1NSINCx0LXQtyBSRVNQT05TRSAo0L3QsNC/0YDQuNC80LXRgCwgZGV2LdGB0LXRgNCy0LXRgCBuZyBzZXJ2ZSk6INGB0LXRgNCy0LXRgNC90YvQuSDRgNC10LTQuNGA0LXQutGCINC90LXQstC+0LfQvNC+0LbQtdC9LFxuICAgICAgICAgICAgICAgICAgICAvLyDQv9C+0Y3RgtC+0LzRgyDQvtGC0L7QsdGA0LDQttCw0LXQvCDRgdGC0YDQsNC90LjRhtGDINC+0YjQuNCx0LrQuCwg0LrQsNC6INC00L4g0LLQvdC10LTRgNC10L3QuNGPINGA0LXQtNC40YDQtdC60YLQsCwg0LLQvNC10YHRgtC+INCx0LXRgdC60L7QvdC10YfQvdC+0LPQviDQu9C+0LDQtNC10YDQsC5cbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gQW5ndWxhciAyMSAo0LzQuNCz0YDQsNGG0LjRjyBTU1IpOiDRjdGC0L7RgiDRhNC+0LvQsdGN0Log0L3Rg9C20LXQvSwg0L/QvtC60LAgbmcgc2VydmUg0L3QtSDQuNGB0L/QvtC70L3Rj9C10YIgc2VydmVyLnRzICjQvtC9INC90LAgQ29tbW9uRW5naW5lKS5cbiAgICAgICAgICAgICAgICAgICAgLy8g0J/QvtGB0LvQtSDQvNC40LPRgNCw0YbQuNC4IHNlcnZlci50cyDQvdCwIGNyZWF0ZU5vZGVSZXF1ZXN0SGFuZGxlciBkZXYt0YHQtdGA0LLQtdGAINC90LDRh9C90ZHRgiDQuNGB0L/QvtC70L3Rj9GC0Ywgc2VydmVyLnRzLCDQuCBSRVNQT05TRS9SRVNQT05TRV9JTklUXG4gICAgICAgICAgICAgICAgICAgIC8vINGB0YLQsNC90LXRgiDQtNC+0YHRgtGD0L/QtdC9INCyIG5nIHNlcnZlIOKAlCDRgtC+0LPQtNCwINGN0YLRgyDQstC10YLQutGDINGBIHRocm93RXJyb3IoNDA0KSDQvNC+0LbQvdC+INGD0LTQsNC70LjRgtGMLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgSHR0cEVycm9yUmVzcG9uc2UoeyBzdGF0dXM6IDQwNCB9KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8g0JHRgNCw0YPQt9C10YA6INC/0L7RgtC+0Log0LTQsNC90L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuCAoU0NfQ0FURUdPUllfSU5GTykg0LfQsNCy0LXRgNGI0LDQtdGC0YHRjyDQvtGI0LjQsdC60L7QuSDQv9GA0LggNDA0INC4INC90LUg0LLQvtC30L7QsdC90L7QstC70Y/QtdGC0YHRj1xuICAgICAgICAgICAgICAgIC8vINC/0YDQuCDQvdCw0LLQuNCz0LDRhtC40Lgg0LIg0YDQsNC80LrQsNGFINGC0L7Qs9C+INC20LUg0LzQsNGA0YjRgNGD0YLQsCwg0L/QvtGN0YLQvtC80YMg0YDQtdC00LjRgNC10LrRgiDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC/0L7Qu9C90L7QuSDQv9C10YDQtdC30LDQs9GA0YPQt9C60L7QuSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uLnJlcGxhY2Ug0L3QtSDQtNC+0LHQsNCy0LvRj9C10YIg0LfQsNC/0LjRgdGMINCyINC40YHRgtC+0YDQuNGOLCDRh9GC0L7QsdGLINC60L3QvtC/0LrQsCDCq9Cd0LDQt9Cw0LTCuyDQvdC1INCy0L7Qt9Cy0YDQsNGJ0LDQu9CwINC90LAg0L3QtdC00L7RgdGC0YPQv9C90YPRjiDRgdGC0YDQsNC90LjRhtGDLlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gQW5ndWxhciAyMSAo0LzQuNCz0YDQsNGG0LjRjyBTU1IpOiDRjdGC0YMg0YHRgtGA0L7QutGDINCw0L/Qs9GA0LXQudC0INCd0JUg0YHQvdC40LzQsNC10YIg4oCUINC/0YDQuNGH0LjQvdCwINCyINGA0LDQvdGC0LDQudC80LUg0L/RgNC40LvQvtC20LXQvdC40Y8gKNC80ZHRgNGC0LLRi9C5INC/0L7RgtC+0LpcbiAgICAgICAgICAgICAgICAvLyBTQ19DQVRFR09SWV9JTkZPINC/0YDQuCBTUEEt0L3QsNCy0LjQs9Cw0YbQuNC4KSwg0LAg0L3QtSDQsiBTU1IuINCS0LXRgNC90YPRgtGMIFNQQS3QvdCw0LLQuNCz0LDRhtC40Y4gKHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKSDQvNC+0LbQvdC+INGC0L7Qu9GM0LrQvlxuICAgICAgICAgICAgICAgIC8vINGB0LTQtdC70LDQsiBTQ19DQVRFR09SWV9JTkZPINGD0YHRgtC+0LnRh9C40LLRi9C8INC6IDQwNCAo0LvQvtCy0LjRgtGMINC+0YjQuNCx0LrRgyDQstC90YPRgtGA0Lggc3dpdGNoTWFwKSDQu9C40LHQviDRg9C90LXRgdGPINGA0LXQtNC40YDQtdC60YIg0LIgZ3VhcmQgKyBSZWRpcmVjdENvbW1hbmQuXG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5yZXBsYWNlKHRhcmdldFVybCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1yZWRpcmVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2ctcmVkaXJlY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXdDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFeEQ7Ozs7Ozs7Ozs7R0FVRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFIckM7UUFJSTs7V0FFRztRQUNjLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFM0Q7O1dBRUc7UUFDYyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpDOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5Qzs7Ozs7Ozs7V0FRRztR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SSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLHlIQUF5SDtnQkFDekgsRUFBRTtnQkFDRix5R0FBeUc7Z0JBQ3pHLDBGQUEwRjtnQkFDMUYsOElBQThJO2dCQUM5SSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFMUIsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7Z0JBRUQsbUZBQW1GO2dCQUNuRiwrRkFBK0Y7Z0JBQy9GLEVBQUU7Z0JBQ0YsMkdBQTJHO2dCQUMzRyx1SEFBdUg7Z0JBQ3ZILGdGQUFnRjtnQkFDaEYsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELHFHQUFxRztZQUNyRyx1R0FBdUc7WUFDdkcsOEdBQThHO1lBQzlHLEVBQUU7WUFDRiwwR0FBMEc7WUFDMUcsNkdBQTZHO1lBQzdHLDJIQUEySDtZQUMzSCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFMUMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7K0dBektRLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07OzRGQUVULHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgRU1QVFksIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElTX1NFUlZFUiwgUkVTUE9OU0UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc3NyLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBTQ19JRF9PUl9TTFVHX0lOX1JPVVRFIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWlkLW9yLXNsdWctaW4tcm91dGUnO1xuaW1wb3J0IHsgU2NJUGFyZW50Q2F0ZWdvcnlSZWRpcmVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1wYXJlbnQtY2F0ZWdvcnktcmVkaXJlY3QnO1xuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSB9IGZyb20gJy4vc2MtY2F0YWxvZy5zZXJ2aWNlJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0YDQtdC00LjRgNC10LrRgtCwINC90LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRjiDQv9GA0Lgg0L3QtdC00L7RgdGC0YPQv9C90L7RgdGC0LggKEhUVFAgNDA0KSDRgtC+0LLQsNGA0LAg0LjQu9C4INC60LDRgtC10LPQvtGA0LjQuC5cbiAqXG4gKiDQl9Cw0L/RgNCw0YjQuNCy0LDQtdGCINGDINCx0Y3QutC10L3QtNCwINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4g0L3QtdC00L7RgdGC0YPQv9C90L7QuSDRgdGD0YnQvdC+0YHRgtC4INC4INCy0YvQv9C+0LvQvdGP0LXRgiDRgNC10LTQuNGA0LXQutGCOlxuICogLSDQvdCwINGB0LXRgNCy0LXRgNC1IChTU1IpINC/0YDQuCDQtNC+0YHRgtGD0L/QvdC+0Lwge0BsaW5rIFJFU1BPTlNFfSDigJQg0LLRi9GB0YLQsNCy0LvRj9C10YIgSFRUUC3RgdGC0LDRgtGD0YEgMzAyINC4INC30LDQs9C+0LvQvtCy0L7QuiBgTG9jYXRpb25gINC00LvRjyDQutC+0YDRgNC10LrRgtC90L7Qs9C+INGA0LXQtNC40YDQtdC60YLQsCDQv9C+0LjRgdC60L7QstGL0YUg0LHQvtGC0L7QsjtcbiAqIC0g0L3QsCDRgdC10YDQstC10YDQtSDQsdC10Lcge0BsaW5rIFJFU1BPTlNFfSAo0L3QsNC/0YDQuNC80LXRgCwgZGV2LdGB0LXRgNCy0LXRgCBgbmcgc2VydmVgKSDigJQg0LfQsNCy0LXRgNGI0LDQtdGCINC/0L7RgtC+0Log0L7RiNC40LHQutC+0LkgNDA0LCDRh9GC0L7QsdGLINC+0YLQvtCx0YDQsNC30LjQu9Cw0YHRjCDRgdGC0YDQsNC90LjRhtCwINC+0YjQuNCx0LrQuDtcbiAqIC0g0LIg0LHRgNCw0YPQt9C10YDQtSDigJQg0LLRi9C/0L7Qu9C90Y/QtdGCINC/0L7Qu9C90YPRjiDQvdCw0LLQuNCz0LDRhtC40Y4g0L3QsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOLlxuICpcbiAqINCV0YHQu9C4INGA0L7QtNC40YLQtdC70YzRgdC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0L3QtSDQvdCw0LnQtNC10L3QsCwg0L/QvtGC0L7QuiDRgtCw0LrQttC1INC30LDQstC10YDRiNCw0LXRgtGB0Y8g0L7RiNC40LHQutC+0Lkge0BsaW5rIEh0dHBFcnJvclJlc3BvbnNlfSxcbiAqINGH0YLQvtCx0Ysg0LLRi9C30YvQstCw0Y7RidC40Lkg0LrQvtC0INC+0YLQvtCx0YDQsNC30LjQuyDRgdGC0YDQsNC90LjRhtGDINC+0YjQuNCx0LrQuC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRhbG9nUmVkaXJlY3RTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvNCw0YDRiNGA0YPRgtC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsCDQuNC70Lggc2x1ZyDQsiDQvNCw0YDRiNGA0YPRgtCw0YUg0YLQvtCy0LDRgNC+0LIg0Lgg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWcgPSBpbmplY3QoU0NfSURfT1JfU0xVR19JTl9ST1VURSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGC0LXQutGD0YnQuNC5INGB0LrRgNC40L/RgiDQuNGB0L/QvtC70L3Rj9C10YLRgdGPINC90LAg0YHQtdGA0LLQtdGA0LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc1NlcnZlciA9IGluamVjdChJU19TRVJWRVIpO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+0LEg0L7RgtCy0LXRgtC1INC90LAg0LfQsNC/0YDQvtGBICjQtNC+0YHRgtGD0L/QvdGLINGC0L7Qu9GM0LrQviDQvdCwINGB0LXRgNCy0LXRgNC1INC/0YDQuCBTU1IpLlxuICAgICAqXG4gICAgICogQW5ndWxhciAyMSAo0LzQuNCz0YDQsNGG0LjRjyBTU1IpOiB7QGxpbmsgUkVTUE9OU0V9IOKAlCDQutCw0YHRgtC+0LzQvdGL0LkgRXhwcmVzcy3RgtC+0LrQtdC9LCDQutC+0YLQvtGA0YvQuSDQv9GA0L7QstCw0LnQtNC40YLRgdGPINCyIGBzZXJ2ZXIudHNgXG4gICAgICog0YfQtdGA0LXQtyBDb21tb25FbmdpbmUuINCd0LAgdXBncmFkZS3QstC10YLQutC1IGBzZXJ2ZXIudHNgINC+0YHRgtCw0LvRgdGPINC90LAgQ29tbW9uRW5naW5lLCDQv9C+0Y3RgtC+0LzRgyDQv9GA0Lgg0YHQu9C40Y/QvdC40Lgg0LfQtNC10YHRjFxuICAgICAqINC90LjRh9C10LPQviDQvNC10L3Rj9GC0Ywg0L3QtSDQvdGD0LbQvdC+LiDQldGB0LvQuCBgc2VydmVyLnRzYCDQvNC40LPRgNC40YDRg9GO0YIg0L3QsCBgQW5ndWxhck5vZGVBcHBFbmdpbmVgICsgYGNyZWF0ZU5vZGVSZXF1ZXN0SGFuZGxlcmAsXG4gICAgICog0LfQsNC80LXQvdC40YLQtSB7QGxpbmsgUkVTUE9OU0V9INC90LAg0L3QsNGC0LjQstC90YvQuSBgUkVTUE9OU0VfSU5JVGAgKGBJbmplY3Rpb25Ub2tlbjxSZXNwb25zZUluaXQgfCBudWxsPmAg0LjQtyBgQGFuZ3VsYXIvY29yZWApO1xuICAgICAqINGB0LwuINGB0LXRgNCy0LXRgNC90YPRjiDQstC10YLQutGDINCyIHtAbGluayByZWRpcmVjdFRvUGFyZW50Q2F0ZWdvcnkkfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNlID0gaW5qZWN0KFJFU1BPTlNFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JTQvtC60YPQvNC10L3RgiDRgtC10LrRg9GJ0LXQuSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdGCINGA0LXQtNC40YDQtdC60YIg0L3QsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOINC90LXQtNC+0YHRgtGD0L/QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0L3QtdC00L7RgdGC0YPQv9C90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICogQHJldHVybnMg0J/QvtGC0L7Quiwg0LfQsNCy0LXRgNGI0LDRjtGJ0LjQudGB0Y8g0L/QvtGB0LvQtSDRgNC10LTQuNGA0LXQutGC0LAuINCt0LzQuNGC0LjRgiDQvtGI0LjQsdC60YMge0BsaW5rIEh0dHBFcnJvclJlc3BvbnNlfSwg0LXRgdC70Lgg0YDQvtC00LjRgtC10LvRjNGB0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDQvdC1INC90LDQudC00LXQvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWRpcmVjdFRvQ2F0ZWdvcnlQYXJlbnQkKGNhdGVnb3J5SWRPclNsdWc6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3RUb1BhcmVudENhdGVnb3J5JCh0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldENhdGVnb3J5UGFyZW50Q2F0ZWdvcnkkKGNhdGVnb3J5SWRPclNsdWcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0YDQtdC00LjRgNC10LrRgiDQvdCwINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4g0L3QtdC00L7RgdGC0YPQv9C90L7Qs9C+INGC0L7QstCw0YDQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0L3QtdC00L7RgdGC0YPQv9C90L7Qs9C+INGC0L7QstCw0YDQsC5cbiAgICAgKiBAcmV0dXJucyDQn9C+0YLQvtC6LCDQt9Cw0LLQtdGA0YjQsNGO0YnQuNC50YHRjyDQv9C+0YHQu9C1INGA0LXQtNC40YDQtdC60YLQsC4g0K3QvNC40YLQuNGCINC+0YjQuNCx0LrRgyB7QGxpbmsgSHR0cEVycm9yUmVzcG9uc2V9LCDQtdGB0LvQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlZGlyZWN0VG9Qcm9kdWN0UGFyZW50JChwcm9kdWN0SWRPclNsdWc6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3RUb1BhcmVudENhdGVnb3J5JCh0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3RQYXJlbnRDYXRlZ29yeSQocHJvZHVjdElkT3JTbHVnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7Qv9C10YDQsNGC0L7RgCDRg9GB0YLQvtC50YfQuNCy0L7QuSDQvtCx0YDQsNCx0L7RgtC60Lgg0L3QtdC00L7RgdGC0YPQv9C90L7QuSAoSFRUUC3QvtGI0LjQsdC60LApINC60LDRgtC10LPQvtGA0LjQuCDQsiDQv9C+0YLQvtC60LUg0LTQsNC90L3Ri9GFOiDQv9GA0LggNDA0INCy0YvQv9C+0LvQvdGP0LXRgiDRgNC10LTQuNGA0LXQutGCXG4gICAgICog0L3QsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOLCDQv9GA0Lgg0L3QtdC00L7RgdGC0YPQv9C90L7QvCDRgNC+0LTQuNGC0LXQu9C1INC40LvQuCDQuNC90L7QuSDQvtGI0LjQsdC60LUg0YHQvtC+0LHRidCw0LXRgiDQutC+0LQg0YfQtdGA0LXQtyB7QGxpbmsgb25FcnJvckNvZGV9LlxuICAgICAqINCe0YjQuNCx0LrRgyDQvdC1INC/0YDQvtCx0YDQsNGB0YvQstCw0LXRgiAo0LfQsNCy0LXRgNGI0LDQtdGCINC/0L7RgtC+0Loge0BsaW5rIEVNUFRZfSksINC/0L7RjdGC0L7QvNGDINC/0L7RgtC+0Log0LTQsNC90L3Ri9GFINC90LUg0LfQsNCy0LXRgNGI0LDQtdGC0YHRjyDQvtGI0LjQsdC60L7QuS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC90LXQtNC+0YHRgtGD0L/QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqIEBwYXJhbSBvbkVycm9yQ29kZSDQmtC+0LvQsdGN0Log0YPRgdGC0LDQvdC+0LLQutC4INC60L7QtNCwINC+0YjQuNCx0LrQuCAo0L3QsNC/0YDQuNC80LXRgCwg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgtGA0LDQvdC40YbRiyDQvtGI0LjQsdC60LgpLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVVbmF2YWlsYWJsZUNhdGVnb3J5JDxUPihjYXRlZ29yeUlkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcsIG9uRXJyb3JDb2RlOiAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVVbmF2YWlsYWJsZSQoKCkgPT4gdGhpcy5yZWRpcmVjdFRvQ2F0ZWdvcnlQYXJlbnQkKGNhdGVnb3J5SWRPclNsdWcpLCBvbkVycm9yQ29kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7Qv9C10YDQsNGC0L7RgCDRg9GB0YLQvtC50YfQuNCy0L7QuSDQvtCx0YDQsNCx0L7RgtC60Lgg0L3QtdC00L7RgdGC0YPQv9C90L7Qs9C+IChIVFRQLdC+0YjQuNCx0LrQsCkg0YLQvtCy0LDRgNCwINCyINC/0L7RgtC+0LrQtSDQtNCw0L3QvdGL0YU6INC/0YDQuCA0MDQg0LLRi9C/0L7Qu9C90Y/QtdGCINGA0LXQtNC40YDQtdC60YJcbiAgICAgKiDQvdCwINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4g0YLQvtCy0LDRgNCwLCDQv9GA0Lgg0L3QtdC00L7RgdGC0YPQv9C90L7QvCDRgNC+0LTQuNGC0LXQu9C1INC40LvQuCDQuNC90L7QuSDQvtGI0LjQsdC60LUg0YHQvtC+0LHRidCw0LXRgiDQutC+0LQg0YfQtdGA0LXQtyB7QGxpbmsgb25FcnJvckNvZGV9LlxuICAgICAqINCe0YjQuNCx0LrRgyDQvdC1INC/0YDQvtCx0YDQsNGB0YvQstCw0LXRgiAo0LfQsNCy0LXRgNGI0LDQtdGCINC/0L7RgtC+0Loge0BsaW5rIEVNUFRZfSksINC/0L7RjdGC0L7QvNGDINC/0L7RgtC+0Log0LTQsNC90L3Ri9GFINC90LUg0LfQsNCy0LXRgNGI0LDQtdGC0YHRjyDQvtGI0LjQsdC60L7QuS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0L3QtdC00L7RgdGC0YPQv9C90L7Qs9C+INGC0L7QstCw0YDQsC5cbiAgICAgKiBAcGFyYW0gb25FcnJvckNvZGUg0JrQvtC70LHRjdC6INGD0YHRgtCw0L3QvtCy0LrQuCDQutC+0LTQsCDQvtGI0LjQsdC60LggKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGB0YLRgNCw0L3QuNGG0Ysg0L7RiNC40LHQutC4KS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlVW5hdmFpbGFibGVQcm9kdWN0JDxUPihwcm9kdWN0SWRPclNsdWc6IG51bWJlciB8IHN0cmluZywgb25FcnJvckNvZGU6IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVVuYXZhaWxhYmxlJCgoKSA9PiB0aGlzLnJlZGlyZWN0VG9Qcm9kdWN0UGFyZW50JChwcm9kdWN0SWRPclNsdWcpLCBvbkVycm9yQ29kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JHQsNC30L7QstGL0Lkg0L7Qv9C10YDQsNGC0L7RgCDRg9GB0YLQvtC50YfQuNCy0L7QuSDQvtCx0YDQsNCx0L7RgtC60Lgg0L3QtdC00L7RgdGC0YPQv9C90L7QuSDRgdGD0YnQvdC+0YHRgtC4OiDQv9GA0LggNDA0IOKAlCDRgNC10LTQuNGA0LXQutGCINC90LAg0YDQvtC00LjRgtC10LvRjyAo0YfQtdGA0LXQtyB7QGxpbmsgcmVkaXJlY3RUb1BhcmVudCR9KSxcbiAgICAgKiDQv9GA0Lgg0L3QtdC00L7RgdGC0YPQv9C90L7QvCDRgNC+0LTQuNGC0LXQu9C1INC40LvQuCDQuNC90L7QvCB7QGxpbmsgSHR0cEVycm9yUmVzcG9uc2V9IOKAlCB7QGxpbmsgb25FcnJvckNvZGV9INGBINC60L7QtNC+0Lwg0L7RgtCy0LXRgtCwOyDQstGB0LXQs9C00LAge0BsaW5rIEVNUFRZfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWRpcmVjdFRvUGFyZW50JCDQpNCw0LHRgNC40LrQsCDQv9C+0YLQvtC60LAg0YDQtdC00LjRgNC10LrRgtCwINC90LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRji5cbiAgICAgKiBAcGFyYW0gb25FcnJvckNvZGUg0JrQvtC70LHRjdC6INGD0YHRgtCw0L3QvtCy0LrQuCDQutC+0LTQsCDQvtGI0LjQsdC60LguXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBwcml2YXRlIGhhbmRsZVVuYXZhaWxhYmxlJDxUPihyZWRpcmVjdFRvUGFyZW50JDogKCkgPT4gT2JzZXJ2YWJsZTxuZXZlcj4sIG9uRXJyb3JDb2RlOiAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICAgICAgICByZXR1cm4gKHNvdXJjZSQpID0+XG4gICAgICAgICAgICBzb3VyY2UkLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWRpcmVjdFRvUGFyZW50JCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigocmVkaXJlY3RFcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3RFcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yQ29kZShyZWRpcmVjdEVycm9yLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvckNvZGUoZXJyb3Iuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0YDQtdC00LjRgNC10LrRgiDQvdCwINC/0L7Qu9GD0YfQtdC90L3Rg9GOINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyZW50Q2F0ZWdvcnkkINCf0L7RgtC+0Log0YEg0LTQsNC90L3Ri9C80Lgg0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcmV0dXJucyDQn9C+0YLQvtC6LCDQt9Cw0LLQtdGA0YjQsNGO0YnQuNC50YHRjyDQv9C+0YHQu9C1INGA0LXQtNC40YDQtdC60YLQsC4g0K3QvNC40YLQuNGCINC+0YjQuNCx0LrRgyB7QGxpbmsgSHR0cEVycm9yUmVzcG9uc2V9INGBINC60L7QtNC+0LwgNDA0LCDQtdGB0LvQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWRpcmVjdFRvUGFyZW50Q2F0ZWdvcnkkKHBhcmVudENhdGVnb3J5JDogT2JzZXJ2YWJsZTxTY0lQYXJlbnRDYXRlZ29yeVJlZGlyZWN0Pik6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgcmV0dXJuIHBhcmVudENhdGVnb3J5JC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChwYXJlbnRDYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHBhcmVudENhdGVnb3J5W3RoaXMuaWRPclNsdWddO1xuXG4gICAgICAgICAgICAgICAgLy8g0KDQvtC00LjRgtC10LvRjNGB0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDQvdC1INC90LDQudC00LXQvdCwIOKAlCDQvtGC0L7QsdGA0LDQttCw0LXQvCDRgdGC0YDQsNC90LjRhtGDINC+0YjQuNCx0LrQuC5cbiAgICAgICAgICAgICAgICBpZiAoIXR1aUlzUHJlc2VudCh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7IHN0YXR1czogNDA0IH0pKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9jYXRhbG9nJywgdGFyZ2V0XSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRVcmwgPSB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodXJsVHJlZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlcnZlcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBTU1Ig0YEg0LTQvtGB0YLRg9C/0L3Ri9C8IFJFU1BPTlNFICjQv9GA0L7QtC3RgdC10YDQstC10YApOiDQstGL0YHRgtCw0LLQu9GP0LXQvCAzMDIg0Lgg0LfQsNCz0L7Qu9C+0LLQvtC6IExvY2F0aW9uINC00LvRjyDQutC+0YDRgNC10LrRgtC90L7Qs9C+INGA0LXQtNC40YDQtdC60YLQsCDQv9C+0LjRgdC60L7QstGL0YUg0LHQvtGC0L7Qsi5cbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gQW5ndWxhciAyMSAo0LzQuNCz0YDQsNGG0LjRjyBTU1IpOiDQv9GA0Lgg0L/QtdGA0LXRhdC+0LTQtSBzZXJ2ZXIudHMg0L3QsCBBbmd1bGFyTm9kZUFwcEVuZ2luZSDQstGL0YHRgtCw0LLQu9GP0LnRgtC1INGB0YLQsNGC0YPRgS/Qt9Cw0LPQvtC70L7QstC+0LpcbiAgICAgICAgICAgICAgICAgICAgLy8g0YfQtdGA0LXQtyDQvdCw0YLQuNCy0L3Ri9C5IFJFU1BPTlNFX0lOSVQg0LLQvNC10YHRgtC+IEV4cHJlc3Mt0LzQtdGC0L7QtNC+0LIgcmVzcG9uc2Uuc2V0SGVhZGVyL3Jlc3BvbnNlLnN0YXR1czpcbiAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAodGhpcy5yZXNwb25zZUluaXQpIHsgdGhpcy5yZXNwb25zZUluaXQuc3RhdHVzID0gMzAyOyAodGhpcy5yZXNwb25zZUluaXQuaGVhZGVycyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KVsnTG9jYXRpb24nXSA9IHRhcmdldFVybDsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZS5zZXRIZWFkZXIoJ0xvY2F0aW9uJywgdGFyZ2V0VXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2Uuc3RhdHVzKDMwMik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNTUiDQsdC10LcgUkVTUE9OU0UgKNC90LDQv9GA0LjQvNC10YAsIGRldi3RgdC10YDQstC10YAgbmcgc2VydmUpOiDRgdC10YDQstC10YDQvdGL0Lkg0YDQtdC00LjRgNC10LrRgiDQvdC10LLQvtC30LzQvtC20LXQvSxcbiAgICAgICAgICAgICAgICAgICAgLy8g0L/QvtGN0YLQvtC80YMg0L7RgtC+0LHRgNCw0LbQsNC10Lwg0YHRgtGA0LDQvdC40YbRgyDQvtGI0LjQsdC60LgsINC60LDQuiDQtNC+INCy0L3QtdC00YDQtdC90LjRjyDRgNC10LTQuNGA0LXQutGC0LAsINCy0LzQtdGB0YLQviDQsdC10YHQutC+0L3QtdGH0L3QvtCz0L4g0LvQvtCw0LTQtdGA0LAuXG4gICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgIC8vIEFuZ3VsYXIgMjEgKNC80LjQs9GA0LDRhtC40Y8gU1NSKTog0Y3RgtC+0YIg0YTQvtC70LHRjdC6INC90YPQttC10L0sINC/0L7QutCwIG5nIHNlcnZlINC90LUg0LjRgdC/0L7Qu9C90Y/QtdGCIHNlcnZlci50cyAo0L7QvSDQvdCwIENvbW1vbkVuZ2luZSkuXG4gICAgICAgICAgICAgICAgICAgIC8vINCf0L7RgdC70LUg0LzQuNCz0YDQsNGG0LjQuCBzZXJ2ZXIudHMg0L3QsCBjcmVhdGVOb2RlUmVxdWVzdEhhbmRsZXIgZGV2LdGB0LXRgNCy0LXRgCDQvdCw0YfQvdGR0YIg0LjRgdC/0L7Qu9C90Y/RgtGMIHNlcnZlci50cywg0LggUkVTUE9OU0UvUkVTUE9OU0VfSU5JVFxuICAgICAgICAgICAgICAgICAgICAvLyDRgdGC0LDQvdC10YIg0LTQvtGB0YLRg9C/0LXQvSDQsiBuZyBzZXJ2ZSDigJQg0YLQvtCz0LTQsCDRjdGC0YMg0LLQtdGC0LrRgyDRgSB0aHJvd0Vycm9yKDQwNCkg0LzQvtC20L3QviDRg9C00LDQu9C40YLRjC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgc3RhdHVzOiA0MDQgfSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vINCR0YDQsNGD0LfQtdGAOiDQv9C+0YLQvtC6INC00LDQvdC90YvRhSDQutCw0YLQtdCz0L7RgNC40LggKFNDX0NBVEVHT1JZX0lORk8pINC30LDQstC10YDRiNCw0LXRgtGB0Y8g0L7RiNC40LHQutC+0Lkg0L/RgNC4IDQwNCDQuCDQvdC1INCy0L7Qt9C+0LHQvdC+0LLQu9GP0LXRgtGB0Y9cbiAgICAgICAgICAgICAgICAvLyDQv9GA0Lgg0L3QsNCy0LjQs9Cw0YbQuNC4INCyINGA0LDQvNC60LDRhSDRgtC+0LPQviDQttC1INC80LDRgNGI0YDRg9GC0LAsINC/0L7RjdGC0L7QvNGDINGA0LXQtNC40YDQtdC60YIg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDQv9C+0LvQvdC+0Lkg0L/QtdGA0LXQt9Cw0LPRgNGD0LfQutC+0Lkg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbi5yZXBsYWNlINC90LUg0LTQvtCx0LDQstC70Y/QtdGCINC30LDQv9C40YHRjCDQsiDQuNGB0YLQvtGA0LjRjiwg0YfRgtC+0LHRiyDQutC90L7Qv9C60LAgwqvQndCw0LfQsNC0wrsg0L3QtSDQstC+0LfQstGA0LDRidCw0LvQsCDQvdCwINC90LXQtNC+0YHRgtGD0L/QvdGD0Y4g0YHRgtGA0LDQvdC40YbRgy5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIEFuZ3VsYXIgMjEgKNC80LjQs9GA0LDRhtC40Y8gU1NSKTog0Y3RgtGDINGB0YLRgNC+0LrRgyDQsNC/0LPRgNC10LnQtCDQndCVINGB0L3QuNC80LDQtdGCIOKAlCDQv9GA0LjRh9C40L3QsCDQsiDRgNCw0L3RgtCw0LnQvNC1INC/0YDQuNC70L7QttC10L3QuNGPICjQvNGR0YDRgtCy0YvQuSDQv9C+0YLQvtC6XG4gICAgICAgICAgICAgICAgLy8gU0NfQ0FURUdPUllfSU5GTyDQv9GA0LggU1BBLdC90LDQstC40LPQsNGG0LjQuCksINCwINC90LUg0LIgU1NSLiDQktC10YDQvdGD0YLRjCBTUEEt0L3QsNCy0LjQs9Cw0YbQuNGOIChyb3V0ZXIubmF2aWdhdGVCeVVybCkg0LzQvtC20L3QviDRgtC+0LvRjNC60L5cbiAgICAgICAgICAgICAgICAvLyDRgdC00LXQu9Cw0LIgU0NfQ0FURUdPUllfSU5GTyDRg9GB0YLQvtC50YfQuNCy0YvQvCDQuiA0MDQgKNC70L7QstC40YLRjCDQvtGI0LjQsdC60YMg0LLQvdGD0YLRgNC4IHN3aXRjaE1hcCkg0LvQuNCx0L4g0YPQvdC10YHRjyDRgNC10LTQuNGA0LXQutGCINCyIGd1YXJkICsgUmVkaXJlY3RDb21tYW5kLlxuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24ucmVwbGFjZSh0YXJnZXRVcmwpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -13,14 +13,16 @@ export const ScLoadingRequestState = { status: ScRequestStateStatusEnum.Loading
|
|
|
13
13
|
export const ScSuccessRequestState = (requestData) => ({ status: ScRequestStateStatusEnum.Success, data: requestData });
|
|
14
14
|
/**
|
|
15
15
|
* Состояние ошибки.
|
|
16
|
+
*
|
|
17
|
+
* @param error Причина ошибки (например, HttpErrorResponse).
|
|
16
18
|
*/
|
|
17
|
-
export const ScErrorRequestState = { status: ScRequestStateStatusEnum.Error };
|
|
19
|
+
export const ScErrorRequestState = (error) => ({ status: ScRequestStateStatusEnum.Error, error });
|
|
18
20
|
/**
|
|
19
21
|
* Преобразует поток данных в поток с состояниями запроса.
|
|
20
22
|
*/
|
|
21
|
-
export const mapToRequestState = () => (source$) => source$.pipe(map((requestData) => ScSuccessRequestState(requestData)), startWith(ScLoadingRequestState), catchError(() => of(ScErrorRequestState)));
|
|
23
|
+
export const mapToRequestState = () => (source$) => source$.pipe(map((requestData) => ScSuccessRequestState(requestData)), startWith(ScLoadingRequestState), catchError((error) => of(ScErrorRequestState(error))));
|
|
22
24
|
/**
|
|
23
25
|
* Извлекает данные из потока состояний запроса или возвращает null.
|
|
24
26
|
*/
|
|
25
27
|
export const mapRequestStateToDataOrNull = () => (source$) => source$.pipe(map((requestState) => (requestState.status === ScRequestStateStatusEnum.Success ? requestState.data : null)));
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1yZXF1ZXN0LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21tb24vaW50ZXJmYWNlcy9zYy1pLXJlcXVlc3Qtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBb0IsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBVXBEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQTJCLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTFHOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFJLFdBQWMsRUFBc0IsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBRWxKOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQWUsRUFBMEIsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFFcEk7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FDMUIsR0FBK0MsRUFBRSxDQUNqRCxDQUFDLE9BQXNCLEVBQUUsRUFBRSxDQUN2QixPQUFPLENBQUMsSUFBSSxDQUNSLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDeEQsU0FBUyxDQUFDLHFCQUEyQyxDQUFDLEVBQ3RELFVBQVUsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBdUIsQ0FBQyxDQUFDLENBQ3ZGLENBQUM7QUFFVjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUNwQyxHQUFzRCxFQUFFLENBQ3hELENBQUMsT0FBdUMsRUFBRSxFQUFFLENBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgT3BlcmF0b3JGdW5jdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNjUmVxdWVzdFN0YXRlU3RhdHVzRW51bSB9IGZyb20gJy4uL2VudW1zJztcblxuLyoqXG4gKiDQodC+0YHRgtC+0Y/QvdC40LUg0LLRi9C/0L7Qu9C90LXQvdC40Y8g0LfQsNC/0YDQvtGB0LAuXG4gKi9cbmV4cG9ydCB0eXBlIFNjSVJlcXVlc3RTdGF0ZTxUPiA9XG4gICAgfCB7IHN0YXR1czogU2NSZXF1ZXN0U3RhdGVTdGF0dXNFbnVtLkxvYWRpbmcgfVxuICAgIHwgeyBzdGF0dXM6IFNjUmVxdWVzdFN0YXRlU3RhdHVzRW51bS5TdWNjZXNzOyBkYXRhOiBUIH1cbiAgICB8IHsgc3RhdHVzOiBTY1JlcXVlc3RTdGF0ZVN0YXR1c0VudW0uRXJyb3I7IGVycm9yPzogdW5rbm93biB9O1xuXG4vKipcbiAqINCh0L7RgdGC0L7Rj9C90LjQtSDQt9Cw0LPRgNGD0LfQutC4LlxuICovXG5leHBvcnQgY29uc3QgU2NMb2FkaW5nUmVxdWVzdFN0YXRlOiBTY0lSZXF1ZXN0U3RhdGU8bmV2ZXI+ID0geyBzdGF0dXM6IFNjUmVxdWVzdFN0YXRlU3RhdHVzRW51bS5Mb2FkaW5nIH07XG5cbi8qKlxuICog0KHQvtGB0YLQvtGP0L3QuNC1INGD0YHQv9C10YjQvdC+0LPQviDQstGL0L/QvtC70L3QtdC90LjRjyDQt9Cw0L/RgNC+0YHQsC5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdERhdGEg0JTQsNC90L3Ri9C1INC30LDQv9GA0L7RgdCwLlxuICovXG5leHBvcnQgY29uc3QgU2NTdWNjZXNzUmVxdWVzdFN0YXRlID0gPFQ+KHJlcXVlc3REYXRhOiBUKTogU2NJUmVxdWVzdFN0YXRlPFQ+ID0+ICh7IHN0YXR1czogU2NSZXF1ZXN0U3RhdGVTdGF0dXNFbnVtLlN1Y2Nlc3MsIGRhdGE6IHJlcXVlc3REYXRhIH0pO1xuXG4vKipcbiAqINCh0L7RgdGC0L7Rj9C90LjQtSDQvtGI0LjQsdC60LguXG4gKlxuICogQHBhcmFtIGVycm9yINCf0YDQuNGH0LjQvdCwINC+0YjQuNCx0LrQuCAo0L3QsNC/0YDQuNC80LXRgCwgSHR0cEVycm9yUmVzcG9uc2UpLlxuICovXG5leHBvcnQgY29uc3QgU2NFcnJvclJlcXVlc3RTdGF0ZSA9IChlcnJvcj86IHVua25vd24pOiBTY0lSZXF1ZXN0U3RhdGU8bmV2ZXI+ID0+ICh7IHN0YXR1czogU2NSZXF1ZXN0U3RhdGVTdGF0dXNFbnVtLkVycm9yLCBlcnJvciB9KTtcblxuLyoqXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC/0L7RgtC+0Log0LTQsNC90L3Ri9GFINCyINC/0L7RgtC+0Log0YEg0YHQvtGB0YLQvtGP0L3QuNGP0LzQuCDQt9Cw0L/RgNC+0YHQsC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hcFRvUmVxdWVzdFN0YXRlID1cbiAgICA8VD4oKTogT3BlcmF0b3JGdW5jdGlvbjxULCBTY0lSZXF1ZXN0U3RhdGU8VD4+ID0+XG4gICAgKHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pID0+XG4gICAgICAgIHNvdXJjZSQucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVxdWVzdERhdGEpID0+IFNjU3VjY2Vzc1JlcXVlc3RTdGF0ZShyZXF1ZXN0RGF0YSkpLFxuICAgICAgICAgICAgc3RhcnRXaXRoKFNjTG9hZGluZ1JlcXVlc3RTdGF0ZSBhcyBTY0lSZXF1ZXN0U3RhdGU8VD4pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IG9mKFNjRXJyb3JSZXF1ZXN0U3RhdGUoZXJyb3IpIGFzIFNjSVJlcXVlc3RTdGF0ZTxUPikpXG4gICAgICAgICk7XG5cbi8qKlxuICog0JjQt9Cy0LvQtdC60LDQtdGCINC00LDQvdC90YvQtSDQuNC3INC/0L7RgtC+0LrQsCDRgdC+0YHRgtC+0Y/QvdC40Lkg0LfQsNC/0YDQvtGB0LAg0LjQu9C4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIG51bGwuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBSZXF1ZXN0U3RhdGVUb0RhdGFPck51bGwgPVxuICAgIDxUPigpOiBPcGVyYXRvckZ1bmN0aW9uPFNjSVJlcXVlc3RTdGF0ZTxUPiwgVCB8IG51bGw+ID0+XG4gICAgKHNvdXJjZSQ6IE9ic2VydmFibGU8U2NJUmVxdWVzdFN0YXRlPFQ+PikgPT5cbiAgICAgICAgc291cmNlJC5waXBlKG1hcCgocmVxdWVzdFN0YXRlKSA9PiAocmVxdWVzdFN0YXRlLnN0YXR1cyA9PT0gU2NSZXF1ZXN0U3RhdGVTdGF0dXNFbnVtLlN1Y2Nlc3MgPyByZXF1ZXN0U3RhdGUuZGF0YSA6IG51bGwpKSk7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Inject, inject, Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, first, map, shareReplay, switchMap, tap } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject, catchError, EMPTY, first, map, of, shareReplay, switchMap, tap } from 'rxjs';
|
|
3
3
|
import { SC_URLS } from '../../tokens';
|
|
4
4
|
import { SC_USER_INFO } from '../../user/tokens/sc-user-providers';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -31,7 +31,7 @@ export class ScRequisitesService {
|
|
|
31
31
|
/**
|
|
32
32
|
* Создаёт запрос получения списка всех контактов.
|
|
33
33
|
*/
|
|
34
|
-
this.contacts$ = inject(SC_USER_INFO).pipe(switchMap(() => this.http.get(`${this.urls.apiUrl}/contacts`)), shareReplay(1));
|
|
34
|
+
this.contacts$ = inject(SC_USER_INFO).pipe(switchMap(() => this.http.get(`${this.urls.apiUrl}/contacts`).pipe(catchError(() => of({ personal: [], socialMedia: [], directions: {} })))), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
35
35
|
/**
|
|
36
36
|
* Создаёт запрос получения списка контактов для решения возникающих вопросов.
|
|
37
37
|
*/
|
|
@@ -39,11 +39,11 @@ export class ScRequisitesService {
|
|
|
39
39
|
/**
|
|
40
40
|
* Создаёт запрос получения списка контактов розничных магазинов.
|
|
41
41
|
*/
|
|
42
|
-
this.retail$ = this.contacts$.pipe(map((contacts) => contacts.retail), first(), shareReplay(1));
|
|
42
|
+
this.retail$ = this.contacts$.pipe(map((contacts) => contacts.retail), first(), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
43
43
|
/**
|
|
44
44
|
* Создаёт запрос получения списка ссылок на социальные сети и другие каналы коммуникации.
|
|
45
45
|
*/
|
|
46
|
-
this.socialMedia$ = this.contacts$.pipe(map((contacts) => contacts.socialMedia), first(), shareReplay(1));
|
|
46
|
+
this.socialMedia$ = this.contacts$.pipe(map((contacts) => contacts.socialMedia), first(), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
47
47
|
/**
|
|
48
48
|
* Создаёт запрос получения списка контактов менеджеров по направлениям продаж.
|
|
49
49
|
*/
|
|
@@ -54,11 +54,11 @@ export class ScRequisitesService {
|
|
|
54
54
|
this.mapManagers(Number.parseFloat(key), manager);
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
}), first(), shareReplay(1));
|
|
57
|
+
}), first(), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
58
58
|
/**
|
|
59
59
|
* Создаёт запрос получения списка реквизитов компании.
|
|
60
60
|
*/
|
|
61
|
-
this.requisites$ = this.http.get(`${this.urls.apiUrl}/requisites`).pipe(shareReplay(1));
|
|
61
|
+
this.requisites$ = this.http.get(`${this.urls.apiUrl}/requisites`).pipe(catchError(() => EMPTY), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* Устанавливает поисковый запрос в {@link BehaviorSubject}.
|
|
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
138
138
|
type: Inject,
|
|
139
139
|
args: [SC_URLS]
|
|
140
140
|
}] }, { type: i2.ScAuthService }] });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcmVxdWlzaXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb250YWN0cy9zZXJ2aWNlcy9zYy1yZXF1aXNpdGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUs1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUluRTs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFnRTVCOzs7Ozs7T0FNRztJQUNILFlBQ3FCLElBQWdCLEVBQ0MsSUFBYSxFQUM5QixXQUEwQjtRQUYxQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0MsU0FBSSxHQUFKLElBQUksQ0FBUztRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQXpFL0M7O1dBRUc7UUFDSyxnQkFBVyxHQUFtQyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFL0Y7O1dBRUc7UUFDSyxpQkFBWSxHQUE0QyxJQUFJLEdBQUcsRUFBc0MsQ0FBQztRQUU5Rzs7V0FFRztRQUNJLGNBQVMsR0FBbUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDeEUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxXQUFXLENBQUMsQ0FBQyxFQUNsRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7UUFFRjs7V0FF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RyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBc0IsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRSxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBVSxFQUFFLENBQVUsRUFBRSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNsQixPQUFPLENBQUMsQ0FBQztnQkFDYixDQUFDO2dCQUVELElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsQ0FBQztnQkFFRCxPQUFPLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBQyxTQUFpQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7K0dBdkpRLG1CQUFtQiw0Q0F5RWhCLE9BQU87bUhBekVWLG1CQUFtQixjQUZoQixNQUFNOzs0RkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkEwRVEsTUFBTTsyQkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aCc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNjSUNpdHksIFNjSVJlZ2lvbldpdGhDaXRpZXMgfSBmcm9tICcuLi8uLi9sb2NhdGlvbnMnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY0lDb250YWN0QW5kTWVkaWEsIFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0LCBTY0lPcmdDb250YWN0LCBTY0lSZXF1aXNpdGVzLCBTY0lTb2NpYWxNZWRpYSB9IGZyb20gJy4uL2R0byc7XG5pbXBvcnQgeyBTY0lSZXRhaWxDb250YWN0IH0gZnJvbSAnLi4vZHRvL3NjLWktcmV0YWlsLWNvbnRhY3QnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINGA0LXQutCy0LjQt9C40YLQsNC80Lgg0Lgg0YEg0L7QsdC+0LnQvdC+0Lkg0YHQstGP0LfRjNGOLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY1JlcXVpc2l0ZXNTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQv9C+0LjRgdC60L7QstC+0LPQviDQt9Cw0L/RgNC+0YHQsCDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0LrQvtC90YLQsNC60YLQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VhcmNoVGVybSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60L7QvdGC0LDQutGC0L7QsiDQvNC10L3QtdC00LbQtdGA0LAg0L/QviDQvdCw0L/RgNCw0LLQu9C10L3QuNGOINC/0YDQvtC00LDQti5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlkTWFuYWdlck1hcDogTWFwPG51bWJlciwgU2NJRGlyZWN0aW9uTWFuYWdlckNvbnRhY3Q+ID0gbmV3IE1hcDxudW1iZXIsIFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0PigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LLRgdC10YUg0LrQvtC90YLQsNC60YLQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb250YWN0cyQ6IE9ic2VydmFibGU8U2NJQ29udGFjdEFuZE1lZGlhPiA9IGluamVjdChTQ19VU0VSX0lORk8pLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmh0dHAuZ2V0PFNjSUNvbnRhY3RBbmRNZWRpYT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY29udGFjdHNgKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINC60L7QvdGC0LDQutGC0L7QsiDQtNC70Y8g0YDQtdGI0LXQvdC40Y8g0LLQvtC30L3QuNC60LDRjtGJ0LjRhSDQstC+0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBwZXJzb25hbCQ6IE9ic2VydmFibGU8U2NJT3JnQ29udGFjdFtdPiA9IHRoaXMuY29udGFjdHMkLnBpcGUobWFwKChjb250YWN0czogU2NJQ29udGFjdEFuZE1lZGlhKSA9PiBjb250YWN0cy5wZXJzb25hbCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LrQvtC90YLQsNC60YLQvtCyINGA0L7Qt9C90LjRh9C90YvRhSDQvNCw0LPQsNC30LjQvdC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHJldGFpbCQ6IE9ic2VydmFibGU8U2NJUmV0YWlsQ29udGFjdFtdIHwgdW5kZWZpbmVkPiA9IHRoaXMuY29udGFjdHMkLnBpcGUoXG4gICAgICAgIG1hcCgoY29udGFjdHM6IFNjSUNvbnRhY3RBbmRNZWRpYSkgPT4gY29udGFjdHMucmV0YWlsKSxcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0YHRgdGL0LvQvtC6INC90LAg0YHQvtGG0LjQsNC70YzQvdGL0LUg0YHQtdGC0Lgg0Lgg0LTRgNGD0LPQuNC1INC60LDQvdCw0LvRiyDQutC+0LzQvNGD0L3QuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHNvY2lhbE1lZGlhJDogT2JzZXJ2YWJsZTxTY0lTb2NpYWxNZWRpYVtdPiA9IHRoaXMuY29udGFjdHMkLnBpcGUoXG4gICAgICAgIG1hcCgoY29udGFjdHM6IFNjSUNvbnRhY3RBbmRNZWRpYSkgPT4gY29udGFjdHMuc29jaWFsTWVkaWEpLFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDQutC+0L3RgtCw0LrRgtC+0LIg0LzQtdC90LXQtNC20LXRgNC+0LIg0L/QviDQvdCw0L/RgNCw0LLQu9C10L3QuNGP0Lwg0L/RgNC+0LTQsNC2LlxuICAgICAqL1xuICAgIHB1YmxpYyBkaXJlY3Rpb25zJDogT2JzZXJ2YWJsZTxQYXJ0aWFsPFJlY29yZDxudW1iZXIsIFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0W10+Pj4gPSB0aGlzLmNvbnRhY3RzJC5waXBlKFxuICAgICAgICBtYXAoKGNvbnRhY3RzOiBTY0lDb250YWN0QW5kTWVkaWEpID0+IGNvbnRhY3RzLmRpcmVjdGlvbnMpLFxuICAgICAgICB0YXAoKGRpcmVjdGlvbnMpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW4sbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRpcmVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb25zW051bWJlci5wYXJzZUZsb2F0KGtleSldPy5mb3JFYWNoKChtYW5hZ2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwTWFuYWdlcnMoTnVtYmVyLnBhcnNlRmxvYXQoa2V5KSwgbWFuYWdlcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgNC10LrQstC40LfQuNGC0L7QsiDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZXF1aXNpdGVzJDogT2JzZXJ2YWJsZTxTY0lSZXF1aXNpdGVzPiA9IHRoaXMuaHR0cC5nZXQ8U2NJUmVxdWlzaXRlcz4oYCR7dGhpcy51cmxzLmFwaVVybH0vcmVxdWlzaXRlc2ApLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1JlcXVpc2l0ZXNTZXJ2aWNlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodHRwIEhUVFAt0LrQu9C40LXQvdGCLlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIGF1dGhTZXJ2aWNlINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogU2NBdXRoU2VydmljZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC/0L7QuNGB0LrQvtCy0YvQuSDQt9Cw0L/RgNC+0YEg0LIge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGVybSDQn9C+0LjRgdC60L7QstGL0Lkg0LfQsNC/0YDQvtGBLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTZWFyY2hUZXJtQ2hhbmdlKHRlcm06IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtJC5uZXh0KHRlcm0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQv9C+0LjRgdC60L7QstC+0LPQviDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VhcmNoVGVybUNoYW5nZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFRlcm0kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0L7QuNGB0LrQvtCy0YvQuSDQt9Cw0L/RgNC+0YEuXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnJlbnRTZWFyY2hUZXJtKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hUZXJtJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtGF0L7QtNC40YIg0L/QviDQtNGA0LXQstC+0LLQuNC00L3QvtC80YMg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y4g0LrQvtC90YLQsNC60YLQvtCyINC80LXQvdC10LTQttC10YDQvtCyINC4INC30LDQv9C40YHRi9Cy0LDQtdGCINC60LDQttC00L7Qs9C+INC80LXQvdC10LTQttC10YDQsCDQsiB7QGxpbmsgTWFwfSDQv9C+INC60LvRjtGH0YMg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXJlY3Rpb25JZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCw0L/RgNCw0LLQu9C10L3QuNGPINC/0YDQvtC00LDQti5cbiAgICAgKiBAcGFyYW0gbWFuYWdlciDQmtC+0L3RgtCw0LrRgtGLINC80LXQvdC10LTQttC10YDQsCDQv9C+INC90LDQv9GA0LDQstC70LXQvdC40Y4g0L/RgNC+0LTQsNC2LlxuICAgICAqL1xuICAgIHByaXZhdGUgbWFwTWFuYWdlcnMoZGlyZWN0aW9uSWQ6IG51bWJlciwgbWFuYWdlcjogU2NJRGlyZWN0aW9uTWFuYWdlckNvbnRhY3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFtYW5hZ2VyLmlkKSByZXR1cm47XG5cbiAgICAgICAgbWFuYWdlci5kaXJlY3Rpb25JZCA9IGRpcmVjdGlvbklkO1xuICAgICAgICB0aGlzLmlkTWFuYWdlck1hcC5zZXQobWFuYWdlci5pZCwgdGhpcy5zb3J0TWFuYWdlckNpdGllcyhtYW5hZ2VyKSk7XG5cbiAgICAgICAgaWYgKCFtYW5hZ2VyLm1hbmFnZXJzKSByZXR1cm47XG5cbiAgICAgICAgbWFuYWdlci5tYW5hZ2Vycy5mb3JFYWNoKChzdWJNYW5hZ2VyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcE1hbmFnZXJzKGRpcmVjdGlvbklkLCBzdWJNYW5hZ2VyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtGA0YLQuNGA0YPQtdGCINCz0L7RgNC+0LTQsCDQvNC10L3QtdC00LbQtdGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWFuYWdlciDQmtC+0L3RgtCw0LrRgtGLINC80LXQvdC10LTQttC10YDQsCDQv9C+INC90LDQv9GA0LDQstC70LXQvdC40Y4g0L/RgNC+0LTQsNC2LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJpdmF0ZSBzb3J0TWFuYWdlckNpdGllcyhtYW5hZ2VyOiBTY0lEaXJlY3Rpb25NYW5hZ2VyQ29udGFjdCk6IFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0IHtcbiAgICAgICAgbWFuYWdlci5yZWdpb25zID0gbWFuYWdlci5yZWdpb25zPy5tYXA8U2NJUmVnaW9uV2l0aENpdGllcz4oKHJlZ2lvbikgPT4ge1xuICAgICAgICAgICAgcmVnaW9uLmNpdGllcyA9IHJlZ2lvbi5jaXRpZXM/LnNvcnQoKGE6IFNjSUNpdHksIGI6IFNjSUNpdHkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYS5uYW1lID4gYi5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChhLm5hbWUgPCBiLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVnaW9uO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFuYWdlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQt9Cw0L/QuNGB0Ywg0LrQvtC90YLQsNC60YLQsCDQvNC10L3QtdC00LbQtdGA0LAg0L/QviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1hbmFnZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvNC10L3QtdC00LbQtdGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldE1hbmFnZXJCeUlkKG1hbmFnZXJJZDogbnVtYmVyKTogU2NJRGlyZWN0aW9uTWFuYWdlckNvbnRhY3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pZE1hbmFnZXJNYXAuZ2V0KG1hbmFnZXJJZCk7XG4gICAgfVxufVxuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcmVxdWlzaXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb250YWN0cy9zZXJ2aWNlcy9zYy1yZXF1aXNpdGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtuSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUluRTs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFxRTVCOzs7Ozs7T0FNRztJQUNILFlBQ3FCLElBQWdCLEVBQ0MsSUFBYSxFQUM5QixXQUEwQjtRQUYxQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0MsU0FBSSxHQUFKLElBQUksQ0FBUztRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQTlFL0M7O1dBRUc7UUFDSyxnQkFBVyxHQUFtQyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFL0Y7O1dBRUc7UUFDSyxpQkFBWSxHQUE0QyxJQUFJLEdBQUcsRUFBc0MsQ0FBQztRQUU5Rzs7V0FFRztRQUNJLGNBQVMsR0FBbUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDeEUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxD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QUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDOytHQTVKUSxtQkFBbUIsNENBOEVoQixPQUFPO21IQTlFVixtQkFBbUIsY0FGaEIsTUFBTTs7NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBK0VRLE1BQU07MkJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBFTVBUWSwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aCc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNjSUNpdHksIFNjSVJlZ2lvbldpdGhDaXRpZXMgfSBmcm9tICcuLi8uLi9sb2NhdGlvbnMnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY0lDb250YWN0QW5kTWVkaWEsIFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0LCBTY0lPcmdDb250YWN0LCBTY0lSZXF1aXNpdGVzLCBTY0lTb2NpYWxNZWRpYSB9IGZyb20gJy4uL2R0byc7XG5pbXBvcnQgeyBTY0lSZXRhaWxDb250YWN0IH0gZnJvbSAnLi4vZHRvL3NjLWktcmV0YWlsLWNvbnRhY3QnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINGA0LXQutCy0LjQt9C40YLQsNC80Lgg0Lgg0YEg0L7QsdC+0LnQvdC+0Lkg0YHQstGP0LfRjNGOLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY1JlcXVpc2l0ZXNTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQv9C+0LjRgdC60L7QstC+0LPQviDQt9Cw0L/RgNC+0YHQsCDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0LrQvtC90YLQsNC60YLQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VhcmNoVGVybSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60L7QvdGC0LDQutGC0L7QsiDQvNC10L3QtdC00LbQtdGA0LAg0L/QviDQvdCw0L/RgNCw0LLQu9C10L3QuNGOINC/0YDQvtC00LDQti5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlkTWFuYWdlck1hcDogTWFwPG51bWJlciwgU2NJRGlyZWN0aW9uTWFuYWdlckNvbnRhY3Q+ID0gbmV3IE1hcDxudW1iZXIsIFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0PigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LLRgdC10YUg0LrQvtC90YLQsNC60YLQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb250YWN0cyQ6IE9ic2VydmFibGU8U2NJQ29udGFjdEFuZE1lZGlhPiA9IGluamVjdChTQ19VU0VSX0lORk8pLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgdGhpcy5odHRwLmdldDxTY0lDb250YWN0QW5kTWVkaWE+KGAke3RoaXMudXJscy5hcGlVcmx9L2NvbnRhY3RzYCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mPFNjSUNvbnRhY3RBbmRNZWRpYT4oeyBwZXJzb25hbDogW10sIHNvY2lhbE1lZGlhOiBbXSwgZGlyZWN0aW9uczoge30gfSkpKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINC60L7QvdGC0LDQutGC0L7QsiDQtNC70Y8g0YDQtdGI0LXQvdC40Y8g0LLQvtC30L3QuNC60LDRjtGJ0LjRhSDQstC+0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBwZXJzb25hbCQ6IE9ic2VydmFibGU8U2NJT3JnQ29udGFjdFtdPiA9IHRoaXMuY29udGFjdHMkLnBpcGUobWFwKChjb250YWN0czogU2NJQ29udGFjdEFuZE1lZGlhKSA9PiBjb250YWN0cy5wZXJzb25hbCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LrQvtC90YLQsNC60YLQvtCyINGA0L7Qt9C90LjRh9C90YvRhSDQvNCw0LPQsNC30LjQvdC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHJldGFpbCQ6IE9ic2VydmFibGU8U2NJUmV0YWlsQ29udGFjdFtdIHwgdW5kZWZpbmVkPiA9IHRoaXMuY29udGFjdHMkLnBpcGUoXG4gICAgICAgIG1hcCgoY29udGFjdHM6IFNjSUNvbnRhY3RBbmRNZWRpYSkgPT4gY29udGFjdHMucmV0YWlsKSxcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgdGB0YvQu9C+0Log0L3QsCDRgdC+0YbQuNCw0LvRjNC90YvQtSDRgdC10YLQuCDQuCDQtNGA0YPQs9C40LUg0LrQsNC90LDQu9GLINC60L7QvNC80YPQvdC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc29jaWFsTWVkaWEkOiBPYnNlcnZhYmxlPFNjSVNvY2lhbE1lZGlhW10+ID0gdGhpcy5jb250YWN0cyQucGlwZShcbiAgICAgICAgbWFwKChjb250YWN0czogU2NJQ29udGFjdEFuZE1lZGlhKSA9PiBjb250YWN0cy5zb2NpYWxNZWRpYSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LrQvtC90YLQsNC60YLQvtCyINC80LXQvdC10LTQttC10YDQvtCyINC/0L4g0L3QsNC/0YDQsNCy0LvQtdC90LjRj9C8INC/0YDQvtC00LDQti5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGlyZWN0aW9ucyQ6IE9ic2VydmFibGU8UGFydGlhbDxSZWNvcmQ8bnVtYmVyLCBTY0lEaXJlY3Rpb25NYW5hZ2VyQ29udGFjdFtdPj4+ID0gdGhpcy5jb250YWN0cyQucGlwZShcbiAgICAgICAgbWFwKChjb250YWN0czogU2NJQ29udGFjdEFuZE1lZGlhKSA9PiBjb250YWN0cy5kaXJlY3Rpb25zKSxcbiAgICAgICAgdGFwKChkaXJlY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluLG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkaXJlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uc1tOdW1iZXIucGFyc2VGbG9hdChrZXkpXT8uZm9yRWFjaCgobWFuYWdlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcE1hbmFnZXJzKE51bWJlci5wYXJzZUZsb2F0KGtleSksIG1hbmFnZXIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgNC10LrQstC40LfQuNGC0L7QsiDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZXF1aXNpdGVzJDogT2JzZXJ2YWJsZTxTY0lSZXF1aXNpdGVzPiA9IHRoaXMuaHR0cC5nZXQ8U2NJUmVxdWlzaXRlcz4oYCR7dGhpcy51cmxzLmFwaVVybH0vcmVxdWlzaXRlc2ApLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gRU1QVFkpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NSZXF1aXNpdGVzU2VydmljZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaHR0cCBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0YDQsNC30LTQtdC70YsgYmFja2VuZCdhLlxuICAgICAqIEBwYXJhbSBhdXRoU2VydmljZSDQodC10YDQstC40YEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IFNjQXV0aFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQv9C+0LjRgdC60L7QstGL0Lkg0LfQsNC/0YDQvtGBINCyIHtAbGluayBCZWhhdmlvclN1YmplY3R9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRlcm0g0J/QvtC40YHQutC+0LLRi9C5INC30LDQv9GA0L7RgS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0U2VhcmNoVGVybUNoYW5nZSh0ZXJtOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCh0ZXJtKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L/QvtC40YHQutC+0LLQvtCz0L4g0LfQsNC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFNlYXJjaFRlcm1DaGFuZ2UkKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hUZXJtJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9C+0LjRgdC60L7QstGL0Lkg0LfQsNC/0YDQvtGBLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW50U2VhcmNoVGVybSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoVGVybSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7RhdC+0LTQuNGCINC/0L4g0LTRgNC10LLQvtCy0LjQtNC90L7QvNGDINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGOINC60L7QvdGC0LDQutGC0L7QsiDQvNC10L3QtdC00LbQtdGA0L7QsiDQuCDQt9Cw0L/QuNGB0YvQstCw0LXRgiDQutCw0LbQtNC+0LPQviDQvNC10L3QtdC00LbQtdGA0LAg0LIge0BsaW5rIE1hcH0g0L/QviDQutC70Y7Rh9GDINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlyZWN0aW9uSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsNC/0YDQsNCy0LvQtdC90LjRjyDQv9GA0L7QtNCw0LYuXG4gICAgICogQHBhcmFtIG1hbmFnZXIg0JrQvtC90YLQsNC60YLRiyDQvNC10L3QtdC00LbQtdGA0LAg0L/QviDQvdCw0L/RgNCw0LLQu9C10L3QuNGOINC/0YDQvtC00LDQti5cbiAgICAgKi9cbiAgICBwcml2YXRlIG1hcE1hbmFnZXJzKGRpcmVjdGlvbklkOiBudW1iZXIsIG1hbmFnZXI6IFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0KTogdm9pZCB7XG4gICAgICAgIGlmICghbWFuYWdlci5pZCkgcmV0dXJuO1xuXG4gICAgICAgIG1hbmFnZXIuZGlyZWN0aW9uSWQgPSBkaXJlY3Rpb25JZDtcbiAgICAgICAgdGhpcy5pZE1hbmFnZXJNYXAuc2V0KG1hbmFnZXIuaWQsIHRoaXMuc29ydE1hbmFnZXJDaXRpZXMobWFuYWdlcikpO1xuXG4gICAgICAgIGlmICghbWFuYWdlci5tYW5hZ2VycykgcmV0dXJuO1xuXG4gICAgICAgIG1hbmFnZXIubWFuYWdlcnMuZm9yRWFjaCgoc3ViTWFuYWdlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXBNYW5hZ2VycyhkaXJlY3Rpb25JZCwgc3ViTWFuYWdlcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7RgNGC0LjRgNGD0LXRgiDQs9C+0YDQvtC00LAg0LzQtdC90LXQtNC20LXRgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1hbmFnZXIg0JrQvtC90YLQsNC60YLRiyDQvNC10L3QtdC00LbQtdGA0LAg0L/QviDQvdCw0L/RgNCw0LLQu9C10L3QuNGOINC/0YDQvtC00LDQti5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgc29ydE1hbmFnZXJDaXRpZXMobWFuYWdlcjogU2NJRGlyZWN0aW9uTWFuYWdlckNvbnRhY3QpOiBTY0lEaXJlY3Rpb25NYW5hZ2VyQ29udGFjdCB7XG4gICAgICAgIG1hbmFnZXIucmVnaW9ucyA9IG1hbmFnZXIucmVnaW9ucz8ubWFwPFNjSVJlZ2lvbldpdGhDaXRpZXM+KChyZWdpb24pID0+IHtcbiAgICAgICAgICAgIHJlZ2lvbi5jaXRpZXMgPSByZWdpb24uY2l0aWVzPy5zb3J0KChhOiBTY0lDaXR5LCBiOiBTY0lDaXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGEubmFtZSA+IGIubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYS5uYW1lIDwgYi5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2lvbjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hbmFnZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LfQsNC/0LjRgdGMINC60L7QvdGC0LDQutGC0LAg0LzQtdC90LXQtNC20LXRgNCwINC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtYW5hZ2VySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LzQtdC90LXQtNC20LXRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRNYW5hZ2VyQnlJZChtYW5hZ2VySWQ6IG51bWJlcik6IFNjSURpcmVjdGlvbk1hbmFnZXJDb250YWN0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWRNYW5hZ2VyTWFwLmdldChtYW5hZ2VySWQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -49,6 +49,9 @@ export class ScPaginationService {
|
|
|
49
49
|
* Список сохраняется при переходе по страницам, до тех пор пока не будет получен сигнал `others$`.
|
|
50
50
|
*/
|
|
51
51
|
this.dataAccumulated$ = this.others$.pipe(filter(tuiIsPresent), switchMap((params) => this.authStatus$.pipe(map(() => params))), switchMap((params) => this.page$.pipe(
|
|
52
|
+
// Избегаем лишнего запроса со старыми параметрами: сброс страницы (patchPage) при смене others$ синхронно
|
|
53
|
+
// «пинает» ещё живую предыдущую подписку — debounceTime(0) схлопывает такой всплеск до одной эмиссии.
|
|
54
|
+
debounceTime(0),
|
|
52
55
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
53
56
|
map((page) => ({ ...params, ...page })),
|
|
54
57
|
// TODO: Заменить this.catalogService.getProducts$ на абстрактный метод сервиса по примеру `TuiTreeLoader`.
|
|
@@ -154,4 +157,4 @@ export class ScPaginationService {
|
|
|
154
157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPaginationService, decorators: [{
|
|
155
158
|
type: Injectable
|
|
156
159
|
}], ctorParameters: () => [] });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wYWdpbmF0aW9uL3NlcnZpY2VzL3NjLXBhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3ZJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFJbkU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBaUY1Qjs7T0FFRztJQUNIO1FBbkZBOztXQUVHO1FBQ2MsVUFBSyxHQUF5QyxJQUFJLGVBQWUsQ0FBc0IscUNBQXFDLENBQUMsQ0FBQztRQUUvSTs7V0FFRztRQUNjLFlBQU8sR0FBbUMsSUFBSSxlQUFlLENBQWdCLFNBQVMsQ0FBQyxDQUFDO1FBRXpHOztXQUVHO1FBQ2EsdUJBQWtCLEdBQXVCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUks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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29uY2F0TWFwLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzY2FuLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY1Byb2R1Y3QgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2R0by9zYy1wcm9kdWN0JztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBTQ19ORVhUX1BBR0VfUEFHSU5BVElPTl9DTElDSywgU0NfUFJPRFVDVF9QQUdJTkFUSU9OX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1wcm9kdWN0LXBhZ2luYXRpb24tb3B0aW9ucyc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY0lQYWdpbmF0ZSB9IGZyb20gJy4uL2R0by9zYy1pLXBhZ2luYXRlJztcbmltcG9ydCB7IFNjSVBhZ2luYXRpb25QYXJhbXMgfSBmcm9tICcuLi9kdG8vc2MtaS1wYWdpbmF0aW9uLXBhcmFtcyc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINC/0LDQs9C40L3QsNGG0LjQuC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjUGFnaW5hdGlvblNlcnZpY2U8UCBleHRlbmRzIFNjSVBhZ2luYXRpb25QYXJhbXMsIE8gZXh0ZW5kcyBvYmplY3QgPSBPbWl0PFAsIGtleW9mIFNjSVBhZ2luYXRpb25QYXJhbXM+PiB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINC00LDQvdC90YvRhSDQviDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2UkOiBCZWhhdmlvclN1YmplY3Q8U2NJUGFnaW5hdGlvblBhcmFtcz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjSVBhZ2luYXRpb25QYXJhbXM+KFNDX1BST0RVQ1RfUEFHSU5BVElPTl9ERUZBVUxUX09QVElPTlMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINC+0YHRgtCw0LLRiNC40YXRgdGPINC00LDQvdC90YvRhSDQv9Cw0LPQuNC90LDRhtC40Lgg0LHQtdC3INC00LDQvdC90YvRhSDQviDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG90aGVycyQ6IEJlaGF2aW9yU3ViamVjdDxPIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBFdmVudEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNGPINC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDICjRgdC70LXQtNGD0Y7RidC40LUg0YLQvtCy0LDRgNGLKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmV4dFBhZ2VDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBpbmplY3QoU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0spO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGD0YHQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBhdXRoU3RhdHVzJCA9IGluamVjdChTQ19VU0VSX0lORk8pLnBpcGUobWFwKCh1c2VyKSA9PiB1c2VyLmlzR3Vlc3QpKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEg0LrQsNGC0LDQu9C+0LPQvtC8LlxuICAgICAqL1xuICAgIHB1YmxpYyBjYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4gPSB0aGlzLm90aGVycyQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIHN3aXRjaE1hcCgocGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5wYWdlJC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIC8vINCY0LfQsdC10LPQsNC10Lwg0LzQvdC+0LbQtdGB0YLQstC10L3QvdGL0YUg0YHQuNCz0L3QsNC70L7QsiDQv9GA0Lgg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+0Lwg0LjQt9C80LXQvdC10L3QuNC4INGE0LjQu9GM0YLRgNC+0LIgcGFnZSQg0Lggb3RoZXJzJC5cbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgICAgICAgICAgbWFwKChwYWdlKSA9PiAoeyAuLi5wYXJhbXMsIC4uLnBhZ2UgfSkpLFxuICAgICAgICAgICAgICAgIC8vIFRPRE86INCX0LDQvNC10L3QuNGC0YwgdGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0cyQg0L3QsCDQsNCx0YHRgtGA0LDQutGC0L3Ri9C5INC80LXRgtC+0LQg0YHQtdGA0LLQuNGB0LAg0L/QviDQv9GA0LjQvNC10YDRgyBgVHVpVHJlZUxvYWRlcmAuXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChwYWdpbmF0aW9uUGFyYW1zKSA9PiB0aGlzLmF1dGhTdGF0dXMkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdHMkKHBhZ2luYXRpb25QYXJhbXMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKSkpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4INGBINGB0L7RhdGA0LDQvdC10L3QuNC10Lwg0L/RgNC10LTRi9C00YPRidC40YUg0LfQvdCw0YfQtdC90LjQuSDQtNC70Y8gXCLRgNCw0LfQstC+0YDQsNGH0LjQstCw0L3QuNGPXCIg0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyLlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdC+0YXRgNCw0L3Rj9C10YLRgdGPINC/0YDQuCDQv9C10YDQtdGF0L7QtNC1INC/0L4g0YHRgtGA0LDQvdC40YbQsNC8LCDQtNC+INGC0LXRhSDQv9C+0YAg0L/QvtC60LAg0L3QtSDQsdGD0LTQtdGCINC/0L7Qu9GD0YfQtdC9INGB0LjQs9C90LDQuyBgb3RoZXJzJGAuXG4gICAgICovXG4gICAgcHVibGljIGRhdGFBY2N1bXVsYXRlZCQ6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGw+ID0gdGhpcy5vdGhlcnMkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHBhcmFtcykgPT4gdGhpcy5hdXRoU3RhdHVzJC5waXBlKG1hcCgoKSA9PiBwYXJhbXMpKSksXG4gICAgICAgIHN3aXRjaE1hcCgocGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5wYWdlJC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICAgICAgbWFwKChwYWdlKSA9PiAoeyAuLi5wYXJhbXMsIC4uLnBhZ2UgfSkpLFxuICAgICAgICAgICAgICAgIC8vIFRPRE86INCX0LDQvNC10L3QuNGC0YwgdGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0cyQg0L3QsCDQsNCx0YHRgtGA0LDQutGC0L3Ri9C5INC80LXRgtC+0LQg0YHQtdGA0LLQuNGB0LAg0L/QviDQv9GA0LjQvNC10YDRgyBgVHVpVHJlZUxvYWRlcmAuXG4gICAgICAgICAgICAgICAgY29uY2F0TWFwKChwYWdpbmF0aW9uUGFyYW1zKSA9PiB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3RzJChwYWdpbmF0aW9uUGFyYW1zKS5waXBlKHN0YXJ0V2l0aChudWxsKSkpLFxuICAgICAgICAgICAgICAgIC8vIFRPRE86INCX0LDQvNC10L3QuNGC0YwgYFNjUHJvZHVjdGAg0L3QsCBUINGC0LjQvy5cbiAgICAgICAgICAgICAgICBzY2FuPFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4gfCBudWxsLCBbU2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGwsIFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4gfCBudWxsXT4oXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgKFtfLCBhY2N1bXVsYXRvcl0sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSwgYWNjdW11bGF0b3JdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWNjdW11bGF0b3IgJiYgdmFsdWUubWV0YS5jdXJyZW50UGFnZSA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5kYXRhLnVuc2hpZnQoLi4uYWNjdW11bGF0b3IuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbdmFsdWUsIHZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW251bGwsIG51bGxdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXAoKFtwYWdpbmF0ZV0pID0+IHBhZ2luYXRlKSxcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoKHBhZ2luYXRlKSA9PiBwYWdpbmF0ZSA9PT0gbnVsbCB8fCBwYWdpbmF0ZS5tZXRhLmN1cnJlbnRQYWdlIDwgcGFnaW5hdGUubWV0YS5sYXN0UGFnZSwgdHJ1ZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjUGFnaW5hdGlvblNlcnZpY2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5vdGhlcnMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0UGFnZUNsaWNrRXZlbnQucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4oKGFjY3VtdWxhdG9yKSA9PiBhY2N1bXVsYXRvciArIDEsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChwYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXRjaFBhZ2UoeyBwYWdlOiBwYWdlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC70L3QvtGB0YLRjNGOINC+0LHQvdC+0LLQu9GP0LXRgiDQt9C90LDRh9C10L3QuNGPINGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBwYWdlJH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3UGFnZVZhbHVlINCd0L7QstGL0LUg0LTQsNC90L3Ri9C1INGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlKG5ld1BhZ2VWYWx1ZTogU2NJUGFnaW5hdGlvblBhcmFtcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UkLm5leHQobmV3UGFnZVZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQp9Cw0YHRgtC40YfQvdC+INC+0LHQvdC+0LLQu9GP0LXRgiDQt9C90LDRh9C10L3QuNGPINGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBwYWdlJH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFydGlhbFBhZ2VWYWx1ZSDQndC+0LLRi9C1INC00LDQvdC90YvQtSDRgdGC0YDQsNC90LjRhtGLINC/0LDQs9C40L3QsNGG0LjQuC4g0JzQvtC20L3QviDQv9C10YDQtdC00LDRgtGMINGH0LDRgdGC0Ywg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBwYXRjaFBhZ2UocGFydGlhbFBhZ2VWYWx1ZTogUGFydGlhbDxTY0lQYWdpbmF0aW9uUGFyYW1zPik6IHZvaWQge1xuICAgICAgICAvLyDQl9C90LDRh9C10L3QuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5wYWdlJC52YWx1ZTtcblxuICAgICAgICAvLyDQntCx0L3QvtCy0LvRj9C10Lwg0YLQvtC70YzQutC+INGC0LUg0L/QvtC70Y8sINC60L7RgtC+0YDRi9C1INC/0LXRgNC10LTQsNC90Ysg0LIgcGFydGlhbFBhZ2VWYWx1ZS5cbiAgICAgICAgY29uc3QgdXBkYXRlZFBhZ2U6IFNjSVBhZ2luYXRpb25QYXJhbXMgPSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICAgICAgcGFnZTogcGFydGlhbFBhZ2VWYWx1ZS5wYWdlID8/IGN1cnJlbnRQYWdlLnBhZ2UsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICAgICAgcGVyUGFnZTogcGFydGlhbFBhZ2VWYWx1ZS5wZXJQYWdlID8/IGN1cnJlbnRQYWdlLnBlclBhZ2UsXG4gICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBhZ2UkLm5leHQodXBkYXRlZFBhZ2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9C90L7RgdGC0YzRjiDQvtCx0L3QvtCy0LvRj9C10YIg0L7RgdGC0LDQu9GM0L3Ri9C1INC/0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIG90aGVycyR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld090aGVyc1ZhbHVlINCd0L7QstGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0T3RoZXJzKG5ld090aGVyc1ZhbHVlOiBPKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3RoZXJzJC5uZXh0KG5ld090aGVyc1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQp9Cw0YHRgtC40YfQvdC+INC+0LHQvdC+0LLQu9GP0LXRgiDQvtGB0YLQsNC70YzQvdGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgb3RoZXJzJH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFydGlhbE90aGVyc1ZhbHVlINCd0L7QstGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuC4g0JzQvtC20L3QviDQv9C10YDQtdC00LDRgtGMINGH0LDRgdGC0Ywg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBwYXRjaE90aGVycyhwYXJ0aWFsT3RoZXJzVmFsdWU6IFBhcnRpYWw8Tz4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudE90aGVycyA9IHRoaXMub3RoZXJzJC52YWx1ZSA/PyAoe30gYXMgTyk7XG5cbiAgICAgICAgLy8g0JjQt9Cx0LXQs9Cw0LXQvCDQvtCx0L3QvtCy0LvQtdC90LjRjywg0LXRgdC70LggcGFydGlhbE90aGVyc1ZhbHVlINC/0YPRgdGC0L7QuS5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHBhcnRpYWxPdGhlcnNWYWx1ZSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZE90aGVyczogTyA9IHsgLi4uY3VycmVudE90aGVycywgLi4ucGFydGlhbE90aGVyc1ZhbHVlIH07XG4gICAgICAgICAgICB0aGlzLm90aGVycyQubmV4dCh1cGRhdGVkT3RoZXJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDQstGB0LUg0LTQsNC90L3Ri9C1INC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgcGFnZSR9INC4IHtAbGluayBvdGhlcnMkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdWYWx1ZSDQndC+0LLRi9C1INC/0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40Lgg0LTQu9GPIHtAbGluayBwYWdlJH0g0Lgge0BsaW5rIG90aGVycyR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdpbmF0aW9uUGFyYW1zKG5ld1ZhbHVlOiBQKTogdm9pZCB7XG4gICAgICAgIC8vINCe0LHQvdC+0LLQu9GP0LXQvCDQt9C90LDRh9C10L3QuNC1IHBhZ2UkLlxuICAgICAgICB0aGlzLnBhZ2UkLm5leHQoe1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICAgICAgcGFnZTogbmV3VmFsdWUucGFnZSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgICAgIHBlclBhZ2U6IG5ld1ZhbHVlLnBlclBhZ2UsXG4gICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8g0J7QsdC90L7QstC70Y/QtdC8INC30L3QsNGH0LXQvdC40LUgb3RoZXJzJC5cbiAgICAgICAgY29uc3Qgb3RoZXJzVmFsdWUgPSB0aGlzLmV4dHJhY3RPdGhlcnMobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLm90aGVycyQubmV4dChvdGhlcnNWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C00LXQu9GP0LXRgiDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LCDQvdC1INC+0YLQvdC+0YHRj9GJ0LjQtdGB0Y8g0Log0YHRgtGA0LDQvdC40YbQtSDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIE99INC40Lcg0L/QvtC70L3QvtCz0L4g0L7QsdGK0LXQutGC0LAg0L/QsNGA0LDQvNC10YLRgNC+0LIg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBQfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSDQntCx0YrQtdC60YLRiyDQv9Cw0YDQsNC80LXRgtGA0L7QsiDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIFB9XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBwcml2YXRlIGV4dHJhY3RPdGhlcnModmFsdWU6IFApOiBPIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICBjb25zdCB7IHBhZ2UsIHBlclBhZ2UsIC4uLm90aGVycyB9ID0gdmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG90aGVycyBhcyBPO1xuICAgIH1cbn1cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wYWdpbmF0aW9uL3NlcnZpY2VzL3NjLXBhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3ZJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFJbkU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBb0Y1Qjs7T0FFRztJQUNIO1FBdEZBOztXQUVHO1FBQ2MsVUFBSyxHQUF5QyxJQUFJLGVBQWUsQ0FBc0IscUNBQXFDLENBQUMsQ0FBQztRQUUvSTs7V0FFRztRQUNjLFlBQU8sR0FBbUMsSUFBSSxlQUFlLENBQWdCLFNBQVMsQ0FBQyxDQUFDO1FBRXpHOztXQUVHO1FBQ2EsdUJBQWtCLEdBQXVCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUks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USxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29uY2F0TWFwLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzY2FuLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY1Byb2R1Y3QgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2R0by9zYy1wcm9kdWN0JztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBTQ19ORVhUX1BBR0VfUEFHSU5BVElPTl9DTElDSywgU0NfUFJPRFVDVF9QQUdJTkFUSU9OX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1wcm9kdWN0LXBhZ2luYXRpb24tb3B0aW9ucyc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY0lQYWdpbmF0ZSB9IGZyb20gJy4uL2R0by9zYy1pLXBhZ2luYXRlJztcbmltcG9ydCB7IFNjSVBhZ2luYXRpb25QYXJhbXMgfSBmcm9tICcuLi9kdG8vc2MtaS1wYWdpbmF0aW9uLXBhcmFtcyc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINC/0LDQs9C40L3QsNGG0LjQuC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjUGFnaW5hdGlvblNlcnZpY2U8UCBleHRlbmRzIFNjSVBhZ2luYXRpb25QYXJhbXMsIE8gZXh0ZW5kcyBvYmplY3QgPSBPbWl0PFAsIGtleW9mIFNjSVBhZ2luYXRpb25QYXJhbXM+PiB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINC00LDQvdC90YvRhSDQviDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2UkOiBCZWhhdmlvclN1YmplY3Q8U2NJUGFnaW5hdGlvblBhcmFtcz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjSVBhZ2luYXRpb25QYXJhbXM+KFNDX1BST0RVQ1RfUEFHSU5BVElPTl9ERUZBVUxUX09QVElPTlMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINC+0YHRgtCw0LLRiNC40YXRgdGPINC00LDQvdC90YvRhSDQv9Cw0LPQuNC90LDRhtC40Lgg0LHQtdC3INC00LDQvdC90YvRhSDQviDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG90aGVycyQ6IEJlaGF2aW9yU3ViamVjdDxPIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBFdmVudEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNGPINC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDICjRgdC70LXQtNGD0Y7RidC40LUg0YLQvtCy0LDRgNGLKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmV4dFBhZ2VDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBpbmplY3QoU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0spO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGD0YHQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBhdXRoU3RhdHVzJCA9IGluamVjdChTQ19VU0VSX0lORk8pLnBpcGUobWFwKCh1c2VyKSA9PiB1c2VyLmlzR3Vlc3QpKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEg0LrQsNGC0LDQu9C+0LPQvtC8LlxuICAgICAqL1xuICAgIHB1YmxpYyBjYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4gPSB0aGlzLm90aGVycyQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIHN3aXRjaE1hcCgocGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5wYWdlJC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIC8vINCY0LfQsdC10LPQsNC10Lwg0LzQvdC+0LbQtdGB0YLQstC10L3QvdGL0YUg0YHQuNCz0L3QsNC70L7QsiDQv9GA0Lgg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+0Lwg0LjQt9C80LXQvdC10L3QuNC4INGE0LjQu9GM0YLRgNC+0LIgcGFnZSQg0Lggb3RoZXJzJC5cbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgICAgICAgICAgbWFwKChwYWdlKSA9PiAoeyAuLi5wYXJhbXMsIC4uLnBhZ2UgfSkpLFxuICAgICAgICAgICAgICAgIC8vIFRPRE86INCX0LDQvNC10L3QuNGC0YwgdGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0cyQg0L3QsCDQsNCx0YHRgtGA0LDQutGC0L3Ri9C5INC80LXRgtC+0LQg0YHQtdGA0LLQuNGB0LAg0L/QviDQv9GA0LjQvNC10YDRgyBgVHVpVHJlZUxvYWRlcmAuXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChwYWdpbmF0aW9uUGFyYW1zKSA9PiB0aGlzLmF1dGhTdGF0dXMkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdHMkKHBhZ2luYXRpb25QYXJhbXMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKSkpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4INGBINGB0L7RhdGA0LDQvdC10L3QuNC10Lwg0L/RgNC10LTRi9C00YPRidC40YUg0LfQvdCw0YfQtdC90LjQuSDQtNC70Y8gXCLRgNCw0LfQstC+0YDQsNGH0LjQstCw0L3QuNGPXCIg0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyLlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdC+0YXRgNCw0L3Rj9C10YLRgdGPINC/0YDQuCDQv9C10YDQtdGF0L7QtNC1INC/0L4g0YHRgtGA0LDQvdC40YbQsNC8LCDQtNC+INGC0LXRhSDQv9C+0YAg0L/QvtC60LAg0L3QtSDQsdGD0LTQtdGCINC/0L7Qu9GD0YfQtdC9INGB0LjQs9C90LDQuyBgb3RoZXJzJGAuXG4gICAgICovXG4gICAgcHVibGljIGRhdGFBY2N1bXVsYXRlZCQ6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGw+ID0gdGhpcy5vdGhlcnMkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHBhcmFtcykgPT4gdGhpcy5hdXRoU3RhdHVzJC5waXBlKG1hcCgoKSA9PiBwYXJhbXMpKSksXG4gICAgICAgIHN3aXRjaE1hcCgocGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5wYWdlJC5waXBlKFxuICAgICAgICAgICAgICAgIC8vINCY0LfQsdC10LPQsNC10Lwg0LvQuNGI0L3QtdCz0L4g0LfQsNC/0YDQvtGB0LAg0YHQviDRgdGC0LDRgNGL0LzQuCDQv9Cw0YDQsNC80LXRgtGA0LDQvNC4OiDRgdCx0YDQvtGBINGB0YLRgNCw0L3QuNGG0YsgKHBhdGNoUGFnZSkg0L/RgNC4INGB0LzQtdC90LUgb3RoZXJzJCDRgdC40L3RhdGA0L7QvdC90L5cbiAgICAgICAgICAgICAgICAvLyDCq9C/0LjQvdCw0LXRgsK7INC10YnRkSDQttC40LLRg9GOINC/0YDQtdC00YvQtNGD0YnRg9GOINC/0L7QtNC/0LjRgdC60YMg4oCUIGRlYm91bmNlVGltZSgwKSDRgdGF0LvQvtC/0YvQstCw0LXRgiDRgtCw0LrQvtC5INCy0YHQv9C70LXRgdC6INC00L4g0L7QtNC90L7QuSDRjdC80LjRgdGB0LjQuC5cbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgICAgICAgICBtYXAoKHBhZ2UpID0+ICh7IC4uLnBhcmFtcywgLi4ucGFnZSB9KSksXG4gICAgICAgICAgICAgICAgLy8gVE9ETzog0JfQsNC80LXQvdC40YLRjCB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3RzJCDQvdCwINCw0LHRgdGC0YDQsNC60YLQvdGL0Lkg0LzQtdGC0L7QtCDRgdC10YDQstC40YHQsCDQv9C+INC/0YDQuNC80LXRgNGDIGBUdWlUcmVlTG9hZGVyYC5cbiAgICAgICAgICAgICAgICBjb25jYXRNYXAoKHBhZ2luYXRpb25QYXJhbXMpID0+IHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdHMkKHBhZ2luYXRpb25QYXJhbXMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKSksXG4gICAgICAgICAgICAgICAgLy8gVE9ETzog0JfQsNC80LXQvdC40YLRjCBgU2NQcm9kdWN0YCDQvdCwIFQg0YLQuNC/LlxuICAgICAgICAgICAgICAgIHNjYW48U2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGwsIFtTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbCwgU2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGxdPihcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgICAgICAoW18sIGFjY3VtdWxhdG9yXSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3ZhbHVlLCBhY2N1bXVsYXRvcl07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY2N1bXVsYXRvciAmJiB2YWx1ZS5tZXRhLmN1cnJlbnRQYWdlID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmRhdGEudW5zaGlmdCguLi5hY2N1bXVsYXRvci5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSwgdmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbbnVsbCwgbnVsbF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1hcCgoW3BhZ2luYXRlXSkgPT4gcGFnaW5hdGUpLFxuICAgICAgICAgICAgICAgIHRha2VXaGlsZSgocGFnaW5hdGUpID0+IHBhZ2luYXRlID09PSBudWxsIHx8IHBhZ2luYXRlLm1ldGEuY3VycmVudFBhZ2UgPCBwYWdpbmF0ZS5tZXRhLmxhc3RQYWdlLCB0cnVlKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQYWdpbmF0aW9uU2VydmljZX0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm90aGVycyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRQYWdlQ2xpY2tFdmVudC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbigoYWNjdW11bGF0b3IpID0+IGFjY3VtdWxhdG9yICsgMSwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhdGNoUGFnZSh7IHBhZ2U6IHBhZ2UgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LvQvdC+0YHRgtGM0Y4g0L7QsdC90L7QstC70Y/QtdGCINC30L3QsNGH0LXQvdC40Y8g0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIHBhZ2UkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdQYWdlVmFsdWUg0J3QvtCy0YvQtSDQtNCw0L3QvdGL0LUg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2UobmV3UGFnZVZhbHVlOiBTY0lQYWdpbmF0aW9uUGFyYW1zKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXdQYWdlVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCn0LDRgdGC0LjRh9C90L4g0L7QsdC90L7QstC70Y/QtdGCINC30L3QsNGH0LXQvdC40Y8g0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIHBhZ2UkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJ0aWFsUGFnZVZhbHVlINCd0L7QstGL0LUg0LTQsNC90L3Ri9C1INGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LiDQnNC+0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YfQsNGB0YLRjCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIHBhdGNoUGFnZShwYXJ0aWFsUGFnZVZhbHVlOiBQYXJ0aWFsPFNjSVBhZ2luYXRpb25QYXJhbXM+KTogdm9pZCB7XG4gICAgICAgIC8vINCX0L3QsNGH0LXQvdC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2UkLnZhbHVlO1xuXG4gICAgICAgIC8vINCe0LHQvdC+0LLQu9GP0LXQvCDRgtC+0LvRjNC60L4g0YLQtSDQv9C+0LvRjywg0LrQvtGC0L7RgNGL0LUg0L/QtdGA0LXQtNCw0L3RiyDQsiBwYXJ0aWFsUGFnZVZhbHVlLlxuICAgICAgICBjb25zdCB1cGRhdGVkUGFnZTogU2NJUGFnaW5hdGlvblBhcmFtcyA9IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICBwYWdlOiBwYXJ0aWFsUGFnZVZhbHVlLnBhZ2UgPz8gY3VycmVudFBhZ2UucGFnZSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICBwZXJQYWdlOiBwYXJ0aWFsUGFnZVZhbHVlLnBlclBhZ2UgPz8gY3VycmVudFBhZ2UucGVyUGFnZSxcbiAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucGFnZSQubmV4dCh1cGRhdGVkUGFnZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC70L3QvtGB0YLRjNGOINC+0LHQvdC+0LLQu9GP0LXRgiDQvtGB0YLQsNC70YzQvdGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgb3RoZXJzJH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3T3RoZXJzVmFsdWUg0J3QvtCy0YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRPdGhlcnMobmV3T3RoZXJzVmFsdWU6IE8pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdGhlcnMkLm5leHQobmV3T3RoZXJzVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCn0LDRgdGC0LjRh9C90L4g0L7QsdC90L7QstC70Y/QtdGCINC+0YHRgtCw0LvRjNC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBvdGhlcnMkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJ0aWFsT3RoZXJzVmFsdWUg0J3QvtCy0YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LiDQnNC+0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YfQsNGB0YLRjCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIHBhdGNoT3RoZXJzKHBhcnRpYWxPdGhlcnNWYWx1ZTogUGFydGlhbDxPPik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50T3RoZXJzID0gdGhpcy5vdGhlcnMkLnZhbHVlID8/ICh7fSBhcyBPKTtcblxuICAgICAgICAvLyDQmNC30LHQtdCz0LDQtdC8INC+0LHQvdC+0LLQu9C10L3QuNGPLCDQtdGB0LvQuCBwYXJ0aWFsT3RoZXJzVmFsdWUg0L/Rg9GB0YLQvtC5LlxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGFydGlhbE90aGVyc1ZhbHVlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkT3RoZXJzOiBPID0geyAuLi5jdXJyZW50T3RoZXJzLCAuLi5wYXJ0aWFsT3RoZXJzVmFsdWUgfTtcbiAgICAgICAgICAgIHRoaXMub3RoZXJzJC5uZXh0KHVwZGF0ZWRPdGhlcnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdC90L7QstC70Y/QtdGCINCy0YHQtSDQtNCw0L3QvdGL0LUg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBwYWdlJH0g0Lgge0BsaW5rIG90aGVycyR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld1ZhbHVlINCd0L7QstGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuCDQtNC70Y8ge0BsaW5rIHBhZ2UkfSDQuCB7QGxpbmsgb3RoZXJzJH0uXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2luYXRpb25QYXJhbXMobmV3VmFsdWU6IFApOiB2b2lkIHtcbiAgICAgICAgLy8g0J7QsdC90L7QstC70Y/QtdC8INC30L3QsNGH0LXQvdC40LUgcGFnZSQuXG4gICAgICAgIHRoaXMucGFnZSQubmV4dCh7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICBwYWdlOiBuZXdWYWx1ZS5wYWdlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICAgICAgcGVyUGFnZTogbmV3VmFsdWUucGVyUGFnZSxcbiAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDQntCx0L3QvtCy0LvRj9C10Lwg0LfQvdCw0YfQtdC90LjQtSBvdGhlcnMkLlxuICAgICAgICBjb25zdCBvdGhlcnNWYWx1ZSA9IHRoaXMuZXh0cmFjdE90aGVycyhuZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMub3RoZXJzJC5uZXh0KG90aGVyc1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LTQtdC70Y/QtdGCINC/0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40LgsINC90LUg0L7RgtC90L7RgdGP0YnQuNC10YHRjyDQuiDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgT30g0LjQtyDQv9C+0LvQvdC+0LPQviDQvtCx0YrQtdC60YLQsCDQv9Cw0YDQsNC80LXRgtGA0L7QsiDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIFB9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCe0LHRitC10LrRgtGLINC/0LDRgNCw0LzQtdGC0YDQvtCyINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgUH1cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgZXh0cmFjdE90aGVycyh2YWx1ZTogUCk6IE8ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIGNvbnN0IHsgcGFnZSwgcGVyUGFnZSwgLi4ub3RoZXJzIH0gPSB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gb3RoZXJzIGFzIE87XG4gICAgfVxufVxuIl19
|