@alauda-fe/common 1.3.0-beta.1 → 1.3.0-beta.2

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.
@@ -9,4 +9,3 @@ export * from './interceptor.service';
9
9
  export * from './app-init-url';
10
10
  export * from './session-manage.service';
11
11
  export * from './state.service';
12
- export * from './storage-token';
@@ -9,5 +9,4 @@ export * from './interceptor.service';
9
9
  export * from './app-init-url';
10
10
  export * from './session-manage.service';
11
11
  export * from './state.service';
12
- export * from './storage-token';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWM7QUFDZCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogW1tpbmNsdWRlOmF1dGhvcml6YXRpb24vUkVBRE1FLm1kXV1cbiAqIEBtb2R1bGUgYXV0aG9yaXphdGlvblxuICogQHByZWZlcnJlZFxuICovXG5cbi8qKiBpbXBvcnRzICovXG5leHBvcnQgKiBmcm9tICcuL2d1YXJkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWluaXQtdXJsJztcbmV4cG9ydCAqIGZyb20gJy4vc2Vzc2lvbi1tYW5hZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlLXRva2VuJztcbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWM7QUFDZCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtbaW5jbHVkZTphdXRob3JpemF0aW9uL1JFQURNRS5tZF1dXG4gKiBAbW9kdWxlIGF1dGhvcml6YXRpb25cbiAqIEBwcmVmZXJyZWRcbiAqL1xuXG4vKiogaW1wb3J0cyAqL1xuZXhwb3J0ICogZnJvbSAnLi9ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1pbml0LXVybCc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24tbWFuYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0ZS5zZXJ2aWNlJztcbiJdfQ==
@@ -57,9 +57,11 @@ export class AuthorizationStateService {
57
57
  console.error(e);
58
58
  }
59
59
  }
60
- const href = redirectUrl
61
- ? replaceRedirectUrl(this.stateSnapshot.authUrl, redirectUrl)
62
- : this.stateSnapshot.authUrl;
60
+ const href = replaceRedirectUrl(this.stateSnapshot.authUrl,
61
+ // authUrl 中的 redirectUrl 是根路由,根路由二次重定向回 portal 时会丢失 code 导致登录失败
62
+ // 如果后期有定制化要求默认首页不是 portal,可以改回之前的方案,使用浏览器导航打开 logoutUrl,然后 dex 重定向到根路由,根路由重定向到默认首页,首页再将 authUrl 中的 redirectUrl 替换为当前 url 跳转到 dex 进行登录;
63
+ // 最好环境变量增加默认首页地址或者 dex redirectUrl 直接是正确地址
64
+ redirectUrl || location.origin + '/console-portal');
63
65
  try {
64
66
  getTopWindow().location.href = href;
65
67
  }
@@ -222,4 +224,4 @@ function mapTokenResponse() {
222
224
  refreshToken: refresh_token,
223
225
  })));
