survery-lib 2.1.30 → 2.1.32

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.
@@ -47,6 +47,7 @@ export class QuestionCascadeTemplateComponent {
47
47
  this.questionGroupId = null;
48
48
  this.isPre = false;
49
49
  this.surveyLanguageId = null;
50
+ this.surveyKey = null;
50
51
  this.applicantKey = null;
51
52
  this.rForm = this._formBuilder.group({
52
53
  questionArr: this._formBuilder.array([])
@@ -77,56 +78,57 @@ export class QuestionCascadeTemplateComponent {
77
78
  var selectedAnswerObj = this.surveyQuestionArr
78
79
  .find(x => x.questionId == model.QuestionId)?.surveyAnswers.find(x => x.answerId === model.SurveyAnswerId);
79
80
  if (selectedAnswerObj?.isOther == true) {
80
- this._ApiService.getIsOtherQuestion({
81
- parentQId: model.QuestionId,
82
- groupId: this.questionGroupId
83
- }).subscribe(res => {
84
- if (res.errors.filter(x => x.code == 17).length == 0) {
85
- res.questionTypeId = QuestionTypeEnum.TextInput;
86
- this._Store.dispatch(surveyActions.addQuestion({
87
- question: {
88
- surveyPageId: this.pageId,
89
- questionId: res.questionId,
90
- questionType: res.questionTypeId,
91
- inputTypeId: InputTypeEnum.Text,
92
- isQuestionGroup: false,
93
- answerId: null,
94
- answerIdArr: null,
95
- answerText: null,
96
- isRequired: res.isRequired,
97
- isValid: null,
98
- isDisabled: res.isReadOnly,
99
- isShow: res.isVisable,
100
- isDisabled_default: res.isReadOnly,
101
- isShow_default: res.isVisable,
102
- questionGroupId: this.questionGroupId,
103
- parentQuestionId: model.QuestionId,
104
- questionAllInfo: {
105
- questionId: res.questionId,
106
- questionTypeId: res.questionTypeId,
107
- questionName: res.questionName,
108
- questionTitle: res.questionTitle,
109
- questionDescription: res.questionDescription,
110
- isRequired: res.isRequired,
111
- isVisable: res.isVisable,
112
- isEditable: res.isEditable,
113
- isOTPOption: res.isOtpOption,
114
- isAdvanceTextArea: res.isAdvanceTextArea,
115
- isReadOnly: res.isReadOnly,
116
- isPreDefine: res.isPreDefine,
117
- maxLevelValue: res.maxLevelValue,
118
- surveyAnswers: [
119
- {
120
- answerId: res.answerId,
121
- inputTypeId: InputTypeEnum.Text
122
- }
123
- ],
124
- surveySubQuestions: res.surveySubQuestions,
125
- surveySubQuestionLevels: res.surveySubQuestionLevels
126
- }
127
- }
128
- }));
129
- this.setQuestions({
81
+ this.isOtherQuestion(model);
82
+ }
83
+ else {
84
+ this.getNextQuestion(model);
85
+ }
86
+ }
87
+ }
88
+ identify(index, item) {
89
+ return item.value.id;
90
+ }
91
+ setQuestions(value) {
92
+ this.surveyQuestionArr.push(value);
93
+ var group = this._formBuilder.group({
94
+ id: new FormControl(value.questionId),
95
+ typeId: new FormControl(value.questionTypeId),
96
+ answer: new FormControl(null)
97
+ });
98
+ if (value.isRequired == true) {
99
+ group.controls.answer.addValidators([Validators.required]);
100
+ group.controls.answer.updateValueAndValidity();
101
+ }
102
+ this.fCtrls.questionArr.push(group);
103
+ }
104
+ isOtherQuestion(model) {
105
+ this._ApiService.getIsOtherQuestion({
106
+ parentQId: model.QuestionId,
107
+ groupId: this.questionGroupId,
108
+ surveyKey: this.surveyKey,
109
+ surveyLanguageId: this.surveyLanguageId
110
+ }).subscribe(res => {
111
+ if (res.errors.filter(x => x.code == 17).length == 0) {
112
+ res.questionTypeId = QuestionTypeEnum.TextInput;
113
+ this._Store.dispatch(surveyActions.addQuestion({
114
+ question: {
115
+ surveyPageId: this.pageId,
116
+ questionId: res.questionId,
117
+ questionType: res.questionTypeId,
118
+ inputTypeId: InputTypeEnum.Text,
119
+ isQuestionGroup: false,
120
+ answerId: null,
121
+ answerIdArr: null,
122
+ answerText: null,
123
+ isRequired: res.isRequired,
124
+ isValid: null,
125
+ isDisabled: res.isReadOnly,
126
+ isShow: res.isVisable,
127
+ isDisabled_default: res.isReadOnly,
128
+ isShow_default: res.isVisable,
129
+ questionGroupId: this.questionGroupId,
130
+ parentQuestionId: model.QuestionId,
131
+ questionAllInfo: {
130
132
  questionId: res.questionId,
131
133
  questionTypeId: res.questionTypeId,
132
134
  questionName: res.questionName,
@@ -148,63 +150,71 @@ export class QuestionCascadeTemplateComponent {
148
150
  ],
149
151
  surveySubQuestions: res.surveySubQuestions,
150
152
  surveySubQuestionLevels: res.surveySubQuestionLevels
151
- });
153
+ }
152
154
  }
155
+ }));
156
+ this.setQuestions({
157
+ questionId: res.questionId,
158
+ questionTypeId: res.questionTypeId,
159
+ questionName: res.questionName,
160
+ questionTitle: res.questionTitle,
161
+ questionDescription: res.questionDescription,
162
+ isRequired: res.isRequired,
163
+ isVisable: res.isVisable,
164
+ isEditable: res.isEditable,
165
+ isOTPOption: res.isOtpOption,
166
+ isAdvanceTextArea: res.isAdvanceTextArea,
167
+ isReadOnly: res.isReadOnly,
168
+ isPreDefine: res.isPreDefine,
169
+ maxLevelValue: res.maxLevelValue,
170
+ surveyAnswers: [
171
+ {
172
+ answerId: res.answerId,
173
+ inputTypeId: InputTypeEnum.Text
174
+ }
175
+ ],
176
+ surveySubQuestions: res.surveySubQuestions,
177
+ surveySubQuestionLevels: res.surveySubQuestionLevels
153
178
  });
179
+ this.getNextQuestion(model);
154
180
  }
155
- else {
156
- this._ApiService.getNextQuestion({
157
- answerId: model.Answer,
158
- applicantKey: this.applicantKey,
159
- isPre: this.isPre,
160
- surveyLanguageId: this.surveyLanguageId
161
- }).subscribe(res => {
162
- if (res.errors.filter(x => x.code == 17).length == 0) {
163
- this._Store.dispatch(surveyActions.addQuestion({
164
- question: {
165
- surveyPageId: this.pageId,
166
- questionId: res.questionId,
167
- questionType: res.questionTypeId,
168
- inputTypeId: res.surveyAnswers[0].inputTypeId,
169
- isQuestionGroup: false,
170
- answerId: null,
171
- answerIdArr: null,
172
- answerText: null,
173
- isRequired: res.isRequired,
174
- isValid: null,
175
- isDisabled: res.isReadOnly,
176
- isShow: res.isVisable,
177
- isDisabled_default: res.isReadOnly,
178
- isShow_default: res.isVisable,
179
- questionGroupId: this.questionGroupId,
180
- parentQuestionId: model.QuestionId,
181
- questionAllInfo: res
182
- }
183
- }));
184
- this.setQuestions(res);
181
+ });
182
+ }
183
+ getNextQuestion(model) {
184
+ this._ApiService.getNextQuestion({
185
+ answerId: model.Answer,
186
+ applicantKey: this.applicantKey,
187
+ isPre: this.isPre,
188
+ surveyLanguageId: this.surveyLanguageId
189
+ }).subscribe(res => {
190
+ if (res.errors.filter(x => x.code == 17).length == 0) {
191
+ this._Store.dispatch(surveyActions.addQuestion({
192
+ question: {
193
+ surveyPageId: this.pageId,
194
+ questionId: res.questionId,
195
+ questionType: res.questionTypeId,
196
+ inputTypeId: res.surveyAnswers[0].inputTypeId,
197
+ isQuestionGroup: false,
198
+ answerId: null,
199
+ answerIdArr: null,
200
+ answerText: null,
201
+ isRequired: res.isRequired,
202
+ isValid: null,
203
+ isDisabled: res.isReadOnly,
204
+ isShow: res.isVisable,
205
+ isDisabled_default: res.isReadOnly,
206
+ isShow_default: res.isVisable,
207
+ questionGroupId: this.questionGroupId,
208
+ parentQuestionId: model.QuestionId,
209
+ questionAllInfo: res
185
210
  }
186
- });
211
+ }));
212
+ this.setQuestions(res);
187
213
  }
188
- }
189
- }
190
- identify(index, item) {
191
- return item.value.id;
192
- }
193
- setQuestions(value) {
194
- this.surveyQuestionArr.push(value);
195
- var group = this._formBuilder.group({
196
- id: new FormControl(value.questionId),
197
- typeId: new FormControl(value.questionTypeId),
198
- answer: new FormControl(null)
199
214
  });
200
- if (value.isRequired == true) {
201
- group.controls.answer.addValidators([Validators.required]);
202
- group.controls.answer.updateValueAndValidity();
203
- }
204
- this.fCtrls.questionArr.push(group);
205
215
  }
206
216
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionCascadeTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }, { token: i3.ApiService }, { token: i4.Store }], target: i0.ɵɵFactoryTarget.Component }); }
207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionCascadeTemplateComponent, selector: "lib-question-cascade-template", inputs: { pageId: "pageId", questionGroupId: "questionGroupId", isPre: "isPre", surveyLanguageId: "surveyLanguageId", applicantKey: "applicantKey", setQuestion: "setQuestion" }, ngImport: i0, template: "<ng-container *ngFor=\"let item of questionFormArray.controls; trackBy:identify ; let i = index\">\r\n <lib-question-dropdown-template #questionDropdownTemplate\r\n *ngIf=\"(pageQuestions$() |findQuestion :item.value.id)?.questionType != questionTypeEnum.TextInput\"\r\n [setQuestion]=\"pageQuestions$() |findQuestion :item.value.id \" (emitter)=\"onUpdateAnswer($event)\">\r\n </lib-question-dropdown-template>\r\n\r\n <lib-question-text-template #questionTextTemplate\r\n *ngIf=\"(pageQuestions$() |findQuestion :item.value.id)?.questionType == questionTypeEnum.TextInput\"\r\n [setQuestion]=\"pageQuestions$() |findQuestion :item.value.id \"\r\n [isArabicLang]=\"true\"></lib-question-text-template>\r\n\r\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: ["isArabicLang", "setQuestion", "isDisabled"] }, { kind: "component", type: i7.QuestionDropdownTemplateComponent, selector: "lib-question-dropdown-template", inputs: ["setQuestion"], outputs: ["emitter"] }, { kind: "pipe", type: i8.FindQuestionPipe, name: "findQuestion" }] }); }
217
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionCascadeTemplateComponent, selector: "lib-question-cascade-template", inputs: { pageId: "pageId", questionGroupId: "questionGroupId", isPre: "isPre", surveyLanguageId: "surveyLanguageId", surveyKey: "surveyKey", applicantKey: "applicantKey", setQuestion: "setQuestion" }, ngImport: i0, template: "<ng-container *ngFor=\"let item of questionFormArray.controls; trackBy:identify ; let i = index\">\r\n <lib-question-dropdown-template #questionDropdownTemplate\r\n *ngIf=\"(pageQuestions$() |findQuestion :item.value.id)?.questionType != questionTypeEnum.TextInput\"\r\n [setQuestion]=\"pageQuestions$() |findQuestion :item.value.id \" (emitter)=\"onUpdateAnswer($event)\">\r\n </lib-question-dropdown-template>\r\n\r\n <lib-question-text-template #questionTextTemplate\r\n *ngIf=\"(pageQuestions$() |findQuestion :item.value.id)?.questionType == questionTypeEnum.TextInput\"\r\n [setQuestion]=\"pageQuestions$() |findQuestion :item.value.id \"\r\n [isArabicLang]=\"true\"></lib-question-text-template>\r\n\r\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: ["isArabicLang", "setQuestion", "isDisabled"] }, { kind: "component", type: i7.QuestionDropdownTemplateComponent, selector: "lib-question-dropdown-template", inputs: ["setQuestion"], outputs: ["emitter"] }, { kind: "pipe", type: i8.FindQuestionPipe, name: "findQuestion" }] }); }
208
218
  }
209
219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionCascadeTemplateComponent, decorators: [{
210
220
  type: Component,
@@ -217,9 +227,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
217
227
  type: Input
218
228
  }], surveyLanguageId: [{
219
229
  type: Input
230
+ }], surveyKey: [{
231
+ type: Input
220
232
  }], applicantKey: [{
221
233
  type: Input
222
234
  }], setQuestion: [{
223
235
  type: Input
224
236
  }] } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tY2FzY2FkZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tY2FzY2FkZS10ZW1wbGF0ZS9xdWVzdGlvbi1jYXNjYWRlLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1jYXNjYWRlLXRlbXBsYXRlL3F1ZXN0aW9uLWNhc2NhZGUtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBZSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFNNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7OztBQVF0RSxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUE7SUFDaEMsQ0FBQztJQVNELElBQWEsV0FBVyxDQUFDLEtBQXdCO1FBQy9DLElBQUks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OEtBc0JoQyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRU8sV0FBVztzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbkNhc2NhZGVUZW1wbGF0ZUZvcm1JbnRlcmZhY2UsIFF1ZXN0aW9uR3JvdXBDaGlsZE9mUXVlc3Rpb25DYXNjYWRlVGVtcGxhdGVGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9xdWVzdGlvbi1jYXNjYWRlLmZvcm0taW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25EdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktcXVlc3Rpb24uZHRvJztcclxuaW1wb3J0IHsgUXVlc3Rpb25UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9xdWVzdGlvbi1hbnN3ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlMaWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3VydmV5LWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVlc3Rpb25OZ3J4TW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL3N0YXRlcy9lbnRpdGVzL3F1ZXN0aW9uLmVudGl0eSc7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBzdXJ2ZXlBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdGF0ZXMvc3VydmV5LXN0b3JlL3N1cnZleS5hY3Rpb24nO1xyXG5pbXBvcnQgeyBxdWVzdGlvblNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2NvcmUvc3RhdGVzL3N1cnZleS1zdG9yZS9xdWVzdGlvbi5zZWxlY3Rvcic7XHJcbmltcG9ydCB7IElucHV0VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZW51bXMvaW5wdXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU3VydmV5QW5zd2VyRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LWFuc3dlci5kdG8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tY2FzY2FkZS10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXN0aW9uLWNhc2NhZGUtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3F1ZXN0aW9uLWNhc2NhZGUtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25DYXNjYWRlVGVtcGxhdGVDb21wb25lbnQge1xyXG4gIHN1cnZleVF1ZXN0aW9uQXJyOiBTdXJ2ZXlRdWVzdGlvbkR0b1tdID0gW107XHJcbiAgckZvcm06IEZvcm1Hcm91cDxRdWVzdGlvbkNhc2NhZGVUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+O1xyXG4gIHBhZ2VRdWVzdGlvbnMkID0gdGhpcy5fU3RvcmUuc2VsZWN0U2lnbmFsKHF1ZXN0aW9uU2VsZWN0b3JzLnBhZ2VRdWVzdGlvbnMpO1xyXG5cclxuICBnZXQgZkN0cmxzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuckZvcm0uY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBnZXQgcXVlc3Rpb25UeXBlRW51bSgpIHtcclxuICAgIHJldHVybiBRdWVzdGlvblR5cGVFbnVtO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHF1ZXN0aW9uRm9ybUFycmF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyXHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KCkgcGFnZUlkOiBudW1iZXIgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uR3JvdXBJZDogbnVtYmVyID0gbnVsbDtcclxuICBASW5wdXQoKSBpc1ByZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1cnZleUxhbmd1YWdlSWQ6IG51bWJlciA9IG51bGw7XHJcbiAgQElucHV0KCkgYXBwbGljYW50S2V5OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBzZXQgc2V0UXVlc3Rpb24odmFsdWU6IFF1ZXN0aW9uTmdyeE1vZGVsKSB7XHJcbiAgICBpZiAodGhpcy5zdXJ2ZXlRdWVzdGlvbkFycj8ubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5zZXRRdWVzdGlvbnModmFsdWUucXVlc3Rpb25BbGxJbmZvKTtcclxuXHJcbiAgICAgIHZhciBjaGlsZFF1ZXN0aW9uMSA9IHRoaXMucGFnZVF1ZXN0aW9ucyQoKS5maW5kKHggPT4geC5wYXJlbnRRdWVzdGlvbklkID09IHZhbHVlLnF1ZXN0aW9uSWQpO1xyXG4gICAgICBpZiAoY2hpbGRRdWVzdGlvbjEpIHtcclxuICAgICAgICB0aGlzLnNldFF1ZXN0aW9ucyhjaGlsZFF1ZXN0aW9uMS5xdWVzdGlvbkFsbEluZm8pO1xyXG5cclxuICAgICAgICB2YXIgY2hpbGRRdWVzdGlvbjIgPSB0aGlzLnBhZ2VRdWVzdGlvbnMkKCkuZmluZCh4ID0+IHgucGFyZW50UXVlc3Rpb25JZCA9PSBjaGlsZFF1ZXN0aW9uMS5xdWVzdGlvbklkKTtcclxuICAgICAgICBpZiAoY2hpbGRRdWVzdGlvbjIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0UXVlc3Rpb25zKGNoaWxkUXVlc3Rpb24yLnF1ZXN0aW9uQWxsSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgX3N1cnZleUxpYlNlcnZpY2U6IFN1cnZleUxpYlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9BcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLCBwcml2YXRlIF9TdG9yZTogU3RvcmUpIHtcclxuICAgIHRoaXMuckZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbkNhc2NhZGVUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KHtcclxuICAgICAgcXVlc3Rpb25BcnI6IHRoaXMuX2Zvcm1CdWlsZGVyLmFycmF5PEZvcm1Hcm91cDxRdWVzdGlvbkdyb3VwQ2hpbGRPZlF1ZXN0aW9uQ2FzY2FkZVRlbXBsYXRlRm9ybUludGVyZmFjZT4+KFtdKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyh2KTtcclxuICAgIC8vIH0pXHJcbiAgfVxyXG5cclxuICBvblVwZGF0ZUFuc3dlcihtb2RlbDogUXVlc3Rpb25BbnN3ZXJNb2RlbCkge1xyXG4gICAgaWYgKHRoaXMuc3VydmV5UXVlc3Rpb25BcnIubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zdCBzdXJ2ZXlRdWVzdGlvbkluZGV4ID0gdGhpcy5zdXJ2ZXlRdWVzdGlvbkFyci5maW5kSW5kZXgoYyA9PiBjLnF1ZXN0aW9uSWQgPT0gbW9kZWwuUXVlc3Rpb25JZCk7XHJcblxyXG4gICAgICB2YXIgZGVsZXRlZFF1ZXN0aW9ucyA9IFtdXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gc3VydmV5UXVlc3Rpb25JbmRleCArIDE7IGluZGV4IDwgdGhpcy5zdXJ2ZXlRdWVzdGlvbkFyci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBkZWxldGVkUXVlc3Rpb25zLnB1c2goaW5kZXgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgc29ydERlbGV0ZWRBcnIgPSBkZWxldGVkUXVlc3Rpb25zLnNvcnQoKGEsIGIpID0+IChhID4gYiA/IC0xIDogMSkpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc29ydERlbGV0ZWRBcnIubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudEluZGV4ID0gc29ydERlbGV0ZWRBcnJbaW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSB0aGlzLnN1cnZleVF1ZXN0aW9uQXJyW2VsZW1lbnRJbmRleF0ucXVlc3Rpb25JZDtcclxuXHJcbiAgICAgICAgdGhpcy5fU3RvcmUuZGlzcGF0Y2goc3VydmV5QWN0aW9ucy5yZW1vdmVRdWVzdGlvbih7IHF1ZXN0aW9uSWQ6IHF1ZXN0aW9uSWQgfSkpO1xyXG5cclxuICAgICAgICB0aGlzLnN1cnZleVF1ZXN0aW9uQXJyID0gdGhpcy5zdXJ2ZXlRdWVzdGlvbkFyci5maWx0ZXIoeCA9PiB4LnF1ZXN0aW9uSWQgIT0gcXVlc3Rpb25JZCk7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbkZvcm1BcnJheS5yZW1vdmVBdChlbGVtZW50SW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1vZGVsLkFuc3dlcikge1xyXG4gICAgICB2YXIgc2VsZWN0ZWRBbnN3ZXJPYmogPSB0aGlzLnN1cnZleVF1ZXN0aW9uQXJyXHJcbiAgICAgICAgLmZpbmQoeCA9PiB4LnF1ZXN0aW9uSWQgPT0gbW9kZWwuUXVlc3Rpb25JZCk/LnN1cnZleUFuc3dlcnMuZmluZCh4ID0+IHguYW5zd2VySWQgPT09IG1vZGVsLlN1cnZleUFuc3dlcklkKTtcclxuICAgICAgaWYgKHNlbGVjdGVkQW5zd2VyT2JqPy5pc090aGVyID09IHRydWUpIHtcclxuICAgICAgICB0aGlzLl9BcGlTZXJ2aWNlLmdldElzT3RoZXJRdWVzdGlvbih7XHJcbiAgICAgICAgICBwYXJlbnRRSWQ6IG1vZGVsLlF1ZXN0aW9uSWQsXHJcbiAgICAgICAgICBncm91cElkOiB0aGlzLnF1ZXN0aW9uR3JvdXBJZFxyXG4gICAgICAgIH0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5lcnJvcnMuZmlsdGVyKHggPT4geC5jb2RlID09IDE3KS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXMucXVlc3Rpb25UeXBlSWQgPSBRdWVzdGlvblR5cGVFbnVtLlRleHRJbnB1dDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX1N0b3JlLmRpc3BhdGNoKHN1cnZleUFjdGlvbnMuYWRkUXVlc3Rpb24oe1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBzdXJ2ZXlQYWdlSWQ6IHRoaXMucGFnZUlkLFxyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogcmVzLnF1ZXN0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvblR5cGU6IHJlcy5xdWVzdGlvblR5cGVJZCxcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZUlkOiBJbnB1dFR5cGVFbnVtLlRleHQsXHJcbiAgICAgICAgICAgICAgICBpc1F1ZXN0aW9uR3JvdXA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYW5zd2VySWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBhbnN3ZXJJZEFycjogbnVsbCxcclxuICAgICAgICAgICAgICAgIGFuc3dlclRleHQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiByZXMuaXNSZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIGlzVmFsaWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiByZXMuaXNSZWFkT25seSxcclxuICAgICAgICAgICAgICAgIGlzU2hvdzogcmVzLmlzVmlzYWJsZSxcclxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRfZGVmYXVsdDogcmVzLmlzUmVhZE9ubHksXHJcbiAgICAgICAgICAgICAgICBpc1Nob3dfZGVmYXVsdDogcmVzLmlzVmlzYWJsZSxcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uR3JvdXBJZDogdGhpcy5xdWVzdGlvbkdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRRdWVzdGlvbklkOiBtb2RlbC5RdWVzdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25BbGxJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHJlcy5xdWVzdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgICBxdWVzdGlvblR5cGVJZDogcmVzLnF1ZXN0aW9uVHlwZUlkLFxyXG4gICAgICAgICAgICAgICAgICBxdWVzdGlvbk5hbWU6IHJlcy5xdWVzdGlvbk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uVGl0bGU6IHJlcy5xdWVzdGlvblRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICBxdWVzdGlvbkRlc2NyaXB0aW9uOiByZXMucXVlc3Rpb25EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogcmVzLmlzUmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgIGlzVmlzYWJsZTogcmVzLmlzVmlzYWJsZSxcclxuICAgICAgICAgICAgICAgICAgaXNFZGl0YWJsZTogcmVzLmlzRWRpdGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIGlzT1RQT3B0aW9uOiByZXMuaXNPdHBPcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgIGlzQWR2YW5jZVRleHRBcmVhOiByZXMuaXNBZHZhbmNlVGV4dEFyZWEsXHJcbiAgICAgICAgICAgICAgICAgIGlzUmVhZE9ubHk6IHJlcy5pc1JlYWRPbmx5LFxyXG4gICAgICAgICAgICAgICAgICBpc1ByZURlZmluZTogcmVzLmlzUHJlRGVmaW5lLFxyXG4gICAgICAgICAgICAgICAgICBtYXhMZXZlbFZhbHVlOiByZXMubWF4TGV2ZWxWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgc3VydmV5QW5zd2VyczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGFuc3dlcklkOiByZXMuYW5zd2VySWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGVJZDogSW5wdXRUeXBlRW51bS5UZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBTdXJ2ZXlBbnN3ZXJEdG9cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgc3VydmV5U3ViUXVlc3Rpb25zOiByZXMuc3VydmV5U3ViUXVlc3Rpb25zLFxyXG4gICAgICAgICAgICAgICAgICBzdXJ2ZXlTdWJRdWVzdGlvbkxldmVsczogcmVzLnN1cnZleVN1YlF1ZXN0aW9uTGV2ZWxzXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNldFF1ZXN0aW9ucyh7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogcmVzLnF1ZXN0aW9uSWQsXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25UeXBlSWQ6IHJlcy5xdWVzdGlvblR5cGVJZCxcclxuICAgICAgICAgICAgICBxdWVzdGlvbk5hbWU6IHJlcy5xdWVzdGlvbk5hbWUsXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25UaXRsZTogcmVzLnF1ZXN0aW9uVGl0bGUsXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25EZXNjcmlwdGlvbjogcmVzLnF1ZXN0aW9uRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgaXNSZXF1aXJlZDogcmVzLmlzUmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgaXNWaXNhYmxlOiByZXMuaXNWaXNhYmxlLFxyXG4gICAgICAgICAgICAgIGlzRWRpdGFibGU6IHJlcy5pc0VkaXRhYmxlLFxyXG4gICAgICAgICAgICAgIGlzT1RQT3B0aW9uOiByZXMuaXNPdHBPcHRpb24sXHJcbiAgICAgICAgICAgICAgaXNBZHZhbmNlVGV4dEFyZWE6IHJlcy5pc0FkdmFuY2VUZXh0QXJlYSxcclxuICAgICAgICAgICAgICBpc1JlYWRPbmx5OiByZXMuaXNSZWFkT25seSxcclxuICAgICAgICAgICAgICBpc1ByZURlZmluZTogcmVzLmlzUHJlRGVmaW5lLFxyXG4gICAgICAgICAgICAgIG1heExldmVsVmFsdWU6IHJlcy5tYXhMZXZlbFZhbHVlLFxyXG4gICAgICAgICAgICAgIHN1cnZleUFuc3dlcnM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgYW5zd2VySWQ6IHJlcy5hbnN3ZXJJZCxcclxuICAgICAgICAgICAgICAgICAgaW5wdXRUeXBlSWQ6IElucHV0VHlwZUVudW0uVGV4dFxyXG4gICAgICAgICAgICAgICAgfSBhcyBTdXJ2ZXlBbnN3ZXJEdG9cclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cnZleVN1YlF1ZXN0aW9uczogcmVzLnN1cnZleVN1YlF1ZXN0aW9ucyxcclxuICAgICAgICAgICAgICBzdXJ2ZXlTdWJRdWVzdGlvbkxldmVsczogcmVzLnN1cnZleVN1YlF1ZXN0aW9uTGV2ZWxzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX0FwaVNlcnZpY2UuZ2V0TmV4dFF1ZXN0aW9uKHtcclxuICAgICAgICAgIGFuc3dlcklkOiBtb2RlbC5BbnN3ZXIsXHJcbiAgICAgICAgICBhcHBsaWNhbnRLZXk6IHRoaXMuYXBwbGljYW50S2V5LFxyXG4gICAgICAgICAgaXNQcmU6IHRoaXMuaXNQcmUsXHJcbiAgICAgICAgICBzdXJ2ZXlMYW5ndWFnZUlkOiB0aGlzLnN1cnZleUxhbmd1YWdlSWRcclxuICAgICAgICB9KS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuZXJyb3JzLmZpbHRlcih4ID0+IHguY29kZSA9PSAxNykubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fU3RvcmUuZGlzcGF0Y2goc3VydmV5QWN0aW9ucy5hZGRRdWVzdGlvbih7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb246IHtcclxuICAgICAgICAgICAgICAgIHN1cnZleVBhZ2VJZDogdGhpcy5wYWdlSWQsXHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiByZXMucXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogcmVzLnF1ZXN0aW9uVHlwZUlkLFxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlSWQ6IHJlcy5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0VHlwZUlkLFxyXG4gICAgICAgICAgICAgICAgaXNRdWVzdGlvbkdyb3VwOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFuc3dlcklkOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgYW5zd2VySWRBcnI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBhbnN3ZXJUZXh0OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogcmVzLmlzUmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZDogcmVzLmlzUmVhZE9ubHksXHJcbiAgICAgICAgICAgICAgICBpc1Nob3c6IHJlcy5pc1Zpc2FibGUsXHJcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkX2RlZmF1bHQ6IHJlcy5pc1JlYWRPbmx5LFxyXG4gICAgICAgICAgICAgICAgaXNTaG93X2RlZmF1bHQ6IHJlcy5pc1Zpc2FibGUsXHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbkdyb3VwSWQ6IHRoaXMucXVlc3Rpb25Hcm91cElkLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50UXVlc3Rpb25JZDogbW9kZWwuUXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uQWxsSW5mbzogcmVzXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNldFF1ZXN0aW9ucyhyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZGVudGlmeShpbmRleCwgaXRlbTogRm9ybUdyb3VwPFF1ZXN0aW9uR3JvdXBDaGlsZE9mUXVlc3Rpb25DYXNjYWRlVGVtcGxhdGVGb3JtSW50ZXJmYWNlPikge1xyXG4gICAgcmV0dXJuIGl0ZW0udmFsdWUuaWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFF1ZXN0aW9ucyh2YWx1ZTogU3VydmV5UXVlc3Rpb25EdG8pIHtcclxuICAgIHRoaXMuc3VydmV5UXVlc3Rpb25BcnIucHVzaCh2YWx1ZSk7XHJcblxyXG4gICAgdmFyIGdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25Hcm91cENoaWxkT2ZRdWVzdGlvbkNhc2NhZGVUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KHtcclxuICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZS5xdWVzdGlvbklkKSxcclxuICAgICAgdHlwZUlkOiBuZXcgRm9ybUNvbnRyb2wodmFsdWUucXVlc3Rpb25UeXBlSWQpLFxyXG4gICAgICBhbnN3ZXI6IG5ldyBGb3JtQ29udHJvbChudWxsKVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICBncm91cC5jb250cm9scy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICBncm91cC5jb250cm9scy5hbnN3ZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyLnB1c2goZ3JvdXApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbkZvcm1BcnJheS5jb250cm9sczsgdHJhY2tCeTppZGVudGlmeSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgIDxsaWItcXVlc3Rpb24tZHJvcGRvd24tdGVtcGxhdGUgI3F1ZXN0aW9uRHJvcGRvd25UZW1wbGF0ZVxyXG4gICAgICAgICpuZ0lmPVwiKHBhZ2VRdWVzdGlvbnMkKCkgfGZpbmRRdWVzdGlvbiA6aXRlbS52YWx1ZS5pZCk/LnF1ZXN0aW9uVHlwZSAhPSBxdWVzdGlvblR5cGVFbnVtLlRleHRJbnB1dFwiXHJcbiAgICAgICAgW3NldFF1ZXN0aW9uXT1cInBhZ2VRdWVzdGlvbnMkKCkgfGZpbmRRdWVzdGlvbiA6aXRlbS52YWx1ZS5pZCBcIiAoZW1pdHRlcik9XCJvblVwZGF0ZUFuc3dlcigkZXZlbnQpXCI+XHJcbiAgICA8L2xpYi1xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bGliLXF1ZXN0aW9uLXRleHQtdGVtcGxhdGUgI3F1ZXN0aW9uVGV4dFRlbXBsYXRlXHJcbiAgICAgICAgKm5nSWY9XCIocGFnZVF1ZXN0aW9ucyQoKSB8ZmluZFF1ZXN0aW9uIDppdGVtLnZhbHVlLmlkKT8ucXVlc3Rpb25UeXBlID09IHF1ZXN0aW9uVHlwZUVudW0uVGV4dElucHV0XCJcclxuICAgICAgICBbc2V0UXVlc3Rpb25dPVwicGFnZVF1ZXN0aW9ucyQoKSB8ZmluZFF1ZXN0aW9uIDppdGVtLnZhbHVlLmlkIFwiXHJcbiAgICAgICAgW2lzQXJhYmljTGFuZ109XCJ0cnVlXCI+PC9saWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZT5cclxuXHJcbjwvbmctY29udGFpbmVyPiJdfQ==
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tY2FzY2FkZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tY2FzY2FkZS10ZW1wbGF0ZS9xdWVzdGlvbi1jYXNjYWRlLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1jYXNjYWRlLXRlbXBsYXRlL3F1ZXN0aW9uLWNhc2NhZGUtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBZSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFNNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7OztBQVF0RSxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUE7SUFDaEMsQ0FBQztJQVVELElBQWEsV0FBVyxDQUFDLEtBQXdCO1FBQy9DLElBQUks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QWUsRUFBRSxJQUFJLENBQUMsZUFBZTt3QkFDckMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFVBQVU7d0JBQ2xDLGVBQWUsRUFBRSxHQUFHO3FCQUNyQjtpQkFDRixDQUFDLENBQUMsQ0FBQztnQkFFSixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWpPVSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQywrUUNwQjdDLG13QkFXZTs7MkZEU0YsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLCtCQUErQjs4S0FzQmhDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVPLFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUXVlc3Rpb25DYXNjYWRlVGVtcGxhdGVGb3JtSW50ZXJmYWNlLCBRdWVzdGlvbkdyb3VwQ2hpbGRPZlF1ZXN0aW9uQ2FzY2FkZVRlbXBsYXRlRm9ybUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtLWludGVyZmFjZXMvcXVlc3Rpb24tY2FzY2FkZS5mb3JtLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUXVlc3Rpb25BbnN3ZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcXVlc3Rpb24tYW5zd2VyLm1vZGVsJztcclxuaW1wb3J0IHsgU3VydmV5TGliU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N1cnZleS1saWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uTmdyeE1vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9zdGF0ZXMvZW50aXRlcy9xdWVzdGlvbi5lbnRpdHknO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgc3VydmV5QWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RhdGVzL3N1cnZleS1zdG9yZS9zdXJ2ZXkuYWN0aW9uJztcclxuaW1wb3J0IHsgcXVlc3Rpb25TZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0YXRlcy9zdXJ2ZXktc3RvcmUvcXVlc3Rpb24uc2VsZWN0b3InO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL2lucHV0LXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFN1cnZleUFuc3dlckR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1hbnN3ZXIuZHRvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXF1ZXN0aW9uLWNhc2NhZGUtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1jYXNjYWRlLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbi1jYXNjYWRlLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uQ2FzY2FkZVRlbXBsYXRlQ29tcG9uZW50IHtcclxuICBzdXJ2ZXlRdWVzdGlvbkFycjogU3VydmV5UXVlc3Rpb25EdG9bXSA9IFtdO1xyXG4gIHJGb3JtOiBGb3JtR3JvdXA8UXVlc3Rpb25DYXNjYWRlVGVtcGxhdGVGb3JtSW50ZXJmYWNlPjtcclxuICBwYWdlUXVlc3Rpb25zJCA9IHRoaXMuX1N0b3JlLnNlbGVjdFNpZ25hbChxdWVzdGlvblNlbGVjdG9ycy5wYWdlUXVlc3Rpb25zKTtcclxuXHJcbiAgZ2V0IGZDdHJscygpIHtcclxuICAgIHJldHVybiB0aGlzLnJGb3JtLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHF1ZXN0aW9uVHlwZUVudW0oKSB7XHJcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcclxuICB9XHJcblxyXG4gIGdldCBxdWVzdGlvbkZvcm1BcnJheSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZDdHJscy5xdWVzdGlvbkFyclxyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIHBhZ2VJZDogbnVtYmVyID0gbnVsbDtcclxuICBASW5wdXQoKSBxdWVzdGlvbkdyb3VwSWQ6IG51bWJlciA9IG51bGw7XHJcbiAgQElucHV0KCkgaXNQcmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdXJ2ZXlMYW5ndWFnZUlkOiBudW1iZXIgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHN1cnZleUtleTogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSBhcHBsaWNhbnRLZXk6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBzZXRRdWVzdGlvbih2YWx1ZTogUXVlc3Rpb25OZ3J4TW9kZWwpIHtcclxuICAgIGlmICh0aGlzLnN1cnZleVF1ZXN0aW9uQXJyPy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLnNldFF1ZXN0aW9ucyh2YWx1ZS5xdWVzdGlvbkFsbEluZm8pO1xyXG5cclxuICAgICAgdmFyIGNoaWxkUXVlc3Rpb24xID0gdGhpcy5wYWdlUXVlc3Rpb25zJCgpLmZpbmQoeCA9PiB4LnBhcmVudFF1ZXN0aW9uSWQgPT0gdmFsdWUucXVlc3Rpb25JZCk7XHJcbiAgICAgIGlmIChjaGlsZFF1ZXN0aW9uMSkge1xyXG4gICAgICAgIHRoaXMuc2V0UXVlc3Rpb25zKGNoaWxkUXVlc3Rpb24xLnF1ZXN0aW9uQWxsSW5mbyk7XHJcblxyXG4gICAgICAgIHZhciBjaGlsZFF1ZXN0aW9uMiA9IHRoaXMucGFnZVF1ZXN0aW9ucyQoKS5maW5kKHggPT4geC5wYXJlbnRRdWVzdGlvbklkID09IGNoaWxkUXVlc3Rpb24xLnF1ZXN0aW9uSWQpO1xyXG4gICAgICAgIGlmIChjaGlsZFF1ZXN0aW9uMikge1xyXG4gICAgICAgICAgdGhpcy5zZXRRdWVzdGlvbnMoY2hpbGRRdWVzdGlvbjIucXVlc3Rpb25BbGxJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBfc3VydmV5TGliU2VydmljZTogU3VydmV5TGliU2VydmljZSxcclxuICAgIHByaXZhdGUgX0FwaVNlcnZpY2U6IEFwaVNlcnZpY2UsIHByaXZhdGUgX1N0b3JlOiBTdG9yZSkge1xyXG4gICAgdGhpcy5yRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uQ2FzY2FkZVRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xyXG4gICAgICBxdWVzdGlvbkFycjogdGhpcy5fZm9ybUJ1aWxkZXIuYXJyYXk8Rm9ybUdyb3VwPFF1ZXN0aW9uR3JvdXBDaGlsZE9mUXVlc3Rpb25DYXNjYWRlVGVtcGxhdGVGb3JtSW50ZXJmYWNlPj4oW10pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnIuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKHYpO1xyXG4gICAgLy8gfSlcclxuICB9XHJcblxyXG4gIG9uVXBkYXRlQW5zd2VyKG1vZGVsOiBRdWVzdGlvbkFuc3dlck1vZGVsKSB7XHJcbiAgICBpZiAodGhpcy5zdXJ2ZXlRdWVzdGlvbkFyci5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGNvbnN0IHN1cnZleVF1ZXN0aW9uSW5kZXggPSB0aGlzLnN1cnZleVF1ZXN0aW9uQXJyLmZpbmRJbmRleChjID0+IGMucXVlc3Rpb25JZCA9PSBtb2RlbC5RdWVzdGlvbklkKTtcclxuXHJcbiAgICAgIHZhciBkZWxldGVkUXVlc3Rpb25zID0gW11cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSBzdXJ2ZXlRdWVzdGlvbkluZGV4ICsgMTsgaW5kZXggPCB0aGlzLnN1cnZleVF1ZXN0aW9uQXJyLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGRlbGV0ZWRRdWVzdGlvbnMucHVzaChpbmRleCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBzb3J0RGVsZXRlZEFyciA9IGRlbGV0ZWRRdWVzdGlvbnMuc29ydCgoYSwgYikgPT4gKGEgPiBiID8gLTEgOiAxKSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzb3J0RGVsZXRlZEFyci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50SW5kZXggPSBzb3J0RGVsZXRlZEFycltpbmRleF07XHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25JZCA9IHRoaXMuc3VydmV5UXVlc3Rpb25BcnJbZWxlbWVudEluZGV4XS5xdWVzdGlvbklkO1xyXG5cclxuICAgICAgICB0aGlzLl9TdG9yZS5kaXNwYXRjaChzdXJ2ZXlBY3Rpb25zLnJlbW92ZVF1ZXN0aW9uKHsgcXVlc3Rpb25JZDogcXVlc3Rpb25JZCB9KSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3VydmV5UXVlc3Rpb25BcnIgPSB0aGlzLnN1cnZleVF1ZXN0aW9uQXJyLmZpbHRlcih4ID0+IHgucXVlc3Rpb25JZCAhPSBxdWVzdGlvbklkKTtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uRm9ybUFycmF5LnJlbW92ZUF0KGVsZW1lbnRJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobW9kZWwuQW5zd2VyKSB7XHJcbiAgICAgIHZhciBzZWxlY3RlZEFuc3dlck9iaiA9IHRoaXMuc3VydmV5UXVlc3Rpb25BcnJcclxuICAgICAgICAuZmluZCh4ID0+IHgucXVlc3Rpb25JZCA9PSBtb2RlbC5RdWVzdGlvbklkKT8uc3VydmV5QW5zd2Vycy5maW5kKHggPT4geC5hbnN3ZXJJZCA9PT0gbW9kZWwuU3VydmV5QW5zd2VySWQpO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRBbnN3ZXJPYmo/LmlzT3RoZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuaXNPdGhlclF1ZXN0aW9uKG1vZGVsKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldE5leHRRdWVzdGlvbihtb2RlbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlkZW50aWZ5KGluZGV4LCBpdGVtOiBGb3JtR3JvdXA8UXVlc3Rpb25Hcm91cENoaWxkT2ZRdWVzdGlvbkNhc2NhZGVUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KSB7XHJcbiAgICByZXR1cm4gaXRlbS52YWx1ZS5pZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UXVlc3Rpb25zKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvbkFyci5wdXNoKHZhbHVlKTtcclxuXHJcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbkdyb3VwQ2hpbGRPZlF1ZXN0aW9uQ2FzY2FkZVRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xyXG4gICAgICBpZDogbmV3IEZvcm1Db250cm9sKHZhbHVlLnF1ZXN0aW9uSWQpLFxyXG4gICAgICB0eXBlSWQ6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZS5xdWVzdGlvblR5cGVJZCksXHJcbiAgICAgIGFuc3dlcjogbmV3IEZvcm1Db250cm9sKG51bGwpXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodmFsdWUuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIGdyb3VwLmNvbnRyb2xzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgIGdyb3VwLmNvbnRyb2xzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mQ3RybHMucXVlc3Rpb25BcnIucHVzaChncm91cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzT3RoZXJRdWVzdGlvbihtb2RlbDogUXVlc3Rpb25BbnN3ZXJNb2RlbCkge1xyXG4gICAgdGhpcy5fQXBpU2VydmljZS5nZXRJc090aGVyUXVlc3Rpb24oe1xyXG4gICAgICBwYXJlbnRRSWQ6IG1vZGVsLlF1ZXN0aW9uSWQsXHJcbiAgICAgIGdyb3VwSWQ6IHRoaXMucXVlc3Rpb25Hcm91cElkICxcclxuICAgICAgc3VydmV5S2V5IDogdGhpcy5zdXJ2ZXlLZXkgLFxyXG4gICAgICBzdXJ2ZXlMYW5ndWFnZUlkIDogdGhpcy5zdXJ2ZXlMYW5ndWFnZUlkXHJcbiAgICB9KS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgaWYgKHJlcy5lcnJvcnMuZmlsdGVyKHggPT4geC5jb2RlID09IDE3KS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHJlcy5xdWVzdGlvblR5cGVJZCA9IFF1ZXN0aW9uVHlwZUVudW0uVGV4dElucHV0O1xyXG5cclxuICAgICAgICB0aGlzLl9TdG9yZS5kaXNwYXRjaChzdXJ2ZXlBY3Rpb25zLmFkZFF1ZXN0aW9uKHtcclxuICAgICAgICAgIHF1ZXN0aW9uOiB7XHJcbiAgICAgICAgICAgIHN1cnZleVBhZ2VJZDogdGhpcy5wYWdlSWQsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHJlcy5xdWVzdGlvbklkLFxyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6IHJlcy5xdWVzdGlvblR5cGVJZCxcclxuICAgICAgICAgICAgaW5wdXRUeXBlSWQ6IElucHV0VHlwZUVudW0uVGV4dCxcclxuICAgICAgICAgICAgaXNRdWVzdGlvbkdyb3VwOiBmYWxzZSxcclxuICAgICAgICAgICAgYW5zd2VySWQ6IG51bGwsXHJcbiAgICAgICAgICAgIGFuc3dlcklkQXJyOiBudWxsLFxyXG4gICAgICAgICAgICBhbnN3ZXJUZXh0OiBudWxsLFxyXG4gICAgICAgICAgICBpc1JlcXVpcmVkOiByZXMuaXNSZXF1aXJlZCxcclxuICAgICAgICAgICAgaXNWYWxpZDogbnVsbCxcclxuICAgICAgICAgICAgaXNEaXNhYmxlZDogcmVzLmlzUmVhZE9ubHksXHJcbiAgICAgICAgICAgIGlzU2hvdzogcmVzLmlzVmlzYWJsZSxcclxuICAgICAgICAgICAgaXNEaXNhYmxlZF9kZWZhdWx0OiByZXMuaXNSZWFkT25seSxcclxuICAgICAgICAgICAgaXNTaG93X2RlZmF1bHQ6IHJlcy5pc1Zpc2FibGUsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uR3JvdXBJZDogdGhpcy5xdWVzdGlvbkdyb3VwSWQsXHJcbiAgICAgICAgICAgIHBhcmVudFF1ZXN0aW9uSWQ6IG1vZGVsLlF1ZXN0aW9uSWQsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uQWxsSW5mbzoge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHJlcy5xdWVzdGlvbklkLFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uVHlwZUlkOiByZXMucXVlc3Rpb25UeXBlSWQsXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25OYW1lOiByZXMucXVlc3Rpb25OYW1lLFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uVGl0bGU6IHJlcy5xdWVzdGlvblRpdGxlLFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uRGVzY3JpcHRpb246IHJlcy5xdWVzdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IHJlcy5pc1JlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGlzVmlzYWJsZTogcmVzLmlzVmlzYWJsZSxcclxuICAgICAgICAgICAgICBpc0VkaXRhYmxlOiByZXMuaXNFZGl0YWJsZSxcclxuICAgICAgICAgICAgICBpc09UUE9wdGlvbjogcmVzLmlzT3RwT3B0aW9uLFxyXG4gICAgICAgICAgICAgIGlzQWR2YW5jZVRleHRBcmVhOiByZXMuaXNBZHZhbmNlVGV4dEFyZWEsXHJcbiAgICAgICAgICAgICAgaXNSZWFkT25seTogcmVzLmlzUmVhZE9ubHksXHJcbiAgICAgICAgICAgICAgaXNQcmVEZWZpbmU6IHJlcy5pc1ByZURlZmluZSxcclxuICAgICAgICAgICAgICBtYXhMZXZlbFZhbHVlOiByZXMubWF4TGV2ZWxWYWx1ZSxcclxuICAgICAgICAgICAgICBzdXJ2ZXlBbnN3ZXJzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGFuc3dlcklkOiByZXMuYW5zd2VySWQsXHJcbiAgICAgICAgICAgICAgICAgIGlucHV0VHlwZUlkOiBJbnB1dFR5cGVFbnVtLlRleHRcclxuICAgICAgICAgICAgICAgIH0gYXMgU3VydmV5QW5zd2VyRHRvXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXJ2ZXlTdWJRdWVzdGlvbnM6IHJlcy5zdXJ2ZXlTdWJRdWVzdGlvbnMsXHJcbiAgICAgICAgICAgICAgc3VydmV5U3ViUXVlc3Rpb25MZXZlbHM6IHJlcy5zdXJ2ZXlTdWJRdWVzdGlvbkxldmVsc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICB0aGlzLnNldFF1ZXN0aW9ucyh7XHJcbiAgICAgICAgICBxdWVzdGlvbklkOiByZXMucXVlc3Rpb25JZCxcclxuICAgICAgICAgIHF1ZXN0aW9uVHlwZUlkOiByZXMucXVlc3Rpb25UeXBlSWQsXHJcbiAgICAgICAgICBxdWVzdGlvbk5hbWU6IHJlcy5xdWVzdGlvbk5hbWUsXHJcbiAgICAgICAgICBxdWVzdGlvblRpdGxlOiByZXMucXVlc3Rpb25UaXRsZSxcclxuICAgICAgICAgIHF1ZXN0aW9uRGVzY3JpcHRpb246IHJlcy5xdWVzdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgaXNSZXF1aXJlZDogcmVzLmlzUmVxdWlyZWQsXHJcbiAgICAgICAgICBpc1Zpc2FibGU6IHJlcy5pc1Zpc2FibGUsXHJcbiAgICAgICAgICBpc0VkaXRhYmxlOiByZXMuaXNFZGl0YWJsZSxcclxuICAgICAgICAgIGlzT1RQT3B0aW9uOiByZXMuaXNPdHBPcHRpb24sXHJcbiAgICAgICAgICBpc0FkdmFuY2VUZXh0QXJlYTogcmVzLmlzQWR2YW5jZVRleHRBcmVhLFxyXG4gICAgICAgICAgaXNSZWFkT25seTogcmVzLmlzUmVhZE9ubHksXHJcbiAgICAgICAgICBpc1ByZURlZmluZTogcmVzLmlzUHJlRGVmaW5lLFxyXG4gICAgICAgICAgbWF4TGV2ZWxWYWx1ZTogcmVzLm1heExldmVsVmFsdWUsXHJcbiAgICAgICAgICBzdXJ2ZXlBbnN3ZXJzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBhbnN3ZXJJZDogcmVzLmFuc3dlcklkLFxyXG4gICAgICAgICAgICAgIGlucHV0VHlwZUlkOiBJbnB1dFR5cGVFbnVtLlRleHRcclxuICAgICAgICAgICAgfSBhcyBTdXJ2ZXlBbnN3ZXJEdG9cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBzdXJ2ZXlTdWJRdWVzdGlvbnM6IHJlcy5zdXJ2ZXlTdWJRdWVzdGlvbnMsXHJcbiAgICAgICAgICBzdXJ2ZXlTdWJRdWVzdGlvbkxldmVsczogcmVzLnN1cnZleVN1YlF1ZXN0aW9uTGV2ZWxzXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0TmV4dFF1ZXN0aW9uKG1vZGVsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBnZXROZXh0UXVlc3Rpb24obW9kZWw6IFF1ZXN0aW9uQW5zd2VyTW9kZWwpIHtcclxuICAgIHRoaXMuX0FwaVNlcnZpY2UuZ2V0TmV4dFF1ZXN0aW9uKHtcclxuICAgICAgYW5zd2VySWQ6IG1vZGVsLkFuc3dlcixcclxuICAgICAgYXBwbGljYW50S2V5OiB0aGlzLmFwcGxpY2FudEtleSxcclxuICAgICAgaXNQcmU6IHRoaXMuaXNQcmUsXHJcbiAgICAgIHN1cnZleUxhbmd1YWdlSWQ6IHRoaXMuc3VydmV5TGFuZ3VhZ2VJZFxyXG4gICAgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmIChyZXMuZXJyb3JzLmZpbHRlcih4ID0+IHguY29kZSA9PSAxNykubGVuZ3RoID09IDApIHtcclxuICAgICAgICB0aGlzLl9TdG9yZS5kaXNwYXRjaChzdXJ2ZXlBY3Rpb25zLmFkZFF1ZXN0aW9uKHtcclxuICAgICAgICAgIHF1ZXN0aW9uOiB7XHJcbiAgICAgICAgICAgIHN1cnZleVBhZ2VJZDogdGhpcy5wYWdlSWQsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHJlcy5xdWVzdGlvbklkLFxyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6IHJlcy5xdWVzdGlvblR5cGVJZCxcclxuICAgICAgICAgICAgaW5wdXRUeXBlSWQ6IHJlcy5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0VHlwZUlkLFxyXG4gICAgICAgICAgICBpc1F1ZXN0aW9uR3JvdXA6IGZhbHNlLFxyXG4gICAgICAgICAgICBhbnN3ZXJJZDogbnVsbCxcclxuICAgICAgICAgICAgYW5zd2VySWRBcnI6IG51bGwsXHJcbiAgICAgICAgICAgIGFuc3dlclRleHQ6IG51bGwsXHJcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ6IHJlcy5pc1JlcXVpcmVkLFxyXG4gICAgICAgICAgICBpc1ZhbGlkOiBudWxsLFxyXG4gICAgICAgICAgICBpc0Rpc2FibGVkOiByZXMuaXNSZWFkT25seSxcclxuICAgICAgICAgICAgaXNTaG93OiByZXMuaXNWaXNhYmxlLFxyXG4gICAgICAgICAgICBpc0Rpc2FibGVkX2RlZmF1bHQ6IHJlcy5pc1JlYWRPbmx5LFxyXG4gICAgICAgICAgICBpc1Nob3dfZGVmYXVsdDogcmVzLmlzVmlzYWJsZSxcclxuICAgICAgICAgICAgcXVlc3Rpb25Hcm91cElkOiB0aGlzLnF1ZXN0aW9uR3JvdXBJZCxcclxuICAgICAgICAgICAgcGFyZW50UXVlc3Rpb25JZDogbW9kZWwuUXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgcXVlc3Rpb25BbGxJbmZvOiByZXNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0UXVlc3Rpb25zKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbkZvcm1BcnJheS5jb250cm9sczsgdHJhY2tCeTppZGVudGlmeSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgIDxsaWItcXVlc3Rpb24tZHJvcGRvd24tdGVtcGxhdGUgI3F1ZXN0aW9uRHJvcGRvd25UZW1wbGF0ZVxyXG4gICAgICAgICpuZ0lmPVwiKHBhZ2VRdWVzdGlvbnMkKCkgfGZpbmRRdWVzdGlvbiA6aXRlbS52YWx1ZS5pZCk/LnF1ZXN0aW9uVHlwZSAhPSBxdWVzdGlvblR5cGVFbnVtLlRleHRJbnB1dFwiXHJcbiAgICAgICAgW3NldFF1ZXN0aW9uXT1cInBhZ2VRdWVzdGlvbnMkKCkgfGZpbmRRdWVzdGlvbiA6aXRlbS52YWx1ZS5pZCBcIiAoZW1pdHRlcik9XCJvblVwZGF0ZUFuc3dlcigkZXZlbnQpXCI+XHJcbiAgICA8L2xpYi1xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bGliLXF1ZXN0aW9uLXRleHQtdGVtcGxhdGUgI3F1ZXN0aW9uVGV4dFRlbXBsYXRlXHJcbiAgICAgICAgKm5nSWY9XCIocGFnZVF1ZXN0aW9ucyQoKSB8ZmluZFF1ZXN0aW9uIDppdGVtLnZhbHVlLmlkKT8ucXVlc3Rpb25UeXBlID09IHF1ZXN0aW9uVHlwZUVudW0uVGV4dElucHV0XCJcclxuICAgICAgICBbc2V0UXVlc3Rpb25dPVwicGFnZVF1ZXN0aW9ucyQoKSB8ZmluZFF1ZXN0aW9uIDppdGVtLnZhbHVlLmlkIFwiXHJcbiAgICAgICAgW2lzQXJhYmljTGFuZ109XCJ0cnVlXCI+PC9saWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZT5cclxuXHJcbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
52
52
  type: Inject,
53
53
  args: [LibConfigService]
54
54
  }] }]; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7OztBQWlCeEUsTUFBTSxPQUFPLFVBQVU7SUFHckIsWUFBb0IsV0FBdUIsRUFDUCxpQkFBaUM7UUFEakQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDUCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWdCO1FBQ25FLElBQUksQ0FBQyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBMkQ7UUFDekUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUF3QixHQUFHLElBQUksQ0FBQyxHQUFHLDJCQUEyQixXQUFXLEVBQUUsRUFDckcsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCLENBQUUsTUFBK0I7UUFDakQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUEyQixHQUFHLElBQUksQ0FBQyxHQUFHLDhCQUE4QixXQUFXLEVBQUUsRUFDM0csRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQTRCLEdBQUcsSUFBSSxDQUFDLEdBQUcsa0NBQWtDLEVBQ25HLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELG1DQUFtQyxDQUFDLE1BQXlFO1FBQzNHLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBNkMsR0FBRyxJQUFJLENBQUMsR0FBRywyQ0FBMkMsV0FBVyxFQUFFLEVBQzFJLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFxRDtRQUNsRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQWtDLEdBQUcsSUFBSSxDQUFDLEdBQUcsNkJBQTZCLFdBQVcsRUFBRSxFQUNqSCxFQUFFLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxjQUFjLENBQUUsTUFBZ0Y7UUFDOUYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFtQyxHQUFHLElBQUksQ0FBQyxHQUFHLDZCQUE2QixXQUFXLEVBQUUsRUFDbEgsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsY0FBYyxDQUFFLE1BQWlGO1FBQy9GLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBbUMsR0FBRyxJQUFJLENBQUMsR0FBRyw2QkFBNkIsV0FBVyxFQUFFLEVBQ2xILEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFpRjtRQUM5RixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcsNkJBQTZCLFdBQVcsRUFBRSxFQUNsSCxFQUFFLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBckRVLFVBQVUsNENBSVgsZ0JBQWdCO2tIQUpmLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExpYkNvbmZpZ1NlcnZpY2UsIExpYkNvbmZpZ01vZGVsIH0gZnJvbSAnLi9saWItY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XHJcbmltcG9ydCB7IER0b0Jhc2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZHRvcy9iYXNlL2R0by5iYXNlJztcclxuaW1wb3J0IHsgR2V0SXNPdGhlclF1ZXN0aW9uUmVzdWx0LCBHZXROZXh0UXVlc3Rpb25SZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvcmVzdWx0cy9hcGkucmVzdWx0JztcclxuaW1wb3J0IHsgUmVzdWx0RHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3MvYmFzZS9yZXN1bHQuZHRvJztcclxuaW1wb3J0IHsgSW5zdGl0dXRpb25EdG8gfSBmcm9tICcuLi8uLi9zaGFyZWQvZHRvcy9pbnN0aXR1dGlvbi5kdG8nO1xyXG5pbXBvcnQgeyBJbnN0aXR1dGlvbkJyYW5jaER0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL2luc3RpdHV0aW9uLWJyYW5jaC5kdG8nO1xyXG5pbXBvcnQgeyBJbnN0aXR1dGlvbkNvbGxhZ2VEdG8gfSBmcm9tICcuLi8uLi9zaGFyZWQvZHRvcy9pbnN0aXR1dGlvbi1jb2xsYWdlLmR0byc7XHJcbmltcG9ydCB7IEluc3RpdHV0aW9uU2VjdGlvbkR0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL2luc3RpdHV0aW9uLXNlY3Rpb24uZHRvJztcclxuaW1wb3J0IHsgSW5zdGl0dXRpb25Qcm9ncmFtRHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3MvaW5zdGl0dXRpb24tcHJvZ3JhbS5kdG8nO1xyXG5pbXBvcnQgeyBQcm9ncmFtc1JlbGF0ZWRUb0luc3RpdHV0aW9uRHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3MvcHJvZ3JhbXMtcmVsYXRlZC10by1pbnN0aXR1dGlvbi5kdG8nO1xyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHVybDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfSHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIEBJbmplY3QoTGliQ29uZmlnU2VydmljZSkgcHJpdmF0ZSBfTGliQ29uZmlnU2VydmljZTogTGliQ29uZmlnTW9kZWwpIHtcclxuICAgIHRoaXMudXJsID0gX0xpYkNvbmZpZ1NlcnZpY2UuYXBpVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmV4dFF1ZXN0aW9uKGZpbHRlcjogeyBhbnN3ZXJJZCwgc3VydmV5TGFuZ3VhZ2VJZCwgYXBwbGljYW50S2V5LCBpc1ByZSB9KTogT2JzZXJ2YWJsZTxHZXROZXh0UXVlc3Rpb25SZXN1bHQ+IHtcclxuICAgIHZhciBxdWVyeVN0cmluZyA9ICQucGFyYW0oZmlsdGVyKTtcclxuICAgIHJldHVybiB0aGlzLl9IdHRwQ2xpZW50LmdldDxHZXROZXh0UXVlc3Rpb25SZXN1bHQ+KGAke3RoaXMudXJsfS9TdXJ2ZXkvR2V0TmV4dFF1ZXN0aW9uPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNPdGhlclF1ZXN0aW9uIChmaWx0ZXI6IHsgcGFyZW50UUlkICwgZ3JvdXBJZCB9KTogT2JzZXJ2YWJsZTxHZXRJc090aGVyUXVlc3Rpb25SZXN1bHQ+IHtcclxuICAgIHZhciBxdWVyeVN0cmluZyA9ICQucGFyYW0oZmlsdGVyKTtcclxuICAgIHJldHVybiB0aGlzLl9IdHRwQ2xpZW50LmdldDxHZXRJc090aGVyUXVlc3Rpb25SZXN1bHQ+KGAke3RoaXMudXJsfS9TdXJ2ZXkvR2V0SXNPdGhlclF1ZXN0aW9uPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsSW5zdGl0dXRpb25zKCApIHtcclxuICAgIHJldHVybiB0aGlzLl9IdHRwQ2xpZW50LmdldDxSZXN1bHREdG88SW5zdGl0dXRpb25EdG8+PihgJHt0aGlzLnVybH0vSW5zdGl0dXRpb25zL0dldEFsbEluc3RpdHV0aW9uc2AsXHJcbiAgICAgeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnZGlzYWJsZS1lcnJvci1hbGVydCc6ICd0cnVlJyB9KSB9KTtcclxuICB9XHJcblxyXG4gIGdldEFsbFByb2dyYW1zUmVsYXRlZFRvSW5zdGl0dXRpb25zKGZpbHRlcjp7c3VibWlzc2lvbklkOnN0cmluZyAsZ2VuZXJhdGVkSWQ6c3RyaW5nLHJlcXVlc3RUaW1lc3RhbXA6c3RyaW5nIH0gKSB7XHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAkLnBhcmFtKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5fSHR0cENsaWVudC5nZXQ8UmVzdWx0RHRvPFByb2dyYW1zUmVsYXRlZFRvSW5zdGl0dXRpb25EdG8+PihgJHt0aGlzLnVybH0vSW5zdGl0dXRpb25zL0dldFByb2dyYW1zRm9ySW5zdGl0dXRpb24/JHtxdWVyeVN0cmluZ31gLFxyXG4gICAgIHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ2Rpc2FibGUtZXJyb3ItYWxlcnQnOiAndHJ1ZScgfSkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxCcmFuY2hlcyhmaWx0ZXI6e3N1Ym1pc3Npb25JZDpzdHJpbmcgLHJlcXVlc3RUaW1lc3RhbXA6c3RyaW5nfSApIHtcclxuICAgIHZhciBxdWVyeVN0cmluZyA9ICQucGFyYW0oZmlsdGVyKTtcclxuICAgIHJldHVybiB0aGlzLl9IdHRwQ2xpZW50LmdldDxSZXN1bHREdG88SW5zdGl0dXRpb25CcmFuY2hEdG8+PihgJHt0aGlzLnVybH0vSW5zdGl0dXRpb25zL0dldEJyYW5jaGVzPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ29sbGFnZXMoIGZpbHRlcjp7c3VibWlzc2lvbklkOnN0cmluZyAsYnJhbmNoU3VibWlzc2lvbklkOnN0cmluZyxyZXF1ZXN0VGltZXN0YW1wOnN0cmluZyB9KSB7XHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAkLnBhcmFtKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5fSHR0cENsaWVudC5nZXQ8UmVzdWx0RHRvPEluc3RpdHV0aW9uQ29sbGFnZUR0bz4+KGAke3RoaXMudXJsfS9JbnN0aXR1dGlvbnMvR2V0Q29sbGFnZXM/JHtxdWVyeVN0cmluZ31gLFxyXG4gICAgIHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ2Rpc2FibGUtZXJyb3ItYWxlcnQnOiAndHJ1ZScgfSkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZWN0aW9ucyggZmlsdGVyOntzdWJtaXNzaW9uSWQ6c3RyaW5nICxjb2xsYWdlU3VibWlzc2lvbklkOnN0cmluZyxyZXF1ZXN0VGltZXN0YW1wOnN0cmluZyB9KSB7XHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAkLnBhcmFtKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5fSHR0cENsaWVudC5nZXQ8UmVzdWx0RHRvPEluc3RpdHV0aW9uU2VjdGlvbkR0bz4+KGAke3RoaXMudXJsfS9JbnN0aXR1dGlvbnMvR2V0U2VjdGlvbnM/JHtxdWVyeVN0cmluZ31gLFxyXG4gICAgIHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ2Rpc2FibGUtZXJyb3ItYWxlcnQnOiAndHJ1ZScgfSkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxQcm9ncmFtcyhmaWx0ZXI6e3N1Ym1pc3Npb25JZDpzdHJpbmcgLHNlY3Rpb25HZW5lcmF0ZWRLZXk6c3RyaW5nLHJlcXVlc3RUaW1lc3RhbXA6c3RyaW5nIH0gKSB7XHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAkLnBhcmFtKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5fSHR0cENsaWVudC5nZXQ8UmVzdWx0RHRvPEluc3RpdHV0aW9uUHJvZ3JhbUR0bz4+KGAke3RoaXMudXJsfS9JbnN0aXR1dGlvbnMvR2V0UHJvZ3JhbXM/JHtxdWVyeVN0cmluZ31gLFxyXG4gICAgIHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ2Rpc2FibGUtZXJyb3ItYWxlcnQnOiAndHJ1ZScgfSkgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7OztBQWlCeEUsTUFBTSxPQUFPLFVBQVU7SUFHckIsWUFBb0IsV0FBdUIsRUFDUCxpQkFBaUM7UUFEakQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDUCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWdCO1FBQ25FLElBQUksQ0FBQyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBMkQ7UUFDekUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUF3QixHQUFHLElBQUksQ0FBQyxHQUFHLDJCQUEyQixXQUFXLEVBQUUsRUFDckcsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCLENBQUUsTUFBOEQ7UUFDaEYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUEyQixHQUFHLElBQUksQ0FBQyxHQUFHLDhCQUE4QixXQUFXLEVBQUUsRUFDM0csRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQTRCLEdBQUcsSUFBSSxDQUFDLEdBQUcsa0NBQWtDLEVBQ25HLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELG1DQUFtQyxDQUFDLE1BQXlFO1FBQzNHLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBNkMsR0FBRyxJQUFJLENBQUMsR0FBRywyQ0FBMkMsV0FBVyxFQUFFLEVBQzFJLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFxRDtRQUNsRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQWtDLEdBQUcsSUFBSSxDQUFDLEdBQUcsNkJBQTZCLFdBQVcsRUFBRSxFQUNqSCxFQUFFLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxjQUFjLENBQUUsTUFBZ0Y7UUFDOUYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFtQyxHQUFHLElBQUksQ0FBQyxHQUFHLDZCQUE2QixXQUFXLEVBQUUsRUFDbEgsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsY0FBYyxDQUFFLE1BQWlGO1FBQy9GLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBbUMsR0FBRyxJQUFJLENBQUMsR0FBRyw2QkFBNkIsV0FBVyxFQUFFLEVBQ2xILEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFpRjtRQUM5RixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcsNkJBQTZCLFdBQVcsRUFBRSxFQUNsSCxFQUFFLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBckRVLFVBQVUsNENBSVgsZ0JBQWdCO2tIQUpmLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExpYkNvbmZpZ1NlcnZpY2UsIExpYkNvbmZpZ01vZGVsIH0gZnJvbSAnLi9saWItY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XHJcbmltcG9ydCB7IER0b0Jhc2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZHRvcy9iYXNlL2R0by5iYXNlJztcclxuaW1wb3J0IHsgR2V0SXNPdGhlclF1ZXN0aW9uUmVzdWx0LCBHZXROZXh0UXVlc3Rpb25SZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvcmVzdWx0cy9hcGkucmVzdWx0JztcclxuaW1wb3J0IHsgUmVzdWx0RHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3MvYmFzZS9yZXN1bHQuZHRvJztcclxuaW1wb3J0IHsgSW5zdGl0dXRpb25EdG8gfSBmcm9tICcuLi8uLi9zaGFyZWQvZHRvcy9pbnN0aXR1dGlvbi5kdG8nO1xyXG5pbXBvcnQgeyBJbnN0aXR1dGlvbkJyYW5jaER0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL2luc3RpdHV0aW9uLWJyYW5jaC5kdG8nO1xyXG5pbXBvcnQgeyBJbnN0aXR1dGlvbkNvbGxhZ2VEdG8gfSBmcm9tICcuLi8uLi9zaGFyZWQvZHRvcy9pbnN0aXR1dGlvbi1jb2xsYWdlLmR0byc7XHJcbmltcG9ydCB7IEluc3RpdHV0aW9uU2VjdGlvbkR0byB9IGZyb20gJy4uLy4uL3NoYXJlZC9kdG9zL2luc3RpdHV0aW9uLXNlY3Rpb24uZHRvJztcclxuaW1wb3J0IHsgSW5zdGl0dXRpb25Qcm9ncmFtRHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3MvaW5zdGl0dXRpb24tcHJvZ3JhbS5kdG8nO1xyXG5pbXBvcnQgeyBQcm9ncmFtc1JlbGF0ZWRUb0luc3RpdHV0aW9uRHRvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2R0b3MvcHJvZ3JhbXMtcmVsYXRlZC10by1pbnN0aXR1dGlvbi5kdG8nO1xyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHVybDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfSHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIEBJbmplY3QoTGliQ29uZmlnU2VydmljZSkgcHJpdmF0ZSBfTGliQ29uZmlnU2VydmljZTogTGliQ29uZmlnTW9kZWwpIHtcclxuICAgIHRoaXMudXJsID0gX0xpYkNvbmZpZ1NlcnZpY2UuYXBpVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmV4dFF1ZXN0aW9uKGZpbHRlcjogeyBhbnN3ZXJJZCwgc3VydmV5TGFuZ3VhZ2VJZCwgYXBwbGljYW50S2V5LCBpc1ByZSB9KTogT2JzZXJ2YWJsZTxHZXROZXh0UXVlc3Rpb25SZXN1bHQ+IHtcclxuICAgIHZhciBxdWVyeVN0cmluZyA9ICQucGFyYW0oZmlsdGVyKTtcclxuICAgIHJldHVybiB0aGlzLl9IdHRwQ2xpZW50LmdldDxHZXROZXh0UXVlc3Rpb25SZXN1bHQ+KGAke3RoaXMudXJsfS9TdXJ2ZXkvR2V0TmV4dFF1ZXN0aW9uPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNPdGhlclF1ZXN0aW9uIChmaWx0ZXI6IHsgcGFyZW50UUlkICwgZ3JvdXBJZCAsIHN1cnZleUxhbmd1YWdlSWQgLCBzdXJ2ZXlLZXkgfSk6IE9ic2VydmFibGU8R2V0SXNPdGhlclF1ZXN0aW9uUmVzdWx0PiB7XHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAkLnBhcmFtKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5fSHR0cENsaWVudC5nZXQ8R2V0SXNPdGhlclF1ZXN0aW9uUmVzdWx0PihgJHt0aGlzLnVybH0vU3VydmV5L0dldElzT3RoZXJRdWVzdGlvbj8ke3F1ZXJ5U3RyaW5nfWAsXHJcbiAgICAgeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnZGlzYWJsZS1lcnJvci1hbGVydCc6ICd0cnVlJyB9KSB9KTtcclxuICB9XHJcblxyXG4gIGdldEFsbEluc3RpdHV0aW9ucyggKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fSHR0cENsaWVudC5nZXQ8UmVzdWx0RHRvPEluc3RpdHV0aW9uRHRvPj4oYCR7dGhpcy51cmx9L0luc3RpdHV0aW9ucy9HZXRBbGxJbnN0aXR1dGlvbnNgLFxyXG4gICAgIHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ2Rpc2FibGUtZXJyb3ItYWxlcnQnOiAndHJ1ZScgfSkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxQcm9ncmFtc1JlbGF0ZWRUb0luc3RpdHV0aW9ucyhmaWx0ZXI6e3N1Ym1pc3Npb25JZDpzdHJpbmcgLGdlbmVyYXRlZElkOnN0cmluZyxyZXF1ZXN0VGltZXN0YW1wOnN0cmluZyB9ICkge1xyXG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gJC5wYXJhbShmaWx0ZXIpO1xyXG4gICAgcmV0dXJuIHRoaXMuX0h0dHBDbGllbnQuZ2V0PFJlc3VsdER0bzxQcm9ncmFtc1JlbGF0ZWRUb0luc3RpdHV0aW9uRHRvPj4oYCR7dGhpcy51cmx9L0luc3RpdHV0aW9ucy9HZXRQcm9ncmFtc0Zvckluc3RpdHV0aW9uPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQnJhbmNoZXMoZmlsdGVyOntzdWJtaXNzaW9uSWQ6c3RyaW5nICxyZXF1ZXN0VGltZXN0YW1wOnN0cmluZ30gKSB7XHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAkLnBhcmFtKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5fSHR0cENsaWVudC5nZXQ8UmVzdWx0RHRvPEluc3RpdHV0aW9uQnJhbmNoRHRvPj4oYCR7dGhpcy51cmx9L0luc3RpdHV0aW9ucy9HZXRCcmFuY2hlcz8ke3F1ZXJ5U3RyaW5nfWAsXHJcbiAgICAgeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnZGlzYWJsZS1lcnJvci1hbGVydCc6ICd0cnVlJyB9KSB9KTtcclxuICB9XHJcblxyXG4gIGdldEFsbENvbGxhZ2VzKCBmaWx0ZXI6e3N1Ym1pc3Npb25JZDpzdHJpbmcgLGJyYW5jaFN1Ym1pc3Npb25JZDpzdHJpbmcscmVxdWVzdFRpbWVzdGFtcDpzdHJpbmcgfSkge1xyXG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gJC5wYXJhbShmaWx0ZXIpO1xyXG4gICAgcmV0dXJuIHRoaXMuX0h0dHBDbGllbnQuZ2V0PFJlc3VsdER0bzxJbnN0aXR1dGlvbkNvbGxhZ2VEdG8+PihgJHt0aGlzLnVybH0vSW5zdGl0dXRpb25zL0dldENvbGxhZ2VzPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU2VjdGlvbnMoIGZpbHRlcjp7c3VibWlzc2lvbklkOnN0cmluZyAsY29sbGFnZVN1Ym1pc3Npb25JZDpzdHJpbmcscmVxdWVzdFRpbWVzdGFtcDpzdHJpbmcgfSkge1xyXG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gJC5wYXJhbShmaWx0ZXIpO1xyXG4gICAgcmV0dXJuIHRoaXMuX0h0dHBDbGllbnQuZ2V0PFJlc3VsdER0bzxJbnN0aXR1dGlvblNlY3Rpb25EdG8+PihgJHt0aGlzLnVybH0vSW5zdGl0dXRpb25zL0dldFNlY3Rpb25zPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUHJvZ3JhbXMoZmlsdGVyOntzdWJtaXNzaW9uSWQ6c3RyaW5nICxzZWN0aW9uR2VuZXJhdGVkS2V5OnN0cmluZyxyZXF1ZXN0VGltZXN0YW1wOnN0cmluZyB9ICkge1xyXG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gJC5wYXJhbShmaWx0ZXIpO1xyXG4gICAgcmV0dXJuIHRoaXMuX0h0dHBDbGllbnQuZ2V0PFJlc3VsdER0bzxJbnN0aXR1dGlvblByb2dyYW1EdG8+PihgJHt0aGlzLnVybH0vSW5zdGl0dXRpb25zL0dldFByb2dyYW1zPyR7cXVlcnlTdHJpbmd9YCxcclxuICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdkaXNhYmxlLWVycm9yLWFsZXJ0JzogJ3RydWUnIH0pIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=