ng-easycommerce-v18 0.2.1 → 0.2.2
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/assets/ec-i18n/ct.json +2 -1
- package/assets/ec-i18n/en.json +2 -1
- package/assets/ec-i18n/es.json +1 -0
- package/assets/ec-i18n/fr.json +2 -1
- package/assets/ec-i18n/gl.json +2 -1
- package/assets/ec-i18n/pr.json +2 -1
- package/esm2022/lib/classes/filters/filter-factory.mjs +4 -1
- package/esm2022/lib/classes/filters/price_range-filter.mjs +59 -0
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -2
- package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +9 -1
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +24 -3
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +1 -5
- package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +38 -91
- package/esm2022/lib/ec-components/index.mjs +2 -1
- package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +143 -0
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +39 -3
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +16 -2
- package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +73 -10
- package/esm2022/lib/ec-services/filters.service.mjs +45 -12
- package/esm2022/lib/ec-services/pagination.service.mjs +8 -7
- package/esm2022/lib/ec-services/product-detail.service.mjs +50 -35
- package/esm2022/lib/ec-services/products.service.mjs +18 -4
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/pagination.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +504 -166
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/classes/filters/price_range-filter.d.ts +26 -0
- package/lib/ec-components/cart-ec/cart-ec.component.d.ts +1 -0
- package/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.d.ts +1 -0
- package/lib/ec-components/filters-ec/filters-ec.component.d.ts +7 -22
- package/lib/ec-components/index.d.ts +1 -0
- package/lib/ec-components/price-range-filter/price-range-filter.component.d.ts +37 -0
- package/lib/ec-components/product-detail-ec/product-detail-ec.component.d.ts +4 -0
- package/lib/ec-components/product-ec/product-ec.component.d.ts +1 -0
- package/lib/ec-components/widgets-ec/price-ec/price-ec.component.d.ts +30 -10
- package/lib/ec-services/filters.service.d.ts +6 -1
- package/lib/ec-services/product-detail.service.d.ts +4 -4
- package/lib/ec-services/products.service.d.ts +1 -0
- package/lib/interfaces/filter.d.ts +1 -1
- package/lib/interfaces/pagination.d.ts +2 -0
- package/package.json +1 -1
|
@@ -43,10 +43,8 @@ export class FiltersService {
|
|
|
43
43
|
const extra = filter.toUrlParams();
|
|
44
44
|
extra.split('=')[1] != '' ? extra_params += extra : null;
|
|
45
45
|
});
|
|
46
|
-
console.log("extra_params", search_value);
|
|
47
46
|
if (search_value)
|
|
48
47
|
extra_params += ('&criteria[search][type]=contains&criteria[search][value]=' + search_value);
|
|
49
|
-
//console.log("extra_params",extra_params);
|
|
50
48
|
return this.productsFilterApi(extra_params);
|
|
51
49
|
}
|
|
52
50
|
isUpdated(paginationSettings) {
|
|
@@ -65,11 +63,20 @@ export class FiltersService {
|
|
|
65
63
|
setFilters(paginationSettings, search_value) {
|
|
66
64
|
this._paginationSettings = paginationSettings;
|
|
67
65
|
let final_filters = [];
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
let filtersToProcess = this._optionsFilters?.includes('all')
|
|
67
|
+
? ['attributes', 'categories', 'dynamics', 'sort', 'price_range']
|
|
68
|
+
: this._optionsFilters;
|
|
70
69
|
runInInjectionContext(this.environmentInjector, () => {
|
|
71
70
|
const filterFactory = new FilterFactory();
|
|
72
|
-
|
|
71
|
+
filtersToProcess?.forEach(filterType => {
|
|
72
|
+
const filter = filterFactory.create(filterType, paginationSettings);
|
|
73
|
+
if (filter) {
|
|
74
|
+
final_filters.push(filter);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
// console.warn(`❌ Failed to create filter for type: ${filterType}`);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
73
80
|
});
|
|
74
81
|
this._defaultFilters?.forEach(filterDefault => {
|
|
75
82
|
let filter = final_filters.find(filter => filter.type() == filterDefault.filter_type);
|
|
@@ -83,16 +90,28 @@ export class FiltersService {
|
|
|
83
90
|
this._filtersInitialized = true;
|
|
84
91
|
const settings = paginationSettings || this._paginationSettings;
|
|
85
92
|
let final_filters = [];
|
|
86
|
-
|
|
87
|
-
|
|
93
|
+
let filtersToProcess = this._optionsFilters?.includes('all')
|
|
94
|
+
? ['attributes', 'categories', 'dynamics', 'sort', 'price_range']
|
|
95
|
+
: this._optionsFilters;
|
|
88
96
|
runInInjectionContext(this.environmentInjector, () => {
|
|
89
97
|
const filterFactory = new FilterFactory();
|
|
90
|
-
|
|
98
|
+
filtersToProcess?.forEach(filterType => {
|
|
99
|
+
// console.log('Creating filter for type:', filterType);
|
|
100
|
+
const filter = filterFactory.create(filterType, settings);
|
|
101
|
+
// console.log('Created filter:', filter);
|
|
102
|
+
if (filter) {
|
|
103
|
+
final_filters.push(filter);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// console.warn(`Failed to create filter for type: ${filterType}`);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
91
109
|
});
|
|
92
110
|
this._defaultFilters?.forEach(filterDefault => {
|
|
93
111
|
let filter = final_filters.find(filter => filter.type() == filterDefault.filter_type);
|
|
94
112
|
filter && filterDefault.codes.forEach(value => filter.setSelected(value));
|
|
95
113
|
});
|
|
114
|
+
this._filtersSubject.next(final_filters);
|
|
96
115
|
return final_filters;
|
|
97
116
|
}
|
|
98
117
|
getSpecificFilters(types) {
|
|
@@ -101,9 +120,11 @@ export class FiltersService {
|
|
|
101
120
|
}
|
|
102
121
|
setFilterSelected(filterObj, filterElem) {
|
|
103
122
|
let final_filters = this._filtersSubject.value;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
123
|
+
if (filterObj.type() !== 'price_range') {
|
|
124
|
+
let index = final_filters.findIndex(filter => filter.type() == filterObj.type());
|
|
125
|
+
final_filters[index].setSelected(filterElem, filterElem.value || filterElem.code);
|
|
126
|
+
console.log(index, final_filters);
|
|
127
|
+
}
|
|
107
128
|
this._filtersSubject.next(final_filters);
|
|
108
129
|
// }
|
|
109
130
|
}
|
|
@@ -126,6 +147,18 @@ export class FiltersService {
|
|
|
126
147
|
});
|
|
127
148
|
});
|
|
128
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Actualiza internamente el rango de precio y re-emite
|
|
152
|
+
* el array de filtros para que PaginationService vuelva a llamar
|
|
153
|
+
*/
|
|
154
|
+
updatePriceRangeFilter(min, max) {
|
|
155
|
+
const filters = this._filtersSubject.value;
|
|
156
|
+
const pr = filters.find(f => f.type() === 'price_range');
|
|
157
|
+
if (!pr)
|
|
158
|
+
return;
|
|
159
|
+
pr.setSelected(min, max);
|
|
160
|
+
this._filtersSubject.next([...filters]);
|
|
161
|
+
}
|
|
129
162
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FiltersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
130
163
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FiltersService, providedIn: 'root' });
|
|
131
164
|
}
|
|
@@ -135,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
135
168
|
providedIn: 'root'
|
|
136
169
|
}]
|
|
137
170
|
}], ctorParameters: () => [] });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2ZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUt6RSxNQUFNLE9BQU8sY0FBYztJQUNmLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxlQUFlLEdBQThCLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsR0FBeUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxjQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRSxhQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9FLE1BQU0sR0FBd0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvRCxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUVqRCxlQUFlLEdBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsZUFBZSxHQUFvQixFQUFFLENB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R0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDN0MscUJBQXFCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtZQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQzFDLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQTtZQUMxQjs7Ozs7O2lCQU1LO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBUyxFQUFFLEVBQUU7Z0JBQzdDLElBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUM5QixrQkFBa0I7Z0JBQ3RCLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzt3R0FsSVEsY0FBYzs0R0FBZCxjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudEluamVjdG9yLCBpbmplY3QsIEluamVjdGFibGUsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsdGVyLCBGaWx0ZXJGYWN0b3J5IH0gZnJvbSAnLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7IERlZmF1bHRGaWx0ZXIsIEZpbHRlckVsZW1lbnQsIEZpbHRlclR5cGUsIFBhZ2luYXRpb25TZXR0aW5ncyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcnNTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX2FwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBfZmlsdGVyc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPihbXSk7XHJcbiAgICBwdWJsaWMgZmlsdGVycyQ6IE9ic2VydmFibGU8RmlsdGVyW10+ID0gdGhpcy5fZmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfYXBpVXJsU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIGFwaVVybCQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuX2FwaVVybFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfcmVhZHlTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyByZWFkeSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9yZWFkeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpXHJcblxyXG4gICAgcHJpdmF0ZSBfb3B0aW9uc0ZpbHRlcnM6IEZpbHRlclR5cGVbXSA9IFsnYWxsJ107XHJcbiAgICBwcml2YXRlIF9kZWZhdWx0RmlsdGVyczogRGVmYXVsdEZpbHRlcltdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvblNldHRpbmdzOiBQYWdpbmF0aW9uU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgdmFsdWU6JycsXHJcbiAgICAgICAgdHlwZTonJyxcclxuICAgICAgICBsaW1pdDowXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgX2ZpbHRlcnNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgLy90aGlzLl9kZWZhdWx0RmlsdGVycyA9IHRoaXMuX2NvbnN0cy5nZXREZWZhdWx0RmlsdGVycygpXHJcbiAgICB9XHJcblxyXG4gICAgLy9BUEkgVVJMXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbGEgdXJsIHBhcmEgZWwgZmlsdHJhZG9cclxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByb2R1Y3RzRmlsdGVyQXBpKGZpbHRlcnMgPSAnJykgeyByZXR1cm4gJ3Nob3AtYXBpLycgKyB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCArICcvcHJvZHVjdC1zZWFyY2gvJyArICc/bG9jYWxlPScgKyB0aGlzLl9hcGlDb25zdHMuTE9DQUxFICsgZmlsdGVycyB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBBcm1hIGxvcyBmaWx0cm9zIHkgcmV0b3JuYSBsYSB1cmwgY29tcGxldGEgY29uIGxvcyBmaWx0cm9zIGFwbGljYWRvcy5cclxuICAgICAqIEBwYXJhbSBzZWFyY2hfdmFsdWUgdmFsb3IgYSBidXNjYXJcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZUZpbmFsQXBpKHNlYXJjaF92YWx1ZT86IHN0cmluZykge1xyXG4gICAgICAgIGxldCBleHRyYV9wYXJhbXMgPSAnJztcclxuICAgICAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZS5mb3JFYWNoKGZpbHRlciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gZmlsdGVyLnRvVXJsUGFyYW1zKCk7XHJcbiAgICAgICAgICAgIGV4dHJhLnNwbGl0KCc9JylbMV0gIT0gJycgPyBleHRyYV9wYXJhbXMgKz0gZXh0cmEgOiBudWxsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJleHRyYV9wYXJhbXNcIiwgc2VhcmNoX3ZhbHVlKTtcclxuICAgICAgICBpZiAoc2VhcmNoX3ZhbHVlKSBleHRyYV9wYXJhbXMgKz0gKCcmY3JpdGVyaWFbc2VhcmNoXVt0eXBlXT1jb250YWlucyZjcml0ZXJpYVtzZWFyY2hdW3ZhbHVlXT0nICsgc2VhcmNoX3ZhbHVlKTtcclxuICAgICAgIFxyXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJleHRyYV9wYXJhbXNcIixleHRyYV9wYXJhbXMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RzRmlsdGVyQXBpKGV4dHJhX3BhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1VwZGF0ZWQocGFnaW5hdGlvblNldHRpbmdzOiBQYWdpbmF0aW9uU2V0dGluZ3Mpe1xyXG4gICAgICAgIGNvbnN0IGtleXM6c3RyaW5nW10gPSBPYmplY3Qua2V5cyhwYWdpbmF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgIGxldCBjaGFuZ2U6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5OnN0cmluZykgPT4geyAgIFxyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChwYWdpbmF0aW9uU2V0dGluZ3MgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTsgXHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlMiA9ICh0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlMikgY2hhbmdlID0gdHJ1ZTsgXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoY2hhbmdlKSB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgPSBwYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRGaWx0ZXJzKHBhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzLCBzZWFyY2hfdmFsdWU/OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGFnaW5hdGlvblNldHRpbmdzID0gcGFnaW5hdGlvblNldHRpbmdzO1xyXG4gICAgICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnNGaWx0ZXJzPy5pbmNsdWRlcygnYWxsJykpIHRoaXMuX29wdGlvbnNGaWx0ZXJzID0gWydhdHRyaWJ1dGVzJywgJ2NhdGVnb3JpZXMnLCAnZHluYW1pY3MnLCAnc29ydCddO1xyXG4gICAgICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5lbnZpcm9ubWVudEluamVjdG9yLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJGYWN0b3J5ID0gbmV3IEZpbHRlckZhY3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnNGaWx0ZXJzPy5mb3JFYWNoKGZpbHRlciA9PiBmaW5hbF9maWx0ZXJzLnB1c2goZmlsdGVyRmFjdG9yeS5jcmVhdGUoZmlsdGVyLCBwYWdpbmF0aW9uU2V0dGluZ3MpKSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRGaWx0ZXJzPy5mb3JFYWNoKGZpbHRlckRlZmF1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IGZpbmFsX2ZpbHRlcnMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSBmaWx0ZXJEZWZhdWx0LmZpbHRlcl90eXBlKTtcclxuICAgICAgICAgICAgICAgIGZpbHRlciAmJiBmaWx0ZXJEZWZhdWx0LmNvZGVzLmZvckVhY2godmFsdWUgPT4gZmlsdGVyLnNldFNlbGVjdGVkKHZhbHVlKSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVycyhwYWdpbmF0aW9uU2V0dGluZ3M/OiBQYWdpbmF0aW9uU2V0dGluZ3MpIHtcclxuICAgICAgICBpZiAodGhpcy5fZmlsdGVyc0luaXRpYWxpemVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IHBhZ2luYXRpb25TZXR0aW5ncyB8fCB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnNGaWx0ZXJzPy5pbmNsdWRlcygnYWxsJykpIHRoaXMuX29wdGlvbnNGaWx0ZXJzID0gWydhdHRyaWJ1dGVzJywgJ2NhdGVnb3JpZXMnLCAnZHluYW1pY3MnLCAnc29ydCddO1xyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnNGaWx0ZXJzPy5mb3JFYWNoKGZpbHRlciA9PiBmaW5hbF9maWx0ZXJzLnB1c2goZmlsdGVyRmFjdG9yeS5jcmVhdGUoZmlsdGVyLCBzZXR0aW5ncykpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9kZWZhdWx0RmlsdGVycz8uZm9yRWFjaChmaWx0ZXJEZWZhdWx0ID0+IHtcclxuICAgICAgICAgICAgbGV0IGZpbHRlciA9IGZpbmFsX2ZpbHRlcnMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSBmaWx0ZXJEZWZhdWx0LmZpbHRlcl90eXBlKTtcclxuICAgICAgICAgICAgZmlsdGVyICYmIGZpbHRlckRlZmF1bHQuY29kZXMuZm9yRWFjaCh2YWx1ZSA9PiBmaWx0ZXIuc2V0U2VsZWN0ZWQodmFsdWUpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZmluYWxfZmlsdGVycztcclxuICAgIH1cclxuXHJcbiAgICBnZXRTcGVjaWZpY0ZpbHRlcnModHlwZXM6IEZpbHRlclR5cGVbXSk6IEZpbHRlcltdIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlLmZpbHRlcihmaWx0ZXIgPT4gdHlwZXMuaW5jbHVkZXMoZmlsdGVyLnR5cGUoKSkpXHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RmlsdGVyU2VsZWN0ZWQoZmlsdGVyT2JqOiBGaWx0ZXIsIGZpbHRlckVsZW06IEZpbHRlckVsZW1lbnQpIHtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBsZXQgaW5kZXggPSBmaW5hbF9maWx0ZXJzLmZpbmRJbmRleChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSBmaWx0ZXJPYmoudHlwZSgpKTtcclxuICAgICAgICBmaW5hbF9maWx0ZXJzW2luZGV4XS5zZXRTZWxlY3RlZChmaWx0ZXJFbGVtLCBmaWx0ZXJFbGVtLnZhbHVlIHx8IGZpbHRlckVsZW0uY29kZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coaW5kZXgsIGZpbmFsX2ZpbHRlcnMpXHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRmlsdGVycyhwYWdpbmF0aW9uRmlsdGVyczogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY2xhdmVzID0gT2JqZWN0LmtleXMocGFnaW5hdGlvbkZpbHRlcnMpXHJcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlckZhY3RvcnkgPSBuZXcgRmlsdGVyRmFjdG9yeSgpO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcjpGaWx0ZXJbXSA9IFtdXHJcbiAgICAgICAgLyogY2xhdmVzLmZvckVhY2goKGtleTphbnkpID0+IHtcclxuICAgICAgICAgICAgZmlsdGVyLnB1c2goZmlsdGVyRmFjdG9yeS5jcmVhdGUoa2V5KSlcclxuICAgICAgICAgICAgcGFnaW5hdGlvbkZpbHRlcnNba2V5XS5mb3JFYWNoKCh2YWx1ZTphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhmaWx0ZXJbMF0uY3JlYXRlRWxlbWVudCh2YWx1ZSxwYWdpbmF0aW9uRmlsdGVyc1trZXldKSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgfSkgKi9cclxuICAgICAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaCgodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZih2YWx1ZS50eXBlKCkgPT0gXCJhdHRyaWJ1dGVzXCIpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgLy92YWx1ZS5kYXRhID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2ZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQU16RSxNQUFNLE9BQU8sY0FBYztJQUNmLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxlQUFlLEdBQThCLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsR0FBeUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxjQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRSxhQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9FLE1BQU0sR0FBd0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvRCxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUVqRCxlQUFlLEdBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsZUFBZSxHQUFvQixFQUFFLENBQUM7SUFFdEMsbUJBQW1CLEdBQXVCO1FBQzlDLEtBQUssRUFBRSxFQUFFO1FBQ1QsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUUsQ0FBQztLQUNYLENBQUM7SUFFTSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFFcEM7UUFDSSx5REFBeUQ7SUFDN0QsQ0FBQztJQUVELFNBQVM7SUFDVDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxPQUFPLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDdEo7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFlBQXFCO1FBQ2xDLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLFlBQVk7WUFBRSxZQUFZLElBQUksQ0FBQywyREFBMkQsR0FBRyxZQUFZLENBQUMsQ0FBQztRQUUvRyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8sU0FBUyxDQUFDLGtCQUFzQztRQUNwRCxNQUFNLElBQUksR0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsSUFBSSxNQUFNLEdBQVksS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN6QixNQUFNLEtBQUssR0FBSSxrQkFBMEMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvRCxNQUFNLE1BQU0sR0FBSSxJQUFJLENBQUMsbUJBQTJDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEUsSUFBSSxLQUFLLElBQUksTUFBTTtnQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxNQUFNO1lBQUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO1FBQzFELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxVQUFVLENBQUMsa0JBQXNDLEVBQUUsWUFBcUI7UUFDcEUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO1FBQzlDLElBQUksYUFBYSxHQUFhLEVBQUUsQ0FBQztRQUNqQyxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUN4RCxDQUFDLENBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFrQjtZQUNuRixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUUzQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1lBQ2pELE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDMUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNULGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLENBQUM7cUJBQU0sQ0FBQztvQkFDSixxRUFBcUU7Z0JBQ3pFLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEYsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxrQkFBdUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CO1lBQUUsT0FBTztRQUNyQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNoRSxJQUFJLGFBQWEsR0FBYSxFQUFFLENBQUM7UUFDakMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDeEQsQ0FBQyxDQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBa0I7WUFDbkYsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFM0IscUJBQXFCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtZQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQzFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDbkMsd0RBQXdEO2dCQUN4RCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDMUQsMENBQTBDO2dCQUMxQyxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNULGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLENBQUM7cUJBQU0sQ0FBQztvQkFDSixtRUFBbUU7Z0JBQ3ZFLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEYsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekMsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQW1CO1FBQ2xDLE1BQU0sT0FBTyxHQUFhLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNwRyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxVQUF5QjtRQUMxRCxJQUFJLGFBQWEsR0FBYSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUN6RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNyQyxJQUFJLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ3JDLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6QyxJQUFJO0lBQ1IsQ0FBQztJQUVELGFBQWEsQ0FBQyxpQkFBc0I7UUFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQzdDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7WUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUMxQyxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUE7WUFDM0I7Ozs7OztpQkFNSztZQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDL0Isa0JBQWtCO2dCQUN0QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSSxzQkFBc0IsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUMzQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLGFBQWEsQ0FBaUMsQ0FBQztRQUN6RixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFDaEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzt3R0F2S1EsY0FBYzs0R0FBZCxjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudEluamVjdG9yLCBpbmplY3QsIEluamVjdGFibGUsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsdGVyLCBGaWx0ZXJGYWN0b3J5IH0gZnJvbSAnLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7IERlZmF1bHRGaWx0ZXIsIEZpbHRlckVsZW1lbnQsIFBhZ2luYXRpb25TZXR0aW5ncywgRmlsdGVyVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFByaWNlUmFuZ2VGaWx0ZXIgfSBmcm9tICcuLi9jbGFzc2VzL2ZpbHRlcnMvcHJpY2VfcmFuZ2UtZmlsdGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyc1NlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcbiAgICBwcml2YXRlIF9maWx0ZXJzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcclxuICAgIHB1YmxpYyBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxGaWx0ZXJbXT4gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIF9hcGlVcmxTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XHJcbiAgICBwdWJsaWMgYXBpVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5fYXBpVXJsU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWFkeVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHJlYWR5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX3JlYWR5U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3RvcilcclxuXHJcbiAgICBwcml2YXRlIF9vcHRpb25zRmlsdGVyczogKEZpbHRlclR5cGUgfCAnYWxsJylbXSA9IFsnYWxsJ107XHJcbiAgICBwcml2YXRlIF9kZWZhdWx0RmlsdGVyczogRGVmYXVsdEZpbHRlcltdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvblNldHRpbmdzOiBQYWdpbmF0aW9uU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICcnLFxyXG4gICAgICAgIGxpbWl0OiAwXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgX2ZpbHRlcnNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIC8vdGhpcy5fZGVmYXVsdEZpbHRlcnMgPSB0aGlzLl9jb25zdHMuZ2V0RGVmYXVsdEZpbHRlcnMoKVxyXG4gICAgfVxyXG5cclxuICAgIC8vQVBJIFVSTFxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIGxhIHVybCBwYXJhIGVsIGZpbHRyYWRvXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVycyBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcm9kdWN0c0ZpbHRlckFwaShmaWx0ZXJzID0gJycpIHsgcmV0dXJuICdzaG9wLWFwaS8nICsgdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwgKyAnL3Byb2R1Y3Qtc2VhcmNoLycgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRSArIGZpbHRlcnMgfTtcclxuICAgIC8qKlxyXG4gICAgICogQXJtYSBsb3MgZmlsdHJvcyB5IHJldG9ybmEgbGEgdXJsIGNvbXBsZXRhIGNvbiBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXHJcbiAgICAgKiBAcGFyYW0gc2VhcmNoX3ZhbHVlIHZhbG9yIGEgYnVzY2FyXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVGaW5hbEFwaShzZWFyY2hfdmFsdWU/OiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZXh0cmFfcGFyYW1zID0gJyc7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IGZpbHRlci50b1VybFBhcmFtcygpO1xyXG4gICAgICAgICAgICBleHRyYS5zcGxpdCgnPScpWzFdICE9ICcnID8gZXh0cmFfcGFyYW1zICs9IGV4dHJhIDogbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChzZWFyY2hfdmFsdWUpIGV4dHJhX3BhcmFtcyArPSAoJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWUpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0c0ZpbHRlckFwaShleHRyYV9wYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNVcGRhdGVkKHBhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzKSB7XHJcbiAgICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhwYWdpbmF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgIGxldCBjaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHBhZ2luYXRpb25TZXR0aW5ncyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZTIgPSAodGhpcy5fcGFnaW5hdGlvblNldHRpbmdzIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZTIpIGNoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoY2hhbmdlKSB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgPSBwYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRGaWx0ZXJzKHBhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzLCBzZWFyY2hfdmFsdWU/OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgPSBwYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgbGV0IGZpbHRlcnNUb1Byb2Nlc3MgPSB0aGlzLl9vcHRpb25zRmlsdGVycz8uaW5jbHVkZXMoJ2FsbCcpXHJcbiAgICAgICAgICAgID8gKFsnYXR0cmlidXRlcycsICdjYXRlZ29yaWVzJywgJ2R5bmFtaWNzJywgJ3NvcnQnLCAncHJpY2VfcmFuZ2UnXSBhcyBGaWx0ZXJUeXBlW10pXHJcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc0ZpbHRlcnM7XHJcblxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIGZpbHRlcnNUb1Byb2Nlc3M/LmZvckVhY2goZmlsdGVyVHlwZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJGYWN0b3J5LmNyZWF0ZShmaWx0ZXJUeXBlLCBwYWdpbmF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsX2ZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oYOKdjCBGYWlsZWQgdG8gY3JlYXRlIGZpbHRlciBmb3IgdHlwZTogJHtmaWx0ZXJUeXBlfWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLl9kZWZhdWx0RmlsdGVycz8uZm9yRWFjaChmaWx0ZXJEZWZhdWx0ID0+IHtcclxuICAgICAgICAgICAgbGV0IGZpbHRlciA9IGZpbmFsX2ZpbHRlcnMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSBmaWx0ZXJEZWZhdWx0LmZpbHRlcl90eXBlKTtcclxuICAgICAgICAgICAgZmlsdGVyICYmIGZpbHRlckRlZmF1bHQuY29kZXMuZm9yRWFjaCh2YWx1ZSA9PiBmaWx0ZXIuc2V0U2VsZWN0ZWQodmFsdWUpKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVycyhwYWdpbmF0aW9uU2V0dGluZ3M/OiBQYWdpbmF0aW9uU2V0dGluZ3MpIHtcclxuICAgICAgICBpZiAodGhpcy5fZmlsdGVyc0luaXRpYWxpemVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IHBhZ2luYXRpb25TZXR0aW5ncyB8fCB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgbGV0IGZpbHRlcnNUb1Byb2Nlc3MgPSB0aGlzLl9vcHRpb25zRmlsdGVycz8uaW5jbHVkZXMoJ2FsbCcpXHJcbiAgICAgICAgICAgID8gKFsnYXR0cmlidXRlcycsICdjYXRlZ29yaWVzJywgJ2R5bmFtaWNzJywgJ3NvcnQnLCAncHJpY2VfcmFuZ2UnXSBhcyBGaWx0ZXJUeXBlW10pXHJcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc0ZpbHRlcnM7XHJcblxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIGZpbHRlcnNUb1Byb2Nlc3M/LmZvckVhY2goZmlsdGVyVHlwZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQ3JlYXRpbmcgZmlsdGVyIGZvciB0eXBlOicsIGZpbHRlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gZmlsdGVyRmFjdG9yeS5jcmVhdGUoZmlsdGVyVHlwZSwgc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0NyZWF0ZWQgZmlsdGVyOicsIGZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmluYWxfZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgZm9yIHR5cGU6ICR7ZmlsdGVyVHlwZX1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2RlZmF1bHRGaWx0ZXJzPy5mb3JFYWNoKGZpbHRlckRlZmF1bHQgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlckRlZmF1bHQuZmlsdGVyX3R5cGUpO1xyXG4gICAgICAgICAgICBmaWx0ZXIgJiYgZmlsdGVyRGVmYXVsdC5jb2Rlcy5mb3JFYWNoKHZhbHVlID0+IGZpbHRlci5zZXRTZWxlY3RlZCh2YWx1ZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsX2ZpbHRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3BlY2lmaWNGaWx0ZXJzKHR5cGVzOiBGaWx0ZXJUeXBlW10pOiBGaWx0ZXJbXSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZS5maWx0ZXIoZmlsdGVyID0+IHR5cGVzLmluY2x1ZGVzKGZpbHRlci50eXBlKCkpKVxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEZpbHRlclNlbGVjdGVkKGZpbHRlck9iajogRmlsdGVyLCBmaWx0ZXJFbGVtOiBGaWx0ZXJFbGVtZW50KSB7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWU7XHJcbiAgICAgICAgaWYgKGZpbHRlck9iai50eXBlKCkgIT09ICdwcmljZV9yYW5nZScpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gZmluYWxfZmlsdGVycy5maW5kSW5kZXgoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyT2JqLnR5cGUoKSk7XHJcbiAgICAgICAgICAgIGZpbmFsX2ZpbHRlcnNbaW5kZXhdLnNldFNlbGVjdGVkKGZpbHRlckVsZW0sIGZpbHRlckVsZW0udmFsdWUgfHwgZmlsdGVyRWxlbS5jb2RlKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coaW5kZXgsIGZpbmFsX2ZpbHRlcnMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUZpbHRlcnMocGFnaW5hdGlvbkZpbHRlcnM6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNsYXZlcyA9IE9iamVjdC5rZXlzKHBhZ2luYXRpb25GaWx0ZXJzKVxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcjogRmlsdGVyW10gPSBbXVxyXG4gICAgICAgICAgICAvKiBjbGF2ZXMuZm9yRWFjaCgoa2V5OmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1c2goZmlsdGVyRmFjdG9yeS5jcmVhdGUoa2V5KSlcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25GaWx0ZXJzW2tleV0uZm9yRWFjaCgodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbHRlclswXS5jcmVhdGVFbGVtZW50KHZhbHVlLHBhZ2luYXRpb25GaWx0ZXJzW2tleV0pKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KSAqL1xyXG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZS5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSgpID09IFwiYXR0cmlidXRlc1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy92YWx1ZS5kYXRhID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiBBY3R1YWxpemEgaW50ZXJuYW1lbnRlIGVsIHJhbmdvIGRlIHByZWNpbyB5IHJlLWVtaXRlIFxyXG4gICAgICogZWwgYXJyYXkgZGUgZmlsdHJvcyBwYXJhIHF1ZSBQYWdpbmF0aW9uU2VydmljZSB2dWVsdmEgYSBsbGFtYXIgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGRhdGVQcmljZVJhbmdlRmlsdGVyKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBjb25zdCBwciA9IGZpbHRlcnMuZmluZChmID0+IGYudHlwZSgpID09PSAncHJpY2VfcmFuZ2UnKSBhcyBQcmljZVJhbmdlRmlsdGVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICghcHIpIHJldHVybjtcclxuICAgICAgICBwci5zZXRTZWxlY3RlZChtaW4sIG1heCk7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChbLi4uZmlsdGVyc10pO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyBleHBvcnQgdHlwZSBGaWx0ZXJUeXBlID0gJ2F0dHJpYnV0ZXMnIHwgJ2NhdGVnb3JpZXMnIHwgJ2R5bmFtaWNzJyB8ICdzb3J0JyB8ICdwcmljZV9yYW5nZSc7IC8vIFVzZSBpbXBvcnRlZCBGaWx0ZXJUeXBlIGluc3RlYWRcclxuIl19
|
|
@@ -25,7 +25,9 @@ export class PaginationService {
|
|
|
25
25
|
pages: 0,
|
|
26
26
|
total: 0,
|
|
27
27
|
items: [],
|
|
28
|
-
called: false
|
|
28
|
+
called: false,
|
|
29
|
+
price_max: 0,
|
|
30
|
+
price_min: 0
|
|
29
31
|
});
|
|
30
32
|
_waiting = false;
|
|
31
33
|
_finished = false;
|
|
@@ -83,10 +85,10 @@ export class PaginationService {
|
|
|
83
85
|
this._finished = (response.page == response.pages);
|
|
84
86
|
this._waiting = false;
|
|
85
87
|
// Emitir los valores de price_min y price_max a través de priceRangeSubject
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
this.priceRangeSubject.next({
|
|
89
|
+
price_min: response.price_min,
|
|
90
|
+
price_max: response.price_max
|
|
91
|
+
});
|
|
90
92
|
}
|
|
91
93
|
/**
|
|
92
94
|
* Marca el final de las paginas, es decir cuando ya no queda mas elementos que mostrar.
|
|
@@ -142,7 +144,6 @@ export class PaginationService {
|
|
|
142
144
|
* @returns
|
|
143
145
|
*/
|
|
144
146
|
buildUrl(filters) {
|
|
145
|
-
console.log('entra aqui');
|
|
146
147
|
if (this._constants.searchValue) {
|
|
147
148
|
return this._filtersService.generateFinalApi(this._constants.searchValue);
|
|
148
149
|
}
|
|
@@ -174,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
174
175
|
providedIn: 'root'
|
|
175
176
|
}]
|
|
176
177
|
}], ctorParameters: () => [] });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBQ3BEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFFckIsa0JBQWtCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xFLGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3hELFVBQVUsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDakUsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDMUQsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUNoRCxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFH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QUFDO1lBQzFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQzt3R0E3S1csaUJBQWlCOzRHQUFqQixpQkFBaUIsY0FGakIsTUFBTTs7NEZBRU4saUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBhZ2luYXRpb24sIFByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuL2ZpbHRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBwYXJhIG1hbmVqYXIgbGEgcGFnaW5hY2nDs24gZGUgbG9zIHByb2R1Y3Rvcy5cclxuICogQGNsYXNzIFBhZ2luYXRpb25TZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uU2VydmljZSB7XHJcblxyXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb25TZXJ2aWNlOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNTZXJ2aWNlKVxyXG5cdHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHB1YmxpYyBwYWdpbmF0aW9uRGF0YSQgPSB0aGlzLl9maWx0ZXJzU2VydmljZS5maWx0ZXJzJC5waXBlKFxyXG5cdFx0c2hhcmVSZXBsYXkoMSksXHJcblx0XHRmaWx0ZXIoZmlsdGVycyA9PiBmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoID4gMCksXHJcblx0XHRzd2l0Y2hNYXAoKGZpbHRlcnMpID0+IHtcclxuXHRcdFx0Y29uc3QgdXJsID0gdGhpcy5idWlsZFVybChmaWx0ZXJzKTtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YSh1cmwpO1xyXG5cdFx0fSlcclxuXHQpXHJcblxyXG5cdHByaXZhdGUgX2RhdGFQYWdpbmF0aW9uOiBhbnkgPSBzaWduYWw8UGFnaW5hdGlvbj4oe1xyXG5cdFx0YXR0cmlidXRlczogW10sXHJcblx0XHRjYXRlZ29yeTogW10sXHJcblx0XHRvcHRpb25zOiBbXSxcclxuXHRcdGxpbWl0OiAwLFxyXG5cdFx0cGFnZTogMCxcclxuXHRcdHBhZ2VzOiAwLFxyXG5cdFx0dG90YWw6IDAsXHJcblx0XHRpdGVtczogW10sXHJcblx0XHRjYWxsZWQ6IGZhbHNlXHJcblx0fSk7XHJcblxyXG5cdHByaXZhdGUgX3dhaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwcml2YXRlIF9maW5pc2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2FwaVVybDogc3RyaW5nID0gJyc7XHJcblx0cHJpdmF0ZSBfc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfbmV4dFByb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4oW10pO1xyXG5cdHB1YmxpYyBuZXh0UHJvZHVjdHMkID0gdGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHJpdmF0ZSBfcmVzZXRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwdWJsaWMgcmVzZXQkID0gdGhpcy5fcmVzZXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRwcml2YXRlIHByaWNlUmFuZ2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHByaWNlX21pbjogbnVtYmVyLCBwcmljZV9tYXg6IG51bWJlciB9Pih7IHByaWNlX21pbjogMCwgcHJpY2VfbWF4OiAwIH0pO1xyXG5cdHB1YmxpYyBwcmljZVJhbmdlJCA9IHRoaXMucHJpY2VSYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0XHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5pY2lhbGl6YSBsYSBjb25maWd1cmFjacOzbiBwYXJhIGVsIFNlcnZpY2lvIGRlIFBhZ2luYWNpw7NuLlxyXG5cdCAqIEBwYXJhbSBhcGlVcmwgVXJsIGNvbiBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuIFxyXG5cdCAqIEBwYXJhbSBsaW1pdCBsaW1pdGUgZGUgcHJvZHVjdG9zIGVuIGNhZGEgcGV0aWNpw7NuLlxyXG5cdCAqL1xyXG5cdGluaXRpYWxpemUoYXBpVXJsOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKSB7XHJcblx0XHQvL2NvbnNvbGUubG9nKGFwaVVybClcclxuXHRcdHRoaXMuX2FwaVVybCA9IGFwaVVybDtcclxuXHRcdHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQgPSBsaW1pdCB8fCB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbWl0IHx8IDEwO1xyXG5cdFx0dGhpcy5fZmluaXNoZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMuX3N0YXJ0ID0gdHJ1ZTtcclxuXHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gbG9zIGRhdG9zIGRlIGxhIHNpZ3VpZW50ZSBww6FnaW5hLlxyXG5cdCAqIEBwYXJhbSBuZXh0IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldE5leHQobmV4dD86IGFueSk6IGJvb2xlYW4ge1xyXG5cdFx0dGhpcy5fd2FpdGluZyA9IHRydWU7XHJcblx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG5cdFx0dGhpcy5fYXBpVXJsID0gdGhpcy5fYXBpVXJsLnJlcGxhY2UoJyUyMCcsICcgJyk7Ly8gbWFzIHBhcmEgY3VhbmRvIGVzIHVuIHNlYXJjaCB2YWx1ZS5cclxuXHRcdGxldCBuZXh0UHJvZHVjdHM7XHJcblx0XHRpZiAodGhpcy5fc3RhcnQpIHtcclxuXHRcdFx0bmV4dFByb2R1Y3RzID0gdGhpcy5fY29ubmVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuX2FwaVVybCwgeyBsaW1pdDogdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW1pdCwgcGFnZTogMSB9KVxyXG5cdFx0XHR0aGlzLl9zdGFydCA9IGZhbHNlXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRuZXh0UHJvZHVjdHMgPSB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5nZXQodGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW5rcy5uZXh0LnNsaWNlKDEpKTtcclxuXHRcdH1cclxuXHJcblx0XHQhdGhpcy5fZmluaXNoZWQgJiYgbmV4dFByb2R1Y3RzLnN1YnNjcmliZShcclxuXHRcdFx0KHJlc3BvbnNlOiBQYWdpbmF0aW9uKSA9PiB7XHJcblx0XHRcdFx0cmVzcG9uc2UubGlua3MgPyB0aGlzLnVwZGF0ZVBhZ2VEYXRhKHJlc3BvbnNlKSA6IHRoaXMuZmluaXNoKHJlc3BvbnNlKVxyXG5cdFx0XHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChyZXNwb25zZS5pdGVtcyk7XHJcblx0XHRcdH1cclxuXHRcdClcclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbG9zIGRhdG9zIGRlIGxhIHBhZ2luYS5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgcmVzcHVlc3RhIGRlbCBiYWNrZW5kIG8gb2JqZWN0byBkZWwgdGlwbyBgUGFnaW5hdGlvbmAuXHJcblx0ICovXHJcblx0dXBkYXRlUGFnZURhdGEocmVzcG9uc2U6IFBhZ2luYXRpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuX2RhdGFQYWdpbmF0aW9uLnNldCh7IC4uLnJlc3BvbnNlLCBjYWxsZWQ6IHRydWUgfSlcclxuXHRcdHRoaXMuX2ZpbmlzaGVkID0gKHJlc3BvbnNlLnBhZ2UgPT0gcmVzcG9uc2UucGFnZXMpXHJcblx0XHR0aGlzLl93YWl0aW5nID0gZmFsc2U7XHJcblx0XHQgLy8gRW1pdGlyIGxvcyB2YWxvcmVzIGRlIHByaWNlX21pbiB5IHByaWNlX21heCBhIHRyYXbDqXMgZGUgcHJpY2VSYW5nZVN1YmplY3RcclxuICAgICAgICAvLyB0aGlzLnByaWNlUmFuZ2VTdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgIC8vICAgICBwcmljZV9taW46IHJlc3BvbnNlLnByaWNlX21pbixcclxuICAgICAgICAvLyAgICAgcHJpY2VfbWF4OiByZXNwb25zZS5wcmljZV9tYXhcclxuICAgICAgICAvLyB9KTtcclxuXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hcmNhIGVsIGZpbmFsIGRlIGxhcyBwYWdpbmFzLCBlcyBkZWNpciBjdWFuZG8geWEgbm8gcXVlZGEgbWFzIGVsZW1lbnRvcyBxdWUgbW9zdHJhci5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgXHJcblx0ICovXHJcblx0ZmluaXNoKHJlc3BvbnNlOiBQYWdpbmF0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLl9maW5pc2hlZCA9IHRydWU7XHJcblx0XHR0aGlzLl93YWl0aW5nID0gZmFsc2U7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gbG9zIHByb2R1Y3RvcyBkZSBsYSBwYWdpbmEgY2FyZ2FkYSBhY3R1YWwuIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXROZXh0UHJvZHVjdHMoKTogUHJvZHVjdFtdIHtcclxuXHRcdHJldHVybiB0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0LnZhbHVlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBzaSBlc3RhIGVzcGVyYW5kbyBvIG5vIGxhIHBldGljacOzbiBhbCBiYWNrZW5kLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRXYWl0aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fd2FpdGluZzsgfVxyXG5cdC8qKlxyXG5cdCAqIFNldGVhIGxhIHZhcmlhYmxlIHdhaXRpbmcuXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRXYWl0aW5nKHZhbHVlOiBib29sZWFuKTogdm9pZCB7IHRoaXMuX3dhaXRpbmcgPSB2YWx1ZSB9XHJcblx0LyoqXHJcblx0ICogR2V0dGVyIHBhcmEgbGEgdmFyaWFibGUgYF9maW5pc2hlZGAuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldEZpbmlzaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZmluaXNoZWQ7IH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBlbCB0b3RhbCBkZSBJdGVtcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VG90YWxJdGVtcygpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQgKiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLnBhZ2U7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gdW4gb2JqZWN0byBjb24gbG9zIGRhdG9zIGRlIGxvcyBmaWx0cm9zIHJlc3VsdGFudGVzLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRGaWx0ZXJzUGFnaW5hdGlvbigpOiBhbnkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0XCJjYXRlZ29yaWVzXCI6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkuY2F0ZWdvcnksXHJcblx0XHRcdFwiYXR0cmlidXRlc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmF0dHJpYnV0ZXMsXHJcblx0XHRcdFwib3B0aW9uc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLm9wdGlvbnNcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogUGFyYSBjb250cnVpc3RlIGxhIHVybCBlbiBiYXNlIGEgbG9zIGZpbHRyb3MgYXBsaWNhZG9zLlxyXG5cdCAqIEBwYXJhbSBmaWx0ZXJzIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBidWlsZFVybChmaWx0ZXJzOiBGaWx0ZXJbXSkge1xyXG5cdFx0Y29uc29sZS5sb2coJ2VudHJhIGFxdWknKVxyXG5cdFx0aWYgKHRoaXMuX2NvbnN0YW50cy5zZWFyY2hWYWx1ZSl7XHJcblx0XHRcdHJldHVybiB0aGlzLl9maWx0ZXJzU2VydmljZS5nZW5lcmF0ZUZpbmFsQXBpKHRoaXMuX2NvbnN0YW50cy5zZWFyY2hWYWx1ZSk7XHJcblx0XHR9IGVsc2V7XHJcblx0XHRcdHJldHVybiB0aGlzLl9maWx0ZXJzU2VydmljZS5nZW5lcmF0ZUZpbmFsQXBpKCk7XHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgdW4gb2JzZXJ2YWJsZSBkZSBsb3MgcHJvZHVjdG9zIHF1ZSBkZXZvbHZpbyBsYSDDumx0aW1hIHDDoWdpbmEgb2J0ZW5pZGEuXHJcblx0ICogQHBhcmFtIHVybCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0RGF0YSh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHR0aGlzLl9yZXNldFN1YmplY3QubmV4dCh0cnVlKTtcclxuXHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcblx0XHR0aGlzLl9jb25uZWN0aW9uU2VydmljZS5nZXQodXJsLCB7IGxpbWl0OiAxMCwgcGFnZTogMSB9KS5waXBlKFxyXG5cdFx0XHRtYXAocmVzID0+eyBcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQocmVzLml0ZW1zKTtcclxuXHRcdFx0XHRyZXMubGlua3MgPyB0aGlzLnVwZGF0ZVBhZ2VEYXRhKHJlcykgOiB0aGlzLmZpbmlzaChyZXMpXHJcblx0XHRcdH0pKS5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5uZXh0UHJvZHVjdHMkO1xyXG5cdH1cclxufVxyXG5cclxuIl19
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBQ3BEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFFckIsa0JBQWtCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xFLGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3hELFVBQVUsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFakUsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDMUQsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUNoRCxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFH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QkFBa0I7WUFDbEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMzQixDQUFDO3dHQS9LVyxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQUZqQixNQUFNOzs0RkFFTixpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvbiwgUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHBhcmEgbWFuZWphciBsYSBwYWdpbmFjacOzbiBkZSBsb3MgcHJvZHVjdG9zLlxyXG4gKiBAY2xhc3MgUGFnaW5hdGlvblNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25TZXJ2aWNlIHtcclxuXHJcblx0cHJpdmF0ZSBfY29ubmVjdGlvblNlcnZpY2U6IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9maWx0ZXJzU2VydmljZTogRmlsdGVyc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc1NlcnZpY2UpXHJcblx0cHJpdmF0ZSBfY29uc3RhbnRzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcblx0XHJcblx0cHVibGljIHBhZ2luYXRpb25EYXRhJCA9IHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLmZpbHRlcnMkLnBpcGUoXHJcblx0XHRzaGFyZVJlcGxheSgxKSxcclxuXHRcdGZpbHRlcihmaWx0ZXJzID0+IGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPiAwKSxcclxuXHRcdHN3aXRjaE1hcCgoZmlsdGVycykgPT4ge1x0XHRcdFxyXG5cdFx0XHRjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKGZpbHRlcnMpO1x0XHRcdFxyXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXREYXRhKHVybCk7XHJcblx0XHR9KVxyXG5cdClcclxuXHJcblx0cHJpdmF0ZSBfZGF0YVBhZ2luYXRpb246IGFueSA9IHNpZ25hbDxQYWdpbmF0aW9uPih7XHJcblx0XHRhdHRyaWJ1dGVzOiBbXSxcclxuXHRcdGNhdGVnb3J5OiBbXSxcclxuXHRcdG9wdGlvbnM6IFtdLFxyXG5cdFx0bGltaXQ6IDAsXHJcblx0XHRwYWdlOiAwLFxyXG5cdFx0cGFnZXM6IDAsXHJcblx0XHR0b3RhbDogMCxcclxuXHRcdGl0ZW1zOiBbXSxcclxuXHRcdGNhbGxlZDogZmFsc2UsXHJcblx0XHRwcmljZV9tYXg6IDAsXHJcblx0XHRwcmljZV9taW46IDBcclxuXHR9KTtcclxuXHJcblx0cHJpdmF0ZSBfd2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2ZpbmlzaGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBfYXBpVXJsOiBzdHJpbmcgPSAnJztcclxuXHRwcml2YXRlIF9zdGFydDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRwcml2YXRlIF9uZXh0UHJvZHVjdHNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8UHJvZHVjdFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJvZHVjdFtdPihbXSk7XHJcblx0cHVibGljIG5leHRQcm9kdWN0cyQgPSB0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRwcml2YXRlIF9yZXNldFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHB1YmxpYyByZXNldCQgPSB0aGlzLl9yZXNldFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHByaXZhdGUgcHJpY2VSYW5nZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgcHJpY2VfbWluOiBudW1iZXIsIHByaWNlX21heDogbnVtYmVyIH0+KHsgcHJpY2VfbWluOiAwLCBwcmljZV9tYXg6IDAgfSk7XHJcblx0cHVibGljIHByaWNlUmFuZ2UkID0gdGhpcy5wcmljZVJhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRcclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmljaWFsaXphIGxhIGNvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgU2VydmljaW8gZGUgUGFnaW5hY2nDs24uXHJcblx0ICogQHBhcmFtIGFwaVVybCBVcmwgY29uIGxvcyBmaWx0cm9zIGFwbGljYWRvcy4gXHJcblx0ICogQHBhcmFtIGxpbWl0IGxpbWl0ZSBkZSBwcm9kdWN0b3MgZW4gY2FkYSBwZXRpY2nDs24uXHJcblx0ICovXHJcblx0aW5pdGlhbGl6ZShhcGlVcmw6IHN0cmluZywgbGltaXQ/OiBudW1iZXIpIHtcclxuXHRcdC8vY29uc29sZS5sb2coYXBpVXJsKVxyXG5cdFx0dGhpcy5fYXBpVXJsID0gYXBpVXJsO1xyXG5cdFx0dGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW1pdCA9IGxpbWl0IHx8IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQgfHwgMTA7XHJcblx0XHR0aGlzLl9maW5pc2hlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5fc3RhcnQgPSB0cnVlO1xyXG5cdFx0dGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5uZXh0KFtdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0ZW5nbyBsb3MgZGF0b3MgZGUgbGEgc2lndWllbnRlIHDDoWdpbmEuXHJcblx0ICogQHBhcmFtIG5leHQgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0TmV4dChuZXh0PzogYW55KTogYm9vbGVhbiB7XHJcblx0XHR0aGlzLl93YWl0aW5nID0gdHJ1ZTtcclxuXHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcblx0XHR0aGlzLl9hcGlVcmwgPSB0aGlzLl9hcGlVcmwucmVwbGFjZSgnJTIwJywgJyAnKTsvLyBtYXMgcGFyYSBjdWFuZG8gZXMgdW4gc2VhcmNoIHZhbHVlLlxyXG5cdFx0bGV0IG5leHRQcm9kdWN0cztcclxuXHRcdGlmICh0aGlzLl9zdGFydCkge1xyXG5cdFx0XHRuZXh0UHJvZHVjdHMgPSB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5nZXQodGhpcy5fYXBpVXJsLCB7IGxpbWl0OiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbWl0LCBwYWdlOiAxIH0pXHJcblx0XHRcdHRoaXMuX3N0YXJ0ID0gZmFsc2VcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG5leHRQcm9kdWN0cyA9IHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlLmdldCh0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbmtzLm5leHQuc2xpY2UoMSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdCF0aGlzLl9maW5pc2hlZCAmJiBuZXh0UHJvZHVjdHMuc3Vic2NyaWJlKFxyXG5cdFx0XHQocmVzcG9uc2U6IFBhZ2luYXRpb24pID0+IHtcclxuXHRcdFx0XHRyZXNwb25zZS5saW5rcyA/IHRoaXMudXBkYXRlUGFnZURhdGEocmVzcG9uc2UpIDogdGhpcy5maW5pc2gocmVzcG9uc2UpXHJcblx0XHRcdFx0dGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5uZXh0KHJlc3BvbnNlLml0ZW1zKTtcclxuXHRcdFx0fVxyXG5cdFx0KVxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFjdHVhbGl6YSBsb3MgZGF0b3MgZGUgbGEgcGFnaW5hLlxyXG5cdCAqIEBwYXJhbSByZXNwb25zZSByZXNwdWVzdGEgZGVsIGJhY2tlbmQgbyBvYmplY3RvIGRlbCB0aXBvIGBQYWdpbmF0aW9uYC5cclxuXHQgKi9cclxuXHR1cGRhdGVQYWdlRGF0YShyZXNwb25zZTogUGFnaW5hdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5fZGF0YVBhZ2luYXRpb24uc2V0KHsgLi4ucmVzcG9uc2UsIGNhbGxlZDogdHJ1ZSB9KVxyXG5cdFx0dGhpcy5fZmluaXNoZWQgPSAocmVzcG9uc2UucGFnZSA9PSByZXNwb25zZS5wYWdlcylcclxuXHRcdHRoaXMuX3dhaXRpbmcgPSBmYWxzZTtcclxuXHRcdCAvLyBFbWl0aXIgbG9zIHZhbG9yZXMgZGUgcHJpY2VfbWluIHkgcHJpY2VfbWF4IGEgdHJhdsOpcyBkZSBwcmljZVJhbmdlU3ViamVjdFxyXG4gICAgICAgIHRoaXMucHJpY2VSYW5nZVN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgICAgIHByaWNlX21pbjogcmVzcG9uc2UucHJpY2VfbWluLFxyXG4gICAgICAgICAgICBwcmljZV9tYXg6IHJlc3BvbnNlLnByaWNlX21heFxyXG4gICAgICAgIH0pO1xyXG5cclxuXHR9XHJcblx0LyoqXHJcblx0ICogTWFyY2EgZWwgZmluYWwgZGUgbGFzIHBhZ2luYXMsIGVzIGRlY2lyIGN1YW5kbyB5YSBubyBxdWVkYSBtYXMgZWxlbWVudG9zIHF1ZSBtb3N0cmFyLlxyXG5cdCAqIEBwYXJhbSByZXNwb25zZSBcclxuXHQgKi9cclxuXHRmaW5pc2gocmVzcG9uc2U6IFBhZ2luYXRpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuX2ZpbmlzaGVkID0gdHJ1ZTtcclxuXHRcdHRoaXMuX3dhaXRpbmcgPSBmYWxzZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0ZW5nbyBsb3MgcHJvZHVjdG9zIGRlIGxhIHBhZ2luYSBjYXJnYWRhIGFjdHVhbC4gXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldE5leHRQcm9kdWN0cygpOiBQcm9kdWN0W10ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QudmFsdWU7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIHNpIGVzdGEgZXNwZXJhbmRvIG8gbm8gbGEgcGV0aWNpw7NuIGFsIGJhY2tlbmQuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldFdhaXRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl93YWl0aW5nOyB9XHJcblx0LyoqXHJcblx0ICogU2V0ZWEgbGEgdmFyaWFibGUgd2FpdGluZy5cclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIHNldFdhaXRpbmcodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5fd2FpdGluZyA9IHZhbHVlIH1cclxuXHQvKipcclxuXHQgKiBHZXR0ZXIgcGFyYSBsYSB2YXJpYWJsZSBgX2ZpbmlzaGVkYC5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0RmluaXNoZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9maW5pc2hlZDsgfVxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGVsIHRvdGFsIGRlIEl0ZW1zLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRUb3RhbEl0ZW1zKCk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW1pdCAqIHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkucGFnZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0ZW5nbyB1biBvYmplY3RvIGNvbiBsb3MgZGF0b3MgZGUgbG9zIGZpbHRyb3MgcmVzdWx0YW50ZXMuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldEZpbHRlcnNQYWdpbmF0aW9uKCk6IGFueSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcImNhdGVnb3JpZXNcIjogdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5jYXRlZ29yeSxcclxuXHRcdFx0XCJhdHRyaWJ1dGVzXCI6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkuYXR0cmlidXRlcyxcclxuXHRcdFx0XCJvcHRpb25zXCI6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkub3B0aW9uc1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBQYXJhIGNvbnRydWlzdGUgbGEgdXJsIGVuIGJhc2UgYSBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXHJcblx0ICogQHBhcmFtIGZpbHRlcnMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGJ1aWxkVXJsKGZpbHRlcnM6IEZpbHRlcltdKSB7XHRcdFxyXG5cdFx0aWYgKHRoaXMuX2NvbnN0YW50cy5zZWFyY2hWYWx1ZSl7XHJcblx0XHRcdHJldHVybiB0aGlzLl9maWx0ZXJzU2VydmljZS5nZW5lcmF0ZUZpbmFsQXBpKHRoaXMuX2NvbnN0YW50cy5zZWFyY2hWYWx1ZSk7XHJcblx0XHR9IGVsc2V7XHJcblx0XHRcdHJldHVybiB0aGlzLl9maWx0ZXJzU2VydmljZS5nZW5lcmF0ZUZpbmFsQXBpKCk7XHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgdW4gb2JzZXJ2YWJsZSBkZSBsb3MgcHJvZHVjdG9zIHF1ZSBkZXZvbHZpbyBsYSDDumx0aW1hIHDDoWdpbmEgb2J0ZW5pZGEuXHJcblx0ICogQHBhcmFtIHVybCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0RGF0YSh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHR0aGlzLl9yZXNldFN1YmplY3QubmV4dCh0cnVlKTtcclxuXHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcblx0XHR0aGlzLl9jb25uZWN0aW9uU2VydmljZS5nZXQodXJsLCB7IGxpbWl0OiAxMCwgcGFnZTogMSB9KS5waXBlKFxyXG5cdFx0XHRtYXAocmVzID0+eyBcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQocmVzLml0ZW1zKTtcclxuXHRcdFx0XHRyZXMubGlua3MgPyB0aGlzLnVwZGF0ZVBhZ2VEYXRhKHJlcykgOiB0aGlzLmZpbmlzaChyZXMpXHJcblx0XHRcdH0pKS5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5uZXh0UHJvZHVjdHMkO1xyXG5cdH1cclxufVxyXG5cclxuIl19
|
|
@@ -69,47 +69,62 @@ export class ProductDetailService {
|
|
|
69
69
|
this.variants.length > 0 ? this.generateAssociatedDataFromVariants() : this._toastService.show('selection-not-available');
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
* Actualiza el observable de `associatedData` el cual se utiliza para mostrar los datos
|
|
73
|
+
* en el frontend según el producto y/o variante elegida.
|
|
74
|
+
* Obtiene los datos de la variante y los formatea.
|
|
75
|
+
*/
|
|
76
76
|
generateAssociatedDataFromVariants() {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
associated.stock =
|
|
82
|
-
associated.price =
|
|
83
|
-
associated.saleprice =
|
|
84
|
-
associated.discount =
|
|
85
|
-
associated.properties =
|
|
86
|
-
associated.uniqueExternalCode =
|
|
87
|
-
associated.multipleQuantity =
|
|
77
|
+
const associated = {};
|
|
78
|
+
// Si sólo hay una variante, tomamos todos sus datos directamente
|
|
79
|
+
if (this.variants.length === 1) {
|
|
80
|
+
const v = this.variants[0];
|
|
81
|
+
associated.stock = v.stock;
|
|
82
|
+
associated.price = v.price.toString();
|
|
83
|
+
associated.saleprice = v.saleprice != null ? v.saleprice.toString() : undefined;
|
|
84
|
+
associated.discount = v.discount ?? undefined;
|
|
85
|
+
associated.properties = v.properties ? this.beautifyProperties(v.properties) : undefined;
|
|
86
|
+
associated.uniqueExternalCode = v.uniqueExternalCode ?? undefined;
|
|
87
|
+
associated.multipleQuantity = v.multipleQuantity ?? undefined;
|
|
88
|
+
// Límites de cantidad/stock
|
|
89
|
+
associated.maximumAmount = v.maximumAmount ?? 0;
|
|
90
|
+
associated.minimumAmount = v.minimumAmount ?? 0;
|
|
91
|
+
associated.maximumItemsQuantity = v.stock > 0 && 'maximumItemsQuantity' in v
|
|
92
|
+
? v.maximumItemsQuantity
|
|
93
|
+
: v.stock;
|
|
94
|
+
associated.minimumItemsQuantity = v.stock > 0 && 'minimumItemsQuantity' in v && v.minimumItemsQuantity > 0
|
|
95
|
+
? v.minimumItemsQuantity
|
|
96
|
+
: (v.multipleQuantity ?? 1);
|
|
97
|
+
// Precios al consumidor final
|
|
98
|
+
associated.finalConsumer = {
|
|
99
|
+
finalConsumerPrice: v.final_consumer_price,
|
|
100
|
+
originalFinalConsumerPrice: v.original_final_consumer_price
|
|
101
|
+
};
|
|
102
|
+
// Impuestos
|
|
103
|
+
associated.taxes = {
|
|
104
|
+
taxIncluded: v.taxIncluded,
|
|
105
|
+
taxCategory: v.taxCategory
|
|
106
|
+
};
|
|
107
|
+
associated.taxeAmount = v.taxes ?? undefined;
|
|
108
|
+
associated.taxRate = v.taxRate ?? undefined;
|
|
109
|
+
associated.priceWithoutTaxes = v.priceWithoutTaxes ?? undefined;
|
|
88
110
|
}
|
|
89
111
|
else {
|
|
112
|
+
// Si hay varias variantes, resumimos
|
|
90
113
|
associated.price = this.createPrice();
|
|
91
114
|
associated.saleprice = this.createSalePrice();
|
|
92
|
-
associated.stock =
|
|
115
|
+
associated.stock = this.variants.map(v => v.stock).reduce((a, b) => a + b, 0);
|
|
93
116
|
associated.discount = this.createDiscount();
|
|
94
117
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
finalConsumerPrice: this.variants[0]?.final_consumer_price,
|
|
106
|
-
originalFinalConsumerPrice: this.variants[0]?.original_final_consumer_price,
|
|
107
|
-
};
|
|
108
|
-
associated.taxes = {
|
|
109
|
-
taxIncluded: this.variants[0]?.taxIncluded,
|
|
110
|
-
taxCategory: this.variants[0]?.taxCategory,
|
|
111
|
-
};
|
|
112
|
-
//console.log(associated)
|
|
118
|
+
// Imagen principal
|
|
119
|
+
const first = this.variants[0];
|
|
120
|
+
if ('images' in first && first.images.length > 0) {
|
|
121
|
+
associated.picture = first.images[0];
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
associated.picture = this._associatedDataSubject.value?.picture
|
|
125
|
+
?? this._productSubject.value?.picturesdefault?.[0];
|
|
126
|
+
}
|
|
127
|
+
// Emitimos el objeto completo
|
|
113
128
|
this._associatedDataSubject.next(associated);
|
|
114
129
|
}
|
|
115
130
|
/**
|
|
@@ -282,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
282
297
|
providedIn: 'root'
|
|
283
298
|
}]
|
|
284
299
|
}], ctorParameters: () => [] });
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs3QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFaEQsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztJQUMxRCxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7SUFDL0Msc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekYsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsZUFBZSxHQUFHLElBQUksQ0FB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RyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNuRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFBO1lBQ25HLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUMsQ0FBQTt3R0F0UlEsb0JBQW9COzRHQUFwQixvQkFBb0IsY0FGcEIsTUFBTTs7NEZBRU4sb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9kdWN0c1NlcnZpY2UgfSBmcm9tICcuL3Byb2R1Y3RzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE9wdGlvbnMsIE9wdGlvblZhbHVlLCBQcm9kdWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4vdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi9jYXJ0LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERldGFpbFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgX3Byb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jYXJ0U2VydmljZTogQ2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIF9wcm9kdWN0U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJvZHVjdCB8IG51bGw+KHt9KTtcclxuXHRwcml2YXRlIF9vcHRpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XHJcblx0cHJpdmF0ZSBfYXNzb2NpYXRlZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHsgcHJpY2U6ICcnLCBzdG9jazogMCwgcGljdHVyZTogJycgfSk7XHJcblxyXG5cdHB1YmxpYyBwcm9kdWN0JCA9IHRoaXMuX3Byb2R1Y3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHB1YmxpYyBvcHRpb25zJCA9IHRoaXMuX29wdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHB1YmxpYyBhc3NvY2lhdGVkRGF0YSQgPSB0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHByaXZhdGUgdmFyaWFudHM6IGFueVtdID0gW11cclxuXHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHQvKipcclxuXHQgKiBPYnRlbmdvIGVsIHByb2R1Y3RvIGEgdHJhdmVzIGRlIHN1IGNvZGlnbyBlIGluaWNpYWxpem8gbGEgY29uZmlndXJhY2nDs25cclxuXHQgKiBkZWwgU2VydmljaW8uXHJcblx0ICogQHBhcmFtIGNvZGUgXHJcblx0ICogQHBhcmFtIHZhcmlhbnQgXHJcblx0ICovXHJcblx0bG9hZFByb2R1Y3QoY29kZTogc3RyaW5nLCB2YXJpYW50OiBib29sZWFuID0gZmFsc2UpIHtcclxuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX3Byb2R1Y3RzU2VydmljZS5nZXRQcm9kdWN0QnlDb2RlKGNvZGUsIHZhcmlhbnQpKVxyXG5cdFx0XHQudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdHZhcmlhbnQgPyB0aGlzLmluaXRpYWxpemUocmVzLCBjb2RlKSA6IHRoaXMuaW5pdGlhbGl6ZShyZXMpXHJcblx0XHRcdH0pXHJcblx0XHRcdC5jYXRjaChlcnIgPT4geyBjb25zb2xlLmxvZyhlcnIpOyB0aGlzLl9wcm9kdWN0U3ViamVjdC5uZXh0KG51bGwpIH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYXJnYSBlbCBwcm9kdWN0byBlbiBlbCBvYnNlcnZhYmxlIHkgbGEgY29uZmlndXJhY2nDs24gZGUgbGFzIHZhcmlhbnRlcy5cclxuXHQgKiBAcGFyYW0gcHJvZHVjdCBcclxuXHQgKiBAcGFyYW0gdmFyaWFudENvZGUgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpbml0aWFsaXplKHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmlhbnRDb2RlPzogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9wcm9kdWN0U3ViamVjdC5uZXh0KHByb2R1Y3QpO1xyXG5cdFx0Y29uc3QgYXV4OiBQcm9kdWN0WydvcHRpb25zJ10gPSBwcm9kdWN0Lm9wdGlvbnMgfHwgW107XHJcblx0XHRjb25zdCBvcHRpb25zID0gYXV4Py5tYXAob3B0aW9uID0+IHRoaXMudG9PcHRpb24ob3B0aW9uKSlcclxuXHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0Lm5leHQob3B0aW9ucyk7XHJcblx0XHR2YXJpYW50Q29kZSA/IHRoaXMudXBkYXRlVmFyaWFudHModmFyaWFudENvZGUpIDogdGhpcy51cGRhdGVWYXJpYW50cygpO1xyXG5cdFx0dGhpcy52YXJpYW50cy5sZW5ndGggJiYgdGhpcy5nZW5lcmF0ZUFzc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEZvcm1hdGUgbG9zIGRhdG9zIHBhcmEgbGFzIG9wY2lvbmVzIGRlbCBwcm9kdWN0by5cclxuXHQgKiBAcGFyYW0gb3B0aW9uIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgdG9PcHRpb24ob3B0aW9uOiBPcHRpb25zKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRuYW1lOiBvcHRpb24ubGFiZWwsXHJcblx0XHRcdGNvZGU6IG9wdGlvbi5jb2RlLFxyXG5cdFx0XHR0eXBlOiBvcHRpb24udHlwZSxcclxuXHRcdFx0dmFsdWVzOiBvcHRpb24udmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4gKHsgbmFtZTogdmFsdWUuY29kZSwgZGVzY3JpcHRpb246IHZhbHVlLm5hbWUsIGltYWdlOiB2YWx1ZS5pbWFnZSwgbW9iaWxlSW1hZ2U6IHZhbHVlLm1vYmlsZUltYWdlLCBzZWxlY3RlZDogZmFsc2UgfSkpXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDYW1iaWEgbGFzIG9wY2lvbmVzLCBvYnRpZW5lIGVsIHByb2R1Y3RvIGFzb2NpYWRvIGEgbGEgb3BjaW9uIGVsZWdpZGEuXHJcblx0ICovXHJcblx0c2V0T3B0aW9uKG9wdGlvbkNvZGU6IGFueSwgb3B0aW9uVmFsdWU6IGFueSkge1xyXG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnNTdWJqZWN0LnZhbHVlO1xyXG5cdFx0Y29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maW5kKChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQuY29kZSA9PSBvcHRpb25Db2RlKS52YWx1ZXMuZmluZCgodmFsdWU6IGFueSkgPT4gdmFsdWUubmFtZSA9PSBvcHRpb25WYWx1ZSk7XHJcblx0XHRvcHRpb24uc2VsZWN0ZWQgPSAhb3B0aW9uLnNlbGVjdGVkO1xyXG5cdFx0b3B0aW9ucy5maW5kKChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQuY29kZSA9PSBvcHRpb25Db2RlKS52YWx1ZXMuZm9yRWFjaChcclxuXHRcdFx0KHZhbHVlOiBhbnkpID0+IHsgaWYgKHZhbHVlLm5hbWUgIT0gb3B0aW9uLm5hbWUpIHZhbHVlLnNlbGVjdGVkID0gZmFsc2UgfVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0Lm5leHQob3B0aW9ucyk7XHJcblx0XHR0aGlzLnVwZGF0ZVZhcmlhbnRzKCk7XHJcblx0XHR0aGlzLnZhcmlhbnRzLmxlbmd0aCA+IDAgPyB0aGlzLmdlbmVyYXRlQXNzb2NpYXRlZERhdGFGcm9tVmFyaWFudHMoKSA6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdzZWxlY3Rpb24tbm90LWF2YWlsYWJsZScpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFjdHVhbGl6YSBlbCBvYnNlcnZhYmxlIGRlIGBhc3NvY2lhdGVkRGF0YWAgZWwgY3VhbCBzZSB1dGlsaXphIHBhcmEgbW9zdHJhciBsb3MgZGF0b3NcclxuXHQgKiBlbiBlbCBmcm9udGVuZCBzZWd1biBlbCBwcm9kdWN0byB5L28gdmFyaWFudGUgZWxlZ2lkYS5cclxuXHQgKiBPYnRpZW5lIGxvcyBkYXRvcyBkZSBsYSB2YXJpYW50ZSB5IGxvcyBmb3JtYXRlYS5cclxuXHQgKi9cclxuXHRnZW5lcmF0ZUFzc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCkge1xyXG5cdFx0bGV0IGFzc29jaWF0ZWQ6IGFueSA9IHt9O1xyXG5cdFx0aWYgKHRoaXMudmFyaWFudHMubGVuZ3RoID09IDEpIHtcclxuXHRcdFx0Y29uc3QgdmFyaWFudCA9IHRoaXMudmFyaWFudHNbMF07XHJcblx0XHRcdGNvbnNvbGUubG9nKHZhcmlhbnQpXHJcblx0XHRcdGFzc29jaWF0ZWQuc3RvY2sgPSB2YXJpYW50LnN0b2NrXHJcblx0XHRcdGFzc29jaWF0ZWQucHJpY2UgPSB2YXJpYW50LnByaWNlLnRvU3RyaW5nKCk7XHJcblx0XHRcdGFzc29jaWF0ZWQuc2FsZXByaWNlID0gdmFyaWFudC5zYWxlcHJpY2UgJiYgdmFyaWFudC5zYWxlcHJpY2UudG9TdHJpbmcoKSB8fCB1bmRlZmluZWQ7XHJcblx0XHRcdGFzc29jaWF0ZWQuZGlzY291bnQgPSB2YXJpYW50Py5kaXNjb3VudCB8fCB1bmRlZmluZWQ7XHJcblx0XHRcdGFzc29jaWF0ZWQucHJvcGVydGllcyA9IHZhcmlhbnQucHJvcGVydGllcyA/IHRoaXMuYmVhdXRpZnlQcm9wZXJ0aWVzKHZhcmlhbnQucHJvcGVydGllcykgOiB1bmRlZmluZWQ7XHJcblx0XHRcdGFzc29jaWF0ZWQudW5pcXVlRXh0ZXJuYWxDb2RlID0gdmFyaWFudD8udW5pcXVlRXh0ZXJuYWxDb2RlIHx8IHVuZGVmaW5lZDtcclxuXHRcdFx0YXNzb2NpYXRlZC5tdWx0aXBsZVF1YW50aXR5ID0gdmFyaWFudD8ubXVsdGlwbGVRdWFudGl0eSB8fCB1bmRlZmluZWQ7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRhc3NvY2lhdGVkLnByaWNlID0gdGhpcy5jcmVhdGVQcmljZSgpXHJcblx0XHRcdGFzc29jaWF0ZWQuc2FsZXByaWNlID0gdGhpcy5jcmVhdGVTYWxlUHJpY2UoKVxyXG5cdFx0XHRhc3NvY2lhdGVkLnN0b2NrID0gKHRoaXMudmFyaWFudHMubWFwKHZhcmlhbnQgPT4gdmFyaWFudC5zdG9jaykpLnJlZHVjZSgoYSwgYikgPT4gYSArIGIpXHJcblx0XHRcdGFzc29jaWF0ZWQuZGlzY291bnQgPSB0aGlzLmNyZWF0ZURpc2NvdW50KClcclxuXHRcdH1cclxuXHJcblx0XHQoJ2ltYWdlcycgaW4gdGhpcy52YXJpYW50c1swXSAmJiB0aGlzLnZhcmlhbnRzWzBdLmltYWdlcy5sZW5ndGggPiAwKVxyXG5cdFx0XHQ/IGFzc29jaWF0ZWQucGljdHVyZSA9IHRoaXMudmFyaWFudHNbMF0uaW1hZ2VzWzBdXHJcblx0XHRcdDogYXNzb2NpYXRlZC5waWN0dXJlID0gKHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZT8ucGljdHVyZSB8fCAodGhpcy5fcHJvZHVjdFN1YmplY3QudmFsdWUgJiYgdGhpcy5fcHJvZHVjdFN1YmplY3QudmFsdWU/LnBpY3R1cmVzZGVmYXVsdD8uWzBdIHx8IFtdKSk7XHJcblxyXG5cdFx0YXNzb2NpYXRlZC5tYXhpbXVtQW1vdW50ID0gdGhpcy52YXJpYW50c1swXT8ubWF4aW11bUFtb3VudCB8fCAwXHJcblx0XHRhc3NvY2lhdGVkLm1pbmltdW1BbW91bnQgPSB0aGlzLnZhcmlhbnRzWzBdPy5taW5pbXVtQW1vdW50IHx8IDBcclxuXHJcblx0XHRhc3NvY2lhdGVkLm1heGltdW1JdGVtc1F1YW50aXR5ID0gdGhpcy52YXJpYW50c1swXT8uc3RvY2sgPiAwICYmICdtYXhpbXVtSXRlbXNRdWFudGl0eScgaW4gdGhpcy52YXJpYW50c1swXSA/IHRoaXMudmFyaWFudHNbMF0/Lm1heGltdW1JdGVtc1F1YW50aXR5IDogdGhpcy52YXJpYW50c1swXT8uc3RvY2tcclxuXHRcdGFzc29jaWF0ZWQubWluaW11bUl0ZW1zUXVhbnRpdHkgPSB0aGlzLnZhcmlhbnRzWzBdPy5zdG9jayA+IDAgJiYgJ21pbmltdW1JdGVtc1F1YW50aXR5JyBpbiB0aGlzLnZhcmlhbnRzWzBdXHJcblx0XHRcdCYmIHRoaXMudmFyaWFudHNbMF0/Lm1pbmltdW1JdGVtc1F1YW50aXR5ID4gMCA/IHRoaXMudmFyaWFudHNbMF0/Lm1pbmltdW1JdGVtc1F1YW50aXR5XHJcblx0XHRcdDogKHRoaXMudmFyaWFudHNbMF0/Lm11bHRpcGxlUXVhbnRpdHkgPyB0aGlzLnZhcmlhbnRzWzBdPy5tdWx0aXBsZVF1YW50aXR5IDogMSlcclxuXHJcblx0XHRhc3NvY2lhdGVkLmZpbmFsQ29uc3VtZXIgPSB7XHJcblx0XHRcdGZpbmFsQ29uc3VtZXJQcmljZTogdGhpcy52YXJpYW50c1swXT8uZmluYWxfY29uc3VtZXJfcHJpY2UsXHJcblx0XHRcdG9yaWdpbmFsRmluYWxDb25zdW1lclByaWNlOiB0aGlzLnZhcmlhbnRzWzBdPy5vcmlnaW5hbF9maW5hbF9jb25zdW1lcl9wcmljZSxcclxuXHRcdH1cclxuXHRcdGFzc29jaWF0ZWQudGF4ZXMgPSB7XHJcblx0XHRcdHRheEluY2x1ZGVkOiB0aGlzLnZhcmlhbnRzWzBdPy50YXhJbmNsdWRlZCxcclxuXHRcdFx0dGF4Q2F0ZWdvcnk6IHRoaXMudmFyaWFudHNbMF0/LnRheENhdGVnb3J5LFxyXG5cdFx0fVxyXG5cdFx0Ly9jb25zb2xlLmxvZyhhc3NvY2lhdGVkKVxyXG5cdFx0dGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQoYXNzb2NpYXRlZCk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1lam9yYSBsb3MgZGF0b3MgZGUgbGFzIGBwcm9wZXJ0aWVzYC5cclxuXHQgKiBAcGFyYW0gcHJvcGVydGllcyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRiZWF1dGlmeVByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogYW55IHtcclxuXHRcdGxldCBiZWF1dGlmeURhdGE6IGFueSA9IFtdO1xyXG5cdFx0cHJvcGVydGllcy5mb3JFYWNoKChwcm9wOiBhbnkpID0+IHtcclxuXHRcdFx0Zm9yIChsZXQga2V5IGluIHByb3ApIHtcclxuXHRcdFx0XHRiZWF1dGlmeURhdGEucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IHByb3Bba2V5XSB9KVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdFx0cmV0dXJuIGJlYXV0aWZ5RGF0YVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSB1biBkZXNjdWVudG8gZW4gY2FzbyBkZSBleGlzdGlyLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNyZWF0ZURpc2NvdW50KCk6IGFueSB7XHJcblx0XHRsZXQgYWxsRGlzY291bnRzOiBzdHJpbmcgPSAnJztcclxuXHRcdHRoaXMudmFyaWFudHMuZm9yRWFjaCh2YXJpYW50ID0+IHtcclxuXHRcdFx0dmFyaWFudC5kaXNjb3VudCAmJiAoYWxsRGlzY291bnRzICs9ICcsICcgKyB2YXJpYW50LmRpc2NvdW50KTtcclxuXHRcdH0pXHJcblx0XHRpZiAoYWxsRGlzY291bnRzID09ICcnKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0cmV0dXJuIGFsbERpc2NvdW50cztcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgZWwgcHJlY2lvIGRlIHZlbnRhLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNyZWF0ZVNhbGVQcmljZSgpOiBhbnkge1xyXG5cdFx0bGV0IG1pblByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IG1heFByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IGFsbFByaWNlczogYW55ID0gdGhpcy52YXJpYW50cy5tYXAodiA9PiB2LnNhbGVwcmljZSkuZmlsdGVyKGUgPT4gZSAhPT0gdW5kZWZpbmVkKTtcclxuXHRcdGlmIChhbGxQcmljZXMubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZFxyXG5cdFx0fVxyXG5cdFx0bWluUHJpY2UgPSBhbGxQcmljZXMucmVkdWNlKChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gTWF0aC5taW4oYSwgYikpO1xyXG5cdFx0bWF4UHJpY2UgPSBhbGxQcmljZXMucmVkdWNlKChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gTWF0aC5tYXgoYSwgYikpO1xyXG5cdFx0cmV0dXJuIG1pblByaWNlID09IG1heFByaWNlID8gbWF4UHJpY2UudG9TdHJpbmcoKSA6IG1pblByaWNlICsgJyAtICcgKyBtYXhQcmljZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgZWwgcHJlY2lvIG8gbG9zIHByZWNpb3MgZW4gY2FzbyBkZSB0ZW5lciB2YXJpYXMgdmFyaWFudGVzIGNvbiBkaXN0aW50b3MgcHJlY2lvcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRjcmVhdGVQcmljZSgpOiBhbnkge1xyXG5cdFx0bGV0IG1pblByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IG1heFByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IGFsbFByaWNlOiBhbnkgPSB0aGlzLnZhcmlhbnRzLm1hcCh2ID0+IHYucHJpY2UpXHJcblx0XHRtaW5QcmljZSA9IGFsbFByaWNlLnJlZHVjZSgoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IE1hdGgubWluKGEsIGIpKTtcclxuXHRcdG1heFByaWNlID0gYWxsUHJpY2UucmVkdWNlKChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gTWF0aC5tYXgoYSwgYikpO1xyXG5cdFx0cmV0dXJuIG1pblByaWNlID09IG1heFByaWNlID8gbWF4UHJpY2UudG9TdHJpbmcoKSA6IG1pblByaWNlICsgJyAtICcgKyBtYXhQcmljZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxhcyB2YXJpYW50ZXMuXHJcblx0ICogQHBhcmFtIGNvZGUgXHJcblx0ICovXHJcblx0dXBkYXRlVmFyaWFudHMgPSAoY29kZT86IHN0cmluZykgPT4ge1xyXG5cdFx0bGV0IHZhcmlhbnRzID0gdGhpcy5fcHJvZHVjdFN1YmplY3QudmFsdWU/LnZhcmlhbnRzXHJcblx0XHQvL2NvbnNvbGUubG9nKHZhcmlhbnRzKVxyXG5cdFx0aWYgKCFjb2RlKSB7XHJcblx0XHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0LnZhbHVlLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XHJcblx0XHRcdFx0b3B0aW9uLnZhbHVlcy5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodmFsdWUuc2VsZWN0ZWQpIHtcclxuXHRcdFx0XHRcdFx0dmFyaWFudHMgPSB2YXJpYW50cz8uZmlsdGVyKHZhcmlhbnQgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YXJpYW50Lm9wdGlvbnMuc29tZSgodmFyaWFudE9wdGlvbjogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKG9wdGlvbi5jb2RlIGluIHZhcmlhbnRPcHRpb24gJiYgdmFyaWFudE9wdGlvbltvcHRpb24uY29kZV0gPT0gdmFsdWUubmFtZSk7XHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dmFyaWFudHMgPSB2YXJpYW50cz8uZmlsdGVyKHZhcmlhbnQgPT4gdmFyaWFudC5jb2RlID09IGNvZGUpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy52YXJpYW50cyA9IHZhcmlhbnRzIHx8IFtdO1xyXG5cdFx0Y29kZSAmJiB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxhcyBvcGNpb25lc1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgdXBkYXRlT3B0aW9ucyA9ICgpID0+IHtcclxuXHRcdGxldCB7IG9wdGlvbnMgfSA9IHRoaXMudmFyaWFudHMubGVuZ3RoICYmIHRoaXMudmFyaWFudHNbMF07XHJcblx0XHRvcHRpb25zICYmIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IE9iamVjdC5rZXlzKG9wdGlvbikuZm9yRWFjaChrZXkgPT4gdGhpcy5zZXRPcHRpb24oa2V5LCBvcHRpb25ba2V5XSkpKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBZ3JlZ2EgZWwgcHJvZHVjdG8gYWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gcXVhbnRpdHkgQ2FudGlkYWQgZGVsIHByb2R1Y3RvIGEgYWdyZWdhclxyXG5cdCAqIEBwYXJhbSB2YXJpYW50Q29kZSBDb2RpZ28gZGUgbGEgdmFyaWFudGUuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0YWRkVG9DYXJ0KHF1YW50aXR5OiBudW1iZXIsIHZhcmlhbnRDb2RlPzogc3RyaW5nKXtcclxuXHJcblx0XHRcclxuXHRcdGlmKCF0aGlzLnZhcmlhbnRzLmxlbmd0aCl7XHJcblx0XHRcdFxyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnY2FudC1idXknKVxyXG5cdFx0XHRcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHByb2R1Y3RTZWxlY3RlZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoKHRoaXMuX3Byb2R1Y3RTdWJqZWN0LmdldFZhbHVlKCkpKSk7XHJcblxyXG5cdFx0bGV0IHZhcmlhbnQ6YW55O1xyXG5cdFx0c3dpdGNoKHRoaXMudmFyaWFudHMubGVuZ3RoKXtcclxuXHRcdFx0Y2FzZSAwOlxyXG5cdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCduby12YXJpYW50cycpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIDE6XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0dGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlLnN0b2NrID09IDBcclxuXHRcdFx0XHRcdD8gdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jaycpXHJcblx0XHRcdFx0XHQ6IHZhcmlhbnQgPSB0aGlzLnZhcmlhbnRzWzBdXHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0aWYodmFyaWFudENvZGUpe1xyXG5cdFx0XHRcdFx0dmFyaWFudCA9IHRoaXMudmFyaWFudHMuZmluZCggdmFyaWFudCA9PiAgdmFyaWFudC5jb2RlID09PSB2YXJpYW50Q29kZSlcclxuXHRcdFx0XHRcdGlmKHZhcmlhbnQuc3RvY2sgPT0gMCl7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2snKVxyXG5cdFx0XHRcdFx0XHR2YXJpYW50ID0gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCd2YXJpYW50cy1sZWZ0JylcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0XHRpZighdmFyaWFudCkgcmV0dXJuO1xyXG5cdFx0aWYoIXRoaXMudmFsaWRhdGVRdWFudGl0eShxdWFudGl0eSkpIHJldHVybjtcclxuXHRcdC8vYWdyZWdhciBhbCBzZXJ2aWNpbyBkZWwgY2Fycml0b1xyXG5cdFx0dGhpcy5fY2FydFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMubWFrZUFmZm9yZGFibGVQcm9kdWN0KHByb2R1Y3RTZWxlY3RlZCksIHF1YW50aXR5LCB2YXJpYW50LmNvZGUpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBHZW5lcmEgdW4gcHJvZHVjdG8gcGFyYSBoYWNlciBtYXMgZmFjw61sIGVsIGVudmlvIGRlbCBlbGVtZW50byBhbCBiYWNrZW5kLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0U2VsZWN0ZWQgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBtYWtlQWZmb3JkYWJsZVByb2R1Y3QocHJvZHVjdFNlbGVjdGVkOiBQcm9kdWN0KSB7XHJcbiAgICAgICAgcHJvZHVjdFNlbGVjdGVkLnByaWNlID0gcGFyc2VGbG9hdCh0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUucHJpY2UpO1xyXG4gICAgICAgIHByb2R1Y3RTZWxlY3RlZC5zYWxlcHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5wcmljZSk7XHJcblx0XHRwcm9kdWN0U2VsZWN0ZWQub3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMudmFyaWFudHNbMF0ub3B0aW9ucy5mb3JFYWNoKChvcHRpb246YW55KSA9PiBwcm9kdWN0U2VsZWN0ZWQub3B0aW9ucyA9IHsgLi4ucHJvZHVjdFNlbGVjdGVkLm9wdGlvbnMsIC4uLm9wdGlvbiB9KVxyXG4gICAgICAgIHJldHVybiBwcm9kdWN0U2VsZWN0ZWQ7XHJcbiAgICB9XHJcblx0LyoqXHJcblx0ICogVmFsaWRhIGxhIGNhbnRpZGFkIHF1ZSBzZSBxdWllcmUgYWdyZWdhciBkZSB1biBwcm9kdWN0by5cclxuXHQgKiBSZXZpc2EgcXVlIG5vIHN1cGVyZSBlbCBzdG9jaywgZWwgbWF4aW1vIGRlIGl0ZW1zIHF1ZSBzZSBwdWVkZSBhZ3JlZ2FyXHJcblx0ICogYXNpIGNvbW8gZWwgbWluaW1vLlxyXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHZhbGlkYXRlUXVhbnRpdHkgPSAocXVhbnRpdHk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFjdHVhbFF1YW50aXR5ID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0Q291bnRGcm9tSXRlbUluQ2FydCh0aGlzLnZhcmlhbnRzWzBdLmNvZGUpO1xyXG4gICAgICAgIGNvbnN0IGFzb2NpYXRlZERhdGEgPSB0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWU7XHJcbiAgICAgICAgaWYgKChhY3R1YWxRdWFudGl0eSArIHF1YW50aXR5KSA+IGFzb2NpYXRlZERhdGEubWF4aW11bUl0ZW1zUXVhbnRpdHkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21heGltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBhc29jaWF0ZWREYXRhLm1heGltdW1JdGVtc1F1YW50aXR5IH0pXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChhY3R1YWxRdWFudGl0eSArIHF1YW50aXR5KSA8IGFzb2NpYXRlZERhdGEubWluaW11bUl0ZW1zUXVhbnRpdHkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21pbmltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBhc29jaWF0ZWREYXRhLm1pbmltdW1JdGVtc1F1YW50aXR5IH0pXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs3QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFaEQsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztJQUMxRCxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7SUFDL0Msc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekYsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsZUFBZSxHQUFHLElBQUksQ0FB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O21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9kdWN0c1NlcnZpY2UgfSBmcm9tICcuL3Byb2R1Y3RzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE9wdGlvbnMsIE9wdGlvblZhbHVlLCBQcm9kdWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4vdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi9jYXJ0LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERldGFpbFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgX3Byb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jYXJ0U2VydmljZTogQ2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIF9wcm9kdWN0U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJvZHVjdCB8IG51bGw+KHt9KTtcclxuXHRwcml2YXRlIF9vcHRpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XHJcblx0cHJpdmF0ZSBfYXNzb2NpYXRlZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHsgcHJpY2U6ICcnLCBzdG9jazogMCwgcGljdHVyZTogJycgfSk7XHJcblxyXG5cdHB1YmxpYyBwcm9kdWN0JCA9IHRoaXMuX3Byb2R1Y3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHB1YmxpYyBvcHRpb25zJCA9IHRoaXMuX29wdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHB1YmxpYyBhc3NvY2lhdGVkRGF0YSQgPSB0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHByaXZhdGUgdmFyaWFudHM6IGFueVtdID0gW11cclxuXHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHQvKipcclxuXHQgKiBPYnRlbmdvIGVsIHByb2R1Y3RvIGEgdHJhdmVzIGRlIHN1IGNvZGlnbyBlIGluaWNpYWxpem8gbGEgY29uZmlndXJhY2nDs25cclxuXHQgKiBkZWwgU2VydmljaW8uXHJcblx0ICogQHBhcmFtIGNvZGUgXHJcblx0ICogQHBhcmFtIHZhcmlhbnQgXHJcblx0ICovXHJcblx0bG9hZFByb2R1Y3QoY29kZTogc3RyaW5nLCB2YXJpYW50OiBib29sZWFuID0gZmFsc2UpIHtcclxuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX3Byb2R1Y3RzU2VydmljZS5nZXRQcm9kdWN0QnlDb2RlKGNvZGUsIHZhcmlhbnQpKVxyXG5cdFx0XHQudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdHZhcmlhbnQgPyB0aGlzLmluaXRpYWxpemUocmVzLCBjb2RlKSA6IHRoaXMuaW5pdGlhbGl6ZShyZXMpXHJcblx0XHRcdH0pXHJcblx0XHRcdC5jYXRjaChlcnIgPT4geyBjb25zb2xlLmxvZyhlcnIpOyB0aGlzLl9wcm9kdWN0U3ViamVjdC5uZXh0KG51bGwpIH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYXJnYSBlbCBwcm9kdWN0byBlbiBlbCBvYnNlcnZhYmxlIHkgbGEgY29uZmlndXJhY2nDs24gZGUgbGFzIHZhcmlhbnRlcy5cclxuXHQgKiBAcGFyYW0gcHJvZHVjdCBcclxuXHQgKiBAcGFyYW0gdmFyaWFudENvZGUgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpbml0aWFsaXplKHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmlhbnRDb2RlPzogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9wcm9kdWN0U3ViamVjdC5uZXh0KHByb2R1Y3QpO1xyXG5cdFx0Y29uc3QgYXV4OiBQcm9kdWN0WydvcHRpb25zJ10gPSBwcm9kdWN0Lm9wdGlvbnMgfHwgW107XHJcblx0XHRjb25zdCBvcHRpb25zID0gYXV4Py5tYXAob3B0aW9uID0+IHRoaXMudG9PcHRpb24ob3B0aW9uKSlcclxuXHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0Lm5leHQob3B0aW9ucyk7XHJcblx0XHR2YXJpYW50Q29kZSA/IHRoaXMudXBkYXRlVmFyaWFudHModmFyaWFudENvZGUpIDogdGhpcy51cGRhdGVWYXJpYW50cygpO1xyXG5cdFx0dGhpcy52YXJpYW50cy5sZW5ndGggJiYgdGhpcy5nZW5lcmF0ZUFzc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEZvcm1hdGUgbG9zIGRhdG9zIHBhcmEgbGFzIG9wY2lvbmVzIGRlbCBwcm9kdWN0by5cclxuXHQgKiBAcGFyYW0gb3B0aW9uIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgdG9PcHRpb24ob3B0aW9uOiBPcHRpb25zKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRuYW1lOiBvcHRpb24ubGFiZWwsXHJcblx0XHRcdGNvZGU6IG9wdGlvbi5jb2RlLFxyXG5cdFx0XHR0eXBlOiBvcHRpb24udHlwZSxcclxuXHRcdFx0dmFsdWVzOiBvcHRpb24udmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4gKHsgbmFtZTogdmFsdWUuY29kZSwgZGVzY3JpcHRpb246IHZhbHVlLm5hbWUsIGltYWdlOiB2YWx1ZS5pbWFnZSwgbW9iaWxlSW1hZ2U6IHZhbHVlLm1vYmlsZUltYWdlLCBzZWxlY3RlZDogZmFsc2UgfSkpXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDYW1iaWEgbGFzIG9wY2lvbmVzLCBvYnRpZW5lIGVsIHByb2R1Y3RvIGFzb2NpYWRvIGEgbGEgb3BjaW9uIGVsZWdpZGEuXHJcblx0ICovXHJcblx0c2V0T3B0aW9uKG9wdGlvbkNvZGU6IGFueSwgb3B0aW9uVmFsdWU6IGFueSkge1xyXG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnNTdWJqZWN0LnZhbHVlO1xyXG5cdFx0Y29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maW5kKChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQuY29kZSA9PSBvcHRpb25Db2RlKS52YWx1ZXMuZmluZCgodmFsdWU6IGFueSkgPT4gdmFsdWUubmFtZSA9PSBvcHRpb25WYWx1ZSk7XHJcblx0XHRvcHRpb24uc2VsZWN0ZWQgPSAhb3B0aW9uLnNlbGVjdGVkO1xyXG5cdFx0b3B0aW9ucy5maW5kKChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQuY29kZSA9PSBvcHRpb25Db2RlKS52YWx1ZXMuZm9yRWFjaChcclxuXHRcdFx0KHZhbHVlOiBhbnkpID0+IHsgaWYgKHZhbHVlLm5hbWUgIT0gb3B0aW9uLm5hbWUpIHZhbHVlLnNlbGVjdGVkID0gZmFsc2UgfVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0Lm5leHQob3B0aW9ucyk7XHJcblx0XHR0aGlzLnVwZGF0ZVZhcmlhbnRzKCk7XHJcblx0XHR0aGlzLnZhcmlhbnRzLmxlbmd0aCA+IDAgPyB0aGlzLmdlbmVyYXRlQXNzb2NpYXRlZERhdGFGcm9tVmFyaWFudHMoKSA6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdzZWxlY3Rpb24tbm90LWF2YWlsYWJsZScpXHJcblx0fVxyXG5cdC8qKlxyXG4gKiBBY3R1YWxpemEgZWwgb2JzZXJ2YWJsZSBkZSBgYXNzb2NpYXRlZERhdGFgIGVsIGN1YWwgc2UgdXRpbGl6YSBwYXJhIG1vc3RyYXIgbG9zIGRhdG9zXHJcbiAqIGVuIGVsIGZyb250ZW5kIHNlZ8O6biBlbCBwcm9kdWN0byB5L28gdmFyaWFudGUgZWxlZ2lkYS5cclxuICogT2J0aWVuZSBsb3MgZGF0b3MgZGUgbGEgdmFyaWFudGUgeSBsb3MgZm9ybWF0ZWEuXHJcbiAqL1xyXG5cdGdlbmVyYXRlQXNzb2NpYXRlZERhdGFGcm9tVmFyaWFudHMoKTogdm9pZCB7XHJcblx0XHRjb25zdCBhc3NvY2lhdGVkOiBhbnkgPSB7fTtcclxuXHJcblx0XHQvLyBTaSBzw7NsbyBoYXkgdW5hIHZhcmlhbnRlLCB0b21hbW9zIHRvZG9zIHN1cyBkYXRvcyBkaXJlY3RhbWVudGVcclxuXHRcdGlmICh0aGlzLnZhcmlhbnRzLmxlbmd0aCA9PT0gMSkge1xyXG5cdFx0XHRjb25zdCB2ID0gdGhpcy52YXJpYW50c1swXTtcclxuXHJcblx0XHRcdGFzc29jaWF0ZWQuc3RvY2sgPSB2LnN0b2NrO1xyXG5cdFx0XHRhc3NvY2lhdGVkLnByaWNlID0gdi5wcmljZS50b1N0cmluZygpO1xyXG5cdFx0XHRhc3NvY2lhdGVkLnNhbGVwcmljZSA9IHYuc2FsZXByaWNlICE9IG51bGwgPyB2LnNhbGVwcmljZS50b1N0cmluZygpIDogdW5kZWZpbmVkO1xyXG5cdFx0XHRhc3NvY2lhdGVkLmRpc2NvdW50ID0gdi5kaXNjb3VudCA/PyB1bmRlZmluZWQ7XHJcblx0XHRcdGFzc29jaWF0ZWQucHJvcGVydGllcyA9IHYucHJvcGVydGllcyA/IHRoaXMuYmVhdXRpZnlQcm9wZXJ0aWVzKHYucHJvcGVydGllcykgOiB1bmRlZmluZWQ7XHJcblx0XHRcdGFzc29jaWF0ZWQudW5pcXVlRXh0ZXJuYWxDb2RlID0gdi51bmlxdWVFeHRlcm5hbENvZGUgPz8gdW5kZWZpbmVkO1xyXG5cdFx0XHRhc3NvY2lhdGVkLm11bHRpcGxlUXVhbnRpdHkgPSB2Lm11bHRpcGxlUXVhbnRpdHkgPz8gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gTMOtbWl0ZXMgZGUgY2FudGlkYWQvc3RvY2tcclxuXHRcdFx0YXNzb2NpYXRlZC5tYXhpbXVtQW1vdW50ID0gdi5tYXhpbXVtQW1vdW50ID8/IDA7XHJcblx0XHRcdGFzc29jaWF0ZWQubWluaW11bUFtb3VudCA9IHYubWluaW11bUFtb3VudCA/PyAwO1xyXG5cdFx0XHRhc3NvY2lhdGVkLm1heGltdW1JdGVtc1F1YW50aXR5ID0gdi5zdG9jayA+IDAgJiYgJ21heGltdW1JdGVtc1F1YW50aXR5JyBpbiB2XHJcblx0XHRcdFx0PyB2Lm1heGltdW1JdGVtc1F1YW50aXR5XHJcblx0XHRcdFx0OiB2LnN0b2NrO1xyXG5cdFx0XHRhc3NvY2lhdGVkLm1pbmltdW1JdGVtc1F1YW50aXR5ID0gdi5zdG9jayA+IDAgJiYgJ21pbmltdW1JdGVtc1F1YW50aXR5JyBpbiB2ICYmIHYubWluaW11bUl0ZW1zUXVhbnRpdHkhID4gMFxyXG5cdFx0XHRcdD8gdi5taW5pbXVtSXRlbXNRdWFudGl0eVxyXG5cdFx0XHRcdDogKHYubXVsdGlwbGVRdWFudGl0eSA/PyAxKTtcclxuXHJcblx0XHRcdC8vIFByZWNpb3MgYWwgY29uc3VtaWRvciBmaW5hbFxyXG5cdFx0XHRhc3NvY2lhdGVkLmZpbmFsQ29uc3VtZXIgPSB7XHJcblx0XHRcdFx0ZmluYWxDb25zdW1lclByaWNlOiB2LmZpbmFsX2NvbnN1bWVyX3ByaWNlLFxyXG5cdFx0XHRcdG9yaWdpbmFsRmluYWxDb25zdW1lclByaWNlOiB2Lm9yaWdpbmFsX2ZpbmFsX2NvbnN1bWVyX3ByaWNlXHJcblx0XHRcdH07XHJcblxyXG5cdFx0XHQvLyBJbXB1ZXN0b3NcclxuXHRcdFx0YXNzb2NpYXRlZC50YXhlcyA9IHtcclxuXHRcdFx0XHR0YXhJbmNsdWRlZDogdi50YXhJbmNsdWRlZCxcclxuXHRcdFx0XHR0YXhDYXRlZ29yeTogdi50YXhDYXRlZ29yeVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRhc3NvY2lhdGVkLnRheGVBbW91bnQgPSB2LnRheGVzID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0YXNzb2NpYXRlZC50YXhSYXRlID0gdi50YXhSYXRlID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0YXNzb2NpYXRlZC5wcmljZVdpdGhvdXRUYXhlcyA9IHYucHJpY2VXaXRob3V0VGF4ZXMgPz8gdW5kZWZpbmVkO1xyXG5cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIFNpIGhheSB2YXJpYXMgdmFyaWFudGVzLCByZXN1bWltb3NcclxuXHRcdFx0YXNzb2NpYXRlZC5wcmljZSA9IHRoaXMuY3JlYXRlUHJpY2UoKTtcclxuXHRcdFx0YXNzb2NpYXRlZC5zYWxlcHJpY2UgPSB0aGlzLmNyZWF0ZVNhbGVQcmljZSgpO1xyXG5cdFx0XHRhc3NvY2lhdGVkLnN0b2NrID0gdGhpcy52YXJpYW50cy5tYXAodiA9PiB2LnN0b2NrKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuXHRcdFx0YXNzb2NpYXRlZC5kaXNjb3VudCA9IHRoaXMuY3JlYXRlRGlzY291bnQoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBJbWFnZW4gcHJpbmNpcGFsXHJcblx0XHRjb25zdCBmaXJzdCA9IHRoaXMudmFyaWFudHNbMF07XHJcblx0XHRpZiAoJ2ltYWdlcycgaW4gZmlyc3QgJiYgZmlyc3QuaW1hZ2VzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXNzb2NpYXRlZC5waWN0dXJlID0gZmlyc3QuaW1hZ2VzWzBdO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0YXNzb2NpYXRlZC5waWN0dXJlID0gdGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlPy5waWN0dXJlXHJcblx0XHRcdFx0Pz8gdGhpcy5fcHJvZHVjdFN1YmplY3QudmFsdWU/LnBpY3R1cmVzZGVmYXVsdD8uWzBdO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEVtaXRpbW9zIGVsIG9iamV0byBjb21wbGV0b1xyXG5cdFx0dGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQoYXNzb2NpYXRlZCk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1lam9yYSBsb3MgZGF0b3MgZGUgbGFzIGBwcm9wZXJ0aWVzYC5cclxuXHQgKiBAcGFyYW0gcHJvcGVydGllcyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRiZWF1dGlmeVByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogYW55IHtcclxuXHRcdGxldCBiZWF1dGlmeURhdGE6IGFueSA9IFtdO1xyXG5cdFx0cHJvcGVydGllcy5mb3JFYWNoKChwcm9wOiBhbnkpID0+IHtcclxuXHRcdFx0Zm9yIChsZXQga2V5IGluIHByb3ApIHtcclxuXHRcdFx0XHRiZWF1dGlmeURhdGEucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IHByb3Bba2V5XSB9KVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdFx0cmV0dXJuIGJlYXV0aWZ5RGF0YVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSB1biBkZXNjdWVudG8gZW4gY2FzbyBkZSBleGlzdGlyLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNyZWF0ZURpc2NvdW50KCk6IGFueSB7XHJcblx0XHRsZXQgYWxsRGlzY291bnRzOiBzdHJpbmcgPSAnJztcclxuXHRcdHRoaXMudmFyaWFudHMuZm9yRWFjaCh2YXJpYW50ID0+IHtcclxuXHRcdFx0dmFyaWFudC5kaXNjb3VudCAmJiAoYWxsRGlzY291bnRzICs9ICcsICcgKyB2YXJpYW50LmRpc2NvdW50KTtcclxuXHRcdH0pXHJcblx0XHRpZiAoYWxsRGlzY291bnRzID09ICcnKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0cmV0dXJuIGFsbERpc2NvdW50cztcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgZWwgcHJlY2lvIGRlIHZlbnRhLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNyZWF0ZVNhbGVQcmljZSgpOiBhbnkge1xyXG5cdFx0bGV0IG1pblByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IG1heFByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IGFsbFByaWNlczogYW55ID0gdGhpcy52YXJpYW50cy5tYXAodiA9PiB2LnNhbGVwcmljZSkuZmlsdGVyKGUgPT4gZSAhPT0gdW5kZWZpbmVkKTtcclxuXHRcdGlmIChhbGxQcmljZXMubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZFxyXG5cdFx0fVxyXG5cdFx0bWluUHJpY2UgPSBhbGxQcmljZXMucmVkdWNlKChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gTWF0aC5taW4oYSwgYikpO1xyXG5cdFx0bWF4UHJpY2UgPSBhbGxQcmljZXMucmVkdWNlKChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gTWF0aC5tYXgoYSwgYikpO1xyXG5cdFx0cmV0dXJuIG1pblByaWNlID09IG1heFByaWNlID8gbWF4UHJpY2UudG9TdHJpbmcoKSA6IG1pblByaWNlICsgJyAtICcgKyBtYXhQcmljZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgZWwgcHJlY2lvIG8gbG9zIHByZWNpb3MgZW4gY2FzbyBkZSB0ZW5lciB2YXJpYXMgdmFyaWFudGVzIGNvbiBkaXN0aW50b3MgcHJlY2lvcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRjcmVhdGVQcmljZSgpOiBhbnkge1xyXG5cdFx0bGV0IG1pblByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IG1heFByaWNlOiBudW1iZXIgPSAwO1xyXG5cdFx0bGV0IGFsbFByaWNlOiBhbnkgPSB0aGlzLnZhcmlhbnRzLm1hcCh2ID0+IHYucHJpY2UpXHJcblx0XHRtaW5QcmljZSA9IGFsbFByaWNlLnJlZHVjZSgoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IE1hdGgubWluKGEsIGIpKTtcclxuXHRcdG1heFByaWNlID0gYWxsUHJpY2UucmVkdWNlKChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gTWF0aC5tYXgoYSwgYikpO1xyXG5cdFx0cmV0dXJuIG1pblByaWNlID09IG1heFByaWNlID8gbWF4UHJpY2UudG9TdHJpbmcoKSA6IG1pblByaWNlICsgJyAtICcgKyBtYXhQcmljZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxhcyB2YXJpYW50ZXMuXHJcblx0ICogQHBhcmFtIGNvZGUgXHJcblx0ICovXHJcblx0dXBkYXRlVmFyaWFudHMgPSAoY29kZT86IHN0cmluZykgPT4ge1xyXG5cdFx0bGV0IHZhcmlhbnRzID0gdGhpcy5fcHJvZHVjdFN1YmplY3QudmFsdWU/LnZhcmlhbnRzXHJcblx0XHQvL2NvbnNvbGUubG9nKHZhcmlhbnRzKVxyXG5cdFx0aWYgKCFjb2RlKSB7XHJcblx0XHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0LnZhbHVlLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XHJcblx0XHRcdFx0b3B0aW9uLnZhbHVlcy5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodmFsdWUuc2VsZWN0ZWQpIHtcclxuXHRcdFx0XHRcdFx0dmFyaWFudHMgPSB2YXJpYW50cz8uZmlsdGVyKHZhcmlhbnQgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YXJpYW50Lm9wdGlvbnMuc29tZSgodmFyaWFudE9wdGlvbjogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKG9wdGlvbi5jb2RlIGluIHZhcmlhbnRPcHRpb24gJiYgdmFyaWFudE9wdGlvbltvcHRpb24uY29kZV0gPT0gdmFsdWUubmFtZSk7XHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dmFyaWFudHMgPSB2YXJpYW50cz8uZmlsdGVyKHZhcmlhbnQgPT4gdmFyaWFudC5jb2RlID09IGNvZGUpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy52YXJpYW50cyA9IHZhcmlhbnRzIHx8IFtdO1xyXG5cdFx0Y29kZSAmJiB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxhcyBvcGNpb25lc1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgdXBkYXRlT3B0aW9ucyA9ICgpID0+IHtcclxuXHRcdGxldCB7IG9wdGlvbnMgfSA9IHRoaXMudmFyaWFudHMubGVuZ3RoICYmIHRoaXMudmFyaWFudHNbMF07XHJcblx0XHRvcHRpb25zICYmIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IE9iamVjdC5rZXlzKG9wdGlvbikuZm9yRWFjaChrZXkgPT4gdGhpcy5zZXRPcHRpb24oa2V5LCBvcHRpb25ba2V5XSkpKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBZ3JlZ2EgZWwgcHJvZHVjdG8gYWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gcXVhbnRpdHkgQ2FudGlkYWQgZGVsIHByb2R1Y3RvIGEgYWdyZWdhclxyXG5cdCAqIEBwYXJhbSB2YXJpYW50Q29kZSBDb2RpZ28gZGUgbGEgdmFyaWFudGUuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0YWRkVG9DYXJ0KHF1YW50aXR5OiBudW1iZXIsIHZhcmlhbnRDb2RlPzogc3RyaW5nKSB7XHJcblxyXG5cclxuXHRcdGlmICghdGhpcy52YXJpYW50cy5sZW5ndGgpIHtcclxuXHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdjYW50LWJ1eScpXHJcblxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRsZXQgcHJvZHVjdFNlbGVjdGVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgodGhpcy5fcHJvZHVjdFN1YmplY3QuZ2V0VmFsdWUoKSkpKTtcclxuXHJcblx0XHRsZXQgdmFyaWFudDogYW55O1xyXG5cdFx0c3dpdGNoICh0aGlzLnZhcmlhbnRzLmxlbmd0aCkge1xyXG5cdFx0XHRjYXNlIDA6XHJcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ25vLXZhcmlhbnRzJyk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgMTpcclxuXHJcblx0XHRcdFx0dGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlLnN0b2NrID09IDBcclxuXHRcdFx0XHRcdD8gdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jaycpXHJcblx0XHRcdFx0XHQ6IHZhcmlhbnQgPSB0aGlzLnZhcmlhbnRzWzBdXHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0aWYgKHZhcmlhbnRDb2RlKSB7XHJcblx0XHRcdFx0XHR2YXJpYW50ID0gdGhpcy52YXJpYW50cy5maW5kKHZhcmlhbnQgPT4gdmFyaWFudC5jb2RlID09PSB2YXJpYW50Q29kZSlcclxuXHRcdFx0XHRcdGlmICh2YXJpYW50LnN0b2NrID09IDApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jaycpXHJcblx0XHRcdFx0XHRcdHZhcmlhbnQgPSB1bmRlZmluZWRcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ3ZhcmlhbnRzLWxlZnQnKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHRcdGlmICghdmFyaWFudCkgcmV0dXJuO1xyXG5cdFx0aWYgKCF0aGlzLnZhbGlkYXRlUXVhbnRpdHkocXVhbnRpdHkpKSByZXR1cm47XHJcblx0XHQvL2FncmVnYXIgYWwgc2VydmljaW8gZGVsIGNhcnJpdG9cclxuXHRcdHRoaXMuX2NhcnRTZXJ2aWNlLmFkZFRvQ2FydCh0aGlzLm1ha2VBZmZvcmRhYmxlUHJvZHVjdChwcm9kdWN0U2VsZWN0ZWQpLCBxdWFudGl0eSwgdmFyaWFudC5jb2RlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogR2VuZXJhIHVuIHByb2R1Y3RvIHBhcmEgaGFjZXIgbWFzIGZhY8OtbCBlbCBlbnZpbyBkZWwgZWxlbWVudG8gYWwgYmFja2VuZC5cclxuXHQgKiBAcGFyYW0gcHJvZHVjdFNlbGVjdGVkIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbWFrZUFmZm9yZGFibGVQcm9kdWN0KHByb2R1Y3RTZWxlY3RlZDogUHJvZHVjdCkge1xyXG5cdFx0cHJvZHVjdFNlbGVjdGVkLnByaWNlID0gcGFyc2VGbG9hdCh0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUucHJpY2UpO1xyXG5cdFx0cHJvZHVjdFNlbGVjdGVkLnNhbGVwcmljZSA9IHBhcnNlRmxvYXQodGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlLnByaWNlKTtcclxuXHRcdHByb2R1Y3RTZWxlY3RlZC5vcHRpb25zID0gW107XHJcblx0XHR0aGlzLnZhcmlhbnRzWzBdLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHByb2R1Y3RTZWxlY3RlZC5vcHRpb25zID0geyAuLi5wcm9kdWN0U2VsZWN0ZWQub3B0aW9ucywgLi4ub3B0aW9uIH0pXHJcblx0XHRyZXR1cm4gcHJvZHVjdFNlbGVjdGVkO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBWYWxpZGEgbGEgY2FudGlkYWQgcXVlIHNlIHF1aWVyZSBhZ3JlZ2FyIGRlIHVuIHByb2R1Y3RvLlxyXG5cdCAqIFJldmlzYSBxdWUgbm8gc3VwZXJlIGVsIHN0b2NrLCBlbCBtYXhpbW8gZGUgaXRlbXMgcXVlIHNlIHB1ZWRlIGFncmVnYXJcclxuXHQgKiBhc2kgY29tbyBlbCBtaW5pbW8uXHJcblx0ICogQHBhcmFtIHF1YW50aXR5IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgdmFsaWRhdGVRdWFudGl0eSA9IChxdWFudGl0eTogbnVtYmVyKSA9PiB7XHJcblx0XHRjb25zdCBhY3R1YWxRdWFudGl0eSA9IHRoaXMuX2NhcnRTZXJ2aWNlLmdldENvdW50RnJvbUl0ZW1JbkNhcnQodGhpcy52YXJpYW50c1swXS5jb2RlKTtcclxuXHRcdGNvbnN0IGFzb2NpYXRlZERhdGEgPSB0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWU7XHJcblx0XHRpZiAoKGFjdHVhbFF1YW50aXR5ICsgcXVhbnRpdHkpID4gYXNvY2lhdGVkRGF0YS5tYXhpbXVtSXRlbXNRdWFudGl0eSkge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWF4aW11bS1pdGVtcy1xdWFudGl0eScsIHsgcXVhbnRpdHk6IGFzb2NpYXRlZERhdGEubWF4aW11bUl0ZW1zUXVhbnRpdHkgfSlcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKChhY3R1YWxRdWFudGl0eSArIHF1YW50aXR5KSA8IGFzb2NpYXRlZERhdGEubWluaW11bUl0ZW1zUXVhbnRpdHkpIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21pbmltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBhc29jaWF0ZWREYXRhLm1pbmltdW1JdGVtc1F1YW50aXR5IH0pXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0cnVlXHJcblx0fVxyXG59XHJcbiJdfQ==
|