224
226
  }
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssRUFFTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNILElBQUksRUFDSixJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBRUwsV0FBVyxFQUNYLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7O0FBa0J6QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUUvQixNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxNQUFN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QztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQXlCO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE9BQU87UUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixPQUFPLElBQUksQ0FDVCxHQUFHLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFpQixFQUFFLEVBQUU7UUFDaEUsaUJBQWlCLENBQUM7WUFDaEIsV0FBVyxFQUFFLGFBQWE7WUFDMUIsT0FBTyxFQUFFLFFBQVE7WUFDakIsWUFBWSxFQUFFLGFBQWE7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsT0FBTyxFQUFFLFFBQVE7UUFDakIsWUFBWSxFQUFFLGFBQWE7S0FDNUIsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhdXRob3JpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVjb2RlVXJsIH0gZnJvbSAnYWI2NCc7XG5pbXBvcnQge1xuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29uY2F0LFxuICBvZixcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHBpcGUsXG4gIGZyb20sXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBTdHJpbmdNYXAsXG4gIEFQSV9HQVRFV0FZLFxuICBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gIHB1Ymxpc2hSZWYsXG4gIGdldFRvcFdpbmRvdyxcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEFjY291bnRJbmZvIH0gZnJvbSAnLi4vcGFnZS1zY2FmZm9sZC9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgZ2V0SW5pdFVybCB9IGZyb20gJy4vYXBwLWluaXQtdXJsJztcbmltcG9ydCB7XG4gIGFzeW5jUmVhZFN0b3JhZ2VUb2tlbixcbiAgY2xlYW5TdG9yYWdlVG9rZW4sXG4gIHJlYWRTdG9yYWdlVG9rZW4sXG4gIHJlYWRTdG9yYWdlVHlwZSxcbiAgd3JpdGVTdG9yYWdlVG9rZW4sXG59IGZyb20gJy4vc3RvcmFnZS10b2tlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvblN0YXRlIHtcbiAgaWRUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbiAgYXV0aFVybD86IHN0cmluZztcbiAgbG9nb3V0VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVzcG9uc2Uge1xuICB0b2tlbl9zdG9yYWdlOiBTdG9yYWdlVHlwZTtcbiAgaWRfdG9rZW46IHN0cmluZztcbiAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdG9yYWdlVHlwZSA9ICdsb2NhbCcgfCAnc2Vzc2lvbic7XG5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX1RZUEVfS0VZID0gJ3Rva2VuX3N0b3JhZ2UnO1xuZXhwb3J0IGNvbnN0IElEX1RPS0VOX0tFWSA9ICdpZF90b2tlbic7XG5leHBvcnQgY29uc3QgUkVGUkVTSF9UT0tFTl9LRVkgPSAncmVmcmVzaF90b2tlbic7XG5leHBvcnQgY29uc3QgQ09ERV9LRVkgPSAnY29kZSc7XG5cbmNvbnN0IExPR0lOX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vbG9naW4nO1xuY29uc3QgQ0FMTEJBQ0tfQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9jYWxsYmFjayc7XG5jb25zdCBUT0tFTl9SRUZSRVNIX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vcmVmcmVzaCc7XG5jb25zdCBUT0tFTl9JTkZPX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vaW5mbyc7XG5cbmNvbnN0IFJFRElSRUNUX1VSSVMgPSBuZXcgU2V0KFsncmVkaXJlY3RfdXJpJywgJ3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSddKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaFRva2VuJCQgPSBuZXcgU3ViamVjdDx7XG4gICAgaWRUb2tlbjogc3RyaW5nO1xuICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICB9PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGUkID0gdGhpcy5nZXRBdXRoQ29uZmlndXJhdGlvbigpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNvbmZpZyA9PlxuICAgICAgY29uY2F0KHRoaXMuZ2V0RXhpc3RlZFRva2VuKGNvbmZpZyksIHRoaXMucmVmcmVzaFRva2VuJCQpLnBpcGUoXG4gICAgICAgIG1hcCh0b2tlbiA9PiAoeyAuLi5jb25maWcsIC4uLnRva2VuIH0pKSxcbiAgICAgICksXG4gICAgKSxcbiAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90ID0gc3RhdGU7XG4gICAgICBpZiAoIXN0YXRlLmlkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBheWxvYWRTbmFwc2hvdCA9IGdldEFjY291bnRJbmZvKHN0YXRlKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICBwcml2YXRlIGNoZWNrVG9rZW5DYWNoZTogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTx1bmtub3duPj4gPSB7fTtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5DYWNoZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBzdGF0ZVNuYXBzaG90OiBBdXRob3JpemF0aW9uU3RhdGUgPSBudWxsO1xuXG4gIHBheWxvYWRTbmFwc2hvdDogQWNjb3VudEluZm87XG5cbiAgbG9nb3V0KHNwZWNpZmljVXJsID0gZmFsc2UpIHtcbiAgICBjbGVhblN0b3JhZ2VUb2tlbigpO1xuICAgIHRoaXMucmVkaXJlY3RUb0RleChzcGVjaWZpY1VybCAmJiBsb2NhdGlvbi5ocmVmKTtcbiAgfVxuXG4gIGxvZ291dEF1ZGl0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9hdXRoL3YxL2xvZ291dGAsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczogTk9UX05PVElGWV9PTl9FUlJPUl9IRUFERVJTLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVkaXJlY3RUb0RleChyZWRpcmVjdFVybDogc3RyaW5nID0gbnVsbCkge1xuICAgIGlmICghdGhpcy5zdGF0ZVNuYXBzaG90KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5Li75Yqo6YCA5Ye65oiWIHNlc3Npb24g5qih5byP6Lez6L2s5YiwIGRleCDliY3pnIDopoHkuLvliqjmuIXpmaQgYHVzZXJfbG9naW5gIGNvb2tpZSDpmLLmraLoh6rliqjmjojmnYNcbiAgICBpZiAoISF0aGlzLnN0YXRlU25hcHNob3QuaWRUb2tlbiB8fCByZWFkU3RvcmFnZVR5cGUoKSA9PT0gJ3Nlc3Npb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmZXRjaChcbiAgICAgICAgICBgJHt0aGlzLnN0YXRlU25hcHNob3QubG9nb3V0VXJsfSZpZF90b2tlbl9oaW50PSR7XG4gICAgICAgICAgICAvLyDkuLvliqjpgIDlh7rml7bnpoHnlKjnjrDmnIkgdG9rZW5cbiAgICAgICAgICAgIHRoaXMuc3RhdGVTbmFwc2hvdC5pZFRva2VuIHx8ICcnXG4gICAgICAgICAgfWAsXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaHJlZiA9IHJlZGlyZWN0VXJsXG4gICAgICA/IHJlcGxhY2VSZWRpcmVjdFVybCh0aGlzLnN0YXRlU25hcHNob3QuYXV0aFVybCwgcmVkaXJlY3RVcmwpXG4gICAgICA6IHRoaXMuc3RhdGVTbmFwc2hvdC5hdXRoVXJsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGdldFRvcFdpbmRvdygpLmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbiwganVzdCBmb3Igcm9idXN0bmVzcyBpbiBjYXNlIG9mIGNyb3NzLW9yaWdpbiBpZnJhbWVcbiAgICAgIGxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hUb2tlbigpIHtcbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPSByZWFkU3RvcmFnZVRva2VuKCk/LnJlZnJlc2hUb2tlbjtcbiAgICBpZiAocmVmcmVzaFRva2VuKSB7XG4gICAgICBpZiAoIXRoaXMucmVmcmVzaFRva2VuQ2FjaGUkKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkID0gdGhpcy5nZXRUb2tlbkJ5UmVmcmVzaFRva2VuKFxuICAgICAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIHRhcCh0b2tlbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbiQkLm5leHQodG9rZW4pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcCgoeyBpZFRva2VuIH0pID0+IGlkVG9rZW4pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkO1xuICAgIH1cbiAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICBjaGVja1Rva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSkge1xuICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGVbdG9rZW5dID0gdGhpcy5odHRwXG4gICAgICAgIC5nZXQoVE9LRU5fSU5GT19BUEksIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoe1xuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0gPSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSA9IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXTtcbiAgfVxuXG4gIGdldFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5pZFRva2VuKSk7XG4gIH1cblxuICBnZXRUb2tlblBheWxvYWQ8VD4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IGdldEFjY291bnRJbmZvKHN0YXRlKSBhcyBUKSk7XG4gIH1cblxuICBnZXRBY2NvdW50SW5mbygpIHtcbiAgICBpZiAodGhpcy5wYXlsb2FkU25hcHNob3QpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBheWxvYWRTbmFwc2hvdCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBnZXRBY2NvdW50SW5mbyhzdGF0ZSkgfHwge30pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0aENvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IGF1dGhfdXJsOiBzdHJpbmc7IHN0YXRlOiBzdHJpbmc7IGxvZ291dF91cmw6IHN0cmluZyB9PihMT0dJTl9BUEkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiAoe1xuICAgICAgICAgIGF1dGhVcmw6IHJlcy5hdXRoX3VybCxcbiAgICAgICAgICBzdGF0ZTogcmVzLnN0YXRlLFxuICAgICAgICAgIGxvZ291dFVybDogcmVzLmxvZ291dF91cmwgfHwgJycsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0ZWRUb2tlbihjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmdldFRva2VuRnJvbUxvY2FsKGNvbmZpZykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKHsgaWRUb2tlbjogJycsIHJlZnJlc2hUb2tlbjogJycgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkZyb21Mb2NhbChcbiAgICBjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSxcbiAgKTogT2JzZXJ2YWJsZTx7IGlkVG9rZW4/OiBzdHJpbmc7IHJlZnJlc2hUb2tlbj86IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9ID0gdGhpcy5nZXRQYXJhbXMoKTtcblxuICAgIGNvbnN0IGNvZGUgPSBxdWVyeVBhcmFtc1tDT0RFX0tFWV0gfHwgaGFzaFBhcmFtc1tDT0RFX0tFWV07XG5cbiAgICBpZiAoY29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5CeUNvZGUoY29kZSwgY29uZmlnLnN0YXRlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPVxuICAgICAgcXVlcnlQYXJhbXNbUkVGUkVTSF9UT0tFTl9LRVldIHx8IGhhc2hQYXJhbXNbUkVGUkVTSF9UT0tFTl9LRVldO1xuXG4gICAgaWYgKHJlZnJlc2hUb2tlbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5CeVJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGlkVG9rZW4gPSBxdWVyeVBhcmFtc1tJRF9UT0tFTl9LRVldIHx8IGhhc2hQYXJhbXNbSURfVE9LRU5fS0VZXTtcblxuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB3cml0ZVN0b3JhZ2VUb2tlbih7XG4gICAgICAgIHN0b3JhZ2VUeXBlOiAocXVlcnlQYXJhbXNbU1RPUkFHRV9UWVBFX0tFWV0gfHxcbiAgICAgICAgICBoYXNoUGFyYW1zW1NUT1JBR0VfVFlQRV9LRVldKSBhcyBUb2tlblJlc3BvbnNlWyd0b2tlbl9zdG9yYWdlJ10sXG4gICAgICAgIGlkVG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogJycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShhc3luY1JlYWRTdG9yYWdlVG9rZW4oKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRva2VuQnlSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KFRPS0VOX1JFRlJFU0hfQVBJLCB7XG4gICAgICAgIHBhcmFtczogeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUb2tlblJlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkJ5Q29kZShjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KENBTExCQUNLX0FQSSwge1xuICAgICAgICBwYXJhbXM6IHsgY29kZSwgc3RhdGUgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUb2tlblJlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbXMoKSB7XG4gICAgY29uc3QgaW5pdFVybCA9IGdldEluaXRVcmwoKTtcblxuICAgIGNvbnN0IGluaXRMb2NhdGlvbiA9IG5ldyBVUkwoaW5pdFVybCk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLnNlYXJjaCA/IGluaXRMb2NhdGlvbi5zZWFyY2guc2xpY2UoMSkgOiAnJyxcbiAgICApO1xuXG4gICAgY29uc3QgaGFzaFBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLmhhc2ggPyBpbml0TG9jYXRpb24uaGFzaC5zbGljZSgxKSA6ICcnLFxuICAgICk7XG5cbiAgICByZXR1cm4geyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSZWRpcmVjdFVybChkZXhVcmw6IHN0cmluZywgcmVkaXJlY3RVcmw6IHN0cmluZykge1xuICBjb25zdCBbcGF0aCwgcXVlcnlQYXJhbXNdID0gZGV4VXJsLnNwbGl0KCc/Jyk7XG5cbiAgY29uc3QgcmVwbGFjZWRRdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zXG4gICAgLnNwbGl0KCcmJylcbiAgICAubWFwKHBhaXIgPT4ge1xuICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFpci5zcGxpdCgnPScpO1xuICAgICAgcmV0dXJuIFJFRElSRUNUX1VSSVMuaGFzKGtleSlcbiAgICAgICAgPyBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0VXJsKX1gXG4gICAgICAgIDogYCR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgfSlcbiAgICAuam9pbignJicpO1xuXG4gIHJldHVybiBgJHtwYXRofT8ke3JlcGxhY2VkUXVlcnlQYXJhbXN9YDtcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocXVlcnk6IHN0cmluZyk6IFN0cmluZ01hcCB7XG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gcXVlcnkuc3BsaXQoJyYnKS5yZWR1Y2UoKGFjYywgcGFyYW0pID0+IHtcbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYXJhbS5zcGxpdCgnPScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICB9O1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRJbmZvKHN0YXRlOiBBdXRob3JpemF0aW9uU3RhdGUpOiBBY2NvdW50SW5mbyB7XG4gIHJldHVybiBzdGF0ZS5pZFRva2VuXG4gICAgPyBKU09OLnBhcnNlKGRlY29kZVVybChzdGF0ZS5pZFRva2VuLnNwbGl0KCcuJylbMV0pKVxuICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gbWFwVG9rZW5SZXNwb25zZSgpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgdGFwKCh7IHRva2VuX3N0b3JhZ2UsIGlkX3Rva2VuLCByZWZyZXNoX3Rva2VuIH06IFRva2VuUmVzcG9uc2UpID0+IHtcbiAgICAgIHdyaXRlU3RvcmFnZVRva2VuKHtcbiAgICAgICAgc3RvcmFnZVR5cGU6IHRva2VuX3N0b3JhZ2UsXG4gICAgICAgIGlkVG9rZW46IGlkX3Rva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hfdG9rZW4sXG4gICAgICB9KTtcbiAgICB9KSxcbiAgICBtYXAoKHsgaWRfdG9rZW4sIHJlZnJlc2hfdG9rZW4gfSkgPT4gKHtcbiAgICAgIGlkVG9rZW46IGlkX3Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgIH0pKSxcbiAgKTtcbn1cbiJdfQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssRUFFTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNILElBQUksRUFDSixJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBRUwsV0FBVyxFQUNYLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7O0FBa0J6QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUUvQixNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxNQUFN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QUM7QUFDVCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBeUI7SUFDL0MsT0FBTyxLQUFLLENBQUMsT0FBTztRQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU8sSUFBSSxDQUNULEdBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQWlCLEVBQUUsRUFBRTtRQUNoRSxpQkFBaUIsQ0FBQztZQUNoQixXQUFXLEVBQUUsYUFBYTtZQUMxQixPQUFPLEVBQUUsUUFBUTtZQUNqQixZQUFZLEVBQUUsYUFBYTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwQyxPQUFPLEVBQUUsUUFBUTtRQUNqQixZQUFZLEVBQUUsYUFBYTtLQUM1QixDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGF1dGhvcml6YXRpb25cbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWNvZGVVcmwgfSBmcm9tICdhYjY0JztcbmltcG9ydCB7XG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb25jYXQsXG4gIG9mLFxuICBjYXRjaEVycm9yLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbiAgcGlwZSxcbiAgZnJvbSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFN0cmluZ01hcCxcbiAgQVBJX0dBVEVXQVksXG4gIE5PVF9OT1RJRllfT05fRVJST1JfSEVBREVSUyxcbiAgcHVibGlzaFJlZixcbiAgZ2V0VG9wV2luZG93LFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQWNjb3VudEluZm8gfSBmcm9tICcuLi9wYWdlLXNjYWZmb2xkL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQgeyBnZXRJbml0VXJsIH0gZnJvbSAnLi9hcHAtaW5pdC11cmwnO1xuaW1wb3J0IHtcbiAgYXN5bmNSZWFkU3RvcmFnZVRva2VuLFxuICBjbGVhblN0b3JhZ2VUb2tlbixcbiAgcmVhZFN0b3JhZ2VUb2tlbixcbiAgcmVhZFN0b3JhZ2VUeXBlLFxuICB3cml0ZVN0b3JhZ2VUb2tlbixcbn0gZnJvbSAnLi9zdG9yYWdlLXRva2VuJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uU3RhdGUge1xuICBpZFRva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xuICBhdXRoVXJsPzogc3RyaW5nO1xuICBsb2dvdXRVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5SZXNwb25zZSB7XG4gIHRva2VuX3N0b3JhZ2U6IFN0b3JhZ2VUeXBlO1xuICBpZF90b2tlbjogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0b3JhZ2VUeXBlID0gJ2xvY2FsJyB8ICdzZXNzaW9uJztcblxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfVFlQRV9LRVkgPSAndG9rZW5fc3RvcmFnZSc7XG5leHBvcnQgY29uc3QgSURfVE9LRU5fS0VZID0gJ2lkX3Rva2VuJztcbmV4cG9ydCBjb25zdCBSRUZSRVNIX1RPS0VOX0tFWSA9ICdyZWZyZXNoX3Rva2VuJztcbmV4cG9ydCBjb25zdCBDT0RFX0tFWSA9ICdjb2RlJztcblxuY29uc3QgTE9HSU5fQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9sb2dpbic7XG5jb25zdCBDQUxMQkFDS19BUEkgPSAnL2NvbnNvbGUvYXBpL3YxL3Rva2VuL2NhbGxiYWNrJztcbmNvbnN0IFRPS0VOX1JFRlJFU0hfQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9yZWZyZXNoJztcbmNvbnN0IFRPS0VOX0lORk9fQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9pbmZvJztcblxuY29uc3QgUkVESVJFQ1RfVVJJUyA9IG5ldyBTZXQoWydyZWRpcmVjdF91cmknLCAncG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpJ10pO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoVG9rZW4kJCA9IG5ldyBTdWJqZWN0PHtcbiAgICBpZFRva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIH0+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZSQgPSB0aGlzLmdldEF1dGhDb25maWd1cmF0aW9uKCkucGlwZShcbiAgICBzd2l0Y2hNYXAoY29uZmlnID0+XG4gICAgICBjb25jYXQodGhpcy5nZXRFeGlzdGVkVG9rZW4oY29uZmlnKSwgdGhpcy5yZWZyZXNoVG9rZW4kJCkucGlwZShcbiAgICAgICAgbWFwKHRva2VuID0+ICh7IC4uLmNvbmZpZywgLi4udG9rZW4gfSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRhcChzdGF0ZSA9PiB7XG4gICAgICB0aGlzLnN0YXRlU25hcHNob3QgPSBzdGF0ZTtcbiAgICAgIGlmICghc3RhdGUuaWRUb2tlbikge1xuICAgICAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF5bG9hZFNuYXBzaG90ID0gZ2V0QWNjb3VudEluZm8oc3RhdGUpO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICApO1xuXG4gIHByaXZhdGUgY2hlY2tUb2tlbkNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHVua25vd24+PiA9IHt9O1xuICBwcml2YXRlIHJlZnJlc2hUb2tlbkNhY2hlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHN0YXRlU25hcHNob3Q6IEF1dGhvcml6YXRpb25TdGF0ZSA9IG51bGw7XG5cbiAgcGF5bG9hZFNuYXBzaG90OiBBY2NvdW50SW5mbztcblxuICBsb2dvdXQoc3BlY2lmaWNVcmwgPSBmYWxzZSkge1xuICAgIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRGV4KHNwZWNpZmljVXJsICYmIGxvY2F0aW9uLmhyZWYpO1xuICB9XG5cbiAgbG9nb3V0QXVkaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7QVBJX0dBVEVXQVl9L2F1dGgvdjEvbG9nb3V0YCxcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBoZWFkZXJzOiBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBhc3luYyByZWRpcmVjdFRvRGV4KHJlZGlyZWN0VXJsOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlU25hcHNob3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDkuLvliqjpgIDlh7rmiJYgc2Vzc2lvbiDmqKHlvI/ot7PovazliLAgZGV4IOWJjemcgOimgeS4u+WKqOa4hemZpCBgdXNlcl9sb2dpbmAgY29va2llIOmYsuatouiHquWKqOaOiOadg1xuICAgIGlmICghIXRoaXMuc3RhdGVTbmFwc2hvdC5pZFRva2VuIHx8IHJlYWRTdG9yYWdlVHlwZSgpID09PSAnc2Vzc2lvbicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZldGNoKFxuICAgICAgICAgIGAke3RoaXMuc3RhdGVTbmFwc2hvdC5sb2dvdXRVcmx9JmlkX3Rva2VuX2hpbnQ9JHtcbiAgICAgICAgICAgIC8vIOS4u+WKqOmAgOWHuuaXtuemgeeUqOeOsOaciSB0b2tlblxuICAgICAgICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90LmlkVG9rZW4gfHwgJydcbiAgICAgICAgICB9YCxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBocmVmID0gcmVwbGFjZVJlZGlyZWN0VXJsKFxuICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90LmF1dGhVcmwsXG4gICAgICAvLyBhdXRoVXJsIOS4reeahCByZWRpcmVjdFVybCDmmK/moLnot6/nlLHvvIzmoLnot6/nlLHkuozmrKHph43lrprlkJHlm54gcG9ydGFsIOaXtuS8muS4ouWksSBjb2RlIOWvvOiHtOeZu+W9leWksei0pVxuICAgICAgLy8g5aaC5p6c5ZCO5pyf5pyJ5a6a5Yi25YyW6KaB5rGC6buY6K6k6aaW6aG15LiN5pivIHBvcnRhbO+8jOWPr+S7peaUueWbnuS5i+WJjeeahOaWueahiO+8jOS9v+eUqOa1j+iniOWZqOWvvOiIquaJk+W8gCBsb2dvdXRVcmzvvIznhLblkI4gZGV4IOmHjeWumuWQkeWIsOaguei3r+eUse+8jOaguei3r+eUsemHjeWumuWQkeWIsOm7mOiupOmmlumhte+8jOmmlumhteWGjeWwhiBhdXRoVXJsIOS4reeahCByZWRpcmVjdFVybCDmm7/mjaLkuLrlvZPliY0gdXJsIOi3s+i9rOWIsCBkZXgg6L+b6KGM55m75b2V77ybXG4gICAgICAvLyDmnIDlpb3njq/looPlj5jph4/lop7liqDpu5jorqTpppbpobXlnLDlnYDmiJbogIUgZGV4IHJlZGlyZWN0VXJsIOebtOaOpeaYr+ato+ehruWcsOWdgFxuICAgICAgcmVkaXJlY3RVcmwgfHwgbG9jYXRpb24ub3JpZ2luICsgJy9jb25zb2xlLXBvcnRhbCcsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBnZXRUb3BXaW5kb3coKS5sb2NhdGlvbi5ocmVmID0gaHJlZjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNob3VsZCBuZXZlciBoYXBwZW4sIGp1c3QgZm9yIHJvYnVzdG5lc3MgaW4gY2FzZSBvZiBjcm9zcy1vcmlnaW4gaWZyYW1lXG4gICAgICBsb2NhdGlvbi5ocmVmID0gaHJlZjtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoVG9rZW4oKSB7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gcmVhZFN0b3JhZ2VUb2tlbigpPy5yZWZyZXNoVG9rZW47XG4gICAgaWYgKHJlZnJlc2hUb2tlbikge1xuICAgICAgaWYgKCF0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCkge1xuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IHRoaXMuZ2V0VG9rZW5CeVJlZnJlc2hUb2tlbihcbiAgICAgICAgICByZWZyZXNoVG9rZW4sXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICB0YXAodG9rZW4gPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5DYWNoZSQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4kJC5uZXh0KHRva2VuKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAoKHsgaWRUb2tlbiB9KSA9PiBpZFRva2VuKSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJDtcbiAgICB9XG4gICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgY2hlY2tUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0pIHtcbiAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSA9IHRoaXMuaHR0cFxuICAgICAgICAuZ2V0KFRPS0VOX0lORk9fQVBJLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKHtcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGVbdG9rZW5dID0gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0gPSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwdWJsaXNoUmVmKCksXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl07XG4gIH1cblxuICBnZXRUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUuaWRUb2tlbikpO1xuICB9XG5cbiAgZ2V0VG9rZW5QYXlsb2FkPFQ+KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBnZXRBY2NvdW50SW5mbyhzdGF0ZSkgYXMgVCkpO1xuICB9XG5cbiAgZ2V0QWNjb3VudEluZm8oKSB7XG4gICAgaWYgKHRoaXMucGF5bG9hZFNuYXBzaG90KSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5wYXlsb2FkU25hcHNob3QpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gZ2V0QWNjb3VudEluZm8oc3RhdGUpIHx8IHt9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEF1dGhDb25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8eyBhdXRoX3VybDogc3RyaW5nOyBzdGF0ZTogc3RyaW5nOyBsb2dvdXRfdXJsOiBzdHJpbmcgfT4oTE9HSU5fQVBJKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gKHtcbiAgICAgICAgICBhdXRoVXJsOiByZXMuYXV0aF91cmwsXG4gICAgICAgICAgc3RhdGU6IHJlcy5zdGF0ZSxcbiAgICAgICAgICBsb2dvdXRVcmw6IHJlcy5sb2dvdXRfdXJsIHx8ICcnLFxuICAgICAgICB9KSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGlzdGVkVG9rZW4oY29uZmlnOiBBdXRob3JpemF0aW9uU3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUb2tlbkZyb21Mb2NhbChjb25maWcpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiBvZih7IGlkVG9rZW46ICcnLCByZWZyZXNoVG9rZW46ICcnIH0pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9rZW5Gcm9tTG9jYWwoXG4gICAgY29uZmlnOiBBdXRob3JpemF0aW9uU3RhdGUsXG4gICk6IE9ic2VydmFibGU8eyBpZFRva2VuPzogc3RyaW5nOyByZWZyZXNoVG9rZW4/OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgcXVlcnlQYXJhbXMsIGhhc2hQYXJhbXMgfSA9IHRoaXMuZ2V0UGFyYW1zKCk7XG5cbiAgICBjb25zdCBjb2RlID0gcXVlcnlQYXJhbXNbQ09ERV9LRVldIHx8IGhhc2hQYXJhbXNbQ09ERV9LRVldO1xuXG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuQnlDb2RlKGNvZGUsIGNvbmZpZy5zdGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmcmVzaFRva2VuID1cbiAgICAgIHF1ZXJ5UGFyYW1zW1JFRlJFU0hfVE9LRU5fS0VZXSB8fCBoYXNoUGFyYW1zW1JFRlJFU0hfVE9LRU5fS0VZXTtcblxuICAgIGlmIChyZWZyZXNoVG9rZW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuQnlSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZFRva2VuID0gcXVlcnlQYXJhbXNbSURfVE9LRU5fS0VZXSB8fCBoYXNoUGFyYW1zW0lEX1RPS0VOX0tFWV07XG5cbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgd3JpdGVTdG9yYWdlVG9rZW4oe1xuICAgICAgICBzdG9yYWdlVHlwZTogKHF1ZXJ5UGFyYW1zW1NUT1JBR0VfVFlQRV9LRVldIHx8XG4gICAgICAgICAgaGFzaFBhcmFtc1tTVE9SQUdFX1RZUEVfS0VZXSkgYXMgVG9rZW5SZXNwb25zZVsndG9rZW5fc3RvcmFnZSddLFxuICAgICAgICBpZFRva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46ICcnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb20oYXN5bmNSZWFkU3RvcmFnZVRva2VuKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkJ5UmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUb2tlblJlc3BvbnNlPihUT0tFTl9SRUZSRVNIX0FQSSwge1xuICAgICAgICBwYXJhbXM6IHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG9rZW5SZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9rZW5CeUNvZGUoY29kZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUb2tlblJlc3BvbnNlPihDQUxMQkFDS19BUEksIHtcbiAgICAgICAgcGFyYW1zOiB7IGNvZGUsIHN0YXRlIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG9rZW5SZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyYW1zKCkge1xuICAgIGNvbnN0IGluaXRVcmwgPSBnZXRJbml0VXJsKCk7XG5cbiAgICBjb25zdCBpbml0TG9jYXRpb24gPSBuZXcgVVJMKGluaXRVcmwpO1xuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBwYXJzZVBhcmFtcyhcbiAgICAgIGluaXRMb2NhdGlvbi5zZWFyY2ggPyBpbml0TG9jYXRpb24uc2VhcmNoLnNsaWNlKDEpIDogJycsXG4gICAgKTtcblxuICAgIGNvbnN0IGhhc2hQYXJhbXMgPSBwYXJzZVBhcmFtcyhcbiAgICAgIGluaXRMb2NhdGlvbi5oYXNoID8gaW5pdExvY2F0aW9uLmhhc2guc2xpY2UoMSkgOiAnJyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgcXVlcnlQYXJhbXMsIGhhc2hQYXJhbXMgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlUmVkaXJlY3RVcmwoZGV4VXJsOiBzdHJpbmcsIHJlZGlyZWN0VXJsOiBzdHJpbmcpIHtcbiAgY29uc3QgW3BhdGgsIHF1ZXJ5UGFyYW1zXSA9IGRleFVybC5zcGxpdCgnPycpO1xuXG4gIGNvbnN0IHJlcGxhY2VkUXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtc1xuICAgIC5zcGxpdCgnJicpXG4gICAgLm1hcChwYWlyID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhaXIuc3BsaXQoJz0nKTtcbiAgICAgIHJldHVybiBSRURJUkVDVF9VUklTLmhhcyhrZXkpXG4gICAgICAgID8gYCR7a2V5fT0ke2VuY29kZVVSSUNvbXBvbmVudChyZWRpcmVjdFVybCl9YFxuICAgICAgICA6IGAke2tleX09JHt2YWx1ZX1gO1xuICAgIH0pXG4gICAgLmpvaW4oJyYnKTtcblxuICByZXR1cm4gYCR7cGF0aH0/JHtyZXBsYWNlZFF1ZXJ5UGFyYW1zfWA7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFyYW1zKHF1ZXJ5OiBzdHJpbmcpOiBTdHJpbmdNYXAge1xuICBpZiAoIXF1ZXJ5KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIHF1ZXJ5LnNwbGl0KCcmJykucmVkdWNlKChhY2MsIHBhcmFtKSA9PiB7XG4gICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFyYW0uc3BsaXQoJz0nKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICBba2V5XTogdmFsdWUsXG4gICAgfTtcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRBY2NvdW50SW5mbyhzdGF0ZTogQXV0aG9yaXphdGlvblN0YXRlKTogQWNjb3VudEluZm8ge1xuICByZXR1cm4gc3RhdGUuaWRUb2tlblxuICAgID8gSlNPTi5wYXJzZShkZWNvZGVVcmwoc3RhdGUuaWRUb2tlbi5zcGxpdCgnLicpWzFdKSlcbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIG1hcFRva2VuUmVzcG9uc2UoKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIHRhcCgoeyB0b2tlbl9zdG9yYWdlLCBpZF90b2tlbiwgcmVmcmVzaF90b2tlbiB9OiBUb2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICB3cml0ZVN0b3JhZ2VUb2tlbih7XG4gICAgICAgIHN0b3JhZ2VUeXBlOiB0b2tlbl9zdG9yYWdlLFxuICAgICAgICBpZFRva2VuOiBpZF90b2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgICAgfSk7XG4gICAgfSksXG4gICAgbWFwKCh7IGlkX3Rva2VuLCByZWZyZXNoX3Rva2VuIH0pID0+ICh7XG4gICAgICBpZFRva2VuOiBpZF90b2tlbixcbiAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICB9KSksXG4gICk7XG59XG4iXX0=
@@ -1,7 +1,11 @@
1
1
  import { ID_TOKEN_KEY, REFRESH_TOKEN_KEY, STORAGE_TYPE_KEY, } from './state.service';
