@c8y/ngx-components 1018.0.229 → 1018.0.232
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/common/ApplicationOptions.d.ts +2 -2
- package/core/login/credentials.component.d.ts +1 -3
- package/core/login/login.component.d.ts +3 -1
- package/esm2020/core/common/ApplicationOptions.mjs +1 -1
- package/esm2020/core/login/credentials.component.mjs +14 -17
- package/esm2020/core/login/login.component.mjs +18 -15
- package/esm2020/widgets/implementations/map/map-widget.component.mjs +26 -11
- package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs +27 -10
- package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +70 -70
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs +18 -6
- package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +70 -70
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts +7 -4
|
@@ -112,8 +112,8 @@ export declare class ApplicationOptions {
|
|
|
112
112
|
hideNavigator?: boolean;
|
|
113
113
|
/** Show tabs horizontally or vertically. */
|
|
114
114
|
tabsHorizontal?: boolean;
|
|
115
|
-
/** Additional link to display on login screen. */
|
|
116
|
-
loginExtraLink?: LoginExtraLink;
|
|
115
|
+
/** Additional link(s) to display on login screen. */
|
|
116
|
+
loginExtraLink?: LoginExtraLink | LoginExtraLink[];
|
|
117
117
|
/** Enable or disable storage limitation feature. */
|
|
118
118
|
storageLimitationFeatureEnabled?: boolean;
|
|
119
119
|
/** Name of company handling support requests from app users (displayed in notification message). */
|
|
@@ -2,7 +2,6 @@ import { OnInit, EventEmitter } from '@angular/core';
|
|
|
2
2
|
import { LoginService } from './login.service';
|
|
3
3
|
import { ICredentials } from '@c8y/client';
|
|
4
4
|
import { AlertService } from '../alert/alert.service';
|
|
5
|
-
import { AppStateService } from '../common/ui-state.service';
|
|
6
5
|
import { LoginViews } from './login.model';
|
|
7
6
|
import { CredentialsFromQueryParamsService } from './credentials-from-query-params.service';
|
|
8
7
|
import { CredentialsComponentParams } from './credentials-component-params';
|
|
@@ -10,7 +9,6 @@ import * as i0 from "@angular/core";
|
|
|
10
9
|
export declare class CredentialsComponent implements OnInit {
|
|
11
10
|
loginService: LoginService;
|
|
12
11
|
alert: AlertService;
|
|
13
|
-
ui: AppStateService;
|
|
14
12
|
private credentialsFromQueryParamsService;
|
|
15
13
|
onChangeView: EventEmitter<any>;
|
|
16
14
|
loginViewParams: CredentialsComponentParams;
|
|
@@ -23,7 +21,7 @@ export declare class CredentialsComponent implements OnInit {
|
|
|
23
21
|
showTenant: boolean;
|
|
24
22
|
private readonly PASSWORD_RESET_HEADER_NAME;
|
|
25
23
|
private readonly NO_PHONE_HEADER_NAME;
|
|
26
|
-
constructor(loginService: LoginService, alert: AlertService,
|
|
24
|
+
constructor(loginService: LoginService, alert: AlertService, credentialsFromQueryParamsService: CredentialsFromQueryParamsService);
|
|
27
25
|
ngOnInit(): void;
|
|
28
26
|
redirectToOauth(): void;
|
|
29
27
|
/**
|
|
@@ -6,12 +6,14 @@ import { LoginViews } from './login.model';
|
|
|
6
6
|
import { AlertService } from '../alert/alert.service';
|
|
7
7
|
import { CredentialsFromQueryParamsService } from './credentials-from-query-params.service';
|
|
8
8
|
import { CredentialsComponentParams } from './credentials-component-params';
|
|
9
|
+
import { AppStateService } from '../common/ui-state.service';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
export declare class LoginComponent implements OnInit, OnDestroy {
|
|
11
12
|
loginService: LoginService;
|
|
12
13
|
private options;
|
|
13
14
|
private alert;
|
|
14
15
|
private credentialsFromQueryParamsService;
|
|
16
|
+
ui: AppStateService;
|
|
15
17
|
currentView: LoginViews;
|
|
16
18
|
LOGIN_VIEWS: typeof LoginViews;
|
|
17
19
|
disabled: boolean;
|
|
@@ -25,7 +27,7 @@ export declare class LoginComponent implements OnInit, OnDestroy {
|
|
|
25
27
|
/**
|
|
26
28
|
* Just DI.
|
|
27
29
|
*/
|
|
28
|
-
constructor(loginService: LoginService, options: OptionsService, alert: AlertService, credentialsFromQueryParamsService: CredentialsFromQueryParamsService);
|
|
30
|
+
constructor(loginService: LoginService, options: OptionsService, alert: AlertService, credentialsFromQueryParamsService: CredentialsFromQueryParamsService, ui: AppStateService);
|
|
29
31
|
ngOnInit(): void;
|
|
30
32
|
ngOnDestroy(): void;
|
|
31
33
|
handleLoginTemplate(event: any): void;
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export class ApplicationOptions {
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBb005QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYiBTREsgdmVyc2lvbiAqL1xuICB3ZWJTZGtWZXJzaW9uPzogc3RyaW5nO1xuICAvKiogU2V0IHRvIGB0cnVlYCBpZiB0aGUgYXBwbGljYXRpb24gaXMgaHlicmlkIGFuZCB1c2VzIEFuZ3VsYXIgYW5kIEFuZ3VsYXJKUyBzaW11bHRhbmVvdXNseS4gKi9cbiAgdXBncmFkZT86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRoZSBicmFuZGluZyBlbnRyeSBmaWxlLiAoU2V0IGl0IHRvIGZhbHNlIHRvIGRpc2FibGUgYW55IHN0eWxpbmcuIFlvdSBjYW4gaGFuZGxlIHRoZSBzdHlsaW5nIHRoZW4gb24geW91ciBvd24gZS5nLiBpbiBhbiBhbmd1bGFyLmpzb24gZmlsZSB1c2luZyBuZy1jbGkpICovXG4gIGJyYW5kaW5nRW50cnk/OiBzdHJpbmcgfCBib29sZWFuO1xuICAvKiogUGF0aCB0byB0c2NjbmZpZy5qc29uIGZpbGUgaWYgVHlwZVNjcmlwdCBpcyB1c2VkIChkZWZhdWx0OiAuL3RzY29uZmlnLmpzb24pLiAqL1xuICB0c0NvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBFbnRyeSBtb2R1bGUgZm9yIEFuZ3VsYXIgY29tcGlsZXIgKG9ubHkgdXNlZCB3aXRoIGxhenkgbG9hZGVkIHJvdXRlcyksIGUuZy4gYCdhcHAubW9kdWxlLnRzI0FwcE1vZHVsZSdgLiAqL1xuICBlbnRyeU1vZHVsZT86IHN0cmluZztcbiAgLyoqIFBhdGggdG8gY3VzdG9tIGluZGV4Lmh0bWwgKG90aGVyd2lzZSBkZWZhdWx0IG9uZSB3aWxsIGJlIHVzZWQpLiAqL1xuICBpbmRleFRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogVVJMIHRvIGR5bmFtaWNhbGx5IGZldGNoZWQgb3B0aW9ucy4gKi9cbiAgZHluYW1pY09wdGlvbnNVcmw/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZmF2aWNvbi4gKi9cbiAgZmF2aWNvblVybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byAqLmNzcyBmaWxlIHdoaWNoIHdpbGwgcmVwbGFjZSBkZWZhdWx0IGJyYW5kaW5nLiAqL1xuICBicmFuZGluZ1VybD86IHN0cmluZztcbiAgLyoqIE9iamVjdCB3aXRoIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBDU1MgY3VzdG9tIHZhcmlhYmxlcy4gKi9cbiAgYnJhbmRpbmdDc3NWYXJzPzogQnJhbmRpbmdDc3NWYXJzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgb3Igb3ZlcnJpZGluZyBsYW5ndWFnZXMgYXZhaWxhYmxlIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIGFuZCBpdHMgdmFsdWVzIGFyZSBvYmplY3RzIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAtIGBuYW1lYDogRW5nbGlzaCBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgbmF0aXZlTmFtZWA6IG5hdGl2ZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgdXJsYDogZnVsbCBVUkwgdG8gSlNPTiBmaWxlIHdpdGggY29tcGlsZWQgdHJhbnNsYXRpb25zO1xuICAgKiAgICBpZiBub3QgZGVmaW5lZCwgdHJhbnNsYXRpb25zIHdpbGwgYmUgbG9hZGVkIGZyb20gYCR7bG9jYWxlUGF0aH0vJHtsYW5nQ29kZX0uanNvbmAuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYGpzb25cbiAgICogXCJsYW5ndWFnZXNcIjoge1xuICAgKiAgIFwiZGVcIjoge1xuICAgKiAgICAgXCJuYW1lXCI6IFwiR2VybWFuXCIsXG4gICAqICAgICBcIm5hdGl2ZU5hbWVcIjogXCJEZXV0c2NoXCIsXG4gICAqICAgICBcInVybFwiOiBcIi9hcHBzL3B1YmxpYy91aS1hc3NldHMvZGUuanNvblwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbGFuZ3VhZ2VzPzogTGFuZ3VhZ2VzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgY3VzdG9tIHRyYW5zbGF0aW9ucy4gSXQgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyAoaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZ2V0dGluZy1zdGFydGVkLyNhLW5hbWUtbGFuZ3VhZ2VzLWEtYXZhaWxhYmxlLWxhbmd1YWdlcylcbiAgICogYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCBrZXktdmFsdWUgcGFpcnMsIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbiBFbmdsaXNoIGFuZCB0aGUgdmFsdWUgLSBpdHMgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqIC0gYEhvbWVgOiBcIlN0YXJ0c2VpdGVcIlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIERvY3VtZW50YXRpb24gbGlua3Mgc2V0dGluZ3MuICovXG4gIGRvY3M/OiBEb2NzO1xuICAvKiogQXBwbGljYXRpb24gaWNvbiB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyIGFuZCBoZWFkZXIgYmFyLiAqL1xuICBpY29uPzogSWNvbjtcblxuICAvLyBUaGVzZSBhcmUgdGhlIG9sZCBvcHRpb25zXG4gIC8qKiBIaWRlIGFwcGxpY2F0aW9uIGluIGFwcCBzd2l0Y2hlciAoc2F2ZWQgdG8gdGhlIHNlcnZlcikuICovXG4gIG5vQXBwU3dpdGNoZXI/OiBib29sZWFuO1xuICAvKiogSFRNTCBwYWdlIHRpdGxlLiAqL1xuICBnbG9iYWxUaXRsZT86IHN0cmluZztcbiAgLyoqIEhpZGUgXCJwb3dlcmVkIGJ5XCIgYW5kIHZlcnNpb24gaW5mbyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0b3IgYW5kIGluIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIGhpZGVQb3dlcmVkPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gc3VwcG9ydCBwYWdlIChzZXQgdG8gYGZhbHNlYCB0byBoaWRlIHRoZSBsaW5rKS4gKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgc3RvcmFnZSBsaW1pdGF0aW9uIGZlYXR1cmUuICovXG4gIHN0b3JhZ2VMaW1pdGF0aW9uRmVhdHVyZUVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTmFtZSBvZiBjb21wYW55IGhhbmRsaW5nIHN1cHBvcnQgcmVxdWVzdHMgZnJvbSBhcHAgdXNlcnMgKGRpc3BsYXllZCBpbiBub3RpZmljYXRpb24gbWVzc2FnZSkuICovXG4gIGNvbXBhbnlOYW1lPzogc3RyaW5nO1xuICAvKiogVVJMIHRlbXBsYXRlIGZvciBkb2N1bWVudGF0aW9uIGxpbmtzIChkZWZhdWx0OiBgJyR7ZG9jc0Jhc2VVcmx9JHtwYXJ0aWFsVXJsfSdgKS4gKi9cbiAgZ3VpZGVIcmVmVGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBCYXNlIFVSTCBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoaW5jbHVkZSBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXIsIGlmIHlvdSB3YW50IHZlcnNpb25lZCBsaW5rcykuICovXG4gIGRvY3NCYXNlVXJsPzogc3RyaW5nO1xuICAvKiogQ1NQIHN0cmluZyB0byBiZSBhcHBsaWVkIHRvIGBpbmRleC5odG1sYCBieSByZXBsYWNpbmcgZGVmYXVsdCB2YWx1ZXMuICovXG4gIGNvbnRlbnRTZWN1cml0eVBvbGljeT86IHN0cmluZztcbiAgLyoqIEVuYWJsZXMgY2xvdWQgc2Vuc29yIHdpemFyZCAqL1xuICBzZW5zb3JQaG9uZT86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgYSBuZXdzbGV0dGVyIHN1YnNjcmlwdGlvbiBjaGVja2JveCBpbiBlZGl0IHVzZXIgbW9kYWwuICovXG4gIG5ld3NsZXR0ZXI/OiBib29sZWFuO1xuICAvKiogUGF0aCB0byB0aGUgcm9vdCBub2RlX21vZHVsZXMgZGlyICh1c2VmdWwgd2hlbiB3b3JraW5nIGluIG1vbm9yZXBvIHNldHVwLCBlLmcuIHlhcm4gd29ya3NwYWNlcykuICovXG4gIHJvb3ROb2RlTW9kdWxlc1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBDb29raWUgQmFubmVyIGNvbmZpZ3VyYXRpb24gKi9cbiAgY29va2llQmFubmVyPzogQ29va2llQmFubmVyQ29uZmlndXJhdGlvbjtcbiAgLyoqIENvb2tpZSBwcmVmZXJlbmNlcyBjb25maWd1cmF0aW9uLiBIZXJlIHlvdSBjYW4gZW5hYmxlIG9yIGRpc2FibGUgY29va2llIGNhdGVnb3JpZXMgKi9cbiAgY29va2llUHJlZmVyZW5jZXM/OiBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb247XG4gIC8qKiBBIGtleSBmb3IgdGhlIHByb2R1Y3QgZXhwZXJpZW5jZSBzb2Z0d2FyZSBHYWluc2lnaHQuICovXG4gIGdhaW5zaWdodEtleT86IHN0cmluZztcbiAgLyoqIERpc2FibGUgdXNlciB0cmFja2luZyAqL1xuICBkaXNhYmxlVHJhY2tpbmc/OiBib29sZWFuO1xuICAvKiogTmdNb2R1bGUgZXhwb3J0IGZvciBwbHVnaW5zLiAqL1xuICBleHBvcnRzPzogUGx1Z2luc0V4cG9ydHNbXTtcbiAgLyoqIExpc3Qgb2YgaW1wb3J0ZWQgcmVtb3RlIHBsdWdpbnMuICovXG4gIHJlbW90ZXM/OiBSZW1vdGVQbHVnaW5zO1xuICAvKiogVGhlIHBhY2thZ2Ugc291cmNlIGEgYXBwbGljYXRpb24gb3JpZ2lucyBmcm9tIGFzIElBcHBsaWNhdGlvbiBvciBzaW1wbHkgdGhlIGlkIG9mIHRoZSBzb3VyY2UgKi9cbiAgc291cmNlPzogc3RyaW5nIHwgbnVtYmVyIHwgSUFwcGxpY2F0aW9uO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBhc3NldHMgdG8gY29weSB0byB0aGUgYnVpbGQgb3V0cHV0LlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9jb3B5LXdlYnBhY2stcGx1Z2luIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IHRoZSBwYXR0ZXJucyB0byBhZGQgaGVyZS5cbiAgICovXG4gIGNvcHk/OiBbXTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBlbmFibGUgb3IgZGlzYWJsZSBjb250ZXh0IGhlbHAsIG9yIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJhc2UgVVJMIHVzZWQgdG8gbG9hZCBpdHMgY29udGVudHMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZXh0IGhlbHAgdXNlcyB0aGUgc2FtZSBiYXNlIFVSTCBhcyBkZWZpbmVkIGluIHRoZSBgZG9jc0Jhc2VVcmxgIG9wdGlvblxuICAgKiAoaWYgdGhpcyBvcHRpb24gaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmb2xsb3dpbmcgdmFsdWUgd2lsbCBiZSB1c2VkOiBgaHR0cHM6Ly93d3cuY3VtdWxvY2l0eS5jb20vZ3VpZGVzL3t7dmVyc2lvbn19YCkuXG4gICAqIEFsdGVybmF0aXZlbHksIGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkIGhlcmUsIGl0J2xsIGJlIHVzZWQgYXMgdGhlIGJhc2UgVVJMXG4gICAqIGFuZCBhbnkgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcmVsZXZhbnQgZG9jcyB2ZXJzaW9uLlxuICAgKi9cbiAgY29udGV4dEhlbHA/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCwgY29ja3BpdCBhbmQgZGV2aWNlbWFuYWdlbWVudCB1c2UgdGhlIG9ubHlSb290cyBxdWVyeSB0byByZXNvbHZlIHJvb3Qgbm9kZXMuIFRoaXNcbiAgICogY291bGQgbGVhZCB0byBwZXJmb3JtYW5jZSBpc3N1ZXMsIGlmIGEgY3VzdG9tZXIgaGFzIGEgbG90IG9mIHJvb3Qgbm9kZXMuIFRoZXJlZm9yZSB5b3UgY2FuIGRpc2FibGVcbiAgICogdGhlIHVzZSBvZiB0aGlzIHF1ZXJ5IHdpdGggdGhpcyBmbGFnLlxuICAgKi9cbiAgZGlzYWJsZU9ubHlSb290c1F1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBmb3JjZSBzaG93aW5nIHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBmb3JjZVNldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gc2hvdyB0aGUgc2V0dXAgd2l6YXJkLlxuICAgKi9cbiAgaXNTZXR1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IGEgV2ViU0RLIGFwcCByZXF1aXJlcyB0aGUgdXNlciB0byBiZSBsb2dnZWQgaW4uXG4gICAqIEluIGNhc2UgeW91IHdvdWxkIGxpa2UgdG8gZGV2ZWxvcCBqdXN0IGEgc3RhdGljIGFwcGxpY2F0aW9uLCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW55IGtpbmQgb2YgYWNjZXNzIHRvIHRoZSBiYWNrZW5kLFxuICAgKiB5b3UgY2FuIHVzZSB0aGlzIGZsYWcgdG8gZGlzYWJsZSB0aGUgbG9naW4gc2NyZWVuLlxuICAgKiBOT1RFOiBub3QgYWxsIFdlYlNESyBjb21wb25lbnRzIHN1cHBvcnQgdGhpcywgc29tZSBtaWdodCByZXF1aXJlIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbiBhbmQgd29uJ3Qgd29yay5cbiAgICovXG4gIG5vTG9naW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2Ygc3VwcG9ydGluZy9sb2FkaW5nIHBsdWdpbnMgZm9yIHRoaXMgYXBwbGljYXRpb24uXG4gICAqL1xuICBub1BsdWdpbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2YgdGhlIHZlcnNpb24gd2FybmluZyB3aGljaCBpcyBzaG93biBpbiB0aGUgZGV2IHRvb2xzLlxuICAgKi9cbiAgbm9WZXJzaW9uV2FybmluZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgVVJMIHVzZWQgdG8gbG9va3VwIGdlbyBjb29yZGluYXRlcyBmb3IgYSB1c2VyIHByb3ZpZGVkIGFkZHJlc3MgdmlhIFtub21pbmF0aW0gQVBJXShodHRwczovL25vbWluYXRpbS5vcmcvcmVsZWFzZS1kb2NzL2RldmVsb3AvYXBpL1NlYXJjaC8pLlxuICAgKiBDYW4gYmUgc2V0IHRvIGVtcHR5IHRvIGRpc2FibGUgdGhlIGZpbmQgYWRkcmVzcyBmZWF0dXJlIG9uIHRoZSBsb2NhdGlvbiB0YWIuXG4gICAqIFVzZXM6IGBodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2g/Zm9ybWF0PWpzb24mcT17c2VhcmNoVGVybX1gIGlmIG5vdCBzZXQuXG4gICAqL1xuICBtYXBOb21pbmF0aW1Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlUGx1Z2lucyB7XG4gIC8qKlxuICAgKiBBIGtleSB2YWx1ZSBwYWlyLCB3aGlsZSB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgbW9kdWxlcyB0byBsb2FkIGFuZCB0aGVcbiAgICoga2V5IGlzIHRoZSBjb250ZXh0IHBhdGguXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGpzXG4gICAqIHtcbiAgICogICAgJ2NvY2twaXQnOiBbJ0hvbWVEYXNoYm9hcmRNb2R1bGUnLCAnRGF0YUV4cGxvcmVyRGFzaGJvYXJkJ10sXG4gICAqICAgICd3aWRnZXQtcGFja2FnZUAxLjAuMCc6IFsnRXh0ZW5kZWRNYXBXaWRnZXQnXVxuICAgKiB9XG4gICAqIGBgXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5zRXhwb3J0cyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQW5ndWxhciBtb2R1bGUgY2xhc3MuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBwYXRoIHRvIHRoZSBtb2R1bGUgdHlwZXNjcmlwdCBmaWxlLlxuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogQW4gc2hvcnQgZGVzY3JpcHRpb24gYWJvdXQgd2hhdCB0aGUgbW9kdWxlIGRvZXMuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzY29wZSB0aGUgcGx1Z2luIHRvIGNlcnRhaW4gYXBwbGljYXRpb25zLiBFLmcuIGlmIHlvdVxuICAgKiBhZGQgaGVyZSAnY29ja3BpdCcsIHRoZSBwbHVnaW4gY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGludG8gYW5cbiAgICogYXBwbGljYXRpb24gb24gdGhlIGNvbnRleHRQYXRoIGBhcHBzL2NvY2twaXRgLiBZb3UgY2FuIHVzZSBjb21tYVxuICAgKiBzZXBhcmF0ZWQgdmFsdWVzLCBhc3RlcmlzayAoZGVmYXVsdCkgdG8gYWxsb3cgYWxsIGFwcGxpY2F0aW9ucyBvclxuICAgKiBgc2VsZmAgdG8gbGltaXQgdGhlIHBsdWdpbiB0byB0aGUgY3VycmVudCBzb2x1dGlvbi5cbiAgICovXG4gIHNjb3BlPzogJyonIHwgJ3NlbGYnIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb24ge1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgdGl0bGUgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUaXRsZT86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIFRleHQgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUZXh0Pzogc3RyaW5nO1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgcG9saWN5VXJsIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgcG9saWN5VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZVByZWZlcmVuY2VzQ29uZmlndXJhdGlvbiB7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGxvZ2dpbmcgaW4gICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiB0cmFja2luZyBjb29raWVzICAqL1xuICBmdW5jdGlvbmFsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiBjb29raWVzIHJlbGF0ZWQgdG8gYWR2ZXJ0aXNpbmcgICovXG4gIG1hcmtldGluZz86IGJvb2xlYW4gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5FeHRyYUxpbmsge1xuICB1cmw6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY29uIHtcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzIHtcbiAgLyoqIEhpZGUgZGVmYXVsdCBsaW5rcyB0byBkb2N1bWVudGF0aW9uLiAqL1xuICBub0RlZmF1bHQ6IGJvb2xlYW47XG4gIC8qKiBMaXN0IG9mIHJlZ2V4IHN0cmluZ3MuIE1hdGNoaW5nIGRlZmF1bHQgZG9jcyBVUkxzIHdpbGwgYmUgaGlkZGVuLiAqL1xuICBleGNsdWRlRGVmYXVsdDogc3RyaW5nW107XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmtzIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgbGlua3M6IExpbmtzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua3Mge1xuICAvKiogSWNvbiBjbGFzc2VzIHdpdGggYGM4eS1pY29uYCwgZS5nLiBgYzh5LWljb24gYzh5LWljb24tYWRkLXVzZXJgIG9yIGBjOHktaWNvbiBjOHktaWNvbi1kZXZpY2UtY29ubmVjdGAuICovXG4gIGljb246IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHR5cGU6ICdkb2MnIHwgJ3F1aWNrbGluayc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBJMThuRXh0cmFMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJMThuRXh0cmFMYW5nQ29kZSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXMge1xuICBbbGFuZ0NvZGU6IHN0cmluZ106IExhbmd1YWdlc0xhbmdDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlc0xhbmdDb2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5kaW5nQ3NzVmFycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cbiJdfQ==
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBb005QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYiBTREsgdmVyc2lvbiAqL1xuICB3ZWJTZGtWZXJzaW9uPzogc3RyaW5nO1xuICAvKiogU2V0IHRvIGB0cnVlYCBpZiB0aGUgYXBwbGljYXRpb24gaXMgaHlicmlkIGFuZCB1c2VzIEFuZ3VsYXIgYW5kIEFuZ3VsYXJKUyBzaW11bHRhbmVvdXNseS4gKi9cbiAgdXBncmFkZT86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRoZSBicmFuZGluZyBlbnRyeSBmaWxlLiAoU2V0IGl0IHRvIGZhbHNlIHRvIGRpc2FibGUgYW55IHN0eWxpbmcuIFlvdSBjYW4gaGFuZGxlIHRoZSBzdHlsaW5nIHRoZW4gb24geW91ciBvd24gZS5nLiBpbiBhbiBhbmd1bGFyLmpzb24gZmlsZSB1c2luZyBuZy1jbGkpICovXG4gIGJyYW5kaW5nRW50cnk/OiBzdHJpbmcgfCBib29sZWFuO1xuICAvKiogUGF0aCB0byB0c2NjbmZpZy5qc29uIGZpbGUgaWYgVHlwZVNjcmlwdCBpcyB1c2VkIChkZWZhdWx0OiAuL3RzY29uZmlnLmpzb24pLiAqL1xuICB0c0NvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBFbnRyeSBtb2R1bGUgZm9yIEFuZ3VsYXIgY29tcGlsZXIgKG9ubHkgdXNlZCB3aXRoIGxhenkgbG9hZGVkIHJvdXRlcyksIGUuZy4gYCdhcHAubW9kdWxlLnRzI0FwcE1vZHVsZSdgLiAqL1xuICBlbnRyeU1vZHVsZT86IHN0cmluZztcbiAgLyoqIFBhdGggdG8gY3VzdG9tIGluZGV4Lmh0bWwgKG90aGVyd2lzZSBkZWZhdWx0IG9uZSB3aWxsIGJlIHVzZWQpLiAqL1xuICBpbmRleFRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogVVJMIHRvIGR5bmFtaWNhbGx5IGZldGNoZWQgb3B0aW9ucy4gKi9cbiAgZHluYW1pY09wdGlvbnNVcmw/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZmF2aWNvbi4gKi9cbiAgZmF2aWNvblVybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byAqLmNzcyBmaWxlIHdoaWNoIHdpbGwgcmVwbGFjZSBkZWZhdWx0IGJyYW5kaW5nLiAqL1xuICBicmFuZGluZ1VybD86IHN0cmluZztcbiAgLyoqIE9iamVjdCB3aXRoIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBDU1MgY3VzdG9tIHZhcmlhYmxlcy4gKi9cbiAgYnJhbmRpbmdDc3NWYXJzPzogQnJhbmRpbmdDc3NWYXJzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgb3Igb3ZlcnJpZGluZyBsYW5ndWFnZXMgYXZhaWxhYmxlIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIGFuZCBpdHMgdmFsdWVzIGFyZSBvYmplY3RzIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAtIGBuYW1lYDogRW5nbGlzaCBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgbmF0aXZlTmFtZWA6IG5hdGl2ZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgdXJsYDogZnVsbCBVUkwgdG8gSlNPTiBmaWxlIHdpdGggY29tcGlsZWQgdHJhbnNsYXRpb25zO1xuICAgKiAgICBpZiBub3QgZGVmaW5lZCwgdHJhbnNsYXRpb25zIHdpbGwgYmUgbG9hZGVkIGZyb20gYCR7bG9jYWxlUGF0aH0vJHtsYW5nQ29kZX0uanNvbmAuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYGpzb25cbiAgICogXCJsYW5ndWFnZXNcIjoge1xuICAgKiAgIFwiZGVcIjoge1xuICAgKiAgICAgXCJuYW1lXCI6IFwiR2VybWFuXCIsXG4gICAqICAgICBcIm5hdGl2ZU5hbWVcIjogXCJEZXV0c2NoXCIsXG4gICAqICAgICBcInVybFwiOiBcIi9hcHBzL3B1YmxpYy91aS1hc3NldHMvZGUuanNvblwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbGFuZ3VhZ2VzPzogTGFuZ3VhZ2VzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgY3VzdG9tIHRyYW5zbGF0aW9ucy4gSXQgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyAoaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZ2V0dGluZy1zdGFydGVkLyNhLW5hbWUtbGFuZ3VhZ2VzLWEtYXZhaWxhYmxlLWxhbmd1YWdlcylcbiAgICogYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCBrZXktdmFsdWUgcGFpcnMsIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbiBFbmdsaXNoIGFuZCB0aGUgdmFsdWUgLSBpdHMgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqIC0gYEhvbWVgOiBcIlN0YXJ0c2VpdGVcIlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIERvY3VtZW50YXRpb24gbGlua3Mgc2V0dGluZ3MuICovXG4gIGRvY3M/OiBEb2NzO1xuICAvKiogQXBwbGljYXRpb24gaWNvbiB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyIGFuZCBoZWFkZXIgYmFyLiAqL1xuICBpY29uPzogSWNvbjtcblxuICAvLyBUaGVzZSBhcmUgdGhlIG9sZCBvcHRpb25zXG4gIC8qKiBIaWRlIGFwcGxpY2F0aW9uIGluIGFwcCBzd2l0Y2hlciAoc2F2ZWQgdG8gdGhlIHNlcnZlcikuICovXG4gIG5vQXBwU3dpdGNoZXI/OiBib29sZWFuO1xuICAvKiogSFRNTCBwYWdlIHRpdGxlLiAqL1xuICBnbG9iYWxUaXRsZT86IHN0cmluZztcbiAgLyoqIEhpZGUgXCJwb3dlcmVkIGJ5XCIgYW5kIHZlcnNpb24gaW5mbyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0b3IgYW5kIGluIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIGhpZGVQb3dlcmVkPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gc3VwcG9ydCBwYWdlIChzZXQgdG8gYGZhbHNlYCB0byBoaWRlIHRoZSBsaW5rKS4gKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rKHMpIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rIHwgTG9naW5FeHRyYUxpbmtbXTtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHN0b3JhZ2UgbGltaXRhdGlvbiBmZWF0dXJlLiAqL1xuICBzdG9yYWdlTGltaXRhdGlvbkZlYXR1cmVFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIE5hbWUgb2YgY29tcGFueSBoYW5kbGluZyBzdXBwb3J0IHJlcXVlc3RzIGZyb20gYXBwIHVzZXJzIChkaXNwbGF5ZWQgaW4gbm90aWZpY2F0aW9uIG1lc3NhZ2UpLiAqL1xuICBjb21wYW55TmFtZT86IHN0cmluZztcbiAgLyoqIFVSTCB0ZW1wbGF0ZSBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoZGVmYXVsdDogYCcke2RvY3NCYXNlVXJsfSR7cGFydGlhbFVybH0nYCkuICovXG4gIGd1aWRlSHJlZlRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogQmFzZSBVUkwgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGluY2x1ZGUgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyLCBpZiB5b3Ugd2FudCB2ZXJzaW9uZWQgbGlua3MpLiAqL1xuICBkb2NzQmFzZVVybD86IHN0cmluZztcbiAgLyoqIENTUCBzdHJpbmcgdG8gYmUgYXBwbGllZCB0byBgaW5kZXguaHRtbGAgYnkgcmVwbGFjaW5nIGRlZmF1bHQgdmFsdWVzLiAqL1xuICBjb250ZW50U2VjdXJpdHlQb2xpY3k/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGVzIGNsb3VkIHNlbnNvciB3aXphcmQgKi9cbiAgc2Vuc29yUGhvbmU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIGEgbmV3c2xldHRlciBzdWJzY3JpcHRpb24gY2hlY2tib3ggaW4gZWRpdCB1c2VyIG1vZGFsLiAqL1xuICBuZXdzbGV0dGVyPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpciAodXNlZnVsIHdoZW4gd29ya2luZyBpbiBtb25vcmVwbyBzZXR1cCwgZS5nLiB5YXJuIHdvcmtzcGFjZXMpLiAqL1xuICByb290Tm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICAvKiogQ29va2llIEJhbm5lciBjb25maWd1cmF0aW9uICovXG4gIGNvb2tpZUJhbm5lcj86IENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBDb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi4gSGVyZSB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlIGNvb2tpZSBjYXRlZ29yaWVzICovXG4gIGNvb2tpZVByZWZlcmVuY2VzPzogQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uO1xuICAvKiogQSBrZXkgZm9yIHRoZSBwcm9kdWN0IGV4cGVyaWVuY2Ugc29mdHdhcmUgR2FpbnNpZ2h0LiAqL1xuICBnYWluc2lnaHRLZXk/OiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIHVzZXIgdHJhY2tpbmcgKi9cbiAgZGlzYWJsZVRyYWNraW5nPzogYm9vbGVhbjtcbiAgLyoqIE5nTW9kdWxlIGV4cG9ydCBmb3IgcGx1Z2lucy4gKi9cbiAgZXhwb3J0cz86IFBsdWdpbnNFeHBvcnRzW107XG4gIC8qKiBMaXN0IG9mIGltcG9ydGVkIHJlbW90ZSBwbHVnaW5zLiAqL1xuICByZW1vdGVzPzogUmVtb3RlUGx1Z2lucztcbiAgLyoqIFRoZSBwYWNrYWdlIHNvdXJjZSBhIGFwcGxpY2F0aW9uIG9yaWdpbnMgZnJvbSBhcyBJQXBwbGljYXRpb24gb3Igc2ltcGx5IHRoZSBpZCBvZiB0aGUgc291cmNlICovXG4gIHNvdXJjZT86IHN0cmluZyB8IG51bWJlciB8IElBcHBsaWNhdGlvbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYXNzZXRzIHRvIGNvcHkgdG8gdGhlIGJ1aWxkIG91dHB1dC5cbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvY29weS13ZWJwYWNrLXBsdWdpbiBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBhYm91dCB0aGUgcGF0dGVybnMgdG8gYWRkIGhlcmUuXG4gICAqL1xuICBjb3B5PzogW107XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZW5hYmxlIG9yIGRpc2FibGUgY29udGV4dCBoZWxwLCBvciB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiYXNlIFVSTCB1c2VkIHRvIGxvYWQgaXRzIGNvbnRlbnRzLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGV4dCBoZWxwIHVzZXMgdGhlIHNhbWUgYmFzZSBVUkwgYXMgZGVmaW5lZCBpbiB0aGUgYGRvY3NCYXNlVXJsYCBvcHRpb25cbiAgICogKGlmIHRoaXMgb3B0aW9uIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgZm9sbG93aW5nIHZhbHVlIHdpbGwgYmUgdXNlZDogYGh0dHBzOi8vd3d3LmN1bXVsb2NpdHkuY29tL2d1aWRlcy97e3ZlcnNpb259fWApLlxuICAgKiBBbHRlcm5hdGl2ZWx5LCBpZiBhIHN0cmluZyBpcyBwcm92aWRlZCBoZXJlLCBpdCdsbCBiZSB1c2VkIGFzIHRoZSBiYXNlIFVSTFxuICAgKiBhbmQgYW55IGB7eyB2ZXJzaW9uIH19YCBwbGFjZWhvbGRlciB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHJlbGV2YW50IGRvY3MgdmVyc2lvbi5cbiAgICovXG4gIGNvbnRleHRIZWxwPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIGNvY2twaXQgYW5kIGRldmljZW1hbmFnZW1lbnQgdXNlIHRoZSBvbmx5Um9vdHMgcXVlcnkgdG8gcmVzb2x2ZSByb290IG5vZGVzLiBUaGlzXG4gICAqIGNvdWxkIGxlYWQgdG8gcGVyZm9ybWFuY2UgaXNzdWVzLCBpZiBhIGN1c3RvbWVyIGhhcyBhIGxvdCBvZiByb290IG5vZGVzLiBUaGVyZWZvcmUgeW91IGNhbiBkaXNhYmxlXG4gICAqIHRoZSB1c2Ugb2YgdGhpcyBxdWVyeSB3aXRoIHRoaXMgZmxhZy5cbiAgICovXG4gIGRpc2FibGVPbmx5Um9vdHNRdWVyeT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZm9yY2Ugc2hvd2luZyB0aGUgc2V0dXAgd2l6YXJkLlxuICAgKi9cbiAgZm9yY2VTZXR1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIHNob3cgdGhlIHNldHVwIHdpemFyZC5cbiAgICovXG4gIGlzU2V0dXA/OiBib29sZWFuO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCBhIFdlYlNESyBhcHAgcmVxdWlyZXMgdGhlIHVzZXIgdG8gYmUgbG9nZ2VkIGluLlxuICAgKiBJbiBjYXNlIHlvdSB3b3VsZCBsaWtlIHRvIGRldmVsb3AganVzdCBhIHN0YXRpYyBhcHBsaWNhdGlvbiwgdGhhdCBkb2VzIG5vdCByZXF1aXJlIGFueSBraW5kIG9mIGFjY2VzcyB0byB0aGUgYmFja2VuZCxcbiAgICogeW91IGNhbiB1c2UgdGhpcyBmbGFnIHRvIGRpc2FibGUgdGhlIGxvZ2luIHNjcmVlbi5cbiAgICogTk9URTogbm90IGFsbCBXZWJTREsgY29tcG9uZW50cyBzdXBwb3J0IHRoaXMsIHNvbWUgbWlnaHQgcmVxdWlyZSB0aGUgdXNlciB0byBiZSBsb2dnZWQgaW4gYW5kIHdvbid0IHdvcmsuXG4gICAqL1xuICBub0xvZ2luPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBvcHQgb3V0IG9mIHN1cHBvcnRpbmcvbG9hZGluZyBwbHVnaW5zIGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgbm9QbHVnaW5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBvcHQgb3V0IG9mIHRoZSB2ZXJzaW9uIHdhcm5pbmcgd2hpY2ggaXMgc2hvd24gaW4gdGhlIGRldiB0b29scy5cbiAgICovXG4gIG5vVmVyc2lvbldhcm5pbmc/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIFVSTCB1c2VkIHRvIGxvb2t1cCBnZW8gY29vcmRpbmF0ZXMgZm9yIGEgdXNlciBwcm92aWRlZCBhZGRyZXNzIHZpYSBbbm9taW5hdGltIEFQSV0oaHR0cHM6Ly9ub21pbmF0aW0ub3JnL3JlbGVhc2UtZG9jcy9kZXZlbG9wL2FwaS9TZWFyY2gvKS5cbiAgICogQ2FuIGJlIHNldCB0byBlbXB0eSB0byBkaXNhYmxlIHRoZSBmaW5kIGFkZHJlc3MgZmVhdHVyZSBvbiB0aGUgbG9jYXRpb24gdGFiLlxuICAgKiBVc2VzOiBgaHR0cHM6Ly9ub21pbmF0aW0ub3BlbnN0cmVldG1hcC5vcmcvc2VhcmNoP2Zvcm1hdD1qc29uJnE9e3NlYXJjaFRlcm19YCBpZiBub3Qgc2V0LlxuICAgKi9cbiAgbWFwTm9taW5hdGltVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZVBsdWdpbnMge1xuICAvKipcbiAgICogQSBrZXkgdmFsdWUgcGFpciwgd2hpbGUgdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIG1vZHVsZXMgdG8gbG9hZCBhbmQgdGhlXG4gICAqIGtleSBpcyB0aGUgY29udGV4dCBwYXRoLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB7XG4gICAqICAgICdjb2NrcGl0JzogWydIb21lRGFzaGJvYXJkTW9kdWxlJywgJ0RhdGFFeHBsb3JlckRhc2hib2FyZCddLFxuICAgKiAgICAnd2lkZ2V0LXBhY2thZ2VAMS4wLjAnOiBbJ0V4dGVuZGVkTWFwV2lkZ2V0J11cbiAgICogfVxuICAgKiBgYFxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luc0V4cG9ydHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFuZ3VsYXIgbW9kdWxlIGNsYXNzLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgcGF0aCB0byB0aGUgbW9kdWxlIHR5cGVzY3JpcHQgZmlsZS5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIHNob3J0IGRlc2NyaXB0aW9uIGFib3V0IHdoYXQgdGhlIG1vZHVsZSBkb2VzLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2NvcGUgdGhlIHBsdWdpbiB0byBjZXJ0YWluIGFwcGxpY2F0aW9ucy4gRS5nLiBpZiB5b3VcbiAgICogYWRkIGhlcmUgJ2NvY2twaXQnLCB0aGUgcGx1Z2luIGNhbiBvbmx5IGJlIGluc3RhbGxlZCBpbnRvIGFuXG4gICAqIGFwcGxpY2F0aW9uIG9uIHRoZSBjb250ZXh0UGF0aCBgYXBwcy9jb2NrcGl0YC4gWW91IGNhbiB1c2UgY29tbWFcbiAgICogc2VwYXJhdGVkIHZhbHVlcywgYXN0ZXJpc2sgKGRlZmF1bHQpIHRvIGFsbG93IGFsbCBhcHBsaWNhdGlvbnMgb3JcbiAgICogYHNlbGZgIHRvIGxpbWl0IHRoZSBwbHVnaW4gdG8gdGhlIGN1cnJlbnQgc29sdXRpb24uXG4gICAqL1xuICBzY29wZT86ICcqJyB8ICdzZWxmJyB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHRpdGxlIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSBUZXh0IG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGV4dD86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHBvbGljeVVybCBvZiBDb29raWUgQmFubmVyICovXG4gIHBvbGljeVVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb24ge1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIGNvb2tpZXMgcmVsYXRlZCB0byBsb2dnaW5nIGluICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gdHJhY2tpbmcgY29va2llcyAgKi9cbiAgZnVuY3Rpb25hbD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGFkdmVydGlzaW5nICAqL1xuICBtYXJrZXRpbmc/OiBib29sZWFuIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luRXh0cmFMaW5rIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbiB7XG4gIGNsYXNzPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jcyB7XG4gIC8qKiBIaWRlIGRlZmF1bHQgbGlua3MgdG8gZG9jdW1lbnRhdGlvbi4gKi9cbiAgbm9EZWZhdWx0OiBib29sZWFuO1xuICAvKiogTGlzdCBvZiByZWdleCBzdHJpbmdzLiBNYXRjaGluZyBkZWZhdWx0IGRvY3MgVVJMcyB3aWxsIGJlIGhpZGRlbi4gKi9cbiAgZXhjbHVkZURlZmF1bHQ6IHN0cmluZ1tdO1xuICAvKiogQWRkaXRpb25hbCBsaW5rcyB0byBiZSBkaXNwbGF5ZWQuICovXG4gIGxpbmtzOiBMaW5rc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtzIHtcbiAgLyoqIEljb24gY2xhc3NlcyB3aXRoIGBjOHktaWNvbmAsIGUuZy4gYGM4eS1pY29uIGM4eS1pY29uLWFkZC11c2VyYCBvciBgYzh5LWljb24gYzh5LWljb24tZGV2aWNlLWNvbm5lY3RgLiAqL1xuICBpY29uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICB0eXBlOiAnZG9jJyB8ICdxdWlja2xpbmsnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5FeHRyYSB7XG4gIFtsYW5nQ29kZTogc3RyaW5nXTogSTE4bkV4dHJhTGFuZ0NvZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhTGFuZ0NvZGUge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VzIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBMYW5ndWFnZXNMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXNMYW5nQ29kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbmF0aXZlTmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuZGluZ0Nzc1ZhcnMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
import { Component, Output, Input, EventEmitter } from '@angular/core';
|
|
2
2
|
import { LoginService } from './login.service';
|
|
3
3
|
import { AlertService } from '../alert/alert.service';
|
|
4
|
-
import { AppStateService } from '../common/ui-state.service';
|
|
5
4
|
import { gettext } from '../i18n/gettext';
|
|
6
5
|
import { LoginViews } from './login.model';
|
|
7
6
|
import { CredentialsFromQueryParamsService } from './credentials-from-query-params.service';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
import * as i1 from "./login.service";
|
|
10
9
|
import * as i2 from "../alert/alert.service";
|
|
11
|
-
import * as i3 from "
|
|
12
|
-
import * as i4 from "
|
|
13
|
-
import * as i5 from "
|
|
14
|
-
import * as i6 from "../
|
|
15
|
-
import * as i7 from "
|
|
16
|
-
import * as i8 from "
|
|
17
|
-
import * as i9 from "../forms/
|
|
18
|
-
import * as i10 from "../
|
|
19
|
-
import * as i11 from "../i18n/c8y-translate.pipe";
|
|
10
|
+
import * as i3 from "./credentials-from-query-params.service";
|
|
11
|
+
import * as i4 from "@angular/forms";
|
|
12
|
+
import * as i5 from "../common/icon.directive";
|
|
13
|
+
import * as i6 from "../i18n/c8y-translate.directive";
|
|
14
|
+
import * as i7 from "@angular/common";
|
|
15
|
+
import * as i8 from "../forms/form-group.component";
|
|
16
|
+
import * as i9 from "../forms/required-input-placeholder.directive";
|
|
17
|
+
import * as i10 from "../i18n/c8y-translate.pipe";
|
|
20
18
|
export class CredentialsComponent {
|
|
21
|
-
constructor(loginService, alert,
|
|
19
|
+
constructor(loginService, alert, credentialsFromQueryParamsService) {
|
|
22
20
|
this.loginService = loginService;
|
|
23
21
|
this.alert = alert;
|
|
24
|
-
this.ui = ui;
|
|
25
22
|
this.credentialsFromQueryParamsService = credentialsFromQueryParamsService;
|
|
26
23
|
this.onChangeView = new EventEmitter();
|
|
27
24
|
this.loginViewParams = {
|
|
@@ -113,14 +110,14 @@ export class CredentialsComponent {
|
|
|
113
110
|
this.alert.warning(gettext('Two-factor authentication has been turned on for this account. Provide your phone number above to save it in your user profile and start receiving verification codes via SMS.'));
|
|
114
111
|
}
|
|
115
112
|
}
|
|
116
|
-
CredentialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CredentialsComponent, deps: [{ token: i1.LoginService }, { token: i2.AlertService }, { token: i3.
|
|
117
|
-
CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n required\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n
|
|
113
|
+
CredentialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CredentialsComponent, deps: [{ token: i1.LoginService }, { token: i2.AlertService }, { token: i3.CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
+
CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n required\n [id]=\"'password'\"\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i9.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }] });
|
|
118
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CredentialsComponent, decorators: [{
|
|
119
116
|
type: Component,
|
|
120
|
-
args: [{ selector: 'c8y-credentials', template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n required\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n
|
|
121
|
-
}], ctorParameters: function () { return [{ type: i1.LoginService }, { type: i2.AlertService }, { type: i3.
|
|
117
|
+
args: [{ selector: 'c8y-credentials', template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n required\n [id]=\"'password'\"\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: i1.LoginService }, { type: i2.AlertService }, { type: i3.CredentialsFromQueryParamsService }]; }, propDecorators: { onChangeView: [{
|
|
122
119
|
type: Output
|
|
123
120
|
}], loginViewParams: [{
|
|
124
121
|
type: Input
|
|
125
122
|
}] } });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9jcmVkZW50aWFscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2NyZWRlbnRpYWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRNUYsTUFBTSxPQUFPLG9CQUFvQjtJQW1CL0IsWUFDUyxZQUEwQixFQUMxQixLQUFtQixFQUNuQixFQUFtQixFQUNsQixpQ0FBb0U7UUFIckUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFpQjtRQUNsQixzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBdEJwRSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsb0JBQWUsR0FBK0I7WUFDckQsYUFBYSxFQUFFLEtBQUs7WUFDcEIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztRQUVGLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVGLCtCQUEwQixHQUFHLG9CQUFvQixDQUFDO1FBQ2xELHlCQUFvQixHQUFHLGVBQWUsQ0FBQztJQU9yRCxDQUFDO0lBRUosUUFBUTtRQUNOLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhO1lBQ2hCLE9BQU8sU0FBUyxDQUFDLGtCQUFrQixLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsa0JBQWtCLENBQUM7UUFDdEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxNQUFNLDBCQUEwQixHQUM5QixJQUFJLENBQUMsaUNBQWlDLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN6RSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEYsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULElBQUk7WUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0QsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3REO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxFQUFFO2dCQUNoRixJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN6QztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDMUM7aUJBQU0sSUFDTCxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU87Z0JBQ2IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDNUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzVDO2dCQUNBLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO2FBQ3BDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0Y7Z0JBQVM7WUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxDQUFNO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBTztRQUNqQyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNqRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDckY7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBZTtRQUN4QyxJQUFJLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEIsT0FBTyxDQUNMLHNHQUFzRyxDQUN2RyxDQUNGLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLE9BQU8sQ0FDTCxnTEFBZ0wsQ0FDakwsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7aUhBN0dVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGtKQ2ZqQyx1a0hBNEpBOzJGRDdJYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzRNQUtqQixZQUFZO3NCQUFyQixNQUFNO2dCQUVFLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IExvZ2luVmlld3MgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcbmltcG9ydCB7IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMtZnJvbS1xdWVyeS1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB9IGZyb20gJy4vY3JlZGVudGlhbHMtY29tcG9uZW50LXBhcmFtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jcmVkZW50aWFscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVkZW50aWFscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgQ3JlZGVudGlhbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgb25DaGFuZ2VWaWV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgZGlzYWJsZVRlbmFudDogZmFsc2UsXG4gICAgc2hvd1RlbmFudDogZmFsc2VcbiAgfTtcblxuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG4gIG1vZGVsOiBJQ3JlZGVudGlhbHMgPSB7fTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHNob3dMb2dpbkZvcm0gPSBmYWxzZTtcbiAgc2hvd0Jhc2ljQXV0aCA9IGZhbHNlO1xuICBvYXV0aE9wdGlvbnM6IGFueSA9IHt9O1xuICBzaG93VGVuYW50ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBQQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSA9ICdwYXNzd29yZHJlc2V0dG9rZW4nO1xuICBwcml2YXRlIHJlYWRvbmx5IE5PX1BIT05FX0hFQURFUl9OQU1FID0gJ05vUGhvbmVIZWFkZXInO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwdWJsaWMgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZTogQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB7IG9hdXRoT3B0aW9ucywgbG9naW5Nb2RlIH0gPSB0aGlzLmxvZ2luU2VydmljZTtcbiAgICB0aGlzLm1vZGVsLnRlbmFudCA9IHRoaXMubG9naW5TZXJ2aWNlLmdldFRlbmFudCgpO1xuICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9XG4gICAgICB0eXBlb2YgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZTtcbiAgICB0aGlzLnNob3dCYXNpY0F1dGggPSBsb2dpbk1vZGUudHlwZSA9PT0gJ0JBU0lDJztcbiAgICB0aGlzLm9hdXRoT3B0aW9ucyA9IG9hdXRoT3B0aW9ucztcbiAgICBjb25zdCBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcyA9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5nZXRDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMpO1xuICAgIHRoaXMuc2hvd1RlbmFudCA9IHRoaXMubG9naW5WaWV3UGFyYW1zLnNob3dUZW5hbnQgfHwgdGhpcy5sb2dpblNlcnZpY2Uuc2hvd1RlbmFudCgpO1xuICB9XG5cbiAgcmVkaXJlY3RUb09hdXRoKCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBsb2dpbiBpbnRvIHRoZSBhcHBsaWNhdGlvbiB1c2luZyBiYXNpYyBhdXRoLlxuICAgKiBJZiBzdWNjZXNzZnVsIGxvZ2dlZCBpbiB0aGUgY2xpZW50IGlzIHNldCBpbiBzaGFyZWQvY3VtdWxvY2l0eS5zZXJ2aWNlLnRzXG4gICAqL1xuICBhc3luYyBsb2dpbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgYmFzaWNBdXRoID0gdGhpcy5sb2dpblNlcnZpY2UudXNlQmFzaWNBdXRoKHRoaXMubW9kZWwpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UubG9naW4oYmFzaWNBdXRoLCB0aGlzLm1vZGVsKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5yZXMgJiYgZS5yZXMuaGVhZGVycyAmJiBlLnJlcy5oZWFkZXJzLmdldCh0aGlzLlBBU1NXT1JEX1JFU0VUX0hFQURFUl9OQU1FKSkge1xuICAgICAgICB0aGlzLmhhbmRsZVBhc3N3b3JkUmVzZXQoZS5yZXMpO1xuICAgICAgfSBlbHNlIGlmIChlLnJlcyAmJiBlLnJlcy5zdGF0dXMgPT09IDQwMSAmJiAvcGluL2kudGVzdChlLmRhdGEubWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTbXNDaGFsbGVuZ2UoZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmIChlLnJlcyAmJiBlLnJlcy5zdGF0dXMgPT09IDQwMSAmJiAvVE9UUC9pLnRlc3QoZS5kYXRhLm1lc3NhZ2UpKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlVG90cENoYWxsZW5nZShlLmRhdGEubWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnJlcyAmJlxuICAgICAgICBlLnJlcy5oZWFkZXJzICYmXG4gICAgICAgIGUucmVzLmhlYWRlcnMuZ2V0KHRoaXMuTk9fUEhPTkVfSEVBREVSX05BTUUpICYmXG4gICAgICAgICF0aGlzLmxvZ2luU2VydmljZS5pc1N1cHBvcnRVc2VyKHRoaXMubW9kZWwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oYW5kbGVOb1Bob25lTnVtYmVyUHJvdmlkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLmdlbmVyYXRlT2F1dGhUb2tlbih0aGlzLm1vZGVsKTtcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFzc3dvcmRSZXNldChlOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0LnJlbW92ZUxhc3REYW5nZXIoKTtcbiAgICB0aGlzLm1vZGVsLnRva2VuID0gZS5oZWFkZXJzLmdldCh0aGlzLlBBU1NXT1JEX1JFU0VUX0hFQURFUl9OQU1FKTtcbiAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5DaGFuZ2VQYXNzd29yZCwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRvdHBDaGFsbGVuZ2UobWVzc2FnZSkge1xuICAgIGlmICgvVE9UUCBzZXR1cCByZXF1aXJlZC9pLnRlc3QobWVzc2FnZSkpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlRvdHBTZXR1cCwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlRvdHBDaGFsbGVuZ2UsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU21zQ2hhbGxlbmdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGlmICgvcGluIGhhcyBhbHJlYWR5IGJlZW4gZ2VuZXJhdGVkL2kudGVzdChtZXNzYWdlKSkge1xuICAgICAgdGhpcy5hbGVydC53YXJuaW5nKFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICdUaGUgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIGFscmVhZHkgc2VudC4gRm9yIGEgbmV3IHZlcmlmaWNhdGlvbiBjb2RlLCBwbGVhc2UgY2xpY2sgb24gdGhlIGxpbmsgYWJvdmUuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmFsZXJ0LnJlbW92ZUxhc3REYW5nZXIoKTtcbiAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5TbXNDaGFsbGVuZ2UsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb1Bob25lTnVtYmVyUHJvdmlkZWQoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuUHJvdmlkZVBob25lTnVtYmVyLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICAnVHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBoYXMgYmVlbiB0dXJuZWQgb24gZm9yIHRoaXMgYWNjb3VudC4gUHJvdmlkZSB5b3VyIHBob25lIG51bWJlciBhYm92ZSB0byBzYXZlIGl0IGluIHlvdXIgdXNlciBwcm9maWxlIGFuZCBzdGFydCByZWNlaXZpbmcgdmVyaWZpY2F0aW9uIGNvZGVzIHZpYSBTTVMuJ1xuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgaWQ9XCJvYXV0aFwiXG4gICpuZ0lmPVwib2F1dGhPcHRpb25zLmluaXRSZXF1ZXN0ICYmIG9hdXRoT3B0aW9ucy52aXNpYmxlT25Mb2dpblBhZ2VcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWJsb2NrIGJ0bi1sZyBmb3JtLWdyb3VwXCJcbiAgICB0aXRsZT1cInt7IG9hdXRoT3B0aW9ucy5idXR0b25OYW1lIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAoY2xpY2spPVwicmVkaXJlY3RUb09hdXRoKClcIlxuICA+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwicHVsbC1sZWZ0XCJcbiAgICAgIFtjOHlJY29uXT1cIidzaWduLWluJ1wiXG4gICAgPjwvaT5cbiAgICB7eyBvYXV0aE9wdGlvbnMuYnV0dG9uTmFtZSB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48Zm9ybVxuICBjbGFzcz1cImxvZ2luRm9ybVwiXG4gIChuZ1N1Ym1pdCk9XCJsb2dpbigpXCJcbiAgI2xvZ2luRm9ybT1cIm5nRm9ybVwiXG4gICpuZ0lmPVwic2hvd0xvZ2luRm9ybVwiXG4gIG5vdmFsaWRhdGVcbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiXG4gICAgKm5nSWY9XCIhKG9hdXRoT3B0aW9ucy5pbml0UmVxdWVzdCAmJiBvYXV0aE9wdGlvbnMudmlzaWJsZU9uTG9naW5QYWdlKTsgZWxzZSBvckxlZ2VuZFwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBMb2dpblxuICA8L3NwYW4+XG5cbiAgPG5nLXRlbXBsYXRlICNvckxlZ2VuZD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBvclxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxjOHktZm9ybS1ncm91cFxuICAgIGNsYXNzPVwidGVuYW50RmllbGRcIlxuICAgIGlkPVwidGVuYW50RmllbGRcIlxuICAgICpuZ0lmPVwic2hvd1RlbmFudFwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIGZvcj1cInRlbmFudFwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBUZW5hbnQgSURcbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgaWQ9XCJ0ZW5hbnRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gdDEyMzQ1XCJcbiAgICAgIG5hbWU9XCJ0ZW5hbnRcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcmVxdWlyZWRcbiAgICAgIFsobmdNb2RlbCldPVwibW9kZWwudGVuYW50XCJcbiAgICAgICN0ZW5hbnQ9XCJuZ01vZGVsXCJcbiAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgIHBsYWNlaG9sZGVyLW5vLXJlcXVpcmVkLWhpbnRcbiAgICAgIFtyZWFkb25seV09XCJsb2dpblZpZXdQYXJhbXMuZGlzYWJsZVRlbmFudFwiXG4gICAgLz5cbiAgPC9jOHktZm9ybS1ncm91cD5cbiAgPGM4eS1mb3JtLWdyb3VwPlxuICAgIDxsYWJlbFxuICAgICAgZm9yPVwidXNlclwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBVc2VybmFtZVxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBpZD1cInVzZXJcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBqb2Ugb3Igam9lLmRvZUBleGFtcGxlLmNvbWBMT0NBTElaRWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIG5hbWU9XCJ1c2VyXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHJlcXVpcmVkXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnVzZXJcIlxuICAgICAgI3VzZXI9XCJuZ01vZGVsXCJcbiAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgIHBsYWNlaG9sZGVyLW5vLXJlcXVpcmVkLWhpbnRcbiAgICAvPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgPGxhYmVsXG4gICAgICBmb3I9XCJwYXNzd29yZFwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBQYXNzd29yZFxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBpZD1cInBhc3N3b3JkXCJcbiAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgcmVxdWlyZWRcbiAgICAgIFsobmdNb2RlbCldPVwibW9kZWwucGFzc3dvcmRcIlxuICAgICAgI3Bhc3N3b3JkPVwibmdNb2RlbFwiXG4gICAgICBwbGFjZWhvbGRlci1uby1yZXF1aXJlZC1oaW50XG4gICAgLz5cbiAgPC9jOHktZm9ybS1ncm91cD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgKm5nSWY9XCJzaG93QmFzaWNBdXRoXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgdGl0bGU9XCJ7eyAnUmVtZW1iZXIgbWUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgbmFtZT1cInJlbWVtYmVyXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJsb2dpblNlcnZpY2UucmVtZW1iZXJNZVwiXG4gICAgICAvPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgJ1JlbWVtYmVyIG1lJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1sZyBidG4tYmxvY2sgZm9ybS1ncm91cFwiXG4gICAgdGl0bGU9XCJ7eyAnTG9nIGluJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgW2Rpc2FibGVkXT1cIiFsb2dpbkZvcm0uZm9ybS52YWxpZCB8fCBpc0xvYWRpbmdcIlxuICA+XG4gICAge3sgJ0xvZyBpbicgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiXG4gICAgICB0aXRsZT1cInt7ICdGb3Jnb3QgcGFzc3dvcmQ/JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJvbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExPR0lOX1ZJRVdTLlJlY292ZXJQYXNzd29yZCB9KVwiXG4gICAgPlxuICAgICAge3sgJ0ZvcmdvdCBwYXNzd29yZD8nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiXG4gICAgKm5nSWY9XCIhISh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmtcIlxuICA+XG4gICAgPGFcbiAgICAgIGNsYXNzPVwic21hbGxcIlxuICAgICAgdGl0bGU9XCJ7eyAodWkuc3RhdGUkIHwgYXN5bmMpLmxvZ2luRXh0cmFMaW5rLmxhYmVsIH19XCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgW2hyZWZdPVwiKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay51cmxcIlxuICAgID5cbiAgICAgIHt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9jcmVkZW50aWFscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2NyZWRlbnRpYWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUTVGLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLFlBQ1MsWUFBMEIsRUFDMUIsS0FBbUIsRUFDbEIsaUNBQW9FO1FBRnJFLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbEIsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFtQztRQXJCcEUsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLG9CQUFlLEdBQStCO1lBQ3JELGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUM7UUFFRixnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUN6QixVQUFLLEdBQWlCLEVBQUUsQ0FBQztRQUN6QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGlCQUFZ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LEtBQUssQ0FBQyxPQUFPLENBQ2hCLE9BQU8sQ0FDTCxzR0FBc0csQ0FDdkcsQ0FDRixDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNoQixPQUFPLENBQ0wsZ0xBQWdMLENBQ2pMLENBQ0YsQ0FBQztJQUNKLENBQUM7O2lIQTVHVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixrSkNkakMsZ3dHQWdKQTsyRkRsSWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjs4S0FLakIsWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgSW5wdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IElDcmVkZW50aWFscyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBMb2dpblZpZXdzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWZyb20tcXVlcnktcGFyYW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWNvbXBvbmVudC1wYXJhbXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY3JlZGVudGlhbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlZGVudGlhbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIENyZWRlbnRpYWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlVmlldyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKSBsb2dpblZpZXdQYXJhbXM6IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zID0ge1xuICAgIGRpc2FibGVUZW5hbnQ6IGZhbHNlLFxuICAgIHNob3dUZW5hbnQ6IGZhbHNlXG4gIH07XG5cbiAgTE9HSU5fVklFV1MgPSBMb2dpblZpZXdzO1xuICBtb2RlbDogSUNyZWRlbnRpYWxzID0ge307XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBzaG93TG9naW5Gb3JtID0gZmFsc2U7XG4gIHNob3dCYXNpY0F1dGggPSBmYWxzZTtcbiAgb2F1dGhPcHRpb25zOiBhbnkgPSB7fTtcbiAgc2hvd1RlbmFudCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgUEFTU1dPUkRfUkVTRVRfSEVBREVSX05BTUUgPSAncGFzc3dvcmRyZXNldHRva2VuJztcbiAgcHJpdmF0ZSByZWFkb25seSBOT19QSE9ORV9IRUFERVJfTkFNRSA9ICdOb1Bob25lSGVhZGVyJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHVibGljIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2U6IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgeyBvYXV0aE9wdGlvbnMsIGxvZ2luTW9kZSB9ID0gdGhpcy5sb2dpblNlcnZpY2U7XG4gICAgdGhpcy5tb2RlbC50ZW5hbnQgPSB0aGlzLmxvZ2luU2VydmljZS5nZXRUZW5hbnQoKTtcbiAgICB0aGlzLnNob3dMb2dpbkZvcm0gPVxuICAgICAgdHlwZW9mIGxvZ2luTW9kZS52aXNpYmxlT25Mb2dpblBhZ2UgPT09ICd1bmRlZmluZWQnIHx8IGxvZ2luTW9kZS52aXNpYmxlT25Mb2dpblBhZ2U7XG4gICAgdGhpcy5zaG93QmFzaWNBdXRoID0gbG9naW5Nb2RlLnR5cGUgPT09ICdCQVNJQyc7XG4gICAgdGhpcy5vYXV0aE9wdGlvbnMgPSBvYXV0aE9wdGlvbnM7XG4gICAgY29uc3QgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMgPVxuICAgICAgdGhpcy5jcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UuZ2V0Q3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zKTtcbiAgICB0aGlzLnNob3dUZW5hbnQgPSB0aGlzLmxvZ2luVmlld1BhcmFtcy5zaG93VGVuYW50IHx8IHRoaXMubG9naW5TZXJ2aWNlLnNob3dUZW5hbnQoKTtcbiAgfVxuXG4gIHJlZGlyZWN0VG9PYXV0aCgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5yZWRpcmVjdFRvT2F1dGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gbG9naW4gaW50byB0aGUgYXBwbGljYXRpb24gdXNpbmcgYmFzaWMgYXV0aC5cbiAgICogSWYgc3VjY2Vzc2Z1bCBsb2dnZWQgaW4gdGhlIGNsaWVudCBpcyBzZXQgaW4gc2hhcmVkL2N1bXVsb2NpdHkuc2VydmljZS50c1xuICAgKi9cbiAgYXN5bmMgbG9naW4oKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGJhc2ljQXV0aCA9IHRoaXMubG9naW5TZXJ2aWNlLnVzZUJhc2ljQXV0aCh0aGlzLm1vZGVsKTtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luKGJhc2ljQXV0aCwgdGhpcy5tb2RlbCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUucmVzICYmIGUucmVzLmhlYWRlcnMgJiYgZS5yZXMuaGVhZGVycy5nZXQodGhpcy5QQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVQYXNzd29yZFJlc2V0KGUucmVzKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDEgJiYgL3Bpbi9pLnRlc3QoZS5kYXRhLm1lc3NhZ2UpKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU21zQ2hhbGxlbmdlKGUuZGF0YS5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDEgJiYgL1RPVFAvaS50ZXN0KGUuZGF0YS5tZXNzYWdlKSkge1xuICAgICAgICB0aGlzLmhhbmRsZVRvdHBDaGFsbGVuZ2UoZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZS5yZXMgJiZcbiAgICAgICAgZS5yZXMuaGVhZGVycyAmJlxuICAgICAgICBlLnJlcy5oZWFkZXJzLmdldCh0aGlzLk5PX1BIT05FX0hFQURFUl9OQU1FKSAmJlxuICAgICAgICAhdGhpcy5sb2dpblNlcnZpY2UuaXNTdXBwb3J0VXNlcih0aGlzLm1vZGVsKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlTm9QaG9uZU51bWJlclByb3ZpZGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5nZW5lcmF0ZU9hdXRoVG9rZW4odGhpcy5tb2RlbCk7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhc3N3b3JkUmVzZXQoZTogYW55KSB7XG4gICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgdGhpcy5tb2RlbC50b2tlbiA9IGUuaGVhZGVycy5nZXQodGhpcy5QQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSk7XG4gICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuQ2hhbmdlUGFzc3dvcmQsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUb3RwQ2hhbGxlbmdlKG1lc3NhZ2UpIHtcbiAgICBpZiAoL1RPVFAgc2V0dXAgcmVxdWlyZWQvaS50ZXN0KG1lc3NhZ2UpKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5Ub3RwU2V0dXAsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5Ub3RwQ2hhbGxlbmdlLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNtc0NoYWxsZW5nZShtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBpZiAoL3BpbiBoYXMgYWxyZWFkeSBiZWVuIGdlbmVyYXRlZC9pLnRlc3QobWVzc2FnZSkpIHtcbiAgICAgIHRoaXMuYWxlcnQud2FybmluZyhcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnVGhlIHZlcmlmaWNhdGlvbiBjb2RlIHdhcyBhbHJlYWR5IHNlbnQuIEZvciBhIG5ldyB2ZXJpZmljYXRpb24gY29kZSwgcGxlYXNlIGNsaWNrIG9uIHRoZSBsaW5rIGFib3ZlLidcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuU21zQ2hhbGxlbmdlLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm9QaG9uZU51bWJlclByb3ZpZGVkKCkge1xuICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlByb3ZpZGVQaG9uZU51bWJlciwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gICAgdGhpcy5hbGVydC53YXJuaW5nKFxuICAgICAgZ2V0dGV4dChcbiAgICAgICAgJ1R3by1mYWN0b3IgYXV0aGVudGljYXRpb24gaGFzIGJlZW4gdHVybmVkIG9uIGZvciB0aGlzIGFjY291bnQuIFByb3ZpZGUgeW91ciBwaG9uZSBudW1iZXIgYWJvdmUgdG8gc2F2ZSBpdCBpbiB5b3VyIHVzZXIgcHJvZmlsZSBhbmQgc3RhcnQgcmVjZWl2aW5nIHZlcmlmaWNhdGlvbiBjb2RlcyB2aWEgU01TLidcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gIGlkPVwib2F1dGhcIlxuICAqbmdJZj1cIm9hdXRoT3B0aW9ucy5pbml0UmVxdWVzdCAmJiBvYXV0aE9wdGlvbnMudmlzaWJsZU9uTG9naW5QYWdlXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1ibG9jayBidG4tbGcgZm9ybS1ncm91cFwiXG4gICAgdGl0bGU9XCJ7eyBvYXV0aE9wdGlvbnMuYnV0dG9uTmFtZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInJlZGlyZWN0VG9PYXV0aCgpXCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cInB1bGwtbGVmdFwiXG4gICAgICBbYzh5SWNvbl09XCInc2lnbi1pbidcIlxuICAgID48L2k+XG4gICAge3sgb2F1dGhPcHRpb25zLmJ1dHRvbk5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPGZvcm1cbiAgY2xhc3M9XCJsb2dpbkZvcm1cIlxuICAobmdTdWJtaXQpPVwibG9naW4oKVwiXG4gICNsb2dpbkZvcm09XCJuZ0Zvcm1cIlxuICAqbmdJZj1cInNob3dMb2dpbkZvcm1cIlxuICBub3ZhbGlkYXRlXG4+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBjZW50ZXJcIlxuICAgICpuZ0lmPVwiIShvYXV0aE9wdGlvbnMuaW5pdFJlcXVlc3QgJiYgb2F1dGhPcHRpb25zLnZpc2libGVPbkxvZ2luUGFnZSk7IGVsc2Ugb3JMZWdlbmRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgTG9naW5cbiAgPC9zcGFuPlxuXG4gIDxuZy10ZW1wbGF0ZSAjb3JMZWdlbmQ+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBjZW50ZXJcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgb3JcbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICBjbGFzcz1cInRlbmFudEZpZWxkXCJcbiAgICBpZD1cInRlbmFudEZpZWxkXCJcbiAgICAqbmdJZj1cInNob3dUZW5hbnRcIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICBmb3I9XCJ0ZW5hbnRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgVGVuYW50IElEXG4gICAgPC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIGlkPVwidGVuYW50XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IHQxMjM0NVwiXG4gICAgICBuYW1lPVwidGVuYW50XCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHJlcXVpcmVkXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnRlbmFudFwiXG4gICAgICAjdGVuYW50PVwibmdNb2RlbFwiXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICBwbGFjZWhvbGRlci1uby1yZXF1aXJlZC1oaW50XG4gICAgICBbcmVhZG9ubHldPVwibG9naW5WaWV3UGFyYW1zLmRpc2FibGVUZW5hbnRcIlxuICAgIC8+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDxjOHktZm9ybS1ncm91cD5cbiAgICA8bGFiZWxcbiAgICAgIGZvcj1cInVzZXJcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgVXNlcm5hbWVcbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgaWQ9XCJ1c2VyXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gam9lIG9yIGpvZS5kb2VAZXhhbXBsZS5jb21gTE9DQUxJWkVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBuYW1lPVwidXNlclwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICByZXF1aXJlZFxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VyXCJcbiAgICAgICN1c2VyPVwibmdNb2RlbFwiXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICBwbGFjZWhvbGRlci1uby1yZXF1aXJlZC1oaW50XG4gICAgLz5cbiAgPC9jOHktZm9ybS1ncm91cD5cbiAgPGM4eS1mb3JtLWdyb3VwPlxuICAgIDxsYWJlbFxuICAgICAgZm9yPVwicGFzc3dvcmRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgUGFzc3dvcmRcbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgIHJlcXVpcmVkXG4gICAgICBbaWRdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnBhc3N3b3JkXCJcbiAgICAgICNwYXNzd29yZD1cIm5nTW9kZWxcIlxuICAgICAgcGxhY2Vob2xkZXItbm8tcmVxdWlyZWQtaGludFxuICAgIC8+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgICpuZ0lmPVwic2hvd0Jhc2ljQXV0aFwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgIHRpdGxlPVwie3sgJ1JlbWVtYmVyIG1lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIG5hbWU9XCJyZW1lbWJlclwiXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibG9naW5TZXJ2aWNlLnJlbWVtYmVyTWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuPnt7ICdSZW1lbWJlciBtZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbGcgYnRuLWJsb2NrIGZvcm0tZ3JvdXBcIlxuICAgIHRpdGxlPVwie3sgJ0xvZyBpbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgIFtkaXNhYmxlZF09XCIhbG9naW5Gb3JtLmZvcm0udmFsaWQgfHwgaXNMb2FkaW5nXCJcbiAgPlxuICAgIHt7ICdMb2cgaW4nIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS10LThcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxuICAgICAgdGl0bGU9XCJ7eyAnRm9yZ290IHBhc3N3b3JkPycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMT0dJTl9WSUVXUy5SZWNvdmVyUGFzc3dvcmQgfSlcIlxuICAgID5cbiAgICAgIHt7ICdGb3Jnb3QgcGFzc3dvcmQ/JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -6,29 +6,32 @@ import { LoginViews } from './login.model';
|
|
|
6
6
|
import { AlertService } from '../alert/alert.service';
|
|
7
7
|
import { gettext } from '../i18n/gettext';
|
|
8
8
|
import { CredentialsFromQueryParamsService } from './credentials-from-query-params.service';
|
|
9
|
+
import { AppStateService } from '../common/ui-state.service';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "./login.service";
|
|
11
12
|
import * as i2 from "../common/options.service";
|
|
12
13
|
import * as i3 from "../alert/alert.service";
|
|
13
14
|
import * as i4 from "./credentials-from-query-params.service";
|
|
14
|
-
import * as i5 from "
|
|
15
|
-
import * as i6 from "
|
|
16
|
-
import * as i7 from "../authentication/
|
|
17
|
-
import * as i8 from "../
|
|
18
|
-
import * as i9 from "
|
|
19
|
-
import * as i10 from "./
|
|
20
|
-
import * as i11 from "./
|
|
21
|
-
import * as i12 from "./
|
|
22
|
-
import * as i13 from "./
|
|
15
|
+
import * as i5 from "../common/ui-state.service";
|
|
16
|
+
import * as i6 from "@angular/common";
|
|
17
|
+
import * as i7 from "../authentication/sms-challenge.component";
|
|
18
|
+
import * as i8 from "../authentication/provide-phone-number.component";
|
|
19
|
+
import * as i9 from "../alert/alert-outlet.component";
|
|
20
|
+
import * as i10 from "./recover-password.component";
|
|
21
|
+
import * as i11 from "./change-password.component";
|
|
22
|
+
import * as i12 from "./credentials.component";
|
|
23
|
+
import * as i13 from "./totp-auth.component";
|
|
24
|
+
import * as i14 from "./tenant-id-setup.component";
|
|
23
25
|
export class LoginComponent {
|
|
24
26
|
/**
|
|
25
27
|
* Just DI.
|
|
26
28
|
*/
|
|
27
|
-
constructor(loginService, options, alert, credentialsFromQueryParamsService) {
|
|
29
|
+
constructor(loginService, options, alert, credentialsFromQueryParamsService, ui) {
|
|
28
30
|
this.loginService = loginService;
|
|
29
31
|
this.options = options;
|
|
30
32
|
this.alert = alert;
|
|
31
33
|
this.credentialsFromQueryParamsService = credentialsFromQueryParamsService;
|
|
34
|
+
this.ui = ui;
|
|
32
35
|
this.currentView = LoginViews.None;
|
|
33
36
|
this.LOGIN_VIEWS = LoginViews;
|
|
34
37
|
this.disabled = false;
|
|
@@ -109,15 +112,15 @@ export class LoginComponent {
|
|
|
109
112
|
return token;
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
|
-
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginComponent, deps: [{ token: i1.LoginService }, { token: i2.OptionsService }, { token: i3.AlertService }, { token: i4.CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
-
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n", dependencies: [{ kind: "directive", type:
|
|
115
|
+
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginComponent, deps: [{ token: i1.LoginService }, { token: i2.OptionsService }, { token: i3.AlertService }, { token: i4.CredentialsFromQueryParamsService }, { token: i5.AppStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
116
|
+
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <div\n class=\"text-center m-t-8\"\n *ngIf=\"!!(ui.state$ | async).loginExtraLink\"\n >\n <div *ngIf=\"!!(ui.state$ | async).loginExtraLink.length; else singleExtraLink\">\n <a\n class=\"small d-block m-t-8\"\n title=\"{{ link.label }}\"\n role=\"button\"\n *ngFor=\"let link of (ui.state$ | async).loginExtraLink\"\n [href]=\"link.url\"\n >\n {{ link.label }}\n </a>\n </div>\n <ng-template #singleExtraLink>\n <a\n class=\"small\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n role=\"button\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </ng-template>\n </div>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i7.SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: ["credentials"], outputs: ["onCancel"] }, { kind: "component", type: i8.ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: ["credentials"], outputs: ["onCancel", "onChangeView"] }, { kind: "component", type: i9.AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: i10.RecoverPasswordComponent, selector: "c8y-recover-password", outputs: ["onChangeView"] }, { kind: "component", type: i11.ChangePasswordComponent, selector: "c8y-change-password", inputs: ["credentials"], outputs: ["onChangeView"] }, { kind: "component", type: i12.CredentialsComponent, selector: "c8y-credentials", inputs: ["loginViewParams"], outputs: ["onChangeView"] }, { kind: "component", type: i13.TotpAuthComponent, selector: "c8y-totp-auth", inputs: ["credentials", "view"], outputs: ["onCancel"] }, { kind: "component", type: i14.TenantIdSetupComponent, selector: "c8y-tenant-id-setup", outputs: ["onChangeView"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] });
|
|
114
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginComponent, decorators: [{
|
|
115
118
|
type: Component,
|
|
116
|
-
args: [{ selector: 'c8y-login', template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n" }]
|
|
117
|
-
}], ctorParameters: function () { return [{ type: i1.LoginService }, { type: i2.OptionsService }, { type: i3.AlertService }, { type: i4.CredentialsFromQueryParamsService }]; }, propDecorators: { name: [{
|
|
119
|
+
args: [{ selector: 'c8y-login', template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <div\n class=\"text-center m-t-8\"\n *ngIf=\"!!(ui.state$ | async).loginExtraLink\"\n >\n <div *ngIf=\"!!(ui.state$ | async).loginExtraLink.length; else singleExtraLink\">\n <a\n class=\"small d-block m-t-8\"\n title=\"{{ link.label }}\"\n role=\"button\"\n *ngFor=\"let link of (ui.state$ | async).loginExtraLink\"\n [href]=\"link.url\"\n >\n {{ link.label }}\n </a>\n </div>\n <ng-template #singleExtraLink>\n <a\n class=\"small\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n role=\"button\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </ng-template>\n </div>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n" }]
|
|
120
|
+
}], ctorParameters: function () { return [{ type: i1.LoginService }, { type: i2.OptionsService }, { type: i3.AlertService }, { type: i4.CredentialsFromQueryParamsService }, { type: i5.AppStateService }]; }, propDecorators: { name: [{
|
|
118
121
|
type: Input
|
|
119
122
|
}], onkeyup: [{
|
|
120
123
|
type: HostListener,
|
|
121
124
|
args: ['keyup', ['$event']]
|
|
122
125
|
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFRNUYsTUFBTSxPQUFPLGNBQWM7SUFhekI7O09BRUc7SUFDSCxZQUNTLFlBQTBCLEVBQ3pCLE9BQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLGlDQUFvRTtRQUhyRSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFuQjlFLGdCQUFXLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUV6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixvQkFBZSxHQUF3RCxFQUFFLENB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QUFDLENBQUM7U0FDOUQ7YUFBTTtZQUNMLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtTQUNoRTtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7MkdBaEdVLGNBQWM7K0ZBQWQsY0FBYyxnSUNmM0IsK3dEQXNEQTsyRkR2Q2EsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXOzJNQVVaLElBQUk7c0JBQVosS0FBSztnQkF5QzZCLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzLCBUZW5hbnRMb2dpbk9wdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luVmlld3MgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWZyb20tcXVlcnktcGFyYW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWNvbXBvbmVudC1wYXJhbXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjdXJyZW50VmlldzogTG9naW5WaWV3cyA9IExvZ2luVmlld3MuTm9uZTtcbiAgTE9HSU5fVklFV1MgPSBMb2dpblZpZXdzO1xuXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gIGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMgPSB7fTtcbiAgbG9naW5WaWV3UGFyYW1zOiBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB8IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgZGlzcGxheUFsZXJ0cyA9IGZhbHNlO1xuICBwcml2YXRlIFRPS0VOX1BBUkFNID0gJ3Rva2VuJztcblxuICAvKipcbiAgICogSnVzdCBESS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZTogQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0UmVzZXRQYXNzd29yZFRva2VuKCk7XG4gICAgaWYgKHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbikge1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICB0aGlzLmxvZ2luQXV0b21hdGljYWxseSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFscy50b2tlbiA9IHRva2VuO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbiA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgZG8gbm90IGhhdmUgYW55IHF1ZXJ5UGFyYW1ldGVycyByZWxhdGVkIHRvIGNyZWRlbnRpYWxzIGFmdGVyIGxvZ2dpbmcgaW4gb3IgZXZlbiBpZiB3ZSB3ZXJlIGFscmVhZHkgbG9nZ2VkIGluLlxuICAgIHRoaXMuY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlLnJlbW92ZUNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBoYW5kbGVMb2dpblRlbXBsYXRlKGV2ZW50KSB7XG4gICAgdGhpcy5jdXJyZW50VmlldyA9IGV2ZW50LnZpZXc7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGV2ZW50LmNyZWRlbnRpYWxzIHx8IHt9O1xuICAgIHRoaXMubG9naW5WaWV3UGFyYW1zID0gZXZlbnQubG9naW5WaWV3UGFyYW1zIHx8IHt9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBvbmtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5zZXRWaWV3KCk7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2dpbkF1dG9tYXRpY2FsbHkoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID0gdGhpcy5sb2dpblNlcnZpY2UubG9naW5Nb2RlLnR5cGU7XG4gICAgICBpZiAocHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyKSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMICYmXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnByb3RvY29sICE9PSAnaHR0cHM6J1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDdXJyZW50IGxvZ2luIG1vZGUgb25seSBzdXBwb3J0cyBIVFRQUy4nKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZpZXcoKSB7XG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbHMgJiYgdGhpcy5jcmVkZW50aWFscy50b2tlbikge1xuICAgICAgdGhpcy5oYW5kbGVMb2dpblRlbXBsYXRlKHsgdmlldzogTG9naW5WaWV3cy5DaGFuZ2VQYXNzd29yZCwgY3JlZGVudGlhbHM6IHRoaXMuY3JlZGVudGlhbHMgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvZ2luU2VydmljZS5zaG93VGVuYW50U2V0dXAoKSkge1xuICAgICAgdGhpcy5oYW5kbGVMb2dpblRlbXBsYXRlKHsgdmlldzogTG9naW5WaWV3cy5UZW5hbnRJZFNldHVwIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLkNyZWRlbnRpYWxzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzZXRQYXNzd29yZFRva2VuKCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5vcHRpb25zLmdldCh0aGlzLlRPS0VOX1BBUkFNKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQodGhpcy5UT0tFTl9QQVJBTSwgdW5kZWZpbmVkKTsgLy8gb25seSB1c2Ugb25jZVxuICAgIH1cbiAgICByZXR1cm4gdG9rZW47XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJsb2FkaW5nIGNhcmQgZmFkZUluVXAgYW5pbWF0ZWQgc2hhZG93NVwiXG4gICpuZ0lmPVwiY3VycmVudFZpZXcgIT09IExPR0lOX1ZJRVdTLk5vbmVcIlxuICBbbmdTd2l0Y2hdPVwiY3VycmVudFZpZXdcIlxuPlxuICA8bWFpbiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1haW5sb2dvXCI+PC9zcGFuPlxuXG4gICAgPGM4eS1jcmVkZW50aWFsc1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNyZWRlbnRpYWxzXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtsb2dpblZpZXdQYXJhbXNdPVwibG9naW5WaWV3UGFyYW1zXCJcbiAgICA+PC9jOHktY3JlZGVudGlhbHM+XG4gICAgPGM4eS1yZWNvdmVyLXBhc3N3b3JkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuUmVjb3ZlclBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktcmVjb3Zlci1wYXNzd29yZD5cbiAgICA8Yzh5LWNoYW5nZS1wYXNzd29yZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNoYW5nZVBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LWNoYW5nZS1wYXNzd29yZD5cbiAgICA8Yzh5LXRvdHAtYXV0aFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRvdHBDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW3ZpZXddPVwiY3VycmVudFZpZXdcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktdG90cC1hdXRoPlxuICAgIDxjOHktdG90cC1hdXRoXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVG90cFNldHVwXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFt2aWV3XT1cImN1cnJlbnRWaWV3XCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXRvdHAtYXV0aD5cbiAgICA8Yzh5LXNtcy1jaGFsbGVuZ2VcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5TbXNDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktc21zLWNoYWxsZW5nZT5cblxuICAgIDxjOHktcHJvdmlkZS1waG9uZS1udW1iZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Qcm92aWRlUGhvbmVOdW1iZXJcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktcHJvdmlkZS1waG9uZS1udW1iZXI+XG4gICAgPGM4eS10ZW5hbnQtaWQtc2V0dXBcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5UZW5hbnRJZFNldHVwXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktdGVuYW50LWlkLXNldHVwPlxuXG4gICAgPGM4eS1hbGVydC1vdXRsZXQgcG9zaXRpb249XCJzdGF0aWNcIj48L2M4eS1hbGVydC1vdXRsZXQ+XG4gIDwvbWFpbj5cbjwvZGl2PlxuIl19
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQU83RCxNQUFNLE9BQU8sY0FBYztJQWF6Qjs7T0FFRztJQUNILFlBQ1MsWUFBMEIsRUFDekIsT0FBdUIsRUFDdkIsS0FBbUIsRUFDbkIsaUNBQW9FLEVBQ3JFLEVBQW1CO1FBSm5CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFtQztRQUNyRSxPQUFFLEdBQUYsRUFBRSxDQUFpQjtRQXBCNUIsZ0JBQVcsR0FBZSxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsVUFBVSxD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QUFDLGVBQWUsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUM5RDthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO1NBQ2hFO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzsyR0FqR1UsY0FBYzsrRkFBZCxjQUFjLGdJQ2hCM0IsK2tGQWlGQTsyRkRqRWEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXO3lPQVVaLElBQUk7c0JBQVosS0FBSztnQkEwQzZCLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzLCBUZW5hbnRMb2dpbk9wdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luVmlld3MgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWZyb20tcXVlcnktcGFyYW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWNvbXBvbmVudC1wYXJhbXMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjdXJyZW50VmlldzogTG9naW5WaWV3cyA9IExvZ2luVmlld3MuTm9uZTtcbiAgTE9HSU5fVklFV1MgPSBMb2dpblZpZXdzO1xuXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gIGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMgPSB7fTtcbiAgbG9naW5WaWV3UGFyYW1zOiBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB8IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgZGlzcGxheUFsZXJ0cyA9IGZhbHNlO1xuICBwcml2YXRlIFRPS0VOX1BBUkFNID0gJ3Rva2VuJztcblxuICAvKipcbiAgICogSnVzdCBESS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZTogQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1aTogQXBwU3RhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0UmVzZXRQYXNzd29yZFRva2VuKCk7XG4gICAgaWYgKHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbikge1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICB0aGlzLmxvZ2luQXV0b21hdGljYWxseSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFscy50b2tlbiA9IHRva2VuO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbiA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgZG8gbm90IGhhdmUgYW55IHF1ZXJ5UGFyYW1ldGVycyByZWxhdGVkIHRvIGNyZWRlbnRpYWxzIGFmdGVyIGxvZ2dpbmcgaW4gb3IgZXZlbiBpZiB3ZSB3ZXJlIGFscmVhZHkgbG9nZ2VkIGluLlxuICAgIHRoaXMuY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlLnJlbW92ZUNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBoYW5kbGVMb2dpblRlbXBsYXRlKGV2ZW50KSB7XG4gICAgdGhpcy5jdXJyZW50VmlldyA9IGV2ZW50LnZpZXc7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGV2ZW50LmNyZWRlbnRpYWxzIHx8IHt9O1xuICAgIHRoaXMubG9naW5WaWV3UGFyYW1zID0gZXZlbnQubG9naW5WaWV3UGFyYW1zIHx8IHt9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBvbmtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5zZXRWaWV3KCk7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2dpbkF1dG9tYXRpY2FsbHkoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID0gdGhpcy5sb2dpblNlcnZpY2UubG9naW5Nb2RlLnR5cGU7XG4gICAgICBpZiAocHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyKSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMICYmXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnByb3RvY29sICE9PSAnaHR0cHM6J1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDdXJyZW50IGxvZ2luIG1vZGUgb25seSBzdXBwb3J0cyBIVFRQUy4nKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZpZXcoKSB7XG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbHMgJiYgdGhpcy5jcmVkZW50aWFscy50b2tlbikge1xuICAgICAgdGhpcy5oYW5kbGVMb2dpblRlbXBsYXRlKHsgdmlldzogTG9naW5WaWV3cy5DaGFuZ2VQYXNzd29yZCwgY3JlZGVudGlhbHM6IHRoaXMuY3JlZGVudGlhbHMgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvZ2luU2VydmljZS5zaG93VGVuYW50U2V0dXAoKSkge1xuICAgICAgdGhpcy5oYW5kbGVMb2dpblRlbXBsYXRlKHsgdmlldzogTG9naW5WaWV3cy5UZW5hbnRJZFNldHVwIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLkNyZWRlbnRpYWxzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzZXRQYXNzd29yZFRva2VuKCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5vcHRpb25zLmdldCh0aGlzLlRPS0VOX1BBUkFNKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQodGhpcy5UT0tFTl9QQVJBTSwgdW5kZWZpbmVkKTsgLy8gb25seSB1c2Ugb25jZVxuICAgIH1cbiAgICByZXR1cm4gdG9rZW47XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJsb2FkaW5nIGNhcmQgZmFkZUluVXAgYW5pbWF0ZWQgc2hhZG93NVwiXG4gICpuZ0lmPVwiY3VycmVudFZpZXcgIT09IExPR0lOX1ZJRVdTLk5vbmVcIlxuICBbbmdTd2l0Y2hdPVwiY3VycmVudFZpZXdcIlxuPlxuICA8bWFpbiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1haW5sb2dvXCI+PC9zcGFuPlxuXG4gICAgPGM4eS1jcmVkZW50aWFsc1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNyZWRlbnRpYWxzXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtsb2dpblZpZXdQYXJhbXNdPVwibG9naW5WaWV3UGFyYW1zXCJcbiAgICA+PC9jOHktY3JlZGVudGlhbHM+XG4gICAgPGM4eS1yZWNvdmVyLXBhc3N3b3JkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuUmVjb3ZlclBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktcmVjb3Zlci1wYXNzd29yZD5cbiAgICA8Yzh5LWNoYW5nZS1wYXNzd29yZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNoYW5nZVBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LWNoYW5nZS1wYXNzd29yZD5cbiAgICA8Yzh5LXRvdHAtYXV0aFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRvdHBDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW3ZpZXddPVwiY3VycmVudFZpZXdcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktdG90cC1hdXRoPlxuICAgIDxjOHktdG90cC1hdXRoXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVG90cFNldHVwXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFt2aWV3XT1cImN1cnJlbnRWaWV3XCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXRvdHAtYXV0aD5cbiAgICA8Yzh5LXNtcy1jaGFsbGVuZ2VcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5TbXNDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktc21zLWNoYWxsZW5nZT5cblxuICAgIDxjOHktcHJvdmlkZS1waG9uZS1udW1iZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Qcm92aWRlUGhvbmVOdW1iZXJcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktcHJvdmlkZS1waG9uZS1udW1iZXI+XG4gICAgPGM4eS10ZW5hbnQtaWQtc2V0dXBcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5UZW5hbnRJZFNldHVwXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktdGVuYW50LWlkLXNldHVwPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiXG4gICAgICAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGlua1wiXG4gICAgPlxuICAgICAgPGRpdiAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay5sZW5ndGg7IGVsc2Ugc2luZ2xlRXh0cmFMaW5rXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbCBkLWJsb2NrIG0tdC04XCJcbiAgICAgICAgICB0aXRsZT1cInt7IGxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBsaW5rIG9mICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmtcIlxuICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUV4dHJhTGluaz5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFtocmVmXT1cIih1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxjOHktYWxlcnQtb3V0bGV0IHBvc2l0aW9uPVwic3RhdGljXCI+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L21haW4+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,21 +1,34 @@
|
|
|
1
|
-
import { Component, ViewChild } from '@angular/core';
|
|
1
|
+
import { Component, ViewChild, Optional } from '@angular/core';
|
|
2
|
+
import { InventoryService } from '@c8y/client';
|
|
2
3
|
import { ClusterMapComponent } from '@c8y/ngx-components/map';
|
|
3
4
|
import { DashboardChildComponent } from '@c8y/ngx-components';
|
|
4
5
|
import { filter, takeUntil } from 'rxjs/operators';
|
|
5
6
|
import { Subject } from 'rxjs';
|
|
7
|
+
import { ContextDashboardComponent } from '@c8y/ngx-components/context-dashboard';
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
7
9
|
import * as i1 from "@c8y/ngx-components";
|
|
8
|
-
import * as i2 from "@
|
|
9
|
-
import * as i3 from "@c8y/
|
|
10
|
-
import * as i4 from "@angular/
|
|
11
|
-
import * as i5 from "
|
|
10
|
+
import * as i2 from "@c8y/ngx-components/context-dashboard";
|
|
11
|
+
import * as i3 from "@c8y/client";
|
|
12
|
+
import * as i4 from "@angular/common";
|
|
13
|
+
import * as i5 from "@c8y/ngx-components/map";
|
|
14
|
+
import * as i6 from "@angular/router";
|
|
15
|
+
import * as i7 from "./map-event-info.component";
|
|
12
16
|
export class MapWidgetComponent {
|
|
13
|
-
constructor(dashboardChild) {
|
|
17
|
+
constructor(dashboardChild, dashboardContextComponent, inventory) {
|
|
18
|
+
this.dashboardContextComponent = dashboardContextComponent;
|
|
19
|
+
this.inventory = inventory;
|
|
14
20
|
this.mapConfig = { center: [0, 0] };
|
|
15
21
|
this.destroy$ = new Subject();
|
|
16
22
|
this.listenToWidgetResizeEvent(dashboardChild);
|
|
17
23
|
}
|
|
18
|
-
ngOnInit() {
|
|
24
|
+
async ngOnInit() {
|
|
25
|
+
if (this.dashboardContextComponent?.dashboard?.deviceType && !this.config.device) {
|
|
26
|
+
const context = this.dashboardContextComponent.context;
|
|
27
|
+
if (context?.id) {
|
|
28
|
+
const { id } = context;
|
|
29
|
+
this.config.device = (await this.inventory.detail(id)).data;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
19
32
|
if (this.config.device) {
|
|
20
33
|
this.rootNode = this.config.device;
|
|
21
34
|
}
|
|
@@ -50,13 +63,15 @@ export class MapWidgetComponent {
|
|
|
50
63
|
});
|
|
51
64
|
}
|
|
52
65
|
}
|
|
53
|
-
MapWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MapWidgetComponent, deps: [{ token: i1.DashboardChildComponent }], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
-
MapWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MapWidgetComponent, selector: "c8y-map-widget", viewQueries: [{ propertyName: "clusterMap", first: true, predicate: ClusterMapComponent, descendants: true }], ngImport: i0, template: "<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n></c8y-map-status>\n<c8y-cluster-map #mapWidget [rootNode]=\"rootNode\" [config]=\"mapConfig\">\n <div *c8yMapPopup=\"let context\" class=\"map-marker\">\n <a class=\"text-truncate deviceLink text-12\" routerLink=\"/device/{{ context.id }}\">\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n", dependencies: [{ kind: "directive", type:
|
|
66
|
+
MapWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MapWidgetComponent, deps: [{ token: i1.DashboardChildComponent }, { token: i2.ContextDashboardComponent, optional: true }, { token: i3.InventoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
67
|
+
MapWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MapWidgetComponent, selector: "c8y-map-widget", viewQueries: [{ propertyName: "clusterMap", first: true, predicate: ClusterMapComponent, descendants: true }], ngImport: i0, template: "<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n></c8y-map-status>\n<c8y-cluster-map #mapWidget [rootNode]=\"rootNode\" [config]=\"mapConfig\">\n <div *c8yMapPopup=\"let context\" class=\"map-marker\">\n <a class=\"text-truncate deviceLink text-12\" routerLink=\"/device/{{ context.id }}\">\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i5.MapStatusComponent, selector: "c8y-map-status", inputs: ["config", "clusterMap"], outputs: ["configChange", "onUnfollow"] }, { kind: "component", type: i5.ClusterMapComponent, selector: "c8y-cluster-map", inputs: ["config", "rootNode", "asset", "showClusterColor"], outputs: ["mapChange"] }, { kind: "directive", type: i5.MapPopupDirective, selector: "[c8yMapPopup]" }, { kind: "directive", type: i6.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "component", type: i7.MapEventInfoComponent, selector: "c8y-map-event-info", inputs: ["asset"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
|
|
55
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MapWidgetComponent, decorators: [{
|
|
56
69
|
type: Component,
|
|
57
70
|
args: [{ selector: 'c8y-map-widget', template: "<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n></c8y-map-status>\n<c8y-cluster-map #mapWidget [rootNode]=\"rootNode\" [config]=\"mapConfig\">\n <div *c8yMapPopup=\"let context\" class=\"map-marker\">\n <a class=\"text-truncate deviceLink text-12\" routerLink=\"/device/{{ context.id }}\">\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n" }]
|
|
58
|
-
}], ctorParameters: function () { return [{ type: i1.DashboardChildComponent }
|
|
71
|
+
}], ctorParameters: function () { return [{ type: i1.DashboardChildComponent }, { type: i2.ContextDashboardComponent, decorators: [{
|
|
72
|
+
type: Optional
|
|
73
|
+
}] }, { type: i3.InventoryService }]; }, propDecorators: { clusterMap: [{
|
|
59
74
|
type: ViewChild,
|
|
60
75
|
args: [ClusterMapComponent]
|
|
61
76
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9tYXAvbWFwLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9tYXAvbWFwLXdpZGdldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLHlCQUF5QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7O0FBTWxGLE1BQU0sT0FBTyxrQkFBa0I7SUFXN0IsWUFDRSxjQUF1QyxFQUNuQix5QkFBb0QsRUFDaEUsU0FBMkI7UUFEZiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ2hFLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBYnJDLGNBQVMsR0FBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQVF6QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQU8vQixJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7WUFDdkQsSUFBSSxPQUFPLEVBQUUsRUFBRSxFQUFFO2dCQUNmLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUM3RDtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFPO1FBQ2pCLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztZQUN4QixNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO1lBQ3hCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGNBQXVDO1FBQ3ZFLGNBQWMsQ0FBQyxTQUFTO2FBQ3JCLElBQUksQ0FDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxFQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7K0dBbEVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGtHQUtsQixtQkFBbUIsZ0RDbEJoQyxrbkNBa0NBOzJGRHJCYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzswQkFnQnZCLFFBQVE7MkVBUFgsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ2x1c3Rlck1hcENvbXBvbmVudCwgQ2x1c3Rlck1hcENvbmZpZyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvbWFwJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNYXBXaWRnZXRDb25maWcgfSBmcm9tICcuL21hcC13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9jb250ZXh0LWRhc2hib2FyZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAtd2lkZ2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC13aWRnZXQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbWFwQ29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnID0geyBjZW50ZXI6IFswLCAwXSB9O1xuICByb290Tm9kZTogSU1hbmFnZWRPYmplY3Q7XG4gIGNvbmZpZzogTWFwV2lkZ2V0Q29uZmlnO1xuXG4gIEBWaWV3Q2hpbGQoQ2x1c3Rlck1hcENvbXBvbmVudClcbiAgY2x1c3Rlck1hcDogQ2x1c3Rlck1hcENvbXBvbmVudDtcblxuICBwcml2YXRlIHNhdmVkTm9kZTogSU1hbmFnZWRPYmplY3Q7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRhc2hib2FyZENoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRhc2hib2FyZENvbnRleHRDb21wb25lbnQ6IENvbnRleHREYXNoYm9hcmRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5saXN0ZW5Ub1dpZGdldFJlc2l6ZUV2ZW50KGRhc2hib2FyZENoaWxkKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhc2hib2FyZENvbnRleHRDb21wb25lbnQ/LmRhc2hib2FyZD8uZGV2aWNlVHlwZSAmJiAhdGhpcy5jb25maWcuZGV2aWNlKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5kYXNoYm9hcmRDb250ZXh0Q29tcG9uZW50LmNvbnRleHQ7XG4gICAgICBpZiAoY29udGV4dD8uaWQpIHtcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5jb25maWcuZGV2aWNlID0gKGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbChpZCkpLmRhdGE7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5kZXZpY2UpIHtcbiAgICAgIHRoaXMucm9vdE5vZGUgPSB0aGlzLmNvbmZpZy5kZXZpY2U7XG4gICAgfVxuICAgIHRoaXMubWFwQ29uZmlnID0geyAuLi50aGlzLmNvbmZpZy5tYXBDb25maWcgfTtcbiAgICB0aGlzLnNhdmVkTm9kZSA9IHRoaXMucm9vdE5vZGU7XG4gIH1cblxuICBzdGFydEZvbGxvdyhjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQuaWQgIT09IHRoaXMucm9vdE5vZGU/LmlkKSB7XG4gICAgICB0aGlzLnJvb3ROb2RlID0gY29udGV4dDtcbiAgICB9XG4gICAgdGhpcy5tYXBDb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZy5tYXBDb25maWcsXG4gICAgICBmb2xsb3c6IHRydWUsXG4gICAgICByZWFsdGltZTogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBzdG9wRm9sbG93KCkge1xuICAgIHRoaXMubWFwQ29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcubWFwQ29uZmlnLFxuICAgICAgZm9sbG93OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5yb290Tm9kZSA9IHRoaXMuc2F2ZWROb2RlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvV2lkZ2V0UmVzaXplRXZlbnQoZGFzaGJvYXJkQ2hpbGQ6IERhc2hib2FyZENoaWxkQ29tcG9uZW50KSB7XG4gICAgZGFzaGJvYXJkQ2hpbGQuY2hhbmdlRW5kXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGNoaWxkID0+IGNoaWxkLmxhc3RDaGFuZ2UgPT09ICdyZXNpemUnKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbHVzdGVyTWFwLnJlc2V0KCk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGM4eS1tYXAtc3RhdHVzXG4gIFtjbHVzdGVyTWFwXT1cIm1hcFdpZGdldFwiXG4gIFsoY29uZmlnKV09XCJtYXBDb25maWdcIlxuICAob25VbmZvbGxvdyk9XCJzdG9wRm9sbG93KClcIlxuPjwvYzh5LW1hcC1zdGF0dXM+XG48Yzh5LWNsdXN0ZXItbWFwICNtYXBXaWRnZXQgW3Jvb3ROb2RlXT1cInJvb3ROb2RlXCIgW2NvbmZpZ109XCJtYXBDb25maWdcIj5cbiAgPGRpdiAqYzh5TWFwUG9wdXA9XCJsZXQgY29udGV4dFwiIGNsYXNzPVwibWFwLW1hcmtlclwiPlxuICAgIDxhIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBkZXZpY2VMaW5rIHRleHQtMTJcIiByb3V0ZXJMaW5rPVwiL2RldmljZS97eyBjb250ZXh0LmlkIH19XCI+XG4gICAgICA8c3Ryb25nPnt7IGNvbnRleHQubmFtZSB9fTwvc3Ryb25nPlxuICAgIDwvYT5cbiAgICA8Yzh5LW1hcC1ldmVudC1pbmZvIFthc3NldF09XCJjb250ZXh0XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4teHMgYnRuLWJsb2NrIG0tdC04XCJcbiAgICAgICAgKGNsaWNrKT1cInN0YXJ0Rm9sbG93KGNvbnRleHQpXCJcbiAgICAgICAgW3RpdGxlXT1cIidBY3RpdmF0ZSByZWFsdGltZSBvbiB0aGlzIGFzc2V0IGFuZCBmb2xsb3cgaXQgaWYgaXQgbW92ZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKm5nSWY9XCIhbWFwQ29uZmlnLmZvbGxvd1wiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBGb2xsb3dcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXhzIGJ0bi1ibG9jayBtLXQtOFwiXG4gICAgICAgIChjbGljayk9XCJzdG9wRm9sbG93KClcIlxuICAgICAgICBbdGl0bGVdPVwiJ1N0b3AgZm9sbG93aW5nIHRoaXMgYXNzZXQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICpuZ0lmPVwibWFwQ29uZmlnLmZvbGxvd1wiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBVbmZvbGxvd1xuICAgICAgPC9idXR0b24+XG4gICAgPC9jOHktbWFwLWV2ZW50LWluZm8+XG4gIDwvZGl2PlxuPC9jOHktY2x1c3Rlci1tYXA+XG4iXX0=
|