adb-shared 6.0.32 → 6.0.34

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.
@@ -3,8 +3,9 @@ export const ADB_USER_SERVICE_CONFIG = new InjectionToken('ADB_DATA_SERVICE_CONF
3
3
  export const DEFAULT_ADB_USER_SERVICE_CONFIG = {
4
4
  scope: 'roles profile email',
5
5
  idleTime: 30,
6
+ autoLogin: false,
6
7
  response_type: 'code',
7
8
  overrideIssuer: false,
8
9
  log: false
9
10
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXItc2VydmljZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYWRiLXVzZXItc2VydmljZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWMvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBdUIseUJBQXlCLENBQUMsQ0FBQztBQUMzRyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRztJQUMzQyxLQUFLLEVBQUUscUJBQXFCO0lBQzVCLFFBQVEsRUFBRSxFQUFFO0lBQ1osYUFBYSxFQUFFLE1BQU07SUFDckIsY0FBYyxFQUFFLEtBQUs7SUFDckIsR0FBRyxFQUFFLEtBQUs7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gYWRiLXNlcnZpY2VzL2FkYi1kYXRhLXNlcnZpY2UtY29uZmlnLnRzXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWRiVXNlclNlcnZpY2VDb25maWcge1xyXG4gICAgcmVkaXJlY3RVcmw6IHN0cmluZztcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICBpc3N1ZXI6IHN0cmluZztcclxuICAgIHNjb3BlPzogc3RyaW5nO1xyXG4gICAgcmVzcG9uc2VUeXBlPzogc3RyaW5nO1xyXG4gICAgaWRsZVRpbWU/OiBudW1iZXI7XHJcbiAgICBwb3N0TG9nb3V0VXJsPzogc3RyaW5nO1xyXG4gICAgb3ZlcnJpZGVJc3N1ZXI/OiBib29sZWFuLFxyXG4gICAgbG9nPzogYm9vbGVhblxyXG59XHJcbmV4cG9ydCBjb25zdCBBREJfVVNFUl9TRVJWSUNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBZGJVc2VyU2VydmljZUNvbmZpZz4oJ0FEQl9EQVRBX1NFUlZJQ0VfQ09ORklHJyk7XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0FEQl9VU0VSX1NFUlZJQ0VfQ09ORklHID0ge1xyXG4gICAgc2NvcGU6ICdyb2xlcyBwcm9maWxlIGVtYWlsJyxcclxuICAgIGlkbGVUaW1lOiAzMCxcclxuICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcclxuICAgIG92ZXJyaWRlSXNzdWVyOiBmYWxzZSxcclxuICAgIGxvZzogZmFsc2VcclxufTtcclxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXItc2VydmljZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYWRiLXVzZXItc2VydmljZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWUvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBdUIseUJBQXlCLENBQUMsQ0FBQztBQUMzRyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRztJQUMzQyxLQUFLLEVBQUUscUJBQXFCO0lBQzVCLFFBQVEsRUFBRSxFQUFFO0lBQ1osU0FBUyxFQUFFLEtBQUs7SUFDaEIsYUFBYSxFQUFFLE1BQU07SUFDckIsY0FBYyxFQUFFLEtBQUs7SUFDckIsR0FBRyxFQUFFLEtBQUs7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gYWRiLXNlcnZpY2VzL2FkYi1kYXRhLXNlcnZpY2UtY29uZmlnLnRzXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWRiVXNlclNlcnZpY2VDb25maWcge1xyXG4gICAgcmVkaXJlY3RVcmw6IHN0cmluZztcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICBpc3N1ZXI6IHN0cmluZztcclxuICAgIHNjb3BlPzogc3RyaW5nO1xyXG4gICAgcmVzcG9uc2VUeXBlPzogc3RyaW5nO1xyXG4gICAgaWRsZVRpbWU/OiBudW1iZXI7XHJcbiAgICBhdXRvTG9naW4/OiBib29sZWFuO1xyXG4gICAgcG9zdExvZ291dFVybD86IHN0cmluZztcclxuICAgIG92ZXJyaWRlSXNzdWVyPzogYm9vbGVhbixcclxuICAgIGxvZz86IGJvb2xlYW5cclxufVxyXG5leHBvcnQgY29uc3QgQURCX1VTRVJfU0VSVklDRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48QWRiVXNlclNlcnZpY2VDb25maWc+KCdBREJfREFUQV9TRVJWSUNFX0NPTkZJRycpO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9BREJfVVNFUl9TRVJWSUNFX0NPTkZJRyA9IHtcclxuICAgIHNjb3BlOiAncm9sZXMgcHJvZmlsZSBlbWFpbCcsXHJcbiAgICBpZGxlVGltZTogMzAsXHJcbiAgICBhdXRvTG9naW46IGZhbHNlLFxyXG4gICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxyXG4gICAgb3ZlcnJpZGVJc3N1ZXI6IGZhbHNlLFxyXG4gICAgbG9nOiBmYWxzZVxyXG59O1xyXG4iXX0=
@@ -26,6 +26,15 @@ export class AdbUserService {
26
26
  this.userSubject.next(user);
27
27
  this.startMainLoop();
28
28
  }
29
+ else if (this.config.autoLogin) {
30
+ //NOTE: Avoid re-triggering login if we're in the middle of the auth-callback handling
31
+ const urlParams = new URLSearchParams(window.location.search);
32
+ if (urlParams.has('code')) {
33
+ this.log('Detected auth callback, skipping init login.');
34
+ return;
35
+ }
36
+ this.login();
37
+ }
29
38
  }
30
39
  startMainLoop() {
31
40
  this.checkStatus();
@@ -185,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
185
194
  type: Inject,
186
195
  args: [ADB_USER_SERVICE_CONFIG]
187
196
  }] }, { type: i1.HttpClient }, { type: i2.Router }] });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFLdkQsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFDMEMsTUFBNEIsRUFDNUQsSUFBZ0IsRUFDaEIsTUFBYztRQUZrQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1RCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFYaEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQXlCLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzNFLFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFNakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0s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QUM7Z0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRCxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7aUlBN0xVLGNBQWMsa0JBV2YsdUJBQXVCO3FJQVh0QixjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFZTixNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFEQl9VU0VSX1NFUlZJQ0VfQ09ORklHLCBBZGJVc2VyU2VydmljZUNvbmZpZyB9IGZyb20gJy4vYWRiLXVzZXItc2VydmljZS1jb25maWcnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgYWRkU2Vjb25kcywgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBVc2VyTW9kdWxlQ29uc3RhbnRzIH0gZnJvbSAnLi91c2VyLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWRiVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSB1c2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgdXNlciQgPSB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBsYXN0UmVmcmVzaFRpbWUgPSAwO1xyXG4gIGludGVydmFsSWQ6IGFueTtcclxuICBoYXNFbWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChBREJfVVNFUl9TRVJWSUNFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQWRiVXNlclNlcnZpY2VDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4ueyBzY29wZTogJ3JvbGVzJywgaWRsZVRpbWU6IDMwLCByZXNwb25zZV90eXBlOiAnY29kZScgfSwgLi4uY29uZmlnIH07XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOKTtcclxuICAgIGlmIChhY2Nlc3NUb2tlbikge1xyXG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG4gICAgICB0aGlzLnN0YXJ0TWFpbkxvb3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0TWFpbkxvb3AoKSB7XHJcbiAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XHJcbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmNoZWNrU3RhdHVzKCksIDYwICogMTAwMCk7IC8vIDYwIHNlY29uZHMgKiAxMDAwIG1pbGxpc2Vjb25kc1xyXG4gIH1cclxuXHJcbiAgbG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZygndXJsIHdoZW4gbG9naW4nLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNVUlJFTlRfVVJMLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgdGhpcy5hdXRob3JpemUoKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgIHRoaXMuaGFzRW1pdHRlZCA9IGZhbHNlO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuaXNzdWVyfS9jb25uZWN0L2VuZHNlc3Npb24/cG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSR7dGhpcy5jb25maWcucG9zdExvZ291dFVybH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1N0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKCdjaGVja1N0YXR1cyBydW5zJylcclxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgdGhpcy5sb2coJ2hhcyBhY2Nlc3N0b2tlbicpXHJcbiAgICAgIGNvbnN0IHRpbWVUb0xpdmUgPSB0aGlzLmdldFRva2VuVGltZVRvTGl2ZSgpO1xyXG4gICAgICB0aGlzLmxvZygndGltZVRvTGl2ZScsIHRpbWVUb0xpdmUpXHJcbiAgICAgIGlmICh0aW1lVG9MaXZlID09PSAwKSB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICAgICAgdGhpcy5hdXRob3JpemUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRUb2tlblRpbWVUb0xpdmUoKSA8PSA2MCAmJiB0aGlzLmhhc1VzZXJCZWVuQWN0aXZlKCkgJiYgdGhpcy5jYW5SZWZyZXNoVG9rZW4oKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3Rva2VuIGlzIGFib3V0IHRvIHRpbWVvdXQgYnV0IHdlIHdpbGwgcmVmcmVzaCBpdCBiZWNhdXNlIHVzZXIgaGFzIGJlZW4gYWN0aXZlIHRoZSBsYXN0IDVtaW51dGVzJyk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvZygnaGFzRW1pdHRlZCcsIHRoaXMuaGFzRW1pdHRlZCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0VtaXR0ZWQpIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldFVzZXIoYWNjZXNzVG9rZW4pO1xyXG4gICAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbWl0dGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgY29uc3QgYm9keSA9IGBjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5jb25maWcuY2xpZW50SWQpfSZgICtcclxuICAgICAgYGdyYW50X3R5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoXCJyZWZyZXNoX3Rva2VuXCIpfSZgICtcclxuICAgICAgYHJlZnJlc2hfdG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlJFRlJFU0hfVE9LRU4pKX1gO1xyXG4gICAgdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmNvbmZpZy5pc3N1ZXJ9L2Nvbm5lY3QvdG9rZW5gLCBib2R5LCB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9KSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbnNJblNlc3Npb24ocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gRGF0ZS5ub3coKTtcclxuICB9XHJcblxyXG4gIHNldFRva2Vuc0luU2Vzc2lvbihwYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHBhcmFtcy5yZWZyZXNoX3Rva2VuKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5SRUZSRVNIX1RPS0VOLCBwYXJhbXMucmVmcmVzaF90b2tlbik7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOLCBwYXJhbXMuYWNjZXNzX3Rva2VuKTtcclxuICAgIH1cclxuICAgIGlmIChwYXJhbXMuZXhwaXJlc19pbikge1xyXG4gICAgICBjb25zdCBleHBpcmVUaW1lID0gYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCBwYXJhbXMuZXhwaXJlc19pbik7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5UT0tFTl9FWFBJUkVTLCBmb3JtYXQoZXhwaXJlVGltZSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGF1dGhvcml6ZSgpIHtcclxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IEFycmF5LmZyb20oY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSg2NCkpLCBieXRlID0+XHJcbiAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSdbKGJ5dGUgYXMgbnVtYmVyKSAlIDYyXVxyXG4gICAgKS5qb2luKCcnKTtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5DT0RFX1ZFUklGSUVSLCBjb2RlVmVyaWZpZXIpO1xyXG5cclxuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcclxuICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShjb2RlVmVyaWZpZXIpO1xyXG4gICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XHJcbiAgICBjb25zdCBoYXNoQXJyYXkgPSBuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKTtcclxuICAgIGxldCBjb2RlQ2hhbGxlbmdlID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmhhc2hBcnJheSkpO1xyXG4gICAgY29kZUNoYWxsZW5nZSA9IGNvZGVDaGFsbGVuZ2UucmVwbGFjZSgvPS9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXHJcbiAgICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKTtcclxuXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIHJlc3BvbnNlX3R5cGU6IHRoaXMuY29uZmlnLnJlc3BvbnNlVHlwZSxcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLmNvbmZpZy5yZWRpcmVjdFVybCxcclxuICAgICAgc2NvcGU6IHRoaXMuY29uZmlnLnNjb3BlLFxyXG4gICAgICBjb2RlX2NoYWxsZW5nZTogY29kZUNoYWxsZW5nZSxcclxuICAgICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NidcclxuICAgIH07XHJcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMuY29uZmlnLmlzc3VlciArICcvY29ubmVjdC9hdXRob3JpemUnKTtcclxuICAgIHVybC5zZWFyY2ggPSB0aGlzLmFkZFF1ZXJ5UGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhZGRRdWVyeVBhcmFtcyhvYmplY3Q6IGFueSk6IFVSTFNlYXJjaFBhcmFtcyB7XHJcbiAgICBpZiAoIW9iamVjdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvYmplY3QpIHtcclxuICAgICAgdXJsUGFyYW1zLmFwcGVuZChwcm9wLCBvYmplY3RbcHJvcF0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybFBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VG9rZW5UaW1lVG9MaXZlKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBleHBpcmVzID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlRPS0VOX0VYUElSRVMpO1xyXG4gICAgaWYgKGV4cGlyZXMpIHtcclxuICAgICAgY29uc3QgZXhwaXJlRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpO1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCB0aW1lVG9MaXZlID0gTWF0aC5mbG9vcigoZXhwaXJlRGF0ZS5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpKSAvIDEwMDApO1xyXG4gICAgICByZXR1cm4gdGltZVRvTGl2ZSA8IDAgPyAwIDogdGltZVRvTGl2ZTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLy9Db29sZG93biBmb3IgYXZvaWRpbmcgaW5maW5pdGUgcmVmcmVzaFxyXG4gIHByaXZhdGUgY2FuUmVmcmVzaFRva2VuKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgIGlmIChub3cgLSB0aGlzLmxhc3RSZWZyZXNoVGltZSA+ICgyICogNjAgKiAxMDAwKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzVXNlckJlZW5BY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsYXN0QWN0aXZlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlVTRVJfTEFTVF9BQ1RJVkUpO1xyXG4gICAgaWYgKCFsYXN0QWN0aXZlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RBY3RpdmUgPSBEYXRlLm5vdygpIC0gcGFyc2VJbnQobGFzdEFjdGl2ZSwgMTApO1xyXG4gICAgY29uc3QgaWRsZVRpbWVNcyA9IHRoaXMuY29uZmlnLmlkbGVUaW1lICogNjAgKiAxMDAwO1xyXG4gICAgcmV0dXJuIHRpbWVTaW5jZUxhc3RBY3RpdmUgPD0gaWRsZVRpbWVNcztcclxuICB9XHJcblxyXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5sb2cpIHtcclxuICAgICAgaWYgKG9wdGlvbmFsUGFyYW1zPy5sZW5ndGg+MCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcih0b2tlbjogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IFtoZWFkZXIsIHBheWxvYWQsIHNpZ25hdHVyZV0gPSB0b2tlbi5zcGxpdCgnLicpO1xyXG4gICAgICBjb25zdCBiYXNlNjRVcmwgPSBwYXlsb2FkLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XHJcbiAgICAgIGNvbnN0IGRlY29kZWRQYXlsb2FkID0gYXRvYihiYXNlNjRVcmwpO1xyXG4gICAgICBjb25zdCBwYXJzZWRQYXlsb2FkID0gSlNPTi5wYXJzZShkZWNvZGVkUGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiBwYXJzZWRQYXlsb2FkO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVjb2RpbmcgSldUJywgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxufSJdfQ==
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFLdkQsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFDMEMsTUFBNEIsRUFDNUQsSUFBZ0IsRUFDaEIsTUFBYztRQUZrQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1RCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFYaEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQXlCLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzNFLFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFNakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0s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QUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO2lJQXJNVSxjQUFjLGtCQVdmLHVCQUF1QjtxSUFYdEIsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBWU4sTUFBTTsyQkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBREJfVVNFUl9TRVJWSUNFX0NPTkZJRywgQWRiVXNlclNlcnZpY2VDb25maWcgfSBmcm9tICcuL2FkYi11c2VyLXNlcnZpY2UtY29uZmlnJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGFkZFNlY29uZHMsIGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgVXNlck1vZHVsZUNvbnN0YW50cyB9IGZyb20gJy4vdXNlci1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFkYlVzZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgdXNlclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gIHVzZXIkID0gdGhpcy51c2VyU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgbGFzdFJlZnJlc2hUaW1lID0gMDtcclxuICBpbnRlcnZhbElkOiBhbnk7XHJcbiAgaGFzRW1pdHRlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoQURCX1VTRVJfU0VSVklDRV9DT05GSUcpIHB1YmxpYyBjb25maWc6IEFkYlVzZXJTZXJ2aWNlQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgdGhpcy5jb25maWcgPSB7IC4uLnsgc2NvcGU6ICdyb2xlcycsIGlkbGVUaW1lOiAzMCwgcmVzcG9uc2VfdHlwZTogJ2NvZGUnIH0sIC4uLmNvbmZpZyB9O1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlcihhY2Nlc3NUb2tlbik7XHJcbiAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh1c2VyKTtcclxuICAgICAgdGhpcy5zdGFydE1haW5Mb29wKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmF1dG9Mb2dpbikge1xyXG4gICAgICAvL05PVEU6IEF2b2lkIHJlLXRyaWdnZXJpbmcgbG9naW4gaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYXV0aC1jYWxsYmFjayBoYW5kbGluZ1xyXG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgICBpZiAodXJsUGFyYW1zLmhhcygnY29kZScpKSB7XHJcbiAgICAgICAgdGhpcy5sb2coJ0RldGVjdGVkIGF1dGggY2FsbGJhY2ssIHNraXBwaW5nIGluaXQgbG9naW4uJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9naW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0TWFpbkxvb3AoKSB7XHJcbiAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XHJcbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmNoZWNrU3RhdHVzKCksIDYwICogMTAwMCk7IC8vIDYwIHNlY29uZHMgKiAxMDAwIG1pbGxpc2Vjb25kc1xyXG4gIH1cclxuXHJcbiAgbG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZygndXJsIHdoZW4gbG9naW4nLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNVUlJFTlRfVVJMLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgdGhpcy5hdXRob3JpemUoKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgIHRoaXMuaGFzRW1pdHRlZCA9IGZhbHNlO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuaXNzdWVyfS9jb25uZWN0L2VuZHNlc3Npb24/cG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSR7dGhpcy5jb25maWcucG9zdExvZ291dFVybH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1N0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKCdjaGVja1N0YXR1cyBydW5zJylcclxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgdGhpcy5sb2coJ2hhcyBhY2Nlc3N0b2tlbicpXHJcbiAgICAgIGNvbnN0IHRpbWVUb0xpdmUgPSB0aGlzLmdldFRva2VuVGltZVRvTGl2ZSgpO1xyXG4gICAgICB0aGlzLmxvZygndGltZVRvTGl2ZScsIHRpbWVUb0xpdmUpXHJcbiAgICAgIGlmICh0aW1lVG9MaXZlID09PSAwKSB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICAgICAgdGhpcy5hdXRob3JpemUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRUb2tlblRpbWVUb0xpdmUoKSA8PSA2MCAmJiB0aGlzLmhhc1VzZXJCZWVuQWN0aXZlKCkgJiYgdGhpcy5jYW5SZWZyZXNoVG9rZW4oKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3Rva2VuIGlzIGFib3V0IHRvIHRpbWVvdXQgYnV0IHdlIHdpbGwgcmVmcmVzaCBpdCBiZWNhdXNlIHVzZXIgaGFzIGJlZW4gYWN0aXZlIHRoZSBsYXN0IDVtaW51dGVzJyk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvZygnaGFzRW1pdHRlZCcsIHRoaXMuaGFzRW1pdHRlZCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0VtaXR0ZWQpIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldFVzZXIoYWNjZXNzVG9rZW4pO1xyXG4gICAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbWl0dGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgY29uc3QgYm9keSA9IGBjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5jb25maWcuY2xpZW50SWQpfSZgICtcclxuICAgICAgYGdyYW50X3R5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoXCJyZWZyZXNoX3Rva2VuXCIpfSZgICtcclxuICAgICAgYHJlZnJlc2hfdG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlJFRlJFU0hfVE9LRU4pKX1gO1xyXG4gICAgdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmNvbmZpZy5pc3N1ZXJ9L2Nvbm5lY3QvdG9rZW5gLCBib2R5LCB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9KSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbnNJblNlc3Npb24ocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gRGF0ZS5ub3coKTtcclxuICB9XHJcblxyXG4gIHNldFRva2Vuc0luU2Vzc2lvbihwYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHBhcmFtcy5yZWZyZXNoX3Rva2VuKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5SRUZSRVNIX1RPS0VOLCBwYXJhbXMucmVmcmVzaF90b2tlbik7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOLCBwYXJhbXMuYWNjZXNzX3Rva2VuKTtcclxuICAgIH1cclxuICAgIGlmIChwYXJhbXMuZXhwaXJlc19pbikge1xyXG4gICAgICBjb25zdCBleHBpcmVUaW1lID0gYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCBwYXJhbXMuZXhwaXJlc19pbik7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5UT0tFTl9FWFBJUkVTLCBmb3JtYXQoZXhwaXJlVGltZSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGF1dGhvcml6ZSgpIHtcclxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IEFycmF5LmZyb20oY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSg2NCkpLCBieXRlID0+XHJcbiAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSdbKGJ5dGUgYXMgbnVtYmVyKSAlIDYyXVxyXG4gICAgKS5qb2luKCcnKTtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5DT0RFX1ZFUklGSUVSLCBjb2RlVmVyaWZpZXIpO1xyXG5cclxuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcclxuICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShjb2RlVmVyaWZpZXIpO1xyXG4gICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XHJcbiAgICBjb25zdCBoYXNoQXJyYXkgPSBuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKTtcclxuICAgIGxldCBjb2RlQ2hhbGxlbmdlID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmhhc2hBcnJheSkpO1xyXG4gICAgY29kZUNoYWxsZW5nZSA9IGNvZGVDaGFsbGVuZ2UucmVwbGFjZSgvPS9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXHJcbiAgICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKTtcclxuXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIHJlc3BvbnNlX3R5cGU6IHRoaXMuY29uZmlnLnJlc3BvbnNlVHlwZSxcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLmNvbmZpZy5yZWRpcmVjdFVybCxcclxuICAgICAgc2NvcGU6IHRoaXMuY29uZmlnLnNjb3BlLFxyXG4gICAgICBjb2RlX2NoYWxsZW5nZTogY29kZUNoYWxsZW5nZSxcclxuICAgICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NidcclxuICAgIH07XHJcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMuY29uZmlnLmlzc3VlciArICcvY29ubmVjdC9hdXRob3JpemUnKTtcclxuICAgIHVybC5zZWFyY2ggPSB0aGlzLmFkZFF1ZXJ5UGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhZGRRdWVyeVBhcmFtcyhvYmplY3Q6IGFueSk6IFVSTFNlYXJjaFBhcmFtcyB7XHJcbiAgICBpZiAoIW9iamVjdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvYmplY3QpIHtcclxuICAgICAgdXJsUGFyYW1zLmFwcGVuZChwcm9wLCBvYmplY3RbcHJvcF0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybFBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VG9rZW5UaW1lVG9MaXZlKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBleHBpcmVzID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlRPS0VOX0VYUElSRVMpO1xyXG4gICAgaWYgKGV4cGlyZXMpIHtcclxuICAgICAgY29uc3QgZXhwaXJlRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpO1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCB0aW1lVG9MaXZlID0gTWF0aC5mbG9vcigoZXhwaXJlRGF0ZS5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpKSAvIDEwMDApO1xyXG4gICAgICByZXR1cm4gdGltZVRvTGl2ZSA8IDAgPyAwIDogdGltZVRvTGl2ZTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLy9Db29sZG93biBmb3IgYXZvaWRpbmcgaW5maW5pdGUgcmVmcmVzaFxyXG4gIHByaXZhdGUgY2FuUmVmcmVzaFRva2VuKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgIGlmIChub3cgLSB0aGlzLmxhc3RSZWZyZXNoVGltZSA+ICgyICogNjAgKiAxMDAwKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzVXNlckJlZW5BY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsYXN0QWN0aXZlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlVTRVJfTEFTVF9BQ1RJVkUpO1xyXG4gICAgaWYgKCFsYXN0QWN0aXZlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RBY3RpdmUgPSBEYXRlLm5vdygpIC0gcGFyc2VJbnQobGFzdEFjdGl2ZSwgMTApO1xyXG4gICAgY29uc3QgaWRsZVRpbWVNcyA9IHRoaXMuY29uZmlnLmlkbGVUaW1lICogNjAgKiAxMDAwO1xyXG4gICAgcmV0dXJuIHRpbWVTaW5jZUxhc3RBY3RpdmUgPD0gaWRsZVRpbWVNcztcclxuICB9XHJcblxyXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5sb2cpIHtcclxuICAgICAgaWYgKG9wdGlvbmFsUGFyYW1zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyKHRva2VuOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgW2hlYWRlciwgcGF5bG9hZCwgc2lnbmF0dXJlXSA9IHRva2VuLnNwbGl0KCcuJyk7XHJcbiAgICAgIGNvbnN0IGJhc2U2NFVybCA9IHBheWxvYWQucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcclxuICAgICAgY29uc3QgZGVjb2RlZFBheWxvYWQgPSBhdG9iKGJhc2U2NFVybCk7XHJcbiAgICAgIGNvbnN0IHBhcnNlZFBheWxvYWQgPSBKU09OLnBhcnNlKGRlY29kZWRQYXlsb2FkKTtcclxuICAgICAgcmV0dXJuIHBhcnNlZFBheWxvYWQ7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNvZGluZyBKV1QnLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG59Il19
@@ -2024,6 +2024,7 @@ const ADB_USER_SERVICE_CONFIG = new InjectionToken('ADB_DATA_SERVICE_CONFIG');
2024
2024
  const DEFAULT_ADB_USER_SERVICE_CONFIG = {
2025
2025
  scope: 'roles profile email',
2026
2026
  idleTime: 30,
2027
+ autoLogin: false,
2027
2028
  response_type: 'code',
2028
2029
  overrideIssuer: false,
2029
2030
  log: false
@@ -2058,6 +2059,15 @@ class AdbUserService {
2058
2059
  this.userSubject.next(user);
2059
2060
  this.startMainLoop();
2060
2061
  }
2062
+ else if (this.config.autoLogin) {
2063
+ //NOTE: Avoid re-triggering login if we're in the middle of the auth-callback handling
2064
+ const urlParams = new URLSearchParams(window.location.search);
2065
+ if (urlParams.has('code')) {
2066
+ this.log('Detected auth callback, skipping init login.');
2067
+ return;
2068
+ }
2069
+ this.login();
2070
+ }
2061
2071
  }
2062
2072
  startMainLoop() {
2063
2073
  this.checkStatus();