2
- const getStorage = (storageType) => storageType === 'session' ? sessionStorage : localStorage;
3
2
  let sessionTokenShareChannel;
4
3
  const SESSION_TOKEN_SHARE_CHANNEL = 'SESSION_TOKEN_SHARE_CHANNEL';
4
+ const SESSION_CLOSE_TIMESTAMP = 'session_close_timestamp';
5
+ const recordSessionTimestamp = () => {
6
+ sessionStorage.setItem(SESSION_CLOSE_TIMESTAMP, Date.now().toString());
7
+ };
8
+ const getStorage = (storageType) => storageType === 'session' ? sessionStorage : localStorage;
5
9
  export function readStorageType() {
6
10
  return (localStorage.getItem(STORAGE_TYPE_KEY) === 'session' ? 'session' : 'local');
7
11
  }
@@ -13,21 +17,30 @@ export function cleanStorageToken() {
13
17
  }
14
18
  export function writeStorageToken(token) {
15
19
  cleanStorageToken();
16
- localStorage.setItem(STORAGE_TYPE_KEY, token.storageType);
20
+ sessionStorage.removeItem(SESSION_CLOSE_TIMESTAMP);
17
21
  const storage = getStorage(token.storageType);
18
22
  storage.setItem(ID_TOKEN_KEY, token.idToken);
19
23
  storage.setItem(REFRESH_TOKEN_KEY, token.refreshToken);
24
+ localStorage.setItem(STORAGE_TYPE_KEY, token.storageType);
20
25
  if (token.storageType === 'session') {
21
- setupRequestSessionTokenChannel();
26
+ setupSessionTokenShareChannel();
22
27
  }
23
28
  else {
24
- closeRequestSessionTokenChannel();
29
+ closeSessionTokenShareChannel();
25
30
  }
26
31
  }
