simpo-component-library 1.4.55 → 1.4.57

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.
@@ -41,15 +41,15 @@ export class CartComponent extends BaseSection {
41
41
  this.userDetails = null;
42
42
  this.userCart = null;
43
43
  this.USER_CART_ITEMS = null;
44
- }
45
- ngOnInit() {
46
- const billdetails = {
44
+ this.billdetails = {
47
45
  "totalNetValue": 0,
48
46
  "totalGrossValue": 0,
49
47
  "totalTax": 0,
50
48
  "totalOfferedValue": 0,
51
49
  "deliveryCharges": 0
52
50
  };
51
+ }
52
+ ngOnInit() {
53
53
  this._eventService.showLoadingScreen.subscribe((response) => {
54
54
  this.isLoading = response;
55
55
  });
@@ -65,11 +65,11 @@ export class CartComponent extends BaseSection {
65
65
  console.log("cart Data", cartData);
66
66
  this.USER_CART_ITEMS = cartData.target.result;
67
67
  [...tempUserCart, ...this.USER_CART_ITEMS].forEach((item) => {
68
- billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
69
- billdetails.totalTax += (item.price * (item.itemTax ?? 1));
68
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
69
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
70
70
  });
71
- billdetails.totalNetValue = billdetails.totalGrossValue + billdetails.totalTax - billdetails.deliveryCharges;
72
- this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails };
71
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
72
+ this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails: this.billdetails };
73
73
  console.log(this.responseData);
74
74
  };
75
75
  });
@@ -80,11 +80,11 @@ export class CartComponent extends BaseSection {
80
80
  console.log("cart Data", cartData);
81
81
  this.USER_CART_ITEMS = cartData.target.result;
82
82
  [...this.USER_CART_ITEMS].forEach((item) => {
83
- billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
84
- billdetails.totalTax += (item.price * (item.itemTax ?? 1));
83
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
84
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
85
85
  });
86
- billdetails.totalNetValue = billdetails.totalGrossValue + billdetails.totalTax - billdetails.deliveryCharges;
87
- this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails, userId: this.userDetails?.userId };
86
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
87
+ this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails: this.billdetails, userId: this.userDetails?.userId };
88
88
  console.log(this.responseData);
89
89
  this.restService.addItemToDB(this.responseData).subscribe((response) => {
90
90
  localStorage.setItem('cartId', response.data?.cartId);
@@ -100,11 +100,11 @@ export class CartComponent extends BaseSection {
100
100
  cartResponse.onsuccess = (cartData) => {
101
101
  this.USER_CART_ITEMS = cartData.target.result;
102
102
  this.USER_CART_ITEMS.forEach((item) => {
103
- billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
104
- billdetails.totalTax += (item.price * (item.itemTax ?? 1));
103
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
104
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
105
105
  });
106
- billdetails.totalNetValue = billdetails.totalGrossValue + billdetails.totalTax - billdetails.deliveryCharges;
107
- this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails };
106
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
107
+ this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails: this.billdetails };
108
108
  };
109
109
  });
110
110
  // this.responseData = this.storageService.calculateBillingDetails();
@@ -135,10 +135,16 @@ export class CartComponent extends BaseSection {
135
135
  removeItem(item) {
136
136
  item.quantity = 0;
137
137
  this.loadingItems.push(item.itemId);
138
- // this.cartService.addItemFromCartPage(item).subscribe((response)=> {
139
- // this.loadingItems = this.loadingItems.filter((idx: string)=> idx != item.itemId);
140
- // this.responseData = this.storageService.calculateBillingDetails();
141
- // })
138
+ this.cartService.addItemFromCartPage(item, this.responseData).subscribe((response) => {
139
+ this.loadingItems = this.loadingItems.filter((idx) => idx != item.itemId);
140
+ // this.responseData = this.storageService.calculateBillingDetails();
141
+ response?.data?.orderedItems.forEach((item) => {
142
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
143
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
144
+ });
145
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
146
+ this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails: this.billdetails };
147
+ });
142
148
  }
143
149
  addToCart(item, type) {
144
150
  if (type == 'ADD') {
@@ -148,10 +154,15 @@ export class CartComponent extends BaseSection {
148
154
  item.quantity -= 1;
149
155
  }
150
156
  this.loadingItems.push(item.itemId);
151
- // this.cartService.addItemFromCartPage(item).subscribe((response)=> {
152
- // this.loadingItems = this.loadingItems.filter((idx: string)=> idx != item.itemId);
153
- // this.responseData = this.storageService.calculateBillingDetails();
154
- // })
157
+ this.cartService.addItemFromCartPage(item, this.responseData).subscribe((response) => {
158
+ this.loadingItems = this.loadingItems.filter((idx) => idx != item.itemId);
159
+ response?.data?.orderedItems.forEach((item) => {
160
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
161
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
162
+ });
163
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
164
+ this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails: this.billdetails };
165
+ });
155
166
  }
