@senior-agronegocio/angular-components 1.0.15 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/components/modal-invoice-pj/for-load-order/modal-invoice-pj-for-load-order.component.mjs +5 -2
- package/esm2022/fields/lookups/core/agro-base-lookup-field.mjs +14 -2
- package/esm2022/fields/lookups/utils/agro-lookup-utils.mjs +14 -2
- package/fesm2022/senior-agronegocio-angular-components.mjs +30 -3
- package/fesm2022/senior-agronegocio-angular-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -96,7 +96,10 @@ export class ModalInvoicePjForLoadOrderComponent extends ModalInvoicePjBase {
|
|
|
96
96
|
this.gridLoading = false;
|
|
97
97
|
}))
|
|
98
98
|
.subscribe((result) => {
|
|
99
|
-
this.gridData = result?.result?.invoices || []
|
|
99
|
+
this.gridData = (result?.result?.invoices || []).map((invoice) => ({
|
|
100
|
+
...invoice,
|
|
101
|
+
_uniqueId: invoice.externalInvoiceId || invoice.invoiceId
|
|
102
|
+
}));
|
|
100
103
|
if (this.gridData.length === 0 && !searchValue) {
|
|
101
104
|
this.dontHaveAnyInvoice = true;
|
|
102
105
|
}
|
|
@@ -124,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
124
127
|
}], whenSelectInvoices: [{
|
|
125
128
|
type: Output
|
|
126
129
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaW52b2ljZS1wai1mb3ItbG9hZC1vcmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29tcG9uZW50cy9tb2RhbC1pbnZvaWNlLXBqL2Zvci1sb2FkLW9yZGVyL21vZGFsLWludm9pY2UtcGotZm9yLWxvYWQtb3JkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbXBvbmVudHMvbW9kYWwtaW52b2ljZS1wai90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBTzNDLE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxrQkFBa0I7SUFPbkQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBWFgsT0FBTyxDQUFxQztJQUMzQyxrQkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRWxELFdBQVcsQ0FBOEM7SUFFaEUsWUFDb0IsU0FBZ0MsRUFDaEMsY0FBa0MsRUFDbEMsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsUUFBa0I7UUFFbEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFQeEUsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsbUJBQWMsR0FB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LEVBQUU7WUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUMsRUFDRCxHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQ0osQ0FBQztJQUNWLENBQUM7SUFHUSxXQUFXLENBQUMsTUFBOEI7UUFDL0MsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxTQUFTLENBQUMsZ0JBQXFCO1FBQzNCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7d0dBakhRLG1DQUFtQzs0RkFBbkMsbUNBQW1DLHVMQ3BCaEQscXJPQTZJQTs7NEZEekhhLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDSSxtQ0FBbUM7c09BS3BDLE9BQU87c0JBQWYsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9sb2NhbGUnO1xyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RhYmxlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEtpbG9ncmFtUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGUva2lsb2dyYW0nO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9saWItdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZGFsSW52b2ljZVBqQmFzZSB9IGZyb20gJy4uL21vZGFsLWludm9pY2UtcGotYmFzZS5jbGFzcyc7XHJcbmltcG9ydCB7IEFncm9JbnZvaWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fncm8taW52b2ljZSc7XHJcbmltcG9ydCB7IElJbnZvaWNlTG9va3VwRmlsdGVyRm9yU2FsZSwgSUludm9pY2VMb29rdXBSZXNwb25zZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fncm8taW52b2ljZS9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTW9kYWxJbnZvaWNlUGpGb3JMb2FkT3JkZXJPcHRpb25zIH0gZnJvbSAnLi9tb2RhbC1pbnZvaWNlLW9wdGlvbnMtZm9yLWxvYWQtb3JkZXInO1xyXG5pbXBvcnQgeyBUYWJsZUxhenlMb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgQWdyb051bWJlclV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLW1vZGFsLWludm9pY2UtcGotZm9yLWxvYWQtb3JkZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuLi90ZW1wbGF0ZS5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi9zdHlsZS5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RhbEludm9pY2VQakZvckxvYWRPcmRlckNvbXBvbmVudCBleHRlbmRzIE1vZGFsSW52b2ljZVBqQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIG9wdGlvbnMhOiBNb2RhbEludm9pY2VQakZvckxvYWRPcmRlck9wdGlvbnM7XHJcbiAgICBAT3V0cHV0KCkgd2hlblNlbGVjdEludm9pY2VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgICBwdWJsaWMgZ3JpZENvbHVtbnMhOiBQYXJ0aWFsPENvbHVtbiAmIHsgc29ydGFibGU/OiBib29sZWFuIH0+W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIG92ZXJyaWRlIHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBpbnZvaWNlU2VydmljZTogQWdyb0ludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBraWxvZ3JhbVBpcGU6IEtpbG9ncmFtUGlwZSxcclxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBkYXRlUGlwZTogRGF0ZVBpcGVcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHRyYW5zbGF0ZSwgaW52b2ljZVNlcnZpY2UsIGxvY2FsZVNlcnZpY2UsIGtpbG9ncmFtUGlwZSwgbWVzc2FnZVNlcnZpY2UsIGRhdGVQaXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlZmluZUdyaWRDb2x1bW5zKCk7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZpbmVHcmlkQ29sdW1ucygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdyaWRDb2x1bW5zID0gW1xyXG4gICAgICAgICAgICB7IGZpZWxkOiAnbnVtYmVyJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5udW1iZXInKSB9LFxyXG4gICAgICAgICAgICB7IGZpZWxkOiAnc2VyaWVzJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5zZXJpZXMnKSB9LFxyXG4gICAgICAgICAgICB7IGZpZWxkOiAnaW52b2ljZUl0ZW1zJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5pdGVucycpLCBzb3J0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogJ3F1YW50aXR5JywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5xdWFudGl0eScpLCBzb3J0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogJ2lzc3VhbmNlRGF0ZScsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuaXNzdWFuY2VfZGF0ZScpIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2hlY2tJZk9wdGlvbnNJc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGhhc0NvbXBhbnkgPSAhIXRoaXMub3B0aW9ucz8uY29tcGFueUlkO1xyXG4gICAgICAgIGNvbnN0IGhhc0JyYW5jaCA9ICEhdGhpcy5vcHRpb25zPy5icmFuY2hJZDtcclxuICAgICAgICBjb25zdCBoYXNQcm9kdWN0ID0gISF0aGlzLm9wdGlvbnM/LnByb2R1Y3RJZDtcclxuICAgICAgICBjb25zdCBoYXNDbGllbnQgPSAhIXRoaXMub3B0aW9ucz8uY2xpZW50SWQ7XHJcbiAgICAgICAgaWYgKCFoYXNDb21wYW55IHx8ICFoYXNCcmFuY2ggfHwgIWhhc1Byb2R1Y3QgfHwgIWhhc0NsaWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgdXBkYXRlR3JpZERhdGEoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCwgc2VhcmNoVmFsdWU/OiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgdGhpcy5jYW5jZWxQb29saW5nKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgY29tcGFueUlkLCBicmFuY2hJZCwgY2xpZW50SWQsIHByb2R1Y3RJZCB9ID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZG9udEhhdmVBbnlJbnZvaWNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50UGFyYW1zKGV2ZW50KTtcclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFyYW1zLnBhZ2UgPz8gMCxcclxuICAgICAgICAgICAgc2l6ZTogdGhpcy5jdXJyZW50UGFyYW1zLnNpemUgPz8gMTAsXHJcbiAgICAgICAgICAgIHNvcnQ6IHRoaXMuY3VycmVudFBhcmFtcy5zb3J0ID8/IFtdLFxyXG4gICAgICAgICAgICBmaWx0ZXJRdWVyeTogdGhpcy5jdXJyZW50UGFyYW1zLmZpbHRlclF1ZXJ5ID8/ICcnLFxyXG4gICAgICAgICAgICBkaXNwbGF5RmllbGRzOiB0aGlzLmN1cnJlbnRQYXJhbXMuZGlzcGxheUZpZWxkcyA/PyBbJyonLCAnaW52b2ljZUl0ZW1zLionXSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGZpbHRlckJvZHk6IElJbnZvaWNlTG9va3VwRmlsdGVyRm9yU2FsZSA9IHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYW55SWQsXHJcbiAgICAgICAgICAgICAgICBicmFuY2hJZCxcclxuICAgICAgICAgICAgICAgIGNsaWVudElkLFxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwYWdlUmVxdWVzdDoge1xyXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFyYW1zLnBhZ2UsXHJcbiAgICAgICAgICAgICAgICBzaXplOiBjdXJyZW50UGFyYW1zLnNpemUsXHJcbiAgICAgICAgICAgICAgICBvcmRlckJ5OiBjdXJyZW50UGFyYW1zLnNvcnQubWFwKChzb3J0KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBzb3J0LmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBzb3J0Lm9yZGVyID09PSAxID8gJ2FzYycgOiAnZGVzYycsXHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHNlYXJjaFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHNlYXJjaFZhbHVlID0gQWdyb051bWJlclV0aWxzLmdldE5lYXJJbnRlZ2VyKHNlYXJjaFZhbHVlKS50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZVxyXG4gICAgICAgICAgICAuaW52b2ljZUxvb2t1cEZpbHRlckZvclNhbGUoZmlsdGVyQm9keSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IHJlc3VsdD8ucmVzdWx0Py5pbnZvaWNlcyB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkRGF0YS5sZW5ndGggPT09IDAgJiYgIXNlYXJjaFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9udEhhdmVBbnlJbnZvaWNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkVG90YWxSZWNvcmRzID0gcmVzdWx0Py5yZXN1bHQ/LnRvdGFsRWxlbWVudHMgPz8gMDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oJ0Vycm8gYW8gYnVzY2FyIG5vdGFzIGZpc2NhaXM6ICcsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvdmVycmlkZSBhZGFwdFJlc3VsdChyZXN1bHQ6IElJbnZvaWNlTG9va3VwUmVzcG9uc2UpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIGFueSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmVmb3JlQWRkKHNlbGVjdGVkSW52b2ljZXM6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iLCI8cC1kaWFsb2dcclxuICAgIGhlYWRlcj1cInt7ICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5wYW5lbF90aXRsZV9leHRlcm5hbF9pbnZvaWNlX2FkZF9leHRlcm5hbF9pbnZvaWNlJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICBbKHZpc2libGUpXT1cInZpc2libGVcIlxyXG4gICAgW21vZGFsXT1cInRydWVcIlxyXG4gICAgY2xhc3M9XCJhZGQtaW52b2ljZS1tb2RhbFwiXHJcbiAgICBbY2xvc2VPbkVzY2FwZV09XCJmYWxzZVwiXHJcbiAgICAob25IaWRlKT1cImNhbmNlbFBvb2xpbmcoKVwiXHJcbiAgICBbZGlzbWlzc2FibGVNYXNrXT1cImZhbHNlXCJcclxuPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb250SGF2ZUFueUludm9pY2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktZ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZVNlYXJjaElucHV0XCI+e3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm51bWJlcicgfCBsaWJUcmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZVNlYXJjaElucHV0XCJcclxuICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJycgfCBsaWJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWctMTJcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGFibGVEYXRhU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJncmlkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIl91bmlxdWVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cImdyaWRUb3RhbFJlY29yZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYXp5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvbkxhenlMb2FkKT1cInVwZGF0ZUdyaWREYXRhKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNvcnRNb2RlPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cImdyaWRMb2FkaW5nID8gbnVsbCA6ICdtdWx0aXBsZSdcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2tib3hcIiBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggW2Rpc2FibGVkXT1cImdyaWRMb2FkaW5nXCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuc29ydGFibGUgPT09IHVuZGVmaW5lZCB8fCBjb2wuc29ydGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gW2ZpZWxkXT1cImNvbC5maWVsZFwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2UgfHwgY29sLnNvcnRhYmxlID09PSBudWxsXCIgc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dEYXRhIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbY2xhc3MubG9hZGluZy1yb3ddPVwicm93RGF0YS5fX2lzUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoZWNrYm94XCIgdGFiaW5kZXg9XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyb3dEYXRhLl9faXNQbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJyb3dEYXRhXCIgW2Rpc2FibGVkXT1cImdyaWRMb2FkaW5nXCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0RhdGEuX19pc1BsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNlbGwtcGxhY2Vob2xkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNlbGVjdGFibGVSb3ddPVwicm93RGF0YS5fX2lzUGxhY2Vob2xkZXIgPyBudWxsIDogcm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93SW5kZXhdPVwicm93SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcm93RGF0YS5fX2lzUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyaWRGaWVsZFZhbHVlc01hcFtjb2wuZmllbGRdID8gZ3JpZEZpZWxkVmFsdWVzTWFwW2NvbC5maWVsZF0ocm93RGF0YSkgOiByb3dEYXRhW2NvbC5maWVsZF0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctdGV4dC1wbGFjZWhvbGRlclwiICpuZ0lmPVwicm93RGF0YS5fX2lzUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLmZpZWxkXSB8fCAncGxhY2Vob2xkZXInIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInBhZ2luYXRvcnJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdyaWRUb3RhbFJlY29yZHMgfX0gcmVnaXN0cm9zIGVuY29udHJhZG9zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvbnRIYXZlQW55SW52b2ljZVwiPlxyXG4gICAgICAgIDxzLWVtcHR5LXN0YXRlXHJcbiAgICAgICAgICAgIGljb25DbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuYWRkX3BqX2ludm9pY2VfbW9kYWxfbm9faW52b2ljZXNfZm91bmQnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgcHJpbWFyeUFjdGlvbkxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3NlcnZlcl90cnlfYWdhaW4nIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgKHByaW1hcnlBY3Rpb24pPVwidHJ5VG9TZWFyY2hBZ2FpbigpXCJcclxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubm9fcmVnaXN0ZXJfZm91bmRfZm9yX2V4dGVybmFsX2ludm9pY2VzX3N1bW1hcnknIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9zLWVtcHR5LXN0YXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiICpuZ0lmPVwiIWRvbnRIYXZlQW55SW52b2ljZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImludmVydEZvb3RlckFjdGlvbnM7IGVsc2UgZGVmYXVsdEZvb3RlckFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIFtwcmlvcml0eV09XCJCdXR0b25Qcmlvcml0eS5MaW5rXCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7ICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5jYW5jZWwnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICAgID48L3MtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIkJ1dHRvblByaW9yaXR5LlByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnBhbmVsX3RpdGxlX2V4dGVybmFsX2ludm9pY2VfYWRkX2V4dGVybmFsX2ludm9pY2UnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JpZExvYWRpbmcgfHwgIXNlbGVjdGVkLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhZGQoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZvb3RlckFjdGlvbnM+XHJcbiAgICAgICAgICAgIDxzLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIkJ1dHRvblByaW9yaXR5LlByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucGFuZWxfdGl0bGVfZXh0ZXJuYWxfaW52b2ljZV9hZGRfZXh0ZXJuYWxfaW52b2ljZScgfCBsaWJUcmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyaWRMb2FkaW5nIHx8ICFzZWxlY3RlZC5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZCgpXCJcclxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFkZCgpXCJcclxuICAgICAgICAgICAgPjwvcy1idXR0b24+XHJcbiAgICAgICAgICAgIDxzLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIkJ1dHRvblByaW9yaXR5LkxpbmtcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY2FuY2VsJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgPjwvcy1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPlxyXG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaW52b2ljZS1wai1mb3ItbG9hZC1vcmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29tcG9uZW50cy9tb2RhbC1pbnZvaWNlLXBqL2Zvci1sb2FkLW9yZGVyL21vZGFsLWludm9pY2UtcGotZm9yLWxvYWQtb3JkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbXBvbmVudHMvbW9kYWwtaW52b2ljZS1wai90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBTzNDLE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxrQkFBa0I7SUFPbkQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBWFgsT0FBTyxDQUFxQztJQUMzQyxrQkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRWxELFdBQVcsQ0FBOEM7SUFFaEUsWUFDb0IsU0FBZ0MsRUFDaEMsY0FBa0MsRUFDbEMsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsUUFBa0I7UUFFbEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFQeEUsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsbUJBQWMsR0FB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SUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxJQUFJLENBQUMsQ0FBQztRQUMvRCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxFQUNELEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FDSixDQUFDO0lBQ1YsQ0FBQztJQUdRLFdBQVcsQ0FBQyxNQUE4QjtRQUMvQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxnQkFBcUI7UUFDM0IsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQzt3R0FwSFEsbUNBQW1DOzRGQUFuQyxtQ0FBbUMsdUxDcEJoRCxxck9BNklBOzs0RkR6SGEsbUNBQW1DO2tCQUwvQyxTQUFTOytCQUNJLG1DQUFtQztzT0FLcEMsT0FBTztzQkFBZixLQUFLO2dCQUNJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGFibGUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgS2lsb2dyYW1QaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZS9raWxvZ3JhbSc7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kYWxJbnZvaWNlUGpCYXNlIH0gZnJvbSAnLi4vbW9kYWwtaW52b2ljZS1wai1iYXNlLmNsYXNzJztcclxuaW1wb3J0IHsgQWdyb0ludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWdyby1pbnZvaWNlJztcclxuaW1wb3J0IHsgSUludm9pY2VMb29rdXBGaWx0ZXJGb3JTYWxlLCBJSW52b2ljZUxvb2t1cFJlc3BvbnNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWdyby1pbnZvaWNlL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNb2RhbEludm9pY2VQakZvckxvYWRPcmRlck9wdGlvbnMgfSBmcm9tICcuL21vZGFsLWludm9pY2Utb3B0aW9ucy1mb3ItbG9hZC1vcmRlcic7XHJcbmltcG9ydCB7IFRhYmxlTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBBZ3JvTnVtYmVyVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9jb21tb24nO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1tb2RhbC1pbnZvaWNlLXBqLWZvci1sb2FkLW9yZGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi4vdGVtcGxhdGUuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi4vc3R5bGUuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9kYWxJbnZvaWNlUGpGb3JMb2FkT3JkZXJDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEludm9pY2VQakJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSBvcHRpb25zITogTW9kYWxJbnZvaWNlUGpGb3JMb2FkT3JkZXJPcHRpb25zO1xyXG4gICAgQE91dHB1dCgpIHdoZW5TZWxlY3RJbnZvaWNlcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gICAgcHVibGljIGdyaWRDb2x1bW5zITogUGFydGlhbDxDb2x1bW4gJiB7IHNvcnRhYmxlPzogYm9vbGVhbiB9PltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSB0cmFuc2xhdGU6IExpYlRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgaW52b2ljZVNlcnZpY2U6IEFncm9JbnZvaWNlU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUga2lsb2dyYW1QaXBlOiBLaWxvZ3JhbVBpcGUsXHJcbiAgICAgICAgcHVibGljIG92ZXJyaWRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgZGF0ZVBpcGU6IERhdGVQaXBlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcih0cmFuc2xhdGUsIGludm9pY2VTZXJ2aWNlLCBsb2NhbGVTZXJ2aWNlLCBraWxvZ3JhbVBpcGUsIG1lc3NhZ2VTZXJ2aWNlLCBkYXRlUGlwZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZWZpbmVHcmlkQ29sdW1ucygpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVmaW5lR3JpZENvbHVtbnMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgeyBmaWVsZDogJ251bWJlcicsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubnVtYmVyJykgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogJ3NlcmllcycsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuc2VyaWVzJykgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogJ2ludm9pY2VJdGVtcycsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuaXRlbnMnKSwgc29ydGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICdxdWFudGl0eScsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucXVhbnRpdHknKSwgc29ydGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICdpc3N1YW5jZURhdGUnLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmlzc3VhbmNlX2RhdGUnKSB9LFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNoZWNrSWZPcHRpb25zSXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBoYXNDb21wYW55ID0gISF0aGlzLm9wdGlvbnM/LmNvbXBhbnlJZDtcclxuICAgICAgICBjb25zdCBoYXNCcmFuY2ggPSAhIXRoaXMub3B0aW9ucz8uYnJhbmNoSWQ7XHJcbiAgICAgICAgY29uc3QgaGFzUHJvZHVjdCA9ICEhdGhpcy5vcHRpb25zPy5wcm9kdWN0SWQ7XHJcbiAgICAgICAgY29uc3QgaGFzQ2xpZW50ID0gISF0aGlzLm9wdGlvbnM/LmNsaWVudElkO1xyXG4gICAgICAgIGlmICghaGFzQ29tcGFueSB8fCAhaGFzQnJhbmNoIHx8ICFoYXNQcm9kdWN0IHx8ICFoYXNDbGllbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIHVwZGF0ZUdyaWREYXRhKGV2ZW50OiBUYWJsZUxhenlMb2FkRXZlbnQsIHNlYXJjaFZhbHVlPzogc3RyaW5nKSB7XHJcblxyXG4gICAgICAgIHRoaXMuY2FuY2VsUG9vbGluZygpO1xyXG5cclxuICAgICAgICBjb25zdCB7IGNvbXBhbnlJZCwgYnJhbmNoSWQsIGNsaWVudElkLCBwcm9kdWN0SWQgfSA9IHRoaXMub3B0aW9ucztcclxuICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRvbnRIYXZlQW55SW52b2ljZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFBhcmFtcyhldmVudCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMuY3VycmVudFBhcmFtcy5wYWdlID8/IDAsXHJcbiAgICAgICAgICAgIHNpemU6IHRoaXMuY3VycmVudFBhcmFtcy5zaXplID8/IDEwLFxyXG4gICAgICAgICAgICBzb3J0OiB0aGlzLmN1cnJlbnRQYXJhbXMuc29ydCA/PyBbXSxcclxuICAgICAgICAgICAgZmlsdGVyUXVlcnk6IHRoaXMuY3VycmVudFBhcmFtcy5maWx0ZXJRdWVyeSA/PyAnJyxcclxuICAgICAgICAgICAgZGlzcGxheUZpZWxkczogdGhpcy5jdXJyZW50UGFyYW1zLmRpc3BsYXlGaWVsZHMgPz8gWycqJywgJ2ludm9pY2VJdGVtcy4qJ10sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJCb2R5OiBJSW52b2ljZUxvb2t1cEZpbHRlckZvclNhbGUgPSB7XHJcbiAgICAgICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgY29tcGFueUlkLFxyXG4gICAgICAgICAgICAgICAgYnJhbmNoSWQsXHJcbiAgICAgICAgICAgICAgICBjbGllbnRJZCxcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RJZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcGFnZVJlcXVlc3Q6IHtcclxuICAgICAgICAgICAgICAgIG9mZnNldDogY3VycmVudFBhcmFtcy5wYWdlLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogY3VycmVudFBhcmFtcy5zaXplLFxyXG4gICAgICAgICAgICAgICAgb3JkZXJCeTogY3VycmVudFBhcmFtcy5zb3J0Lm1hcCgoc29ydCkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogc29ydC5maWVsZCxcclxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogc29ydC5vcmRlciA9PT0gMSA/ICdhc2MnIDogJ2Rlc2MnLFxyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChzZWFyY2hWYWx1ZSkge1xyXG4gICAgICAgICAgICBzZWFyY2hWYWx1ZSA9IEFncm9OdW1iZXJVdGlscy5nZXROZWFySW50ZWdlcihzZWFyY2hWYWx1ZSkudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2VcclxuICAgICAgICAgICAgLmludm9pY2VMb29rdXBGaWx0ZXJGb3JTYWxlKGZpbHRlckJvZHkpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSAocmVzdWx0Py5yZXN1bHQ/Lmludm9pY2VzIHx8IFtdKS5tYXAoKGludm9pY2UpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmludm9pY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF91bmlxdWVJZDogaW52b2ljZS5leHRlcm5hbEludm9pY2VJZCB8fCBpbnZvaWNlLmludm9pY2VJZFxyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkRGF0YS5sZW5ndGggPT09IDAgJiYgIXNlYXJjaFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9udEhhdmVBbnlJbnZvaWNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkVG90YWxSZWNvcmRzID0gcmVzdWx0Py5yZXN1bHQ/LnRvdGFsRWxlbWVudHMgPz8gMDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oJ0Vycm8gYW8gYnVzY2FyIG5vdGFzIGZpc2NhaXM6ICcsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvdmVycmlkZSBhZGFwdFJlc3VsdChyZXN1bHQ6IElJbnZvaWNlTG9va3VwUmVzcG9uc2UpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIGFueSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmVmb3JlQWRkKHNlbGVjdGVkSW52b2ljZXM6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iLCI8cC1kaWFsb2dcclxuICAgIGhlYWRlcj1cInt7ICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5wYW5lbF90aXRsZV9leHRlcm5hbF9pbnZvaWNlX2FkZF9leHRlcm5hbF9pbnZvaWNlJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICBbKHZpc2libGUpXT1cInZpc2libGVcIlxyXG4gICAgW21vZGFsXT1cInRydWVcIlxyXG4gICAgY2xhc3M9XCJhZGQtaW52b2ljZS1tb2RhbFwiXHJcbiAgICBbY2xvc2VPbkVzY2FwZV09XCJmYWxzZVwiXHJcbiAgICAob25IaWRlKT1cImNhbmNlbFBvb2xpbmcoKVwiXHJcbiAgICBbZGlzbWlzc2FibGVNYXNrXT1cImZhbHNlXCJcclxuPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb250SGF2ZUFueUludm9pY2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktZ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZVNlYXJjaElucHV0XCI+e3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm51bWJlcicgfCBsaWJUcmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIGlkPVwiaW52b2ljZVNlYXJjaElucHV0XCJcclxuICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJycgfCBsaWJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWctMTJcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGFibGVEYXRhU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJncmlkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIl91bmlxdWVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cImdyaWRUb3RhbFJlY29yZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYXp5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvbkxhenlMb2FkKT1cInVwZGF0ZUdyaWREYXRhKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNvcnRNb2RlPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cImdyaWRMb2FkaW5nID8gbnVsbCA6ICdtdWx0aXBsZSdcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2tib3hcIiBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggW2Rpc2FibGVkXT1cImdyaWRMb2FkaW5nXCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuc29ydGFibGUgPT09IHVuZGVmaW5lZCB8fCBjb2wuc29ydGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gW2ZpZWxkXT1cImNvbC5maWVsZFwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2UgfHwgY29sLnNvcnRhYmxlID09PSBudWxsXCIgc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dEYXRhIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbY2xhc3MubG9hZGluZy1yb3ddPVwicm93RGF0YS5fX2lzUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoZWNrYm94XCIgdGFiaW5kZXg9XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyb3dEYXRhLl9faXNQbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJyb3dEYXRhXCIgW2Rpc2FibGVkXT1cImdyaWRMb2FkaW5nXCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0RhdGEuX19pc1BsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNlbGwtcGxhY2Vob2xkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNlbGVjdGFibGVSb3ddPVwicm93RGF0YS5fX2lzUGxhY2Vob2xkZXIgPyBudWxsIDogcm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93SW5kZXhdPVwicm93SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcm93RGF0YS5fX2lzUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyaWRGaWVsZFZhbHVlc01hcFtjb2wuZmllbGRdID8gZ3JpZEZpZWxkVmFsdWVzTWFwW2NvbC5maWVsZF0ocm93RGF0YSkgOiByb3dEYXRhW2NvbC5maWVsZF0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctdGV4dC1wbGFjZWhvbGRlclwiICpuZ0lmPVwicm93RGF0YS5fX2lzUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLmZpZWxkXSB8fCAncGxhY2Vob2xkZXInIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInBhZ2luYXRvcnJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdyaWRUb3RhbFJlY29yZHMgfX0gcmVnaXN0cm9zIGVuY29udHJhZG9zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvbnRIYXZlQW55SW52b2ljZVwiPlxyXG4gICAgICAgIDxzLWVtcHR5LXN0YXRlXHJcbiAgICAgICAgICAgIGljb25DbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuYWRkX3BqX2ludm9pY2VfbW9kYWxfbm9faW52b2ljZXNfZm91bmQnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgcHJpbWFyeUFjdGlvbkxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3NlcnZlcl90cnlfYWdhaW4nIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgKHByaW1hcnlBY3Rpb24pPVwidHJ5VG9TZWFyY2hBZ2FpbigpXCJcclxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubm9fcmVnaXN0ZXJfZm91bmRfZm9yX2V4dGVybmFsX2ludm9pY2VzX3N1bW1hcnknIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9zLWVtcHR5LXN0YXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiICpuZ0lmPVwiIWRvbnRIYXZlQW55SW52b2ljZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImludmVydEZvb3RlckFjdGlvbnM7IGVsc2UgZGVmYXVsdEZvb3RlckFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIFtwcmlvcml0eV09XCJCdXR0b25Qcmlvcml0eS5MaW5rXCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7ICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5jYW5jZWwnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICAgID48L3MtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIkJ1dHRvblByaW9yaXR5LlByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnBhbmVsX3RpdGxlX2V4dGVybmFsX2ludm9pY2VfYWRkX2V4dGVybmFsX2ludm9pY2UnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JpZExvYWRpbmcgfHwgIXNlbGVjdGVkLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhZGQoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZvb3RlckFjdGlvbnM+XHJcbiAgICAgICAgICAgIDxzLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIkJ1dHRvblByaW9yaXR5LlByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucGFuZWxfdGl0bGVfZXh0ZXJuYWxfaW52b2ljZV9hZGRfZXh0ZXJuYWxfaW52b2ljZScgfCBsaWJUcmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyaWRMb2FkaW5nIHx8ICFzZWxlY3RlZC5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZCgpXCJcclxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFkZCgpXCJcclxuICAgICAgICAgICAgPjwvcy1idXR0b24+XHJcbiAgICAgICAgICAgIDxzLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIkJ1dHRvblByaW9yaXR5LkxpbmtcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY2FuY2VsJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgPjwvcy1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPlxyXG4iXX0=
|
|
@@ -4,7 +4,19 @@ import { createGenericOnLookupRequest, createGenericOnSearchRequest } from './lo
|
|
|
4
4
|
import { getLabelValueRequest, mergeUnique } from '../utils/agro-lookup-utils';
|
|
5
5
|
import { formatCPFCNPJWithMask } from '../utils';
|
|
6
6
|
const LOOKUP_DEBOUNCE_MS = 300;
|
|
7
|
-
const LOOKUP_DOCUMENT_FIELDS_TO_FORMAT = [
|
|
7
|
+
const LOOKUP_DOCUMENT_FIELDS_TO_FORMAT = [
|
|
8
|
+
'cnpCpf',
|
|
9
|
+
'numCgc',
|
|
10
|
+
'e001pes.cnpCpf',
|
|
11
|
+
'e001pes.numCgc',
|
|
12
|
+
'e001pes.cpfCnpj',
|
|
13
|
+
'e001pes.cpf',
|
|
14
|
+
'e001pes.cnpj',
|
|
15
|
+
'e001pes.cgc',
|
|
16
|
+
'e001pes.cpfCgc',
|
|
17
|
+
'e001pes.cgcCpf',
|
|
18
|
+
'cpf'
|
|
19
|
+
];
|
|
8
20
|
export class AgroBaseLookupField {
|
|
9
21
|
config;
|
|
10
22
|
translate;
|
|
@@ -382,4 +394,4 @@ export class AgroBaseLookupField {
|
|
|
382
394
|
};
|
|
383
395
|
}
|
|
384
396
|
}
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1iYXNlLWxvb2t1cC1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9maWVsZHMvbG9va3Vwcy9jb3JlL2Fncm8tYmFzZS1sb29rdXAtZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFOUQsTUFBTSxPQUFPLG1CQUFtQjtJQU1QO0lBQ0E7SUFOSixrQkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO0lBQzFDLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO0lBQzVDLDRCQUE0QixHQUFHLEtBQUssQ0FBQztJQUU3QyxZQUNxQixNQUFnQyxFQUNoQyxTQUFnQztRQURoQyxXQUFNLEdBQU4sTUFBTSxDQUEwQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUF1QjtJQUNqRCxDQUFDO0lBRUcsa0JBQWtCLENBQUMsS0FBVTtRQUNqQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELElB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L0QsSUFBSSxlQUFlLEtBQUssV0FBVyxFQUFFLENBQUM7d0JBQ2xDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDMUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDdkQsT0FBTztvQkFDWCxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMxQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQztZQUNELFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1YsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMxQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQztZQUNELFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7WUFDdEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQzFDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFVBQVUsRUFBRSxLQUFLO1NBQ3BCLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTGliVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBwYWlyd2lzZSwgc3RhcnRXaXRoLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlbmVyaWNMb29rdXBGaWVsZENvbmZpZyB9IGZyb20gJy4vbG9va3VwLWZpZWxkLnR5cGVzJztcclxuaW1wb3J0IHsgY3JlYXRlR2VuZXJpY09uTG9va3VwUmVxdWVzdCwgY3JlYXRlR2VuZXJpY09uU2VhcmNoUmVxdWVzdCB9IGZyb20gJy4vbG9va3VwLWZpZWxkLmhhbmRsZXJzJztcclxuaW1wb3J0IHsgZ2V0TGFiZWxWYWx1ZVJlcXVlc3QsIG1lcmdlVW5pcXVlIH0gZnJvbSAnLi4vdXRpbHMvYWdyby1sb29rdXAtdXRpbHMnO1xyXG5pbXBvcnQgeyBmb3JtYXRDUEZDTlBKV2l0aE1hc2sgfSBmcm9tICcuLi91dGlscyc7XHJcblxyXG5jb25zdCBMT09LVVBfREVCT1VOQ0VfTVMgPSAzMDA7XHJcbmNvbnN0IExPT0tVUF9ET0NVTUVOVF9GSUVMRFNfVE9fRk9STUFUID0gWydjbnBDcGYnLCAnbnVtQ2djJ107XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb0Jhc2VMb29rdXBGaWVsZCB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1Z2dlc3Rpb25zU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueVtdPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgcHJpdmF0ZSBoYXNEZXBlbmRlbmN5TGlzdGVuZXJTdGFydGVkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEdlbmVyaWNMb29rdXBGaWVsZENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIHByaXZhdGUgaXNMb29rdXBWYWx1ZVZhbGlkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwICYmIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiBpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtLmlkICE9PSB1bmRlZmluZWQgJiYgaXRlbS5pZCAhPT0gbnVsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5pZCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLmlkICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZm9ybWF0RW50aXR5RG9jdW1lbnRGaWVsZHMoZW50aXR5OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghZW50aXR5IHx8IHR5cGVvZiBlbnRpdHkgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZW50aXR5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZW50aXR5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZvcm1hdHRlZEVudGl0eSA9IGVudGl0eTtcclxuXHJcbiAgICAgICAgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEU19UT19GT1JNQVQuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghT2JqZWN0Lmhhc093bihlbnRpdHksIGZpZWxkTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGVudGl0eVtmaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZSA9PT0gbnVsbCB8fCBvcmlnaW5hbFZhbHVlID09PSB1bmRlZmluZWQgfHwgb3JpZ2luYWxWYWx1ZSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXRDUEZDTlBKV2l0aE1hc2sob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZEVudGl0eSA9PT0gZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRFbnRpdHlbZmllbGROYW1lXSA9IGZvcm1hdHRlZFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRFbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBub3JtYWxpemVMb29rdXBWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEFycmF5ID0gdmFsdWUubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkSXRlbSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gaGFzQ2hhbmdlcyB8fCBub3JtYWxpemVkSXRlbSAhPT0gaXRlbTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkSXRlbTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gaGFzQ2hhbmdlcyA/IG5vcm1hbGl6ZWRBcnJheSA6IHZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RW50aXR5RG9jdW1lbnRGaWVsZHModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3luY0NvbnRyb2xWYWx1ZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBhbnkge1xyXG4gICAgICAgIGlmICghY29udHJvbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoY29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhc1VzZXJJbnRlcmFjdGlvbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghY29udHJvbC5kaXJ0eSkge1xyXG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0NvbnRyb2xGaWxsZWQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltKCkgIT09ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhcmVEZXBlbmRlbmNpZXNSZWFkeSgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkZXBlbmRzT2YgPSB0aGlzLmNvbmZpZy5kZXBlbmRzT2YgPz8gW107XHJcbiAgICAgICAgaWYgKGRlcGVuZHNPZi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVwZW5kc09mLmV2ZXJ5KChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKHRoaXMuc3luY0NvbnRyb2xWYWx1ZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRyb2wpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQXV0b2ZpbGxFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5hdXRvZmlsbCAhPT0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZERlcGVuZGVuY3lRdWVyeSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuY29uZmlnLmRlcGVuZGVuY2llcyA/PyBbXTtcclxuICAgICAgICByZXR1cm4gZGVwZW5kZW5jaWVzXHJcbiAgICAgICAgICAgIC5tYXAoKHsgZm9ybUNvbnRyb2xOYW1lLCBhcGlGaWVsZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5SWQgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KGZvcm1Db250cm9sTmFtZSk/LnZhbHVlPy5pZDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZXBlbmRlbmN5SWQgPyBgJHthcGlGaWVsZH0gZXEgJyR7ZGVwZW5kZW5jeUlkfSdgIDogJyc7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgICAgICAgLmpvaW4oJyBhbmQgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZEN1c3RvbUZpbHRlclF1ZXJ5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLmNvbmZpZy5jdXN0b21GaWx0ZXJRdWVyeT8uKCk7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBxdWVyeSA9PT0gJ3N0cmluZycgPyBxdWVyeS50cmltKCkgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbWJpbmVGaWx0ZXJRdWVyaWVzKC4uLnF1ZXJpZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gcXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiAhIXF1ZXJ5KS5qb2luKCcgYW5kICcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdHJ5QXV0b2ZpbGxXaGVuU2luZ2xlUmVzdWx0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0F1dG9maWxsRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRlcGVuZHNPZiA9IHRoaXMuY29uZmlnLmRlcGVuZHNPZiA/PyBbXTtcclxuICAgICAgICBpZiAoZGVwZW5kc09mLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldENvbnRyb2wgfHwgdGFyZ2V0Q29udHJvbC5kaXNhYmxlZCB8fCB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZCh0YXJnZXRDb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkZXBlbmRlbmN5UXVlcnkgPSB0aGlzLmJ1aWxkRGVwZW5kZW5jeVF1ZXJ5KCk7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tUXVlcnkgPSB0aGlzLmJ1aWxkQ3VzdG9tRmlsdGVyUXVlcnkoKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJRdWVyeSA9IHRoaXMuY29tYmluZUZpbHRlclF1ZXJpZXMoZGVwZW5kZW5jeVF1ZXJ5LCBjdXN0b21RdWVyeSk7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXJRdWVyeSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzb3J0ID0gdGhpcy5jb25maWcubG9va3VwRGlzcGxheUZpZWxkcy5tYXAoKGZpZWxkOiBzdHJpbmcpID0+ICh7IGZpZWxkLCBvcmRlcjogMSB9KSk7XHJcbiAgICAgICAgY29uc3QgZGlzcGxheUZpZWxkcyA9IG1lcmdlVW5pcXVlKHRoaXMuY29uZmlnLmxvb2t1cERpc3BsYXlGaWVsZHMsIHRoaXMuY29uZmlnLmFkdmFuY2VkRGlzcGxheUZpZWxkcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3QoeyBwYWdlOiAwLCBzaXplOiAyLCBzb3J0LCBmaWx0ZXJRdWVyeSwgZGlzcGxheUZpZWxkcyB9KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChsaXN0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gbGlzdD8uY29udGVudHMgPz8gW107XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IFtzaW5nbGVWYWx1ZV0gPSBnZXRMYWJlbFZhbHVlUmVxdWVzdChjb250ZW50cywgdGhpcy5jb25maWcubG9va3VwRGlzcGxheUZpZWxkcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRDb250cm9sLnNldFZhbHVlKHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoc2luZ2xlVmFsdWUpLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1ByZWZpbGxlZEFuZEluZGVwZW5kZW50KGhhc0FueVVzZXJJbnRlcmFjdGlvbjogYm9vbGVhbiwgdGFyZ2V0SXNWYWxpZDogYm9vbGVhbiwgdGFyZ2V0SXNGaWxsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIWhhc0FueVVzZXJJbnRlcmFjdGlvbiAmJiAodGFyZ2V0SXNWYWxpZCB8fCB0YXJnZXRJc0ZpbGxlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVEZXBlbmRlbmNpZXNTdGF0ZShmb3JjZVJlc2V0ID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldENvbnRyb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc0FueVVzZXJJbnRlcmFjdGlvbiA9IGRlcGVuZHNPZi5zb21lKChmaWVsZE5hbWUpID0+IHRoaXMuaGFzVXNlckludGVyYWN0aW9uKHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKSkpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gdGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aE5vcm1hbGl6YXRpb24odGFyZ2V0Q29udHJvbCk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0SXNWYWxpZCA9IHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKHRhcmdldFZhbHVlKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRJc0ZpbGxlZCA9IHRoaXMuaXNDb250cm9sRmlsbGVkKHRhcmdldFZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKGZvcmNlUmVzZXQpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJ1bGU6IGRlcGVuZGVudCBmaWVsZHMgc3RhcnQgZGlzYWJsZWQsIGV4Y2VwdCB3aGVuIGFscmVhZHkgZmlsbGVkL3ZhbGlkIChwcmVmaWxsZWQgc2NlbmFyaW8pLlxyXG4gICAgICAgIGlmICh0aGlzLmlzUHJlZmlsbGVkQW5kSW5kZXBlbmRlbnQoaGFzQW55VXNlckludGVyYWN0aW9uLCB0YXJnZXRJc1ZhbGlkLCB0YXJnZXRJc0ZpbGxlZCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcmVEZXBlbmRlbmNpZXNSZWFkeSgpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy50cnlBdXRvZmlsbFdoZW5TaW5nbGVSZXN1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gS2VlcCBwcmVmaWxsZWQgdmFsdWVzOyBjbGVhciBvbmx5IHdoZW4gdGhlcmUgaXMgdXNlciBpbnRlcmFjdGlvbiBvciB2YWx1ZSBpcyBpbnZhbGlkIGZvciBsb29rdXAuXHJcbiAgICAgICAgaWYgKGhhc0FueVVzZXJJbnRlcmFjdGlvbiB8fCAodGFyZ2V0SXNGaWxsZWQgJiYgIXRhcmdldElzVmFsaWQpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFyZ2V0Q29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsZWFyVGFyZ2V0S2VlcGluZ0VuYWJsZWQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgaWYgKCF0YXJnZXRDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFyZURlcGVuZGVuY2llc1JlYWR5KCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENvbXBhcmFibGVMb29rdXBWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSA9PT0gbnVsbCB8fCBub3JtYWxpemVkVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBub3JtYWxpemVkVmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9ybWFsaXplZFZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZFZhbHVlLm1hcCgoaXRlbSkgPT4gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBub3JtYWxpemVkVmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUuaWQgIT09IHVuZGVmaW5lZCAmJiBub3JtYWxpemVkVmFsdWUuaWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkVmFsdWUuaWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShub3JtYWxpemVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRpZERlcGVuZGVuY3lWYWx1ZUNoYW5nZShwcmV2aW91c0NvbXBhcmFibGU6IGFueSwgY3VycmVudENvbXBhcmFibGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2aW91c0NvbXBhcmFibGUpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Q29tcGFyYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydERlcGVuZGVuY2llc0xpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0RlcGVuZGVuY3lMaXN0ZW5lclN0YXJ0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaGFzRGVwZW5kZW5jeUxpc3RlbmVyU3RhcnRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIE9ic2VydmUgZWFjaCBkZXBlbmRlbmN5IGRpcmVjdGx5IGFuZCBjb21wYXJlIHByZXZpb3VzL2N1cnJlbnQgdmFsdWVzLlxyXG4gICAgICAgIGRlcGVuZHNPZi5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoTE9PS1VQX0RFQk9VTkNFX01TKSxcclxuICAgICAgICAgICAgICAgICAgICBwYWlyd2lzZSgpXHJcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgoW3ByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmV2aW91c1ZhbHVlID0gdGhpcy5ub3JtYWxpemVMb29rdXBWYWx1ZShwcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDdXJyZW50VmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRDdXJyZW50VmFsdWUgIT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZEN1cnJlbnRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsaWRpdHkgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChub3JtYWxpemVkUHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsaWRpdHkgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChub3JtYWxpemVkQ3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcGFyYWJsZSA9IHRoaXMuZ2V0Q29tcGFyYWJsZUxvb2t1cFZhbHVlKG5vcm1hbGl6ZWRQcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb21wYXJhYmxlID0gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUobm9ybWFsaXplZEN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaWRWYWx1ZUNoYW5nZSA9IHRoaXMuZGlkRGVwZW5kZW5jeVZhbHVlQ2hhbmdlKHByZXZpb3VzQ29tcGFyYWJsZSwgY3VycmVudENvbXBhcmFibGUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1ZhbGlkaXR5ICYmICFjdXJyZW50VmFsaWRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNWYWxpZGl0eSAmJiBjdXJyZW50VmFsaWRpdHkgJiYgZGlkVmFsdWVDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGFyZ2V0S2VlcGluZ0VuYWJsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1ZhbGlkaXR5ICYmIGN1cnJlbnRWYWxpZGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGVwZW5kZW5jaWVzU3RhdGUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2w/LnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZURlcGVuZGVuY2llc1JlYWR5KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEV2YWx1YXRlIG9uY2UgYWZ0ZXIgaW5pdCB0byBob25vciBwcmVmaWxsZWQgdmFsaWQgZGVwZW5kZW5jaWVzIHdpdGhvdXQgZm9yY2luZyByZXNldHMuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVEZXBlbmRlbmNpZXNTdGF0ZShmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUl0KCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERlcGVuZGVuY2llc0xpc3RlbmVyKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZTogdGhpcy5jb25maWcubmFtZSwgIC8vIEV4cGxpY2l0bHkgc2V0IGZvcm1Db250cm9sTmFtZSBmb3Igcy1keW5hbWljLWZvcm0gYmluZGluZ1xyXG4gICAgICAgICAgICBmaWx0ZXJGaWVsZE5hbWU6IHRoaXMuY29uZmlnLmZpbHRlckZpZWxkTmFtZSA/PyB0aGlzLmNvbmZpZy5uYW1lLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy5jb25maWcucmVxdWlyZWQgPz8gKCgpID0+IGZhbHNlKSxcclxuICAgICAgICAgICAgc2l6ZTogdGhpcy5jb25maWcuc2l6ZSA/PyB7IHNtOiA0LCBtZDogNCwgbGc6IDQsIHhsOiA0IH0sXHJcbiAgICAgICAgICAgIGRlcGVuZHNPZjogdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmNvbmZpZy5sYWJlbEtleSksXHJcbiAgICAgICAgICAgIHR5cGU6ICdsb29rdXAnLFxyXG4gICAgICAgICAgICBkYXRhS2V5OiAnaWQnLFxyXG4gICAgICAgICAgICBsb29rdXBEaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIHNlYXJjaFRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuY29uZmlnLnNlYXJjaFRpdGxlS2V5KSxcclxuICAgICAgICAgICAgc2VhcmNoRW1wdHlUaXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX25vdGhpbmdfZm91bmQnKSxcclxuICAgICAgICAgICAgZmlsdGVyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9maWx0ZXInKSxcclxuICAgICAgICAgICAgZmlsdGVyVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9maWx0ZXJzJyksXHJcbiAgICAgICAgICAgIGNsZWFyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9jbGVhcicpLFxyXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2NhbmNlbCcpLFxyXG4gICAgICAgICAgICBzZWxlY3RMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX3NlbGVjdCcpLFxyXG4gICAgICAgICAgICBzdWdnZXN0aW9uc09ic2VydmFibGU6IHRoaXMuc3VnZ2VzdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLFxyXG4gICAgICAgICAgICBzZWFyY2hPYnNlcnZhYmxlOiB0aGlzLnNlYXJjaFN1YmplY3QuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgICAgICAgIG9uTG9va3VwUmVxdWVzdDogY3JlYXRlR2VuZXJpY09uTG9va3VwUmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNTdWJqZWN0OiB0aGlzLnN1Z2dlc3Rpb25zU3ViamVjdCxcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN1YmplY3Q6IHRoaXMuc2VhcmNoU3ViamVjdCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG9uU2VhcmNoUmVxdWVzdDogY3JlYXRlR2VuZXJpY09uU2VhcmNoUmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNTdWJqZWN0OiB0aGlzLnN1Z2dlc3Rpb25zU3ViamVjdCxcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN1YmplY3Q6IHRoaXMuc2VhcmNoU3ViamVjdCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG9uQmx1cjogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1aVJhd1ZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gZXZlbnQ/LnZhbHVlID8/ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpVGV4dFZhbHVlID0gdHlwZW9mIHVpUmF3VmFsdWUgPT09ICdzdHJpbmcnID8gdWlSYXdWYWx1ZS50cmltKCkgOiB1aVJhd1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVWlFbXB0eSA9ICF1aVRleHRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoTm9ybWFsaXphdGlvbihjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbHVlVmFsaWQgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChjdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBVSSB3YXMgY2xlYXJlZCBidXQgY29udHJvbCBzdGlsbCBoYXMgYSB2YWx1ZSwgZm9yY2Ugc3luYyB0byBudWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VpRW1wdHkgJiYgY3VycmVudFZhbHVlICE9IG51bGwgJiYgY3VycmVudFZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb250cm9sIGhhcyBhIHZhbHVlIGJ1dCBpdCdzIG5vdCBhIHZhbGlkIGxvb2t1cCBvYmplY3QsIGNsZWFyIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjYXRjaGVzIGNhc2VzIHdoZXJlIHRoZSBVSSBjbGVhcmVkIHRoZSBmaWVsZCBidXQgdGhlIEZvcm1Db250cm9sIHdhc24ndCB1cGRhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiAhaXNWYWx1ZVZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHsgW3RoaXMuY29uZmlnLm5hbWVdOiBudWxsIH0sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TZWxlY3RIYW5kbGVyOiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sICYmIGFjdHVhbFZhbHVlICYmIHR5cGVvZiBhY3R1YWxWYWx1ZSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsVmFsdWUuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uU2VsZWN0OiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sICYmIGFjdHVhbFZhbHVlICYmIHR5cGVvZiBhY3R1YWxWYWx1ZSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsVmFsdWUuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgYWN0dWFsVmFsdWUgJiYgdHlwZW9mIGFjdHVhbFZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IGFjdHVhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgIWFjdHVhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrQ29udHJvbEFzVXNlckludGVyYWN0ZWQoY29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25VbnNlbGVjdDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlYXJjaEZpZWxkczogdGhpcy5jb25maWcuc2VhcmNoRmllbGRzLFxyXG4gICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzOiB0aGlzLmNvbmZpZy5zZWFyY2hGaWVsZHMsXHJcbiAgICAgICAgICAgIGFwcGVuZFRvOiAnYm9keScsXHJcbiAgICAgICAgICAgIGJhc2VaSW5kZXg6IDEwMDAwLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
397
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1iYXNlLWxvb2t1cC1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9maWVsZHMvbG9va3Vwcy9jb3JlL2Fncm8tYmFzZS1sb29rdXAtZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE1BQU0sZ0NBQWdDLEdBQUc7SUFDckMsUUFBUTtJQUNSLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsY0FBYztJQUNkLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLEtBQUs7Q0FDUixDQUFDO0FBRUYsTUFBTSxPQUFPLG1CQUFtQjtJQU1QO0lBQ1E7SUFOWixrQkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO0lBQzFDLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO0lBQzVDLDRCQUE0QixHQUFHLEtBQUssQ0FBQztJQUU3QyxZQUNxQixNQUFnQyxFQUN4QixTQUFnQztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUEwQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF1QjtJQUN6RCxDQUFDO0lBRUcsa0JBQWtCLENBQUMsS0FBVTtRQUNqQyxJQUFJ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Q0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTGliVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBwYWlyd2lzZSwgc3RhcnRXaXRoLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlbmVyaWNMb29rdXBGaWVsZENvbmZpZyB9IGZyb20gJy4vbG9va3VwLWZpZWxkLnR5cGVzJztcclxuaW1wb3J0IHsgY3JlYXRlR2VuZXJpY09uTG9va3VwUmVxdWVzdCwgY3JlYXRlR2VuZXJpY09uU2VhcmNoUmVxdWVzdCB9IGZyb20gJy4vbG9va3VwLWZpZWxkLmhhbmRsZXJzJztcclxuaW1wb3J0IHsgZ2V0TGFiZWxWYWx1ZVJlcXVlc3QsIG1lcmdlVW5pcXVlIH0gZnJvbSAnLi4vdXRpbHMvYWdyby1sb29rdXAtdXRpbHMnO1xyXG5pbXBvcnQgeyBmb3JtYXRDUEZDTlBKV2l0aE1hc2sgfSBmcm9tICcuLi91dGlscyc7XHJcblxyXG5jb25zdCBMT09LVVBfREVCT1VOQ0VfTVMgPSAzMDA7XHJcbmNvbnN0IExPT0tVUF9ET0NVTUVOVF9GSUVMRFNfVE9fRk9STUFUID0gW1xyXG4gICAgJ2NucENwZicsXHJcbiAgICAnbnVtQ2djJyxcclxuICAgICdlMDAxcGVzLmNucENwZicsXHJcbiAgICAnZTAwMXBlcy5udW1DZ2MnLFxyXG4gICAgJ2UwMDFwZXMuY3BmQ25waicsXHJcbiAgICAnZTAwMXBlcy5jcGYnLFxyXG4gICAgJ2UwMDFwZXMuY25waicsXHJcbiAgICAnZTAwMXBlcy5jZ2MnLFxyXG4gICAgJ2UwMDFwZXMuY3BmQ2djJyxcclxuICAgICdlMDAxcGVzLmNnY0NwZicsXHJcbiAgICAnY3BmJ1xyXG5dO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9CYXNlTG9va3VwRmllbGQge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdWdnZXN0aW9uc1N1YmplY3QgPSBuZXcgU3ViamVjdDxhbnlbXT4oKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICAgIHByaXZhdGUgaGFzRGVwZW5kZW5jeUxpc3RlbmVyU3RhcnRlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBHZW5lcmljTG9va3VwRmllbGRDb25maWcsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIHByaXZhdGUgaXNMb29rdXBWYWx1ZVZhbGlkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwICYmIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiBpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtLmlkICE9PSB1bmRlZmluZWQgJiYgaXRlbS5pZCAhPT0gbnVsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5pZCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLmlkICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZm9ybWF0RW50aXR5RG9jdW1lbnRGaWVsZHMoZW50aXR5OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghZW50aXR5IHx8IHR5cGVvZiBlbnRpdHkgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZW50aXR5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZW50aXR5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZvcm1hdHRlZEVudGl0eSA9IGVudGl0eTtcclxuXHJcbiAgICAgICAgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEU19UT19GT1JNQVQuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghT2JqZWN0Lmhhc093bihlbnRpdHksIGZpZWxkTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGVudGl0eVtmaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZSA9PT0gbnVsbCB8fCBvcmlnaW5hbFZhbHVlID09PSB1bmRlZmluZWQgfHwgb3JpZ2luYWxWYWx1ZSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXRDUEZDTlBKV2l0aE1hc2sob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZEVudGl0eSA9PT0gZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRFbnRpdHlbZmllbGROYW1lXSA9IGZvcm1hdHRlZFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRFbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBub3JtYWxpemVMb29rdXBWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEFycmF5ID0gdmFsdWUubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkSXRlbSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gaGFzQ2hhbmdlcyB8fCBub3JtYWxpemVkSXRlbSAhPT0gaXRlbTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkSXRlbTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gaGFzQ2hhbmdlcyA/IG5vcm1hbGl6ZWRBcnJheSA6IHZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RW50aXR5RG9jdW1lbnRGaWVsZHModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3luY0NvbnRyb2xWYWx1ZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBhbnkge1xyXG4gICAgICAgIGlmICghY29udHJvbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoY29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhc1VzZXJJbnRlcmFjdGlvbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghY29udHJvbC5kaXJ0eSkge1xyXG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0NvbnRyb2xGaWxsZWQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltKCkgIT09ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhcmVEZXBlbmRlbmNpZXNSZWFkeSgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkZXBlbmRzT2YgPSB0aGlzLmNvbmZpZy5kZXBlbmRzT2YgPz8gW107XHJcbiAgICAgICAgaWYgKGRlcGVuZHNPZi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVwZW5kc09mLmV2ZXJ5KChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKHRoaXMuc3luY0NvbnRyb2xWYWx1ZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRyb2wpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQXV0b2ZpbGxFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5hdXRvZmlsbCAhPT0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZERlcGVuZGVuY3lRdWVyeSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuY29uZmlnLmRlcGVuZGVuY2llcyA/PyBbXTtcclxuICAgICAgICByZXR1cm4gZGVwZW5kZW5jaWVzXHJcbiAgICAgICAgICAgIC5tYXAoKHsgZm9ybUNvbnRyb2xOYW1lLCBhcGlGaWVsZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5SWQgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KGZvcm1Db250cm9sTmFtZSk/LnZhbHVlPy5pZDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZXBlbmRlbmN5SWQgPyBgJHthcGlGaWVsZH0gZXEgJyR7ZGVwZW5kZW5jeUlkfSdgIDogJyc7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgICAgICAgLmpvaW4oJyBhbmQgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZEN1c3RvbUZpbHRlclF1ZXJ5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLmNvbmZpZy5jdXN0b21GaWx0ZXJRdWVyeT8uKCk7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBxdWVyeSA9PT0gJ3N0cmluZycgPyBxdWVyeS50cmltKCkgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbWJpbmVGaWx0ZXJRdWVyaWVzKC4uLnF1ZXJpZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gcXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiAhIXF1ZXJ5KS5qb2luKCcgYW5kICcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdHJ5QXV0b2ZpbGxXaGVuU2luZ2xlUmVzdWx0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0F1dG9maWxsRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRlcGVuZHNPZiA9IHRoaXMuY29uZmlnLmRlcGVuZHNPZiA/PyBbXTtcclxuICAgICAgICBpZiAoZGVwZW5kc09mLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldENvbnRyb2wgfHwgdGFyZ2V0Q29udHJvbC5kaXNhYmxlZCB8fCB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZCh0YXJnZXRDb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkZXBlbmRlbmN5UXVlcnkgPSB0aGlzLmJ1aWxkRGVwZW5kZW5jeVF1ZXJ5KCk7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tUXVlcnkgPSB0aGlzLmJ1aWxkQ3VzdG9tRmlsdGVyUXVlcnkoKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJRdWVyeSA9IHRoaXMuY29tYmluZUZpbHRlclF1ZXJpZXMoZGVwZW5kZW5jeVF1ZXJ5LCBjdXN0b21RdWVyeSk7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXJRdWVyeSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzb3J0ID0gdGhpcy5jb25maWcubG9va3VwRGlzcGxheUZpZWxkcy5tYXAoKGZpZWxkOiBzdHJpbmcpID0+ICh7IGZpZWxkLCBvcmRlcjogMSB9KSk7XHJcbiAgICAgICAgY29uc3QgZGlzcGxheUZpZWxkcyA9IG1lcmdlVW5pcXVlKHRoaXMuY29uZmlnLmxvb2t1cERpc3BsYXlGaWVsZHMsIHRoaXMuY29uZmlnLmFkdmFuY2VkRGlzcGxheUZpZWxkcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3QoeyBwYWdlOiAwLCBzaXplOiAyLCBzb3J0LCBmaWx0ZXJRdWVyeSwgZGlzcGxheUZpZWxkcyB9KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChsaXN0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gbGlzdD8uY29udGVudHMgPz8gW107XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IFtzaW5nbGVWYWx1ZV0gPSBnZXRMYWJlbFZhbHVlUmVxdWVzdChjb250ZW50cywgdGhpcy5jb25maWcubG9va3VwRGlzcGxheUZpZWxkcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRDb250cm9sLnNldFZhbHVlKHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoc2luZ2xlVmFsdWUpLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1ByZWZpbGxlZEFuZEluZGVwZW5kZW50KGhhc0FueVVzZXJJbnRlcmFjdGlvbjogYm9vbGVhbiwgdGFyZ2V0SXNWYWxpZDogYm9vbGVhbiwgdGFyZ2V0SXNGaWxsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIWhhc0FueVVzZXJJbnRlcmFjdGlvbiAmJiAodGFyZ2V0SXNWYWxpZCB8fCB0YXJnZXRJc0ZpbGxlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVEZXBlbmRlbmNpZXNTdGF0ZShmb3JjZVJlc2V0ID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICBpZiAoIXRhcmdldENvbnRyb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc0FueVVzZXJJbnRlcmFjdGlvbiA9IGRlcGVuZHNPZi5zb21lKChmaWVsZE5hbWUpID0+IHRoaXMuaGFzVXNlckludGVyYWN0aW9uKHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKSkpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gdGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aE5vcm1hbGl6YXRpb24odGFyZ2V0Q29udHJvbCk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0SXNWYWxpZCA9IHRoaXMuaXNMb29rdXBWYWx1ZVZhbGlkKHRhcmdldFZhbHVlKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRJc0ZpbGxlZCA9IHRoaXMuaXNDb250cm9sRmlsbGVkKHRhcmdldFZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKGZvcmNlUmVzZXQpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJ1bGU6IGRlcGVuZGVudCBmaWVsZHMgc3RhcnQgZGlzYWJsZWQsIGV4Y2VwdCB3aGVuIGFscmVhZHkgZmlsbGVkL3ZhbGlkIChwcmVmaWxsZWQgc2NlbmFyaW8pLlxyXG4gICAgICAgIGlmICh0aGlzLmlzUHJlZmlsbGVkQW5kSW5kZXBlbmRlbnQoaGFzQW55VXNlckludGVyYWN0aW9uLCB0YXJnZXRJc1ZhbGlkLCB0YXJnZXRJc0ZpbGxlZCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcmVEZXBlbmRlbmNpZXNSZWFkeSgpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy50cnlBdXRvZmlsbFdoZW5TaW5nbGVSZXN1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gS2VlcCBwcmVmaWxsZWQgdmFsdWVzOyBjbGVhciBvbmx5IHdoZW4gdGhlcmUgaXMgdXNlciBpbnRlcmFjdGlvbiBvciB2YWx1ZSBpcyBpbnZhbGlkIGZvciBsb29rdXAuXHJcbiAgICAgICAgaWYgKGhhc0FueVVzZXJJbnRlcmFjdGlvbiB8fCAodGFyZ2V0SXNGaWxsZWQgJiYgIXRhcmdldElzVmFsaWQpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFyZ2V0Q29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsZWFyVGFyZ2V0S2VlcGluZ0VuYWJsZWQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgaWYgKCF0YXJnZXRDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhcmdldENvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFyZURlcGVuZGVuY2llc1JlYWR5KCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUF1dG9maWxsV2hlblNpbmdsZVJlc3VsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENvbXBhcmFibGVMb29rdXBWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSA9PT0gbnVsbCB8fCBub3JtYWxpemVkVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBub3JtYWxpemVkVmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9ybWFsaXplZFZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZFZhbHVlLm1hcCgoaXRlbSkgPT4gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBub3JtYWxpemVkVmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUuaWQgIT09IHVuZGVmaW5lZCAmJiBub3JtYWxpemVkVmFsdWUuaWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkVmFsdWUuaWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShub3JtYWxpemVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRpZERlcGVuZGVuY3lWYWx1ZUNoYW5nZShwcmV2aW91c0NvbXBhcmFibGU6IGFueSwgY3VycmVudENvbXBhcmFibGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2aW91c0NvbXBhcmFibGUpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Q29tcGFyYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydERlcGVuZGVuY2llc0xpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0RlcGVuZGVuY3lMaXN0ZW5lclN0YXJ0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVwZW5kc09mID0gdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdO1xyXG4gICAgICAgIGlmIChkZXBlbmRzT2YubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaGFzRGVwZW5kZW5jeUxpc3RlbmVyU3RhcnRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIE9ic2VydmUgZWFjaCBkZXBlbmRlbmN5IGRpcmVjdGx5IGFuZCBjb21wYXJlIHByZXZpb3VzL2N1cnJlbnQgdmFsdWVzLlxyXG4gICAgICAgIGRlcGVuZHNPZi5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQoZmllbGROYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoTE9PS1VQX0RFQk9VTkNFX01TKSxcclxuICAgICAgICAgICAgICAgICAgICBwYWlyd2lzZSgpXHJcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgoW3ByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmV2aW91c1ZhbHVlID0gdGhpcy5ub3JtYWxpemVMb29rdXBWYWx1ZShwcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDdXJyZW50VmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRDdXJyZW50VmFsdWUgIT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZEN1cnJlbnRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsaWRpdHkgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChub3JtYWxpemVkUHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsaWRpdHkgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChub3JtYWxpemVkQ3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcGFyYWJsZSA9IHRoaXMuZ2V0Q29tcGFyYWJsZUxvb2t1cFZhbHVlKG5vcm1hbGl6ZWRQcmV2aW91c1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb21wYXJhYmxlID0gdGhpcy5nZXRDb21wYXJhYmxlTG9va3VwVmFsdWUobm9ybWFsaXplZEN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaWRWYWx1ZUNoYW5nZSA9IHRoaXMuZGlkRGVwZW5kZW5jeVZhbHVlQ2hhbmdlKHByZXZpb3VzQ29tcGFyYWJsZSwgY3VycmVudENvbXBhcmFibGUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1ZhbGlkaXR5ICYmICFjdXJyZW50VmFsaWRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNWYWxpZGl0eSAmJiBjdXJyZW50VmFsaWRpdHkgJiYgZGlkVmFsdWVDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGFyZ2V0S2VlcGluZ0VuYWJsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1ZhbGlkaXR5ICYmIGN1cnJlbnRWYWxpZGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGVwZW5kZW5jaWVzU3RhdGUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2w/LnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZURlcGVuZGVuY2llc1JlYWR5KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlcGVuZGVuY2llc1N0YXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEV2YWx1YXRlIG9uY2UgYWZ0ZXIgaW5pdCB0byBob25vciBwcmVmaWxsZWQgdmFsaWQgZGVwZW5kZW5jaWVzIHdpdGhvdXQgZm9yY2luZyByZXNldHMuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVEZXBlbmRlbmNpZXNTdGF0ZShmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUl0KCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERlcGVuZGVuY2llc0xpc3RlbmVyKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZTogdGhpcy5jb25maWcubmFtZSwgIC8vIEV4cGxpY2l0bHkgc2V0IGZvcm1Db250cm9sTmFtZSBmb3Igcy1keW5hbWljLWZvcm0gYmluZGluZ1xyXG4gICAgICAgICAgICBmaWx0ZXJGaWVsZE5hbWU6IHRoaXMuY29uZmlnLmZpbHRlckZpZWxkTmFtZSA/PyB0aGlzLmNvbmZpZy5uYW1lLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy5jb25maWcucmVxdWlyZWQgPz8gKCgpID0+IGZhbHNlKSxcclxuICAgICAgICAgICAgc2l6ZTogdGhpcy5jb25maWcuc2l6ZSA/PyB7IHNtOiA0LCBtZDogNCwgbGc6IDQsIHhsOiA0IH0sXHJcbiAgICAgICAgICAgIGRlcGVuZHNPZjogdGhpcy5jb25maWcuZGVwZW5kc09mID8/IFtdLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmNvbmZpZy5sYWJlbEtleSksXHJcbiAgICAgICAgICAgIHR5cGU6ICdsb29rdXAnLFxyXG4gICAgICAgICAgICBkYXRhS2V5OiAnaWQnLFxyXG4gICAgICAgICAgICBsb29rdXBEaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIHNlYXJjaFRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuY29uZmlnLnNlYXJjaFRpdGxlS2V5KSxcclxuICAgICAgICAgICAgc2VhcmNoRW1wdHlUaXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX25vdGhpbmdfZm91bmQnKSxcclxuICAgICAgICAgICAgZmlsdGVyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9maWx0ZXInKSxcclxuICAgICAgICAgICAgZmlsdGVyVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9maWx0ZXJzJyksXHJcbiAgICAgICAgICAgIGNsZWFyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmxvb2t1cF9jbGVhcicpLFxyXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2NhbmNlbCcpLFxyXG4gICAgICAgICAgICBzZWxlY3RMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX3NlbGVjdCcpLFxyXG4gICAgICAgICAgICBzdWdnZXN0aW9uc09ic2VydmFibGU6IHRoaXMuc3VnZ2VzdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLFxyXG4gICAgICAgICAgICBzZWFyY2hPYnNlcnZhYmxlOiB0aGlzLnNlYXJjaFN1YmplY3QuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgICAgICAgIG9uTG9va3VwUmVxdWVzdDogY3JlYXRlR2VuZXJpY09uTG9va3VwUmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNTdWJqZWN0OiB0aGlzLnN1Z2dlc3Rpb25zU3ViamVjdCxcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN1YmplY3Q6IHRoaXMuc2VhcmNoU3ViamVjdCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG9uU2VhcmNoUmVxdWVzdDogY3JlYXRlR2VuZXJpY09uU2VhcmNoUmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNTdWJqZWN0OiB0aGlzLnN1Z2dlc3Rpb25zU3ViamVjdCxcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN1YmplY3Q6IHRoaXMuc2VhcmNoU3ViamVjdCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG9uQmx1cjogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1aVJhd1ZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gZXZlbnQ/LnZhbHVlID8/ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpVGV4dFZhbHVlID0gdHlwZW9mIHVpUmF3VmFsdWUgPT09ICdzdHJpbmcnID8gdWlSYXdWYWx1ZS50cmltKCkgOiB1aVJhd1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVWlFbXB0eSA9ICF1aVRleHRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoTm9ybWFsaXphdGlvbihjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbHVlVmFsaWQgPSB0aGlzLmlzTG9va3VwVmFsdWVWYWxpZChjdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBVSSB3YXMgY2xlYXJlZCBidXQgY29udHJvbCBzdGlsbCBoYXMgYSB2YWx1ZSwgZm9yY2Ugc3luYyB0byBudWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VpRW1wdHkgJiYgY3VycmVudFZhbHVlICE9IG51bGwgJiYgY3VycmVudFZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb250cm9sIGhhcyBhIHZhbHVlIGJ1dCBpdCdzIG5vdCBhIHZhbGlkIGxvb2t1cCBvYmplY3QsIGNsZWFyIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjYXRjaGVzIGNhc2VzIHdoZXJlIHRoZSBVSSBjbGVhcmVkIHRoZSBmaWVsZCBidXQgdGhlIEZvcm1Db250cm9sIHdhc24ndCB1cGRhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiAhaXNWYWx1ZVZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHsgW3RoaXMuY29uZmlnLm5hbWVdOiBudWxsIH0sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TZWxlY3RIYW5kbGVyOiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sICYmIGFjdHVhbFZhbHVlICYmIHR5cGVvZiBhY3R1YWxWYWx1ZSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsVmFsdWUuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uU2VsZWN0OiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb25maWcuZm9ybUdyb3VwLmdldCh0aGlzLmNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sICYmIGFjdHVhbFZhbHVlICYmIHR5cGVvZiBhY3R1YWxWYWx1ZSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsVmFsdWUuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLm5vcm1hbGl6ZUxvb2t1cFZhbHVlKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtDb250cm9sQXNVc2VySW50ZXJhY3RlZChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbmZpZy5mb3JtR3JvdXAuZ2V0KHRoaXMuY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBldmVudD8udmFsdWUgfHwgZXZlbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgYWN0dWFsVmFsdWUgJiYgdHlwZW9mIGFjdHVhbFZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMubm9ybWFsaXplTG9va3VwVmFsdWUoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IGFjdHVhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgIWFjdHVhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrQ29udHJvbEFzVXNlckludGVyYWN0ZWQoY29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25VbnNlbGVjdDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29uZmlnLmZvcm1Hcm91cC5nZXQodGhpcy5jb25maWcubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRyb2xBc1VzZXJJbnRlcmFjdGVkKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlYXJjaEZpZWxkczogdGhpcy5jb25maWcuc2VhcmNoRmllbGRzLFxyXG4gICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzOiB0aGlzLmNvbmZpZy5zZWFyY2hGaWVsZHMsXHJcbiAgICAgICAgICAgIGFwcGVuZFRvOiAnYm9keScsXHJcbiAgICAgICAgICAgIGJhc2VaSW5kZXg6IDEwMDAwLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
@@ -4,7 +4,19 @@ import { AgroStringUtils } from '../../../common/agro-string-utils.class';
|
|
|
4
4
|
const numberTypes = ['integer', 'double'];
|
|
5
5
|
const numberPattern = /^\d+\b$/;
|
|
6
6
|
const YYYY_MM_DD_FORMAT = 'YYYY-MM-DD';
|
|
7
|
-
const LOOKUP_DOCUMENT_FIELDS = [
|
|
7
|
+
const LOOKUP_DOCUMENT_FIELDS = [
|
|
8
|
+
'cnpCpf',
|
|
9
|
+
'numCgc',
|
|
10
|
+
'e001pes.cnpCpf',
|
|
11
|
+
'e001pes.numCgc',
|
|
12
|
+
'e001pes.cpfCnpj',
|
|
13
|
+
'e001pes.cpf',
|
|
14
|
+
'e001pes.cnpj',
|
|
15
|
+
'e001pes.cgc',
|
|
16
|
+
'e001pes.cpfCgc',
|
|
17
|
+
'e001pes.cgcCpf',
|
|
18
|
+
'cpf'
|
|
19
|
+
];
|
|
8
20
|
export const mergeUnique = (array, otherArray) => array.concat(otherArray.filter((item) => !array.includes(item)));
|
|
9
21
|
export const getTypeInformation = (type, value) => {
|
|
10
22
|
switch (type) {
|
|
@@ -300,4 +312,4 @@ export function formatBrlCurrency(currencyPipe, value) {
|
|
|
300
312
|
.replace("#", ",")
|
|
301
313
|
.replace(/^(.{2})/, "$1 ");
|
|
302
314
|
}
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb29rdXAtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzL2xvb2t1cHMvdXRpbHMvYWdyby1sb29rdXAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVqSixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUMzRCxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssZUFBZSxDQUFDO1FBQ3JCLEtBQUssVUFBVTtZQUNYLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNyRCxLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssUUFBUTtZQUNULE9BQU87Z0JBQ0gsWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxVQUFVLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDekMsQ0FBQztRQUNOO1lBQ0ksT0FBTztnQkFDSCxZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFFLEtBQUs7YUFDcEIsQ0FBQztJQUNWLENBQUM7QUFDTCxDQUFDLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLGFBQXVCLEVBQUUsV0FBbUIsRUFBRSxLQUFVLEVBQUUsU0FBaUIsRUFBRSxFQUFFO0lBQzlHLElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLGFBQWE7U0FDZixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNYLElBQUksc0JBQXNCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsV0FBVyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsV0FBVyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO1NBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ1IsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxDQUFDLElBQVksRUFBRSxRQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxRQUFRLFFBQVEsR0FBRyxDQUFDO0FBRXBGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxFQUFFO0lBQ3ZFLElBQUksUUFBUSxFQUFFLENBQUM7UUFDWCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQzdGLENBQUM7SUFDRCxPQUFPLEdBQUcsSUFBSSxRQUFRLEtBQUssR0FBRyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUNyQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE9BQU8sR0FBRyxJQUFJLE9BQU8sS0FBSyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDWCxLQUFLLE1BQU07WUFDUCxPQUFPLEdBQUcsSUFBSSxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDO1FBQ3JFLEtBQUssTUFBTTtZQUNQLE9BQU8sR0FBRyxJQUFJLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQzlELEtBQUssVUFBVTtZQUNYLE9BQU8sR0FBRyxJQUFJLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFDcEQsS0FBSyxlQUFlO1lBQ2hCLE9BQU8sR0FBRyxJQUFJLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUM7UUFDL0UsS0FBSyxNQUFNO1lBQ1AsT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxLQUFLLFFBQVE7WUFDVCxPQUFPLFNBQVMsSUFBSSxrQkFBa0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN4RSxLQUFLLFFBQVE7WUFDVCxPQUFPLEdBQUcsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUN0QztZQUNJLE9BQU8sR0FBRyxJQUFJLFFBQVEsS0FBSyxHQUFHLENBQUM7SUFDdkMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDcEYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDekQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRXZCLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDWCxLQUFLLE1BQU07WUFDUCxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxNQUFNO1FBQ1YsS0FBSyxNQUFNO1lBQ1AsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTTtRQUNWLEtBQUssZUFBZSxDQUFDO1FBQ3JCLEtBQUssVUFBVTtZQUNYLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLE1BQU07UUFDVixLQUFLLFFBQVE7WUFDVCxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEYsTUFBTTtRQUNWLEtBQUssTUFBTTtZQUNQLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNuRixNQUFNO1FBQ1YsS0FBSyxTQUFTO1lBQ1YsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixVQUFVLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1lBQzVGLENBQUM7aUJBQU0sQ0FBQztnQkFDSixVQUFVLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1lBQzdGLENBQUM7WUFDRCxNQUFNO1FBQ1Y7WUFDSSxNQUFNO0lBQ2QsQ0FBQztJQUVELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssS0FBSyxVQUFVLEVBQUUsRUFBRSxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQVksRUFBRSxFQUFFO0lBQ3hDLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQVksRUFBRSxFQUFFO1FBQ2pELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQztRQUM3QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUM7UUFFVixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVEsRUFBRSxPQUFZLEVBQUUsVUFBVSxJQUFJLEdBQUcsRUFBTyxFQUFFLEVBQUU7UUFDakUsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUQsT0FBTztRQUNYLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM3QixJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUNyRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUxQixPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDLENBQUM7QUFRRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE1BQVcsRUFBRSxZQUFnQyxFQUFFLFNBQW9DLEVBQUUsRUFBRTtJQUMzSCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7UUFDN0MsSUFBSSxZQUFZLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBd0JGLE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLENBQUM7QUFHbEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBUyxFQUFFLEtBQVUsRUFBRSxFQUFFO0lBQ25ELE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVEsRUFBRSxJQUFTLEVBQUUsb0JBQW9CLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFDekUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEgsTUFBTSxjQUFjLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLGNBQWMsQ0FBQztJQUVwRSxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlCLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLENBQUMsb0JBQW9CLElBQUksc0JBQXNCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JHLE9BQU8scUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFlLEVBQUUsYUFBb0IsRUFBRSxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsRUFBRTtJQUN4RyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7UUFDakMsTUFBTSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRCxNQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFFbEMsa0NBQWtDO1FBQ2xDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDakMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtvQkFDNUUscUJBQXFCLEVBQUUsQ0FBQztvQkFDeEIscUJBQXFCLEVBQUUsQ0FBQztpQkFDM0IsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDekMsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNqSCxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNILEdBQUcsYUFBYTtZQUNoQixLQUFLLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3JHLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBR0YsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFjLEVBQUUsS0FBVSxFQUFFLFlBQXFCLEVBQUUsVUFBa0I7SUFDL0YsT0FBTyxPQUFPO1NBQ1QsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNoRCxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO1NBQ3ZDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7UUFDcEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxNQUFNLENBQUM7U0FDWixNQUFNLENBQUMsT0FBTyxVQUFVLFdBQVcsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ2pDLE9BQWMsRUFDZCxVQUFlLEVBQ2YsWUFBcUIsRUFDckIsVUFBa0IsRUFDbEIsU0FBaUI7SUFFakIsT0FBTyxPQUFPO1NBQ1QsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9FLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7UUFDcEIsTUFBTSxLQUFLLEdBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSw0QkFBNEIsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ25GLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsSUFBUztJQUNsRSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0IsT0FBTyxHQUFHLElBQUksT0FBTyxLQUFLLEVBQUUsQ0FBQztJQUNqQyxDQUFDO1NBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDekIsT0FBTyxHQUFHLElBQUksUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztJQUNyRSxDQUFDO1NBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDekIsT0FBTyxHQUFHLElBQUksUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDOUQsQ0FBQztTQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sR0FBRyxJQUFJLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDcEQsQ0FBQztTQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE9BQU8sb0JBQW9CLElBQUksYUFBYSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3hGLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxHQUFHLElBQUksUUFBUSxLQUFLLEdBQUcsQ0FBQztJQUNuQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxPQUFjLEVBQUUsS0FBVTtJQUNqRSxPQUFPLE9BQU87U0FDVCxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2hELE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7U0FDdkMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUNwQixJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sR0FBRyxJQUFJLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDakMsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sR0FBRyxJQUFJLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7UUFDckUsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sR0FBRyxJQUFJLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQzlELENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsSUFBSSxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQ3BELENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPLG9CQUFvQixJQUFJLGFBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNoRixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sR0FBRyxJQUFJLFFBQVEsS0FBSyxHQUFHLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0NBQXNDLENBQUMsS0FBYSxFQUFFLGFBQXFCLEVBQUUsU0FBaUI7SUFDMUcsTUFBTSxxQkFBcUIsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDakYsTUFBTSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEtBQWEsRUFBRSxhQUFxQjtJQUM3RSxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzNELE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRSxPQUFPLHVCQUF1QixDQUFDLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMscUJBQStCLEVBQUUsU0FBaUI7SUFDdkYsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRixNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUM3RCxZQUFZLENBQUMsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQy9DLENBQUM7SUFFRixJQUFJLFlBQVksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxPQUFPLHVCQUF1QixDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBZ0IsRUFBRSxLQUFhO0lBQ25FLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBRXRELElBQUksVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsWUFBMEIsRUFBRSxLQUFhO0lBQ3ZFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxZQUFZO1NBQ2QsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztRQUMzQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmb3JtYXRDUEZDTlBKV2l0aE1hc2sgfSBmcm9tICcuL2NwZi1jbnBqLWZvcm1hdHRlcic7XHJcbmltcG9ydCB7IEFncm9TdHJpbmdVdGlscyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcyc7XHJcblxyXG5jb25zdCBudW1iZXJUeXBlcyA9IFsnaW50ZWdlcicsICdkb3VibGUnXTtcclxuY29uc3QgbnVtYmVyUGF0dGVybiA9IC9eXFxkK1xcYiQvO1xyXG5jb25zdCBZWVlZX01NX0REX0ZPUk1BVCA9ICdZWVlZLU1NLUREJztcclxuY29uc3QgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUyA9IFsnY25wQ3BmJywgJ251bUNnYyddO1xyXG5cclxuZXhwb3J0IGNvbnN0IG1lcmdlVW5pcXVlID0gKGFycmF5OiBBcnJheTxzdHJpbmc+LCBvdGhlckFycmF5OiBBcnJheTxzdHJpbmc+KSA9PiBhcnJheS5jb25jYXQob3RoZXJBcnJheS5maWx0ZXIoKGl0ZW0pID0+ICFhcnJheS5pbmNsdWRlcyhpdGVtKSkpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbmZvcm1hdGlvbiA9ICh0eXBlOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIGNhc2UgJ2xvY2FsRGF0ZVRpbWUnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZFZhbHVlOiBmYWxzZSwgdHlwZUV4aXN0czogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxyXG4gICAgICAgIGNhc2UgJ2RvdWJsZSc6XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkVmFsdWU6IHZhbHVlLm1hdGNoKG51bWJlclBhdHRlcm4pLFxyXG4gICAgICAgICAgICAgICAgdHlwZUV4aXN0czogbnVtYmVyVHlwZXMuaW5jbHVkZXModHlwZSksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWRWYWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0eXBlRXhpc3RzOiBmYWxzZSxcclxuICAgICAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuXHJcblxyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTdWdnZXN0aW9uVmFsdWUgPSAoZGlzcGxheUZpZWxkczogc3RyaW5nW10sIG93bmVyRW50aXR5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNlcGFyYXRvcjogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAoIWRpc3BsYXlGaWVsZHMgfHwgZGlzcGxheUZpZWxkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzcGxheUZpZWxkc1xyXG4gICAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChMT09LVVBfRE9DVU1FTlRfRklFTERTLmluY2x1ZGVzKGZpZWxkKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdENQRkNOUEpXaXRoTWFzayhnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGdldFByb3AodmFsdWUsIGAke293bmVyRW50aXR5fS4ke2ZpZWxkfWApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIEFncm9TdHJpbmdVdGlscy5pc1ZhbGlkKFN0cmluZyhmKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbihzZXBhcmF0b3IpO1xyXG59O1xyXG5cclxuY29uc3QgYnVpbGRFbnVtQ2xhdXNlID0gKG5hbWU6IHN0cmluZywgc2VsZWN0ZWQ6IGFueSkgPT4gYCR7bmFtZX0gZXEgJyR7c2VsZWN0ZWR9J2A7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RW51bVF1ZXJ5ID0gKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgbXVsdGlwbGUgPSBmYWxzZSkgPT4ge1xyXG4gICAgaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGAoJHt2YWx1ZS5tYXAoKHNlbGVjdGVkOiBhbnkpID0+IGJ1aWxkRW51bUNsYXVzZShuYW1lLCBzZWxlY3RlZCkpLmpvaW4oJyBvciAnKX0pYDtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJTdHJpbmcgPSAoYW55OiBhbnksIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdHlwZSwgbXVsdGlwbGUgfSA9IGFueTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoWVlZWV9NTV9ERF9GT1JNQVQpfSdgO1xyXG4gICAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoJ0hIOm1tOnNzJyl9J2A7XHJcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoKX0nYDtcclxuICAgICAgICBjYXNlICdsb2NhbERhdGVUaW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTJyl9J2A7XHJcbiAgICAgICAgY2FzZSAnZW51bSc6XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRFbnVtUXVlcnkobmFtZSwgdmFsdWUsIG11bHRpcGxlKTtcclxuICAgICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgICAgICByZXR1cm4gYHVwcGVyKCR7bmFtZX0pIGxpa2UgdXBwZXIoJyUke3ZhbHVlLnJlcGxhY2UoLycvZywgXCInXCIpfSUnKWA7XHJcbiAgICAgICAgY2FzZSAnbG9va3VwJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlLmlkfSdgO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJUb2tlbnMgPSAoYW55OiBhbnksIHZhbHVlOiBhbnksIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB0eXBlLCBsYWJlbCwgc2VhcmNoRmllbGRzLCBvcHRpb25zIH0gPSBhbnk7XHJcbiAgICBsZXQgbGFiZWxWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0wnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndGltZSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnTFRTJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xvY2FsRGF0ZVRpbWUnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCdMIExUUycpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdsb29rdXAnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gc2VhcmNoRmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4gZ2V0UHJvcCh2YWx1ZSwgZmllbGQubmFtZSkpLmpvaW4oJyAtICcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbnVtJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG9wdGlvbnMuZmlsdGVyKChvcHRpb246IGFueSkgPT4gb3B0aW9uLnZhbHVlID09PSBsYWJlbFZhbHVlKVswXS5sYWJlbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5sb29rdXBfbGlzdF9ncmlkX2Jvb2xlYW5fdHJ1ZScpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5sb29rdXBfbGlzdF9ncmlkX2Jvb2xlYW5fZmFsc2UnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBpZDogbmFtZSwgbGFiZWw6IGAke2xhYmVsfTogJHtsYWJlbFZhbHVlfWAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByZXNvbHZlUmVmcyA9IChwYXlsb2FkOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IGdldERhdGFGcm9tUmVmID0gKHJlZjogc3RyaW5nLCByb290T2JqOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCByZWdleCA9IC9cXFtcIiguKj8pXCJcXF0vZztcclxuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgbGV0IG1hdGNoO1xyXG5cclxuICAgICAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhyZWYpKSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChtYXRjaFsxXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2M/LltwYXJ0XSwgcm9vdE9iaik7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmUgPSAob2JqOiBhbnksIHJvb3RPYmo6IGFueSwgdmlzaXRlZCA9IG5ldyBTZXQ8YW55PigpKSA9PiB7XHJcbiAgICAgICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCB2aXNpdGVkLmhhcyhvYmopKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmlzaXRlZC5hZGQob2JqKTtcclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG4gICAgICAgICAgICBvYmouZm9yRWFjaCgoaXRlbSkgPT4gcmVzb2x2ZShpdGVtLCByb290T2JqLCB2aXNpdGVkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICckcmVmJyAmJiBvYmpba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZlBhdGggPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG9iaiwgZ2V0RGF0YUZyb21SZWYocmVmUGF0aCwgcm9vdE9iaikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvYmpba2V5XSwgcm9vdE9iaiwgdmlzaXRlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmVzb2x2ZShwYXlsb2FkLCBwYXlsb2FkKTtcclxuXHJcbiAgICByZXR1cm4gcGF5bG9hZDtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIFJlbGF0aW9uVHJhbnNmb3JtQ29uZmlnID0ge1xyXG4gICAgb3JpZ2luOiBzdHJpbmc7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIHRyYW5zZm9ybTogKHZhbHVlOiBhbnkpID0+IGFueTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhcHBseVJlbGF0aW9uVHJhbnNmb3JtcyA9IChlbnRpdHk6IGFueSwgb3JpZ2luRW50aXR5OiBzdHJpbmcgfCB1bmRlZmluZWQsIHJlbGF0aW9uczogUmVsYXRpb25UcmFuc2Zvcm1Db25maWdbXSkgPT4ge1xyXG4gICAgcmVsYXRpb25zLmZvckVhY2goKHsgb3JpZ2luLCBrZXksIHRyYW5zZm9ybSB9KSA9PiB7XHJcbiAgICAgICAgaWYgKG9yaWdpbkVudGl0eSAhPT0gb3JpZ2luICYmIGVudGl0eVtrZXldKSB7XHJcbiAgICAgICAgICAgIGVudGl0eVtrZXldID0gdHJhbnNmb3JtKGVudGl0eVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZW50aXR5O1xyXG59O1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbmNvbnN0IGRhdGVQYXR0ZXJuWVlZWU1NREQgPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC87XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IGlzVmFsaWRGaWx0ZXIgPSAodHlwZTogYW55LCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IGlzVmFsaWRWYWx1ZSwgdHlwZUV4aXN0cyB9ID0gZ2V0VHlwZUluZm9ybWF0aW9uKHR5cGUsIHZhbHVlKTtcclxuICAgIHJldHVybiAhKHR5cGVFeGlzdHMgJiYgIWlzVmFsaWRWYWx1ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0UHJvcCA9IChvYmo6IGFueSwgcGF0aDogYW55LCBBUFBMWV9DUEZDTlBKX0ZJTFRFUiA9IGZhbHNlKSA9PiB7XHJcbiAgICBsZXQgciA9IHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHJlc3VsdFtwcm9wXSksIG9iaik7XHJcbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJyA/IHBhdGggOiAnJztcclxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IG5vcm1hbGl6ZWRQYXRoLnNwbGl0KCcuJykucG9wKCkgPz8gbm9ybWFsaXplZFBhdGg7XHJcblxyXG4gICAgaWYgKGRhdGVQYXR0ZXJuWVlZWU1NREQudGVzdChyKSkge1xyXG4gICAgICAgIHIgPSBtb21lbnQociwgWVlZWV9NTV9ERF9GT1JNQVQpLmZvcm1hdChcIkREL01NL1lZWVlcIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKChBUFBMWV9DUEZDTlBKX0ZJTFRFUiB8fCBMT09LVVBfRE9DVU1FTlRfRklFTERTLmluY2x1ZGVzKGZpZWxkTmFtZSkpICYmIEFncm9TdHJpbmdVdGlscy5pc1ZhbGlkKHIpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdENQRkNOUEpXaXRoTWFzayhyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRMYWJlbFZhbHVlUmVxdWVzdCA9IChjb250ZW50czogYW55W10sIGRpc3BsYXlGaWVsZHM6IGFueVtdLCBBUFBMWV9DUEZDTlBKX0ZJTFRFUiA9IGZhbHNlKSA9PiB7XHJcbiAgICBjb25zdCByID0gY29udGVudHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBudW1iZXJQYXR0ZXJuVG9UZXN0ID0gL15cXGQrKFxcLlxcZHsxLDJ9KT8kLztcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRJdGVtID0geyAuLi5pdGVtIH07XHJcblxyXG4gICAgICAgIC8vIEZvcm1hdCBjdXJyZW5jeSBmaWVsZHMgKHZsckNvdClcclxuICAgICAgICBbXCJ2bHJDb3RcIl0uZm9yRWFjaCgoZmllbGQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkSXRlbVtmaWVsZF0gJiYgbnVtYmVyUGF0dGVyblRvVGVzdC50ZXN0KGZvcm1hdHRlZEl0ZW1bZmllbGRdKSkge1xyXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkSXRlbVtmaWVsZF0gPSBwYXJzZUZsb2F0KGZvcm1hdHRlZEl0ZW1bZmllbGRdKS50b0xvY2FsZVN0cmluZyhcInB0LUJSXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBMT09LVVBfRE9DVU1FTlRfRklFTERTLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkSXRlbVtmaWVsZE5hbWVdICE9PSBudWxsICYmIGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSA9IGZvcm1hdENQRkNOUEpXaXRoTWFzayhTdHJpbmcoZm9ybWF0dGVkSXRlbVtmaWVsZE5hbWVdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZm9ybWF0dGVkSXRlbSxcclxuICAgICAgICAgICAgbGFiZWw6IGRpc3BsYXlGaWVsZHMubWFwKGZpZWxkID0+IGdldFByb3AoZm9ybWF0dGVkSXRlbSwgZmllbGQsIEFQUExZX0NQRkNOUEpfRklMVEVSKSkuam9pbihcIiAtIFwiKVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcjtcclxufTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RmlsdGVycyhmaWx0ZXJzOiBhbnlbXSwgdmFsdWU6IGFueSwgc3RhdHVzRmlsdGVyOiBib29sZWFuLCBjb2x1bW5OYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmaWx0ZXJzXHJcbiAgICAgICAgLmZpbHRlcigoeyB0eXBlIH0pID0+IGlzVmFsaWRGaWx0ZXIodHlwZSwgdmFsdWUpKVxyXG4gICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuYW1lICE9PSBcInN0YXR1c1wiKVxyXG4gICAgICAgIC5tYXAoKHsgbmFtZSwgdHlwZSB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVCeVR5cGUobmFtZSwgdmFsdWUsIHR5cGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmpvaW4oXCIgb3IgXCIpXHJcbiAgICAgICAgLmNvbmNhdChgYW5kICR7Y29sdW1uTmFtZX0gZXEgJ1ZBJyBgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnNBZHZhbmNlZChcclxuICAgIGZpbHRlcnM6IGFueVtdLFxyXG4gICAgZmlsdGVyRGF0YTogYW55LFxyXG4gICAgc3RhdHVzRmlsdGVyOiBib29sZWFuLFxyXG4gICAgY29sdW1uTmFtZTogc3RyaW5nLFxyXG4gICAgZTA3MGVtcElkOiBzdHJpbmdcclxuKSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gXCJcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZTogYW55ID0gZmlsdGVyRGF0YVtuYW1lXTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUJ5VHlwZShuYW1lLCB2YWx1ZSwgdHlwZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY29uY2F0KHN0YXR1c0ZpbHRlciA/IFtgJHtjb2x1bW5OYW1lfSBlcSAnVkEnIGFuZCBlMDcwZW1wIGVxICcke2UwNzBlbXBJZH0nYF0gOiBbXSlcclxuICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFZhbHVlQnlUeXBlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgdHlwZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICR7dmFsdWV9YDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlVGltZScpIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoKX0nYDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICByZXR1cm4gYGNvbnRhaW5pbmcodXBwZXIoJHtuYW1lfSksIHVwcGVyKCcke1N0cmluZyh2YWx1ZSkucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpfScpKWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnNXaXRob3V0U3RhdHVzKGZpbHRlcnM6IGFueVtdLCB2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgdHlwZSB9KSA9PiBpc1ZhbGlkRmlsdGVyKHR5cGUsIHZhbHVlKSlcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSAhPT0gXCJzdGF0dXNcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoWVlZWV9NTV9ERF9GT1JNQVQpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGVUaW1lJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgY29udGFpbmluZyh1cHBlcigke25hbWV9KSwgdXBwZXIoJyR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpfScpKWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKFwiIGFuZCBcIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvVGhyZWUobnVtOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQobnVtICogMTAwMCkgLyAxMDAwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlc0FuZFdlaWdodHModG90YWw6IG51bWJlciwgbWF4UGVyY2VudGFnZTogbnVtYmVyLCBtYXhXZWlnaHQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFBlcmNlbnRhZ2VzID0gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlcyh0b3RhbCwgbWF4UGVyY2VudGFnZSk7XHJcbiAgICBjb25zdCBjYWxjdWxhdGVkV2VpZ2h0cyA9IGNhbGN1bGF0ZUFkanVzdGVkV2VpZ2h0cyhjYWxjdWxhdGVkUGVyY2VudGFnZXMsIG1heFdlaWdodCk7XHJcbiAgICByZXR1cm4geyBjYWxjdWxhdGVkUGVyY2VudGFnZXMsIGNhbGN1bGF0ZWRXZWlnaHRzIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVBZGp1c3RlZFBlcmNlbnRhZ2VzKHRvdGFsOiBudW1iZXIsIG1heFBlcmNlbnRhZ2U6IG51bWJlcikge1xyXG4gICAgY29uc3QgYmFzZVBlcmNlbnRhZ2UgPSByb3VuZFRvVGhyZWUobWF4UGVyY2VudGFnZSAvIHRvdGFsKTtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQZXJjZW50YWdlcyA9IEFycmF5KHRvdGFsKS5maWxsKGJhc2VQZXJjZW50YWdlKTtcclxuICAgIHJldHVybiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeShjYWxjdWxhdGVkUGVyY2VudGFnZXMsIG1heFBlcmNlbnRhZ2UpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRXZWlnaHRzKGNhbGN1bGF0ZWRQZXJjZW50YWdlczogbnVtYmVyW10sIG1heFdlaWdodDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB0b3RhbFBlcmNlbnRhZ2UgPSBjYWxjdWxhdGVkUGVyY2VudGFnZXMucmVkdWNlKChzdW0sIHBlcmNlbnRhZ2UpID0+IHN1bSArIHBlcmNlbnRhZ2UsIDApO1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFdlaWdodHMgPSBjYWxjdWxhdGVkUGVyY2VudGFnZXMubWFwKHBlcmNlbnRhZ2UgPT5cclxuICAgICAgICByb3VuZFRvVGhyZWUoKHBlcmNlbnRhZ2UgLyAxMDApICogbWF4V2VpZ2h0KVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAocm91bmRUb1RocmVlKHRvdGFsUGVyY2VudGFnZSkgPT09IDEwMCkge1xyXG4gICAgICAgIHJldHVybiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeShjYWxjdWxhdGVkV2VpZ2h0cywgbWF4V2VpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2FsY3VsYXRlZFdlaWdodHM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeSh2YWx1ZXM6IG51bWJlcltdLCB0b3RhbDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgYWRqdXN0ZWRWYWx1ZXMgPSB2YWx1ZXMuc2xpY2UoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRUb3RhbCA9IGFkanVzdGVkVmFsdWVzLnJlZHVjZSgoc3VtLCB2YWx1ZSkgPT4gc3VtICsgdmFsdWUsIDApO1xyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHJvdW5kVG9UaHJlZSh0b3RhbCAtIGN1cnJlbnRUb3RhbCk7XHJcblxyXG4gICAgaWYgKGRpZmZlcmVuY2UgIT09IDApIHtcclxuICAgICAgICBhZGp1c3RlZFZhbHVlc1swXSArPSBkaWZmZXJlbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhZGp1c3RlZFZhbHVlcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJybEN1cnJlbmN5KGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLCB2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWN1cnJlbmN5UGlwZSB8fCAhdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3VycmVuY3lQaXBlXHJcbiAgICAgICAgLnRyYW5zZm9ybSh2YWx1ZSwgXCJCUkxcIiwgXCJzeW1ib2xcIiwgYDEuMi0yYClcclxuICAgICAgICA/LnJlcGxhY2UoXCIuXCIsIFwiI1wiKVxyXG4gICAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIi5cIilcclxuICAgICAgICAucmVwbGFjZShcIiNcIiwgXCIsXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL14oLnsyfSkvLCBcIiQxIFwiKTtcclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb29rdXAtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzL2xvb2t1cHMvdXRpbHMvYWdyby1sb29rdXAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxzQkFBc0IsR0FBRztJQUMzQixRQUFRO0lBQ1IsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsS0FBSztDQUNSLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVqSixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUMzRCxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssZUFBZSxD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b250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmb3JtYXRDUEZDTlBKV2l0aE1hc2sgfSBmcm9tICcuL2NwZi1jbnBqLWZvcm1hdHRlcic7XHJcbmltcG9ydCB7IEFncm9TdHJpbmdVdGlscyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcyc7XHJcblxyXG5jb25zdCBudW1iZXJUeXBlcyA9IFsnaW50ZWdlcicsICdkb3VibGUnXTtcclxuY29uc3QgbnVtYmVyUGF0dGVybiA9IC9eXFxkK1xcYiQvO1xyXG5jb25zdCBZWVlZX01NX0REX0ZPUk1BVCA9ICdZWVlZLU1NLUREJztcclxuY29uc3QgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUyA9IFtcclxuICAgICdjbnBDcGYnLFxyXG4gICAgJ251bUNnYycsXHJcbiAgICAnZTAwMXBlcy5jbnBDcGYnLFxyXG4gICAgJ2UwMDFwZXMubnVtQ2djJyxcclxuICAgICdlMDAxcGVzLmNwZkNucGonLFxyXG4gICAgJ2UwMDFwZXMuY3BmJyxcclxuICAgICdlMDAxcGVzLmNucGonLFxyXG4gICAgJ2UwMDFwZXMuY2djJyxcclxuICAgICdlMDAxcGVzLmNwZkNnYycsXHJcbiAgICAnZTAwMXBlcy5jZ2NDcGYnLFxyXG4gICAgJ2NwZidcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBtZXJnZVVuaXF1ZSA9IChhcnJheTogQXJyYXk8c3RyaW5nPiwgb3RoZXJBcnJheTogQXJyYXk8c3RyaW5nPikgPT4gYXJyYXkuY29uY2F0KG90aGVyQXJyYXkuZmlsdGVyKChpdGVtKSA9PiAhYXJyYXkuaW5jbHVkZXMoaXRlbSkpKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5mb3JtYXRpb24gPSAodHlwZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICd0aW1lJzpcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICBjYXNlICdsb2NhbERhdGVUaW1lJzpcclxuICAgICAgICBjYXNlICdkYXRlVGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWRWYWx1ZTogZmFsc2UsIHR5cGVFeGlzdHM6IHRydWUgfTtcclxuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcclxuICAgICAgICBjYXNlICdkb3VibGUnOlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaXNWYWxpZFZhbHVlOiB2YWx1ZS5tYXRjaChudW1iZXJQYXR0ZXJuKSxcclxuICAgICAgICAgICAgICAgIHR5cGVFeGlzdHM6IG51bWJlclR5cGVzLmluY2x1ZGVzKHR5cGUpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkVmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdHlwZUV4aXN0czogZmFsc2UsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U3VnZ2VzdGlvblZhbHVlID0gKGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdLCBvd25lckVudGl0eTogc3RyaW5nLCB2YWx1ZTogYW55LCBzZXBhcmF0b3I6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKCFkaXNwbGF5RmllbGRzIHx8IGRpc3BsYXlGaWVsZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRpc3BsYXlGaWVsZHNcclxuICAgICAgICAubWFwKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUy5pbmNsdWRlcyhmaWVsZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRDUEZDTlBKV2l0aE1hc2soZ2V0UHJvcCh2YWx1ZSwgYCR7b3duZXJFbnRpdHl9LiR7ZmllbGR9YCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBBZ3JvU3RyaW5nVXRpbHMuaXNWYWxpZChTdHJpbmcoZikpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmpvaW4oc2VwYXJhdG9yKTtcclxufTtcclxuXHJcbmNvbnN0IGJ1aWxkRW51bUNsYXVzZSA9IChuYW1lOiBzdHJpbmcsIHNlbGVjdGVkOiBhbnkpID0+IGAke25hbWV9IGVxICcke3NlbGVjdGVkfSdgO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEVudW1RdWVyeSA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlID0gZmFsc2UpID0+IHtcclxuICAgIGlmIChtdWx0aXBsZSkge1xyXG4gICAgICAgIHJldHVybiBgKCR7dmFsdWUubWFwKChzZWxlY3RlZDogYW55KSA9PiBidWlsZEVudW1DbGF1c2UobmFtZSwgc2VsZWN0ZWQpKS5qb2luKCcgb3IgJyl9KWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlsdGVyU3RyaW5nID0gKGFueTogYW55LCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0gPSBhbnk7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICR7dmFsdWV9YDtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgICAgICBjYXNlICd0aW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCdISDptbTpzcycpfSdgO1xyXG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICAgICAgY2FzZSAnbG9jYWxEYXRlVGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTUycpfSdgO1xyXG4gICAgICAgIGNhc2UgJ2VudW0nOlxyXG4gICAgICAgICAgICByZXR1cm4gZ2V0RW51bVF1ZXJ5KG5hbWUsIHZhbHVlLCBtdWx0aXBsZSk7XHJcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICAgICAgcmV0dXJuIGB1cHBlcigke25hbWV9KSBsaWtlIHVwcGVyKCclJHt2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJ1wiKX0lJylgO1xyXG4gICAgICAgIGNhc2UgJ2xvb2t1cCc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZS5pZH0nYDtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlsdGVyVG9rZW5zID0gKGFueTogYW55LCB2YWx1ZTogYW55LCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdHlwZSwgbGFiZWwsIHNlYXJjaEZpZWxkcywgb3B0aW9ucyB9ID0gYW55O1xyXG4gICAgbGV0IGxhYmVsVmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCdMJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0xUUycpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdsb2NhbERhdGVUaW1lJzpcclxuICAgICAgICBjYXNlICdkYXRlVGltZSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnTCBMVFMnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbG9va3VwJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IHNlYXJjaEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IGdldFByb3AodmFsdWUsIGZpZWxkLm5hbWUpKS5qb2luKCcgLSAnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZW51bSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IG9wdGlvbi52YWx1ZSA9PT0gbGFiZWxWYWx1ZSlbMF0ubGFiZWw7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSB0cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2xpc3RfZ3JpZF9ib29sZWFuX3RydWUnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSB0cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2xpc3RfZ3JpZF9ib29sZWFuX2ZhbHNlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHsgaWQ6IG5hbWUsIGxhYmVsOiBgJHtsYWJlbH06ICR7bGFiZWxWYWx1ZX1gIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlZnMgPSAocGF5bG9hZDogYW55KSA9PiB7XHJcbiAgICBjb25zdCBnZXREYXRhRnJvbVJlZiA9IChyZWY6IHN0cmluZywgcm9vdE9iajogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxbXCIoLio/KVwiXFxdL2c7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGxldCBtYXRjaDtcclxuXHJcbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMocmVmKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2gobWF0Y2hbMV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjPy5bcGFydF0sIHJvb3RPYmopO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZXNvbHZlID0gKG9iajogYW55LCByb290T2JqOiBhbnksIHZpc2l0ZWQgPSBuZXcgU2V0PGFueT4oKSkgPT4ge1xyXG4gICAgICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgdmlzaXRlZC5oYXMob2JqKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZpc2l0ZWQuYWRkKG9iaik7XHJcblxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcclxuICAgICAgICAgICAgb2JqLmZvckVhY2goKGl0ZW0pID0+IHJlc29sdmUoaXRlbSwgcm9vdE9iaiwgdmlzaXRlZCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnJHJlZicgJiYgb2JqW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZQYXRoID0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihvYmosIGdldERhdGFGcm9tUmVmKHJlZlBhdGgsIHJvb3RPYmopKTtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUob2JqW2tleV0sIHJvb3RPYmosIHZpc2l0ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJlc29sdmUocGF5bG9hZCwgcGF5bG9hZCk7XHJcblxyXG4gICAgcmV0dXJuIHBheWxvYWQ7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBSZWxhdGlvblRyYW5zZm9ybUNvbmZpZyA9IHtcclxuICAgIG9yaWdpbjogc3RyaW5nO1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZTogYW55KSA9PiBhbnk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXBwbHlSZWxhdGlvblRyYW5zZm9ybXMgPSAoZW50aXR5OiBhbnksIG9yaWdpbkVudGl0eTogc3RyaW5nIHwgdW5kZWZpbmVkLCByZWxhdGlvbnM6IFJlbGF0aW9uVHJhbnNmb3JtQ29uZmlnW10pID0+IHtcclxuICAgIHJlbGF0aW9ucy5mb3JFYWNoKCh7IG9yaWdpbiwga2V5LCB0cmFuc2Zvcm0gfSkgPT4ge1xyXG4gICAgICAgIGlmIChvcmlnaW5FbnRpdHkgIT09IG9yaWdpbiAmJiBlbnRpdHlba2V5XSkge1xyXG4gICAgICAgICAgICBlbnRpdHlba2V5XSA9IHRyYW5zZm9ybShlbnRpdHlba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGVudGl0eTtcclxufTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5jb25zdCBkYXRlUGF0dGVybllZWVlNTUREID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfSQvO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRmlsdGVyID0gKHR5cGU6IGFueSwgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBpc1ZhbGlkVmFsdWUsIHR5cGVFeGlzdHMgfSA9IGdldFR5cGVJbmZvcm1hdGlvbih0eXBlLCB2YWx1ZSk7XHJcbiAgICByZXR1cm4gISh0eXBlRXhpc3RzICYmICFpc1ZhbGlkVmFsdWUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFByb3AgPSAob2JqOiBhbnksIHBhdGg6IGFueSwgQVBQTFlfQ1BGQ05QSl9GSUxURVIgPSBmYWxzZSkgPT4ge1xyXG4gICAgbGV0IHIgPSBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSB0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoIDogJyc7XHJcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBub3JtYWxpemVkUGF0aC5zcGxpdCgnLicpLnBvcCgpID8/IG5vcm1hbGl6ZWRQYXRoO1xyXG5cclxuICAgIGlmIChkYXRlUGF0dGVybllZWVlNTURELnRlc3QocikpIHtcclxuICAgICAgICByID0gbW9tZW50KHIsIFlZWVlfTU1fRERfRk9STUFUKS5mb3JtYXQoXCJERC9NTS9ZWVlZXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgoQVBQTFlfQ1BGQ05QSl9GSUxURVIgfHwgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUy5pbmNsdWRlcyhmaWVsZE5hbWUpKSAmJiBBZ3JvU3RyaW5nVXRpbHMuaXNWYWxpZChyKSkge1xyXG4gICAgICAgIHJldHVybiBmb3JtYXRDUEZDTlBKV2l0aE1hc2socik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TGFiZWxWYWx1ZVJlcXVlc3QgPSAoY29udGVudHM6IGFueVtdLCBkaXNwbGF5RmllbGRzOiBhbnlbXSwgQVBQTFlfQ1BGQ05QSl9GSUxURVIgPSBmYWxzZSkgPT4ge1xyXG4gICAgY29uc3QgciA9IGNvbnRlbnRzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbnVtYmVyUGF0dGVyblRvVGVzdCA9IC9eXFxkKyhcXC5cXGR7MSwyfSk/JC87XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkSXRlbSA9IHsgLi4uaXRlbSB9O1xyXG5cclxuICAgICAgICAvLyBGb3JtYXQgY3VycmVuY3kgZmllbGRzICh2bHJDb3QpXHJcbiAgICAgICAgW1widmxyQ290XCJdLmZvckVhY2goKGZpZWxkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm1hdHRlZEl0ZW1bZmllbGRdICYmIG51bWJlclBhdHRlcm5Ub1Rlc3QudGVzdChmb3JtYXR0ZWRJdGVtW2ZpZWxkXSkpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1hdHRlZEl0ZW1bZmllbGRdID0gcGFyc2VGbG9hdChmb3JtYXR0ZWRJdGVtW2ZpZWxkXSkudG9Mb2NhbGVTdHJpbmcoXCJwdC1CUlwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxyXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUy5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSAhPT0gbnVsbCAmJiBmb3JtYXR0ZWRJdGVtW2ZpZWxkTmFtZV0gIT09IHVuZGVmaW5lZCAmJiBmb3JtYXR0ZWRJdGVtW2ZpZWxkTmFtZV0gIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRJdGVtW2ZpZWxkTmFtZV0gPSBmb3JtYXRDUEZDTlBKV2l0aE1hc2soU3RyaW5nKGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLmZvcm1hdHRlZEl0ZW0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5RmllbGRzLm1hcChmaWVsZCA9PiBnZXRQcm9wKGZvcm1hdHRlZEl0ZW0sIGZpZWxkLCBBUFBMWV9DUEZDTlBKX0ZJTFRFUikpLmpvaW4oXCIgLSBcIilcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnMoZmlsdGVyczogYW55W10sIHZhbHVlOiBhbnksIHN0YXR1c0ZpbHRlcjogYm9vbGVhbiwgY29sdW1uTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgdHlwZSB9KSA9PiBpc1ZhbGlkRmlsdGVyKHR5cGUsIHZhbHVlKSlcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSAhPT0gXCJzdGF0dXNcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gY29udmVydFZhbHVlQnlUeXBlKG5hbWUsIHZhbHVlLCB0eXBlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKFwiIG9yIFwiKVxyXG4gICAgICAgIC5jb25jYXQoYGFuZCAke2NvbHVtbk5hbWV9IGVxICdWQScgYCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGaWx0ZXJzQWR2YW5jZWQoXHJcbiAgICBmaWx0ZXJzOiBhbnlbXSxcclxuICAgIGZpbHRlckRhdGE6IGFueSxcclxuICAgIHN0YXR1c0ZpbHRlcjogYm9vbGVhbixcclxuICAgIGNvbHVtbk5hbWU6IHN0cmluZyxcclxuICAgIGUwNzBlbXBJZDogc3RyaW5nXHJcbikge1xyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gZmlsdGVyRGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlckRhdGFbbmFtZV0gIT09IFwiXCIpXHJcbiAgICAgICAgLm1hcCgoeyBuYW1lLCB0eXBlIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWU6IGFueSA9IGZpbHRlckRhdGFbbmFtZV07XHJcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVCeVR5cGUobmFtZSwgdmFsdWUsIHR5cGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNvbmNhdChzdGF0dXNGaWx0ZXIgPyBbYCR7Y29sdW1uTmFtZX0gZXEgJ1ZBJyBhbmQgZTA3MGVtcCBlcSAnJHtlMDcwZW1wSWR9J2BdIDogW10pXHJcbiAgICAgICAgLmpvaW4oXCIgYW5kIFwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZUJ5VHlwZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHR5cGU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChZWVlZX01NX0REX0ZPUk1BVCl9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIkhIOm1tOnNzXCIpfSdgO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGBjb250YWluaW5nKHVwcGVyKCR7bmFtZX0pLCB1cHBlcignJHtTdHJpbmcodmFsdWUpLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKX0nKSlgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGaWx0ZXJzV2l0aG91dFN0YXR1cyhmaWx0ZXJzOiBhbnlbXSwgdmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICAgICAgICAuZmlsdGVyKCh7IHR5cGUgfSkgPT4gaXNWYWxpZEZpbHRlcih0eXBlLCB2YWx1ZSkpXHJcbiAgICAgICAgLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWUgIT09IFwic3RhdHVzXCIpXHJcbiAgICAgICAgLm1hcCgoeyBuYW1lLCB0eXBlIH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIkhIOm1tOnNzXCIpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYGNvbnRhaW5pbmcodXBwZXIoJHtuYW1lfSksIHVwcGVyKCcke3ZhbHVlLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKX0nKSlgO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb1RocmVlKG51bTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKG51bSAqIDEwMDApIC8gMTAwMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUFkanVzdGVkUGVyY2VudGFnZXNBbmRXZWlnaHRzKHRvdGFsOiBudW1iZXIsIG1heFBlcmNlbnRhZ2U6IG51bWJlciwgbWF4V2VpZ2h0OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQZXJjZW50YWdlcyA9IGNhbGN1bGF0ZUFkanVzdGVkUGVyY2VudGFnZXModG90YWwsIG1heFBlcmNlbnRhZ2UpO1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFdlaWdodHMgPSBjYWxjdWxhdGVBZGp1c3RlZFdlaWdodHMoY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBtYXhXZWlnaHQpO1xyXG4gICAgcmV0dXJuIHsgY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBjYWxjdWxhdGVkV2VpZ2h0cyB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlcyh0b3RhbDogbnVtYmVyLCBtYXhQZXJjZW50YWdlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGJhc2VQZXJjZW50YWdlID0gcm91bmRUb1RocmVlKG1heFBlcmNlbnRhZ2UgLyB0b3RhbCk7XHJcbiAgICBjb25zdCBjYWxjdWxhdGVkUGVyY2VudGFnZXMgPSBBcnJheSh0b3RhbCkuZmlsbChiYXNlUGVyY2VudGFnZSk7XHJcbiAgICByZXR1cm4gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkoY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBtYXhQZXJjZW50YWdlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUFkanVzdGVkV2VpZ2h0cyhjYWxjdWxhdGVkUGVyY2VudGFnZXM6IG51bWJlcltdLCBtYXhXZWlnaHQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgdG90YWxQZXJjZW50YWdlID0gY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLnJlZHVjZSgoc3VtLCBwZXJjZW50YWdlKSA9PiBzdW0gKyBwZXJjZW50YWdlLCAwKTtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRXZWlnaHRzID0gY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLm1hcChwZXJjZW50YWdlID0+XHJcbiAgICAgICAgcm91bmRUb1RocmVlKChwZXJjZW50YWdlIC8gMTAwKSAqIG1heFdlaWdodClcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHJvdW5kVG9UaHJlZSh0b3RhbFBlcmNlbnRhZ2UpID09PSAxMDApIHtcclxuICAgICAgICByZXR1cm4gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkoY2FsY3VsYXRlZFdlaWdodHMsIG1heFdlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNhbGN1bGF0ZWRXZWlnaHRzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkodmFsdWVzOiBudW1iZXJbXSwgdG90YWw6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGFkanVzdGVkVmFsdWVzID0gdmFsdWVzLnNsaWNlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50VG90YWwgPSBhZGp1c3RlZFZhbHVlcy5yZWR1Y2UoKHN1bSwgdmFsdWUpID0+IHN1bSArIHZhbHVlLCAwKTtcclxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSByb3VuZFRvVGhyZWUodG90YWwgLSBjdXJyZW50VG90YWwpO1xyXG5cclxuICAgIGlmIChkaWZmZXJlbmNlICE9PSAwKSB7XHJcbiAgICAgICAgYWRqdXN0ZWRWYWx1ZXNbMF0gKz0gZGlmZmVyZW5jZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWRqdXN0ZWRWYWx1ZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCcmxDdXJyZW5jeShjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSwgdmFsdWU6IG51bWJlcik6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFjdXJyZW5jeVBpcGUgfHwgIXZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbmN5UGlwZVxyXG4gICAgICAgIC50cmFuc2Zvcm0odmFsdWUsIFwiQlJMXCIsIFwic3ltYm9sXCIsIGAxLjItMmApXHJcbiAgICAgICAgPy5yZXBsYWNlKFwiLlwiLCBcIiNcIilcclxuICAgICAgICAucmVwbGFjZShcIixcIiwgXCIuXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoXCIjXCIsIFwiLFwiKVxyXG4gICAgICAgIC5yZXBsYWNlKC9eKC57Mn0pLywgXCIkMSBcIik7XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
@@ -7958,7 +7958,10 @@ class ModalInvoicePjForLoadOrderComponent extends ModalInvoicePjBase {
|
|
|
7958
7958
|
this.gridLoading = false;
|
|
7959
7959
|
}))
|
|
7960
7960
|
.subscribe((result) => {
|
|
7961
|
-
this.gridData = result?.result?.invoices || []
|
|
7961
|
+
this.gridData = (result?.result?.invoices || []).map((invoice) => ({
|
|
7962
|
+
...invoice,
|
|
7963
|
+
_uniqueId: invoice.externalInvoiceId || invoice.invoiceId
|
|
7964
|
+
}));
|
|
7962
7965
|
if (this.gridData.length === 0 && !searchValue) {
|
|
7963
7966
|
this.dontHaveAnyInvoice = true;
|
|
7964
7967
|
}
|
|
@@ -9837,7 +9840,19 @@ function formatCPFCNPJWithMask(value) {
|
|
|
9837
9840
|
const numberTypes = ['integer', 'double'];
|
|
9838
9841
|
const numberPattern = /^\d+\b$/;
|
|
9839
9842
|
const YYYY_MM_DD_FORMAT = 'YYYY-MM-DD';
|
|
9840
|
-
const LOOKUP_DOCUMENT_FIELDS = [
|
|
9843
|
+
const LOOKUP_DOCUMENT_FIELDS = [
|
|
9844
|
+
'cnpCpf',
|
|
9845
|
+
'numCgc',
|
|
9846
|
+
'e001pes.cnpCpf',
|
|
9847
|
+
'e001pes.numCgc',
|
|
9848
|
+
'e001pes.cpfCnpj',
|
|
9849
|
+
'e001pes.cpf',
|
|
9850
|
+
'e001pes.cnpj',
|
|
9851
|
+
'e001pes.cgc',
|
|
9852
|
+
'e001pes.cpfCgc',
|
|
9853
|
+
'e001pes.cgcCpf',
|
|
9854
|
+
'cpf'
|
|
9855
|
+
];
|
|
9841
9856
|
const mergeUnique = (array, otherArray) => array.concat(otherArray.filter((item) => !array.includes(item)));
|
|
9842
9857
|
const getTypeInformation = (type, value) => {
|
|
9843
9858
|
switch (type) {
|
|
@@ -10215,7 +10230,19 @@ const createGenericOnBlur = (formGroup, fieldName, dataKey = 'id') => () => {
|
|
|
10215
10230
|
};
|
|
10216
10231
|
|
|
10217
10232
|
const LOOKUP_DEBOUNCE_MS = 300;
|
|
10218
|
-
const LOOKUP_DOCUMENT_FIELDS_TO_FORMAT = [
|
|
10233
|
+
const LOOKUP_DOCUMENT_FIELDS_TO_FORMAT = [
|
|
10234
|
+
'cnpCpf',
|
|
10235
|
+
'numCgc',
|
|
10236
|
+
'e001pes.cnpCpf',
|
|
10237
|
+
'e001pes.numCgc',
|
|
10238
|
+
'e001pes.cpfCnpj',
|
|
10239
|
+
'e001pes.cpf',
|
|
10240
|
+
'e001pes.cnpj',
|
|
10241
|
+
'e001pes.cgc',
|
|
10242
|
+
'e001pes.cpfCgc',
|
|
10243
|
+
'e001pes.cgcCpf',
|
|
10244
|
+
'cpf'
|
|
10245
|
+
];
|
|
10219
10246
|
class AgroBaseLookupField {
|
|
10220
10247
|
config;
|
|
10221
10248
|
translate;
|