27
32
  export function readStorageToken() {
28
33
  const storageType = readStorageType();
29
34
  if (storageType === 'session') {
30
- setupRequestSessionTokenChannel();
35
+ const sessionTimestamp = sessionStorage.getItem(SESSION_CLOSE_TIMESTAMP);
36
+ sessionStorage.removeItem(SESSION_CLOSE_TIMESTAMP);
37
+ if (sessionTimestamp &&
38
+ Date.now() - parseInt(sessionTimestamp) > 10 * 1000) {
39
+ // 浏览器恢复标签时清除 session token
40
+ cleanStorageToken();
41
+ console.warn('session timeout');
42
+ }
43
+ setupSessionTokenShareChannel();
31
44
  }
32
45
  const storage = getStorage(storageType);
33
46
  return {
@@ -59,7 +72,7 @@ export function asyncReadStorageToken() {
59
72
  }
60
73
  return Promise.resolve(storageToken);
61
74
  }
62
- function setupRequestSessionTokenChannel() {
75
+ function setupSessionTokenShareChannel() {
63
76
  if (sessionTokenShareChannel) {
64
77
  return;
65
78
  }
@@ -72,11 +85,14 @@ function setupRequestSessionTokenChannel() {
72
85
  });
73
86
  }
74
87
  });
88
+ window.addEventListener('beforeunload', recordSessionTimestamp);
75
89
  }
