ng-easycommerce 0.0.658-beta.1 → 0.0.660-beta.1
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/README.md +58 -22
- package/assets/ec-i18n/en.json +1 -3
- package/assets/ec-i18n/es.json +1 -3
- package/bundles/ng-easycommerce.umd.js +515 -181
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/core.consts.js +1 -6
- package/esm2015/lib/ec-component/account-ec/order-ec/order-ec.component.js +3 -5
- package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +5 -8
- package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +8 -13
- package/esm2015/lib/ec-component/collection-ec/collection-ec.component.js +450 -14
- package/esm2015/lib/ec-component/product-detail-ec/product-detail-ec.component.js +3 -30
- package/esm2015/lib/ec-component/product-ec/product-ec.component.js +2 -1
- package/esm2015/lib/ec-component/sidebar-ec/sidebar-ec.component.js +5 -8
- package/esm2015/lib/ec-component/widgets-ec/paypal-express-ec/paypal-express-ec.component.js +3 -1
- package/esm2015/lib/ec-component/widgets-ec/price-ec/price-ec.component.js +3 -3
- package/esm2015/lib/ec-pipe/ec-currency-symbol.pipe.js +1 -2
- package/esm2015/lib/services/cart.service.js +12 -27
- package/esm2015/lib/services/currency.service.js +7 -43
- package/esm5/lib/core.consts.js +1 -6
- package/esm5/lib/ec-component/account-ec/order-ec/order-ec.component.js +3 -5
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +5 -8
- package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +8 -13
- package/esm5/lib/ec-component/collection-ec/collection-ec.component.js +458 -13
- package/esm5/lib/ec-component/product-detail-ec/product-detail-ec.component.js +3 -48
- package/esm5/lib/ec-component/product-ec/product-ec.component.js +2 -1
- package/esm5/lib/ec-component/sidebar-ec/sidebar-ec.component.js +5 -8
- package/esm5/lib/ec-component/widgets-ec/paypal-express-ec/paypal-express-ec.component.js +3 -1
- package/esm5/lib/ec-component/widgets-ec/price-ec/price-ec.component.js +3 -3
- package/esm5/lib/ec-pipe/ec-currency-symbol.pipe.js +1 -2
- package/esm5/lib/services/cart.service.js +12 -27
- package/esm5/lib/services/currency.service.js +7 -43
- package/fesm2015/ng-easycommerce.js +502 -159
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +516 -182
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/core.consts.d.ts +0 -5
- package/lib/ec-component/account-ec/order-ec/order-ec.component.d.ts +0 -1
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +0 -1
- package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +1 -1
- package/lib/ec-component/collection-ec/collection-ec.component.d.ts +34 -4
- package/lib/ec-component/product-detail-ec/product-detail-ec.component.d.ts +0 -3
- package/lib/ec-component/sidebar-ec/sidebar-ec.component.d.ts +0 -1
- package/lib/services/cart.service.d.ts +2 -2
- package/lib/services/currency.service.d.ts +2 -14
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -65,28 +65,11 @@ var CurrencyService = /** @class */ (function () {
|
|
|
65
65
|
this.getCurrencyListApi = function () { return 'shop-api/currencies'; };
|
|
66
66
|
this.getConvertibilityApi = function (baseCurrency, targetCurrency) { return 'shop-api/currencies?baseCurrency=' + baseCurrency + '&targetCurrency=' + targetCurrency; };
|
|
67
67
|
/**
|
|
68
|
-
* @description Se carga la moneda por defecto
|
|
68
|
+
* @description Se carga la moneda por defecto.
|
|
69
69
|
*/
|
|
70
|
-
this.loadDefaultCurrency = function (
|
|
71
|
-
|
|
72
|
-
_this.
|
|
73
|
-
var _a;
|
|
74
|
-
_this.currencyListSubject.next(list);
|
|
75
|
-
_this.consts.setCurrencyTypeConfig(list);
|
|
76
|
-
var cfg = (_a = list) === null || _a === void 0 ? void 0 : _a.find(function (c) { return c.code === currencyCode; });
|
|
77
|
-
if (cfg) {
|
|
78
|
-
// Setea moneda activa con su configuración completa
|
|
79
|
-
_this.consts.setCurrency(cfg.code, cfg);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
_this.consts.setCurrency(currencyCode);
|
|
83
|
-
}
|
|
84
|
-
_this.load();
|
|
85
|
-
}).catch(function () {
|
|
86
|
-
// En caso de error, al menos fijá el código para no romper el flujo
|
|
87
|
-
_this.consts.setCurrency(currencyCode);
|
|
88
|
-
_this.load();
|
|
89
|
-
});
|
|
70
|
+
this.loadDefaultCurrency = function (currency) {
|
|
71
|
+
_this.consts.setCurrency(currency);
|
|
72
|
+
_this.load();
|
|
90
73
|
};
|
|
91
74
|
/**
|
|
92
75
|
* @description calcula la convetibilidad del precio pasado por paramentro segun esta formula:
|
|
@@ -108,32 +91,12 @@ var CurrencyService = /** @class */ (function () {
|
|
|
108
91
|
});
|
|
109
92
|
}); };
|
|
110
93
|
/**
|
|
111
|
-
* Carga la lista de monedas
|
|
112
|
-
*
|
|
113
|
-
* Si no existe una moneda activa guardada en `localStorage`, inicializa la moneda activa
|
|
114
|
-
* tomando la moneda base del canal (`ChannelConfigService.baseCurrency`) y sus metadatos
|
|
115
|
-
* obtenidos de la lista (símbolo, posición, decimales). Si no se encuentra la base en la
|
|
116
|
-
* lista, usa la primera disponible.
|
|
117
|
-
*
|
|
118
|
-
* Finalmente, llama a `load()` para propagar la configuración a los observables y (si aplica)
|
|
119
|
-
* actualizar `localStorage`.
|
|
120
|
-
*
|
|
121
|
-
* @sideEffect Actualiza `currencyList$`, `Constants.setCurrencyTypeConfig` y potencialmente
|
|
122
|
-
* `Constants.setCurrency`.
|
|
123
|
-
* @returns void
|
|
94
|
+
* @description Carga la lista de monedas/currencies.
|
|
124
95
|
*/
|
|
125
96
|
this.loadCurrencyList = function () {
|
|
126
97
|
_this.connection.get(_this.getCurrencyListApi()).toPromise().then(function (res) {
|
|
127
|
-
var _a, _b, _c, _d;
|
|
128
98
|
_this.currencyListSubject.next(res);
|
|
129
99
|
_this.consts.setCurrencyTypeConfig(res);
|
|
130
|
-
var stored = localStorage.getItem('currency');
|
|
131
|
-
if (!stored) {
|
|
132
|
-
var base_1 = (_a = _this.injector.get(ChannelConfigService).getActiveChannel()) === null || _a === void 0 ? void 0 : _a.baseCurrency;
|
|
133
|
-
var cfg = (_c = (_b = res) === null || _b === void 0 ? void 0 : _b.find(function (c) { return c.code === base_1; }), (_c !== null && _c !== void 0 ? _c : (_d = res) === null || _d === void 0 ? void 0 : _d[0]));
|
|
134
|
-
if (cfg)
|
|
135
|
-
_this.consts.setCurrency(cfg.code, cfg);
|
|
136
|
-
}
|
|
137
100
|
_this.load();
|
|
138
101
|
});
|
|
139
102
|
};
|
|
@@ -219,6 +182,7 @@ var CurrencyService = /** @class */ (function () {
|
|
|
219
182
|
}
|
|
220
183
|
};
|
|
221
184
|
this.injector.get(ChannelConfigService).channelConfig$.subscribe(function (channel) {
|
|
185
|
+
console.log(channel);
|
|
222
186
|
channel.applyCurrencyExchange ? _this.loadCurrencyList() : _this.loadDefaultCurrency(channel.baseCurrency);
|
|
223
187
|
console.log(_this.enableApplyCurrencyExchange);
|
|
224
188
|
});
|
|
@@ -238,4 +202,4 @@ var CurrencyService = /** @class */ (function () {
|
|
|
238
202
|
return CurrencyService;
|
|
239
203
|
}());
|
|
240
204
|
export { CurrencyService };
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBS2hFO0lBZUkseUJBQW9CLE1BQWlCLEVBQ3pCLFVBQTZCLEVBQzdCLE1BQW9CLEVBQ3BCLFFBQWtCO1FBSDlCLGlCQVFDO1FBUm1CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBaEJ0QixvQkFBZSxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMxRSxrQkFBYSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwRSx3QkFBbUIsR0FBMkIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFdEUsY0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsa0JBQWEsR0FB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QUFlLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDbEQ7UUFDTCxDQUFDLENBQUE7UUFySkcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFVBQUEsT0FBTztZQUNwRSxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnQkFSMkIsU0FBUztnQkFDYixpQkFBaUI7Z0JBQ3JCLFlBQVk7Z0JBQ1YsUUFBUTs7O0lBbEJyQixlQUFlO1FBSDNCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyxlQUFlLENBMEszQjswQkFyTEQ7Q0FxTEMsQUExS0QsSUEwS0M7U0ExS1ksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9jb3JlLmNvbnN0cyc7XHJcbmltcG9ydCB7IEN1cnJlbmN5Q29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jdXJyZW5jeUNvbmZpZyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY2hhbm5lbC1jb25maWcuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5U2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBjdXJyZW5jeVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxDdXJyZW5jeUNvbmZpZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KVxyXG4gICAgcHJpdmF0ZSB1cGRhdGVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Qm9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxyXG4gICAgcHJpdmF0ZSBjdXJyZW5jeUxpc3RTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSlcclxuXHJcbiAgICBwdWJsaWMgY3VycmVuY3kkID0gdGhpcy5jdXJyZW5jeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwdWJsaWMgdXBkYXRlJCA9IHRoaXMudXBkYXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHB1YmxpYyBjdXJyZW5jeUxpc3QkID0gdGhpcy5jdXJyZW5jeUxpc3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgZW5hYmxlQXBwbHlDdXJyZW5jeUV4Y2hhbmdlOiBCb29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBwcml2YXRlIGdldEN1cnJlbmN5TGlzdEFwaSA9ICgpID0+ICdzaG9wLWFwaS9jdXJyZW5jaWVzJztcclxuICAgIHByaXZhdGUgZ2V0Q29udmVydGliaWxpdHlBcGkgPSAoYmFzZUN1cnJlbmN5OiBhbnksIHRhcmdldEN1cnJlbmN5OiBhbnkpID0+ICdzaG9wLWFwaS9jdXJyZW5jaWVzP2Jhc2VDdXJyZW5jeT0nICsgYmFzZUN1cnJlbmN5ICsgJyZ0YXJnZXRDdXJyZW5jeT0nICsgdGFyZ2V0Q3VycmVuY3k7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cyxcclxuICAgICAgICBwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuY2hhbm5lbENvbmZpZyQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xyXG4gICAgICAgICAgICBjaGFubmVsLmFwcGx5Q3VycmVuY3lFeGNoYW5nZSA/IHRoaXMubG9hZEN1cnJlbmN5TGlzdCgpIDogdGhpcy5sb2FkRGVmYXVsdEN1cnJlbmN5KGNoYW5uZWwuYmFzZUN1cnJlbmN5KTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5lbmFibGVBcHBseUN1cnJlbmN5RXhjaGFuZ2UpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2UgY2FyZ2EgbGEgbW9uZWRhIHBvciBkZWZlY3RvIGNvbiBtZXRhZGF0b3MgKHPDrW1ib2xvLCBwb3NpY2nDs24sIGRlY2ltYWxlcykuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZERlZmF1bHRDdXJyZW5jeSA9IChjdXJyZW5jeUNvZGUpID0+IHtcclxuICAgICAgICAvLyBUcmFlIGxhIGxpc3RhIGlndWFsIHBhcmEgdGVuZXIgbGEgY29uZmlndXJhY2nDs24gY29tcGxldGFcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q3VycmVuY3lMaXN0QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oKGxpc3Q6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KGxpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeVR5cGVDb25maWcobGlzdCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjZmcgPSBsaXN0Py5maW5kKGMgPT4gYy5jb2RlID09PSBjdXJyZW5jeUNvZGUpO1xyXG4gICAgICAgICAgICBpZiAoY2ZnKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTZXRlYSBtb25lZGEgYWN0aXZhIGNvbiBzdSBjb25maWd1cmFjacOzbiBjb21wbGV0YVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY2ZnLmNvZGUsIGNmZyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeUNvZGUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIEVuIGNhc28gZGUgZXJyb3IsIGFsIG1lbm9zIGZpasOhIGVsIGPDs2RpZ28gcGFyYSBubyByb21wZXIgZWwgZmx1am9cclxuICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY3VycmVuY3lDb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gY2FsY3VsYSBsYSBjb252ZXRpYmlsaWRhZCBkZWwgcHJlY2lvICBwYXNhZG8gcG9yIHBhcmFtZW50cm8gc2VndW4gZXN0YSBmb3JtdWxhOlxyXG4gICAgICogKipjID0gYSAqIGIqKiBkb25kZSAqYz1tb25lZGEgZGVzcHVlcyBkZWwgY2FtYmlvKiwgKmE9dmFsb3IgcXVlIHF1aWVybyBjYW1iaWFyKiB5ICpiPXJhdGlvIGRlIGNhbWJpbyouIFxyXG4gICAgICogQHBhcmFtIHByaWNlIFByZWNpbyBhIGNhbWJpYXJcclxuICAgICAqIEBwYXJhbSByYXRpbyBSYXRpbyBkZSBjYW1iaW9cclxuICAgICAqIEByZXR1cm5zIFNpIGVsIHJhdGlvIG5vIGVzIG51bGwsIHJldG9ybmEgZWwgcHJlY2lvIGNhbWJpYWRvLCBzaW5vIHJldG9ybmEgZWwgcHJlY2lvIHNpbiBjYW1iaW9zLiBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbGN1bGF0ZUNvbnZldGliaWxpdHkgPSAocHJpY2UsIHJhdGlvKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJhdGlvID8gcHJpY2UgKiByYXRpbyA6IHByaWNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHBhcmFtIGNvZGUgQ29kaWdvIGRlIG1vbmVkYSBhIGxhIHF1ZSBzZSBkZXNlYSBjYW1iaWFyXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRDdXJyZW5jeSA9IGFzeW5jIChjb2RlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmdldENvbnZlcnRpYmlsaXR5KHRoaXMuY29uc3RzLmN1cnJlbmN5LmNvZGUsIGNvZGUpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXJnYSBsYSBsaXN0YSBkZSBtb25lZGFzIGRlc2RlIGxhIEFQSSB5IHJlZ2lzdHJhIGxhIGNvbmZpZ3VyYWNpw7NuIGNvbXBsZXRhIGVuIGBDb25zdGFudHNgLlxyXG4gICAgICpcclxuICAgICAqIFNpIG5vIGV4aXN0ZSB1bmEgbW9uZWRhIGFjdGl2YSBndWFyZGFkYSBlbiBgbG9jYWxTdG9yYWdlYCwgaW5pY2lhbGl6YSBsYSBtb25lZGEgYWN0aXZhXHJcbiAgICAgKiB0b21hbmRvIGxhIG1vbmVkYSBiYXNlIGRlbCBjYW5hbCAoYENoYW5uZWxDb25maWdTZXJ2aWNlLmJhc2VDdXJyZW5jeWApIHkgc3VzIG1ldGFkYXRvc1xyXG4gICAgICogb2J0ZW5pZG9zIGRlIGxhIGxpc3RhIChzw61tYm9sbywgcG9zaWNpw7NuLCBkZWNpbWFsZXMpLiBTaSBubyBzZSBlbmN1ZW50cmEgbGEgYmFzZSBlbiBsYVxyXG4gICAgICogbGlzdGEsIHVzYSBsYSBwcmltZXJhIGRpc3BvbmlibGUuXHJcbiAgICAgKlxyXG4gICAgICogRmluYWxtZW50ZSwgbGxhbWEgYSBgbG9hZCgpYCBwYXJhIHByb3BhZ2FyIGxhIGNvbmZpZ3VyYWNpw7NuIGEgbG9zIG9ic2VydmFibGVzIHkgKHNpIGFwbGljYSlcclxuICAgICAqIGFjdHVhbGl6YXIgYGxvY2FsU3RvcmFnZWAuXHJcbiAgICAgKlxyXG4gICAgICogQHNpZGVFZmZlY3QgQWN0dWFsaXphIGBjdXJyZW5jeUxpc3QkYCwgYENvbnN0YW50cy5zZXRDdXJyZW5jeVR5cGVDb25maWdgIHkgcG90ZW5jaWFsbWVudGVcclxuICAgICAqICAgICAgICAgICAgIGBDb25zdGFudHMuc2V0Q3VycmVuY3lgLlxyXG4gICAgICogQHJldHVybnMgdm9pZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYWRDdXJyZW5jeUxpc3QgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldEN1cnJlbmN5TGlzdEFwaSgpKS50b1Byb21pc2UoKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5VHlwZUNvbmZpZyhyZXMpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Jyk7XHJcbiAgICAgICAgICAgIGlmICghc3RvcmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbENvbmZpZ1NlcnZpY2UpLmdldEFjdGl2ZUNoYW5uZWwoKT8uYmFzZUN1cnJlbmN5O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2ZnID0gcmVzPy5maW5kKGMgPT4gYy5jb2RlID09PSBiYXNlKSA/PyByZXM/LlswXTtcclxuICAgICAgICAgICAgICAgIGlmIChjZmcpIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5KGNmZy5jb2RlLCBjZmcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIGdlbmVyYSBsYSBjYXJnYSB5IGNvbmZpZ3VyYWNpw7NuIGRlIGxhIG1vbmVkYSBlbGVnaWRhIHBhcmEgbGEgY29udmVyc2lvbi5cclxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBNb25lZGEgYSBjb252ZXJ0aXIuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZEN1cnJlbmN5ID0gKGN1cnJlbmN5OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbmN5U3ViamVjdC5uZXh0KGN1cnJlbmN5KTtcclxuICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeS5jb2RlKTtcclxuICAgICAgICBsZXQgdXBkYXRlID0gdGhpcy51cGRhdGVTdWJqZWN0LmdldFZhbHVlKClcclxuICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3QubmV4dCghdXBkYXRlKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjdXJyZW5jeScsIEpTT04uc3RyaW5naWZ5KHRoaXMuY29uc3RzLmN1cnJlbmN5KSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lcmEgbGEgY29udmVydGliaWxpZGFkIGRlIGxhIG1vbmVkYSBiYXNlIGEgbGEgbnVldmEuIFNpIGJhc2VDdXJyZW5jeSBubyB0aWVuZSB2YWxvciBcclxuICAgICAqIGVudG9uY2VzIHV0aWxpemEgbGEgbW9uZWRhIGJhc2UgZGVsIGNhbmFsLlxyXG4gICAgICogQHBhcmFtIGN1cnJlbmN5IE9iamV0byBkZSBsYSBtb25lZGEgZGVzdGluby5cclxuICAgICAqIEBwYXJhbSBiYXNlQ3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBiYXNlLiAqRWo6IFVTRCB8IEFSUyB8IEVVUiB8Li4uKlxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZUNvbnZlcnRpYmlsaXR5ID0gYXN5bmMgKGN1cnJlbmN5OiBhbnksIGJhc2VDdXJyZW5jeT86IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICghYmFzZUN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBiYXNlQ3VycmVuY3kgPSBhd2FpdCB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuZ2V0QWN0aXZlQ2hhbm5lbCgpLmJhc2VDdXJyZW5jeTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeSA9ICdVU0QnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGN1cnJlbmN5LmNvZGUgPT0gYmFzZUN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZEN1cnJlbmN5KGN1cnJlbmN5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldENvbnZlcnRpYmlsaXR5KGJhc2VDdXJyZW5jeSwgY3VycmVuY3kuY29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgbGEgY29udmVyc2lvbiBkZXNkZSBsYSBtb25lZGEgYmFzZSBhIGxhIGRlc3Rpbm8uIFJlY2liZSB1biBvYmpldG8gZGUgdGlwbyBDdXJyZW5jeUNvbmZpZy5cclxuICAgICAqIFNpIGxhIGNvbnZlcnNpb24gcmV0b3JuYSByZXN1bHRhZG8gcmVhbGl6YSBlbCBjYW1iaW8sIGRlIGxvIGNvbnRyYXJpbyBlbWl0ZSB1biBtZW5zYWplIGRlIGVycm9yLlxyXG4gICAgICogQHBhcmFtIGJhc2VDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGJhc2UuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0Q3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBkZXN0aW5vLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENvbnZlcnRpYmlsaXR5ID0gKGJhc2VDdXJyZW5jeTogYW55LCB0YXJnZXRDdXJyZW5jeTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldENvbnZlcnRpYmlsaXR5QXBpKGJhc2VDdXJyZW5jeSwgdGFyZ2V0Q3VycmVuY3kpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEN1cnJlbmN5ID0gcmVzWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEN1cnJlbmN5KHRlbXBDdXJyZW5jeSlcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsYSB2YXJpYWJsZSByZXMgbm8gY29udGllbmUgdmFsb3IsIGFzZWd1cmVzZSBkZSBxdWUgZXN0YSBjb252ZXJzacOzbiBlc3RlIGNvbmZpZ3VyYWRhIGVuIGVsIGJhY2tvZmZpY2UnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdlcnJvci1jb252ZXJ0aWJpbGl0eScpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZyhlcnIpKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENhcmdhIGxhIG1vbmVkYSwgc2kgaGF5IHVuYSBlbiBlbCBsb2NhbHN0b3JhZ2UgdG9tYSBlc2EgeSByZWFsaXphIGxhIGNvbnZlcnNpb24uXHJcbiAgICAgKiBkZSBsbyBjb250cmFyaW8gc29sbyBzZXRlYSBlbiBlbCBvYnNlcnZhYmxlIGN1cnJlbmN5U3ViamVjdCBlbCB2YWxvciBwb3IgZGVmZWN0byBjYXJnYWRvIGVuIGxhcyBjb25zdGFudGVzLiBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCBsb2NhbFN0b3JhZ2VDdXJyZW5jeSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW5jeScpXHJcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZUN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW5jeSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlQ3VycmVuY3kpXHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDb252ZXJ0aWJpbGl0eShjdXJyZW5jeSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5U3ViamVjdC5uZXh0KHRoaXMuY29uc3RzLmN1cnJlbmN5KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBS2hFO0lBZUkseUJBQW9CLE1BQWlCLEVBQ3pCLFVBQTZCLEVBQzdCLE1BQW9CLEVBQ3BCLFFBQWtCO1FBSDlCLGlCQVNDO1FBVG1CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBaEJ0QixvQkFBZSxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMxRSxrQkFBYSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwRSx3QkFBbUIsR0FBMkIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFdEUsY0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsa0JBQWEsR0FB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QUFjLENBQUMsU0FBUyxDQUFFLFVBQUEsT0FBTztZQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3BCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUUsS0FBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7O2dCQVQyQixTQUFTO2dCQUNiLGlCQUFpQjtnQkFDckIsWUFBWTtnQkFDVixRQUFROzs7SUFsQnJCLGVBQWU7UUFIM0IsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztPQUNXLGVBQWUsQ0F3STNCOzBCQW5KRDtDQW1KQyxBQXhJRCxJQXdJQztTQXhJWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2NvcmUuY29uc3RzJztcclxuaW1wb3J0IHsgQ3VycmVuY3lDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2N1cnJlbmN5Q29uZmlnJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENoYW5uZWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGN1cnJlbmN5U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEN1cnJlbmN5Q29uZmlnPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pXHJcbiAgICBwcml2YXRlIHVwZGF0ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxCb29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXHJcbiAgICBwcml2YXRlIGN1cnJlbmN5TGlzdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKVxyXG5cclxuICAgIHB1YmxpYyBjdXJyZW5jeSQgPSB0aGlzLmN1cnJlbmN5U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHB1YmxpYyB1cGRhdGUkID0gdGhpcy51cGRhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHVibGljIGN1cnJlbmN5TGlzdCQgPSB0aGlzLmN1cnJlbmN5TGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBcclxuICAgIHByaXZhdGUgZW5hYmxlQXBwbHlDdXJyZW5jeUV4Y2hhbmdlOkJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0Q3VycmVuY3lMaXN0QXBpID0gKCkgPT4gJ3Nob3AtYXBpL2N1cnJlbmNpZXMnO1xyXG4gICAgcHJpdmF0ZSBnZXRDb252ZXJ0aWJpbGl0eUFwaSA9IChiYXNlQ3VycmVuY3k6IGFueSwgdGFyZ2V0Q3VycmVuY3k6IGFueSkgPT4gJ3Nob3AtYXBpL2N1cnJlbmNpZXM/YmFzZUN1cnJlbmN5PScgKyBiYXNlQ3VycmVuY3kgKyAnJnRhcmdldEN1cnJlbmN5PScgKyB0YXJnZXRDdXJyZW5jeTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLFxyXG4gICAgICAgIHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgICAgICB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuY2hhbm5lbENvbmZpZyQuc3Vic2NyaWJlKCBjaGFubmVsID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYW5uZWwpXHJcbiAgICAgICAgICAgICAgICBjaGFubmVsLmFwcGx5Q3VycmVuY3lFeGNoYW5nZSA/ICB0aGlzLmxvYWRDdXJyZW5jeUxpc3QoKSA6IHRoaXMubG9hZERlZmF1bHRDdXJyZW5jeShjaGFubmVsLmJhc2VDdXJyZW5jeSk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmVuYWJsZUFwcGx5Q3VycmVuY3lFeGNoYW5nZSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2UgY2FyZ2EgbGEgbW9uZWRhIHBvciBkZWZlY3RvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYWREZWZhdWx0Q3VycmVuY3kgPSAoY3VycmVuY3kpID0+IHtcclxuICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeSk7XHJcbiAgICAgICAgdGhpcy5sb2FkKClcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjYWxjdWxhIGxhIGNvbnZldGliaWxpZGFkIGRlbCBwcmVjaW8gIHBhc2FkbyBwb3IgcGFyYW1lbnRybyBzZWd1biBlc3RhIGZvcm11bGE6XHJcbiAgICAgKiAqKmMgPSBhICogYioqIGRvbmRlICpjPW1vbmVkYSBkZXNwdWVzIGRlbCBjYW1iaW8qLCAqYT12YWxvciBxdWUgcXVpZXJvIGNhbWJpYXIqIHkgKmI9cmF0aW8gZGUgY2FtYmlvKi4gXHJcbiAgICAgKiBAcGFyYW0gcHJpY2UgUHJlY2lvIGEgY2FtYmlhclxyXG4gICAgICogQHBhcmFtIHJhdGlvIFJhdGlvIGRlIGNhbWJpb1xyXG4gICAgICogQHJldHVybnMgU2kgZWwgcmF0aW8gbm8gZXMgbnVsbCwgcmV0b3JuYSBlbCBwcmVjaW8gY2FtYmlhZG8sIHNpbm8gcmV0b3JuYSBlbCBwcmVjaW8gc2luIGNhbWJpb3MuIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FsY3VsYXRlQ29udmV0aWJpbGl0eSA9IChwcmljZSwgcmF0aW8pID0+IHtcclxuICAgICAgICByZXR1cm4gcmF0aW8gPyBwcmljZSAqIHJhdGlvIDogcHJpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcGFyYW0gY29kZSBDb2RpZ28gZGUgbW9uZWRhIGEgbGEgcXVlIHNlIGRlc2VhIGNhbWJpYXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldEN1cnJlbmN5ID0gYXN5bmMgKGNvZGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0Q29udmVydGliaWxpdHkodGhpcy5jb25zdHMuY3VycmVuY3kuY29kZSwgY29kZSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBDYXJnYSBsYSBsaXN0YSBkZSBtb25lZGFzL2N1cnJlbmNpZXMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZEN1cnJlbmN5TGlzdCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q3VycmVuY3lMaXN0QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmN5TGlzdFN1YmplY3QubmV4dChyZXMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeVR5cGVDb25maWcocmVzKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkKClcclxuICAgICAgICAgICAgfSlcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIGdlbmVyYSBsYSBjYXJnYSB5IGNvbmZpZ3VyYWNpw7NuIGRlIGxhIG1vbmVkYSBlbGVnaWRhIHBhcmEgbGEgY29udmVyc2lvbi5cclxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBNb25lZGEgYSBjb252ZXJ0aXIuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZEN1cnJlbmN5ID0gKCBjdXJyZW5jeTphbnkpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbmN5U3ViamVjdC5uZXh0KGN1cnJlbmN5KTtcclxuICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeS5jb2RlKTtcclxuICAgICAgICBsZXQgdXBkYXRlID0gdGhpcy51cGRhdGVTdWJqZWN0LmdldFZhbHVlKClcclxuICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3QubmV4dCghdXBkYXRlKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjdXJyZW5jeScsIEpTT04uc3RyaW5naWZ5KHRoaXMuY29uc3RzLmN1cnJlbmN5KSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lcmEgbGEgY29udmVydGliaWxpZGFkIGRlIGxhIG1vbmVkYSBiYXNlIGEgbGEgbnVldmEuIFNpIGJhc2VDdXJyZW5jeSBubyB0aWVuZSB2YWxvciBcclxuICAgICAqIGVudG9uY2VzIHV0aWxpemEgbGEgbW9uZWRhIGJhc2UgZGVsIGNhbmFsLlxyXG4gICAgICogQHBhcmFtIGN1cnJlbmN5IE9iamV0byBkZSBsYSBtb25lZGEgZGVzdGluby5cclxuICAgICAqIEBwYXJhbSBiYXNlQ3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBiYXNlLiAqRWo6IFVTRCB8IEFSUyB8IEVVUiB8Li4uKlxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZUNvbnZlcnRpYmlsaXR5ID0gYXN5bmMgKGN1cnJlbmN5OmFueSwgYmFzZUN1cnJlbmN5PzpzdHJpbmcpID0+IHtcclxuICAgICAgICBpZighYmFzZUN1cnJlbmN5KXtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeSA9IGF3YWl0IHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxDb25maWdTZXJ2aWNlKS5nZXRBY3RpdmVDaGFubmVsKCkuYmFzZUN1cnJlbmN5OyBcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeSA9ICdVU0QnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY3VycmVuY3kuY29kZSA9PSBiYXNlQ3VycmVuY3kpe1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDdXJyZW5jeShjdXJyZW5jeSk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29udmVydGliaWxpdHkoYmFzZUN1cnJlbmN5LGN1cnJlbmN5LmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBPYnRpZW5lIGxhIGNvbnZlcnNpb24gZGVzZGUgbGEgbW9uZWRhIGJhc2UgYSBsYSBkZXN0aW5vLiBSZWNpYmUgdW4gb2JqZXRvIGRlIHRpcG8gQ3VycmVuY3lDb25maWcuXHJcbiAgICAgKiBTaSBsYSBjb252ZXJzaW9uIHJldG9ybmEgcmVzdWx0YWRvIHJlYWxpemEgZWwgY2FtYmlvLCBkZSBsbyBjb250cmFyaW8gZW1pdGUgdW4gbWVuc2FqZSBkZSBlcnJvci5cclxuICAgICAqIEBwYXJhbSBiYXNlQ3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBiYXNlLlxyXG4gICAgICogQHBhcmFtIHRhcmdldEN1cnJlbmN5IENvZGlnbyBkZSBsYSBtb25lZGEgZGVzdGluby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRDb252ZXJ0aWJpbGl0eSA9IChiYXNlQ3VycmVuY3k6IGFueSwgdGFyZ2V0Q3VycmVuY3k6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q29udmVydGliaWxpdHlBcGkoYmFzZUN1cnJlbmN5LCB0YXJnZXRDdXJyZW5jeSkpXHJcbiAgICAgICAgICAgICAgICAudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEN1cnJlbmN5ID0gcmVzWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRDdXJyZW5jeSh0ZW1wQ3VycmVuY3kpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsYSB2YXJpYWJsZSByZXMgbm8gY29udGllbmUgdmFsb3IsIGFzZWd1cmVzZSBkZSBxdWUgZXN0YSBjb252ZXJzacOzbiBlc3RlIGNvbmZpZ3VyYWRhIGVuIGVsIGJhY2tvZmZpY2UnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnZXJyb3ItY29udmVydGliaWxpdHknKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5sb2coZXJyKSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBDYXJnYSBsYSBtb25lZGEsIHNpIGhheSB1bmEgZW4gZWwgbG9jYWxzdG9yYWdlIHRvbWEgZXNhIHkgcmVhbGl6YSBsYSBjb252ZXJzaW9uLlxyXG4gICAgICogZGUgbG8gY29udHJhcmlvIHNvbG8gc2V0ZWEgZW4gZWwgb2JzZXJ2YWJsZSBjdXJyZW5jeVN1YmplY3QgZWwgdmFsb3IgcG9yIGRlZmVjdG8gY2FyZ2FkbyBlbiBsYXMgY29uc3RhbnRlcy4gXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZCA9ICgpID0+IHtcclxuICAgICAgICBsZXQgbG9jYWxTdG9yYWdlQ3VycmVuY3kgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVuY3knKVxyXG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2VDdXJyZW5jeSkge1xyXG4gICAgICAgICAgICBsZXQgY3VycmVuY3kgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZUN1cnJlbmN5KVxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ29udmVydGliaWxpdHkoY3VycmVuY3kpIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lTdWJqZWN0Lm5leHQodGhpcy5jb25zdHMuY3VycmVuY3kpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxufVxyXG4iXX0=
|