ng-easycommerce-v18 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/classes/filters/PriceRangeFilter.mjs +48 -0
- package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +75 -6
- package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +53 -3
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +95 -4
- package/esm2022/lib/ec-components/index.mjs +5 -1
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +25 -1
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +20 -3
- package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +60 -0
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +2 -1
- package/esm2022/lib/ec-services/auth.service.mjs +17 -6
- package/esm2022/lib/ec-services/cart.service.mjs +19 -2
- package/esm2022/lib/ec-services/filters.service.mjs +3 -2
- package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +7 -7
- package/esm2022/lib/ec-services/orders.service.mjs +28 -1
- package/esm2022/lib/ec-services/pagination.service.mjs +8 -1
- package/esm2022/lib/ec-services/product-detail.service.mjs +1 -1
- package/esm2022/lib/ec-services/products.service.mjs +29 -1
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/product.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ng-easycommerce-v18.mjs +455 -28
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/classes/filters/PriceRangeFilter.d.ts +23 -0
- package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +23 -1
- package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +4 -1
- package/lib/ec-components/filters-ec/filters-ec.component.d.ts +20 -1
- package/lib/ec-components/index.d.ts +1 -0
- package/lib/ec-components/product-detail-ec/product-detail-ec.component.d.ts +9 -0
- package/lib/ec-components/product-ec/product-ec.component.d.ts +5 -1
- package/lib/ec-components/sidebar-ec/sidebar-ec.component.d.ts +29 -0
- package/lib/ec-services/auth.service.d.ts +3 -1
- package/lib/ec-services/cart.service.d.ts +10 -1
- package/lib/ec-services/orders.service.d.ts +6 -0
- package/lib/ec-services/pagination.service.d.ts +5 -0
- package/lib/ec-services/products.service.d.ts +14 -0
- package/lib/interfaces/filter.d.ts +2 -2
- package/lib/interfaces/product.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Filter } from "./filter";
|
|
2
|
+
export class PriceRangeFilter extends Filter {
|
|
3
|
+
minPrice = 0;
|
|
4
|
+
maxPrice = 1000;
|
|
5
|
+
currentMinPrice = null;
|
|
6
|
+
currentMaxPrice = null;
|
|
7
|
+
type = () => 'price_range';
|
|
8
|
+
// Método para configurar el rango de precios inicial
|
|
9
|
+
setContent = (options) => {
|
|
10
|
+
this.minPrice = options.minPrice || this.minPrice;
|
|
11
|
+
this.maxPrice = options.maxPrice || this.maxPrice;
|
|
12
|
+
this.currentMinPrice = options.currentMinPrice || this.minPrice;
|
|
13
|
+
this.currentMaxPrice = options.currentMaxPrice || this.maxPrice;
|
|
14
|
+
};
|
|
15
|
+
updatePrices(min, max) {
|
|
16
|
+
this.minPrice = min;
|
|
17
|
+
this.maxPrice = max;
|
|
18
|
+
}
|
|
19
|
+
// Método para actualizar los valores seleccionados
|
|
20
|
+
setSelected = (min, max) => {
|
|
21
|
+
this.currentMinPrice = min;
|
|
22
|
+
this.currentMaxPrice = max;
|
|
23
|
+
};
|
|
24
|
+
// Retorna los valores seleccionados (rango de precios)
|
|
25
|
+
getSelectedRange = () => {
|
|
26
|
+
return {
|
|
27
|
+
min: this.currentMinPrice || this.minPrice,
|
|
28
|
+
max: this.currentMaxPrice || this.maxPrice,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
// Genera los parámetros de la URL en base al rango de precios seleccionado
|
|
32
|
+
toUrlParams = () => {
|
|
33
|
+
let params = '';
|
|
34
|
+
if (this.currentMinPrice !== null) {
|
|
35
|
+
params += `&price_min=${this.currentMinPrice}`;
|
|
36
|
+
}
|
|
37
|
+
if (this.currentMaxPrice !== null) {
|
|
38
|
+
params += `&price_max=${this.currentMaxPrice}`;
|
|
39
|
+
}
|
|
40
|
+
return params;
|
|
41
|
+
};
|
|
42
|
+
// Restablece el filtro a los valores por defecto
|
|
43
|
+
reset = () => {
|
|
44
|
+
this.currentMinPrice = 0;
|
|
45
|
+
this.currentMaxPrice = this.maxPrice;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpY2VSYW5nZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9jbGFzc2VzL2ZpbHRlcnMvUHJpY2VSYW5nZUZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxNQUFNO0lBRXhDLFFBQVEsR0FBVyxDQUFDLENBQUM7SUFDckIsUUFBUSxHQUFXLElBQUksQ0FBQztJQUN4QixlQUFlLEdBQWtCLElBQUksQ0FBQztJQUN0QyxlQUFlLEdBQWtCLElBQUksQ0FBQztJQUU3QixJQUFJLEdBQUcsR0FBZSxFQUFFLENBQUMsYUFBYSxDQUFDO0lBRWhELHFEQUFxRDtJQUM1QyxVQUFVLEdBQUcsQ0FBQyxPQUFrRyxFQUFFLEVBQUU7UUFDekgsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDcEUsQ0FBQyxDQUFBO0lBRUQsWUFBWSxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxtREFBbUQ7SUFDMUMsV0FBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBUSxFQUFFO1FBQ3RELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQTtJQUVELHVEQUF1RDtJQUN2RCxnQkFBZ0IsR0FBRyxHQUFpQyxFQUFFO1FBQ2xELE9BQU87WUFDSCxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUMxQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUTtTQUM3QyxDQUFDO0lBQ04sQ0FBQyxDQUFBO0lBRUQsMkVBQTJFO0lBQ2xFLFdBQVcsR0FBRyxHQUFXLEVBQUU7UUFDaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksY0FBYyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksY0FBYyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsQ0FBQTtJQUVELGlEQUFpRDtJQUNqRCxLQUFLLEdBQUcsR0FBUyxFQUFFO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pDLENBQUMsQ0FBQTtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVyXCI7XHJcbmltcG9ydCB7IEZpbHRlckVsZW1lbnQsIEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9maWx0ZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQcmljZVJhbmdlRmlsdGVyIGV4dGVuZHMgRmlsdGVyIHtcclxuXHJcbiAgICBtaW5QcmljZTogbnVtYmVyID0gMDtcclxuICAgIG1heFByaWNlOiBudW1iZXIgPSAxMDAwO1xyXG4gICAgY3VycmVudE1pblByaWNlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIGN1cnJlbnRNYXhQcmljZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgb3ZlcnJpZGUgdHlwZSA9ICgpOiBGaWx0ZXJUeXBlID0+ICdwcmljZV9yYW5nZSc7XHJcblxyXG4gICAgLy8gTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYXIgZWwgcmFuZ28gZGUgcHJlY2lvcyBpbmljaWFsXHJcbiAgICBvdmVycmlkZSBzZXRDb250ZW50ID0gKG9wdGlvbnM6IHsgbWluUHJpY2U6IG51bWJlcjsgbWF4UHJpY2U6IG51bWJlcjsgY3VycmVudE1pblByaWNlOiBudW1iZXI7IGN1cnJlbnRNYXhQcmljZTogbnVtYmVyOyB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5taW5QcmljZSA9IG9wdGlvbnMubWluUHJpY2UgfHwgdGhpcy5taW5QcmljZTtcclxuICAgICAgICB0aGlzLm1heFByaWNlID0gb3B0aW9ucy5tYXhQcmljZSB8fCB0aGlzLm1heFByaWNlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gb3B0aW9ucy5jdXJyZW50TWluUHJpY2UgfHwgdGhpcy5taW5QcmljZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IG9wdGlvbnMuY3VycmVudE1heFByaWNlIHx8IHRoaXMubWF4UHJpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJpY2VzKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubWluUHJpY2UgPSBtaW47XHJcbiAgICAgICAgdGhpcy5tYXhQcmljZSA9IG1heDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNw6l0b2RvIHBhcmEgYWN0dWFsaXphciBsb3MgdmFsb3JlcyBzZWxlY2Npb25hZG9zXHJcbiAgICBvdmVycmlkZSBzZXRTZWxlY3RlZCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNaW5QcmljZSA9IG1pbjtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IG1heDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXRvcm5hIGxvcyB2YWxvcmVzIHNlbGVjY2lvbmFkb3MgKHJhbmdvIGRlIHByZWNpb3MpXHJcbiAgICBnZXRTZWxlY3RlZFJhbmdlID0gKCk6IHsgbWluOiBudW1iZXIsIG1heDogbnVtYmVyIH0gPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG1pbjogdGhpcy5jdXJyZW50TWluUHJpY2UgfHwgdGhpcy5taW5QcmljZSxcclxuICAgICAgICAgICAgbWF4OiB0aGlzLmN1cnJlbnRNYXhQcmljZSB8fCB0aGlzLm1heFByaWNlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2VuZXJhIGxvcyBwYXLDoW1ldHJvcyBkZSBsYSBVUkwgZW4gYmFzZSBhbCByYW5nbyBkZSBwcmVjaW9zIHNlbGVjY2lvbmFkb1xyXG4gICAgb3ZlcnJpZGUgdG9VcmxQYXJhbXMgPSAoKTogc3RyaW5nID0+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNaW5QcmljZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBwYXJhbXMgKz0gYCZwcmljZV9taW49JHt0aGlzLmN1cnJlbnRNaW5QcmljZX1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1heFByaWNlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyArPSBgJnByaWNlX21heD0ke3RoaXMuY3VycmVudE1heFByaWNlfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlc3RhYmxlY2UgZWwgZmlsdHJvIGEgbG9zIHZhbG9yZXMgcG9yIGRlZmVjdG9cclxuICAgIHJlc2V0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gMDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IHRoaXMubWF4UHJpY2U7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,16 +1,85 @@
|
|
|
1
1
|
import { Component, inject } from '@angular/core';
|
|
2
|
-
import { OrdersService } from '../../../ec-services';
|
|
2
|
+
import { CartService, ChannelService, OrdersService } from '../../../ec-services';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { EcCurrencySymbolPipe } from '../../../ec-pipe';
|
|
5
|
+
import { LoadingFullEcComponent } from '../../widgets-ec';
|
|
6
|
+
import { AsyncPipe, TitleCasePipe, UpperCasePipe } from '@angular/common';
|
|
7
|
+
import { ApiConstantsService, CoreConstantsService } from '../../../constants';
|
|
8
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
9
|
+
import moment from 'moment';
|
|
3
10
|
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@ngx-translate/core";
|
|
4
12
|
export class OrderEcComponent {
|
|
5
|
-
|
|
13
|
+
_ordersService = inject(OrdersService);
|
|
14
|
+
_consts = inject(ApiConstantsService);
|
|
15
|
+
_constants = inject(CoreConstantsService);
|
|
16
|
+
_router = inject(Router);
|
|
17
|
+
_cartService = inject(CartService);
|
|
18
|
+
_channelConfigService = inject(ChannelService);
|
|
19
|
+
_activedRoute = inject(ActivatedRoute);
|
|
20
|
+
order$ = this._ordersService.selectedOrder$;
|
|
21
|
+
allowRepeatOrders = false;
|
|
22
|
+
loading = false;
|
|
23
|
+
showPrice = false;
|
|
24
|
+
creditAmountConfigured = false;
|
|
25
|
+
hidePrices = false;
|
|
26
|
+
hideDiscounts = false;
|
|
27
|
+
hideTaxes = false;
|
|
28
|
+
channelConfig = this._ordersService.channelConfig;
|
|
29
|
+
numberOrder;
|
|
6
30
|
ngOnInit() {
|
|
7
|
-
|
|
31
|
+
this.loading = true;
|
|
32
|
+
this._ordersService.selectedOrder$.subscribe(res => {
|
|
33
|
+
if (!res) {
|
|
34
|
+
const number = this._activedRoute.snapshot.params["number"];
|
|
35
|
+
this._ordersService.getOrderByNumber(number);
|
|
36
|
+
}
|
|
37
|
+
console.log('inside');
|
|
38
|
+
});
|
|
39
|
+
this._channelConfigService.channel$.subscribe((config) => {
|
|
40
|
+
if (config && config.allowRepeatOrders !== undefined) {
|
|
41
|
+
this.allowRepeatOrders = config.allowRepeatOrders;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.allowRepeatOrders = false;
|
|
45
|
+
}
|
|
46
|
+
this.hidePrices = config?.hidePrices ?? false;
|
|
47
|
+
this.hideDiscounts = config?.hideDiscounts ?? false;
|
|
48
|
+
this.hideTaxes = config?.hideTaxes ?? false;
|
|
49
|
+
});
|
|
50
|
+
this._cartService.showPrice$.subscribe((showPrice) => {
|
|
51
|
+
this.showPrice = showPrice;
|
|
52
|
+
});
|
|
53
|
+
this._cartService.creditAmount$.subscribe((creditAmount) => {
|
|
54
|
+
this.creditAmountConfigured = creditAmount !== null;
|
|
55
|
+
});
|
|
8
56
|
}
|
|
57
|
+
getUrlBase() {
|
|
58
|
+
return this._consts.getUrlBase();
|
|
59
|
+
}
|
|
60
|
+
back() {
|
|
61
|
+
this._router.navigateByUrl('account/orders');
|
|
62
|
+
}
|
|
63
|
+
toDate(date, format) {
|
|
64
|
+
return moment(date).format(!format && 'DD/MM/YYYY, h:mm:ss a' || format);
|
|
65
|
+
}
|
|
66
|
+
repeatOrder(order) {
|
|
67
|
+
if (this.allowRepeatOrders && order) {
|
|
68
|
+
//this._cartService.addRepeatOrderToCart(this.order.items);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
mediaUrl = () => this._constants.mediaUrl();
|
|
9
72
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: OrderEcComponent, isStandalone: true, selector: "app-order-ec", ngImport: i0, template: "<p>order-ec works!</p>\r\n", styles: [""] });
|
|
73
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderEcComponent, isStandalone: true, selector: "app-order-ec", ngImport: i0, template: "<main class=\"py-5\" id=\"orderEcComponent\">\r\n <div class=\"container\">\r\n @if(order$ | async; as order){\r\n <div class=\"wrap\">\r\n @if(order){\r\n\r\n <div class=\"row justify-content-between \">\r\n <div class=\"col-sm-auto col-12 font-brandon\">\r\n <h4 class=\"tit1 fw-bold\">{{ ('order' | translate) + ': ' + order.number }}</h4>\r\n </div>\r\n @if(order?.invoice){\r\n <div class=\"col-sm col-12 font-brandon\">\r\n <a target=\"_blank\" [href]=\"getUrlBase().slice(0, -1) + order.invoice\"\r\n class=\"btn btn-link btn-invoice\">\r\n <i class=\"fas fa-file-download me-1\"></i>\r\n {{ 'download' | translate }} {{ 'invoices' | translate | titlecase }}\r\n </a>\r\n </div>\r\n }\r\n <a (click)=\"back()\" class=\"col-auto text-end\">\r\n <button class=\"btn btn-outline-dark btvolver border\">{{ 'back-to-orders' | translate }}</button>\r\n </a>\r\n </div>\r\n\r\n <section id=\"orders\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col-md-2 col-12\">\r\n <p class=\"st\">{{ 'payment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'payment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0]?.method?.name | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">\r\n Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'date' | translate }}:</p>\r\n <p class=\"\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'total' | translate }}:</p>\r\n <h5 class=\"fw-bold\">\r\n {{ (order.totals.total) | ecCurrencySymbol}}\r\n\r\n </h5>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n @if(!hidePrices && allowRepeatOrders){\r\n <div class=\"text-end mt-3\">\r\n <button class=\"btn btn-primary mb-2\" (click)=\"repeatOrder(order)\">\r\n {{ 'repeat-order' | translate }}\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"container py-3 border-top border-bottom\">\r\n @if(order.items.length){\r\n <div class=\"row\">\r\n <div class=\"col-2 font-sm font-brandon d-none d-md-block\">\r\n {{ 'product' | translate | uppercase }}\r\n </div>\r\n <div class=\"col-4 font-sm font-brandon d-none d-md-block\">\r\n {{ 'description' | translate | uppercase }}\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div id=\"colLots\" class=\"col-1 font-sm font-brandon d-none d-md-block\">\r\n <!-- {{ 'description' | translate | uppercase }} -->\r\n {{ 'lots' | translate | uppercase }}\r\n </div>\r\n }\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'unit-price' | translate | uppercase }}\r\n </div>\r\n }\r\n <div class=\"col-1 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'quantity' | translate | uppercase }}\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 text-end font-sm font-brandon d-none d-md-block\">\r\n {{ 'total' | translate | uppercase }}\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n\r\n }\r\n @for(item of order.items; track $index; let i = $index){\r\n <div class=\"row cart-items\">\r\n <div class=\"col-5 col-md-2 py-2\">\r\n @if(item.product.variants[0]?.images?.length){\r\n <img class=\"smc maxwidth img-fluid rounded-custom \"\r\n [src]=\"mediaUrl() + item.product.variants[0].images[0]\" alt=\"\">\r\n } @else {\r\n @if(item.product.picturesdefault){\r\n <img class=\"smc maxwidth img-fluid rounded-custom\"\r\n [src]=\"mediaUrl() + item.product.picturesdefault[0]\" alt=\"\">\r\n }\r\n }\r\n </div>\r\n <div\r\n class=\"col-md-4 col-7 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <p class=\"font-brandon d-flex w-100 mb-0\">\r\n {{ item.product.name }} (Cod:{{ item.product.variants[0].code }})\r\n </p>\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div class=\"col-md-1 col-1 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <input type=\"button\" class=\"btn btn-primary btnSeguir m-0 text-center\" type=\"button\"\r\n [attr.data-bs-toggle]=\"'collapse'\" [attr.data-bs-target]=\"'#collapseExample'+i\"\r\n aria-expanded=\"false\" [attr.aria-controls]=\"'collapseExample'+i\"\r\n value=\"{{ 'see' | translate | uppercase }}\">\r\n </div>\r\n }\r\n <div class=\"container d-md-none\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ (item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) |\r\n ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ ((item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) *\r\n item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\">\r\n {{ (item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) | ecCurrencySymbol}}\r\n </p>\r\n </div>\r\n }\r\n <div class=\"col-1 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-end w-100 m-0\">\r\n {{ ((item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) * item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n <div class=\"collapse\" [attr.id]=\"'collapseExample'+i\">\r\n <div class=\"card card-body\">\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">#</th>\r\n <th scope=\"col\">Estado</th>\r\n <th scope=\"col\">Cantidad</th>\r\n <th scope=\"col\">Fecha Solicitada</th>\r\n <th scope=\"col\">Fecha Estimada</th>\r\n <th scope=\"col\">Sede</th>\r\n <th scope=\"col\">Nota</th>\r\n <th scope=\"col\">Total Lote</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for( lot of item.orderItemLot; track $index){\r\n <tr>\r\n <th scope=\"row\">{{lot.id}}</th>\r\n <td>{{lot.lot_status}}</td>\r\n <td>{{lot.quantity}}</td>\r\n <td>{{ toDate(lot.date_request, 'DD/MM/YYYY') | translate }}</td>\r\n @if(lot.date_deliver){\r\n <td>{{\r\n toDate(lot.date_deliver, 'DD/MM/YYYY') | translate }}</td>\r\n } @else {\r\n <td>Pendiente</td>\r\n }\r\n <td>{{lot.shipping_address_name}}</td>\r\n <td>{{lot.notes}}</td>\r\n <td>{{lot.total_lot | ecCurrencySymbol}}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-6\"></div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"row py-4\">\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'total-products' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.items) | ecCurrencySymbol }}\r\n </div>\r\n\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'shipment' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.shipping || '0') | ecCurrencySymbol }}\r\n\r\n </div>\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'discount' |\r\n translate }}</div>\r\n }\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end text-end\">\r\n {{ (order.totals.promotion) | ecCurrencySymbol }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0 ){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'taxes' | translate }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.taxes) | ecCurrencySymbol }}</div>\r\n }\r\n\r\n <div class=\"col-6 font-brandon font-md\">{{ 'total' | translate | uppercase }}</div>\r\n <div class=\"col-6 font-brandon font-md text-end\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</main>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }] });
|
|
11
74
|
}
|
|
12
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderEcComponent, decorators: [{
|
|
13
76
|
type: Component,
|
|
14
|
-
args: [{ selector: 'app-order-ec', standalone: true, imports: [
|
|
77
|
+
args: [{ selector: 'app-order-ec', standalone: true, imports: [TranslateModule,
|
|
78
|
+
EcCurrencySymbolPipe,
|
|
79
|
+
LoadingFullEcComponent,
|
|
80
|
+
AsyncPipe,
|
|
81
|
+
TitleCasePipe,
|
|
82
|
+
UpperCasePipe
|
|
83
|
+
], template: "<main class=\"py-5\" id=\"orderEcComponent\">\r\n <div class=\"container\">\r\n @if(order$ | async; as order){\r\n <div class=\"wrap\">\r\n @if(order){\r\n\r\n <div class=\"row justify-content-between \">\r\n <div class=\"col-sm-auto col-12 font-brandon\">\r\n <h4 class=\"tit1 fw-bold\">{{ ('order' | translate) + ': ' + order.number }}</h4>\r\n </div>\r\n @if(order?.invoice){\r\n <div class=\"col-sm col-12 font-brandon\">\r\n <a target=\"_blank\" [href]=\"getUrlBase().slice(0, -1) + order.invoice\"\r\n class=\"btn btn-link btn-invoice\">\r\n <i class=\"fas fa-file-download me-1\"></i>\r\n {{ 'download' | translate }} {{ 'invoices' | translate | titlecase }}\r\n </a>\r\n </div>\r\n }\r\n <a (click)=\"back()\" class=\"col-auto text-end\">\r\n <button class=\"btn btn-outline-dark btvolver border\">{{ 'back-to-orders' | translate }}</button>\r\n </a>\r\n </div>\r\n\r\n <section id=\"orders\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col-md-2 col-12\">\r\n <p class=\"st\">{{ 'payment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'payment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0]?.method?.name | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">\r\n Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'date' | translate }}:</p>\r\n <p class=\"\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'total' | translate }}:</p>\r\n <h5 class=\"fw-bold\">\r\n {{ (order.totals.total) | ecCurrencySymbol}}\r\n\r\n </h5>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n @if(!hidePrices && allowRepeatOrders){\r\n <div class=\"text-end mt-3\">\r\n <button class=\"btn btn-primary mb-2\" (click)=\"repeatOrder(order)\">\r\n {{ 'repeat-order' | translate }}\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"container py-3 border-top border-bottom\">\r\n @if(order.items.length){\r\n <div class=\"row\">\r\n <div class=\"col-2 font-sm font-brandon d-none d-md-block\">\r\n {{ 'product' | translate | uppercase }}\r\n </div>\r\n <div class=\"col-4 font-sm font-brandon d-none d-md-block\">\r\n {{ 'description' | translate | uppercase }}\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div id=\"colLots\" class=\"col-1 font-sm font-brandon d-none d-md-block\">\r\n <!-- {{ 'description' | translate | uppercase }} -->\r\n {{ 'lots' | translate | uppercase }}\r\n </div>\r\n }\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'unit-price' | translate | uppercase }}\r\n </div>\r\n }\r\n <div class=\"col-1 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'quantity' | translate | uppercase }}\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 text-end font-sm font-brandon d-none d-md-block\">\r\n {{ 'total' | translate | uppercase }}\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n\r\n }\r\n @for(item of order.items; track $index; let i = $index){\r\n <div class=\"row cart-items\">\r\n <div class=\"col-5 col-md-2 py-2\">\r\n @if(item.product.variants[0]?.images?.length){\r\n <img class=\"smc maxwidth img-fluid rounded-custom \"\r\n [src]=\"mediaUrl() + item.product.variants[0].images[0]\" alt=\"\">\r\n } @else {\r\n @if(item.product.picturesdefault){\r\n <img class=\"smc maxwidth img-fluid rounded-custom\"\r\n [src]=\"mediaUrl() + item.product.picturesdefault[0]\" alt=\"\">\r\n }\r\n }\r\n </div>\r\n <div\r\n class=\"col-md-4 col-7 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <p class=\"font-brandon d-flex w-100 mb-0\">\r\n {{ item.product.name }} (Cod:{{ item.product.variants[0].code }})\r\n </p>\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div class=\"col-md-1 col-1 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <input type=\"button\" class=\"btn btn-primary btnSeguir m-0 text-center\" type=\"button\"\r\n [attr.data-bs-toggle]=\"'collapse'\" [attr.data-bs-target]=\"'#collapseExample'+i\"\r\n aria-expanded=\"false\" [attr.aria-controls]=\"'collapseExample'+i\"\r\n value=\"{{ 'see' | translate | uppercase }}\">\r\n </div>\r\n }\r\n <div class=\"container d-md-none\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ (item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) |\r\n ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ ((item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) *\r\n item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\">\r\n {{ (item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) | ecCurrencySymbol}}\r\n </p>\r\n </div>\r\n }\r\n <div class=\"col-1 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-end w-100 m-0\">\r\n {{ ((item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) * item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n <div class=\"collapse\" [attr.id]=\"'collapseExample'+i\">\r\n <div class=\"card card-body\">\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">#</th>\r\n <th scope=\"col\">Estado</th>\r\n <th scope=\"col\">Cantidad</th>\r\n <th scope=\"col\">Fecha Solicitada</th>\r\n <th scope=\"col\">Fecha Estimada</th>\r\n <th scope=\"col\">Sede</th>\r\n <th scope=\"col\">Nota</th>\r\n <th scope=\"col\">Total Lote</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for( lot of item.orderItemLot; track $index){\r\n <tr>\r\n <th scope=\"row\">{{lot.id}}</th>\r\n <td>{{lot.lot_status}}</td>\r\n <td>{{lot.quantity}}</td>\r\n <td>{{ toDate(lot.date_request, 'DD/MM/YYYY') | translate }}</td>\r\n @if(lot.date_deliver){\r\n <td>{{\r\n toDate(lot.date_deliver, 'DD/MM/YYYY') | translate }}</td>\r\n } @else {\r\n <td>Pendiente</td>\r\n }\r\n <td>{{lot.shipping_address_name}}</td>\r\n <td>{{lot.notes}}</td>\r\n <td>{{lot.total_lot | ecCurrencySymbol}}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-6\"></div>\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"row py-4\">\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'total-products' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.items) | ecCurrencySymbol }}\r\n </div>\r\n\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'shipment' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.shipping || '0') | ecCurrencySymbol }}\r\n\r\n </div>\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'discount' |\r\n translate }}</div>\r\n }\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end text-end\">\r\n {{ (order.totals.promotion) | ecCurrencySymbol }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0 ){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'taxes' | translate }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.taxes) | ecCurrencySymbol }}</div>\r\n }\r\n\r\n <div class=\"col-6 font-brandon font-md\">{{ 'total' | translate | uppercase }}</div>\r\n <div class=\"col-6 font-brandon font-md text-end\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</main>" }]
|
|
15
84
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYWNjb3VudC1lYy9vcmRlci1lYy9vcmRlci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hY2NvdW50LWVjL29yZGVyLWVjL29yZGVyLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFTckQsTUFBTSxPQUFPLGdCQUFnQjtJQUVwQixhQUFhLEdBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU3RCxRQUFRO1FBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7dUdBTlcsZ0JBQWdCOzJGQUFoQixnQkFBZ0Isd0VDVjdCLDRCQUNBOzsyRkRTYSxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0MsY0FBYyxjQUNaLElBQUksV0FDUCxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPcmRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtb3JkZXItZWMnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW10sXHJcblx0dGVtcGxhdGVVcmw6ICcuL29yZGVyLWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vb3JkZXItZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlckVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0ICB7XHJcblxyXG5cdHByaXZhdGUgX29yZGVyU2VydmljZTogT3JkZXJzU2VydmljZSA9IGluamVjdChPcmRlcnNTZXJ2aWNlKTtcclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcblx0fVxyXG59XHJcbiIsIjxwPm9yZGVyLWVjIHdvcmtzITwvcD5cclxuIl19
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYWNjb3VudC1lYy9vcmRlci1lYy9vcmRlci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hY2NvdW50LWVjL29yZGVyLWVjL29yZGVyLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBZTVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFFcEIsY0FBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzRCxVQUFV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ekUsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDbEMsMkRBQTJEO1FBQy9ELENBQUM7SUFDTCxDQUFDO0lBRUosUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7dUdBakVoQyxnQkFBZ0I7MkZBQWhCLGdCQUFnQix3RUN4QjdCLGdxbEJBMFJPLHlERDVRSSxlQUFlLHVGQUN2QixvQkFBb0IseURBQ3BCLHNCQUFzQiwyREFDdEIsU0FBUyx5Q0FDVCxhQUFhLDZDQUNiLGFBQWE7OzJGQUtILGdCQUFnQjtrQkFiNUIsU0FBUzsrQkFDQyxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsZUFBZTt3QkFDdkIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixhQUFhO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSwgQ2hhbm5lbFNlcnZpY2UsIE9yZGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9lYy1waXBlJztcclxuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dpZGdldHMtZWMnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIFRpdGxlQ2FzZVBpcGUsIFVwcGVyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1vcmRlci1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBcclxuXHRcdFx0RWNDdXJyZW5jeVN5bWJvbFBpcGUsIFxyXG5cdFx0XHRMb2FkaW5nRnVsbEVjQ29tcG9uZW50LFxyXG5cdFx0XHRBc3luY1BpcGUsXHJcblx0XHRcdFRpdGxlQ2FzZVBpcGUsXHJcblx0XHRcdFVwcGVyQ2FzZVBpcGVcclxuXHRcdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL29yZGVyLWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vb3JkZXItZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlckVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0ICB7XHJcblxyXG5cdHByaXZhdGUgX29yZGVyc1NlcnZpY2U6IE9yZGVyc1NlcnZpY2UgPSBpbmplY3QoT3JkZXJzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0cHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jaGFubmVsQ29uZmlnU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG5cclxuXHRwdWJsaWMgb3JkZXIkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9vcmRlcnNTZXJ2aWNlLnNlbGVjdGVkT3JkZXIkO1xyXG5cdHB1YmxpYyBhbGxvd1JlcGVhdE9yZGVyczpib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGxvYWRpbmc6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBzaG93UHJpY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjcmVkaXRBbW91bnRDb25maWd1cmVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGhpZGVQcmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBoaWRlRGlzY291bnRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGlkZVRheGVzOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGNoYW5uZWxDb25maWc6YW55ID0gdGhpcy5fb3JkZXJzU2VydmljZS5jaGFubmVsQ29uZmlnO1xyXG5cdHB1YmxpYyBudW1iZXJPcmRlcjphbnk7XHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5fb3JkZXJzU2VydmljZS5zZWxlY3RlZE9yZGVyJC5zdWJzY3JpYmUoIHJlcyA9PiB7XHJcblx0XHRcdGlmKCFyZXMpe1xyXG5cdFx0XHRcdGNvbnN0IG51bWJlciA9ICB0aGlzLl9hY3RpdmVkUm91dGUuc25hcHNob3QucGFyYW1zW1wibnVtYmVyXCJdO1xyXG5cdFx0XHRcdHRoaXMuX29yZGVyc1NlcnZpY2UuZ2V0T3JkZXJCeU51bWJlcihudW1iZXIpXHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc29sZS5sb2coJ2luc2lkZScpO1xyXG5cdFx0fSlcclxuXHRcdHRoaXMuX2NoYW5uZWxDb25maWdTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKGNvbmZpZzphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmFsbG93UmVwZWF0T3JkZXJzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93UmVwZWF0T3JkZXJzID0gY29uZmlnLmFsbG93UmVwZWF0T3JkZXJzO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93UmVwZWF0T3JkZXJzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVQcmljZXMgPSBjb25maWc/LmhpZGVQcmljZXMgPz8gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVEaXNjb3VudHMgPSBjb25maWc/LmhpZGVEaXNjb3VudHMgPz8gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUYXhlcyA9IGNvbmZpZz8uaGlkZVRheGVzID8/IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5fY2FydFNlcnZpY2Uuc2hvd1ByaWNlJC5zdWJzY3JpYmUoKHNob3dQcmljZTphbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93UHJpY2UgPSBzaG93UHJpY2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fY2FydFNlcnZpY2UuY3JlZGl0QW1vdW50JC5zdWJzY3JpYmUoKGNyZWRpdEFtb3VudDphbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jcmVkaXRBbW91bnRDb25maWd1cmVkID0gY3JlZGl0QW1vdW50ICE9PSBudWxsO1xyXG4gICAgICAgIH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0VXJsQmFzZSgpe1xyXG5cdFx0cmV0dXJuIHRoaXMuX2NvbnN0cy5nZXRVcmxCYXNlKCk7XHJcblx0fVxyXG5cdGJhY2soKXtcclxuXHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdhY2NvdW50L29yZGVycycpO1xyXG5cdH1cclxuXHR0b0RhdGUoZGF0ZTphbnksIGZvcm1hdDphbnkpe1xyXG5cdFx0cmV0dXJuIG1vbWVudChkYXRlKS5mb3JtYXQoIWZvcm1hdCAmJiAnREQvTU0vWVlZWSwgaDptbTpzcyBhJyB8fCBmb3JtYXQpXHJcblx0fVxyXG5cclxuXHRyZXBlYXRPcmRlcihvcmRlcjphbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd1JlcGVhdE9yZGVycyAmJiBvcmRlcikge1xyXG4gICAgICAgICAgICAvL3RoaXMuX2NhcnRTZXJ2aWNlLmFkZFJlcGVhdE9yZGVyVG9DYXJ0KHRoaXMub3JkZXIuaXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblx0bWVkaWFVcmwgPSAoKSA9PiB0aGlzLl9jb25zdGFudHMubWVkaWFVcmwoKTtcclxufVxyXG4iLCI8bWFpbiBjbGFzcz1cInB5LTVcIiBpZD1cIm9yZGVyRWNDb21wb25lbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICBAaWYob3JkZXIkIHwgYXN5bmM7IGFzIG9yZGVyKXtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBcIj5cclxuICAgICAgICAgICAgICAgIEBpZihvcmRlcil7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tYXV0byBjb2wtMTIgZm9udC1icmFuZG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0aXQxIGZ3LWJvbGRcIj57eyAoJ29yZGVyJyB8IHRyYW5zbGF0ZSkgKyAnOiAnICsgb3JkZXIubnVtYmVyIH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihvcmRlcj8uaW52b2ljZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtIGNvbC0xMiBmb250LWJyYW5kb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJnZXRVcmxCYXNlKCkuc2xpY2UoMCwgLTEpICsgb3JkZXIuaW52b2ljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1pbnZvaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbGUtZG93bmxvYWQgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fSB7eyAnaW52b2ljZXMnIHwgdHJhbnNsYXRlIHwgdGl0bGVjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImJhY2soKVwiIGNsYXNzPVwiY29sLWF1dG8gdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFyayBidHZvbHZlciBib3JkZXJcIj57eyAnYmFjay10by1vcmRlcnMnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9XCJvcmRlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdFwiPnt7ICdwYXltZW50LXN0YXRlJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIucGF5bWVudHNbMF0uc3RhdGUgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtMTIgZm9udC1icmFuZG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdFwiPnt7ICdzaGlwbWVudC1zdGF0ZScgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnNoaXBtZW50c1swXS5zdGF0ZSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC0xMiBmb250LWJyYW5kb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0XCI+e3sgJ3BheW1lbnQtbWV0aG9kJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIucGF5bWVudHNbMF0/Lm1ldGhvZD8ubmFtZSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC0xMiBmb250LWJyYW5kb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0XCI+e3sgJ3NoaXBtZW50LW1ldGhvZCcgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnNoaXBtZW50c1swXS5tZXRob2QubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFDQSBERUJFUklBIElSIEVMIExJTksgREUgU0VHVUlNSUVOVE8gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihvcmRlci50cmFja2luZyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm9yZGVyLnRyYWNraW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFyayBidG5Mb2dvdXQgcHgtMyBweS0xIGZvbnQtc2l6ZS0xMCB3LWF1dG8gYnRuLXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlciBzZWd1aW1pZW50bzwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLTEyIGZvbnQtYnJhbmRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RcIj57eyAnZGF0ZScgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvRGF0ZShvcmRlci5jaGVja291dENvbXBsZXRlZEF0LCAnREQvTU0vWVlZWScpIHwgdHJhbnNsYXRlIH19PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b0RhdGUob3JkZXIuY2hlY2tvdXRDb21wbGV0ZWRBdCwgJ2g6bW06c3MgYScpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QW1vdW50Q29uZmlndXJlZCA/IHNob3dQcmljZSA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtMTIgZm9udC1icmFuZG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RcIj57eyAndG90YWwnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKG9yZGVyLnRvdGFscy50b3RhbCkgfCBlY0N1cnJlbmN5U3ltYm9sfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoIWhpZGVQcmljZXMgJiYgYWxsb3dSZXBlYXRPcmRlcnMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtYi0yXCIgKGNsaWNrKT1cInJlcGVhdE9yZGVyKG9yZGVyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdyZXBlYXQtb3JkZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB5LTMgYm9yZGVyLXRvcCBib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihvcmRlci5pdGVtcy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgZm9udC1zbSBmb250LWJyYW5kb24gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3Byb2R1Y3QnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGZvbnQtc20gZm9udC1icmFuZG9uIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY2hhbm5lbENvbmZpZy5hcHBseU9yZGVyTG90KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImNvbExvdHNcIiBjbGFzcz1cImNvbC0xIGZvbnQtc20gZm9udC1icmFuZG9uIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7ICdkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnbG90cycgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBbW91bnRDb25maWd1cmVkID8gc2hvd1ByaWNlIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiB0ZXh0LWNlbnRlciBmb250LXNtIGZvbnQtYnJhbmRvbiBkLW5vbmUgZC1tZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3VuaXQtcHJpY2UnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgdGV4dC1jZW50ZXIgZm9udC1zbSBmb250LWJyYW5kb24gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3F1YW50aXR5JyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBbW91bnRDb25maWd1cmVkID8gc2hvd1ByaWNlIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiB0ZXh0LWVuZCBmb250LXNtIGZvbnQtYnJhbmRvbiBkLW5vbmUgZC1tZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3RvdGFsJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IoaXRlbSBvZiBvcmRlci5pdGVtczsgdHJhY2sgJGluZGV4OyBsZXQgaSA9ICRpbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNhcnQtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgY29sLW1kLTIgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5pbWFnZXM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwic21jIG1heHdpZHRoIGltZy1mbHVpZCByb3VuZGVkLWN1c3RvbSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibWVkaWFVcmwoKSArICBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uaW1hZ2VzWzBdXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGl0ZW0ucHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJzbWMgbWF4d2lkdGggaW1nLWZsdWlkIHJvdW5kZWQtY3VzdG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1lZGlhVXJsKCkgKyBpdGVtLnByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTQgY29sLTcgZmxleC1jb2x1bW4gZmxleC1tZC1yb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LWJyYW5kb24gZC1mbGV4IHctMTAwIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucHJvZHVjdC5uYW1lIH19IChDb2Q6e3sgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLmNvZGUgfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY2hhbm5lbENvbmZpZy5hcHBseU9yZGVyTG90KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xIGNvbC0xIGZsZXgtY29sdW1uIGZsZXgtbWQtcm93IGp1c3RpZnktY29udGVudC1zdGFydCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0blNlZ3VpciBtLTAgdGV4dC1jZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWJzLXRvZ2dsZV09XCInY29sbGFwc2UnXCIgW2F0dHIuZGF0YS1icy10YXJnZXRdPVwiJyNjb2xsYXBzZUV4YW1wbGUnK2lcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiJ2NvbGxhcHNlRXhhbXBsZScraVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyAnc2VlJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBkLW1kLW5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciB3LTEwMCBtLTBcIj4ge3sgaXRlbS5xdWFudGl0eSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFtb3VudENvbmZpZ3VyZWQgPyBzaG93UHJpY2UgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZm9udC14bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIHctMTAwIG0tMFwiPiB7eyAoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlIDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnByaWNlKSB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY0N1cnJlbmN5U3ltYm9sfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QW1vdW50Q29uZmlndXJlZCA/IHNob3dQcmljZSA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb250LXhsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgdy0xMDAgbS0wXCI+IHt7ICgoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlIDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnByaWNlKSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnF1YW50aXR5KSB8IGVjQ3VycmVuY3lTeW1ib2x9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFtb3VudENvbmZpZ3VyZWQgPyBzaG93UHJpY2UgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIGQtbm9uZSBkLW1kLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIHctMTAwIG0tMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlID8gaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnByaWNlKSB8IGVjQ3VycmVuY3lTeW1ib2x9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGQtbm9uZSBkLW1kLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgdy0xMDAgbS0wXCI+IHt7IGl0ZW0ucXVhbnRpdHkgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFtb3VudENvbmZpZ3VyZWQgPyBzaG93UHJpY2UgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIGQtbm9uZSBkLW1kLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtZW5kIHctMTAwIG0tMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICgoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA/IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5wcmljZSkgKiBpdGVtLnF1YW50aXR5KSB8IGVjQ3VycmVuY3lTeW1ib2x9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzZVwiIFthdHRyLmlkXT1cIidjb2xsYXBzZUV4YW1wbGUnK2lcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj4jPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkVzdGFkbzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5DYW50aWRhZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GZWNoYSBTb2xpY2l0YWRhPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZlY2hhIEVzdGltYWRhPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlNlZGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+Tm90YTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Ub3RhbCBMb3RlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciggbG90IG9mIGl0ZW0ub3JkZXJJdGVtTG90OyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiPnt7bG90LmlkfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvdC5sb3Rfc3RhdHVzfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvdC5xdWFudGl0eX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgdG9EYXRlKGxvdC5kYXRlX3JlcXVlc3QsICdERC9NTS9ZWVlZJykgfCB0cmFuc2xhdGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihsb3QuZGF0ZV9kZWxpdmVyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvRGF0ZShsb3QuZGF0ZV9kZWxpdmVyLCAnREQvTU0vWVlZWScpIHwgdHJhbnNsYXRlIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlBlbmRpZW50ZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvdC5zaGlwcGluZ19hZGRyZXNzX25hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG90Lm5vdGVzfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvdC50b3RhbF9sb3QgfCBlY0N1cnJlbmN5U3ltYm9sfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFtb3VudENvbmZpZ3VyZWQgPyBzaG93UHJpY2UgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB5LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tIFwiPnt7ICd0b3RhbC1wcm9kdWN0cycgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSAgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChvcmRlci50b3RhbHMuaXRlbXMpIHwgZWNDdXJyZW5jeVN5bWJvbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSBcIj57eyAnc2hpcG1lbnQnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAob3JkZXIudG90YWxzLnNoaXBwaW5nIHx8ICcwJykgfCBlY0N1cnJlbmN5U3ltYm9sIH19XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFoaWRlRGlzY291bnRzICYmIG9yZGVyLnRvdGFscy5wcm9tb3Rpb24gJiYgb3JkZXIudG90YWxzLnByb21vdGlvbiAhPSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSBcIj57eyAnZGlzY291bnQnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZighaGlkZURpc2NvdW50cyAmJiBvcmRlci50b3RhbHMucHJvbW90aW9uICYmIG9yZGVyLnRvdGFscy5wcm9tb3Rpb24gIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gIHRleHQtZW5kIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAob3JkZXIudG90YWxzLnByb21vdGlvbikgfCBlY0N1cnJlbmN5U3ltYm9sIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFoaWRlVGF4ZXMgJiYgb3JkZXIudG90YWxzLnRheGVzICYmIG9yZGVyLnRvdGFscy50YXhlcyAhPSAwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gXCI+e3sgJ3RheGVzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZighaGlkZVRheGVzICYmIG9yZGVyLnRvdGFscy50YXhlcyAmJiBvcmRlci50b3RhbHMudGF4ZXMgIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAob3JkZXIudG90YWxzLnRheGVzKSB8IGVjQ3VycmVuY3lTeW1ib2wgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kXCI+e3sgJ3RvdGFsJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChvcmRlci50b3RhbHMudG90YWwpIHwgZWNDdXJyZW5jeVN5bWJvbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC01MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+e3sgJ25vLW9yZGVycycgfCB0cmFuc2xhdGUgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC01MCBweS01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG48L21haW4+Il19
|
|
@@ -137,8 +137,8 @@ export class OrdersListEcComponent {
|
|
|
137
137
|
}
|
|
138
138
|
toDate(date, format) { return moment(date).format(!format && 'DD/MM/YYYY, h:mm:ss a' || format); }
|
|
139
139
|
goToOrder(order) {
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
this._ordersService.setSelectedOrder(order);
|
|
141
|
+
this._router.navigateByUrl((`account/orders/${order.number}`));
|
|
142
142
|
}
|
|
143
143
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrdersListEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
144
144
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrdersListEcComponent, isStandalone: true, selector: "app-orders-ec", ngImport: i0, template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\r\n @if(!loading){\r\n <section id=\"orders\" class=\"w-100\">\r\n @if(orders && orders.length){\r\n <div class=\"row mb-1 border-bottom\">\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'number' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('number')\">{{ 'order' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'paymentState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('paymentState')\">{{ 'payment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'method' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('method')\">{{ 'shipment-method' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 \">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'methodState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('methodState')\">\r\n {{ 'shipment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'date' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('date')\">{{ 'date' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'total' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('total')\">{{ 'total' | translate }}:</p>\r\n </div>\r\n </div>\r\n @for(order of orders; track $index){\r\n <div class=\"row item border-bottom py-2\">\r\n <div class=\"col-lg-2 col-12\">\r\n <h5 class=\"fw-bold\">\r\n {{ order.number }}\r\n </h5>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n @if(order.payments && order.payments.length > 0){\r\n <p class=\"price\">\r\n {{ order.payments[0].state | translate | titlecase }}\r\n </p>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].state | translate | titlecase }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n <!-- <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</button> -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 d-flex\">\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <h5 class=\"fw-bold text-nowrap\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </h5>\r\n }\r\n <!-- <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">{{\r\n 'see-order' | translate }}</button> -->\r\n <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">\r\n <i class=\"bi bi-box-arrow-in-right\"></i></button>\r\n </div>\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </section>\r\n }@else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #errorView>\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h4>{{ 'orders-error' | translate }}</h4>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
|
|
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
147
147
|
type: Component,
|
|
148
148
|
args: [{ selector: 'app-orders-ec', standalone: true, imports: [LoadingFullEcComponent, TranslateModule, TitleCasePipe, EcCurrencySymbolPipe], template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\r\n @if(!loading){\r\n <section id=\"orders\" class=\"w-100\">\r\n @if(orders && orders.length){\r\n <div class=\"row mb-1 border-bottom\">\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'number' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('number')\">{{ 'order' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'paymentState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('paymentState')\">{{ 'payment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'method' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('method')\">{{ 'shipment-method' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 \">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'methodState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('methodState')\">\r\n {{ 'shipment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'date' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('date')\">{{ 'date' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'total' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('total')\">{{ 'total' | translate }}:</p>\r\n </div>\r\n </div>\r\n @for(order of orders; track $index){\r\n <div class=\"row item border-bottom py-2\">\r\n <div class=\"col-lg-2 col-12\">\r\n <h5 class=\"fw-bold\">\r\n {{ order.number }}\r\n </h5>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n @if(order.payments && order.payments.length > 0){\r\n <p class=\"price\">\r\n {{ order.payments[0].state | translate | titlecase }}\r\n </p>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].state | translate | titlecase }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n <!-- <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</button> -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 d-flex\">\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <h5 class=\"fw-bold text-nowrap\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </h5>\r\n }\r\n <!-- <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">{{\r\n 'see-order' | translate }}</button> -->\r\n <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">\r\n <i class=\"bi bi-box-arrow-in-right\"></i></button>\r\n </div>\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </section>\r\n }@else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #errorView>\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h4>{{ 'orders-error' | translate }}</h4>\r\n </div>\r\n </div>\r\n</ng-template>\r\n" }]
|
|
149
149
|
}] });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLWxpc3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYWNjb3VudC1lYy9vcmRlcnMtbGlzdC1lYy9vcmRlcnMtbGlzdC1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hY2NvdW50LWVjL29yZGVycy1saXN0LWVjL29yZGVycy1saXN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBU3hELE1BQU0sT0FBTyxxQkFBcUI7SUFFekIsY0FBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVsQyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBVSxFQUFFLENB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QUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvSixDQUFDO0lBQ0YsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUFZLEVBQUUsV0FBZ0IsRUFBRSxJQUFTLEVBQUUsVUFBZTtRQUM1RSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUFZLEVBQUUsV0FBZ0IsRUFBRSxJQUFTLEVBQUUsVUFBZTtRQUMxRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNqRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNySSxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVEsRUFBRSxNQUFVLElBQUcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLHVCQUF1QixJQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQztJQUV2RyxTQUFTLENBQUMsS0FBUztRQUNaLDhDQUE4QztRQUM5QyxnRUFBZ0U7SUFDcEUsQ0FBQzt1R0FqSlEscUJBQXFCOzJGQUFyQixxQkFBcUIseUVDakJsQyw2NExBd0dBLDBERDNGVyxzQkFBc0IsK0RBQUUsZUFBZSx1RkFBRSxhQUFhLDZDQUFFLG9CQUFvQjs7MkZBSTFFLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDQyxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3JkZXJzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExvYWRpbmdGdWxsRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEVjQ3VycmVuY3lTeW1ib2xQaXBlIH0gZnJvbSAnLi4vLi4vLi4vZWMtcGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1vcmRlcnMtZWMnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0xvYWRpbmdGdWxsRWNDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZSwgVGl0bGVDYXNlUGlwZSwgRWNDdXJyZW5jeVN5bWJvbFBpcGVdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9vcmRlcnMtbGlzdC1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL29yZGVycy1saXN0LWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3JkZXJzTGlzdEVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0cHJpdmF0ZSBfb3JkZXJzU2VydmljZTogT3JkZXJzU2VydmljZSA9IGluamVjdChPcmRlcnNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cclxuXHRwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBvcmRlcnM6IGFueVtdID0gW107XHJcblx0cHJpdmF0ZSBlcnJvcjogc3RyaW5nID0gXCJcIjtcclxuXHRwdWJsaWMgc29ydFZhbHVlOiBhbnk7XHJcbiAgICBwdWJsaWMgc2hvd1ByaWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY3JlZGl0QW1vdW50Q29uZmlndXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb24gbmFtZSAtPiBub21icmUgZGUgY2xhdmUgZGUgdmFsdWVzVG9Tb3J0OyBhc2MgLT4gdHJ1ZTogYXNjZW5kZW50ZSwgZmFsc2U6IGRlc2NlbmRlbnRlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRTb3J0OiBhbnkgPSB7IG5hbWU6ICcnLCBhc2M6IHRydWUgfVxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiB0cnVlIC0+IG9yZGVuYSBkZSBmb3JtYSBhc2NlbmRlbnRlIHwgZmFsc2UgLT4gb3JkZW5hIGRlIGZvcm1hIGRlY3JlY2llbnRlXHJcblx0ICovXHJcblx0cHVibGljIHZhbHVlc1RvU29ydDogYW55ID0ge1xyXG5cdFx0bnVtYmVyOiB7IGFzYzogdHJ1ZSwgYXR0cmlidXRlOiAnbnVtYmVyJyB9LFxyXG5cdFx0cGF5bWVudFN0YXRlOiB7IGFzYzogdHJ1ZSwgYXR0cmlidXRlOiAnc3RhdGUnIH0sXHJcblx0XHRtZXRob2Q6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdtZXRob2QnLCBzdWJBdHRyaWJ1dGU6ICduYW1lJyB9LFxyXG5cdFx0bWV0aG9kU3RhdGU6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdzdGF0ZScgfSxcclxuXHRcdGRhdGU6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdjaGVja291dENvbXBsZXRlZEF0JyB9LFxyXG5cdFx0dG90YWw6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICd0b3RhbCcgfVxyXG5cdH07XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdHRoaXMuX29yZGVyc1NlcnZpY2UudXBkYXRlT3JkZXJzKCk7XHJcblx0XHR0aGlzLl9vcmRlcnNTZXJ2aWNlLm9yZGVycyQucGlwZShmaWx0ZXIob3IgPT4gb3IpKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAob3JkZXJzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5vcmRlcnMgPSB0aGlzLnNvcnRlZEJ5TmV3ZXN0KG9yZGVycyk7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdFx0dGhpcy5lcnJvciA9ICdvcmRlcnMtZXJyb3InO1xyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0c29ydGVkQnlOZXdlc3Qob3JkZXJzOiBhbnkpIHtcclxuXHRcdHJldHVybiBvcmRlcnMgJiYgb3JkZXJzLmxlbmd0aCAmJiBvcmRlcnMuc29ydCgoYW5PcmRlcjogYW55LCBvdGhlck9yZGVyOiBhbnkpID0+IGFuT3JkZXIubnVtYmVyID4gb3RoZXJPcmRlci5udW1iZXIgPyAtMSA6IDEpXHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIEBkZXNjcmlwdGlvbiBPcmRlbmEgbGEgbGlzdGEgZGUgb3JkZW5lc1xyXG5cdCogQHBhcmFtIHZhbHVlIHJlY2liZSB1bmEgdmFsb3IgcXVlIGRlYmUgY29pbmNpZGlyIGNvbiBsYXMgY2xhdmVzIGRlIGxhIHZhcmlhYmxlIHZhbHVlc1RvU29ydFxyXG5cdCovXHJcblx0c29ydE9yZGVycyh2YWx1ZTogYW55KSB7XHJcblx0XHR0aGlzLnNvcnRWYWx1ZSA9IHZhbHVlXHJcblx0XHR0aGlzLnNldEN1cnJlbnRTb3J0KHRoaXMuc29ydFZhbHVlLCB0aGlzLnZhbHVlc1RvU29ydFt0aGlzLnNvcnRWYWx1ZV0uYXNjKVxyXG5cdFx0Y29uc3QgY29tcGFyYXRvciA9XHJcblx0XHRcdCh0aGlzLnZhbHVlc1RvU29ydFt0aGlzLnNvcnRWYWx1ZV0uYXNjKVxyXG5cdFx0XHRcdD8gWy0xLCAxXVxyXG5cdFx0XHRcdDogWzEsIC0xXVxyXG5cdFx0dGhpcy52YWx1ZXNUb1NvcnRbdGhpcy5zb3J0VmFsdWVdLmFzYyA9ICF0aGlzLnZhbHVlc1RvU29ydFt0aGlzLnNvcnRWYWx1ZV0uYXNjXHJcblx0XHRcclxuXHRcdFx0bGV0IHR5cGVWYWx1ZVxyXG5cdFx0aWYgKHRoaXMub3JkZXJzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dHlwZVZhbHVlID0gdHlwZW9mICh0aGlzLm9yZGVyc1swXSlcclxuXHRcdH1cclxuXHRcdGxldCBzb3J0RnVuY3Rpb24gPSB0aGlzLmdldFNvcnRGdW5jdGlvbih0aGlzLnNvcnRWYWx1ZSlcclxuXHRcdHRoaXMub3JkZXJzID1cclxuXHRcdFx0dGhpcy5zb3J0VmFsdWVcclxuXHRcdFx0XHQ/IHRoaXMub3JkZXJzLnNvcnQoKGFPcmRlcnMsIG90aGVyT3JkZXJzKSA9PiBzb3J0RnVuY3Rpb24oYU9yZGVycywgb3RoZXJPcmRlcnMsIHRoaXMudmFsdWVzVG9Tb3J0W3RoaXMuc29ydFZhbHVlXSwgY29tcGFyYXRvcikpXHJcblx0XHRcdFx0OiB0aGlzLm9yZGVyc1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIGZ1bmNpb24gdXRpbGl6YWRhIHBhcmEgZGVzZW1wYXRlLlxyXG5cdCAqIEBwYXJhbSBhT3JkZXJzXHJcblx0ICogQHBhcmFtIG90aGVyT3JkZXJzXHJcblx0ICogQHBhcmFtIGNvbXBhcmF0b3JcclxuXHQgKiBAcmV0dXJuc1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgdGllQnJlYWtlcihhT3JkZXJzOiBhbnksIG90aGVyT3JkZXJzOiBhbnksIGNvbXBhcmF0b3I6IGFueSkge1xyXG5cdFx0cmV0dXJuIGFPcmRlcnMubnVtYmVyLnRvTG93ZXJDYXNlKCkgPCBvdGhlck9yZGVycy5udW1iZXIudG9Mb3dlckNhc2UoKSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiBjYW1iaWEgbG9zIHZhbG9yZXMgZGUgbGEgdmFyaWFibGUgY3VycmVudFNvcnRcclxuXHQgKiBAcGFyYW0gbmFtZVxyXG5cdCAqIEBwYXJhbSBhc2NcclxuXHQgKi9cclxuXHRwcml2YXRlIHNldEN1cnJlbnRTb3J0KG5hbWU6IHN0cmluZywgYXNjOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmN1cnJlbnRTb3J0Lm5hbWUgPSBuYW1lO1xyXG5cdFx0dGhpcy5jdXJyZW50U29ydC5hc2MgPSBhc2NcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIHJldG9ybmEgbGEgZnVuY2lvbiBxdWUgc2UgZGViZSB1dGlsaXphciBwYXJhIGVsIHNvcnQgZGVsIGFycmVnbG9cclxuXHQgKiBAcGFyYW0gdmFsdWUgcGFyYW1ldHJvIHF1ZSBpbmRpY2EgZWwgdGlwbyBkZSBmdW5jaW9uIHF1ZSBkZWJlIHJldG9ybmFyXHJcblx0ICogQHJldHVybnMgZnVuY2lvbiBwYXJhIHV0aWxpemFyIGVuIGxhIGJ1c3F1ZWRhXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRTb3J0RnVuY3Rpb24odmFsdWU6IGFueSk6IEZ1bmN0aW9uIHtcclxuXHRcdHN3aXRjaCAodmFsdWUpIHtcclxuXHRcdFx0Y2FzZSAncGF5bWVudFN0YXRlJzpcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zb3J0UGF5bWVudFN0YXRlLmJpbmQodGhpcyk7XHJcblx0XHRcdGNhc2UgJ21ldGhvZCc6XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuc29ydFNoaXBtZW50cy5iaW5kKHRoaXMpO1xyXG5cdFx0XHRjYXNlICdtZXRob2RTdGF0ZSc6XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuc29ydFNoaXBtZW50cy5iaW5kKHRoaXMpO1xyXG5cdFx0XHRjYXNlICd0b3RhbCc6XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuc29ydE51bWJlci5iaW5kKHRoaXMpO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdHJldHVybiB0aGlzLnNvcnRUZXh0LmJpbmQodGhpcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBGdW5jaW9uZXMgcGFyYSBvcmRlcm5hciAqL1xyXG5cdHByaXZhdGUgc29ydFBheW1lbnRTdGF0ZShhT3JkZXJzOiBhbnksIG90aGVyT3JkZXJzOiBhbnksIGRhdGE6IGFueSwgY29tcGFyYXRvcjogYW55KSB7XHJcblx0XHRyZXR1cm4gKGFPcmRlcnMucGF5bWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdID09IG90aGVyT3JkZXJzLnBheW1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSlcclxuXHRcdFx0PyB0aGlzLnRpZUJyZWFrZXIoYU9yZGVycywgb3RoZXJPcmRlcnMsIGNvbXBhcmF0b3IpXHJcblx0XHRcdDogU3RyaW5nKGFPcmRlcnMucGF5bWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpIDwgU3RyaW5nKG90aGVyT3JkZXJzLnBheW1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNvcnRTaGlwbWVudHMoYU9yZGVyczogYW55LCBvdGhlck9yZGVyczogYW55LCBkYXRhOiBhbnksIGNvbXBhcmF0b3I6IGFueSkge1xyXG5cdFx0aWYgKGRhdGEuc3ViQXR0cmlidXRlKSB7XHJcblx0XHRcdHJldHVybiAoYU9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdW2RhdGEuc3ViQXR0cmlidXRlXSA9PSBvdGhlck9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdW2RhdGEuc3ViQXR0cmlidXRlXSlcclxuXHRcdFx0XHQ/IHRoaXMudGllQnJlYWtlcihhT3JkZXJzLCBvdGhlck9yZGVycywgY29tcGFyYXRvcilcclxuXHRcdFx0XHQ6IFN0cmluZyhhT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV1bZGF0YS5zdWJBdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpIDwgU3RyaW5nKG90aGVyT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV1bZGF0YS5zdWJBdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gKGFPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSA9PSBvdGhlck9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKVxyXG5cdFx0XHRcdD8gdGhpcy50aWVCcmVha2VyKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBjb21wYXJhdG9yKVxyXG5cdFx0XHRcdDogU3RyaW5nKGFPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA8IFN0cmluZyhvdGhlck9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc29ydE51bWJlcihhT3JkZXJzOiBhbnksIG90aGVyT3JkZXJzOiBhbnksIGRhdGE6IGFueSwgY29tcGFyYXRvcjogYW55KSB7XHJcblx0XHRyZXR1cm4gYU9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0gPCBvdGhlck9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0gPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzb3J0VGV4dChhT3JkZXJzOiBhbnksIG90aGVyT3JkZXJzOiBhbnksIGRhdGE6IGFueSwgY29tcGFyYXRvcjogYW55KSB7XHJcblx0XHRyZXR1cm4gKGFPcmRlcnNbZGF0YS5hdHRyaWJ1dGVdID09IG90aGVyT3JkZXJzW2RhdGEuYXR0cmlidXRlXSlcclxuXHRcdFx0PyBhT3JkZXJzLm51bWJlci50b0xvd2VyQ2FzZSgpIDwgb3RoZXJPcmRlcnMubnVtYmVyLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxyXG5cdFx0XHQ6IFN0cmluZyhhT3JkZXJzW2RhdGEuYXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA8IFN0cmluZyhvdGhlck9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxyXG5cdH1cclxuXHJcblx0dG9EYXRlKGRhdGU6YW55LCBmb3JtYXQ6YW55KXsgcmV0dXJuIG1vbWVudChkYXRlKS5mb3JtYXQoIWZvcm1hdCAmJiAnREQvTU0vWVlZWSwgaDptbTpzcyBhJyB8fCBmb3JtYXQpfVxyXG5cclxuXHRnb1RvT3JkZXIob3JkZXI6YW55KXtcclxuICAgICAgICAvL3RoaXMuX29yZGVyc1NlcnZpY2Uuc2V0U2VsZWN0ZWRPcmRlcihvcmRlcik7XHJcbiAgICAgICAgLy90aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgoYGFjY291bnQvb3JkZXJzLyR7b3JkZXIubnVtYmVyfWApKVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiBpZD1cIm9yZGVyc0VjQ29tcG9uZW50XCI+XHJcbiAgICBAaWYoIWxvYWRpbmcpe1xyXG4gICAgPHNlY3Rpb24gaWQ9XCJvcmRlcnNcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgQGlmKG9yZGVycyAmJiBvcmRlcnMubGVuZ3RoKXtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0xIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBbY2xhc3NdPVwiJ3N0IGRyb3Bkb3duLXRvZ2dsZSBjdXJzb3ItcG9pbnRlciBteS0yICcrIChjdXJyZW50U29ydC5uYW1lID09ICdudW1iZXInID8gJ2FwcGxpZWQgJyArICghY3VycmVudFNvcnQuYXNjID8gJ2FzYycgOiAnZGVzYycpIDogJycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRPcmRlcnMoJ251bWJlcicpXCI+e3sgJ29yZGVyJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBbY2xhc3NdPVwiJ3N0IGRyb3Bkb3duLXRvZ2dsZSBjdXJzb3ItcG9pbnRlciBteS0yICcrIChjdXJyZW50U29ydC5uYW1lID09ICdwYXltZW50U3RhdGUnID8gJ2FwcGxpZWQgJyArICghY3VycmVudFNvcnQuYXNjID8gJ2FzYycgOiAnZGVzYycpIDogJycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRPcmRlcnMoJ3BheW1lbnRTdGF0ZScpXCI+e3sgJ3BheW1lbnQtc3RhdGUnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIFtjbGFzc109XCInc3QgZHJvcGRvd24tdG9nZ2xlIGN1cnNvci1wb2ludGVyIG15LTIgJysgKGN1cnJlbnRTb3J0Lm5hbWUgPT0gJ21ldGhvZCcgPyAnYXBwbGllZCAnICsgKCFjdXJyZW50U29ydC5hc2MgPyAnYXNjJyA6ICdkZXNjJykgOiAnJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydE9yZGVycygnbWV0aG9kJylcIj57eyAnc2hpcG1lbnQtbWV0aG9kJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgW2NsYXNzXT1cIidzdCBkcm9wZG93bi10b2dnbGUgY3Vyc29yLXBvaW50ZXIgbXktMiAnKyAoY3VycmVudFNvcnQubmFtZSA9PSAnbWV0aG9kU3RhdGUnID8gJ2FwcGxpZWQgJyArICghY3VycmVudFNvcnQuYXNjID8gJ2FzYycgOiAnZGVzYycpIDogJycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRPcmRlcnMoJ21ldGhvZFN0YXRlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3NoaXBtZW50LXN0YXRlJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBbY2xhc3NdPVwiJ3N0IGRyb3Bkb3duLXRvZ2dsZSBjdXJzb3ItcG9pbnRlciBteS0yICcrIChjdXJyZW50U29ydC5uYW1lID09ICdkYXRlJyA/ICdhcHBsaWVkICcgKyAoIWN1cnJlbnRTb3J0LmFzYyA/ICdhc2MnIDogJ2Rlc2MnKSA6ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0T3JkZXJzKCdkYXRlJylcIj57eyAnZGF0ZScgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgW2NsYXNzXT1cIidzdCBkcm9wZG93bi10b2dnbGUgY3Vyc29yLXBvaW50ZXIgbXktMiAnKyAoY3VycmVudFNvcnQubmFtZSA9PSAndG90YWwnID8gJ2FwcGxpZWQgJyArICghY3VycmVudFNvcnQuYXNjID8gJ2FzYycgOiAnZGVzYycpIDogJycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRPcmRlcnMoJ3RvdGFsJylcIj57eyAndG90YWwnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGZvcihvcmRlciBvZiBvcmRlcnM7IHRyYWNrICRpbmRleCl7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGl0ZW0gYm9yZGVyLWJvdHRvbSBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5udW1iZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihvcmRlci5wYXltZW50cyAmJiBvcmRlci5wYXltZW50cy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5wYXltZW50c1swXS5zdGF0ZSB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5zaGlwbWVudHNbMF0ubWV0aG9kLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIuc2hpcG1lbnRzWzBdLnN0YXRlIHwgdHJhbnNsYXRlIHwgdGl0bGVjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBQ0EgREVCRVJJQSBJUiBFTCBMSU5LIERFIFNFR1VJTUlFTlRPIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFyayBidG5Mb2dvdXQgcHgtMyBweS0xIGZvbnQtc2l6ZS0xMCB3LWF1dG8gYnRuLXNtXCI+VmVyIHNlZ3VpbWllbnRvPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYob3JkZXIudHJhY2tpbmcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwib3JkZXIudHJhY2tpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFyayBidG5Mb2dvdXQgcHgtMyBweS0xIGZvbnQtc2l6ZS0xMCB3LWF1dG8gYnRuLXNtXCI+VmVyIHNlZ3VpbWllbnRvPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b0RhdGUob3JkZXIuY2hlY2tvdXRDb21wbGV0ZWRBdCwgJ0REL01NL1lZWVknKSB8IHRyYW5zbGF0ZSB9fTxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvRGF0ZShvcmRlci5jaGVja291dENvbXBsZXRlZEF0LCAnaDptbTpzcyBhJykgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTIgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBbW91bnRDb25maWd1cmVkID8gc2hvd1ByaWNlIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJmdy1ib2xkIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKG9yZGVyLnRvdGFscy50b3RhbCkgfCBlY0N1cnJlbmN5U3ltYm9sIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBweC0wIHctMTAwIGJ0ZGV0YWxsZVwiIChjbGljayk9XCJnb1RvT3JkZXIob3JkZXIpXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlZS1vcmRlcicgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gcHgtMCB3LTEwMCBidGRldGFsbGVcIiAoY2xpY2spPVwiZ29Ub09yZGVyKG9yZGVyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1ib3gtYXJyb3ctaW4tcmlnaHRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTUwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1Pnt7ICduby1vcmRlcnMnIHwgdHJhbnNsYXRlIH19PC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICB9QGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTUwIHB5LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2Vycm9yVmlldz5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTUwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aDQ+e3sgJ29yZGVycy1lcnJvcicgfCB0cmFuc2xhdGUgfX08L2g0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLWxpc3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYWNjb3VudC1lYy9vcmRlcnMtbGlzdC1lYy9vcmRlcnMtbGlzdC1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hY2NvdW50LWVjL29yZGVycy1saXN0LWVjL29yZGVycy1saXN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBU3hELE1BQU0sT0FBTyxxQkFBcUI7SUFFekIsY0FBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVsQyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBVSxFQUFFLENB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QUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvSixDQUFDO0lBQ0YsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUFZLEVBQUUsV0FBZ0IsRUFBRSxJQUFTLEVBQUUsVUFBZTtRQUM1RSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUFZLEVBQUUsV0FBZ0IsRUFBRSxJQUFTLEVBQUUsVUFBZTtRQUMxRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNqRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNySSxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVEsRUFBRSxNQUFVLElBQUcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLHVCQUF1QixJQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQztJQUV2RyxTQUFTLENBQUMsS0FBUztRQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxrQkFBa0IsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO3VHQWpKUSxxQkFBcUI7MkZBQXJCLHFCQUFxQix5RUNqQmxDLDY0TEF3R0EsMEREM0ZXLHNCQUFzQiwrREFBRSxlQUFlLHVGQUFFLGFBQWEsNkNBQUUsb0JBQW9COzsyRkFJMUUscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNDLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPcmRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dpZGdldHMtZWMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9lYy1waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLW9yZGVycy1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlLCBUaXRsZUNhc2VQaXBlLCBFY0N1cnJlbmN5U3ltYm9sUGlwZV0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL29yZGVycy1saXN0LWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vb3JkZXJzLWxpc3QtZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlcnNMaXN0RWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHRwcml2YXRlIF9vcmRlcnNTZXJ2aWNlOiBPcmRlcnNTZXJ2aWNlID0gaW5qZWN0KE9yZGVyc1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG5cdHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIG9yZGVyczogYW55W10gPSBbXTtcclxuXHRwcml2YXRlIGVycm9yOiBzdHJpbmcgPSBcIlwiO1xyXG5cdHB1YmxpYyBzb3J0VmFsdWU6IGFueTtcclxuICAgIHB1YmxpYyBzaG93UHJpY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjcmVkaXRBbW91bnRDb25maWd1cmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiBuYW1lIC0+IG5vbWJyZSBkZSBjbGF2ZSBkZSB2YWx1ZXNUb1NvcnQ7IGFzYyAtPiB0cnVlOiBhc2NlbmRlbnRlLCBmYWxzZTogZGVzY2VuZGVudGVcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudFNvcnQ6IGFueSA9IHsgbmFtZTogJycsIGFzYzogdHJ1ZSB9XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIHRydWUgLT4gb3JkZW5hIGRlIGZvcm1hIGFzY2VuZGVudGUgfCBmYWxzZSAtPiBvcmRlbmEgZGUgZm9ybWEgZGVjcmVjaWVudGVcclxuXHQgKi9cclxuXHRwdWJsaWMgdmFsdWVzVG9Tb3J0OiBhbnkgPSB7XHJcblx0XHRudW1iZXI6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdudW1iZXInIH0sXHJcblx0XHRwYXltZW50U3RhdGU6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdzdGF0ZScgfSxcclxuXHRcdG1ldGhvZDogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ21ldGhvZCcsIHN1YkF0dHJpYnV0ZTogJ25hbWUnIH0sXHJcblx0XHRtZXRob2RTdGF0ZTogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ3N0YXRlJyB9LFxyXG5cdFx0ZGF0ZTogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ2NoZWNrb3V0Q29tcGxldGVkQXQnIH0sXHJcblx0XHR0b3RhbDogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ3RvdGFsJyB9XHJcblx0fTtcclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5fb3JkZXJzU2VydmljZS51cGRhdGVPcmRlcnMoKTtcclxuXHRcdHRoaXMuX29yZGVyc1NlcnZpY2Uub3JkZXJzJC5waXBlKGZpbHRlcihvciA9PiBvcikpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChvcmRlcnMpID0+IHtcclxuXHRcdFx0XHR0aGlzLm9yZGVycyA9IHRoaXMuc29ydGVkQnlOZXdlc3Qob3JkZXJzKTtcclxuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2VcclxuXHRcdFx0XHR0aGlzLmVycm9yID0gJ29yZGVycy1lcnJvcic7XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRzb3J0ZWRCeU5ld2VzdChvcmRlcnM6IGFueSkge1xyXG5cdFx0cmV0dXJuIG9yZGVycyAmJiBvcmRlcnMubGVuZ3RoICYmIG9yZGVycy5zb3J0KChhbk9yZGVyOiBhbnksIG90aGVyT3JkZXI6IGFueSkgPT4gYW5PcmRlci5udW1iZXIgPiBvdGhlck9yZGVyLm51bWJlciA/IC0xIDogMSlcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCogQGRlc2NyaXB0aW9uIE9yZGVuYSBsYSBsaXN0YSBkZSBvcmRlbmVzXHJcblx0KiBAcGFyYW0gdmFsdWUgcmVjaWJlIHVuYSB2YWxvciBxdWUgZGViZSBjb2luY2lkaXIgY29uIGxhcyBjbGF2ZXMgZGUgbGEgdmFyaWFibGUgdmFsdWVzVG9Tb3J0XHJcblx0Ki9cclxuXHRzb3J0T3JkZXJzKHZhbHVlOiBhbnkpIHtcclxuXHRcdHRoaXMuc29ydFZhbHVlID0gdmFsdWVcclxuXHRcdHRoaXMuc2V0Q3VycmVudFNvcnQodGhpcy5zb3J0VmFsdWUsIHRoaXMudmFsdWVzVG9Tb3J0W3RoaXMuc29ydFZhbHVlXS5hc2MpXHJcblx0XHRjb25zdCBjb21wYXJhdG9yID1cclxuXHRcdFx0KHRoaXMudmFsdWVzVG9Tb3J0W3RoaXMuc29ydFZhbHVlXS5hc2MpXHJcblx0XHRcdFx0PyBbLTEsIDFdXHJcblx0XHRcdFx0OiBbMSwgLTFdXHJcblx0XHR0aGlzLnZhbHVlc1RvU29ydFt0aGlzLnNvcnRWYWx1ZV0uYXNjID0gIXRoaXMudmFsdWVzVG9Tb3J0W3RoaXMuc29ydFZhbHVlXS5hc2NcclxuXHRcdFxyXG5cdFx0XHRsZXQgdHlwZVZhbHVlXHJcblx0XHRpZiAodGhpcy5vcmRlcnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0eXBlVmFsdWUgPSB0eXBlb2YgKHRoaXMub3JkZXJzWzBdKVxyXG5cdFx0fVxyXG5cdFx0bGV0IHNvcnRGdW5jdGlvbiA9IHRoaXMuZ2V0U29ydEZ1bmN0aW9uKHRoaXMuc29ydFZhbHVlKVxyXG5cdFx0dGhpcy5vcmRlcnMgPVxyXG5cdFx0XHR0aGlzLnNvcnRWYWx1ZVxyXG5cdFx0XHRcdD8gdGhpcy5vcmRlcnMuc29ydCgoYU9yZGVycywgb3RoZXJPcmRlcnMpID0+IHNvcnRGdW5jdGlvbihhT3JkZXJzLCBvdGhlck9yZGVycywgdGhpcy52YWx1ZXNUb1NvcnRbdGhpcy5zb3J0VmFsdWVdLCBjb21wYXJhdG9yKSlcclxuXHRcdFx0XHQ6IHRoaXMub3JkZXJzXHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb24gZnVuY2lvbiB1dGlsaXphZGEgcGFyYSBkZXNlbXBhdGUuXHJcblx0ICogQHBhcmFtIGFPcmRlcnNcclxuXHQgKiBAcGFyYW0gb3RoZXJPcmRlcnNcclxuXHQgKiBAcGFyYW0gY29tcGFyYXRvclxyXG5cdCAqIEByZXR1cm5zXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0aWVCcmVha2VyKGFPcmRlcnM6IGFueSwgb3RoZXJPcmRlcnM6IGFueSwgY29tcGFyYXRvcjogYW55KSB7XHJcblx0XHRyZXR1cm4gYU9yZGVycy5udW1iZXIudG9Mb3dlckNhc2UoKSA8IG90aGVyT3JkZXJzLm51bWJlci50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIGNhbWJpYSBsb3MgdmFsb3JlcyBkZSBsYSB2YXJpYWJsZSBjdXJyZW50U29ydFxyXG5cdCAqIEBwYXJhbSBuYW1lXHJcblx0ICogQHBhcmFtIGFzY1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgc2V0Q3VycmVudFNvcnQobmFtZTogc3RyaW5nLCBhc2M6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMuY3VycmVudFNvcnQubmFtZSA9IG5hbWU7XHJcblx0XHR0aGlzLmN1cnJlbnRTb3J0LmFzYyA9IGFzY1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb24gcmV0b3JuYSBsYSBmdW5jaW9uIHF1ZSBzZSBkZWJlIHV0aWxpemFyIHBhcmEgZWwgc29ydCBkZWwgYXJyZWdsb1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBwYXJhbWV0cm8gcXVlIGluZGljYSBlbCB0aXBvIGRlIGZ1bmNpb24gcXVlIGRlYmUgcmV0b3JuYXJcclxuXHQgKiBAcmV0dXJucyBmdW5jaW9uIHBhcmEgdXRpbGl6YXIgZW4gbGEgYnVzcXVlZGFcclxuXHQgKi9cclxuXHRwcml2YXRlIGdldFNvcnRGdW5jdGlvbih2YWx1ZTogYW55KTogRnVuY3Rpb24ge1xyXG5cdFx0c3dpdGNoICh2YWx1ZSkge1xyXG5cdFx0XHRjYXNlICdwYXltZW50U3RhdGUnOlxyXG5cdFx0XHRcdHJldHVybiB0aGlzLnNvcnRQYXltZW50U3RhdGUuYmluZCh0aGlzKTtcclxuXHRcdFx0Y2FzZSAnbWV0aG9kJzpcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zb3J0U2hpcG1lbnRzLmJpbmQodGhpcyk7XHJcblx0XHRcdGNhc2UgJ21ldGhvZFN0YXRlJzpcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zb3J0U2hpcG1lbnRzLmJpbmQodGhpcyk7XHJcblx0XHRcdGNhc2UgJ3RvdGFsJzpcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zb3J0TnVtYmVyLmJpbmQodGhpcyk7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuc29ydFRleHQuYmluZCh0aGlzKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIEZ1bmNpb25lcyBwYXJhIG9yZGVybmFyICovXHJcblx0cHJpdmF0ZSBzb3J0UGF5bWVudFN0YXRlKGFPcmRlcnM6IGFueSwgb3RoZXJPcmRlcnM6IGFueSwgZGF0YTogYW55LCBjb21wYXJhdG9yOiBhbnkpIHtcclxuXHRcdHJldHVybiAoYU9yZGVycy5wYXltZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0gPT0gb3RoZXJPcmRlcnMucGF5bWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKVxyXG5cdFx0XHQ/IHRoaXMudGllQnJlYWtlcihhT3JkZXJzLCBvdGhlck9yZGVycywgY29tcGFyYXRvcilcclxuXHRcdFx0OiBTdHJpbmcoYU9yZGVycy5wYXltZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPCBTdHJpbmcob3RoZXJPcmRlcnMucGF5bWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc29ydFNoaXBtZW50cyhhT3JkZXJzOiBhbnksIG90aGVyT3JkZXJzOiBhbnksIGRhdGE6IGFueSwgY29tcGFyYXRvcjogYW55KSB7XHJcblx0XHRpZiAoZGF0YS5zdWJBdHRyaWJ1dGUpIHtcclxuXHRcdFx0cmV0dXJuIChhT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV1bZGF0YS5zdWJBdHRyaWJ1dGVdID09IG90aGVyT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV1bZGF0YS5zdWJBdHRyaWJ1dGVdKVxyXG5cdFx0XHRcdD8gdGhpcy50aWVCcmVha2VyKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBjb21wYXJhdG9yKVxyXG5cdFx0XHRcdDogU3RyaW5nKGFPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXVtkYXRhLnN1YkF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPCBTdHJpbmcob3RoZXJPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXVtkYXRhLnN1YkF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHJldHVybiAoYU9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdID09IG90aGVyT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0pXHJcblx0XHRcdFx0PyB0aGlzLnRpZUJyZWFrZXIoYU9yZGVycywgb3RoZXJPcmRlcnMsIGNvbXBhcmF0b3IpXHJcblx0XHRcdFx0OiBTdHJpbmcoYU9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpIDwgU3RyaW5nKG90aGVyT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzb3J0TnVtYmVyKGFPcmRlcnM6IGFueSwgb3RoZXJPcmRlcnM6IGFueSwgZGF0YTogYW55LCBjb21wYXJhdG9yOiBhbnkpIHtcclxuXHRcdHJldHVybiBhT3JkZXJzW2RhdGEuYXR0cmlidXRlXSA8IG90aGVyT3JkZXJzW2RhdGEuYXR0cmlidXRlXSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNvcnRUZXh0KGFPcmRlcnM6IGFueSwgb3RoZXJPcmRlcnM6IGFueSwgZGF0YTogYW55LCBjb21wYXJhdG9yOiBhbnkpIHtcclxuXHRcdHJldHVybiAoYU9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0gPT0gb3RoZXJPcmRlcnNbZGF0YS5hdHRyaWJ1dGVdKVxyXG5cdFx0XHQ/IGFPcmRlcnMubnVtYmVyLnRvTG93ZXJDYXNlKCkgPCBvdGhlck9yZGVycy5udW1iZXIudG9Mb3dlckNhc2UoKSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXHJcblx0XHRcdDogU3RyaW5nKGFPcmRlcnNbZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpIDwgU3RyaW5nKG90aGVyT3JkZXJzW2RhdGEuYXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXHJcblx0fVxyXG5cclxuXHR0b0RhdGUoZGF0ZTphbnksIGZvcm1hdDphbnkpeyByZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCghZm9ybWF0ICYmICdERC9NTS9ZWVlZLCBoOm1tOnNzIGEnIHx8IGZvcm1hdCl9XHJcblxyXG5cdGdvVG9PcmRlcihvcmRlcjphbnkpe1xyXG4gICAgICAgIHRoaXMuX29yZGVyc1NlcnZpY2Uuc2V0U2VsZWN0ZWRPcmRlcihvcmRlcik7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoKGBhY2NvdW50L29yZGVycy8ke29yZGVyLm51bWJlcn1gKSlcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgaWQ9XCJvcmRlcnNFY0NvbXBvbmVudFwiPlxyXG4gICAgQGlmKCFsb2FkaW5nKXtcclxuICAgIDxzZWN0aW9uIGlkPVwib3JkZXJzXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgIEBpZihvcmRlcnMgJiYgb3JkZXJzLmxlbmd0aCl7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMSBib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgW2NsYXNzXT1cIidzdCBkcm9wZG93bi10b2dnbGUgY3Vyc29yLXBvaW50ZXIgbXktMiAnKyAoY3VycmVudFNvcnQubmFtZSA9PSAnbnVtYmVyJyA/ICdhcHBsaWVkICcgKyAoIWN1cnJlbnRTb3J0LmFzYyA/ICdhc2MnIDogJ2Rlc2MnKSA6ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0T3JkZXJzKCdudW1iZXInKVwiPnt7ICdvcmRlcicgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgW2NsYXNzXT1cIidzdCBkcm9wZG93bi10b2dnbGUgY3Vyc29yLXBvaW50ZXIgbXktMiAnKyAoY3VycmVudFNvcnQubmFtZSA9PSAncGF5bWVudFN0YXRlJyA/ICdhcHBsaWVkICcgKyAoIWN1cnJlbnRTb3J0LmFzYyA/ICdhc2MnIDogJ2Rlc2MnKSA6ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0T3JkZXJzKCdwYXltZW50U3RhdGUnKVwiPnt7ICdwYXltZW50LXN0YXRlJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBbY2xhc3NdPVwiJ3N0IGRyb3Bkb3duLXRvZ2dsZSBjdXJzb3ItcG9pbnRlciBteS0yICcrIChjdXJyZW50U29ydC5uYW1lID09ICdtZXRob2QnID8gJ2FwcGxpZWQgJyArICghY3VycmVudFNvcnQuYXNjID8gJ2FzYycgOiAnZGVzYycpIDogJycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRPcmRlcnMoJ21ldGhvZCcpXCI+e3sgJ3NoaXBtZW50LW1ldGhvZCcgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIFtjbGFzc109XCInc3QgZHJvcGRvd24tdG9nZ2xlIGN1cnNvci1wb2ludGVyIG15LTIgJysgKGN1cnJlbnRTb3J0Lm5hbWUgPT0gJ21ldGhvZFN0YXRlJyA/ICdhcHBsaWVkICcgKyAoIWN1cnJlbnRTb3J0LmFzYyA/ICdhc2MnIDogJ2Rlc2MnKSA6ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0T3JkZXJzKCdtZXRob2RTdGF0ZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdzaGlwbWVudC1zdGF0ZScgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgW2NsYXNzXT1cIidzdCBkcm9wZG93bi10b2dnbGUgY3Vyc29yLXBvaW50ZXIgbXktMiAnKyAoY3VycmVudFNvcnQubmFtZSA9PSAnZGF0ZScgPyAnYXBwbGllZCAnICsgKCFjdXJyZW50U29ydC5hc2MgPyAnYXNjJyA6ICdkZXNjJykgOiAnJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydE9yZGVycygnZGF0ZScpXCI+e3sgJ2RhdGUnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIFtjbGFzc109XCInc3QgZHJvcGRvd24tdG9nZ2xlIGN1cnNvci1wb2ludGVyIG15LTIgJysgKGN1cnJlbnRTb3J0Lm5hbWUgPT0gJ3RvdGFsJyA/ICdhcHBsaWVkICcgKyAoIWN1cnJlbnRTb3J0LmFzYyA/ICdhc2MnIDogJ2Rlc2MnKSA6ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0T3JkZXJzKCd0b3RhbCcpXCI+e3sgJ3RvdGFsJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIEBmb3Iob3JkZXIgb2Ygb3JkZXJzOyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBpdGVtIGJvcmRlci1ib3R0b20gcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIubnVtYmVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYob3JkZXIucGF5bWVudHMgJiYgb3JkZXIucGF5bWVudHMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIucGF5bWVudHNbMF0uc3RhdGUgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIuc2hpcG1lbnRzWzBdLm1ldGhvZC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnNoaXBtZW50c1swXS5zdGF0ZSB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQUNBIERFQkVSSUEgSVIgRUwgTElOSyBERSBTRUdVSU1JRU5UTyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmsgYnRuTG9nb3V0IHB4LTMgcHktMSBmb250LXNpemUtMTAgdy1hdXRvIGJ0bi1zbVwiPlZlciBzZWd1aW1pZW50bzwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9yZGVyLnRyYWNraW5nKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm9yZGVyLnRyYWNraW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmsgYnRuTG9nb3V0IHB4LTMgcHktMSBmb250LXNpemUtMTAgdy1hdXRvIGJ0bi1zbVwiPlZlciBzZWd1aW1pZW50bzwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdG9EYXRlKG9yZGVyLmNoZWNrb3V0Q29tcGxldGVkQXQsICdERC9NTS9ZWVlZJykgfCB0cmFuc2xhdGUgfX08YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b0RhdGUob3JkZXIuY2hlY2tvdXRDb21wbGV0ZWRBdCwgJ2g6bW06c3MgYScpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLTEyIGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QW1vdW50Q29uZmlndXJlZCA/IHNob3dQcmljZSA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiZnctYm9sZCB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChvcmRlci50b3RhbHMudG90YWwpIHwgZWNDdXJyZW5jeVN5bWJvbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4gcHgtMCB3LTEwMCBidGRldGFsbGVcIiAoY2xpY2spPVwiZ29Ub09yZGVyKG9yZGVyKVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWUtb3JkZXInIHwgdHJhbnNsYXRlIH19PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHB4LTAgdy0xMDAgYnRkZXRhbGxlXCIgKGNsaWNrKT1cImdvVG9PcmRlcihvcmRlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktYm94LWFycm93LWluLXJpZ2h0XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC01MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNT57eyAnbm8tb3JkZXJzJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgfUBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC01MCBweS01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNlcnJvclZpZXc+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC01MFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGg0Pnt7ICdvcmRlcnMtZXJyb3InIHwgdHJhbnNsYXRlIH19PC9oND5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs
CHANGED
|
@@ -88,7 +88,7 @@ export class BlockProductsEcComponent extends BlockEcComponent {
|
|
|
88
88
|
this.analyticsService.callEvent('select_promotion', item);
|
|
89
89
|
}
|
|
90
90
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BlockProductsEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: BlockProductsEcComponent, isStandalone: true, selector: "app-block-products-ec", inputs: { appProduct: "appProduct", products: "products", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid'\">\r\n\r\n <div class=\"blockProduct block-product\">\r\n @if(meta.name){\r\n <div class=\"row\">\r\n <div class=\"col-12 mt-4\">\r\n <h2 class=\"font-weight-normal font-gd\">\r\n <span>{{meta.name}}</span>\r\n </h2>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if(meta.styles && meta.styles.carrousel == false){\r\n <div class=\"row \">\r\n @for (product of products; track $index) {\r\n <div [class]=\"'item '+ ' col-'+ (meta.styles.items?.sm) + ' col-md-' + (meta.styles.items?.md) + ' col-lg-' + (meta.styles.items?.lg) + ' px-2'\" [id]=\"$index\">\r\n <!-- verifica que si vienen un template para un custom appProduct llamado \"appProduct\" con un objeto \"product\"- sino usa por defecto el del core -->\r\n <ng-container *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container> \r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (product of products; track $index) {\r\n <swiper-slide>\r\n <ng-container *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container> \r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n }\r\n </div>\r\n</section>\r\n\r\n\r\n<!-- componente por defecto (tomara como producto el contexto pasado como \"product\") -->\r\n<ng-template #defaultAppProduct let-product=\"product\" > \r\n <app-product-ec [product]=\"product\"></app-product-ec>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ProductEcComponent, selector: "app-product-ec", inputs: ["product", "isProductBox"], outputs: ["loaded"] }] });
|
|
91
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: BlockProductsEcComponent, isStandalone: true, selector: "app-block-products-ec", inputs: { appProduct: "appProduct", products: "products", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid'\">\r\n\r\n <div class=\"blockProduct block-product\">\r\n @if(meta.name){\r\n <div class=\"row\">\r\n <div class=\"col-12 mt-4\">\r\n <h2 class=\"font-weight-normal font-gd\">\r\n <span>{{meta.name}}</span>\r\n </h2>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if(meta.styles && meta.styles.carrousel == false){\r\n <div class=\"row \">\r\n @for (product of products; track $index) {\r\n <div [class]=\"'item '+ ' col-'+ (meta.styles.items?.sm) + ' col-md-' + (meta.styles.items?.md) + ' col-lg-' + (meta.styles.items?.lg) + ' px-2'\" [id]=\"$index\">\r\n <!-- verifica que si vienen un template para un custom appProduct llamado \"appProduct\" con un objeto \"product\"- sino usa por defecto el del core -->\r\n <ng-container *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container> \r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (product of products; track $index) {\r\n <swiper-slide>\r\n <ng-container *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container> \r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n }\r\n </div>\r\n</section>\r\n\r\n\r\n<!-- componente por defecto (tomara como producto el contexto pasado como \"product\") -->\r\n<ng-template #defaultAppProduct let-product=\"product\" > \r\n <app-product-ec [product]=\"product\"></app-product-ec>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ProductEcComponent, selector: "app-product-ec", inputs: ["product", "isProductBox", "isCollection"], outputs: ["loaded"] }] });
|
|
92
92
|
}
|
|
93
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BlockProductsEcComponent, decorators: [{
|
|
94
94
|
type: Component,
|