156
167
  proceedToPayment() {
157
168
  if (!this.storageService.getUser()) {
@@ -212,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
212
223
  }], delete: [{
213
224
  type: Input
214
225
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXJ0L2NhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2FydC9jYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLFFBQVEsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUEwQnRFLE1BQU0s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QkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBRWpCO21QQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZGRyZXNzLCBDYXJ0U2VjdGlvbk1vZGFsLCBDYXJ0U2VjdGlvblN0eWxlc01vZGVsIH0gZnJvbSAnLi9jYXJ0Lm1vZGFsJztcclxuaW1wb3J0IHsgQ2FydCB9IGZyb20gJy4uLy4uL3N0eWxlcy9jYXJ0Lm1vZGFsJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgVXNlckluZm8gZnJvbSAnLi8uLi8uLi9qc29uL3VzZXItZGV0YWlscy5qc29uJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSBcIi4uL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRlVXNlckNvbXBvbmVudCB9IGZyb20gJy4uL2F1dGhlbnRpY2F0ZS11c2VyL2F1dGhlbnRpY2F0ZS11c2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1jYXJ0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLCBcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIC8vRElSRUNUSVZFXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsIFxyXG4gICAgQWRkcmVzc0NvbXBvbmVudCxcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NhcnQuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbntcclxuICBASW5wdXQoKSBkYXRhPzogQ2FydFNlY3Rpb25Nb2RhbDtcclxuICBASW5wdXQoKSByZXNwb25zZURhdGE/OiBhbnk7XHJcbiAgQElucHV0KCkgaW5kZXg/IDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGVkaXQ/IDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2VsZWN0ZWRBZGRyZXNzSWR4OiBudW1iZXIgPSAtMTtcclxuICBzdHlsZXM/OiBDYXJ0U2VjdGlvblN0eWxlc01vZGVsO1xyXG4gIHB1YmxpYyBjdXJyZW50VGFiOiAnQkFHJyB8ICdBRERSRVNTJyB8ICdQQVlNRU5UJyA9IFwiQkFHXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZTogQ29va2llU2VydmljZVxyXG4gICl7XHJcbiAgICBzdXBlcigpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRpbmdJdGVtczogc3RyaW5nW10gPSBbXTtcclxuICBwcml2YXRlIHVzZXJEZXRhaWxzOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSB1c2VyQ2FydDogQ2FydCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9DQVJUX0lURU1TOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgY29uc3QgYmlsbGRldGFpbHM6IGFueSA9IHtcclxuICAgICAgXCJ0b3RhbE5ldFZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxHcm9zc1ZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgICAgXCJ0b3RhbE9mZmVyZWRWYWx1ZVwiOiAwLFxyXG4gICAgICBcImRlbGl2ZXJ5Q2hhcmdlc1wiOiAwXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VySXRlbXModGhpcy51c2VyRGV0YWlscy51c2VySWQsIFwiQ0FSVFwiKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIGNvbnN0IHRlbXBVc2VyQ2FydCA9IHJlc3BvbnNlPy5kYXRhPy5vcmRlcmVkSXRlbXMgPz8gW11cclxuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0ZW1wVXNlckNhcnQpO1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyQ2FydCgpLnRoZW4oKGNhcnRSZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2FydCBEYXRhXCIsIGNhcnREYXRhKTtcclxuICAgICAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICBbLi4udGVtcFVzZXJDYXJ0LCAuLi50aGlzLlVTRVJfQ0FSVF9JVEVNU10uZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICAgICAgICBiaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0ucHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICAgICAgICBiaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5wcmljZSAqIChpdGVtLml0ZW1UYXggPz8gMSkpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IGJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArIGJpbGxkZXRhaWxzLnRvdGFsVGF4IC0gYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0ge29yZGVyZWRJdGVtczogWy4uLnRlbXBVc2VyQ2FydCwgLi4udGhpcy5VU0VSX0NBUlRfSVRFTVNdLCBiaWxsZGV0YWlsc307XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjYXJ0IERhdGFcIiwgY2FydERhdGEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUX0lURU1TID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgIFsuLi50aGlzLlVTRVJfQ0FSVF9JVEVNU10uZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICAgICAgICBiaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0ucHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICAgICAgICBiaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5wcmljZSAqIChpdGVtLml0ZW1UYXggPz8gMSkpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IGJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArIGJpbGxkZXRhaWxzLnRvdGFsVGF4IC0gYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0ge29yZGVyZWRJdGVtczogWy4uLnRlbXBVc2VyQ2FydCwgLi4udGhpcy5VU0VSX0NBUlRfSVRFTVNdLCBiaWxsZGV0YWlscywgdXNlcklkOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWR9O1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2VEYXRhKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMucmVzcG9uc2VEYXRhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhjYXJ0UmVzcG9uc2UpO1xyXG4gICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMgPSBjYXJ0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUy5mb3JFYWNoKChpdGVtKT0+IHtcclxuICAgICAgICAgICAgYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLnByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgICAgICBiaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5wcmljZSAqIChpdGVtLml0ZW1UYXggPz8gMSkpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSBiaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKyBiaWxsZGV0YWlscy50b3RhbFRheCAtIGJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0ge29yZGVyZWRJdGVtczogdGhpcy5VU0VSX0NBUlRfSVRFTVMsIGJpbGxkZXRhaWxzfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC8vIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5zdG9yYWdlU2VydmljZS5jYWxjdWxhdGVCaWxsaW5nRGV0YWlscygpO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gIH1cclxuXHJcbiAgcHJvY2VlZFRvQ2hlY2tvdXQoKXtcclxuICAgIGlmKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKXtcclxuICAgICAgdGhpcy5jdXJyZW50VGFiID0gXCJBRERSRVNTXCI7ICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgnXSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEF1dGhlbnRpY2F0ZVVzZXJDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAnNTB2aCcsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMzV2dycsXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2NlZWRUb0xpc3RQYWdlKCl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogYW55KSB7XHJcbiAgICBpdGVtLnF1YW50aXR5ID0gMDtcclxuICAgIHRoaXMubG9hZGluZ0l0ZW1zLnB1c2goaXRlbS5pdGVtSWQpO1xyXG4gICAgLy8gdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtRnJvbUNhcnRQYWdlKGl0ZW0pLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgLy8gICB0aGlzLmxvYWRpbmdJdGVtcyA9IHRoaXMubG9hZGluZ0l0ZW1zLmZpbHRlcigoaWR4OiBzdHJpbmcpPT4gaWR4ICE9IGl0ZW0uaXRlbUlkKTtcclxuICAgIC8vICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNhbGN1bGF0ZUJpbGxpbmdEZXRhaWxzKCk7XHJcbiAgICAvLyB9KVxyXG4gIH1cclxuICBhZGRUb0NhcnQoaXRlbTogYW55LCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICBpdGVtLnF1YW50aXR5ICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaXRlbS5xdWFudGl0eSAtPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nSXRlbXMucHVzaChpdGVtLml0ZW1JZCk7XHJcbiAgICAvLyB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAvLyAgIHRoaXMubG9hZGluZ0l0ZW1zID0gdGhpcy5sb2FkaW5nSXRlbXMuZmlsdGVyKChpZHg6IHN0cmluZyk9PiBpZHggIT0gaXRlbS5pdGVtSWQpO1xyXG4gICAgLy8gICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuY2FsY3VsYXRlQmlsbGluZ0RldGFpbHMoKTtcclxuICAgIC8vIH0pXHJcbiAgfVxyXG4gIHByb2NlZWRUb1BheW1lbnQoKSB7XHJcbiAgICBpZiAoIXRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVXNlciBub3QgbG9nZ2VkIEluXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB1c2VyRGV0YWlsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgIGNvbnNvbGUubG9nKFwiVXNlciBEZXRhaWxzXCIsIHVzZXJEZXRhaWwpO1xyXG4gICAgY29uc3QgYWRkcmVzcyA9IFVzZXJJbmZvLnVzZXIuYWRkcmVzc0RldGFpbHNMaXN0WzBdIGFzIEFkZHJlc3M7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImE6IFwiLCBVc2VyQ2FydCwgdGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJ1c2VySWRcIjogdXNlckRldGFpbC51c2VySWQgPz8gVXNlckluZm8udXNlci51c2VySWQsXHJcbiAgICAgIFwiY2FydElkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYXJ0SWQnKSxcclxuICAgICAgXCJvcmRlckFtb3VudFwiOiB0aGlzLnJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlLFxyXG4gICAgICBcImNvbnRhY3REZXRhaWxzXCI6IHtcclxuICAgICAgICBcIm5hbWVcIjogYWRkcmVzcy5yZWNlaXZlck5hbWUsXHJcbiAgICAgICAgXCJtb2JpbGVcIjogYWRkcmVzcy5yZWNlaXZlclBob25lLFxyXG4gICAgICAgIFwiY291bnRyeUNvZGVcIjogXCI5MVwiLFxyXG4gICAgICAgIFwiZW1haWxcIjogYWRkcmVzcy5yZWNlaXZlckVtYWlsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUGF5bWVudFRva2VuKHBheWxvYWQpLnN1YnNjcmliZSgocGF5bWVudERldGFpbHM6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5jYXNoRnJlZUV2ZW50LmVtaXQocGF5bWVudERldGFpbHMpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGlzSXRlbUxvYWRpbmcoaXRlbUlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRpbmdJdGVtcy5pbmNsdWRlcyhpdGVtSWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldEFkZHJlc3NMaXN0KCkge1xyXG4gICAgcmV0dXJuIFVzZXJJbmZvLnVzZXIgPyBbLi4uVXNlckluZm8udXNlcj8uYWRkcmVzc0RldGFpbHNMaXN0XSA6IFtdO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi00XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiA1MHB4O1wiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRpbWVsaW5lXCIgW25nQ2xhc3NdPVwieydpc0FjdGl2ZSc6IGN1cnJlbnRUYWIgPT0gJ0JBRyd9XCIgKGNsaWNrKT1cImN1cnJlbnRUYWIgPSAnQkFHJ1wiPkJhZzwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJhclwiPjwvZGl2PlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRpbWVsaW5lXCIgW25nQ2xhc3NdPVwieydpc0FjdGl2ZSc6IGN1cnJlbnRUYWIgPT0gJ0FERFJFU1MnfVwiIChjbGljayk9XCJjdXJyZW50VGFiID0gJ0FERFJFU1MnXCI+QWRkcmVzczwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJhclwiPjwvZGl2PlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRpbWVsaW5lXCIgW25nQ2xhc3NdPVwieydpc0FjdGl2ZSc6IGN1cnJlbnRUYWIgPT0gJ1BBWU1FTlQnfVwiIChjbGljayk9XCJjdXJyZW50VGFiID0gJ1BBWU1FTlQnXCI+UGF5bWVudDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcnQtcGFyZW50IGNvbnRhaW5lclwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPiAwXCIgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjdXJyZW50VGFiXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcGFuZWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ0JBRydcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS1iYWdcIj5cclxuICAgICAgICAgICAgTXkgQmFnJm5ic3A7IDxzcGFuPih7e3Jlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGh9fSBJdGVtcyk8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWl0ZW1zXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaXRlbS1wYXJlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiIHN0eWxlPVwicGFkZGluZzogMHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaC0yM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgaGVhZGluZy1sYXJnZVwiPnt7aXRlbS5pdGVtTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXdpdGgtdGF4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAmIzgzNzc7IHt7aXRlbS5wcmljZSArIChpdGVtLml0ZW1UYXggPz8gMCl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzSXRlbUxvYWRpbmcoaXRlbS5pdGVtSWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvQ2FydChpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0ucXVhbnRpdHl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0l0ZW1Mb2FkaW5nKGl0ZW0uaXRlbUlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+IDxpICBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiIHN0eWxlPVwiZm9udC1zaXplOjI0cHg7IG1hcmdpbi1yaWdodDogMTBweDtcIj48L2k+IDxzcGFuPkxvYWRpbmcuLi48L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBwb3NpdGlvbi1yZWxhdGl2ZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXByaWNlXCI+JiM4Mzc3OyB7eyhpdGVtLnByaWNlICsgKGl0ZW0uaXRlbVRheCA/PyAwKSkgKiBpdGVtLnF1YW50aXR5fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkZWxldGUtaXRlbVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aHIgKm5nSWY9XCJyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoICE9IChpZHggKzEpXCI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcGFuZWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FERFJFU1MnXCI+XHJcbiAgICAgICAgICA8c2ltcG8tYWRkcmVzcyBbaXNDYXJ0XT1cInRydWVcIiBbcmVzcG9uc2VEYXRhXT1cImdldEFkZHJlc3NMaXN0XCIgW3NlbGVjdGVkQWRkcmVzc0lkeF09XCJzZWxlY3RlZEFkZHJlc3NJZHhcIj48L3NpbXBvLWFkZHJlc3M+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcGFuZWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ1BBWU1FTlQnXCI+PC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtcGFuZWxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktYmFnXCI+XHJcbiAgICAgICAgICBQcmljZSBEZXRhaWxzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLWRldGFpbHNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1wYXJlbnQtYmxvY2tcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsTmV0VmFsdWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXR5cGVcIj5Ub3RhbCBQcmljZTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdmFsdWVcIj4mIzgzNzc7IHt7cmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWV9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy50b3RhbFRheFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiPlRvdGFsIFRheDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdmFsdWVcIj4mIzgzNzc7IHt7cmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXh9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy5kZWxpdmVyeUNoYXJnZXMgJiYgcmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXR5cGVcIj5EZWxpdmVyeSBDaGFyZ2U8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+JiM4Mzc3OyB7e3Jlc3BvbnNlRGF0YS5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXN9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aHI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LnRvdGFsQW1vdW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCIgc3R5bGU9XCJjb2xvcjogYmxhY2s7Zm9udC13ZWlnaHQ6IDYwMDtcIj5Ub3RhbCBBbW91bnQ8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCIgc3R5bGU9XCJmb250LXdlaWdodDogNjAwO1wiPiYjODM3Nzsge3tyZXNwb25zZURhdGEudG90YWxBbW91bnR9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1wYXJlbnRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT0gJ0JBRydcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInByb2NlZWRUb0NoZWNrb3V0KClcIj5DaGVja291dCBDYXJ0PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm9jZWVkVG9MaXN0UGFnZSgpXCI+Q29udGludWUgU2hvcHBpbmc8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PSAnQUREUkVTUydcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInByb2NlZWRUb1BheW1lbnQoKVwiPlBsYWNlIE9yZGVyPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBkYXRhPy5hY3Rpb24/LmJ1dHRvbnM7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwiaSA9PSAwID8gcHJvY2VlZFRvQ2hlY2tvdXQoKSA6IHByb2NlZWRUb0xpc3RQYWdlKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tidXR0b24/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJlbXB0eS1jYXJ0XCIgKm5nSWY9XCIocmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtaW1hZ2VcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8xMDcyMTNjMTcxNjU0MzMzNDA0MGVtcHR5LWNhcnQucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtdGV4dFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIFlvdXIgY2FydCBpcyBlbXB0eVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24gZC1mbGV4IG10LTRcIj5cclxuICAgICAgICAgICAgTG9va3MgbGlrZSB5b3UgaGF2ZSBub3QgYWRkZWQgYW55dGhpbmcgdG8geW91ciBjYXJ0LiBHbyBhaGVhZCAmIGV4cGxvcmUgdG9wIGNhdGVnb3JpZXMuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgd2lkdGg6ICcxMDAlJyxcclxuICBoZWlnaHQ6ICc0MHZoJyxcclxuICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICdyaWdodCc6ICc1cHgnXHJcbn1cIj5cclxuPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4iXX0=
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXJ0L2NhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2FydC9jYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLFFBQVEsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUEwQnRFLE1BQU0s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QUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFkZHJlc3MsIENhcnRTZWN0aW9uTW9kYWwsIENhcnRTZWN0aW9uU3R5bGVzTW9kZWwgfSBmcm9tICcuL2NhcnQubW9kYWwnO1xyXG5pbXBvcnQgeyBDYXJ0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL2NhcnQubW9kYWwnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCBVc2VySW5mbyBmcm9tICcuLy4uLy4uL2pzb24vdXNlci1kZXRhaWxzLmpzb24nO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZHJlc3NDb21wb25lbnQgfSBmcm9tIFwiLi4vYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGVVc2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0aGVudGljYXRlLXVzZXIvYXV0aGVudGljYXRlLXVzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9zdHlsZXMvdXNlci5tb2RhbCc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWNhcnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsIFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgLy9ESVJFQ1RJVkVcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSwgXHJcbiAgICBBZGRyZXNzQ29tcG9uZW50LFxyXG5cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY2FydC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FydENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9ue1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBDYXJ0U2VjdGlvbk1vZGFsO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IGFueTtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT8gOiBib29sZWFuO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZEFkZHJlc3NJZHg6IG51bWJlciA9IC0xO1xyXG4gIHN0eWxlcz86IENhcnRTZWN0aW9uU3R5bGVzTW9kZWw7XHJcbiAgcHVibGljIGN1cnJlbnRUYWI6ICdCQUcnIHwgJ0FERFJFU1MnIHwgJ1BBWU1FTlQnID0gXCJCQUdcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2UgOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlXHJcbiAgKXtcclxuICAgIHN1cGVyKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZGluZ0l0ZW1zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHVzZXJDYXJ0OiBDYXJ0IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBVU0VSX0NBUlRfSVRFTVM6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XHJcbiAgYmlsbGRldGFpbHM6IGFueSA9IHtcclxuICAgIFwidG90YWxOZXRWYWx1ZVwiOiAwLFxyXG4gICAgXCJ0b3RhbEdyb3NzVmFsdWVcIjogMCxcclxuICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgIFwidG90YWxPZmZlcmVkVmFsdWVcIjogMCxcclxuICAgIFwiZGVsaXZlcnlDaGFyZ2VzXCI6IDBcclxuICB9O1xyXG4gIG5nT25Jbml0KCl7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyO1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh0aGlzLnVzZXJEZXRhaWxzLnVzZXJJZCwgXCJDQVJUXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc3QgdGVtcFVzZXJDYXJ0ID0gcmVzcG9uc2U/LmRhdGE/Lm9yZGVyZWRJdGVtcyA/PyBbXVxyXG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2FydElkJywgcmVzcG9uc2UuZGF0YT8uY2FydElkKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRlbXBVc2VyQ2FydCk7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjYXJ0IERhdGFcIiwgY2FydERhdGEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUX0lURU1TID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgIFsuLi50ZW1wVXNlckNhcnQsIC4uLnRoaXMuVVNFUl9DQVJUX0lURU1TXS5mb3JFYWNoKChpdGVtKT0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLnByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5wcmljZSAqIChpdGVtLml0ZW1UYXggPz8gMSkpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgdGhpcy5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gdGhpcy5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKyB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsVGF4IC0gdGhpcy5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB7b3JkZXJlZEl0ZW1zOiBbLi4udGVtcFVzZXJDYXJ0LCAuLi50aGlzLlVTRVJfQ0FSVF9JVEVNU10sICBiaWxsZGV0YWlsczogdGhpcy5iaWxsZGV0YWlsc307XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjYXJ0IERhdGFcIiwgY2FydERhdGEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUX0lURU1TID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgIFsuLi50aGlzLlVTRVJfQ0FSVF9JVEVNU10uZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5wcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucHJpY2UgKiAoaXRlbS5pdGVtVGF4ID8/IDEpKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIHRoaXMuYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICsgdGhpcy5iaWxsZGV0YWlscy50b3RhbFRheCAtIHRoaXMuYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0ge29yZGVyZWRJdGVtczogWy4uLnRlbXBVc2VyQ2FydCwgLi4udGhpcy5VU0VSX0NBUlRfSVRFTVNdLCBiaWxsZGV0YWlsczogdGhpcy5iaWxsZGV0YWlscywgdXNlcklkOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWR9O1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2VEYXRhKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMucmVzcG9uc2VEYXRhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhjYXJ0UmVzcG9uc2UpO1xyXG4gICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMgPSBjYXJ0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUy5mb3JFYWNoKChpdGVtKT0+IHtcclxuICAgICAgICAgICAgdGhpcy5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0ucHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucHJpY2UgKiAoaXRlbS5pdGVtVGF4ID8/IDEpKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArIHRoaXMuYmlsbGRldGFpbHMudG90YWxUYXggLSB0aGlzLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0ge29yZGVyZWRJdGVtczogdGhpcy5VU0VSX0NBUlRfSVRFTVMsIGJpbGxkZXRhaWxzOiB0aGlzLmJpbGxkZXRhaWxzfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC8vIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5zdG9yYWdlU2VydmljZS5jYWxjdWxhdGVCaWxsaW5nRGV0YWlscygpO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gIH1cclxuXHJcbiAgcHJvY2VlZFRvQ2hlY2tvdXQoKXtcclxuICAgIGlmKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKXtcclxuICAgICAgdGhpcy5jdXJyZW50VGFiID0gXCJBRERSRVNTXCI7ICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgnXSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEF1dGhlbnRpY2F0ZVVzZXJDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAnNTB2aCcsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMzV2dycsXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2NlZWRUb0xpc3RQYWdlKCl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogYW55KSB7XHJcbiAgICBpdGVtLnF1YW50aXR5ID0gMDtcclxuICAgIHRoaXMubG9hZGluZ0l0ZW1zLnB1c2goaXRlbS5pdGVtSWQpO1xyXG4gICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtRnJvbUNhcnRQYWdlKGl0ZW0sIHRoaXMucmVzcG9uc2VEYXRhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmdJdGVtcyA9IHRoaXMubG9hZGluZ0l0ZW1zLmZpbHRlcigoaWR4OiBzdHJpbmcpPT4gaWR4ICE9IGl0ZW0uaXRlbUlkKTtcclxuICAgICAgLy8gdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNhbGN1bGF0ZUJpbGxpbmdEZXRhaWxzKCk7XHJcbiAgICAgIHJlc3BvbnNlPy5kYXRhPy5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KT0+IHtcclxuICAgICAgICB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5wcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnByaWNlICogKGl0ZW0uaXRlbVRheCA/PyAxKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICsgdGhpcy5iaWxsZGV0YWlscy50b3RhbFRheCAtIHRoaXMuYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHtvcmRlcmVkSXRlbXM6IHRoaXMuVVNFUl9DQVJUX0lURU1TLCBiaWxsZGV0YWlsczogdGhpcy5iaWxsZGV0YWlsc307XHJcbiAgICBcclxuICAgIH0pXHJcbiAgfVxyXG4gIGFkZFRvQ2FydChpdGVtOiBhbnksIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKSB7XHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgKz0gMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpdGVtLnF1YW50aXR5IC09IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRpbmdJdGVtcy5wdXNoKGl0ZW0uaXRlbUlkKTtcclxuICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbUZyb21DYXJ0UGFnZShpdGVtLCB0aGlzLnJlc3BvbnNlRGF0YSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nSXRlbXMgPSB0aGlzLmxvYWRpbmdJdGVtcy5maWx0ZXIoKGlkeDogc3RyaW5nKT0+IGlkeCAhPSBpdGVtLml0ZW1JZCk7XHJcbiAgICAgIFxyXG4gICAgICByZXNwb25zZT8uZGF0YT8ub3JkZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSk9PiB7XHJcbiAgICAgICAgdGhpcy5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0ucHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgdGhpcy5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5wcmljZSAqIChpdGVtLml0ZW1UYXggPz8gMSkpO1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArIHRoaXMuYmlsbGRldGFpbHMudG90YWxUYXggLSB0aGlzLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB7b3JkZXJlZEl0ZW1zOiB0aGlzLlVTRVJfQ0FSVF9JVEVNUywgYmlsbGRldGFpbHM6IHRoaXMuYmlsbGRldGFpbHN9O1xyXG4gICAgXHJcbiAgICB9KVxyXG4gIH1cclxuICBwcm9jZWVkVG9QYXltZW50KCkge1xyXG4gICAgaWYgKCF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlVzZXIgbm90IGxvZ2dlZCBJblwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXNlckRldGFpbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIlVzZXIgRGV0YWlsc1wiLCB1c2VyRGV0YWlsKTtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSBVc2VySW5mby51c2VyLmFkZHJlc3NEZXRhaWxzTGlzdFswXSBhcyBBZGRyZXNzO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJhOiBcIiwgVXNlckNhcnQsIHRoaXMucmVzcG9uc2VEYXRhKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIFwidXNlcklkXCI6IHVzZXJEZXRhaWwudXNlcklkID8/IFVzZXJJbmZvLnVzZXIudXNlcklkLFxyXG4gICAgICBcImNhcnRJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2FydElkJyksXHJcbiAgICAgIFwib3JkZXJBbW91bnRcIjogdGhpcy5yZXNwb25zZURhdGEuYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSxcclxuICAgICAgXCJjb250YWN0RGV0YWlsc1wiOiB7XHJcbiAgICAgICAgXCJuYW1lXCI6IGFkZHJlc3MucmVjZWl2ZXJOYW1lLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IGFkZHJlc3MucmVjZWl2ZXJQaG9uZSxcclxuICAgICAgICBcImNvdW50cnlDb2RlXCI6IFwiOTFcIixcclxuICAgICAgICBcImVtYWlsXCI6IGFkZHJlc3MucmVjZWl2ZXJFbWFpbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVBheW1lbnRUb2tlbihwYXlsb2FkKS5zdWJzY3JpYmUoKHBheW1lbnREZXRhaWxzOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHBheW1lbnREZXRhaWxzKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpc0l0ZW1Mb2FkaW5nKGl0ZW1JZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nSXRlbXMuaW5jbHVkZXMoaXRlbUlkKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRBZGRyZXNzTGlzdCgpIHtcclxuICAgIHJldHVybiBVc2VySW5mby51c2VyID8gWy4uLlVzZXJJbmZvLnVzZXI/LmFkZHJlc3NEZXRhaWxzTGlzdF0gOiBbXTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICA8c2VjdGlvbiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItNFwiIHN0eWxlPVwibWFyZ2luLXRvcDogNTBweDtcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGhcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZVwiIFtuZ0NsYXNzXT1cInsnaXNBY3RpdmUnOiBjdXJyZW50VGFiID09ICdCQUcnfVwiIChjbGljayk9XCJjdXJyZW50VGFiID0gJ0JBRydcIj5CYWc8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYXJcIj48L2Rpdj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZVwiIFtuZ0NsYXNzXT1cInsnaXNBY3RpdmUnOiBjdXJyZW50VGFiID09ICdBRERSRVNTJ31cIiAoY2xpY2spPVwiY3VycmVudFRhYiA9ICdBRERSRVNTJ1wiPkFkZHJlc3M8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYXJcIj48L2Rpdj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZVwiIFtuZ0NsYXNzXT1cInsnaXNBY3RpdmUnOiBjdXJyZW50VGFiID09ICdQQVlNRU5UJ31cIiAoY2xpY2spPVwiY3VycmVudFRhYiA9ICdQQVlNRU5UJ1wiPlBheW1lbnQ8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXBhcmVudCBjb250YWluZXJcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID4gMFwiICBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY3VycmVudFRhYlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidCQUcnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktYmFnXCI+XHJcbiAgICAgICAgICAgIE15IEJhZyZuYnNwOyA8c3Bhbj4oe3tyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RofX0gSXRlbXMpPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pdGVtc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGl0ZW0tcGFyZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicHJvZHVjdC1pbWdcIiBbc3JjXT1cIml0ZW0uaW1nVXJsXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGgtMjNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIGhlYWRpbmctbGFyZ2VcIj57e2l0ZW0uaXRlbU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS13aXRoLXRheFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgJiM4Mzc3OyB7e2l0ZW0ucHJpY2UgKyAoaXRlbS5pdGVtVGF4ID8/IDApfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1xdWFudGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0l0ZW1Mb2FkaW5nKGl0ZW0uaXRlbUlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnQoaXRlbSwgJ1NVQlNUUkFDVCcpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnF1YW50aXR5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvQ2FydChpdGVtLCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJdGVtTG9hZGluZyhpdGVtLml0ZW1JZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPiA8aSAgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIiBzdHlsZT1cImZvbnQtc2l6ZToyNHB4OyBtYXJnaW4tcmlnaHQ6IDEwcHg7XCI+PC9pPiA8c3Bhbj5Mb2FkaW5nLi4uPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgcG9zaXRpb24tcmVsYXRpdmVcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1wcmljZVwiPiYjODM3Nzsge3soaXRlbS5wcmljZSArIChpdGVtLml0ZW1UYXggPz8gMCkpICogaXRlbS5xdWFudGl0eX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZGVsZXRlLWl0ZW1cIiAoY2xpY2spPVwicmVtb3ZlSXRlbShpdGVtKVwiPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGhyICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aCAhPSAoaWR4ICsxKVwiPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidBRERSRVNTJ1wiPlxyXG4gICAgICAgICAgPHNpbXBvLWFkZHJlc3MgW2lzQ2FydF09XCJ0cnVlXCIgW3Jlc3BvbnNlRGF0YV09XCJnZXRBZGRyZXNzTGlzdFwiIFtzZWxlY3RlZEFkZHJlc3NJZHhdPVwic2VsZWN0ZWRBZGRyZXNzSWR4XCI+PC9zaW1wby1hZGRyZXNzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidQQVlNRU5UJ1wiPjwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgUHJpY2UgRGV0YWlsc1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy50b3RhbE5ldFZhbHVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+VG90YWwgUHJpY2U8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+JiM4Mzc3OyB7e3Jlc3BvbnNlRGF0YS5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXR5cGVcIj5Ub3RhbCBUYXg8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+JiM4Mzc3OyB7e3Jlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsVGF4fX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8uZGVsaXZlcnlDaGFyZ2VzICYmIHJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPiAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+RGVsaXZlcnkgQ2hhcmdlPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS12YWx1ZVwiPiYjODM3Nzsge3tyZXNwb25zZURhdGEuYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy50b3RhbEFtb3VudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiIHN0eWxlPVwiY29sb3I6IGJsYWNrO2ZvbnQtd2VpZ2h0OiA2MDA7XCI+VG90YWwgQW1vdW50PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS12YWx1ZVwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj4mIzgzNzc7IHt7cmVzcG9uc2VEYXRhLnRvdGFsQW1vdW50fX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09ICdCQUcnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm9jZWVkVG9DaGVja291dCgpXCI+Q2hlY2tvdXQgQ2FydDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJvY2VlZFRvTGlzdFBhZ2UoKVwiPkNvbnRpbnVlIFNob3BwaW5nPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT0gJ0FERFJFU1MnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm9jZWVkVG9QYXltZW50KClcIj5QbGFjZSBPcmRlcjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cImkgPT0gMCA/IHByb2NlZWRUb0NoZWNrb3V0KCkgOiBwcm9jZWVkVG9MaXN0UGFnZSgpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiIFtidXR0b25TdHlsZV09XCJidXR0b24/LnN0eWxlc1wiXHJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7YnV0dG9uPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZW1wdHktY2FydFwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMTA3MjEzYzE3MTY1NDMzMzQwNDBlbXB0eS1jYXJ0LnBuZ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICBZb3VyIGNhcnQgaXMgZW1wdHlcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uIGQtZmxleCBtdC00XCI+XHJcbiAgICAgICAgICAgIExvb2tzIGxpa2UgeW91IGhhdmUgbm90IGFkZGVkIGFueXRoaW5nIHRvIHlvdXIgY2FydC4gR28gYWhlYWQgJiBleHBsb3JlIHRvcCBjYXRlZ29yaWVzLlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cclxuICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuIl19
@@ -104,10 +104,14 @@ export class FeaturedProductsComponent extends BaseSection {
104
104
  this.cartService.addItemToCart(product);
105
105
  }
106
106
  toggleItemToFav(product, type) {
107
- if (type == 'ADD')
107
+ if (type == 'ADD') {
108
+ product.whislist = true;
108
109
  this.cartService.addItemToFavourite(product);
109
- else
110
+ }
111
+ else {
112
+ product.whislist = false;
110
113
  this.cartService.removeItemFromFavourite(product);
114
+ }
111
115
  }
112
116
  proceedToProductDesc(productId) {
113
117
  this.router.navigate([`details`], { queryParams: { id: productId } });
@@ -162,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
162
166
  type: HostListener,
163
167
  args: ["window: resize", ["$event"]]
164
168
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBd0IsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUd6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFB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O3dCQUNoQyxjQUFjO3dCQUNkLHdCQUF3QjtxQkFDekI7OzBCQW1CRSxNQUFNOzJCQUFDLFdBQVc7a0xBZFosSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBMEJOLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUExBVEZPUk1fSUQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmVhdHVyZWRQcm9kdWN0Q29udGVudE1vZGFsLCBGZWF0dXJlZFByb2R1Y3RNb2RhbCwgRmVhdHVyZWRQcm9kdWN0U3R5bGVzTW9kZWwgfSBmcm9tICcuL2ZlYXR1cmVkLXByb2R1Y3RzLm1vZGFsJztcclxuaW1wb3J0IHsgUHJvZHVjdCwgSXRlbUltYWdlIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJvcmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ib3JkZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvdGV4dC1iYWNrZ3JvdW5kLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi8uLi9lY29tbWVyY2Uvc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IENhcnQgfSBmcm9tIFwiLi4vLi4vc3R5bGVzL2NhcnQubW9kYWxcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLCBcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgTWF0SWNvbixcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVkUHJvZHVjdHNDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZGF0YT86IEZlYXR1cmVkUHJvZHVjdE1vZGFsO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IFByb2R1Y3RbXVxyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc1JlbGF0ZWRQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZWRpdD8gOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBjb250ZW50PzogRmVhdHVyZWRQcm9kdWN0Q29udGVudE1vZGFsO1xyXG4gIHN0eWxlcz86IEZlYXR1cmVkUHJvZHVjdFN0eWxlc01vZGVsO1xyXG4gIGJ1dHRvbj86IEJ1dHRvbk1vZGVsO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpXHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgXHJcbiAgcHJpdmF0ZSBVU0VSX0NBUlQ6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OiByZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGdldFNjcmVlblNpemUoKSB7XHJcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24uYnV0dG9uc1swXTtcclxuICAgIHRoaXMuZ2V0RmVhdHVyZVByb2R1Y3QoKTtcclxuICAgIHRoaXMuX2V2ZW50U3Vic2NyaWJlciA9IHRoaXMuX2V2ZW50U2VydmljZS5mZWF0dXJlQ29sbGVjdGlvbkxpc3Quc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuZ2V0RmVhdHVyZVByb2R1Y3QoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuX2V2ZW50U3Vic2NyaWJlcilcclxuICAgICAgICB0aGlzLl9ldmVudFN1YnNjcmliZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0V2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JlZW5XaWR0aCA+IDQ3NSA/ICh0aGlzLnNjcmVlbldpZHRoIDwgMTAyNSA/ICcyNSUnIDogJ2NhbGMoJyArICgoMTAwIC8gKHRoaXMuc3R5bGVzPy5lbGVtZW50SW5Sb3cgfHwgNCkpKSArICclKScpIDogKHRoaXMuc3R5bGVzPy5tb2JpbGVDb2x1bW4gPT09IDEgPyAnMTAwJScgOiAnNTAlJylcclxuICB9XHJcblxyXG4gIGdldFNsaWNlUGFyYW1ldGVycygpIHtcclxuICAgIHJldHVybiBbMCwgKHRoaXMuc3R5bGVzPy5tYXhpbXVtUHJvZHVjdCB8fCAwKV07XHJcbiAgfVxyXG5cclxuICBnZXRGZWF0dXJlUHJvZHVjdCgpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0RmVhdHVyZWRQcm9kdWN0KHRoaXMuY29udGVudD8uY29sbGVjdGlvbklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGNhcnREYXRhKTtcclxuICAgICAgICAgIHRoaXMuVVNFUl9DQVJUID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcy5VU0VSX0NBUlQpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGE/LmZvckVhY2goKHByb2R1Y3Q6IGFueSk9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PSBwcm9kdWN0Lml0ZW1JZClcclxuICAgICAgICAgICAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHdpc2hsaXN0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgIHdpc2hsaXN0UmVzcG9uc2Uub25zdWNjZXNzID0gKHdoaXNsaXN0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1QgPSB3aGlzbGlzdERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGE/LmZvckVhY2goKHByb2R1Y3Q6IGFueSk9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdC5pdGVtSWQpXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0Lndpc2hsaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcbiAgYWRkSXRlbVRvQ2FydChwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICBwcm9kdWN0LnF1YW50aXR5ICs9ICh0eXBlID09ICdBREQnID8gMSA6IC0xKTsgXHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCk7XHJcbiAgfVxyXG4gIHRvZ2dsZUl0ZW1Ub0Zhdihwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQUREJyB8ICdSRU1PVkUnKSB7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJylcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUocHJvZHVjdCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUocHJvZHVjdCk7XHJcbiAgfVxyXG5cclxuICBwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0SWQ6IGFueSl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYGRldGFpbHNgXSwge3F1ZXJ5UGFyYW1zOiB7aWQ6IHByb2R1Y3RJZH19KTtcclxuICAgIC8vIHRoaXMuX2V2ZW50U2VydmljZS5yZWRpcmVjdFRvUGFnZS5lbWl0KHtyZWRpcmVjdFRvOiAnL2RldGFpbHMnLCBkYXRhOiB7cHJvZHVjdElkOiBwcm9kdWN0SWR9fSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZVByZXZpZXdJbWFnZShwcm9kdWN0OiBQcm9kdWN0LCBpZHg6IG51bWJlcikge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmV2aWV3XycraWR4KTtcclxuICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoXCJ0cmFuc2l0aW9uLXByZWl2ZXdcIik7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgcHJvZHVjdC5wcnZpZXdJZHggPSAoKHByb2R1Y3Q/Lml0ZW1JbWFnZXM/Lmxlbmd0aCA/PyAwKSA+IDEgPyAxIDogMCk7XHJcbiAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ3RyYW5zaXRpb24tcHJlaXZldycpO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHRvdGFsLWNvbnRhaW5lclwiIFtpZF09XCJkYXRhPy5pZFwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCI+XHJcbiAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIGNsYXNzPVwiZGlzcGxheS1ibG9ja1wiICNtYWluQ29udGFpbmVyIFtzaW1wb092ZXJsYXldPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCJcclxuICAgICAgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cIml0ZW0udmFsdWVcIiBbbmdDbGFzc109XCJpdGVtLmxhYmVsID09PSAnSGVhZGluZycgPyAnaGVhZGluZy1sYXJnZSBsaC0yIG1iLTMnIDogJ2JvZHktbGFyZ2UnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW1nIHNyYz1cImh0dHBzOi8vZGV2LWJlZW9zLnMzLmFtYXpvbmF3cy5jb20vbGlicmFyeS1tZWRpYS83MTQxMjZjMTcwNzM3ODkzNTczMnNwYW4ucG5nXCIgYWx0PVwiXCJcclxuICAgICAgICBjbGFzcz1cInNwYW4taW1nIG10LTE1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXBhcmVudFwiICpuZ0lmPVwicmVzcG9uc2VEYXRhICYmIHJlc3BvbnNlRGF0YS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiByZXNwb25zZURhdGEgfCBzbGljZTpnZXRTbGljZVBhcmFtZXRlcnMoKVswXTpnZXRTbGljZVBhcmFtZXRlcnMoKVsxXTsgbGV0IGlkeCA9IGluZGV4XCIgY2xhc3M9XCJwcm9kdWN0XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRQcm9kdWN0V2lkdGgoKVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiEocHJvZHVjdC5pdGVtSW1hZ2VzLmxlbmd0aCA+IDAgJiYgcHJvZHVjdC5pdGVtSW1hZ2VzWzBdLmltZ1VybClcIiBjbGFzcz1cImRlZmF1bHQtaW1hZ2VcIihjbGljayk9XCJwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0Lml0ZW1JZClcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3d3dy5zdmdyZXBvLmNvbS9zaG93LzE0OTg2MS90LXNoaXJ0LWJsYWNrLXNpbGhvdWV0dGUuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9kdWN0Lml0ZW1JbWFnZXMubGVuZ3RoID4gMCAmJiBwcm9kdWN0Lml0ZW1JbWFnZXNbMF0uaW1nVXJsXCIoY2xpY2spPVwicHJvY2VlZFRvUHJvZHVjdERlc2MocHJvZHVjdC5pdGVtSWQpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgW2lkXT1cIidwcmV2aWV3XycraWR4XCIgW3NyY109XCJwcm9kdWN0Lml0ZW1JbWFnZXNbcHJvZHVjdC5wcnZpZXdJZHhdPy5pbWdVcmxcIiBhbHQ9XCJcIiBjbGFzcz1cInByb2R1Y3QtaW1nIHByZWl2ZXdcIiAobW91c2VlbnRlcik9XCJ0b2dnbGVQcmV2aWV3SW1hZ2UocHJvZHVjdCwgaWR4KVwiIChtb3VzZWxlYXZlKT1cInByb2R1Y3QucHJ2aWV3SWR4ID0gMFwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtbmFtZSBoZWFkaW5nLWxhcmdlXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlxyXG4gICAgICAgICAgICAgIHt7cHJvZHVjdC5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZSBib2R5LWxhcmdlXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgJiM4Mzc3O1xyXG4gICAgICAgICAgICAgICAge3twcm9kdWN0LnByaWNlLnNlbGxpbmdQcmljZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dCdXR0b25cIiBjbGFzcz1cImFkZC10by1jYXJ0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cInRvZ2dsZUl0ZW1Ub0Zhdihwcm9kdWN0LCAnQUREJylcIiAqbmdJZj1cIiFwcm9kdWN0LndoaXNsaXN0XCI+ZmF2b3JpdGVfYm9yZGVyPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJ0b2dnbGVJdGVtVG9GYXYocHJvZHVjdCwgJ1JFTU9WRScpXCIgKm5nSWY9XCJwcm9kdWN0LndoaXNsaXN0XCI+ZmF2b3JpdGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cIiFwcm9kdWN0LnF1YW50aXR5XCIgKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgJ0FERCcpXCI+e3tjb250ZW50Py5idXR0b259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YW50aXR5XCIgKm5nSWY9XCJwcm9kdWN0LnF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KHByb2R1Y3QsICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJvZHVjdC5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydChwcm9kdWN0LCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICB3aWR0aDogJzEwMCUnLFxyXG4gIGhlaWdodDogJzQwdmgnLFxyXG4gICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgJ3JpZ2h0JzogJzVweCdcclxufVwiPlxyXG48L25neC1za2VsZXRvbi1sb2FkZXI+Il19
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBd0IsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUd6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFB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d0JBQ1gsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsY0FBYzt3QkFDZCx3QkFBd0I7cUJBQ3pCOzswQkFtQkUsTUFBTTsyQkFBQyxXQUFXO2tMQWRaLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQTBCTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFBMQVRGT1JNX0lELCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVkUHJvZHVjdENvbnRlbnRNb2RhbCwgRmVhdHVyZWRQcm9kdWN0TW9kYWwsIEZlYXR1cmVkUHJvZHVjdFN0eWxlc01vZGVsIH0gZnJvbSAnLi9mZWF0dXJlZC1wcm9kdWN0cy5tb2RhbCc7XHJcbmltcG9ydCB7IFByb2R1Y3QsIEl0ZW1JbWFnZSB9IGZyb20gJy4uLy4uL3N0eWxlcy9wcm9kdWN0Lm1vZGFsJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCb3JkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYm9yZGVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL292ZXJsYXktZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQ29sb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29sb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vLi4vZWNvbW1lcmNlL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgeyBDYXJ0IH0gZnJvbSBcIi4uLy4uL3N0eWxlcy9jYXJ0Lm1vZGFsXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWZlYXR1cmVkLXByb2R1Y3RzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSwgXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgLy9kaXJlY3RpdmVcclxuICAgIE1hdEljb24sXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJvcmRlckRpcmVjdGl2ZSxcclxuICAgIENvcm5lckRpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWF0dXJlZC1wcm9kdWN0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGZWF0dXJlZFByb2R1Y3RzQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBGZWF0dXJlZFByb2R1Y3RNb2RhbDtcclxuICBASW5wdXQoKSByZXNwb25zZURhdGE/OiBQcm9kdWN0W11cclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXNSZWxhdGVkUHJvZHVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVkaXQ/IDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZGVsZXRlPyA6IGJvb2xlYW47XHJcbiAgY29udGVudD86IEZlYXR1cmVkUHJvZHVjdENvbnRlbnRNb2RhbDtcclxuICBzdHlsZXM/OiBGZWF0dXJlZFByb2R1Y3RTdHlsZXNNb2RlbDtcclxuICBidXR0b24/OiBCdXR0b25Nb2RlbDtcclxuXHJcbiAgcHJpdmF0ZSBfZXZlbnRTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKVxyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNjcmVlbldpZHRoOiBudW1iZXIgPSAwO1xyXG4gIFxyXG4gIHByaXZhdGUgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9XSVNITElTVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzogcmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuICBnZXRTY3JlZW5TaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBcclxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmJ1dHRvbiA9IHRoaXMuZGF0YT8uYWN0aW9uLmJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLmdldEZlYXR1cmVQcm9kdWN0KCk7XHJcbiAgICB0aGlzLl9ldmVudFN1YnNjcmliZXIgPSB0aGlzLl9ldmVudFNlcnZpY2UuZmVhdHVyZUNvbGxlY3Rpb25MaXN0LnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmdldEZlYXR1cmVQcm9kdWN0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgfSlcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLl9ldmVudFN1YnNjcmliZXIpXHJcbiAgICAgICAgdGhpcy5fZXZlbnRTdWJzY3JpYmVyPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdFdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2NyZWVuV2lkdGggPiA0NzUgPyAodGhpcy5zY3JlZW5XaWR0aCA8IDEwMjUgPyAnMjUlJyA6ICdjYWxjKCcgKyAoKDEwMCAvICh0aGlzLnN0eWxlcz8uZWxlbWVudEluUm93IHx8IDQpKSkgKyAnJSknKSA6ICh0aGlzLnN0eWxlcz8ubW9iaWxlQ29sdW1uID09PSAxID8gJzEwMCUnIDogJzUwJScpXHJcbiAgfVxyXG5cclxuICBnZXRTbGljZVBhcmFtZXRlcnMoKSB7XHJcbiAgICByZXR1cm4gWzAsICh0aGlzLnN0eWxlcz8ubWF4aW11bVByb2R1Y3QgfHwgMCldO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZVByb2R1Y3QoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEZlYXR1cmVkUHJvZHVjdCh0aGlzLmNvbnRlbnQ/LmNvbGxlY3Rpb25JZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSByZXNwb25zZTtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyQ2FydCgpLnRoZW4oKGNhcnRSZXNwb25zZSk9PiB7XHJcbiAgICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhjYXJ0RGF0YSk7XHJcbiAgICAgICAgICB0aGlzLlVTRVJfQ0FSVCA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuVVNFUl9DQVJUKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2VEYXRhKTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhPy5mb3JFYWNoKChwcm9kdWN0OiBhbnkpPT4ge1xyXG4gICAgICAgICAgICB0aGlzLlVTRVJfQ0FSVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdC5pdGVtSWQpXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0LnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKCh3aXNobGlzdFJlc3BvbnNlKT0+IHtcclxuICAgICAgICB3aXNobGlzdFJlc3BvbnNlLm9uc3VjY2VzcyA9ICh3aGlzbGlzdERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUID0gd2hpc2xpc3REYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhPy5mb3JFYWNoKChwcm9kdWN0OiBhbnkpPT4ge1xyXG4gICAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1Q/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaXRlbUlkID09IHByb2R1Y3QuaXRlbUlkKVxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG4gIGFkZEl0ZW1Ub0NhcnQocHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgcHJvZHVjdC5xdWFudGl0eSArPSAodHlwZSA9PSAnQUREJyA/IDEgOiAtMSk7IFxyXG4gICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QpO1xyXG4gIH1cclxuICB0b2dnbGVJdGVtVG9GYXYocHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnUkVNT1ZFJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgcHJvZHVjdC53aGlzbGlzdCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3QpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHByb2R1Y3Qud2hpc2xpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5yZW1vdmVJdGVtRnJvbUZhdm91cml0ZShwcm9kdWN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2NlZWRUb1Byb2R1Y3REZXNjKHByb2R1Y3RJZDogYW55KXtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgZGV0YWlsc2BdLCB7cXVlcnlQYXJhbXM6IHtpZDogcHJvZHVjdElkfX0pO1xyXG4gICAgLy8gdGhpcy5fZXZlbnRTZXJ2aWNlLnJlZGlyZWN0VG9QYWdlLmVtaXQoe3JlZGlyZWN0VG86ICcvZGV0YWlscycsIGRhdGE6IHtwcm9kdWN0SWQ6IHByb2R1Y3RJZH19KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUHJldmlld0ltYWdlKHByb2R1Y3Q6IFByb2R1Y3QsIGlkeDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXZpZXdfJytpZHgpO1xyXG4gICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZChcInRyYW5zaXRpb24tcHJlaXZld1wiKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpPT4ge1xyXG4gICAgICBwcm9kdWN0LnBydmlld0lkeCA9ICgocHJvZHVjdD8uaXRlbUltYWdlcz8ubGVuZ3RoID8/IDApID4gMSA/IDEgOiAwKTtcclxuICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgndHJhbnNpdGlvbi1wcmVpdmV3Jyk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJjb250YWluZXItZmx1aWQgdG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIj5cclxuICAgIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgY2xhc3M9XCJkaXNwbGF5LWJsb2NrXCIgI21haW5Db250YWluZXIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIlxyXG4gICAgICBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbS52YWx1ZVwiIFtuZ0NsYXNzXT1cIml0ZW0ubGFiZWwgPT09ICdIZWFkaW5nJyA/ICdoZWFkaW5nLWxhcmdlIGxoLTIgbWItMycgOiAnYm9keS1sYXJnZSdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9kZXYtYmVlb3MuczMuYW1hem9uYXdzLmNvbS9saWJyYXJ5LW1lZGlhLzcxNDEyNmMxNzA3Mzc4OTM1NzMyc3Bhbi5wbmdcIiBhbHQ9XCJcIlxyXG4gICAgICAgIGNsYXNzPVwic3Bhbi1pbWcgbXQtMTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtcGFyZW50XCIgKm5nSWY9XCJyZXNwb25zZURhdGEgJiYgcmVzcG9uc2VEYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHJlc3BvbnNlRGF0YSB8IHNsaWNlOmdldFNsaWNlUGFyYW1ldGVycygpWzBdOmdldFNsaWNlUGFyYW1ldGVycygpWzFdOyBsZXQgaWR4ID0gaW5kZXhcIiBjbGFzcz1cInByb2R1Y3RcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImdldFByb2R1Y3RXaWR0aCgpXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIShwcm9kdWN0Lml0ZW1JbWFnZXMubGVuZ3RoID4gMCAmJiBwcm9kdWN0Lml0ZW1JbWFnZXNbMF0uaW1nVXJsKVwiIGNsYXNzPVwiZGVmYXVsdC1pbWFnZVwiKGNsaWNrKT1cInByb2NlZWRUb1Byb2R1Y3REZXNjKHByb2R1Y3QuaXRlbUlkKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vd3d3LnN2Z3JlcG8uY29tL3Nob3cvMTQ5ODYxL3Qtc2hpcnQtYmxhY2stc2lsaG91ZXR0ZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb2R1Y3QuaXRlbUltYWdlcy5sZW5ndGggPiAwICYmIHByb2R1Y3QuaXRlbUltYWdlc1swXS5pbWdVcmxcIihjbGljayk9XCJwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0Lml0ZW1JZClcIj5cclxuICAgICAgICAgICAgPGltZyBbaWRdPVwiJ3ByZXZpZXdfJytpZHhcIiBbc3JjXT1cInByb2R1Y3QuaXRlbUltYWdlc1twcm9kdWN0LnBydmlld0lkeF0/LmltZ1VybFwiIGFsdD1cIlwiIGNsYXNzPVwicHJvZHVjdC1pbWcgcHJlaXZld1wiIChtb3VzZWVudGVyKT1cInRvZ2dsZVByZXZpZXdJbWFnZShwcm9kdWN0LCBpZHgpXCIgKG1vdXNlbGVhdmUpPVwicHJvZHVjdC5wcnZpZXdJZHggPSAwXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1uYW1lIGhlYWRpbmctbGFyZ2VcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9Db2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAge3twcm9kdWN0Lm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlIGJvZHktbGFyZ2VcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9Db2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAmIzgzNzc7XHJcbiAgICAgICAgICAgICAgICB7e3Byb2R1Y3QucHJpY2Uuc2VsbGluZ1ByaWNlfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0J1dHRvblwiIGNsYXNzPVwiYWRkLXRvLWNhcnQtYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwidG9nZ2xlSXRlbVRvRmF2KHByb2R1Y3QsICdBREQnKVwiICpuZ0lmPVwiIXByb2R1Y3Qud2hpc2xpc3RcIj5mYXZvcml0ZV9ib3JkZXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cInRvZ2dsZUl0ZW1Ub0Zhdihwcm9kdWN0LCAnUkVNT1ZFJylcIiAqbmdJZj1cInByb2R1Y3Qud2hpc2xpc3RcIj5mYXZvcml0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCsoYnV0dG9uPy5pZCB8fCAnJylcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uPy5zdHlsZXNcIlxyXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiIXByb2R1Y3QucXVhbnRpdHlcIiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydChwcm9kdWN0LCAnQUREJylcIj57e2NvbnRlbnQ/LmJ1dHRvbn19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhbnRpdHlcIiAqbmdJZj1cInByb2R1Y3QucXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgJ1NVQlNUUkFDVCcpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3twcm9kdWN0LnF1YW50aXR5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KHByb2R1Y3QsICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj4iXX0=
@@ -10,7 +10,7 @@ export class CartService {
10
10
  this.storageService = storageService;
11
11
  this.restService = restService;
12
12
  }
13
- addItemFromCartPage(product) {
13
+ addItemFromCartPage(product, userCart) {
14
14
  if (product.quantity) {
15
15
  // let productIdx: number = -1;
16
16
  // UserCart.orderedItems.forEach((item: OrderedItems, idx)=> {
@@ -18,12 +18,12 @@ export class CartService {
18
18
  // productIdx = idx;
19
19
  // });
20
20
  this.storageService.addProductToCart(product);
21
- // return this.restService.addItemToDB(UserCart);
21
+ return this.restService.addItemToDB(userCart);
22
22
  }
23
23
  else {
24
24
  // remove item from cart
25
25
  this.removeItemFromCart(product);
26
- // return this.restService.addItemToDB(UserCart);
26
+ return this.restService.addItemToDB(userCart);
27
27
  }
28
28
  }
29
29
  addItemToCart(product) {
@@ -98,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
98
98
  providedIn: 'root',
99
99
  }]
100
100
  }], ctorParameters: () => [{ type: i1.StorageServiceService }, { type: i2.RestService }] });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsMkRBQTJEO0FBQzNELE9BQU8sY0FBYyxNQUFNLHVDQUF1QyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQVd0RSxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUNtQixjQUFxQyxFQUNyQyxXQUF3QjtRQUR4QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDeEMsQ0FBQztJQUVHLG1CQUFtQixDQUFDLE9BQXFCO1FBQzlDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLCtCQUErQjtZQUMvQiw4REFBOEQ7WUFDOUQsdUNBQXVDO1lBQ3ZDLHdCQUF3QjtZQUN4QixNQUFNO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUF1QixDQUFDLENBQUM7WUFDOUQsaURBQWlEO1FBQ25ELENBQUM7YUFBTSxDQUFDO1lBQ04sd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxpREFBaUQ7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsT0FBK0I7UUFFbEQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFrQixDQUFDLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFdBQTJCLENBQUMsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQWtCLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUNNLGtCQUFrQixDQUFDLE9BQWdCO1FBRXRDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ00sdUJBQXVCLENBQUMsT0FBZ0I7UUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNNLGtCQUFrQixDQUFDLE9BQStCO1FBRXJELElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDTSxjQUFjLENBQUMsRUFBVSxFQUFFLElBQTBCO1FBQzFELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQWdCLEVBQUUsSUFBeUI7UUFDOUQsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxZQUFZLEdBQWlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUF1QixDQUFDLENBQUM7WUFFbkksSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbkQscURBQXFEO1lBQ3ZELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sWUFBWSxHQUFpQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBdUIsQ0FBQyxDQUFDO1lBRXZJLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3ZELGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQXFCLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxZQUFZLENBQUMsTUFBYyxFQUFFLElBQTBCO1FBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELGlDQUFpQztRQUNqQyxrRUFBa0U7UUFDbEUsdUJBQXVCO1FBQ3ZCLDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBZ0I7UUFDbkMsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0scUJBQXFCLENBQUMsSUFBVTtJQUV2QyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLDhDQUE4QztRQUM5Qyx3REFBd0Q7UUFDeEQsb0NBQW9DO1FBQ3BDLDRCQUE0QjtRQUM1Qix3Q0FBd0M7UUFDeEMsZ0NBQWdDO1FBRWhDLG9CQUFvQjtRQUNwQiw0Q0FBNEM7UUFDNUMsaURBQWlEO1FBQ2pELE1BQU07SUFDUixDQUFDOzhHQS9GVSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBpbXBvcnQgVXNlckNhcnQgZnJvbSBcIi4uL2Vjb21tZXJjZS9qc29uL3VzZXItY2FydC5qc29uXCI7XHJcbmltcG9ydCBVc2VyRmF2b3VyaXRlcyBmcm9tIFwiLi4vZWNvbW1lcmNlL2pzb24vdXNlci1mYXZvdXJpdGUuanNvblwiO1xyXG5pbXBvcnQgVXNlckRldGFpbHMgZnJvbSBcIi4uL2Vjb21tZXJjZS9qc29uL3VzZXItZGV0YWlscy5qc29uXCI7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7VXNlcn0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbFwiO1xyXG5pbXBvcnQgeyBDYXJ0IH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy9jYXJ0Lm1vZGFsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHVibGljIGFkZEl0ZW1Gcm9tQ2FydFBhZ2UocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICAvLyBsZXQgcHJvZHVjdElkeDogbnVtYmVyID0gLTE7XHJcbiAgICAgIC8vIFVzZXJDYXJ0Lm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMsIGlkeCk9PiB7XHJcbiAgICAgIC8vICAgaWYgKGl0ZW0uaXRlbUlkID09IHByb2R1Y3QuaXRlbUlkKVxyXG4gICAgICAvLyAgICAgcHJvZHVjdElkeCA9IGlkeDtcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0IGFzIE9yZGVyZWRJdGVtcyk7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKFVzZXJDYXJ0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gY2FydFxyXG4gICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0KTtcclxuICAgICAgLy8gcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIoVXNlckNhcnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEl0ZW1Ub0NhcnQocHJvZHVjdDogUHJvZHVjdCB8IE9yZGVyZWRJdGVtcykge1xyXG5cclxuICAgIGlmIChwcm9kdWN0LnF1YW50aXR5KSB7XHJcblxyXG4gICAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QgYXMgUHJvZHVjdCk7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQob3JkZXJlZEl0ZW0gYXMgT3JkZXJlZEl0ZW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0IGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcclxuXHJcbiAgICAgIGNvbnN0IG9yZGVyZWRJdGVtID0gdGhpcy5vYmplY3RNYXBwZXIocHJvZHVjdCk7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvV2lzaGxpc3Qob3JkZXJlZEl0ZW0pOyBcclxuICB9XHJcbiAgcHVibGljIHJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdChwcm9kdWN0Lml0ZW1JZCk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZW1vdmVJdGVtRnJvbUNhcnQocHJvZHVjdDogUHJvZHVjdCB8IE9yZGVyZWRJdGVtcykge1xyXG5cclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbUNhcnQocHJvZHVjdC5pdGVtSWQpO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0SXRlbUlkeEpTT04oaWQ6IHN0cmluZywgdHlwZTogJ0ZBVk9VUklURScgfCAnQ0FSVCcpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFByb2R1Y3RGcm9tQ2FydChpZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RvcmVJdGVtVG9EQihwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQ0FSVCcgfCAnV0lTSExJU1QnKSB7XHJcbiAgICBpZiAodHlwZSA9PSBcIkNBUlRcIikge1xyXG4gICAgICBjb25zdCBvcmRlclByb2R1Y3Q6IE9yZGVyZWRJdGVtcyA9IHRoaXMub2JqZWN0TWFwcGVyKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0UHJvZHVjdEZyb21DYXJ0KHByb2R1Y3QuaXRlbUlkKSBhcyB1bmtub3duIGFzIFByb2R1Y3QpO1xyXG4gICAgICBcclxuICAgICAgaWYgKG9yZGVyUHJvZHVjdCkge1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChvcmRlclByb2R1Y3QpO1xyXG4gICAgICAgIC8vIFVzZXJDYXJ0Lm9yZGVyZWRJdGVtcy5wdXNoKG9yZGVyUHJvZHVjdCBhcyBuZXZlcik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG9yZGVyUHJvZHVjdDogT3JkZXJlZEl0ZW1zID0gdGhpcy5vYmplY3RNYXBwZXIodGhpcy5zdG9yYWdlU2VydmljZS5nZXRQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3QuaXRlbUlkKSBhcyB1bmtub3duIGFzIFByb2R1Y3QpO1xyXG4gICAgICBcclxuICAgICAgaWYgKG9yZGVyUHJvZHVjdCkge1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvV2lzaGxpc3Qob3JkZXJQcm9kdWN0KTtcclxuICAgICAgICBVc2VyRmF2b3VyaXRlcy5vcmRlcmVkSXRlbXMucHVzaChvcmRlclByb2R1Y3QgYXMgbmV2ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SXRlbUJ5SWR4KGl0ZW1JZDogc3RyaW5nLCB0eXBlOiAnRkFWT1VSSVRFJyB8ICdDQVJUJyk6IE9yZGVyZWRJdGVtcyB8IG51bGwge1xyXG4gICAgY29uc3QgcHJvZHVjdElkeCA9IHRoaXMuZ2V0SXRlbUlkeEpTT04oaXRlbUlkLCB0eXBlKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKHR5cGUsIHByb2R1Y3RJZHgpO1xyXG4gICAgLy8gY29uc3QganNvbiA9ICh0eXBlID09IFwiRkFWT1VSSVRFXCIpID8gVXNlckZhdm91cml0ZXMgOiBVc2VyQ2FydDtcclxuICAgIC8vIGlmIChwcm9kdWN0SWR4ID49IDApXHJcbiAgICAvLyAgIHJldHVybiBqc29uLm9yZGVyZWRJdGVtc1twcm9kdWN0SWR4XTtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9iamVjdE1hcHBlcihwcm9kdWN0OiBQcm9kdWN0KTogT3JkZXJlZEl0ZW1zIHtcclxuICAgIHJldHVybiBuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0b3JlQ2FydERhdGFUb1NlcnZlcihjYXJ0OiBDYXJ0KSB7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdG9yZURhdGFUb1NlcnZlcigpIHtcclxuICAgIC8vIGNvbnN0IHVzZXJDYXJ0ID0gVXNlckNhcnQgYXMgbmV2ZXIgYXMgQ2FydDtcclxuICAgIC8vIGNvbnN0IHVzZXJXaXNobGlzdCA9IFVzZXJGYXZvdXJpdGVzIGFzIG5ldmVyIGFzIENhcnQ7XHJcbiAgICAvLyBpZiAodXNlckNhcnQuY2FydElkPy5sZW5ndGggPT0gMClcclxuICAgIC8vICAgZGVsZXRlIHVzZXJDYXJ0LmNhcnRJZDtcclxuICAgIC8vIGlmICh1c2VyV2lzaGxpc3QuY2FydElkPy5sZW5ndGggPT0gMClcclxuICAgIC8vICAgZGVsZXRlIHVzZXJXaXNobGlzdC5jYXJ0SWQ7XHJcblxyXG4gICAgLy8gcmV0dXJuIGZvcmtKb2luKFtcclxuICAgIC8vICAgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQihVc2VyQ2FydCksXHJcbiAgICAvLyAgIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIoVXNlckZhdm91cml0ZXMpXHJcbiAgICAvLyBdKTtcclxuICB9XHJcbn0iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsMkRBQTJEO0FBQzNELE9BQU8sY0FBYyxNQUFNLHVDQUF1QyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQVd0RSxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUNtQixjQUFxQyxFQUNyQyxXQUF3QjtRQUR4QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDeEMsQ0FBQztJQUVHLG1CQUFtQixDQUFDLE9BQXFCLEVBQUUsUUFBYTtRQUM3RCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQiwrQkFBK0I7WUFDL0IsOERBQThEO1lBQzlELHVDQUF1QztZQUN2Qyx3QkFBd0I7WUFDeEIsTUFBTTtZQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBdUIsQ0FBQyxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTix3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsT0FBK0I7UUFFbEQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFrQixDQUFDLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFdBQTJCLENBQUMsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQWtCLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUNNLGtCQUFrQixDQUFDLE9BQWdCO1FBRXhDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ00sdUJBQXVCLENBQUMsT0FBZ0I7UUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNNLGtCQUFrQixDQUFDLE9BQStCO1FBRXJELElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDTSxjQUFjLENBQUMsRUFBVSxFQUFFLElBQTBCO1FBQzFELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQWdCLEVBQUUsSUFBeUI7UUFDOUQsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxZQUFZLEdBQWlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUF1QixDQUFDLENBQUM7WUFFbkksSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbkQscURBQXFEO1lBQ3ZELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sWUFBWSxHQUFpQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBdUIsQ0FBQyxDQUFDO1lBRXZJLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3ZELGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQXFCLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxZQUFZLENBQUMsTUFBYyxFQUFFLElBQTBCO1FBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELGlDQUFpQztRQUNqQyxrRUFBa0U7UUFDbEUsdUJBQXVCO1FBQ3ZCLDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBZ0I7UUFDbkMsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0scUJBQXFCLENBQUMsSUFBVTtJQUV2QyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLDhDQUE4QztRQUM5Qyx3REFBd0Q7UUFDeEQsb0NBQW9DO1FBQ3BDLDRCQUE0QjtRQUM1Qix3Q0FBd0M7UUFDeEMsZ0NBQWdDO1FBRWhDLG9CQUFvQjtRQUNwQiw0Q0FBNEM7UUFDNUMsaURBQWlEO1FBQ2pELE1BQU07SUFDUixDQUFDOzhHQS9GVSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBpbXBvcnQgVXNlckNhcnQgZnJvbSBcIi4uL2Vjb21tZXJjZS9qc29uL3VzZXItY2FydC5qc29uXCI7XHJcbmltcG9ydCBVc2VyRmF2b3VyaXRlcyBmcm9tIFwiLi4vZWNvbW1lcmNlL2pzb24vdXNlci1mYXZvdXJpdGUuanNvblwiO1xyXG5pbXBvcnQgVXNlckRldGFpbHMgZnJvbSBcIi4uL2Vjb21tZXJjZS9qc29uL3VzZXItZGV0YWlscy5qc29uXCI7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7VXNlcn0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbFwiO1xyXG5pbXBvcnQgeyBDYXJ0IH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy9jYXJ0Lm1vZGFsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHVibGljIGFkZEl0ZW1Gcm9tQ2FydFBhZ2UocHJvZHVjdDogT3JkZXJlZEl0ZW1zLCB1c2VyQ2FydDogYW55KSB7XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICAvLyBsZXQgcHJvZHVjdElkeDogbnVtYmVyID0gLTE7XHJcbiAgICAgIC8vIFVzZXJDYXJ0Lm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMsIGlkeCk9PiB7XHJcbiAgICAgIC8vICAgaWYgKGl0ZW0uaXRlbUlkID09IHByb2R1Y3QuaXRlbUlkKVxyXG4gICAgICAvLyAgICAgcHJvZHVjdElkeCA9IGlkeDtcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0IGFzIE9yZGVyZWRJdGVtcyk7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJDYXJ0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gY2FydFxyXG4gICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0KTtcclxuICAgICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlckNhcnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEl0ZW1Ub0NhcnQocHJvZHVjdDogUHJvZHVjdCB8IE9yZGVyZWRJdGVtcykge1xyXG5cclxuICAgIGlmIChwcm9kdWN0LnF1YW50aXR5KSB7XHJcblxyXG4gICAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QgYXMgUHJvZHVjdCk7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQob3JkZXJlZEl0ZW0gYXMgT3JkZXJlZEl0ZW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0IGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcclxuXHJcbiAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QpO1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChvcmRlcmVkSXRlbSk7IFxyXG4gIH1cclxuICBwdWJsaWMgcmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3QuaXRlbUlkKTtcclxuICB9XHJcbiAgcHVibGljIHJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0OiBQcm9kdWN0IHwgT3JkZXJlZEl0ZW1zKSB7XHJcblxyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tQ2FydChwcm9kdWN0Lml0ZW1JZCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRJdGVtSWR4SlNPTihpZDogc3RyaW5nLCB0eXBlOiAnRkFWT1VSSVRFJyB8ICdDQVJUJykge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0UHJvZHVjdEZyb21DYXJ0KGlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdG9yZUl0ZW1Ub0RCKHByb2R1Y3Q6IFByb2R1Y3QsIHR5cGU6ICdDQVJUJyB8ICdXSVNITElTVCcpIHtcclxuICAgIGlmICh0eXBlID09IFwiQ0FSVFwiKSB7XHJcbiAgICAgIGNvbnN0IG9yZGVyUHJvZHVjdDogT3JkZXJlZEl0ZW1zID0gdGhpcy5vYmplY3RNYXBwZXIodGhpcy5zdG9yYWdlU2VydmljZS5nZXRQcm9kdWN0RnJvbUNhcnQocHJvZHVjdC5pdGVtSWQpIGFzIHVua25vd24gYXMgUHJvZHVjdCk7XHJcbiAgICAgIFxyXG4gICAgICBpZiAob3JkZXJQcm9kdWN0KSB7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9DYXJ0KG9yZGVyUHJvZHVjdCk7XHJcbiAgICAgICAgLy8gVXNlckNhcnQub3JkZXJlZEl0ZW1zLnB1c2gob3JkZXJQcm9kdWN0IGFzIG5ldmVyKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgb3JkZXJQcm9kdWN0OiBPcmRlcmVkSXRlbXMgPSB0aGlzLm9iamVjdE1hcHBlcih0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdC5pdGVtSWQpIGFzIHVua25vd24gYXMgUHJvZHVjdCk7XHJcbiAgICAgIFxyXG4gICAgICBpZiAob3JkZXJQcm9kdWN0KSB7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChvcmRlclByb2R1Y3QpO1xyXG4gICAgICAgIFVzZXJGYXZvdXJpdGVzLm9yZGVyZWRJdGVtcy5wdXNoKG9yZGVyUHJvZHVjdCBhcyBuZXZlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJdGVtQnlJZHgoaXRlbUlkOiBzdHJpbmcsIHR5cGU6ICdGQVZPVVJJVEUnIHwgJ0NBUlQnKTogT3JkZXJlZEl0ZW1zIHwgbnVsbCB7XHJcbiAgICBjb25zdCBwcm9kdWN0SWR4ID0gdGhpcy5nZXRJdGVtSWR4SlNPTihpdGVtSWQsIHR5cGUpO1xyXG4gICAgLy8gY29uc29sZS5sb2codHlwZSwgcHJvZHVjdElkeCk7XHJcbiAgICAvLyBjb25zdCBqc29uID0gKHR5cGUgPT0gXCJGQVZPVVJJVEVcIikgPyBVc2VyRmF2b3VyaXRlcyA6IFVzZXJDYXJ0O1xyXG4gICAgLy8gaWYgKHByb2R1Y3RJZHggPj0gMClcclxuICAgIC8vICAgcmV0dXJuIGpzb24ub3JkZXJlZEl0ZW1zW3Byb2R1Y3RJZHhdO1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb2JqZWN0TWFwcGVyKHByb2R1Y3Q6IFByb2R1Y3QpOiBPcmRlcmVkSXRlbXMge1xyXG4gICAgcmV0dXJuIG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RvcmVDYXJ0RGF0YVRvU2VydmVyKGNhcnQ6IENhcnQpIHtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0b3JlRGF0YVRvU2VydmVyKCkge1xyXG4gICAgLy8gY29uc3QgdXNlckNhcnQgPSBVc2VyQ2FydCBhcyBuZXZlciBhcyBDYXJ0O1xyXG4gICAgLy8gY29uc3QgdXNlcldpc2hsaXN0ID0gVXNlckZhdm91cml0ZXMgYXMgbmV2ZXIgYXMgQ2FydDtcclxuICAgIC8vIGlmICh1c2VyQ2FydC5jYXJ0SWQ/Lmxlbmd0aCA9PSAwKVxyXG4gICAgLy8gICBkZWxldGUgdXNlckNhcnQuY2FydElkO1xyXG4gICAgLy8gaWYgKHVzZXJXaXNobGlzdC5jYXJ0SWQ/Lmxlbmd0aCA9PSAwKVxyXG4gICAgLy8gICBkZWxldGUgdXNlcldpc2hsaXN0LmNhcnRJZDtcclxuXHJcbiAgICAvLyByZXR1cm4gZm9ya0pvaW4oW1xyXG4gICAgLy8gICB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKFVzZXJDYXJ0KSxcclxuICAgIC8vICAgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQihVc2VyRmF2b3VyaXRlcylcclxuICAgIC8vIF0pO1xyXG4gIH1cclxufSJdfQ==
