ca-components 1.1.6 → 1.1.7

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.
@@ -263,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
263
263
  type: Output,
264
264
  args: ['dropDownKeyNavigation']
265
265
  }] } });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC9pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvaW5wdXQtdGVzdC9pbnB1dC10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJeEQsT0FBTyxFQUFvQixjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHNUQsUUFBUTtBQUNSLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsUUFBUTtBQUNSLE9BQU8sRUFDSCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQixjQUFjLEVBQ2Qsa0NBQWtDLEVBQ2xDLDZCQUE2QixFQUM3QixhQUFhLEVBQ2IsY0FBYyxFQUNkLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixHQUNyQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQ0gsU0FBUyxFQUNULG1CQUFtQixHQUV0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU87QUFDUCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3pDLGFBQWE7QUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2RUFBNkUsQ0FBQztBQUM5SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUV2RyxhQUFhO0FBQ2IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWxGLFFBQVE7QUFDUixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUzRSxTQUFTO0FBQ1QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7O0FBR2hFLE1BQU0sU0FBUztJQUFmO1FBR1csc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBR25DLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUtoQyxjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBR2pDLENBQUM7SUFGVSxRQUFRLENBQUMsQ0FBTSxJQUFVLENBQUM7SUFDMUIsaUNBQWlDLENBQUMsQ0FBbUIsSUFBVSxDQUFDO0NBQzFFO0FBOENELE1BQU0sT0FBTyxrQkFDVCxTQUFRLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBV3RELElBQWEsV0FBVyxDQUFDLE1BQWdCO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFnREQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFDK0IsU0FBb0IsRUFDeEMsS0FBd0IsRUFDZixXQUEyQixFQUMzQixxQkFBNEM7UUFFNUQsS0FBSyxFQUFFLENBQUM7UUFMbUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN4QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBbkV6RCxlQUFVLEdBQXFCLEVBQUUsQ0FBQztRQUdsQyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQWE5QixnQ0FBMkIsR0FDaEMsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVILG1CQUFjLEdBQ3BDLElBQUksWUFBWSxFQUFXLENBQUM7UUFFWCxjQUFTLEdBQzFCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDVixvQkFBZSxHQUNqQyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ2pCLGdCQUFXLEdBQ3pCLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ2pCLGlCQUFZLEdBQ2hDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ3JCLG9CQUFlLEdBQzVCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFaEMsV0FBVztRQUNpQiwwQkFBcUIsR0FDN0MsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNDLCtCQUEwQixHQUd0RCxJQUFJLFlBQVksRUFHakIsQ0FBQztRQUVMLFNBQVM7UUFDTyxvQkFBZSxHQUFHLElBQUksaUJBQWlCLENBQ25ELElBQUksRUFDSixJQUFJLENBQUMsWUFBWSxDQUNwQixDQUFDO1FBRUssaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDdEMsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFDbEMsNkJBQXdCLEdBQUcsd0JBQXdCLENBQUM7UUFFM0QsV0FBVztRQUNKLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQWFyQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUV4RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUztnQkFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBTztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sVUFBVSxDQUFDLEdBQXFCO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWU7UUFFMUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHVDQUF1QztRQUM3RCxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQjtZQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtRQUUxRixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDcEIsTUFBTSxLQUFLLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7UUFDN0QsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsa0JBQWtCO1FBRS9DLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVk7UUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsaUNBQWlDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVlLGlDQUFpQyxDQUFDLEtBQXVCO1FBQ3JFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUM5Qyw0REFBNEQ7WUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFpQjtRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ2hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFlO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxNQUFlO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBb0I7UUFDckMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQztZQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ3pCLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBeExRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDB0QkMzSS9CLHVtWEE4VUE7Z0JEM09RLFVBQVU7Z0JBQ1YsWUFBWSw0SEFDWixTQUFTLHNXQUNULG9CQUFvQixnT0FDcEIsYUFBYTtnQkFFYixRQUFRO2dCQUNSLGNBQWMsOENBQ2QsdUJBQXVCLHVEQUN2QixjQUFjLDhDQUNkLDZCQUE2Qiw2REFDN0IsdUJBQXVCLHVEQUN2QixjQUFjLDhDQUNkLFNBQVMseUNBRVQsa0NBQWtDLHVFQUNsQyxpQkFBaUIsOEVBQ2pCLGFBQWEsNkNBQ2Isa0JBQWtCLGtEQUNsQixxQkFBcUIscURBQ3JCLDJCQUEyQjtnQkFFM0IsYUFBYTtnQkFDYixzQkFBc0IsdUZBQ3RCLG9CQUFvQixpRkFDcEIsYUFBYSxrREFDYixpQkFBaUIsdUZBQ2pCLHVCQUF1QjtnQkFFdkIsYUFBYTtnQkFDYixxQkFBcUIscU5BQ3JCLHVCQUF1QixxT0FDdkIsK0JBQStCLHVUQUMvQix3QkFBd0Isd05BQ3hCLHdCQUF3Qjs7NEZBTW5CLGtCQUFrQjtrQkE1QzlCLFNBQVM7K0JBQ0ksZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDTCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBRWIsUUFBUTt3QkFDUixjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIsY0FBYzt3QkFDZCw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsY0FBYzt3QkFDZCxTQUFTO3dCQUNULG1CQUFtQjt3QkFDbkIsa0NBQWtDO3dCQUNsQyxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLDJCQUEyQjt3QkFFM0IsYUFBYTt3QkFDYixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFFdkIsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsK0JBQStCO3dCQUMvQix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDM0IsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs7MEJBcUVoQyxRQUFROzswQkFBSSxJQUFJOzBJQTNEMEIsWUFBWTtzQkFBMUQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUMzQiwwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFHRywyQkFBMkI7c0JBRG5DLE1BQU07dUJBQUMsNkJBQTZCO2dCQUlYLGNBQWM7c0JBQXZDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUdILFNBQVM7c0JBQTdCLE1BQU07dUJBQUMsV0FBVztnQkFFRyxlQUFlO3NCQUFwQyxNQUFNO3VCQUFDLFlBQVk7Z0JBRUYsV0FBVztzQkFBNUIsTUFBTTt1QkFBQyxRQUFRO2dCQUVRLFlBQVk7c0JBQW5DLE1BQU07dUJBQUMsY0FBYztnQkFFTCxlQUFlO3NCQUEvQixNQUFNO3VCQUFDLE9BQU87Z0JBSWEscUJBQXFCO3NCQUFoRCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFFTywwQkFBMEI7c0JBQTFELE1BQU07dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgSW5wdXRDaGFuZ2VWYWx1ZSwgSW5wdXRTdmdSb3V0ZXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDb21tYW5kc0V2ZW50LCBMYWJlbENvbG9yIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuLy8gZW11bXNcbmltcG9ydCB7IElucHV0Q29tbWFuZHNUeXBlLCBJbnB1dFN0cmluZ0VudW0gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuLi8uLi9jYS1pbnB1dC1kcm9wZG93bi9lbnVtcyc7XG5cbi8vIHBpcGVzXG5pbXBvcnQge1xuICAgIElucHV0Q2xhc3NQaXBlLFxuICAgIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICAgIElucHV0RHJvcGRvd25BcnJvd0NsYXNzUGlwZSxcbiAgICBJbnB1dEVycm9yUGlwZSxcbiAgICBJbnB1dFBsYWNlaG9sZGVySWNvblJpZ2h0Q2xhc3NQaXBlLFxuICAgIElucHV0UGxhY2Vob2xkZXJUZXh0Q2xhc3NQaXBlLFxuICAgIElucHV0VHlwZVBpcGUsXG4gICAgTGFiZWxDbGFzc1BpcGUsXG4gICAgU2hvd0NsZWFyUGlwZSxcbiAgICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gICAgU2hvd1BsYWNlaG9sZGVyVGV4dFBpcGUsXG4gICAgU2hvd1ZhbGlkQ2hlY2tQaXBlLFxufSBmcm9tICcuLi9waXBlcyc7XG5pbXBvcnQge1xuICAgIENhU3ZnUGlwZSxcbiAgICBMb2FkU3RhdHVzQ29sb3JQaXBlLFxuICAgIFRob3VzYW5kU2VwYXJhdG9yUGlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vcGlwZXMnO1xuXG4vLyBtYXNrXG5pbXBvcnQgeyBOZ3hNYXNrTW9kdWxlIH0gZnJvbSAnbmd4LW1hc2snO1xuaW1wb3J0IHsgTmd4TWFza1NlcnZpY2UgfSBmcm9tICduZ3gtbWFzayc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY2EtaW5wdXQtcGFzc3dvcmQvY2EtaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXRQbGFjZWhvbGRlckljb25Db21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NhLWlucHV0LXBsYWNlaG9sZGVyLWljb24vY2EtaW5wdXQtcGxhY2Vob2xkZXItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENsZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jYS1pbnB1dC1jbGVhci9jYS1pbnB1dC1jbGVhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENvbW1hbmRzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jYS1pbnB1dC1jb21tYW5kcy9jYS1pbnB1dC1jb21tYW5kcy5jb21wb25lbnQnO1xuXG4vLyBkaXJlY3RpdmVzXG5pbXBvcnQgeyBDYXBzTG9ja0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgTWF4VmFsdWVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFJlc3RyaWN0SW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFByaWNlRm9ybWF0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDb21tYW5kVmlzaWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY29tbWFuZC12aXNpYmxlLmRpcmVjdGl2ZSc7XG5cbi8vIGNsYXNzXG5pbXBvcnQgeyBFdmVudElucHV0TWFuYWdlciB9IGZyb20gJy4uL2Jhc2UtY2xhc3Nlcy9jYS1pbnB1dC1ldmVudC1tYW5hZ2VyJztcblxuLy8gbWl4aW5zXG5pbXBvcnQgeyBJbnB1dENvbW1hbmRNaXhpbiB9IGZyb20gJy4uL21peGlucy9pbnB1dC1jb21tYW5kLm1peGluJztcbmltcG9ydCB7IElucHV0SGVscGVyTWl4aW4gfSBmcm9tICcuLi9taXhpbnMvaW5wdXQtaGVscGVyLm1peGluJztcbmltcG9ydCB7IE9wdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vY2EtaW5wdXQtZHJvcGRvd24vbW9kZWxzJztcblxuY2xhc3MgSW5wdXRCYXNlIHtcbiAgICBwdWJsaWMgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgICBwdWJsaWMgX2lucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgcHVibGljIGlzVmlzaWJsZUNvbW1hbmRzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG1hc2tBcHBsaWVyITogTmd4TWFza1NlcnZpY2U7XG4gICAgcHVibGljIHRob3VzYW5kU2VwYXJhdG9yUGlwZSE6IFRob3VzYW5kU2VwYXJhdG9yUGlwZTtcbiAgICBwdWJsaWMgaXNGb2N1c0lucHV0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzRWRpdElucHV0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzRHJvcGRvd25Ub2dnbGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzVG91Y2hlZElucHV0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNldENvbW1hbmRFdmVudCE6IEV2ZW50SW5wdXRNYW5hZ2VyPENvbW1hbmRzRXZlbnQ+O1xuXG4gICAgcHVibGljIGhhbmRsZVRvZ2dsZURyb3Bkb3duT3B0aW9ucyE6IEV2ZW50RW1pdHRlcjx2b2lkPjtcblxuICAgIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7IH07XG4gICAgcHVibGljIG9uQ2hhbmdlKF86IGFueSk6IHZvaWQgeyB9XG4gICAgcHVibGljIGhhbmRsZUNoYW5nZUlucHV0QW5kVXBkYXRlQ29udHJvbChfOiBJbnB1dENoYW5nZVZhbHVlKTogdm9pZCB7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYS1pbnB1dC10ZXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE5nYk1vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIE5neE1hc2tNb2R1bGUsXG5cbiAgICAgICAgLy8gUGlwZXNcbiAgICAgICAgSW5wdXRFcnJvclBpcGUsXG4gICAgICAgIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICAgICAgICBJbnB1dENsYXNzUGlwZSxcbiAgICAgICAgSW5wdXRQbGFjZWhvbGRlclRleHRDbGFzc1BpcGUsXG4gICAgICAgIFNob3dQbGFjZWhvbGRlclRleHRQaXBlLFxuICAgICAgICBMYWJlbENsYXNzUGlwZSxcbiAgICAgICAgQ2FTdmdQaXBlLFxuICAgICAgICBMb2FkU3RhdHVzQ29sb3JQaXBlLFxuICAgICAgICBJbnB1dFBsYWNlaG9sZGVySWNvblJpZ2h0Q2xhc3NQaXBlLFxuICAgICAgICBNYXhWYWx1ZURpcmVjdGl2ZSxcbiAgICAgICAgSW5wdXRUeXBlUGlwZSxcbiAgICAgICAgU2hvd1ZhbGlkQ2hlY2tQaXBlLFxuICAgICAgICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25BcnJvd0NsYXNzUGlwZSxcblxuICAgICAgICAvLyBEaXJlY3RpdmVzXG4gICAgICAgIFJlc3RyaWN0SW5wdXREaXJlY3RpdmUsXG4gICAgICAgIFByaWNlRm9ybWF0RGlyZWN0aXZlLFxuICAgICAgICBTaG93Q2xlYXJQaXBlLFxuICAgICAgICBDYXBzTG9ja0RpcmVjdGl2ZSxcbiAgICAgICAgQ29tbWFuZFZpc2libGVEaXJlY3RpdmUsXG5cbiAgICAgICAgLy8gQ29tcG9uZW50c1xuICAgICAgICBDYUlucHV0Q2xlYXJDb21wb25lbnQsXG4gICAgICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0UGFzc3dvcmRDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXRDb21tYW5kc0NvbXBvbmVudCxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10ZXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaW5wdXQtdGVzdC5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUZXN0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBJbnB1dENvbW1hbmRNaXhpbihJbnB1dEhlbHBlck1peGluKElucHV0QmFzZSkpXG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHVibGljIGlucHV0VmFsdWU6IElucHV0Q2hhbmdlVmFsdWUgPSAnJztcbiAgICBwdWJsaWMgb3ZlcnJpZGUgX2lucHV0Q29uZmlnITogSUNhSW5wdXQ7XG5cbiAgICBwdWJsaWMgaW5wdXRTdmdSb3V0ZXMgPSBJbnB1dFN2Z1JvdXRlcztcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgb3ZlcnJpZGUgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgICBASW5wdXQoKSBzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvciE6IExhYmVsQ29sb3IgfCBudWxsO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGluY29ycmVjdFZhbHVlITogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzZXQgaW5wdXRDb25maWcoY29uZmlnOiBJQ2FJbnB1dCkge1xuICAgICAgICB0aGlzLl9pbnB1dENvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhY3RpdmVJdGVtITogT3B0aW9uTW9kZWwgfCBudWxsO1xuXG4gICAgQE91dHB1dCgnaGFuZGxlVG9nZ2xlRHJvcGRvd25PcHRpb25zJylcbiAgICBvdmVycmlkZSBoYW5kbGVUb2dnbGVEcm9wZG93bk9wdGlvbnM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoJ2luY29ycmVjdEV2ZW50JykgaW5jb3JyZWN0SW5wdXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBPdXRwdXQoJ2JsdXJJbnB1dCcpIGJsdXJJbnB1dDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoJ2ZvY3VzSW5wdXQnKSBmb2N1c0lucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgICBAT3V0cHV0KCdjaGFuZ2UnKSBjaGFuZ2VJbnB1dDogRXZlbnRFbWl0dGVyPElucHV0Q2hhbmdlVmFsdWU+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJbnB1dENoYW5nZVZhbHVlPigpO1xuICAgIEBPdXRwdXQoJ2NvbW1hbmRFdmVudCcpIGNvbW1hbmRFdmVudDogRXZlbnRFbWl0dGVyPENvbW1hbmRzRXZlbnQ+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxDb21tYW5kc0V2ZW50PigpO1xuICAgIEBPdXRwdXQoJ2NsZWFyJykgY2xlYXJJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvLyBEcm9wZG93blxuICAgIEBPdXRwdXQoJ3Nob3dIaWRlRHJvcGRvd24nKSBzaG93SGlkZURyb3Bkb3duRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCdkcm9wRG93bktleU5hdmlnYXRpb24nKSBkcm9wRG93bktleU5hdmlnYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBJQ2FJbnB1dCB8IG51bGw7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBJQ2FJbnB1dCB8IG51bGw7XG4gICAgfT4oKTtcblxuICAgIC8vIGV2ZW50c1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZXRDb21tYW5kRXZlbnQgPSBuZXcgRXZlbnRJbnB1dE1hbmFnZXI8Q29tbWFuZHNFdmVudD4oXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuY29tbWFuZEV2ZW50XG4gICAgKTtcblxuICAgIHB1YmxpYyBpc0NhcHNMb2NrT24gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpbnB1dENvbW1hbmRzVHlwZSA9IElucHV0Q29tbWFuZHNUeXBlO1xuICAgIHB1YmxpYyBpbnB1dFN0cmluZ0VudW0gPSBJbnB1dFN0cmluZ0VudW07XG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSA9IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bTtcblxuICAgIC8vIFBhc3N3b3JkXG4gICAgcHVibGljIGlzVG9nZ2xlUGFzc3dvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBnZXQgaW5wdXRDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnB1dENvbmZpZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHB1YmxpYyBjaGRldDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBtYXNrQXBwbGllcjogTmd4TWFza1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSB0aG91c2FuZFNlcGFyYXRvclBpcGU6IFRob3VzYW5kU2VwYXJhdG9yUGlwZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlSW5wdXRBbmRVcGRhdGVDb250cm9sKHRoaXMuaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZy5hdXRvRm9jdXMpXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgY29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5jb250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBJbnB1dENoYW5nZVZhbHVlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy50cmFuc2Zvcm1WYWx1ZSh0aGlzLl9pbnB1dENvbmZpZywgb2JqKTsgLy8g4pyFIEFwcGx5IG1hc2tcblxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5faW5wdXRDb25maWcudXBkYXRlQXNUb3VjaGVkT25FZGl0KSB0aGlzLm9uVG91Y2hlZCgpOyAvLyBNYXJrIGFzIHRvdWNoZWRcblxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0Q29uZmlnLmlzRHJvcGRvd24pXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5jaGRldC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUpIHRoaXMub25Ub3VjaGVkKCk7IC8vIE1hcmsgYXMgdG91Y2hlZFxuXG4gICAgICAgIGlmICh0aGlzLmlucHV0VmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/Lm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFySW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZUlucHV0QW5kVXBkYXRlQ29udHJvbCgnJyk7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50LmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGhhbmRsZUNoYW5nZUlucHV0QW5kVXBkYXRlQ29udHJvbCh2YWx1ZTogSW5wdXRDaGFuZ2VWYWx1ZSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0Q29uZmlnLmlzRHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIC8vIFRyaWdnZXIgYWxsIGlucHV0cyBkaXJlY3RpdmVzIHRoYXQgbGlzdGVuIGZvciBpbnB1dCBFdmVudFxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlIH0pO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVJbnB1dEZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmlzRm9jdXNJbnB1dCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUlucHV0Qmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmJsdXJJbnB1dC5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvcG92ZXJTaG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLmlzRm9jdXNJbnB1dCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Qb3BvdmVySGlkZGVuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2lucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ub2dnbGVQYXNzd29yZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5pc1RvZ2dsZVBhc3N3b3JkID0gIXRoaXMuaXNUb2dnbGVQYXNzd29yZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ2Fwc0xvY2soc3RhdHVzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNDYXBzTG9ja09uID0gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVDb21tYW5kVmlzaWJsZShzdGF0dXM6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGVDb21tYW5kcyA9IHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgaWRlbnRpZnkoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmRyb3BEb3duS2V5TmF2aWdhdGlvbkV2ZW50LmVtaXQoe1xuICAgICAgICAgICAga2V5Q29kZTogZXZlbnQua2V5Q29kZSxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImlucHV0LWN1c3RvbS1ncm91cCB7eyBfaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICBjb250cm9sXG4gICAgICAgICAgICB8IGlucHV0Q29udGFpbmVyQ2xhc3NcbiAgICAgICAgICAgICAgICA6IGlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgIDogY29udHJvbD8udG91Y2hlZCFcbiAgICAgICAgICAgICAgICA6IF9pbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgIDogY29udHJvbD8udmFsdWVcbiAgICBcIlxuICAgIG5nYlRvb2x0aXBcbiAgICBbbWFpbkNhVG9vbHRpcF09XCJjb250cm9sPy5lcnJvcnMgfCBpbnB1dEVycm9yOiBfaW5wdXRDb25maWcubmFtZVwiXG4gICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIicjREYzQzNDJ1wiXG4gICAgW2Rpc2FibGVUb29sdGlwXT1cIiFfaW5wdXRDb25maWcucmVxdWlyZWRMYWJlbCB8fCAhIWNvbnRyb2w/LnZhbGlkXCJcbiAgICBwb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgdHJpZ2dlcnM9XCJob3ZlclwiXG4+XG4gICAgPCEtLSBJbnB1dCBDb21tYW5kcyAtLT5cbiAgICBAaWYgKF9pbnB1dENvbmZpZy5jb21tYW5kcz8uYWN0aXZlICYmIGlzVmlzaWJsZUNvbW1hbmRzKSB7XG4gICAgICAgIDxhcHAtY2EtaW5wdXQtY29tbWFuZHNcbiAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJfaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW2lzRm9jdXNJbnB1dF09XCJpc0ZvY3VzSW5wdXRcIlxuICAgICAgICAgICAgW2lzVmlzaWJsZUNvbW1hbmRzXT1cImlzVmlzaWJsZUNvbW1hbmRzXCJcbiAgICAgICAgICAgIChvbkNvbW1hbmRzQ2xpY2spPVwib25Db21tYW5kcygkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2FwcC1jYS1pbnB1dC1jb21tYW5kcz5cbiAgICB9XG4gICAgPCEtLSBJbnB1dCBWYWxpZCBDaGVjayAtLT5cbiAgICBAaWYgKFxuICAgICAgICBjb250cm9sIHwgc2hvd1ZhbGlkQ2hlY2s6IGlzRm9jdXNJbnB1dCA6IF9pbnB1dENvbmZpZyA6IGNvbnRyb2w/LnZhbHVlXG4gICAgKSB7XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1yZXF1aXJlZC1jaGVjayB7eyBfaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cIlxuICAgICAgICAgICAgW3NyY109XCJpbnB1dFN2Z1JvdXRlcy5jb25maXJtU3ZnXCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgfVxuICAgIDwhLS0gSW5wdXQgUGFzc3dvcmQgQ2FwcyBMb2NrIEFuZCBFeWUgLS0+XG4gICAgQGlmIChfaW5wdXRDb25maWcudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICA8YXBwLWNhLWlucHV0LXBhc3N3b3JkXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiX2lucHV0Q29uZmlnXCJcbiAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbaXNGb2N1c0lucHV0XT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICAgICAgICBbaXNUb3VjaGVkSW5wdXRdPVwiaXNUb3VjaGVkSW5wdXRcIlxuICAgICAgICAgICAgW2lzQ2Fwc0xvY2tPbl09XCJpc0NhcHNMb2NrT25cIlxuICAgICAgICAgICAgW2lzVG9nZ2xlUGFzc3dvcmRdPVwiaXNUb2dnbGVQYXNzd29yZFwiXG4gICAgICAgICAgICAob25Ub2dnbGVQYXNzd29yZENsaWNrKT1cIm9uVG9nZ2xlUGFzc3dvcmQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9hcHAtY2EtaW5wdXQtcGFzc3dvcmQ+XG4gICAgfVxuICAgIDwhLS0gSW5wdXQgQ2xlYXIgLS0+XG4gICAgQGlmIChfaW5wdXRDb25maWcgfCBzaG93Q2xlYXIpIHtcbiAgICAgICAgPGFwcC1jYS1pbnB1dC1jbGVhclxuICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIl9pbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW2lzRm9jdXNJbnB1dF09XCJpc0ZvY3VzSW5wdXRcIlxuICAgICAgICAgICAgW2luY29ycmVjdFZhbHVlXT1cImluY29ycmVjdFZhbHVlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvcl09XCJzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvclwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwidGVtcGxhdGVcIlxuICAgICAgICAgICAgKGNsZWFySW5wdXRDbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWNhLWlucHV0LWNsZWFyPlxuICAgIH1cblxuICAgIDwhLS0gSW5wdXQgRHJvcGRvd24gQXJyb3cgLS0+XG4gICAgQGlmIChfaW5wdXRDb25maWcgfCBzaG93RHJvcGRvd25BcnJvdykge1xuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZHJvcGRvd24tYXJyb3cge3sgX2lucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgfCBpbnB1dERyb3Bkb3duQXJyb3dDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2lucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzVG91Y2hlZElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NyY109XCJpbnB1dFN2Z1JvdXRlcy5pbnB1dERyb3Bkb3duQXJyb3dTdmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duT3B0aW9ucygpXCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgfVxuXG4gICAgPCEtLSBJbnB1dCBQbGFjZWhvbGRlciBJY29uIC0tPlxuICAgIEBpZiAoX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVySWNvbikge1xuICAgICAgICA8YXBwLWNhLWlucHV0LXBsYWNlaG9sZGVyLWljb25cbiAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJfaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgIFtpc0ZvY3VzSW5wdXRdPVwiaXNGb2N1c0lucHV0XCJcbiAgICAgICAgICAgIFtpc1RvdWNoZWRJbnB1dF09XCJjb250cm9sPy50b3VjaGVkIVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWREcm9wZG93bkxhYmVsQ29sb3JdPVwic2VsZWN0ZWREcm9wZG93bkxhYmVsQ29sb3JcIlxuICAgICAgICAgICAgW2lzRWRpdElucHV0XT1cImlzRWRpdElucHV0XCJcbiAgICAgICAgICAgIChvblBsYWNlaG9sZGVySWNvbkV2ZW50RW1pdHRlcik9XCJvblBsYWNlaG9sZGVySWNvbkV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKG9uUG9wb3ZlclNob3duRW1pdHRlcik9XCJvblBvcG92ZXJTaG93bigpXCJcbiAgICAgICAgICAgIChvblBvcG92ZXJIaWRkZW5FbWl0dGVyKT1cIm9uUG9wb3ZlckhpZGRlbigpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2FwcC1jYS1pbnB1dC1wbGFjZWhvbGRlci1pY29uPlxuICAgIH1cblxuICAgIDwhLS0gSW5wdXQgUGxhY2Vob2xkZXIgVGV4dCAtLT5cbiAgICBAaWYgKFxuICAgICAgICBfaW5wdXRDb25maWdcbiAgICAgICAgICAgIHwgc2hvd1BsYWNlaG9sZGVyVGV4dDogY29udHJvbCA6IGlzVmlzaWJsZUNvbW1hbmRzIDogY29udHJvbD8udmFsdWVcbiAgICApIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY2EtcGxhY2Vob2xkZXItdGV4dCB7eyBfaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgICAgIHwgaW5wdXRQbGFjZWhvbGRlclRleHRDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250cm9sPy50b3VjaGVkIVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9pbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc1Zpc2libGVDb21tYW5kc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIlxuICAgICAgICAgICAgICAgIF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQ/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgIGlucHV0U3RyaW5nRW51bS5QRVJTT05TIHx8XG4gICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVyVGV4dD8udG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgaW5wdXRTdHJpbmdFbnVtLlZFSElDTEVTXG4gICAgICAgICAgICAgICAgICAgID8gMzAgKyAoY29udHJvbD8udmFsdWU/LnRvU3RyaW5nKCk/Lmxlbmd0aCArIDEpICogOSArICdweCdcbiAgICAgICAgICAgICAgICAgICAgOiBpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQ/LnRvTG93ZXJDYXNlKCkgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb21tYW5kc1R5cGUuTU9OVEhTXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYXV0bydcbiAgICAgICAgICAgICAgICAgICAgICA6IChjb250cm9sPy52YWx1ZT8udG9TdHJpbmcoKT8ubGVuZ3RoICsgMSkgKiA4ICsgJ3B4J1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzdHlsZS5yaWdodF09XCJcbiAgICAgICAgICAgICAgICBpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcucGxhY2Vob2xkZXJUZXh0Py50b0xvd2VyQ2FzZSgpICE9PVxuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbW1hbmRzVHlwZS5NT05USFNcbiAgICAgICAgICAgICAgICAgICAgPyAnMjhweCdcbiAgICAgICAgICAgICAgICAgICAgOiAnYXV0bydcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIH1cblxuICAgIDwhLS0gSW5wdXQgTGFiZWwgQ291bnRlciAtLT5cbiAgICBAaWYgKFxuICAgICAgICBzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvciAmJlxuICAgICAgICBjb250cm9sPy52YWx1ZSAmJlxuICAgICAgICAhaXNGb2N1c0lucHV0ICYmXG4gICAgICAgICFfaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICBfaW5wdXRDb25maWcuc2hvd0NvdW50XG4gICAgKSB7XG4gICAgICAgIDxwXG4gICAgICAgICAgICBbc3R5bGUudG9wXT1cIic0cHgnXCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIihjb250cm9sPy52YWx1ZT8udG9TdHJpbmcoKT8ubGVuZ3RoICsgNi41KSAqIDggKyAncHgnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtbGFiZWwtY291bnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yLmNvdW50IH19XG4gICAgICAgIDwvcD5cbiAgICB9XG5cbiAgICA8IS0tIFNwZWNpYWwgRHJvcGRvd24gU2VsZWN0ZWQgU1ZHIHdpdGggb3IgV2l0aG91dCBUZXh0IC0tPlxuICAgIEBpZiAoXG4gICAgICAgIF9pbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py5pY29uc1BhdGggJiZcbiAgICAgICAgYWN0aXZlSXRlbSAmJlxuICAgICAgICAhX2lucHV0Q29uZmlnPy5oaWRlQWxsSXRlbXNJbklucHV0RHJvcGRvd24gJiZcbiAgICAgICAgISghX2lucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ud2l0aFRleHQgJiYgaXNGb2N1c0lucHV0KSAmJlxuICAgICAgICAhKFxuICAgICAgICAgICAgWyd0cnVjaycsICd0cmFpbGVyJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8udGVtcGxhdGUhXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICBpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgICAgIF9pbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LnJlbW92ZVxuICAgICAgICApICYmXG4gICAgICAgICFfaW5wdXRDb25maWc/LmRyb3Bkb3duSW1hZ2VJbnB1dD8ubmFtZUluaXRpYWxzSW5zdGVhZFVybFxuICAgICkge1xuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIFtzcmNdPVwiX2lucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uaWNvbnNQYXRoIVwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXNlbGVjdGVkLWltYWdlIHt7XG4gICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3NcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAndW5zZXQtY29sb3InOlxuICAgICAgICAgICAgICAgICAgICBpc0ZvY3VzSW5wdXQgJiYgX2lucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3MsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgZmlsbDpcbiAgICAgICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY29sb3IgJiYgIWlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnI2ZmZmZmZicsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L3N2Zy1pY29uPlxuICAgIH1cblxuICAgIDwhLS0gSW5wdXQgTGFiZWwgLS0+XG4gICAgQGlmICghX2lucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmUpIHtcbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBbZm9yXT1cIl9pbnB1dENvbmZpZy5uYW1lXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtbGFiZWwge3sgX2lucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19IHt7XG4gICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLm11bHRpcGxlTGFiZWw/LmN1c3RvbUNsYXNzXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICBjb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IGxhYmVsQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9pbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc1RvdWNoZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250cm9sPy5pbnZhbGlkXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnRvdWNoZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoX2lucHV0Q29uZmlnLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgX2lucHV0Q29uZmlnLmxhYmVsIH19IDwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChfaW5wdXRDb25maWcubXVsdGlwbGVMYWJlbD8ubGFiZWxzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJfaW5wdXRDb25maWcubXVsdGlwbGVMYWJlbD8uY3VzdG9tQ2xhc3MhXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcGxlLWxhYmVscy1wb3NpdGlvbi1vbi1mb2N1cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2N1c0lucHV0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLm11bHRpcGxlSW5wdXRWYWx1ZXM/Lm9wdGlvbnM/Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbnB1dENvbmZpZy5pc1JlcXVpcmVkICYmICFfaW5wdXRDb25maWcuaXNEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsIG9mIF9pbnB1dENvbmZpZy5tdWx0aXBsZUxhYmVsPy5sYWJlbHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgfVxuXG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIFtyZXN0cmljdElucHV0XT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgcHJpY2VGb3JtYXRcbiAgICAgICAgW3ByaWNlU2VwYXJhdG9yXT1cIlxuICAgICAgICAgICAgaW5wdXRDb25maWcucHJpY2VTZXBhcmF0b3IgfHwgaW5wdXRDb25maWcudGhvdXNhbmRTZXBhcmF0b3JcbiAgICAgICAgXCJcbiAgICAgICAgKGZvY3VzKT1cImhhbmRsZUlucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImhhbmRsZUlucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cIl9pbnB1dENvbmZpZy5yZWFkT25seVwiXG4gICAgICAgIFt0eXBlXT1cIl9pbnB1dENvbmZpZy50eXBlIHwgaW5wdXRUeXBlOiBpc1RvZ2dsZVBhc3N3b3JkXCJcbiAgICAgICAgY2xhc3M9XCJpbnB1dC1jb250cm9sXG4gICAgICAgICAgICB7eyBfaW5wdXRDb25maWcudGV4dFRyYW5zZm9ybSB9fVxuICAgICAgICAgICAge3sgX2lucHV0Q29uZmlnLnRleHRBbGlnbiB9fVxuICAgICAgICAgICAge3sgX2lucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XG4gICAgICAgIFwiXG4gICAgICAgIFthcHBNYXhWYWx1ZV09XCJpbnB1dENvbmZpZy5tYXhcIlxuICAgICAgICBhcHBDYXBzTG9ja1xuICAgICAgICAoY2Fwc0xvY2tTdGF0dXMpPVwiaGFuZGxlQ2Fwc0xvY2soJGV2ZW50KVwiXG4gICAgICAgIGNvbW1hbmRWaXNpYmxlXG4gICAgICAgIChjb21tYW5kVmlzaWJsZSk9XCJoYW5kbGVDb21tYW5kVmlzaWJsZSgkZXZlbnQpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgKF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlckluc3RlYWRPZkxhYmVsICYmXG4gICAgICAgICAgICBfaW5wdXRDb25maWcucGxhY2Vob2xkZXIgJiZcbiAgICAgICAgICAgIGlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgID8gX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgOiAnJykgfHxcbiAgICAgICAgICAgIChfaW5wdXRDb25maWcucGxhY2Vob2xkZXIgJiYgaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgPyBfaW5wdXRDb25maWcucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICA6ICcnKVxuICAgICAgICBcIlxuICAgICAgICBbbWFza109XCJfaW5wdXRDb25maWcubWFza1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgY29udHJvbFxuICAgICAgICAgICAgICAgIHwgaW5wdXRDbGFzc1xuICAgICAgICAgICAgICAgICAgICA6IGlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnRvdWNoZWQhXG4gICAgICAgICAgICAgICAgICAgIDogX2lucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIDogaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgOiBpc1Zpc2libGVDb21tYW5kc1xuICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogY29udHJvbD8uaW52YWxpZFxuICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnRvdWNoZWRcbiAgICAgICAgICAgICAgICAgICAgOiBpc0Ryb3Bkb3duVG9nZ2xlclxuICAgICAgICAgICAgICAgICAgICA6IGlzRWRpdElucHV0XG4gICAgICAgICAgICAgICAgICAgIDogdGVtcGxhdGVcbiAgICAgICAgXCJcbiAgICAvPlxuXG4gICAgPCEtLSBQbGFjZWhvbGRlciBJY29uIG9uIFJpZ2h0IFNpZGUgLS0+XG4gICAgQGlmIChfaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlKSB7XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJwbGFjZWhvbGRlci1pY29uLXJpZ2h0LXNpZGUge3tcbiAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uQ29sb3JcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgIGlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICB8IGlucHV0UGxhY2Vob2xkZXJJY29uUmlnaHRDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9pbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc1RvdWNoZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVySWNvblJpZ2h0U2lkZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgIHwgY2FTdmc6ICdjb21tb24nXG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9zdmctaWNvbj5cbiAgICB9XG5cbiAgICA8IS0tIElucHV0IEVycm9yIE1lc3NhZ2UgLS0+XG4gICAgQGlmIChcbiAgICAgICAgISghY29udHJvbD8udmFsdWUgJiYgaXNGb2N1c0lucHV0KSAmJlxuICAgICAgICAoaXNUb3VjaGVkSW5wdXQgfHwgY29udHJvbD8udG91Y2hlZCB8fCBjb250cm9sPy52YWx1ZSkgJiZcbiAgICAgICAgY29udHJvbD8uaW52YWxpZCAmJlxuICAgICAgICAhX2lucHV0Q29uZmlnLmlzSW52YWxpZFNlYXJjaEluRHJvcGRvd24gJiZcbiAgICAgICAgIV9pbnB1dENvbmZpZy5pc0Rpc2FibGVkXG4gICAgKSB7XG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICAhKF9pbnB1dENvbmZpZy5oaWRlRXJyb3JNZXNzYWdlIHx8IF9pbnB1dENvbmZpZy5lcnJvckluc2lkZUlucHV0KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZXJyb3Ige3sgX2lucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XCI+XG4gICAgICAgICAgICAgICAge3sgY29udHJvbD8uZXJyb3JzIHwgaW5wdXRFcnJvcjogX2lucHV0Q29uZmlnLm5hbWUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRXJyb3IgTWVzc2FnZSBJbnNpZGUgSW5wdXQgLS0+XG4gICAgICAgIEBpZiAoX2lucHV0Q29uZmlnLmVycm9ySW5zaWRlSW5wdXQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaW5zaWRlLWlucHV0IHt7IF9pbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiPlxuICAgICAgICAgICAgICAgIHt7IGNvbnRyb2w/LmVycm9ycyB8IGlucHV0RXJyb3I6IF9pbnB1dENvbmZpZy5uYW1lIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKF9pbnB1dENvbmZpZy5maXhlZFBsYWNob2xkZXIgJiYgaW5wdXQudmFsdWUpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1maXhlZC1wbGFjZWhvZGVyLWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBfaW5wdXRDb25maWcuZml4ZWRQbGFjaG9sZGVyIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC9pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvaW5wdXQtdGVzdC9pbnB1dC10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJeEQsT0FBTyxFQUFvQixjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHNUQsUUFBUTtBQUNSLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsUUFBUTtBQUNSLE9BQU8sRUFDSCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQixjQUFjLEVBQ2Qsa0NBQWtDLEVBQ2xDLDZCQUE2QixFQUM3QixhQUFhLEVBQ2IsY0FBYyxFQUNkLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixHQUNyQixNQUFNLFVBQVUsQ0FBQztBQUNsQixP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ZCxTQUFTO3dCQUNULG1CQUFtQjt3QkFDbkIsa0NBQWtDO3dCQUNsQyxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLDJCQUEyQjt3QkFFM0IsYUFBYTt3QkFDYixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFFdkIsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsK0JBQStCO3dCQUMvQix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDM0IsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs7MEJBcUVoQyxRQUFROzswQkFBSSxJQUFJOzBJQTNEMEIsWUFBWTtzQkFBMUQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUMzQiwwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFHRywyQkFBMkI7c0JBRG5DLE1BQU07dUJBQUMsNkJBQTZCO2dCQUlYLGNBQWM7c0JBQXZDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUdILFNBQVM7c0JBQTdCLE1BQU07dUJBQUMsV0FBVztnQkFFRyxlQUFlO3NCQUFwQyxNQUFNO3VCQUFDLFlBQVk7Z0JBRUYsV0FBVztzQkFBNUIsTUFBTTt1QkFBQyxRQUFRO2dCQUVRLFlBQVk7c0JBQW5DLE1BQU07dUJBQUMsY0FBYztnQkFFTCxlQUFlO3NCQUEvQixNQUFNO3VCQUFDLE9BQU87Z0JBSWEscUJBQXFCO3NCQUFoRCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFFTywwQkFBMEI7c0JBQTFELE1BQU07dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgSW5wdXRDaGFuZ2VWYWx1ZSwgSW5wdXRTdmdSb3V0ZXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDb21tYW5kc0V2ZW50LCBMYWJlbENvbG9yIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuLy8gZW11bXNcbmltcG9ydCB7IElucHV0Q29tbWFuZHNUeXBlLCBJbnB1dFN0cmluZ0VudW0gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuLi8uLi9jYS1pbnB1dC1kcm9wZG93bi9lbnVtcyc7XG5cbi8vIHBpcGVzXG5pbXBvcnQge1xuICAgIElucHV0Q2xhc3NQaXBlLFxuICAgIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICAgIElucHV0RHJvcGRvd25BcnJvd0NsYXNzUGlwZSxcbiAgICBJbnB1dEVycm9yUGlwZSxcbiAgICBJbnB1dFBsYWNlaG9sZGVySWNvblJpZ2h0Q2xhc3NQaXBlLFxuICAgIElucHV0UGxhY2Vob2xkZXJUZXh0Q2xhc3NQaXBlLFxuICAgIElucHV0VHlwZVBpcGUsXG4gICAgTGFiZWxDbGFzc1BpcGUsXG4gICAgU2hvd0NsZWFyUGlwZSxcbiAgICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gICAgU2hvd1BsYWNlaG9sZGVyVGV4dFBpcGUsXG4gICAgU2hvd1ZhbGlkQ2hlY2tQaXBlLFxufSBmcm9tICcuLi9waXBlcyc7XG5pbXBvcnQge1xuICAgIENhU3ZnUGlwZSxcbiAgICBMb2FkU3RhdHVzQ29sb3JQaXBlLFxuICAgIFRob3VzYW5kU2VwYXJhdG9yUGlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vcGlwZXMnO1xuXG4vLyBtYXNrXG5pbXBvcnQgeyBOZ3hNYXNrTW9kdWxlIH0gZnJvbSAnbmd4LW1hc2snO1xuaW1wb3J0IHsgTmd4TWFza1NlcnZpY2UgfSBmcm9tICduZ3gtbWFzayc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY2EtaW5wdXQtcGFzc3dvcmQvY2EtaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXRQbGFjZWhvbGRlckljb25Db21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NhLWlucHV0LXBsYWNlaG9sZGVyLWljb24vY2EtaW5wdXQtcGxhY2Vob2xkZXItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENsZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jYS1pbnB1dC1jbGVhci9jYS1pbnB1dC1jbGVhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENvbW1hbmRzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jYS1pbnB1dC1jb21tYW5kcy9jYS1pbnB1dC1jb21tYW5kcy5jb21wb25lbnQnO1xuXG4vLyBkaXJlY3RpdmVzXG5pbXBvcnQgeyBDYXBzTG9ja0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgTWF4VmFsdWVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFJlc3RyaWN0SW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFByaWNlRm9ybWF0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDb21tYW5kVmlzaWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY29tbWFuZC12aXNpYmxlLmRpcmVjdGl2ZSc7XG5cbi8vIGNsYXNzXG5pbXBvcnQgeyBFdmVudElucHV0TWFuYWdlciB9IGZyb20gJy4uL2Jhc2UtY2xhc3Nlcy9jYS1pbnB1dC1ldmVudC1tYW5hZ2VyJztcblxuLy8gbWl4aW5zXG5pbXBvcnQgeyBJbnB1dENvbW1hbmRNaXhpbiB9IGZyb20gJy4uL21peGlucy9pbnB1dC1jb21tYW5kLm1peGluJztcbmltcG9ydCB7IElucHV0SGVscGVyTWl4aW4gfSBmcm9tICcuLi9taXhpbnMvaW5wdXQtaGVscGVyLm1peGluJztcbmltcG9ydCB7IE9wdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vY2EtaW5wdXQtZHJvcGRvd24vbW9kZWxzJztcblxuY2xhc3MgSW5wdXRCYXNlIHtcbiAgICBwdWJsaWMgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgICBwdWJsaWMgX2lucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgcHVibGljIGlzVmlzaWJsZUNvbW1hbmRzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG1hc2tBcHBsaWVyITogTmd4TWFza1NlcnZpY2U7XG4gICAgcHVibGljIHRob3VzYW5kU2VwYXJhdG9yUGlwZSE6IFRob3VzYW5kU2VwYXJhdG9yUGlwZTtcbiAgICBwdWJsaWMgaXNGb2N1c0lucHV0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzRWRpdElucHV0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzRHJvcGRvd25Ub2dnbGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzVG91Y2hlZElucHV0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNldENvbW1hbmRFdmVudCE6IEV2ZW50SW5wdXRNYW5hZ2VyPENvbW1hbmRzRXZlbnQ+O1xuXG4gICAgcHVibGljIGhhbmRsZVRvZ2dsZURyb3Bkb3duT3B0aW9ucyE6IEV2ZW50RW1pdHRlcjx2b2lkPjtcblxuICAgIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7IH07XG4gICAgcHVibGljIG9uQ2hhbmdlKF86IGFueSk6IHZvaWQgeyB9XG4gICAgcHVibGljIGhhbmRsZUNoYW5nZUlucHV0QW5kVXBkYXRlQ29udHJvbChfOiBJbnB1dENoYW5nZVZhbHVlKTogdm9pZCB7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYS1pbnB1dC10ZXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE5nYk1vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIE5neE1hc2tNb2R1bGUsXG5cbiAgICAgICAgLy8gUGlwZXNcbiAgICAgICAgSW5wdXRFcnJvclBpcGUsXG4gICAgICAgIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICAgICAgICBJbnB1dENsYXNzUGlwZSxcbiAgICAgICAgSW5wdXRQbGFjZWhvbGRlclRleHRDbGFzc1BpcGUsXG4gICAgICAgIFNob3dQbGFjZWhvbGRlclRleHRQaXBlLFxuICAgICAgICBMYWJlbENsYXNzUGlwZSxcbiAgICAgICAgQ2FTdmdQaXBlLFxuICAgICAgICBMb2FkU3RhdHVzQ29sb3JQaXBlLFxuICAgICAgICBJbnB1dFBsYWNlaG9sZGVySWNvblJpZ2h0Q2xhc3NQaXBlLFxuICAgICAgICBNYXhWYWx1ZURpcmVjdGl2ZSxcbiAgICAgICAgSW5wdXRUeXBlUGlwZSxcbiAgICAgICAgU2hvd1ZhbGlkQ2hlY2tQaXBlLFxuICAgICAgICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25BcnJvd0NsYXNzUGlwZSxcblxuICAgICAgICAvLyBEaXJlY3RpdmVzXG4gICAgICAgIFJlc3RyaWN0SW5wdXREaXJlY3RpdmUsXG4gICAgICAgIFByaWNlRm9ybWF0RGlyZWN0aXZlLFxuICAgICAgICBTaG93Q2xlYXJQaXBlLFxuICAgICAgICBDYXBzTG9ja0RpcmVjdGl2ZSxcbiAgICAgICAgQ29tbWFuZFZpc2libGVEaXJlY3RpdmUsXG5cbiAgICAgICAgLy8gQ29tcG9uZW50c1xuICAgICAgICBDYUlucHV0Q2xlYXJDb21wb25lbnQsXG4gICAgICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0UGFzc3dvcmRDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXRDb21tYW5kc0NvbXBvbmVudCxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10ZXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaW5wdXQtdGVzdC5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUZXN0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBJbnB1dENvbW1hbmRNaXhpbihJbnB1dEhlbHBlck1peGluKElucHV0QmFzZSkpXG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHVibGljIGlucHV0VmFsdWU6IElucHV0Q2hhbmdlVmFsdWUgPSAnJztcbiAgICBwdWJsaWMgb3ZlcnJpZGUgX2lucHV0Q29uZmlnITogSUNhSW5wdXQ7XG5cbiAgICBwdWJsaWMgaW5wdXRTdmdSb3V0ZXMgPSBJbnB1dFN2Z1JvdXRlcztcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgb3ZlcnJpZGUgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgICBASW5wdXQoKSBzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvciE6IExhYmVsQ29sb3IgfCBudWxsO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGluY29ycmVjdFZhbHVlITogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzZXQgaW5wdXRDb25maWcoY29uZmlnOiBJQ2FJbnB1dCkge1xuICAgICAgICB0aGlzLl9pbnB1dENvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhY3RpdmVJdGVtITogT3B0aW9uTW9kZWwgfCBudWxsO1xuXG4gICAgQE91dHB1dCgnaGFuZGxlVG9nZ2xlRHJvcGRvd25PcHRpb25zJylcbiAgICBvdmVycmlkZSBoYW5kbGVUb2dnbGVEcm9wZG93bk9wdGlvbnM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoJ2luY29ycmVjdEV2ZW50JykgaW5jb3JyZWN0SW5wdXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBPdXRwdXQoJ2JsdXJJbnB1dCcpIGJsdXJJbnB1dDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoJ2ZvY3VzSW5wdXQnKSBmb2N1c0lucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgICBAT3V0cHV0KCdjaGFuZ2UnKSBjaGFuZ2VJbnB1dDogRXZlbnRFbWl0dGVyPElucHV0Q2hhbmdlVmFsdWU+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJbnB1dENoYW5nZVZhbHVlPigpO1xuICAgIEBPdXRwdXQoJ2NvbW1hbmRFdmVudCcpIGNvbW1hbmRFdmVudDogRXZlbnRFbWl0dGVyPENvbW1hbmRzRXZlbnQ+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxDb21tYW5kc0V2ZW50PigpO1xuICAgIEBPdXRwdXQoJ2NsZWFyJykgY2xlYXJJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvLyBEcm9wZG93blxuICAgIEBPdXRwdXQoJ3Nob3dIaWRlRHJvcGRvd24nKSBzaG93SGlkZURyb3Bkb3duRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCdkcm9wRG93bktleU5hdmlnYXRpb24nKSBkcm9wRG93bktleU5hdmlnYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBJQ2FJbnB1dCB8IG51bGw7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBJQ2FJbnB1dCB8IG51bGw7XG4gICAgfT4oKTtcblxuICAgIC8vIGV2ZW50c1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZXRDb21tYW5kRXZlbnQgPSBuZXcgRXZlbnRJbnB1dE1hbmFnZXI8Q29tbWFuZHNFdmVudD4oXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuY29tbWFuZEV2ZW50XG4gICAgKTtcblxuICAgIHB1YmxpYyBpc0NhcHNMb2NrT24gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpbnB1dENvbW1hbmRzVHlwZSA9IElucHV0Q29tbWFuZHNUeXBlO1xuICAgIHB1YmxpYyBpbnB1dFN0cmluZ0VudW0gPSBJbnB1dFN0cmluZ0VudW07XG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSA9IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bTtcblxuICAgIC8vIFBhc3N3b3JkXG4gICAgcHVibGljIGlzVG9nZ2xlUGFzc3dvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBnZXQgaW5wdXRDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnB1dENvbmZpZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHB1YmxpYyBjaGRldDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBtYXNrQXBwbGllcjogTmd4TWFza1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSB0aG91c2FuZFNlcGFyYXRvclBpcGU6IFRob3VzYW5kU2VwYXJhdG9yUGlwZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlSW5wdXRBbmRVcGRhdGVDb250cm9sKHRoaXMuaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZy5hdXRvRm9jdXMpXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgY29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5jb250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBJbnB1dENoYW5nZVZhbHVlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy50cmFuc2Zvcm1WYWx1ZSh0aGlzLl9pbnB1dENvbmZpZywgb2JqKTsgLy8g4pyFIEFwcGx5IG1hc2tcblxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5faW5wdXRDb25maWcudXBkYXRlQXNUb3VjaGVkT25FZGl0KSB0aGlzLm9uVG91Y2hlZCgpOyAvLyBNYXJrIGFzIHRvdWNoZWRcblxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0Q29uZmlnLmlzRHJvcGRvd24pXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5jaGRldC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUpIHRoaXMub25Ub3VjaGVkKCk7IC8vIE1hcmsgYXMgdG91Y2hlZFxuXG4gICAgICAgIGlmICh0aGlzLmlucHV0VmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/Lm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFySW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZUlucHV0QW5kVXBkYXRlQ29udHJvbCgnJyk7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50LmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGhhbmRsZUNoYW5nZUlucHV0QW5kVXBkYXRlQ29udHJvbCh2YWx1ZTogSW5wdXRDaGFuZ2VWYWx1ZSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dENvbmZpZy5pc0Ryb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAvLyBUcmlnZ2VyIGFsbCBpbnB1dHMgZGlyZWN0aXZlcyB0aGF0IGxpc3RlbiBmb3IgaW5wdXQgRXZlbnRcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXRFdmVudC5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzSW5wdXQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVJbnB1dEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5ibHVySW5wdXQuZW1pdCh0cnVlKTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Qb3BvdmVyU2hvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5faW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5pc0ZvY3VzSW5wdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUG9wb3ZlckhpZGRlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG9nZ2xlUGFzc3dvcmQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaXNUb2dnbGVQYXNzd29yZCA9ICF0aGlzLmlzVG9nZ2xlUGFzc3dvcmQ7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUNhcHNMb2NrKHN0YXR1czogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzQ2Fwc0xvY2tPbiA9IHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ29tbWFuZFZpc2libGUoc3RhdHVzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlQ29tbWFuZHMgPSBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aWZ5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcm9wRG93bktleU5hdmlnYXRpb25FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIGtleUNvZGU6IGV2ZW50LmtleUNvZGUsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICB9KTtcbiAgICB9XG59IiwiPGRpdlxuICAgIGNsYXNzPVwiaW5wdXQtY3VzdG9tLWdyb3VwIHt7IF9pbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGNvbnRyb2xcbiAgICAgICAgICAgIHwgaW5wdXRDb250YWluZXJDbGFzc1xuICAgICAgICAgICAgICAgIDogaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgOiBjb250cm9sPy50b3VjaGVkIVxuICAgICAgICAgICAgICAgIDogX2lucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgOiBjb250cm9sPy52YWx1ZVxuICAgIFwiXG4gICAgbmdiVG9vbHRpcFxuICAgIFttYWluQ2FUb29sdGlwXT1cImNvbnRyb2w/LmVycm9ycyB8IGlucHV0RXJyb3I6IF9pbnB1dENvbmZpZy5uYW1lXCJcbiAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyNERjNDM0MnXCJcbiAgICBbZGlzYWJsZVRvb2x0aXBdPVwiIV9pbnB1dENvbmZpZy5yZXF1aXJlZExhYmVsIHx8ICEhY29udHJvbD8udmFsaWRcIlxuICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICB0cmlnZ2Vycz1cImhvdmVyXCJcbj5cbiAgICA8IS0tIElucHV0IENvbW1hbmRzIC0tPlxuICAgIEBpZiAoX2lucHV0Q29uZmlnLmNvbW1hbmRzPy5hY3RpdmUgJiYgaXNWaXNpYmxlQ29tbWFuZHMpIHtcbiAgICAgICAgPGFwcC1jYS1pbnB1dC1jb21tYW5kc1xuICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIl9pbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICBbaXNGb2N1c0lucHV0XT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICAgICAgICBbaXNWaXNpYmxlQ29tbWFuZHNdPVwiaXNWaXNpYmxlQ29tbWFuZHNcIlxuICAgICAgICAgICAgKG9uQ29tbWFuZHNDbGljayk9XCJvbkNvbW1hbmRzKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWNhLWlucHV0LWNvbW1hbmRzPlxuICAgIH1cbiAgICA8IS0tIElucHV0IFZhbGlkIENoZWNrIC0tPlxuICAgIEBpZiAoXG4gICAgICAgIGNvbnRyb2wgfCBzaG93VmFsaWRDaGVjazogaXNGb2N1c0lucHV0IDogX2lucHV0Q29uZmlnIDogY29udHJvbD8udmFsdWVcbiAgICApIHtcbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImlucHV0LXJlcXVpcmVkLWNoZWNrIHt7IF9pbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gICAgICAgICAgICBbc3JjXT1cImlucHV0U3ZnUm91dGVzLmNvbmZpcm1TdmdcIlxuICAgICAgICA+PC9zdmctaWNvbj5cbiAgICB9XG4gICAgPCEtLSBJbnB1dCBQYXNzd29yZCBDYXBzIExvY2sgQW5kIEV5ZSAtLT5cbiAgICBAaWYgKF9pbnB1dENvbmZpZy50eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgIDxhcHAtY2EtaW5wdXQtcGFzc3dvcmRcbiAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJfaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgIFtpc0ZvY3VzSW5wdXRdPVwiaXNGb2N1c0lucHV0XCJcbiAgICAgICAgICAgIFtpc1RvdWNoZWRJbnB1dF09XCJpc1RvdWNoZWRJbnB1dFwiXG4gICAgICAgICAgICBbaXNDYXBzTG9ja09uXT1cImlzQ2Fwc0xvY2tPblwiXG4gICAgICAgICAgICBbaXNUb2dnbGVQYXNzd29yZF09XCJpc1RvZ2dsZVBhc3N3b3JkXCJcbiAgICAgICAgICAgIChvblRvZ2dsZVBhc3N3b3JkQ2xpY2spPVwib25Ub2dnbGVQYXNzd29yZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2FwcC1jYS1pbnB1dC1wYXNzd29yZD5cbiAgICB9XG4gICAgPCEtLSBJbnB1dCBDbGVhciAtLT5cbiAgICBAaWYgKF9pbnB1dENvbmZpZyB8IHNob3dDbGVhcikge1xuICAgICAgICA8YXBwLWNhLWlucHV0LWNsZWFyXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiX2lucHV0Q29uZmlnXCJcbiAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbaXNGb2N1c0lucHV0XT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICAgICAgICBbaW5jb3JyZWN0VmFsdWVdPVwiaW5jb3JyZWN0VmFsdWVcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cInNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiXG4gICAgICAgICAgICAoY2xlYXJJbnB1dENsaWNrKT1cImNsZWFySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9hcHAtY2EtaW5wdXQtY2xlYXI+XG4gICAgfVxuXG4gICAgPCEtLSBJbnB1dCBEcm9wZG93biBBcnJvdyAtLT5cbiAgICBAaWYgKF9pbnB1dENvbmZpZyB8IHNob3dEcm9wZG93bkFycm93KSB7XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1kcm9wZG93bi1hcnJvdyB7eyBfaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbFxuICAgICAgICAgICAgICAgICAgICB8IGlucHV0RHJvcGRvd25BcnJvd0NsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29udHJvbD8udmFsdWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc3JjXT1cImlucHV0U3ZnUm91dGVzLmlucHV0RHJvcGRvd25BcnJvd1N2Z1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd25PcHRpb25zKClcIlxuICAgICAgICA+PC9zdmctaWNvbj5cbiAgICB9XG5cbiAgICA8IS0tIElucHV0IFBsYWNlaG9sZGVyIEljb24gLS0+XG4gICAgQGlmIChfaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uKSB7XG4gICAgICAgIDxhcHAtY2EtaW5wdXQtcGxhY2Vob2xkZXItaWNvblxuICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIl9pbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW2lzRm9jdXNJbnB1dF09XCJpc0ZvY3VzSW5wdXRcIlxuICAgICAgICAgICAgW2lzVG91Y2hlZElucHV0XT1cImNvbnRyb2w/LnRvdWNoZWQhXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvcl09XCJzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvclwiXG4gICAgICAgICAgICBbaXNFZGl0SW5wdXRdPVwiaXNFZGl0SW5wdXRcIlxuICAgICAgICAgICAgKG9uUGxhY2Vob2xkZXJJY29uRXZlbnRFbWl0dGVyKT1cIm9uUGxhY2Vob2xkZXJJY29uRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25Qb3BvdmVyU2hvd25FbWl0dGVyKT1cIm9uUG9wb3ZlclNob3duKClcIlxuICAgICAgICAgICAgKG9uUG9wb3ZlckhpZGRlbkVtaXR0ZXIpPVwib25Qb3BvdmVySGlkZGVuKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWNhLWlucHV0LXBsYWNlaG9sZGVyLWljb24+XG4gICAgfVxuXG4gICAgPCEtLSBJbnB1dCBQbGFjZWhvbGRlciBUZXh0IC0tPlxuICAgIEBpZiAoXG4gICAgICAgIF9pbnB1dENvbmZpZ1xuICAgICAgICAgICAgfCBzaG93UGxhY2Vob2xkZXJUZXh0OiBjb250cm9sIDogaXNWaXNpYmxlQ29tbWFuZHMgOiBjb250cm9sPy52YWx1ZVxuICAgICkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjYS1wbGFjZWhvbGRlci10ZXh0IHt7IF9pbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICBpc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgfCBpbnB1dFBsYWNlaG9sZGVyVGV4dENsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnRvdWNoZWQhXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2lucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzVmlzaWJsZUNvbW1hbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiXG4gICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVyVGV4dD8udG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgaW5wdXRTdHJpbmdFbnVtLlBFUlNPTlMgfHxcbiAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcucGxhY2Vob2xkZXJUZXh0Py50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICBpbnB1dFN0cmluZ0VudW0uVkVISUNMRVNcbiAgICAgICAgICAgICAgICAgICAgPyAzMCArIChjb250cm9sPy52YWx1ZT8udG9TdHJpbmcoKT8ubGVuZ3RoICsgMSkgKiA5ICsgJ3B4J1xuICAgICAgICAgICAgICAgICAgICA6IGlzRm9jdXNJbnB1dCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVyVGV4dD8udG9Mb3dlckNhc2UoKSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbW1hbmRzVHlwZS5NT05USFNcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhdXRvJ1xuICAgICAgICAgICAgICAgICAgICAgIDogKGNvbnRyb2w/LnZhbHVlPy50b1N0cmluZygpPy5sZW5ndGggKyAxKSAqIDggKyAncHgnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N0eWxlLnJpZ2h0XT1cIlxuICAgICAgICAgICAgICAgIGlzRm9jdXNJbnB1dCAmJlxuICAgICAgICAgICAgICAgIF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQ/LnRvTG93ZXJDYXNlKCkgIT09XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29tbWFuZHNUeXBlLk1PTlRIU1xuICAgICAgICAgICAgICAgICAgICA/ICcyOHB4J1xuICAgICAgICAgICAgICAgICAgICA6ICdhdXRvJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVyVGV4dCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgfVxuXG4gICAgPCEtLSBJbnB1dCBMYWJlbCBDb3VudGVyIC0tPlxuICAgIEBpZiAoXG4gICAgICAgIHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yICYmXG4gICAgICAgIGNvbnRyb2w/LnZhbHVlICYmXG4gICAgICAgICFpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgIV9pbnB1dENvbmZpZy5pc0Rpc2FibGVkICYmXG4gICAgICAgIF9pbnB1dENvbmZpZy5zaG93Q291bnRcbiAgICApIHtcbiAgICAgICAgPHBcbiAgICAgICAgICAgIFtzdHlsZS50b3BdPVwiJzRweCdcIlxuICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiKGNvbnRyb2w/LnZhbHVlPy50b1N0cmluZygpPy5sZW5ndGggKyA2LjUpICogOCArICdweCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1sYWJlbC1jb3VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgc2VsZWN0ZWREcm9wZG93bkxhYmVsQ29sb3IuY291bnQgfX1cbiAgICAgICAgPC9wPlxuICAgIH1cblxuICAgIDwhLS0gU3BlY2lhbCBEcm9wZG93biBTZWxlY3RlZCBTVkcgd2l0aCBvciBXaXRob3V0IFRleHQgLS0+XG4gICAgQGlmIChcbiAgICAgICAgX2lucHV0Q29uZmlnPy5kcm9wZG93bkltYWdlSW5wdXQ/Lmljb25zUGF0aCAmJlxuICAgICAgICBhY3RpdmVJdGVtICYmXG4gICAgICAgICFfaW5wdXRDb25maWc/LmhpZGVBbGxJdGVtc0luSW5wdXREcm9wZG93biAmJlxuICAgICAgICAhKCFfaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py53aXRoVGV4dCAmJiBpc0ZvY3VzSW5wdXQpICYmXG4gICAgICAgICEoXG4gICAgICAgICAgICBbJ3RydWNrJywgJ3RyYWlsZXInXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py50ZW1wbGF0ZSFcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIGlzRm9jdXNJbnB1dCAmJlxuICAgICAgICAgICAgX2lucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ucmVtb3ZlXG4gICAgICAgICkgJiZcbiAgICAgICAgIV9pbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py5uYW1lSW5pdGlhbHNJbnN0ZWFkVXJsXG4gICAgKSB7XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgW3NyY109XCJfaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5pY29uc1BhdGghXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2Uge3tcbiAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICd1bnNldC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgIGlzRm9jdXNJbnB1dCAmJiBfaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzcyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW3N2Z1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICBmaWxsOlxuICAgICAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jb2xvciAmJiAhaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9pbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LmNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcjZmZmZmZmJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvc3ZnLWljb24+XG4gICAgfVxuXG4gICAgPCEtLSBJbnB1dCBMYWJlbCAtLT5cbiAgICBAaWYgKCFfaW5wdXRDb25maWcubXVsdGlTZWxlY3REcm9wZG93bkFjdGl2ZSkge1xuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIFtmb3JdPVwiX2lucHV0Q29uZmlnLm5hbWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1sYWJlbCB7eyBfaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX0ge3tcbiAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcubXVsdGlwbGVMYWJlbD8uY3VzdG9tQ2xhc3NcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIHwgbGFiZWxDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2lucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzVG91Y2hlZElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29udHJvbD8udG91Y2hlZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChfaW5wdXRDb25maWcubGFiZWwpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBfaW5wdXRDb25maWcubGFiZWwgfX0gPC9zcGFuPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKF9pbnB1dENvbmZpZy5tdWx0aXBsZUxhYmVsPy5sYWJlbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIl9pbnB1dENvbmZpZy5tdWx0aXBsZUxhYmVsPy5jdXN0b21DbGFzcyFcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwbGUtbGFiZWxzLXBvc2l0aW9uLW9uLWZvY3VzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvY3VzSW5wdXQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcubXVsdGlwbGVJbnB1dFZhbHVlcz8ub3B0aW9ucz8ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lucHV0Q29uZmlnLmlzUmVxdWlyZWQgJiYgIV9pbnB1dENvbmZpZy5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgb2YgX2lucHV0Q29uZmlnLm11bHRpcGxlTGFiZWw/LmxhYmVscztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9sYWJlbD5cbiAgICB9XG5cbiAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgW3Jlc3RyaWN0SW5wdXRdPVwiaW5wdXRDb25maWdcIlxuICAgICAgICBwcmljZUZvcm1hdFxuICAgICAgICBbcHJpY2VTZXBhcmF0b3JdPVwiXG4gICAgICAgICAgICBpbnB1dENvbmZpZy5wcmljZVNlcGFyYXRvciB8fCBpbnB1dENvbmZpZy50aG91c2FuZFNlcGFyYXRvclxuICAgICAgICBcIlxuICAgICAgICAoZm9jdXMpPVwiaGFuZGxlSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwiaGFuZGxlSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgICAgICBbcmVhZE9ubHldPVwiX2lucHV0Q29uZmlnLnJlYWRPbmx5XCJcbiAgICAgICAgW3R5cGVdPVwiX2lucHV0Q29uZmlnLnR5cGUgfCBpbnB1dFR5cGU6IGlzVG9nZ2xlUGFzc3dvcmRcIlxuICAgICAgICBjbGFzcz1cImlucHV0LWNvbnRyb2xcbiAgICAgICAgICAgIHt7IF9pbnB1dENvbmZpZy50ZXh0VHJhbnNmb3JtIH19XG4gICAgICAgICAgICB7eyBfaW5wdXRDb25maWcudGV4dEFsaWduIH19XG4gICAgICAgICAgICB7eyBfaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cbiAgICAgICAgXCJcbiAgICAgICAgW2FwcE1heFZhbHVlXT1cImlucHV0Q29uZmlnLm1heFwiXG4gICAgICAgIGFwcENhcHNMb2NrXG4gICAgICAgIChjYXBzTG9ja1N0YXR1cyk9XCJoYW5kbGVDYXBzTG9jaygkZXZlbnQpXCJcbiAgICAgICAgY29tbWFuZFZpc2libGVcbiAgICAgICAgKGNvbW1hbmRWaXNpYmxlKT1cImhhbmRsZUNvbW1hbmRWaXNpYmxlKCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICAoX2lucHV0Q29uZmlnLnBsYWNlaG9sZGVySW5zdGVhZE9mTGFiZWwgJiZcbiAgICAgICAgICAgIF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlciAmJlxuICAgICAgICAgICAgaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgPyBfaW5wdXRDb25maWcucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICA6ICcnKSB8fFxuICAgICAgICAgICAgKF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlciAmJiBpc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICA/IF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIDogJycpXG4gICAgICAgIFwiXG4gICAgICAgIFttYXNrXT1cIl9pbnB1dENvbmZpZy5tYXNrXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICBjb250cm9sXG4gICAgICAgICAgICAgICAgfCBpbnB1dENsYXNzXG4gICAgICAgICAgICAgICAgICAgIDogaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgICAgIDogY29udHJvbD8udG91Y2hlZCFcbiAgICAgICAgICAgICAgICAgICAgOiBfaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgOiBpbnB1dFxuICAgICAgICAgICAgICAgICAgICA6IGlzVmlzaWJsZUNvbW1hbmRzXG4gICAgICAgICAgICAgICAgICAgIDogY29udHJvbD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiBjb250cm9sPy5pbnZhbGlkXG4gICAgICAgICAgICAgICAgICAgIDogY29udHJvbD8udG91Y2hlZFxuICAgICAgICAgICAgICAgICAgICA6IGlzRHJvcGRvd25Ub2dnbGVyXG4gICAgICAgICAgICAgICAgICAgIDogaXNFZGl0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgOiB0ZW1wbGF0ZVxuICAgICAgICBcIlxuICAgIC8+XG5cbiAgICA8IS0tIFBsYWNlaG9sZGVyIEljb24gb24gUmlnaHQgU2lkZSAtLT5cbiAgICBAaWYgKF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlckljb25SaWdodFNpZGUpIHtcbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInBsYWNlaG9sZGVyLWljb24tcmlnaHQtc2lkZSB7e1xuICAgICAgICAgICAgICAgIF9pbnB1dENvbmZpZy5wbGFjZWhvbGRlckljb25Db2xvclxuICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgICAgICAgIHwgaW5wdXRQbGFjZWhvbGRlckljb25SaWdodENsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2lucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzVG91Y2hlZElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICBfaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgfCBjYVN2ZzogJ2NvbW1vbidcbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L3N2Zy1pY29uPlxuICAgIH1cblxuICAgIDwhLS0gSW5wdXQgRXJyb3IgTWVzc2FnZSAtLT5cbiAgICBAaWYgKFxuICAgICAgICAhKCFjb250cm9sPy52YWx1ZSAmJiBpc0ZvY3VzSW5wdXQpICYmXG4gICAgICAgIChpc1RvdWNoZWRJbnB1dCB8fCBjb250cm9sPy50b3VjaGVkIHx8IGNvbnRyb2w/LnZhbHVlKSAmJlxuICAgICAgICBjb250cm9sPy5pbnZhbGlkICYmXG4gICAgICAgICFfaW5wdXRDb25maWcuaXNJbnZhbGlkU2VhcmNoSW5Ecm9wZG93biAmJlxuICAgICAgICAhX2lucHV0Q29uZmlnLmlzRGlzYWJsZWRcbiAgICApIHtcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICEoX2lucHV0Q29uZmlnLmhpZGVFcnJvck1lc3NhZ2UgfHwgX2lucHV0Q29uZmlnLmVycm9ySW5zaWRlSW5wdXQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1lcnJvciB7eyBfaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cIj5cbiAgICAgICAgICAgICAgICB7eyBjb250cm9sPy5lcnJvcnMgfCBpbnB1dEVycm9yOiBfaW5wdXRDb25maWcubmFtZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBFcnJvciBNZXNzYWdlIEluc2lkZSBJbnB1dCAtLT5cbiAgICAgICAgQGlmIChfaW5wdXRDb25maWcuZXJyb3JJbnNpZGVJbnB1dCkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1pbnNpZGUtaW5wdXQge3sgX2lucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XCI+XG4gICAgICAgICAgICAgICAge3sgY29udHJvbD8uZXJyb3JzIHwgaW5wdXRFcnJvcjogX2lucHV0Q29uZmlnLm5hbWUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoX2lucHV0Q29uZmlnLmZpeGVkUGxhY2hvbGRlciAmJiBpbnB1dC52YWx1ZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWZpeGVkLXBsYWNlaG9kZXItbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IF9pbnB1dENvbmZpZy5maXhlZFBsYWNob2xkZXIgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIH1cbjwvZGl2PlxuIl19