76
- function closeRequestSessionTokenChannel() {
77
- if (sessionTokenShareChannel) {
78
- sessionTokenShareChannel.close();
79
- sessionTokenShareChannel = null;
90
+ function closeSessionTokenShareChannel() {
91
+ if (!sessionTokenShareChannel) {
92
+ return;
80
93
  }
94
+ sessionTokenShareChannel.close();
95
+ sessionTokenShareChannel = null;
96
+ window.removeEventListener('beforeunload', recordSessionTimestamp);
81
97
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0b3JhZ2UtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBRWpCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUF3QixFQUFXLEVBQUUsQ0FDdkQsV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFFNUQsSUFBSSx3QkFBMEMsQ0FBQztBQUUvQyxNQUFNLDJCQUEyQixHQUFHLDZCQUE2QixDQUFDO0FBZWxFLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sQ0FDTCxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDNUQsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLFlBQVksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUzQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQW1CO0lBQ25ELGlCQUFpQixFQUFFLENBQUM7SUFFcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMs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QzVCLHdCQUF3QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLHdCQUF3QixHQUFHLElBQUksQ0FBQztLQUNqQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJRF9UT0tFTl9LRVksXG4gIFJFRlJFU0hfVE9LRU5fS0VZLFxuICBTVE9SQUdFX1RZUEVfS0VZLFxuICBTdG9yYWdlVHlwZSxcbn0gZnJvbSAnLi9zdGF0ZS5zZXJ2aWNlJztcblxuY29uc3QgZ2V0U3RvcmFnZSA9IChzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUpOiBTdG9yYWdlID0+XG4gIHN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicgPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZTtcblxubGV0IHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbDogQnJvYWRjYXN0Q2hhbm5lbDtcblxuY29uc3QgU0VTU0lPTl9UT0tFTl9TSEFSRV9DSEFOTkVMID0gJ1NFU1NJT05fVE9LRU5fU0hBUkVfQ0hBTk5FTCc7XG5cbnR5cGUgU2Vzc2lvblRva2VuU2hhcmVEYXRhID1cbiAgfCB7XG4gICAgICB0eXBlOiAncHJvdmlkZSc7XG4gICAgICB0b2tlbjogU3RvcmFnZVRva2VuO1xuICAgIH1cbiAgfCB7IHR5cGU6ICdyZXF1ZXN0JyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VUb2tlbiB7XG4gIHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZTtcbiAgaWRUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTdG9yYWdlVHlwZSgpIHtcbiAgcmV0dXJuIChcbiAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1RZUEVfS0VZKSA9PT0gJ3Nlc3Npb24nID8gJ3Nlc3Npb24nIDogJ2xvY2FsJ1xuICApIGFzIFN0b3JhZ2VUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5TdG9yYWdlVG9rZW4oKSB7XG4gIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKElEX1RPS0VOX0tFWSk7XG4gIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFJFRlJFU0hfVE9LRU5fS0VZKTtcblxuICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKElEX1RPS0VOX0tFWSk7XG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTdG9yYWdlVG9rZW4odG9rZW46IFN0b3JhZ2VUb2tlbikge1xuICBjbGVhblN0b3JhZ2VUb2tlbigpO1xuXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfVFlQRV9LRVksIHRva2VuLnN0b3JhZ2VUeXBlKTtcblxuICBjb25zdCBzdG9yYWdlID0gZ2V0U3RvcmFnZSh0b2tlbi5zdG9yYWdlVHlwZSk7XG5cbiAgc3RvcmFnZS5zZXRJdGVtKElEX1RPS0VOX0tFWSwgdG9rZW4uaWRUb2tlbik7XG4gIHN0b3JhZ2Uuc2V0SXRlbShSRUZSRVNIX1RPS0VOX0tFWSwgdG9rZW4ucmVmcmVzaFRva2VuKTtcblxuICBpZiAodG9rZW4uc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJykge1xuICAgIHNldHVwUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZVJlcXVlc3RTZXNzaW9uVG9rZW5DaGFubmVsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTdG9yYWdlVG9rZW4oKTogUGFydGlhbDxTdG9yYWdlVG9rZW4+IHtcbiAgY29uc3Qgc3RvcmFnZVR5cGUgPSByZWFkU3RvcmFnZVR5cGUoKTtcblxuICBpZiAoc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJykge1xuICAgIHNldHVwUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKTtcbiAgfVxuXG4gIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHN0b3JhZ2VUeXBlKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JhZ2VUeXBlLFxuICAgIGlkVG9rZW46IHN0b3JhZ2UuZ2V0SXRlbShJRF9UT0tFTl9LRVkpLFxuICAgIHJlZnJlc2hUb2tlbjogc3RvcmFnZS5nZXRJdGVtKFJFRlJFU0hfVE9LRU5fS0VZKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzeW5jUmVhZFN0b3JhZ2VUb2tlbigpOiBQcm9taXNlPFBhcnRpYWw8U3RvcmFnZVRva2VuPj4ge1xuICBjb25zdCBzdG9yYWdlVG9rZW4gPSByZWFkU3RvcmFnZVRva2VuKCk7XG5cbiAgaWYgKHN0b3JhZ2VUb2tlbi5zdG9yYWdlVHlwZSA9PT0gJ3Nlc3Npb24nICYmICFzdG9yYWdlVG9rZW4uaWRUb2tlbikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ3JlcXVlc3Qgc2Vzc2lvbiB0b2tlbiB0aW1lb3V0Jyk7XG4gICAgICAgIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICByZWNlaXZlU2Vzc2lvblRva2VuLFxuICAgICAgICApO1xuICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgIH0sIDUwKTtcblxuICAgICAgZnVuY3Rpb24gcmVjZWl2ZVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGRhdGEsXG4gICAgICB9OiBNZXNzYWdlRXZlbnQ8U2Vzc2lvblRva2VuU2hhcmVEYXRhPikge1xuICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvdmlkZScpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgIHJlY2VpdmVTZXNzaW9uVG9rZW4sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHdyaXRlU3RvcmFnZVRva2VuKGRhdGEudG9rZW4pO1xuICAgICAgICAgIHJlc29sdmUoZGF0YS50b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlU2Vzc2lvblRva2VuKTtcblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlcXVlc3QnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdG9yYWdlVG9rZW4pO1xufVxuXG5mdW5jdGlvbiBzZXR1cFJlcXVlc3RTZXNzaW9uVG9rZW5DaGFubmVsKCkge1xuICBpZiAoc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoU0VTU0lPTl9UT0tFTl9TSEFSRV9DSEFOTkVMKTtcblxuICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAnbWVzc2FnZScsXG4gICAgKHsgZGF0YSB9OiBNZXNzYWdlRXZlbnQ8U2Vzc2lvblRva2VuU2hhcmVEYXRhPikgPT4ge1xuICAgICAgaWYgKGRhdGEudHlwZSA9PT0gJ3JlcXVlc3QnKSB7XG4gICAgICAgIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgdHlwZTogJ3Byb3ZpZGUnLFxuICAgICAgICAgIHRva2VuOiByZWFkU3RvcmFnZVRva2VuKCksXG4gICAgICAgIH0gYXMgU2Vzc2lvblRva2VuU2hhcmVEYXRhKTtcbiAgICAgIH1cbiAgICB9LFxuICApO1xufVxuXG5mdW5jdGlvbiBjbG9zZVJlcXVlc3RTZXNzaW9uVG9rZW5DaGFubmVsKCkge1xuICBpZiAoc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKSB7XG4gICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmNsb3NlKCk7XG4gICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsID0gbnVsbDtcbiAgfVxufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0b3JhZ2UtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBRWpCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsSUFBSSx3QkFBMEMsQ0FBQztBQUUvQyxNQUFNLDJCQUEyQixHQUFHLDZCQUE2QixDQUFDO0FBRWxFLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFFMUQsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLEVBQUU7SUFDbEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQXdCLEVBQVcsRUFBRSxDQUN2RCxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQWU1RCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLENBQ0wsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzVELENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFM0MsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxjQUFjLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVE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QUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsNkJBQTZCO0lBQ3BDLElBQUksd0JBQXdCLEVBQUU7UUFDNUIsT0FBTztLQUNSO0lBRUQsd0JBQXdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRTdFLHdCQUF3QixDQUFDLGdCQUFnQixDQUN2QyxTQUFTLEVBQ1QsQ0FBQyxFQUFFLElBQUksRUFBdUMsRUFBRSxFQUFFO1FBQ2hELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDM0Isd0JBQXdCLENBQUMsV0FBVyxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsU0FBUztnQkFDZixLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7YUFDRCxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDLENBQ0YsQ0FBQztJQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyw2QkFBNkI7SUFDcEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1FBQzdCLE9BQU87S0FDUjtJQUVELHdCQUF3QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLHdCQUF3QixHQUFHLElBQUksQ0FBQztJQUVoQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElEX1RPS0VOX0tFWSxcbiAgUkVGUkVTSF9UT0tFTl9LRVksXG4gIFNUT1JBR0VfVFlQRV9LRVksXG4gIFN0b3JhZ2VUeXBlLFxufSBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuXG5sZXQgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsOiBCcm9hZGNhc3RDaGFubmVsO1xuXG5jb25zdCBTRVNTSU9OX1RPS0VOX1NIQVJFX0NIQU5ORUwgPSAnU0VTU0lPTl9UT0tFTl9TSEFSRV9DSEFOTkVMJztcblxuY29uc3QgU0VTU0lPTl9DTE9TRV9USU1FU1RBTVAgPSAnc2Vzc2lvbl9jbG9zZV90aW1lc3RhbXAnO1xuXG5jb25zdCByZWNvcmRTZXNzaW9uVGltZXN0YW1wID0gKCkgPT4ge1xuICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QLCBEYXRlLm5vdygpLnRvU3RyaW5nKCkpO1xufTtcblxuY29uc3QgZ2V0U3RvcmFnZSA9IChzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUpOiBTdG9yYWdlID0+XG4gIHN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicgPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZTtcblxudHlwZSBTZXNzaW9uVG9rZW5TaGFyZURhdGEgPVxuICB8IHtcbiAgICAgIHR5cGU6ICdwcm92aWRlJztcbiAgICAgIHRva2VuOiBTdG9yYWdlVG9rZW47XG4gICAgfVxuICB8IHsgdHlwZTogJ3JlcXVlc3QnIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZVRva2VuIHtcbiAgc3RvcmFnZVR5cGU6IFN0b3JhZ2VUeXBlO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUeXBlKCkge1xuICByZXR1cm4gKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfVFlQRV9LRVkpID09PSAnc2Vzc2lvbicgPyAnc2Vzc2lvbicgOiAnbG9jYWwnXG4gICkgYXMgU3RvcmFnZVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblN0b3JhZ2VUb2tlbigpIHtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpO1xuXG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRUZSRVNIX1RPS0VOX0tFWSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVN0b3JhZ2VUb2tlbih0b2tlbjogU3RvcmFnZVRva2VuKSB7XG4gIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oU0VTU0lPTl9DTE9TRV9USU1FU1RBTVApO1xuXG4gIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHRva2VuLnN0b3JhZ2VUeXBlKTtcblxuICBzdG9yYWdlLnNldEl0ZW0oSURfVE9LRU5fS0VZLCB0b2tlbi5pZFRva2VuKTtcbiAgc3RvcmFnZS5zZXRJdGVtKFJFRlJFU0hfVE9LRU5fS0VZLCB0b2tlbi5yZWZyZXNoVG9rZW4pO1xuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX1RZUEVfS0VZLCB0b2tlbi5zdG9yYWdlVHlwZSk7XG5cbiAgaWYgKHRva2VuLnN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicpIHtcbiAgICBzZXR1cFNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCgpO1xuICB9IGVsc2Uge1xuICAgIGNsb3NlU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTdG9yYWdlVG9rZW4oKTogUGFydGlhbDxTdG9yYWdlVG9rZW4+IHtcbiAgY29uc3Qgc3RvcmFnZVR5cGUgPSByZWFkU3RvcmFnZVR5cGUoKTtcblxuICBpZiAoc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJykge1xuICAgIGNvbnN0IHNlc3Npb25UaW1lc3RhbXAgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QKTtcblxuICAgIGlmIChcbiAgICAgIHNlc3Npb25UaW1lc3RhbXAgJiZcbiAgICAgIERhdGUubm93KCkgLSBwYXJzZUludChzZXNzaW9uVGltZXN0YW1wKSA+IDEwICogMTAwMFxuICAgICkge1xuICAgICAgLy8g5rWP6KeI5Zmo5oGi5aSN5qCH562+5pe25riF6ZmkIHNlc3Npb24gdG9rZW5cbiAgICAgIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gICAgICBjb25zb2xlLndhcm4oJ3Nlc3Npb24gdGltZW91dCcpO1xuICAgIH1cblxuICAgIHNldHVwU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCk7XG4gIH1cblxuICBjb25zdCBzdG9yYWdlID0gZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yYWdlVHlwZSxcbiAgICBpZFRva2VuOiBzdG9yYWdlLmdldEl0ZW0oSURfVE9LRU5fS0VZKSxcbiAgICByZWZyZXNoVG9rZW46IHN0b3JhZ2UuZ2V0SXRlbShSRUZSRVNIX1RPS0VOX0tFWSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3luY1JlYWRTdG9yYWdlVG9rZW4oKTogUHJvbWlzZTxQYXJ0aWFsPFN0b3JhZ2VUb2tlbj4+IHtcbiAgY29uc3Qgc3RvcmFnZVRva2VuID0gcmVhZFN0b3JhZ2VUb2tlbigpO1xuXG4gIGlmIChzdG9yYWdlVG9rZW4uc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJyAmJiAhc3RvcmFnZVRva2VuLmlkVG9rZW4pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdyZXF1ZXN0IHNlc3Npb24gdG9rZW4gdGltZW91dCcpO1xuXG4gICAgICAgIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICByZWNlaXZlU2Vzc2lvblRva2VuLFxuICAgICAgICApO1xuICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgIH0sIDUwKTtcblxuICAgICAgZnVuY3Rpb24gcmVjZWl2ZVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGRhdGEsXG4gICAgICB9OiBNZXNzYWdlRXZlbnQ8U2Vzc2lvblRva2VuU2hhcmVEYXRhPikge1xuICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvdmlkZScpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgIHJlY2VpdmVTZXNzaW9uVG9rZW4sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHdyaXRlU3RvcmFnZVRva2VuKGRhdGEudG9rZW4pO1xuICAgICAgICAgIHJlc29sdmUoZGF0YS50b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlU2Vzc2lvblRva2VuKTtcblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlcXVlc3QnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdG9yYWdlVG9rZW4pO1xufVxuXG5mdW5jdGlvbiBzZXR1cFNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCgpIHtcbiAgaWYgKHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKFNFU1NJT05fVE9LRU5fU0hBUkVfQ0hBTk5FTCk7XG5cbiAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgJ21lc3NhZ2UnLFxuICAgICh7IGRhdGEgfTogTWVzc2FnZUV2ZW50PFNlc3Npb25Ub2tlblNoYXJlRGF0YT4pID0+IHtcbiAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdyZXF1ZXN0Jykge1xuICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6ICdwcm92aWRlJyxcbiAgICAgICAgICB0b2tlbjogcmVhZFN0b3JhZ2VUb2tlbigpLFxuICAgICAgICB9IGFzIFNlc3Npb25Ub2tlblNoYXJlRGF0YSk7XG4gICAgICB9XG4gICAgfSxcbiAgKTtcblxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgcmVjb3JkU2Vzc2lvblRpbWVzdGFtcCk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCkge1xuICBpZiAoIXNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5jbG9zZSgpO1xuICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwgPSBudWxsO1xuXG4gIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCByZWNvcmRTZXNzaW9uVGltZXN0YW1wKTtcbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { get } from 'lodash-es';
4
4
  import { combineLatest, map, switchMap } from 'rxjs';
5
- import { readStorageToken } from '../../../../authorization/public-api';
5
+ import { AuthorizationStateService } from '../../../../authorization/public-api';
6
6
  import { publishRef, } from '../../../../core/public-api';
7
7
  import { K8sPermissionService } from '../../../../permission/k8s-permission.service';
8
8
  import { ProductEntryName } from '../context.service';
@@ -13,6 +13,7 @@ import * as i1 from "../store.service";
13
13
  import * as i2 from "@angular/router";
14
14
  import * as i3 from "../../../../permission/k8s-permission.service";
15
15
  import * as i4 from "./service";
16
+ import * as i5 from "../../../../authorization/public-api";
16
17
  function ProductSelectComponent_span_7_Template(rf, ctx) { if (rf & 1) {
17
18
  i0.ɵɵelementStart(0, "span", 5);
18
19
  i0.ɵɵtext(1);
@@ -155,11 +156,12 @@ export const PRODUCT_ICON_MAP = {
155
156
  'console-cec': 'cloud_edge_collaboration',
156
157
  };
157
158
  export class ProductSelectComponent {
158
- constructor(store, router, k8sPermission, productSelectService) {
159
+ constructor(store, router, k8sPermission, productSelectService, authState) {
159
160
  this.store = store;
160
161
  this.router = router;
161
162
  this.k8sPermission = k8sPermission;
162
163
  this.productSelectService = productSelectService;
164
+ this.authState = authState;
163
165
  this.platformPath = '/console-platform';
164
166
  this.PRODUCT_ICON_MAP = PRODUCT_ICON_MAP;
165
167
  this.allProducts$ = combineLatest([
@@ -188,7 +190,7 @@ export class ProductSelectComponent {
188
190
  }
189
191
  jump(entrypoint, ssoEnabled, target = '_self') {
190
192
  window.open(ssoEnabled
191
- ? `${entrypoint}?id_token=${window.localStorage.getItem(readStorageToken()?.idToken)}`
193
+ ? `${entrypoint}?id_token=${this.authState.stateSnapshot.idToken}`
192
194
  : entrypoint, target);
193
195
  }
194
196
  navigateToPortal(event) {
@@ -230,7 +232,7 @@ export class ProductSelectComponent {
230
232
  isPortalProduct(item) {
231
233
  return item.metadata.name === 'console-portal';
232
234
  }
233
- static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService)); }; }
235
+ static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService), i0.ɵɵdirectiveInject(i5.AuthorizationStateService)); }; }
234
236
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProductSelectComponent, selectors: [["acl-product-select"]], inputs: { platformPath: "platformPath", current: "current", title: "title" }, decls: 17, vars: 36, consts: [["auiTooltipType", "plain", "auiTooltipTrigger", "click", "auiTooltipPosition", "bottom start", "auiTooltipClass", "aui-product-select-tooltip", 1, "acl-product-select", 3, "auiTooltip", "auiTooltipHideOnClick", "disabled", "title", "ngClass"], ["class", "acl-product-select__title", 4, "ngIf"], ["icon", "menu_dot_s", "size", "16px", "auiTooltipPosition", "bottom start", 3, "auiTooltip", "auiTooltipDisabled"], ["menu", ""], ["loading", ""], [1, "acl-product-select__title"], [1, "menu"], [4, "ngIf", "ngIfElse"], ["class", "portal", 3, "ngClass", 4, "ngIf"], ["class", "menu__item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "menu__item", 3, "ngClass", "click"], [1, "menu__item-icon"], ["logo", ""], [1, "menu__item-info", "tw-line-clamp-2"], ["class", "check-triangle-badge", "icon", "check", 4, "ngIf"], ["size", "50", 1, "acl-colorful-icon", 3, "ngClass", "icon"], [1, "default", 3, "src"], ["icon", "check", 1, "check-triangle-badge"], [1, "portal", 3, "ngClass"], [1, "portal__item", 3, "click"], ["icon", "home_s"], [2, "height", "148px", 3, "loading"]], template: function ProductSelectComponent_Template(rf, ctx) { if (rf & 1) {
235
237
  i0.ɵɵelementStart(0, "button", 0);
236
238
  i0.ɵɵpipe(1, "async");
@@ -260,11 +262,11 @@ export class ProductSelectComponent {
260
262
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProductSelectComponent, [{
261
263
  type: Component,
262
264
  args: [{ selector: 'acl-product-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"acl-product-select\"\n [auiTooltip]=\"menu\"\n auiTooltipType=\"plain\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipClass=\"aui-product-select-tooltip\"\n [auiTooltipHideOnClick]=\"true\"\n [disabled]=\"disabled$ | async\"\n [title]=\"\n (disabled$ | async)\n ? ''\n : (allProducts$ | async | pure: getProductTitle:title:current | translate)\n \"\n [ngClass]=\"{ 'acl-product-select--disabled': disabled$ | async }\"\n>\n <span\n *ngIf=\"\n allProducts$ | async | pure: getProductTitle:title:current as productTitle\n \"\n class=\"acl-product-select__title\"\n >\n {{ productTitle | translate }}\n </span>\n <aui-icon\n icon=\"menu_dot_s\"\n size=\"16px\"\n [auiTooltip]=\"'no_product_and_contact_admin' | translate\"\n [auiTooltipDisabled]=\"!(disabled$ | async)\"\n auiTooltipPosition=\"bottom start\"\n ></aui-icon>\n</button>\n<ng-template #menu>\n <div class=\"menu\">\n <ng-container *ngIf=\"selectableProducts$ | async as products; else loading\">\n <div\n class=\"menu__item\"\n [ngClass]=\"{\n 'menu__item--active': item | pure: isProductActive:current\n }\"\n *ngFor=\"let item of products; trackBy: trackFn\"\n (click)=\"navigateToProduct(item, $event)\"\n >\n <div class=\"menu__item-icon\">\n <ng-container\n *ngIf=\"\n item.spec.packType !== 'Integrated' && !item.spec.logo;\n else logo\n \"\n >\n <aui-icon\n class=\"acl-colorful-icon\"\n [ngClass]=\"{\n highlight: item | pure: isProductActive:current\n }\"\n size=\"50\"\n [icon]=\"'bicolor:' + PRODUCT_ICON_MAP[item.metadata.name]\"\n ></aui-icon>\n </ng-container>\n <ng-template #logo>\n <img\n [src]=\"\n (item.spec.logo | aclImageHeader) ||\n 'images/product-default-logo.png' | aclSafe: 'url'\n \"\n class=\"default\"\n />\n </ng-template>\n </div>\n <div class=\"menu__item-info tw-line-clamp-2\">\n {{ item.spec.displayName | translate: {}:true }}\n </div>\n <aui-icon\n *ngIf=\"item | pure: isProductActive:current\"\n class=\"check-triangle-badge\"\n icon=\"check\"\n ></aui-icon>\n </div>\n </ng-container>\n </div>\n <div\n *ngIf=\"portalProduct$ | async as portalMenu\"\n class=\"portal\"\n [ngClass]=\"{ 'portal--active': isPortal }\"\n >\n <div\n class=\"portal__item\"\n (click)=\"navigateToPortal($event)\"\n >\n <aui-icon icon=\"home_s\"></aui-icon>\n {{ portalMenu.spec.displayName | translate: {}:true }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <acl-loading-mask\n style=\"height: 148px\"\n [loading]=\"true\"\n ></acl-loading-mask>\n</ng-template>\n", styles: ["::ng-deep .aui-product-select-tooltip.aui-tooltip{margin-top:calc((var(--acl-page-header-height) - 32px) / 2 + 4px);background-color:rgb(var(--aui-color-n-10));padding:20px 20px 12px;border-radius:var(--aui-border-radius-l);max-width:840px}.portal{display:flex;justify-content:flex-end}.portal__item{display:flex;align-items:center;height:26px;padding:0 8px;font-size:var(--aui-font-size-l);font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-primary));border-radius:var(--aui-border-radius-m);cursor:pointer}.portal__item:hover{color:rgb(var(--aui-color-p-1))}.portal aui-icon{font-size:var(--aui-icon-size-l);margin-right:8px}.acl-product-select{width:100%;min-height:32px;border-radius:2px;border:none;background:none;padding:4px 8px;cursor:pointer;outline:none;display:flex;align-items:center}.acl-product-select__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acl-product-select--disabled{opacity:.3;cursor:default}.acl-product-select span{margin-right:8px;height:24px;line-height:24px;font-size:18px;font-weight:var(--aui-font-weight-bolder);color:var(--acl-page-header-title-color);white-space:nowrap;word-break:keep-all}.acl-product-select aui-icon{height:16px;color:rgb(var(--aui-color-n-4))}.acl-product-select.isActive,.acl-product-select:not(.acl-product-select--disabled):hover{background-color:rgb(var(--aui-color-primary))}.acl-product-select.isActive aui-icon,.acl-product-select.isActive span,.acl-product-select:not(.acl-product-select--disabled):hover aui-icon,.acl-product-select:not(.acl-product-select--disabled):hover span{color:#fff}::ng-deep .acl-product-select__menu .aui-menu{padding:0;max-width:unset}.menu{display:flex;flex-wrap:wrap;width:calc(100% + 16px)}.menu__item{width:120px;height:148px;display:flex;position:relative;flex-direction:column;border-radius:4px;padding:20px 8px 12px;margin-right:16px;margin-bottom:12px;align-items:center;cursor:pointer;background-color:rgb(var(--aui-color-n-9))}.menu__item:hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active){position:relative}.menu__item:not(.menu__item--active):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.menu__item:not(.menu__item--active).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.menu__item:not(.menu__item--active):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):hover:after{box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-9)),0 0 8px rgba(var(--aui-color-primary),.5)!important}.menu__item-icon{height:60px;width:60px;display:flex;justify-content:center;align-items:center;color:rgb(var(--aui-color-primary));margin-bottom:12px}.menu__item-icon img{display:block;width:50px}.menu__item-icon img.activated{display:none}.menu__item-info{min-width:0;height:44px;line-height:22px;font-size:16px;font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-n-1));text-align:center;overflow:hidden;overflow-wrap:anywhere}.menu__item--active{border:1px solid rgb(var(--aui-color-n-7));border-radius:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-primary));border-color:rgb(var(--aui-color-primary));color:#fff;cursor:default;position:relative}.menu__item--active:hover{box-shadow:none}.menu__item--active .menu__item-info{color:#fff;width:90px;height:40px}acl-loading-mask{height:148px;width:800px;display:flex;align-items:center;justify-content:center}\n"] }]
263
- }], function () { return [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }]; }, { platformPath: [{
265
+ }], function () { return [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }, { type: i5.AuthorizationStateService }]; }, { platformPath: [{
264
266
  type: Input
265
267
  }], current: [{
266
268
  type: Input
267
269
  }], title: [{
268
270
  type: Input
269
271
  }] }); })();
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztJQ0ovQywrQkFLQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU87OztJQURMLGVBQ0Y7SUFERSxzRUFDRjs7OztJQXFCUSw2QkFLQztJQUNDLCtCQU9ZOztJQUNkLDBCQUFlOzs7O0lBTlgsZUFFRTtJQUZG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QUUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQixFQUFFLE9BQXlCO1FBQzNELE9BQU8sQ0FDTCxPQUFPO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7dUZBNUhVLHNCQUFzQjtvRUFBdEIsc0JBQXNCO1lDcEVuQyxpQ0FlQzs7Ozs7OztZQUNDLHlFQU9POzs7WUFDUCwrQkFNWTs7O1lBQ2QsaUJBQVM7WUFDVCwwSEE2RGM7WUFFZCwwSEFLYzs7O1lBbEdaLGdDQUFtQiwrQkFBQSxpREFBQSx5TEFBQSw4RUFBQTtZQWVoQixlQUNtRTtZQURuRSxrSUFDbUU7WUFTcEUsZUFBeUQ7WUFBekQsbUZBQXlELDhEQUFBOzs7dUZEeUNoRCxzQkFBc0I7Y0FObEMsU0FBUzsyQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTtzS0FJL0MsWUFBWTtrQkFEWCxLQUFLO1lBSU4sT0FBTztrQkFETixLQUFLO1lBSU4sS0FBSztrQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHJlYWRTdG9yYWdlVG9rZW4gfSBmcm9tICcuLi8uLi8uLi8uLi9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgU3RyaW5nTWFwLFxuICBQcm9kdWN0RW50cnksXG4gIHB1Ymxpc2hSZWYsXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBLOHNQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Blcm1pc3Npb24vazhzLXBlcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0RW50cnlOYW1lIH0gZnJvbSAnLi4vY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbkxheW91dFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQcm9kdWN0U2VsZWN0U2VydmljZSB9IGZyb20gJy4vc2VydmljZSc7XG5cbmNvbnN0IEFETUlOX1ZJRVdfTUFQOiB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICB2aWV3OiBzdHJpbmc7XG4gICAgaHJlZjogc3RyaW5nO1xuICB9O1xufSA9IHtcbiAgJ2NvbnNvbGUtcGxhdGZvcm0nOiB7XG4gICAgaHJlZjogJy9tYW5hZ2UtcGxhdGZvcm0nLFxuICAgIHZpZXc6ICdwbGF0Zm9ybXZpZXcnLFxuICB9LFxuICAnY29uc29sZS1wcm9qZWN0Jzoge1xuICAgIGhyZWY6ICcvaG9tZS9wcm9qZWN0JyxcbiAgICB2aWV3OiAncHJvamVjdHZpZXcnLFxuICB9LFxuICAnY29uc29sZS1zZWN1cml0eSc6IHtcbiAgICBocmVmOiAnL2NvbnRhaW5lci1zZWN1cml0eS9ob21lJyxcbiAgICB2aWV3OiAnY29udGFpbmVyc2VjdXJpdHl2aWV3JyxcbiAgfSxcbn07XG5cbmNvbnN0IFZJRVcgPSB7XG4gIHR5cGU6ICd2aWV3cycsXG4gIGFwaUdyb3VwOiAnYXV0aC5hbGF1ZGEuaW8nLFxufTtcblxuY29uc3QgUFJFRklYID0gJ2NvbnNvbGUtJztcblxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfSUNPTl9NQVA6IFN0cmluZ01hcCA9IHtcbiAgJ2NvbnNvbGUtYWNwJzogJ2FjcCcsXG4gICdjb25zb2xlLWFzbSc6ICdhc20nLFxuICAnY29uc29sZS1kZXZvcHMnOiAnZGV2b3BzJyxcbiAgLy8gY29uc29sZS1lLWFhbSBwcmVmaXgg5Li65LqG5YW85a656buY6K6k5o6S5bqP77yM562J5ZCO57ut5o6S5bqP5pa55qGI5Ye65p2l5Y+v5Lul5pS55oiQY29uc29sZS1hYW1cbiAgJ2NvbnNvbGUtZS1hYW0nOiAnYXBwX3N0b3JlJyxcbiAgJ2NvbnNvbGUtc2VjdXJpdHknOiAnYnVnX3NlYXJjaCcsXG4gICdjb25zb2xlLXBsYXRmb3JtJzogJ3BsYXRmb3JtX21hbmFnZW1lbnQnLFxuICAnY29uc29sZS1wcm9qZWN0JzogJ3Byb2plY3RfbWFuYWdlbWVudCcsXG4gICdjb25zb2xlLWRhdGFzZXJ2aWNlcyc6ICdkYXRhX3NlcnZpY2VzJyxcbiAgJ2NvbnNvbGUtY2VjJzogJ2Nsb3VkX2VkZ2VfY29sbGFib3JhdGlvbicsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcHJvZHVjdC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHBsYXRmb3JtUGF0aCA9ICcvY29uc29sZS1wbGF0Zm9ybSc7XG5cbiAgQElucHV0KClcbiAgY3VycmVudD86IFByb2R1Y3RFbnRyeU5hbWU7XG5cbiAgQElucHV0KClcbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgUFJPRFVDVF9JQ09OX01BUCA9IFBST0RVQ1RfSUNPTl9NQVA7XG5cbiAgYWxsUHJvZHVjdHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5wcm9kdWN0U2VsZWN0U2VydmljZS5yZWxvYWQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zdG9yZS5zZWxlY3RBbGxQcm9kdWN0cygpKSxcbiAgICApLFxuICAgIHRoaXMuazhzUGVybWlzc2lvbi5pc0FsbG93ZWQoe1xuICAgICAgdHlwZTogVklFVyxcbiAgICAgIG5hbWU6IE9iamVjdC52YWx1ZXMoQURNSU5fVklFV19NQVApLm1hcChpdGVtID0+IGl0ZW0udmlldyksXG4gICAgfSksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbcHJvZHVjdHMsIHZpZXdzXSkgPT4ge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKEFETUlOX1ZJRVdfTUFQKTtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25NYXA6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgICAgIH0gPSB7fTtcbiAgICAgIGtleXMuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4gKHBlcm1pc3Npb25NYXBba2V5XSA9IHZpZXdzW2luZGV4XSkpO1xuICAgICAgcmV0dXJuIHByb2R1Y3RzLmZpbHRlcihwID0+XG4gICAgICAgIGtleXMuaW5jbHVkZXMocC5tZXRhZGF0YS5uYW1lKSA/IHBlcm1pc3Npb25NYXBbcC5tZXRhZGF0YS5uYW1lXSA6IHRydWUsXG4gICAgICApO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBzZWxlY3RhYmxlUHJvZHVjdHMkID0gdGhpcy5hbGxQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocHJvZHVjdHMgPT5cbiAgICAgIChwcm9kdWN0cyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICBwcm9kdWN0ID0+XG4gICAgICAgICAgIXRoaXMuaXNQb3J0YWxQcm9kdWN0KHByb2R1Y3QpICYmXG4gICAgICAgICAgKCFwcm9kdWN0LnN0YXR1cyB8fCBwcm9kdWN0LnN0YXR1cy5oaWRkZW5PblBvcnRhbCAhPT0gdHJ1ZSksXG4gICAgICApLFxuICAgICksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHBvcnRhbFByb2R1Y3QkID0gdGhpcy5hbGxQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocmVzID0+IHJlcy5maW5kKHAgPT4gdGhpcy5pc1BvcnRhbFByb2R1Y3QocCkpKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgZGlzYWJsZWQkID0gdGhpcy5zZWxlY3RhYmxlUHJvZHVjdHMkLnBpcGUoXG4gICAgbWFwKHByb2R1Y3RzID0+ICFwcm9kdWN0cy5sZW5ndGgpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBpc1BvcnRhbCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IENvbW1vbkxheW91dFN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzUGVybWlzc2lvbjogSzhzUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VsZWN0U2VydmljZTogUHJvZHVjdFNlbGVjdFNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzUG9ydGFsID0gdGhpcy5yb3V0ZXIudXJsLnN0YXJ0c1dpdGgoJy9wb3J0YWwnKTtcbiAgfVxuXG4gIGp1bXAoZW50cnlwb2ludDogc3RyaW5nLCBzc29FbmFibGVkOiBib29sZWFuLCB0YXJnZXQgPSAnX3NlbGYnKSB7XG4gICAgd2luZG93Lm9wZW4oXG4gICAgICBzc29FbmFibGVkXG4gICAgICAgID8gYCR7ZW50cnlwb2ludH0/aWRfdG9rZW49JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICAgICAgICByZWFkU3RvcmFnZVRva2VuKCk/LmlkVG9rZW4sXG4gICAgICAgICAgKX1gXG4gICAgICAgIDogZW50cnlwb2ludCxcbiAgICAgIHRhcmdldCxcbiAgICApO1xuICB9XG5cbiAgbmF2aWdhdGVUb1BvcnRhbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgd2luZG93Lm9wZW4oJy9jb25zb2xlLXBvcnRhbCcsICdfc2VsZicpO1xuICB9XG5cbiAgbmF2aWdhdGVUb1Byb2R1Y3QoaXRlbTogUHJvZHVjdEVudHJ5LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmlzUHJvZHVjdEFjdGl2ZShpdGVtLCB0aGlzLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdBZG1pblBhZ2UnKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0J1aWxkSW4nKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0ludGVncmF0ZWQnKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGl0ZW0uc3BlYy5zc29FbmFibGVkLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tGbiA9IChfOiBudW1iZXIsIGl0ZW06IFByb2R1Y3RFbnRyeSkgPT4gaXRlbS5tZXRhZGF0YS5uYW1lO1xuXG4gIG5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtOiBQcm9kdWN0RW50cnkpIHtcbiAgICBjb25zdCBocmVmID0gQURNSU5fVklFV19NQVBbaXRlbS5tZXRhZGF0YS5uYW1lXS5ocmVmO1xuICAgIGlmICh0aGlzLnBsYXRmb3JtUGF0aCkge1xuICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5wbGF0Zm9ybVBhdGh9JHtocmVmfWAsICdfc2VsZicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaHJlZl0pO1xuICAgIH1cbiAgfVxuXG4gIGlzUHJvZHVjdEFjdGl2ZShpdGVtOiBQcm9kdWN0RW50cnksIGN1cnJlbnQ6IFByb2R1Y3RFbnRyeU5hbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY3VycmVudCAmJlxuICAgICAgaXRlbS5tZXRhZGF0YS5uYW1lID09PVxuICAgICAgICAoY3VycmVudC5zdGFydHNXaXRoKFBSRUZJWCkgPyBjdXJyZW50IDogUFJFRklYICsgY3VycmVudClcbiAgICApO1xuICB9XG5cbiAgaXNQb3J0YWxQcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSkge1xuICAgIHJldHVybiBpdGVtLm1ldGFkYXRhLm5hbWUgPT09ICdjb25zb2xlLXBvcnRhbCc7XG4gIH1cblxuICBnZXRQcm9kdWN0VGl0bGUgPSAoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RFbnRyeVtdLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY3VycmVudDogUHJvZHVjdEVudHJ5TmFtZSxcbiAgKSA9PlxuICAgIHRpdGxlIHx8XG4gICAgZ2V0KFxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maW5kKHAgPT4gdGhpcy5pc1Byb2R1Y3RBY3RpdmUocCwgY3VycmVudCkpLFxuICAgICAgWydzcGVjJywgJ2Rpc3BsYXlOYW1lJ10sXG4gICAgKTtcbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RcIlxuICBbYXVpVG9vbHRpcF09XCJtZW51XCJcbiAgYXVpVG9vbHRpcFR5cGU9XCJwbGFpblwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwiY2xpY2tcIlxuICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICBhdWlUb29sdGlwQ2xhc3M9XCJhdWktcHJvZHVjdC1zZWxlY3QtdG9vbHRpcFwiXG4gIFthdWlUb29sdGlwSGlkZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gIFt0aXRsZV09XCJcbiAgICAoZGlzYWJsZWQkIHwgYXN5bmMpXG4gICAgICA/ICcnXG4gICAgICA6IChhbGxQcm9kdWN0cyQgfCBhc3luYyB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZTp0aXRsZTpjdXJyZW50IHwgdHJhbnNsYXRlKVxuICBcIlxuICBbbmdDbGFzc109XCJ7ICdhY2wtcHJvZHVjdC1zZWxlY3QtLWRpc2FibGVkJzogZGlzYWJsZWQkIHwgYXN5bmMgfVwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJcbiAgICAgIGFsbFByb2R1Y3RzJCB8IGFzeW5jIHwgcHVyZTogZ2V0UHJvZHVjdFRpdGxlOnRpdGxlOmN1cnJlbnQgYXMgcHJvZHVjdFRpdGxlXG4gICAgXCJcbiAgICBjbGFzcz1cImFjbC1wcm9kdWN0LXNlbGVjdF9fdGl0bGVcIlxuICA+XG4gICAge3sgcHJvZHVjdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cIm1lbnVfZG90X3NcIlxuICAgIHNpemU9XCIxNnB4XCJcbiAgICBbYXVpVG9vbHRpcF09XCInbm9fcHJvZHVjdF9hbmRfY29udGFjdF9hZG1pbicgfCB0cmFuc2xhdGVcIlxuICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiIShkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gID48L2F1aS1pY29uPlxuPC9idXR0b24+XG48bmctdGVtcGxhdGUgI21lbnU+XG4gIDxkaXYgY2xhc3M9XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGFibGVQcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0czsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWVudV9faXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbWVudV9faXRlbS0tYWN0aXZlJzogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgIH1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9kdWN0czsgdHJhY2tCeTogdHJhY2tGblwiXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUHJvZHVjdChpdGVtLCAkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfX2l0ZW0taWNvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGl0ZW0uc3BlYy5wYWNrVHlwZSAhPT0gJ0ludGVncmF0ZWQnICYmICFpdGVtLnNwZWMubG9nbztcbiAgICAgICAgICAgICAgZWxzZSBsb2dvXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImFjbC1jb2xvcmZ1bC1pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBbaWNvbl09XCInYmljb2xvcjonICsgUFJPRFVDVF9JQ09OX01BUFtpdGVtLm1ldGFkYXRhLm5hbWVdXCJcbiAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9nbz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAoaXRlbS5zcGVjLmxvZ28gfCBhY2xJbWFnZUhlYWRlcikgfHxcbiAgICAgICAgICAgICAgICAgICdpbWFnZXMvcHJvZHVjdC1kZWZhdWx0LWxvZ28ucG5nJyB8IGFjbFNhZmU6ICd1cmwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV9faXRlbS1pbmZvIHR3LWxpbmUtY2xhbXAtMlwiPlxuICAgICAgICAgIHt7IGl0ZW0uc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpdGVtIHwgcHVyZTogaXNQcm9kdWN0QWN0aXZlOmN1cnJlbnRcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2stdHJpYW5nbGUtYmFkZ2VcIlxuICAgICAgICAgIGljb249XCJjaGVja1wiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJwb3J0YWxQcm9kdWN0JCB8IGFzeW5jIGFzIHBvcnRhbE1lbnVcIlxuICAgIGNsYXNzPVwicG9ydGFsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdwb3J0YWwtLWFjdGl2ZSc6IGlzUG9ydGFsIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3J0YWxfX2l0ZW1cIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qb3J0YWwoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJob21lX3NcIj48L2F1aS1pY29uPlxuICAgICAge3sgcG9ydGFsTWVudS5zcGVjLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlOiB7fTp0cnVlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8YWNsLWxvYWRpbmctbWFza1xuICAgIHN0eWxlPVwiaGVpZ2h0OiAxNDhweFwiXG4gICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gID48L2FjbC1sb2FkaW5nLW1hc2s+XG48L25nLXRlbXBsYXRlPlxuIl19
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7SUNKL0MsK0JBS0M7SUFDQyxZQUNGOztJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsc0VBQ0Y7Ozs7SUFxQlEsNkJBS0M7SUFDQywrQkFPWTs7SUFDZCwwQkFBZTs7OztJQU5YLGVBRUU7SUFG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WUFBWSxHQUFHLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWtCLEVBQUUsT0FBeUI7UUFDM0QsT0FBTyxDQUNMLE9BQU87WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWtCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUM7SUFDakQsQ0FBQzt1RkEzSFUsc0JBQXNCO29FQUF0QixzQkFBc0I7WUNwRW5DLGlDQWVDOzs7Ozs7O1lBQ0MseUVBT087OztZQUNQLCtCQU1ZOzs7WUFDZCxpQkFBUztZQUNULDBIQTZEYztZQUVkLDBIQUtjOzs7WUFsR1osZ0NBQW1CLCtCQUFBLGlEQUFBLHlMQUFBLDhFQUFBO1lBZWhCLGVBQ21FO1lBRG5FLGtJQUNtRTtZQVNwRSxlQUF5RDtZQUF6RCxtRkFBeUQsOERBQUE7Ozt1RkR5Q2hELHNCQUFzQjtjQU5sQyxTQUFTOzJCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzhNQUkvQyxZQUFZO2tCQURYLEtBQUs7WUFJTixPQUFPO2tCQUROLEtBQUs7WUFJTixLQUFLO2tCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGhvcml6YXRpb24vcHVibGljLWFwaSc7XG5pbXBvcnQge1xuICBTdHJpbmdNYXAsXG4gIFByb2R1Y3RFbnRyeSxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEs4c1Blcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGVybWlzc2lvbi9rOHMtcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFbnRyeU5hbWUgfSBmcm9tICcuLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTGF5b3V0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUuc2VydmljZSc7XG5cbmltcG9ydCB7IFByb2R1Y3RTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlJztcblxuY29uc3QgQURNSU5fVklFV19NQVA6IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIHZpZXc6IHN0cmluZztcbiAgICBocmVmOiBzdHJpbmc7XG4gIH07XG59ID0ge1xuICAnY29uc29sZS1wbGF0Zm9ybSc6IHtcbiAgICBocmVmOiAnL21hbmFnZS1wbGF0Zm9ybScsXG4gICAgdmlldzogJ3BsYXRmb3JtdmlldycsXG4gIH0sXG4gICdjb25zb2xlLXByb2plY3QnOiB7XG4gICAgaHJlZjogJy9ob21lL3Byb2plY3QnLFxuICAgIHZpZXc6ICdwcm9qZWN0dmlldycsXG4gIH0sXG4gICdjb25zb2xlLXNlY3VyaXR5Jzoge1xuICAgIGhyZWY6ICcvY29udGFpbmVyLXNlY3VyaXR5L2hvbWUnLFxuICAgIHZpZXc6ICdjb250YWluZXJzZWN1cml0eXZpZXcnLFxuICB9LFxufTtcblxuY29uc3QgVklFVyA9IHtcbiAgdHlwZTogJ3ZpZXdzJyxcbiAgYXBpR3JvdXA6ICdhdXRoLmFsYXVkYS5pbycsXG59O1xuXG5jb25zdCBQUkVGSVggPSAnY29uc29sZS0nO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9JQ09OX01BUDogU3RyaW5nTWFwID0ge1xuICAnY29uc29sZS1hY3AnOiAnYWNwJyxcbiAgJ2NvbnNvbGUtYXNtJzogJ2FzbScsXG4gICdjb25zb2xlLWRldm9wcyc6ICdkZXZvcHMnLFxuICAvLyBjb25zb2xlLWUtYWFtIHByZWZpeCDkuLrkuoblhbzlrrnpu5jorqTmjpLluo/vvIznrYnlkI7nu63mjpLluo/mlrnmoYjlh7rmnaXlj6/ku6XmlLnmiJBjb25zb2xlLWFhbVxuICAnY29uc29sZS1lLWFhbSc6ICdhcHBfc3RvcmUnLFxuICAnY29uc29sZS1zZWN1cml0eSc6ICdidWdfc2VhcmNoJyxcbiAgJ2NvbnNvbGUtcGxhdGZvcm0nOiAncGxhdGZvcm1fbWFuYWdlbWVudCcsXG4gICdjb25zb2xlLXByb2plY3QnOiAncHJvamVjdF9tYW5hZ2VtZW50JyxcbiAgJ2NvbnNvbGUtZGF0YXNlcnZpY2VzJzogJ2RhdGFfc2VydmljZXMnLFxuICAnY29uc29sZS1jZWMnOiAnY2xvdWRfZWRnZV9jb2xsYWJvcmF0aW9uJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1wcm9kdWN0LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcGxhdGZvcm1QYXRoID0gJy9jb25zb2xlLXBsYXRmb3JtJztcblxuICBASW5wdXQoKVxuICBjdXJyZW50PzogUHJvZHVjdEVudHJ5TmFtZTtcblxuICBASW5wdXQoKVxuICB0aXRsZT86IHN0cmluZztcblxuICBQUk9EVUNUX0lDT05fTUFQID0gUFJPRFVDVF9JQ09OX01BUDtcblxuICBhbGxQcm9kdWN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3RTZXJ2aWNlLnJlbG9hZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN0b3JlLnNlbGVjdEFsbFByb2R1Y3RzKCkpLFxuICAgICksXG4gICAgdGhpcy5rOHNQZXJtaXNzaW9uLmlzQWxsb3dlZCh7XG4gICAgICB0eXBlOiBWSUVXLFxuICAgICAgbmFtZTogT2JqZWN0LnZhbHVlcyhBRE1JTl9WSUVXX01BUCkubWFwKGl0ZW0gPT4gaXRlbS52aWV3KSxcbiAgICB9KSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtwcm9kdWN0cywgdmlld3NdKSA9PiB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoQURNSU5fVklFV19NQVApO1xuICAgICAgY29uc3QgcGVybWlzc2lvbk1hcDoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICAgICAgfSA9IHt9O1xuICAgICAga2V5cy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiAocGVybWlzc2lvbk1hcFtrZXldID0gdmlld3NbaW5kZXhdKSk7XG4gICAgICByZXR1cm4gcHJvZHVjdHMuZmlsdGVyKHAgPT5cbiAgICAgICAga2V5cy5pbmNsdWRlcyhwLm1ldGFkYXRhLm5hbWUpID8gcGVybWlzc2lvbk1hcFtwLm1ldGFkYXRhLm5hbWVdIDogdHJ1ZSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHNlbGVjdGFibGVQcm9kdWN0cyQgPSB0aGlzLmFsbFByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChwcm9kdWN0cyA9PlxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgIHByb2R1Y3QgPT5cbiAgICAgICAgICAhdGhpcy5pc1BvcnRhbFByb2R1Y3QocHJvZHVjdCkgJiZcbiAgICAgICAgICAoIXByb2R1Y3Quc3RhdHVzIHx8IHByb2R1Y3Quc3RhdHVzLmhpZGRlbk9uUG9ydGFsICE9PSB0cnVlKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgcG9ydGFsUHJvZHVjdCQgPSB0aGlzLmFsbFByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChyZXMgPT4gcmVzLmZpbmQocCA9PiB0aGlzLmlzUG9ydGFsUHJvZHVjdChwKSkpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBkaXNhYmxlZCQgPSB0aGlzLnNlbGVjdGFibGVQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocHJvZHVjdHMgPT4gIXByb2R1Y3RzLmxlbmd0aCksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGlzUG9ydGFsID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogQ29tbW9uTGF5b3V0U3RvcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNQZXJtaXNzaW9uOiBLOHNQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTZWxlY3RTZXJ2aWNlOiBQcm9kdWN0U2VsZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdGF0ZTogQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNQb3J0YWwgPSB0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL3BvcnRhbCcpO1xuICB9XG5cbiAganVtcChlbnRyeXBvaW50OiBzdHJpbmcsIHNzb0VuYWJsZWQ6IGJvb2xlYW4sIHRhcmdldCA9ICdfc2VsZicpIHtcbiAgICB3aW5kb3cub3BlbihcbiAgICAgIHNzb0VuYWJsZWRcbiAgICAgICAgPyBgJHtlbnRyeXBvaW50fT9pZF90b2tlbj0ke3RoaXMuYXV0aFN0YXRlLnN0YXRlU25hcHNob3QuaWRUb2tlbn1gXG4gICAgICAgIDogZW50cnlwb2ludCxcbiAgICAgIHRhcmdldCxcbiAgICApO1xuICB9XG5cbiAgbmF2aWdhdGVUb1BvcnRhbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgd2luZG93Lm9wZW4oJy9jb25zb2xlLXBvcnRhbCcsICdfc2VsZicpO1xuICB9XG5cbiAgbmF2aWdhdGVUb1Byb2R1Y3QoaXRlbTogUHJvZHVjdEVudHJ5LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmlzUHJvZHVjdEFjdGl2ZShpdGVtLCB0aGlzLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdBZG1pblBhZ2UnKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0J1aWxkSW4nKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0ludGVncmF0ZWQnKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGl0ZW0uc3BlYy5zc29FbmFibGVkLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tGbiA9IChfOiBudW1iZXIsIGl0ZW06IFByb2R1Y3RFbnRyeSkgPT4gaXRlbS5tZXRhZGF0YS5uYW1lO1xuXG4gIG5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtOiBQcm9kdWN0RW50cnkpIHtcbiAgICBjb25zdCBocmVmID0gQURNSU5fVklFV19NQVBbaXRlbS5tZXRhZGF0YS5uYW1lXS5ocmVmO1xuICAgIGlmICh0aGlzLnBsYXRmb3JtUGF0aCkge1xuICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5wbGF0Zm9ybVBhdGh9JHtocmVmfWAsICdfc2VsZicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaHJlZl0pO1xuICAgIH1cbiAgfVxuXG4gIGlzUHJvZHVjdEFjdGl2ZShpdGVtOiBQcm9kdWN0RW50cnksIGN1cnJlbnQ6IFByb2R1Y3RFbnRyeU5hbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY3VycmVudCAmJlxuICAgICAgaXRlbS5tZXRhZGF0YS5uYW1lID09PVxuICAgICAgICAoY3VycmVudC5zdGFydHNXaXRoKFBSRUZJWCkgPyBjdXJyZW50IDogUFJFRklYICsgY3VycmVudClcbiAgICApO1xuICB9XG5cbiAgaXNQb3J0YWxQcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSkge1xuICAgIHJldHVybiBpdGVtLm1ldGFkYXRhLm5hbWUgPT09ICdjb25zb2xlLXBvcnRhbCc7XG4gIH1cblxuICBnZXRQcm9kdWN0VGl0bGUgPSAoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RFbnRyeVtdLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY3VycmVudDogUHJvZHVjdEVudHJ5TmFtZSxcbiAgKSA9PlxuICAgIHRpdGxlIHx8XG4gICAgZ2V0KFxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maW5kKHAgPT4gdGhpcy5pc1Byb2R1Y3RBY3RpdmUocCwgY3VycmVudCkpLFxuICAgICAgWydzcGVjJywgJ2Rpc3BsYXlOYW1lJ10sXG4gICAgKTtcbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RcIlxuICBbYXVpVG9vbHRpcF09XCJtZW51XCJcbiAgYXVpVG9vbHRpcFR5cGU9XCJwbGFpblwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwiY2xpY2tcIlxuICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICBhdWlUb29sdGlwQ2xhc3M9XCJhdWktcHJvZHVjdC1zZWxlY3QtdG9vbHRpcFwiXG4gIFthdWlUb29sdGlwSGlkZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gIFt0aXRsZV09XCJcbiAgICAoZGlzYWJsZWQkIHwgYXN5bmMpXG4gICAgICA/ICcnXG4gICAgICA6IChhbGxQcm9kdWN0cyQgfCBhc3luYyB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZTp0aXRsZTpjdXJyZW50IHwgdHJhbnNsYXRlKVxuICBcIlxuICBbbmdDbGFzc109XCJ7ICdhY2wtcHJvZHVjdC1zZWxlY3QtLWRpc2FibGVkJzogZGlzYWJsZWQkIHwgYXN5bmMgfVwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJcbiAgICAgIGFsbFByb2R1Y3RzJCB8IGFzeW5jIHwgcHVyZTogZ2V0UHJvZHVjdFRpdGxlOnRpdGxlOmN1cnJlbnQgYXMgcHJvZHVjdFRpdGxlXG4gICAgXCJcbiAgICBjbGFzcz1cImFjbC1wcm9kdWN0LXNlbGVjdF9fdGl0bGVcIlxuICA+XG4gICAge3sgcHJvZHVjdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cIm1lbnVfZG90X3NcIlxuICAgIHNpemU9XCIxNnB4XCJcbiAgICBbYXVpVG9vbHRpcF09XCInbm9fcHJvZHVjdF9hbmRfY29udGFjdF9hZG1pbicgfCB0cmFuc2xhdGVcIlxuICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiIShkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gID48L2F1aS1pY29uPlxuPC9idXR0b24+XG48bmctdGVtcGxhdGUgI21lbnU+XG4gIDxkaXYgY2xhc3M9XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGFibGVQcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0czsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWVudV9faXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbWVudV9faXRlbS0tYWN0aXZlJzogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgIH1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9kdWN0czsgdHJhY2tCeTogdHJhY2tGblwiXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUHJvZHVjdChpdGVtLCAkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfX2l0ZW0taWNvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGl0ZW0uc3BlYy5wYWNrVHlwZSAhPT0gJ0ludGVncmF0ZWQnICYmICFpdGVtLnNwZWMubG9nbztcbiAgICAgICAgICAgICAgZWxzZSBsb2dvXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImFjbC1jb2xvcmZ1bC1pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBbaWNvbl09XCInYmljb2xvcjonICsgUFJPRFVDVF9JQ09OX01BUFtpdGVtLm1ldGFkYXRhLm5hbWVdXCJcbiAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9nbz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAoaXRlbS5zcGVjLmxvZ28gfCBhY2xJbWFnZUhlYWRlcikgfHxcbiAgICAgICAgICAgICAgICAgICdpbWFnZXMvcHJvZHVjdC1kZWZhdWx0LWxvZ28ucG5nJyB8IGFjbFNhZmU6ICd1cmwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV9faXRlbS1pbmZvIHR3LWxpbmUtY2xhbXAtMlwiPlxuICAgICAgICAgIHt7IGl0ZW0uc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpdGVtIHwgcHVyZTogaXNQcm9kdWN0QWN0aXZlOmN1cnJlbnRcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2stdHJpYW5nbGUtYmFkZ2VcIlxuICAgICAgICAgIGljb249XCJjaGVja1wiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJwb3J0YWxQcm9kdWN0JCB8IGFzeW5jIGFzIHBvcnRhbE1lbnVcIlxuICAgIGNsYXNzPVwicG9ydGFsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdwb3J0YWwtLWFjdGl2ZSc6IGlzUG9ydGFsIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3J0YWxfX2l0ZW1cIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qb3J0YWwoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJob21lX3NcIj48L2F1aS1pY29uPlxuICAgICAge3sgcG9ydGFsTWVudS5zcGVjLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlOiB7fTp0cnVlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8YWNsLWxvYWRpbmctbWFza1xuICAgIHN0eWxlPVwiaGVpZ2h0OiAxNDhweFwiXG4gICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gID48L2FjbC1sb2FkaW5nLW1hc2s+XG48L25nLXRlbXBsYXRlPlxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alauda-fe/common",
3
- "version": "1.3.0-beta.1",
3
+ "version": "1.3.0-beta.2",
4
4
  "description": "Alauda frontend team common codes.",
5
5
  "author": "Alauda Frontend",
6
6
  "license": "MIT",
@@ -1,5 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
+ import { AuthorizationStateService } from '../../../../authorization/public-api';
3
4
  import { StringMap, ProductEntry } from '../../../../core/public-api';
4
5
  import { K8sPermissionService } from '../../../../permission/k8s-permission.service';
5
6
  import { ProductEntryName } from '../context.service';
@@ -12,6 +13,7 @@ export declare class ProductSelectComponent implements OnInit {
12
13
  private readonly router;
13
14
  private readonly k8sPermission;
14
15
  private readonly productSelectService;
16
+ private readonly authState;
15
17
  platformPath: string;
16
18
  current?: ProductEntryName;
17
19
  title?: string;
@@ -21,7 +23,7 @@ export declare class ProductSelectComponent implements OnInit {
21
23
  portalProduct$: import("rxjs").Observable<ProductEntry>;
22
24
  disabled$: import("rxjs").Observable<boolean>;
23
25
  isPortal: boolean;
24
- constructor(store: CommonLayoutStoreService, router: Router, k8sPermission: K8sPermissionService, productSelectService: ProductSelectService);
26
+ constructor(store: CommonLayoutStoreService, router: Router, k8sPermission: K8sPermissionService, productSelectService: ProductSelectService, authState: AuthorizationStateService);
25
27
  ngOnInit(): void;
26
28
  jump(entrypoint: string, ssoEnabled: boolean, target?: string): void;
27
29
  navigateToPortal(event: MouseEvent): void;