@snabcentr/client-core 2.65.2 → 2.66.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/banners/dto/sc-banner.d.ts +2 -2
- package/cart/classes/index.d.ts +1 -0
- package/cart/{dto → classes}/sc-cart.d.ts +7 -7
- package/cart/classes/sc-sum.d.ts +1 -1
- package/cart/index.d.ts +0 -1
- package/cart/internal/index.d.ts +1 -2
- package/cart/internal/{sc-i-cart-dto.d.ts → sc-i-cart.d.ts} +4 -6
- package/cart/services/sc-cart.service.d.ts +32 -30
- package/catalog/classes/sc-cached-item.d.ts +25 -5
- package/catalog/dto/sc-product.d.ts +2 -2
- package/catalog/interfaces/sc-i-category-product-params.d.ts +2 -10
- package/catalog/interfaces/sc-property-filters.d.ts +2 -4
- package/esm2022/banners/dto/sc-banner.mjs +12 -12
- package/esm2022/cart/classes/index.mjs +2 -1
- package/esm2022/cart/classes/sc-cart.mjs +18 -0
- package/esm2022/cart/classes/sc-sum.mjs +2 -2
- package/esm2022/cart/index.mjs +1 -2
- package/esm2022/cart/internal/index.mjs +2 -3
- package/esm2022/cart/internal/sc-i-cart.mjs +2 -0
- package/esm2022/cart/services/sc-cart.service.mjs +50 -52
- package/esm2022/catalog/classes/sc-cached-item.mjs +31 -6
- package/esm2022/catalog/dto/sc-product.mjs +1 -1
- package/esm2022/catalog/interfaces/sc-i-category-product-params.mjs +1 -1
- package/esm2022/catalog/interfaces/sc-property-filters.mjs +1 -1
- package/esm2022/catalog/services/sc-catalog.service.mjs +6 -6
- package/esm2022/catalog/services/sc-recommendation.service.mjs +8 -7
- package/esm2022/contragent/services/sc-contragent.service.mjs +3 -3
- package/esm2022/delivery-address/services/sc-delivery-address.service.mjs +4 -2
- package/esm2022/order/classes/index.mjs +11 -0
- package/esm2022/order/classes/sc-delivery-cost.mjs +19 -0
- package/esm2022/order/classes/sc-order-base.mjs +28 -0
- package/esm2022/order/classes/sc-order-delivery.mjs +2 -0
- package/esm2022/order/classes/sc-order-draft-short.mjs +17 -0
- package/esm2022/order/classes/sc-order-draft.mjs +59 -0
- package/esm2022/order/classes/sc-order-history.mjs +2 -0
- package/esm2022/order/classes/sc-order-item.mjs +60 -0
- package/esm2022/order/classes/sc-order-payment.mjs +2 -0
- package/esm2022/order/classes/sc-order-short.mjs +30 -0
- package/esm2022/order/classes/sc-order.mjs +100 -0
- package/esm2022/order/enums/index.mjs +2 -1
- package/esm2022/order/enums/sc-order-draft-type.mjs +16 -0
- package/esm2022/order/index.mjs +5 -3
- package/esm2022/order/internal/index.mjs +14 -3
- package/esm2022/order/internal/sc-i-delivery-cost-dto.mjs +1 -1
- package/esm2022/order/internal/sc-i-new-order-draft-request.mjs +2 -0
- package/esm2022/order/internal/sc-i-new-order-item-base.mjs +2 -0
- package/esm2022/order/internal/sc-i-new-order-item-measured.mjs +2 -0
- package/esm2022/order/internal/sc-i-new-order.mjs +2 -0
- package/esm2022/order/internal/sc-i-order-base.mjs +2 -0
- package/esm2022/order/internal/sc-i-order-draft-list-params.mjs +2 -0
- package/esm2022/order/internal/sc-i-order-draft-short.mjs +2 -0
- package/esm2022/order/internal/sc-i-order-draft.mjs +2 -0
- package/esm2022/order/internal/sc-i-order-item.mjs +2 -0
- package/esm2022/order/internal/sc-i-order-loader.mjs +2 -0
- package/esm2022/order/internal/sc-i-order-short.mjs +2 -0
- package/esm2022/order/internal/sc-i-order.mjs +2 -0
- package/esm2022/order/internal/sc-i-update-order-order-request.mjs +2 -0
- package/esm2022/order/services/index.mjs +3 -0
- package/esm2022/order/services/sc-order-drafts.service.mjs +195 -0
- package/esm2022/order/services/sc-orders.service.mjs +33 -54
- package/esm2022/order/tokens/index.mjs +2 -0
- package/esm2022/order/tokens/sc-order-loader.token.mjs +25 -0
- package/esm2022/pagination/dto/index.mjs +3 -1
- package/esm2022/pagination/dto/sc-i-range-filter.mjs +2 -0
- package/esm2022/pagination/dto/sc-i-sort-order.mjs +2 -0
- package/esm2022/reclamation/interfaces/sc-i-pagination-params.mjs +1 -1
- package/esm2022/references/enums/sc-order-state-status.mjs +1 -5
- package/esm2022/seo/classes/schema-org-factory.mjs +41 -2
- package/esm2022/seo/interfaces/index.mjs +2 -2
- package/esm2022/seo/interfaces/sc-i-breadcrumb-item.mjs +12 -0
- package/esm2022/seo/services/sc-seo.service.mjs +11 -2
- package/esm2022/ui/services/sc-ui.service.mjs +1 -1
- package/esm2022/user/dto/sc-user-metadata.mjs +1 -1
- package/esm2022/user-metrika/enums/sc-user-metrika-goals-enum.mjs +19 -1
- package/fesm2022/snabcentr-client-core.mjs +1093 -768
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/order/{dto → classes}/index.d.ts +5 -3
- package/order/{dto → classes}/sc-delivery-cost.d.ts +2 -2
- package/order/classes/sc-order-base.d.ts +32 -0
- package/order/classes/sc-order-draft-short.d.ts +22 -0
- package/order/classes/sc-order-draft.d.ts +63 -0
- package/order/{dto → classes}/sc-order-history.d.ts +1 -1
- package/order/classes/sc-order-item.d.ts +98 -0
- package/order/{dto → classes}/sc-order-payment.d.ts +1 -1
- package/order/classes/sc-order-short.d.ts +44 -0
- package/order/classes/sc-order.d.ts +102 -0
- package/order/enums/index.d.ts +1 -0
- package/order/enums/sc-order-draft-type.d.ts +13 -0
- package/order/index.d.ts +4 -2
- package/order/internal/index.d.ts +13 -2
- package/order/internal/sc-i-delivery-cost-dto.d.ts +1 -1
- package/order/internal/sc-i-new-order-draft-request.d.ts +13 -0
- package/{cart/dto/sc-i-new-cart-item-base.d.ts → order/internal/sc-i-new-order-item-base.d.ts} +2 -2
- package/order/internal/sc-i-new-order-item-measured.d.ts +10 -0
- package/order/{dto → internal}/sc-i-new-order.d.ts +1 -5
- package/order/internal/sc-i-order-base.d.ts +25 -0
- package/order/internal/sc-i-order-draft-list-params.d.ts +32 -0
- package/order/internal/sc-i-order-draft-short.d.ts +15 -0
- package/order/internal/sc-i-order-draft.d.ts +43 -0
- package/{cart/dto/sc-cart-item.d.ts → order/internal/sc-i-order-item.d.ts} +6 -13
- package/order/internal/sc-i-order-loader.d.ts +51 -0
- package/order/internal/{sc-i-order-short-dto.d.ts → sc-i-order-short.d.ts} +14 -16
- package/order/{dto/sc-order.d.ts → internal/sc-i-order.d.ts} +15 -67
- package/order/internal/sc-i-update-order-order-request.d.ts +9 -0
- package/order/services/index.d.ts +2 -0
- package/order/services/sc-order-drafts.service.d.ts +118 -0
- package/order/services/sc-orders.service.d.ts +19 -20
- package/order/tokens/index.d.ts +1 -0
- package/order/tokens/sc-order-loader.token.d.ts +26 -0
- package/package.json +1 -1
- package/pagination/dto/index.d.ts +2 -0
- package/pagination/dto/sc-i-range-filter.d.ts +15 -0
- package/pagination/dto/sc-i-sort-order.d.ts +15 -0
- package/reclamation/interfaces/sc-i-pagination-params.d.ts +3 -21
- package/references/enums/sc-order-state-status.d.ts +0 -4
- package/seo/classes/schema-org-factory.d.ts +9 -2
- package/seo/interfaces/index.d.ts +1 -1
- package/seo/interfaces/sc-i-breadcrumb-item.d.ts +25 -0
- package/seo/services/sc-seo.service.d.ts +1 -1
- package/ui/services/sc-ui.service.d.ts +1 -1
- package/user/dto/sc-user-metadata.d.ts +1 -1
- package/user-metrika/enums/sc-user-metrika-goals-enum.d.ts +18 -0
- package/cart/dto/index.d.ts +0 -5
- package/cart/dto/sc-i-new-cart-item-measured.d.ts +0 -10
- package/cart/dto/sc-i-sales-direction-cart.d.ts +0 -37
- package/cart/internal/sc-i-cart-item-dto.d.ts +0 -73
- package/esm2022/cart/dto/index.mjs +0 -6
- package/esm2022/cart/dto/sc-cart-item.mjs +0 -60
- package/esm2022/cart/dto/sc-cart.mjs +0 -18
- package/esm2022/cart/dto/sc-i-new-cart-item-base.mjs +0 -2
- package/esm2022/cart/dto/sc-i-new-cart-item-measured.mjs +0 -2
- package/esm2022/cart/dto/sc-i-sales-direction-cart.mjs +0 -21
- package/esm2022/cart/internal/sc-i-cart-dto.mjs +0 -2
- package/esm2022/cart/internal/sc-i-cart-item-dto.mjs +0 -2
- package/esm2022/order/dto/index.mjs +0 -9
- package/esm2022/order/dto/sc-delivery-cost.mjs +0 -19
- package/esm2022/order/dto/sc-i-new-order-from-draft.mjs +0 -2
- package/esm2022/order/dto/sc-i-new-order.mjs +0 -2
- package/esm2022/order/dto/sc-order-delivery.mjs +0 -2
- package/esm2022/order/dto/sc-order-history.mjs +0 -2
- package/esm2022/order/dto/sc-order-payment.mjs +0 -2
- package/esm2022/order/dto/sc-order-short.mjs +0 -46
- package/esm2022/order/dto/sc-order.mjs +0 -134
- package/esm2022/order/internal/sc-i-order-dto.mjs +0 -2
- package/esm2022/order/internal/sc-i-order-short-dto.mjs +0 -2
- package/esm2022/seo/interfaces/sc-i-schema-org-breadcrumb-list.mjs +0 -2
- package/order/dto/sc-i-new-order-from-draft.d.ts +0 -10
- package/order/dto/sc-order-short.d.ts +0 -65
- package/order/internal/sc-i-order-dto.d.ts +0 -94
- package/seo/interfaces/sc-i-schema-org-breadcrumb-list.d.ts +0 -34
- /package/order/{dto → classes}/sc-order-delivery.d.ts +0 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/* eslint-disable no-param-reassign */
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { inject, Injectable } from '@angular/core';
|
|
4
|
+
import { filter, map, of, tap } from 'rxjs';
|
|
5
|
+
import { ScCartService } from '../../cart';
|
|
6
|
+
import { ScCachedItem } from '../../catalog/classes/sc-cached-item';
|
|
7
|
+
import { SC_UPDATE_INTERVAL, SC_URLS } from '../../tokens';
|
|
8
|
+
import { SC_USER_INFO } from '../../user/tokens/sc-user-providers';
|
|
9
|
+
import { ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '../../user-metrika';
|
|
10
|
+
import { ScOrderDraft, ScOrderDraftShort, ScOrderShort } from '../classes';
|
|
11
|
+
import { loadingPlaceholder } from '../tokens/sc-order-loader.token';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
/**
|
|
14
|
+
* Данные о сервисе коммерческих предложений и черновиков заказов.
|
|
15
|
+
*/
|
|
16
|
+
export class ScOrderDraftsService {
|
|
17
|
+
/**
|
|
18
|
+
* Инициализирует экземпляр класса {@link ScOrderDraftsService}.
|
|
19
|
+
*/
|
|
20
|
+
constructor() {
|
|
21
|
+
/**
|
|
22
|
+
* HTTP-клиент.
|
|
23
|
+
*/
|
|
24
|
+
this.http = inject(HttpClient);
|
|
25
|
+
/**
|
|
26
|
+
* Список ссылок приложения.
|
|
27
|
+
*/
|
|
28
|
+
this.urls = inject(SC_URLS);
|
|
29
|
+
/**
|
|
30
|
+
* {@link Observable} данных о текущем пользователе.
|
|
31
|
+
*/
|
|
32
|
+
this.user$ = inject(SC_USER_INFO);
|
|
33
|
+
/**
|
|
34
|
+
* Интервалы обновления данных.
|
|
35
|
+
*/
|
|
36
|
+
this.updateInterval = inject(SC_UPDATE_INTERVAL);
|
|
37
|
+
/**
|
|
38
|
+
* Сервис для работы с корзиной.
|
|
39
|
+
*/
|
|
40
|
+
this.cartService = inject(ScCartService);
|
|
41
|
+
/**
|
|
42
|
+
* Сервис для сбора метрик о действиях пользователей.
|
|
43
|
+
*/
|
|
44
|
+
this.userMetrikaService = inject(ScUserMetrikaService);
|
|
45
|
+
/**
|
|
46
|
+
* Коллекция пар ключ-значение для кэшированных коммерческих предложений/черновиков пользователя.
|
|
47
|
+
*/
|
|
48
|
+
this.offerMap = new Map();
|
|
49
|
+
this.user$.pipe(filter((user) => user.isGuest)).subscribe(() => {
|
|
50
|
+
this.offerMap.clear();
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Возвращает список коммерческих предложений/черновиков с пагинацией.
|
|
55
|
+
*
|
|
56
|
+
* @param params Параметры запроса получения списка.
|
|
57
|
+
*/
|
|
58
|
+
getList$(params) {
|
|
59
|
+
return this.http.get(`${this.urls.apiUrl}/orders/offers`, { params: params }).pipe(map((offersPaginateDTO) => {
|
|
60
|
+
offersPaginateDTO.data = offersPaginateDTO.data.map((item) => new ScOrderDraftShort(item));
|
|
61
|
+
return offersPaginateDTO;
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Создаёт новое коммерческое предложение/черновик заказа.
|
|
66
|
+
*
|
|
67
|
+
* @param data Данные для создания.
|
|
68
|
+
*/
|
|
69
|
+
create$(data) {
|
|
70
|
+
return this.http.post(`${this.urls.apiUrl}/orders/offers`, data).pipe(map((offerDTO) => new ScOrderDraft(offerDTO)), tap((offer) => {
|
|
71
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
|
72
|
+
target: ScUserMetrikaGoalsEnum.orderDraftCreated,
|
|
73
|
+
params: { offer_id: offer.id },
|
|
74
|
+
});
|
|
75
|
+
this.cartService.updateCart();
|
|
76
|
+
this.offerMap.set(offer.id, new ScCachedItem(this.updateInterval.orderData, of(offer), loadingPlaceholder));
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Возвращает полную информацию о коммерческом предложении/черновике.
|
|
81
|
+
*
|
|
82
|
+
* @param draftId Идентификатор записи.
|
|
83
|
+
* @param cacheable Признак возможности получения из кэшированных данных.
|
|
84
|
+
*/
|
|
85
|
+
get$(draftId, cacheable = true) {
|
|
86
|
+
let cachedItem = this.offerMap.get(draftId);
|
|
87
|
+
if (!cachedItem) {
|
|
88
|
+
cachedItem = new ScCachedItem(this.updateInterval.orderData, this.http.get(`${this.urls.apiUrl}/orders/offers/${draftId}`).pipe(map((data) => new ScOrderDraft(data))), loadingPlaceholder);
|
|
89
|
+
if (cacheable) {
|
|
90
|
+
this.offerMap.set(draftId, cachedItem);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (cacheable && !cachedItem.cachedDataIsActual()) {
|
|
94
|
+
cachedItem.update();
|
|
95
|
+
}
|
|
96
|
+
return cachedItem.item$;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Возвращает список элементов коммерческого предложения/черновика.
|
|
100
|
+
*
|
|
101
|
+
* @param id Идентификатор коммерческого предложения/черновика.
|
|
102
|
+
*/
|
|
103
|
+
getItems$(id) {
|
|
104
|
+
return this.get$(id).pipe(map((draft) => (draft === loadingPlaceholder ? loadingPlaceholder : draft.products)));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Обновляет данные коммерческого предложения/черновика.
|
|
108
|
+
*
|
|
109
|
+
* @param draftId Идентификатор записи.
|
|
110
|
+
* @param patch Данные для обновления.
|
|
111
|
+
*/
|
|
112
|
+
update$(draftId, patch) {
|
|
113
|
+
const cachedItem = this.offerMap.get(draftId);
|
|
114
|
+
return this.http.patch(`${this.urls.apiUrl}/orders/offers/${draftId}`, patch).pipe(map((offerDTO) => new ScOrderDraft(offerDTO)), tap((offer) => {
|
|
115
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
|
116
|
+
target: ScUserMetrikaGoalsEnum.orderDraftUpdated,
|
|
117
|
+
params: { offer_id: draftId },
|
|
118
|
+
});
|
|
119
|
+
cachedItem?.setValue(offer);
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Удаляет коммерческое предложение/черновик.
|
|
124
|
+
*
|
|
125
|
+
* @param offerId Идентификатор записи.
|
|
126
|
+
*/
|
|
127
|
+
delete$(offerId) {
|
|
128
|
+
return this.http.delete(`${this.urls.apiUrl}/orders/offers/${offerId}`).pipe(tap(() => {
|
|
129
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
|
130
|
+
target: ScUserMetrikaGoalsEnum.orderDraftDeleted,
|
|
131
|
+
params: { offer_id: offerId },
|
|
132
|
+
});
|
|
133
|
+
this.offerMap.delete(offerId);
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Создаёт заказ на основе коммерческого предложения/черновика.
|
|
138
|
+
*
|
|
139
|
+
* @param offerId Идентификатор записи.
|
|
140
|
+
* @param data Данные заказа.
|
|
141
|
+
*/
|
|
142
|
+
createOrder$(offerId, data) {
|
|
143
|
+
return this.http.post(`${this.urls.apiUrl}/orders/offers/${offerId}/create-order`, data).pipe(map((orders) => orders.map((item) => new ScOrderShort(item))), tap((orders) => {
|
|
144
|
+
orders.forEach((order) => {
|
|
145
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
|
146
|
+
target: ScUserMetrikaGoalsEnum.orderCreatedFromDraft,
|
|
147
|
+
params: { offer_id: offerId, order_id: order.id },
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Добавляет продукт в коммерческое предложение/черновик.
|
|
154
|
+
*
|
|
155
|
+
* @param productData Данные продукта для добавления.
|
|
156
|
+
* @param offerId Идентификатор коммерческого предложения/черновика.
|
|
157
|
+
*/
|
|
158
|
+
addProduct$(productData, offerId) {
|
|
159
|
+
return this.http.post(`${this.urls.apiUrl}/orders/offers/${offerId}/products`, productData).pipe(map((offerDTO) => new ScOrderDraft(offerDTO)), tap((offer) => {
|
|
160
|
+
this.offerMap.set(offerId, new ScCachedItem(this.updateInterval.orderData, of(offer), loadingPlaceholder));
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Изменяет продукт в коммерческом предложении/черновике.
|
|
165
|
+
*
|
|
166
|
+
* @param productId Идентификатор продукта в корзине.
|
|
167
|
+
* @param patch Частичные данные для обновления.
|
|
168
|
+
* @param offerId Идентификатор коммерческого предложения/черновика.
|
|
169
|
+
*/
|
|
170
|
+
updateProduct$(productId, patch, offerId) {
|
|
171
|
+
return this.http.patch(`${this.urls.apiUrl}/orders/offers/${offerId}/products/${productId}`, patch).pipe(map((offerDTO) => new ScOrderDraft(offerDTO)), tap((offer) => {
|
|
172
|
+
this.offerMap.set(offerId, new ScCachedItem(this.updateInterval.orderData, of(offer), loadingPlaceholder));
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Удаляет продукт из коммерческого предложения/черновика.
|
|
177
|
+
*
|
|
178
|
+
* @param item Удаляемая позиция.
|
|
179
|
+
* @param offerId Идентификатор коммерческого предложения/черновика.
|
|
180
|
+
*/
|
|
181
|
+
deleteProduct$(item, offerId) {
|
|
182
|
+
return this.http.delete(`${this.urls.apiUrl}/orders/offers/${offerId}/products/${item.id}`).pipe(map((offerDTO) => new ScOrderDraft(offerDTO)), tap((offer) => {
|
|
183
|
+
this.offerMap.set(offerId, new ScCachedItem(this.updateInterval.orderData, of(offer), loadingPlaceholder));
|
|
184
|
+
}));
|
|
185
|
+
}
|
|
186
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScOrderDraftsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
187
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScOrderDraftsService, providedIn: 'root' }); }
|
|
188
|
+
}
|
|
189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScOrderDraftsService, decorators: [{
|
|
190
|
+
type: Injectable,
|
|
191
|
+
args: [{
|
|
192
|
+
providedIn: 'root',
|
|
193
|
+
}]
|
|
194
|
+
}], ctorParameters: () => [] });
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXItZHJhZnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL3NlcnZpY2VzL3NjLW9yZGVyLWRyYWZ0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUdwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQU8zRSxPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7O0FBRXJGOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQW9DN0I7O09BRUc7SUFDSDtRQXRDQTs7V0FFRztRQUNjLFNBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsVUFBSyxHQUF1QixNQUFNLENBQUMsWUFBWSxDQUFD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S0FBSyxFQUFFLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUMvRyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFDLElBQWlCLEVBQUUsT0FBZTtRQUNwRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxrQkFBa0IsT0FBTyxhQUFhLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0csR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUM3QyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQy9HLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOytHQTFOUSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZqQixNQUFNOzs0RkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2NhcnQnO1xuaW1wb3J0IHsgU2NDYWNoZWRJdGVtIH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9jbGFzc2VzL3NjLWNhY2hlZC1pdGVtJztcbmltcG9ydCB7IFNjSVVwZGF0ZUludGVydmFsLCBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNjSVBhZ2luYXRlIH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBTQ19VUERBVEVfSU5URVJWQUwsIFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU2NVc2VyIH0gZnJvbSAnLi4vLi4vdXNlci9kdG8vc2MtdXNlcic7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYSc7XG5pbXBvcnQgeyBTY09yZGVyRHJhZnQsIFNjT3JkZXJEcmFmdFNob3J0LCBTY09yZGVyU2hvcnQgfSBmcm9tICcuLi9jbGFzc2VzJztcbmltcG9ydCB7IFNjT3JkZXJJdGVtIH0gZnJvbSAnLi4vY2xhc3Nlcy9zYy1vcmRlci1pdGVtJztcbmltcG9ydCB7IFNjSU9yZGVyRHJhZnQsIFNjSU9yZGVyRHJhZnRTaG9ydCwgU2NJT3JkZXJFZGl0b3JMb2FkZXIsIFNjSU9yZGVyU2hvcnQgfSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBTY0lOZXdPcmRlciB9IGZyb20gJy4uL2ludGVybmFsL3NjLWktbmV3LW9yZGVyJztcbmltcG9ydCB7IFNjSU5ld09yZGVyRHJhZnRSZXF1ZXN0IH0gZnJvbSAnLi4vaW50ZXJuYWwvc2MtaS1uZXctb3JkZXItZHJhZnQtcmVxdWVzdCc7XG5pbXBvcnQgeyBTY0lOZXdPcmRlckl0ZW1CYXNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvc2MtaS1uZXctb3JkZXItaXRlbS1iYXNlJztcbmltcG9ydCB7IFNjSVVwZGF0ZU9yZGVyRHJhZnRSZXF1ZXN0IH0gZnJvbSAnLi4vaW50ZXJuYWwvc2MtaS11cGRhdGUtb3JkZXItb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQgeyBsb2FkaW5nUGxhY2Vob2xkZXIsIFNjT3JkZXJMb2FkaW5nIH0gZnJvbSAnLi4vdG9rZW5zL3NjLW9yZGVyLWxvYWRlci50b2tlbic7XG5cbi8qKlxuICog0JTQsNC90L3Ri9C1INC+INGB0LXRgNCy0LjRgdC1INC60L7QvNC80LXRgNGH0LXRgdC60LjRhSDQv9GA0LXQtNC70L7QttC10L3QuNC5INC4INGH0LXRgNC90L7QstC40LrQvtCyINC30LDQutCw0LfQvtCyLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY09yZGVyRHJhZnRzU2VydmljZSBpbXBsZW1lbnRzIFNjSU9yZGVyRWRpdG9yTG9hZGVyPFNjT3JkZXJJdGVtLCBTY09yZGVyRHJhZnQ+IHtcbiAgICAvKipcbiAgICAgKiBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQtNCw0L3QvdGL0YUg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyPiA9IGluamVjdChTQ19VU0VSX0lORk8pO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdGC0LXRgNCy0LDQu9GLINC+0LHQvdC+0LLQu9C10L3QuNGPINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZUludGVydmFsOiBTY0lVcGRhdGVJbnRlcnZhbCA9IGluamVjdChTQ19VUERBVEVfSU5URVJWQUwpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtGA0LfQuNC90L7QuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBTY0NhcnRTZXJ2aWNlID0gaW5qZWN0KFNjQ2FydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCa0L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9GFINC60L7QvNC80LXRgNGH0LXRgdC60LjRhSDQv9GA0LXQtNC70L7QttC10L3QuNC5L9GH0LXRgNC90L7QstC40LrQvtCyINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG9mZmVyTWFwOiBNYXA8bnVtYmVyLCBTY0NhY2hlZEl0ZW08U2NPcmRlckRyYWZ0LCBTY09yZGVyTG9hZGluZz4+ID0gbmV3IE1hcDxudW1iZXIsIFNjQ2FjaGVkSXRlbTxTY09yZGVyRHJhZnQsIFNjT3JkZXJMb2FkaW5nPj4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NPcmRlckRyYWZ0c1NlcnZpY2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51c2VyJC5waXBlKGZpbHRlcigodXNlcikgPT4gdXNlci5pc0d1ZXN0KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub2ZmZXJNYXAuY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC60L7QvNC80LXRgNGH0LXRgdC60LjRhSDQv9GA0LXQtNC70L7QttC10L3QuNC5L9GH0LXRgNC90L7QstC40LrQvtCyINGBINC/0LDQs9C40L3QsNGG0LjQtdC5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDQn9Cw0YDQsNC80LXRgtGA0Ysg0LfQsNC/0YDQvtGB0LAg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TGlzdCQocGFyYW1zOiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY09yZGVyRHJhZnRTaG9ydD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJUGFnaW5hdGU8U2NJT3JkZXJEcmFmdFNob3J0Pj4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL29mZmVyc2AsIHsgcGFyYW1zOiBwYXJhbXMgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgob2ZmZXJzUGFnaW5hdGVEVE8pID0+IHtcbiAgICAgICAgICAgICAgICBvZmZlcnNQYWdpbmF0ZURUTy5kYXRhID0gb2ZmZXJzUGFnaW5hdGVEVE8uZGF0YS5tYXAoKGl0ZW0pID0+IG5ldyBTY09yZGVyRHJhZnRTaG9ydChpdGVtKSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb2ZmZXJzUGFnaW5hdGVEVE8gYXMgU2NJUGFnaW5hdGU8U2NPcmRlckRyYWZ0U2hvcnQ+O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQvdC+0LLQvtC1INC60L7QvNC80LXRgNGH0LXRgdC60L7QtSDQv9GA0LXQtNC70L7QttC10L3QuNC1L9GH0LXRgNC90L7QstC40Log0LfQsNC60LDQt9CwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEg0JTQsNC90L3Ri9C1INC00LvRjyDRgdC+0LfQtNCw0L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGUkKGRhdGE6IFNjSU5ld09yZGVyRHJhZnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxTY09yZGVyRHJhZnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFNjSU9yZGVyRHJhZnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy9vZmZlcnNgLCBkYXRhKS5waXBlKFxuICAgICAgICAgICAgbWFwKChvZmZlckRUTykgPT4gbmV3IFNjT3JkZXJEcmFmdChvZmZlckRUTykpLFxuICAgICAgICAgICAgdGFwKChvZmZlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyRHJhZnRDcmVhdGVkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgb2ZmZXJfaWQ6IG9mZmVyLmlkIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS51cGRhdGVDYXJ0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZlck1hcC5zZXQob2ZmZXIuaWQsIG5ldyBTY0NhY2hlZEl0ZW0odGhpcy51cGRhdGVJbnRlcnZhbC5vcmRlckRhdGEsIG9mKG9mZmVyKSwgbG9hZGluZ1BsYWNlaG9sZGVyKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0L7Qu9C90YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDQutC+0LzQvNC10YDRh9C10YHQutC+0Lwg0L/RgNC10LTQu9C+0LbQtdC90LjQuC/Rh9C10YDQvdC+0LLQuNC60LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZHJhZnRJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0LguXG4gICAgICogQHBhcmFtIGNhY2hlYWJsZSDQn9GA0LjQt9C90LDQuiDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC/0L7Qu9GD0YfQtdC90LjRjyDQuNC3INC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIGdldCQoZHJhZnRJZDogbnVtYmVyLCBjYWNoZWFibGU6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxTY09yZGVyRHJhZnQgfCBTY09yZGVyTG9hZGluZz4ge1xuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMub2ZmZXJNYXAuZ2V0KGRyYWZ0SWQpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW0oXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbnRlcnZhbC5vcmRlckRhdGEsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLmdldDxTY0lPcmRlckRyYWZ0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvb2ZmZXJzLyR7ZHJhZnRJZH1gKS5waXBlKG1hcCgoZGF0YSkgPT4gbmV3IFNjT3JkZXJEcmFmdChkYXRhKSkpLFxuICAgICAgICAgICAgICAgIGxvYWRpbmdQbGFjZWhvbGRlclxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNhY2hlYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub2ZmZXJNYXAuc2V0KGRyYWZ0SWQsIGNhY2hlZEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhY2hlYWJsZSAmJiAhY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC80LzQtdGA0YfQtdGB0LrQvtCz0L4g0L/RgNC10LTQu9C+0LbQtdC90LjRjy/Rh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC80LzQtdGA0YfQtdGB0LrQvtCz0L4g0L/RgNC10LTQu9C+0LbQtdC90LjRjy/Rh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICovXG4gICAgcHVibGljIGdldEl0ZW1zJChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY09yZGVySXRlbVtdIHwgU2NPcmRlckxvYWRpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0JChpZCkucGlwZShtYXAoKGRyYWZ0KSA9PiAoZHJhZnQgPT09IGxvYWRpbmdQbGFjZWhvbGRlciA/IGxvYWRpbmdQbGFjZWhvbGRlciA6IChkcmFmdCBhcyBTY09yZGVyRHJhZnQpLnByb2R1Y3RzKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LrQvtC80LzQtdGA0YfQtdGB0LrQvtCz0L4g0L/RgNC10LTQu9C+0LbQtdC90LjRjy/Rh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZHJhZnRJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0LguXG4gICAgICogQHBhcmFtIHBhdGNoINCU0LDQvdC90YvQtSDQtNC70Y8g0L7QsdC90L7QstC70LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZSQoZHJhZnRJZDogbnVtYmVyLCBwYXRjaDogU2NJVXBkYXRlT3JkZXJEcmFmdFJlcXVlc3QpOiBPYnNlcnZhYmxlPFNjT3JkZXJEcmFmdD4ge1xuICAgICAgICBjb25zdCBjYWNoZWRJdGVtID0gdGhpcy5vZmZlck1hcC5nZXQoZHJhZnRJZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxTY0lPcmRlckRyYWZ0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvb2ZmZXJzLyR7ZHJhZnRJZH1gLCBwYXRjaCkucGlwZShcbiAgICAgICAgICAgIG1hcCgob2ZmZXJEVE8pID0+IG5ldyBTY09yZGVyRHJhZnQob2ZmZXJEVE8pKSxcbiAgICAgICAgICAgIHRhcCgob2ZmZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5vcmRlckRyYWZ0VXBkYXRlZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IG9mZmVyX2lkOiBkcmFmdElkIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY2FjaGVkSXRlbT8uc2V0VmFsdWUob2ZmZXIpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQutC+0LzQvNC10YDRh9C10YHQutC+0LUg0L/RgNC10LTQu9C+0LbQtdC90LjQtS/Rh9C10YDQvdC+0LLQuNC6LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9mZmVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUkKG9mZmVySWQ6IG51bWJlcik6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL29mZmVycy8ke29mZmVySWR9YCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJEcmFmdERlbGV0ZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvZmZlcl9pZDogb2ZmZXJJZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMub2ZmZXJNYXAuZGVsZXRlKG9mZmVySWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0LrQsNC3INC90LAg0L7RgdC90L7QstC1INC60L7QvNC80LXRgNGH0LXRgdC60L7Qs9C+INC/0YDQtdC00LvQvtC20LXQvdC40Y8v0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9mZmVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4LlxuICAgICAqIEBwYXJhbSBkYXRhINCU0LDQvdC90YvQtSDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZU9yZGVyJChvZmZlcklkOiBudW1iZXIsIGRhdGE6IFNjSU5ld09yZGVyKTogT2JzZXJ2YWJsZTxTY09yZGVyU2hvcnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NJT3JkZXJTaG9ydFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvb2ZmZXJzLyR7b2ZmZXJJZH0vY3JlYXRlLW9yZGVyYCwgZGF0YSkucGlwZShcbiAgICAgICAgICAgIG1hcCgob3JkZXJzKSA9PiBvcmRlcnMubWFwKChpdGVtKSA9PiBuZXcgU2NPcmRlclNob3J0KGl0ZW0pKSksXG4gICAgICAgICAgICB0YXAoKG9yZGVyczogU2NPcmRlclNob3J0W10pID0+IHtcbiAgICAgICAgICAgICAgICBvcmRlcnMuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyQ3JlYXRlZEZyb21EcmFmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvZmZlcl9pZDogb2ZmZXJJZCwgb3JkZXJfaWQ6IG9yZGVyLmlkIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0LHQsNCy0LvRj9C10YIg0L/RgNC+0LTRg9C60YIg0LIg0LrQvtC80LzQtdGA0YfQtdGB0LrQvtC1INC/0YDQtdC00LvQvtC20LXQvdC40LUv0YfQtdGA0L3QvtCy0LjQui5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0RGF0YSDQlNCw0L3QvdGL0LUg0L/RgNC+0LTRg9C60YLQsCDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8uXG4gICAgICogQHBhcmFtIG9mZmVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC80LzQtdGA0YfQtdGB0LrQvtCz0L4g0L/RgNC10LTQu9C+0LbQtdC90LjRjy/Rh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICovXG4gICAgcHVibGljIGFkZFByb2R1Y3QkKHByb2R1Y3REYXRhOiBTY0lOZXdPcmRlckl0ZW1CYXNlLCBvZmZlcklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjT3JkZXJEcmFmdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NJT3JkZXJEcmFmdD4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL29mZmVycy8ke29mZmVySWR9L3Byb2R1Y3RzYCwgcHJvZHVjdERhdGEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG9mZmVyRFRPKSA9PiBuZXcgU2NPcmRlckRyYWZ0KG9mZmVyRFRPKSksXG4gICAgICAgICAgICB0YXAoKG9mZmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZlck1hcC5zZXQob2ZmZXJJZCwgbmV3IFNjQ2FjaGVkSXRlbSh0aGlzLnVwZGF0ZUludGVydmFsLm9yZGVyRGF0YSwgb2Yob2ZmZXIpLCBsb2FkaW5nUGxhY2Vob2xkZXIpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JjQt9C80LXQvdGP0LXRgiDQv9GA0L7QtNGD0LrRgiDQsiDQutC+0LzQvNC10YDRh9C10YHQutC+0Lwg0L/RgNC10LTQu9C+0LbQtdC90LjQuC/Rh9C10YDQvdC+0LLQuNC60LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdElkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC/0YDQvtC00YPQutGC0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICogQHBhcmFtIHBhdGNoINCn0LDRgdGC0LjRh9C90YvQtSDQtNCw0L3QvdGL0LUg0LTQu9GPINC+0LHQvdC+0LLQu9C10L3QuNGPLlxuICAgICAqIEBwYXJhbSBvZmZlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvNC80LXRgNGH0LXRgdC60L7Qs9C+INC/0YDQtdC00LvQvtC20LXQvdC40Y8v0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVQcm9kdWN0JChwcm9kdWN0SWQ6IHN0cmluZywgcGF0Y2g6IE9taXQ8U2NJTmV3T3JkZXJJdGVtQmFzZSwgJ3Byb2R1Y3RJZCc+LCBvZmZlcklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjT3JkZXJEcmFmdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFNjSU9yZGVyRHJhZnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy9vZmZlcnMvJHtvZmZlcklkfS9wcm9kdWN0cy8ke3Byb2R1Y3RJZH1gLCBwYXRjaCkucGlwZShcbiAgICAgICAgICAgIG1hcCgob2ZmZXJEVE8pID0+IG5ldyBTY09yZGVyRHJhZnQob2ZmZXJEVE8pKSxcbiAgICAgICAgICAgIHRhcCgob2ZmZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9mZmVyTWFwLnNldChvZmZlcklkLCBuZXcgU2NDYWNoZWRJdGVtKHRoaXMudXBkYXRlSW50ZXJ2YWwub3JkZXJEYXRhLCBvZihvZmZlciksIGxvYWRpbmdQbGFjZWhvbGRlcikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQv9GA0L7QtNGD0LrRgiDQuNC3INC60L7QvNC80LXRgNGH0LXRgdC60L7Qs9C+INC/0YDQtdC00LvQvtC20LXQvdC40Y8v0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0g0KPQtNCw0LvRj9C10LzQsNGPINC/0L7Qt9C40YbQuNGPLlxuICAgICAqIEBwYXJhbSBvZmZlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvNC80LXRgNGH0LXRgdC60L7Qs9C+INC/0YDQtdC00LvQvtC20LXQvdC40Y8v0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVQcm9kdWN0JChpdGVtOiBTY09yZGVySXRlbSwgb2ZmZXJJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY09yZGVyRHJhZnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8U2NJT3JkZXJEcmFmdD4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL29mZmVycy8ke29mZmVySWR9L3Byb2R1Y3RzLyR7aXRlbS5pZH1gKS5waXBlKFxuICAgICAgICAgICAgbWFwKChvZmZlckRUTykgPT4gbmV3IFNjT3JkZXJEcmFmdChvZmZlckRUTykpLFxuICAgICAgICAgICAgdGFwKChvZmZlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub2ZmZXJNYXAuc2V0KG9mZmVySWQsIG5ldyBTY0NhY2hlZEl0ZW0odGhpcy51cGRhdGVJbnRlcnZhbC5vcmRlckRhdGEsIG9mKG9mZmVyKSwgbG9hZGluZ1BsYWNlaG9sZGVyKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2,16 +2,20 @@
|
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { inject, Injectable } from '@angular/core';
|
|
4
4
|
import { format, parse } from 'date-fns';
|
|
5
|
-
import { filter, map,
|
|
5
|
+
import { filter, map, tap } from 'rxjs';
|
|
6
6
|
import { ScCartService } from '../../cart';
|
|
7
|
+
import { ScCachedItem } from '../../catalog/classes/sc-cached-item';
|
|
7
8
|
import { SC_DATE_FORMAT, SC_UPDATE_INTERVAL, SC_URLS } from '../../tokens';
|
|
8
9
|
import { ScUIService } from '../../ui';
|
|
9
10
|
import { SC_USER_INFO } from '../../user/tokens/sc-user-providers';
|
|
10
11
|
import { ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '../../user-metrika';
|
|
11
|
-
import { ScDeliveryCost
|
|
12
|
+
import { ScDeliveryCost } from '../classes/sc-delivery-cost';
|
|
13
|
+
import { ScOrder } from '../classes/sc-order';
|
|
14
|
+
import { ScOrderShort } from '../classes/sc-order-short';
|
|
15
|
+
import { loadingPlaceholder } from '../tokens/sc-order-loader.token';
|
|
12
16
|
import * as i0 from "@angular/core";
|
|
13
17
|
/**
|
|
14
|
-
*
|
|
18
|
+
* Данные о сервисе заказов.
|
|
15
19
|
*/
|
|
16
20
|
export class ScOrdersService {
|
|
17
21
|
/**
|
|
@@ -49,13 +53,13 @@ export class ScOrdersService {
|
|
|
49
53
|
/**
|
|
50
54
|
* Коллекция пар ключ-значение для заказов пользователя.
|
|
51
55
|
*/
|
|
52
|
-
this.
|
|
56
|
+
this.orderMap = new Map();
|
|
53
57
|
/**
|
|
54
58
|
* Формат дат.
|
|
55
59
|
*/
|
|
56
60
|
this.dateFormats = inject(SC_DATE_FORMAT);
|
|
57
61
|
this.user$.pipe(filter((user) => user.isGuest)).subscribe(() => {
|
|
58
|
-
this.
|
|
62
|
+
this.orderMap.clear();
|
|
59
63
|
});
|
|
60
64
|
}
|
|
61
65
|
/**
|
|
@@ -101,15 +105,6 @@ export class ScOrdersService {
|
|
|
101
105
|
return this.http.get(`${this.urls.apiUrl}/orders`, { params: params }).pipe(map((ordersPaginateDTO) => {
|
|
102
106
|
ordersPaginateDTO.data = ordersPaginateDTO.data.map((item) => new ScOrderShort(item));
|
|
103
107
|
return ordersPaginateDTO;
|
|
104
|
-
}), tap((ordersPaginate) => {
|
|
105
|
-
this.idOrderMap.forEach((order) => {
|
|
106
|
-
if (order.cachedDataIsActual(this.updateInterval.orderData)) {
|
|
107
|
-
const findOrder = ordersPaginate.data.find((item) => item.id === order.id);
|
|
108
|
-
if (findOrder) {
|
|
109
|
-
order.updateDataFromShortOrder(findOrder);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
108
|
}));
|
|
114
109
|
}
|
|
115
110
|
/**
|
|
@@ -118,18 +113,27 @@ export class ScOrdersService {
|
|
|
118
113
|
* @param orderId Идентификатор заказа.
|
|
119
114
|
* @param cacheable Признак возможности получения заказа из кэшированных данных.
|
|
120
115
|
*/
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (
|
|
124
|
-
|
|
116
|
+
get$(orderId, cacheable = true) {
|
|
117
|
+
let cachedItem = this.orderMap.get(orderId);
|
|
118
|
+
if (!cachedItem) {
|
|
119
|
+
cachedItem = new ScCachedItem(this.updateInterval.orderData, this.http.get(`${this.urls.apiUrl}/orders/${orderId}`).pipe(map((data) => new ScOrder(data))), loadingPlaceholder);
|
|
120
|
+
if (cacheable) {
|
|
121
|
+
this.orderMap.set(orderId, cachedItem);
|
|
122
|
+
}
|
|
125
123
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
124
|
+
if (cacheable && !cachedItem.cachedDataIsActual()) {
|
|
125
|
+
cachedItem.update();
|
|
126
|
+
}
|
|
127
|
+
return cachedItem.item$;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Возвращает список элементов заказа.
|
|
131
|
+
*
|
|
132
|
+
* @param id Идентификатор заказа.
|
|
133
|
+
* @param cacheable Признак возможности получения списка элементов заказа из кэшированных данных.
|
|
134
|
+
*/
|
|
135
|
+
getItems$(id, cacheable = true) {
|
|
136
|
+
return this.get$(id, cacheable).pipe(map((order) => (order === loadingPlaceholder ? loadingPlaceholder : order.products)));
|
|
133
137
|
}
|
|
134
138
|
/**
|
|
135
139
|
* Копирует товары заказа в корзину текущего пользователя.
|
|
@@ -142,7 +146,9 @@ export class ScOrdersService {
|
|
|
142
146
|
target: ScUserMetrikaGoalsEnum.orderCloned,
|
|
143
147
|
params: { order_id: orderId },
|
|
144
148
|
});
|
|
145
|
-
}),
|
|
149
|
+
}), tap(() => {
|
|
150
|
+
this.cartService.updateCart();
|
|
151
|
+
}));
|
|
146
152
|
}
|
|
147
153
|
/**
|
|
148
154
|
* Отменяет заказ.
|
|
@@ -157,33 +163,6 @@ export class ScOrdersService {
|
|
|
157
163
|
});
|
|
158
164
|
}));
|
|
159
165
|
}
|
|
160
|
-
/**
|
|
161
|
-
* Создаёт запрос нового заказа из заказа черновика.
|
|
162
|
-
*
|
|
163
|
-
* @param orderId Идентификатор заказа черновика.
|
|
164
|
-
* @param newOrder Данные нового заказа.
|
|
165
|
-
*/
|
|
166
|
-
createOrderByDraft$(orderId, newOrder) {
|
|
167
|
-
return this.http.post(`${this.urls.apiUrl}/orders/${orderId}/draft`, newOrder).pipe(map((orders) => orders.map((item) => new ScOrderShort(item))), tap(() => {
|
|
168
|
-
this.userMetrikaService.emitUserMetrikaEvent({
|
|
169
|
-
target: ScUserMetrikaGoalsEnum.orderCreatedFromDraft,
|
|
170
|
-
params: { order_id: orderId },
|
|
171
|
-
});
|
|
172
|
-
}), tap(() => this.idOrderMap.delete(orderId)));
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Создаёт запрос на удаление заказа черновика.
|
|
176
|
-
*
|
|
177
|
-
* @param orderId Идентификатор заказа черновика.
|
|
178
|
-
*/
|
|
179
|
-
deleteDraftOrder$(orderId) {
|
|
180
|
-
return this.http.delete(`${this.urls.apiUrl}/orders/${orderId}/draft`).pipe(tap(() => {
|
|
181
|
-
this.userMetrikaService.emitUserMetrikaEvent({
|
|
182
|
-
target: ScUserMetrikaGoalsEnum.orderDeleted,
|
|
183
|
-
params: { order_id: orderId, is_draft: true },
|
|
184
|
-
});
|
|
185
|
-
}), tap(() => this.idOrderMap.delete(orderId)));
|
|
186
|
-
}
|
|
187
166
|
/**
|
|
188
167
|
* Возвращает информацию о стоимости доставки.
|
|
189
168
|
*
|
|
@@ -213,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
213
192
|
providedIn: 'root',
|
|
214
193
|
}]
|
|
215
194
|
}], ctorParameters: () => [] });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL3NlcnZpY2VzL3NjLW9yZGVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkUsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUduRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDOztBQUdsRzs7R0FFRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBOEN4Qjs7T0FFRztJQUNIO1FBaERBOztXQUVHO1FBQ2MsU0FBSSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV2RDs7V0FFRztRQUNjLFNBQUksR0FBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQ7O1dBRUc7UUFDYyxVQUFLLEdBQXVCLE1BQU0sQ0FBQyxZ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QUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQzsrR0FyUFEsZUFBZTttSEFBZixlQUFlLGNBRlosTUFBTTs7NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0NhcnQsIFNjQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXJ0JztcbmltcG9ydCB7IFNjSURhdGVGb3JtYXQsIFNjSVVwZGF0ZUludGVydmFsLCBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNjSVBhZ2luYXRlIH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBTQ19EQVRFX0ZPUk1BVCwgU0NfVVBEQVRFX0lOVEVSVkFMLCBTQ19VUkxTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcbmltcG9ydCB7IFNjVUlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWknO1xuaW1wb3J0IHsgU2NVc2VyIH0gZnJvbSAnLi4vLi4vdXNlci9kdG8vc2MtdXNlcic7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYSc7XG5pbXBvcnQgeyBTY0RlbGl2ZXJ5Q29zdCwgU2NJTmV3T3JkZXIsIFNjSU5ld09yZGVyRnJvbURyYWZ0LCBTY09yZGVyLCBTY09yZGVyU2hvcnQgfSBmcm9tICcuLi9kdG8nO1xuaW1wb3J0IHsgU2NJRGVsaXZlcnlDb3N0RFRPLCBTY0lPcmRlckRUTywgU2NJT3JkZXJTaG9ydERUTyB9IGZyb20gJy4uL2ludGVybmFsJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQt9Cw0LrQsNC30LDQvNC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY09yZGVyc1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEhUVFAt0LrQu9C40LXQvdGCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNDX1VTRVJfSU5GTyk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90YLQtdGA0LLQsNC70Ysg0L7QsdC90L7QstC70LXQvdC40Y8g0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlSW50ZXJ2YWw6IFNjSVVwZGF0ZUludGVydmFsID0gaW5qZWN0KFNDX1VQREFURV9JTlRFUlZBTCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0YDQt9C40L3QvtC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IFNjQ2FydFNlcnZpY2UgPSBpbmplY3QoU2NDYXJ0U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVSS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVpU2VydmljZTogU2NVSVNlcnZpY2UgPSBpbmplY3QoU2NVSVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCa0L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LfQsNC60LDQt9C+0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPcmRlck1hcDogTWFwPG51bWJlciwgU2NPcmRlcj4gPSBuZXcgTWFwPG51bWJlciwgU2NPcmRlcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LDRgiDQtNCw0YIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRlRm9ybWF0czogU2NJRGF0ZUZvcm1hdCA9IGluamVjdChTQ19EQVRFX0ZPUk1BVCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjT3JkZXJzU2VydmljZX0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVzZXIkLnBpcGUoZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlzR3Vlc3QpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZE9yZGVyTWFwLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdC+0LLQvtCz0L4g0LfQsNC60LDQt9CwINC/0L4g0YPQutCw0LfQsNC90L3QvtC80YMg0L3QsNC/0YDQsNCy0LvQtdC90LjRjiDQv9GA0L7QtNCw0LYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlyZWN0aW9uSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsNC/0YDQsNCy0LvQtdC90LjRjyDQv9GA0L7QtNCw0LYuXG4gICAgICogQHBhcmFtIG5ld09yZGVyINCU0LDQvdC90YvQtSDQvdC+0LLQvtCz0L4g0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVPcmRlciQoZGlyZWN0aW9uSWQ6IG51bWJlciwgbmV3T3JkZXI6IFNjSU5ld09yZGVyKTogT2JzZXJ2YWJsZTxTY09yZGVyU2hvcnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NJT3JkZXJTaG9ydERUT1tdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtkaXJlY3Rpb25JZH1gLCBuZXdPcmRlcikucGlwZShcbiAgICAgICAgICAgIG1hcCgob3JkZXJzKSA9PiBvcmRlcnMubWFwKChpdGVtKSA9PiBuZXcgU2NPcmRlclNob3J0KGl0ZW0pKSksXG4gICAgICAgICAgICB0YXAoKG9yZGVyczogU2NPcmRlclNob3J0W10pID0+IHtcbiAgICAgICAgICAgICAgICBvcmRlcnMuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyQ3JlYXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvcmRlcl9pZDogb3JkZXIuaWQgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51aVNlcnZpY2UucmVtb3ZlTmV3T3JkZXJNZXRhZGF0YShkaXJlY3Rpb25JZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQtNC+0YHRgtGD0L/QvdGL0YUg0LTQsNGCINC00L7RgdGC0LDQstC60Lgg0LTQu9GPINGD0LrQsNC30LDQvdC90L7Qs9C+INCw0LTRgNC10YHQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZGRyZXNzSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60Lgg0LrQvtC90YLRgNCw0LPQtdC90YLQsCDQutC70LjQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGVsaXZlcmllc0RhdGEkKGFkZHJlc3NJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxzdHJpbmdbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL2RlbGl2ZXJ5LyR7YWRkcmVzc0lkfS9uZWFyZXN0LWRhdGVzYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC00L7RgdGC0YPQv9C90YvRhSDQtNCw0YIg0YHQsNC80L7QstGL0LLQvtC30LAg0LTQu9GPINGD0LrQsNC30LDQvdC90L7Qs9C+INGB0LrQu9Cw0LTQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3YXJlaG91c2VJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdC60LvQsNC00LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFNlbGZEZWxpdmVyaWVzRGF0YSQod2FyZWhvdXNlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8c3RyaW5nW10+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy9zZWxmLWRlbGl2ZXJ5LyR7d2FyZWhvdXNlSWR9L25lYXJlc3QtZGF0ZXNgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0LfQsNC60LDQt9C+0LIg0YEg0L/QsNCz0LjQvdCw0YbQuNC10LkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDQv9C+0LvRg9GH0LXQvdC40Y8g0LfQsNC60LDQt9C+0LIuXG4gICAgICovXG4gICAgcHVibGljIGdldE9yZGVycyQocGFyYW1zOiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY09yZGVyU2hvcnQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSVBhZ2luYXRlPFNjSU9yZGVyU2hvcnREVE8+PihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnNgLCB7IHBhcmFtczogcGFyYW1zIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG9yZGVyc1BhZ2luYXRlRFRPKSA9PiB7XG4gICAgICAgICAgICAgICAgb3JkZXJzUGFnaW5hdGVEVE8uZGF0YSA9IG9yZGVyc1BhZ2luYXRlRFRPLmRhdGEubWFwKChpdGVtKSA9PiBuZXcgU2NPcmRlclNob3J0KGl0ZW0pKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvcmRlcnNQYWdpbmF0ZURUTyBhcyBTY0lQYWdpbmF0ZTxTY09yZGVyU2hvcnQ+O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKG9yZGVyc1BhZ2luYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZE9yZGVyTWFwLmZvckVhY2goKG9yZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmRlci5jYWNoZWREYXRhSXNBY3R1YWwodGhpcy51cGRhdGVJbnRlcnZhbC5vcmRlckRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5kT3JkZXIgPSBvcmRlcnNQYWdpbmF0ZS5kYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG9yZGVyLmlkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRPcmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLnVwZGF0ZURhdGFGcm9tU2hvcnRPcmRlcihmaW5kT3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0L7Qu9C90YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDQt9Cw0LrQsNC30LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3JkZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0LrQsNC30LAuXG4gICAgICogQHBhcmFtIGNhY2hlYWJsZSDQn9GA0LjQt9C90LDQuiDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC/0L7Qu9GD0YfQtdC90LjRjyDQt9Cw0LrQsNC30LAg0LjQtyDQutGN0YjQuNGA0L7QstCw0L3QvdGL0YUg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcmRlciQob3JkZXJJZDogbnVtYmVyLCBjYWNoZWFibGU6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxTY09yZGVyPiB7XG4gICAgICAgIGNvbnN0IG9yZGVyTWFwID0gdGhpcy5pZE9yZGVyTWFwLmdldChvcmRlcklkKTtcblxuICAgICAgICBpZiAoY2FjaGVhYmxlICYmIG9yZGVyTWFwPy5jYWNoZWREYXRhSXNBY3R1YWwodGhpcy51cGRhdGVJbnRlcnZhbC5vcmRlckRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yob3JkZXJNYXApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJT3JkZXJEVE8+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke29yZGVySWR9YCkucGlwZShcbiAgICAgICAgICAgIG1hcCgob3JkZXJEVE8pID0+IG5ldyBTY09yZGVyKG9yZGVyRFRPKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKG9yZGVyKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydENoYW5nZSQoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGNhcnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLnByb2R1Y3RzPy5tYXAoKHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LnByb2R1Y3QuY2FydEl0ZW0gPSBjYXJ0Lml0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0ucHJvZHVjdC5pZCA9PT0gcHJvZHVjdC5wcm9kdWN0LmlkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9kdWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmRlcjtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFwKChvcmRlcikgPT4gdGhpcy5pZE9yZGVyTWFwLnNldChvcmRlci5pZCwgb3JkZXIpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCa0L7Qv9C40YDRg9C10YIg0YLQvtCy0LDRgNGLINC30LDQutCw0LfQsCDQsiDQutC+0YDQt9C40L3RgyDRgtC10LrRg9GJ0LXQs9C+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmRlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvbmUkKG9yZGVySWQ6IG51bWJlcik6IE9ic2VydmFibGU8U2NDYXJ0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtvcmRlcklkfS9jbG9uZWAsIHt9KS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5vcmRlckNsb25lZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IG9yZGVyX2lkOiBvcmRlcklkIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZUNhcnQkKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC80LXQvdGP0LXRgiDQt9Cw0LrQsNC3LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWwkKG9yZGVySWQ6IG51bWJlcik6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtvcmRlcklkfS9jYW5jZWxgLCB7fSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJDYW5jZWxsZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvcmRlcl9pZDogb3JkZXJJZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L3QvtCy0L7Qs9C+INC30LDQutCw0LfQsCDQuNC3INC30LDQutCw0LfQsCDRh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3JkZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0LrQsNC30LAg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqIEBwYXJhbSBuZXdPcmRlciDQlNCw0L3QvdGL0LUg0L3QvtCy0L7Qs9C+INC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlT3JkZXJCeURyYWZ0JChvcmRlcklkOiBudW1iZXIsIG5ld09yZGVyOiBTY0lOZXdPcmRlckZyb21EcmFmdCk6IE9ic2VydmFibGU8U2NPcmRlclNob3J0W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFNjSU9yZGVyU2hvcnREVE9bXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzLyR7b3JkZXJJZH0vZHJhZnRgLCBuZXdPcmRlcikucGlwZShcbiAgICAgICAgICAgIG1hcCgob3JkZXJzKSA9PiBvcmRlcnMubWFwKChpdGVtKSA9PiBuZXcgU2NPcmRlclNob3J0KGl0ZW0pKSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyQ3JlYXRlZEZyb21EcmFmdCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IG9yZGVyX2lkOiBvcmRlcklkIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmlkT3JkZXJNYXAuZGVsZXRlKG9yZGVySWQpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdCwINGD0LTQsNC70LXQvdC40LUg0LfQsNC60LDQt9CwINGH0LXRgNC90L7QstC40LrQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmRlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LDQutCw0LfQsCDRh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZURyYWZ0T3JkZXIkKG9yZGVySWQ6IG51bWJlcik6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzLyR7b3JkZXJJZH0vZHJhZnRgKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5vcmRlckRlbGV0ZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvcmRlcl9pZDogb3JkZXJJZCwgaXNfZHJhZnQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuaWRPcmRlck1hcC5kZWxldGUob3JkZXJJZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LjQvdGE0L7RgNC80LDRhtC40Y4g0L4g0YHRgtC+0LjQvNC+0YHRgtC4INC00L7RgdGC0LDQstC60LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzc0lkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4INC60L7QvdGC0YDQsNCz0LXQvdGC0LAg0LrQu9C40LXQvdGC0LAuXG4gICAgICogQHBhcmFtIHdhcmVob3VzZUlkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0LrQu9Cw0LTQsC5cbiAgICAgKiBAcGFyYW0gZGF0ZSDQlNCw0YLQsCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREZWxpdmVyeUNvc3QkKGFkZHJlc3NJZDogbnVtYmVyLCB3YXJlaG91c2VJZDogbnVtYmVyLCBkYXRlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjRGVsaXZlcnlDb3N0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8U2NJRGVsaXZlcnlDb3N0RFRPPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvZGVsaXZlcnkvJHthZGRyZXNzSWR9L2Nvc3RgLCB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHdhcmVob3VzZV9pZDogd2FyZWhvdXNlSWQsXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IGRhdGUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKG9yZGVyc1BhZ2luYXRlRFRPKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBmb3JtYXQocGFyc2UoZGF0ZSwgdGhpcy5kYXRlRm9ybWF0cy5hcGksIG5ldyBEYXRlKCkpLCB0aGlzLmRhdGVGb3JtYXRzLnVpRGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTY0RlbGl2ZXJ5Q29zdChvcmRlcnNQYWdpbmF0ZURUTywgZm9ybWF0dGVkRGF0ZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL3NlcnZpY2VzL3NjLW9yZGVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBa0IsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFFckY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQThDeEI7O09BRUc7SUFDSDtRQWhEQTs7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QyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFdBQW1CLEVBQUUsSUFBWTtRQUN4RSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxvQkFBb0IsU0FBUyxPQUFPLEVBQUU7WUFDOUUsTUFBTSxFQUFFO2dCQUNKLFlBQVksRUFBRSxXQUFXO2dCQUN6QixJQUFJLEVBQUUsSUFBSTthQUNiO1NBQ0osQ0FBQzthQUNELElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXJHLE9BQU8sSUFBSSxjQUFjLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7K0dBOU1RLGVBQWU7bUhBQWYsZUFBZSxjQUZaLE1BQU07OzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ybWF0LCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2NhcnQnO1xuaW1wb3J0IHsgU2NDYWNoZWRJdGVtIH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9jbGFzc2VzL3NjLWNhY2hlZC1pdGVtJztcbmltcG9ydCB7IFNjSURhdGVGb3JtYXQsIFNjSVVwZGF0ZUludGVydmFsLCBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNjSVBhZ2luYXRlIH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBTQ19EQVRFX0ZPUk1BVCwgU0NfVVBEQVRFX0lOVEVSVkFMLCBTQ19VUkxTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcbmltcG9ydCB7IFNjVUlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWknO1xuaW1wb3J0IHsgU2NVc2VyIH0gZnJvbSAnLi4vLi4vdXNlci9kdG8vc2MtdXNlcic7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYSc7XG5pbXBvcnQgeyBTY0RlbGl2ZXJ5Q29zdCB9IGZyb20gJy4uL2NsYXNzZXMvc2MtZGVsaXZlcnktY29zdCc7XG5pbXBvcnQgeyBTY09yZGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9zYy1vcmRlcic7XG5pbXBvcnQgeyBTY09yZGVySXRlbSB9IGZyb20gJy4uL2NsYXNzZXMvc2Mtb3JkZXItaXRlbSc7XG5pbXBvcnQgeyBTY09yZGVyU2hvcnQgfSBmcm9tICcuLi9jbGFzc2VzL3NjLW9yZGVyLXNob3J0JztcbmltcG9ydCB7IFNjSURlbGl2ZXJ5Q29zdERUTywgU2NJTmV3T3JkZXIsIFNjSU9yZGVyLCBTY0lPcmRlclNob3J0IH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgU2NJT3JkZXJMb2FkZXIgfSBmcm9tICcuLi9pbnRlcm5hbC9zYy1pLW9yZGVyLWxvYWRlcic7XG5pbXBvcnQgeyBsb2FkaW5nUGxhY2Vob2xkZXIsIFNjT3JkZXJMb2FkaW5nIH0gZnJvbSAnLi4vdG9rZW5zL3NjLW9yZGVyLWxvYWRlci50b2tlbic7XG5cbi8qKlxuICog0JTQsNC90L3Ri9C1INC+INGB0LXRgNCy0LjRgdC1INC30LDQutCw0LfQvtCyLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY09yZGVyc1NlcnZpY2UgaW1wbGVtZW50cyBTY0lPcmRlckxvYWRlcjxTY09yZGVySXRlbSwgU2NPcmRlcj4ge1xuICAgIC8qKlxuICAgICAqIEhUVFAt0LrQu9C40LXQvdGCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNDX1VTRVJfSU5GTyk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90YLQtdGA0LLQsNC70Ysg0L7QsdC90L7QstC70LXQvdC40Y8g0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlSW50ZXJ2YWw6IFNjSVVwZGF0ZUludGVydmFsID0gaW5qZWN0KFNDX1VQREFURV9JTlRFUlZBTCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0YDQt9C40L3QvtC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IFNjQ2FydFNlcnZpY2UgPSBpbmplY3QoU2NDYXJ0U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVSS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVpU2VydmljZTogU2NVSVNlcnZpY2UgPSBpbmplY3QoU2NVSVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCa0L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LfQsNC60LDQt9C+0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY09yZGVyLCBTY09yZGVyTG9hZGluZz4+ID0gbmV3IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY09yZGVyLCBTY09yZGVyTG9hZGluZz4+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQpNC+0YDQvNCw0YIg0LTQsNGCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0ZUZvcm1hdHM6IFNjSURhdGVGb3JtYXQgPSBpbmplY3QoU0NfREFURV9GT1JNQVQpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY09yZGVyc1NlcnZpY2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51c2VyJC5waXBlKGZpbHRlcigodXNlcikgPT4gdXNlci5pc0d1ZXN0KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3JkZXJNYXAuY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC90L7QstC+0LPQviDQt9Cw0LrQsNC30LAg0L/QviDRg9C60LDQt9Cw0L3QvdC+0LzRgyDQvdCw0L/RgNCw0LLQu9C10L3QuNGOINC/0YDQvtC00LDQti5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXJlY3Rpb25JZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCw0L/RgNCw0LLQu9C10L3QuNGPINC/0YDQvtC00LDQti5cbiAgICAgKiBAcGFyYW0gbmV3T3JkZXIg0JTQsNC90L3Ri9C1INC90L7QstC+0LPQviDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZU9yZGVyJChkaXJlY3Rpb25JZDogbnVtYmVyLCBuZXdPcmRlcjogU2NJTmV3T3JkZXIpOiBPYnNlcnZhYmxlPFNjT3JkZXJTaG9ydFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTY0lPcmRlclNob3J0W10+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke2RpcmVjdGlvbklkfWAsIG5ld09yZGVyKS5waXBlKFxuICAgICAgICAgICAgbWFwKChvcmRlcnMpID0+IG9yZGVycy5tYXAoKGl0ZW0pID0+IG5ldyBTY09yZGVyU2hvcnQoaXRlbSkpKSxcbiAgICAgICAgICAgIHRhcCgob3JkZXJzOiBTY09yZGVyU2hvcnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgIG9yZGVycy5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJDcmVhdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IG9yZGVyX2lkOiBvcmRlci5pZCB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVpU2VydmljZS5yZW1vdmVOZXdPcmRlck1ldGFkYXRhKGRpcmVjdGlvbklkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC00L7RgdGC0YPQv9C90YvRhSDQtNCw0YIg0LTQvtGB0YLQsNCy0LrQuCDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtCz0L4g0LDQtNGA0LXRgdCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFkZHJlc3NJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuCDQutC+0L3RgtGA0LDQs9C10L3RgtCwINC60LvQuNC10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREZWxpdmVyaWVzRGF0YSQoYWRkcmVzc0lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHN0cmluZ1tdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvZGVsaXZlcnkvJHthZGRyZXNzSWR9L25lYXJlc3QtZGF0ZXNgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0LTQvtGB0YLRg9C/0L3Ri9GFINC00LDRgiDRgdCw0LzQvtCy0YvQstC+0LfQsCDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtCz0L4g0YHQutC70LDQtNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHdhcmVob3VzZUlkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0LrQu9Cw0LTQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VsZkRlbGl2ZXJpZXNEYXRhJCh3YXJlaG91c2VJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxzdHJpbmdbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL3NlbGYtZGVsaXZlcnkvJHt3YXJlaG91c2VJZH0vbmVhcmVzdC1kYXRlc2ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQt9Cw0LrQsNC30L7QsiDRgSDQv9Cw0LPQuNC90LDRhtC40LXQuS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC30LDQv9GA0L7RgdCwINC/0L7Qu9GD0YfQtdC90LjRjyDQt9Cw0LrQsNC30L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T3JkZXJzJChwYXJhbXM6IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFNjSVBhZ2luYXRlPFNjT3JkZXJTaG9ydD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJUGFnaW5hdGU8U2NJT3JkZXJTaG9ydD4+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVyc2AsIHsgcGFyYW1zOiBwYXJhbXMgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgob3JkZXJzUGFnaW5hdGVEVE8pID0+IHtcbiAgICAgICAgICAgICAgICBvcmRlcnNQYWdpbmF0ZURUTy5kYXRhID0gb3JkZXJzUGFnaW5hdGVEVE8uZGF0YS5tYXAoKGl0ZW0pID0+IG5ldyBTY09yZGVyU2hvcnQoaXRlbSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyc1BhZ2luYXRlRFRPIGFzIFNjSVBhZ2luYXRlPFNjT3JkZXJTaG9ydD47XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0L7Qu9C90YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDQt9Cw0LrQsNC30LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3JkZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0LrQsNC30LAuXG4gICAgICogQHBhcmFtIGNhY2hlYWJsZSDQn9GA0LjQt9C90LDQuiDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC/0L7Qu9GD0YfQtdC90LjRjyDQt9Cw0LrQsNC30LAg0LjQtyDQutGN0YjQuNGA0L7QstCw0L3QvdGL0YUg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQkKG9yZGVySWQ6IG51bWJlciwgY2FjaGVhYmxlOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8U2NPcmRlciB8IFNjT3JkZXJMb2FkaW5nPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5vcmRlck1hcC5nZXQob3JkZXJJZCk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbShcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUludGVydmFsLm9yZGVyRGF0YSxcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHAuZ2V0PFNjSU9yZGVyPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtvcmRlcklkfWApLnBpcGUobWFwKChkYXRhKSA9PiBuZXcgU2NPcmRlcihkYXRhKSkpLFxuICAgICAgICAgICAgICAgIGxvYWRpbmdQbGFjZWhvbGRlclxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNhY2hlYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJNYXAuc2V0KG9yZGVySWQsIGNhY2hlZEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhY2hlYWJsZSAmJiAhY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRjdC70LXQvNC10L3RgtC+0LIg0LfQsNC60LDQt9CwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGlkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LDQutCw0LfQsC5cbiAgICAgKiBAcGFyYW0gY2FjaGVhYmxlINCf0YDQuNC30L3QsNC6INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LfQsNC60LDQt9CwINC40Lcg0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9GFINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SXRlbXMkKGlkOiBudW1iZXIsIGNhY2hlYWJsZTogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPFNjT3JkZXJJdGVtW10gfCBTY09yZGVyTG9hZGluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQkKGlkLCBjYWNoZWFibGUpLnBpcGUobWFwKChvcmRlcikgPT4gKG9yZGVyID09PSBsb2FkaW5nUGxhY2Vob2xkZXIgPyBsb2FkaW5nUGxhY2Vob2xkZXIgOiAob3JkZXIgYXMgU2NPcmRlcikucHJvZHVjdHMpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JrQvtC/0LjRgNGD0LXRgiDRgtC+0LLQsNGA0Ysg0LfQsNC60LDQt9CwINCyINC60L7RgNC30LjQvdGDINGC0LXQutGD0YnQtdCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9uZSQob3JkZXJJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke29yZGVySWR9L2Nsb25lYCwge30pLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyQ2xvbmVkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgb3JkZXJfaWQ6IG9yZGVySWQgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZUNhcnQoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC80LXQvdGP0LXRgiDQt9Cw0LrQsNC3LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWwkKG9yZGVySWQ6IG51bWJlcik6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtvcmRlcklkfS9jYW5jZWxgLCB7fSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJDYW5jZWxsZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvcmRlcl9pZDogb3JkZXJJZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDRgdGC0L7QuNC80L7RgdGC0Lgg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZGRyZXNzSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60Lgg0LrQvtC90YLRgNCw0LPQtdC90YLQsCDQutC70LjQtdC90YLQsC5cbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YHQutC70LDQtNCwLlxuICAgICAqIEBwYXJhbSBkYXRlINCU0LDRgtCwINC00L7RgdGC0LDQstC60LguXG4gICAgICovXG4gICAgcHVibGljIGdldERlbGl2ZXJ5Q29zdCQoYWRkcmVzc0lkOiBudW1iZXIsIHdhcmVob3VzZUlkOiBudW1iZXIsIGRhdGU6IHN0cmluZyk6IE9ic2VydmFibGU8U2NEZWxpdmVyeUNvc3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxTY0lEZWxpdmVyeUNvc3REVE8+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy9kZWxpdmVyeS8ke2FkZHJlc3NJZH0vY29zdGAsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgd2FyZWhvdXNlX2lkOiB3YXJlaG91c2VJZCxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgob3JkZXJzUGFnaW5hdGVEVE8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGZvcm1hdChwYXJzZShkYXRlLCB0aGlzLmRhdGVGb3JtYXRzLmFwaSwgbmV3IERhdGUoKSksIHRoaXMuZGF0ZUZvcm1hdHMudWlEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNjRGVsaXZlcnlDb3N0KG9yZGVyc1BhZ2luYXRlRFRPLCBmb3JtYXR0ZWREYXRlKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './sc-order-loader.token';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYy1vcmRlci1sb2FkZXIudG9rZW4nO1xuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { isNil } from 'lodash-es';
|
|
3
|
+
/**
|
|
4
|
+
* Плейсхолдер загрузки данных заказа (корзины / черновика).
|
|
5
|
+
*/
|
|
6
|
+
export const loadingPlaceholder = {};
|
|
7
|
+
/**
|
|
8
|
+
* Проверяет, что объект заказа (корзины / черновика) загружен, а не является плейсхолдером загрузки.
|
|
9
|
+
*
|
|
10
|
+
* @param value Значение (загруженные данные или плейсхолдер загрузки).
|
|
11
|
+
*/
|
|
12
|
+
export function scOrderIsLoaded(value) {
|
|
13
|
+
return !isNil(value) && value !== loadingPlaceholder;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Токен инъекции сервиса списка товаров заказа.
|
|
17
|
+
* Предоставляется в корне компонента корзины, заказа или черновика — в зависимости от контекста
|
|
18
|
+
* внедряется соответствующая реализация (корзина, заказ, черновик = заказ).
|
|
19
|
+
*/
|
|
20
|
+
export const SC_ORDER_LOADER = new InjectionToken('ScOrderLoader (order / cart / draft)');
|
|
21
|
+
/**
|
|
22
|
+
* Плейсхолдер загрузки данных заказа (корзины / черновика).
|
|
23
|
+
*/
|
|
24
|
+
export const SC_ORDER_LOADING = new InjectionToken('ScOrderLoading', { factory: () => loadingPlaceholder });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXItbG9hZGVyLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9vcmRlci90b2tlbnMvc2Mtb3JkZXItbG9hZGVyLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUlsQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQU9yQzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBSSxLQUFpQztJQUNoRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxrQkFBa0IsQ0FBQztBQUN6RCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsc0NBQXNDLENBQUMsQ0FBQztBQUUxRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFpQixnQkFBZ0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBTY0lPcmRlckxvYWRlciB9IGZyb20gJy4uL2ludGVybmFsL3NjLWktb3JkZXItbG9hZGVyJztcblxuLyoqXG4gKiDQn9C70LXQudGB0YXQvtC70LTQtdGAINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINC30LDQutCw0LfQsCAo0LrQvtGA0LfQuNC90YsgLyDRh9C10YDQvdC+0LLQuNC60LApLlxuICovXG5leHBvcnQgY29uc3QgbG9hZGluZ1BsYWNlaG9sZGVyID0ge307XG5cbi8qKlxuICog0KLQuNC/INC/0LvQtdC50YHRhdC+0LvQtNC10YDQsCDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQt9Cw0LrQsNC30LAgKNC60L7RgNC30LjQvdGLIC8g0YfQtdGA0L3QvtCy0LjQutCwKS5cbiAqL1xuZXhwb3J0IHR5cGUgU2NPcmRlckxvYWRpbmcgPSB0eXBlb2YgbG9hZGluZ1BsYWNlaG9sZGVyO1xuXG4vKipcbiAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0YfRgtC+INC+0LHRitC10LrRgiDQt9Cw0LrQsNC30LAgKNC60L7RgNC30LjQvdGLIC8g0YfQtdGA0L3QvtCy0LjQutCwKSDQt9Cw0LPRgNGD0LbQtdC9LCDQsCDQvdC1INGP0LLQu9GP0LXRgtGB0Y8g0L/Qu9C10LnRgdGF0L7Qu9C00LXRgNC+0Lwg0LfQsNCz0YDRg9C30LrQuC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUg0JfQvdCw0YfQtdC90LjQtSAo0LfQsNCz0YDRg9C20LXQvdC90YvQtSDQtNCw0L3QvdGL0LUg0LjQu9C4INC/0LvQtdC50YHRhdC+0LvQtNC10YAg0LfQsNCz0YDRg9C30LrQuCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY09yZGVySXNMb2FkZWQ8VD4odmFsdWU/OiBUIHwgU2NPcmRlckxvYWRpbmcgfCBudWxsKTogdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuICFpc05pbCh2YWx1ZSkgJiYgdmFsdWUgIT09IGxvYWRpbmdQbGFjZWhvbGRlcjtcbn1cblxuLyoqXG4gKiDQotC+0LrQtdC9INC40L3RitC10LrRhtC40Lgg0YHQtdGA0LLQuNGB0LAg0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyINC30LDQutCw0LfQsC5cbiAqINCf0YDQtdC00L7RgdGC0LDQstC70Y/QtdGC0YHRjyDQsiDQutC+0YDQvdC1INC60L7QvNC/0L7QvdC10L3RgtCwINC60L7RgNC30LjQvdGLLCDQt9Cw0LrQsNC30LAg0LjQu9C4INGH0LXRgNC90L7QstC40LrQsCDigJQg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60L7QvdGC0LXQutGB0YLQsFxuICog0LLQvdC10LTRgNGP0LXRgtGB0Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQsNGPINGA0LXQsNC70LjQt9Cw0YbQuNGPICjQutC+0YDQt9C40L3QsCwg0LfQsNC60LDQtywg0YfQtdGA0L3QvtCy0LjQuiA9INC30LDQutCw0LcpLlxuICovXG5leHBvcnQgY29uc3QgU0NfT1JERVJfTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPFNjSU9yZGVyTG9hZGVyPignU2NPcmRlckxvYWRlciAob3JkZXIgLyBjYXJ0IC8gZHJhZnQpJyk7XG5cbi8qKlxuICog0J/Qu9C10LnRgdGF0L7Qu9C00LXRgCDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQt9Cw0LrQsNC30LAgKNC60L7RgNC30LjQvdGLIC8g0YfQtdGA0L3QvtCy0LjQutCwKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX09SREVSX0xPQURJTkcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2NPcmRlckxvYWRpbmc+KCdTY09yZGVyTG9hZGluZycsIHsgZmFjdG9yeTogKCkgPT4gbG9hZGluZ1BsYWNlaG9sZGVyIH0pO1xuIl19
|
|
@@ -2,4 +2,6 @@ export * from './sc-i-paginate';
|
|
|
2
2
|
export * from './sc-i-pagination-links';
|
|
3
3
|
export * from './sc-i-pagination-meta';
|
|
4
4
|
export * from './sc-i-pagination-params';
|
|
5
|
-
|
|
5
|
+
export * from './sc-i-range-filter';
|
|
6
|
+
export * from './sc-i-sort-order';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3BhZ2luYXRpb24vZHRvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYy1pLXBhZ2luYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1wYWdpbmF0aW9uLWxpbmtzJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1wYWdpbmF0aW9uLW1ldGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLXBhZ2luYXRpb24tcGFyYW1zJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1yYW5nZS1maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLXNvcnQtb3JkZXInO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1yYW5nZS1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3BhZ2luYXRpb24vZHRvL3NjLWktcmFuZ2UtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCY0L3RgtC10YDRhNC10LnRgSDQtNC70Y8g0YTQuNC70YzRgtGA0LDRhtC40Lgg0L/QviDQtNC40LDQv9Cw0LfQvtC90YMg0LfQvdCw0YfQtdC90LjQuS5cbiAqXG4gKiBAdGVtcGxhdGUgVCDQotC40L8g0LfQvdCw0YfQtdC90LjQuSDQtNC40LDQv9Cw0LfQvtC90LAgKHN0cmluZywgbnVtYmVyINC4INGCLtC0LikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJUmFuZ2VGaWx0ZXI8VCA9IHN0cmluZyB8IG51bWJlcj4ge1xuICAgIC8qKlxuICAgICAqINCd0LDRh9Cw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INC00LjQsNC/0LDQt9C+0L3QsCAo0LHQvtC70YzRiNC1INC40LvQuCDRgNCw0LLQvdC+KS5cbiAgICAgKi9cbiAgICBmcm9tPzogVDtcblxuICAgIC8qKlxuICAgICAqINCa0L7QvdC10YfQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQtNC40LDQv9Cw0LfQvtC90LAgKNC80LXQvdGM0YjQtSDQuNC70Lgg0YDQsNCy0L3QvikuXG4gICAgICovXG4gICAgdG8/OiBUO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zb3J0LW9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wYWdpbmF0aW9uL2R0by9zYy1pLXNvcnQtb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JjQvdGC0LXRgNGE0LXQudGBINC/0LDRgNCw0LzQtdGC0YDQvtCyINGB0L7RgNGC0LjRgNC+0LLQutC4LlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGQg0KLQuNC/INC/0L7Qu9GPINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lTb3J0T3JkZXI8VEZpZWxkID0gc3RyaW5nPiB7XG4gICAgLyoqXG4gICAgICog0J/QvtC70LUg0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4LlxuICAgICAqL1xuICAgIGZpZWxkOiBURmllbGQ7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0L/RgNCw0LLQu9C10L3QuNC1INGB0L7RgNGC0LjRgNC+0LLQutC4LlxuICAgICAqL1xuICAgIGRpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1wYWdpbmF0aW9uLXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvcmVjbGFtYXRpb24vaW50ZXJmYWNlcy9zYy1pLXBhZ2luYXRpb24tcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY0lQYWdpbmF0aW9uUGFyYW1zLCBTY0lSYW5nZUZpbHRlciwgU2NJU29ydE9yZGVyIH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbic7XG5cbi8qKlxuICog0JzQvtC00LXQu9GMINC00LDQvdC90YvRhSDQv9Cw0YDQsNC80LXRgtGA0L7QsiDQt9Cw0L/RgNC+0YHQsCDRgSDQv9Cw0LPQuNC90LDRhtC40LXQuSDQtNC70Y8g0YDQtdC60LvQsNC80LDRhtC40LkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJUmVjbGFtYXRpb25QYWdpbmF0aW9uUGFyYW1zIGV4dGVuZHMgU2NJUGFnaW5hdGlvblBhcmFtcyB7XG4gICAgLyoqXG4gICAgICog0J/QsNGA0LDQvNC10YLRgNGLINGB0L7RgNGC0LjRgNC+0LLQutC4LlxuICAgICAqL1xuICAgIG9yZGVyPzogU2NJU29ydE9yZGVyO1xuXG4gICAgLyoqXG4gICAgICog0J/QsNGA0LDQvNC10YLRgNGLINGE0LjQu9GM0YLRgNCw0YbQuNC4LlxuICAgICAqL1xuICAgIGZpbHRlcnM/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQodC+0YDRgtC40YDQvtCy0LrQsCDQv9C+INC00LDRgtC1INGB0L7Qt9C00LDQvdC40Y8uXG4gICAgICAgICAqL1xuICAgICAgICBjcmVhdGVkPzogU2NJUmFuZ2VGaWx0ZXI8c3RyaW5nPjtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0KHRgtCw0YLRg9GBINGA0LXQutC70LDQvNCw0YbQuNC4LlxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdHVzZXM/OiBudW1iZXI7XG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -5,10 +5,6 @@
|
|
|
5
5
|
// eslint-disable-next-line no-shadow
|
|
6
6
|
export var ScOrderStateStatus;
|
|
7
7
|
(function (ScOrderStateStatus) {
|
|
8
|
-
/**
|
|
9
|
-
* Черновик.
|
|
10
|
-
*/
|
|
11
|
-
ScOrderStateStatus[ScOrderStateStatus["draft"] = 0] = "draft";
|
|
12
8
|
/**
|
|
13
9
|
* Принято в обработку.
|
|
14
10
|
*/
|
|
@@ -34,4 +30,4 @@ export var ScOrderStateStatus;
|
|
|
34
30
|
*/
|
|
35
31
|
ScOrderStateStatus[ScOrderStateStatus["deleted"] = 6] = "deleted";
|
|
36
32
|
})(ScOrderStateStatus || (ScOrderStateStatus = {}));
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXItc3RhdGUtc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9yZWZlcmVuY2VzL2VudW1zL3NjLW9yZGVyLXN0YXRlLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7O0dBR0c7QUFDSCxxQ0FBcUM7QUFDckMsTUFBTSxDQUFOLElBQVksa0JBOEJYO0FBOUJELFdBQVksa0JBQWtCO0lBQzFCOztPQUVHO0lBQ0gseURBQU8sQ0FBQTtJQUVQOztPQUVHO0lBQ0gsdUVBQWMsQ0FBQTtJQUVkOztPQUVHO0lBQ0gsaUVBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gscUVBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsbUVBQVksQ0FBQTtJQUVaOztPQUVHO0lBQ0gsaUVBQVcsQ0FBQTtBQUNmLENBQUMsRUE5Qlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQThCN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBTY1JlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2MtcmVmZXJlbmNlcy5zZXJ2aWNlJztcblxuLyoqXG4gKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YHRgtCw0YLRg9GB0L7QsiDQt9Cw0LrQsNC30LAuXG4gKiDQmtC70Y7Rh9Cw0LzQuCDRj9Cy0LvRj9GO0YLRgdGPINGB0LjQvNCy0L7Qu9GM0L3Ri9C1INC+0LHQvtC30L3QsNGH0LXQvdC40Y8gKHNsdWcpINGB0YLQsNGC0YPRgdC+0LIg0LfQsNC60LDQt9CwLCDQuNC3INC30LDQv9GA0L7RgdCwIHtAbGluayBTY1JlZmVyZW5jZXNTZXJ2aWNlLnN0YXR1c2VzfVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG5leHBvcnQgZW51bSBTY09yZGVyU3RhdGVTdGF0dXMge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC90Y/RgtC+INCyINC+0LHRgNCw0LHQvtGC0LrRgy5cbiAgICAgKi9cbiAgICBuZXcgPSAxLFxuXG4gICAgLyoqXG4gICAgICog0JIg0L7QsdGA0LDQsdC+0YLQutC1LlxuICAgICAqL1xuICAgIHdvcmtlZF9vdXQgPSAyLFxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdCw0YLRi9Cy0LDQtdGC0YHRjy5cbiAgICAgKi9cbiAgICBwZW5kaW5nID0gMyxcblxuICAgIC8qKlxuICAgICAqINCe0YLQv9GA0LDQstC70LXQvdC+INC60LvQuNC10L3RgtGDLlxuICAgICAqL1xuICAgIGNvbXBsZXRlZCA9IDQsXG5cbiAgICAvKipcbiAgICAgKiDQntGC0LzQtdC90ZHQvS5cbiAgICAgKi9cbiAgICBkZWNsaW5lZCA9IDUsXG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GR0L0uXG4gICAgICovXG4gICAgZGVsZXRlZCA9IDYsXG59XG4iXX0=
|