@infrab4a/connect-angular 2.0.6-beta.10 → 2.0.6-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/bundles/infrab4a-connect-angular.umd.js +63 -112
- package/bundles/infrab4a-connect-angular.umd.js.map +1 -1
- package/esm2015/services/checkout.service.js +2 -2
- package/esm2015/services/coupon.service.js +54 -68
- package/fesm2015/infrab4a-connect-angular.js +54 -68
- package/fesm2015/infrab4a-connect-angular.js.map +1 -1
- package/package.json +1 -1
- package/services/coupon.service.d.ts +1 -2
|
@@ -37,7 +37,7 @@ export class CheckoutService {
|
|
|
37
37
|
return of();
|
|
38
38
|
}
|
|
39
39
|
calcDiscount(coupon) {
|
|
40
|
-
return this.getCheckout().pipe(concatMap((checkout) =>
|
|
40
|
+
return this.getCheckout().pipe(concatMap((checkout) => this.couponService.calcDiscountShopping(coupon, checkout).pipe()));
|
|
41
41
|
}
|
|
42
42
|
checkCoupon(nickname, checkoutType) {
|
|
43
43
|
return this.getCheckout().pipe(concatMap((checkout) => {
|
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
|
|
|
72
72
|
type: Inject,
|
|
73
73
|
args: [DEFAULT_SHOP]
|
|
74
74
|
}] }]; } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLFFBQVEsRUFFUixhQUFhLEVBRWIsS0FBSyxFQUNMLGFBQWEsRUFFYixJQUFJLEVBQ0osS0FBSyxFQUdOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7Ozs7QUFJaEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDbUIsYUFBNEIsRUFDRSxrQkFBc0MsRUFDekMsZUFBZ0MsRUFDakMsY0FBOEIsRUFDbEMsV0FBa0I7UUFKeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFDeEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxZQUFtQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRTNDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENB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LENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUN0RSxJQUFJLEVBQUUsQ0FBQSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQyxXQUFXLElBQzVDLENBQUE7WUFFRixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFckMsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztLQUFBOzs2R0F6RVUsZUFBZSwrQ0FHaEIsb0JBQW9CLGFBQ3BCLGlCQUFpQixhQUNqQixnQkFBZ0IsYUFDaEIsWUFBWTtpSEFOWCxlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUlOLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIHBpY2ssXHJcbiAgU2hvcHMsXHJcbiAgVXNlcixcclxuICBVc2VyUmVwb3NpdG9yeVxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgY29va2llIGZyb20gJ2pzLWNvb2tpZSdcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFJlcG9zaXRvcnk6IENoZWNrb3V0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdVc2VyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRJZCcpXHJcblxyXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICBjaGVja291dD8udXNlcj8uaWQgPyBvZihjaGVja291dC51c2VyKSA6IGZyb20odGhpcy51c2VyUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXQudXNlci5pZCB9KSksXHJcbiAgICAgICksXHJcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT4gb2YodXNlcikgfHwgdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignVXNlciBpcyBub3QgZm91bmQnKSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pKSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgdXNlcjogY2hlY2tvdXQudXNlciB9KSkpXHJcbiAgfVxyXG5cclxuICBjbGVhckNoZWNrb3V0RnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dElkJylcclxuXHJcbiAgICByZXR1cm4gb2YoKVxyXG4gIH1cclxuXHJcbiAgY2FsY0Rpc2NvdW50KGNvdXBvbjogQ291cG9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY291cG9uU2VydmljZS5jYWxjRGlzY291bnRTaG9wcGluZyhjb3Vwb24sIGNoZWNrb3V0KS5waXBlKCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzKTogT2JzZXJ2YWJsZTxDb3Vwb24+IHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICB0aGlzLmNvdXBvblNlcnZpY2VcclxuICAgICAgICAgIC5jaGVja0NvdXBvbihcclxuICAgICAgICAgICAgbmlja25hbWUsXHJcbiAgICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmVtYWlsLFxyXG4gICAgICAgICAgICBDaGVja291dFR5cGVzLkVDT01NRVJDRSxcclxuICAgICAgICAgICAgY2hlY2tvdXQudXNlci5zdWJzY3JpcHRpb25QbGFuLFxyXG4gICAgICAgICAgICBjaGVja291dCxcclxuICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5waXBlKCksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogUHJvbWlzZTxDaGVja291dD4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICAgIC4uLkNoZWNrb3V0LnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXHJcbiAgICAgIHNob3A6IGNoZWNrb3V0RGF0YT8uc2hvcCB8fCB0aGlzLmRlZmF1bHRTaG9wLFxyXG4gICAgfSlcclxuXHJcbiAgICBjb29raWUuc2V0KCdjaGVja291dElkJywgY2hlY2tvdXQuaWQpXHJcblxyXG4gICAgcmV0dXJuIGNoZWNrb3V0XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -105,9 +105,10 @@ export class CouponService {
|
|
|
105
105
|
throw new InvalidCouponError('Usuário não elegível.');
|
|
106
106
|
// Verifica se a compra possui produtos elegíveis para desconto
|
|
107
107
|
const hasProductCategories = yield this.hasProductCategories(coupon, checkout);
|
|
108
|
+
console.log('hasProductCategories', hasProductCategories);
|
|
108
109
|
// Se não tem produtos elegíveis, retorna erro
|
|
109
110
|
if (!hasProductCategories)
|
|
110
|
-
|
|
111
|
+
return throwError('Seu carrinho não possui produtos elegíveis para desconto.');
|
|
111
112
|
return coupon;
|
|
112
113
|
});
|
|
113
114
|
}
|
|
@@ -121,49 +122,44 @@ export class CouponService {
|
|
|
121
122
|
return of(discount);
|
|
122
123
|
}
|
|
123
124
|
calcDiscountShopping(coupon, checkout) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
case CouponTypes.PERCENTAGE: {
|
|
132
|
-
discount = yield this.calcShoppingPercentageDiscount(coupon, checkout);
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
125
|
+
let discount = 0;
|
|
126
|
+
switch (coupon.type) {
|
|
127
|
+
case CouponTypes.ABSOLUTE: {
|
|
128
|
+
discount = coupon.discount;
|
|
129
|
+
break;
|
|
135
130
|
}
|
|
136
|
-
|
|
137
|
-
|
|
131
|
+
case CouponTypes.PERCENTAGE: {
|
|
132
|
+
discount = this.calcShoppingPercentageDiscount(coupon, checkout);
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return of(discount);
|
|
138
137
|
}
|
|
139
138
|
calcShoppingPercentageDiscount(coupon, checkout) {
|
|
140
139
|
var _a;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
discount = subTotal * (coupon.discount / 100);
|
|
165
|
-
return discount;
|
|
166
|
-
});
|
|
140
|
+
let discount = 0;
|
|
141
|
+
const shop = checkout.shop;
|
|
142
|
+
let lineItensDiscount = [];
|
|
143
|
+
if (coupon.productsCategories && coupon.productsCategories.length) {
|
|
144
|
+
lineItensDiscount = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
|
|
145
|
+
var _a;
|
|
146
|
+
if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
|
|
147
|
+
return i.categories.some((c) => coupon.productsCategories.includes(c));
|
|
148
|
+
}
|
|
149
|
+
return true;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
lineItensDiscount = checkout.lineItems;
|
|
154
|
+
}
|
|
155
|
+
const subTotal = lineItensDiscount.reduce((acc, curr) => {
|
|
156
|
+
var _a, _b, _c;
|
|
157
|
+
return ((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.isSubscriber) && ((_b = curr.price[shop]) === null || _b === void 0 ? void 0 : _b.subscriberPrice)
|
|
158
|
+
? acc + ((_c = curr.price[shop]) === null || _c === void 0 ? void 0 : _c.subscriberPrice) * curr.quantity
|
|
159
|
+
: acc + curr.pricePaid * curr.quantity;
|
|
160
|
+
}, 0) || 0;
|
|
161
|
+
discount = subTotal * (coupon.discount / 100);
|
|
162
|
+
return discount;
|
|
167
163
|
}
|
|
168
164
|
hasMinSubTotal(coupon, checkout) {
|
|
169
165
|
var _a;
|
|
@@ -183,25 +179,25 @@ export class CouponService {
|
|
|
183
179
|
hasProductCategories(coupon, checkout) {
|
|
184
180
|
var _a;
|
|
185
181
|
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
-
if (
|
|
182
|
+
if (coupon.productsCategories && coupon.productsCategories.length) {
|
|
183
|
+
const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
|
|
184
|
+
var _a;
|
|
185
|
+
if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
|
|
186
|
+
return i.categories.some((c) => __awaiter(this, void 0, void 0, function* () {
|
|
187
|
+
const categoria = yield this.categoryRepository.get({ id: c });
|
|
188
|
+
console.log(categoria);
|
|
189
|
+
console.log(coupon.productsCategories.includes(categoria.id), coupon.productsCategories.includes(categoria.firestoreId), i.isGift);
|
|
190
|
+
console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift);
|
|
191
|
+
return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift;
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
return true;
|
|
195
|
+
});
|
|
196
|
+
return hasCategories.length ? true : false;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
187
199
|
return true;
|
|
188
200
|
}
|
|
189
|
-
const couponCategories = yield this.getCouponCategoriesId(coupon);
|
|
190
|
-
const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter(i => {
|
|
191
|
-
var _a;
|
|
192
|
-
if (!i.categories || !((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length))
|
|
193
|
-
return true;
|
|
194
|
-
return i.categories.some((c) => couponCategories.some(cat => (cat.id == c || cat.firestoreId == c)));
|
|
195
|
-
// return i.categories.some(async (c) => {
|
|
196
|
-
// console.log('some category c', c)
|
|
197
|
-
// const categoria: Category & { firestoreId?: string } = await this.categoryRepository.get({id: c})
|
|
198
|
-
// console.log(categoria)
|
|
199
|
-
// console.log(coupon.productsCategories.includes(categoria.id), coupon.productsCategories.includes(categoria.firestoreId), i.isGift)
|
|
200
|
-
// console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift)
|
|
201
|
-
// return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift
|
|
202
|
-
// })
|
|
203
|
-
});
|
|
204
|
-
return hasCategories.length ? true : false;
|
|
205
201
|
});
|
|
206
202
|
}
|
|
207
203
|
userValidationAndSubscriptionStatus(coupon, userEmail) {
|
|
@@ -240,16 +236,6 @@ export class CouponService {
|
|
|
240
236
|
return true;
|
|
241
237
|
});
|
|
242
238
|
}
|
|
243
|
-
getCouponCategoriesId(coupon) {
|
|
244
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
245
|
-
let couponCategories = [];
|
|
246
|
-
for (let index = 0; index < coupon.productsCategories.length; index++) {
|
|
247
|
-
let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
|
|
248
|
-
couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
|
|
249
|
-
}
|
|
250
|
-
return couponCategories;
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
239
|
}
|
|
254
240
|
CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }, { token: 'OrderRepository' }, { token: 'SubscriptionRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
255
241
|
CouponService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, providedIn: 'root' });
|
|
@@ -274,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
|
|
|
274
260
|
type: Inject,
|
|
275
261
|
args: ['CategoryRepository']
|
|
276
262
|
}] }]; } });
|
|
277
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBS0wsYUFBYSxFQUNiLE1BQU0sRUFFTixXQUFXLEVBQ1gsYUFBYSxFQUdiLEtBQUssRUFDTCxNQUFNLEVBRU4sS0FBSyxFQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQyxFQUN6QixzQkFBOEMsRUFDbEQsa0JBQXNDO1FBSnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFDYixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUNsRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBMEIvRSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQXlRNUYseUJBQW9CLEdBQUcsQ0FDN0Is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QUFDO0tBQUE7SUFFYSxxQkFBcUIsQ0FBQyxNQUFjOztZQUUvQyxJQUFJLGdCQUFnQixHQUEwQyxFQUFFLENBQUE7WUFFL0QsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxHQUF3QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDeEgsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUMsQ0FBQyxDQUFBO2FBQy9EO1lBRUQsT0FBTyxnQkFBZ0IsQ0FBQTtRQUMzQixDQUFDO0tBQUE7OzJHQXZTVSxhQUFhLGtCQUVkLGtCQUFrQixhQUNsQixZQUFZLGFBQ1osaUJBQWlCLGFBQ2pCLHdCQUF3QixhQUN4QixvQkFBb0I7K0dBTm5CLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUMvQixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2F0ZWdvcnksXHJcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0LFxyXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uLFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgQ291cG9uLFxyXG4gIENvdXBvblJlcG9zaXRvcnksXHJcbiAgQ291cG9uVHlwZXMsXHJcbiAgRXhjbHVzaXZpdGllcyxcclxuICBMaW5lSXRlbSxcclxuICBPcmRlclJlcG9zaXRvcnksXHJcbiAgU2hvcHMsXHJcbiAgU3RhdHVzLFxyXG4gIFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgV2hlcmVcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5cclxuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vY29uc3RzJ1xyXG5cclxuaW1wb3J0IHsgSW52YWxpZENvdXBvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ291cG9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdDb3Vwb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25SZXBvc2l0b3J5OiBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICAgQEluamVjdCgnT3JkZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBvcmRlclJlcG9zaXRvcnk6IE9yZGVyUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gICkge31cclxuXHJcbiAgY2hlY2tDb3Vwb24oXHJcbiAgICBuaWNrbmFtZTogc3RyaW5nLFxyXG4gICAgdXNlckVtYWlsOiBzdHJpbmcsXHJcbiAgICBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMsXHJcbiAgICBwbGFuPzogc3RyaW5nLFxyXG4gICAgY2hlY2tvdXQ/OiBQYXJ0aWFsPENoZWNrb3V0PixcclxuICAgIGlzU3Vic2NyaXB0aW9uPzogYm9vbGVhbixcclxuICApOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMuY291cG9uUmVwb3NpdG9yeS5maW5kKHtcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBuaWNrbmFtZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogbmlja25hbWUgfSxcclxuICAgICAgICAgIGFjdGl2ZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pLFxyXG4gICAgKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+IHRoaXMuY2hlY2tDb3Vwb25SdWxlcyhjb3Vwb25zLCBjaGVja291dFR5cGUsIHBsYW4sIGNoZWNrb3V0LCBpc1N1YnNjcmlwdGlvbikpLFxyXG4gICAgICBjb25jYXRNYXAoKGNvdXBvbjogQ291cG9uKSA9PiB0aGlzLmNoZWNrQ291cG9uVXNlQW5kTGltaXQoY291cG9uLCB1c2VyRW1haWwsIGNoZWNrb3V0KSksXHJcbiAgICAgIG1hcCgoY291cG9uOiBDb3Vwb24pID0+IHRoaXMuaXNWYWxpZENvdXBvbihjb3Vwb24sIHVzZXJFbWFpbCkpLFxyXG4gICAgICBtYXAoKGNvdXBvbjogQ291cG9uKSA9PiBjb3Vwb24pLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWFpbElzRnJvbUNvbGxhYm9yYXRvciA9ICh1c2VyRW1haWw6IHN0cmluZyk6IGJvb2xlYW4gPT4gISF1c2VyRW1haWw/Lm1hdGNoKC9AYjRhLmNvbS5ici9nKVxyXG5cclxuICBwcml2YXRlIGNoZWNrQ291cG9uUnVsZXMoXHJcbiAgICBjb3Vwb25zLFxyXG4gICAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzLFxyXG4gICAgcGxhbj86IHN0cmluZyxcclxuICAgIGNoZWNrb3V0PzogUGFydGlhbDxDaGVja291dD4sXHJcbiAgICBpc1N1YnNjcmlwdGlvbj86IGJvb2xlYW4sXHJcbiAgKSB7XHJcbiAgICAvLyBDYXNvIG7Do28gYWNoZSBuZW5odW0gY3Vwb20sIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKGNvdXBvbnMuY291bnQgPCAxKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8uJylcclxuICAgIH1cclxuXHJcbiAgICAvLyBHZXQgUHJpbWVpcm8gQ3Vwb20gKG8gZmluZCBkbyByZXBvc2l0b3J5IHJldG9ybmEgdW0gYXJyYXkpXHJcbiAgICBjb25zdCBjb3Vwb246IENvdXBvbiA9IGNvdXBvbnMuZGF0YS5zaGlmdCgpXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGN1cG9tIMOpIGFwbGljYXZlbCBuYSBsb2phXHJcbiAgICBjb25zdCBpc0luU2hvcCA9IGNvdXBvbi5zaG9wQXZhaWxhYmlsaXR5ID09PSBTaG9wcy5BTEwgfHwgY291cG9uLnNob3BBdmFpbGFiaWxpdHkgPT09IHRoaXMuZGVmYXVsdFNob3BcclxuXHJcbiAgICAvLyBDdXBvbiBuw6NvIGFwbGljYXZlbCBhIGxvamEgcmV0b3JuYSBlcnJvXHJcbiAgICBpZiAoIWlzSW5TaG9wKSByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvIHBhcmEgbG9qYS4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY291cG9uIMOpIGFwbGljYWRvIG5vIGNoZWNrb3V0IHF1ZSBlc3TDoSBzZW5kbyByZWFsaXphZG9cclxuICAgIGNvbnN0IGlzQ2hlY2tvdXRUeXBlID0gY291cG9uLmNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5BTEwgfHwgY291cG9uLmNoZWNrb3V0VHlwZSA9PT0gY2hlY2tvdXRUeXBlXHJcblxyXG4gICAgLy8gQ3Vwb24gbsOjbyBhcGxpY2F2ZWwgYW8gY2hlY2tvdXQgcmV0b3JuYSBlcnJvXHJcbiAgICBpZiAoIWlzQ2hlY2tvdXRUeXBlKSByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvLiBFcnJvIGRlIGNoZWNrb3V0LicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjdXBvbSDDqSBvdSBwb2RlIHNlciBhcGxpY2FkbyBwYXJhIHN1YnNjcmlwdGlvblxyXG4gICAgaWYgKGNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5BTEwgfHwgY2hlY2tvdXRUeXBlID09PSBDaGVja291dFR5cGVzLlNVQlNDUklQVElPTikge1xyXG4gICAgICAvLyBTZSBvIGN1cG9tIHRpdmVyIHVtIHBsYW5vIGFzc29jaWFkbywgdmVyaWZpY2Egc2Ugw6kgbyBtZXNtbyBwbGFubyBkbyBjaGVja291dCBkYSBhc3NpbmF0dXJhXHJcbiAgICAgIGlmIChjb3Vwb24ucGxhbiAmJiBjb3Vwb24ucGxhbi50b1VwcGVyQ2FzZSgpICE9PSBwbGFuLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkbyBwYXJhIHN1YSBhc3NpbmF0dXJhLicpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzU3Vic2NyaXB0aW9uKSByZXR1cm4gb2YoY291cG9uKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIHNlIHBvc3N1aSBvIHZhbG9yIG1pbmltbyBkZSBjb21wcmEgcGFyYSB1dGlsaXphw6fDo28gZG8gY3Vwb21cclxuICAgIGNvbnN0IGhhc01pblN1YlRvdGFsID0gdGhpcy5oYXNNaW5TdWJUb3RhbChjb3Vwb24sIGNoZWNrb3V0KVxyXG5cclxuICAgIC8vIFNlIG7Do28gdGVtIHZhbG9yIG3DrW5pbW8gYXRpbmdpZG8sIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFoYXNNaW5TdWJUb3RhbCkgcmV0dXJuIHRocm93RXJyb3IoJ1ZhbG9yIG3DrW5pbW8gbsOjbyBhdGluZ2lkbycpXHJcblxyXG4gICAgcmV0dXJuIG9mKGNvdXBvbilcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNWYWxpZENvdXBvbihjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcpOiBDb3Vwb24ge1xyXG4gICAgLy8gVmVyaWZpY2EgYSBkYXRhIGRlIGluaWNpbyBkZSB2YWxpZGFkZSBkbyBjdXBvbVxyXG4gICAgaWYgKGNvdXBvbj8uYmVnaW5BdCA+IG5ldyBEYXRlKCkpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0N1cG9tIGFpbmRhIG7Do28gbGliZXJhZG8uJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBhIGRhdGEgZGUgdmFsaWRhZGUgZG8gY3Vwb21cclxuICAgIGlmIChjb3Vwb24/LmV4cGlyZXNJbiA8IG5ldyBEYXRlKCkpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0N1cG9tIGV4cGlyYWRvLicpXHJcblxyXG4gICAgcmV0dXJuIGNvdXBvblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjaGVja0NvdXBvblVzZUFuZExpbWl0KGNvdXBvbjogQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZywgY2hlY2tvdXQpIHtcclxuICAgIC8vIEJ1c2NhIG9yZGVycyBxdWUgcG9zc3VlbSBvIGN1cG9tIGUgcXVlIGVzdMOjbyBwYWdhc1xyXG4gICAgY29uc3Qgb3JkZXJzID0gYXdhaXQgdGhpcy5vcmRlclJlcG9zaXRvcnkuZmluZCh7XHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICBjb3Vwb246IHsgaWQ6IGNvdXBvbi5pZCB9LFxyXG4gICAgICAgIHBheW1lbnQ6IHsgc3RhdHVzOiAncGFpZCcgfSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgLy8gb3JkZXJzIHF1ZSB1c3VhcmlvIGphIGZleiBjb20gbyBjdXBvbVxyXG4gICAgY29uc3Qgb3JkZXJzVXNlckNvdXBvbiA9IG9yZGVycy5kYXRhLmZpbHRlcigobykgPT4gby51c2VyLmVtYWlsID09IHVzZXJFbWFpbClcclxuXHJcbiAgICAvLyBWZXJpZmljYSBvIGxpbWl0ZSBkZSB1c28gZGUgY3Vwb20gcG9yIHVzdWFyaW9cclxuICAgIGlmIChjb3Vwb24udXNlTGltaXRQZXJVc2VyICYmIG9yZGVyc1VzZXJDb3Vwb24ubGVuZ3RoKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdMaW1pdGUgZGUgdXNvIHBvciB1c3XDoXJpbyBhdGluZ2lkby4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIG8gbGltaXRlIGRlIHVzbyBnZXJhbCBwb3IgdXN1YXJpb1xyXG4gICAgaWYgKGNvdXBvbi51c2VMaW1pdCAmJiBvcmRlcnMuZGF0YS5sZW5ndGggPj0gY291cG9uLnVzZUxpbWl0KVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdMaW1pdGUgZGUgdXNvIGF0aW5naWRvLicpXHJcblxyXG4gICAgY29uc3QgdmFsaWRVc2VyID0gYXdhaXQgdGhpcy51c2VyVmFsaWRhdGlvbkFuZFN1YnNjcmlwdGlvblN0YXR1cyhjb3Vwb24sIHVzZXJFbWFpbClcclxuICAgIGlmICghdmFsaWRVc2VyKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdVc3XDoXJpbyBuw6NvIGVsZWfDrXZlbC4nKVxyXG5cclxuICAgICAvLyBWZXJpZmljYSBzZSBhIGNvbXByYSBwb3NzdWkgcHJvZHV0b3MgZWxlZ8OtdmVpcyBwYXJhIGRlc2NvbnRvXHJcbiAgICBjb25zdCBoYXNQcm9kdWN0Q2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuaGFzUHJvZHVjdENhdGVnb3JpZXMoY291cG9uLCBjaGVja291dClcclxuICAgIC8vIFNlIG7Do28gdGVtIHByb2R1dG9zIGVsZWfDrXZlaXMsIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFoYXNQcm9kdWN0Q2F0ZWdvcmllcykgdGhyb3cgJ1NldSBjYXJyaW5obyBuw6NvIHBvc3N1aSBwcm9kdXRvcyBlbGVnw612ZWlzIHBhcmEgZGVzY29udG8uJ1xyXG4gICAgXHJcbiAgICByZXR1cm4gY291cG9uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY0Rpc2NvdW50U3Vic2NyaXB0aW9uKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dFN1YnNjcmlwdGlvbj4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgLy9cclxuICAgIGxldCBkaXNjb3VudCA9IDBcclxuXHJcbiAgICBpZiAoY291cG9uLnR5cGUgPT09IENvdXBvblR5cGVzLkFCU09MVVRFKSBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxyXG4gICAgZWxzZSBpZiAoY291cG9uLnR5cGUgPT09IENvdXBvblR5cGVzLlBFUkNFTlRBR0UpXHJcbiAgICAgIGRpc2NvdW50ID0gY2hlY2tvdXQuc3Vic2NyaXB0aW9uUGxhbi5yZWN1cnJlbmNlUHJpY2UgKiAoY291cG9uLmRpc2NvdW50IC8gMTAwKVxyXG5cclxuICAgIHJldHVybiBvZihkaXNjb3VudClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjYWxjRGlzY291bnRTaG9wcGluZyhjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGxldCBkaXNjb3VudCA9IDBcclxuXHJcbiAgICBzd2l0Y2ggKGNvdXBvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgQ291cG9uVHlwZXMuQUJTT0xVVEU6IHtcclxuICAgICAgICBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFOiB7XHJcbiAgICAgICAgZGlzY291bnQgPSBhd2FpdCB0aGlzLmNhbGNTaG9wcGluZ1BlcmNlbnRhZ2VEaXNjb3VudChjb3Vwb24sIGNoZWNrb3V0KVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGlzY291bnRcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY2FsY1Nob3BwaW5nUGVyY2VudGFnZURpc2NvdW50KGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgbGV0IGRpc2NvdW50ID0gMFxyXG4gICAgY29uc3Qgc2hvcCA9IGNoZWNrb3V0LnNob3BcclxuICAgIGxldCBsaW5lSXRlbnNEaXNjb3VudCA9IFtdXHJcbiAgICBjb25zdCBjb3Vwb25DYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDb3Vwb25DYXRlZ29yaWVzSWQoY291cG9uKVxyXG5cclxuICAgIGlmIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50ID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGkpID0+IHtcclxuICAgICAgICBpZiAoaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY291cG9uQ2F0ZWdvcmllcy5zb21lKGNhdCA9PiAoY2F0LmlkID09IGMgfHwgY2F0LmZpcmVzdG9yZUlkID09IGMpKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50ID0gY2hlY2tvdXQubGluZUl0ZW1zXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3ViVG90YWwgPVxyXG4gICAgICBsaW5lSXRlbnNEaXNjb3VudC5yZWR1Y2UoXHJcbiAgICAgICAgKGFjYywgY3VycjogTGluZUl0ZW0pID0+XHJcbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlXHJcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxyXG4gICAgICAgICAgICA6IGFjYyArIGN1cnIucHJpY2VQYWlkICogY3Vyci5xdWFudGl0eSxcclxuICAgICAgICAwLFxyXG4gICAgICApIHx8IDBcclxuXHJcbiAgICBkaXNjb3VudCA9IHN1YlRvdGFsICogKGNvdXBvbi5kaXNjb3VudCAvIDEwMClcclxuXHJcbiAgICByZXR1cm4gZGlzY291bnRcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzTWluU3ViVG90YWwoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb3Vwb24ubWluU3ViVG90YWxWYWx1ZSkgcmV0dXJuIHRydWVcclxuXHJcbiAgICBjb25zdCBzaG9wID0gY2hlY2tvdXQuc2hvcFxyXG5cclxuICAgIGxldCBzdWJUb3RhbCA9XHJcbiAgICAgIGNoZWNrb3V0LmxpbmVJdGVtcz8ucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGN1cnIpID0+XHJcbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlXHJcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxyXG4gICAgICAgICAgICA6IGFjYyArIGN1cnIucHJpY2VQYWlkICogY3Vyci5xdWFudGl0eSxcclxuICAgICAgICAwLFxyXG4gICAgICApIHx8IDBcclxuXHJcbiAgICBpZiAoY291cG9uLm1pblN1YlRvdGFsVmFsdWUgPD0gc3ViVG90YWwpIHJldHVybiB0cnVlXHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaGFzUHJvZHVjdENhdGVnb3JpZXMoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cclxuICAgIGlmICghY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcyAmJiAhY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb3Vwb25DYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDb3Vwb25DYXRlZ29yaWVzSWQoY291cG9uKVxyXG4gICAgXHJcbiAgICBjb25zdCBoYXNDYXRlZ29yaWVzID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoaSA9PiB7XHJcblxyXG4gICAgICBpZiAoIWkuY2F0ZWdvcmllcyB8fCAhaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHJldHVybiB0cnVlXHJcblxyXG4gICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IGNvdXBvbkNhdGVnb3JpZXMuc29tZShjYXQgPT4gKGNhdC5pZCA9PSBjIHx8IGNhdC5maXJlc3RvcmVJZCA9PSBjKSkpXHJcblxyXG4gICAgICAvLyByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoYXN5bmMgKGMpID0+IHtcclxuICAgICAgLy8gICBjb25zb2xlLmxvZygnc29tZSBjYXRlZ29yeSBjJywgYylcclxuICAgICAgLy8gICBjb25zdCBjYXRlZ29yaWE6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHtpZDogY30pICAgICAgICAgIFxyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKGNhdGVnb3JpYSlcclxuICAgICAgLy8gICBjb25zb2xlLmxvZyhjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCksIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSwgaS5pc0dpZnQpXHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3ZhbGlkYXRpb24nLCAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0KVxyXG4gICAgICAvLyAgIHJldHVybiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0XHJcbiAgICAgIFxyXG4gICAgICAvLyB9KVxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gaGFzQ2F0ZWdvcmllcy5sZW5ndGggPyB0cnVlIDogZmFsc2VcclxuXHJcbiAgICAvLyBpZiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcyAmJiBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aCkge1xyXG4gICAgLy8gICBjb25zdCBoYXNDYXRlZ29yaWVzID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGkpID0+IHtcclxuICAgIC8vICAgICBpZiAoaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuIFxyXG4gICAgLy8gICAgICAgcmV0dXJuIGkuY2F0ZWdvcmllcy5zb21lKGFzeW5jIChjKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IGNhdGVnb3JpYTogQ2F0ZWdvcnkgJiB7IGZpcmVzdG9yZUlkPzogc3RyaW5nIH0gPSBhd2FpdCB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXQoe2lkOiBjfSkgICAgICAgICAgXHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGNhdGVnb3JpYSlcclxuICAgIC8vICAgICAgICAgY29uc29sZS5sb2coY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpLCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCksIGkuaXNHaWZ0KVxyXG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZygndmFsaWRhdGlvbicsIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCkgfHwgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuZmlyZXN0b3JlSWQpKSAmJiAhaS5pc0dpZnQpXHJcbiAgICAvLyAgICAgICAgIHJldHVybiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0XHJcbiAgICAvLyAgICAgICB9KVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICByZXR1cm4gaGFzQ2F0ZWdvcmllcy5sZW5ndGggPyB0cnVlIDogZmFsc2VcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHJldHVybiB0cnVlXHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVzZXJWYWxpZGF0aW9uQW5kU3Vic2NyaXB0aW9uU3RhdHVzKGNvdXBvbjogQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBlbWFpbCBkbyB1c3XDoXJpbyDDqSBjb29ycG9yYXRpdm9cclxuICAgIGlmICghdGhpcy5lbWFpbElzRnJvbUNvbGxhYm9yYXRvcih1c2VyRW1haWwpICYmIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQ09MTEFCT1JBVE9SUylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVm9jw6ogbsOjbyDDqSBjb2xhYm9yYWRvci4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gZW1haWwgZG8gdXN1w6FyaW8gw6kgYXNzb2NpYWRvIGFvIGN1cG9tIGRlIHVzbyBwb3IgdXN1YXJpb1xyXG4gICAgaWYgKGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuU1BFQ0lGSUNfVVNFUiAmJiBjb3Vwb24udXNlckV4Y2x1c2l2ZUVtYWlsICE9PSB1c2VyRW1haWwpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0N1cG9tIG7Do28gw6kgdsOhbGlkbyBwYXJhIGVzdGUgdXN1w6FyaW8uJylcclxuXHJcbiAgICBjb25zdCBjb3Vwb25SdWxlU3Vic2NyaXB0aW9uID1cclxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5BQ1RJVkVfU1VCU0NSSUJFUiB8fFxyXG4gICAgICBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLklOQUNUSVZFX1NVQlNDUklCRVIgfHxcclxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5OT05fU1VCU0NSSUJFUlxyXG5cclxuICAgIGlmIChjb3Vwb25SdWxlU3Vic2NyaXB0aW9uICYmIHVzZXJFbWFpbCkge1xyXG4gICAgICBjb25zdCBzdWIgPSBhd2FpdCB0aGlzLnN1YnNjcmlwdGlvblJlcG9zaXRvcnlcclxuICAgICAgICAuZmluZCh7XHJcbiAgICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICAgIHVzZXI6IHtcclxuICAgICAgICAgICAgICBlbWFpbDogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdXNlckVtYWlsIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oKHN1YikgPT4gc3ViLmRhdGEpXHJcblxyXG4gICAgICBjb25zdCBhY3RpdmVTdWJzID0gc3ViPy5maWx0ZXIoKHMpID0+IHMuc3RhdHVzID09PSBTdGF0dXMuQUNUSVZFKVxyXG5cclxuICAgICAgc3dpdGNoIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLkFDVElWRV9TVUJTQ1JJQkVSOlxyXG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVN1YnMubGVuZ3RoID4gMFxyXG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5JTkFDVElWRV9TVUJTQ1JJQkVSOlxyXG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVN1YnMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLk5PTl9TVUJTQ1JJQkVSOlxyXG4gICAgICAgICAgcmV0dXJuIHN1Yi5sZW5ndGggPT09IDBcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRDb3Vwb25DYXRlZ29yaWVzSWQoY291cG9uOiBDb3Vwb24pIHtcclxuXHJcbiAgICAgbGV0IGNvdXBvbkNhdGVnb3JpZXM6IHsgaWQ6IHN0cmluZywgZmlyZXN0b3JlSWQ6IHN0cmluZyB9W10gPSBbXVxyXG5cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGM6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXNbaW5kZXhdIH0pICAgIFxyXG4gICAgICAgIGNvdXBvbkNhdGVnb3JpZXMucHVzaCh7IGlkOiBjLmlkLCBmaXJlc3RvcmVJZDogYy5maXJlc3RvcmVJZH0pXHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICByZXR1cm4gY291cG9uQ2F0ZWdvcmllc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXBhcmF0ZVZhbGlkQ291cG9ucyA9IChcclxuICAgIGNvdXBvbnM6IENvdXBvbltdLFxyXG4gICAgdXNlckVtYWlsOiBzdHJpbmcsXHJcbiAgKTogeyB2YWxpZHM6IENvdXBvbltdOyBpbnZhbGlkczogSW52YWxpZENvdXBvbkVycm9yW10gfSA9PlxyXG4gICAgY291cG9uc1xyXG4gICAgICAubWFwKChjb3Vwb24pID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKCEoY291cG9uIGluc3RhbmNlb2YgQ291cG9uKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gaW52w6FsaWRvLicpXHJcbiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSkgcmV0dXJuIGNvdXBvblxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IgYXMgSW52YWxpZENvdXBvbkVycm9yXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAucmVkdWNlKFxyXG4gICAgICAgIChjdXJyZW50LCBjb3Vwb24pID0+ICh7XHJcbiAgICAgICAgICAuLi5jdXJyZW50LFxyXG4gICAgICAgICAgLi4uKGNvdXBvbiBpbnN0YW5jZW9mIENvdXBvblxyXG4gICAgICAgICAgICA/IHsgdmFsaWRzOiBbLi4uY3VycmVudC52YWxpZHMsIGNvdXBvbl0gfVxyXG4gICAgICAgICAgICA6IHsgaW52YWxpZHM6IFsuLi5jdXJyZW50LmludmFsaWRzLCBjb3Vwb25dIH0pLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbGlkczogW10gYXMgQ291cG9uW10sXHJcbiAgICAgICAgICBpbnZhbGlkczogW10gYXMgSW52YWxpZENvdXBvbkVycm9yW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG59XHJcbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBS0wsYUFBYSxFQUNiLE1BQU0sRUFFTixXQUFXLEVBQ1gsYUFBYSxFQUdiLEtBQUssRUFDTCxNQUFNLEVBRU4sS0FBSyxFQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQyxFQUN6QixzQkFBOEMsRUFDbEQsa0JBQXNDO1FBSnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFDYixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUNsRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBMEIvRSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQW9PNUYseUJBQW9CLEdBQUcsQ0FDN0Is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LENBQUMsZUFBZSxFQUFFO29CQUM5QixLQUFLLGFBQWEsQ0FBQyxpQkFBaUI7d0JBQ2xDLE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7b0JBQzlCLEtBQUssYUFBYSxDQUFDLG1CQUFtQjt3QkFDcEMsT0FBTyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtvQkFDaEMsS0FBSyxhQUFhLENBQUMsY0FBYzt3QkFDL0IsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtvQkFDekI7d0JBQ0UsT0FBTyxLQUFLLENBQUE7aUJBQ2Y7YUFDRjtZQUVELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztLQUFBOzsyR0FsUVUsYUFBYSxrQkFFZCxrQkFBa0IsYUFDbEIsWUFBWSxhQUNaLGlCQUFpQixhQUNqQix3QkFBd0IsYUFDeEIsb0JBQW9COytHQU5uQixhQUFhLGNBRlosTUFBTTs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBR0ksTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsd0JBQXdCOzswQkFDL0IsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBDaGVja291dCxcclxuICBDaGVja291dFN1YnNjcmlwdGlvbixcclxuICBDaGVja291dFR5cGVzLFxyXG4gIENvdXBvbixcclxuICBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gIENvdXBvblR5cGVzLFxyXG4gIEV4Y2x1c2l2aXRpZXMsXHJcbiAgTGluZUl0ZW0sXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIFNob3BzLFxyXG4gIFN0YXR1cyxcclxuICBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gIFdoZXJlXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvdXBvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ291cG9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY291cG9uUmVwb3NpdG9yeTogQ291cG9uUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICApIHt9XHJcblxyXG4gIGNoZWNrQ291cG9uKFxyXG4gICAgbmlja25hbWU6IHN0cmluZyxcclxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxyXG4gICAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzLFxyXG4gICAgcGxhbj86IHN0cmluZyxcclxuICAgIGNoZWNrb3V0PzogUGFydGlhbDxDaGVja291dD4sXHJcbiAgICBpc1N1YnNjcmlwdGlvbj86IGJvb2xlYW4sXHJcbiAgKTogT2JzZXJ2YWJsZTxDb3Vwb24+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLmNvdXBvblJlcG9zaXRvcnkuZmluZCh7XHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgbmlja25hbWU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IG5pY2tuYW1lIH0sXHJcbiAgICAgICAgICBhY3RpdmU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KSxcclxuICAgICkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PiB0aGlzLmNoZWNrQ291cG9uUnVsZXMoY291cG9ucywgY2hlY2tvdXRUeXBlLCBwbGFuLCBjaGVja291dCwgaXNTdWJzY3JpcHRpb24pKSxcclxuICAgICAgY29uY2F0TWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5jaGVja0NvdXBvblVzZUFuZExpbWl0KGNvdXBvbiwgdXNlckVtYWlsLCBjaGVja291dCkpLFxyXG4gICAgICBtYXAoKGNvdXBvbjogQ291cG9uKSA9PiB0aGlzLmlzVmFsaWRDb3Vwb24oY291cG9uLCB1c2VyRW1haWwpKSxcclxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gY291cG9uKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IgPSAodXNlckVtYWlsOiBzdHJpbmcpOiBib29sZWFuID0+ICEhdXNlckVtYWlsPy5tYXRjaCgvQGI0YS5jb20uYnIvZylcclxuXHJcbiAgcHJpdmF0ZSBjaGVja0NvdXBvblJ1bGVzKFxyXG4gICAgY291cG9ucyxcclxuICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyxcclxuICAgIHBsYW4/OiBzdHJpbmcsXHJcbiAgICBjaGVja291dD86IFBhcnRpYWw8Q2hlY2tvdXQ+LFxyXG4gICAgaXNTdWJzY3JpcHRpb24/OiBib29sZWFuLFxyXG4gICkge1xyXG4gICAgLy8gQ2FzbyBuw6NvIGFjaGUgbmVuaHVtIGN1cG9tLCByZXRvcm5hIGVycm9cclxuICAgIGlmIChjb3Vwb25zLmNvdW50IDwgMSkge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvLicpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IFByaW1laXJvIEN1cG9tIChvIGZpbmQgZG8gcmVwb3NpdG9yeSByZXRvcm5hIHVtIGFycmF5KVxyXG4gICAgY29uc3QgY291cG9uOiBDb3Vwb24gPSBjb3Vwb25zLmRhdGEuc2hpZnQoKVxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjdXBvbSDDqSBhcGxpY2F2ZWwgbmEgbG9qYVxyXG4gICAgY29uc3QgaXNJblNob3AgPSBjb3Vwb24uc2hvcEF2YWlsYWJpbGl0eSA9PT0gU2hvcHMuQUxMIHx8IGNvdXBvbi5zaG9wQXZhaWxhYmlsaXR5ID09PSB0aGlzLmRlZmF1bHRTaG9wXHJcblxyXG4gICAgLy8gQ3Vwb24gbsOjbyBhcGxpY2F2ZWwgYSBsb2phIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFpc0luU2hvcCkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkbyBwYXJhIGxvamEuJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGNvdXBvbiDDqSBhcGxpY2FkbyBubyBjaGVja291dCBxdWUgZXN0w6Egc2VuZG8gcmVhbGl6YWRvXHJcbiAgICBjb25zdCBpc0NoZWNrb3V0VHlwZSA9IGNvdXBvbi5jaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNvdXBvbi5jaGVja291dFR5cGUgPT09IGNoZWNrb3V0VHlwZVxyXG5cclxuICAgIC8vIEN1cG9uIG7Do28gYXBsaWNhdmVsIGFvIGNoZWNrb3V0IHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFpc0NoZWNrb3V0VHlwZSkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkby4gRXJybyBkZSBjaGVja291dC4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY3Vwb20gw6kgb3UgcG9kZSBzZXIgYXBsaWNhZG8gcGFyYSBzdWJzY3JpcHRpb25cclxuICAgIGlmIChjaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04pIHtcclxuICAgICAgLy8gU2UgbyBjdXBvbSB0aXZlciB1bSBwbGFubyBhc3NvY2lhZG8sIHZlcmlmaWNhIHNlIMOpIG8gbWVzbW8gcGxhbm8gZG8gY2hlY2tvdXQgZGEgYXNzaW5hdHVyYVxyXG4gICAgICBpZiAoY291cG9uLnBsYW4gJiYgY291cG9uLnBsYW4udG9VcHBlckNhc2UoKSAhPT0gcGxhbi50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8gcGFyYSBzdWEgYXNzaW5hdHVyYS4nKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1N1YnNjcmlwdGlvbikgcmV0dXJuIG9mKGNvdXBvbilcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBwb3NzdWkgbyB2YWxvciBtaW5pbW8gZGUgY29tcHJhIHBhcmEgdXRpbGl6YcOnw6NvIGRvIGN1cG9tXHJcbiAgICBjb25zdCBoYXNNaW5TdWJUb3RhbCA9IHRoaXMuaGFzTWluU3ViVG90YWwoY291cG9uLCBjaGVja291dClcclxuXHJcbiAgICAvLyBTZSBuw6NvIHRlbSB2YWxvciBtw61uaW1vIGF0aW5naWRvLCByZXRvcm5hIGVycm9cclxuICAgIGlmICghaGFzTWluU3ViVG90YWwpIHJldHVybiB0aHJvd0Vycm9yKCdWYWxvciBtw61uaW1vIG7Do28gYXRpbmdpZG8nKVxyXG5cclxuICAgIHJldHVybiBvZihjb3Vwb24pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmFsaWRDb3Vwb24oY291cG9uOiBDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nKTogQ291cG9uIHtcclxuICAgIC8vIFZlcmlmaWNhIGEgZGF0YSBkZSBpbmljaW8gZGUgdmFsaWRhZGUgZG8gY3Vwb21cclxuICAgIGlmIChjb3Vwb24/LmJlZ2luQXQgPiBuZXcgRGF0ZSgpKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBhaW5kYSBuw6NvIGxpYmVyYWRvLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgYSBkYXRhIGRlIHZhbGlkYWRlIGRvIGN1cG9tXHJcbiAgICBpZiAoY291cG9uPy5leHBpcmVzSW4gPCBuZXcgRGF0ZSgpKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBleHBpcmFkby4nKVxyXG5cclxuICAgIHJldHVybiBjb3Vwb25cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0KSB7XHJcbiAgICAvLyBCdXNjYSBvcmRlcnMgcXVlIHBvc3N1ZW0gbyBjdXBvbSBlIHF1ZSBlc3TDo28gcGFnYXNcclxuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoe1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSxcclxuICAgICAgICBwYXltZW50OiB7IHN0YXR1czogJ3BhaWQnIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIC8vIG9yZGVycyBxdWUgdXN1YXJpbyBqYSBmZXogY29tIG8gY3Vwb21cclxuICAgIGNvbnN0IG9yZGVyc1VzZXJDb3Vwb24gPSBvcmRlcnMuZGF0YS5maWx0ZXIoKG8pID0+IG8udXNlci5lbWFpbCA9PSB1c2VyRW1haWwpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgbyBsaW1pdGUgZGUgdXNvIGRlIGN1cG9tIHBvciB1c3VhcmlvXHJcbiAgICBpZiAoY291cG9uLnVzZUxpbWl0UGVyVXNlciAmJiBvcmRlcnNVc2VyQ291cG9uLmxlbmd0aClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignTGltaXRlIGRlIHVzbyBwb3IgdXN1w6FyaW8gYXRpbmdpZG8uJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBvIGxpbWl0ZSBkZSB1c28gZ2VyYWwgcG9yIHVzdWFyaW9cclxuICAgIGlmIChjb3Vwb24udXNlTGltaXQgJiYgb3JkZXJzLmRhdGEubGVuZ3RoID49IGNvdXBvbi51c2VMaW1pdClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignTGltaXRlIGRlIHVzbyBhdGluZ2lkby4nKVxyXG5cclxuICAgIGNvbnN0IHZhbGlkVXNlciA9IGF3YWl0IHRoaXMudXNlclZhbGlkYXRpb25BbmRTdWJzY3JpcHRpb25TdGF0dXMoY291cG9uLCB1c2VyRW1haWwpXHJcbiAgICBpZiAoIXZhbGlkVXNlcikgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVXN1w6FyaW8gbsOjbyBlbGVnw612ZWwuJylcclxuXHJcbiAgICAgLy8gVmVyaWZpY2Egc2UgYSBjb21wcmEgcG9zc3VpIHByb2R1dG9zIGVsZWfDrXZlaXMgcGFyYSBkZXNjb250b1xyXG4gICAgY29uc3QgaGFzUHJvZHVjdENhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmhhc1Byb2R1Y3RDYXRlZ29yaWVzKGNvdXBvbiwgY2hlY2tvdXQpXHJcbiAgICBjb25zb2xlLmxvZygnaGFzUHJvZHVjdENhdGVnb3JpZXMnLCBoYXNQcm9kdWN0Q2F0ZWdvcmllcylcclxuICAgIC8vIFNlIG7Do28gdGVtIHByb2R1dG9zIGVsZWfDrXZlaXMsIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFoYXNQcm9kdWN0Q2F0ZWdvcmllcykgcmV0dXJuIHRocm93RXJyb3IoJ1NldSBjYXJyaW5obyBuw6NvIHBvc3N1aSBwcm9kdXRvcyBlbGVnw612ZWlzIHBhcmEgZGVzY29udG8uJylcclxuICAgIFxyXG4gICAgcmV0dXJuIGNvdXBvblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXRTdWJzY3JpcHRpb24+KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIC8vXHJcbiAgICBsZXQgZGlzY291bnQgPSAwXHJcblxyXG4gICAgaWYgKGNvdXBvbi50eXBlID09PSBDb3Vwb25UeXBlcy5BQlNPTFVURSkgZGlzY291bnQgPSBjb3Vwb24uZGlzY291bnRcclxuICAgIGVsc2UgaWYgKGNvdXBvbi50eXBlID09PSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFKVxyXG4gICAgICBkaXNjb3VudCA9IGNoZWNrb3V0LnN1YnNjcmlwdGlvblBsYW4ucmVjdXJyZW5jZVByaWNlICogKGNvdXBvbi5kaXNjb3VudCAvIDEwMClcclxuXHJcbiAgICByZXR1cm4gb2YoZGlzY291bnQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY0Rpc2NvdW50U2hvcHBpbmcoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBsZXQgZGlzY291bnQgPSAwXHJcblxyXG4gICAgc3dpdGNoIChjb3Vwb24udHlwZSkge1xyXG4gICAgICBjYXNlIENvdXBvblR5cGVzLkFCU09MVVRFOiB7XHJcbiAgICAgICAgZGlzY291bnQgPSBjb3Vwb24uZGlzY291bnRcclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlIENvdXBvblR5cGVzLlBFUkNFTlRBR0U6IHtcclxuICAgICAgICBkaXNjb3VudCA9IHRoaXMuY2FsY1Nob3BwaW5nUGVyY2VudGFnZURpc2NvdW50KGNvdXBvbiwgY2hlY2tvdXQpXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvZihkaXNjb3VudClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY1Nob3BwaW5nUGVyY2VudGFnZURpc2NvdW50KGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBudW1iZXIge1xyXG4gICAgbGV0IGRpc2NvdW50ID0gMFxyXG4gICAgY29uc3Qgc2hvcCA9IGNoZWNrb3V0LnNob3BcclxuICAgIGxldCBsaW5lSXRlbnNEaXNjb3VudCA9IFtdXHJcblxyXG4gICAgaWYgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMgJiYgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgICAgbGluZUl0ZW5zRGlzY291bnQgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcigoaSkgPT4ge1xyXG4gICAgICAgIGlmIChpLmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGkuY2F0ZWdvcmllcy5zb21lKChjKSA9PiBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGMpKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGluZUl0ZW5zRGlzY291bnQgPSBjaGVja291dC5saW5lSXRlbXNcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdWJUb3RhbCA9XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50LnJlZHVjZShcclxuICAgICAgICAoYWNjLCBjdXJyOiBMaW5lSXRlbSkgPT5cclxuICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlciAmJiBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2VcclxuICAgICAgICAgICAgPyBhY2MgKyBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2UgKiBjdXJyLnF1YW50aXR5XHJcbiAgICAgICAgICAgIDogYWNjICsgY3Vyci5wcmljZVBhaWQgKiBjdXJyLnF1YW50aXR5LFxyXG4gICAgICAgIDAsXHJcbiAgICAgICkgfHwgMFxyXG5cclxuICAgIGRpc2NvdW50ID0gc3ViVG90YWwgKiAoY291cG9uLmRpc2NvdW50IC8gMTAwKVxyXG5cclxuICAgIHJldHVybiBkaXNjb3VudFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNNaW5TdWJUb3RhbChjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWNvdXBvbi5taW5TdWJUb3RhbFZhbHVlKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAgIGNvbnN0IHNob3AgPSBjaGVja291dC5zaG9wXHJcblxyXG4gICAgbGV0IHN1YlRvdGFsID1cclxuICAgICAgY2hlY2tvdXQubGluZUl0ZW1zPy5yZWR1Y2UoXHJcbiAgICAgICAgKGFjYywgY3VycikgPT5cclxuICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlciAmJiBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2VcclxuICAgICAgICAgICAgPyBhY2MgKyBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2UgKiBjdXJyLnF1YW50aXR5XHJcbiAgICAgICAgICAgIDogYWNjICsgY3Vyci5wcmljZVBhaWQgKiBjdXJyLnF1YW50aXR5LFxyXG4gICAgICAgIDAsXHJcbiAgICAgICkgfHwgMFxyXG5cclxuICAgIGlmIChjb3Vwb24ubWluU3ViVG90YWxWYWx1ZSA8PSBzdWJUb3RhbCkgcmV0dXJuIHRydWVcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYXNQcm9kdWN0Q2F0ZWdvcmllcyhjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcyAmJiBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBoYXNDYXRlZ29yaWVzID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGkpID0+IHtcclxuICAgICAgICBpZiAoaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuIFxyXG4gICAgICAgICAgcmV0dXJuIGkuY2F0ZWdvcmllcy5zb21lKGFzeW5jIChjKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpYTogQ2F0ZWdvcnkgJiB7IGZpcmVzdG9yZUlkPzogc3RyaW5nIH0gPSBhd2FpdCB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXQoe2lkOiBjfSkgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNhdGVnb3JpYSlcclxuICAgICAgICAgICAgY29uc29sZS5sb2coY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpLCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCksIGkuaXNHaWZ0KVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndmFsaWRhdGlvbicsIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCkgfHwgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuZmlyZXN0b3JlSWQpKSAmJiAhaS5pc0dpZnQpXHJcbiAgICAgICAgICAgIHJldHVybiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm4gaGFzQ2F0ZWdvcmllcy5sZW5ndGggPyB0cnVlIDogZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVzZXJWYWxpZGF0aW9uQW5kU3Vic2NyaXB0aW9uU3RhdHVzKGNvdXBvbjogQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBlbWFpbCBkbyB1c3XDoXJpbyDDqSBjb29ycG9yYXRpdm9cclxuICAgIGlmICghdGhpcy5lbWFpbElzRnJvbUNvbGxhYm9yYXRvcih1c2VyRW1haWwpICYmIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQ09MTEFCT1JBVE9SUylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVm9jw6ogbsOjbyDDqSBjb2xhYm9yYWRvci4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gZW1haWwgZG8gdXN1w6FyaW8gw6kgYXNzb2NpYWRvIGFvIGN1cG9tIGRlIHVzbyBwb3IgdXN1YXJpb1xyXG4gICAgaWYgKGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuU1BFQ0lGSUNfVVNFUiAmJiBjb3Vwb24udXNlckV4Y2x1c2l2ZUVtYWlsICE9PSB1c2VyRW1haWwpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0N1cG9tIG7Do28gw6kgdsOhbGlkbyBwYXJhIGVzdGUgdXN1w6FyaW8uJylcclxuXHJcbiAgICBjb25zdCBjb3Vwb25SdWxlU3Vic2NyaXB0aW9uID1cclxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5BQ1RJVkVfU1VCU0NSSUJFUiB8fFxyXG4gICAgICBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLklOQUNUSVZFX1NVQlNDUklCRVIgfHxcclxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5OT05fU1VCU0NSSUJFUlxyXG5cclxuICAgIGlmIChjb3Vwb25SdWxlU3Vic2NyaXB0aW9uICYmIHVzZXJFbWFpbCkge1xyXG4gICAgICBjb25zdCBzdWIgPSBhd2FpdCB0aGlzLnN1YnNjcmlwdGlvblJlcG9zaXRvcnlcclxuICAgICAgICAuZmluZCh7XHJcbiAgICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICAgIHVzZXI6IHtcclxuICAgICAgICAgICAgICBlbWFpbDogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdXNlckVtYWlsIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oKHN1YikgPT4gc3ViLmRhdGEpXHJcblxyXG4gICAgICBjb25zdCBhY3RpdmVTdWJzID0gc3ViPy5maWx0ZXIoKHMpID0+IHMuc3RhdHVzID09PSBTdGF0dXMuQUNUSVZFKVxyXG5cclxuICAgICAgc3dpdGNoIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLkFDVElWRV9TVUJTQ1JJQkVSOlxyXG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVN1YnMubGVuZ3RoID4gMFxyXG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5JTkFDVElWRV9TVUJTQ1JJQkVSOlxyXG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVN1YnMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLk5PTl9TVUJTQ1JJQkVSOlxyXG4gICAgICAgICAgcmV0dXJuIHN1Yi5sZW5ndGggPT09IDBcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXBhcmF0ZVZhbGlkQ291cG9ucyA9IChcclxuICAgIGNvdXBvbnM6IENvdXBvbltdLFxyXG4gICAgdXNlckVtYWlsOiBzdHJpbmcsXHJcbiAgKTogeyB2YWxpZHM6IENvdXBvbltdOyBpbnZhbGlkczogSW52YWxpZENvdXBvbkVycm9yW10gfSA9PlxyXG4gICAgY291cG9uc1xyXG4gICAgICAubWFwKChjb3Vwb24pID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKCEoY291cG9uIGluc3RhbmNlb2YgQ291cG9uKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gaW52w6FsaWRvLicpXHJcbiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSkgcmV0dXJuIGNvdXBvblxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IgYXMgSW52YWxpZENvdXBvbkVycm9yXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAucmVkdWNlKFxyXG4gICAgICAgIChjdXJyZW50LCBjb3Vwb24pID0+ICh7XHJcbiAgICAgICAgICAuLi5jdXJyZW50LFxyXG4gICAgICAgICAgLi4uKGNvdXBvbiBpbnN0YW5jZW9mIENvdXBvblxyXG4gICAgICAgICAgICA/IHsgdmFsaWRzOiBbLi4uY3VycmVudC52YWxpZHMsIGNvdXBvbl0gfVxyXG4gICAgICAgICAgICA6IHsgaW52YWxpZHM6IFsuLi5jdXJyZW50LmludmFsaWRzLCBjb3Vwb25dIH0pLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbGlkczogW10gYXMgQ291cG9uW10sXHJcbiAgICAgICAgICBpbnZhbGlkczogW10gYXMgSW52YWxpZENvdXBvbkVycm9yW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG59XHJcbiJdfQ==
|
|
@@ -167,9 +167,10 @@ class CouponService {
|
|
|
167
167
|
throw new InvalidCouponError('Usuário não elegível.');
|
|
168
168
|
// Verifica se a compra possui produtos elegíveis para desconto
|
|
169
169
|
const hasProductCategories = yield this.hasProductCategories(coupon, checkout);
|
|
170
|
+
console.log('hasProductCategories', hasProductCategories);
|
|
170
171
|
// Se não tem produtos elegíveis, retorna erro
|
|
171
172
|
if (!hasProductCategories)
|
|
172
|
-
|
|
173
|
+
return throwError('Seu carrinho não possui produtos elegíveis para desconto.');
|
|
173
174
|
return coupon;
|
|
174
175
|
});
|
|
175
176
|
}
|
|
@@ -183,49 +184,44 @@ class CouponService {
|
|
|
183
184
|
return of(discount);
|
|
184
185
|
}
|
|
185
186
|
calcDiscountShopping(coupon, checkout) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
break;
|
|
192
|
-
}
|
|
193
|
-
case CouponTypes.PERCENTAGE: {
|
|
194
|
-
discount = yield this.calcShoppingPercentageDiscount(coupon, checkout);
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
187
|
+
let discount = 0;
|
|
188
|
+
switch (coupon.type) {
|
|
189
|
+
case CouponTypes.ABSOLUTE: {
|
|
190
|
+
discount = coupon.discount;
|
|
191
|
+
break;
|
|
197
192
|
}
|
|
198
|
-
|
|
199
|
-
|
|
193
|
+
case CouponTypes.PERCENTAGE: {
|
|
194
|
+
discount = this.calcShoppingPercentageDiscount(coupon, checkout);
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return of(discount);
|
|
200
199
|
}
|
|
201
200
|
calcShoppingPercentageDiscount(coupon, checkout) {
|
|
202
201
|
var _a;
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
discount = subTotal * (coupon.discount / 100);
|
|
227
|
-
return discount;
|
|
228
|
-
});
|
|
202
|
+
let discount = 0;
|
|
203
|
+
const shop = checkout.shop;
|
|
204
|
+
let lineItensDiscount = [];
|
|
205
|
+
if (coupon.productsCategories && coupon.productsCategories.length) {
|
|
206
|
+
lineItensDiscount = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
|
|
207
|
+
var _a;
|
|
208
|
+
if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
|
|
209
|
+
return i.categories.some((c) => coupon.productsCategories.includes(c));
|
|
210
|
+
}
|
|
211
|
+
return true;
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
lineItensDiscount = checkout.lineItems;
|
|
216
|
+
}
|
|
217
|
+
const subTotal = lineItensDiscount.reduce((acc, curr) => {
|
|
218
|
+
var _a, _b, _c;
|
|
219
|
+
return ((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.isSubscriber) && ((_b = curr.price[shop]) === null || _b === void 0 ? void 0 : _b.subscriberPrice)
|
|
220
|
+
? acc + ((_c = curr.price[shop]) === null || _c === void 0 ? void 0 : _c.subscriberPrice) * curr.quantity
|
|
221
|
+
: acc + curr.pricePaid * curr.quantity;
|
|
222
|
+
}, 0) || 0;
|
|
223
|
+
discount = subTotal * (coupon.discount / 100);
|
|
224
|
+
return discount;
|
|
229
225
|
}
|
|
230
226
|
hasMinSubTotal(coupon, checkout) {
|
|
231
227
|
var _a;
|
|
@@ -245,25 +241,25 @@ class CouponService {
|
|
|
245
241
|
hasProductCategories(coupon, checkout) {
|
|
246
242
|
var _a;
|
|
247
243
|
return __awaiter(this, void 0, void 0, function* () {
|
|
248
|
-
if (
|
|
244
|
+
if (coupon.productsCategories && coupon.productsCategories.length) {
|
|
245
|
+
const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
|
|
246
|
+
var _a;
|
|
247
|
+
if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
|
|
248
|
+
return i.categories.some((c) => __awaiter(this, void 0, void 0, function* () {
|
|
249
|
+
const categoria = yield this.categoryRepository.get({ id: c });
|
|
250
|
+
console.log(categoria);
|
|
251
|
+
console.log(coupon.productsCategories.includes(categoria.id), coupon.productsCategories.includes(categoria.firestoreId), i.isGift);
|
|
252
|
+
console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift);
|
|
253
|
+
return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift;
|
|
254
|
+
}));
|
|
255
|
+
}
|
|
256
|
+
return true;
|
|
257
|
+
});
|
|
258
|
+
return hasCategories.length ? true : false;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
249
261
|
return true;
|
|
250
262
|
}
|
|
251
|
-
const couponCategories = yield this.getCouponCategoriesId(coupon);
|
|
252
|
-
const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter(i => {
|
|
253
|
-
var _a;
|
|
254
|
-
if (!i.categories || !((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length))
|
|
255
|
-
return true;
|
|
256
|
-
return i.categories.some((c) => couponCategories.some(cat => (cat.id == c || cat.firestoreId == c)));
|
|
257
|
-
// return i.categories.some(async (c) => {
|
|
258
|
-
// console.log('some category c', c)
|
|
259
|
-
// const categoria: Category & { firestoreId?: string } = await this.categoryRepository.get({id: c})
|
|
260
|
-
// console.log(categoria)
|
|
261
|
-
// console.log(coupon.productsCategories.includes(categoria.id), coupon.productsCategories.includes(categoria.firestoreId), i.isGift)
|
|
262
|
-
// console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift)
|
|
263
|
-
// return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift
|
|
264
|
-
// })
|
|
265
|
-
});
|
|
266
|
-
return hasCategories.length ? true : false;
|
|
267
263
|
});
|
|
268
264
|
}
|
|
269
265
|
userValidationAndSubscriptionStatus(coupon, userEmail) {
|
|
@@ -302,16 +298,6 @@ class CouponService {
|
|
|
302
298
|
return true;
|
|
303
299
|
});
|
|
304
300
|
}
|
|
305
|
-
getCouponCategoriesId(coupon) {
|
|
306
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
307
|
-
let couponCategories = [];
|
|
308
|
-
for (let index = 0; index < coupon.productsCategories.length; index++) {
|
|
309
|
-
let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
|
|
310
|
-
couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
|
|
311
|
-
}
|
|
312
|
-
return couponCategories;
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
301
|
}
|
|
316
302
|
CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }, { token: 'OrderRepository' }, { token: 'SubscriptionRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
317
303
|
CouponService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, providedIn: 'root' });
|
|
@@ -365,7 +351,7 @@ class CheckoutService {
|
|
|
365
351
|
return of();
|
|
366
352
|
}
|
|
367
353
|
calcDiscount(coupon) {
|
|
368
|
-
return this.getCheckout().pipe(concatMap((checkout) =>
|
|
354
|
+
return this.getCheckout().pipe(concatMap((checkout) => this.couponService.calcDiscountShopping(coupon, checkout).pipe()));
|
|
369
355
|
}
|
|
370
356
|
checkCoupon(nickname, checkoutType) {
|
|
371
357
|
return this.getCheckout().pipe(concatMap((checkout) => {
|