ng-tailwind 4.2.18 → 4.2.19
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.
|
@@ -264,7 +264,7 @@ export class NgtDatatableComponent {
|
|
|
264
264
|
if (requestedFilters) {
|
|
265
265
|
for (const reference in requestedFilters) {
|
|
266
266
|
const filter = requestedFilters[reference];
|
|
267
|
-
if (this.isValidFilter(filter)) {
|
|
267
|
+
if (this.isValidFilter(filter, reference)) {
|
|
268
268
|
if (filter instanceof NgtCustomFilter) {
|
|
269
269
|
if (filter.tagLabel) {
|
|
270
270
|
this.filtersDescription[reference] = filter.tagLabel;
|
|
@@ -334,17 +334,16 @@ export class NgtDatatableComponent {
|
|
|
334
334
|
canApplyFilters(filters) {
|
|
335
335
|
if (!this.searching) {
|
|
336
336
|
for (const reference in filters) {
|
|
337
|
-
if (this.isValidFilter(filters[reference])) {
|
|
337
|
+
if (this.isValidFilter(filters[reference], reference)) {
|
|
338
338
|
return true;
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
342
|
return false;
|
|
343
343
|
}
|
|
344
|
-
isValidFilter(filter) {
|
|
345
|
-
const
|
|
346
|
-
const
|
|
347
|
-
const isApplied = this.hasAppliedFilter(filter);
|
|
344
|
+
isValidFilter(filter, reference) {
|
|
345
|
+
const hasValue = !!((filter instanceof NgtCustomFilter && filter.term) || filter);
|
|
346
|
+
const isApplied = this.hasAppliedFilter(reference);
|
|
348
347
|
return isApplied || (!isApplied && hasValue);
|
|
349
348
|
}
|
|
350
349
|
destroySubscriptions() {
|
|
@@ -428,4 +427,4 @@ export class NgtCheckedElement {
|
|
|
428
427
|
}
|
|
429
428
|
export class NgtCustomFilter {
|
|
430
429
|
}
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRhdGF0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtZGF0YXRhYmxlL25ndC1kYXRhdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGF0YWJsZS9uZ3QtZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7OztBQVk1RCxNQUFNLE9BQU8scUJBQXFCO0lBbUQ5QixZQUNZLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLGNBQWlDLEVBRWxDLG1CQUF3QztRQUp2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFFbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWxEbkMsU0FBSSxHQUFxQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDakQscUJBQWdCLEdBQVcsYUFBYSxDQUFDO1FBQ3pDLG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBQ2pDLHFCQUFnQixHQUFXLGNBQWMsQ0FBQztRQUUxQyxnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUMxQix3QkFBbUIsR0FBVyxDQUFDLENBQUM7UUFDaEMsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBQ2xDLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUV2QixpQkFBWSxH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QUFMRCxXQUFZLGlCQUFpQjtJQUN6Qix5RUFBZ0IsQ0FBQTtJQUNoQixxRUFBYyxDQUFBO0lBQ2QsMkVBQWlCLENBQUE7SUFDakIsNkVBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUI7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0NBSTdCO0FBRUQsTUFBTSxPQUFPLGVBQWU7Q0FJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZ2V0RW51bUZyb21TdHJpbmcgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW0vZW51bSc7XG5pbXBvcnQgeyBOZ3RIdHRwUGFnaW5hdGlvbiwgTmd0SHR0cFJlc3BvbnNlLCBOZ3RIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvbmd0LWh0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC9uZ3QtdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9uZ3QtaW5wdXQvbmd0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL25ndC1tb2RhbC9uZ3QtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE5ndFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtcGFnaW5hdGlvbi9uZ3QtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1kYXRhdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3QtZGF0YXRhYmxlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3REYXRhdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgdGFibGU6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnbmd0UGFnaW5hdGlvbicsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBuZ3RQYWdpbmF0aW9uOiBOZ3RQYWdpbmF0aW9uQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaE1vZGFsJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNlYXJjaE1vZGFsOiBOZ3RNb2RhbENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyByZW1vdGVSZXNvdXJjZTogYW55O1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBOZ3REYXRhdGFibGVUeXBlID0gTmd0RGF0YXRhYmxlVHlwZS5SRU1PVEU7XG4gICAgQElucHV0KCkgcHVibGljIGZpbHRlclRhZ0JnQ29sb3I6IHN0cmluZyA9ICdiZy1ibHVlLTUwMCc7XG4gICAgQElucHV0KCkgcHVibGljIGZpbHRlclRhZ01hcmdpbjogc3RyaW5nID0gJ21iLTQnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwYWdpbmF0aW9uTWFyZ2luOiBzdHJpbmcgPSAnbXQtMiBtZDptdC04JztcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5wdXRTZWFyY2g6IE5ndElucHV0Q29tcG9uZW50O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hEZWxheTogbnVtYmVyID0gNTAwO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hUZXJtTWluTGVuZ3RoOiBudW1iZXIgPSAxO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hUZXJtT25FbnRlcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIGRlZmF1bHRGaWx0ZXJzOiBhbnkgPSB7fTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyc0Rlc2NyaXB0aW9uID0ge307XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uRGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNsZWFyRmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQ2xlYXJTZWxlY3RlZEVsZW1lbnRzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uU2VsZWN0ZWRFbGVtZW50c0NoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE5ndENoZWNrZWRFbGVtZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblRvb2dsZUFsbENoZWNrYm94ZXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25Ub29nbGVDaGVja2JveDogRXZlbnRFbWl0dGVyPE5ndENoZWNrZWRFbGVtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uT3BlblNlYXJjaE1vZGFsOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBzZWFyY2hNb2RhbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBkYXRhID0gW107XG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgY2xlYW5pbmdGaWx0ZXIgPSBmYWxzZTtcbiAgICBwdWJsaWMgY29tcG9uZW50UmVhZHkgPSBmYWxzZTtcbiAgICBwdWJsaWMgZmlsdGVyc1RyYW5zbGF0ZWQgPSBbXTtcbiAgICBwdWJsaWMgZW1wdHlTdGF0ZVZpc2libGU6IGJvb2xlYW47XG4gICAgcHVibGljIGNvbHVtbkNvdW50ID0gW107XG4gICAgcHVibGljIHNlbGVjdGVkRWxlbWVudHM6IEFycmF5PE5ndENoZWNrZWRFbGVtZW50PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBzZWFyY2hpbmc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBzZWFyY2hUaW1lb3V0OiBhbnk7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gICAgcHJpdmF0ZSBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiB7fSxcbiAgICAgICAgICAgIHNpbGVudEZpbHRlcnM6IHt9LFxuICAgICAgICAgICAgcXVhbGlmaWVkRmlsdGVyczoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGZpZWxkOiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJydcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIG5ndEh0dHBTZXJ2aWNlOiBOZ3RIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHB1YmxpYyBuZ3RUcmFuc2xhdGVTZXJ2aWNlOiBOZ3RUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGUgJiYgdGhpcy50YWJsZS5uYXRpdmVFbGVtZW50ICYmIHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5yb3dzXG4gICAgICAgICAgICAmJiB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucm93c1swXSAmJiB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucm93c1swXS5jZWxscykge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5yb3dzWzBdLmNlbGxzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNlYXJjaFdpdGhJbnB1dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbml0Q2hlY2tib3hFdmVudCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaERlbGF5ID09IDUwMCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEZWxheSA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdOZ3REYXRhdGFibGVTZWFyY2hEZWxheScsIDUwMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtTWluTGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybU1pbkxlbmd0aCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdOZ3REYXRhdGFibGVTZWFyY2hUZXJtTWluTGVuZ3RoJywgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VhcmNoTW9kYWxUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLnNlYXJjaE1vZGFsVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlblNlYXJjaE1vZGFsKHJlZmVyZW5jZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlYXJjaE1vZGFsLm9wZW4oKTtcbiAgICAgICAgdGhpcy5vbk9wZW5TZWFyY2hNb2RhbC5lbWl0KHJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyU2VsZWN0ZWRFbGVtZW50cygpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMub25DbGVhclNlbGVjdGVkRWxlbWVudHMuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWFkeSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaChcbiAgICAgICAgZmlsdGVyczogT2JqZWN0LFxuICAgICAgICBzZWFyY2hUeXBlOiBOZ3REYXRhdGFibGVTZWFyY2hUeXBlID0gTmd0RGF0YXRhYmxlU2VhcmNoVHlwZS5ERUZBVUxULFxuICAgICAgICBhcHBseURlbGF5T25TZWFyY2g6IGJvb2xlYW4gPSB0cnVlXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmNhbkFwcGx5RmlsdGVycyhmaWx0ZXJzKSkge1xuICAgICAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlcnMpO1xuXG4gICAgICAgICAgICBpZiAoc2VhcmNoVHlwZSA9PSBOZ3REYXRhdGFibGVTZWFyY2hUeXBlLkRFRkFVTFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzID0geyAuLi50aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzLCAuLi5maWx0ZXJzIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyA9IHsgLi4udGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5zaWxlbnRGaWx0ZXJzLCAuLi5maWx0ZXJzIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzRGVzY3JpcHRpb24oKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHkoMSwgYXBwbHlEZWxheU9uU2VhcmNoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzb3J0KGZpZWxkOiBhbnksIGRpcmVjdGlvbjogYW55KSB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXRlLnNvcnQgPSB7XG4gICAgICAgICAgICBmaWVsZDogZmllbGQsXG4gICAgICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvblxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5KHRoaXMubmd0UGFnaW5hdGlvbi5nZXRDdXJyZW50UGFnZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVmcmVzaChzdGF5SW5QYWdlOiBOZ3REYXRhdGFibGVQYXJhbSA9IE5ndERhdGF0YWJsZVBhcmFtLlJFU0VUX1BBR0UsIGxvYWRlcjogTmd0RGF0YXRhYmxlUGFyYW0gPSBOZ3REYXRhdGFibGVQYXJhbS5FTkFCTEVfTE9BREVSKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5KFxuICAgICAgICAgICAgc3RheUluUGFnZSA/IHRoaXMubmd0UGFnaW5hdGlvbi5nZXRDdXJyZW50UGFnZSgpIDogMSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgbG9hZGVyXG4gICAgICAgICkudGhlbigoKSA9PiAhdGhpcy5kYXRhPy5sZW5ndGggPyB0aGlzLmFwcGx5KDEsIGZhbHNlKSA6IG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50U29ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlLnNvcnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBlclBhZ2UocGVyUGFnZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbi5vblJlZ2lzdGVyc1BlclBhZ2VDaGFuZ2UocGVyUGFnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGx5RmlsdGVyc0Rlc2NyaXB0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2xlYW5pbmdGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1RyYW5zbGF0ZWQgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgcmVmZXJlbmNlIGluIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzRGVzY3JpcHRpb25bcmVmZXJlbmNlXSAmJiB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzW3JlZmVyZW5jZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzVHJhbnNsYXRlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnNbcmVmZXJlbmNlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uOiB0aGlzLmZpbHRlcnNEZXNjcmlwdGlvbltyZWZlcmVuY2VdXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGaWx0ZXJEZXNjcmlwdGlvbihyZWZlcmVuY2U6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLmZpbHRlcnNEZXNjcmlwdGlvbltyZWZlcmVuY2VdID0gZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZUZpbHRlcihyZWZlcmVuY2U/OiBzdHJpbmcsIHJlZnJlc2g6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGlmIChyZWZlcmVuY2UgJiYgIXRoaXMuaGFzQXBwbGllZEZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jbGVhbmluZ0ZpbHRlciA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5kZWZhdWx0RmlsdGVycyA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc1RyYW5zbGF0ZWQgPSBbXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnNbcmVmZXJlbmNlXTtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5zaWxlbnRGaWx0ZXJzW3JlZmVyZW5jZV07XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNUcmFuc2xhdGVkID0gdGhpcy5maWx0ZXJzVHJhbnNsYXRlZC5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50ICYmIGVsZW1lbnQucmVmZXJlbmNlICE9PSByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uQ2xlYXJGaWx0ZXIuZW1pdChyZWZlcmVuY2UpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dFNlYXJjaCAmJiAocmVmZXJlbmNlID09PSAndGVybScgfHwgIXJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0U2VhcmNoLmNsZWFySW5wdXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0aGlzLm5ndFBhZ2luYXRpb24uZ2V0Q3VycmVudFBhZ2UoKSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYW5pbmdGaWx0ZXIgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzQXBwbGllZEZpbHRlcihmaWx0ZXI6IE9iamVjdCB8IE5ndEN1c3RvbUZpbHRlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCByZWZlcmVuY2U6IHN0cmluZyA9IHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnID8gZmlsdGVyIDogT2JqZWN0LmtleXMoZmlsdGVyID8/IHt9KVswXTtcbiAgICAgICAgY29uc3QgYXBwbGllZEZpbHRlcnMgPSB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLnF1YWxpZmllZEZpbHRlcnM7XG5cbiAgICAgICAgcmV0dXJuICEhT2JqZWN0LmtleXMoYXBwbGllZEZpbHRlcnMpLmZpbmQoa2V5ID0+IGtleSA9PSByZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNBcHBsaWVkRmlsdGVycyhzZWFyY2hUeXBlOiBOZ3REYXRhdGFibGVTZWFyY2hUeXBlID0gTmd0RGF0YXRhYmxlU2VhcmNoVHlwZS5ERUZBVUxUKSB7XG4gICAgICAgIGxldCBhcHBsaWVkRmlsdGVycyA9IHt9O1xuXG4gICAgICAgIGlmIChzZWFyY2hUeXBlID09IE5ndERhdGF0YWJsZVNlYXJjaFR5cGUuREVGQVVMVCkge1xuICAgICAgICAgICAgYXBwbGllZEZpbHRlcnMgPSB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzO1xuICAgICAgICB9IGVsc2UgaWYgKHNlYXJjaFR5cGUgPT0gTmd0RGF0YXRhYmxlU2VhcmNoVHlwZS5TSUxFTlQpIHtcbiAgICAgICAgICAgIGFwcGxpZWRGaWx0ZXJzID0gdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5zaWxlbnRGaWx0ZXJzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbGllZEZpbHRlcnMgPSB7IC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnMsIC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhT2JqZWN0LnZhbHVlcyhhcHBsaWVkRmlsdGVycyk/LmZpbmQoZmlsdGVyID0+ICEhZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5pbnB1dFNlYXJjaCkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMuaW5wdXRTZWFyY2guY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2VhcmNoV2l0aElucHV0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy50eXBlKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBnZXRFbnVtRnJvbVN0cmluZyhjaGFuZ2VzLnR5cGUuY3VycmVudFZhbHVlLCBOZ3REYXRhdGFibGVUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBhcHBseShwYWdlID0gMSwgYXBwbHlEZWxheU9uU2VhcmNoOiBib29sZWFuID0gdHJ1ZSwgbG9hZGVyOiBOZ3REYXRhdGFibGVQYXJhbSA9IE5ndERhdGF0YWJsZVBhcmFtLkVOQUJMRV9MT0FERVIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbi5kaXNwbGF5UGFnaW5hdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IE5ndERhdGF0YWJsZVR5cGUuUkVNT1RFKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVtb3RlUmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZFZpc2liaWxpdHlBdHRyaWJ1dGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwbHlEZWxheU9uU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKHBhZ2UpLnRoZW4oKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuc2VhcmNoRGVsYXkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YShwYWdlKS50aGVuKCgpID0+IHJlc29sdmUoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgcHJvcGVydHkgW3JlbW90ZVJlc291cmNlXSBuZWVkcyB0byBiZSBwcmVzZW50IHRvIGJlIGFibGUgdG8gbWFrZSByZW1vdGUgc2VhcmNoJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTmd0RGF0YXRhYmxlVHlwZS5GSVhFRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFZpc2liaWxpdHlBdHRyaWJ1dGVzKCk7XG5cbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZERhdGEocGFnZTogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYWdpbmF0aW9uOiBOZ3RIdHRwUGFnaW5hdGlvbiA9IHsgLi4udGhpcy5uZ3RQYWdpbmF0aW9uLmdldFBhZ2luYXRpb24oKSwgLi4ueyBwYWdlOiBwYWdlIH0gfTtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5xdWFsaWZpZWRGaWx0ZXJzID0gdGhpcy5nZXRRdWFsaWZpZWRGaWx0ZXJzKCk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0U2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFNlYXJjaC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5uZ3RIdHRwU2VydmljZS5nZXQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlUmVzb3VyY2UsIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMucXVhbGlmaWVkRmlsdGVycywgcGFnaW5hdGlvbiwgdGhpcy5jdXJyZW50U3RhdGUuc29ydFxuICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2U6IE5ndEh0dHBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jY2Vzc1JlbW90ZVJlc3BvbnNlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uLnByb2NjZXNzUGFnaW5hdGlvbihyZXNwb25zZS5tZXRhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRTZWFyY2guaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YUNoYW5nZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRWaXNpYmlsaXR5QXR0cmlidXRlcygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRTZWFyY2guaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRRdWFsaWZpZWRGaWx0ZXJzKCkge1xuICAgICAgICBjb25zdCBxdWFsaWZpZWRGaWx0ZXJzID0ge307XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZEZpbHRlcnMgPSB7IC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnMsIC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyB9O1xuXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRGaWx0ZXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBpbiByZXF1ZXN0ZWRGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gcmVxdWVzdGVkRmlsdGVyc1tyZWZlcmVuY2VdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZEZpbHRlcihmaWx0ZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgaW5zdGFuY2VvZiBOZ3RDdXN0b21GaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIudGFnTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNEZXNjcmlwdGlvbltyZWZlcmVuY2VdID0gZmlsdGVyLnRhZ0xhYmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzRGVzY3JpcHRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGlmaWVkRmlsdGVyc1tyZWZlcmVuY2VdID0gZmlsdGVyLnRlcm07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFsaWZpZWRGaWx0ZXJzW3JlZmVyZW5jZV0gPSBmaWx0ZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcXVhbGlmaWVkRmlsdGVycztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRWaXNpYmlsaXR5QXR0cmlidXRlcygpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBOZ3REYXRhdGFibGVUeXBlLlJFTU9URSAmJiAhdGhpcy5kYXRhLmxlbmd0aCAmJiAhdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmVtcHR5U3RhdGVWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTmd0RGF0YXRhYmxlVHlwZS5GSVhFRCkge1xuICAgICAgICAgICAgdGhpcy5lbXB0eVN0YXRlVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbXB0eVN0YXRlVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jY2Vzc1JlbW90ZVJlc3BvbnNlKHJlc3BvbnNlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2VhcmNoV2l0aElucHV0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMuaW5wdXRTZWFyY2gub25WYWx1ZUNoYW5nZSgpLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzWyd0ZXJtJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWx0ZXIoJ3Rlcm0nKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPCB0aGlzLnNlYXJjaFRlcm1NaW5MZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzWyd0ZXJtJ107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKHsgdGVybTogJycgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID49IHRoaXMuc2VhcmNoVGVybU1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaCh7IHRlcm06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybU9uRW50ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRTZWFyY2guZWxlbWVudC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMTMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRTZWFyY2gudmFsdWUgJiYgdGhpcy5pbnB1dFNlYXJjaC52YWx1ZS5sZW5ndGggPj0gdGhpcy5zZWFyY2hUZXJtTWluTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5KDEsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Q2hlY2tib3hFdmVudCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLm9uVG9vZ2xlQ2hlY2tib3guc3Vic2NyaWJlKChjaGVja2VkRWxlbWVudDogTmd0Q2hlY2tlZEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSB0aGlzLnNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pZCAhPT0gY2hlY2tlZEVsZW1lbnQuaWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWRFbGVtZW50LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goY2hlY2tlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEVsZW1lbnRzQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5BcHBseUZpbHRlcnMoZmlsdGVyczogT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hpbmcpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIGluIGZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkRmlsdGVyKGZpbHRlcnNbcmVmZXJlbmNlXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZEZpbHRlcihmaWx0ZXI6IE9iamVjdCB8IE5ndEN1c3RvbUZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YWx1ZTogc3RyaW5nIHwgTmd0Q3VzdG9tRmlsdGVyID0gT2JqZWN0LnZhbHVlcyhmaWx0ZXIgPz8ge30pWzBdO1xuICAgICAgICBjb25zdCBoYXNWYWx1ZTogYm9vbGVhbiA9ICEhKCh2YWx1ZSBpbnN0YW5jZW9mIE5ndEN1c3RvbUZpbHRlciAmJiB2YWx1ZS50ZXJtKSB8fCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IGlzQXBwbGllZDogYm9vbGVhbiA9IHRoaXMuaGFzQXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuXG4gICAgICAgIHJldHVybiBpc0FwcGxpZWQgfHwgKCFpc0FwcGxpZWQgJiYgaGFzVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gTmd0RGF0YXRhYmxlVHlwZSB7XG4gICAgUkVNT1RFID0gJ1JFTU9URScsXG4gICAgRklYRUQgPSAnRklYRUQnXG59XG5cbmV4cG9ydCBlbnVtIE5ndERhdGF0YWJsZVNlYXJjaFR5cGUge1xuICAgIERFRkFVTFQgPSAnREVGQVVMVCcsXG4gICAgU0lMRU5UID0gJ1NJTEVOVCcsXG59XG5cbmV4cG9ydCBlbnVtIE5ndERhdGF0YWJsZVBhcmFtIHtcbiAgICBTVEFZX0lOX1BBR0UgPSAxLFxuICAgIFJFU0VUX1BBR0UgPSAwLFxuICAgIEVOQUJMRV9MT0FERVIgPSAxLFxuICAgIERJU0FCTEVfTE9BREVSID0gMFxufVxuXG5leHBvcnQgY2xhc3MgTmd0Q2hlY2tlZEVsZW1lbnQge1xuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xuICAgIHB1YmxpYyBjaGVja2VkOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWZlcmVuY2U6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE5ndEN1c3RvbUZpbHRlciB7XG4gICAgcHVibGljIHRlcm06IHN0cmluZztcbiAgICBwdWJsaWMgdGFnVmFsdWU6IHN0cmluZztcbiAgICBwdWJsaWMgdGFnTGFiZWw/OiBzdHJpbmc7XG59XG4iLCI8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIHctZnVsbFwiPlxuICAgICAgICA8bmd0LXRhZyAqbmdJZj1cImhhc0FwcGxpZWRGaWx0ZXJzKClcIiBjbGFzcz1cInctZnVsbCBzbTp3LWF1dG8ge3sgZmlsdGVyVGFnTWFyZ2luIH19XCJcbiAgICAgICAgICAgIFtjbGFzcy5zbTptci00XT1cImZpbHRlclRhZ01hcmdpbiA9PSAnbWItNCdcIiBjb2xvci5iZz1cImJnLXJlZC01MDBcIiAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKClcIiBuZ3Qtc3R5bGl6YWJsZT5cbiAgICAgICAgICAgIExpbXBhciBGaWx0cm9zXG4gICAgICAgIDwvbmd0LXRhZz5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQXBwbGllZEZpbHRlcnMoKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlcnNUcmFuc2xhdGVkXCI+XG4gICAgICAgICAgICAgICAgPG5ndC10YWcgY2xhc3M9XCJ3LWZ1bGwgc206dy1hdXRvIHt7IGZpbHRlclRhZ01hcmdpbiB9fVwiIFtjbGFzcy5zbTptci00XT1cImZpbHRlclRhZ01hcmdpbiA9PSAnbWItNCdcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3IuYmddPVwiZmlsdGVyVGFnQmdDb2xvclwiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoZmlsdGVyLnJlZmVyZW5jZSlcIiBuZ3Qtc3R5bGl6YWJsZT5cbiAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLnRyYW5zbGF0aW9uICsgJzogJyArIChmaWx0ZXI/LnZhbHVlPy50YWdWYWx1ZSA/IGZpbHRlci52YWx1ZS50YWdWYWx1ZSA6IGZpbHRlci52YWx1ZSl9fVxuICAgICAgICAgICAgICAgIDwvbmd0LXRhZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDx0YWJsZSBzdHlsZT1cImRpc3BsYXk6IHRhYmxlO1wiIGNsYXNzPVwidGV4dC1sZWZ0IHctZnVsbCBib3JkZXItY29sbGFwc2UgdGFibGUtcmVzcG9uc2l2ZVwiICN0YWJsZT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvdGFibGU+XG5cbiAgICA8cCAqbmdJZj1cImVtcHR5U3RhdGVWaXNpYmxlXCIgY2xhc3M9XCJtdC04IG14LWF1dG8gc2VsZi1jZW50ZXIgdGV4dC1jZW50ZXIgdGV4dC14bFwiPlxuICAgICAgICB7eyBuZ3RUcmFuc2xhdGVTZXJ2aWNlLm5ndERhdGF0YWJsZU5vRGF0YUZvdW5kIH19XG4gICAgPC9wPlxuXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaSBvZiBbMSwgMiwgMywgNF1cIiBjbGFzcz1cImZsZXggdy1mdWxsIG10LTNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5Db3VudC5sZW5ndGggPj0gMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGogb2YgY29sdW1uQ291bnQ7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5ndC1zaGluaW5nIGNsYXNzPVwiaC0xMCB3LWZ1bGxcIj48L25ndC1zaGluaW5nPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsIG1yLTEwXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbkNvdW50Lmxlbmd0aCA8IDJcIj5cbiAgICAgICAgICAgICAgICA8bmd0LXNoaW5pbmcgY2xhc3M9XCJoLTEwIHctZnVsbFwiPjwvbmd0LXNoaW5pbmc+XG4gICAgICAgICAgICAgICAgPG5ndC1zaGluaW5nIGNsYXNzPVwiaC0xMCB3LWZ1bGwgbXItMTAgbWwtMTBcIj48L25ndC1zaGluaW5nPlxuICAgICAgICAgICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiY2xlYXJmaXgge3sgcGFnaW5hdGlvbk1hcmdpbiB9fVwiIFtoaWRkZW5dPSchZGF0YSB8fCBkYXRhLmxlbmd0aCA9PSAwJz5cbiAgICA8bmd0LXBhZ2luYXRpb24gW3BhZ2VzSW50ZXJ2YWxdPSc0JyAob25QYWdlQ2hhbmdlKT0nYXBwbHkoJGV2ZW50LCBmYWxzZSknIChvblBlclBhZ2VDaGFuZ2UpPSdhcHBseSgxLCBmYWxzZSknXG4gICAgICAgICNuZ3RQYWdpbmF0aW9uPlxuICAgIDwvbmd0LXBhZ2luYXRpb24+XG48L2Rpdj5cblxuPG5ndC1tb2RhbCAjc2VhcmNoTW9kYWwgW2N1c3RvbUxheW91dF09J3RydWUnPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hNb2RhbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L25ndC1tb2RhbD4iXX0=
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRhdGF0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtZGF0YXRhYmxlL25ndC1kYXRhdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGF0YWJsZS9uZ3QtZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7OztBQVk1RCxNQUFNLE9BQU8scUJBQXFCO0lBbUQ5QixZQUNZLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLGNBQWlDLEVBRWxDLG1CQUF3QztRQUp2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFFbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWxEbkMsU0FBSSxHQUFxQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDakQscUJBQWdCLEdBQVcsYUFBYSxDQUFDO1FBQ3pDLG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBQ2pDLHFCQUFnQixHQUFXLGNBQWMsQ0FBQztRQUUxQyxnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUMxQix3QkFBbUIsR0FBVyxDQUFDLENBQUM7UUFDaEMsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBQ2xDLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUV2QixpQkFBWSxH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O0lBQ2QsMkVBQWlCLENBQUE7SUFDakIsNkVBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUI7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0NBSTdCO0FBRUQsTUFBTSxPQUFPLGVBQWU7Q0FJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZ2V0RW51bUZyb21TdHJpbmcgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW0vZW51bSc7XG5pbXBvcnQgeyBOZ3RIdHRwUGFnaW5hdGlvbiwgTmd0SHR0cFJlc3BvbnNlLCBOZ3RIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvbmd0LWh0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC9uZ3QtdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9uZ3QtaW5wdXQvbmd0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL25ndC1tb2RhbC9uZ3QtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE5ndFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtcGFnaW5hdGlvbi9uZ3QtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1kYXRhdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3QtZGF0YXRhYmxlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3REYXRhdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgdGFibGU6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnbmd0UGFnaW5hdGlvbicsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBuZ3RQYWdpbmF0aW9uOiBOZ3RQYWdpbmF0aW9uQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaE1vZGFsJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNlYXJjaE1vZGFsOiBOZ3RNb2RhbENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyByZW1vdGVSZXNvdXJjZTogYW55O1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBOZ3REYXRhdGFibGVUeXBlID0gTmd0RGF0YXRhYmxlVHlwZS5SRU1PVEU7XG4gICAgQElucHV0KCkgcHVibGljIGZpbHRlclRhZ0JnQ29sb3I6IHN0cmluZyA9ICdiZy1ibHVlLTUwMCc7XG4gICAgQElucHV0KCkgcHVibGljIGZpbHRlclRhZ01hcmdpbjogc3RyaW5nID0gJ21iLTQnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwYWdpbmF0aW9uTWFyZ2luOiBzdHJpbmcgPSAnbXQtMiBtZDptdC04JztcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5wdXRTZWFyY2g6IE5ndElucHV0Q29tcG9uZW50O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hEZWxheTogbnVtYmVyID0gNTAwO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hUZXJtTWluTGVuZ3RoOiBudW1iZXIgPSAxO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hUZXJtT25FbnRlcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIGRlZmF1bHRGaWx0ZXJzOiBhbnkgPSB7fTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyc0Rlc2NyaXB0aW9uID0ge307XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uRGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNsZWFyRmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQ2xlYXJTZWxlY3RlZEVsZW1lbnRzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uU2VsZWN0ZWRFbGVtZW50c0NoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE5ndENoZWNrZWRFbGVtZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblRvb2dsZUFsbENoZWNrYm94ZXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25Ub29nbGVDaGVja2JveDogRXZlbnRFbWl0dGVyPE5ndENoZWNrZWRFbGVtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uT3BlblNlYXJjaE1vZGFsOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBzZWFyY2hNb2RhbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBkYXRhID0gW107XG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgY2xlYW5pbmdGaWx0ZXIgPSBmYWxzZTtcbiAgICBwdWJsaWMgY29tcG9uZW50UmVhZHkgPSBmYWxzZTtcbiAgICBwdWJsaWMgZmlsdGVyc1RyYW5zbGF0ZWQgPSBbXTtcbiAgICBwdWJsaWMgZW1wdHlTdGF0ZVZpc2libGU6IGJvb2xlYW47XG4gICAgcHVibGljIGNvbHVtbkNvdW50ID0gW107XG4gICAgcHVibGljIHNlbGVjdGVkRWxlbWVudHM6IEFycmF5PE5ndENoZWNrZWRFbGVtZW50PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBzZWFyY2hpbmc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBzZWFyY2hUaW1lb3V0OiBhbnk7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gICAgcHJpdmF0ZSBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiB7fSxcbiAgICAgICAgICAgIHNpbGVudEZpbHRlcnM6IHt9LFxuICAgICAgICAgICAgcXVhbGlmaWVkRmlsdGVyczoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGZpZWxkOiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJydcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIG5ndEh0dHBTZXJ2aWNlOiBOZ3RIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHB1YmxpYyBuZ3RUcmFuc2xhdGVTZXJ2aWNlOiBOZ3RUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGUgJiYgdGhpcy50YWJsZS5uYXRpdmVFbGVtZW50ICYmIHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5yb3dzXG4gICAgICAgICAgICAmJiB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucm93c1swXSAmJiB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucm93c1swXS5jZWxscykge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5yb3dzWzBdLmNlbGxzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNlYXJjaFdpdGhJbnB1dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbml0Q2hlY2tib3hFdmVudCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaERlbGF5ID09IDUwMCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEZWxheSA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdOZ3REYXRhdGFibGVTZWFyY2hEZWxheScsIDUwMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtTWluTGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybU1pbkxlbmd0aCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdOZ3REYXRhdGFibGVTZWFyY2hUZXJtTWluTGVuZ3RoJywgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VhcmNoTW9kYWxUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLnNlYXJjaE1vZGFsVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlblNlYXJjaE1vZGFsKHJlZmVyZW5jZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlYXJjaE1vZGFsLm9wZW4oKTtcbiAgICAgICAgdGhpcy5vbk9wZW5TZWFyY2hNb2RhbC5lbWl0KHJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyU2VsZWN0ZWRFbGVtZW50cygpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMub25DbGVhclNlbGVjdGVkRWxlbWVudHMuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWFkeSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaChcbiAgICAgICAgZmlsdGVyczogT2JqZWN0LFxuICAgICAgICBzZWFyY2hUeXBlOiBOZ3REYXRhdGFibGVTZWFyY2hUeXBlID0gTmd0RGF0YXRhYmxlU2VhcmNoVHlwZS5ERUZBVUxULFxuICAgICAgICBhcHBseURlbGF5T25TZWFyY2g6IGJvb2xlYW4gPSB0cnVlXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmNhbkFwcGx5RmlsdGVycyhmaWx0ZXJzKSkge1xuICAgICAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlcnMpO1xuXG4gICAgICAgICAgICBpZiAoc2VhcmNoVHlwZSA9PSBOZ3REYXRhdGFibGVTZWFyY2hUeXBlLkRFRkFVTFQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzID0geyAuLi50aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzLCAuLi5maWx0ZXJzIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyA9IHsgLi4udGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5zaWxlbnRGaWx0ZXJzLCAuLi5maWx0ZXJzIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzRGVzY3JpcHRpb24oKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHkoMSwgYXBwbHlEZWxheU9uU2VhcmNoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzb3J0KGZpZWxkOiBhbnksIGRpcmVjdGlvbjogYW55KSB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXRlLnNvcnQgPSB7XG4gICAgICAgICAgICBmaWVsZDogZmllbGQsXG4gICAgICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvblxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5KHRoaXMubmd0UGFnaW5hdGlvbi5nZXRDdXJyZW50UGFnZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVmcmVzaChzdGF5SW5QYWdlOiBOZ3REYXRhdGFibGVQYXJhbSA9IE5ndERhdGF0YWJsZVBhcmFtLlJFU0VUX1BBR0UsIGxvYWRlcjogTmd0RGF0YXRhYmxlUGFyYW0gPSBOZ3REYXRhdGFibGVQYXJhbS5FTkFCTEVfTE9BREVSKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5KFxuICAgICAgICAgICAgc3RheUluUGFnZSA/IHRoaXMubmd0UGFnaW5hdGlvbi5nZXRDdXJyZW50UGFnZSgpIDogMSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgbG9hZGVyXG4gICAgICAgICkudGhlbigoKSA9PiAhdGhpcy5kYXRhPy5sZW5ndGggPyB0aGlzLmFwcGx5KDEsIGZhbHNlKSA6IG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50U29ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlLnNvcnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBlclBhZ2UocGVyUGFnZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbi5vblJlZ2lzdGVyc1BlclBhZ2VDaGFuZ2UocGVyUGFnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGx5RmlsdGVyc0Rlc2NyaXB0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2xlYW5pbmdGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1RyYW5zbGF0ZWQgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgcmVmZXJlbmNlIGluIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzRGVzY3JpcHRpb25bcmVmZXJlbmNlXSAmJiB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzW3JlZmVyZW5jZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzVHJhbnNsYXRlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnNbcmVmZXJlbmNlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uOiB0aGlzLmZpbHRlcnNEZXNjcmlwdGlvbltyZWZlcmVuY2VdXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGaWx0ZXJEZXNjcmlwdGlvbihyZWZlcmVuY2U6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLmZpbHRlcnNEZXNjcmlwdGlvbltyZWZlcmVuY2VdID0gZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZUZpbHRlcihyZWZlcmVuY2U/OiBzdHJpbmcsIHJlZnJlc2g6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGlmIChyZWZlcmVuY2UgJiYgIXRoaXMuaGFzQXBwbGllZEZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jbGVhbmluZ0ZpbHRlciA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5kZWZhdWx0RmlsdGVycyA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc1RyYW5zbGF0ZWQgPSBbXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnNbcmVmZXJlbmNlXTtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5zaWxlbnRGaWx0ZXJzW3JlZmVyZW5jZV07XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNUcmFuc2xhdGVkID0gdGhpcy5maWx0ZXJzVHJhbnNsYXRlZC5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50ICYmIGVsZW1lbnQucmVmZXJlbmNlICE9PSByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uQ2xlYXJGaWx0ZXIuZW1pdChyZWZlcmVuY2UpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dFNlYXJjaCAmJiAocmVmZXJlbmNlID09PSAndGVybScgfHwgIXJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0U2VhcmNoLmNsZWFySW5wdXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0aGlzLm5ndFBhZ2luYXRpb24uZ2V0Q3VycmVudFBhZ2UoKSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYW5pbmdGaWx0ZXIgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzQXBwbGllZEZpbHRlcihmaWx0ZXI6IE9iamVjdCB8IE5ndEN1c3RvbUZpbHRlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCByZWZlcmVuY2U6IHN0cmluZyA9IHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnID8gZmlsdGVyIDogT2JqZWN0LmtleXMoZmlsdGVyID8/IHt9KVswXTtcbiAgICAgICAgY29uc3QgYXBwbGllZEZpbHRlcnMgPSB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLnF1YWxpZmllZEZpbHRlcnM7XG5cbiAgICAgICAgcmV0dXJuICEhT2JqZWN0LmtleXMoYXBwbGllZEZpbHRlcnMpLmZpbmQoa2V5ID0+IGtleSA9PSByZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNBcHBsaWVkRmlsdGVycyhzZWFyY2hUeXBlOiBOZ3REYXRhdGFibGVTZWFyY2hUeXBlID0gTmd0RGF0YXRhYmxlU2VhcmNoVHlwZS5ERUZBVUxUKSB7XG4gICAgICAgIGxldCBhcHBsaWVkRmlsdGVycyA9IHt9O1xuXG4gICAgICAgIGlmIChzZWFyY2hUeXBlID09IE5ndERhdGF0YWJsZVNlYXJjaFR5cGUuREVGQVVMVCkge1xuICAgICAgICAgICAgYXBwbGllZEZpbHRlcnMgPSB0aGlzLmN1cnJlbnRTdGF0ZS5maWx0ZXJzLmRlZmF1bHRGaWx0ZXJzO1xuICAgICAgICB9IGVsc2UgaWYgKHNlYXJjaFR5cGUgPT0gTmd0RGF0YXRhYmxlU2VhcmNoVHlwZS5TSUxFTlQpIHtcbiAgICAgICAgICAgIGFwcGxpZWRGaWx0ZXJzID0gdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5zaWxlbnRGaWx0ZXJzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbGllZEZpbHRlcnMgPSB7IC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnMsIC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhT2JqZWN0LnZhbHVlcyhhcHBsaWVkRmlsdGVycyk/LmZpbmQoZmlsdGVyID0+ICEhZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5pbnB1dFNlYXJjaCkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMuaW5wdXRTZWFyY2guY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2VhcmNoV2l0aElucHV0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy50eXBlKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBnZXRFbnVtRnJvbVN0cmluZyhjaGFuZ2VzLnR5cGUuY3VycmVudFZhbHVlLCBOZ3REYXRhdGFibGVUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBhcHBseShwYWdlID0gMSwgYXBwbHlEZWxheU9uU2VhcmNoOiBib29sZWFuID0gdHJ1ZSwgbG9hZGVyOiBOZ3REYXRhdGFibGVQYXJhbSA9IE5ndERhdGF0YWJsZVBhcmFtLkVOQUJMRV9MT0FERVIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmd0UGFnaW5hdGlvbi5kaXNwbGF5UGFnaW5hdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IE5ndERhdGF0YWJsZVR5cGUuUkVNT1RFKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVtb3RlUmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZFZpc2liaWxpdHlBdHRyaWJ1dGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwbHlEZWxheU9uU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKHBhZ2UpLnRoZW4oKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuc2VhcmNoRGVsYXkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YShwYWdlKS50aGVuKCgpID0+IHJlc29sdmUoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgcHJvcGVydHkgW3JlbW90ZVJlc291cmNlXSBuZWVkcyB0byBiZSBwcmVzZW50IHRvIGJlIGFibGUgdG8gbWFrZSByZW1vdGUgc2VhcmNoJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTmd0RGF0YXRhYmxlVHlwZS5GSVhFRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFZpc2liaWxpdHlBdHRyaWJ1dGVzKCk7XG5cbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZERhdGEocGFnZTogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYWdpbmF0aW9uOiBOZ3RIdHRwUGFnaW5hdGlvbiA9IHsgLi4udGhpcy5uZ3RQYWdpbmF0aW9uLmdldFBhZ2luYXRpb24oKSwgLi4ueyBwYWdlOiBwYWdlIH0gfTtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhdGUuZmlsdGVycy5xdWFsaWZpZWRGaWx0ZXJzID0gdGhpcy5nZXRRdWFsaWZpZWRGaWx0ZXJzKCk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0U2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFNlYXJjaC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5uZ3RIdHRwU2VydmljZS5nZXQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlUmVzb3VyY2UsIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMucXVhbGlmaWVkRmlsdGVycywgcGFnaW5hdGlvbiwgdGhpcy5jdXJyZW50U3RhdGUuc29ydFxuICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2U6IE5ndEh0dHBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jY2Vzc1JlbW90ZVJlc3BvbnNlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ3RQYWdpbmF0aW9uLnByb2NjZXNzUGFnaW5hdGlvbihyZXNwb25zZS5tZXRhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRTZWFyY2guaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YUNoYW5nZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRWaXNpYmlsaXR5QXR0cmlidXRlcygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRTZWFyY2guaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRRdWFsaWZpZWRGaWx0ZXJzKCkge1xuICAgICAgICBjb25zdCBxdWFsaWZpZWRGaWx0ZXJzID0ge307XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZEZpbHRlcnMgPSB7IC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnMsIC4uLnRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuc2lsZW50RmlsdGVycyB9O1xuXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRGaWx0ZXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBpbiByZXF1ZXN0ZWRGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gcmVxdWVzdGVkRmlsdGVyc1tyZWZlcmVuY2VdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZEZpbHRlcihmaWx0ZXIsIHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciBpbnN0YW5jZW9mIE5ndEN1c3RvbUZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci50YWdMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc0Rlc2NyaXB0aW9uW3JlZmVyZW5jZV0gPSBmaWx0ZXIudGFnTGFiZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnNEZXNjcmlwdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFsaWZpZWRGaWx0ZXJzW3JlZmVyZW5jZV0gPSBmaWx0ZXIudGVybTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllZEZpbHRlcnNbcmVmZXJlbmNlXSA9IGZpbHRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxdWFsaWZpZWRGaWx0ZXJzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZFZpc2liaWxpdHlBdHRyaWJ1dGVzKCkge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBpZiAodGhpcy50eXBlID09IE5ndERhdGF0YWJsZVR5cGUuUkVNT1RFICYmICF0aGlzLmRhdGEubGVuZ3RoICYmICF0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuZW1wdHlTdGF0ZVZpc2libGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBOZ3REYXRhdGFibGVUeXBlLkZJWEVEKSB7XG4gICAgICAgICAgICB0aGlzLmVtcHR5U3RhdGVWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVtcHR5U3RhdGVWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2NjZXNzUmVtb3RlUmVzcG9uc2UocmVzcG9uc2U6IGFueSkge1xuICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2hXaXRoSW5wdXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5pbnB1dFNlYXJjaC5vblZhbHVlQ2hhbmdlKCkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnNbJ3Rlcm0nXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbHRlcigndGVybScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA8IHRoaXMuc2VhcmNoVGVybU1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFN0YXRlLmZpbHRlcnMuZGVmYXVsdEZpbHRlcnNbJ3Rlcm0nXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2goeyB0ZXJtOiAnJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPj0gdGhpcy5zZWFyY2hUZXJtTWluTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKHsgdGVybTogdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtT25FbnRlcikge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFNlYXJjaC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAxMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFNlYXJjaC52YWx1ZSAmJiB0aGlzLmlucHV0U2VhcmNoLnZhbHVlLmxlbmd0aCA+PSB0aGlzLnNlYXJjaFRlcm1NaW5MZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHkoMSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRDaGVja2JveEV2ZW50KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMub25Ub29nbGVDaGVja2JveC5zdWJzY3JpYmUoKGNoZWNrZWRFbGVtZW50OiBOZ3RDaGVja2VkRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBjaGVja2VkRWxlbWVudC5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZEVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChjaGVja2VkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdGVkRWxlbWVudHNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkFwcGx5RmlsdGVycyhmaWx0ZXJzOiBPYmplY3QpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaGluZykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2UgaW4gZmlsdGVycykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRGaWx0ZXIoZmlsdGVyc1tyZWZlcmVuY2VdLCByZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWRGaWx0ZXIoZmlsdGVyOiBzdHJpbmcgfCBOZ3RDdXN0b21GaWx0ZXIsIHJlZmVyZW5jZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGhhc1ZhbHVlOiBib29sZWFuID0gISEoKGZpbHRlciBpbnN0YW5jZW9mIE5ndEN1c3RvbUZpbHRlciAmJiBmaWx0ZXIudGVybSkgfHwgZmlsdGVyKTtcbiAgICAgICAgY29uc3QgaXNBcHBsaWVkOiBib29sZWFuID0gdGhpcy5oYXNBcHBsaWVkRmlsdGVyKHJlZmVyZW5jZSk7XG5cbiAgICAgICAgcmV0dXJuIGlzQXBwbGllZCB8fCAoIWlzQXBwbGllZCAmJiBoYXNWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95U3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBOZ3REYXRhdGFibGVUeXBlIHtcbiAgICBSRU1PVEUgPSAnUkVNT1RFJyxcbiAgICBGSVhFRCA9ICdGSVhFRCdcbn1cblxuZXhwb3J0IGVudW0gTmd0RGF0YXRhYmxlU2VhcmNoVHlwZSB7XG4gICAgREVGQVVMVCA9ICdERUZBVUxUJyxcbiAgICBTSUxFTlQgPSAnU0lMRU5UJyxcbn1cblxuZXhwb3J0IGVudW0gTmd0RGF0YXRhYmxlUGFyYW0ge1xuICAgIFNUQVlfSU5fUEFHRSA9IDEsXG4gICAgUkVTRVRfUEFHRSA9IDAsXG4gICAgRU5BQkxFX0xPQURFUiA9IDEsXG4gICAgRElTQUJMRV9MT0FERVIgPSAwXG59XG5cbmV4cG9ydCBjbGFzcyBOZ3RDaGVja2VkRWxlbWVudCB7XG4gICAgcHVibGljIGlkOiBzdHJpbmc7XG4gICAgcHVibGljIGNoZWNrZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIHJlZmVyZW5jZTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTmd0Q3VzdG9tRmlsdGVyIHtcbiAgICBwdWJsaWMgdGVybTogc3RyaW5nO1xuICAgIHB1YmxpYyB0YWdWYWx1ZTogc3RyaW5nO1xuICAgIHB1YmxpYyB0YWdMYWJlbD86IHN0cmluZztcbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgdy1mdWxsXCI+XG4gICAgICAgIDxuZ3QtdGFnICpuZ0lmPVwiaGFzQXBwbGllZEZpbHRlcnMoKVwiIGNsYXNzPVwidy1mdWxsIHNtOnctYXV0byB7eyBmaWx0ZXJUYWdNYXJnaW4gfX1cIlxuICAgICAgICAgICAgW2NsYXNzLnNtOm1yLTRdPVwiZmlsdGVyVGFnTWFyZ2luID09ICdtYi00J1wiIGNvbG9yLmJnPVwiYmctcmVkLTUwMFwiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoKVwiIG5ndC1zdHlsaXphYmxlPlxuICAgICAgICAgICAgTGltcGFyIEZpbHRyb3NcbiAgICAgICAgPC9uZ3QtdGFnPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNBcHBsaWVkRmlsdGVycygpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyc1RyYW5zbGF0ZWRcIj5cbiAgICAgICAgICAgICAgICA8bmd0LXRhZyBjbGFzcz1cInctZnVsbCBzbTp3LWF1dG8ge3sgZmlsdGVyVGFnTWFyZ2luIH19XCIgW2NsYXNzLnNtOm1yLTRdPVwiZmlsdGVyVGFnTWFyZ2luID09ICdtYi00J1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvci5iZ109XCJmaWx0ZXJUYWdCZ0NvbG9yXCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihmaWx0ZXIucmVmZXJlbmNlKVwiIG5ndC1zdHlsaXphYmxlPlxuICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXIudHJhbnNsYXRpb24gKyAnOiAnICsgKGZpbHRlcj8udmFsdWU/LnRhZ1ZhbHVlID8gZmlsdGVyLnZhbHVlLnRhZ1ZhbHVlIDogZmlsdGVyLnZhbHVlKX19XG4gICAgICAgICAgICAgICAgPC9uZ3QtdGFnPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPHRhYmxlIHN0eWxlPVwiZGlzcGxheTogdGFibGU7XCIgY2xhc3M9XCJ0ZXh0LWxlZnQgdy1mdWxsIGJvcmRlci1jb2xsYXBzZSB0YWJsZS1yZXNwb25zaXZlXCIgI3RhYmxlPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC90YWJsZT5cblxuICAgIDxwICpuZ0lmPVwiZW1wdHlTdGF0ZVZpc2libGVcIiBjbGFzcz1cIm10LTggbXgtYXV0byBzZWxmLWNlbnRlciB0ZXh0LWNlbnRlciB0ZXh0LXhsXCI+XG4gICAgICAgIHt7IG5ndFRyYW5zbGF0ZVNlcnZpY2Uubmd0RGF0YXRhYmxlTm9EYXRhRm91bmQgfX1cbiAgICA8L3A+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpIG9mIFsxLCAyLCAzLCA0XVwiIGNsYXNzPVwiZmxleCB3LWZ1bGwgbXQtM1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbkNvdW50Lmxlbmd0aCA+PSAyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaiBvZiBjb2x1bW5Db3VudDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd0LXNoaW5pbmcgY2xhc3M9XCJoLTEwIHctZnVsbFwiPjwvbmd0LXNoaW5pbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5ndC1zaGluaW5nIGNsYXNzPVwiaC0xMCB3LWZ1bGwgbXItMTBcIj48L25ndC1zaGluaW5nPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uQ291bnQubGVuZ3RoIDwgMlwiPlxuICAgICAgICAgICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICAgICAgICAgICAgICA8bmd0LXNoaW5pbmcgY2xhc3M9XCJoLTEwIHctZnVsbCBtci0xMCBtbC0xMFwiPjwvbmd0LXNoaW5pbmc+XG4gICAgICAgICAgICAgICAgPG5ndC1zaGluaW5nIGNsYXNzPVwiaC0xMCB3LWZ1bGxcIj48L25ndC1zaGluaW5nPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjbGVhcmZpeCB7eyBwYWdpbmF0aW9uTWFyZ2luIH19XCIgW2hpZGRlbl09JyFkYXRhIHx8IGRhdGEubGVuZ3RoID09IDAnPlxuICAgIDxuZ3QtcGFnaW5hdGlvbiBbcGFnZXNJbnRlcnZhbF09JzQnIChvblBhZ2VDaGFuZ2UpPSdhcHBseSgkZXZlbnQsIGZhbHNlKScgKG9uUGVyUGFnZUNoYW5nZSk9J2FwcGx5KDEsIGZhbHNlKSdcbiAgICAgICAgI25ndFBhZ2luYXRpb24+XG4gICAgPC9uZ3QtcGFnaW5hdGlvbj5cbjwvZGl2PlxuXG48bmd0LW1vZGFsICNzZWFyY2hNb2RhbCBbY3VzdG9tTGF5b3V0XT0ndHJ1ZSc+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaE1vZGFsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmd0LW1vZGFsPiJdfQ==
|
package/fesm2015/ng-tailwind.mjs
CHANGED
|
@@ -3850,7 +3850,7 @@ class NgtDatatableComponent {
|
|
|
3850
3850
|
if (requestedFilters) {
|
|
3851
3851
|
for (const reference in requestedFilters) {
|
|
3852
3852
|
const filter = requestedFilters[reference];
|
|
3853
|
-
if (this.isValidFilter(filter)) {
|
|
3853
|
+
if (this.isValidFilter(filter, reference)) {
|
|
3854
3854
|
if (filter instanceof NgtCustomFilter) {
|
|
3855
3855
|
if (filter.tagLabel) {
|
|
3856
3856
|
this.filtersDescription[reference] = filter.tagLabel;
|
|
@@ -3920,17 +3920,16 @@ class NgtDatatableComponent {
|
|
|
3920
3920
|
canApplyFilters(filters) {
|
|
3921
3921
|
if (!this.searching) {
|
|
3922
3922
|
for (const reference in filters) {
|
|
3923
|
-
if (this.isValidFilter(filters[reference])) {
|
|
3923
|
+
if (this.isValidFilter(filters[reference], reference)) {
|
|
3924
3924
|
return true;
|
|
3925
3925
|
}
|
|
3926
3926
|
}
|
|
3927
3927
|
}
|
|
3928
3928
|
return false;
|
|
3929
3929
|
}
|
|
3930
|
-
isValidFilter(filter) {
|
|
3931
|
-
const
|
|
3932
|
-
const
|
|
3933
|
-
const isApplied = this.hasAppliedFilter(filter);
|
|
3930
|
+
isValidFilter(filter, reference) {
|
|
3931
|
+
const hasValue = !!((filter instanceof NgtCustomFilter && filter.term) || filter);
|
|
3932
|
+
const isApplied = this.hasAppliedFilter(reference);
|
|
3934
3933
|
return isApplied || (!isApplied && hasValue);
|
|
3935
3934
|
}
|
|
3936
3935
|
destroySubscriptions() {
|