@atlasauth/angular 0.14.0 → 0.15.0
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/CHANGELOG.md +4 -0
- package/dist/esm2022/lib/components/attempt-flow.component.mjs +1 -5
- package/dist/esm2022/lib/components/flow-controller.mjs +8 -2
- package/dist/esm2022/lib/components/sign-up.component.mjs +57 -7
- package/dist/esm2022/lib/i18n.mjs +2 -1
- package/dist/esm2022/lib/version.mjs +2 -2
- package/dist/fesm2022/atlasauth-angular.mjs +64 -12
- package/dist/fesm2022/atlasauth-angular.mjs.map +1 -1
- package/dist/lib/components/sign-up.component.d.ts +6 -1
- package/dist/lib/version.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Input, inject, signal, } from '@angular/core';
|
|
2
|
-
import { awaitingPasskey, existingAccountResetUrl, localizedErrorMessage, passkeysSupported } from '@atlasauth/js';
|
|
2
|
+
import { awaitingPasskey, existingAccountResetUrl, localizedErrorMessage, passkeysSupported, signInAfterProofUrl, signUpProvedByLink } from '@atlasauth/js';
|
|
3
3
|
import { AtlasService } from '../atlas.service';
|
|
4
4
|
import { classFor } from '../appearance';
|
|
5
5
|
import { translate } from '../i18n';
|
|
6
6
|
import { AttemptFlowComponent } from './attempt-flow.component';
|
|
7
|
+
import { RecoveryCodesComponent } from './recovery-codes.component';
|
|
7
8
|
import { SignUpFormComponent } from './sign-up-form.component';
|
|
8
9
|
import { AtlasFlowController } from './flow-controller';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
@@ -25,6 +26,8 @@ export class SignUpComponent {
|
|
|
25
26
|
afterUrl;
|
|
26
27
|
/** Where the existing-account notice's "Forgot password?" goes. Default: the hosted sign-in page; `null` hides it. */
|
|
27
28
|
resetPasswordUrl;
|
|
29
|
+
/** Where "Sign in" goes once an emailed link confirmed the address and made no session here. Default: the hosted sign-in page; `null` hides it. */
|
|
30
|
+
signInUrl;
|
|
28
31
|
flow = new AtlasFlowController(this.atlas.createFapiClient(), () => this.atlas.reload(), this.atlas.pendingAttempt, (key) => translate(this.atlas.localization, key), true);
|
|
29
32
|
/** Password or passkey-only sign-up (the latter when the instance offers it). */
|
|
30
33
|
mode = signal('password');
|
|
@@ -42,6 +45,13 @@ export class SignUpComponent {
|
|
|
42
45
|
resetHref() {
|
|
43
46
|
return existingAccountResetUrl({ url: this.resetPasswordUrl, frontendApi: this.atlas.frontendApi, redirectUrl: this.afterUrl });
|
|
44
47
|
}
|
|
48
|
+
/** A link confirmed the address and made no session here. Says the same for any address. */
|
|
49
|
+
emailConfirmed() {
|
|
50
|
+
return signUpProvedByLink(this.flow.state().attempt);
|
|
51
|
+
}
|
|
52
|
+
signInHref() {
|
|
53
|
+
return signInAfterProofUrl({ url: this.signInUrl, frontendApi: this.atlas.frontendApi, redirectUrl: this.afterUrl });
|
|
54
|
+
}
|
|
45
55
|
awaitingPasskey() {
|
|
46
56
|
return awaitingPasskey(this.flow.state().attempt);
|
|
47
57
|
}
|
|
@@ -66,8 +76,10 @@ export class SignUpComponent {
|
|
|
66
76
|
this.flow.destroy();
|
|
67
77
|
}
|
|
68
78
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignUpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SignUpComponent, isStandalone: true, selector: "atlas-sign-up", inputs: { afterUrl: "afterUrl", resetPasswordUrl: "resetPasswordUrl" }, ngImport: i0, template: `
|
|
70
|
-
@if (flow.
|
|
79
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SignUpComponent, isStandalone: true, selector: "atlas-sign-up", inputs: { afterUrl: "afterUrl", resetPasswordUrl: "resetPasswordUrl", signInUrl: "signInUrl" }, ngImport: i0, template: `
|
|
80
|
+
@if (flow.recoveryCodes(); as codes) {
|
|
81
|
+
<atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
|
|
82
|
+
} @else if (flow.existingAccountNotice()) {
|
|
71
83
|
<div [class]="cls('card', 'atlas-card')" data-atlas-existing-account="">
|
|
72
84
|
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
73
85
|
<p class="atlas-text">{{ t('signUp.existingAccount') }}</p>
|
|
@@ -99,6 +111,14 @@ export class SignUpComponent {
|
|
|
99
111
|
{{ t('signUp.passkeyCreate') }}
|
|
100
112
|
</button>
|
|
101
113
|
</div>
|
|
114
|
+
} @else if (emailConfirmed()) {
|
|
115
|
+
<div [class]="cls('card', 'atlas-card')" data-atlas-email-confirmed="">
|
|
116
|
+
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
117
|
+
<p class="atlas-text" role="status">{{ t('signUp.emailConfirmed') }}</p>
|
|
118
|
+
@if (signInHref(); as href) {
|
|
119
|
+
<a [class]="cls('formButtonPrimary', 'atlas-button')" [href]="href">{{ t('signIn.title') }}</a>
|
|
120
|
+
}
|
|
121
|
+
</div>
|
|
102
122
|
} @else if (flow.state().attempt) {
|
|
103
123
|
<atlas-attempt-flow
|
|
104
124
|
[attempt]="flow.state().attempt"
|
|
@@ -109,6 +129,15 @@ export class SignUpComponent {
|
|
|
109
129
|
[emailVerification]="flow.settings()?.account?.emailVerification ?? 'code'"
|
|
110
130
|
(submitFlow)="flow.submit($event)"
|
|
111
131
|
(resend)="flow.resendSignUp()"
|
|
132
|
+
[offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
|
|
133
|
+
[emailedSecondFactor]="flow.emailSecondFactor()"
|
|
134
|
+
[offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
|
|
135
|
+
[textedSecondFactor]="flow.smsSecondFactor()"
|
|
136
|
+
[enrollment]="flow.enrollment"
|
|
137
|
+
[enrollmentState]="flow.enrollmentState()"
|
|
138
|
+
(emailSecondFactor)="flow.sendEmailSecondFactor()"
|
|
139
|
+
(smsSecondFactor)="flow.sendSmsSecondFactor()"
|
|
140
|
+
(policyDeclined)="flow.declinePolicy($event)"
|
|
112
141
|
></atlas-attempt-flow>
|
|
113
142
|
} @else {
|
|
114
143
|
<atlas-sign-up-form
|
|
@@ -125,7 +154,7 @@ export class SignUpComponent {
|
|
|
125
154
|
"
|
|
126
155
|
></atlas-sign-up-form>
|
|
127
156
|
}
|
|
128
|
-
`, isInline: true, dependencies: [{ kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: SignUpFormComponent, selector: "atlas-sign-up-form", inputs: ["settings", "busy", "errors", "captcha", "passkey", "switchable", "policies"], outputs: ["switchMode", "submitSignUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
157
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: RecoveryCodesComponent, selector: "atlas-recovery-codes", inputs: ["codes", "busy"], outputs: ["saved"] }, { kind: "component", type: SignUpFormComponent, selector: "atlas-sign-up-form", inputs: ["settings", "busy", "errors", "captcha", "passkey", "switchable", "policies"], outputs: ["switchMode", "submitSignUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
129
158
|
}
|
|
130
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignUpComponent, decorators: [{
|
|
131
160
|
type: Component,
|
|
@@ -133,9 +162,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
133
162
|
selector: 'atlas-sign-up',
|
|
134
163
|
standalone: true,
|
|
135
164
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
136
|
-
imports: [AttemptFlowComponent, SignUpFormComponent],
|
|
165
|
+
imports: [AttemptFlowComponent, RecoveryCodesComponent, SignUpFormComponent],
|
|
137
166
|
template: `
|
|
138
|
-
@if (flow.
|
|
167
|
+
@if (flow.recoveryCodes(); as codes) {
|
|
168
|
+
<atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
|
|
169
|
+
} @else if (flow.existingAccountNotice()) {
|
|
139
170
|
<div [class]="cls('card', 'atlas-card')" data-atlas-existing-account="">
|
|
140
171
|
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
141
172
|
<p class="atlas-text">{{ t('signUp.existingAccount') }}</p>
|
|
@@ -167,6 +198,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
167
198
|
{{ t('signUp.passkeyCreate') }}
|
|
168
199
|
</button>
|
|
169
200
|
</div>
|
|
201
|
+
} @else if (emailConfirmed()) {
|
|
202
|
+
<div [class]="cls('card', 'atlas-card')" data-atlas-email-confirmed="">
|
|
203
|
+
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
204
|
+
<p class="atlas-text" role="status">{{ t('signUp.emailConfirmed') }}</p>
|
|
205
|
+
@if (signInHref(); as href) {
|
|
206
|
+
<a [class]="cls('formButtonPrimary', 'atlas-button')" [href]="href">{{ t('signIn.title') }}</a>
|
|
207
|
+
}
|
|
208
|
+
</div>
|
|
170
209
|
} @else if (flow.state().attempt) {
|
|
171
210
|
<atlas-attempt-flow
|
|
172
211
|
[attempt]="flow.state().attempt"
|
|
@@ -177,6 +216,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
177
216
|
[emailVerification]="flow.settings()?.account?.emailVerification ?? 'code'"
|
|
178
217
|
(submitFlow)="flow.submit($event)"
|
|
179
218
|
(resend)="flow.resendSignUp()"
|
|
219
|
+
[offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
|
|
220
|
+
[emailedSecondFactor]="flow.emailSecondFactor()"
|
|
221
|
+
[offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
|
|
222
|
+
[textedSecondFactor]="flow.smsSecondFactor()"
|
|
223
|
+
[enrollment]="flow.enrollment"
|
|
224
|
+
[enrollmentState]="flow.enrollmentState()"
|
|
225
|
+
(emailSecondFactor)="flow.sendEmailSecondFactor()"
|
|
226
|
+
(smsSecondFactor)="flow.sendSmsSecondFactor()"
|
|
227
|
+
(policyDeclined)="flow.declinePolicy($event)"
|
|
180
228
|
></atlas-attempt-flow>
|
|
181
229
|
} @else {
|
|
182
230
|
<atlas-sign-up-form
|
|
@@ -199,5 +247,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
199
247
|
type: Input
|
|
200
248
|
}], resetPasswordUrl: [{
|
|
201
249
|
type: Input
|
|
250
|
+
}], signInUrl: [{
|
|
251
|
+
type: Input
|
|
202
252
|
}] } });
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi11cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXhEOzs7Ozs7Ozs7OztHQVdHO0FBbUVILE1BQU0sT0FBTyxlQUFlO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5QyxpRkFBaUY7SUFDeEUsUUFBUSxDQUFVO0lBRTNCLHNIQUFzSDtJQUM3RyxnQkFBZ0IsQ0FBaUI7SUFFdkIsSUFBSSxHQUFHLElBQUksbUJBQW1CLENBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQ3pCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENB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RSxtQkFBbUI7OzRGQThEeEMsZUFBZTtrQkFsRTNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3BELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRFQ7aUJBQ0Y7OEJBS1UsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGF3YWl0aW5nUGFzc2tleSwgZXhpc3RpbmdBY2NvdW50UmVzZXRVcmwsIGxvY2FsaXplZEVycm9yTWVzc2FnZSwgcGFzc2tleXNTdXBwb3J0ZWQsIHR5cGUgRmllbGRFcnJvciB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuaW1wb3J0IHsgQXRsYXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRsYXMuc2VydmljZSc7XG5pbXBvcnQgeyBjbGFzc0ZvciwgdHlwZSBFbGVtZW50S2V5IH0gZnJvbSAnLi4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICcuLi9pMThuJztcbmltcG9ydCB7IEF0dGVtcHRGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9hdHRlbXB0LWZsb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFNpZ25VcEZvcm1Db21wb25lbnQgfSBmcm9tICcuL3NpZ24tdXAtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXRsYXNGbG93Q29udHJvbGxlciB9IGZyb20gJy4vZmxvdy1jb250cm9sbGVyJztcblxuLyoqXG4gKiBgPGF0bGFzLXNpZ24tdXA+YCDigJQgY3JlYXRlcyBhbiBhY2NvdW50LiBUaGUgQW5ndWxhciBwZWVyIG9mIFJlYWN0J3NcbiAqIGA8U2lnblVwLz5gLiBUaGUgZmlyc3Qgc3RlcCBpcyB0aGUgY3JlYXRlLWFjY291bnQgZm9ybSAodGhlIGluc3RhbmNlJ3NcbiAqIGNvbmZpZ3VyZWQgZmllbGRzLCBlbWFpbCwgcGFzc3dvcmQsIGxlZ2FsIGNvbnNlbnQgYW5kIOKAlCB3aGVuIHJlcXVpcmVkIOKAlCB0aGVcbiAqIGNhcHRjaGEpLCB3aGljaCBQT1NUcyBgL3YxL2NsaWVudC9zaWduX3Vwc2A7IGZyb20gdGhlcmUgaXQgc2hhcmVzIHRoZSBmbG93XG4gKiBlbmdpbmUgd2l0aCBgPGF0bGFzLXNpZ24taW4+YCAodGhlIGVtYWlsZWQtY29kZSBzdGVwLCB0aGVuIHRoZSB0aWNrZXRcbiAqIGV4Y2hhbmdlKSwgYmVjYXVzZSB0aGUgc2VxdWVuY2Ugb2Ygc3RlcHMgaXMgZGVjaWRlZCBieSB0aGUgc2VydmVyLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxhdGxhcy1zaWduLXVwICphdGxhc1NpZ25lZE91dD48L2F0bGFzLXNpZ24tdXA+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRsYXMtc2lnbi11cCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQXR0ZW1wdEZsb3dDb21wb25lbnQsIFNpZ25VcEZvcm1Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoZmxvdy5leGlzdGluZ0FjY291bnROb3RpY2UoKSkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwiY2xzKCdjYXJkJywgJ2F0bGFzLWNhcmQnKVwiIGRhdGEtYXRsYXMtZXhpc3RpbmctYWNjb3VudD1cIlwiPlxuICAgICAgICA8aDEgW2NsYXNzXT1cImNscygnaGVhZGVyVGl0bGUnLCAnYXRsYXMtdGl0bGUnKVwiPnt7IHQoJ3NpZ25VcC50aXRsZScpIH19PC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+e3sgdCgnc2lnblVwLmV4aXN0aW5nQWNjb3VudCcpIH19PC9wPlxuICAgICAgICBAaWYgKHJlc2V0SHJlZigpOyBhcyBocmVmKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+PGEgY2xhc3M9XCJhdGxhcy1saW5rXCIgW2hyZWZdPVwiaHJlZlwiPnt7IHQoJ3NpZ25Jbi5mb3Jnb3RQYXNzd29yZCcpIH19PC9hPjwvcD5cbiAgICAgICAgfVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblByaW1hcnknLCAnYXRsYXMtYnV0dG9uJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZsb3cuY29udGludWVBZnRlckV4aXN0aW5nQWNjb3VudCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoJ3NpZ25VcC5zdWJtaXQnKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKGF3YWl0aW5nUGFzc2tleSgpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjbHMoJ2NhcmQnLCAnYXRsYXMtY2FyZCcpXCIgZGF0YS1hdGxhcy1wYXNza2V5LXNpZ24tdXA9XCJcIj5cbiAgICAgICAgPGgxIFtjbGFzc109XCJjbHMoJ2hlYWRlclRpdGxlJywgJ2F0bGFzLXRpdGxlJylcIj57eyB0KCdzaWduVXAudGl0bGUnKSB9fTwvaDE+XG4gICAgICAgIEBmb3IgKGVycm9yIG9mIGZsb3cuc3RhdGUoKS5lcnJvcnM7IHRyYWNrIGVycm9yLmNvZGUpIHtcbiAgICAgICAgICA8cCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRFcnJvcicsICdhdGxhcy1lcnJvcicpXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3JUZXh0KGVycm9yKSB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj57eyB0KCdzaWduVXAucGFzc2tleVByb21wdCcpIH19PC9wPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblByaW1hcnknLCAnYXRsYXMtYnV0dG9uJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZsb3cuY3JlYXRlUGFzc2tleSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoJ3NpZ25VcC5wYXNza2V5Q3JlYXRlJykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmIChmbG93LnN0YXRlKCkuYXR0ZW1wdCkge1xuICAgICAgPGF0bGFzLWF0dGVtcHQtZmxvd1xuICAgICAgICBbYXR0ZW1wdF09XCJmbG93LnN0YXRlKCkuYXR0ZW1wdFwiXG4gICAgICAgIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgICAgW2Vycm9yc109XCJmbG93LnN0YXRlKCkuZXJyb3JzXCJcbiAgICAgICAgW3Nlc3Npb25LZXB0XT1cImZsb3cuc3RhdGUoKS5zZXNzaW9uS2VwdFwiXG4gICAgICAgIHRpdGxlS2V5PVwic2lnblVwLnRpdGxlXCJcbiAgICAgICAgW2VtYWlsVmVyaWZpY2F0aW9uXT1cImZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudD8uZW1haWxWZXJpZmljYXRpb24gPz8gJ2NvZGUnXCJcbiAgICAgICAgKHN1Ym1pdEZsb3cpPVwiZmxvdy5zdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgIChyZXNlbmQpPVwiZmxvdy5yZXNlbmRTaWduVXAoKVwiXG4gICAgICA+PC9hdGxhcy1hdHRlbXB0LWZsb3c+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8YXRsYXMtc2lnbi11cC1mb3JtXG4gICAgICAgIFtzZXR0aW5nc109XCJmbG93LnNldHRpbmdzKClcIlxuICAgICAgICBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICAgIFtjYXB0Y2hhXT1cImZsb3cuc2lnblVwQ2FwdGNoYURyYXduKCkgPyBmbG93LnNpZ25VcENhcHRjaGEgOiBudWxsXCJcbiAgICAgICAgW3BvbGljaWVzXT1cImZsb3cucG9saWNpZXNcIlxuICAgICAgICBbcGFzc2tleV09XCJwYXNza2V5Rm9ybSgpXCJcbiAgICAgICAgW3N3aXRjaGFibGVdPVwiY2FuUGFzc2tleSgpXCJcbiAgICAgICAgKHN3aXRjaE1vZGUpPVwidG9nZ2xlTW9kZSgpXCJcbiAgICAgICAgKHN1Ym1pdFNpZ25VcCk9XCJcbiAgICAgICAgICBwYXNza2V5Rm9ybSgpID8gZmxvdy5jcmVhdGVXaXRoUGFzc2tleSgkZXZlbnQudmFsdWVzLCAkZXZlbnQuY29uc2VudCkgOiBmbG93LmNyZWF0ZSgkZXZlbnQudmFsdWVzLCAkZXZlbnQuY29uc2VudClcbiAgICAgICAgXCJcbiAgICAgID48L2F0bGFzLXNpZ24tdXAtZm9ybT5cbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25VcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdGxhcyA9IGluamVjdChBdGxhc1NlcnZpY2UpO1xuXG4gIC8qKiBXaGVyZSB0byBzZW5kIHRoZSB1c2VyIG9uY2UgdGhlIGZsb3cgY29tcGxldGVzLiBSZXNlcnZlZCBmb3IgaG9zdCByb3V0aW5nLiAqL1xuICBASW5wdXQoKSBhZnRlclVybD86IHN0cmluZztcblxuICAvKiogV2hlcmUgdGhlIGV4aXN0aW5nLWFjY291bnQgbm90aWNlJ3MgXCJGb3Jnb3QgcGFzc3dvcmQ/XCIgZ29lcy4gRGVmYXVsdDogdGhlIGhvc3RlZCBzaWduLWluIHBhZ2U7IGBudWxsYCBoaWRlcyBpdC4gKi9cbiAgQElucHV0KCkgcmVzZXRQYXNzd29yZFVybD86IHN0cmluZyB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZsb3cgPSBuZXcgQXRsYXNGbG93Q29udHJvbGxlcihcbiAgICB0aGlzLmF0bGFzLmNyZWF0ZUZhcGlDbGllbnQoKSxcbiAgICAoKSA9PiB0aGlzLmF0bGFzLnJlbG9hZCgpLFxuICAgIHRoaXMuYXRsYXMucGVuZGluZ0F0dGVtcHQsXG4gICAgKGtleSkgPT4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXkpLFxuICAgIHRydWUsXG4gICk7XG5cbiAgLyoqIFBhc3N3b3JkIG9yIHBhc3NrZXktb25seSBzaWduLXVwICh0aGUgbGF0dGVyIHdoZW4gdGhlIGluc3RhbmNlIG9mZmVycyBpdCkuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RlID0gc2lnbmFsPCdwYXNzd29yZCcgfCAncGFzc2tleSc+KCdwYXNzd29yZCcpO1xuXG4gIHByb3RlY3RlZCBjYW5QYXNza2V5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmxvdy5zZXR0aW5ncygpPy5hY2NvdW50LnBhc3NrZXlTaWduVXAgJiYgcGFzc2tleXNTdXBwb3J0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXNza2V5Rm9ybSgpOiB7IGVtYWlsOiAnb2ZmJyB8ICdvcHRpb25hbCcgfCAncmVxdWlyZWQnIH0gfCBudWxsIHtcbiAgICBjb25zdCBvZmZlciA9IHRoaXMuZmxvdy5zZXR0aW5ncygpPy5hY2NvdW50LnBhc3NrZXlTaWduVXAgPz8gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5tb2RlKCkgPT09ICdwYXNza2V5JyAmJiBvZmZlciAmJiB0aGlzLmNhblBhc3NrZXkoKSA/IHsgZW1haWw6IG9mZmVyLmVtYWlsIH0gOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5mbG93LnN0YXRlLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgZXJyb3JzOiBbXSB9KSk7XG4gICAgdGhpcy5tb2RlLnNldCh0aGlzLnBhc3NrZXlGb3JtKCkgPyAncGFzc3dvcmQnIDogJ3Bhc3NrZXknKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldEhyZWYoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGV4aXN0aW5nQWNjb3VudFJlc2V0VXJsKHsgdXJsOiB0aGlzLnJlc2V0UGFzc3dvcmRVcmwsIGZyb250ZW5kQXBpOiB0aGlzLmF0bGFzLmZyb250ZW5kQXBpLCByZWRpcmVjdFVybDogdGhpcy5hZnRlclVybCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhd2FpdGluZ1Bhc3NrZXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGF3YWl0aW5nUGFzc2tleSh0aGlzLmZsb3cuc3RhdGUoKS5hdHRlbXB0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNscyhrZXk6IEVsZW1lbnRLZXksIGJhc2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNsYXNzRm9yKGtleSwgdGhpcy5hdGxhcy5hcHBlYXJhbmNlLCBiYXNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlcnJvclRleHQoZXJyb3I6IEZpZWxkRXJyb3IpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxheWVyID0gKHRoaXMuYXRsYXMgYXMgeyBlcnJvckxvY2FsaXphdGlvbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSkuZXJyb3JMb2NhbGl6YXRpb247XG4gICAgcmV0dXJuIGxvY2FsaXplZEVycm9yTWVzc2FnZShlcnJvciwgbGF5ZXIgPz8gdGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIHRoaXMuYXRsYXMubG9jYWxpemF0aW9uKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIMKnNSB0aGUgaW5zdGFuY2UncyBzaWduLXVwIGZpZWxkcywgY29uc2VudCBwb2xpY3kgYW5kIGNhcHRjaGEgc2V0dGluZ3MuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2b2lkIHRoaXMuZmxvdy5sb2FkU2V0dGluZ3MoKTtcbiAgICAgIHZvaWQgdGhpcy5mbG93LmxvYWRQb2xpY2llcyh0aGlzLmF0bGFzLmxvY2FsZSA/PyB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZmxvdy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi11cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDN0ssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXhEOzs7Ozs7Ozs7OztHQVdHO0FBc0ZILE1BQU0sT0FBTyxlQUFlO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5QyxpRkFBaUY7SUFDeEUsUUFBUSxDQUFVO0lBRTNCLHNIQUFzSDtJQUM3RyxnQkFBZ0IsQ0FBaUI7SUFFMUMsbUpBQW1KO0lBQzFJLFNBQVMsQ0FBaUI7SUFFaEIsSUFBSSxHQUFHLElBQUksbUJBQW1CLENBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQ3pCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLEVBQ2hELElBQUksQ0FDTCxDQUFDO0lBRUYsaUZBQWlGO0lBQzlELElBQUksR0FBRyxNQUFNLENBQXlCLFVBQVUsQ0FBQyxDQUFDO0lBRTNELFVBQVU7UUFDbEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDOUUsQ0FBQztJQUVTLFdBQVc7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxTQUFTLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakcsQ0FBQztJQUVTLFVBQVU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVTLFNBQVM7UUFDakIsT0FBTyx1QkFBdUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsSSxDQUFDO0lBRUQsNEZBQTRGO0lBQ2xGLGNBQWM7UUFDdEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUyxVQUFVO1FBQ2xCLE9BQU8sbUJBQW1CLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVTLENBQUMsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFUyxHQUFHLENBQUMsR0FBZSxFQUFFLElBQVk7UUFDekMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFUyxTQUFTLENBQUMsS0FBaUI7UUFDbkMsTUFBTSxLQUFLLEdBQUksSUFBSSxDQUFDLEtBQXdELENBQUMsaUJBQWlCLENBQUM7UUFDL0YsT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELFFBQVE7UUFDTix5RUFBeUU7UUFDekUsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUIsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLENBQUM7d0dBN0VVLGVBQWU7NEZBQWYsZUFBZSx5S0FoRmhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RVQsNERBL0VTLG9CQUFvQiw0ZEFBRSxzQkFBc0IsZ0hBQUUsbUJBQW1COzs0RkFpRmhFLGVBQWU7a0JBckYzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixDQUFDO29CQUM1RSxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThFVDtpQkFDRjs4QkFLVSxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhd2FpdGluZ1Bhc3NrZXksIGV4aXN0aW5nQWNjb3VudFJlc2V0VXJsLCBsb2NhbGl6ZWRFcnJvck1lc3NhZ2UsIHBhc3NrZXlzU3VwcG9ydGVkLCBzaWduSW5BZnRlclByb29mVXJsLCBzaWduVXBQcm92ZWRCeUxpbmssIHR5cGUgRmllbGRFcnJvciB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuaW1wb3J0IHsgQXRsYXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRsYXMuc2VydmljZSc7XG5pbXBvcnQgeyBjbGFzc0ZvciwgdHlwZSBFbGVtZW50S2V5IH0gZnJvbSAnLi4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICcuLi9pMThuJztcbmltcG9ydCB7IEF0dGVtcHRGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9hdHRlbXB0LWZsb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFJlY292ZXJ5Q29kZXNDb21wb25lbnQgfSBmcm9tICcuL3JlY292ZXJ5LWNvZGVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWduVXBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9zaWduLXVwLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEF0bGFzRmxvd0NvbnRyb2xsZXIgfSBmcm9tICcuL2Zsb3ctY29udHJvbGxlcic7XG5cbi8qKlxuICogYDxhdGxhcy1zaWduLXVwPmAg4oCUIGNyZWF0ZXMgYW4gYWNjb3VudC4gVGhlIEFuZ3VsYXIgcGVlciBvZiBSZWFjdCdzXG4gKiBgPFNpZ25VcC8+YC4gVGhlIGZpcnN0IHN0ZXAgaXMgdGhlIGNyZWF0ZS1hY2NvdW50IGZvcm0gKHRoZSBpbnN0YW5jZSdzXG4gKiBjb25maWd1cmVkIGZpZWxkcywgZW1haWwsIHBhc3N3b3JkLCBsZWdhbCBjb25zZW50IGFuZCDigJQgd2hlbiByZXF1aXJlZCDigJQgdGhlXG4gKiBjYXB0Y2hhKSwgd2hpY2ggUE9TVHMgYC92MS9jbGllbnQvc2lnbl91cHNgOyBmcm9tIHRoZXJlIGl0IHNoYXJlcyB0aGUgZmxvd1xuICogZW5naW5lIHdpdGggYDxhdGxhcy1zaWduLWluPmAgKHRoZSBlbWFpbGVkLWNvZGUgc3RlcCwgdGhlbiB0aGUgdGlja2V0XG4gKiBleGNoYW5nZSksIGJlY2F1c2UgdGhlIHNlcXVlbmNlIG9mIHN0ZXBzIGlzIGRlY2lkZWQgYnkgdGhlIHNlcnZlci5cbiAqXG4gKiBgYGBodG1sXG4gKiA8YXRsYXMtc2lnbi11cCAqYXRsYXNTaWduZWRPdXQ+PC9hdGxhcy1zaWduLXVwPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F0bGFzLXNpZ24tdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0F0dGVtcHRGbG93Q29tcG9uZW50LCBSZWNvdmVyeUNvZGVzQ29tcG9uZW50LCBTaWduVXBGb3JtQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGZsb3cucmVjb3ZlcnlDb2RlcygpOyBhcyBjb2Rlcykge1xuICAgICAgPGF0bGFzLXJlY292ZXJ5LWNvZGVzIFtjb2Rlc109XCJjb2Rlc1wiIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCIgKHNhdmVkKT1cImZsb3cuc2F2ZVJlY292ZXJ5Q29kZXMoKVwiPjwvYXRsYXMtcmVjb3ZlcnktY29kZXM+XG4gICAgfSBAZWxzZSBpZiAoZmxvdy5leGlzdGluZ0FjY291bnROb3RpY2UoKSkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwiY2xzKCdjYXJkJywgJ2F0bGFzLWNhcmQnKVwiIGRhdGEtYXRsYXMtZXhpc3RpbmctYWNjb3VudD1cIlwiPlxuICAgICAgICA8aDEgW2NsYXNzXT1cImNscygnaGVhZGVyVGl0bGUnLCAnYXRsYXMtdGl0bGUnKVwiPnt7IHQoJ3NpZ25VcC50aXRsZScpIH19PC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+e3sgdCgnc2lnblVwLmV4aXN0aW5nQWNjb3VudCcpIH19PC9wPlxuICAgICAgICBAaWYgKHJlc2V0SHJlZigpOyBhcyBocmVmKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+PGEgY2xhc3M9XCJhdGxhcy1saW5rXCIgW2hyZWZdPVwiaHJlZlwiPnt7IHQoJ3NpZ25Jbi5mb3Jnb3RQYXNzd29yZCcpIH19PC9hPjwvcD5cbiAgICAgICAgfVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblByaW1hcnknLCAnYXRsYXMtYnV0dG9uJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZsb3cuY29udGludWVBZnRlckV4aXN0aW5nQWNjb3VudCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoJ3NpZ25VcC5zdWJtaXQnKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKGF3YWl0aW5nUGFzc2tleSgpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjbHMoJ2NhcmQnLCAnYXRsYXMtY2FyZCcpXCIgZGF0YS1hdGxhcy1wYXNza2V5LXNpZ24tdXA9XCJcIj5cbiAgICAgICAgPGgxIFtjbGFzc109XCJjbHMoJ2hlYWRlclRpdGxlJywgJ2F0bGFzLXRpdGxlJylcIj57eyB0KCdzaWduVXAudGl0bGUnKSB9fTwvaDE+XG4gICAgICAgIEBmb3IgKGVycm9yIG9mIGZsb3cuc3RhdGUoKS5lcnJvcnM7IHRyYWNrIGVycm9yLmNvZGUpIHtcbiAgICAgICAgICA8cCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRFcnJvcicsICdhdGxhcy1lcnJvcicpXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3JUZXh0KGVycm9yKSB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj57eyB0KCdzaWduVXAucGFzc2tleVByb21wdCcpIH19PC9wPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblByaW1hcnknLCAnYXRsYXMtYnV0dG9uJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZsb3cuY3JlYXRlUGFzc2tleSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoJ3NpZ25VcC5wYXNza2V5Q3JlYXRlJykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmIChlbWFpbENvbmZpcm1lZCgpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjbHMoJ2NhcmQnLCAnYXRsYXMtY2FyZCcpXCIgZGF0YS1hdGxhcy1lbWFpbC1jb25maXJtZWQ9XCJcIj5cbiAgICAgICAgPGgxIFtjbGFzc109XCJjbHMoJ2hlYWRlclRpdGxlJywgJ2F0bGFzLXRpdGxlJylcIj57eyB0KCdzaWduVXAudGl0bGUnKSB9fTwvaDE+XG4gICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIHJvbGU9XCJzdGF0dXNcIj57eyB0KCdzaWduVXAuZW1haWxDb25maXJtZWQnKSB9fTwvcD5cbiAgICAgICAgQGlmIChzaWduSW5IcmVmKCk7IGFzIGhyZWYpIHtcbiAgICAgICAgICA8YSBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uUHJpbWFyeScsICdhdGxhcy1idXR0b24nKVwiIFtocmVmXT1cImhyZWZcIj57eyB0KCdzaWduSW4udGl0bGUnKSB9fTwvYT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSBpZiAoZmxvdy5zdGF0ZSgpLmF0dGVtcHQpIHtcbiAgICAgIDxhdGxhcy1hdHRlbXB0LWZsb3dcbiAgICAgICAgW2F0dGVtcHRdPVwiZmxvdy5zdGF0ZSgpLmF0dGVtcHRcIlxuICAgICAgICBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICAgIFtzZXNzaW9uS2VwdF09XCJmbG93LnN0YXRlKCkuc2Vzc2lvbktlcHRcIlxuICAgICAgICB0aXRsZUtleT1cInNpZ25VcC50aXRsZVwiXG4gICAgICAgIFtlbWFpbFZlcmlmaWNhdGlvbl09XCJmbG93LnNldHRpbmdzKCk/LmFjY291bnQ/LmVtYWlsVmVyaWZpY2F0aW9uID8/ICdjb2RlJ1wiXG4gICAgICAgIChzdWJtaXRGbG93KT1cImZsb3cuc3VibWl0KCRldmVudClcIlxuICAgICAgICAocmVzZW5kKT1cImZsb3cucmVzZW5kU2lnblVwKClcIlxuICAgICAgICBbb2ZmZXJFbWFpbFNlY29uZEZhY3Rvcl09XCJmbG93LnNldHRpbmdzKCk/LmFjY291bnQ/LmVtYWlsU2Vjb25kRmFjdG9yID09PSB0cnVlXCJcbiAgICAgICAgW2VtYWlsZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5lbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgICAgW29mZmVyU21zU2Vjb25kRmFjdG9yXT1cImZsb3cuc2V0dGluZ3MoKSAhPT0gbnVsbCAmJiBmbG93Lm1mYUNob2ljZXMoKS5zbXNcIlxuICAgICAgICBbdGV4dGVkU2Vjb25kRmFjdG9yXT1cImZsb3cuc21zU2Vjb25kRmFjdG9yKClcIlxuICAgICAgICBbZW5yb2xsbWVudF09XCJmbG93LmVucm9sbG1lbnRcIlxuICAgICAgICBbZW5yb2xsbWVudFN0YXRlXT1cImZsb3cuZW5yb2xsbWVudFN0YXRlKClcIlxuICAgICAgICAoZW1haWxTZWNvbmRGYWN0b3IpPVwiZmxvdy5zZW5kRW1haWxTZWNvbmRGYWN0b3IoKVwiXG4gICAgICAgIChzbXNTZWNvbmRGYWN0b3IpPVwiZmxvdy5zZW5kU21zU2Vjb25kRmFjdG9yKClcIlxuICAgICAgICAocG9saWN5RGVjbGluZWQpPVwiZmxvdy5kZWNsaW5lUG9saWN5KCRldmVudClcIlxuICAgICAgPjwvYXRsYXMtYXR0ZW1wdC1mbG93PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGF0bGFzLXNpZ24tdXAtZm9ybVxuICAgICAgICBbc2V0dGluZ3NdPVwiZmxvdy5zZXR0aW5ncygpXCJcbiAgICAgICAgW2J1c3ldPVwiZmxvdy5zdGF0ZSgpLmJ1c3lcIlxuICAgICAgICBbZXJyb3JzXT1cImZsb3cuc3RhdGUoKS5lcnJvcnNcIlxuICAgICAgICBbY2FwdGNoYV09XCJmbG93LnNpZ25VcENhcHRjaGFEcmF3bigpID8gZmxvdy5zaWduVXBDYXB0Y2hhIDogbnVsbFwiXG4gICAgICAgIFtwb2xpY2llc109XCJmbG93LnBvbGljaWVzXCJcbiAgICAgICAgW3Bhc3NrZXldPVwicGFzc2tleUZvcm0oKVwiXG4gICAgICAgIFtzd2l0Y2hhYmxlXT1cImNhblBhc3NrZXkoKVwiXG4gICAgICAgIChzd2l0Y2hNb2RlKT1cInRvZ2dsZU1vZGUoKVwiXG4gICAgICAgIChzdWJtaXRTaWduVXApPVwiXG4gICAgICAgICAgcGFzc2tleUZvcm0oKSA/IGZsb3cuY3JlYXRlV2l0aFBhc3NrZXkoJGV2ZW50LnZhbHVlcywgJGV2ZW50LmNvbnNlbnQpIDogZmxvdy5jcmVhdGUoJGV2ZW50LnZhbHVlcywgJGV2ZW50LmNvbnNlbnQpXG4gICAgICAgIFwiXG4gICAgICA+PC9hdGxhcy1zaWduLXVwLWZvcm0+XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduVXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXRsYXMgPSBpbmplY3QoQXRsYXNTZXJ2aWNlKTtcblxuICAvKiogV2hlcmUgdG8gc2VuZCB0aGUgdXNlciBvbmNlIHRoZSBmbG93IGNvbXBsZXRlcy4gUmVzZXJ2ZWQgZm9yIGhvc3Qgcm91dGluZy4gKi9cbiAgQElucHV0KCkgYWZ0ZXJVcmw/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXJlIHRoZSBleGlzdGluZy1hY2NvdW50IG5vdGljZSdzIFwiRm9yZ290IHBhc3N3b3JkP1wiIGdvZXMuIERlZmF1bHQ6IHRoZSBob3N0ZWQgc2lnbi1pbiBwYWdlOyBgbnVsbGAgaGlkZXMgaXQuICovXG4gIEBJbnB1dCgpIHJlc2V0UGFzc3dvcmRVcmw/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKiBXaGVyZSBcIlNpZ24gaW5cIiBnb2VzIG9uY2UgYW4gZW1haWxlZCBsaW5rIGNvbmZpcm1lZCB0aGUgYWRkcmVzcyBhbmQgbWFkZSBubyBzZXNzaW9uIGhlcmUuIERlZmF1bHQ6IHRoZSBob3N0ZWQgc2lnbi1pbiBwYWdlOyBgbnVsbGAgaGlkZXMgaXQuICovXG4gIEBJbnB1dCgpIHNpZ25JblVybD86IHN0cmluZyB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZsb3cgPSBuZXcgQXRsYXNGbG93Q29udHJvbGxlcihcbiAgICB0aGlzLmF0bGFzLmNyZWF0ZUZhcGlDbGllbnQoKSxcbiAgICAoKSA9PiB0aGlzLmF0bGFzLnJlbG9hZCgpLFxuICAgIHRoaXMuYXRsYXMucGVuZGluZ0F0dGVtcHQsXG4gICAgKGtleSkgPT4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXkpLFxuICAgIHRydWUsXG4gICk7XG5cbiAgLyoqIFBhc3N3b3JkIG9yIHBhc3NrZXktb25seSBzaWduLXVwICh0aGUgbGF0dGVyIHdoZW4gdGhlIGluc3RhbmNlIG9mZmVycyBpdCkuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RlID0gc2lnbmFsPCdwYXNzd29yZCcgfCAncGFzc2tleSc+KCdwYXNzd29yZCcpO1xuXG4gIHByb3RlY3RlZCBjYW5QYXNza2V5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmxvdy5zZXR0aW5ncygpPy5hY2NvdW50LnBhc3NrZXlTaWduVXAgJiYgcGFzc2tleXNTdXBwb3J0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXNza2V5Rm9ybSgpOiB7IGVtYWlsOiAnb2ZmJyB8ICdvcHRpb25hbCcgfCAncmVxdWlyZWQnIH0gfCBudWxsIHtcbiAgICBjb25zdCBvZmZlciA9IHRoaXMuZmxvdy5zZXR0aW5ncygpPy5hY2NvdW50LnBhc3NrZXlTaWduVXAgPz8gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5tb2RlKCkgPT09ICdwYXNza2V5JyAmJiBvZmZlciAmJiB0aGlzLmNhblBhc3NrZXkoKSA/IHsgZW1haWw6IG9mZmVyLmVtYWlsIH0gOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5mbG93LnN0YXRlLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgZXJyb3JzOiBbXSB9KSk7XG4gICAgdGhpcy5tb2RlLnNldCh0aGlzLnBhc3NrZXlGb3JtKCkgPyAncGFzc3dvcmQnIDogJ3Bhc3NrZXknKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldEhyZWYoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGV4aXN0aW5nQWNjb3VudFJlc2V0VXJsKHsgdXJsOiB0aGlzLnJlc2V0UGFzc3dvcmRVcmwsIGZyb250ZW5kQXBpOiB0aGlzLmF0bGFzLmZyb250ZW5kQXBpLCByZWRpcmVjdFVybDogdGhpcy5hZnRlclVybCB9KTtcbiAgfVxuXG4gIC8qKiBBIGxpbmsgY29uZmlybWVkIHRoZSBhZGRyZXNzIGFuZCBtYWRlIG5vIHNlc3Npb24gaGVyZS4gU2F5cyB0aGUgc2FtZSBmb3IgYW55IGFkZHJlc3MuICovXG4gIHByb3RlY3RlZCBlbWFpbENvbmZpcm1lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2lnblVwUHJvdmVkQnlMaW5rKHRoaXMuZmxvdy5zdGF0ZSgpLmF0dGVtcHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNpZ25JbkhyZWYoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHNpZ25JbkFmdGVyUHJvb2ZVcmwoeyB1cmw6IHRoaXMuc2lnbkluVXJsLCBmcm9udGVuZEFwaTogdGhpcy5hdGxhcy5mcm9udGVuZEFwaSwgcmVkaXJlY3RVcmw6IHRoaXMuYWZ0ZXJVcmwgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXdhaXRpbmdQYXNza2V5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhd2FpdGluZ1Bhc3NrZXkodGhpcy5mbG93LnN0YXRlKCkuYXR0ZW1wdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZSh0aGlzLmF0bGFzLmxvY2FsaXphdGlvbiwga2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbHMoa2V5OiBFbGVtZW50S2V5LCBiYXNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjbGFzc0ZvcihrZXksIHRoaXMuYXRsYXMuYXBwZWFyYW5jZSwgYmFzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZXJyb3JUZXh0KGVycm9yOiBGaWVsZEVycm9yKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXllciA9ICh0aGlzLmF0bGFzIGFzIHsgZXJyb3JMb2NhbGl6YXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IH0pLmVycm9yTG9jYWxpemF0aW9uO1xuICAgIHJldHVybiBsb2NhbGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IsIGxheWVyID8/IHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCB0aGlzLmF0bGFzLmxvY2FsaXphdGlvbik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyDCpzUgdGhlIGluc3RhbmNlJ3Mgc2lnbi11cCBmaWVsZHMsIGNvbnNlbnQgcG9saWN5IGFuZCBjYXB0Y2hhIHNldHRpbmdzLlxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdm9pZCB0aGlzLmZsb3cubG9hZFNldHRpbmdzKCk7XG4gICAgICB2b2lkIHRoaXMuZmxvdy5sb2FkUG9saWNpZXModGhpcy5hdGxhcy5sb2NhbGUgPz8gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZsb3cuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -31,6 +31,7 @@ export const EN_US = {
|
|
|
31
31
|
'signIn.passwordOption': 'Use your password instead',
|
|
32
32
|
'signIn.passwordHoldReleased': 'Your email is verified. Enter your password to sign in.',
|
|
33
33
|
'signUp.existingAccount': 'You already had an account. Your existing password still applies.',
|
|
34
|
+
'signUp.emailConfirmed': 'Your email is confirmed. Sign in to continue.',
|
|
34
35
|
'signIn.codeSentTo': 'We sent a code to {email}. Enter it below.',
|
|
35
36
|
'signIn.resendCode': 'Resend code',
|
|
36
37
|
'signIn.sending': 'Sending…',
|
|
@@ -218,4 +219,4 @@ export function translate(catalog, key, variables = {}) {
|
|
|
218
219
|
export function withFallback(locale) {
|
|
219
220
|
return { ...EN_US, ...locale };
|
|
220
221
|
}
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQVk7SUFDNUIsY0FBYyxFQUFFLFNBQVM7SUFDekIsaUJBQWlCLEVBQUUsOEJBQThCO0lBQ2pELHdCQUF3QixFQUFFLGVBQWU7SUFDekMsc0JBQXNCLEVBQUUsVUFBVTtJQUNsQyxlQUFlLEVBQUUsVUFBVTtJQUMzQix1QkFBdUIsRUFBRSxrQkFBa0I7SUFDM0Msa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyxpQkFBaUIsRUFBRSxXQUFXO0lBQzlCLG1CQUFtQixFQUFFLFNBQVM7SUFDOUIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsMEJBQTBCLEVBQUUscUJBQXFCO0lBQ2pELHVCQUF1QixFQUFFLG1CQUFtQjtJQUM1QyxxQkFBcUIsRUFBRSxpQkFBaUI7SUFDeEMscUJBQXFCLEVBQUUseUJBQXlCO0lBQ2hELG1CQUFtQixFQUFFLHVFQUF1RTtJQUM1RixtQkFBbUIsRUFBRSxhQUFhO0lBQ2xDLHVCQUF1QixFQUFFLDJCQUEyQjtJQUNwRCw2QkFBNkIsRUFBRSx5REFBeUQ7SUFDeEYsd0JBQXdCLEVBQUUsbUVBQW1FO0lBQzdGLG1CQUFtQixFQUFFLDRDQUE0QztJQUNqRSxtQkFBbUIsRUFBRSxhQUFhO0lBQ2xDLGdCQUFnQixFQUFFLFVBQVU7SUFDNUIsd0JBQXdCLEVBQUUseUJBQXlCO0lBQ25ELHNCQUFzQixFQUFFLHdCQUF3QjtJQUNoRCx5QkFBeUIsRUFBRSwwRUFBMEU7SUFDckcsc0JBQXNCLEVBQUUsc0NBQXNDO0lBQzlELGlCQUFpQixFQUFFLG9CQUFvQjtJQUN2Qyx1QkFBdUIsRUFDckIsd0lBQXdJO0lBQzFJLHNCQUFzQixFQUFFLCtEQUErRDtJQUV2RixjQUFjLEVBQUUscUJBQXFCO0lBQ3JDLGVBQWUsRUFBRSxVQUFVO0lBQzNCLG9CQUFvQixFQUFFLDBCQUEwQjtJQUNoRCxtQkFBbUIsRUFBRSxTQUFTO0lBQzlCLG1CQUFtQixFQUFFLGVBQWU7SUFDcEMsc0JBQXNCLEVBQUUsVUFBVTtJQUNsQyxzQkFBc0IsRUFBRSxvQkFBb0I7SUFDNUMsMEJBQTBCLEVBQUUsU0FBUztJQUNyQyxxQkFBcUIsRUFBRSxnQkFBZ0I7SUFDdkMsc0JBQXNCLEVBQUUsZ0NBQWdDO0lBQ3hELGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLFlBQVksRUFBRSxLQUFLO0lBQ25CLGtEQUFrRDtJQUNsRCx5QkFBeUIsRUFDdkIsMkZBQTJGO0lBQzdGLHNCQUFzQixFQUFFLGdDQUFnQztJQUN4RCx1QkFBdUIsRUFBRSxpQ0FBaUM7SUFDMUQscUJBQXFCLEVBQUUscUdBQXFHO0lBQzVILHNCQUFzQixFQUFFLHFEQUFxRDtJQUM3RSxzQkFBc0IsRUFBRSxnQkFBZ0I7SUFDeEMseUJBQXlCLEVBQUUsMERBQTBEO0lBQ3JGLG1CQUFtQixFQUFFLGdHQUFnRztJQUVySCxnQkFBZ0IsRUFBRSwwQ0FBMEM7SUFDNUQsa0JBQWtCLEVBQUUscURBQXFEO0lBQ3pFLGdCQUFnQixFQUFFLG1EQUFtRDtJQUNyRSxrQkFBa0IsRUFBRSx3QkFBd0I7SUFDNUMsa0JBQWtCLEVBQUUsMEJBQTBCO0lBQzlDLHNCQUFzQixFQUFFLDJGQUEyRjtJQUNuSCx1QkFBdUIsRUFBRSxTQUFTO0lBQ2xDLG9CQUFvQixFQUFFLGFBQWE7SUFDbkMsMkJBQTJCLEVBQUUsbUVBQW1FO0lBRWhHLFdBQVcsRUFBRSx1QkFBdUI7SUFDcEMsY0FBYyxFQUFFLDZDQUE2QztJQUM3RCxlQUFlLEVBQUUsTUFBTTtJQUN2QiwwQkFBMEIsRUFBRSxrQ0FBa0M7SUFDOUQsMkJBQTJCLEVBQUUsd0JBQXdCO0lBQ3JELGdCQUFnQixFQUFFLHVCQUF1QjtJQUN6QyxtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMsWUFBWSxFQUFFLFFBQVE7SUFDdEIsa0JBQWtCLEVBQUUsc0NBQXNDO0lBQzFELHNCQUFzQixFQUFFLDBCQUEwQjtJQUNsRCxxQkFBcUIsRUFBRSxtQkFBbUI7SUFDMUMsZ0JBQWdCLEVBQUUsd0VBQXdFO0lBQzFGLGlCQUFpQixFQUFFLG9DQUFvQztJQUN2RCxvQkFBb0IsRUFBRSxXQUFXO0lBQ2pDLHFCQUFxQixFQUFFLGFBQWE7SUFDcEMsZ0JBQWdCLEVBQUUsZUFBZTtJQUNqQyxlQUFlLEVBQUUscURBQXFEO0lBQ3RFLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsa0JBQWtCLEVBQUUsc0NBQXNDO0lBQzFELG1CQUFtQixFQUFFLHdCQUF3QjtJQUM3Qyx3QkFBd0IsRUFBRSwwQkFBMEI7SUFDcEQsdUJBQXVCLEVBQUUsMElBQTBJO0lBQ25LLHVCQUF1QixFQUFFLFlBQVk7SUFDckMseUJBQXlCLEVBQUUsU0FBUztJQUNwQywyQkFBMkIsRUFBRSxrQkFBa0I7SUFDL0Msd0JBQXdCLEVBQUUscUJBQXFCO0lBRS9DLGFBQWEsRUFBRSxxQkFBcUI7SUFDcEMsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyx3QkFBd0IsRUFBRSxjQUFjO0lBRXhDLDBCQUEwQixFQUFFLGdCQUFnQjtJQUM1QyxvQkFBb0IsRUFBRSxVQUFVO0lBQ2hDLHVCQUF1QixFQUFFLHlCQUF5QjtJQUVsRCxtQkFBbUIsRUFBRSxTQUFTO0lBQzlCLDRCQUE0QixFQUFFLFNBQVM7SUFDdkMsMkJBQTJCLEVBQUUsaUJBQWlCO0lBQzlDLDZCQUE2QixFQUFFLFVBQVU7SUFDekMsNEJBQTRCLEVBQUUsZ0JBQWdCO0lBQzlDLDJCQUEyQixFQUFFLGFBQWE7SUFDMUMsc0JBQXNCLEVBQUUsc0JBQXNCO0lBQzlDLHlCQUF5QixFQUFFLGNBQWM7SUFDekMsd0JBQXdCLEVBQUUsWUFBWTtJQUN0QyxvQkFBb0IsRUFBRSxRQUFRO0lBQzlCLDJCQUEyQixFQUFFLFNBQVM7SUFDdEMsbUNBQW1DLEVBQUUscUJBQXFCO0lBQzFELDhCQUE4QixFQUFFLDREQUE0RDtJQUM1RixnQ0FBZ0MsRUFBRSw2QkFBNkI7SUFDL0QsMEJBQTBCLEVBQUUsVUFBVTtJQUN0QywyQkFBMkIsRUFBRSxnQkFBZ0I7SUFFN0MsdUJBQXVCLEVBQUUscUJBQXFCO0lBQzlDLHVCQUF1QixFQUFFLGtCQUFrQjtJQUMzQyxzQkFBc0IsRUFBRSxTQUFTO0lBQ2pDLHFCQUFxQixFQUFFLGVBQWU7SUFDdEMsd0JBQXdCLEVBQUUsTUFBTTtJQUNoQywwQkFBMEIsRUFBRSxhQUFhO0lBQ3pDLHVCQUF1QixFQUFFLFVBQVU7SUFDbkMseUJBQXlCLEVBQUUsZUFBZTtJQUMxQyx5QkFBeUIsRUFBRSxpQkFBaUI7SUFDNUMsNEJBQTRCLEVBQUUseUJBQXlCO0lBQ3ZELHFCQUFxQixFQUFFLFFBQVE7SUFDL0IscUJBQXFCLEVBQUUsUUFBUTtJQUMvQixxQkFBcUIsRUFBRSxRQUFRO0lBQy9CLGtCQUFrQixFQUFFLE9BQU87SUFDM0Isb0JBQW9CLEVBQUUsb0JBQW9CO0lBQzFDLDJCQUEyQixFQUFFLGlFQUFpRTtJQUM5RixxQkFBcUIsRUFBRSxxQkFBcUI7SUFDNUMsNEJBQTRCLEVBQUUsd0RBQXdEO0lBQ3RGLHNCQUFzQixFQUFFLFNBQVM7SUFDakMscUJBQXFCLEVBQUUsUUFBUTtJQUMvQiw0QkFBNEIsRUFBRSxnQkFBZ0I7SUFDOUMsNkJBQTZCLEVBQUUsaUNBQWlDO0lBQ2hFLG9CQUFvQixFQUFFLE9BQU87SUFDN0IsdUJBQXVCLEVBQUUsV0FBVztJQUNwQyxzQkFBc0IsRUFBRSxvQ0FBb0M7SUFDNUQsOEJBQThCLEVBQUUsYUFBYTtJQUM3Qyx5QkFBeUIsRUFBRSxhQUFhO0lBQ3hDLHVCQUF1QixFQUFFLFdBQVc7SUFDcEMsdUJBQXVCLEVBQUUsTUFBTTtJQUMvQix5QkFBeUIsRUFBRSxRQUFRO0lBQ25DLDRCQUE0QixFQUFFLGdEQUFnRDtJQUM5RSxzQkFBc0IsRUFBRSx3REFBd0Q7SUFDaEYsNkJBQTZCLEVBQUUsaUJBQWlCO0lBQ2hELG1CQUFtQixFQUFFLG1CQUFtQjtJQUV4QyxrREFBa0Q7SUFDbEQsR0FBRyxjQUFjO0lBRWpCLGVBQWUsRUFBRSx5Q0FBeUM7SUFDMUQsZUFBZSxFQUFFLHVEQUF1RDtJQUV4RSw4RUFBOEU7SUFDOUUsNEVBQTRFO0lBQzVFLCtCQUErQixFQUFFLGtDQUFrQztJQUNuRSwyQkFBMkIsRUFBRSx5QkFBeUI7SUFDdEQsOEJBQThCLEVBQUUsc0RBQXNEO0lBQ3RGLHlCQUF5QixFQUFFLDJDQUEyQztJQUN0RSw4QkFBOEIsRUFBRSwrQ0FBK0M7SUFDL0UseUJBQXlCLEVBQUUsd0RBQXdEO0lBQ25GLGlDQUFpQyxFQUFFLGlEQUFpRDtJQUNwRiw4QkFBOEIsRUFBRSxvRUFBb0U7SUFDcEcsMkJBQTJCLEVBQUUsbUZBQW1GO0lBQ2hILCtCQUErQixFQUFFLG9EQUFvRDtJQUNyRiw4QkFBOEIsRUFBRSxtREFBbUQ7SUFDbkYsd0NBQXdDLEVBQUUsNENBQTRDO0lBQ3RGLHdDQUF3QyxFQUFFLDJDQUEyQztJQUNyRixxQ0FBcUMsRUFBRSxpQ0FBaUM7SUFDeEUscUNBQXFDLEVBQUUsaUNBQWlDO0lBQ3hFLGlDQUFpQyxFQUFFLHVEQUF1RDtJQUMxRix5Q0FBeUMsRUFBRSxtREFBbUQ7SUFDOUYscUNBQXFDLEVBQUUsNERBQTREO0lBQ25HLDRCQUE0QixFQUFFLDhFQUE4RTtJQUM1Ryx3QkFBd0IsRUFBRSxrREFBa0Q7SUFDNUUsMEJBQTBCLEVBQUUseUZBQXlGO0lBQ3JILDZCQUE2QixFQUFFLCtDQUErQztJQUM5RSx5QkFBeUIsRUFBRSw0Q0FBNEM7SUFDdkUseUJBQXlCLEVBQUUsNENBQTRDO0lBQ3ZFLHdCQUF3QixFQUFFLHFEQUFxRDtJQUMvRSxzQkFBc0IsRUFBRSxtREFBbUQ7SUFDM0UsMkJBQTJCLEVBQUUsc0VBQXNFO0lBQ25HLGtDQUFrQyxFQUFFLDJGQUEyRjtJQUMvSCx5QkFBeUIsRUFBRSxvREFBb0Q7SUFDL0UsMEJBQTBCLEVBQUUsNENBQTRDO0lBQ3hFLHNCQUFzQixFQUFFLDRDQUE0QztJQUNwRSwrQkFBK0IsRUFBRSxpRUFBaUU7SUFDbEcsdUJBQXVCLEVBQUUsaUZBQWlGO0lBQzFHLGtCQUFrQixFQUFFLGdFQUFnRTtJQUNwRiw4QkFBOEIsRUFBRSx3REFBd0Q7SUFDeEYsZ0NBQWdDLEVBQUUsc0VBQXNFO0lBQ3hHLG9CQUFvQixFQUFFLCtEQUErRDtJQUNyRix5QkFBeUIsRUFBRSxvQ0FBb0M7SUFDL0QseUJBQXlCLEVBQUUsb0NBQW9DO0lBQy9ELHlCQUF5QixFQUFFLHFEQUFxRDtJQUNoRiwwQkFBMEIsRUFBRSx3REFBd0Q7SUFDcEYsNEJBQTRCLEVBQUUsK0ZBQStGO0NBQzlILENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixPQUFnQixFQUNoQixHQUFXLEVBQ1gsWUFBb0MsRUFBRTtJQUV0QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUNuRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0FBQzNGLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFlO0lBQzFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIMKnMTAuMzogXCJFdmVyeSBzdHJpbmcgcGFzc2VzIHRocm91Z2ggYW4gaTE4biBjYXRhbG9nOyBlbi1VUyBzaGlwcywgY2F0YWxvZ1xuICogZm9ybWF0IGRvY3VtZW50ZWQgZm9yIGNvbW11bml0eSBsb2NhbGVzLlwiXG4gKlxuICogQSBmbGF0IGtleS10by1zdHJpbmcgbWFwIHJhdGhlciB0aGFuIG5lc3RlZCBvYmplY3RzLCBiZWNhdXNlIG5lc3RpbmcgbG9va3NcbiAqIHRpZGllciBhbmQgbWFrZXMgYSBtaXNzaW5nIGtleSBhIHJ1bnRpbWUgY3Jhc2ggb24gYHVuZGVmaW5lZC5vZi5hLmNoYWluYFxuICogcmF0aGVyIHRoYW4gYSB2aXNpYmxlIGZhbGxiYWNrLlxuICpcbiAqIEEgbWlzc2luZyBrZXkgcmVuZGVycyB0aGUgS0VZLCBub3QgYW4gZW1wdHkgc3RyaW5nLiBBIGJsYW5rIGJ1dHRvbiBpcyBhIGJ1Z1xuICogbm9ib2R5IGNhbiByZXBvcnQ7IGEgYnV0dG9uIHJlYWRpbmcgYHNpZ25Jbi5zdWJtaXRgIGlzIG9uZSBhbnlvbmUgY2FuLlxuICovXG5cbmltcG9ydCB7IFBPTElDWV9TVFJJTkdTIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbmV4cG9ydCB0eXBlIENhdGFsb2cgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5leHBvcnQgY29uc3QgRU5fVVM6IENhdGFsb2cgPSB7XG4gICdzaWduSW4udGl0bGUnOiAnU2lnbiBpbicsXG4gICdzaWduSW4uc3VidGl0bGUnOiAndG8gY29udGludWUgdG8ge2FwcGxpY2F0aW9ufScsXG4gICdzaWduSW4uaWRlbnRpZmllckxhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnc2lnbkluLnBhc3N3b3JkTGFiZWwnOiAnUGFzc3dvcmQnLFxuICAnc2lnbkluLnN1Ym1pdCc6ICdDb250aW51ZScsXG4gICdzaWduSW4uZm9yZ290UGFzc3dvcmQnOiAnRm9yZ290IHBhc3N3b3JkPycsXG4gICdzaWduSW4ubm9BY2NvdW50JzogJ05vIGFjY291bnQ/JyxcbiAgJ3NpZ25Jbi5sYXN0VXNlZCc6ICdMYXN0IHVzZWQnLFxuICAnc2lnbkluLnNpZ25VcExpbmsnOiAnU2lnbiB1cCcsXG4gICdzaWduSW4ub3JEaXZpZGVyJzogJ29yJyxcbiAgJ3NpZ25Jbi5zb2NpYWxCdXR0b24nOiAnQ29udGludWUgd2l0aCB7cHJvdmlkZXJ9JyxcbiAgJ3NpZ25Jbi5jb250aW51ZVdpdGhBdGxhcyc6ICdDb250aW51ZSB3aXRoIEF0bGFzJyxcbiAgJ3NpZ25Jbi5lbWFpbENvZGVMYWJlbCc6ICdWZXJpZmljYXRpb24gY29kZScsXG4gICdzaWduSW4udXNlRW1haWxDb2RlJzogJ0VtYWlsIG1lIGEgY29kZScsXG4gICdzaWduSW4udXNlRW1haWxMaW5rJzogJ0VtYWlsIG1lIGEgc2lnbi1pbiBsaW5rJyxcbiAgJ3NpZ25Jbi5saW5rU2VudFRvJzogJ1dlIHNlbnQgYSBzaWduLWluIGxpbmsgdG8ge2VtYWlsfS4gT3BlbiBpdCBvbiBhbnkgZGV2aWNlIHRvIGNvbnRpbnVlLicsXG4gICdzaWduSW4ucmVzZW5kTGluayc6ICdSZXNlbmQgbGluaycsXG4gICdzaWduSW4ucGFzc3dvcmRPcHRpb24nOiAnVXNlIHlvdXIgcGFzc3dvcmQgaW5zdGVhZCcsXG4gICdzaWduSW4ucGFzc3dvcmRIb2xkUmVsZWFzZWQnOiAnWW91ciBlbWFpbCBpcyB2ZXJpZmllZC4gRW50ZXIgeW91ciBwYXNzd29yZCB0byBzaWduIGluLicsXG4gICdzaWduVXAuZXhpc3RpbmdBY2NvdW50JzogJ1lvdSBhbHJlYWR5IGhhZCBhbiBhY2NvdW50LiBZb3VyIGV4aXN0aW5nIHBhc3N3b3JkIHN0aWxsIGFwcGxpZXMuJyxcbiAgJ3NpZ25Jbi5jb2RlU2VudFRvJzogJ1dlIHNlbnQgYSBjb2RlIHRvIHtlbWFpbH0uIEVudGVyIGl0IGJlbG93LicsXG4gICdzaWduSW4ucmVzZW5kQ29kZSc6ICdSZXNlbmQgY29kZScsXG4gICdzaWduSW4uc2VuZGluZyc6ICdTZW5kaW5n4oCmJyxcbiAgJ3NpZ25Jbi5lbWFpbENvZGVPcHRpb24nOiAnRW1haWwgbWUgYSBjb2RlIGluc3RlYWQnLFxuICAnc2lnbkluLnBhc3NrZXlCdXR0b24nOiAnU2lnbiBpbiB3aXRoIGEgcGFzc2tleScsXG4gICdzaWduSW4ucGFzc2tleUNhbmNlbGxlZCc6IFwiUGFzc2tleSBzaWduLWluIGRpZG4ndCBmaW5pc2guIFRyeSBhZ2Fpbiwgb3IgdXNlIGFub3RoZXIgd2F5IHRvIHNpZ24gaW4uXCIsXG4gICdzaWduSW4ubWFnaWNMaW5rU2VudCc6ICdDaGVjayB5b3VyIGVtYWlsIGZvciBhIHNpZ24taW4gbGluay4nLFxuICAnc2lnbkluLnNpZ25lZEluJzogJ1lvdVxcJ3JlIHNpZ25lZCBpbi4nLFxuICAnc2lnbkluLnNlc3Npb25Ob3RLZXB0JzpcbiAgICAnWW91IHNpZ25lZCBpbiwgYnV0IHRoaXMgYnJvd3NlciBkaWRuXFwndCBrZWVwIHRoZSBzZXNzaW9uLiBJZiBpdCBibG9ja3MgdGhpcmQtcGFydHkgY29va2llcywgYWxsb3cgY29va2llcyBmb3IgdGhpcyBzaXRlIGFuZCB0cnkgYWdhaW4uJyxcbiAgJ3NpZ25Jbi5jaGVja090aGVyVGFiJzogJ1lvdSBjYW4gY2xvc2UgdGhpcyB0YWIg4oCUIHlvdSBhcmUgc2lnbmVkIGluIHdoZXJlIHlvdSBzdGFydGVkLicsXG5cbiAgJ3NpZ25VcC50aXRsZSc6ICdDcmVhdGUgeW91ciBhY2NvdW50JyxcbiAgJ3NpZ25VcC5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnblVwLmhhdmVBY2NvdW50JzogJ0FscmVhZHkgaGF2ZSBhbiBhY2NvdW50PycsXG4gICdzaWduVXAuc2lnbkluTGluayc6ICdTaWduIGluJyxcbiAgJ3NpZ25VcC5lbWFpbExhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnc2lnblVwLnBhc3N3b3JkTGFiZWwnOiAnUGFzc3dvcmQnLFxuICAnc2lnblVwLm9wdGlvbmFsRmllbGQnOiAne2xhYmVsfSAob3B0aW9uYWwpJyxcbiAgJ3NpZ25VcC5zZWxlY3RQbGFjZWhvbGRlcic6ICdTZWxlY3TigKYnLFxuICAnc2lnblVwLmNvbnNlbnRBZ3JlZSc6ICdJIGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAuY29uc2VudE5vdGljZSc6ICdCeSBjb250aW51aW5nIHlvdSBhZ3JlZSB0byB0aGUnLFxuICAnc2lnblVwLnRlcm1zJzogJ1Rlcm1zIG9mIFNlcnZpY2UnLFxuICAnc2lnblVwLnByaXZhY3knOiAnUHJpdmFjeSBQb2xpY3knLFxuICAnc2lnblVwLmFuZCc6ICdhbmQnLFxuICAvLyA9IEVNQUlMX1VOQVZBSUxBQkxFX01FU1NBR0UgZnJvbSBAYXRsYXNhdXRoL2pzLlxuICAnc2lnblVwLmVtYWlsVW5hdmFpbGFibGUnOlxuICAgIFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcbiAgJ3NpZ25VcC5wYXNza2V5T3B0aW9uJzogJ1NpZ24gdXAgd2l0aCBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdzaWduVXAucGFzc3dvcmRPcHRpb24nOiAnU2lnbiB1cCB3aXRoIGEgcGFzc3dvcmQgaW5zdGVhZCcsXG4gICdzaWduVXAucGFzc2tleUludHJvJzogXCJObyBwYXNzd29yZCBuZWVkZWQ6IHlvdSdsbCBzaWduIGluIHdpdGggYSBwYXNza2V5IHNhdmVkIG9uIHRoaXMgZGV2aWNlIG9yIGluIHlvdXIgcGFzc3dvcmQgbWFuYWdlci5cIixcbiAgJ3NpZ25VcC5wYXNza2V5UHJvbXB0JzogJ0NyZWF0ZSBhIHBhc3NrZXkgdG8gZmluaXNoIHNldHRpbmcgdXAgeW91ciBhY2NvdW50LicsXG4gICdzaWduVXAucGFzc2tleUNyZWF0ZSc6ICdDcmVhdGUgcGFzc2tleScsXG4gICdzaWduVXAucGFzc2tleUNhbmNlbGxlZCc6IFwiVGhlIHBhc3NrZXkgd2Fzbid0IGNyZWF0ZWQuIFRyeSBhZ2FpbiB3aGVuIHlvdSdyZSByZWFkeS5cIixcbiAgJ3NpZ25VcC5saW5rU2VudFRvJzogJ1dlIHNlbnQgYSBjb25maXJtYXRpb24gbGluayB0byB7ZW1haWx9LiBPcGVuIGl0IG9uIGFueSBkZXZpY2U7IHRoaXMgcGFnZSBjb250aW51ZXMgb24gaXRzIG93bi4nLFxuXG4gICdjYXB0Y2hhLnByb21wdCc6ICdDb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2sgdG8gY29udGludWUuJyxcbiAgJ2NhcHRjaGEucmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2NhcHRjaGEuZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICdjYXB0Y2hhLmNoZWNraW5nJzogJ0NoZWNraW5nIHlvdXIgYnJvd3NlcuKApicsXG4gICdjYXB0Y2hhLnZlcmlmaWVkJzogJ1NlY3VyaXR5IGNoZWNrIGNvbXBsZXRlLicsXG4gICdjYXB0Y2hhLnB1enpsZVByb21wdCc6IFwiU2VsZWN0IGV2ZXJ5IHBpY3R1cmUgdGhhdCBzaG93cyB0aGUgc2FtZSBzaGFwZSBhcyB0aGlzIG9uZS4gQ29sb3VyIGFuZCBzaXplIGRvbid0IG1hdHRlci5cIixcbiAgJ2NhcHRjaGEucHV6emxlQ29uZmlybSc6ICdDb25maXJtJyxcbiAgJ2NhcHRjaGEucHV6emxlVGlsZSc6ICdQaWN0dXJlIHtufScsXG4gICdjYXB0Y2hhLnB1enpsZUFsdGVybmF0aXZlJzogXCJDYW4ndCBkbyB0aGUgcGljdHVyZSBjaGVjaz8gVXNlIGEgbG9uZ2VyIGF1dG9tYXRpYyBjaGVjayBpbnN0ZWFkLlwiLFxuXG4gICdtZmEudGl0bGUnOiAnVHdvLXN0ZXAgdmVyaWZpY2F0aW9uJyxcbiAgJ21mYS5zdWJ0aXRsZSc6ICdFbnRlciB0aGUgY29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAuJyxcbiAgJ21mYS5jb2RlTGFiZWwnOiAnQ29kZScsXG4gICdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnOiAnQ29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNlY29uZENvZGVMYWJlbCc6ICdUaGUgbmV4dCBjb2RlIGl0IHNob3dzJyxcbiAgJ21mYS51c2VQYXNza2V5JzogJ1VzZSBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdtZmEudXNlQmFja3VwQ29kZSc6ICdVc2UgYSByZWNvdmVyeSBjb2RlJyxcbiAgJ21mYS5zdWJtaXQnOiAnVmVyaWZ5JyxcbiAgJ21mYS5lbnJvbGxDaG9vc2UnOiAnU2V0IHVwIGEgc2Vjb25kIHN0ZXAgZm9yIHNpZ25pbmcgaW4uJyxcbiAgJ21mYS5lbnJvbGxUb3RwT3B0aW9uJzogJ1VzZSBhbiBhdXRoZW50aWNhdG9yIGFwcCcsXG4gICdtZmEuZW5yb2xsU21zT3B0aW9uJzogJ1VzZSB0ZXh0IG1lc3NhZ2VzJyxcbiAgJ21mYS5lbnJvbGxTY2FuJzogJ1NjYW4gdGhpcyBRUiBjb2RlIHdpdGggeW91ciBhdXRoZW50aWNhdG9yIGFwcCwgb3IgZW50ZXIgdGhlIHNldHVwIGtleS4nLFxuICAnbWZhLmVucm9sbFFyQWx0JzogJ1FSIGNvZGUgZm9yIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNldHVwS2V5JzogJ1NldHVwIGtleScsXG4gICdtZmEuZW5yb2xsUHJlcGFyaW5nJzogJ1NldHRpbmcgdXDigKYnLFxuICAnbWZhLnBob25lTGFiZWwnOiAnTW9iaWxlIG51bWJlcicsXG4gICdtZmEucGhvbmVIaW50JzogJ0luY2x1ZGUgdGhlIGNvdW50cnkgY29kZSwgZm9yIGV4YW1wbGUgKzE0MTU1NTUwMTAxLicsXG4gICdtZmEuc2VuZENvZGUnOiAnVGV4dCBtZSBhIGNvZGUnLFxuICAnbWZhLmNvZGVUZXh0ZWRUbyc6ICdFbnRlciB0aGUgY29kZSB3ZSB0ZXh0ZWQgdG8ge3Bob25lfS4nLFxuICAnbWZhLnNtc0NvZGVPcHRpb24nOiAnVGV4dCBtZSBhIGNvZGUgaW5zdGVhZCcsXG4gICdtZmEucmVjb3ZlcnlDb2Rlc1RpdGxlJzogJ1NhdmUgeW91ciByZWNvdmVyeSBjb2RlcycsXG4gICdtZmEucmVjb3ZlcnlDb2Rlc0hlbHAnOiBcIkVhY2ggY29kZSB3b3JrcyBvbmNlLiBJZiB5b3UgY2FuJ3QgdXNlIHlvdXIgc2Vjb25kIHN0ZXAsIHNpZ24gaW4gd2l0aCBvbmUgb2YgdGhlc2UuIEtlZXAgdGhlbSBzb21ld2hlcmUgc2FmZTogdGhleSB3b24ndCBiZSBzaG93biBhZ2Fpbi5cIixcbiAgJ21mYS5yZWNvdmVyeUNvZGVzQ29weSc6ICdDb3B5IGNvZGVzJyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzQ29waWVkJzogJ0NvcGllZC4nLFxuICAnbWZhLnJlY292ZXJ5Q29kZXNEb3dubG9hZCc6ICdEb3dubG9hZCBhcyAudHh0JyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzU2F2ZWQnOiBcIkkndmUgc2F2ZWQgbXkgY29kZXNcIixcblxuICAncmVzZXQudGl0bGUnOiAnUmVzZXQgeW91ciBwYXNzd29yZCcsXG4gICdyZXNldC5zdWJtaXQnOiAnU2VuZCByZXNldCBjb2RlJyxcbiAgJ3Jlc2V0Lm5ld1Bhc3N3b3JkTGFiZWwnOiAnTmV3IHBhc3N3b3JkJyxcblxuICAndXNlckJ1dHRvbi5tYW5hZ2VBY2NvdW50JzogJ01hbmFnZSBhY2NvdW50JyxcbiAgJ3VzZXJCdXR0b24uc2lnbk91dCc6ICdTaWduIG91dCcsXG4gICd1c2VyQnV0dG9uLnNpZ25PdXRBbGwnOiAnU2lnbiBvdXQgb2YgYWxsIGRldmljZXMnLFxuXG4gICd1c2VyUHJvZmlsZS50aXRsZSc6ICdBY2NvdW50JyxcbiAgJ3VzZXJQcm9maWxlLnByb2ZpbGVTZWN0aW9uJzogJ1Byb2ZpbGUnLFxuICAndXNlclByb2ZpbGUuZW1haWxzU2VjdGlvbic6ICdFbWFpbCBhZGRyZXNzZXMnLFxuICAndXNlclByb2ZpbGUuc2VjdXJpdHlTZWN0aW9uJzogJ1NlY3VyaXR5JyxcbiAgJ3VzZXJQcm9maWxlLmRldmljZXNTZWN0aW9uJzogJ0FjdGl2ZSBkZXZpY2VzJyxcbiAgJ3VzZXJQcm9maWxlLmRhbmdlclNlY3Rpb24nOiAnRGFuZ2VyIHpvbmUnLFxuICAndXNlclByb2ZpbGUuYWRkRW1haWwnOiAnQWRkIGFuIGVtYWlsIGFkZHJlc3MnLFxuICAndXNlclByb2ZpbGUubWFrZVByaW1hcnknOiAnTWFrZSBwcmltYXJ5JyxcbiAgJ3VzZXJQcm9maWxlLnVudmVyaWZpZWQnOiAnVW52ZXJpZmllZCcsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnknOiAnVmVyaWZ5JyxcbiAgJ3VzZXJQcm9maWxlLnZlcmlmeUNvbmZpcm0nOiAnQ29uZmlybScsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlDb2RlUGxhY2Vob2xkZXInOiAnQ29kZSBmcm9tIHRoZSBlbWFpbCcsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlTZW5kRmFpbGVkJzogJ1dlIGNvdWxkIG5vdCBzZW5kIGEgY29kZSByaWdodCBub3cuIFRyeSBhZ2FpbiBpbiBhIG1pbnV0ZS4nLFxuICAndXNlclByb2ZpbGUudmVyaWZ5Q29kZVJlamVjdGVkJzogJ1RoYXQgY29kZSB3YXMgbm90IGFjY2VwdGVkLicsXG4gICd1c2VyUHJvZmlsZS5yZXZva2VEZXZpY2UnOiAnU2lnbiBvdXQnLFxuICAndXNlclByb2ZpbGUuZGVsZXRlQWNjb3VudCc6ICdEZWxldGUgYWNjb3VudCcsXG5cbiAgJ29yZ2FuaXphdGlvbi5zd2l0Y2hlcic6ICdTd2l0Y2ggb3JnYW5pemF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5wZXJzb25hbCc6ICdQZXJzb25hbCBhY2NvdW50JyxcbiAgJ29yZ2FuaXphdGlvbi5tZW1iZXJzJzogJ01lbWJlcnMnLFxuICAnb3JnYW5pemF0aW9uLmludml0ZSc6ICdJbnZpdGUgbWVtYmVyJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTGFiZWwnOiAnUm9sZScsXG4gICdvcmdhbml6YXRpb24uaW52aXRhdGlvbnMnOiAnSW52aXRhdGlvbnMnLFxuICAnb3JnYW5pemF0aW9uLnNldHRpbmdzJzogJ1NldHRpbmdzJyxcbiAgJ29yZ2FuaXphdGlvbi5lbWFpbExhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnb3JnYW5pemF0aW9uLnNlbmRJbnZpdGUnOiAnU2VuZCBpbnZpdGF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5ub0ludml0YXRpb25zJzogJ05vIHBlbmRpbmcgaW52aXRhdGlvbnMuJyxcbiAgJ29yZ2FuaXphdGlvbi5yZW1vdmUnOiAnUmVtb3ZlJyxcbiAgJ29yZ2FuaXphdGlvbi5yZXZva2UnOiAnUmV2b2tlJyxcbiAgJ29yZ2FuaXphdGlvbi5yZXNlbmQnOiAnUmVzZW5kJyxcbiAgJ29yZ2FuaXphdGlvbi55b3UnOiAnKHlvdSknLFxuICAnb3JnYW5pemF0aW9uLmxlYXZlJzogJ0xlYXZlIG9yZ2FuaXphdGlvbicsXG4gICdvcmdhbml6YXRpb24ubGVhdmVDb25maXJtJzogJ0xlYXZlIHtuYW1lfT8gWW91IHdpbGwgbG9zZSBhY2Nlc3MgdW50aWwgeW91IGFyZSBpbnZpdGVkIGFnYWluLicsXG4gICdvcmdhbml6YXRpb24uZGVsZXRlJzogJ0RlbGV0ZSBvcmdhbml6YXRpb24nLFxuICAnb3JnYW5pemF0aW9uLmRlbGV0ZUNvbmZpcm0nOiAnRGVsZXRlIHtuYW1lfSBmb3IgZXZlcnkgbWVtYmVyPyBUaGlzIGNhbm5vdCBiZSB1bmRvbmUuJyxcbiAgJ29yZ2FuaXphdGlvbi5jb25maXJtJzogJ0NvbmZpcm0nLFxuICAnb3JnYW5pemF0aW9uLmNhbmNlbCc6ICdDYW5jZWwnLFxuICAnb3JnYW5pemF0aW9uLnVubmFtZWRNZW1iZXInOiAnVW5uYW1lZCBtZW1iZXInLFxuICAnb3JnYW5pemF0aW9uLnBhc3N3b3JkUHJvbXB0JzogJ0VudGVyIHlvdXIgcGFzc3dvcmQgdG8gY29uZmlybS4nLFxuICAnb3JnYW5pemF0aW9uLnJvbGVzJzogJ1JvbGVzJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTmFtZSc6ICdSb2xlIG5hbWUnLFxuICAnb3JnYW5pemF0aW9uLnJvbGVLZXknOiAnUm9sZSBrZXkgKGZvciBleGFtcGxlIG9yZzphdWRpdG9yKScsXG4gICdvcmdhbml6YXRpb24ucm9sZVBlcm1pc3Npb25zJzogJ1Blcm1pc3Npb25zJyxcbiAgJ29yZ2FuaXphdGlvbi5jcmVhdGVSb2xlJzogJ0NyZWF0ZSByb2xlJyxcbiAgJ29yZ2FuaXphdGlvbi5zYXZlUm9sZSc6ICdTYXZlIHJvbGUnLFxuICAnb3JnYW5pemF0aW9uLmVkaXRSb2xlJzogJ0VkaXQnLFxuICAnb3JnYW5pemF0aW9uLmRlbGV0ZVJvbGUnOiAnRGVsZXRlJyxcbiAgJ29yZ2FuaXphdGlvbi5ub0N1c3RvbVJvbGVzJzogJ1RoaXMgb3JnYW5pemF0aW9uIGhhcyBubyByb2xlcyBvZiBpdHMgb3duIHlldC4nLFxuICAnaW1wZXJzb25hdGlvbi5iYW5uZXInOiAnWW91IGFyZSBzaWduZWQgaW4gYXMge25hbWV9IG9uIHNvbWVvbmUgZWxzZVxcJ3MgYmVoYWxmLicsXG4gICdpbXBlcnNvbmF0aW9uLnJldHVyblRvQWRtaW4nOiAnUmV0dXJuIHRvIGFkbWluJyxcbiAgJ2ltcGVyc29uYXRpb24uZW5kJzogJ0VuZCBpbXBlcnNvbmF0aW9uJyxcblxuICAvLyBQb2xpY3kgYWNjZXB0YW5jZSAodGVybXMsIHByaXZhY3ksIGFueSBwb2xpY3kpLlxuICAuLi5QT0xJQ1lfU1RSSU5HUyxcblxuICAnZXJyb3IuZ2VuZXJpYyc6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAnZXJyb3IubmV0d29yayc6ICdXZSBjb3VsZCBub3QgcmVhY2ggdGhlIHNlcnZlci4gQ2hlY2sgeW91ciBjb25uZWN0aW9uLicsXG5cbiAgLy8gU2VydmVyIGVycm9ycywgYnkgdGhlIHN0YWJsZSBgcmVhc29uYCB0aGUgRnJvbnRlbmQgQVBJIHNlbmRzLiBTaG93biBpbnN0ZWFkXG4gIC8vIG9mIHRoZSBzZXJ2ZXIncyBgbWVzc2FnZWAgKHNlZSBgbG9jYWxpemVkRXJyb3JNZXNzYWdlYCBpbiBAYXRsYXNhdXRoL2pzKS5cbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfaW5jb3JyZWN0JzogJ1Rob3NlIGNyZWRlbnRpYWxzIGFyZSBpbmNvcnJlY3QuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9pbmNvcnJlY3QnOiAnVGhhdCBjb2RlIGlzIGluY29ycmVjdC4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2FscmVhZHlfdXNlZCc6ICdUaGF0IGNvZGUgaGFzIGFscmVhZHkgYmVlbiB1c2VkLiBXYWl0IGZvciBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9leHBpcmVkJzogJ1RoYXQgY29kZSBoYXMgZXhwaXJlZC4gUmVxdWVzdCBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9tYXhfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgaW5jb3JyZWN0IGNvZGVzLiBSZXF1ZXN0IGEgbmV3IGNvZGUuJyxcbiAgJ2Vycm9yLmZvcm1fbGlua19pbnZhbGlkJzogJ1RoYXQgc2lnbi1pbiBsaW5rIGlzIGludmFsaWQgb3IgaGFzIGFscmVhZHkgYmVlbiB1c2VkLicsXG4gICdlcnJvci5mb3JtX2lkZW50aWZpZXJfbm90X2ZvdW5kJzogXCJXZSBjb3VsZG4ndCBmaW5kIGFuIGFjY291bnQgd2l0aCB0aG9zZSBkZXRhaWxzLlwiLFxuICAnZXJyb3IuZm9ybV9pZGVudGlmaWVyX2V4aXN0cyc6IFwiVGhlcmUncyBhbHJlYWR5IGFuIGFjY291bnQgZm9yIHRoaXMgZW1haWwuIFNpZ24gaW4gd2l0aCB7bWV0aG9kc30uXCIsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3B3bmVkJzogJ1RoaXMgcGFzc3dvcmQgaGFzIGFwcGVhcmVkIGluIGEga25vd24gZGF0YSBicmVhY2guIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19zaG9ydCc6ICdQYXNzd29yZCBtdXN0IGJlIGF0IGxlYXN0IHttaW5fbGVuZ3RofSBjaGFyYWN0ZXJzLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19sb25nJzogJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbW9zdCB7bWF4X2xlbmd0aH0gY2hhcmFjdGVycy4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc191cHBlcmNhc2UnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGFuIHVwcGVyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbG93ZXJjYXNlJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIGxvd2VyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbnVtYmVyJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIG51bWJlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19zeW1ib2wnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgc3ltYm9sLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX25vdF9hbGxvd2VkJzogJ1RoYXQgcGFzc3dvcmQgaXMgbm90IGFsbG93ZWQuIENob29zZSBhIGRpZmZlcmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfY29udGFpbnNfaWRlbnRpZmllcic6ICdQYXNzd29yZCBtdXN0IG5vdCBjb250YWluIHlvdXIgZW1haWwgb3IgdXNlcm5hbWUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfc2FtZV9hc19jdXJyZW50JzogJ1lvdXIgbmV3IHBhc3N3b3JkIG11c3QgYmUgZGlmZmVyZW50IGZyb20geW91ciBjdXJyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXVzZWQnOiAnWW91ciBuZXcgcGFzc3dvcmQgbXVzdCBub3QgbWF0Y2ggYW55IG9mIHlvdXIgbGFzdCB7aGlzdG9yeV9jb3VudH0gcGFzc3dvcmRzLicsXG4gICdlcnJvci5wYXNzd29yZF9leHBpcmVkJzogJ1lvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFJlc2V0IGl0IHRvIGNvbnRpbnVlLicsXG4gICdlcnJvci5lbWFpbF9ub3RfdmVyaWZpZWQnOiAnWW91ciBlbWFpbCBhZGRyZXNzIGlzIG5vdCB2ZXJpZmllZCB5ZXQuIFZlcmlmeSBpdCBiZWZvcmUgc2lnbmluZyBpbiB3aXRoIHlvdXIgcGFzc3dvcmQuJyxcbiAgJ2Vycm9yLnNpZ25faW5fdG9rZW5faW52YWxpZCc6ICdUaGF0IHNpZ24taW4gdG9rZW4gaXMgaW52YWxpZCBvciBoYXMgZXhwaXJlZC4nLFxuICAnZXJyb3IudG9vX21hbnlfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgZmFpbGVkIGF0dGVtcHRzLiBUcnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLnRvb19tYW55X3JlcXVlc3RzJzogJ1RvbyBtYW55IHJlcXVlc3RzLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5jYXB0Y2hhX3JlcXVpcmVkJzogJ1BsZWFzZSBjb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2ssIHRoZW4gdHJ5IGFnYWluLicsXG4gICdlcnJvci5jYXB0Y2hhX2ZhaWxlZCc6IFwiVGhlIHNlY3VyaXR5IGNoZWNrIGRpZG4ndCBwYXNzLiBQbGVhc2UgdHJ5IGFnYWluLlwiLFxuICAnZXJyb3IuY2FwdGNoYV91bmF2YWlsYWJsZSc6ICdUaGUgc2VjdXJpdHkgY2hlY2sgaXMgdW5hdmFpbGFibGUgcmlnaHQgbm93LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5lbWFpbF9kZWxpdmVyeV91bmF2YWlsYWJsZSc6IFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcbiAgJ2Vycm9yLnN0cmF0ZWd5X2Rpc2FibGVkJzogJ1RoaXMgc2lnbi1pbiBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBhcHAuJyxcbiAgJ2Vycm9yLnNpZ25fdXBfcmVzdHJpY3RlZCc6ICdTaWduLXVwIG9uIHRoaXMgYXBwIGlzIGJ5IGludml0YXRpb24gb25seS4nLFxuICAnZXJyb3Iuc2lnbl91cF9kZW5pZWQnOiAnU2lnbi11cCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGFjY291bnQuJyxcbiAgJ2Vycm9yLnBhc3N3b3JkX25vdF95ZXRfdXNhYmxlJzogJ1ZlcmlmeSB5b3VyIGVtYWlsIGFkZHJlc3MgYmVmb3JlIHNpZ25pbmcgaW4gd2l0aCB0aGlzIHBhc3N3b3JkLicsXG4gICdlcnJvci5hY2NvdW50X2RlbGV0ZWQnOiAnVGhlIGFjY291bnQgZm9yIHRoaXMgYWRkcmVzcyB3YXMgZGVsZXRlZCwgc28gaXQgY2Fu4oCZdCBiZSB1c2VkIHRvIHNpZ24gdXAgYWdhaW4uJyxcbiAgJ2Vycm9yLndhaXRsaXN0ZWQnOiBcIllvdSdyZSBvbiB0aGUgd2FpdGxpc3QuIFdlJ2xsIGVtYWlsIHlvdSB3aGVuIGEgcGxhY2Ugb3BlbnMgdXAuXCIsXG4gICdlcnJvci5pZGVudGlmaWVyX25vdF9hbGxvd2VkJzogJ1RoaXMgZW1haWwgb3IgcGhvbmUgbnVtYmVyIGlzIG5vdCBhbGxvd2VkIG9uIHRoaXMgYXBwLicsXG4gICdlcnJvci5kaXNwb3NhYmxlX2VtYWlsX2Jsb2NrZWQnOiAnU2lnbi11cCB3aXRoIGEgZGlzcG9zYWJsZSBvciB0ZW1wb3JhcnkgZW1haWwgYWRkcmVzcyBpcyBub3QgYWxsb3dlZC4nLFxuICAnZXJyb3Iuc3NvX3JlcXVpcmVkJzogJ1RoaXMgb3JnYW5pemF0aW9uIHJlcXVpcmVzIHNpZ25pbmcgaW4gdGhyb3VnaCBzaW5nbGUgc2lnbi1vbi4nLFxuICAnZXJyb3Iuc2lnbl9pbnNfZGlzYWJsZWQnOiAnU2lnbi1pbnMgYXJlIHRlbXBvcmFyaWx5IGRpc2FibGVkLicsXG4gICdlcnJvci5zaWduX3Vwc19kaXNhYmxlZCc6ICdTaWduLXVwcyBhcmUgdGVtcG9yYXJpbHkgZGlzYWJsZWQuJyxcbiAgJ2Vycm9yLmhpZ2hfcmlza19ibG9ja2VkJzogJ1RoaXMgc2lnbi1pbiB3YXMgYmxvY2tlZCBiZWNhdXNlIGl0IGxvb2tlZCB1bnVzdWFsLicsXG4gICdlcnJvci5zbXNfcmVnaW9uX2Jsb2NrZWQnOiAnVGV4dCBtZXNzYWdlcyBhcmUgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBwaG9uZSBudW1iZXIuJyxcbiAgJ2Vycm9yLmdpdGh1Yl90ZWFtX3JlcXVpcmVkJzogJ1lvdXIgR2l0SHViIGFjY291bnQgaXMgbm90IGEgbWVtYmVyIG9mIGEgR2l0SHViIG9yZ2FuaXphdGlvbiBvciB0ZWFtIGFsbG93ZWQgdG8gc2lnbiBpbiBoZXJlLicsXG59O1xuXG4vKipcbiAqIExvb2sgdXAgYSBrZXkgYW5kIGludGVycG9sYXRlIGB7cGxhY2Vob2xkZXJzfWAuXG4gKlxuICogQW4gdW5rbm93biBwbGFjZWhvbGRlciBpcyBsZWZ0IHZpc2libGUgZm9yIHRoZSBzYW1lIHJlYXNvbiBhIG1pc3Npbmcga2V5IGlzOlxuICogYENvbnRpbnVlIHdpdGgge3Byb3ZpZGVyfWAgaW4gdGhlIFVJIGlzIGEgYnVnIHJlcG9ydCB3YWl0aW5nIHRvIGJlIGZpbGVkLFxuICogd2hlcmVhcyBgQ29udGludWUgd2l0aCBgIGlzIG9uZSBub2JvZHkgbm90aWNlcyB1bnRpbCBhIGN1c3RvbWVyIGRvZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGUoXG4gIGNhdGFsb2c6IENhdGFsb2csXG4gIGtleTogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHRlbXBsYXRlID0gY2F0YWxvZ1trZXldID8/IEVOX1VTW2tleV0gPz8ga2V5O1xuICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgvXFx7KFxcdyspXFx9L2csIChtYXRjaCwgbmFtZTogc3RyaW5nKSA9PiB2YXJpYWJsZXNbbmFtZV0gPz8gbWF0Y2gpO1xufVxuXG4vKiogTWVyZ2UgYSBjb21tdW5pdHkgbG9jYWxlIG92ZXIgZW4tVVMgc28gYSBwYXJ0aWFsIHRyYW5zbGF0aW9uIHN0aWxsIHJlbmRlcnMuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEZhbGxiYWNrKGxvY2FsZTogQ2F0YWxvZyk6IENhdGFsb2cge1xuICByZXR1cm4geyAuLi5FTl9VUywgLi4ubG9jYWxlIH07XG59XG4iXX0=
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQVk7SUFDNUIsY0FBYyxFQUFFLFNBQVM7SUFDekIsaUJBQWlCLEVBQUUsOEJBQThCO0lBQ2pELHdCQUF3QixFQUFFLGVBQWU7SUFDekMsc0JBQXNCLEVBQUUsVUFBVTtJQUNsQyxlQUFlLEVBQUUsVUFBVTtJQUMzQix1QkFBdUIsRUFBRSxrQkFBa0I7SUFDM0Msa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyxpQkFBaUIsRUFBRSxXQUFXO0lBQzlCLG1CQUFtQixFQUFFLFNBQVM7SUFDOUIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsMEJBQTBCLEVBQUUscUJBQXFCO0lBQ2pELHVCQUF1QixFQUFFLG1CQUFtQjtJQUM1QyxxQkFBcUIsRUFBRSxpQkFBaUI7SUFDeEMscUJBQXFCLEVBQUUseUJBQXlCO0lBQ2hELG1CQUFtQixFQUFFLHVFQUF1RTtJQUM1RixtQkFBbUIsRUFBRSxhQUFhO0lBQ2xDLHVCQUF1QixFQUFFLDJCQUEyQjtJQUNwRCw2QkFBNkIsRUFBRSx5REFBeUQ7SUFDeEYsd0JBQXdCLEVBQUUsbUVBQW1FO0lBQzdGLHVCQUF1QixFQUFFLCtDQUErQztJQUN4RSxtQkFBbUIsRUFBRSw0Q0FBNEM7SUFDakUsbUJBQW1CLEVBQUUsYUFBYTtJQUNsQyxnQkFBZ0IsRUFBRSxVQUFVO0lBQzVCLHdCQUF3QixFQUFFLHlCQUF5QjtJQUNuRCxzQkFBc0IsRUFBRSx3QkFBd0I7SUFDaEQseUJBQXlCLEVBQUUsMEVBQTBFO0lBQ3JHLHNCQUFzQixFQUFFLHNDQUFzQztJQUM5RCxpQkFBaUIsRUFBRSxvQkFBb0I7SUFD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QUN4RSxzQkFBc0IsRUFBRSw0Q0FBNEM7SUFDcEUsK0JBQStCLEVBQUUsaUVBQWlFO0lBQ2xHLHVCQUF1QixFQUFFLGlGQUFpRjtJQUMxRyxrQkFBa0IsRUFBRSxnRUFBZ0U7SUFDcEYsOEJBQThCLEVBQUUsd0RBQXdEO0lBQ3hGLGdDQUFnQyxFQUFFLHNFQUFzRTtJQUN4RyxvQkFBb0IsRUFBRSwrREFBK0Q7SUFDckYseUJBQXlCLEVBQUUsb0NBQW9DO0lBQy9ELHlCQUF5QixFQUFFLG9DQUFvQztJQUMvRCx5QkFBeUIsRUFBRSxxREFBcUQ7SUFDaEYsMEJBQTBCLEVBQUUsd0RBQXdEO0lBQ3BGLDRCQUE0QixFQUFFLCtGQUErRjtDQUM5SCxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsT0FBZ0IsRUFDaEIsR0FBVyxFQUNYLFlBQW9DLEVBQUU7SUFFdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZTtJQUMxQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDCpzEwLjM6IFwiRXZlcnkgc3RyaW5nIHBhc3NlcyB0aHJvdWdoIGFuIGkxOG4gY2F0YWxvZzsgZW4tVVMgc2hpcHMsIGNhdGFsb2dcbiAqIGZvcm1hdCBkb2N1bWVudGVkIGZvciBjb21tdW5pdHkgbG9jYWxlcy5cIlxuICpcbiAqIEEgZmxhdCBrZXktdG8tc3RyaW5nIG1hcCByYXRoZXIgdGhhbiBuZXN0ZWQgb2JqZWN0cywgYmVjYXVzZSBuZXN0aW5nIGxvb2tzXG4gKiB0aWRpZXIgYW5kIG1ha2VzIGEgbWlzc2luZyBrZXkgYSBydW50aW1lIGNyYXNoIG9uIGB1bmRlZmluZWQub2YuYS5jaGFpbmBcbiAqIHJhdGhlciB0aGFuIGEgdmlzaWJsZSBmYWxsYmFjay5cbiAqXG4gKiBBIG1pc3Npbmcga2V5IHJlbmRlcnMgdGhlIEtFWSwgbm90IGFuIGVtcHR5IHN0cmluZy4gQSBibGFuayBidXR0b24gaXMgYSBidWdcbiAqIG5vYm9keSBjYW4gcmVwb3J0OyBhIGJ1dHRvbiByZWFkaW5nIGBzaWduSW4uc3VibWl0YCBpcyBvbmUgYW55b25lIGNhbi5cbiAqL1xuXG5pbXBvcnQgeyBQT0xJQ1lfU1RSSU5HUyB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IEVOX1VTOiBDYXRhbG9nID0ge1xuICAnc2lnbkluLnRpdGxlJzogJ1NpZ24gaW4nLFxuICAnc2lnbkluLnN1YnRpdGxlJzogJ3RvIGNvbnRpbnVlIHRvIHthcHBsaWNhdGlvbn0nLFxuICAnc2lnbkluLmlkZW50aWZpZXJMYWJlbCc6ICdFbWFpbCBhZGRyZXNzJyxcbiAgJ3NpZ25Jbi5wYXNzd29yZExhYmVsJzogJ1Bhc3N3b3JkJyxcbiAgJ3NpZ25Jbi5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnbkluLmZvcmdvdFBhc3N3b3JkJzogJ0ZvcmdvdCBwYXNzd29yZD8nLFxuICAnc2lnbkluLm5vQWNjb3VudCc6ICdObyBhY2NvdW50PycsXG4gICdzaWduSW4ubGFzdFVzZWQnOiAnTGFzdCB1c2VkJyxcbiAgJ3NpZ25Jbi5zaWduVXBMaW5rJzogJ1NpZ24gdXAnLFxuICAnc2lnbkluLm9yRGl2aWRlcic6ICdvcicsXG4gICdzaWduSW4uc29jaWFsQnV0dG9uJzogJ0NvbnRpbnVlIHdpdGgge3Byb3ZpZGVyfScsXG4gICdzaWduSW4uY29udGludWVXaXRoQXRsYXMnOiAnQ29udGludWUgd2l0aCBBdGxhcycsXG4gICdzaWduSW4uZW1haWxDb2RlTGFiZWwnOiAnVmVyaWZpY2F0aW9uIGNvZGUnLFxuICAnc2lnbkluLnVzZUVtYWlsQ29kZSc6ICdFbWFpbCBtZSBhIGNvZGUnLFxuICAnc2lnbkluLnVzZUVtYWlsTGluayc6ICdFbWFpbCBtZSBhIHNpZ24taW4gbGluaycsXG4gICdzaWduSW4ubGlua1NlbnRUbyc6ICdXZSBzZW50IGEgc2lnbi1pbiBsaW5rIHRvIHtlbWFpbH0uIE9wZW4gaXQgb24gYW55IGRldmljZSB0byBjb250aW51ZS4nLFxuICAnc2lnbkluLnJlc2VuZExpbmsnOiAnUmVzZW5kIGxpbmsnLFxuICAnc2lnbkluLnBhc3N3b3JkT3B0aW9uJzogJ1VzZSB5b3VyIHBhc3N3b3JkIGluc3RlYWQnLFxuICAnc2lnbkluLnBhc3N3b3JkSG9sZFJlbGVhc2VkJzogJ1lvdXIgZW1haWwgaXMgdmVyaWZpZWQuIEVudGVyIHlvdXIgcGFzc3dvcmQgdG8gc2lnbiBpbi4nLFxuICAnc2lnblVwLmV4aXN0aW5nQWNjb3VudCc6ICdZb3UgYWxyZWFkeSBoYWQgYW4gYWNjb3VudC4gWW91ciBleGlzdGluZyBwYXNzd29yZCBzdGlsbCBhcHBsaWVzLicsXG4gICdzaWduVXAuZW1haWxDb25maXJtZWQnOiAnWW91ciBlbWFpbCBpcyBjb25maXJtZWQuIFNpZ24gaW4gdG8gY29udGludWUuJyxcbiAgJ3NpZ25Jbi5jb2RlU2VudFRvJzogJ1dlIHNlbnQgYSBjb2RlIHRvIHtlbWFpbH0uIEVudGVyIGl0IGJlbG93LicsXG4gICdzaWduSW4ucmVzZW5kQ29kZSc6ICdSZXNlbmQgY29kZScsXG4gICdzaWduSW4uc2VuZGluZyc6ICdTZW5kaW5n4oCmJyxcbiAgJ3NpZ25Jbi5lbWFpbENvZGVPcHRpb24nOiAnRW1haWwgbWUgYSBjb2RlIGluc3RlYWQnLFxuICAnc2lnbkluLnBhc3NrZXlCdXR0b24nOiAnU2lnbiBpbiB3aXRoIGEgcGFzc2tleScsXG4gICdzaWduSW4ucGFzc2tleUNhbmNlbGxlZCc6IFwiUGFzc2tleSBzaWduLWluIGRpZG4ndCBmaW5pc2guIFRyeSBhZ2Fpbiwgb3IgdXNlIGFub3RoZXIgd2F5IHRvIHNpZ24gaW4uXCIsXG4gICdzaWduSW4ubWFnaWNMaW5rU2VudCc6ICdDaGVjayB5b3VyIGVtYWlsIGZvciBhIHNpZ24taW4gbGluay4nLFxuICAnc2lnbkluLnNpZ25lZEluJzogJ1lvdVxcJ3JlIHNpZ25lZCBpbi4nLFxuICAnc2lnbkluLnNlc3Npb25Ob3RLZXB0JzpcbiAgICAnWW91IHNpZ25lZCBpbiwgYnV0IHRoaXMgYnJvd3NlciBkaWRuXFwndCBrZWVwIHRoZSBzZXNzaW9uLiBJZiBpdCBibG9ja3MgdGhpcmQtcGFydHkgY29va2llcywgYWxsb3cgY29va2llcyBmb3IgdGhpcyBzaXRlIGFuZCB0cnkgYWdhaW4uJyxcbiAgJ3NpZ25Jbi5jaGVja090aGVyVGFiJzogJ1lvdSBjYW4gY2xvc2UgdGhpcyB0YWIg4oCUIHlvdSBhcmUgc2lnbmVkIGluIHdoZXJlIHlvdSBzdGFydGVkLicsXG5cbiAgJ3NpZ25VcC50aXRsZSc6ICdDcmVhdGUgeW91ciBhY2NvdW50JyxcbiAgJ3NpZ25VcC5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnblVwLmhhdmVBY2NvdW50JzogJ0FscmVhZHkgaGF2ZSBhbiBhY2NvdW50PycsXG4gICdzaWduVXAuc2lnbkluTGluayc6ICdTaWduIGluJyxcbiAgJ3NpZ25VcC5lbWFpbExhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnc2lnblVwLnBhc3N3b3JkTGFiZWwnOiAnUGFzc3dvcmQnLFxuICAnc2lnblVwLm9wdGlvbmFsRmllbGQnOiAne2xhYmVsfSAob3B0aW9uYWwpJyxcbiAgJ3NpZ25VcC5zZWxlY3RQbGFjZWhvbGRlcic6ICdTZWxlY3TigKYnLFxuICAnc2lnblVwLmNvbnNlbnRBZ3JlZSc6ICdJIGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAuY29uc2VudE5vdGljZSc6ICdCeSBjb250aW51aW5nIHlvdSBhZ3JlZSB0byB0aGUnLFxuICAnc2lnblVwLnRlcm1zJzogJ1Rlcm1zIG9mIFNlcnZpY2UnLFxuICAnc2lnblVwLnByaXZhY3knOiAnUHJpdmFjeSBQb2xpY3knLFxuICAnc2lnblVwLmFuZCc6ICdhbmQnLFxuICAvLyA9IEVNQUlMX1VOQVZBSUxBQkxFX01FU1NBR0UgZnJvbSBAYXRsYXNhdXRoL2pzLlxuICAnc2lnblVwLmVtYWlsVW5hdmFpbGFibGUnOlxuICAgIFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcbiAgJ3NpZ25VcC5wYXNza2V5T3B0aW9uJzogJ1NpZ24gdXAgd2l0aCBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdzaWduVXAucGFzc3dvcmRPcHRpb24nOiAnU2lnbiB1cCB3aXRoIGEgcGFzc3dvcmQgaW5zdGVhZCcsXG4gICdzaWduVXAucGFzc2tleUludHJvJzogXCJObyBwYXNzd29yZCBuZWVkZWQ6IHlvdSdsbCBzaWduIGluIHdpdGggYSBwYXNza2V5IHNhdmVkIG9uIHRoaXMgZGV2aWNlIG9yIGluIHlvdXIgcGFzc3dvcmQgbWFuYWdlci5cIixcbiAgJ3NpZ25VcC5wYXNza2V5UHJvbXB0JzogJ0NyZWF0ZSBhIHBhc3NrZXkgdG8gZmluaXNoIHNldHRpbmcgdXAgeW91ciBhY2NvdW50LicsXG4gICdzaWduVXAucGFzc2tleUNyZWF0ZSc6ICdDcmVhdGUgcGFzc2tleScsXG4gICdzaWduVXAucGFzc2tleUNhbmNlbGxlZCc6IFwiVGhlIHBhc3NrZXkgd2Fzbid0IGNyZWF0ZWQuIFRyeSBhZ2FpbiB3aGVuIHlvdSdyZSByZWFkeS5cIixcbiAgJ3NpZ25VcC5saW5rU2VudFRvJzogJ1dlIHNlbnQgYSBjb25maXJtYXRpb24gbGluayB0byB7ZW1haWx9LiBPcGVuIGl0IG9uIGFueSBkZXZpY2U7IHRoaXMgcGFnZSBjb250aW51ZXMgb24gaXRzIG93bi4nLFxuXG4gICdjYXB0Y2hhLnByb21wdCc6ICdDb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2sgdG8gY29udGludWUuJyxcbiAgJ2NhcHRjaGEucmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2NhcHRjaGEuZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICdjYXB0Y2hhLmNoZWNraW5nJzogJ0NoZWNraW5nIHlvdXIgYnJvd3NlcuKApicsXG4gICdjYXB0Y2hhLnZlcmlmaWVkJzogJ1NlY3VyaXR5IGNoZWNrIGNvbXBsZXRlLicsXG4gICdjYXB0Y2hhLnB1enpsZVByb21wdCc6IFwiU2VsZWN0IGV2ZXJ5IHBpY3R1cmUgdGhhdCBzaG93cyB0aGUgc2FtZSBzaGFwZSBhcyB0aGlzIG9uZS4gQ29sb3VyIGFuZCBzaXplIGRvbid0IG1hdHRlci5cIixcbiAgJ2NhcHRjaGEucHV6emxlQ29uZmlybSc6ICdDb25maXJtJyxcbiAgJ2NhcHRjaGEucHV6emxlVGlsZSc6ICdQaWN0dXJlIHtufScsXG4gICdjYXB0Y2hhLnB1enpsZUFsdGVybmF0aXZlJzogXCJDYW4ndCBkbyB0aGUgcGljdHVyZSBjaGVjaz8gVXNlIGEgbG9uZ2VyIGF1dG9tYXRpYyBjaGVjayBpbnN0ZWFkLlwiLFxuXG4gICdtZmEudGl0bGUnOiAnVHdvLXN0ZXAgdmVyaWZpY2F0aW9uJyxcbiAgJ21mYS5zdWJ0aXRsZSc6ICdFbnRlciB0aGUgY29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAuJyxcbiAgJ21mYS5jb2RlTGFiZWwnOiAnQ29kZScsXG4gICdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnOiAnQ29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNlY29uZENvZGVMYWJlbCc6ICdUaGUgbmV4dCBjb2RlIGl0IHNob3dzJyxcbiAgJ21mYS51c2VQYXNza2V5JzogJ1VzZSBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdtZmEudXNlQmFja3VwQ29kZSc6ICdVc2UgYSByZWNvdmVyeSBjb2RlJyxcbiAgJ21mYS5zdWJtaXQnOiAnVmVyaWZ5JyxcbiAgJ21mYS5lbnJvbGxDaG9vc2UnOiAnU2V0IHVwIGEgc2Vjb25kIHN0ZXAgZm9yIHNpZ25pbmcgaW4uJyxcbiAgJ21mYS5lbnJvbGxUb3RwT3B0aW9uJzogJ1VzZSBhbiBhdXRoZW50aWNhdG9yIGFwcCcsXG4gICdtZmEuZW5yb2xsU21zT3B0aW9uJzogJ1VzZSB0ZXh0IG1lc3NhZ2VzJyxcbiAgJ21mYS5lbnJvbGxTY2FuJzogJ1NjYW4gdGhpcyBRUiBjb2RlIHdpdGggeW91ciBhdXRoZW50aWNhdG9yIGFwcCwgb3IgZW50ZXIgdGhlIHNldHVwIGtleS4nLFxuICAnbWZhLmVucm9sbFFyQWx0JzogJ1FSIGNvZGUgZm9yIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNldHVwS2V5JzogJ1NldHVwIGtleScsXG4gICdtZmEuZW5yb2xsUHJlcGFyaW5nJzogJ1NldHRpbmcgdXDigKYnLFxuICAnbWZhLnBob25lTGFiZWwnOiAnTW9iaWxlIG51bWJlcicsXG4gICdtZmEucGhvbmVIaW50JzogJ0luY2x1ZGUgdGhlIGNvdW50cnkgY29kZSwgZm9yIGV4YW1wbGUgKzE0MTU1NTUwMTAxLicsXG4gICdtZmEuc2VuZENvZGUnOiAnVGV4dCBtZSBhIGNvZGUnLFxuICAnbWZhLmNvZGVUZXh0ZWRUbyc6ICdFbnRlciB0aGUgY29kZSB3ZSB0ZXh0ZWQgdG8ge3Bob25lfS4nLFxuICAnbWZhLnNtc0NvZGVPcHRpb24nOiAnVGV4dCBtZSBhIGNvZGUgaW5zdGVhZCcsXG4gICdtZmEucmVjb3ZlcnlDb2Rlc1RpdGxlJzogJ1NhdmUgeW91ciByZWNvdmVyeSBjb2RlcycsXG4gICdtZmEucmVjb3ZlcnlDb2Rlc0hlbHAnOiBcIkVhY2ggY29kZSB3b3JrcyBvbmNlLiBJZiB5b3UgY2FuJ3QgdXNlIHlvdXIgc2Vjb25kIHN0ZXAsIHNpZ24gaW4gd2l0aCBvbmUgb2YgdGhlc2UuIEtlZXAgdGhlbSBzb21ld2hlcmUgc2FmZTogdGhleSB3b24ndCBiZSBzaG93biBhZ2Fpbi5cIixcbiAgJ21mYS5yZWNvdmVyeUNvZGVzQ29weSc6ICdDb3B5IGNvZGVzJyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzQ29waWVkJzogJ0NvcGllZC4nLFxuICAnbWZhLnJlY292ZXJ5Q29kZXNEb3dubG9hZCc6ICdEb3dubG9hZCBhcyAudHh0JyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzU2F2ZWQnOiBcIkkndmUgc2F2ZWQgbXkgY29kZXNcIixcblxuICAncmVzZXQudGl0bGUnOiAnUmVzZXQgeW91ciBwYXNzd29yZCcsXG4gICdyZXNldC5zdWJtaXQnOiAnU2VuZCByZXNldCBjb2RlJyxcbiAgJ3Jlc2V0Lm5ld1Bhc3N3b3JkTGFiZWwnOiAnTmV3IHBhc3N3b3JkJyxcblxuICAndXNlckJ1dHRvbi5tYW5hZ2VBY2NvdW50JzogJ01hbmFnZSBhY2NvdW50JyxcbiAgJ3VzZXJCdXR0b24uc2lnbk91dCc6ICdTaWduIG91dCcsXG4gICd1c2VyQnV0dG9uLnNpZ25PdXRBbGwnOiAnU2lnbiBvdXQgb2YgYWxsIGRldmljZXMnLFxuXG4gICd1c2VyUHJvZmlsZS50aXRsZSc6ICdBY2NvdW50JyxcbiAgJ3VzZXJQcm9maWxlLnByb2ZpbGVTZWN0aW9uJzogJ1Byb2ZpbGUnLFxuICAndXNlclByb2ZpbGUuZW1haWxzU2VjdGlvbic6ICdFbWFpbCBhZGRyZXNzZXMnLFxuICAndXNlclByb2ZpbGUuc2VjdXJpdHlTZWN0aW9uJzogJ1NlY3VyaXR5JyxcbiAgJ3VzZXJQcm9maWxlLmRldmljZXNTZWN0aW9uJzogJ0FjdGl2ZSBkZXZpY2VzJyxcbiAgJ3VzZXJQcm9maWxlLmRhbmdlclNlY3Rpb24nOiAnRGFuZ2VyIHpvbmUnLFxuICAndXNlclByb2ZpbGUuYWRkRW1haWwnOiAnQWRkIGFuIGVtYWlsIGFkZHJlc3MnLFxuICAndXNlclByb2ZpbGUubWFrZVByaW1hcnknOiAnTWFrZSBwcmltYXJ5JyxcbiAgJ3VzZXJQcm9maWxlLnVudmVyaWZpZWQnOiAnVW52ZXJpZmllZCcsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnknOiAnVmVyaWZ5JyxcbiAgJ3VzZXJQcm9maWxlLnZlcmlmeUNvbmZpcm0nOiAnQ29uZmlybScsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlDb2RlUGxhY2Vob2xkZXInOiAnQ29kZSBmcm9tIHRoZSBlbWFpbCcsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlTZW5kRmFpbGVkJzogJ1dlIGNvdWxkIG5vdCBzZW5kIGEgY29kZSByaWdodCBub3cuIFRyeSBhZ2FpbiBpbiBhIG1pbnV0ZS4nLFxuICAndXNlclByb2ZpbGUudmVyaWZ5Q29kZVJlamVjdGVkJzogJ1RoYXQgY29kZSB3YXMgbm90IGFjY2VwdGVkLicsXG4gICd1c2VyUHJvZmlsZS5yZXZva2VEZXZpY2UnOiAnU2lnbiBvdXQnLFxuICAndXNlclByb2ZpbGUuZGVsZXRlQWNjb3VudCc6ICdEZWxldGUgYWNjb3VudCcsXG5cbiAgJ29yZ2FuaXphdGlvbi5zd2l0Y2hlcic6ICdTd2l0Y2ggb3JnYW5pemF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5wZXJzb25hbCc6ICdQZXJzb25hbCBhY2NvdW50JyxcbiAgJ29yZ2FuaXphdGlvbi5tZW1iZXJzJzogJ01lbWJlcnMnLFxuICAnb3JnYW5pemF0aW9uLmludml0ZSc6ICdJbnZpdGUgbWVtYmVyJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTGFiZWwnOiAnUm9sZScsXG4gICdvcmdhbml6YXRpb24uaW52aXRhdGlvbnMnOiAnSW52aXRhdGlvbnMnLFxuICAnb3JnYW5pemF0aW9uLnNldHRpbmdzJzogJ1NldHRpbmdzJyxcbiAgJ29yZ2FuaXphdGlvbi5lbWFpbExhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnb3JnYW5pemF0aW9uLnNlbmRJbnZpdGUnOiAnU2VuZCBpbnZpdGF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5ub0ludml0YXRpb25zJzogJ05vIHBlbmRpbmcgaW52aXRhdGlvbnMuJyxcbiAgJ29yZ2FuaXphdGlvbi5yZW1vdmUnOiAnUmVtb3ZlJyxcbiAgJ29yZ2FuaXphdGlvbi5yZXZva2UnOiAnUmV2b2tlJyxcbiAgJ29yZ2FuaXphdGlvbi5yZXNlbmQnOiAnUmVzZW5kJyxcbiAgJ29yZ2FuaXphdGlvbi55b3UnOiAnKHlvdSknLFxuICAnb3JnYW5pemF0aW9uLmxlYXZlJzogJ0xlYXZlIG9yZ2FuaXphdGlvbicsXG4gICdvcmdhbml6YXRpb24ubGVhdmVDb25maXJtJzogJ0xlYXZlIHtuYW1lfT8gWW91IHdpbGwgbG9zZSBhY2Nlc3MgdW50aWwgeW91IGFyZSBpbnZpdGVkIGFnYWluLicsXG4gICdvcmdhbml6YXRpb24uZGVsZXRlJzogJ0RlbGV0ZSBvcmdhbml6YXRpb24nLFxuICAnb3JnYW5pemF0aW9uLmRlbGV0ZUNvbmZpcm0nOiAnRGVsZXRlIHtuYW1lfSBmb3IgZXZlcnkgbWVtYmVyPyBUaGlzIGNhbm5vdCBiZSB1bmRvbmUuJyxcbiAgJ29yZ2FuaXphdGlvbi5jb25maXJtJzogJ0NvbmZpcm0nLFxuICAnb3JnYW5pemF0aW9uLmNhbmNlbCc6ICdDYW5jZWwnLFxuICAnb3JnYW5pemF0aW9uLnVubmFtZWRNZW1iZXInOiAnVW5uYW1lZCBtZW1iZXInLFxuICAnb3JnYW5pemF0aW9uLnBhc3N3b3JkUHJvbXB0JzogJ0VudGVyIHlvdXIgcGFzc3dvcmQgdG8gY29uZmlybS4nLFxuICAnb3JnYW5pemF0aW9uLnJvbGVzJzogJ1JvbGVzJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTmFtZSc6ICdSb2xlIG5hbWUnLFxuICAnb3JnYW5pemF0aW9uLnJvbGVLZXknOiAnUm9sZSBrZXkgKGZvciBleGFtcGxlIG9yZzphdWRpdG9yKScsXG4gICdvcmdhbml6YXRpb24ucm9sZVBlcm1pc3Npb25zJzogJ1Blcm1pc3Npb25zJyxcbiAgJ29yZ2FuaXphdGlvbi5jcmVhdGVSb2xlJzogJ0NyZWF0ZSByb2xlJyxcbiAgJ29yZ2FuaXphdGlvbi5zYXZlUm9sZSc6ICdTYXZlIHJvbGUnLFxuICAnb3JnYW5pemF0aW9uLmVkaXRSb2xlJzogJ0VkaXQnLFxuICAnb3JnYW5pemF0aW9uLmRlbGV0ZVJvbGUnOiAnRGVsZXRlJyxcbiAgJ29yZ2FuaXphdGlvbi5ub0N1c3RvbVJvbGVzJzogJ1RoaXMgb3JnYW5pemF0aW9uIGhhcyBubyByb2xlcyBvZiBpdHMgb3duIHlldC4nLFxuICAnaW1wZXJzb25hdGlvbi5iYW5uZXInOiAnWW91IGFyZSBzaWduZWQgaW4gYXMge25hbWV9IG9uIHNvbWVvbmUgZWxzZVxcJ3MgYmVoYWxmLicsXG4gICdpbXBlcnNvbmF0aW9uLnJldHVyblRvQWRtaW4nOiAnUmV0dXJuIHRvIGFkbWluJyxcbiAgJ2ltcGVyc29uYXRpb24uZW5kJzogJ0VuZCBpbXBlcnNvbmF0aW9uJyxcblxuICAvLyBQb2xpY3kgYWNjZXB0YW5jZSAodGVybXMsIHByaXZhY3ksIGFueSBwb2xpY3kpLlxuICAuLi5QT0xJQ1lfU1RSSU5HUyxcblxuICAnZXJyb3IuZ2VuZXJpYyc6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAnZXJyb3IubmV0d29yayc6ICdXZSBjb3VsZCBub3QgcmVhY2ggdGhlIHNlcnZlci4gQ2hlY2sgeW91ciBjb25uZWN0aW9uLicsXG5cbiAgLy8gU2VydmVyIGVycm9ycywgYnkgdGhlIHN0YWJsZSBgcmVhc29uYCB0aGUgRnJvbnRlbmQgQVBJIHNlbmRzLiBTaG93biBpbnN0ZWFkXG4gIC8vIG9mIHRoZSBzZXJ2ZXIncyBgbWVzc2FnZWAgKHNlZSBgbG9jYWxpemVkRXJyb3JNZXNzYWdlYCBpbiBAYXRsYXNhdXRoL2pzKS5cbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfaW5jb3JyZWN0JzogJ1Rob3NlIGNyZWRlbnRpYWxzIGFyZSBpbmNvcnJlY3QuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9pbmNvcnJlY3QnOiAnVGhhdCBjb2RlIGlzIGluY29ycmVjdC4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2FscmVhZHlfdXNlZCc6ICdUaGF0IGNvZGUgaGFzIGFscmVhZHkgYmVlbiB1c2VkLiBXYWl0IGZvciBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9leHBpcmVkJzogJ1RoYXQgY29kZSBoYXMgZXhwaXJlZC4gUmVxdWVzdCBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9tYXhfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgaW5jb3JyZWN0IGNvZGVzLiBSZXF1ZXN0IGEgbmV3IGNvZGUuJyxcbiAgJ2Vycm9yLmZvcm1fbGlua19pbnZhbGlkJzogJ1RoYXQgc2lnbi1pbiBsaW5rIGlzIGludmFsaWQgb3IgaGFzIGFscmVhZHkgYmVlbiB1c2VkLicsXG4gICdlcnJvci5mb3JtX2lkZW50aWZpZXJfbm90X2ZvdW5kJzogXCJXZSBjb3VsZG4ndCBmaW5kIGFuIGFjY291bnQgd2l0aCB0aG9zZSBkZXRhaWxzLlwiLFxuICAnZXJyb3IuZm9ybV9pZGVudGlmaWVyX2V4aXN0cyc6IFwiVGhlcmUncyBhbHJlYWR5IGFuIGFjY291bnQgZm9yIHRoaXMgZW1haWwuIFNpZ24gaW4gd2l0aCB7bWV0aG9kc30uXCIsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3B3bmVkJzogJ1RoaXMgcGFzc3dvcmQgaGFzIGFwcGVhcmVkIGluIGEga25vd24gZGF0YSBicmVhY2guIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19zaG9ydCc6ICdQYXNzd29yZCBtdXN0IGJlIGF0IGxlYXN0IHttaW5fbGVuZ3RofSBjaGFyYWN0ZXJzLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19sb25nJzogJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbW9zdCB7bWF4X2xlbmd0aH0gY2hhcmFjdGVycy4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc191cHBlcmNhc2UnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGFuIHVwcGVyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbG93ZXJjYXNlJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIGxvd2VyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbnVtYmVyJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIG51bWJlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19zeW1ib2wnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgc3ltYm9sLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX25vdF9hbGxvd2VkJzogJ1RoYXQgcGFzc3dvcmQgaXMgbm90IGFsbG93ZWQuIENob29zZSBhIGRpZmZlcmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfY29udGFpbnNfaWRlbnRpZmllcic6ICdQYXNzd29yZCBtdXN0IG5vdCBjb250YWluIHlvdXIgZW1haWwgb3IgdXNlcm5hbWUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfc2FtZV9hc19jdXJyZW50JzogJ1lvdXIgbmV3IHBhc3N3b3JkIG11c3QgYmUgZGlmZmVyZW50IGZyb20geW91ciBjdXJyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXVzZWQnOiAnWW91ciBuZXcgcGFzc3dvcmQgbXVzdCBub3QgbWF0Y2ggYW55IG9mIHlvdXIgbGFzdCB7aGlzdG9yeV9jb3VudH0gcGFzc3dvcmRzLicsXG4gICdlcnJvci5wYXNzd29yZF9leHBpcmVkJzogJ1lvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFJlc2V0IGl0IHRvIGNvbnRpbnVlLicsXG4gICdlcnJvci5lbWFpbF9ub3RfdmVyaWZpZWQnOiAnWW91ciBlbWFpbCBhZGRyZXNzIGlzIG5vdCB2ZXJpZmllZCB5ZXQuIFZlcmlmeSBpdCBiZWZvcmUgc2lnbmluZyBpbiB3aXRoIHlvdXIgcGFzc3dvcmQuJyxcbiAgJ2Vycm9yLnNpZ25faW5fdG9rZW5faW52YWxpZCc6ICdUaGF0IHNpZ24taW4gdG9rZW4gaXMgaW52YWxpZCBvciBoYXMgZXhwaXJlZC4nLFxuICAnZXJyb3IudG9vX21hbnlfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgZmFpbGVkIGF0dGVtcHRzLiBUcnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLnRvb19tYW55X3JlcXVlc3RzJzogJ1RvbyBtYW55IHJlcXVlc3RzLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5jYXB0Y2hhX3JlcXVpcmVkJzogJ1BsZWFzZSBjb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2ssIHRoZW4gdHJ5IGFnYWluLicsXG4gICdlcnJvci5jYXB0Y2hhX2ZhaWxlZCc6IFwiVGhlIHNlY3VyaXR5IGNoZWNrIGRpZG4ndCBwYXNzLiBQbGVhc2UgdHJ5IGFnYWluLlwiLFxuICAnZXJyb3IuY2FwdGNoYV91bmF2YWlsYWJsZSc6ICdUaGUgc2VjdXJpdHkgY2hlY2sgaXMgdW5hdmFpbGFibGUgcmlnaHQgbm93LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5lbWFpbF9kZWxpdmVyeV91bmF2YWlsYWJsZSc6IFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcbiAgJ2Vycm9yLnN0cmF0ZWd5X2Rpc2FibGVkJzogJ1RoaXMgc2lnbi1pbiBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBhcHAuJyxcbiAgJ2Vycm9yLnNpZ25fdXBfcmVzdHJpY3RlZCc6ICdTaWduLXVwIG9uIHRoaXMgYXBwIGlzIGJ5IGludml0YXRpb24gb25seS4nLFxuICAnZXJyb3Iuc2lnbl91cF9kZW5pZWQnOiAnU2lnbi11cCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGFjY291bnQuJyxcbiAgJ2Vycm9yLnBhc3N3b3JkX25vdF95ZXRfdXNhYmxlJzogJ1ZlcmlmeSB5b3VyIGVtYWlsIGFkZHJlc3MgYmVmb3JlIHNpZ25pbmcgaW4gd2l0aCB0aGlzIHBhc3N3b3JkLicsXG4gICdlcnJvci5hY2NvdW50X2RlbGV0ZWQnOiAnVGhlIGFjY291bnQgZm9yIHRoaXMgYWRkcmVzcyB3YXMgZGVsZXRlZCwgc28gaXQgY2Fu4oCZdCBiZSB1c2VkIHRvIHNpZ24gdXAgYWdhaW4uJyxcbiAgJ2Vycm9yLndhaXRsaXN0ZWQnOiBcIllvdSdyZSBvbiB0aGUgd2FpdGxpc3QuIFdlJ2xsIGVtYWlsIHlvdSB3aGVuIGEgcGxhY2Ugb3BlbnMgdXAuXCIsXG4gICdlcnJvci5pZGVudGlmaWVyX25vdF9hbGxvd2VkJzogJ1RoaXMgZW1haWwgb3IgcGhvbmUgbnVtYmVyIGlzIG5vdCBhbGxvd2VkIG9uIHRoaXMgYXBwLicsXG4gICdlcnJvci5kaXNwb3NhYmxlX2VtYWlsX2Jsb2NrZWQnOiAnU2lnbi11cCB3aXRoIGEgZGlzcG9zYWJsZSBvciB0ZW1wb3JhcnkgZW1haWwgYWRkcmVzcyBpcyBub3QgYWxsb3dlZC4nLFxuICAnZXJyb3Iuc3NvX3JlcXVpcmVkJzogJ1RoaXMgb3JnYW5pemF0aW9uIHJlcXVpcmVzIHNpZ25pbmcgaW4gdGhyb3VnaCBzaW5nbGUgc2lnbi1vbi4nLFxuICAnZXJyb3Iuc2lnbl9pbnNfZGlzYWJsZWQnOiAnU2lnbi1pbnMgYXJlIHRlbXBvcmFyaWx5IGRpc2FibGVkLicsXG4gICdlcnJvci5zaWduX3Vwc19kaXNhYmxlZCc6ICdTaWduLXVwcyBhcmUgdGVtcG9yYXJpbHkgZGlzYWJsZWQuJyxcbiAgJ2Vycm9yLmhpZ2hfcmlza19ibG9ja2VkJzogJ1RoaXMgc2lnbi1pbiB3YXMgYmxvY2tlZCBiZWNhdXNlIGl0IGxvb2tlZCB1bnVzdWFsLicsXG4gICdlcnJvci5zbXNfcmVnaW9uX2Jsb2NrZWQnOiAnVGV4dCBtZXNzYWdlcyBhcmUgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBwaG9uZSBudW1iZXIuJyxcbiAgJ2Vycm9yLmdpdGh1Yl90ZWFtX3JlcXVpcmVkJzogJ1lvdXIgR2l0SHViIGFjY291bnQgaXMgbm90IGEgbWVtYmVyIG9mIGEgR2l0SHViIG9yZ2FuaXphdGlvbiBvciB0ZWFtIGFsbG93ZWQgdG8gc2lnbiBpbiBoZXJlLicsXG59O1xuXG4vKipcbiAqIExvb2sgdXAgYSBrZXkgYW5kIGludGVycG9sYXRlIGB7cGxhY2Vob2xkZXJzfWAuXG4gKlxuICogQW4gdW5rbm93biBwbGFjZWhvbGRlciBpcyBsZWZ0IHZpc2libGUgZm9yIHRoZSBzYW1lIHJlYXNvbiBhIG1pc3Npbmcga2V5IGlzOlxuICogYENvbnRpbnVlIHdpdGgge3Byb3ZpZGVyfWAgaW4gdGhlIFVJIGlzIGEgYnVnIHJlcG9ydCB3YWl0aW5nIHRvIGJlIGZpbGVkLFxuICogd2hlcmVhcyBgQ29udGludWUgd2l0aCBgIGlzIG9uZSBub2JvZHkgbm90aWNlcyB1bnRpbCBhIGN1c3RvbWVyIGRvZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGUoXG4gIGNhdGFsb2c6IENhdGFsb2csXG4gIGtleTogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHRlbXBsYXRlID0gY2F0YWxvZ1trZXldID8/IEVOX1VTW2tleV0gPz8ga2V5O1xuICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgvXFx7KFxcdyspXFx9L2csIChtYXRjaCwgbmFtZTogc3RyaW5nKSA9PiB2YXJpYWJsZXNbbmFtZV0gPz8gbWF0Y2gpO1xufVxuXG4vKiogTWVyZ2UgYSBjb21tdW5pdHkgbG9jYWxlIG92ZXIgZW4tVVMgc28gYSBwYXJ0aWFsIHRyYW5zbGF0aW9uIHN0aWxsIHJlbmRlcnMuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEZhbGxiYWNrKGxvY2FsZTogQ2F0YWxvZyk6IENhdGFsb2cge1xuICByZXR1cm4geyAuLi5FTl9VUywgLi4ubG9jYWxlIH07XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
|
|
2
|
-
export const ATLAS_ANGULAR_VERSION = '0.
|
|
2
|
+
export const ATLAS_ANGULAR_VERSION = '0.15.0';
|
|
3
3
|
export const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFpQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRsYXNTZGtJbmZvIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8qKiBUaGlzIHBhY2thZ2UncyB2ZXJzaW9uLCBzZW50IGFzIGBYLUF0bGFzLVNES2AgKGtlcHQgaW4gc3RlcCB3aXRoIHBhY2thZ2UuanNvbiBieSBhIHRlc3QpLiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiA9ICcwLjE1LjAnO1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfU0RLOiBBdGxhc1Nka0luZm8gPSB7IG5hbWU6ICdAYXRsYXNhdXRoL2FuZ3VsYXInLCB2ZXJzaW9uOiBBVExBU19BTkdVTEFSX1ZFUlNJT04gfTtcbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { isPlatformBrowser, DOCUMENT } from '@angular/common';
|
|
|
4
4
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { BehaviorSubject, Subject, combineLatest, firstValueFrom } from 'rxjs';
|
|
6
6
|
import { map, distinctUntilChanged, filter, take } from 'rxjs/operators';
|
|
7
|
-
import { createOrganizationAuditLog, POLICY_STRINGS, TokenCache, SignOutNotifier, resolveFrontendApi, withDevBrowser, catalogLocale, configureReferralCapture, FapiClient, SignOutGuard, localizedErrorMessage, reauthenticate, getTemplateToken, getProviderToken, signOutReasonFromClient, readRedirectResult, completeOAuthPopupLanding, mapOAuthPopupPayload, stripRedirectParams, closeOAuthPopupAfterSignIn, SDK_HEADER, sdkHeaderValue, reportSdkAdvisory, readExpiry, msUntilRefresh, policyTranslator, injectPolicyStyles, mountPolicyClickwrap, mountPolicyConsent, controllerForPending, mountPolicyAcceptStep, joinTitles, formatPolicyDate, PolicyGateController, groupSetupKey, enrollmentSubmitKey, nextStep, awaitingSignUpLink, canDownloadRecoveryCodes, copyRecoveryCodes, downloadRecoveryCodes, createCaptchaController, atlasCaptchaLabels, PolicyAcceptanceController, flowFromPending, initialFlow, createMfaEnrollment, createPasskeySignInController, startSignInWithAtlas, mfaChoicesFrom, fetchInstanceSettings, fetchLastSignInMethod, offeredFirstFactors, preparePasswordHoldProof, prepareFactor, signInCaptchaOptions, flowNeedsCaptcha, planFirstFactor, attemptPasswordHoldProof, advanceWithCaptcha, loadPolicies, createSignUp, prepareSecondFactorCode, resendSignUpVerification, createPasskeySignUp, finishPasskeySignUp, pendingRecoveryCodes, acknowledgeRecoveryCodes, pendingExistingAccountNotice, acknowledgeExistingAccount, shouldKeepPolling, pollAttempt, lastUsedMethodLabel, signUp, passkeysSupported, confirmPolicies, existingAccountResetUrl, awaitingPasskey, listCibaRequests, getCibaPin, decideCibaRequest, setCibaPin, clearCibaPin, OrganizationProfileController, describeAuditAction, actorFromClaims } from '@atlasauth/js';
|
|
7
|
+
import { createOrganizationAuditLog, POLICY_STRINGS, TokenCache, SignOutNotifier, resolveFrontendApi, withDevBrowser, catalogLocale, configureReferralCapture, FapiClient, SignOutGuard, localizedErrorMessage, reauthenticate, getTemplateToken, getProviderToken, signOutReasonFromClient, readRedirectResult, completeOAuthPopupLanding, mapOAuthPopupPayload, stripRedirectParams, closeOAuthPopupAfterSignIn, SDK_HEADER, sdkHeaderValue, reportSdkAdvisory, readExpiry, msUntilRefresh, policyTranslator, injectPolicyStyles, mountPolicyClickwrap, mountPolicyConsent, controllerForPending, mountPolicyAcceptStep, joinTitles, formatPolicyDate, PolicyGateController, groupSetupKey, enrollmentSubmitKey, nextStep, awaitingSignUpLink, canDownloadRecoveryCodes, copyRecoveryCodes, downloadRecoveryCodes, createCaptchaController, atlasCaptchaLabels, PolicyAcceptanceController, flowFromPending, initialFlow, createMfaEnrollment, createPasskeySignInController, startSignInWithAtlas, mfaChoicesFrom, fetchInstanceSettings, fetchLastSignInMethod, offeredFirstFactors, preparePasswordHoldProof, prepareFactor, signInCaptchaOptions, flowNeedsCaptcha, planFirstFactor, attemptPasswordHoldProof, advanceWithCaptcha, loadPolicies, createSignUp, prepareSecondFactorCode, resendSignUpVerification, createPasskeySignUp, finishPasskeySignUp, pendingRecoveryCodes, acknowledgeRecoveryCodes, pendingExistingAccountNotice, acknowledgeExistingAccount, shouldKeepPolling, pollAttempt, lastUsedMethodLabel, signUp, passkeysSupported, confirmPolicies, existingAccountResetUrl, signUpProvedByLink, signInAfterProofUrl, awaitingPasskey, listCibaRequests, getCibaPin, decideCibaRequest, setCibaPin, clearCibaPin, OrganizationProfileController, describeAuditAction, actorFromClaims } from '@atlasauth/js';
|
|
8
8
|
export { FapiClient, SIGN_OUT_EVENT, SignOutError, advance, flowFromPending, getProviderToken, initialFlow, onAtlasSignOut, pollAttempt, prepareFactor, requestForStep, shouldKeepPolling } from '@atlasauth/js';
|
|
9
9
|
import { evaluate } from '@atlasauth/authz';
|
|
10
10
|
export { evaluate, hasFromClaims } from '@atlasauth/authz';
|
|
@@ -213,6 +213,7 @@ const EN_US = {
|
|
|
213
213
|
'signIn.passwordOption': 'Use your password instead',
|
|
214
214
|
'signIn.passwordHoldReleased': 'Your email is verified. Enter your password to sign in.',
|
|
215
215
|
'signUp.existingAccount': 'You already had an account. Your existing password still applies.',
|
|
216
|
+
'signUp.emailConfirmed': 'Your email is confirmed. Sign in to continue.',
|
|
216
217
|
'signIn.codeSentTo': 'We sent a code to {email}. Enter it below.',
|
|
217
218
|
'signIn.resendCode': 'Resend code',
|
|
218
219
|
'signIn.sending': 'Sending…',
|
|
@@ -402,7 +403,7 @@ function withFallback(locale) {
|
|
|
402
403
|
}
|
|
403
404
|
|
|
404
405
|
/** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
|
|
405
|
-
const ATLAS_ANGULAR_VERSION = '0.
|
|
406
|
+
const ATLAS_ANGULAR_VERSION = '0.15.0';
|
|
406
407
|
const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
|
|
407
408
|
|
|
408
409
|
/**
|
|
@@ -1672,10 +1673,6 @@ class AttemptFlowComponent {
|
|
|
1672
1673
|
// `webauthn`: saved passkeys appear in this field's autofill while <atlas-sign-in> holds a conditional request.
|
|
1673
1674
|
return [{ kind: 'input', name: 'identifier', labelKey: 'signIn.identifierLabel', type: 'email', autocomplete: 'username webauthn' }];
|
|
1674
1675
|
case 'collect_first_factor': {
|
|
1675
|
-
// A link proved an address on an existing account: no session, and the password signs in.
|
|
1676
|
-
if (this.attempt?.object === 'sign_up_attempt' && !(this.attempt.supported_first_factors ?? []).includes('passkey')) {
|
|
1677
|
-
return [released()];
|
|
1678
|
-
}
|
|
1679
1676
|
if (this.preparedFactor === 'email_code') {
|
|
1680
1677
|
return [{ kind: 'input', name: 'code', labelKey: 'signIn.emailCodeLabel', type: 'text' }];
|
|
1681
1678
|
}
|
|
@@ -2756,7 +2753,13 @@ class AtlasFlowController {
|
|
|
2756
2753
|
async finish(next) {
|
|
2757
2754
|
// An enrolment's recovery codes are shown first; `saveRecoveryCodes` finishes.
|
|
2758
2755
|
if (pendingRecoveryCodes(next)) {
|
|
2759
|
-
|
|
2756
|
+
// The ticket dies in 60 seconds and saving the codes can take longer: redeem it now,
|
|
2757
|
+
// and `saveRecoveryCodes` finishes. A refused exchange keeps the ticket, so the save reports it.
|
|
2758
|
+
this.setState({ ...next, busy: true });
|
|
2759
|
+
const res = next.ticket
|
|
2760
|
+
? await this.client.post('/v1/client/tickets/exchange', { attempt_id: next.attempt.id, ticket: next.ticket })
|
|
2761
|
+
: null;
|
|
2762
|
+
this.setState({ ...next, busy: false, ticket: res?.ok ? null : next.ticket });
|
|
2760
2763
|
return;
|
|
2761
2764
|
}
|
|
2762
2765
|
if (next.attempt?.status === 'complete') {
|
|
@@ -3616,6 +3619,8 @@ class SignUpComponent {
|
|
|
3616
3619
|
afterUrl;
|
|
3617
3620
|
/** Where the existing-account notice's "Forgot password?" goes. Default: the hosted sign-in page; `null` hides it. */
|
|
3618
3621
|
resetPasswordUrl;
|
|
3622
|
+
/** Where "Sign in" goes once an emailed link confirmed the address and made no session here. Default: the hosted sign-in page; `null` hides it. */
|
|
3623
|
+
signInUrl;
|
|
3619
3624
|
flow = new AtlasFlowController(this.atlas.createFapiClient(), () => this.atlas.reload(), this.atlas.pendingAttempt, (key) => translate(this.atlas.localization, key), true);
|
|
3620
3625
|
/** Password or passkey-only sign-up (the latter when the instance offers it). */
|
|
3621
3626
|
mode = signal('password');
|
|
@@ -3633,6 +3638,13 @@ class SignUpComponent {
|
|
|
3633
3638
|
resetHref() {
|
|
3634
3639
|
return existingAccountResetUrl({ url: this.resetPasswordUrl, frontendApi: this.atlas.frontendApi, redirectUrl: this.afterUrl });
|
|
3635
3640
|
}
|
|
3641
|
+
/** A link confirmed the address and made no session here. Says the same for any address. */
|
|
3642
|
+
emailConfirmed() {
|
|
3643
|
+
return signUpProvedByLink(this.flow.state().attempt);
|
|
3644
|
+
}
|
|
3645
|
+
signInHref() {
|
|
3646
|
+
return signInAfterProofUrl({ url: this.signInUrl, frontendApi: this.atlas.frontendApi, redirectUrl: this.afterUrl });
|
|
3647
|
+
}
|
|
3636
3648
|
awaitingPasskey() {
|
|
3637
3649
|
return awaitingPasskey(this.flow.state().attempt);
|
|
3638
3650
|
}
|
|
@@ -3657,8 +3669,10 @@ class SignUpComponent {
|
|
|
3657
3669
|
this.flow.destroy();
|
|
3658
3670
|
}
|
|
3659
3671
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignUpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3660
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SignUpComponent, isStandalone: true, selector: "atlas-sign-up", inputs: { afterUrl: "afterUrl", resetPasswordUrl: "resetPasswordUrl" }, ngImport: i0, template: `
|
|
3661
|
-
@if (flow.
|
|
3672
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SignUpComponent, isStandalone: true, selector: "atlas-sign-up", inputs: { afterUrl: "afterUrl", resetPasswordUrl: "resetPasswordUrl", signInUrl: "signInUrl" }, ngImport: i0, template: `
|
|
3673
|
+
@if (flow.recoveryCodes(); as codes) {
|
|
3674
|
+
<atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
|
|
3675
|
+
} @else if (flow.existingAccountNotice()) {
|
|
3662
3676
|
<div [class]="cls('card', 'atlas-card')" data-atlas-existing-account="">
|
|
3663
3677
|
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
3664
3678
|
<p class="atlas-text">{{ t('signUp.existingAccount') }}</p>
|
|
@@ -3690,6 +3704,14 @@ class SignUpComponent {
|
|
|
3690
3704
|
{{ t('signUp.passkeyCreate') }}
|
|
3691
3705
|
</button>
|
|
3692
3706
|
</div>
|
|
3707
|
+
} @else if (emailConfirmed()) {
|
|
3708
|
+
<div [class]="cls('card', 'atlas-card')" data-atlas-email-confirmed="">
|
|
3709
|
+
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
3710
|
+
<p class="atlas-text" role="status">{{ t('signUp.emailConfirmed') }}</p>
|
|
3711
|
+
@if (signInHref(); as href) {
|
|
3712
|
+
<a [class]="cls('formButtonPrimary', 'atlas-button')" [href]="href">{{ t('signIn.title') }}</a>
|
|
3713
|
+
}
|
|
3714
|
+
</div>
|
|
3693
3715
|
} @else if (flow.state().attempt) {
|
|
3694
3716
|
<atlas-attempt-flow
|
|
3695
3717
|
[attempt]="flow.state().attempt"
|
|
@@ -3700,6 +3722,15 @@ class SignUpComponent {
|
|
|
3700
3722
|
[emailVerification]="flow.settings()?.account?.emailVerification ?? 'code'"
|
|
3701
3723
|
(submitFlow)="flow.submit($event)"
|
|
3702
3724
|
(resend)="flow.resendSignUp()"
|
|
3725
|
+
[offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
|
|
3726
|
+
[emailedSecondFactor]="flow.emailSecondFactor()"
|
|
3727
|
+
[offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
|
|
3728
|
+
[textedSecondFactor]="flow.smsSecondFactor()"
|
|
3729
|
+
[enrollment]="flow.enrollment"
|
|
3730
|
+
[enrollmentState]="flow.enrollmentState()"
|
|
3731
|
+
(emailSecondFactor)="flow.sendEmailSecondFactor()"
|
|
3732
|
+
(smsSecondFactor)="flow.sendSmsSecondFactor()"
|
|
3733
|
+
(policyDeclined)="flow.declinePolicy($event)"
|
|
3703
3734
|
></atlas-attempt-flow>
|
|
3704
3735
|
} @else {
|
|
3705
3736
|
<atlas-sign-up-form
|
|
@@ -3716,7 +3747,7 @@ class SignUpComponent {
|
|
|
3716
3747
|
"
|
|
3717
3748
|
></atlas-sign-up-form>
|
|
3718
3749
|
}
|
|
3719
|
-
`, isInline: true, dependencies: [{ kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: SignUpFormComponent, selector: "atlas-sign-up-form", inputs: ["settings", "busy", "errors", "captcha", "passkey", "switchable", "policies"], outputs: ["switchMode", "submitSignUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3750
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: RecoveryCodesComponent, selector: "atlas-recovery-codes", inputs: ["codes", "busy"], outputs: ["saved"] }, { kind: "component", type: SignUpFormComponent, selector: "atlas-sign-up-form", inputs: ["settings", "busy", "errors", "captcha", "passkey", "switchable", "policies"], outputs: ["switchMode", "submitSignUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3720
3751
|
}
|
|
3721
3752
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignUpComponent, decorators: [{
|
|
3722
3753
|
type: Component,
|
|
@@ -3724,9 +3755,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3724
3755
|
selector: 'atlas-sign-up',
|
|
3725
3756
|
standalone: true,
|
|
3726
3757
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3727
|
-
imports: [AttemptFlowComponent, SignUpFormComponent],
|
|
3758
|
+
imports: [AttemptFlowComponent, RecoveryCodesComponent, SignUpFormComponent],
|
|
3728
3759
|
template: `
|
|
3729
|
-
@if (flow.
|
|
3760
|
+
@if (flow.recoveryCodes(); as codes) {
|
|
3761
|
+
<atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
|
|
3762
|
+
} @else if (flow.existingAccountNotice()) {
|
|
3730
3763
|
<div [class]="cls('card', 'atlas-card')" data-atlas-existing-account="">
|
|
3731
3764
|
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
3732
3765
|
<p class="atlas-text">{{ t('signUp.existingAccount') }}</p>
|
|
@@ -3758,6 +3791,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3758
3791
|
{{ t('signUp.passkeyCreate') }}
|
|
3759
3792
|
</button>
|
|
3760
3793
|
</div>
|
|
3794
|
+
} @else if (emailConfirmed()) {
|
|
3795
|
+
<div [class]="cls('card', 'atlas-card')" data-atlas-email-confirmed="">
|
|
3796
|
+
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t('signUp.title') }}</h1>
|
|
3797
|
+
<p class="atlas-text" role="status">{{ t('signUp.emailConfirmed') }}</p>
|
|
3798
|
+
@if (signInHref(); as href) {
|
|
3799
|
+
<a [class]="cls('formButtonPrimary', 'atlas-button')" [href]="href">{{ t('signIn.title') }}</a>
|
|
3800
|
+
}
|
|
3801
|
+
</div>
|
|
3761
3802
|
} @else if (flow.state().attempt) {
|
|
3762
3803
|
<atlas-attempt-flow
|
|
3763
3804
|
[attempt]="flow.state().attempt"
|
|
@@ -3768,6 +3809,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3768
3809
|
[emailVerification]="flow.settings()?.account?.emailVerification ?? 'code'"
|
|
3769
3810
|
(submitFlow)="flow.submit($event)"
|
|
3770
3811
|
(resend)="flow.resendSignUp()"
|
|
3812
|
+
[offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
|
|
3813
|
+
[emailedSecondFactor]="flow.emailSecondFactor()"
|
|
3814
|
+
[offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
|
|
3815
|
+
[textedSecondFactor]="flow.smsSecondFactor()"
|
|
3816
|
+
[enrollment]="flow.enrollment"
|
|
3817
|
+
[enrollmentState]="flow.enrollmentState()"
|
|
3818
|
+
(emailSecondFactor)="flow.sendEmailSecondFactor()"
|
|
3819
|
+
(smsSecondFactor)="flow.sendSmsSecondFactor()"
|
|
3820
|
+
(policyDeclined)="flow.declinePolicy($event)"
|
|
3771
3821
|
></atlas-attempt-flow>
|
|
3772
3822
|
} @else {
|
|
3773
3823
|
<atlas-sign-up-form
|
|
@@ -3790,6 +3840,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3790
3840
|
type: Input
|
|
3791
3841
|
}], resetPasswordUrl: [{
|
|
3792
3842
|
type: Input
|
|
3843
|
+
}], signInUrl: [{
|
|
3844
|
+
type: Input
|
|
3793
3845
|
}] } });
|
|
3794
3846
|
|
|
3795
3847
|
/**
|