@bnsights/bbsf-admin-portal 1.0.73 → 1.0.75
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/README.md +5 -0
- package/{bnsights-bbsf-admin-portal-1.0.73.tgz → bnsights-bbsf-admin-portal-1.0.75.tgz} +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +600 -298
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/shared/components/external-url/external-url.component.js +2 -2
- package/esm2015/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.js +2 -1
- package/esm2015/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.js +148 -91
- package/esm2015/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.js +159 -97
- package/esm2015/lib/Pages/shared/components/survey/survey-info/preview/preview.component.js +2 -2
- package/esm2015/lib/Pages/shared/components/survey/survey-info/survey-info.component.js +5 -2
- package/esm2015/lib/Pages/shared/components/survey/survey.component.js +94 -47
- package/esm2015/lib/Pages/shared/components/survey-form/survey-form.component.js +219 -87
- package/fesm2015/bnsights-bbsf-admin-portal.js +613 -311
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +1 -0
- package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +1 -0
- package/lib/Pages/shared/components/survey/survey.component.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
2
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
3
|
-
import { FormGroup } from '@angular/forms';
|
|
4
|
-
import { AppBaseComponent, ControlLayout, CustomValidation, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, RangeNumber, TextBoxOptions, ToggleSlideOptions } from '@bnsights/bbsf-controls';
|
|
2
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
3
|
+
import { FormGroup, Validators, } from '@angular/forms';
|
|
4
|
+
import { AppBaseComponent, ControlLayout, CustomValidation, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, RangeNumber, TextBoxOptions, ToggleSlideOptions, } from '@bnsights/bbsf-controls';
|
|
5
5
|
import { AudienceType, SurveyOptionType } from '../../../../Enums/Enums';
|
|
6
6
|
import { SurveyQuestionDTO } from '../../../../models/SurveyModels/survey-question';
|
|
7
7
|
import { SurveyQuestionOptionDTO } from '../../../../models/SurveyModels/survey-question-option';
|
|
@@ -59,31 +59,33 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
59
59
|
this.editSurveyQuestionFormOptions = new FormOptions();
|
|
60
60
|
this.editSurveyQuestionFormOptions.FormGroup = this.editModelForm;
|
|
61
61
|
this.editSurveyQuestionFormOptions.GetModelFunction = this.getEditModel;
|
|
62
|
-
this.editSurveyQuestionFormOptions.ServiceSubmitFunction =
|
|
62
|
+
this.editSurveyQuestionFormOptions.ServiceSubmitFunction =
|
|
63
|
+
this.getEditFunction;
|
|
63
64
|
this.editSurveyQuestionFormOptions.PagingReference = this.pagingElement;
|
|
64
|
-
this.editSurveyQuestionFormOptions.OnSuccessHandler =
|
|
65
|
+
this.editSurveyQuestionFormOptions.OnSuccessHandler =
|
|
66
|
+
this.onSuccessEditHandler;
|
|
65
67
|
this.editSurveyQuestionFormOptions.DisableSuccessNotification = true;
|
|
66
68
|
let text = new EnglishArabicDTO();
|
|
67
69
|
text.Arabic = this.question.text.arabic;
|
|
68
70
|
text.English = this.question.text.english;
|
|
69
71
|
this.editQuestion = new MultiLingualTextBoxOptions();
|
|
70
|
-
this.editQuestion.Name =
|
|
71
|
-
this.editQuestion.ArabicLabelKey =
|
|
72
|
-
this.editQuestion.EnglishLabelKey =
|
|
72
|
+
this.editQuestion.Name = 'Text';
|
|
73
|
+
this.editQuestion.ArabicLabelKey = 'QuestionInArabic';
|
|
74
|
+
this.editQuestion.EnglishLabelKey = 'QuestionInEnglish';
|
|
73
75
|
this.editQuestion.IsRequired = true;
|
|
74
76
|
this.editQuestion.MaxLength = 4000;
|
|
75
77
|
this.editQuestion.LanguageMode = this.getLanguageModeValue();
|
|
76
78
|
this.editQuestion.Value = text;
|
|
77
79
|
this.editQuestion.IsDisabled = isViewOnly;
|
|
78
80
|
this.editDescription = new MultiLingualTextAreaOptions();
|
|
79
|
-
this.editDescription.Name =
|
|
80
|
-
this.editDescription.ArabicLabelKey =
|
|
81
|
-
this.editDescription.EnglishLabelKey =
|
|
81
|
+
this.editDescription.Name = 'Description';
|
|
82
|
+
this.editDescription.ArabicLabelKey = 'DescriptionInArabic';
|
|
83
|
+
this.editDescription.EnglishLabelKey = 'DescriptionInEnglish';
|
|
82
84
|
this.editDescription.IsRequired = false;
|
|
83
85
|
this.editDescription.MaxLength = 250;
|
|
84
86
|
this.editDescription.Rows = 2;
|
|
85
|
-
this.editDescription.ArabicLabelDescription = this.l(
|
|
86
|
-
this.editDescription.EnglishLabelDescription = this.l(
|
|
87
|
+
this.editDescription.ArabicLabelDescription = this.l('QuestionDescriptionHintArabic');
|
|
88
|
+
this.editDescription.EnglishLabelDescription = this.l('QuestionDescriptionHintEnglish');
|
|
87
89
|
this.editDescription.IsDisabled = isViewOnly;
|
|
88
90
|
this.editDescription.LanguageMode = this.getLanguageModeValue();
|
|
89
91
|
let description = new EnglishArabicDTO();
|
|
@@ -91,59 +93,59 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
91
93
|
description.English = this.question.description.english;
|
|
92
94
|
this.editDescription.Value = description;
|
|
93
95
|
this.editQuestionType = new DropdownOptions();
|
|
94
|
-
this.editQuestionType.Name =
|
|
95
|
-
this.editQuestionType.LabelKey =
|
|
96
|
+
this.editQuestionType.Name = 'QuestionTypeItemID';
|
|
97
|
+
this.editQuestionType.LabelKey = 'PropertyType';
|
|
96
98
|
this.editQuestionType.IsRequired = true;
|
|
97
99
|
this.editQuestionType.AllowSearchFilter = true;
|
|
98
100
|
this.editQuestionType.DataSource = result.optionTypes;
|
|
99
101
|
this.editQuestionType.SingleSelection = true;
|
|
100
102
|
this.editQuestionType.SelectedItems = this.question.questionTypeItemID;
|
|
101
|
-
this.editQuestionType.NotFoundText = this.l(
|
|
103
|
+
this.editQuestionType.NotFoundText = this.l('NoResultFound');
|
|
102
104
|
this.editQuestionType.IsDisabled = true;
|
|
103
105
|
this.audience = new DropdownOptions();
|
|
104
|
-
this.audience.Name =
|
|
105
|
-
this.audience.LabelKey =
|
|
106
|
+
this.audience.Name = 'AudienceItemID';
|
|
107
|
+
this.audience.LabelKey = 'Audience';
|
|
106
108
|
this.audience.IsRequired = true;
|
|
107
109
|
this.audience.ViewType = ControlLayout.Vertical;
|
|
108
110
|
this.audience.SingleSelection = true;
|
|
109
111
|
this.audience.ShowCheckbox = false;
|
|
110
112
|
this.audience.DataSource = result.audiences;
|
|
111
113
|
this.audience.SelectedItems = this.question.audienceItemID;
|
|
112
|
-
this.audience.LabelDescription = this.l(
|
|
114
|
+
this.audience.LabelDescription = this.l('AudienceDescriptionHint');
|
|
113
115
|
this.audience.IsDisabled = isViewOnly;
|
|
114
116
|
this.editSize = new DropdownOptions();
|
|
115
|
-
this.editSize.Name =
|
|
116
|
-
this.editSize.LabelKey =
|
|
117
|
+
this.editSize.Name = 'Size';
|
|
118
|
+
this.editSize.LabelKey = 'Size';
|
|
117
119
|
this.editSize.IsRequired = true;
|
|
118
120
|
this.editSize.AllowSearchFilter = true;
|
|
119
121
|
this.editSize.DataSource = this.SizeList;
|
|
120
122
|
this.editSize.SingleSelection = true;
|
|
121
123
|
this.editSize.SelectedItems = this.question.options.size;
|
|
122
|
-
this.editSize.NotFoundText = this.l(
|
|
124
|
+
this.editSize.NotFoundText = this.l('NoResultFound');
|
|
123
125
|
this.editSize.IsDisabled = isViewOnly;
|
|
124
126
|
this.editRequired = new ToggleSlideOptions();
|
|
125
|
-
this.editRequired.Name =
|
|
126
|
-
this.editRequired.LabelKey =
|
|
127
|
+
this.editRequired.Name = 'IsRequired';
|
|
128
|
+
this.editRequired.LabelKey = 'IsRequired';
|
|
127
129
|
this.editRequired.Value = this.question.isRequired;
|
|
128
|
-
this.editRequired.LabelDescription = this.l(
|
|
130
|
+
this.editRequired.LabelDescription = this.l('RequiredDescriptionHint');
|
|
129
131
|
this.editRequired.IsDisabled = isViewOnly;
|
|
130
132
|
this.editAllowScore = new ToggleSlideOptions();
|
|
131
|
-
this.editAllowScore.Name =
|
|
132
|
-
this.editAllowScore.LabelKey =
|
|
133
|
+
this.editAllowScore.Name = 'IsAllowScoring';
|
|
134
|
+
this.editAllowScore.LabelKey = 'AllowScore';
|
|
133
135
|
this.editAllowScore.Value = this.question.isAllowScoring;
|
|
134
|
-
this.editAllowScore.LabelDescription = this.l(
|
|
135
|
-
this.editAllowScore.LabelDescription = this.l(
|
|
136
|
+
this.editAllowScore.LabelDescription = this.l('AllowScoreDescription');
|
|
137
|
+
this.editAllowScore.LabelDescription = this.l('AllowScoreDescription');
|
|
136
138
|
this.editAllowScore.IsDisabled = isViewOnly;
|
|
137
139
|
this.editHasSearch = new ToggleSlideOptions();
|
|
138
|
-
this.editHasSearch.Name =
|
|
139
|
-
this.editHasSearch.LabelKey =
|
|
140
|
+
this.editHasSearch.Name = 'HasSearch';
|
|
141
|
+
this.editHasSearch.LabelKey = 'HasSearch';
|
|
140
142
|
this.editHasSearch.IsDisabled = isViewOnly;
|
|
141
143
|
this.editIsActive = new ToggleSlideOptions();
|
|
142
|
-
this.editIsActive.Name =
|
|
143
|
-
this.editIsActive.LabelKey =
|
|
144
|
+
this.editIsActive.Name = 'IsVisible';
|
|
145
|
+
this.editIsActive.LabelKey = 'Visible';
|
|
144
146
|
this.editIsActive.Value = true;
|
|
145
147
|
this.editIsActive.Value = this.question.isVisible;
|
|
146
|
-
this.editIsActive.LabelDescription = this.l(
|
|
148
|
+
this.editIsActive.LabelDescription = this.l('VisibleDescriptionHint');
|
|
147
149
|
this.editIsActive.IsDisabled = isViewOnly;
|
|
148
150
|
// this.editDisplayOrder = new TextBoxOptions();
|
|
149
151
|
// this.editDisplayOrder.Name = "DisplayOrder";
|
|
@@ -155,28 +157,26 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
155
157
|
// this.editDisplayOrder.Value = this.question.displayOrder;
|
|
156
158
|
// this.editDisplayOrder.CustomValidation = [this.numberValidation];
|
|
157
159
|
this.editMaxLength = new TextBoxOptions();
|
|
158
|
-
this.editMaxLength.Name =
|
|
159
|
-
this.editMaxLength.LabelKey =
|
|
160
|
+
this.editMaxLength.Name = 'MaxLength';
|
|
161
|
+
this.editMaxLength.LabelKey = 'MaxLength';
|
|
160
162
|
this.editMaxLength.IsRequired = true;
|
|
161
163
|
this.editMaxLength.NumberRange = new RangeNumber();
|
|
162
|
-
this.editMaxLength.NumberRange.From = 1;
|
|
163
|
-
this.editMaxLength.NumberRange.To = 4000;
|
|
164
164
|
this.editMaxLength.Type = InputType.Number;
|
|
165
165
|
this.editMaxLength.Value = this.question.options.maxLength;
|
|
166
166
|
this.editMaxLength.IsDisabled = isViewOnly;
|
|
167
|
+
this.editMaxLength.LabelDescription = this.l('MaxHint');
|
|
167
168
|
this.editMinLength = new TextBoxOptions();
|
|
168
|
-
this.editMinLength.Name =
|
|
169
|
-
this.editMinLength.LabelKey =
|
|
169
|
+
this.editMinLength.Name = 'MinLength';
|
|
170
|
+
this.editMinLength.LabelKey = 'MinLength';
|
|
170
171
|
this.editMinLength.IsRequired = true;
|
|
171
172
|
this.editMinLength.NumberRange = new RangeNumber();
|
|
172
|
-
this.editMinLength.NumberRange.From = 1;
|
|
173
|
-
this.editMinLength.NumberRange.To = 4000;
|
|
174
173
|
this.editMinLength.Type = InputType.Number;
|
|
175
174
|
this.editMinLength.Value = this.question.options.minLength;
|
|
176
175
|
this.editMinLength.IsDisabled = isViewOnly;
|
|
176
|
+
this.editMinLength.LabelDescription = this.l('MinHint');
|
|
177
177
|
this.editRowsNumber = new TextBoxOptions();
|
|
178
|
-
this.editRowsNumber.Name =
|
|
179
|
-
this.editRowsNumber.LabelKey =
|
|
178
|
+
this.editRowsNumber.Name = 'Rows';
|
|
179
|
+
this.editRowsNumber.LabelKey = 'Rows';
|
|
180
180
|
this.editRowsNumber.IsRequired = true;
|
|
181
181
|
this.editRowsNumber.NumberRange = new RangeNumber();
|
|
182
182
|
this.editRowsNumber.NumberRange.From = 1;
|
|
@@ -185,8 +185,8 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
185
185
|
this.editRowsNumber.Value = this.question.options.rows;
|
|
186
186
|
this.editRowsNumber.IsDisabled = isViewOnly;
|
|
187
187
|
this.editMaxFileSize = new TextBoxOptions();
|
|
188
|
-
this.editMaxFileSize.Name =
|
|
189
|
-
this.editMaxFileSize.LabelKey =
|
|
188
|
+
this.editMaxFileSize.Name = 'MaxFileSizeInMB';
|
|
189
|
+
this.editMaxFileSize.LabelKey = 'MaxFileSizeInMB';
|
|
190
190
|
this.editMaxFileSize.IsRequired = true;
|
|
191
191
|
this.editMaxFileSize.NumberRange = new RangeNumber();
|
|
192
192
|
this.editMaxFileSize.NumberRange.From = 1;
|
|
@@ -195,63 +195,72 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
195
195
|
this.editMaxFileSize.Value = this.question.options.maxFileSizeInMB;
|
|
196
196
|
this.editMaxFileSize.IsDisabled = isViewOnly;
|
|
197
197
|
this.editMaxFileCount = new TextBoxOptions();
|
|
198
|
-
this.editMaxFileCount.Name =
|
|
199
|
-
this.editMaxFileCount.LabelKey =
|
|
198
|
+
this.editMaxFileCount.Name = 'MaxFileCount';
|
|
199
|
+
this.editMaxFileCount.LabelKey = 'MaxFilesCount';
|
|
200
200
|
this.editMaxFileCount.IsRequired = true;
|
|
201
201
|
this.editMaxFileCount.NumberRange = new RangeNumber();
|
|
202
202
|
this.editMaxFileCount.NumberRange.From = 1;
|
|
203
203
|
this.editMaxFileCount.NumberRange.To = 50;
|
|
204
204
|
this.editMaxFileCount.Type = InputType.Number;
|
|
205
|
+
this.editMaxFileCount.LabelDescription = this.l('MaxFileCountHint');
|
|
205
206
|
this.editMaxFileCount.Value = this.question.options.maxFileCount;
|
|
206
207
|
this.editMaxFileCount.CustomValidation = [this.numberValidation];
|
|
207
208
|
this.editMaxFileCount.IsDisabled = isViewOnly;
|
|
208
|
-
let FilesExtensionResult = this.question.options
|
|
209
|
-
|
|
209
|
+
let FilesExtensionResult = this.question.options
|
|
210
|
+
.allowedExtensions;
|
|
211
|
+
let FilesExtensions = FilesExtensionResult
|
|
212
|
+
? result.extensions
|
|
213
|
+
.filter((item) => {
|
|
214
|
+
return FilesExtensionResult.includes(item.key);
|
|
215
|
+
})
|
|
216
|
+
.map((item) => item.key)
|
|
217
|
+
: [];
|
|
210
218
|
this.editFilesExtensions = new DropdownOptions();
|
|
211
|
-
this.editFilesExtensions.Name =
|
|
212
|
-
this.editFilesExtensions.LabelKey =
|
|
219
|
+
this.editFilesExtensions.Name = 'AllowedExtensions';
|
|
220
|
+
this.editFilesExtensions.LabelKey = 'Extensions';
|
|
213
221
|
this.editFilesExtensions.IsRequired = true;
|
|
214
222
|
this.editFilesExtensions.AllowSearchFilter = true;
|
|
215
223
|
this.editFilesExtensions.DataSource = result.extensions;
|
|
216
224
|
this.editFilesExtensions.SingleSelection = false;
|
|
217
225
|
this.editFilesExtensions.SelectedItems = FilesExtensions;
|
|
218
|
-
this.editFilesExtensions.
|
|
226
|
+
this.editFilesExtensions.LabelDescription = this.l('ExtensionHint');
|
|
227
|
+
this.editFilesExtensions.NotFoundText = this.l('NoResultFound');
|
|
219
228
|
this.editFilesExtensions.IsDisabled = isViewOnly;
|
|
220
|
-
|
|
229
|
+
this.editModelForm.addValidators(this.fromTo("MinLength", "MaxLength"));
|
|
221
230
|
this.changeDataType(this.question.questionTypeItemID);
|
|
222
231
|
this.changeScoring(this.question.isAllowScoring);
|
|
223
232
|
this.editOptionId = new TextBoxOptions();
|
|
224
|
-
this.editOptionId.Name =
|
|
233
|
+
this.editOptionId.Name = 'Id';
|
|
225
234
|
this.editOptionId.HideLabel = true;
|
|
226
235
|
this.editOptionId.Type = InputType.Text;
|
|
227
236
|
this.editNameOption = new MultiLingualTextBoxOptions();
|
|
228
|
-
this.editNameOption.Name =
|
|
229
|
-
this.editNameOption.ArabicLabelKey =
|
|
230
|
-
this.editNameOption.EnglishLabelKey =
|
|
237
|
+
this.editNameOption.Name = 'NameOption';
|
|
238
|
+
this.editNameOption.ArabicLabelKey = 'NameInArabic';
|
|
239
|
+
this.editNameOption.EnglishLabelKey = 'NameInEnglish';
|
|
231
240
|
this.editNameOption.IsRequired = true;
|
|
232
241
|
this.editNameOption.MaxLength = 225;
|
|
233
242
|
this.editNameOption.LanguageMode = this.getLanguageModeValue();
|
|
234
243
|
this.scoreNumber = new TextBoxOptions();
|
|
235
|
-
this.scoreNumber.Name =
|
|
236
|
-
this.scoreNumber.LabelKey =
|
|
244
|
+
this.scoreNumber.Name = 'Score';
|
|
245
|
+
this.scoreNumber.LabelKey = 'Score';
|
|
237
246
|
this.scoreNumber.IsRequired = true;
|
|
238
247
|
this.scoreNumber.Type = InputType.Number;
|
|
239
248
|
let rangeNumber = new RangeNumber();
|
|
240
249
|
rangeNumber.To = 1000000;
|
|
241
|
-
rangeNumber.From =
|
|
250
|
+
rangeNumber.From = 1;
|
|
242
251
|
this.scoreNumber.NumberRange = rangeNumber;
|
|
243
252
|
this.displayOrderOption = new TextBoxOptions();
|
|
244
|
-
this.displayOrderOption.Name =
|
|
253
|
+
this.displayOrderOption.Name = 'DisplayOrder';
|
|
245
254
|
this.idOption = new TextBoxOptions();
|
|
246
|
-
this.idOption.Name =
|
|
255
|
+
this.idOption.Name = 'IdOption';
|
|
247
256
|
this.editOptionLinkedQuestions = new DropdownOptions();
|
|
248
|
-
this.editOptionLinkedQuestions.Name =
|
|
249
|
-
this.editOptionLinkedQuestions.LabelKey =
|
|
257
|
+
this.editOptionLinkedQuestions.Name = 'LinkedQuestions';
|
|
258
|
+
this.editOptionLinkedQuestions.LabelKey = 'LinkedQuestions';
|
|
250
259
|
this.editOptionLinkedQuestions.AllowSearchFilter = true;
|
|
251
260
|
this.editOptionLinkedQuestions.DataSource = result.questions;
|
|
252
261
|
this.editOptionLinkedQuestions.SingleSelection = false;
|
|
253
|
-
this.editOptionLinkedQuestions.NotFoundText = this.l(
|
|
254
|
-
this.editOptionLinkedQuestions.LabelDescription = this.l(
|
|
262
|
+
this.editOptionLinkedQuestions.NotFoundText = this.l('NoResultFound');
|
|
263
|
+
this.editOptionLinkedQuestions.LabelDescription = this.l('LinkedQuestionDescriptionHint');
|
|
255
264
|
if (this.question.questionOptions.length > 0) {
|
|
256
265
|
for (let index = 0; index < this.question.questionOptions.length; index++) {
|
|
257
266
|
const element = this.question.questionOptions[index];
|
|
@@ -267,12 +276,16 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
267
276
|
let resultOptionModel = this.editOptionForm.value;
|
|
268
277
|
let resultModel = this.editModelForm.value;
|
|
269
278
|
if (this.isSelect) {
|
|
270
|
-
if ((resultOptionModel.NameOption.Arabic != undefined &&
|
|
271
|
-
|
|
279
|
+
if ((resultOptionModel.NameOption.Arabic != undefined &&
|
|
280
|
+
resultOptionModel.NameOption.Arabic != '') ||
|
|
281
|
+
(resultOptionModel.NameOption.English != undefined &&
|
|
282
|
+
resultOptionModel.NameOption.English != '') ||
|
|
283
|
+
(resultOptionModel.Score != undefined && resultOptionModel.Score > 0)) {
|
|
284
|
+
this.errorMessage = this.l('OptionPendingDataErrorMessage');
|
|
272
285
|
return;
|
|
273
286
|
}
|
|
274
287
|
if (this.optionList.length == 0 && this.isSelect) {
|
|
275
|
-
this.errorMessage = this.l(
|
|
288
|
+
this.errorMessage = this.l('OptionErrorMessage');
|
|
276
289
|
return;
|
|
277
290
|
}
|
|
278
291
|
}
|
|
@@ -332,12 +345,12 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
332
345
|
return null;
|
|
333
346
|
}
|
|
334
347
|
if (!control.value.toString().match(/^[0-9]*$/)) {
|
|
335
|
-
this.numberValidation.massage = this.l(
|
|
336
|
-
return {
|
|
348
|
+
this.numberValidation.massage = this.l('IntegerNumberValidationKey');
|
|
349
|
+
return { customerError: true };
|
|
337
350
|
}
|
|
338
351
|
if (!control.value.toString().match(/^[+]?([.]\d+|\d+[.]?\d*)$/)) {
|
|
339
|
-
this.numberValidation.massage = this.l(
|
|
340
|
-
return {
|
|
352
|
+
this.numberValidation.massage = this.l('PositiveNumberValidationKey');
|
|
353
|
+
return { customerError: true };
|
|
341
354
|
}
|
|
342
355
|
return null;
|
|
343
356
|
};
|
|
@@ -350,11 +363,44 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
350
363
|
this.editOptionForm.controls['Score'].updateValueAndValidity();
|
|
351
364
|
}
|
|
352
365
|
}
|
|
366
|
+
updateLengthValidator(name, max, min) {
|
|
367
|
+
let control = this.editOptionForm.controls[name];
|
|
368
|
+
if (control) {
|
|
369
|
+
control.setErrors(null);
|
|
370
|
+
control.clearValidators();
|
|
371
|
+
control.updateValueAndValidity();
|
|
372
|
+
let validationRules = [];
|
|
373
|
+
validationRules.push(Validators.min(min));
|
|
374
|
+
validationRules.push(Validators.max(max));
|
|
375
|
+
validationRules.push(Validators.required);
|
|
376
|
+
control.addValidators(validationRules);
|
|
377
|
+
control.updateValueAndValidity();
|
|
378
|
+
}
|
|
379
|
+
}
|
|
353
380
|
changeDataType(key) {
|
|
354
381
|
this.updateFormStatus(key);
|
|
355
382
|
switch (key) {
|
|
356
383
|
case SurveyOptionType.Text:
|
|
384
|
+
this.updateLengthValidator(this.editMaxLength.Name, 255, 1);
|
|
385
|
+
this.updateLengthValidator(this.editMinLength.Name, 255, 1);
|
|
386
|
+
this.editMaxLength.NumberRange.From = 1;
|
|
387
|
+
this.editMaxLength.NumberRange.To = 255;
|
|
388
|
+
this.editMinLength.NumberRange.From = 1;
|
|
389
|
+
this.editMinLength.NumberRange.To = 255;
|
|
390
|
+
this.isText = true;
|
|
391
|
+
this.isNumber = false;
|
|
392
|
+
this.isFile = false;
|
|
393
|
+
this.isMultiFile = false;
|
|
394
|
+
this.isImage = false;
|
|
395
|
+
this.isSelect = false;
|
|
396
|
+
break;
|
|
357
397
|
case SurveyOptionType.MultilineText:
|
|
398
|
+
this.updateLengthValidator(this.editMaxLength.Name, 4000, 1);
|
|
399
|
+
this.updateLengthValidator(this.editMinLength.Name, 4000, 1);
|
|
400
|
+
this.editMaxLength.NumberRange.From = 1;
|
|
401
|
+
this.editMaxLength.NumberRange.To = 4000;
|
|
402
|
+
this.editMinLength.NumberRange.From = 1;
|
|
403
|
+
this.editMinLength.NumberRange.To = 4000;
|
|
358
404
|
this.isText = true;
|
|
359
405
|
this.isNumber = false;
|
|
360
406
|
this.isFile = false;
|
|
@@ -363,6 +409,12 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
363
409
|
this.isSelect = false;
|
|
364
410
|
break;
|
|
365
411
|
case SurveyOptionType.Number:
|
|
412
|
+
this.updateLengthValidator(this.editMaxLength.Name, 100, 1);
|
|
413
|
+
this.updateLengthValidator(this.editMinLength.Name, 100, 1);
|
|
414
|
+
this.editMaxLength.NumberRange.From = 1;
|
|
415
|
+
this.editMaxLength.NumberRange.To = 100;
|
|
416
|
+
this.editMinLength.NumberRange.From = 1;
|
|
417
|
+
this.editMinLength.NumberRange.To = 100;
|
|
366
418
|
this.isNumber = true;
|
|
367
419
|
this.isText = false;
|
|
368
420
|
this.isFile = false;
|
|
@@ -418,7 +470,7 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
418
470
|
this.isEditFormChange = value;
|
|
419
471
|
}
|
|
420
472
|
getLinkedQuestions(option) {
|
|
421
|
-
return this.Questions.filter(item => option.LinkedQuestions.includes(item.key)).map(item => item.value);
|
|
473
|
+
return this.Questions.filter((item) => option.LinkedQuestions.includes(item.key)).map((item) => item.value);
|
|
422
474
|
}
|
|
423
475
|
addOption() {
|
|
424
476
|
this.totalScore = 0;
|
|
@@ -431,11 +483,11 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
431
483
|
for (let index = 0; index < this.optionList.length; index++) {
|
|
432
484
|
let element = this.optionList[index].Score;
|
|
433
485
|
if (element > 1000000) {
|
|
434
|
-
this.errorMessage = this.l(
|
|
486
|
+
this.errorMessage = this.l('MaxOptionScoreErrorMessage');
|
|
435
487
|
return;
|
|
436
488
|
}
|
|
437
|
-
if (element <
|
|
438
|
-
this.errorMessage = this.l(
|
|
489
|
+
if (element < 1) {
|
|
490
|
+
this.errorMessage = this.l('MinOptionScoreErrorMessage');
|
|
439
491
|
return;
|
|
440
492
|
}
|
|
441
493
|
}
|
|
@@ -454,24 +506,25 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
454
506
|
if (this.showScoreOption)
|
|
455
507
|
option.Score = Number.parseFloat(resultModel.Score);
|
|
456
508
|
this.editOptionForm.reset();
|
|
457
|
-
this.editOptionForm.controls[
|
|
458
|
-
this.editOptionForm.controls[
|
|
459
|
-
this.editOptionForm.controls[
|
|
460
|
-
this.editOptionForm.controls[
|
|
509
|
+
this.editOptionForm.controls['NameOption'].reset();
|
|
510
|
+
this.editOptionForm.controls['IdOption'].reset();
|
|
511
|
+
this.editOptionForm.controls['DisplayOrder'].reset();
|
|
512
|
+
this.editOptionForm.controls['LinkedQuestions'].reset();
|
|
461
513
|
if (this.showScoreOption)
|
|
462
|
-
this.editOptionForm.controls[
|
|
514
|
+
this.editOptionForm.controls['Score'].reset();
|
|
463
515
|
this.optionList.splice(option.DisplayOrder - 1, 0, option);
|
|
464
516
|
this.isEditFormChange = true;
|
|
465
517
|
this.isOptionInEditMode = false;
|
|
466
518
|
}
|
|
467
519
|
deleteOption(option) {
|
|
468
|
-
this.optionList = this.optionList.filter(item => item != option);
|
|
520
|
+
this.optionList = this.optionList.filter((item) => item != option);
|
|
469
521
|
this.isEditFormChange = true;
|
|
470
522
|
}
|
|
471
523
|
editOption(option) {
|
|
472
524
|
var _a, _b;
|
|
473
525
|
debugger;
|
|
474
|
-
if ((this.editOptionForm.touched == true && this.editOptionForm.valid) ||
|
|
526
|
+
if ((this.editOptionForm.touched == true && this.editOptionForm.valid) ||
|
|
527
|
+
this.editOptionForm.touched == false)
|
|
475
528
|
this.addOption();
|
|
476
529
|
else {
|
|
477
530
|
this.editOptionForm.markAllAsTouched();
|
|
@@ -480,13 +533,13 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
480
533
|
let name = new EnglishArabicDTO();
|
|
481
534
|
name.Arabic = (_a = option.Name.Arabic) !== null && _a !== void 0 ? _a : null;
|
|
482
535
|
name.English = (_b = option.Name.English) !== null && _b !== void 0 ? _b : null;
|
|
483
|
-
this.editOptionForm.controls[
|
|
484
|
-
this.editOptionForm.controls[
|
|
485
|
-
this.editOptionForm.controls[
|
|
486
|
-
this.editOptionForm.controls[
|
|
536
|
+
this.editOptionForm.controls['NameOption'].setValue(name);
|
|
537
|
+
this.editOptionForm.controls['IdOption'].setValue(option.ID_GUID);
|
|
538
|
+
this.editOptionForm.controls['DisplayOrder'].setValue(option.DisplayOrder);
|
|
539
|
+
this.editOptionForm.controls['LinkedQuestions'].setValue(option.LinkedQuestions);
|
|
487
540
|
if (this.showScoreOption)
|
|
488
|
-
this.editOptionForm.controls[
|
|
489
|
-
this.optionList = this.optionList.filter(item => item != option);
|
|
541
|
+
this.editOptionForm.controls['Score'].setValue(option.Score);
|
|
542
|
+
this.optionList = this.optionList.filter((item) => item != option);
|
|
490
543
|
this.isEditFormChange = true;
|
|
491
544
|
this.isOptionInEditMode = true;
|
|
492
545
|
}
|
|
@@ -494,14 +547,23 @@ export class EditQuestionComponent extends AppBaseComponent {
|
|
|
494
547
|
return (formGroup) => {
|
|
495
548
|
const fromDate = formGroup.get(fromField);
|
|
496
549
|
const toDate = formGroup.get(toField);
|
|
497
|
-
if (
|
|
498
|
-
if (
|
|
550
|
+
if (fromDate !== null && toDate !== null) {
|
|
551
|
+
if (fromDate.value !== null &&
|
|
552
|
+
toDate.value !== null &&
|
|
553
|
+
parseInt(fromDate.value) > parseInt(toDate.value)) {
|
|
499
554
|
fromDate.markAsTouched();
|
|
500
555
|
toDate.markAsTouched();
|
|
501
|
-
toDate.setErrors({
|
|
556
|
+
toDate.setErrors({
|
|
557
|
+
errorMassage: this.l('GreaterThanOrEqualTo'),
|
|
558
|
+
});
|
|
502
559
|
return null;
|
|
503
560
|
}
|
|
504
|
-
|
|
561
|
+
if (fromDate.value !== null &&
|
|
562
|
+
toDate.value !== null &&
|
|
563
|
+
parseInt(fromDate.value) < parseInt(toDate.value) &&
|
|
564
|
+
parseInt(toDate.value) < 255 &&
|
|
565
|
+
parseInt(fromDate.value) < 255)
|
|
566
|
+
toDate.setErrors(null);
|
|
505
567
|
}
|
|
506
568
|
return null;
|
|
507
569
|
};
|
|
@@ -612,7 +674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
612
674
|
type: Component,
|
|
613
675
|
args: [{
|
|
614
676
|
selector: 'app-edit-question',
|
|
615
|
-
templateUrl: './edit-question.component.html'
|
|
677
|
+
templateUrl: './edit-question.component.html',
|
|
616
678
|
}]
|
|
617
679
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.SurveyQuestionService }]; }, propDecorators: { EditModal: [{
|
|
618
680
|
type: ViewChild,
|
|
@@ -622,4 +684,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
622
684
|
}], onSuccessEditHandler: [{
|
|
623
685
|
type: Input
|
|
624
686
|
}] } });
|
|
625
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1xdWVzdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3NoYXJlZC9jb21wb25lbnRzL3N1cnZleS9zdXJ2ZXktaW5mby9lZGl0LXF1ZXN0aW9uL2VkaXQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUF3QixLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBbUIsU0FBUyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpSLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7Ozs7QUFPakcsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdC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QyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLFlBQVksR0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFFLElBQUksQ0FBQztJQUM5QixDQUFDOzttSEE1c0JVLHFCQUFxQjt1R0FBckIscUJBQXFCLGtSQ2RsQyxrelBBK0lBOzRGRGpJYSxxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztpQkFDOUM7bUlBa0M0QyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNkJoQyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCwgQ29udHJvbExheW91dCwgQ3VzdG9tVmFsaWRhdGlvbiwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JjZURpcmVjdGlvbiwgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgUmFuZ2VOdW1iZXIsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXVkaWVuY2VUeXBlLCBTdXJ2ZXlPcHRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbi1vcHRpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1lZGl0LXF1ZXN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcblxyXG5cclxuICBxdWVzdGlvblR5cGU6IFN1cnZleU9wdGlvblR5cGU7XHJcbiAgaXNOdW1iZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1RleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc011bHRpRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzSW1hZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNpemVMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICBlZGl0TW9kZWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICBlZGl0UXVlc3Rpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXREZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIGVkaXRRdWVzdGlvblR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBhdWRpZW5jZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGVkaXRSZXF1aXJlZDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGVkaXRBbGxvd1Njb3JlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdEhhc1NlYXJjaDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGVkaXRJc0FjdGl2ZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGVkaXRNaW5MZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRNYXhMZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRSb3dzTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0TWF4RmlsZVNpemU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRNYXhGaWxlQ291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRGaWxlc0V4dGVuc2lvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBlZGl0U2l6ZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGlzRWRpdEZvcm1DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBudW1iZXJWYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICBAVmlld0NoaWxkKCdFZGl0TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgRWRpdE1vZGFsOiBFbGVtZW50UmVmO1xyXG5cclxuICBlZGl0T3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGVkaXROYW1lT3B0aW9uOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBzY29yZU51bWJlcjogVGV4dEJveE9wdGlvbnM7XHJcbiAgb3B0aW9uTGlzdDogU3VydmV5UXVlc3Rpb25PcHRpb25EVE9bXSA9IFtdXHJcbiAgZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIHNob3dTY29yZU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgc2hvd09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gbnVsbFxyXG4gIHRvdGFsU2NvcmU6IG51bWJlciA9IDBcclxuICBtYWluRm9ybUNvbnRyb2xzOiBhbnlbXTtcclxuICBzdXJ2ZXlJRDogc3RyaW5nXHJcbiAgZWRpdE9wdGlvbklkOiBUZXh0Qm94T3B0aW9ucztcclxuICBxdWVzdGlvbklEOiBhbnk7XHJcbiAgcXVlc3Rpb246IGFueTtcclxuICBlZGl0RGlzcGxheU9yZGVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBwdWJsaWMgYXVkaWVuY2VUeXBlID0gQXVkaWVuY2VUeXBlO1xyXG4gIGF1ZGllbmNlVHlwZUlEOiBhbnk7XHJcbiAgc3VydmV5QXVkaWVuY2VUeXBlSUQ6IGFueTtcclxuICBkaXNwbGF5T3JkZXJPcHRpb246IFRleHRCb3hPcHRpb25zO1xyXG4gIGlzT3B0aW9uSW5FZGl0TW9kZTogYm9vbGVhbjtcclxuICBRdWVzdGlvbnM6IGFueVtdO1xyXG4gIGlzVmlld09ubHk6IGJvb2xlYW47XHJcbiAgaWRPcHRpb246IFRleHRCb3hPcHRpb25zO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBzdXJ2ZXlRdWVzdGlvblNlcnZpY2U6IFN1cnZleVF1ZXN0aW9uU2VydmljZSkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gIH1cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc0VkaXRIYW5kbGVyO1xyXG5cclxuXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAxMjsgaW5kZXgrKykge1xyXG4gICAgICB2YXIgaXRlbSA9IHsga2V5OiBpbmRleCArIDEsIHZhbHVlOiBgJHtpbmRleCArIDF9YCB9O1xyXG4gICAgICB0aGlzLlNpemVMaXN0LnB1c2goaXRlbSk7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bMC05XSokLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubChcIkludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5XCIpXHJcbiAgICAgICAgcmV0dXJuIHsgJ2N1c3RvbWVyRXJyb3InOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bK10/KFsuXVxcZCt8XFxkK1suXT9cXGQqKSQvKSkge1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5tYXNzYWdlID0gdGhpcy5sKFwiUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5XCIpXHJcbiAgICAgICAgcmV0dXJuIHsgJ2N1c3RvbWVyRXJyb3InOiB0cnVlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTY29yaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNob3dTY29yZU9wdGlvbiA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10ucmVzZXQoKVxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLmNsZWFyVmFsaWRhdG9ycygpXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VEYXRhVHlwZShrZXkpIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybVN0YXR1cyhrZXkpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk51bWJlcjpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkZpbGU6XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuSW1hZ2U6XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aXBsZVNlbGVjdDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlJhZGlvQnV0dG9uOlxyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG4gIGNoYW5nZUZvcm1TdGF0dXModmFsdWUpIHtcclxuICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZWRpdE1vZGFsID0gKGlkLHN1cnZleUF1ZGllbmNlVHlwZUlELGlzVmlld09ubHk9ZmFsc2UpID0+IHtcclxuICAgIHRoaXMuaXNWaWV3T25seT1pc1ZpZXdPbmx5O1xyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gW107XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGxcclxuICAgIHRoaXMucXVlc3Rpb25JRCA9IGlkO1xyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2UuZ2V0KGlkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gcmVzIGFzIGFueTtcclxuICAgICAgdGhpcy5xdWVzdGlvbiA9IHJlc3VsdC5xdWVzdGlvbjtcclxuICAgICAgdGhpcy5RdWVzdGlvbnM9cmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgdGhpcy5zdXJ2ZXlJRCA9IHRoaXMucXVlc3Rpb24uc3VydmV5SUQ7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2VUeXBlSUQgPSB0aGlzLnF1ZXN0aW9uLmF1ZGllbmNlSXRlbUlEO1xyXG4gICAgICB0aGlzLnN1cnZleUF1ZGllbmNlVHlwZUlEID0gc3VydmV5QXVkaWVuY2VUeXBlSUQ7XHJcbiAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5lZGl0TW9kZWxGb3JtO1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRNb2RlbDtcclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRGdW5jdGlvbjtcclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25TdWNjZXNzRWRpdEhhbmRsZXI7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IHRleHQgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICB0ZXh0LkFyYWJpYyA9IHRoaXMucXVlc3Rpb24udGV4dC5hcmFiaWM7XHJcbiAgICAgIHRleHQuRW5nbGlzaCA9IHRoaXMucXVlc3Rpb24udGV4dC5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uTmFtZSA9IFwiVGV4dFwiO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiUXVlc3Rpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlF1ZXN0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5NYXhMZW5ndGggPSA0MDAwO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLlZhbHVlID0gdGV4dDtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uTmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1MDtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uUm93cyA9IDI7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJRdWVzdGlvbkRlc2NyaXB0aW9uSGludEFyYWJpY1wiKTtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uRW5nbGlzaExhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJRdWVzdGlvbkRlc2NyaXB0aW9uSGludEVuZ2xpc2hcIik7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBkZXNjcmlwdGlvbi5BcmFiaWMgPSB0aGlzLnF1ZXN0aW9uLmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgZGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMucXVlc3Rpb24uZGVzY3JpcHRpb24uZW5nbGlzaDtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uVmFsdWUgPSBkZXNjcmlwdGlvbjtcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5OYW1lID0gXCJRdWVzdGlvblR5cGVJdGVtSURcIjtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLkxhYmVsS2V5ID0gXCJQcm9wZXJ0eVR5cGVcIjtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuRGF0YVNvdXJjZSA9IHJlc3VsdC5vcHRpb25UeXBlc1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUl0ZW1JRDtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLk5vdEZvdW5kVGV4dCA9IHRoaXMubChcIk5vUmVzdWx0Rm91bmRcIik7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5Jc0Rpc2FibGVkID0gdHJ1ZTtcclxuXHJcblxyXG5cclxuICAgICAgdGhpcy5hdWRpZW5jZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hdWRpZW5jZS5OYW1lID0gXCJBdWRpZW5jZUl0ZW1JRFwiXHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxLZXkgPSBcIkF1ZGllbmNlXCJcclxuICAgICAgdGhpcy5hdWRpZW5jZS5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLmF1ZGllbmNlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLmF1ZGllbmNlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWVcclxuICAgICAgdGhpcy5hdWRpZW5jZS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICB0aGlzLmF1ZGllbmNlLkRhdGFTb3VyY2UgPSByZXN1bHQuYXVkaWVuY2VzXHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuU2VsZWN0ZWRJdGVtcyA9IHRoaXMucXVlc3Rpb24uYXVkaWVuY2VJdGVtSUQ7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIkF1ZGllbmNlRGVzY3JpcHRpb25IaW50XCIpO1xyXG4gICAgICB0aGlzLmF1ZGllbmNlLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRTaXplID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLk5hbWUgPSBcIlNpemVcIjtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5MYWJlbEtleSA9IFwiU2l6ZVwiO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5EYXRhU291cmNlID0gdGhpcy5TaXplTGlzdDtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMuc2l6ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoXCJOb1Jlc3VsdEZvdW5kXCIpO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLk5hbWUgPSBcIklzUmVxdWlyZWRcIjtcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuTGFiZWxLZXkgPSBcIklzUmVxdWlyZWRcIjtcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzUmVxdWlyZWQ7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJSZXF1aXJlZERlc2NyaXB0aW9uSGludFwiKTtcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZS5OYW1lID0gXCJJc0FsbG93U2NvcmluZ1wiO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLkxhYmVsS2V5ID0gXCJBbGxvd1Njb3JlXCI7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzQWxsb3dTY29yaW5nO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJBbGxvd1Njb3JlRGVzY3JpcHRpb25cIik7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIkFsbG93U2NvcmVEZXNjcmlwdGlvblwiKTtcclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdEhhc1NlYXJjaCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0SGFzU2VhcmNoLk5hbWUgPSBcIkhhc1NlYXJjaFwiO1xyXG4gICAgICB0aGlzLmVkaXRIYXNTZWFyY2guTGFiZWxLZXkgPSBcIkhhc1NlYXJjaFwiO1xyXG4gICAgICB0aGlzLmVkaXRIYXNTZWFyY2guSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRJc0FjdGl2ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuTmFtZSA9IFwiSXNWaXNpYmxlXCI7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLkxhYmVsS2V5ID0gXCJWaXNpYmxlXCI7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLlZhbHVlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzVmlzaWJsZTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIlZpc2libGVEZXNjcmlwdGlvbkhpbnRcIik7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuTmFtZSA9IFwiRGlzcGxheU9yZGVyXCI7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5MYWJlbEtleSA9IFwiRGlzcGxheU9yZGVyXCI7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmRpc3BsYXlPcmRlcjtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSA9IFwiTWF4TGVuZ3RoXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5MYWJlbEtleSA9IFwiTWF4TGVuZ3RoXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gNDAwMDtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lID0gXCJNaW5MZW5ndGhcIjtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLkxhYmVsS2V5ID0gXCJNaW5MZW5ndGhcIjtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5WYWx1ZSA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5taW5MZW5ndGg7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5OYW1lID0gXCJSb3dzXCI7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuTGFiZWxLZXkgPSBcIlJvd3NcIjtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLk51bWJlclJhbmdlLlRvID0gMjA7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMucm93cztcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUgPSBcIk1heEZpbGVTaXplSW5NQlwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5MYWJlbEtleSA9IFwiTWF4RmlsZVNpemVJbk1CXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5WYWx1ZSA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSA9IFwiTWF4RmlsZUNvdW50XCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5MYWJlbEtleSA9IFwiTWF4RmlsZXNDb3VudFwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZS5UbyA9IDUwO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5WYWx1ZSA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5tYXhGaWxlQ291bnQ7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5DdXN0b21WYWxpZGF0aW9uID0gW3RoaXMubnVtYmVyVmFsaWRhdGlvbl07XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIGxldCBGaWxlc0V4dGVuc2lvblJlc3VsdCA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5hbGxvd2VkRXh0ZW5zaW9ucyBhcyBzdHJpbmdbXVxyXG4gICAgICBsZXQgRmlsZXNFeHRlbnNpb25zID0gRmlsZXNFeHRlbnNpb25SZXN1bHQgPyByZXN1bHQuZXh0ZW5zaW9ucy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIEZpbGVzRXh0ZW5zaW9uUmVzdWx0LmluY2x1ZGVzKGl0ZW0ua2V5KSB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KSA6IFtdO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lID0gXCJBbGxvd2VkRXh0ZW5zaW9uc1wiO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTGFiZWxLZXkgPSBcIkV4dGVuc2lvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuRGF0YVNvdXJjZSA9IHJlc3VsdC5leHRlbnNpb25zO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5TZWxlY3RlZEl0ZW1zID0gRmlsZXNFeHRlbnNpb25zO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTm90Rm91bmRUZXh0ID0gdGhpcy5sKFwiTm9SZXN1bHRGb3VuZFwiKTtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIC8vIHRoaXMuZWRpdE1vZGVsRm9ybS5hZGRWYWxpZGF0b3JzKHRoaXMuZnJvbVRvKFwiTWluTGVuZ3RoXCIsIFwiTWF4TGVuZ3RoXCIpKTtcclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRGF0YVR5cGUodGhpcy5xdWVzdGlvbi5xdWVzdGlvblR5cGVJdGVtSUQpO1xyXG4gICAgICB0aGlzLmNoYW5nZVNjb3JpbmcodGhpcy5xdWVzdGlvbi5pc0FsbG93U2NvcmluZyk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25JZCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25JZC5OYW1lID0gXCJJZFwiXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbklkLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uSWQuVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcblxyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uTmFtZSA9IFwiTmFtZU9wdGlvblwiO1xyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5NYXhMZW5ndGggPSAyMjU7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG5cclxuICAgICAgdGhpcy5zY29yZU51bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyLk5hbWUgPSBcIlNjb3JlXCI7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTGFiZWxLZXkgPSBcIlNjb3JlXCI7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIGxldCByYW5nZU51bWJlciA9IG5ldyBSYW5nZU51bWJlcigpXHJcbiAgICAgIHJhbmdlTnVtYmVyLlRvID0gMTAwMDAwMFxyXG4gICAgICByYW5nZU51bWJlci5Gcm9tID0gLTEwMDAwMDBcclxuICAgICAgdGhpcy5zY29yZU51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uLk5hbWUgPSBcIkRpc3BsYXlPcmRlclwiO1xyXG5cclxuICAgICAgdGhpcy5pZE9wdGlvbiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmlkT3B0aW9uLk5hbWUgPSBcIklkT3B0aW9uXCI7XHJcblxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5OYW1lID0gXCJMaW5rZWRRdWVzdGlvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsS2V5ID0gXCJMaW5rZWRRdWVzdGlvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQucXVlc3Rpb25zO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoXCJOb1Jlc3VsdEZvdW5kXCIpO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIkxpbmtlZFF1ZXN0aW9uRGVzY3JpcHRpb25IaW50XCIpO1xyXG5cclxuXHJcbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLnF1ZXN0aW9uT3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMucXVlc3Rpb24ucXVlc3Rpb25PcHRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMucXVlc3Rpb24ucXVlc3Rpb25PcHRpb25zW2luZGV4XTtcclxuICAgICAgICAgIHRoaXMub3B0aW9uTGlzdC5wdXNoKG5ldyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTyhlbGVtZW50KSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub3Blbk1vZGFsKHRoaXMuRWRpdE1vZGFsLCAneGwnKTtcclxuICAgICAgdGhpcy5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEVkaXRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE9wdGlvbk1vZGVsID0gdGhpcy5lZGl0T3B0aW9uRm9ybS52YWx1ZTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdE1vZGVsRm9ybS52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgIGlmICgocmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5BcmFiaWMgIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9IFwiXCIpIHx8IChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaCAhPSBcIlwiKSB8fCAocmVzdWx0T3B0aW9uTW9kZWwuU2NvcmUgIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlID4gMCkpIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubChcIk9wdGlvblBlbmRpbmdEYXRhRXJyb3JNZXNzYWdlXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPT0gMCAmJiB0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoXCJPcHRpb25FcnJvck1lc3NhZ2VcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICBsZXQgZWRpdE1vZGVsOiBTdXJ2ZXlRdWVzdGlvbkRUTyA9IG5ldyBTdXJ2ZXlRdWVzdGlvbkRUTygpO1xyXG4gICAgZWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLnF1ZXN0aW9uSURcclxuICAgIGVkaXRNb2RlbC5TdXJ2ZXlJRCA9IHRoaXMuc3VydmV5SURcclxuICAgIC8vIGVkaXRNb2RlbC5EaXNwbGF5T3JkZXIgPSByZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXI7XHJcbiAgICBlZGl0TW9kZWwuVGV4dC5BcmFiaWMgPSByZXN1bHRNb2RlbC5UZXh0LkFyYWJpYztcclxuICAgIGVkaXRNb2RlbC5UZXh0LkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5UZXh0LkVuZ2xpc2g7XHJcbiAgICBlZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgZWRpdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uRW5nbGlzaCA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBpZiAodGhpcy5zdXJ2ZXlBdWRpZW5jZVR5cGVJRCA9PSBBdWRpZW5jZVR5cGUuQm90aClcclxuICAgICAgZWRpdE1vZGVsLkF1ZGllbmNlSXRlbUlEID0gcmVzdWx0TW9kZWwuQXVkaWVuY2VJdGVtSUQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIGVkaXRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHRoaXMuYXVkaWVuY2VUeXBlSUQ7XHJcbiAgICBlZGl0TW9kZWwuUXVlc3Rpb25UeXBlSXRlbUlEID0gdGhpcy5xdWVzdGlvbi5xdWVzdGlvblR5cGVJdGVtSUQ7XHJcbiAgICBlZGl0TW9kZWwuSXNBbGxvd1Njb3JpbmcgPSByZXN1bHRNb2RlbC5Jc0FsbG93U2NvcmluZztcclxuICAgIGVkaXRNb2RlbC5PcHRpb25zLlNpemUgPSByZXN1bHRNb2RlbC5TaXplO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBlZGl0TW9kZWwuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBlZGl0TW9kZWwuSXNWaXNpYmxlID0gcmVzdWx0TW9kZWwuSXNWaXNpYmxlO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuSGFzU2VhcmNoID0gcmVzdWx0TW9kZWwuSGFzU2VhcmNoO1xyXG5cclxuICAgIGlmICh0aGlzLmlzVGV4dCB8fCB0aGlzLmlzTnVtYmVyKSB7XHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLk1pbkxlbmd0aCA9IHJlc3VsdE1vZGVsLk1pbkxlbmd0aDtcclxuICAgICAgZWRpdE1vZGVsLk9wdGlvbnMuTWF4TGVuZ3RoID0gcmVzdWx0TW9kZWwuTWF4TGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRmlsZSB8fCB0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNJbWFnZSlcclxuICAgICAgZWRpdE1vZGVsLk9wdGlvbnMuTWF4RmlsZVNpemVJbk1CID0gcmVzdWx0TW9kZWwuTWF4RmlsZVNpemVJbk1CO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlKVxyXG4gICAgICBlZGl0TW9kZWwuT3B0aW9ucy5NYXhGaWxlQ291bnQgPSByZXN1bHRNb2RlbC5NYXhGaWxlQ291bnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGUgfHwgdGhpcy5pc0ZpbGUpXHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLkFsbG93ZWRFeHRlbnNpb25zID0gcmVzdWx0TW9kZWwuQWxsb3dlZEV4dGVuc2lvbnM7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLkRpc3BsYXlPcmRlciA9IGluZGV4ICsgMTtcclxuICAgICAgICBlZGl0TW9kZWwuUXVlc3Rpb25PcHRpb25zID0gdGhpcy5vcHRpb25MaXN0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcbiAgZ2V0RWRpdEZ1bmN0aW9uID0gKGVkaXRNb2RhbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZXJyb3JNZXNzYWdlKVxyXG4gICAgICByZXR1cm4gdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2UuZWRpdChlZGl0TW9kYWwpO1xyXG4gIH1cclxuICBnZXRMaW5rZWRRdWVzdGlvbnMob3B0aW9uOlN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKVxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLlF1ZXN0aW9ucy5maWx0ZXIoaXRlbT0+b3B0aW9uLkxpbmtlZFF1ZXN0aW9ucy5pbmNsdWRlcyhpdGVtLmtleSkpLm1hcChpdGVtPT5pdGVtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFkZE9wdGlvbigpIHtcclxuICAgIHRoaXMudG90YWxTY29yZSA9IDA7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmICh0aGlzLmVkaXRPcHRpb25Gb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmVkaXRPcHRpb25Gb3JtLnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID49IDEgJiYgdGhpcy5zaG93U2NvcmVPcHRpb24pIHtcclxuXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLlNjb3JlO1xyXG4gICAgICAgIGlmIChlbGVtZW50ID4gMTAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoXCJNYXhPcHRpb25TY29yZUVycm9yTWVzc2FnZVwiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPCAtMTAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoXCJNaW5PcHRpb25TY29yZUVycm9yTWVzc2FnZVwiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsXHJcbiAgICBsZXQgb3B0aW9uID0gbmV3IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKCk7XHJcbiAgICBvcHRpb24uTmFtZS5BcmFiaWMgPSByZXN1bHRNb2RlbC5OYW1lT3B0aW9uLkFyYWJpY1xyXG4gICAgb3B0aW9uLk5hbWUuRW5nbGlzaCA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaFxyXG4gICAgb3B0aW9uLklEX0dVSUQ9cmVzdWx0TW9kZWwuSWRPcHRpb25cclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcilcclxuICAgICAgb3B0aW9uLkRpc3BsYXlPcmRlciA9IHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcjtcclxuICAgIGVsc2VcclxuICAgICAgb3B0aW9uLkRpc3BsYXlPcmRlciA9IHRoaXMub3B0aW9uTGlzdC5sZW5ndGggKyAxO1xyXG5cclxuICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnMgPSByZXN1bHRNb2RlbC5MaW5rZWRRdWVzdGlvbnM7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIG9wdGlvbi5TY29yZSA9IE51bWJlci5wYXJzZUZsb2F0KHJlc3VsdE1vZGVsLlNjb3JlKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJOYW1lT3B0aW9uXCJdLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiSWRPcHRpb25cIl0ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJEaXNwbGF5T3JkZXJcIl0ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJMaW5rZWRRdWVzdGlvbnNcIl0ucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbilcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIlNjb3JlXCJdLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMub3B0aW9uTGlzdC5zcGxpY2Uob3B0aW9uLkRpc3BsYXlPcmRlci0xLCAwLG9wdGlvbik7XHJcbiAgICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBkZWxldGVPcHRpb24ob3B0aW9uKSB7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPSBvcHRpb24pXHJcbiAgICB0aGlzLmlzRWRpdEZvcm1DaGFuZ2UgPSB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGVkaXRPcHRpb24ob3B0aW9uOiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTykge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAoKHRoaXMuZWRpdE9wdGlvbkZvcm0udG91Y2hlZCA9PSB0cnVlICYmIHRoaXMuZWRpdE9wdGlvbkZvcm0udmFsaWQpIHx8IHRoaXMuZWRpdE9wdGlvbkZvcm0udG91Y2hlZCA9PSBmYWxzZSlcclxuICAgICAgdGhpcy5hZGRPcHRpb24oKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBuYW1lLkFyYWJpYyA9IG9wdGlvbi5OYW1lLkFyYWJpYyA/PyBudWxsO1xyXG4gICAgbmFtZS5FbmdsaXNoID0gb3B0aW9uLk5hbWUuRW5nbGlzaCA/PyBudWxsO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIk5hbWVPcHRpb25cIl0uc2V0VmFsdWUobmFtZSk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiSWRPcHRpb25cIl0uc2V0VmFsdWUob3B0aW9uLklEX0dVSUQpO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIkRpc3BsYXlPcmRlclwiXS5zZXRWYWx1ZShvcHRpb24uRGlzcGxheU9yZGVyKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJMaW5rZWRRdWVzdGlvbnNcIl0uc2V0VmFsdWUob3B0aW9uLkxpbmtlZFF1ZXN0aW9ucyk7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJTY29yZVwiXS5zZXRWYWx1ZShvcHRpb24uU2NvcmUpO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gdGhpcy5vcHRpb25MaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0gIT0gb3B0aW9uKVxyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlPSB0cnVlO1xyXG4gIH1cclxuICBmcm9tVG8oZnJvbUZpZWxkOiBzdHJpbmcsIHRvRmllbGQ6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBmcm9tRGF0ZSA9IGZvcm1Hcm91cC5nZXQoZnJvbUZpZWxkKTtcclxuICAgICAgY29uc3QgdG9EYXRlID0gZm9ybUdyb3VwLmdldCh0b0ZpZWxkKTtcclxuICAgICAgaWYgKChmcm9tRGF0ZSAhPT0gbnVsbCAmJiB0b0RhdGUgIT09IG51bGwpKSB7XHJcbiAgICAgICAgaWYgKChmcm9tRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJiB0b0RhdGUudmFsdWUgIT09IG51bGwpICYmIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA+IHBhcnNlSW50KHRvRGF0ZS52YWx1ZSkpIHtcclxuICAgICAgICAgIGZyb21EYXRlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgIHRvRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUuc2V0RXJyb3JzKHsgXCJlcnJvck1hc3NhZ2VcIjogdGhpcy5sKFwiR3JlYXRlclRoYW5PckVxdWFsVG9cIikgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdG9EYXRlLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgdXBkYXRlRm9ybVN0YXR1cyhrZXk6IGFueSkge1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWF4TGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNaW5MZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlU2l6ZSlcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZUNvdW50KVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLCB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuSW1hZ2U6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgLy9kcmFnIGFuZCBkcm9wXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5vcHRpb25MaXN0LCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdO1xyXG4gICAgICBlbGVtZW50LkRpc3BsYXlPcmRlcj1pbmRleCsxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlPSB0cnVlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNFZGl0TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgKm5nSWY9XCIhaXNWaWV3T25seVwiPlxyXG4gICAgICB7e2woXCJFZGl0X1F1ZXN0aW9uXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiICpuZ0lmPVwiaXNWaWV3T25seVwiPlxyXG4gICAgICB7e2woXCJEZXRhaWxzXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgc3ZnLWljb24taG92ZXItYnJhbmRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9tb2RhbGNsb3NlLnN2ZydcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJlZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9uc1wiIChPbkNoYW5nZSk9XCJjaGFuZ2VGb3JtU3RhdHVzKCRldmVudClcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFF1ZXN0aW9uXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cImVkaXREZXNjcmlwdGlvblwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cInN1cnZleUF1ZGllbmNlVHlwZUlEPT1hdWRpZW5jZVR5cGUuQm90aFwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhdWRpZW5jZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJlZGl0UXVlc3Rpb25UeXBlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlRGF0YVR5cGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdFNpemVcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzU2VsZWN0XCIgPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXRBbGxvd1Njb3JlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlU2NvcmluZygkZXZlbnQpXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdElzQWN0aXZlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJlZGl0UmVxdWlyZWRcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0TWluTGVuZ3RoXCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE1heExlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE1heEZpbGVTaXplXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlfHxpc0ltYWdlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRNYXhGaWxlQ291bnRcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJlZGl0RmlsZXNFeHRlbnNpb25zXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdERpc3BsYXlPcmRlclwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNTZWxlY3RcIiBjbGFzcz1cInF1ZXN0aW9uLXR5cGUtb3B0aW9uXCI+XHJcbiAgICAgICAgICAgIDxoNT57e2woJ09wdGlvbnMnKX19PC9oNT5cclxuICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtbGlzdGluZ1wiICpuZ0Zvcj1cImxldCBPcHRpb24gb2Ygb3B0aW9uTGlzdDtcIiBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGZzLTYgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tnZXRDdXJyZW50RmFpbE92ZXIoT3B0aW9uLk5hbWUpfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1kYXJrIG1lLTRcIiAqbmdJZj1cInNob3dTY29yZU9wdGlvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ1Njb3JlJyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tPcHRpb24uU2NvcmV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1icmFuZCBjdXJzb3ItcG9pbnRlciBtZS00XCIgKm5nSWY9XCJPcHRpb24uTGlua2VkUXVlc3Rpb25zPy5sZW5ndGg+MFwiIG5nYlRvb2x0aXA9XCJ7e2dldExpbmtlZFF1ZXN0aW9ucyhPcHRpb24pfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWJyYW5kIGN1cnNvci1wb2ludGVyIG1lLTRcIiAoY2xpY2spPVwiZWRpdE9wdGlvbihPcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdFZGl0Jyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL0VkaXQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdEZWxldGUnKX19XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlT3B0aW9uKE9wdGlvbilcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWFsZXJ0LWRhbmdlciBhbGVydC1kYW5nZXJcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLWRhbmdlciBtZS00XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+PGRpdiBjbGFzcz1cImZzLTcgdGV4dC1kYW5nZXJcIj57e2Vycm9yTWVzc2FnZX19PC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0ZXItYmdcIiAqbmdJZj1cIiFpc1ZpZXdPbmx5XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBoaWRkZW49XCJ0cnVlXCIgW29wdGlvbnNdPVwiZWRpdE9wdGlvbklkXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE5hbWVPcHRpb25cIiBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9uc1wiIFtncm91cF09XCJlZGl0T3B0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImRpc3BsYXlPcmRlck9wdGlvblwiIFtncm91cF09XCJlZGl0T3B0aW9uRm9ybVwiIGhpZGRlbj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJpZE9wdGlvblwiIFtncm91cF09XCJlZGl0T3B0aW9uRm9ybVwiIGhpZGRlbj48L0JCU0YtVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwic2hvd1Njb3JlT3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2NvcmVOdW1iZXJcIiBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWRkT3B0aW9uKClcIiAqbmdJZj1cIiFpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiQWRkXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWRkT3B0aW9uKClcIiAqbmdJZj1cImlzT3B0aW9uSW5FZGl0TW9kZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmQgdy0xMDBcIj57e2woXCJFZGl0XCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBwYi0wIG0tMFwiID5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAge3tsKFwiQ2FuY2VsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gYXBwUHJldmVudERvdWJsZUNsaWNrIHR5cGU9XCJzdWJtaXRcIiAgW2Rpc2FibGVkXT1cIiFpc0VkaXRGb3JtQ2hhbmdlXCIgICAqbmdJZj1cIiFpc1ZpZXdPbmx5XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZFwiPnt7bChcIlNhdmVcIil9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
687
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1xdWVzdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3NoYXJlZC9jb21wb25lbnRzL3N1cnZleS9zdXJ2ZXktaW5mby9lZGl0LXF1ZXN0aW9uL2VkaXQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFNBQVMsRUFFVCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGdCQUFnQixFQUVoQixXQUFXLEVBQ1gsU0FBUyxFQUNULDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIsV0FBVyxFQUNYLGNBQWMsRUFDZCxrQkFBa0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7O0FBT2pHLE1BQU0sT0FBTyxx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O21JQThCNEMsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWdDaEMsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIEFwcEJhc2VDb21wb25lbnQsXHJcbiAgQ29udHJvbExheW91dCxcclxuICBDdXN0b21WYWxpZGF0aW9uLFxyXG4gIERyb3Bkb3duT3B0aW9ucyxcclxuICBFbmdsaXNoQXJhYmljRFRPLFxyXG4gIEZvcmNlRGlyZWN0aW9uLFxyXG4gIEZvcm1PcHRpb25zLFxyXG4gIElucHV0VHlwZSxcclxuICBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsXHJcbiAgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsXHJcbiAgUmFuZ2VOdW1iZXIsXHJcbiAgVGV4dEJveE9wdGlvbnMsXHJcbiAgVG9nZ2xlU2xpZGVPcHRpb25zLFxyXG59IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdWRpZW5jZVR5cGUsIFN1cnZleU9wdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRFRPIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktcXVlc3Rpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uLW9wdGlvbic7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS1xdWVzdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWVkaXQtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHF1ZXN0aW9uVHlwZTogU3VydmV5T3B0aW9uVHlwZTtcclxuICBpc051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTXVsdGlGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2l6ZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGVkaXRNb2RlbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBlZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gIGVkaXRRdWVzdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgZWRpdFF1ZXN0aW9uVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGF1ZGllbmNlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdFJlcXVpcmVkOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdEFsbG93U2NvcmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBlZGl0SGFzU2VhcmNoOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdElzQWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdE1pbkxlbmd0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdE1heExlbmd0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdFJvd3NOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRNYXhGaWxlU2l6ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdE1heEZpbGVDb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdEZpbGVzRXh0ZW5zaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGVkaXRTaXplOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgaXNFZGl0Rm9ybUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG51bWJlclZhbGlkYXRpb246IEN1c3RvbVZhbGlkYXRpb24gPSBuZXcgQ3VzdG9tVmFsaWRhdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ0VkaXRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBFZGl0TW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGVkaXRPcHRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdE5hbWVPcHRpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHNjb3JlTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBvcHRpb25MaXN0OiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUT1tdID0gW107XHJcbiAgZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIHNob3dTY29yZU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBudWxsO1xyXG4gIHRvdGFsU2NvcmU6IG51bWJlciA9IDA7XHJcbiAgbWFpbkZvcm1Db250cm9sczogYW55W107XHJcbiAgc3VydmV5SUQ6IHN0cmluZztcclxuICBlZGl0T3B0aW9uSWQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIHF1ZXN0aW9uSUQ6IGFueTtcclxuICBxdWVzdGlvbjogYW55O1xyXG4gIGVkaXREaXNwbGF5T3JkZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIHB1YmxpYyBhdWRpZW5jZVR5cGUgPSBBdWRpZW5jZVR5cGU7XHJcbiAgYXVkaWVuY2VUeXBlSUQ6IGFueTtcclxuICBzdXJ2ZXlBdWRpZW5jZVR5cGVJRDogYW55O1xyXG4gIGRpc3BsYXlPcmRlck9wdGlvbjogVGV4dEJveE9wdGlvbnM7XHJcbiAgaXNPcHRpb25JbkVkaXRNb2RlOiBib29sZWFuO1xyXG4gIFF1ZXN0aW9uczogYW55W107XHJcbiAgaXNWaWV3T25seTogYm9vbGVhbjtcclxuICBpZE9wdGlvbjogVGV4dEJveE9wdGlvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHBhZ2luZ0VsZW1lbnQ7XHJcbiAgQElucHV0KCkgb25TdWNjZXNzRWRpdEhhbmRsZXI7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEyOyBpbmRleCsrKSB7XHJcbiAgICAgIHZhciBpdGVtID0geyBrZXk6IGluZGV4ICsgMSwgdmFsdWU6IGAke2luZGV4ICsgMX1gIH07XHJcbiAgICAgIHRoaXMuU2l6ZUxpc3QucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkgPSAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0qJC8pKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLmwoJ0ludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWytdPyhbLl1cXGQrfFxcZCtbLl0/XFxkKikkLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubCgnUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTY29yaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNob3dTY29yZU9wdGlvbiA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10ucmVzZXQoKTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZUxlbmd0aFZhbGlkYXRvcihuYW1lLCBtYXgsIG1pbikge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW25hbWVdO1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICBsZXQgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgICAgIHZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluKG1pbikpO1xyXG4gICAgICB2YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heChtYXgpKTtcclxuICAgICAgdmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIGNvbnRyb2wuYWRkVmFsaWRhdG9ycyh2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZURhdGFUeXBlKGtleSkge1xyXG4gICAgdGhpcy51cGRhdGVGb3JtU3RhdHVzKGtleSk7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuVGV4dDpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSwgMjU1LCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSwgMjU1LCAxKTtcclxuICAgICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAyNTU7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUsIDQwMDAsIDEpO1xyXG4gICAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk51bWJlcjpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSwgMTAwLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSwgMTAwLCAxKTtcclxuICAgICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5GaWxlOlxyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkltYWdlOlxyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5SYWRpb0J1dHRvbjpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZUZvcm1TdGF0dXModmFsdWUpIHtcclxuICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZWRpdE1vZGFsID0gKGlkLCBzdXJ2ZXlBdWRpZW5jZVR5cGVJRCwgaXNWaWV3T25seSA9IGZhbHNlKSA9PiB7XHJcbiAgICB0aGlzLmlzVmlld09ubHkgPSBpc1ZpZXdPbmx5O1xyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gW107XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB0aGlzLnF1ZXN0aW9uSUQgPSBpZDtcclxuICAgIHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmdldChpZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdCA9IHJlcyBhcyBhbnk7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24gPSByZXN1bHQucXVlc3Rpb247XHJcbiAgICAgIHRoaXMuUXVlc3Rpb25zID0gcmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgdGhpcy5zdXJ2ZXlJRCA9IHRoaXMucXVlc3Rpb24uc3VydmV5SUQ7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2VUeXBlSUQgPSB0aGlzLnF1ZXN0aW9uLmF1ZGllbmNlSXRlbUlEO1xyXG4gICAgICB0aGlzLnN1cnZleUF1ZGllbmNlVHlwZUlEID0gc3VydmV5QXVkaWVuY2VUeXBlSUQ7XHJcbiAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5lZGl0TW9kZWxGb3JtO1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRNb2RlbDtcclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPVxyXG4gICAgICAgIHRoaXMuZ2V0RWRpdEZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID1cclxuICAgICAgICB0aGlzLm9uU3VjY2Vzc0VkaXRIYW5kbGVyO1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCB0ZXh0ID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgdGV4dC5BcmFiaWMgPSB0aGlzLnF1ZXN0aW9uLnRleHQuYXJhYmljO1xyXG4gICAgICB0ZXh0LkVuZ2xpc2ggPSB0aGlzLnF1ZXN0aW9uLnRleHQuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLk5hbWUgPSAnVGV4dCc7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLkFyYWJpY0xhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5BcmFiaWMnO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSAnUXVlc3Rpb25JbkVuZ2xpc2gnO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uTWF4TGVuZ3RoID0gNDAwMDtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5WYWx1ZSA9IHRleHQ7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLk5hbWUgPSAnRGVzY3JpcHRpb24nO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9ICdEZXNjcmlwdGlvbkluQXJhYmljJztcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gJ0Rlc2NyaXB0aW9uSW5FbmdsaXNoJztcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTA7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLlJvd3MgPSAyO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICdRdWVzdGlvbkRlc2NyaXB0aW9uSGludEFyYWJpYydcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uRW5nbGlzaExhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXHJcbiAgICAgICAgJ1F1ZXN0aW9uRGVzY3JpcHRpb25IaW50RW5nbGlzaCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIGRlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMucXVlc3Rpb24uZGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICBkZXNjcmlwdGlvbi5FbmdsaXNoID0gdGhpcy5xdWVzdGlvbi5kZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5WYWx1ZSA9IGRlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuTmFtZSA9ICdRdWVzdGlvblR5cGVJdGVtSUQnO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuTGFiZWxLZXkgPSAnUHJvcGVydHlUeXBlJztcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuRGF0YVNvdXJjZSA9IHJlc3VsdC5vcHRpb25UeXBlcztcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5xdWVzdGlvbi5xdWVzdGlvblR5cGVJdGVtSUQ7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLklzRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hdWRpZW5jZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hdWRpZW5jZS5OYW1lID0gJ0F1ZGllbmNlSXRlbUlEJztcclxuICAgICAgdGhpcy5hdWRpZW5jZS5MYWJlbEtleSA9ICdBdWRpZW5jZSc7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICB0aGlzLmF1ZGllbmNlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuU2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuRGF0YVNvdXJjZSA9IHJlc3VsdC5hdWRpZW5jZXM7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuU2VsZWN0ZWRJdGVtcyA9IHRoaXMucXVlc3Rpb24uYXVkaWVuY2VJdGVtSUQ7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQXVkaWVuY2VEZXNjcmlwdGlvbkhpbnQnKTtcclxuICAgICAgdGhpcy5hdWRpZW5jZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFNpemUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuTmFtZSA9ICdTaXplJztcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5MYWJlbEtleSA9ICdTaXplJztcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuRGF0YVNvdXJjZSA9IHRoaXMuU2l6ZUxpc3Q7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5xdWVzdGlvbi5vcHRpb25zLnNpemU7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRSZXF1aXJlZCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuTmFtZSA9ICdJc1JlcXVpcmVkJztcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuTGFiZWxLZXkgPSAnSXNSZXF1aXJlZCc7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5pc1JlcXVpcmVkO1xyXG4gICAgICB0aGlzLmVkaXRSZXF1aXJlZC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdSZXF1aXJlZERlc2NyaXB0aW9uSGludCcpO1xyXG4gICAgICB0aGlzLmVkaXRSZXF1aXJlZC5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuTmFtZSA9ICdJc0FsbG93U2NvcmluZyc7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuTGFiZWxLZXkgPSAnQWxsb3dTY29yZSc7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzQWxsb3dTY29yaW5nO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ0FsbG93U2NvcmVEZXNjcmlwdGlvbicpO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ0FsbG93U2NvcmVEZXNjcmlwdGlvbicpO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0SGFzU2VhcmNoID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRIYXNTZWFyY2guTmFtZSA9ICdIYXNTZWFyY2gnO1xyXG4gICAgICB0aGlzLmVkaXRIYXNTZWFyY2guTGFiZWxLZXkgPSAnSGFzU2VhcmNoJztcclxuICAgICAgdGhpcy5lZGl0SGFzU2VhcmNoLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLk5hbWUgPSAnSXNWaXNpYmxlJztcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuTGFiZWxLZXkgPSAnVmlzaWJsZSc7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLlZhbHVlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzVmlzaWJsZTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnVmlzaWJsZURlc2NyaXB0aW9uSGludCcpO1xyXG4gICAgICB0aGlzLmVkaXRJc0FjdGl2ZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuTmFtZSA9IFwiRGlzcGxheU9yZGVyXCI7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5MYWJlbEtleSA9IFwiRGlzcGxheU9yZGVyXCI7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmRpc3BsYXlPcmRlcjtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSA9ICdNYXhMZW5ndGgnO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTGFiZWxLZXkgPSAnTWF4TGVuZ3RoJztcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ01heEhpbnQnKTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSA9ICdNaW5MZW5ndGgnO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTGFiZWxLZXkgPSAnTWluTGVuZ3RoJztcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMubWluTGVuZ3RoO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ01pbkhpbnQnKTtcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuTmFtZSA9ICdSb3dzJztcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5MYWJlbEtleSA9ICdSb3dzJztcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLk51bWJlclJhbmdlLlRvID0gMjA7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMucm93cztcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUgPSAnTWF4RmlsZVNpemVJbk1CJztcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuTGFiZWxLZXkgPSAnTWF4RmlsZVNpemVJbk1CJztcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZS5UbyA9IDEwMDtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5vcHRpb25zLm1heEZpbGVTaXplSW5NQjtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUgPSAnTWF4RmlsZUNvdW50JztcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50LkxhYmVsS2V5ID0gJ01heEZpbGVzQ291bnQnO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZS5UbyA9IDUwO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ01heEZpbGVDb3VudEhpbnQnKTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50LlZhbHVlID0gdGhpcy5xdWVzdGlvbi5vcHRpb25zLm1heEZpbGVDb3VudDtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50LkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50LklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgbGV0IEZpbGVzRXh0ZW5zaW9uUmVzdWx0ID0gdGhpcy5xdWVzdGlvbi5vcHRpb25zXHJcbiAgICAgICAgLmFsbG93ZWRFeHRlbnNpb25zIGFzIHN0cmluZ1tdO1xyXG4gICAgICBsZXQgRmlsZXNFeHRlbnNpb25zID0gRmlsZXNFeHRlbnNpb25SZXN1bHRcclxuICAgICAgICA/IHJlc3VsdC5leHRlbnNpb25zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gRmlsZXNFeHRlbnNpb25SZXN1bHQuaW5jbHVkZXMoaXRlbS5rZXkpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLmtleSlcclxuICAgICAgICA6IFtdO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lID0gJ0FsbG93ZWRFeHRlbnNpb25zJztcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLkxhYmVsS2V5ID0gJ0V4dGVuc2lvbnMnO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5EYXRhU291cmNlID0gcmVzdWx0LmV4dGVuc2lvbnM7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLlNlbGVjdGVkSXRlbXMgPSBGaWxlc0V4dGVuc2lvbnM7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ0V4dGVuc2lvbkhpbnQnKTtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5vdEZvdW5kVGV4dCA9IHRoaXMubCgnTm9SZXN1bHRGb3VuZCcpO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRNb2RlbEZvcm0uYWRkVmFsaWRhdG9ycyh0aGlzLmZyb21UbyhcIk1pbkxlbmd0aFwiLCBcIk1heExlbmd0aFwiKSk7XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURhdGFUeXBlKHRoaXMucXVlc3Rpb24ucXVlc3Rpb25UeXBlSXRlbUlEKTtcclxuICAgICAgdGhpcy5jaGFuZ2VTY29yaW5nKHRoaXMucXVlc3Rpb24uaXNBbGxvd1Njb3JpbmcpO1xyXG5cclxuICAgICAgdGhpcy5lZGl0T3B0aW9uSWQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uSWQuTmFtZSA9ICdJZCc7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbklkLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbklkLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5OYW1lID0gJ05hbWVPcHRpb24nO1xyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uLkFyYWJpY0xhYmVsS2V5ID0gJ05hbWVJbkFyYWJpYyc7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gJ05hbWVJbkVuZ2xpc2gnO1xyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uLk1heExlbmd0aCA9IDIyNTtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcblxyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTmFtZSA9ICdTY29yZSc7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTGFiZWxLZXkgPSAnU2NvcmUnO1xyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICBsZXQgcmFuZ2VOdW1iZXIgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgcmFuZ2VOdW1iZXIuVG8gPSAxMDAwMDAwO1xyXG4gICAgICByYW5nZU51bWJlci5Gcm9tID0gMTtcclxuICAgICAgdGhpcy5zY29yZU51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG5cclxuICAgICAgdGhpcy5kaXNwbGF5T3JkZXJPcHRpb24gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5kaXNwbGF5T3JkZXJPcHRpb24uTmFtZSA9ICdEaXNwbGF5T3JkZXInO1xyXG5cclxuICAgICAgdGhpcy5pZE9wdGlvbiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmlkT3B0aW9uLk5hbWUgPSAnSWRPcHRpb24nO1xyXG5cclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTmFtZSA9ICdMaW5rZWRRdWVzdGlvbnMnO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTGFiZWxLZXkgPSAnTGlua2VkUXVlc3Rpb25zJztcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQucXVlc3Rpb25zO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXHJcbiAgICAgICAgJ0xpbmtlZFF1ZXN0aW9uRGVzY3JpcHRpb25IaW50J1xyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRoaXMucXVlc3Rpb24ucXVlc3Rpb25PcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKFxyXG4gICAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICAgIGluZGV4IDwgdGhpcy5xdWVzdGlvbi5xdWVzdGlvbk9wdGlvbnMubGVuZ3RoO1xyXG4gICAgICAgICAgaW5kZXgrK1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMucXVlc3Rpb24ucXVlc3Rpb25PcHRpb25zW2luZGV4XTtcclxuICAgICAgICAgIHRoaXMub3B0aW9uTGlzdC5wdXNoKG5ldyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTyhlbGVtZW50KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9wZW5Nb2RhbCh0aGlzLkVkaXRNb2RhbCwgJ3hsJyk7XHJcbiAgICAgIHRoaXMuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH07XHJcbiAgZ2V0RWRpdE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgcmVzdWx0T3B0aW9uTW9kZWwgPSB0aGlzLmVkaXRPcHRpb25Gb3JtLnZhbHVlO1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5lZGl0TW9kZWxGb3JtLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkFyYWJpYyAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9ICcnKSB8fFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICByZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gJycpIHx8XHJcbiAgICAgICAgKHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlICE9IHVuZGVmaW5lZCAmJiByZXN1bHRPcHRpb25Nb2RlbC5TY29yZSA+IDApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdPcHRpb25QZW5kaW5nRGF0YUVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPT0gMCAmJiB0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ09wdGlvbkVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgbGV0IGVkaXRNb2RlbDogU3VydmV5UXVlc3Rpb25EVE8gPSBuZXcgU3VydmV5UXVlc3Rpb25EVE8oKTtcclxuICAgIGVkaXRNb2RlbC5JRF9HVUlEID0gdGhpcy5xdWVzdGlvbklEO1xyXG4gICAgZWRpdE1vZGVsLlN1cnZleUlEID0gdGhpcy5zdXJ2ZXlJRDtcclxuICAgIC8vIGVkaXRNb2RlbC5EaXNwbGF5T3JkZXIgPSByZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXI7XHJcbiAgICBlZGl0TW9kZWwuVGV4dC5BcmFiaWMgPSByZXN1bHRNb2RlbC5UZXh0LkFyYWJpYztcclxuICAgIGVkaXRNb2RlbC5UZXh0LkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5UZXh0LkVuZ2xpc2g7XHJcbiAgICBlZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgZWRpdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uRW5nbGlzaCA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBpZiAodGhpcy5zdXJ2ZXlBdWRpZW5jZVR5cGVJRCA9PSBBdWRpZW5jZVR5cGUuQm90aClcclxuICAgICAgZWRpdE1vZGVsLkF1ZGllbmNlSXRlbUlEID0gcmVzdWx0TW9kZWwuQXVkaWVuY2VJdGVtSUQ7XHJcbiAgICBlbHNlIGVkaXRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHRoaXMuYXVkaWVuY2VUeXBlSUQ7XHJcbiAgICBlZGl0TW9kZWwuUXVlc3Rpb25UeXBlSXRlbUlEID0gdGhpcy5xdWVzdGlvbi5xdWVzdGlvblR5cGVJdGVtSUQ7XHJcbiAgICBlZGl0TW9kZWwuSXNBbGxvd1Njb3JpbmcgPSByZXN1bHRNb2RlbC5Jc0FsbG93U2NvcmluZztcclxuICAgIGVkaXRNb2RlbC5PcHRpb25zLlNpemUgPSByZXN1bHRNb2RlbC5TaXplO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBlZGl0TW9kZWwuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBlZGl0TW9kZWwuSXNWaXNpYmxlID0gcmVzdWx0TW9kZWwuSXNWaXNpYmxlO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuSGFzU2VhcmNoID0gcmVzdWx0TW9kZWwuSGFzU2VhcmNoO1xyXG5cclxuICAgIGlmICh0aGlzLmlzVGV4dCB8fCB0aGlzLmlzTnVtYmVyKSB7XHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLk1pbkxlbmd0aCA9IHJlc3VsdE1vZGVsLk1pbkxlbmd0aDtcclxuICAgICAgZWRpdE1vZGVsLk9wdGlvbnMuTWF4TGVuZ3RoID0gcmVzdWx0TW9kZWwuTWF4TGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRmlsZSB8fCB0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNJbWFnZSlcclxuICAgICAgZWRpdE1vZGVsLk9wdGlvbnMuTWF4RmlsZVNpemVJbk1CID0gcmVzdWx0TW9kZWwuTWF4RmlsZVNpemVJbk1CO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlKVxyXG4gICAgICBlZGl0TW9kZWwuT3B0aW9ucy5NYXhGaWxlQ291bnQgPSByZXN1bHRNb2RlbC5NYXhGaWxlQ291bnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGUgfHwgdGhpcy5pc0ZpbGUpXHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLkFsbG93ZWRFeHRlbnNpb25zID0gcmVzdWx0TW9kZWwuQWxsb3dlZEV4dGVuc2lvbnM7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLkRpc3BsYXlPcmRlciA9IGluZGV4ICsgMTtcclxuICAgICAgICBlZGl0TW9kZWwuUXVlc3Rpb25PcHRpb25zID0gdGhpcy5vcHRpb25MaXN0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9O1xyXG4gIGdldEVkaXRGdW5jdGlvbiA9IChlZGl0TW9kYWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTWVzc2FnZSkgcmV0dXJuIHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmVkaXQoZWRpdE1vZGFsKTtcclxuICB9O1xyXG4gIGdldExpbmtlZFF1ZXN0aW9ucyhvcHRpb246IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKSB7XHJcbiAgICByZXR1cm4gdGhpcy5RdWVzdGlvbnMuZmlsdGVyKChpdGVtKSA9PlxyXG4gICAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zLmluY2x1ZGVzKGl0ZW0ua2V5KVxyXG4gICAgKS5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkT3B0aW9uKCkge1xyXG4gICAgdGhpcy50b3RhbFNjb3JlID0gMDtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKHRoaXMuZWRpdE9wdGlvbkZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmVkaXRPcHRpb25Gb3JtLnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID49IDEgJiYgdGhpcy5zaG93U2NvcmVPcHRpb24pIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3B0aW9uTGlzdFtpbmRleF0uU2NvcmU7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPiAxMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnTWF4T3B0aW9uU2NvcmVFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPCAxKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnTWluT3B0aW9uU2NvcmVFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIGxldCBvcHRpb24gPSBuZXcgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8oKTtcclxuICAgIG9wdGlvbi5OYW1lLkFyYWJpYyA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uQXJhYmljO1xyXG4gICAgb3B0aW9uLk5hbWUuRW5nbGlzaCA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaDtcclxuICAgIG9wdGlvbi5JRF9HVUlEID0gcmVzdWx0TW9kZWwuSWRPcHRpb247XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmIChyZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXIpXHJcbiAgICAgIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSByZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXI7XHJcbiAgICBlbHNlIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoICsgMTtcclxuXHJcbiAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zID0gcmVzdWx0TW9kZWwuTGlua2VkUXVlc3Rpb25zO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICBvcHRpb24uU2NvcmUgPSBOdW1iZXIucGFyc2VGbG9hdChyZXN1bHRNb2RlbC5TY29yZSk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydOYW1lT3B0aW9uJ10ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ0lkT3B0aW9uJ10ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ0Rpc3BsYXlPcmRlciddLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydMaW5rZWRRdWVzdGlvbnMnXS5yZXNldCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKSB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KCk7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3Quc3BsaWNlKG9wdGlvbi5EaXNwbGF5T3JkZXIgLSAxLCAwLCBvcHRpb24pO1xyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZWxldGVPcHRpb24ob3B0aW9uKSB7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG9wdGlvbik7XHJcbiAgICB0aGlzLmlzRWRpdEZvcm1DaGFuZ2UgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZWRpdE9wdGlvbihvcHRpb246IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuZWRpdE9wdGlvbkZvcm0udG91Y2hlZCA9PSB0cnVlICYmIHRoaXMuZWRpdE9wdGlvbkZvcm0udmFsaWQpIHx8XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0udG91Y2hlZCA9PSBmYWxzZVxyXG4gICAgKVxyXG4gICAgICB0aGlzLmFkZE9wdGlvbigpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBuYW1lLkFyYWJpYyA9IG9wdGlvbi5OYW1lLkFyYWJpYyA/PyBudWxsO1xyXG4gICAgbmFtZS5FbmdsaXNoID0gb3B0aW9uLk5hbWUuRW5nbGlzaCA/PyBudWxsO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1snTmFtZU9wdGlvbiddLnNldFZhbHVlKG5hbWUpO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1snSWRPcHRpb24nXS5zZXRWYWx1ZShvcHRpb24uSURfR1VJRCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydEaXNwbGF5T3JkZXInXS5zZXRWYWx1ZShvcHRpb24uRGlzcGxheU9yZGVyKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ0xpbmtlZFF1ZXN0aW9ucyddLnNldFZhbHVlKFxyXG4gICAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnNldFZhbHVlKG9wdGlvbi5TY29yZSk7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG9wdGlvbik7XHJcbiAgICB0aGlzLmlzRWRpdEZvcm1DaGFuZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wdGlvbkluRWRpdE1vZGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZnJvbVRvKGZyb21GaWVsZDogc3RyaW5nLCB0b0ZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgZnJvbURhdGUgPSBmb3JtR3JvdXAuZ2V0KGZyb21GaWVsZCk7XHJcbiAgICAgIGNvbnN0IHRvRGF0ZSA9IGZvcm1Hcm91cC5nZXQodG9GaWVsZCk7XHJcbiAgICAgIGlmIChmcm9tRGF0ZSAhPT0gbnVsbCAmJiB0b0RhdGUgIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmcm9tRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgdG9EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPiBwYXJzZUludCh0b0RhdGUudmFsdWUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBmcm9tRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdG9EYXRlLnNldEVycm9ycyh7XHJcbiAgICAgICAgICAgIGVycm9yTWFzc2FnZTogdGhpcy5sKCdHcmVhdGVyVGhhbk9yRXF1YWxUbycpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJvbURhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHRvRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpIDwgcGFyc2VJbnQodG9EYXRlLnZhbHVlKSAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQodG9EYXRlLnZhbHVlKSA8IDI1NSAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpIDwgMjU1XHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgdG9EYXRlLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZUZvcm1TdGF0dXMoa2V5OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5UZXh0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuRmlsZTpcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuSW1hZ2U6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9kcmFnIGFuZCBkcm9wXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5vcHRpb25MaXN0LCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdO1xyXG4gICAgICBlbGVtZW50LkRpc3BsYXlPcmRlciA9IGluZGV4ICsgMTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IHRydWU7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjRWRpdE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiICpuZ0lmPVwiIWlzVmlld09ubHlcIj5cclxuICAgICAge3tsKFwiRWRpdF9RdWVzdGlvblwiKX19XHJcbiAgICA8L2g0PlxyXG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiAqbmdJZj1cImlzVmlld09ubHlcIj5cclxuICAgICAge3tsKFwiRGV0YWlsc1wiKX19XHJcbiAgICA8L2g0PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHN2Zy1pY29uLWhvdmVyLWJyYW5kXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvbW9kYWxjbG9zZS5zdmcnXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnNcIiAoT25DaGFuZ2UpPVwiY2hhbmdlRm9ybVN0YXR1cygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImVkaXRRdWVzdGlvblwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJlZGl0RGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJzdXJ2ZXlBdWRpZW5jZVR5cGVJRD09YXVkaWVuY2VUeXBlLkJvdGhcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYXVkaWVuY2VcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdFF1ZXN0aW9uVHlwZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZURhdGFUeXBlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRTaXplXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1NlbGVjdFwiID5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJlZGl0QWxsb3dTY29yZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZVNjb3JpbmcoJGV2ZW50KVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXRJc0FjdGl2ZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdFJlcXVpcmVkXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE1pbkxlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRNYXhMZW5ndGhcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGV8fGlzSW1hZ2VcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRNYXhGaWxlU2l6ZVwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0TWF4RmlsZUNvdW50XCIgKm5nSWY9XCJpc011bHRpRmlsZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdEZpbGVzRXh0ZW5zaW9uc1wiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXREaXNwbGF5T3JkZXJcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzU2VsZWN0XCIgY2xhc3M9XCJxdWVzdGlvbi10eXBlLW9wdGlvblwiPlxyXG4gICAgICAgICAgICA8aDU+e3tsKCdPcHRpb25zJyl9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWxpc3RpbmdcIiAqbmdGb3I9XCJsZXQgT3B0aW9uIG9mIG9wdGlvbkxpc3Q7XCIgY2RrRHJhZz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBmcy02IGZ3LWJvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0Q3VycmVudEZhaWxPdmVyKE9wdGlvbi5OYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFyayBtZS00XCIgKm5nSWY9XCJzaG93U2NvcmVPcHRpb25cIiBuZ2JUb29sdGlwPVwie3tsKCdTY29yZScpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7T3B0aW9uLlNjb3JlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtYnJhbmQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiICpuZ0lmPVwiT3B0aW9uLkxpbmtlZFF1ZXN0aW9ucz8ubGVuZ3RoPjBcIiBuZ2JUb29sdGlwPVwie3tnZXRMaW5rZWRRdWVzdGlvbnMoT3B0aW9uKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9pbmZvLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1icmFuZCBjdXJzb3ItcG9pbnRlciBtZS00XCIgKGNsaWNrKT1cImVkaXRPcHRpb24oT3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgbmdiVG9vbHRpcD1cInt7bCgnRWRpdCcpfX1cIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9FZGl0LnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWRhbmdlciBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgbmdiVG9vbHRpcD1cInt7bCgnRGVsZXRlJyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihPcHRpb24pXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZleS1hbGVydC1kYW5nZXIgYWxlcnQtZGFuZ2VyXCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi1kYW5nZXIgbWUtNFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPjxkaXYgY2xhc3M9XCJmcy03IHRleHQtZGFuZ2VyXCI+e3tlcnJvck1lc3NhZ2V9fTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGVhdGVyLWJnXCIgKm5nSWY9XCIhaXNWaWV3T25seVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggaGlkZGVuPVwidHJ1ZVwiIFtvcHRpb25zXT1cImVkaXRPcHRpb25JZFwiIFtncm91cF09XCJlZGl0T3B0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImVkaXROYW1lT3B0aW9uXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnNcIiBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJkaXNwbGF5T3JkZXJPcHRpb25cIiBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiaWRPcHRpb25cIiBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cInNob3dTY29yZU9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNjb3JlTnVtYmVyXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZE9wdGlvbigpXCIgKm5nSWY9XCIhaXNPcHRpb25JbkVkaXRNb2RlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZCB3LTEwMFwiPnt7bChcIkFkZFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZE9wdGlvbigpXCIgKm5nSWY9XCJpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiRWRpdFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgcGItMCBtLTBcIiA+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIiAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7bChcIkNhbmNlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGFwcFByZXZlbnREb3VibGVDbGljayB0eXBlPVwic3VibWl0XCIgIFtkaXNhYmxlZF09XCIhaXNFZGl0Rm9ybUNoYW5nZVwiICAgKm5nSWY9XCIhaXNWaWV3T25seVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmRcIj57e2woXCJTYXZlXCIpfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|