@osovitny/anatoly 3.17.13 → 3.17.14
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.
|
@@ -249,7 +249,7 @@ export class AuthService extends ApiServiceBase {
|
|
|
249
249
|
/*
|
|
250
250
|
https://learn.microsoft.com/en-us/entra/identity-platform/msal-js-sso
|
|
251
251
|
*/
|
|
252
|
-
let sso = location.
|
|
252
|
+
let sso = location.search.indexOf("a=sso") > -1;
|
|
253
253
|
if (sso) {
|
|
254
254
|
let login = QSUtils.getValueByName("login");
|
|
255
255
|
let sid = QSUtils.getValueByName("sid");
|
|
@@ -425,4 +425,4 @@ export class AuthService extends ApiServiceBase {
|
|
|
425
425
|
type: Inject,
|
|
426
426
|
args: [MSAL_GUARD_CONFIG]
|
|
427
427
|
}] }, { type: i4.MsalService }, { type: i4.MsalBroadcastService }], null); })();
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2lhbS9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBYyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQTZELE1BQU0scUJBQXFCLENBQUM7QUFDbkgsT0FBTyxFQUFtRCxTQUFTLEVBQWlCLDRCQUE0QixFQUM5RyxpQkFBaUIsRUFBRSxlQUFlLEVBQWdCLFdBQVcsRUFDOUQsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixLQUFLO0FBQ0wsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7QUFVckMsTUFBTSxPQUFPLFdBQVksU0FBUSxjQUFjO0lBVTdDLFlBQ1ksSUFBZ0IsRUFDbEIsTUFBYyxFQUNkLFVBQTZCLEVBRzdCLGVBQXVDLEVBQ3ZDLFdBQXdCLEVBQ3hCLG9CQUEwQztRQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFSRixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUc3QixvQkFB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QW9DO1lBQ3ZELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVM7WUFDdEMsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxzQkFBc0IsR0FBb0M7WUFDNUQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTO1lBQzNDLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksd0JBQXdCLEdBQW9DO1lBQzlELFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUztZQUM3QyxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDdkMsQ0FBQzs0RUE1ZlUsV0FBVyxxR0FlWixpQkFBaUI7dUVBZmhCLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COztzQkFnQkksTUFBTTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgNiBEZWMgMjAxOFxyXG5cclxuICBEZXNjcmlwdGlvbjpcclxuICAgIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgb2YsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNU0FMX0dVQVJEX0NPTkZJRywgTXNhbEJyb2FkY2FzdFNlcnZpY2UsIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24sIE1zYWxTZXJ2aWNlIH0gZnJvbSAnQGF6dXJlL21zYWwtYW5ndWxhcic7XHJcbmltcG9ydCB7IEFjY291bnRJbmZvLCBBdXRoZW50aWNhdGlvblJlc3VsdCwgRXZlbnRNZXNzYWdlLCBFdmVudFR5cGUsIElkVG9rZW5DbGFpbXMsIEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3IsXHJcbiAgSW50ZXJhY3Rpb25TdGF0dXMsIEludGVyYWN0aW9uVHlwZSwgUG9wdXBSZXF1ZXN0LCBQcm9tcHRWYWx1ZSwgUmVkaXJlY3RSZXF1ZXN0LCBTaWxlbnRSZXF1ZXN0LCBTc29TaWxlbnRSZXF1ZXN0XHJcbn0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlQmFzZSB9IGZyb20gJy4uLy4uL2RhdGEvYmFzZS9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hcHBjb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNU0FMUmVkaXJlY3QgfSBmcm9tICcuLi9yZWRpcmVjdCc7XHJcbmltcG9ydCB7IE1TQUxVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgTVNBTEIyQywgUG9saWN5VHlwZSB9IGZyb20gJy4uL2IyYyc7XHJcbmltcG9ydCB7IFFTVXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlJztcclxuXHJcbnR5cGUgSWRUb2tlbkNsYWltc1dpdGhQb2xpY3lJZCA9IElkVG9rZW5DbGFpbXMgJiB7XHJcbiAgYWNyPzogc3RyaW5nLFxyXG4gIHRmcD86IHN0cmluZyxcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIGV4dGVuZHMgQXBpU2VydmljZUJhc2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbXNhbERlc3Ryb3lpbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vQjJDIFBvbGljaWVzXHJcbiAgcHJpdmF0ZSBzaWduVXBTaWduSW5Qb2xpY3lcclxuICBwcml2YXRlIHNpZ25VcFBvbGljeTtcclxuICBwcml2YXRlIGVkaXRQcm9maWxlUG9saWN5O1xyXG4gIHByaXZhdGUgcmVzZXRQYXNzd29yZFBvbGljeTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFwcENvbnRleHQ6IEFwcENvbnRleHRTZXJ2aWNlLFxyXG5cclxuICAgIEBJbmplY3QoTVNBTF9HVUFSRF9DT05GSUcpXHJcbiAgICBwcml2YXRlIG1zYWxHdWFyZENvbmZpZzogTXNhbEd1YXJkQ29uZmlndXJhdGlvbixcclxuICAgIHByaXZhdGUgbXNhbFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtc2FsQnJvYWRjYXN0U2VydmljZTogTXNhbEJyb2FkY2FzdFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGh0dHApO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMubXNhbERlc3Ryb3lpbmckLm5leHQodW5kZWZpbmVkKTtcclxuICAgIHRoaXMubXNhbERlc3Ryb3lpbmckLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXQoKSB7XHJcbiAgICB0aGlzLnNldERlZmF1bHRzKCk7XHJcblxyXG4gICAgdGhpcy5tc2FsU2VydmljZS5pbml0aWFsaXplKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhgbXNhbC5hcHA6IGluaXRNU0FMIHN0YXJ0ZWRgKTtcclxuICAgICAgdGhpcy5pbml0TVNBTCgpO1xyXG4gICAgICBjb25zb2xlLmxvZyhgbXNhbC5hcHA6IGluaXRNU0FMIGZpbmlzaGVkYCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdHMoKSB7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlQUQvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL2Jsb2IvZGV2L3NhbXBsZXMvbXNhbC1hbmd1bGFyLXYzLXNhbXBsZXMvYW5ndWxhci1iMmMtc2FtcGxlLWFwcC9zcmMvYXBwL2FwcC5jb21wb25lbnQudHNcclxuXHJcbiAgICBUb2tlbiBWYWxpZGF0aW9uOlxyXG4gICAgICBodHRwczovL2p3dC5pb1xyXG5cclxuICAgIFRva2VuIHR5cGVzOlxyXG4gICAgICBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvYWN0aXZlLWRpcmVjdG9yeS1iMmMvdG9rZW5zLW92ZXJ2aWV3XHJcbiAgICAgIElEIHRva2VuIC0gQSBKV1QgdGhhdCBjb250YWlucyBjbGFpbXMgdGhhdCB5b3UgY2FuIHVzZSB0byBpZGVudGlmeSB1c2VycyBpbiB5b3VyIGFwcGxpY2F0aW9uXHJcbiAgICAgIEFjY2VzcyB0b2tlbiAtIEEgSldUIHRoYXQgY29udGFpbnMgY2xhaW1zIHRoYXQgeW91IGNhbiB1c2UgdG8gaWRlbnRpZnkgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnMgdG8geW91ciBBUElzLlxyXG4gICAgICAgICAgICAgICAgICAgICBBY2Nlc3MgdG9rZW5zIGFyZSBzaWduZWQsIGJ1dCB0aGV5IGFyZW4ndCBlbmNyeXB0ZWRcclxuICAgICAgUmVmcmVzaCB0b2tlbiAtIFJlZnJlc2ggdG9rZW5zIGFyZSB1c2VkIHRvIGFjcXVpcmUgbmV3IElEIHRva2VucyBhbmQgYWNjZXNzIHRva2VucyBpbiBhbiBPQXV0aCAyLjAgZmxvdy5cclxuICAqL1xyXG4gIHByaXZhdGUgaW5pdE1TQUwoKSB7XHJcbiAgICAvL0IyQ1xyXG4gICAgdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kgPSBNU0FMQjJDLmdldFBvbGljeUJ5VHlwZShQb2xpY3lUeXBlLnNpZ25VcFNpZ25Jbik7XHJcbiAgICB0aGlzLnNpZ25VcFBvbGljeSA9IE1TQUxCMkMuZ2V0UG9saWN5QnlUeXBlKFBvbGljeVR5cGUuc2lnblVwKTtcclxuICAgIHRoaXMuZWRpdFByb2ZpbGVQb2xpY3kgPSBNU0FMQjJDLmdldFBvbGljeUJ5VHlwZShQb2xpY3lUeXBlLmVkaXRQcm9maWxlKTtcclxuICAgIHRoaXMucmVzZXRQYXNzd29yZFBvbGljeSA9IE1TQUxCMkMuZ2V0UG9saWN5QnlUeXBlKFBvbGljeVR5cGUucmVzZXRQYXNzd29yZCk7XHJcblxyXG4gICAgdGhpcy5tc2FsU2VydmljZS5oYW5kbGVSZWRpcmVjdE9ic2VydmFibGUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzdWx0OiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBtc2FsLmFwcDogaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlYCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuZW5hYmxlQWNjb3VudFN0b3JhZ2VFdmVudHMoKTtcclxuICAgIHRoaXMubXNhbEJyb2FkY2FzdFNlcnZpY2UubXNhbFN1YmplY3QkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChtc2c6IEV2ZW50TWVzc2FnZSkgPT5cclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5JTklUSUFMSVpFX0VORCB8fFxyXG5cclxuICAgICAgICAgIC8vQUNDT1VOVF9BRERFRCBhbmQgQUNDT1VOVF9SRU1PVkVEIGV2ZW50cyBlbWl0dGVkIHdoZW4gYSB1c2VyIGxvZ3MgaW4gb3Igb3V0IG9mIGFub3RoZXIgdGFiIG9yIHdpbmRvd1xyXG4gICAgICAgICAgbXNnLmV2ZW50VHlwZSA9PT0gRXZlbnRUeXBlLkFDQ09VTlRfQURERUQgfHxcclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5BQ0NPVU5UX1JFTU9WRUQgfHxcclxuXHJcbiAgICAgICAgICAvL0xvZ2luIEZhaWx1cmVcclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5MT0dJTl9GQUlMVVJFIHx8XHJcbiAgICAgICAgICBtc2cuZXZlbnRUeXBlID09PSBFdmVudFR5cGUuQUNRVUlSRV9UT0tFTl9GQUlMVVJFIHx8XHJcblxyXG4gICAgICAgICAgLy9Mb2dPdXRcclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5MT0dPVVRfU1VDQ0VTUyB8fFxyXG5cclxuICAgICAgICAgIC8vTG9nSW5cclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5MT0dJTl9TVUNDRVNTIHx8XHJcbiAgICAgICAgICBtc2cuZXZlbnRUeXBlID09PSBFdmVudFR5cGUuQUNRVUlSRV9UT0tFTl9TVUNDRVNTIHx8XHJcbiAgICAgICAgICBtc2cuZXZlbnRUeXBlID09PSBFdmVudFR5cGUuU1NPX1NJTEVOVF9TVUNDRVNTXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5tc2FsRGVzdHJveWluZyQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgobXNnOiBFdmVudE1lc3NhZ2UpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKG1zZy5ldmVudFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLklOSVRJQUxJWkVfRU5EOlxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgbXNhbC5hcHA6IElOSVRJQUxJWkVfRU5EIGZpcmVkYCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLkFDQ09VTlRfQURERUQ6XHJcbiAgICAgICAgICBjYXNlIEV2ZW50VHlwZS5BQ0NPVU5UX1JFTU9WRUQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lID0gXCIvXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBFdmVudFR5cGUuTE9HSU5fRkFJTFVSRTpcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLkFDUVVJUkVfVE9LRU5fRkFJTFVSRTpcclxuICAgICAgICAgICAgaWYgKCFNU0FMVXRpbHMuaXNCMkMoKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9DaGVjayBmb3IgZm9yZ290IHBhc3N3b3JkIGVycm9yLiBMZWFybiBtb3JlIGFib3V0IEFBRCBlcnJvciBjb2RlcyBhdFxyXG4gICAgICAgICAgICAvL2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2FjdGl2ZS1kaXJlY3RvcnkvZGV2ZWxvcC9yZWZlcmVuY2UtYWFkc3RzLWVycm9yLWNvZGVzXHJcbiAgICAgICAgICAgIGlmIChtc2cuZXJyb3IgJiYgbXNnLmVycm9yLm1lc3NhZ2UuaW5kZXhPZignQUFEQjJDOTAxMTgnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHJlc2V0UGFzc3dvcmRGbG93UmVxdWVzdDogUmVkaXJlY3RSZXF1ZXN0IHwgUG9wdXBSZXF1ZXN0ICA9IHtcclxuICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5OiB0aGlzLnJlc2V0UGFzc3dvcmRQb2xpY3kuYXV0aG9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICBzY29wZXM6IFtdLFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubG9naW4ocmVzZXRQYXNzd29yZEZsb3dSZXF1ZXN0KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBFdmVudFR5cGUuTE9HT1VUX1NVQ0NFU1M6XHJcbiAgICAgICAgICAgIHRoaXMuYXBwQ29udGV4dC5jbGVhcldlYlN0b3JhZ2UoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBFdmVudFR5cGUuTE9HSU5fU1VDQ0VTUzpcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLkFDUVVJUkVfVE9LRU5fU1VDQ0VTUzpcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLlNTT19TSUxFTlRfU1VDQ0VTUzpcclxuICAgICAgICAgICAgbGV0IHBheWxvYWQgPSBtc2cucGF5bG9hZCBhcyBBdXRoZW50aWNhdGlvblJlc3VsdDtcclxuICAgICAgICAgICAgaWYgKCFwYXlsb2FkKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIU1TQUxVdGlscy5pc0IyQygpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5zZXRBY3RpdmVBY2NvdW50KHBheWxvYWQuYWNjb3VudCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL0IyQ1xyXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBwYXlsb2FkLmlkVG9rZW5DbGFpbXMgYXMgSWRUb2tlbkNsYWltc1dpdGhQb2xpY3lJZFxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIHNpZ25VcFNpZ25JblxyXG4gICAgICAgICAgICAgKlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKHRva2VuLmFjciA9PT0gdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kubmFtZSB8fCB0b2tlbi50ZnAgPT09IHRoaXMuc2lnblVwU2lnbkluUG9saWN5Lm5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocGF5bG9hZC5hY2NvdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIHNpZ25VcFBvbGljeVxyXG4gICAgICAgICAgICAgKlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKHRva2VuLmFjciA9PT0gdGhpcy5zaWduVXBQb2xpY3kubmFtZSB8fCB0b2tlbi50ZnAgPT09IHRoaXMuc2lnblVwUG9saWN5Lm5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocGF5bG9hZC5hY2NvdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIGVkaXRQcm9maWxlXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIEZvciB0aGUgcHVycG9zZSBvZiBzZXR0aW5nIGFuIGFjdGl2ZSBhY2NvdW50IGZvciBVSSB1cGRhdGUsIHdlIHdhbnQgdG8gY29uc2lkZXIgb25seSB0aGUgYXV0aCByZXNwb25zZSByZXN1bHRpbmdcclxuICAgICAgICAgICAgICogZnJvbSBTVVNJIGZsb3cuIFwiYWNyXCIgY2xhaW0gaW4gdGhlIGlkIHRva2VuIHRlbGxzIHVzIHRoZSBwb2xpY3kgKE5PVEU6IG5ld2VyIHBvbGljaWVzIG1heSB1c2UgdGhlIFwidGZwXCIgY2xhaW0gaW5zdGVhZCkuXHJcbiAgICAgICAgICAgICAqIFRvIGxlYXJuIG1vcmUgYWJvdXQgQjJDIHRva2VucywgdmlzaXQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvYWN0aXZlLWRpcmVjdG9yeS1iMmMvdG9rZW5zLW92ZXJ2aWV3XHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAodG9rZW4uYWNyID09PSB0aGlzLmVkaXRQcm9maWxlUG9saWN5Lm5hbWUgfHwgdG9rZW4udGZwID09PSB0aGlzLmVkaXRQcm9maWxlUG9saWN5Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgY29uc3Qgc2lnbkluQWNjb3VudCA9IHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKS5maW5kKChhY2NvdW50OiBBY2NvdW50SW5mbykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50LmlkVG9rZW5DbGFpbXM/Lm9pZCA9PT0gdG9rZW4ub2lkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5pZFRva2VuQ2xhaW1zPy5zdWIgPT09IHRva2VuLnN1YiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgoYWNjb3VudC5pZFRva2VuQ2xhaW1zIGFzIElkVG9rZW5DbGFpbXNXaXRoUG9saWN5SWQpLmFjciA9PT0gdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kubmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjb3VudC5pZFRva2VuQ2xhaW1zIGFzIElkVG9rZW5DbGFpbXNXaXRoUG9saWN5SWQpLnRmcCA9PT0gdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kubmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuZm9yY2VSZWF1dGhlbnRpY2F0ZShzaWduSW5BY2NvdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIHJlc2V0UGFzc3dvcmRcclxuICAgICAgICAgICAgICpcclxuICAgICAgICAgICAgICogQmVsb3cgd2UgYXJlIGNoZWNraW5nIGlmIHRoZSB1c2VyIGlzIHJldHVybmluZyBmcm9tIHRoZSByZXNldCBwYXNzd29yZCBmbG93LlxyXG4gICAgICAgICAgICAgKiBJZiBzbywgd2Ugd2lsbCBhc2sgdGhlIHVzZXIgdG8gcmVhdXRoZW50aWNhdGUgd2l0aCB0aGVpciBuZXcgcGFzc3dvcmQuXHJcbiAgICAgICAgICAgICAqIElmIHlvdSBkbyBub3Qgd2FudCB0aGlzIGJlaGF2aW9yIGFuZCBwcmVmZXIgeW91ciB1c2VycyB0byBzdGF5IHNpZ25lZCBpbiBpbnN0ZWFkLFxyXG4gICAgICAgICAgICAgKiB5b3UgY2FuIHJlcGxhY2UgdGhlIGNvZGUgYmVsb3cgd2l0aCB0aGUgc2FtZSBwYXR0ZXJuIHVzZWQgZm9yIGhhbmRsaW5nIHRoZSByZXR1cm4gZnJvbVxyXG4gICAgICAgICAgICAgKiBwcm9maWxlIGVkaXQgZmxvd1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKHRva2VuLmFjciA9PT0gdGhpcy5yZXNldFBhc3N3b3JkUG9saWN5Lm5hbWUgfHwgdG9rZW4udGZwID09PSB0aGlzLnJlc2V0UGFzc3dvcmRQb2xpY3kubmFtZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9yY2VSZWF1dGhlbnRpY2F0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMubXNhbEJyb2FkY2FzdFNlcnZpY2UuaW5Qcm9ncmVzcyQucGlwZShcclxuICAgICAgICBmaWx0ZXIoKHN0YXR1czogSW50ZXJhY3Rpb25TdGF0dXMpID0+XHJcbiAgICAgICAgICBzdGF0dXMgPT09IEludGVyYWN0aW9uU3RhdHVzLlN0YXJ0dXAgfHxcclxuICAgICAgICAgIHN0YXR1cyA9PT0gSW50ZXJhY3Rpb25TdGF0dXMuTm9uZVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubXNhbERlc3Ryb3lpbmckKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogSW50ZXJhY3Rpb25TdGF0dXMpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xyXG4gICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgKiBJbml0aWFsIHN0YXR1cyBiZWZvcmUgaW50ZXJhY3Rpb24gb2NjdXJzXHJcbiAgICAgICAgICAgKi9cclxuICAgICAgICAgIGNhc2UgSW50ZXJhY3Rpb25TdGF0dXMuU3RhcnR1cDpcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYG1zYWwuYXBwOiBJbnRlcmFjdGlvblN0YXR1cy5TdGFydHVwYCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgKiBTdGF0dXMgc2V0IHdoZW4gaW50ZXJhY3Rpb24gaXMgY29tcGxldGVcclxuICAgICAgICAgICovXHJcbiAgICAgICAgICBjYXNlIEludGVyYWN0aW9uU3RhdHVzLk5vbmU6XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBtc2FsLmFwcDogSW50ZXJhY3Rpb25TdGF0dXMuTm9uZWApO1xyXG5cclxuICAgICAgICAgICAgTVNBTFJlZGlyZWN0LmhhbmRsZSh0aGlzLnJvdXRlciwgJ21zYWxCcm9hZGNhc3RTZXJ2aWNlLmluUHJvZ3Jlc3MkIEludGVyYWN0aW9uU3RhdHVzLk5vbmUnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tBbmRTZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwQ29udGV4dC51cGRhdGVDdXJyZW50KCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQW5kU2V0QWN0aXZlQWNjb3VudCgpIHtcclxuICAgIGxldCBhY3RpdmVBY2NvdW50ID0gdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5nZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgICBsZXQgYWNjb3VudHMgPSB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCk7XHJcblxyXG4gICAgaWYgKCFhY3RpdmVBY2NvdW50ICYmIGFjY291bnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5zZXRBY3RpdmVBY2NvdW50KGFjY291bnRzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNQb3B1cChwb3B1cD86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0eXBlb2YgcG9wdXAgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXNhbEd1YXJkQ29uZmlnLmludGVyYWN0aW9uVHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlLlBvcHVwO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwb3B1cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWNxdWlyZVRva2VuKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBsZXQgcmVxdWVzdCA9IHtcclxuICAgICAgc2NvcGVzOiBNU0FMVXRpbHMuZ2V0QXBpU2NvcGVzKClcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1BvcHVwKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXNhbFNlcnZpY2UuYWNxdWlyZVRva2VuUG9wdXAocmVxdWVzdCkucGlwZShcclxuICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlID8gcmVzcG9uc2UuYWNjZXNzVG9rZW4gOiBudWxsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXNhbFNlcnZpY2UuYWNxdWlyZVRva2VuUmVkaXJlY3QocmVxdWVzdCkucGlwZShcclxuICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFB1YmxpYyBmdW5jc1xyXG4gIGdldEFjdGl2ZUFjY291bnQoKTogQWNjb3VudEluZm8gfCBudWxsIHtcclxuICAgIHRoaXMuY2hlY2tBbmRTZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgICByZXR1cm4gdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5nZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRW1haWwoKSB7XHJcbiAgICBsZXQgY3VycmVudFVzZXIgPSB0aGlzLmFwcENvbnRleHQuY3VycmVudFVzZXI7XHJcbiAgICBsZXQgYWN0aXZlQWNjb3VudCA9IHRoaXMuZ2V0QWN0aXZlQWNjb3VudCgpO1xyXG5cclxuICAgIGlmIChhY3RpdmVBY2NvdW50KSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmVBY2NvdW50LnVzZXJuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjdXJyZW50VXNlciA/IGN1cnJlbnRVc2VyLkVtYWlsIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyTmFtZSgpIHtcclxuICAgIGxldCBjdXJyZW50VXNlciA9IHRoaXMuYXBwQ29udGV4dC5jdXJyZW50VXNlcjtcclxuICAgIGxldCBhY3RpdmVBY2NvdW50ID0gdGhpcy5nZXRBY3RpdmVBY2NvdW50KCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZUFjY291bnQpIHtcclxuICAgICAgcmV0dXJuIGFjdGl2ZUFjY291bnQubmFtZSA/IGFjdGl2ZUFjY291bnQubmFtZSA6IGN1cnJlbnRVc2VyID8gY3VycmVudFVzZXIuZGlzcGxheU5hbWVPckZ1bGxOYW1lIDogJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnRVc2VyID8gY3VycmVudFVzZXIuZGlzcGxheU5hbWVPckZ1bGxOYW1lIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRBY2Nlc3NUb2tlbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgLy8xLiBDaGVjayBTU09cclxuICAgIC8qXHJcbiAgICAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9lbnRyYS9pZGVudGl0eS1wbGF0Zm9ybS9tc2FsLWpzLXNzb1xyXG4gICAgKi9cclxuICAgIGxldCBzc28gPSBsb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKFwiaWFtL3Nzb1wiKSA+IC0xO1xyXG4gICAgaWYgKHNzbykge1xyXG4gICAgICBsZXQgbG9naW4gPSBRU1V0aWxzLmdldFZhbHVlQnlOYW1lKFwibG9naW5cIik7XHJcbiAgICAgIGxldCBzaWQgPSBRU1V0aWxzLmdldFZhbHVlQnlOYW1lKFwic2lkXCIpO1xyXG4gICAgICBsZXQgc3NvU2lsZW50UmVxdWVzdDogU3NvU2lsZW50UmVxdWVzdDtcclxuXHJcbiAgICAgIGlmIChsb2dpbikge1xyXG4gICAgICAgIHNzb1NpbGVudFJlcXVlc3QgPSB7XHJcbiAgICAgICAgICBzY29wZXM6IE1TQUxVdGlscy5nZXRBcGlTY29wZXMoKSxcclxuICAgICAgICAgIGxvZ2luSGludDogbG9naW5cclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHNpZCkge1xyXG4gICAgICAgIHNzb1NpbGVudFJlcXVlc3QgPSB7XHJcbiAgICAgICAgICBzY29wZXM6IE1TQUxVdGlscy5nZXRBcGlTY29wZXMoKSxcclxuICAgICAgICAgIHNpZDogc2lkXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJTU08gaW4gcHJvZ3Jlc3MuLi5cIik7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5tc2FsU2VydmljZS5zc29TaWxlbnQoc3NvU2lsZW50UmVxdWVzdCkucGlwZShcclxuICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmFjY2Vzc1Rva2VuO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJTaWxlbnQgdG9rZW4gYWNxdWlzaXRpb24gZmFpbHMuXCIpO1xyXG5cclxuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNxdWlyZVRva2VuKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8yLiBpZiBpc1VzZXJBdXRoZW50aWNhdGVkXHJcbiAgICBsZXQgYWN0aXZlQWNjb3VudCA9IHRoaXMuZ2V0QWN0aXZlQWNjb3VudCgpO1xyXG4gICAgaWYgKGFjdGl2ZUFjY291bnQpIHtcclxuICAgICAgbGV0IHNpbGVudFJlcXVlc3Q6IFNpbGVudFJlcXVlc3QgPSB7XHJcbiAgICAgICAgc2NvcGVzOiBNU0FMVXRpbHMuZ2V0QXBpU2NvcGVzKCksXHJcbiAgICAgICAgYWNjb3VudDogYWN0aXZlQWNjb3VudFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMubXNhbFNlcnZpY2UuYWNxdWlyZVRva2VuU2lsZW50KHNpbGVudFJlcXVlc3QpLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZS5hY2Nlc3NUb2tlbjtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiU2lsZW50IHRva2VuIGFjcXVpc2l0aW9uIGZhaWxzLlwiKTtcclxuXHJcbiAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBJbnRlcmFjdGlvblJlcXVpcmVkQXV0aEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjcXVpcmVUb2tlbigpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmFjcXVpcmVUb2tlbigpO1xyXG4gIH1cclxuXHJcbiAgZm9yY2VSZWF1dGhlbnRpY2F0ZShhY2NvdW50Pykge1xyXG4gICAgaWYgKE1TQUxVdGlscy5pc0IyQygpKSB7XHJcbiAgICAgIGxldCBzaWduVXBTaWduSW5GbG93UmVxdWVzdDogUmVkaXJlY3RSZXF1ZXN0IHwgUG9wdXBSZXF1ZXN0ICA9IHtcclxuICAgICAgICBhdXRob3JpdHk6IHRoaXMuc2lnblVwU2lnbkluUG9saWN5LmF1dGhvcml0eSxcclxuICAgICAgICBzY29wZXM6IFtdLFxyXG4gICAgICAgIHByb21wdDogUHJvbXB0VmFsdWUuTE9HSU4sIC8vIGZvcmNlIHVzZXIgdG8gcmVhdXRoZW50aWNhdGUgd2l0aCB0aGVpciBuZXcgcGFzc3dvcmRcclxuICAgICAgICBhY2NvdW50OiBhY2NvdW50XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmxvZ2luKHNpZ25VcFNpZ25JbkZsb3dSZXF1ZXN0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9naW4odXNlckZsb3dSZXF1ZXN0PzogUmVkaXJlY3RSZXF1ZXN0IHwgUG9wdXBSZXF1ZXN0LCBwb3B1cD86IGJvb2xlYW4pIHtcclxuICAgIGxldCBhdXRoUmVxdWVzdENmZzogYW55ID0gdGhpcy5tc2FsR3VhcmRDb25maWcuYXV0aFJlcXVlc3Q7XHJcbiAgICBsZXQgYXV0aFJlcXVlc3QgPSBudWxsO1xyXG5cclxuICAgIGlmICghdXNlckZsb3dSZXF1ZXN0KSB7XHJcbiAgICAgIGxldCBzaWduVXBTaWduSW5GbG93UmVxdWVzdDogUmVkaXJlY3RSZXF1ZXN0IHwgUG9wdXBSZXF1ZXN0ICA9IHtcclxuICAgICAgICBhdXRob3JpdHk6IHRoaXMuc2lnblVwU2lnbkluUG9saWN5LmF1dGhvcml0eSxcclxuICAgICAgICBzY29wZXM6IFtdXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB1c2VyRmxvd1JlcXVlc3QgPSBzaWduVXBTaWduSW5GbG93UmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXV0aFJlcXVlc3RDZmcpIHtcclxuICAgICAgYXV0aFJlcXVlc3QgPSBhdXRoUmVxdWVzdENmZyh0aGlzLm1zYWxTZXJ2aWNlLCB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNQb3B1cChwb3B1cCkpIHtcclxuICAgICAgaWYgKGF1dGhSZXF1ZXN0KSB7XHJcbiAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dpblBvcHVwKHsgLi4uYXV0aFJlcXVlc3QsIC4uLnVzZXJGbG93UmVxdWVzdCB9IGFzIFBvcHVwUmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwb25zZTogQXV0aGVudGljYXRpb25SZXN1bHQpID0+IHtcclxuICAgICAgICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2Uuc2V0QWN0aXZlQWNjb3VudChyZXNwb25zZS5hY2NvdW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmxvZ2luUG9wdXAodXNlckZsb3dSZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5zZXRBY3RpdmVBY2NvdW50KHJlc3BvbnNlLmFjY291bnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKGF1dGhSZXF1ZXN0KSB7XHJcbiAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dpblJlZGlyZWN0KHsgLi4uYXV0aFJlcXVlc3QsIC4uLnVzZXJGbG93UmVxdWVzdCB9IGFzIFJlZGlyZWN0UmVxdWVzdCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dpblJlZGlyZWN0KHVzZXJGbG93UmVxdWVzdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ291dChwb3B1cD86IGJvb2xlYW4pIHtcclxuICAgIGxldCBhY3RpdmVBY2NvdW50ID0gdGhpcy5nZXRBY3RpdmVBY2NvdW50KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNQb3B1cChwb3B1cCkpIHtcclxuICAgICAgaWYgKGFjdGl2ZUFjY291bnQpIHtcclxuICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmxvZ291dFBvcHVwKHsgYWNjb3VudDogYWN0aXZlQWNjb3VudCwgbWFpbldpbmRvd1JlZGlyZWN0VXJpOiBcIi9cIiB9KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubXNhbFNlcnZpY2UubG9nb3V0UG9wdXAoeyBtYWluV2luZG93UmVkaXJlY3RVcmk6IFwiL1wiIH0pLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoYWN0aXZlQWNjb3VudCkge1xyXG4gICAgICAgIHRoaXMubXNhbFNlcnZpY2UubG9nb3V0UmVkaXJlY3QoeyBhY2NvdW50OiBhY3RpdmVBY2NvdW50IH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubXNhbFNlcnZpY2UubG9nb3V0UmVkaXJlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNVc2VyQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFjdGl2ZUFjY291bnQoKSAhPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgaXNVc2VyU2lnbmVkSW4oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuaXNVc2VyQXV0aGVudGljYXRlZCgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hcHBDb250ZXh0LmN1cnJlbnQuaXNVc2VyU2lnbmVkSW4gJiYgdGhpcy5hcHBDb250ZXh0LmN1cnJlbnRVc2VyKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzVXNlckFkbWluKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmlzVXNlclNpZ25lZEluKCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmFwcENvbnRleHQuY3VycmVudC5pc1VzZXJBZG1pbjtcclxuICB9XHJcblxyXG4gIC8vQjJDXHJcbiAgc2lnblVwKCkge1xyXG4gICAgaWYgKCFNU0FMVXRpbHMuaXNCMkMoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNpZ25VcEZsb3dSZXF1ZXN0OiBSZWRpcmVjdFJlcXVlc3QgfCBQb3B1cFJlcXVlc3QgID0ge1xyXG4gICAgICBhdXRob3JpdHk6IHRoaXMuc2lnblVwUG9saWN5LmF1dGhvcml0eSxcclxuICAgICAgc2NvcGVzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmxvZ2luKHNpZ25VcEZsb3dSZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIGVkaXRQcm9maWxlKCkge1xyXG4gICAgaWYgKCFNU0FMVXRpbHMuaXNCMkMoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGVkaXRQcm9maWxlRmxvd1JlcXVlc3Q6IFJlZGlyZWN0UmVxdWVzdCB8IFBvcHVwUmVxdWVzdCAgPSB7XHJcbiAgICAgIGF1dGhvcml0eTogdGhpcy5lZGl0UHJvZmlsZVBvbGljeS5hdXRob3JpdHksXHJcbiAgICAgIHNjb3BlczogW11cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2dpbihlZGl0UHJvZmlsZUZsb3dSZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHJlc2V0UGFzc3dvcmQoKSB7XHJcbiAgICBpZiAoIU1TQUxVdGlscy5pc0IyQygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVzZXRQYXNzd29yZEZsb3dSZXF1ZXN0OiBSZWRpcmVjdFJlcXVlc3QgfCBQb3B1cFJlcXVlc3QgID0ge1xyXG4gICAgICBhdXRob3JpdHk6IHRoaXMucmVzZXRQYXNzd29yZFBvbGljeS5hdXRob3JpdHksXHJcbiAgICAgIHNjb3BlczogW11cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2dpbihyZXNldFBhc3N3b3JkRmxvd1JlcXVlc3QpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
428
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2lhbS9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBYyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQTZELE1BQU0scUJBQXFCLENBQUM7QUFDbkgsT0FBTyxFQUFtRCxTQUFTLEVBQWlCLDRCQUE0QixFQUM5RyxpQkFBaUIsRUFBRSxlQUFlLEVBQWdCLFdBQVcsRUFDOUQsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixLQUFLO0FBQ0wsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7QUFVckMsTUFBTSxPQUFPLFdBQVksU0FBUSxjQUFjO0lBVTdDLFlBQ1ksSUFBZ0IsRUFDbEIsTUFBYyxFQUNkLFVBQTZCLEVBRzdCLGVBQXVDLEVBQ3ZDLFdBQXdCLEVBQ3hCLG9CQUEwQztRQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFSRixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUc3QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQWpCbkMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQy9DLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBa0JuQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBRXhCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVc7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7TUFZRTtJQUNNLFFBQVE7UUFDZCxLQUFLO1FBQ0wsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3RSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3BELElBQUksRUFBRSxDQUFDLE1BQTRCLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFpQixFQUFFLEVBQUUsQ0FDM0IsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsY0FBYztZQUUxQyxzR0FBc0c7WUFDdEcsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsYUFBYTtZQUN6QyxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxlQUFlO1lBRTNDLGVBQWU7WUFDZixHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxhQUFhO1lBQ3pDLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLHFCQUFxQjtZQUVqRCxRQUFRO1lBQ1IsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsY0FBYztZQUUxQyxPQUFPO1lBQ1AsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsYUFBYTtZQUN6QyxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxxQkFBcUI7WUFDakQsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsa0JBQWtCLENBQy9DLEVBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDaEM7YUFDQSxTQUFTLENBQUMsQ0FBQyxHQUFpQixFQUFFLEVBQUU7WUFDL0IsUUFBUSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3RCLEtBQUssU0FBUyxDQUFDLGNBQWM7b0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztvQkFDOUMsTUFBTTtnQkFFUixLQUFLLFNBQVMsQ0FBQyxhQUFhLENBQUM7Z0JBQzdCLEtBQUssU0FBUyxDQUFDLGVBQWU7b0JBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUM1RCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7b0JBQ2pDLENBQUM7b0JBQ0QsTUFBTTtnQkFFUixLQUFLLFNBQVMsQ0FBQyxhQUFhLENBQUM7Z0JBQzdCLEtBQUssU0FBUyxDQUFDLHFCQUFxQjtvQkFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO3dCQUN2QixPQUFPO29CQUNULENBQUM7b0JBRUQsc0VBQXNFO29CQUN0RSw4RkFBOEY7b0JBQzlGLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDL0QsSUFBSSx3QkFBd0IsR0FBb0M7NEJBQzVELFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUzs0QkFDN0MsTUFBTSxFQUFFLEVBQUU7eUJBQ2IsQ0FBQzt3QkFFRixJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7b0JBQ3ZDLENBQUM7b0JBQUEsQ0FBQztvQkFDRixNQUFNO2dCQUVSLEtBQUssU0FBUyxDQUFDLGNBQWM7b0JBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ2xDLE1BQU07Z0JBRVIsS0FBSyxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUM3QixLQUFLLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsS0FBSyxTQUFTLENBQUMsa0JBQWtCO29CQUMvQixJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBK0IsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNiLE9BQU87b0JBQ1QsQ0FBQztvQkFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDNUQsT0FBTztvQkFDVCxDQUFDO29CQUVELEtBQUs7b0JBQ0wsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLGFBQTBDLENBQUE7b0JBRTlEOzs7O3VCQUlHO29CQUNILElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO3dCQUM3RixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzlELENBQUM7b0JBRUQ7Ozs7dUJBSUc7b0JBQ0gsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDakYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM5RCxDQUFDO29CQUVEOzs7Ozs7O3VCQU9HO29CQUNILElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO3dCQUMxRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFvQixFQUFFLEVBQUUsQ0FDcEYsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUc7NEJBQ3hDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHOzRCQUN4QyxDQUFFLE9BQU8sQ0FBQyxhQUEyQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSTtnQ0FDeEYsT0FBTyxDQUFDLGFBQTJDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FDOUYsQ0FBQzt3QkFFVixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzFDLENBQUM7b0JBRUQ7Ozs7Ozs7Ozt1QkFTRztvQkFDSCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDL0YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzdCLENBQUM7b0JBRUQsTUFBTTtZQUNWLENBQUM7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3RDLE1BQU0sQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRSxDQUNuQyxNQUFNLEtBQUssaUJBQWlCLENBQUMsT0FBTztZQUNwQyxNQUFNLEtBQUssaUJBQWlCLENBQUMsSUFBSSxDQUNsQyxFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQ2hDO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBeUIsRUFBRSxFQUFFO1lBQ3ZDLFFBQVEsTUFBTSxFQUFFLENBQUM7Z0JBQ2Y7O21CQUVHO2dCQUNILEtBQUssaUJBQWlCLENBQUMsT0FBTztvQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO29CQUNuRCxNQUFNO2dCQUVSOztrQkFFRTtnQkFDRixLQUFLLGlCQUFpQixDQUFDLElBQUk7b0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztvQkFFaEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHlEQUF5RCxDQUFDLENBQUM7b0JBRTVGLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNoQyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2pFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTFELElBQUksQ0FBQyxhQUFhLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFlO1FBQzdCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUU7U0FDakMsQ0FBQTtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDckQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNiLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7YUFDSSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDeEQsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDUCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7SUFDZixnQkFBZ0I7UUFDZCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUM5QyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU1QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTVDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hHLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVELGNBQWM7UUFDWixjQUFjO1FBQ2Q7O1VBRUU7UUFDRixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksZ0JBQWtDLENBQUM7WUFFdkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixnQkFBZ0IsR0FBRztvQkFDakIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUU7b0JBQ2hDLFNBQVMsRUFBRSxLQUFLO2lCQUNqQixDQUFDO1lBQ0osQ0FBQztpQkFDSSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNiLGdCQUFnQixHQUFHO29CQUNqQixNQUFNLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLEdBQUc7aUJBQ1QsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFFbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNiLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUM5QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxLQUFLLFlBQVksNEJBQTRCLEVBQUUsQ0FBQztvQkFDbEQsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzdCLENBQUM7Z0JBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLGFBQWEsR0FBa0I7Z0JBQ2pDLE1BQU0sRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFO2dCQUNoQyxPQUFPLEVBQUUsYUFBYTthQUN2QixDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDNUQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNiLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUM5QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxLQUFLLFlBQVksNEJBQTRCLEVBQUUsQ0FBQztvQkFDbEQsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzdCLENBQUM7Z0JBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBUTtRQUMxQixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksdUJBQXVCLEdBQW9DO2dCQUM3RCxTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVM7Z0JBQzVDLE1BQU0sRUFBRSxFQUFFO2dCQUNWLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLHVEQUF1RDtnQkFDbEYsT0FBTyxFQUFFLE9BQU87YUFDakIsQ0FBQztZQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQ0ksQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWdELEVBQUUsS0FBZTtRQUNyRSxJQUFJLGNBQWMsR0FBUSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUMzRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLElBQUksdUJBQXVCLEdBQW9DO2dCQUM3RCxTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVM7Z0JBQzVDLE1BQU0sRUFBRSxFQUFFO2FBQ1gsQ0FBQztZQUVGLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxlQUFlLEVBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUE4QixFQUFFLEVBQUU7b0JBQy9ILElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0QsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUNJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBOEIsRUFBRSxFQUFFO29CQUN4RixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9ELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLGVBQWUsRUFBcUIsQ0FBQyxDQUFDO1lBQzVGLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBZTtRQUNwQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU1QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNwRyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDNUUsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQzlELENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLO0lBQ0wsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksaUJBQWlCLEdBQW9DO1lBQ3ZELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVM7WUFDdEMsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxzQkFBc0IsR0FBb0M7WUFDNUQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTO1lBQzNDLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksd0JBQXdCLEdBQW9DO1lBQzlELFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUztZQUM3QyxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDdkMsQ0FBQzs0RUE1ZlUsV0FBVyxxR0FlWixpQkFBaUI7dUVBZmhCLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COztzQkFnQkksTUFBTTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgNiBEZWMgMjAxOFxyXG5cclxuICBEZXNjcmlwdGlvbjpcclxuICAgIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgb2YsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNU0FMX0dVQVJEX0NPTkZJRywgTXNhbEJyb2FkY2FzdFNlcnZpY2UsIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24sIE1zYWxTZXJ2aWNlIH0gZnJvbSAnQGF6dXJlL21zYWwtYW5ndWxhcic7XHJcbmltcG9ydCB7IEFjY291bnRJbmZvLCBBdXRoZW50aWNhdGlvblJlc3VsdCwgRXZlbnRNZXNzYWdlLCBFdmVudFR5cGUsIElkVG9rZW5DbGFpbXMsIEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3IsXHJcbiAgSW50ZXJhY3Rpb25TdGF0dXMsIEludGVyYWN0aW9uVHlwZSwgUG9wdXBSZXF1ZXN0LCBQcm9tcHRWYWx1ZSwgUmVkaXJlY3RSZXF1ZXN0LCBTaWxlbnRSZXF1ZXN0LCBTc29TaWxlbnRSZXF1ZXN0XHJcbn0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlQmFzZSB9IGZyb20gJy4uLy4uL2RhdGEvYmFzZS9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hcHBjb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNU0FMUmVkaXJlY3QgfSBmcm9tICcuLi9yZWRpcmVjdCc7XHJcbmltcG9ydCB7IE1TQUxVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgTVNBTEIyQywgUG9saWN5VHlwZSB9IGZyb20gJy4uL2IyYyc7XHJcbmltcG9ydCB7IFFTVXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlJztcclxuXHJcbnR5cGUgSWRUb2tlbkNsYWltc1dpdGhQb2xpY3lJZCA9IElkVG9rZW5DbGFpbXMgJiB7XHJcbiAgYWNyPzogc3RyaW5nLFxyXG4gIHRmcD86IHN0cmluZyxcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIGV4dGVuZHMgQXBpU2VydmljZUJhc2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbXNhbERlc3Ryb3lpbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vQjJDIFBvbGljaWVzXHJcbiAgcHJpdmF0ZSBzaWduVXBTaWduSW5Qb2xpY3lcclxuICBwcml2YXRlIHNpZ25VcFBvbGljeTtcclxuICBwcml2YXRlIGVkaXRQcm9maWxlUG9saWN5O1xyXG4gIHByaXZhdGUgcmVzZXRQYXNzd29yZFBvbGljeTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFwcENvbnRleHQ6IEFwcENvbnRleHRTZXJ2aWNlLFxyXG5cclxuICAgIEBJbmplY3QoTVNBTF9HVUFSRF9DT05GSUcpXHJcbiAgICBwcml2YXRlIG1zYWxHdWFyZENvbmZpZzogTXNhbEd1YXJkQ29uZmlndXJhdGlvbixcclxuICAgIHByaXZhdGUgbXNhbFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtc2FsQnJvYWRjYXN0U2VydmljZTogTXNhbEJyb2FkY2FzdFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGh0dHApO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMubXNhbERlc3Ryb3lpbmckLm5leHQodW5kZWZpbmVkKTtcclxuICAgIHRoaXMubXNhbERlc3Ryb3lpbmckLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXQoKSB7XHJcbiAgICB0aGlzLnNldERlZmF1bHRzKCk7XHJcblxyXG4gICAgdGhpcy5tc2FsU2VydmljZS5pbml0aWFsaXplKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhgbXNhbC5hcHA6IGluaXRNU0FMIHN0YXJ0ZWRgKTtcclxuICAgICAgdGhpcy5pbml0TVNBTCgpO1xyXG4gICAgICBjb25zb2xlLmxvZyhgbXNhbC5hcHA6IGluaXRNU0FMIGZpbmlzaGVkYCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdHMoKSB7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlQUQvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL2Jsb2IvZGV2L3NhbXBsZXMvbXNhbC1hbmd1bGFyLXYzLXNhbXBsZXMvYW5ndWxhci1iMmMtc2FtcGxlLWFwcC9zcmMvYXBwL2FwcC5jb21wb25lbnQudHNcclxuXHJcbiAgICBUb2tlbiBWYWxpZGF0aW9uOlxyXG4gICAgICBodHRwczovL2p3dC5pb1xyXG5cclxuICAgIFRva2VuIHR5cGVzOlxyXG4gICAgICBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvYWN0aXZlLWRpcmVjdG9yeS1iMmMvdG9rZW5zLW92ZXJ2aWV3XHJcbiAgICAgIElEIHRva2VuIC0gQSBKV1QgdGhhdCBjb250YWlucyBjbGFpbXMgdGhhdCB5b3UgY2FuIHVzZSB0byBpZGVudGlmeSB1c2VycyBpbiB5b3VyIGFwcGxpY2F0aW9uXHJcbiAgICAgIEFjY2VzcyB0b2tlbiAtIEEgSldUIHRoYXQgY29udGFpbnMgY2xhaW1zIHRoYXQgeW91IGNhbiB1c2UgdG8gaWRlbnRpZnkgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnMgdG8geW91ciBBUElzLlxyXG4gICAgICAgICAgICAgICAgICAgICBBY2Nlc3MgdG9rZW5zIGFyZSBzaWduZWQsIGJ1dCB0aGV5IGFyZW4ndCBlbmNyeXB0ZWRcclxuICAgICAgUmVmcmVzaCB0b2tlbiAtIFJlZnJlc2ggdG9rZW5zIGFyZSB1c2VkIHRvIGFjcXVpcmUgbmV3IElEIHRva2VucyBhbmQgYWNjZXNzIHRva2VucyBpbiBhbiBPQXV0aCAyLjAgZmxvdy5cclxuICAqL1xyXG4gIHByaXZhdGUgaW5pdE1TQUwoKSB7XHJcbiAgICAvL0IyQ1xyXG4gICAgdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kgPSBNU0FMQjJDLmdldFBvbGljeUJ5VHlwZShQb2xpY3lUeXBlLnNpZ25VcFNpZ25Jbik7XHJcbiAgICB0aGlzLnNpZ25VcFBvbGljeSA9IE1TQUxCMkMuZ2V0UG9saWN5QnlUeXBlKFBvbGljeVR5cGUuc2lnblVwKTtcclxuICAgIHRoaXMuZWRpdFByb2ZpbGVQb2xpY3kgPSBNU0FMQjJDLmdldFBvbGljeUJ5VHlwZShQb2xpY3lUeXBlLmVkaXRQcm9maWxlKTtcclxuICAgIHRoaXMucmVzZXRQYXNzd29yZFBvbGljeSA9IE1TQUxCMkMuZ2V0UG9saWN5QnlUeXBlKFBvbGljeVR5cGUucmVzZXRQYXNzd29yZCk7XHJcblxyXG4gICAgdGhpcy5tc2FsU2VydmljZS5oYW5kbGVSZWRpcmVjdE9ic2VydmFibGUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzdWx0OiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBtc2FsLmFwcDogaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlYCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuZW5hYmxlQWNjb3VudFN0b3JhZ2VFdmVudHMoKTtcclxuICAgIHRoaXMubXNhbEJyb2FkY2FzdFNlcnZpY2UubXNhbFN1YmplY3QkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChtc2c6IEV2ZW50TWVzc2FnZSkgPT5cclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5JTklUSUFMSVpFX0VORCB8fFxyXG5cclxuICAgICAgICAgIC8vQUNDT1VOVF9BRERFRCBhbmQgQUNDT1VOVF9SRU1PVkVEIGV2ZW50cyBlbWl0dGVkIHdoZW4gYSB1c2VyIGxvZ3MgaW4gb3Igb3V0IG9mIGFub3RoZXIgdGFiIG9yIHdpbmRvd1xyXG4gICAgICAgICAgbXNnLmV2ZW50VHlwZSA9PT0gRXZlbnRUeXBlLkFDQ09VTlRfQURERUQgfHxcclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5BQ0NPVU5UX1JFTU9WRUQgfHxcclxuXHJcbiAgICAgICAgICAvL0xvZ2luIEZhaWx1cmVcclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5MT0dJTl9GQUlMVVJFIHx8XHJcbiAgICAgICAgICBtc2cuZXZlbnRUeXBlID09PSBFdmVudFR5cGUuQUNRVUlSRV9UT0tFTl9GQUlMVVJFIHx8XHJcblxyXG4gICAgICAgICAgLy9Mb2dPdXRcclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5MT0dPVVRfU1VDQ0VTUyB8fFxyXG5cclxuICAgICAgICAgIC8vTG9nSW5cclxuICAgICAgICAgIG1zZy5ldmVudFR5cGUgPT09IEV2ZW50VHlwZS5MT0dJTl9TVUNDRVNTIHx8XHJcbiAgICAgICAgICBtc2cuZXZlbnRUeXBlID09PSBFdmVudFR5cGUuQUNRVUlSRV9UT0tFTl9TVUNDRVNTIHx8XHJcbiAgICAgICAgICBtc2cuZXZlbnRUeXBlID09PSBFdmVudFR5cGUuU1NPX1NJTEVOVF9TVUNDRVNTXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5tc2FsRGVzdHJveWluZyQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgobXNnOiBFdmVudE1lc3NhZ2UpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKG1zZy5ldmVudFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLklOSVRJQUxJWkVfRU5EOlxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgbXNhbC5hcHA6IElOSVRJQUxJWkVfRU5EIGZpcmVkYCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLkFDQ09VTlRfQURERUQ6XHJcbiAgICAgICAgICBjYXNlIEV2ZW50VHlwZS5BQ0NPVU5UX1JFTU9WRUQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lID0gXCIvXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBFdmVudFR5cGUuTE9HSU5fRkFJTFVSRTpcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLkFDUVVJUkVfVE9LRU5fRkFJTFVSRTpcclxuICAgICAgICAgICAgaWYgKCFNU0FMVXRpbHMuaXNCMkMoKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9DaGVjayBmb3IgZm9yZ290IHBhc3N3b3JkIGVycm9yLiBMZWFybiBtb3JlIGFib3V0IEFBRCBlcnJvciBjb2RlcyBhdFxyXG4gICAgICAgICAgICAvL2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2FjdGl2ZS1kaXJlY3RvcnkvZGV2ZWxvcC9yZWZlcmVuY2UtYWFkc3RzLWVycm9yLWNvZGVzXHJcbiAgICAgICAgICAgIGlmIChtc2cuZXJyb3IgJiYgbXNnLmVycm9yLm1lc3NhZ2UuaW5kZXhPZignQUFEQjJDOTAxMTgnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHJlc2V0UGFzc3dvcmRGbG93UmVxdWVzdDogUmVkaXJlY3RSZXF1ZXN0IHwgUG9wdXBSZXF1ZXN0ICA9IHtcclxuICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5OiB0aGlzLnJlc2V0UGFzc3dvcmRQb2xpY3kuYXV0aG9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICBzY29wZXM6IFtdLFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubG9naW4ocmVzZXRQYXNzd29yZEZsb3dSZXF1ZXN0KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBFdmVudFR5cGUuTE9HT1VUX1NVQ0NFU1M6XHJcbiAgICAgICAgICAgIHRoaXMuYXBwQ29udGV4dC5jbGVhcldlYlN0b3JhZ2UoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBFdmVudFR5cGUuTE9HSU5fU1VDQ0VTUzpcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLkFDUVVJUkVfVE9LRU5fU1VDQ0VTUzpcclxuICAgICAgICAgIGNhc2UgRXZlbnRUeXBlLlNTT19TSUxFTlRfU1VDQ0VTUzpcclxuICAgICAgICAgICAgbGV0IHBheWxvYWQgPSBtc2cucGF5bG9hZCBhcyBBdXRoZW50aWNhdGlvblJlc3VsdDtcclxuICAgICAgICAgICAgaWYgKCFwYXlsb2FkKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIU1TQUxVdGlscy5pc0IyQygpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5zZXRBY3RpdmVBY2NvdW50KHBheWxvYWQuYWNjb3VudCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL0IyQ1xyXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBwYXlsb2FkLmlkVG9rZW5DbGFpbXMgYXMgSWRUb2tlbkNsYWltc1dpdGhQb2xpY3lJZFxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIHNpZ25VcFNpZ25JblxyXG4gICAgICAgICAgICAgKlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKHRva2VuLmFjciA9PT0gdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kubmFtZSB8fCB0b2tlbi50ZnAgPT09IHRoaXMuc2lnblVwU2lnbkluUG9saWN5Lm5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocGF5bG9hZC5hY2NvdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIHNpZ25VcFBvbGljeVxyXG4gICAgICAgICAgICAgKlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKHRva2VuLmFjciA9PT0gdGhpcy5zaWduVXBQb2xpY3kubmFtZSB8fCB0b2tlbi50ZnAgPT09IHRoaXMuc2lnblVwUG9saWN5Lm5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocGF5bG9hZC5hY2NvdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIGVkaXRQcm9maWxlXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIEZvciB0aGUgcHVycG9zZSBvZiBzZXR0aW5nIGFuIGFjdGl2ZSBhY2NvdW50IGZvciBVSSB1cGRhdGUsIHdlIHdhbnQgdG8gY29uc2lkZXIgb25seSB0aGUgYXV0aCByZXNwb25zZSByZXN1bHRpbmdcclxuICAgICAgICAgICAgICogZnJvbSBTVVNJIGZsb3cuIFwiYWNyXCIgY2xhaW0gaW4gdGhlIGlkIHRva2VuIHRlbGxzIHVzIHRoZSBwb2xpY3kgKE5PVEU6IG5ld2VyIHBvbGljaWVzIG1heSB1c2UgdGhlIFwidGZwXCIgY2xhaW0gaW5zdGVhZCkuXHJcbiAgICAgICAgICAgICAqIFRvIGxlYXJuIG1vcmUgYWJvdXQgQjJDIHRva2VucywgdmlzaXQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvYWN0aXZlLWRpcmVjdG9yeS1iMmMvdG9rZW5zLW92ZXJ2aWV3XHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAodG9rZW4uYWNyID09PSB0aGlzLmVkaXRQcm9maWxlUG9saWN5Lm5hbWUgfHwgdG9rZW4udGZwID09PSB0aGlzLmVkaXRQcm9maWxlUG9saWN5Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgY29uc3Qgc2lnbkluQWNjb3VudCA9IHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKS5maW5kKChhY2NvdW50OiBBY2NvdW50SW5mbykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50LmlkVG9rZW5DbGFpbXM/Lm9pZCA9PT0gdG9rZW4ub2lkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5pZFRva2VuQ2xhaW1zPy5zdWIgPT09IHRva2VuLnN1YiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgoYWNjb3VudC5pZFRva2VuQ2xhaW1zIGFzIElkVG9rZW5DbGFpbXNXaXRoUG9saWN5SWQpLmFjciA9PT0gdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kubmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjb3VudC5pZFRva2VuQ2xhaW1zIGFzIElkVG9rZW5DbGFpbXNXaXRoUG9saWN5SWQpLnRmcCA9PT0gdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kubmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuZm9yY2VSZWF1dGhlbnRpY2F0ZShzaWduSW5BY2NvdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIHJlc2V0UGFzc3dvcmRcclxuICAgICAgICAgICAgICpcclxuICAgICAgICAgICAgICogQmVsb3cgd2UgYXJlIGNoZWNraW5nIGlmIHRoZSB1c2VyIGlzIHJldHVybmluZyBmcm9tIHRoZSByZXNldCBwYXNzd29yZCBmbG93LlxyXG4gICAgICAgICAgICAgKiBJZiBzbywgd2Ugd2lsbCBhc2sgdGhlIHVzZXIgdG8gcmVhdXRoZW50aWNhdGUgd2l0aCB0aGVpciBuZXcgcGFzc3dvcmQuXHJcbiAgICAgICAgICAgICAqIElmIHlvdSBkbyBub3Qgd2FudCB0aGlzIGJlaGF2aW9yIGFuZCBwcmVmZXIgeW91ciB1c2VycyB0byBzdGF5IHNpZ25lZCBpbiBpbnN0ZWFkLFxyXG4gICAgICAgICAgICAgKiB5b3UgY2FuIHJlcGxhY2UgdGhlIGNvZGUgYmVsb3cgd2l0aCB0aGUgc2FtZSBwYXR0ZXJuIHVzZWQgZm9yIGhhbmRsaW5nIHRoZSByZXR1cm4gZnJvbVxyXG4gICAgICAgICAgICAgKiBwcm9maWxlIGVkaXQgZmxvd1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKHRva2VuLmFjciA9PT0gdGhpcy5yZXNldFBhc3N3b3JkUG9saWN5Lm5hbWUgfHwgdG9rZW4udGZwID09PSB0aGlzLnJlc2V0UGFzc3dvcmRQb2xpY3kubmFtZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9yY2VSZWF1dGhlbnRpY2F0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMubXNhbEJyb2FkY2FzdFNlcnZpY2UuaW5Qcm9ncmVzcyQucGlwZShcclxuICAgICAgICBmaWx0ZXIoKHN0YXR1czogSW50ZXJhY3Rpb25TdGF0dXMpID0+XHJcbiAgICAgICAgICBzdGF0dXMgPT09IEludGVyYWN0aW9uU3RhdHVzLlN0YXJ0dXAgfHxcclxuICAgICAgICAgIHN0YXR1cyA9PT0gSW50ZXJhY3Rpb25TdGF0dXMuTm9uZVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubXNhbERlc3Ryb3lpbmckKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogSW50ZXJhY3Rpb25TdGF0dXMpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xyXG4gICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgKiBJbml0aWFsIHN0YXR1cyBiZWZvcmUgaW50ZXJhY3Rpb24gb2NjdXJzXHJcbiAgICAgICAgICAgKi9cclxuICAgICAgICAgIGNhc2UgSW50ZXJhY3Rpb25TdGF0dXMuU3RhcnR1cDpcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYG1zYWwuYXBwOiBJbnRlcmFjdGlvblN0YXR1cy5TdGFydHVwYCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgKiBTdGF0dXMgc2V0IHdoZW4gaW50ZXJhY3Rpb24gaXMgY29tcGxldGVcclxuICAgICAgICAgICovXHJcbiAgICAgICAgICBjYXNlIEludGVyYWN0aW9uU3RhdHVzLk5vbmU6XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBtc2FsLmFwcDogSW50ZXJhY3Rpb25TdGF0dXMuTm9uZWApO1xyXG5cclxuICAgICAgICAgICAgTVNBTFJlZGlyZWN0LmhhbmRsZSh0aGlzLnJvdXRlciwgJ21zYWxCcm9hZGNhc3RTZXJ2aWNlLmluUHJvZ3Jlc3MkIEludGVyYWN0aW9uU3RhdHVzLk5vbmUnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tBbmRTZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwQ29udGV4dC51cGRhdGVDdXJyZW50KCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQW5kU2V0QWN0aXZlQWNjb3VudCgpIHtcclxuICAgIGxldCBhY3RpdmVBY2NvdW50ID0gdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5nZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgICBsZXQgYWNjb3VudHMgPSB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCk7XHJcblxyXG4gICAgaWYgKCFhY3RpdmVBY2NvdW50ICYmIGFjY291bnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5zZXRBY3RpdmVBY2NvdW50KGFjY291bnRzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNQb3B1cChwb3B1cD86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0eXBlb2YgcG9wdXAgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXNhbEd1YXJkQ29uZmlnLmludGVyYWN0aW9uVHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlLlBvcHVwO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwb3B1cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWNxdWlyZVRva2VuKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBsZXQgcmVxdWVzdCA9IHtcclxuICAgICAgc2NvcGVzOiBNU0FMVXRpbHMuZ2V0QXBpU2NvcGVzKClcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1BvcHVwKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXNhbFNlcnZpY2UuYWNxdWlyZVRva2VuUG9wdXAocmVxdWVzdCkucGlwZShcclxuICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlID8gcmVzcG9uc2UuYWNjZXNzVG9rZW4gOiBudWxsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXNhbFNlcnZpY2UuYWNxdWlyZVRva2VuUmVkaXJlY3QocmVxdWVzdCkucGlwZShcclxuICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFB1YmxpYyBmdW5jc1xyXG4gIGdldEFjdGl2ZUFjY291bnQoKTogQWNjb3VudEluZm8gfCBudWxsIHtcclxuICAgIHRoaXMuY2hlY2tBbmRTZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgICByZXR1cm4gdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5nZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRW1haWwoKSB7XHJcbiAgICBsZXQgY3VycmVudFVzZXIgPSB0aGlzLmFwcENvbnRleHQuY3VycmVudFVzZXI7XHJcbiAgICBsZXQgYWN0aXZlQWNjb3VudCA9IHRoaXMuZ2V0QWN0aXZlQWNjb3VudCgpO1xyXG5cclxuICAgIGlmIChhY3RpdmVBY2NvdW50KSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmVBY2NvdW50LnVzZXJuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjdXJyZW50VXNlciA/IGN1cnJlbnRVc2VyLkVtYWlsIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyTmFtZSgpIHtcclxuICAgIGxldCBjdXJyZW50VXNlciA9IHRoaXMuYXBwQ29udGV4dC5jdXJyZW50VXNlcjtcclxuICAgIGxldCBhY3RpdmVBY2NvdW50ID0gdGhpcy5nZXRBY3RpdmVBY2NvdW50KCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZUFjY291bnQpIHtcclxuICAgICAgcmV0dXJuIGFjdGl2ZUFjY291bnQubmFtZSA/IGFjdGl2ZUFjY291bnQubmFtZSA6IGN1cnJlbnRVc2VyID8gY3VycmVudFVzZXIuZGlzcGxheU5hbWVPckZ1bGxOYW1lIDogJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnRVc2VyID8gY3VycmVudFVzZXIuZGlzcGxheU5hbWVPckZ1bGxOYW1lIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRBY2Nlc3NUb2tlbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgLy8xLiBDaGVjayBTU09cclxuICAgIC8qXHJcbiAgICAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9lbnRyYS9pZGVudGl0eS1wbGF0Zm9ybS9tc2FsLWpzLXNzb1xyXG4gICAgKi9cclxuICAgIGxldCBzc28gPSBsb2NhdGlvbi5zZWFyY2guaW5kZXhPZihcImE9c3NvXCIpID4gLTE7XHJcbiAgICBpZiAoc3NvKSB7XHJcbiAgICAgIGxldCBsb2dpbiA9IFFTVXRpbHMuZ2V0VmFsdWVCeU5hbWUoXCJsb2dpblwiKTtcclxuICAgICAgbGV0IHNpZCA9IFFTVXRpbHMuZ2V0VmFsdWVCeU5hbWUoXCJzaWRcIik7XHJcbiAgICAgIGxldCBzc29TaWxlbnRSZXF1ZXN0OiBTc29TaWxlbnRSZXF1ZXN0O1xyXG5cclxuICAgICAgaWYgKGxvZ2luKSB7XHJcbiAgICAgICAgc3NvU2lsZW50UmVxdWVzdCA9IHtcclxuICAgICAgICAgIHNjb3BlczogTVNBTFV0aWxzLmdldEFwaVNjb3BlcygpLFxyXG4gICAgICAgICAgbG9naW5IaW50OiBsb2dpblxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoc2lkKSB7XHJcbiAgICAgICAgc3NvU2lsZW50UmVxdWVzdCA9IHtcclxuICAgICAgICAgIHNjb3BlczogTVNBTFV0aWxzLmdldEFwaVNjb3BlcygpLFxyXG4gICAgICAgICAgc2lkOiBzaWRcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIlNTTyBpbiBwcm9ncmVzcy4uLlwiKTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLm1zYWxTZXJ2aWNlLnNzb1NpbGVudChzc29TaWxlbnRSZXF1ZXN0KS5waXBlKFxyXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYWNjZXNzVG9rZW47XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlNpbGVudCB0b2tlbiBhY3F1aXNpdGlvbiBmYWlscy5cIik7XHJcblxyXG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hY3F1aXJlVG9rZW4oKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLzIuIGlmIGlzVXNlckF1dGhlbnRpY2F0ZWRcclxuICAgIGxldCBhY3RpdmVBY2NvdW50ID0gdGhpcy5nZXRBY3RpdmVBY2NvdW50KCk7XHJcbiAgICBpZiAoYWN0aXZlQWNjb3VudCkge1xyXG4gICAgICBsZXQgc2lsZW50UmVxdWVzdDogU2lsZW50UmVxdWVzdCA9IHtcclxuICAgICAgICBzY29wZXM6IE1TQUxVdGlscy5nZXRBcGlTY29wZXMoKSxcclxuICAgICAgICBhY2NvdW50OiBhY3RpdmVBY2NvdW50XHJcbiAgICAgIH07XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5tc2FsU2VydmljZS5hY3F1aXJlVG9rZW5TaWxlbnQoc2lsZW50UmVxdWVzdCkucGlwZShcclxuICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmFjY2Vzc1Rva2VuO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJTaWxlbnQgdG9rZW4gYWNxdWlzaXRpb24gZmFpbHMuXCIpO1xyXG5cclxuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNxdWlyZVRva2VuKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYWNxdWlyZVRva2VuKCk7XHJcbiAgfVxyXG5cclxuICBmb3JjZVJlYXV0aGVudGljYXRlKGFjY291bnQ/KSB7XHJcbiAgICBpZiAoTVNBTFV0aWxzLmlzQjJDKCkpIHtcclxuICAgICAgbGV0IHNpZ25VcFNpZ25JbkZsb3dSZXF1ZXN0OiBSZWRpcmVjdFJlcXVlc3QgfCBQb3B1cFJlcXVlc3QgID0ge1xyXG4gICAgICAgIGF1dGhvcml0eTogdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kuYXV0aG9yaXR5LFxyXG4gICAgICAgIHNjb3BlczogW10sXHJcbiAgICAgICAgcHJvbXB0OiBQcm9tcHRWYWx1ZS5MT0dJTiwgLy8gZm9yY2UgdXNlciB0byByZWF1dGhlbnRpY2F0ZSB3aXRoIHRoZWlyIG5ldyBwYXNzd29yZFxyXG4gICAgICAgIGFjY291bnQ6IGFjY291bnRcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMubG9naW4oc2lnblVwU2lnbkluRmxvd1JlcXVlc3QpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2dpbih1c2VyRmxvd1JlcXVlc3Q/OiBSZWRpcmVjdFJlcXVlc3QgfCBQb3B1cFJlcXVlc3QsIHBvcHVwPzogYm9vbGVhbikge1xyXG4gICAgbGV0IGF1dGhSZXF1ZXN0Q2ZnOiBhbnkgPSB0aGlzLm1zYWxHdWFyZENvbmZpZy5hdXRoUmVxdWVzdDtcclxuICAgIGxldCBhdXRoUmVxdWVzdCA9IG51bGw7XHJcblxyXG4gICAgaWYgKCF1c2VyRmxvd1JlcXVlc3QpIHtcclxuICAgICAgbGV0IHNpZ25VcFNpZ25JbkZsb3dSZXF1ZXN0OiBSZWRpcmVjdFJlcXVlc3QgfCBQb3B1cFJlcXVlc3QgID0ge1xyXG4gICAgICAgIGF1dGhvcml0eTogdGhpcy5zaWduVXBTaWduSW5Qb2xpY3kuYXV0aG9yaXR5LFxyXG4gICAgICAgIHNjb3BlczogW11cclxuICAgICAgfTtcclxuXHJcbiAgICAgIHVzZXJGbG93UmVxdWVzdCA9IHNpZ25VcFNpZ25JbkZsb3dSZXF1ZXN0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdXRoUmVxdWVzdENmZykge1xyXG4gICAgICBhdXRoUmVxdWVzdCA9IGF1dGhSZXF1ZXN0Q2ZnKHRoaXMubXNhbFNlcnZpY2UsIHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1BvcHVwKHBvcHVwKSkge1xyXG4gICAgICBpZiAoYXV0aFJlcXVlc3QpIHtcclxuICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmxvZ2luUG9wdXAoeyAuLi5hdXRoUmVxdWVzdCwgLi4udXNlckZsb3dSZXF1ZXN0IH0gYXMgUG9wdXBSZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZS5zZXRBY3RpdmVBY2NvdW50KHJlc3BvbnNlLmFjY291bnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubXNhbFNlcnZpY2UubG9naW5Qb3B1cCh1c2VyRmxvd1JlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2U6IEF1dGhlbnRpY2F0aW9uUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocmVzcG9uc2UuYWNjb3VudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoYXV0aFJlcXVlc3QpIHtcclxuICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmxvZ2luUmVkaXJlY3QoeyAuLi5hdXRoUmVxdWVzdCwgLi4udXNlckZsb3dSZXF1ZXN0IH0gYXMgUmVkaXJlY3RSZXF1ZXN0KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmxvZ2luUmVkaXJlY3QodXNlckZsb3dSZXF1ZXN0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9nb3V0KHBvcHVwPzogYm9vbGVhbikge1xyXG4gICAgbGV0IGFjdGl2ZUFjY291bnQgPSB0aGlzLmdldEFjdGl2ZUFjY291bnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1BvcHVwKHBvcHVwKSkge1xyXG4gICAgICBpZiAoYWN0aXZlQWNjb3VudCkge1xyXG4gICAgICAgIHRoaXMubXNhbFNlcnZpY2UubG9nb3V0UG9wdXAoeyBhY2NvdW50OiBhY3RpdmVBY2NvdW50LCBtYWluV2luZG93UmVkaXJlY3RVcmk6IFwiL1wiIH0pLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dvdXRQb3B1cCh7IG1haW5XaW5kb3dSZWRpcmVjdFVyaTogXCIvXCIgfSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChhY3RpdmVBY2NvdW50KSB7XHJcbiAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dvdXRSZWRpcmVjdCh7IGFjY291bnQ6IGFjdGl2ZUFjY291bnQgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dvdXRSZWRpcmVjdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1VzZXJBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWN0aXZlQWNjb3VudCgpICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBpc1VzZXJTaWduZWRJbigpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5pc1VzZXJBdXRoZW50aWNhdGVkKCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFwcENvbnRleHQuY3VycmVudC5pc1VzZXJTaWduZWRJbiAmJiB0aGlzLmFwcENvbnRleHQuY3VycmVudFVzZXIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNVc2VyQWRtaW4oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuaXNVc2VyU2lnbmVkSW4oKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXBwQ29udGV4dC5jdXJyZW50LmlzVXNlckFkbWluO1xyXG4gIH1cclxuXHJcbiAgLy9CMkNcclxuICBzaWduVXAoKSB7XHJcbiAgICBpZiAoIU1TQUxVdGlscy5pc0IyQygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2lnblVwRmxvd1JlcXVlc3Q6IFJlZGlyZWN0UmVxdWVzdCB8IFBvcHVwUmVxdWVzdCAgPSB7XHJcbiAgICAgIGF1dGhvcml0eTogdGhpcy5zaWduVXBQb2xpY3kuYXV0aG9yaXR5LFxyXG4gICAgICBzY29wZXM6IFtdXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMubG9naW4oc2lnblVwRmxvd1JlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgZWRpdFByb2ZpbGUoKSB7XHJcbiAgICBpZiAoIU1TQUxVdGlscy5pc0IyQygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZWRpdFByb2ZpbGVGbG93UmVxdWVzdDogUmVkaXJlY3RSZXF1ZXN0IHwgUG9wdXBSZXF1ZXN0ICA9IHtcclxuICAgICAgYXV0aG9yaXR5OiB0aGlzLmVkaXRQcm9maWxlUG9saWN5LmF1dGhvcml0eSxcclxuICAgICAgc2NvcGVzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmxvZ2luKGVkaXRQcm9maWxlRmxvd1JlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRQYXNzd29yZCgpIHtcclxuICAgIGlmICghTVNBTFV0aWxzLmlzQjJDKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXNldFBhc3N3b3JkRmxvd1JlcXVlc3Q6IFJlZGlyZWN0UmVxdWVzdCB8IFBvcHVwUmVxdWVzdCAgPSB7XHJcbiAgICAgIGF1dGhvcml0eTogdGhpcy5yZXNldFBhc3N3b3JkUG9saWN5LmF1dGhvcml0eSxcclxuICAgICAgc2NvcGVzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmxvZ2luKHJlc2V0UGFzc3dvcmRGbG93UmVxdWVzdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1337,7 +1337,7 @@ class AuthService extends ApiServiceBase {
|
|
|
1337
1337
|
/*
|
|
1338
1338
|
https://learn.microsoft.com/en-us/entra/identity-platform/msal-js-sso
|
|
1339
1339
|
*/
|
|
1340
|
-
let sso = location.
|
|
1340
|
+
let sso = location.search.indexOf("a=sso") > -1;
|
|
1341
1341
|
if (sso) {
|
|
1342
1342
|
let login = QSUtils.getValueByName("login");
|
|
1343
1343
|
let sid = QSUtils.getValueByName("sid");
|