@snabcentr/client-ui 0.23.0 → 0.26.1
Sign up to get free protection for your applications and to get access to all the features.
- package/auth/index.d.ts +2 -1
- package/auth/interfaces/{ApiErrorResponse.d.ts → api-error-response.d.ts} +1 -3
- package/auth/interfaces/index.d.ts +3 -0
- package/auth/interfaces/sc-bank-account-form-group.d.ts +11 -0
- package/auth/interfaces/sc-contact-form-group.d.ts +10 -0
- package/auth/sc-auth.module.d.ts +13 -8
- package/auth/sign-up-form/sc-sign-up-form.component.d.ts +141 -0
- package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +3 -3
- package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +2 -2
- package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +22 -15
- package/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.d.ts +4 -4
- package/directives/index.d.ts +2 -0
- package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +20 -0
- package/directives/next-input-focus/sc-next-input-focus.module.d.ts +10 -0
- package/esm2020/auth/index.mjs +3 -2
- package/esm2020/auth/interfaces/api-error-response.mjs +2 -0
- package/esm2020/auth/interfaces/index.mjs +4 -0
- package/esm2020/auth/interfaces/sc-bank-account-form-group.mjs +2 -0
- package/esm2020/auth/interfaces/sc-contact-form-group.mjs +2 -0
- package/esm2020/auth/sc-auth.module.mjs +51 -13
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +13 -7
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +13 -7
- package/esm2020/auth/sign-up-form/sc-sign-up-form.component.mjs +264 -0
- package/esm2020/catalog/price-card/sc-price-card.component.mjs +1 -1
- package/esm2020/catalog/price-history/sc-price-history.component.mjs +1 -1
- package/esm2020/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +20 -12
- package/esm2020/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +21 -13
- package/esm2020/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +19 -17
- package/esm2020/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +29 -20
- package/esm2020/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +1 -1
- package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.mjs +2 -2
- package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.module.mjs +2 -2
- package/esm2020/directives/index.mjs +3 -1
- package/esm2020/directives/next-input-focus/sc-next-input-focus.directive.mjs +40 -0
- package/esm2020/directives/next-input-focus/sc-next-input-focus.module.mjs +19 -0
- package/esm2020/files/directives/tree-top.directive.mjs +10 -10
- package/esm2020/form-fields/suggestion-field/sc-suggestion-field.component.mjs +1 -1
- package/esm2020/user/index.mjs +2 -1
- package/esm2020/user/sc-user.module.mjs +19 -12
- package/esm2020/user/user-managers/sc-user-managers.component.mjs +38 -0
- package/esm2020/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +18 -12
- package/esm2020/validators/index.mjs +2 -2
- package/esm2020/validators/sc-password-confirm-matching-validator.mjs +17 -0
- package/esm2020/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +39 -27
- package/fesm2015/snabcentr-client-ui.mjs +2820 -2401
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +2819 -2402
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/tailwind/tailwind.scss +17 -0
- package/user/index.d.ts +1 -0
- package/user/sc-user.module.d.ts +9 -8
- package/user/user-managers/sc-user-managers.component.d.ts +26 -0
- package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +2 -2
- package/validators/index.d.ts +1 -1
- package/validators/{scPasswordConfirmMatchingValidator.d.ts → sc-password-confirm-matching-validator.d.ts} +1 -1
- package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +17 -17
- package/esm2020/auth/interfaces/ApiErrorResponse.mjs +0 -2
- package/esm2020/validators/scPasswordConfirmMatchingValidator.mjs +0 -17
package/package.json
CHANGED
@@ -688,6 +688,11 @@ video {
|
|
688
688
|
margin: 0px;
|
689
689
|
}
|
690
690
|
|
691
|
+
.my-2 {
|
692
|
+
margin-top: 0.5rem;
|
693
|
+
margin-bottom: 0.5rem;
|
694
|
+
}
|
695
|
+
|
691
696
|
.my-4 {
|
692
697
|
margin-top: 1rem;
|
693
698
|
margin-bottom: 1rem;
|
@@ -697,6 +702,10 @@ video {
|
|
697
702
|
margin-bottom: 0.25rem;
|
698
703
|
}
|
699
704
|
|
705
|
+
.mb-2 {
|
706
|
+
margin-bottom: 0.5rem;
|
707
|
+
}
|
708
|
+
|
700
709
|
.mb-4 {
|
701
710
|
margin-bottom: 1rem;
|
702
711
|
}
|
@@ -1119,6 +1128,10 @@ video {
|
|
1119
1128
|
border-width: 1px;
|
1120
1129
|
}
|
1121
1130
|
|
1131
|
+
.border-0 {
|
1132
|
+
border-width: 0px;
|
1133
|
+
}
|
1134
|
+
|
1122
1135
|
.border-b {
|
1123
1136
|
border-bottom-width: 1px;
|
1124
1137
|
}
|
@@ -1299,6 +1312,10 @@ video {
|
|
1299
1312
|
font-weight: 700 !important;
|
1300
1313
|
}
|
1301
1314
|
|
1315
|
+
.\!font-medium {
|
1316
|
+
font-weight: 500 !important;
|
1317
|
+
}
|
1318
|
+
|
1302
1319
|
.font-bold {
|
1303
1320
|
font-weight: 700;
|
1304
1321
|
}
|
package/user/index.d.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
export * from './reset-user-password/sc-reset-user-password.component';
|
2
2
|
export * from './update-user-info-dialog/sc-update-user-info-dialog.component';
|
3
|
+
export * from './user-managers/sc-user-managers.component';
|
3
4
|
export * from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';
|
4
5
|
export * from './sc-user.module';
|
package/user/sc-user.module.d.ts
CHANGED
@@ -2,18 +2,19 @@ import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./reset-user-password/sc-reset-user-password.component";
|
3
3
|
import * as i2 from "./update-user-info-dialog/sc-update-user-info-dialog.component";
|
4
4
|
import * as i3 from "./user-phone-approve-dialog/sc-user-phone-approve-dialog.component";
|
5
|
-
import * as i4 from "
|
6
|
-
import * as i5 from "@angular/
|
7
|
-
import * as i6 from "@
|
8
|
-
import * as i7 from "@taiga-ui/
|
9
|
-
import * as i8 from "@taiga-ui/
|
10
|
-
import * as i9 from "
|
11
|
-
import * as i10 from "../
|
5
|
+
import * as i4 from "./user-managers/sc-user-managers.component";
|
6
|
+
import * as i5 from "@angular/common";
|
7
|
+
import * as i6 from "@angular/forms";
|
8
|
+
import * as i7 from "@taiga-ui/kit";
|
9
|
+
import * as i8 from "@taiga-ui/core";
|
10
|
+
import * as i9 from "@taiga-ui/cdk";
|
11
|
+
import * as i10 from "../verification/sc-verification.module";
|
12
|
+
import * as i11 from "../form-fields/form-fields.module";
|
12
13
|
/**
|
13
14
|
* Модуль компонентов пользователя.
|
14
15
|
*/
|
15
16
|
export declare class ScUserModule {
|
16
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScUserModule, never>;
|
17
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScUserModule, [typeof i1.ScResetUserPasswordComponent, typeof i2.ScUpdateUserInfoDialogComponent, typeof i3.ScUserPhoneApproveDialogComponent], [typeof
|
18
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScUserModule, [typeof i1.ScResetUserPasswordComponent, typeof i2.ScUpdateUserInfoDialogComponent, typeof i3.ScUserPhoneApproveDialogComponent, typeof i4.ScUserManagersComponent], [typeof i5.CommonModule, typeof i6.FormsModule, typeof i6.ReactiveFormsModule, typeof i7.TuiFieldErrorPipeModule, typeof i7.TuiInputPasswordModule, typeof i8.TuiButtonModule, typeof i8.TuiErrorModule, typeof i8.TuiLabelModule, typeof i8.TuiTextfieldControllerModule, typeof i9.TuiLetModule, typeof i10.ScVerificationModule, typeof i11.ScFormFieldsModule, typeof i8.TuiLoaderModule, typeof i7.TuiInputModule, typeof i7.TuiInputPhoneModule, typeof i7.TuiCheckboxModule, typeof i7.TuiCheckboxLabeledModule, typeof i8.TuiDataListModule, typeof i7.TuiSelectModule, typeof i8.TuiModeModule, typeof i8.TuiLinkModule, typeof i8.TuiFormatPhonePipeModule], [typeof i1.ScResetUserPasswordComponent, typeof i2.ScUpdateUserInfoDialogComponent, typeof i3.ScUserPhoneApproveDialogComponent, typeof i4.ScUserManagersComponent]>;
|
18
19
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScUserModule>;
|
19
20
|
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
|
+
import { ScIManager, ScUserService } from '@snabcentr/client-core';
|
3
|
+
import { Observable } from 'rxjs';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
/**
|
6
|
+
* Компонент персональных менеджеров пользователя.
|
7
|
+
*/
|
8
|
+
export declare class ScUserManagersComponent {
|
9
|
+
private readonly userService;
|
10
|
+
/**
|
11
|
+
* Персональные менеджеры пользователя.
|
12
|
+
*/
|
13
|
+
readonly managers$: Observable<ScIManager[] | undefined>;
|
14
|
+
/**
|
15
|
+
* Событие нажатия на кнопку QR кода.
|
16
|
+
*/
|
17
|
+
readonly qrClickEvent: EventEmitter<ScIManager>;
|
18
|
+
/**
|
19
|
+
* Инициализирует экземпляр класса {@link ScUserManagersComponent}.
|
20
|
+
*
|
21
|
+
* @param userService Сервис информации о пользователе.
|
22
|
+
*/
|
23
|
+
constructor(userService: ScUserService);
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScUserManagersComponent, never>;
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScUserManagersComponent, "sc-user-managers", never, {}, { "qrClickEvent": "qrClickEvent"; }, never, never, false>;
|
26
|
+
}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import {
|
2
|
-
import { Subject, Observable } from 'rxjs';
|
1
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
3
2
|
import { ScApprovedData, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';
|
4
3
|
import { TuiDialogContext } from '@taiga-ui/core';
|
4
|
+
import { Observable, Subject } from 'rxjs';
|
5
5
|
import * as i0 from "@angular/core";
|
6
6
|
/**
|
7
7
|
* Диалоговое окно подтверждения номера телефона.
|
package/validators/index.d.ts
CHANGED
@@ -3,6 +3,6 @@ import { ValidatorFn } from '@angular/forms';
|
|
3
3
|
* Проверяет повторный ввод пароля на эквивалентность паролю.
|
4
4
|
*
|
5
5
|
* @param passwordKey Ключ поля ввода пароля.
|
6
|
-
* @param
|
6
|
+
* @param passwordConfirmKey Ключ поля повторного ввода пароля.
|
7
7
|
*/
|
8
8
|
export declare function scPasswordConfirmMatchingValidator(passwordKey: string, passwordConfirmKey: string): ValidatorFn | null;
|
package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import { EventEmitter, OnInit } from '@angular/core';
|
2
|
-
import {
|
2
|
+
import { FormControl, FormGroup, FormGroupDirective } from '@angular/forms';
|
3
3
|
import { MaskitoOptions } from '@maskito/core';
|
4
4
|
import { ScVerificationService } from '@snabcentr/client-core';
|
5
|
-
import {
|
5
|
+
import { Observable, Subject } from 'rxjs';
|
6
6
|
import * as i0 from "@angular/core";
|
7
7
|
/**
|
8
8
|
* Компонент формы проверки телефона и получения кода подтверждения.
|
@@ -10,10 +10,6 @@ import * as i0 from "@angular/core";
|
|
10
10
|
export declare class ScVerificationPhoneCheckFormComponent implements OnInit {
|
11
11
|
private readonly verificationService;
|
12
12
|
private readonly formGroupDirective?;
|
13
|
-
/**
|
14
|
-
* Признак, следует ли отображать функционал кода подтверждения.
|
15
|
-
*/
|
16
|
-
private _showCodeFields;
|
17
13
|
/**
|
18
14
|
* Признак, следует ли отображать функционал кода подтверждения.
|
19
15
|
*/
|
@@ -42,17 +38,6 @@ export declare class ScVerificationPhoneCheckFormComponent implements OnInit {
|
|
42
38
|
* Событие для обратной привязки наличия кода подтверждения
|
43
39
|
*/
|
44
40
|
haveCodeChange: EventEmitter<boolean>;
|
45
|
-
/**
|
46
|
-
* Группа полей ввода для формы «Вход на сайт».
|
47
|
-
*/
|
48
|
-
get form(): FormGroup<{
|
49
|
-
phone: FormControl<string | null>;
|
50
|
-
verificationCode: FormControl<string | null>;
|
51
|
-
}>;
|
52
|
-
/**
|
53
|
-
* Поле ввода 'Номер телефона'.
|
54
|
-
*/
|
55
|
-
get phoneControl(): FormControl<string | null>;
|
56
41
|
/**
|
57
42
|
* {@link Observable} запроса проверки номера телефона.
|
58
43
|
*/
|
@@ -79,6 +64,10 @@ export declare class ScVerificationPhoneCheckFormComponent implements OnInit {
|
|
79
64
|
* TODO: Вынести таймер в отдельную директиву TASK:[#9260].
|
80
65
|
*/
|
81
66
|
readonly timer$: Observable<string | null>;
|
67
|
+
/**
|
68
|
+
* Признак, следует ли отображать функционал кода подтверждения.
|
69
|
+
*/
|
70
|
+
private _showCodeFields;
|
82
71
|
/**
|
83
72
|
* Инициализирует экземпляр класса {@link ScVerificationPhoneCheckFormComponent}.
|
84
73
|
*
|
@@ -86,6 +75,17 @@ export declare class ScVerificationPhoneCheckFormComponent implements OnInit {
|
|
86
75
|
* @param formGroupDirective Директива c `FormGroup` из DOM.
|
87
76
|
*/
|
88
77
|
constructor(verificationService: ScVerificationService, formGroupDirective?: FormGroupDirective | undefined);
|
78
|
+
/**
|
79
|
+
* Группа полей ввода для формы «Вход на сайт».
|
80
|
+
*/
|
81
|
+
get form(): FormGroup<{
|
82
|
+
phone: FormControl<string | null>;
|
83
|
+
verificationCode: FormControl<string | null>;
|
84
|
+
}>;
|
85
|
+
/**
|
86
|
+
* Поле ввода 'Номер телефона'.
|
87
|
+
*/
|
88
|
+
get phoneControl(): FormControl<string | null>;
|
89
89
|
/** @inheritDoc */
|
90
90
|
ngOnInit(): void;
|
91
91
|
/**
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpRXJyb3JSZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL2ludGVyZmFjZXMvQXBpRXJyb3JSZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQlNCw0L3QvdGL0LUg0L7QsSDQvtGI0LjQsdC60LDRhSDQstCw0LvQuNC00LDRhtC40LggQVBJINC30LDQv9GA0L7RgdC+0LIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpRXJyb3JSZXNwb25zZSB7XG4gICAgLyoqXG4gICAgICog0J7QsdC+0LHRidGR0L3QvdC+0LUg0YHQvtC+0LHRidC10L3QuNC1INC+0LEg0L7RiNC40LHQutC1LlxuICAgICAqL1xuICAgIG1lc3NhZ2U6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCf0L7QtNGA0L7QsdC90L7QtSDQvtC/0LjRgdCw0L3QuNC1INC60LDQttC00L7QuSDQvtGI0LjQsdC60LguINCh0L7QtNC10YDQttC40YIg0YHQv9C40YHQvtC6INC/0L7Qu9C10Lkg0YEg0LTQtdGC0LDQu9GM0L3Ri9C8INC+0L/QuNGB0LDQvdC40LXQvCDQvtGI0LjQsdC+0Log0LLQsNC70LjQtNCw0YbQuNC4INC00LvRjyDQutCw0LbQtNC+0LPQviDQv9C+0LvRjy5cbiAgICAgKi9cbiAgICBlcnJvcnM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG4gICAgfTtcbn1cbiJdfQ==
|
@@ -1,17 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Проверяет повторный ввод пароля на эквивалентность паролю.
|
3
|
-
*
|
4
|
-
* @param passwordKey Ключ поля ввода пароля.
|
5
|
-
* @param passwordKey Ключ поля повторного ввода пароля.
|
6
|
-
*/
|
7
|
-
export function scPasswordConfirmMatchingValidator(passwordKey, passwordConfirmKey) {
|
8
|
-
return (control) => {
|
9
|
-
const passwordInput = control.get(passwordKey);
|
10
|
-
const passwordConfirmInput = control.get(passwordConfirmKey);
|
11
|
-
if (!passwordInput || !passwordConfirmInput || passwordInput.invalid || passwordConfirmInput.invalid || !passwordInput.value || !passwordConfirmInput.value) {
|
12
|
-
return null;
|
13
|
-
}
|
14
|
-
return passwordInput?.value !== passwordConfirmInput?.value ? { passwordNotEquivalent: true } : null;
|
15
|
-
};
|
16
|
-
}
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NQYXNzd29yZENvbmZpcm1NYXRjaGluZ1ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS92YWxpZGF0b3JzL3NjUGFzc3dvcmRDb25maXJtTWF0Y2hpbmdWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsV0FBbUIsRUFBRSxrQkFBMEI7SUFDOUYsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDekQsTUFBTSxhQUFhLEdBQTBDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEYsTUFBTSxvQkFBb0IsR0FBMEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXBHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxhQUFhLENBQUMsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUU7WUFDekosT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU8sYUFBYSxFQUFFLEtBQUssS0FBSyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RyxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiDQn9GA0L7QstC10YDRj9C10YIg0L/QvtCy0YLQvtGA0L3Ri9C5INCy0LLQvtC0INC/0LDRgNC+0LvRjyDQvdCwINGN0LrQstC40LLQsNC70LXQvdGC0L3QvtGB0YLRjCDQv9Cw0YDQvtC70Y4uXG4gKlxuICogQHBhcmFtIHBhc3N3b3JkS2V5INCa0LvRjtGHINC/0L7Qu9GPINCy0LLQvtC00LAg0L/QsNGA0L7Qu9GPLlxuICogQHBhcmFtIHBhc3N3b3JkS2V5INCa0LvRjtGHINC/0L7Qu9GPINC/0L7QstGC0L7RgNC90L7Qs9C+INCy0LLQvtC00LAg0L/QsNGA0L7Qu9GPLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NQYXNzd29yZENvbmZpcm1NYXRjaGluZ1ZhbGlkYXRvcihwYXNzd29yZEtleTogc3RyaW5nLCBwYXNzd29yZENvbmZpcm1LZXk6IHN0cmluZyk6IFZhbGlkYXRvckZuIHwgbnVsbCB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IHBhc3N3b3JkSW5wdXQ6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcgfCBudWxsPiB8IG51bGwgPSBjb250cm9sLmdldChwYXNzd29yZEtleSk7XG4gICAgICAgIGNvbnN0IHBhc3N3b3JkQ29uZmlybUlucHV0OiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgbnVsbD4gfCBudWxsID0gY29udHJvbC5nZXQocGFzc3dvcmRDb25maXJtS2V5KTtcblxuICAgICAgICBpZiAoIXBhc3N3b3JkSW5wdXQgfHwgIXBhc3N3b3JkQ29uZmlybUlucHV0IHx8IHBhc3N3b3JkSW5wdXQuaW52YWxpZCB8fCBwYXNzd29yZENvbmZpcm1JbnB1dC5pbnZhbGlkIHx8ICFwYXNzd29yZElucHV0LnZhbHVlIHx8ICFwYXNzd29yZENvbmZpcm1JbnB1dC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFzc3dvcmRJbnB1dD8udmFsdWUgIT09IHBhc3N3b3JkQ29uZmlybUlucHV0Py52YWx1ZSA/IHsgcGFzc3dvcmROb3RFcXVpdmFsZW50OiB0cnVlIH0gOiBudWxsO1xuICAgIH07XG59XG4iXX0=
|