@@ -4811,7 +4811,7 @@ class CartService {
4811
4811
  this.storageService = storageService;
4812
4812
  this.restService = restService;
4813
4813
  }
4814
- addItemFromCartPage(product) {
4814
+ addItemFromCartPage(product, userCart) {
4815
4815
  if (product.quantity) {
4816
4816
  // let productIdx: number = -1;
4817
4817
  // UserCart.orderedItems.forEach((item: OrderedItems, idx)=> {
@@ -4819,12 +4819,12 @@ class CartService {
4819
4819
  // productIdx = idx;
4820
4820
  // });
4821
4821
  this.storageService.addProductToCart(product);
4822
- // return this.restService.addItemToDB(UserCart);
4822
+ return this.restService.addItemToDB(userCart);
4823
4823
  }
4824
4824
  else {
4825
4825
  // remove item from cart
4826
4826
  this.removeItemFromCart(product);
4827
- // return this.restService.addItemToDB(UserCart);
4827
+ return this.restService.addItemToDB(userCart);
4828
4828
  }
4829
4829
  }
4830
4830
  addItemToCart(product) {
@@ -4980,10 +4980,14 @@ class FeaturedProductsComponent extends BaseSection {
4980
4980
  this.cartService.addItemToCart(product);
4981
4981
  }
4982
4982
  toggleItemToFav(product, type) {
4983
- if (type == 'ADD')
4983
+ if (type == 'ADD') {
4984
+ product.whislist = true;
4984
4985
  this.cartService.addItemToFavourite(product);
4985
- else
4986
+ }
4987
+ else {
4988
+ product.whislist = false;
4986
4989
  this.cartService.removeItemFromFavourite(product);
4990
+ }
4987
4991
  }
4988
4992
  proceedToProductDesc(productId) {
4989
4993
  this.router.navigate([`details`], { queryParams: { id: productId } });
@@ -5659,15 +5663,15 @@ class CartComponent extends BaseSection {
5659
5663
  this.userDetails = null;
5660
5664
  this.userCart = null;
5661
5665
  this.USER_CART_ITEMS = null;
5662
- }
5663
- ngOnInit() {
5664
- const billdetails = {
5666
+ this.billdetails = {
5665
5667
  "totalNetValue": 0,
5666
5668
  "totalGrossValue": 0,
5667
5669
  "totalTax": 0,
5668
5670
  "totalOfferedValue": 0,
5669
5671
  "deliveryCharges": 0
5670
5672
  };
5673
+ }
5674
+ ngOnInit() {
5671
5675
  this._eventService.showLoadingScreen.subscribe((response) => {
5672
5676
  this.isLoading = response;
5673
5677
  });
@@ -5683,11 +5687,11 @@ class CartComponent extends BaseSection {
5683
5687
  console.log("cart Data", cartData);
5684
5688
  this.USER_CART_ITEMS = cartData.target.result;
5685
5689
  [...tempUserCart, ...this.USER_CART_ITEMS].forEach((item) => {
5686
- billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5687
- billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5690
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5691
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5688
5692
  });
5689
- billdetails.totalNetValue = billdetails.totalGrossValue + billdetails.totalTax - billdetails.deliveryCharges;
5690
- this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails };
5693
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
5694
+ this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails: this.billdetails };
5691
5695
  console.log(this.responseData);
5692
5696
  };
5693
5697
  });
@@ -5698,11 +5702,11 @@ class CartComponent extends BaseSection {
5698
5702
  console.log("cart Data", cartData);
5699
5703
  this.USER_CART_ITEMS = cartData.target.result;
5700
5704
  [...this.USER_CART_ITEMS].forEach((item) => {
5701
- billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5702
- billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5705
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5706
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5703
5707
  });
5704
- billdetails.totalNetValue = billdetails.totalGrossValue + billdetails.totalTax - billdetails.deliveryCharges;
5705
- this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails, userId: this.userDetails?.userId };
5708
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
5709
+ this.responseData = { orderedItems: [...tempUserCart, ...this.USER_CART_ITEMS], billdetails: this.billdetails, userId: this.userDetails?.userId };
5706
5710
  console.log(this.responseData);
5707
5711
  this.restService.addItemToDB(this.responseData).subscribe((response) => {
5708
5712
  localStorage.setItem('cartId', response.data?.cartId);
@@ -5718,11 +5722,11 @@ class CartComponent extends BaseSection {
5718
5722
  cartResponse.onsuccess = (cartData) => {
5719
5723
  this.USER_CART_ITEMS = cartData.target.result;
5720
5724
  this.USER_CART_ITEMS.forEach((item) => {
5721
- billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5722
- billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5725
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5726
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5723
5727
  });
5724
- billdetails.totalNetValue = billdetails.totalGrossValue + billdetails.totalTax - billdetails.deliveryCharges;
5725
- this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails };
5728
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
5729
+ this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails: this.billdetails };
5726
5730
  };
5727
5731
  });
5728
5732
  // this.responseData = this.storageService.calculateBillingDetails();
@@ -5753,10 +5757,16 @@ class CartComponent extends BaseSection {
5753
5757
  removeItem(item) {
5754
5758
  item.quantity = 0;
5755
5759
  this.loadingItems.push(item.itemId);
5756
- // this.cartService.addItemFromCartPage(item).subscribe((response)=> {
5757
- // this.loadingItems = this.loadingItems.filter((idx: string)=> idx != item.itemId);
5758
- // this.responseData = this.storageService.calculateBillingDetails();
5759
- // })
5760
+ this.cartService.addItemFromCartPage(item, this.responseData).subscribe((response) => {
5761
+ this.loadingItems = this.loadingItems.filter((idx) => idx != item.itemId);
5762
+ // this.responseData = this.storageService.calculateBillingDetails();
5763
+ response?.data?.orderedItems.forEach((item) => {
5764
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5765
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5766
+ });
5767
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
5768
+ this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails: this.billdetails };
5769
+ });
5760
5770
  }
5761
5771
  addToCart(item, type) {
5762
5772
  if (type == 'ADD') {
@@ -5766,10 +5776,15 @@ class CartComponent extends BaseSection {
5766
5776
  item.quantity -= 1;
5767
5777
  }
5768
5778
  this.loadingItems.push(item.itemId);
5769
- // this.cartService.addItemFromCartPage(item).subscribe((response)=> {
5770
- // this.loadingItems = this.loadingItems.filter((idx: string)=> idx != item.itemId);
5771
- // this.responseData = this.storageService.calculateBillingDetails();
5772
- // })
5779
+ this.cartService.addItemFromCartPage(item, this.responseData).subscribe((response) => {
5780
+ this.loadingItems = this.loadingItems.filter((idx) => idx != item.itemId);
5781
+ response?.data?.orderedItems.forEach((item) => {
5782
+ this.billdetails.totalGrossValue += (item.price * (item.quantity ?? 1));
5783
+ this.billdetails.totalTax += (item.price * (item.itemTax ?? 1));
5784
+ });
5785
+ this.billdetails.totalNetValue = this.billdetails.totalGrossValue + this.billdetails.totalTax - this.billdetails.deliveryCharges;
5786
+ this.responseData = { orderedItems: this.USER_CART_ITEMS, billdetails: this.billdetails };
5787
+ });
5773
5788
  }
5774
5789
  proceedToPayment() {
5775
5790
  if (!this.storageService.getUser()) {