@senior-gestao-pessoas/payroll-core 9.4.0 → 9.5.0-3888ac21-edb9-4553-82f4-3a69943e1d42
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/bundles/senior-gestao-pessoas-payroll-core.umd.js +996 -514
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +16 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
- package/components/historical-pix-account/historical-pix-account-base.d.ts +27 -0
- package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +9 -40
- package/components/historical-pix-account/historical-pix-account.component.d.ts +39 -8
- package/components/historical-pix-account/historical-pix-account.service.d.ts +1 -0
- package/components/historical-pix-account-list/historical-pix-account-list.component.d.ts +13 -2
- package/components/shared/index.d.ts +1 -0
- package/components/shared/shared-state.service.d.ts +21 -0
- package/components/utils/format-utils/format-utils.service.d.ts +30 -3
- package/esm2015/components/historical-pix-account/historical-pix-account-base.js +173 -0
- package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +33 -189
- package/esm2015/components/historical-pix-account/historical-pix-account.component.js +260 -20
- package/esm2015/components/historical-pix-account/historical-pix-account.module.js +5 -1
- package/esm2015/components/historical-pix-account/historical-pix-account.service.js +8 -1
- package/esm2015/components/historical-pix-account-list/historical-pix-account-list.component.js +83 -34
- package/esm2015/components/shared/index.js +2 -0
- package/esm2015/components/shared/shared-state.service.js +49 -0
- package/esm2015/components/utils/format-utils/format-utils.service.js +88 -5
- package/esm2015/public_api.js +2 -1
- package/esm2015/senior-gestao-pessoas-payroll-core.js +3 -2
- package/esm5/components/historical-pix-account/historical-pix-account-base.js +186 -0
- package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +57 -203
- package/esm5/components/historical-pix-account/historical-pix-account.component.js +302 -49
- package/esm5/components/historical-pix-account/historical-pix-account.module.js +5 -1
- package/esm5/components/historical-pix-account/historical-pix-account.service.js +8 -1
- package/esm5/components/historical-pix-account-list/historical-pix-account-list.component.js +92 -34
- package/esm5/components/shared/index.js +2 -0
- package/esm5/components/shared/shared-state.service.js +50 -0
- package/esm5/components/utils/format-utils/format-utils.service.js +88 -5
- package/esm5/public_api.js +2 -1
- package/esm5/senior-gestao-pessoas-payroll-core.js +3 -2
- package/fesm2015/senior-gestao-pessoas-payroll-core.js +917 -480
- package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/fesm5/senior-gestao-pessoas-payroll-core.js +992 -511
- package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/locale/en-US.json +1 -1
- package/locale/es-ES.json +1 -1
- package/locale/pt-BR.json +1 -1
- package/package.json +2 -32
- package/public_api.d.ts +1 -0
- package/senior-gestao-pessoas-payroll-core.d.ts +2 -1
- package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
|
@@ -1,33 +1,31 @@
|
|
|
1
1
|
import * as tslib_1 from "tslib";
|
|
2
2
|
import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit, ViewChild, } from "@angular/core";
|
|
3
|
-
import { FormGroup, FormBuilder
|
|
3
|
+
import { FormGroup, FormBuilder } from "@angular/forms";
|
|
4
4
|
import { CustomFieldsComponent } from "@seniorsistemas/angular-components";
|
|
5
5
|
import { Subject } from "rxjs";
|
|
6
|
-
import {
|
|
7
|
-
import { GenericValidator } from "../../utils/generic-validators";
|
|
6
|
+
import { configEnabledFields, mountCustomToShow, } from "../../utils/helpers";
|
|
8
7
|
import { FormatUtilsService } from "../../utils/format-utils/format-utils.service";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
import { SharedStateService } from "../../shared/shared-state.service";
|
|
9
|
+
import { HistoricakPixAccountBase } from "../historical-pix-account-base";
|
|
10
|
+
let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent extends HistoricakPixAccountBase {
|
|
11
|
+
constructor(formBuilder, cd, sharedStateService) {
|
|
12
|
+
super(formBuilder);
|
|
12
13
|
this.cd = cd;
|
|
14
|
+
this.sharedStateService = sharedStateService;
|
|
13
15
|
this.withSideBar = true;
|
|
14
16
|
this.isEditMode = false;
|
|
15
|
-
this.
|
|
16
|
-
this.defaultCpfNumber = null;
|
|
17
|
+
this.showField = false;
|
|
17
18
|
this.visibleChange = new EventEmitter();
|
|
18
19
|
this.pixAccountItemToList = new EventEmitter();
|
|
19
20
|
this.ngUnsubscribe = new Subject();
|
|
20
|
-
this.initialValidatorOfPercentage = [Validators.required, Validators.min(0.01)];
|
|
21
21
|
this.labelBtnAdd = "hcm.payroll.employees_add";
|
|
22
|
-
this.maxValuePercentage = 100.00;
|
|
23
22
|
this.visibleBtnSave = true;
|
|
24
23
|
this.isView = false;
|
|
25
24
|
this.isShowPixKeyFieldValidatorMessage = false;
|
|
26
|
-
this.
|
|
25
|
+
this.hideFields = this.sharedStateService.hideField$;
|
|
27
26
|
this.registerSubjects();
|
|
28
27
|
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
}
|
|
28
|
+
ngOnInit() { }
|
|
31
29
|
ngAfterViewInit() {
|
|
32
30
|
this.cd.detectChanges();
|
|
33
31
|
}
|
|
@@ -35,39 +33,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
35
33
|
this.ngUnsubscribe.next(true);
|
|
36
34
|
this.ngUnsubscribe.unsubscribe();
|
|
37
35
|
}
|
|
38
|
-
registerSubjects() {
|
|
39
|
-
}
|
|
40
|
-
createFormGroup() {
|
|
41
|
-
this.pixAccountFormGroup = this.formBuilder.group({
|
|
42
|
-
id: this.formBuilder.control(null),
|
|
43
|
-
index: this.formBuilder.control(null),
|
|
44
|
-
employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),
|
|
45
|
-
dateChange: this.formBuilder.control(null),
|
|
46
|
-
pixKeyType: this.formBuilder.control(null, Validators.required),
|
|
47
|
-
pixKey: this.formBuilder.control(null),
|
|
48
|
-
percentage: this.formBuilder.control(null, Validators.compose([
|
|
49
|
-
...this.initialValidatorOfPercentage,
|
|
50
|
-
Validators.max(this.maxValuePercentage),
|
|
51
|
-
])),
|
|
52
|
-
externalId: this.formBuilder.control(null),
|
|
53
|
-
customFields: this.formBuilder.control(null),
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
onChangePixKeyType(item) {
|
|
57
|
-
if (item.key) {
|
|
58
|
-
this.pixKeyType = item.key;
|
|
59
|
-
this.isShowPixKeyFieldValidatorMessage = true;
|
|
60
|
-
this.pixAccountFormGroup.get("pixKey").reset();
|
|
61
|
-
this.setPixKeyValidators(true);
|
|
62
|
-
if (item.key === "CPF") {
|
|
63
|
-
this.setDefaultCpfPixKey();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
onClearPixKeyType() {
|
|
68
|
-
this.isShowPixKeyFieldValidatorMessage = false;
|
|
69
|
-
this.pixAccountFormGroup.get("pixKey").reset();
|
|
70
|
-
}
|
|
36
|
+
registerSubjects() { }
|
|
71
37
|
get visible() {
|
|
72
38
|
return this._visible;
|
|
73
39
|
}
|
|
@@ -98,7 +64,8 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
98
64
|
}
|
|
99
65
|
formatPixKeyTelephoneNumber() {
|
|
100
66
|
if (this.pixKeyType === "TELEPHONE") {
|
|
101
|
-
this.pixAccountFormGroup.get("pixKey")
|
|
67
|
+
const pixKeyCtrl = this.pixAccountFormGroup.get("pixKey");
|
|
68
|
+
pixKeyCtrl.setValue(FormatUtilsService.getFormattedTelephoneNumber(pixKeyCtrl.value));
|
|
102
69
|
}
|
|
103
70
|
}
|
|
104
71
|
convertDTOToShowWithCustomFields(data) {
|
|
@@ -110,14 +77,14 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
110
77
|
this.visibleBtnSave = isEditMode;
|
|
111
78
|
if (this.pixAccountFormGroup.get("pixKeyType").value) {
|
|
112
79
|
this.pixKeyType = this.pixAccountFormGroup.get("pixKeyType").value.key;
|
|
113
|
-
this.setPixKeyValidators(isEditMode);
|
|
80
|
+
this.setPixKeyValidators(isEditMode, this.pixAccountFormGroup);
|
|
114
81
|
this.formatPixKeyTelephoneNumber();
|
|
115
82
|
}
|
|
116
83
|
configEnabledFields(this.pixAccountFormGroup, isEditMode, [
|
|
117
84
|
"pixKeyType",
|
|
118
85
|
"pixKey",
|
|
119
86
|
"percentage",
|
|
120
|
-
"customFields"
|
|
87
|
+
"customFields"
|
|
121
88
|
], []);
|
|
122
89
|
}
|
|
123
90
|
close() {
|
|
@@ -125,13 +92,11 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
125
92
|
this.visible = false;
|
|
126
93
|
}
|
|
127
94
|
addItem() {
|
|
128
|
-
this.pixAccountFormGroup.updateValueAndValidity();
|
|
129
|
-
verifyValidationsForm.call(this.pixAccountFormGroup);
|
|
130
95
|
if (this.pixAccountFormGroup.valid) {
|
|
131
96
|
if (this.employeeId) {
|
|
132
97
|
this.pixAccountFormGroup.get("employee").setValue({
|
|
133
98
|
tableId: this.employeeId,
|
|
134
|
-
name: ""
|
|
99
|
+
name: ""
|
|
135
100
|
});
|
|
136
101
|
}
|
|
137
102
|
this.pixAccountItemToList.emit(this.pixAccountFormGroup.getRawValue());
|
|
@@ -155,13 +120,9 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
155
120
|
return {
|
|
156
121
|
prefix: "",
|
|
157
122
|
thousands: this.currency.thousandsSeparator,
|
|
158
|
-
decimal: this.currency.decimalSeparator
|
|
123
|
+
decimal: this.currency.decimalSeparator
|
|
159
124
|
};
|
|
160
125
|
}
|
|
161
|
-
/**
|
|
162
|
-
* O Input que recebe a lista do component pai e chama o método de validação passando a lista recebida.
|
|
163
|
-
* @param pixAccountList
|
|
164
|
-
*/
|
|
165
126
|
set getListPixAccount(pixAccountList) {
|
|
166
127
|
if (pixAccountList) {
|
|
167
128
|
this.setValidatorsAccordingList(pixAccountList, null, false);
|
|
@@ -170,143 +131,23 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
170
131
|
this.resetForm();
|
|
171
132
|
}
|
|
172
133
|
}
|
|
173
|
-
/**
|
|
174
|
-
* Recebe a lista de registros já inseridos na tabela adiciona em uma variável os valores que serão usados para
|
|
175
|
-
* a validação dos campos "percentage" e "pixAccount".
|
|
176
|
-
* Quando tem index significa que está em uma edição, os valores na posição do registro da edição (index) não serão adicionados
|
|
177
|
-
* no array de comparação dos validators.
|
|
178
|
-
* @param pixAccountList
|
|
179
|
-
* @param index
|
|
180
|
-
*/
|
|
181
|
-
setValidatorsAccordingList(pixAccountList, index = null, isEditMode = true) {
|
|
182
|
-
this.pixAccountList = pixAccountList && pixAccountList.length ? [...pixAccountList] : [];
|
|
183
|
-
const percentageIncluded = [];
|
|
184
|
-
if (this.pixAccountList && this.pixAccountList.length) {
|
|
185
|
-
this.pixAccountList.filter((field, key) => {
|
|
186
|
-
if (field["percentage"] && key != index) {
|
|
187
|
-
percentageIncluded.push(field["percentage"]);
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
this.beforeSetPixKeyTypeValidator();
|
|
192
|
-
this.setPixKeyValidators(isEditMode);
|
|
193
|
-
this.validatePercentageValid(percentageIncluded);
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.
|
|
197
|
-
*/
|
|
198
|
-
setPixKeyValidators(isEditMode) {
|
|
199
|
-
const genericPixKey = this.pixAccountFormGroup.get("pixKey");
|
|
200
|
-
if (this.pixKeyType) {
|
|
201
|
-
switch (this.pixKeyType) {
|
|
202
|
-
case "TELEPHONE":
|
|
203
|
-
genericPixKey.setValidators(Validators.compose([
|
|
204
|
-
Validators.required, GenericValidator.isValidPhoneNumber,
|
|
205
|
-
]));
|
|
206
|
-
break;
|
|
207
|
-
case "EMAIL":
|
|
208
|
-
genericPixKey.setValidators(Validators.compose([
|
|
209
|
-
Validators.required, GenericValidator.isValidEmail,
|
|
210
|
-
]));
|
|
211
|
-
break;
|
|
212
|
-
case "CPF":
|
|
213
|
-
genericPixKey.setValidators(Validators.compose([
|
|
214
|
-
Validators.required, GenericValidator.isValidCpf,
|
|
215
|
-
]));
|
|
216
|
-
break;
|
|
217
|
-
case "CNPJ":
|
|
218
|
-
genericPixKey.setValidators(Validators.compose([
|
|
219
|
-
Validators.required, GenericValidator.isValidCnpj,
|
|
220
|
-
]));
|
|
221
|
-
break;
|
|
222
|
-
case "RANDOM_KEY":
|
|
223
|
-
genericPixKey.setValidators(Validators.required);
|
|
224
|
-
break;
|
|
225
|
-
default:
|
|
226
|
-
genericPixKey.setValidators(null);
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
if (isEditMode) {
|
|
230
|
-
genericPixKey.enable();
|
|
231
|
-
}
|
|
232
|
-
genericPixKey.updateValueAndValidity();
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em
|
|
237
|
-
* 100% na validação do campo "percentage" como um novo maxValue;
|
|
238
|
-
* @param listValue
|
|
239
|
-
*/
|
|
240
|
-
validatePercentageValid(listValue) {
|
|
241
|
-
const percentage = this.pixAccountFormGroup.get("percentage");
|
|
242
|
-
this.maxValuePercentage = listValue
|
|
243
|
-
.reduce((currentValue, total) => currentValue - total, 100.00);
|
|
244
|
-
percentage
|
|
245
|
-
.setValidators(Validators.compose([
|
|
246
|
-
...this.initialValidatorOfPercentage,
|
|
247
|
-
Validators.max(this.maxValuePercentage),
|
|
248
|
-
]));
|
|
249
|
-
percentage.updateValueAndValidity();
|
|
250
|
-
}
|
|
251
134
|
set isViewMode(condition) {
|
|
252
135
|
this.isView = !!(condition && !this.withSideBar);
|
|
253
136
|
this.configEnableFields(!this.isView);
|
|
254
137
|
if (!this.isView)
|
|
255
138
|
this.resetForm();
|
|
256
139
|
}
|
|
257
|
-
|
|
258
|
-
|
|
140
|
+
set paramsForm(value) {
|
|
141
|
+
this._paramsForm = value;
|
|
259
142
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
this.pixAccountFormGroup.get("pixKey").setValue(this.defaultCpfNumber);
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
const sheetDocument = this.paramsForm.get("sheetDocument");
|
|
266
|
-
if (sheetDocument) {
|
|
267
|
-
const cpf = sheetDocument.get("cpfNumber").value;
|
|
268
|
-
if (cpf) {
|
|
269
|
-
this.pixAccountFormGroup.get("pixKey").setValue(cpf);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
beforeSetPixKeyTypeValidator() {
|
|
275
|
-
const pixKeyType = this.pixAccountFormGroup.get("pixKeyType");
|
|
276
|
-
if (this.pixAccountList && this.pixAccountList.length && pixKeyType) {
|
|
277
|
-
pixKeyType
|
|
278
|
-
.setValidators(Validators.compose([
|
|
279
|
-
Validators.required,
|
|
280
|
-
this.validateDuplicatePixKeyTypeBankAccount(this.pixAccountList),
|
|
281
|
-
]));
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
pixKeyType.setValidators(Validators.required);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
validateDuplicatePixKeyTypeBankAccount(listCompare) {
|
|
288
|
-
return (control) => {
|
|
289
|
-
const value = control && control.value;
|
|
290
|
-
let condition = false;
|
|
291
|
-
listCompare.filter((field) => {
|
|
292
|
-
if (value) {
|
|
293
|
-
if (field["pixKeyType"].key === 'BANK_ACCOUNT' && value.key === field["pixKeyType"].key) {
|
|
294
|
-
return condition = true;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
if (condition) {
|
|
299
|
-
return { pixKeyTypeBankAccountDuplicate: true };
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
return null;
|
|
303
|
-
}
|
|
304
|
-
};
|
|
143
|
+
set defaultCpfNumber(value) {
|
|
144
|
+
this._defaultCpfNumber = value;
|
|
305
145
|
}
|
|
306
146
|
};
|
|
307
147
|
HistoricalPixAccountFormComponent.ctorParameters = () => [
|
|
308
148
|
{ type: FormBuilder },
|
|
309
|
-
{ type: ChangeDetectorRef }
|
|
149
|
+
{ type: ChangeDetectorRef },
|
|
150
|
+
{ type: SharedStateService }
|
|
310
151
|
];
|
|
311
152
|
tslib_1.__decorate([
|
|
312
153
|
ViewChild(CustomFieldsComponent, { static: true })
|
|
@@ -328,10 +169,7 @@ tslib_1.__decorate([
|
|
|
328
169
|
], HistoricalPixAccountFormComponent.prototype, "isEditMode", void 0);
|
|
329
170
|
tslib_1.__decorate([
|
|
330
171
|
Input()
|
|
331
|
-
], HistoricalPixAccountFormComponent.prototype, "
|
|
332
|
-
tslib_1.__decorate([
|
|
333
|
-
Input()
|
|
334
|
-
], HistoricalPixAccountFormComponent.prototype, "defaultCpfNumber", void 0);
|
|
172
|
+
], HistoricalPixAccountFormComponent.prototype, "showField", void 0);
|
|
335
173
|
tslib_1.__decorate([
|
|
336
174
|
Output()
|
|
337
175
|
], HistoricalPixAccountFormComponent.prototype, "visibleChange", void 0);
|
|
@@ -350,12 +188,18 @@ tslib_1.__decorate([
|
|
|
350
188
|
tslib_1.__decorate([
|
|
351
189
|
Input()
|
|
352
190
|
], HistoricalPixAccountFormComponent.prototype, "isViewMode", null);
|
|
191
|
+
tslib_1.__decorate([
|
|
192
|
+
Input()
|
|
193
|
+
], HistoricalPixAccountFormComponent.prototype, "paramsForm", null);
|
|
194
|
+
tslib_1.__decorate([
|
|
195
|
+
Input()
|
|
196
|
+
], HistoricalPixAccountFormComponent.prototype, "defaultCpfNumber", null);
|
|
353
197
|
HistoricalPixAccountFormComponent = tslib_1.__decorate([
|
|
354
198
|
Component({
|
|
355
199
|
selector: "pix-account",
|
|
356
|
-
template: "<div id=\"main\">\n <form [formGroup]=\"pixAccountFormGroup\" autocomplete=\"off\">\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <!-- Tipo de chave -->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label>{{'hcm.payroll.employees_addition_pix_key_type'|translate}}</label>\n <input-rest-auto-complete-enum [dropdown]=\"true\" server=\"payroll\"\n enumeration=\"PixKeyType\"\n placeholder=\"{{'hcm.payroll.select' | translate}}\"\n name=\"pixKeyType\" [form]=\"pixAccountFormGroup\"\n (onSelect)=\"onChangePixKeyType($event)\"\n (onClear)=\"onClearPixKeyType()\"\n id=\"ta-pixKeyType\"></input-rest-auto-complete-enum>\n <s-control-errors [control]=\"pixAccountFormGroup.get('pixKeyType')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n pixKeyTypeBankAccountDuplicate: 'hcm.payroll.historical_pix_key_type_bank_account_duplicate' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Chave Pix-->\n <div class=\"ui-md-6 ui-sm-12\" [ngClass]=\"{'required': pixKeyType !== 'BANK_ACCOUNT'}\">\n <label>{{'hcm.payroll.employees_addition_pix_key' | translate}}</label>\n <ng-container [ngSwitch]=\"pixKeyType\">\n <input *ngSwitchCase=\"'TELEPHONE'\" only-number\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n (keyup)=\"phoneMask($event)\" maxlength=\"15\"\n placeholder=\"(__) ____-____\">\n <p-inputMask *ngSwitchCase=\"'CPF'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"___.___.___-__\"\n mask=\"999.999.999-99\" [unmask]=\"true\"></p-inputMask>\n <p-inputMask *ngSwitchCase=\"'CNPJ'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"__.___.___/____-__\"\n mask=\"99.999.999/9999-99\" [unmask]=\"true\"></p-inputMask>\n <input *ngSwitchCase=\"'EMAIL'\"\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"{{'hcm.payroll.employees_addition_email'|translate}}\"/>\n <input *ngSwitchCase=\"'BANK_ACCOUNT'\" disabled\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"/>\n <input *ngSwitchDefault\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\" maxlength=\"100\" />\n </ng-container>\n <s-control-errors *ngIf=\"isShowPixKeyFieldValidatorMessage\" id=\"er-pix-key\"\n [control]=\"pixAccountFormGroup.get('pixKey')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n invalidPhoneNumber: 'hcm.payroll.employees_addition_invalid_phone_number' | translate: { value: pixAccountFormGroup.get('pixKey').value },\n invalidEmail: 'hcm.payroll.employees_addition_email_invalid' | translate,\n cpfNotValid: 'hcm.payroll.employees_addition_cpf_error' | translate,\n cnpjNotValid: 'hcm.payroll.employees_addition_cnpj_error' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Percentual-->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label id=\"lb-percentage\"\n for=\"ff-percentage\">{{ 'hcm.payroll.historical_bank_account_label_percentage' | translate }}</label>\n <div class=\"ui-inputgroup\">\n <span class=\"ui-inputgroup-addon\">%</span>\n <input pInputText id=\"ff-percentage\" name=\"percentage\"\n formControlName=\"percentage\"\n currencyMask\n [options]=\"optionsPercentage\"\n [placeholder]=\"percentagePlaceholder\"/>\n </div>\n <s-control-errors [control]=\"pixAccountFormGroup.get('percentage')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n maxlength: 'hcm.payroll.error_max_length' | translate: { value: '6' },\n max: 'hcm.payroll.error_max_value_number' | translate: { value: maxValuePercentage },\n min: 'hcm.payroll.error_min_value_number' | translate: { value: '0,01' }\n }\">\n </s-control-errors>\n </div>\n <div class=\"ui-g-12\">\n <p-fieldset\n legend=\"{{ 'hcm.payroll.custom_fields' | translate }}\"\n [attr.data-hidden]=\"!customFields || !customFields.fields.length\"\n >\n <s-custom-fields\n domain=\"hcm\"\n service=\"{{customService}}\"\n entity=\"{{customEntity}}\"\n formControlName=\"customFields\"\n [invalidErrorLabel]=\"'hcm.payroll.employees_invalid_field' | translate\"\n >\n </s-custom-fields>\n </p-fieldset>\n </div>\n </div>\n </div>\n </form>\n\n <div [ngClass]=\"withSideBar ? 'footer' : 'footer-s-border'\">\n <div class=\"form-group\">\n <s-button id=\"btn-save\" label=\"{{ labelBtnAdd | translate}}\" priority=\"primary\"\n (onClick)=\"addItem()\" *ngIf=\"visibleBtnSave && !this.isView\"></s-button>\n <s-button *ngIf=\"withSideBar\" id=\"btn-close\" label=\"{{'hcm.payroll.cancel'|translate}}\" priority=\"secondary\"\n priority=\"link\" (onClick)=\"close()\"></s-button>\n </div>\n </div>\n</div>\n",
|
|
200
|
+
template: "<div id=\"main\">\n <form *ngIf=\"showField || !(hideFields | async)\" [formGroup]=\"pixAccountFormGroup\" autocomplete=\"off\">\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <!-- Tipo de chave -->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label>{{'hcm.payroll.employees_addition_pix_key_type'|translate}}</label>\n <input-rest-auto-complete-enum [dropdown]=\"true\" server=\"payroll\"\n enumeration=\"PixKeyType\"\n placeholder=\"{{'hcm.payroll.select' | translate}}\"\n name=\"pixKeyType\" [form]=\"pixAccountFormGroup\"\n (onSelect)=\"onChangePixKeyType($event)\"\n (onClear)=\"onClearPixKeyType()\"\n id=\"ta-pixKeyType\"></input-rest-auto-complete-enum>\n <s-control-errors [control]=\"pixAccountFormGroup.get('pixKeyType')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n pixKeyTypeBankAccountDuplicate: 'hcm.payroll.historical_pix_key_type_bank_account_duplicate' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Chave Pix-->\n <div class=\"ui-md-6 ui-sm-12\" [ngClass]=\"{'required': pixKeyType !== 'BANK_ACCOUNT'}\">\n <label>{{'hcm.payroll.employees_addition_pix_key' | translate}}</label>\n <ng-container [ngSwitch]=\"pixKeyType\">\n <input *ngSwitchCase=\"'TELEPHONE'\" only-number\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n (keyup)=\"phoneMask($event)\" maxlength=\"15\"\n placeholder=\"(__) ____-____\">\n <p-inputMask *ngSwitchCase=\"'CPF'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"___.___.___-__\"\n mask=\"999.999.999-99\" [unmask]=\"true\"></p-inputMask>\n <p-inputMask *ngSwitchCase=\"'CNPJ'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"__.___.___/____-__\"\n mask=\"99.999.999/9999-99\" [unmask]=\"true\"></p-inputMask>\n <input *ngSwitchCase=\"'EMAIL'\"\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"{{'hcm.payroll.employees_addition_email'|translate}}\"/>\n <input *ngSwitchCase=\"'BANK_ACCOUNT'\" disabled\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"/>\n <input *ngSwitchDefault\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\" maxlength=\"100\" />\n </ng-container>\n <s-control-errors *ngIf=\"isShowPixKeyFieldValidatorMessage\" id=\"er-pix-key\"\n [control]=\"pixAccountFormGroup.get('pixKey')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n invalidPhoneNumber: 'hcm.payroll.employees_addition_invalid_phone_number' | translate: { value: pixAccountFormGroup.get('pixKey').value },\n invalidEmail: 'hcm.payroll.employees_addition_email_invalid' | translate,\n cpfNotValid: 'hcm.payroll.employees_addition_cpf_error' | translate,\n cnpjNotValid: 'hcm.payroll.employees_addition_cnpj_error' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Percentual-->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label id=\"lb-percentage\"\n for=\"ff-percentage\">{{ 'hcm.payroll.historical_bank_account_label_percentage' | translate }}</label>\n <div class=\"ui-inputgroup\">\n <span class=\"ui-inputgroup-addon\">%</span>\n <input pInputText id=\"ff-percentage\" name=\"percentage\"\n formControlName=\"percentage\"\n currencyMask\n [options]=\"optionsPercentage\"\n [placeholder]=\"percentagePlaceholder\"/>\n </div>\n <s-control-errors [control]=\"pixAccountFormGroup.get('percentage')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n maxlength: 'hcm.payroll.error_max_length' | translate: { value: '6' },\n max: 'hcm.payroll.error_max_value_number' | translate: { value: maxValuePercentage },\n min: 'hcm.payroll.error_min_value_number' | translate: { value: '0,01' }\n }\">\n </s-control-errors>\n </div>\n <div class=\"ui-g-12\">\n <p-fieldset\n legend=\"{{ 'hcm.payroll.custom_fields' | translate }}\"\n [attr.data-hidden]=\"!customFields || !customFields.fields.length\"\n >\n <s-custom-fields\n domain=\"hcm\"\n service=\"{{customService}}\"\n entity=\"{{customEntity}}\"\n formControlName=\"customFields\"\n [invalidErrorLabel]=\"'hcm.payroll.employees_invalid_field' | translate\"\n >\n </s-custom-fields>\n </p-fieldset>\n </div>\n </div>\n </div>\n </form>\n\n <div [ngClass]=\"withSideBar ? 'footer' : 'footer-s-border'\">\n <div class=\"form-group\">\n <s-button id=\"btn-save\" label=\"{{ labelBtnAdd | translate}}\" priority=\"primary\"\n (onClick)=\"addItem()\" *ngIf=\"visibleBtnSave && !this.isView\"></s-button>\n <s-button *ngIf=\"withSideBar\" id=\"btn-close\" label=\"{{'hcm.payroll.cancel'|translate}}\" priority=\"secondary\"\n priority=\"link\" (onClick)=\"close()\"></s-button>\n </div>\n </div>\n</div>\n",
|
|
357
201
|
styles: [".refresh{width:100%!important}#table-annuity .col-default-s{width:10%}#table-annuity .col-default-m{width:12%}#table-annuity .col-default-l{width:16%}#table-annuity .col-action{width:10%}#table-annuity .icon-warning{text-align:center!important;color:#ff6d00c7!important}@media screen and (max-width:612px){#table-annuity .col-default-1,#table-annuity .col-default-2{width:16%}#table-annuity .col-default-3{width:26%}#table-annuity .col-icon{width:10%}#table-annuity .col-action{width:27%}}#main{display:-webkit-box;display:flex;height:100%;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#main form{height:100%}#main .footer{border-top:1px solid #ccc;padding-top:15px;margin-top:15px;flex-shrink:0;margin-bottom:-18px}#main .footer-s-border{padding-left:7px;flex-shrink:0;margin-bottom:-18px}"]
|
|
358
202
|
})
|
|
359
203
|
], HistoricalPixAccountFormComponent);
|
|
360
204
|
export { HistoricalPixAccountFormComponent };
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50L2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRyxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQixpQkFBaUIsR0FDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQU9uRixJQUFhLGlDQUFpQyxHQUE5QyxNQUFhLGlDQUFpQztJQXVDMUMsWUFDWSxXQUF3QixFQUN4QixFQUFxQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTlCMUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QixlQUFV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QyxNQUFNLEVBQUU7d0VBQ2lFO0FBRTFFO0lBREMsTUFBTSxFQUFFOytFQUNnRTtBQTRFekU7SUFEQyxLQUFLLEVBQUU7Z0VBR1A7QUFRRDtJQURDLEtBQUssRUFBRTsyRUFxQlA7QUFpRkQ7SUFEQyxLQUFLLEVBQUU7MEVBT1A7QUE2RkQ7SUFEQyxLQUFLLEVBQUU7bUVBS1A7QUF4VFEsaUNBQWlDO0lBTDdDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLG81TkFBMkQ7O0tBRTlELENBQUM7R0FDVyxpQ0FBaUMsQ0ErVzdDO1NBL1dZLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE51bWJlckxvY2FsZU9wdGlvbnMsIEN1c3RvbUZpZWxkc0NvbXBvbmVudCB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gICAgdmVyaWZ5VmFsaWRhdGlvbnNGb3JtLFxuICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHMsXG4gICAgbW91bnRDdXN0b21Ub1Nob3csXG59IGZyb20gXCIuLi8uLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJwaXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1cnJlbmN5OiBOdW1iZXJMb2NhbGVPcHRpb25zO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUVudGl0eTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbVNlcnZpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoU2lkZUJhcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlZmF1bHRDcGZOdW1iZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwaXhBY2NvdW50SXRlbVRvTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGVtcGxveWVlSWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHBpeEFjY291bnRMaXN0OiBvYmplY3RbXTtcbiAgICBwcml2YXRlIGluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2U6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMC4wMSldO1xuXG5cbiAgICBwdWJsaWMgbGFiZWxCdG5BZGQ6IHN0cmluZyA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIG1heFZhbHVlUGVyY2VudGFnZTogbnVtYmVyID0gMTAwLjAwO1xuICAgIHB1YmxpYyB2aXNpYmxlQnRuU2F2ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIGlzVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwaXhLZXlUeXBlOiBzdHJpbmc7XG4gICAgcHVibGljIGlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YmplY3RzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyU3ViamVjdHMoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICBlbXBsb3llZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHsgdmFsdWU6IHsgdGFibGVJZDogbnVsbCB9LCBkaXNhYmxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGRhdGVDaGFuZ2U6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIHBpeEtleVR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIHBpeEtleTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VQaXhLZXlUeXBlKGl0ZW06IGFueSkge1xuICAgICAgICBpZiAoaXRlbS5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IGl0ZW0ua2V5O1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dQaXhLZXlGaWVsZFZhbGlkYXRvck1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKHRydWUpO1xuXG4gICAgICAgICAgICBpZihpdGVtLmtleSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENwZlBpeEtleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJQaXhLZXlUeXBlKCkge1xuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMudmlzaWJsZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzRWRpdEFuZFZpZXdWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZUJ0blNhdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuY3VycmVudEl0ZW0gJiYgT2JqZWN0LmtleXModmFsdWUuY3VycmVudEl0ZW0pLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnBhdGNoVmFsdWUodGhpcy5jb252ZXJ0RFRPVG9TaG93V2l0aEN1c3RvbUZpZWxkcyh7Li4udmFsdWUuY3VycmVudEl0ZW19KSk7XG4gICAgICAgICAgICB0aGlzLmxhYmVsQnRuQWRkID0gXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfdXBkYXRlXCI7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHZhbHVlLmxpc3REYXRhLCB2YWx1ZS5jdXJyZW50SXRlbVtcImluZGV4XCJdLCB2YWx1ZSAmJiB2YWx1ZVtcImlzRWRpdE1vZGVcIl0pO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmlldykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRW5hYmxlRmllbGRzKHZhbHVlICYmIHZhbHVlW1wiaXNFZGl0TW9kZVwiXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnBpeEtleVR5cGUgPT09IFwiVEVMRVBIT05FXCIpIHtcbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIikuc2V0VmFsdWUoRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcih0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERUT1RvU2hvd1dpdGhDdXN0b21GaWVsZHMoZGF0YTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7Li4uIGRhdGF9O1xuICAgICAgICBvYmpbXCJjdXN0b21GaWVsZHNcIl0gPSBtb3VudEN1c3RvbVRvU2hvdyhvYmpbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlnRW5hYmxlRmllbGRzKGlzRWRpdE1vZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQnRuU2F2ZSA9IGlzRWRpdE1vZGU7XG5cbiAgICAgICAgaWYodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHModGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLCBpc0VkaXRNb2RlLCBbXG4gICAgICAgICAgICBcInBpeEtleVR5cGVcIixcbiAgICAgICAgICAgIFwicGl4S2V5XCIsXG4gICAgICAgICAgICBcInBlcmNlbnRhZ2VcIixcbiAgICAgICAgICAgIFwiY3VzdG9tRmllbGRzXCIsXG4gICAgICAgIF0sIFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB2ZXJpZnlWYWxpZGF0aW9uc0Zvcm0uY2FsbCh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXApO1xuXG4gICAgICAgIGlmICh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVtcGxveWVlSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwiZW1wbG95ZWVcIikuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICB0YWJsZUlkOiB0aGlzLmVtcGxveWVlSWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtVG9MaXN0LmVtaXQodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRmllbGRzICYmIHRoaXMuY3VzdG9tRmllbGRzLmZvcm1Hcm91cCkgdGhpcy5jdXN0b21GaWVsZHMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJjZW50YWdlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAwJHsgdGhpcy5jdXJyZW5jeSAmJiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IgfTAwYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNQZXJjZW50YWdlKCk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMuZ2V0T3B0aW9ucygpLCBwcmVjaXNpb246IDIgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZWZpeDogXCJcIixcbiAgICAgICAgICAgIHRob3VzYW5kczogdGhpcy5jdXJyZW5jeS50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBkZWNpbWFsOiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTyBJbnB1dCBxdWUgcmVjZWJlIGEgbGlzdGEgZG8gY29tcG9uZW50IHBhaSBlIGNoYW1hIG8gbcOpdG9kbyBkZSB2YWxpZGHDp8OjbyBwYXNzYW5kbyBhIGxpc3RhIHJlY2ViaWRhLlxuICAgICAqIEBwYXJhbSBwaXhBY2NvdW50TGlzdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBnZXRMaXN0UGl4QWNjb3VudChwaXhBY2NvdW50TGlzdDogb2JqZWN0W10pIHtcbiAgICAgICAgaWYgKHBpeEFjY291bnRMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0LCBudWxsLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjZWJlIGEgbGlzdGEgZGUgcmVnaXN0cm9zIGrDoSBpbnNlcmlkb3MgbmEgdGFiZWxhIGFkaWNpb25hIGVtIHVtYSB2YXJpw6F2ZWwgb3MgdmFsb3JlcyBxdWUgc2Vyw6NvIHVzYWRvcyBwYXJhXG4gICAgICogYSB2YWxpZGHDp8OjbyBkb3MgY2FtcG9zIFwicGVyY2VudGFnZVwiIGUgXCJwaXhBY2NvdW50XCIuXG4gICAgICogUXVhbmRvIHRlbSBpbmRleCBzaWduaWZpY2EgcXVlIGVzdMOhIGVtIHVtYSBlZGnDp8Ojbywgb3MgdmFsb3JlcyBuYSBwb3Npw6fDo28gZG8gcmVnaXN0cm8gZGEgZWRpw6fDo28gKGluZGV4KSBuw6NvIHNlcsOjbyBhZGljaW9uYWRvc1xuICAgICAqIG5vIGFycmF5IGRlIGNvbXBhcmHDp8OjbyBkb3MgdmFsaWRhdG9ycy5cbiAgICAgKiBAcGFyYW0gcGl4QWNjb3VudExpc3RcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSwgaW5kZXg6IG51bWJlciA9IG51bGwsIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudExpc3QgPSBwaXhBY2NvdW50TGlzdCAmJiBwaXhBY2NvdW50TGlzdC5sZW5ndGggPyBbLi4ucGl4QWNjb3VudExpc3RdIDogW107XG5cbiAgICAgICAgY29uc3QgcGVyY2VudGFnZUluY2x1ZGVkOiBhbnkgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50TGlzdC5maWx0ZXIoKGZpZWxkOiBhbnksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBlcmNlbnRhZ2VcIl0gJiYga2V5ICE9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VJbmNsdWRlZC5wdXNoKGZpZWxkW1wicGVyY2VudGFnZVwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKTtcbiAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGUpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUGVyY2VudGFnZVZhbGlkKHBlcmNlbnRhZ2VJbmNsdWRlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW50ZXMgZGUgc2V0YXIgbyB2YWxpZGF0b3IgcHJlcGFyYSBhcyB2YXJpw6F2ZWlzIG5lY2Vzc8OhcmlhIHBhcmEgcXVlIHNlamEgZmVpdGEgYSB2YWxpZGHDp8OjbyBkbyBjYW1wby5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGdlbmVyaWNQaXhLZXkgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpO1xuICAgICAgICBpZiAodGhpcy5waXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucGl4S2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJURUxFUEhPTkVcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRQaG9uZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiRU1BSUxcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQ1BGXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ3BmLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDTlBKXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ25waixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkFORE9NX0tFWVwiOlxuICAgICAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKGlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LmVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZW5lcmljUGl4S2V5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXN0ZSBtw6l0b2RvIGNhbGN1bGEgYXMgcGFyY2VudGFnZW5zIHF1ZSBqw6EgZm9yYW0gaW5zZXJpZGFzLCBlIHNldGEgYSBkaWZlcmVuw6dhIHBhcmEgY2hlZ2FyIGVtXG4gICAgICogMTAwJSBuYSB2YWxpZGHDp8OjbyBkbyBjYW1wbyBcInBlcmNlbnRhZ2VcIiBjb21vIHVtIG5vdm8gbWF4VmFsdWU7XG4gICAgICogQHBhcmFtIGxpc3RWYWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJjZW50YWdlVmFsaWQobGlzdFZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBlcmNlbnRhZ2VcIik7XG4gICAgICAgIHRoaXMubWF4VmFsdWVQZXJjZW50YWdlID0gbGlzdFZhbHVlXG4gICAgICAgICAgICAucmVkdWNlKChjdXJyZW50VmFsdWUsIHRvdGFsKSA9PiBjdXJyZW50VmFsdWUgLSB0b3RhbCxcbiAgICAgICAgICAgICAgICAxMDAuMDAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHBlcmNlbnRhZ2VcbiAgICAgICAgICAgIC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKTtcbiAgICAgICAgcGVyY2VudGFnZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzVmlld01vZGUoY29uZGl0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNWaWV3ID0gISEoY29uZGl0aW9uICYmICF0aGlzLndpdGhTaWRlQmFyKTtcbiAgICAgICAgdGhpcy5jb25maWdFbmFibGVGaWVsZHMoIXRoaXMuaXNWaWV3KTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlldykgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGhvbmVNYXNrKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdFRlbGVwaG9uZUlucHV0RXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHNldERlZmF1bHRDcGZQaXhLZXkoKSB7XG4gICAgICAgIGlmKHRoaXMuZGVmYXVsdENwZk51bWJlcikge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRDcGZOdW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2hlZXREb2N1bWVudCA9IHRoaXMucGFyYW1zRm9ybS5nZXQoXCJzaGVldERvY3VtZW50XCIpO1xuICAgICAgICAgICAgaWYoc2hlZXREb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNwZiA9IHNoZWV0RG9jdW1lbnQuZ2V0KFwiY3BmTnVtYmVyXCIpLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmKGNwZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKGNwZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKSB7XG4gICAgICAgIGNvbnN0IHBpeEtleVR5cGUgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5VHlwZVwiKTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCAmJiBwaXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBwaXhLZXlUeXBlXG4gICAgICAgICAgICAgICAgLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUR1cGxpY2F0ZVBpeEtleVR5cGVCYW5rQWNjb3VudCh0aGlzLnBpeEFjY291bnRMaXN0KSxcbiAgICAgICAgICAgICAgICBdKSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBpeEtleVR5cGUuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVEdXBsaWNhdGVQaXhLZXlUeXBlQmFua0FjY291bnQobGlzdENvbXBhcmU6IG9iamVjdFtdKSB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGxpc3RDb21wYXJlLmZpbHRlcigoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBpeEtleVR5cGVcIl0ua2V5ID09PSAnQkFOS19BQ0NPVU5UJyAmJiB2YWx1ZS5rZXkgPT09IGZpZWxkW1wicGl4S2V5VHlwZVwiXS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBwaXhLZXlUeXBlQmFua0FjY291bnREdXBsaWNhdGU6IHRydWUgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50L2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNwQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTzFFLElBQWEsaUNBQWlDLEdBQTlDLE1BQWEsaUNBQWtDLFNBQVEsd0JBQXdCO0lBd0IzRSxZQUNJLFdBQXdCLEVBQ2hCLEVBQXFCLEVBQ3JCLGtCQUFzQztRQUU5QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FB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QUFHRDtJQURDLEtBQUssRUFBRTt5RUFHUDtBQTVLUSxpQ0FBaUM7SUFMN0MsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGFBQWE7UUFDdkIsazhOQUEyRDs7S0FFOUQsQ0FBQztHQUNXLGlDQUFpQyxDQTZLN0M7U0E3S1ksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTnVtYmVyTG9jYWxlT3B0aW9ucywgQ3VzdG9tRmllbGRzQ29tcG9uZW50IH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgICBjb25maWdFbmFibGVkRmllbGRzLFxuICAgIG1vdW50Q3VzdG9tVG9TaG93LFxufSBmcm9tIFwiLi4vLi4vdXRpbHMvaGVscGVyc1wiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hhcmVkU3RhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9zaGFyZWQtc3RhdGUuc2VydmljZVwiO1xuaW1wb3J0IHsgSGlzdG9yaWNha1BpeEFjY291bnRCYXNlIH0gZnJvbSBcIi4uL2hpc3RvcmljYWwtcGl4LWFjY291bnQtYmFzZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJwaXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Rm9ybUNvbXBvbmVudCBleHRlbmRzIEhpc3RvcmljYWtQaXhBY2NvdW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW5jeTogTnVtYmVyTG9jYWxlT3B0aW9ucztcbiAgICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tRW50aXR5OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGN1c3RvbVNlcnZpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgd2l0aFNpZGVCYXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc0VkaXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dGaWVsZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBwaXhBY2NvdW50SXRlbVRvTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGVtcGxveWVlSWQ6IHN0cmluZztcblxuICAgIHB1YmxpYyBsYWJlbEJ0bkFkZDogc3RyaW5nID0gXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfYWRkXCI7XG4gICAgcHVibGljIHZpc2libGVCdG5TYXZlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgaXNWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBoaWRlRmllbGRzID0gdGhpcy5zaGFyZWRTdGF0ZVNlcnZpY2UuaGlkZUZpZWxkJDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHNoYXJlZFN0YXRlU2VydmljZTogU2hhcmVkU3RhdGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1CdWlsZGVyKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YmplY3RzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJTdWJqZWN0cygpOiB2b2lkIHt9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy52aXNpYmxlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgaXNFZGl0QW5kVmlld1ZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgdGhpcy52aXNpYmxlQnRuU2F2ZSA9IHRydWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5jdXJyZW50SXRlbSAmJiBPYmplY3Qua2V5cyh2YWx1ZS5jdXJyZW50SXRlbSkubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmNvbnZlcnREVE9Ub1Nob3dXaXRoQ3VzdG9tRmllbGRzKHsgLi4udmFsdWUuY3VycmVudEl0ZW0gfSkpO1xuICAgICAgICAgICAgdGhpcy5sYWJlbEJ0bkFkZCA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX3VwZGF0ZVwiO1xuICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzQWNjb3JkaW5nTGlzdCh2YWx1ZS5saXN0RGF0YSwgdmFsdWUuY3VycmVudEl0ZW1bXCJpbmRleFwiXSwgdmFsdWUgJiYgdmFsdWVbXCJpc0VkaXRNb2RlXCJdKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1ZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0VuYWJsZUZpZWxkcyh2YWx1ZSAmJiB2YWx1ZVtcImlzRWRpdE1vZGVcIl0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhLZXlUeXBlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUua2V5O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0UGl4S2V5VGVsZXBob25lTnVtYmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5waXhLZXlUeXBlID09PSBcIlRFTEVQSE9ORVwiKSB7XG4gICAgICAgICAgICBjb25zdCBwaXhLZXlDdHJsID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKTtcbiAgICAgICAgICAgIHBpeEtleUN0cmwuc2V0VmFsdWUoRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcihwaXhLZXlDdHJsLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERUT1RvU2hvd1dpdGhDdXN0b21GaWVsZHMoZGF0YTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7IC4uLmRhdGEgfTtcbiAgICAgICAgb2JqW1wiY3VzdG9tRmllbGRzXCJdID0gbW91bnRDdXN0b21Ub1Nob3cob2JqW1wiY3VzdG9tRmllbGRzXCJdKTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpZ0VuYWJsZUZpZWxkcyhpc0VkaXRNb2RlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlzaWJsZUJ0blNhdmUgPSBpc0VkaXRNb2RlO1xuXG4gICAgICAgIGlmICh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5VHlwZVwiKS52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5waXhLZXlUeXBlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUua2V5O1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGUsIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCk7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRW5hYmxlZEZpZWxkcyh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAsIGlzRWRpdE1vZGUsIFtcbiAgICAgICAgICAgIFwicGl4S2V5VHlwZVwiLFxuICAgICAgICAgICAgXCJwaXhLZXlcIixcbiAgICAgICAgICAgIFwicGVyY2VudGFnZVwiLFxuICAgICAgICAgICAgXCJjdXN0b21GaWVsZHNcIlxuICAgICAgICBdLCBbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW1wbG95ZWVJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJlbXBsb3llZVwiKS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlSWQ6IHRoaXMuZW1wbG95ZWVJZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50SXRlbVRvTGlzdC5lbWl0KHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKTtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5yZXNldCgpO1xuICAgICAgICB0aGlzLmxhYmVsQnRuQWRkID0gXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfYWRkXCI7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcyAmJiB0aGlzLmN1c3RvbUZpZWxkcy5mb3JtR3JvdXApIHRoaXMuY3VzdG9tRmllbGRzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGVyY2VudGFnZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgMCR7dGhpcy5jdXJyZW5jeSAmJiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3J9MDBgO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc1BlcmNlbnRhZ2UoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5nZXRPcHRpb25zKCksIHByZWNpc2lvbjogMiB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9ucygpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJlZml4OiBcIlwiLFxuICAgICAgICAgICAgdGhvdXNhbmRzOiB0aGlzLmN1cnJlbmN5LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIGRlY2ltYWw6IHRoaXMuY3VycmVuY3kuZGVjaW1hbFNlcGFyYXRvclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBnZXRMaXN0UGl4QWNjb3VudChwaXhBY2NvdW50TGlzdDogb2JqZWN0W10pIHtcbiAgICAgICAgaWYgKHBpeEFjY291bnRMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0LCBudWxsLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzVmlld01vZGUoY29uZGl0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNWaWV3ID0gISEoY29uZGl0aW9uICYmICF0aGlzLndpdGhTaWRlQmFyKTtcbiAgICAgICAgdGhpcy5jb25maWdFbmFibGVGaWVsZHMoIXRoaXMuaXNWaWV3KTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlldykgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcGFyYW1zRm9ybSh2YWx1ZTogRm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLl9wYXJhbXNGb3JtID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGRlZmF1bHRDcGZOdW1iZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kZWZhdWx0Q3BmTnVtYmVyID0gdmFsdWU7XG4gICAgfVxufVxuIl19
|