@infrab4a/connect-angular 4.0.0-beta.28 → 4.0.0-beta.3
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/angular-connect.module.d.ts +0 -1
- package/angular-firestore.module.d.ts +1 -2
- package/consts/index.d.ts +0 -1
- package/esm2020/angular-connect.module.mjs +3 -6
- package/esm2020/angular-elastic-search.module.mjs +7 -3
- package/esm2020/angular-firestore.module.mjs +137 -226
- package/esm2020/angular-hasura-graphql.module.mjs +24 -105
- package/esm2020/consts/index.mjs +1 -2
- package/esm2020/index.mjs +3 -4
- package/esm2020/services/auth.service.mjs +3 -3
- package/esm2020/services/cart.service.mjs +23 -161
- package/esm2020/services/checkout-subscription.service.mjs +3 -5
- package/esm2020/services/checkout.service.mjs +2 -2
- package/esm2020/services/coupon.service.mjs +37 -21
- package/esm2020/services/index.mjs +3 -4
- package/fesm2015/infrab4a-connect-angular.mjs +884 -1307
- package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
- package/fesm2020/infrab4a-connect-angular.mjs +880 -1315
- package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
- package/index.d.ts +2 -3
- package/package.json +3 -2
- package/services/cart.service.d.ts +2 -9
- package/services/coupon.service.d.ts +3 -2
- package/services/index.d.ts +2 -3
- package/catalog/catalog.service.d.ts +0 -16
- package/catalog/category.service.d.ts +0 -6
- package/catalog/enums/index.d.ts +0 -1
- package/catalog/enums/product-sorts.enum.d.ts +0 -8
- package/catalog/index.d.ts +0 -5
- package/catalog/models/category-with-tree.model.d.ts +0 -4
- package/catalog/models/index.d.ts +0 -1
- package/catalog/types/index.d.ts +0 -1
- package/catalog/types/product-sort.type.d.ts +0 -2
- package/consts/backend-url.const.d.ts +0 -1
- package/esm2020/catalog/catalog.service.mjs +0 -26
- package/esm2020/catalog/category.service.mjs +0 -9
- package/esm2020/catalog/enums/index.mjs +0 -2
- package/esm2020/catalog/enums/product-sorts.enum.mjs +0 -10
- package/esm2020/catalog/index.mjs +0 -6
- package/esm2020/catalog/models/category-with-tree.model.mjs +0 -10
- package/esm2020/catalog/models/index.mjs +0 -2
- package/esm2020/catalog/types/index.mjs +0 -2
- package/esm2020/catalog/types/product-sort.type.mjs +0 -2
- package/esm2020/consts/backend-url.const.mjs +0 -2
- package/esm2020/services/shipping.service.mjs +0 -96
- package/esm2020/services/types/shipping-methods.type.mjs +0 -2
- package/services/shipping.service.d.ts +0 -19
- package/services/types/shipping-methods.type.d.ts +0 -12
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { CheckoutTypes, CouponTypes, Exclusivities, Shops, Where, } from '@infrab4a/connect';
|
|
2
|
+
import { CheckoutTypes, CouponTypes, Exclusivities, Shops, Status, Where, } from '@infrab4a/connect';
|
|
3
3
|
import { from, of, throwError } from 'rxjs';
|
|
4
4
|
import { concatMap, map } from 'rxjs/operators';
|
|
5
5
|
import { DEFAULT_SHOP } from '../consts';
|
|
@@ -7,10 +7,11 @@ import { InvalidCouponError } from './errors';
|
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@infrab4a/connect";
|
|
9
9
|
export class CouponService {
|
|
10
|
-
constructor(couponRepository, defaultShop, orderRepository, categoryRepository) {
|
|
10
|
+
constructor(couponRepository, defaultShop, orderRepository, subscriptionRepository, categoryRepository) {
|
|
11
11
|
this.couponRepository = couponRepository;
|
|
12
12
|
this.defaultShop = defaultShop;
|
|
13
13
|
this.orderRepository = orderRepository;
|
|
14
|
+
this.subscriptionRepository = subscriptionRepository;
|
|
14
15
|
this.categoryRepository = categoryRepository;
|
|
15
16
|
this.emailIsFromCollaborator = (userEmail) => !!userEmail?.match(/@b4a.com.br/g);
|
|
16
17
|
}
|
|
@@ -51,7 +52,7 @@ export class CouponService {
|
|
|
51
52
|
const hasMinSubTotal = this.hasMinSubTotal(coupon, checkout);
|
|
52
53
|
// Se não tem valor mínimo atingido, retorna erro
|
|
53
54
|
if (!hasMinSubTotal)
|
|
54
|
-
return throwError(
|
|
55
|
+
return throwError('Valor mínimo não atingido');
|
|
55
56
|
return of(coupon);
|
|
56
57
|
}
|
|
57
58
|
isValidCoupon(coupon, userEmail) {
|
|
@@ -68,7 +69,6 @@ export class CouponService {
|
|
|
68
69
|
filters: {
|
|
69
70
|
coupon: { id: coupon.id },
|
|
70
71
|
payment: { status: 'paid' },
|
|
71
|
-
...(coupon.influencerEmail ? { user: { email: userEmail } } : {}),
|
|
72
72
|
},
|
|
73
73
|
});
|
|
74
74
|
// orders que usuario ja fez com o cupom
|
|
@@ -79,7 +79,7 @@ export class CouponService {
|
|
|
79
79
|
// Verifica o limite de uso geral por usuario
|
|
80
80
|
if (coupon.useLimit && orders.data.length >= coupon.useLimit)
|
|
81
81
|
throw new InvalidCouponError('Limite de uso atingido.');
|
|
82
|
-
const validUser = this.userValidationAndSubscriptionStatus(coupon,
|
|
82
|
+
const validUser = await this.userValidationAndSubscriptionStatus(coupon, userEmail);
|
|
83
83
|
if (!validUser)
|
|
84
84
|
throw new InvalidCouponError('Usuário não elegível.');
|
|
85
85
|
const hasProductCategories = await this.hasProductCategories(coupon, checkout);
|
|
@@ -155,24 +155,37 @@ export class CouponService {
|
|
|
155
155
|
});
|
|
156
156
|
return hasCategories.length ? true : false;
|
|
157
157
|
}
|
|
158
|
-
userValidationAndSubscriptionStatus(coupon,
|
|
159
|
-
if (coupon.exclusivityType === Exclusivities.ALL_USERS)
|
|
160
|
-
return true;
|
|
161
|
-
if (!user)
|
|
162
|
-
return true;
|
|
158
|
+
async userValidationAndSubscriptionStatus(coupon, userEmail) {
|
|
163
159
|
// Verifica se o email do usuário é coorporativo
|
|
164
|
-
if (!this.emailIsFromCollaborator(
|
|
160
|
+
if (!this.emailIsFromCollaborator(userEmail) && coupon.exclusivityType === Exclusivities.COLLABORATORS)
|
|
165
161
|
throw new InvalidCouponError('Você não é colaborador.');
|
|
166
162
|
// Verifica se o email do usuário é associado ao cupom de uso por usuario
|
|
167
|
-
if (coupon.exclusivityType === Exclusivities.SPECIFIC_USER && coupon.userExclusiveEmail !==
|
|
163
|
+
if (coupon.exclusivityType === Exclusivities.SPECIFIC_USER && coupon.userExclusiveEmail !== userEmail)
|
|
168
164
|
throw new InvalidCouponError('Cupom não é válido para este usuário.');
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
165
|
+
const couponRuleSubscription = coupon.exclusivityType === Exclusivities.ACTIVE_SUBSCRIBER ||
|
|
166
|
+
coupon.exclusivityType === Exclusivities.INACTIVE_SUBSCRIBER ||
|
|
167
|
+
coupon.exclusivityType === Exclusivities.NON_SUBSCRIBER;
|
|
168
|
+
if (couponRuleSubscription && userEmail) {
|
|
169
|
+
const sub = await this.subscriptionRepository
|
|
170
|
+
.find({
|
|
171
|
+
filters: {
|
|
172
|
+
user: {
|
|
173
|
+
email: { operator: Where.EQUALS, value: userEmail },
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
})
|
|
177
|
+
.then((sub) => sub.data);
|
|
178
|
+
const activeSubs = sub?.filter((s) => s.status === Status.ACTIVE);
|
|
179
|
+
switch (coupon.exclusivityType) {
|
|
180
|
+
case Exclusivities.ACTIVE_SUBSCRIBER:
|
|
181
|
+
return activeSubs.length > 0;
|
|
182
|
+
case Exclusivities.INACTIVE_SUBSCRIBER:
|
|
183
|
+
return activeSubs.length === 0;
|
|
184
|
+
case Exclusivities.NON_SUBSCRIBER:
|
|
185
|
+
return sub.length === 0;
|
|
186
|
+
default:
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
176
189
|
}
|
|
177
190
|
return true;
|
|
178
191
|
}
|
|
@@ -187,7 +200,7 @@ export class CouponService {
|
|
|
187
200
|
return couponCategories;
|
|
188
201
|
}
|
|
189
202
|
}
|
|
190
|
-
CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }, { token: 'OrderRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
203
|
+
CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }, { token: 'OrderRepository' }, { token: 'SubscriptionRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
191
204
|
CouponService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponService, providedIn: 'root' });
|
|
192
205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponService, decorators: [{
|
|
193
206
|
type: Injectable,
|
|
@@ -203,8 +216,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
203
216
|
}] }, { type: undefined, decorators: [{
|
|
204
217
|
type: Inject,
|
|
205
218
|
args: ['OrderRepository']
|
|
219
|
+
}] }, { type: undefined, decorators: [{
|
|
220
|
+
type: Inject,
|
|
221
|
+
args: ['SubscriptionRepository']
|
|
206
222
|
}] }, { type: undefined, decorators: [{
|
|
207
223
|
type: Inject,
|
|
208
224
|
args: ['CategoryRepository']
|
|
209
225
|
}] }]; } });
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFLTCxhQUFhLEVBR2IsV0FBVyxFQUNYLGFBQWEsRUFJYixLQUFLLEVBRUwsS0FBSyxHQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFjLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQyxFQUM3QixrQkFBc0M7UUFIeEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQUNiLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM3Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBMEIvRSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBekJqRyxDQUFDO0lBRUosV0FBVyxDQUNULFFBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFlBQTJCLEVBQzNCLElBQWEsRUFDYixRQUE0QixFQUM1QixjQUF3QjtRQUV4QixPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMs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UUFFRCxPQUFPLGdCQUFnQixDQUFBO0lBQ3pCLENBQUM7OzBHQTNQVSxhQUFhLGtCQUVkLGtCQUFrQixhQUNsQixZQUFZLGFBQ1osaUJBQWlCLGFBQ2pCLG9CQUFvQjs4R0FMbkIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDYXRlZ29yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBDaGVja291dCxcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb24sXG4gIENoZWNrb3V0VHlwZXMsXG4gIENvdXBvbixcbiAgQ291cG9uUmVwb3NpdG9yeSxcbiAgQ291cG9uVHlwZXMsXG4gIEV4Y2x1c2l2aXRpZXMsXG4gIExpbmVJdGVtLFxuICBPcmRlclJlcG9zaXRvcnksXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxuICBTaG9wcyxcbiAgVXNlcixcbiAgV2hlcmUsXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vY29uc3RzJ1xuXG5pbXBvcnQgeyBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvdXBvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdDb3Vwb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25SZXBvc2l0b3J5OiBDb3Vwb25SZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcbiAgICBASW5qZWN0KCdPcmRlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXG4gICkge31cblxuICBjaGVja0NvdXBvbihcbiAgICBuaWNrbmFtZTogc3RyaW5nLFxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxuICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyxcbiAgICBwbGFuPzogc3RyaW5nLFxuICAgIGNoZWNrb3V0PzogUGFydGlhbDxDaGVja291dD4sXG4gICAgaXNTdWJzY3JpcHRpb24/OiBib29sZWFuLFxuICApOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5jb3Vwb25SZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgbmlja25hbWU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IG5pY2tuYW1lIH0sXG4gICAgICAgICAgYWN0aXZlOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+IHRoaXMuY2hlY2tDb3Vwb25SdWxlcyhjb3Vwb25zLCBjaGVja291dFR5cGUsIHBsYW4sIGNoZWNrb3V0LCBpc1N1YnNjcmlwdGlvbikpLFxuICAgICAgY29uY2F0TWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5jaGVja0NvdXBvblVzZUFuZExpbWl0KGNvdXBvbiwgdXNlckVtYWlsLCBjaGVja291dCkpLFxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSksXG4gICAgICBtYXAoKGNvdXBvbjogQ291cG9uKSA9PiBjb3Vwb24pLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IgPSAodXNlckVtYWlsOiBzdHJpbmcpOiBib29sZWFuID0+ICEhdXNlckVtYWlsPy5tYXRjaCgvQGI0YS5jb20uYnIvZylcblxuICBwcml2YXRlIGNoZWNrQ291cG9uUnVsZXMoXG4gICAgY291cG9uczogUmVwb3NpdG9yeUZpbmRSZXN1bHQ8Q291cG9uPixcbiAgICBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMsXG4gICAgcGxhbj86IHN0cmluZyxcbiAgICBjaGVja291dD86IFBhcnRpYWw8Q2hlY2tvdXQ+LFxuICAgIGlzU3Vic2NyaXB0aW9uPzogYm9vbGVhbixcbiAgKSB7XG4gICAgLy8gQ2FzbyBuw6NvIGFjaGUgbmVuaHVtIGN1cG9tLCByZXRvcm5hIGVycm9cbiAgICBpZiAoY291cG9ucy5jb3VudCA8IDEpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8uJylcbiAgICB9XG5cbiAgICAvLyBHZXQgUHJpbWVpcm8gQ3Vwb20gKG8gZmluZCBkbyByZXBvc2l0b3J5IHJldG9ybmEgdW0gYXJyYXkpXG4gICAgY29uc3QgY291cG9uOiBDb3Vwb24gPSBjb3Vwb25zLmRhdGEuc2hpZnQoKVxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY3Vwb20gw6kgYXBsaWNhdmVsIG5hIGxvamFcbiAgICBjb25zdCBpc0luU2hvcCA9IGNvdXBvbi5zaG9wQXZhaWxhYmlsaXR5ID09PSBTaG9wcy5BTEwgfHwgY291cG9uLnNob3BBdmFpbGFiaWxpdHkgPT09IHRoaXMuZGVmYXVsdFNob3BcblxuICAgIC8vIEN1cG9uIG7Do28gYXBsaWNhdmVsIGEgbG9qYSByZXRvcm5hIGVycm9cbiAgICBpZiAoIWlzSW5TaG9wKSByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvIHBhcmEgbG9qYS4nKVxuXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjb3Vwb24gw6kgYXBsaWNhZG8gbm8gY2hlY2tvdXQgcXVlIGVzdMOhIHNlbmRvIHJlYWxpemFkb1xuICAgIGNvbnN0IGlzQ2hlY2tvdXRUeXBlID0gY291cG9uLmNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5BTEwgfHwgY291cG9uLmNoZWNrb3V0VHlwZSA9PT0gY2hlY2tvdXRUeXBlXG5cbiAgICAvLyBDdXBvbiBuw6NvIGFwbGljYXZlbCBhbyBjaGVja291dCByZXRvcm5hIGVycm9cbiAgICBpZiAoIWlzQ2hlY2tvdXRUeXBlKSByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvLiBFcnJvIGRlIGNoZWNrb3V0LicpXG5cbiAgICAvLyBWZXJpZmljYSBzZSBvIGN1cG9tIMOpIG91IHBvZGUgc2VyIGFwbGljYWRvIHBhcmEgc3Vic2NyaXB0aW9uXG4gICAgaWYgKGNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5BTEwgfHwgY2hlY2tvdXRUeXBlID09PSBDaGVja291dFR5cGVzLlNVQlNDUklQVElPTikge1xuICAgICAgLy8gU2UgbyBjdXBvbSB0aXZlciB1bSBwbGFubyBhc3NvY2lhZG8sIHZlcmlmaWNhIHNlIMOpIG8gbWVzbW8gcGxhbm8gZG8gY2hlY2tvdXQgZGEgYXNzaW5hdHVyYVxuICAgICAgaWYgKGNvdXBvbi5wbGFuICYmIGNvdXBvbi5wbGFuLnRvVXBwZXJDYXNlKCkgIT09IHBsYW4udG9VcHBlckNhc2UoKSlcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkbyBwYXJhIHN1YSBhc3NpbmF0dXJhLicpXG4gICAgfVxuXG4gICAgaWYgKGlzU3Vic2NyaXB0aW9uKSByZXR1cm4gb2YoY291cG9uKVxuXG4gICAgLy8gVmVyaWZpY2Egc2UgcG9zc3VpIG8gdmFsb3IgbWluaW1vIGRlIGNvbXByYSBwYXJhIHV0aWxpemHDp8OjbyBkbyBjdXBvbVxuICAgIGNvbnN0IGhhc01pblN1YlRvdGFsID0gdGhpcy5oYXNNaW5TdWJUb3RhbChjb3Vwb24sIGNoZWNrb3V0KVxuXG4gICAgLy8gU2UgbsOjbyB0ZW0gdmFsb3IgbcOtbmltbyBhdGluZ2lkbywgcmV0b3JuYSBlcnJvXG4gICAgaWYgKCFoYXNNaW5TdWJUb3RhbClcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICBgVmFsb3IgbcOtbmltbyBkZSAke0ludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHsgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQlJMJyB9KS5mb3JtYXQoXG4gICAgICAgICAgY291cG9uLm1pblN1YlRvdGFsVmFsdWUsXG4gICAgICAgICl9IG7Do28gYXRpbmdpZG9gLFxuICAgICAgKVxuXG4gICAgcmV0dXJuIG9mKGNvdXBvbilcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZENvdXBvbihjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcpOiBDb3Vwb24ge1xuICAgIC8vIFZlcmlmaWNhIGEgZGF0YSBkZSBpbmljaW8gZGUgdmFsaWRhZGUgZG8gY3Vwb21cbiAgICBpZiAoY291cG9uPy5iZWdpbkF0ID4gbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gYWluZGEgbsOjbyBsaWJlcmFkby4nKVxuXG4gICAgLy8gVmVyaWZpY2EgYSBkYXRhIGRlIHZhbGlkYWRlIGRvIGN1cG9tXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luIDwgbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gZXhwaXJhZG8uJylcblxuICAgIHJldHVybiBjb3Vwb25cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pikge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBjb3Vwb246IHsgaWQ6IGNvdXBvbi5pZCB9LFxuICAgICAgICBwYXltZW50OiB7IHN0YXR1czogJ3BhaWQnIH0sXG4gICAgICAgIC4uLihjb3Vwb24uaW5mbHVlbmNlckVtYWlsID8geyB1c2VyOiB7IGVtYWlsOiB1c2VyRW1haWwgfSB9IDoge30pLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgLy8gb3JkZXJzIHF1ZSB1c3VhcmlvIGphIGZleiBjb20gbyBjdXBvbVxuICAgIGNvbnN0IG9yZGVyc1VzZXJDb3Vwb24gPSBvcmRlcnMuZGF0YS5maWx0ZXIoKG8pID0+IG8udXNlci5lbWFpbCA9PSB1c2VyRW1haWwpXG5cbiAgICAvLyBWZXJpZmljYSBvIGxpbWl0ZSBkZSB1c28gZGUgY3Vwb20gcG9yIHVzdWFyaW9cbiAgICBpZiAoY291cG9uLnVzZUxpbWl0UGVyVXNlciAmJiBvcmRlcnNVc2VyQ291cG9uLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0xpbWl0ZSBkZSB1c28gcG9yIHVzdcOhcmlvIGF0aW5naWRvLicpXG5cbiAgICAvLyBWZXJpZmljYSBvIGxpbWl0ZSBkZSB1c28gZ2VyYWwgcG9yIHVzdWFyaW9cbiAgICBpZiAoY291cG9uLnVzZUxpbWl0ICYmIG9yZGVycy5kYXRhLmxlbmd0aCA+PSBjb3Vwb24udXNlTGltaXQpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdMaW1pdGUgZGUgdXNvIGF0aW5naWRvLicpXG5cbiAgICBjb25zdCB2YWxpZFVzZXIgPSB0aGlzLnVzZXJWYWxpZGF0aW9uQW5kU3Vic2NyaXB0aW9uU3RhdHVzKGNvdXBvbiwgY2hlY2tvdXQ/LnVzZXIpXG4gICAgaWYgKCF2YWxpZFVzZXIpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1VzdcOhcmlvIG7Do28gZWxlZ8OtdmVsLicpXG5cbiAgICBjb25zdCBoYXNQcm9kdWN0Q2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuaGFzUHJvZHVjdENhdGVnb3JpZXMoY291cG9uLCBjaGVja291dClcblxuICAgIGlmICghaGFzUHJvZHVjdENhdGVnb3JpZXMpIHRocm93ICdTZXUgY2FycmluaG8gbsOjbyBwb3NzdWkgcHJvZHV0b3MgZWxlZ8OtdmVpcyBwYXJhIGRlc2NvbnRvLidcblxuICAgIHJldHVybiBjb3Vwb25cbiAgfVxuXG4gIHB1YmxpYyBjYWxjRGlzY291bnRTdWJzY3JpcHRpb24oY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0U3Vic2NyaXB0aW9uPik6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgLy9cbiAgICBsZXQgZGlzY291bnQgPSAwXG5cbiAgICBpZiAoY291cG9uLnR5cGUgPT09IENvdXBvblR5cGVzLkFCU09MVVRFKSBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxuICAgIGVsc2UgaWYgKGNvdXBvbi50eXBlID09PSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFKVxuICAgICAgZGlzY291bnQgPSBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLnJlY3VycmVuY2VQcmljZSAqIChjb3Vwb24uZGlzY291bnQgLyAxMDApXG5cbiAgICByZXR1cm4gb2YoZGlzY291bnQpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FsY0Rpc2NvdW50U2hvcHBpbmcoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgbGV0IGRpc2NvdW50ID0gMFxuXG4gICAgc3dpdGNoIChjb3Vwb24udHlwZSkge1xuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5BQlNPTFVURToge1xuICAgICAgICBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFOiB7XG4gICAgICAgIGRpc2NvdW50ID0gYXdhaXQgdGhpcy5jYWxjU2hvcHBpbmdQZXJjZW50YWdlRGlzY291bnQoY291cG9uLCBjaGVja291dClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY291bnRcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY1Nob3BwaW5nUGVyY2VudGFnZURpc2NvdW50KGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBkaXNjb3VudCA9IDBcbiAgICBjb25zdCBzaG9wID0gY2hlY2tvdXQuc2hvcFxuICAgIGxldCBsaW5lSXRlbnNEaXNjb3VudCA9IFtdXG4gICAgY29uc3QgY291cG9uQ2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuZ2V0Q291cG9uQ2F0ZWdvcmllc0lkKGNvdXBvbilcblxuICAgIGlmIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XG4gICAgICBsaW5lSXRlbnNEaXNjb3VudCA9IGNoZWNrb3V0LmxpbmVJdGVtcz8uZmlsdGVyKChpKSA9PiB7XG4gICAgICAgIGlmIChpLmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY291cG9uQ2F0ZWdvcmllcy5zb21lKChjYXQpID0+IGNhdC5pZCA9PSBjIHx8IGNhdC5maXJlc3RvcmVJZCA9PSBjKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZUl0ZW5zRGlzY291bnQgPSBjaGVja291dC5saW5lSXRlbXNcbiAgICB9XG5cbiAgICBjb25zdCBzdWJUb3RhbCA9XG4gICAgICBsaW5lSXRlbnNEaXNjb3VudC5yZWR1Y2UoXG4gICAgICAgIChhY2MsIGN1cnI6IExpbmVJdGVtKSA9PlxuICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlciAmJiBjdXJyLnByaWNlPy5zdWJzY3JpYmVyUHJpY2VcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxuICAgICAgICAgICAgOiBhY2MgKyBjdXJyLnByaWNlUGFpZCAqIGN1cnIucXVhbnRpdHksXG4gICAgICAgIDAsXG4gICAgICApIHx8IDBcblxuICAgIGRpc2NvdW50ID0gc3ViVG90YWwgKiAoY291cG9uLmRpc2NvdW50IC8gMTAwKVxuXG4gICAgcmV0dXJuIGRpc2NvdW50XG4gIH1cblxuICBwcml2YXRlIGhhc01pblN1YlRvdGFsKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBib29sZWFuIHtcbiAgICBpZiAoIWNvdXBvbi5taW5TdWJUb3RhbFZhbHVlKSByZXR1cm4gdHJ1ZVxuXG4gICAgY29uc3Qgc2hvcCA9IGNoZWNrb3V0LnNob3BcblxuICAgIGxldCBzdWJUb3RhbCA9XG4gICAgICBjaGVja291dC5saW5lSXRlbXM/LnJlZHVjZShcbiAgICAgICAgKGFjYywgY3VycikgPT5cbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZT8uc3Vic2NyaWJlclByaWNlXG4gICAgICAgICAgICA/IGFjYyArIGN1cnIucHJpY2U/LnN1YnNjcmliZXJQcmljZSAqIGN1cnIucXVhbnRpdHlcbiAgICAgICAgICAgIDogYWNjICsgY3Vyci5wcmljZVBhaWQgKiBjdXJyLnF1YW50aXR5LFxuICAgICAgICAwLFxuICAgICAgKSB8fCAwXG5cbiAgICBpZiAoY291cG9uLm1pblN1YlRvdGFsVmFsdWUgPD0gc3ViVG90YWwpIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhc1Byb2R1Y3RDYXRlZ29yaWVzKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMgfHwgIWNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IGNvdXBvbkNhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmdldENvdXBvbkNhdGVnb3JpZXNJZChjb3Vwb24pXG5cbiAgICBjb25zdCBoYXNDYXRlZ29yaWVzID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGkpID0+IHtcbiAgICAgIGlmICghaS5jYXRlZ29yaWVzIHx8ICFpLmNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIHRydWVcbiAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY291cG9uQ2F0ZWdvcmllcy5zb21lKChjYXQpID0+IGNhdC5pZCA9PSBjIHx8IGNhdC5maXJlc3RvcmVJZCA9PSBjKSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGhhc0NhdGVnb3JpZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXG4gIH1cblxuICBwcml2YXRlIHVzZXJWYWxpZGF0aW9uQW5kU3Vic2NyaXB0aW9uU3RhdHVzKGNvdXBvbjogQ291cG9uLCB1c2VyOiBVc2VyKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQUxMX1VTRVJTKSByZXR1cm4gdHJ1ZVxuICAgIGlmICghdXNlcikgcmV0dXJuIHRydWVcblxuICAgIC8vIFZlcmlmaWNhIHNlIG8gZW1haWwgZG8gdXN1w6FyaW8gw6kgY29vcnBvcmF0aXZvXG4gICAgaWYgKCF0aGlzLmVtYWlsSXNGcm9tQ29sbGFib3JhdG9yKHVzZXIuZW1haWwpICYmIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQ09MTEFCT1JBVE9SUylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1ZvY8OqIG7Do28gw6kgY29sYWJvcmFkb3IuJylcblxuICAgIC8vIFZlcmlmaWNhIHNlIG8gZW1haWwgZG8gdXN1w6FyaW8gw6kgYXNzb2NpYWRvIGFvIGN1cG9tIGRlIHVzbyBwb3IgdXN1YXJpb1xuICAgIGlmIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLlNQRUNJRklDX1VTRVIgJiYgY291cG9uLnVzZXJFeGNsdXNpdmVFbWFpbCAhPT0gdXNlci5lbWFpbClcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0N1cG9tIG7Do28gw6kgdsOhbGlkbyBwYXJhIGVzdGUgdXN1w6FyaW8uJylcblxuICAgIHN3aXRjaCAoY291cG9uLmV4Y2x1c2l2aXR5VHlwZSkge1xuICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLkFDVElWRV9TVUJTQ1JJQkVSOlxuICAgICAgICByZXR1cm4gdXNlci5pc1N1YnNjcmliZXIgPyB0cnVlIDogZmFsc2VcblxuICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLklOQUNUSVZFX1NVQlNDUklCRVI6XG4gICAgICAgIHJldHVybiB1c2VyLmlzU3Vic2NyaWJlciA/IGZhbHNlIDogdHJ1ZVxuXG4gICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuTk9OX1NVQlNDUklCRVI6XG4gICAgICAgIHJldHVybiB1c2VyLmlzU3Vic2NyaWJlciA/IGZhbHNlIDogdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENvdXBvbkNhdGVnb3JpZXNJZChjb3Vwb246IENvdXBvbikge1xuICAgIGxldCBjb3Vwb25DYXRlZ29yaWVzOiB7IGlkOiBzdHJpbmc7IGZpcmVzdG9yZUlkOiBzdHJpbmcgfVtdID0gW11cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgbGV0IGM6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHtcbiAgICAgICAgaWQ6IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXNbaW5kZXhdLFxuICAgICAgfSlcbiAgICAgIGNvdXBvbkNhdGVnb3JpZXMucHVzaCh7IGlkOiBjLmlkLCBmaXJlc3RvcmVJZDogYy5maXJlc3RvcmVJZCB9KVxuICAgIH1cblxuICAgIHJldHVybiBjb3Vwb25DYXRlZ29yaWVzXG4gIH1cbn1cbiJdfQ==
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFLTCxhQUFhLEVBR2IsV0FBVyxFQUNYLGFBQWEsRUFJYixLQUFLLEVBQ0wsTUFBTSxFQUVOLEtBQUssR0FDTixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFBOzs7QUFLN0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFDK0MsZ0JBQWtDLEVBQ3hDLFdBQWtCLEVBQ2IsZUFBZ0MsRUFDekIsc0JBQThDLEVBQ2xELGtCQUFzQztRQUp4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3hDLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ2Isb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ3pCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDbEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQTBCL0UsNEJBQXVCLEdBQUcsQ0FBQyxTQUFpQixFQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQXpCakcsQ0FBQztJQUVKLFdBQVcsQ0FDVCxRQUFnQixFQUNoQixTQUFpQixFQUNqQixZQUEyQixFQUMzQixJQUFh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R0FBRyxDQUFDO2dCQUM3RSxFQUFFLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQzthQUNyQyxDQUFDLENBQUE7WUFDRixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7U0FDaEU7UUFFRCxPQUFPLGdCQUFnQixDQUFBO0lBQ3pCLENBQUM7OzBHQXRRVSxhQUFhLGtCQUVkLGtCQUFrQixhQUNsQixZQUFZLGFBQ1osaUJBQWlCLGFBQ2pCLHdCQUF3QixhQUN4QixvQkFBb0I7OEdBTm5CLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUMvQixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDYXRlZ29yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBDaGVja291dCxcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb24sXG4gIENoZWNrb3V0VHlwZXMsXG4gIENvdXBvbixcbiAgQ291cG9uUmVwb3NpdG9yeSxcbiAgQ291cG9uVHlwZXMsXG4gIEV4Y2x1c2l2aXRpZXMsXG4gIExpbmVJdGVtLFxuICBPcmRlclJlcG9zaXRvcnksXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxuICBTaG9wcyxcbiAgU3RhdHVzLFxuICBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxuICBXaGVyZSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXG5cbmltcG9ydCB7IEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJ1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ291cG9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ0NvdXBvblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblJlcG9zaXRvcnk6IENvdXBvblJlcG9zaXRvcnksXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICApIHt9XG5cbiAgY2hlY2tDb3Vwb24oXG4gICAgbmlja25hbWU6IHN0cmluZyxcbiAgICB1c2VyRW1haWw6IHN0cmluZyxcbiAgICBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMsXG4gICAgcGxhbj86IHN0cmluZyxcbiAgICBjaGVja291dD86IFBhcnRpYWw8Q2hlY2tvdXQ+LFxuICAgIGlzU3Vic2NyaXB0aW9uPzogYm9vbGVhbixcbiAgKTogT2JzZXJ2YWJsZTxDb3Vwb24+IHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHRoaXMuY291cG9uUmVwb3NpdG9yeS5maW5kKHtcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIG5pY2tuYW1lOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiBuaWNrbmFtZSB9LFxuICAgICAgICAgIGFjdGl2ZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PiB0aGlzLmNoZWNrQ291cG9uUnVsZXMoY291cG9ucywgY2hlY2tvdXRUeXBlLCBwbGFuLCBjaGVja291dCwgaXNTdWJzY3JpcHRpb24pKSxcbiAgICAgIGNvbmNhdE1hcCgoY291cG9uOiBDb3Vwb24pID0+IHRoaXMuY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb24sIHVzZXJFbWFpbCwgY2hlY2tvdXQpKSxcbiAgICAgIG1hcCgoY291cG9uOiBDb3Vwb24pID0+IHRoaXMuaXNWYWxpZENvdXBvbihjb3Vwb24sIHVzZXJFbWFpbCkpLFxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gY291cG9uKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGVtYWlsSXNGcm9tQ29sbGFib3JhdG9yID0gKHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiA9PiAhIXVzZXJFbWFpbD8ubWF0Y2goL0BiNGEuY29tLmJyL2cpXG5cbiAgcHJpdmF0ZSBjaGVja0NvdXBvblJ1bGVzKFxuICAgIGNvdXBvbnM6IFJlcG9zaXRvcnlGaW5kUmVzdWx0PENvdXBvbj4sXG4gICAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzLFxuICAgIHBsYW4/OiBzdHJpbmcsXG4gICAgY2hlY2tvdXQ/OiBQYXJ0aWFsPENoZWNrb3V0PixcbiAgICBpc1N1YnNjcmlwdGlvbj86IGJvb2xlYW4sXG4gICkge1xuICAgIC8vIENhc28gbsOjbyBhY2hlIG5lbmh1bSBjdXBvbSwgcmV0b3JuYSBlcnJvXG4gICAgaWYgKGNvdXBvbnMuY291bnQgPCAxKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvLicpXG4gICAgfVxuXG4gICAgLy8gR2V0IFByaW1laXJvIEN1cG9tIChvIGZpbmQgZG8gcmVwb3NpdG9yeSByZXRvcm5hIHVtIGFycmF5KVxuICAgIGNvbnN0IGNvdXBvbjogQ291cG9uID0gY291cG9ucy5kYXRhLnNoaWZ0KClcbiAgICAvLyBWZXJpZmljYSBzZSBvIGN1cG9tIMOpIGFwbGljYXZlbCBuYSBsb2phXG4gICAgY29uc3QgaXNJblNob3AgPSBjb3Vwb24uc2hvcEF2YWlsYWJpbGl0eSA9PT0gU2hvcHMuQUxMIHx8IGNvdXBvbi5zaG9wQXZhaWxhYmlsaXR5ID09PSB0aGlzLmRlZmF1bHRTaG9wXG5cbiAgICAvLyBDdXBvbiBuw6NvIGFwbGljYXZlbCBhIGxvamEgcmV0b3JuYSBlcnJvXG4gICAgaWYgKCFpc0luU2hvcCkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkbyBwYXJhIGxvamEuJylcblxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY291cG9uIMOpIGFwbGljYWRvIG5vIGNoZWNrb3V0IHF1ZSBlc3TDoSBzZW5kbyByZWFsaXphZG9cbiAgICBjb25zdCBpc0NoZWNrb3V0VHlwZSA9IGNvdXBvbi5jaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNvdXBvbi5jaGVja291dFR5cGUgPT09IGNoZWNrb3V0VHlwZVxuXG4gICAgLy8gQ3Vwb24gbsOjbyBhcGxpY2F2ZWwgYW8gY2hlY2tvdXQgcmV0b3JuYSBlcnJvXG4gICAgaWYgKCFpc0NoZWNrb3V0VHlwZSkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkby4gRXJybyBkZSBjaGVja291dC4nKVxuXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjdXBvbSDDqSBvdSBwb2RlIHNlciBhcGxpY2FkbyBwYXJhIHN1YnNjcmlwdGlvblxuICAgIGlmIChjaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04pIHtcbiAgICAgIC8vIFNlIG8gY3Vwb20gdGl2ZXIgdW0gcGxhbm8gYXNzb2NpYWRvLCB2ZXJpZmljYSBzZSDDqSBvIG1lc21vIHBsYW5vIGRvIGNoZWNrb3V0IGRhIGFzc2luYXR1cmFcbiAgICAgIGlmIChjb3Vwb24ucGxhbiAmJiBjb3Vwb24ucGxhbi50b1VwcGVyQ2FzZSgpICE9PSBwbGFuLnRvVXBwZXJDYXNlKCkpXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8gcGFyYSBzdWEgYXNzaW5hdHVyYS4nKVxuICAgIH1cblxuICAgIGlmIChpc1N1YnNjcmlwdGlvbikgcmV0dXJuIG9mKGNvdXBvbilcblxuICAgIC8vIFZlcmlmaWNhIHNlIHBvc3N1aSBvIHZhbG9yIG1pbmltbyBkZSBjb21wcmEgcGFyYSB1dGlsaXphw6fDo28gZG8gY3Vwb21cbiAgICBjb25zdCBoYXNNaW5TdWJUb3RhbCA9IHRoaXMuaGFzTWluU3ViVG90YWwoY291cG9uLCBjaGVja291dClcblxuICAgIC8vIFNlIG7Do28gdGVtIHZhbG9yIG3DrW5pbW8gYXRpbmdpZG8sIHJldG9ybmEgZXJyb1xuICAgIGlmICghaGFzTWluU3ViVG90YWwpIHJldHVybiB0aHJvd0Vycm9yKCdWYWxvciBtw61uaW1vIG7Do28gYXRpbmdpZG8nKVxuXG4gICAgcmV0dXJuIG9mKGNvdXBvbilcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZENvdXBvbihjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcpOiBDb3Vwb24ge1xuICAgIC8vIFZlcmlmaWNhIGEgZGF0YSBkZSBpbmljaW8gZGUgdmFsaWRhZGUgZG8gY3Vwb21cbiAgICBpZiAoY291cG9uPy5iZWdpbkF0ID4gbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gYWluZGEgbsOjbyBsaWJlcmFkby4nKVxuXG4gICAgLy8gVmVyaWZpY2EgYSBkYXRhIGRlIHZhbGlkYWRlIGRvIGN1cG9tXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luIDwgbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gZXhwaXJhZG8uJylcblxuICAgIHJldHVybiBjb3Vwb25cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pikge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBjb3Vwb246IHsgaWQ6IGNvdXBvbi5pZCB9LFxuICAgICAgICBwYXltZW50OiB7IHN0YXR1czogJ3BhaWQnIH0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICAvLyBvcmRlcnMgcXVlIHVzdWFyaW8gamEgZmV6IGNvbSBvIGN1cG9tXG4gICAgY29uc3Qgb3JkZXJzVXNlckNvdXBvbiA9IG9yZGVycy5kYXRhLmZpbHRlcigobykgPT4gby51c2VyLmVtYWlsID09IHVzZXJFbWFpbClcblxuICAgIC8vIFZlcmlmaWNhIG8gbGltaXRlIGRlIHVzbyBkZSBjdXBvbSBwb3IgdXN1YXJpb1xuICAgIGlmIChjb3Vwb24udXNlTGltaXRQZXJVc2VyICYmIG9yZGVyc1VzZXJDb3Vwb24ubGVuZ3RoKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignTGltaXRlIGRlIHVzbyBwb3IgdXN1w6FyaW8gYXRpbmdpZG8uJylcblxuICAgIC8vIFZlcmlmaWNhIG8gbGltaXRlIGRlIHVzbyBnZXJhbCBwb3IgdXN1YXJpb1xuICAgIGlmIChjb3Vwb24udXNlTGltaXQgJiYgb3JkZXJzLmRhdGEubGVuZ3RoID49IGNvdXBvbi51c2VMaW1pdClcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0xpbWl0ZSBkZSB1c28gYXRpbmdpZG8uJylcblxuICAgIGNvbnN0IHZhbGlkVXNlciA9IGF3YWl0IHRoaXMudXNlclZhbGlkYXRpb25BbmRTdWJzY3JpcHRpb25TdGF0dXMoY291cG9uLCB1c2VyRW1haWwpXG4gICAgaWYgKCF2YWxpZFVzZXIpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1VzdcOhcmlvIG7Do28gZWxlZ8OtdmVsLicpXG5cbiAgICBjb25zdCBoYXNQcm9kdWN0Q2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuaGFzUHJvZHVjdENhdGVnb3JpZXMoY291cG9uLCBjaGVja291dClcblxuICAgIGlmICghaGFzUHJvZHVjdENhdGVnb3JpZXMpIHRocm93ICdTZXUgY2FycmluaG8gbsOjbyBwb3NzdWkgcHJvZHV0b3MgZWxlZ8OtdmVpcyBwYXJhIGRlc2NvbnRvLidcblxuICAgIHJldHVybiBjb3Vwb25cbiAgfVxuXG4gIHB1YmxpYyBjYWxjRGlzY291bnRTdWJzY3JpcHRpb24oY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0U3Vic2NyaXB0aW9uPik6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgLy9cbiAgICBsZXQgZGlzY291bnQgPSAwXG5cbiAgICBpZiAoY291cG9uLnR5cGUgPT09IENvdXBvblR5cGVzLkFCU09MVVRFKSBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxuICAgIGVsc2UgaWYgKGNvdXBvbi50eXBlID09PSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFKVxuICAgICAgZGlzY291bnQgPSBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLnJlY3VycmVuY2VQcmljZSAqIChjb3Vwb24uZGlzY291bnQgLyAxMDApXG5cbiAgICByZXR1cm4gb2YoZGlzY291bnQpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FsY0Rpc2NvdW50U2hvcHBpbmcoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgbGV0IGRpc2NvdW50ID0gMFxuXG4gICAgc3dpdGNoIChjb3Vwb24udHlwZSkge1xuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5BQlNPTFVURToge1xuICAgICAgICBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFOiB7XG4gICAgICAgIGRpc2NvdW50ID0gYXdhaXQgdGhpcy5jYWxjU2hvcHBpbmdQZXJjZW50YWdlRGlzY291bnQoY291cG9uLCBjaGVja291dClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY291bnRcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY1Nob3BwaW5nUGVyY2VudGFnZURpc2NvdW50KGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBkaXNjb3VudCA9IDBcbiAgICBjb25zdCBzaG9wID0gY2hlY2tvdXQuc2hvcFxuICAgIGxldCBsaW5lSXRlbnNEaXNjb3VudCA9IFtdXG4gICAgY29uc3QgY291cG9uQ2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuZ2V0Q291cG9uQ2F0ZWdvcmllc0lkKGNvdXBvbilcblxuICAgIGlmIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XG4gICAgICBsaW5lSXRlbnNEaXNjb3VudCA9IGNoZWNrb3V0LmxpbmVJdGVtcz8uZmlsdGVyKChpKSA9PiB7XG4gICAgICAgIGlmIChpLmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY291cG9uQ2F0ZWdvcmllcy5zb21lKChjYXQpID0+IGNhdC5pZCA9PSBjIHx8IGNhdC5maXJlc3RvcmVJZCA9PSBjKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZUl0ZW5zRGlzY291bnQgPSBjaGVja291dC5saW5lSXRlbXNcbiAgICB9XG5cbiAgICBjb25zdCBzdWJUb3RhbCA9XG4gICAgICBsaW5lSXRlbnNEaXNjb3VudC5yZWR1Y2UoXG4gICAgICAgIChhY2MsIGN1cnI6IExpbmVJdGVtKSA9PlxuICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlciAmJiBjdXJyLnByaWNlPy5zdWJzY3JpYmVyUHJpY2VcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxuICAgICAgICAgICAgOiBhY2MgKyBjdXJyLnByaWNlUGFpZCAqIGN1cnIucXVhbnRpdHksXG4gICAgICAgIDAsXG4gICAgICApIHx8IDBcblxuICAgIGRpc2NvdW50ID0gc3ViVG90YWwgKiAoY291cG9uLmRpc2NvdW50IC8gMTAwKVxuXG4gICAgcmV0dXJuIGRpc2NvdW50XG4gIH1cblxuICBwcml2YXRlIGhhc01pblN1YlRvdGFsKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBib29sZWFuIHtcbiAgICBpZiAoIWNvdXBvbi5taW5TdWJUb3RhbFZhbHVlKSByZXR1cm4gdHJ1ZVxuXG4gICAgY29uc3Qgc2hvcCA9IGNoZWNrb3V0LnNob3BcblxuICAgIGxldCBzdWJUb3RhbCA9XG4gICAgICBjaGVja291dC5saW5lSXRlbXM/LnJlZHVjZShcbiAgICAgICAgKGFjYywgY3VycikgPT5cbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZT8uc3Vic2NyaWJlclByaWNlXG4gICAgICAgICAgICA/IGFjYyArIGN1cnIucHJpY2U/LnN1YnNjcmliZXJQcmljZSAqIGN1cnIucXVhbnRpdHlcbiAgICAgICAgICAgIDogYWNjICsgY3Vyci5wcmljZVBhaWQgKiBjdXJyLnF1YW50aXR5LFxuICAgICAgICAwLFxuICAgICAgKSB8fCAwXG5cbiAgICBpZiAoY291cG9uLm1pblN1YlRvdGFsVmFsdWUgPD0gc3ViVG90YWwpIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhc1Byb2R1Y3RDYXRlZ29yaWVzKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMgfHwgIWNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IGNvdXBvbkNhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmdldENvdXBvbkNhdGVnb3JpZXNJZChjb3Vwb24pXG5cbiAgICBjb25zdCBoYXNDYXRlZ29yaWVzID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGkpID0+IHtcbiAgICAgIGlmICghaS5jYXRlZ29yaWVzIHx8ICFpLmNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIHRydWVcbiAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY291cG9uQ2F0ZWdvcmllcy5zb21lKChjYXQpID0+IGNhdC5pZCA9PSBjIHx8IGNhdC5maXJlc3RvcmVJZCA9PSBjKSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGhhc0NhdGVnb3JpZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVzZXJWYWxpZGF0aW9uQW5kU3Vic2NyaXB0aW9uU3RhdHVzKGNvdXBvbjogQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIFZlcmlmaWNhIHNlIG8gZW1haWwgZG8gdXN1w6FyaW8gw6kgY29vcnBvcmF0aXZvXG4gICAgaWYgKCF0aGlzLmVtYWlsSXNGcm9tQ29sbGFib3JhdG9yKHVzZXJFbWFpbCkgJiYgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5DT0xMQUJPUkFUT1JTKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVm9jw6ogbsOjbyDDqSBjb2xhYm9yYWRvci4nKVxuXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBlbWFpbCBkbyB1c3XDoXJpbyDDqSBhc3NvY2lhZG8gYW8gY3Vwb20gZGUgdXNvIHBvciB1c3VhcmlvXG4gICAgaWYgKGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuU1BFQ0lGSUNfVVNFUiAmJiBjb3Vwb24udXNlckV4Y2x1c2l2ZUVtYWlsICE9PSB1c2VyRW1haWwpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBuw6NvIMOpIHbDoWxpZG8gcGFyYSBlc3RlIHVzdcOhcmlvLicpXG5cbiAgICBjb25zdCBjb3Vwb25SdWxlU3Vic2NyaXB0aW9uID1cbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQUNUSVZFX1NVQlNDUklCRVIgfHxcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuSU5BQ1RJVkVfU1VCU0NSSUJFUiB8fFxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5OT05fU1VCU0NSSUJFUlxuXG4gICAgaWYgKGNvdXBvblJ1bGVTdWJzY3JpcHRpb24gJiYgdXNlckVtYWlsKSB7XG4gICAgICBjb25zdCBzdWIgPSBhd2FpdCB0aGlzLnN1YnNjcmlwdGlvblJlcG9zaXRvcnlcbiAgICAgICAgLmZpbmQoe1xuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgZW1haWw6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHVzZXJFbWFpbCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoc3ViKSA9PiBzdWIuZGF0YSlcblxuICAgICAgY29uc3QgYWN0aXZlU3VicyA9IHN1Yj8uZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gU3RhdHVzLkFDVElWRSlcblxuICAgICAgc3dpdGNoIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlKSB7XG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5BQ1RJVkVfU1VCU0NSSUJFUjpcbiAgICAgICAgICByZXR1cm4gYWN0aXZlU3Vicy5sZW5ndGggPiAwXG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5JTkFDVElWRV9TVUJTQ1JJQkVSOlxuICAgICAgICAgIHJldHVybiBhY3RpdmVTdWJzLmxlbmd0aCA9PT0gMFxuICAgICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuTk9OX1NVQlNDUklCRVI6XG4gICAgICAgICAgcmV0dXJuIHN1Yi5sZW5ndGggPT09IDBcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDb3Vwb25DYXRlZ29yaWVzSWQoY291cG9uOiBDb3Vwb24pIHtcbiAgICBsZXQgY291cG9uQ2F0ZWdvcmllczogeyBpZDogc3RyaW5nOyBmaXJlc3RvcmVJZDogc3RyaW5nIH1bXSA9IFtdXG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGxldCBjOiBDYXRlZ29yeSAmIHsgZmlyZXN0b3JlSWQ/OiBzdHJpbmcgfSA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldCh7XG4gICAgICAgIGlkOiBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzW2luZGV4XSxcbiAgICAgIH0pXG4gICAgICBjb3Vwb25DYXRlZ29yaWVzLnB1c2goeyBpZDogYy5pZCwgZmlyZXN0b3JlSWQ6IGMuZmlyZXN0b3JlSWQgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gY291cG9uQ2F0ZWdvcmllc1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export * from './auth.service';
|
|
2
2
|
export * from './cart.service';
|
|
3
|
-
export * from './checkout-subscription.service';
|
|
4
3
|
export * from './checkout.service';
|
|
4
|
+
export * from './checkout-subscription.service';
|
|
5
|
+
export * from './order.service';
|
|
5
6
|
export * from './coupon.service';
|
|
6
7
|
export * from './home-shop.service';
|
|
7
|
-
|
|
8
|
-
export * from './shipping.service';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxvQkFBb0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0aC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9jYXJ0LnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9jb3Vwb24uc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vaG9tZS1zaG9wLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL29yZGVyLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL3NoaXBwaW5nLnNlcnZpY2UnXG5cbiJdfQ==
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsaUNBQWlDLENBQUE7QUFDL0MsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMscUJBQXFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGguc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vY2FydC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja291dC1zdWJzY3JpcHRpb24uc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXIuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vY291cG9uLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2hvbWUtc2hvcC5zZXJ2aWNlJ1xuIl19
|