tango-app-ui-analyse-trax 3.4.1-alpha.3 → 3.4.1-alpha.4

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.
@@ -369,7 +369,18 @@ export class AddChecklistComponent {
369
369
  if (answers) {
370
370
  for (let i = 0; i < answers.length; i++) {
371
371
  let qn = answers.at(i).get('linkedQuestion')?.value;
372
- if (qn) {
372
+ let count = 0;
373
+ let questions = this.ChecklistForm.get('sections').at(secIdx).get('questions');
374
+ questions.value.forEach((qtn) => {
375
+ if (Array.isArray(qtn.answers)) {
376
+ qtn.answers.forEach((ans) => {
377
+ if (ans.showLinked && ans.linkedQuestion == qn && qtn.qno - 1 != qnIdx) {
378
+ count++;
379
+ }
380
+ });
381
+ }
382
+ });
383
+ if (qn && !count) {
373
384
  this.getSectionFormArray().at(secIdx).get('questions').at(qn - 1).get('linkType')?.setValue(false);
374
385
  }
375
386
  }
@@ -545,9 +556,22 @@ export class AddChecklistComponent {
545
556
  if (!['descriptive', 'image', 'descriptiveImage', 'multipleImage', 'video', 'linearscale', 'time', 'date'].includes(type)) {
546
557
  for (let i = 0; i < linkedQuestion?.length; i++) {
547
558
  let linkedQn = (linkedQuestion.at(i).get('linkedQuestion')?.value);
559
+ let count = 0;
560
+ let questions = this.ChecklistForm.get('sections').at(sectionIndex).get('questions');
561
+ questions.value.forEach((qn) => {
562
+ if (Array.isArray(qn.answers)) {
563
+ qn.answers.forEach((ans) => {
564
+ if (ans.showLinked && ans.linkedQuestion == linkedQn && qn.qno - 1 != questionIndex) {
565
+ count++;
566
+ }
567
+ });
568
+ }
569
+ });
548
570
  if (linkedQn) {
549
- let no = linkedQn - 1;
550
- this.getSectionFormArray().at(sectionIndex).get('questions').at(no).get('linkType')?.setValue(false);
571
+ if (!count) {
572
+ let no = linkedQn - 1;
573
+ this.getSectionFormArray().at(sectionIndex).get('questions').at(no).get('linkType')?.setValue(false);
574
+ }
551
575
  if (linkedQn && parseInt(linkedQn) > questionIndex) {
552
576
  this.subtractQuestionno(sectionIndex, linkedQn - 1);
553
577
  }
@@ -563,11 +587,14 @@ export class AddChecklistComponent {
563
587
  });
564
588
  }
565
589
  subtractQuestionno(sectionIndex, questionIndex) {
590
+ console.log(sectionIndex, questionIndex);
566
591
  let linkedQuestionAnswers = this.getSectionFormArray().at(sectionIndex).get('questions').at(questionIndex).get('answers');
567
592
  let no = this.getSectionFormArray().at(sectionIndex).get('questions').at(questionIndex).get('qno')?.value;
568
- this.deletedList.push(no);
593
+ console.log(no, 'no');
594
+ // this.deletedList.push(no);
569
595
  for (let j = 0; j < linkedQuestionAnswers?.length; j++) {
570
596
  let linkedQn = (linkedQuestionAnswers.at(j).get('linkedQuestion')?.value);
597
+ console.log(linkedQn, 'linkedQn');
571
598
  if (linkedQn && parseInt(linkedQn) > questionIndex) {
572
599
  (linkedQuestionAnswers.at(j).get('linkedQuestion'))?.setValue(linkedQn - 1);
573
600
  this.subtractQuestionno(sectionIndex, linkedQn - 1);
@@ -1063,27 +1090,25 @@ export class AddChecklistComponent {
1063
1090
  checklist.checklistName = checklist.checklistName.trim();
1064
1091
  checklist.checklistDescription = checklist?.checklistDescription ? checklist?.checklistDescription?.trim() : '';
1065
1092
  checklist.clientId = this.clientId;
1066
- this.sopService.getupdatechecklist(this.editvalue, checklist).pipe(takeUntil(this.detach)).subscribe((res) => {
1067
- if (res) {
1068
- if (res?.code == 200) {
1069
- if (type == 'configure') {
1070
- this.router.navigateByUrl(`/manage/trax/configure?checkListId=${res.data.checklistId}&showEdit=true`);
1071
- }
1072
- else {
1073
- this.router.navigateByUrl('/manage/trax/checklist');
1074
- }
1075
- }
1076
- else {
1077
- this.swalToast('Unable to update checklist!', 'error');
1078
- }
1079
- }
1080
- else {
1081
- this.swalToast('Unable to update checklist!', 'error');
1082
- }
1083
- }, (error) => {
1084
- let err = error?.error?.error?.message || 'Unable to create checklist!Server Error!';
1085
- this.swalToast(err, 'error');
1086
- });
1093
+ console.log(checklist, 'cehcklis');
1094
+ // this.sopService.getupdatechecklist(this.editvalue, checklist).pipe(takeUntil(this.detach)).subscribe((res: any) => {
1095
+ // if(res) {
1096
+ // if (res?.code == 200) {
1097
+ // if(type=='configure') {
1098
+ // this.router.navigateByUrl(`/manage/trax/configure?checkListId=${res.data.checklistId}&showEdit=true`);
1099
+ // } else {
1100
+ // this.router.navigateByUrl('/manage/trax/checklist');
1101
+ // }
1102
+ // } else {
1103
+ // this.swalToast('Unable to update checklist!','error');
1104
+ // }
1105
+ // } else {
1106
+ // this.swalToast('Unable to update checklist!','error');
1107
+ // }
1108
+ // }, (error) => {
1109
+ // let err = error?.error?.error?.message || 'Unable to create checklist!Server Error!';
1110
+ // this.swalToast(err,'error');
1111
+ // });
1087
1112
  }
1088
1113
  markFormControlsAsTouched(control, sectionIndex) {
1089
1114
  control.markAsTouched();
@@ -1370,13 +1395,16 @@ export class AddChecklistComponent {
1370
1395
  let questionArray = questions?.value;
1371
1396
  for (let i = 0; i < questions.length; i++) {
1372
1397
  let qno = questions.at(i)?.get('qno')?.value;
1398
+ console.log(this.deletedList, qno);
1373
1399
  if (!this.deletedList.includes(qno)) {
1374
1400
  for (let qn = 0; qn < questionArray.length; qn++) {
1375
1401
  let item = questionArray[qn];
1376
1402
  if (!['descriptive', 'image', 'descriptiveImage', 'multipleImage', 'video', 'linearscale', 'time', 'date'].includes(item.answerType)) {
1377
1403
  let findIndex = item.answers.map((item, index) => (item.linkedQuestion == qno ? index : -1)).filter((index) => index !== -1);
1404
+ console.log(findIndex, 'index');
1378
1405
  if (findIndex.length) {
1379
1406
  findIndex.forEach((idx) => {
1407
+ console.log(idx, i, 'i');
1380
1408
  item.answers[idx].checked = true;
1381
1409
  (questions.at(qn)?.get('answers')).at(idx).get('linkedQuestion')?.setValue(i + 1);
1382
1410
  });
@@ -1493,7 +1521,8 @@ export class AddChecklistComponent {
1493
1521
  questions.value.forEach((qn) => {
1494
1522
  if (Array.isArray(qn.answers)) {
1495
1523
  qn.answers.forEach((ans) => {
1496
- if (ans.showLinked && ans.linkedQuestion == linkedQuestion && qn.qno - 1 != qnIdx) {
1524
+ let findLinkedQuestion = qn.answers.map((ele) => ele.linkedQuestion);
1525
+ if (ans.showLinked && ans.linkedQuestion == linkedQuestion && (qn.qno - 1 != qnIdx || (qn.qno - 1 == qnIdx || findLinkedQuestion.includes(qn.qno)))) {
1497
1526
  count++;
1498
1527
  }
1499
1528
  });
@@ -1517,8 +1546,8 @@ export class AddChecklistComponent {
1517
1546
  questions.value.forEach((qn) => {
1518
1547
  if (Array.isArray(qn.answers)) {
1519
1548
  qn.answers.forEach((ans) => {
1520
- console.log(ans.showLinked && ans.linkedQuestion == linkedQuestion, qnIdx, qn.qno);
1521
- if (ans.showLinked && ans.linkedQuestion == linkedQuestion && qn.qno - 1 != qnIdx) {
1549
+ let findLinkedQuestion = qn.answers.map((ele) => ele.linkedQuestion);
1550
+ if (ans.showLinked && ans.linkedQuestion == linkedQuestion && (qn.qno - 1 != qnIdx || (qn.qno - 1 == qnIdx || findLinkedQuestion.includes(qn.qno)))) {
1522
1551
  count++;
1523
1552
  }
1524
1553
  });
@@ -1553,4 +1582,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1553
1582
  type: ViewChild,
1554
1583
  args: ['formRef']
1555
1584
  }] } });
1556
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBaUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLFNBQVMsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7Ozs7O0FBTzFGLE1BQU0sT0FBTyxxQkFBcUI7SUFpQlo7SUFBaUM7SUFBd0I7SUFBeUM7SUFBd0I7SUFBNkI7SUFBMkI7SUFBc0I7SUFBK0I7SUFoQnJPLE9BQU8sQ0FBYTtJQUUxQyxhQUFhLENBQWE7SUFDMUIsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUNqQixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsQ0FBTTtJQUNmLFNBQVMsQ0FBTTtJQUNmLFVBQVUsR0FB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T0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWEsRUFBQyxJQUFXO1FBQ3ZDLE9BQVMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQWUsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDN0gsQ0FBQzt3R0FobERVLHFCQUFxQjs0RkFBckIscUJBQXFCLDZKQ2xCbEMsMnBrRkEyd0JNOzs0RkR6dkJPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7NlNBS1AsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyB0aW1lcix0YWtlVW50aWwsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFRyYXhwb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3RyYXhwb3B1cC90cmF4cG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IFRyYXhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yIH0gZnJvbSAnLi4vY3JlYXRlLXRhc2svdmFsaWRhdG9ycy93aGl0ZXNwYWNlLXZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHVuaXF1ZVN0cmluZ1ZhbGlkYXRvciB9IGZyb20gJy4uL2NyZWF0ZS10YXNrL3ZhbGlkYXRvcnMvdW5pcXVlLXN0cmluZy12YWxpZGF0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWRkLWNoZWNrbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1jaGVja2xpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hZGQtY2hlY2tsaXN0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkQ2hlY2tsaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnZm9ybVJlZicpIGZvcm1SZWY6IEVsZW1lbnRSZWY7XHJcblxyXG4gIENoZWNrbGlzdEZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2hvdzogbnVtYmVyID0gMDtcclxuICBzZWN0aW9uSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgZ2V0b2JqZWN0OiBhbnk7XHJcbiAgZWRpdHZhbHVlOiBhbnk7XHJcbiAgaXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgbm9zZWN0aW9uOmJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93dmFsdWU6IHN0cmluZztcclxuICByZWZJbWdRSWR4OiBudW1iZXIgPSAwO1xyXG4gIGNoZWNrbGlzdExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwb3B1cENvdW50Om51bWJlciA9IDA7XHJcbiAgY2xpZW50SWQ6YW55O1xyXG4gIGRlbGV0ZWRMaXN0OmFueSA9IFtdO1xyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvOlBhZ2VJbmZvU2VydmljZSxwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixwcml2YXRlIGNoYW5nZWRldGVjdG9yOkNoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgZGlhbG9nOk5nYk1vZGFsLHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UscHJpdmF0ZSByb3V0ZXI6Um91dGVyLHByaXZhdGUgc29wU2VydmljZTpUcmF4U2VydmljZSxwcml2YXRlIGdzOkdsb2JhbFN0YXRlU2VydmljZSkge1xyXG4gIH1cclxuICBcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdENoZWNrbGlzdCgpO1xyXG4gICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgbGV0IHN0b3JhZ2VEZXRhaWxzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnKSB8fCAne30nKTtcclxuICAgIGlmKCFzdG9yYWdlRGV0YWlscz8uY2xpZW50KSB7XHJcbiAgICAgIHN0b3JhZ2VEZXRhaWxzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2xpZW50LWRldGFpbHMnKSB8fCAne30nKTtcclxuICAgICAgc3RvcmFnZURldGFpbHMuY2xpZW50ID0gc3RvcmFnZURldGFpbHMuY2xpZW50SWQ7XHJcbiAgICB9XHJcbiAgICBpZihzdG9yYWdlRGV0YWlscz8uY2xpZW50KSB7XHJcbiAgICAgIHRoaXMuY2xpZW50SWQgPSBzdG9yYWdlRGV0YWlscy5jbGllbnQ7XHJcbiAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZWRpdHZhbHVlID0gcGFyYW1zLmNoZWNrbGlzdElkO1xyXG4gICAgICAgIGlmIChwYXJhbXMuY2hlY2tsaXN0SWQpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd3ZhbHVlID0gJ2VkaXQnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3d2YWx1ZSA9ICdhZGQnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNob3d2YWx1ZSA9PSAnZWRpdCcgfHwgcGFyYW1zLnR5cGUpIHtcclxuICAgICAgICAgIGxldCBvYmo6IGFueSA9IHt9O1xyXG4gICAgICAgICAgaWYgKHBhcmFtcy5jaGVja2xpc3RJZCkge1xyXG4gICAgICAgICAgICBvYmouY2hlY2tMaXN0SWQgPSBwYXJhbXMuY2hlY2tsaXN0SWRcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9iai50eXBlID0gcGFyYW1zLnR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvYmouY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc29wU2VydmljZS5nZXRjb25maWcob2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRvYmplY3QgPSByZXMuZGF0YS5jaGVja0xpc3REZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DaGVja2xpc3RRdWVzdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRDaGVja2xpc3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRldGFjaC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXRhY2guY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIk1hbmFnZSBDaGVja2xpc3RcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldERlc2NyaXB0aW9uKFwiQXV0b21hdGUgb3IgY3JlYXRlIGNoZWNrbGlzdHMgdG8gaW1wcm92ZSBvcGVyYXRpb25hbCBlZmZpY2llbmN5XCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH1cclxuICAgIF0pO1xyXG4gIH1cclxuICBcclxuICB1cGRhdGVJbnB1dFZhbHVlKHNlY3Rpb25JbmRleDogbnVtYmVyLHNlY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChzZWN0aW9uTmFtZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleCwnbmFtZScpPy5zZXRWYWx1ZShgU2VjdGlvbiAke3NlY3Rpb25JbmRleCsxfWApO1xyXG4gICAgfVxyXG4gIH1cclxuICBzY3JvbGxUb1F1ZXN0aW9uKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBgcS0ke3NlY3Rpb25JbmRleH0tJHtxdWVzdGlvbkluZGV4fWA7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgcXVlc3Rpb25FbGVtZW50ID0gdGhpcy5mb3JtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgIyR7cXVlc3Rpb25JZH1gKTtcclxuICBcclxuICAgICAgaWYgKHF1ZXN0aW9uRWxlbWVudCkge1xyXG4gICAgICAgIHF1ZXN0aW9uRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnY2VudGVyJywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNoZWNrbGlzdFF1ZXN0aW9ucygpIHsgXHJcbiAgICBsZXQgc2VjdGlvbnNhcnJheTogYW55ID0gW107XHJcbiAgICBsZXQgc2VjdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBzZWN0aW9uc2FycmF5ID0gdGhpcy5nZXRvYmplY3Quc2VjdGlvbnNcclxuICAgIFxyXG4gICAgc2VjdGlvbnNhcnJheS5mb3JFYWNoKChpOiBhbnksc2VjdGlvbkluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgbGV0IHF1ZXN0aW9uczogYW55W10gPSBbXTtcclxuICAgICAgaS5xdWVzdGlvbnMuZm9yRWFjaCgoajogYW55LHF1ZXN0aW9uSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBhbnN3ZXI6IGFueVtdID0gW107XHJcbiAgICAgICAgai5hbnN3ZXJzPy5mb3JFYWNoKChrOiBhbnksYW5zd2VySW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgYW5zd2VyLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgJiYgaj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nPyB7ICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woaz8uYW5zd2VyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbChhbnN3ZXJJbmRleCksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChrPy5zb3BGbGFnID8gaz8uc29wRmxhZyA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChrPy52YWxpZGF0aW9uLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woaz8udmFsaWRhdGlvblR5cGUsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsIFwiQ2FwdHVyZSBWaWRlb1wiXSkpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woaz8ucmVmZXJlbmNlSW1hZ2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSB8fCBqPy5hbnN3ZXJUeXBlID09ICd2aWRlbycpID8geyAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChqPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gdHJ1ZSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKChqPy5ydW5BSSkgPyBqPy5ydW5BSSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ211bHRpcGxlY2hvaWNlc2luZ2xlJywneWVzL25vJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdzaG93TGlua2VkJzogdGhpcy5mYi5jb250cm9sKChrPy5zaG93TGlua2VkKSA/IGs/LnNob3dMaW5rZWQgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAnbGlua2VkUXVlc3Rpb24nOiB0aGlzLmZiLmNvbnRyb2woKGs/LmxpbmtlZFF1ZXN0aW9uKSA/IGs/LmxpbmtlZFF1ZXN0aW9uIDogMCkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbChrPy5yZWZlcmVuY2VJbWFnZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ3ZpZGVvJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyB7ICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGs/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPyB0cnVlIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdydW5BSSc6IHRoaXMuZmIuY29udHJvbCgoaz8ucnVuQUkpID8gaz8ucnVuQUkgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woay5kZXNjcmlwdGl2ZXR5cGUpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ3JhbmdlU3RhcnQnOnRoaXMuZmIuY29udHJvbChrLnJhbmdlU3RhcnQpLCdyYW5nZUVuZCc6dGhpcy5mYi5jb250cm9sKGsucmFuZ2VFbmQpIH0gOiB7fSksXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBxdWVzdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2wocXVlc3Rpb25JbmRleCsxKSxcclxuICAgICAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKGo/LnFuYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICBcIm9sZFFuYW1lXCI6dGhpcy5mYi5jb250cm9sKGo/LnFuYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbChqPy5hbnN3ZXJUeXBlLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCIsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8geyAnYW5zd2Vycyc6IChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsICd2aWRlbycsJ211bHRpcGxlSW1hZ2UnLCd0aW1lJywnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyBhbnN3ZXJbMF0gOiB0aGlzLmZiLmFycmF5KGFuc3dlcixbdW5pcXVlU3RyaW5nVmFsaWRhdG9yKCldKSB9IDoge30sXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbCgoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLFwibXVsdGlwbGVJbWFnZVwiXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyAoaj8ucnVuQUkpID8gdHJ1ZSA6IGZhbHNlIDogZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ3ZpZGVvJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpKSA/IChqPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5KSA/IHRydWUgOiBmYWxzZSA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8gKGo/LnJ1bkFJRGVzY3JpcHRpb24pIDogJycpLFxyXG4gICAgICAgICAgICAnbGlua1R5cGUnOiB0aGlzLmZiLmNvbnRyb2woaj8ubGlua1R5cGUpLFxyXG4gICAgICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKGoucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbChqLmRlc2NyaXB0aXZldHlwZSksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYW5zd2VyID0gW107XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgc2VjdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIFwibmFtZVwiOiB0aGlzLmZiLmNvbnRyb2woaT8ubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICBcIm9sZE5hbWVcIjp0aGlzLmZiLmNvbnRyb2woaT8ubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICBcInNlY3Rpb25OdW1iZXJcIjogdGhpcy5mYi5jb250cm9sKHNlY3Rpb25JbmRleCsxKSxcclxuICAgICAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuZmIuYXJyYXkocXVlc3Rpb25zKVxyXG4gICAgICB9KSk7XHJcbiAgICAgIHF1ZXN0aW9ucyA9IFtdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdjaGVja2xpc3ROYW1lJzogdGhpcy5mYi5jb250cm9sKHRoaXMuZ2V0b2JqZWN0LmNoZWNrTGlzdE5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICdjaGVja2xpc3REZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCh0aGlzLmdldG9iamVjdC5jaGVja0xpc3REZXNjcmlwdGlvbiksXHJcbiAgICAgICdzZWN0aW9ucyc6IHRoaXMuZmIuYXJyYXkoc2VjdGlvbnMpXHJcbiAgICB9KTsgICBcclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGluaXRDaGVja2xpc3QoKSB7XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgJ2NoZWNrbGlzdE5hbWUnOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICdjaGVja2xpc3REZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICdzZWN0aW9ucyc6IHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgXCJuYW1lXCI6IHRoaXMuZmIuY29udHJvbCgnU2VjdGlvbiAxJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgIFwic2VjdGlvbk51bWJlclwiOiB0aGlzLmZiLmNvbnRyb2woMSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2woMSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ2Rlc2NyaXB0aXZlJyxcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJkZXNjcmlwdGl2ZVwiLCBcInllcy9ub1wiLCBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLCBcImltYWdlXCIsIFwidmlkZW9cIiwnbXVsdGlwbGVJbWFnZScsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICAgJ2xpbmtUeXBlJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICB9KVxyXG4gICAgICBdKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoYWxsb3dlZFZhbHVlczogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiAoY29udHJvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHZhbHVlICYmIGFsbG93ZWRWYWx1ZXMuaW5kZXhPZih2YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZFZhbHVlOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYWRkTmV3U2VjdGlvbigpIHtcclxuICAgIGxldCBzZWN0aW9ucyA9IHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5O1xyXG4gICAgbGV0IHNlY3Rpb25MZW5ndGggPSBzZWN0aW9ucy5sZW5ndGg7XHJcbiAgICAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLnB1c2goXHJcbiAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIFwibmFtZVwiOiB0aGlzLmZiLmNvbnRyb2woYFNlY3Rpb24gJHtzZWN0aW9uTGVuZ3RoICsgMX1gLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgIFwic2VjdGlvbk51bWJlclwiOiB0aGlzLmZiLmNvbnRyb2woc2VjdGlvbkxlbmd0aCArIDEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKDEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdxbmFtZSc6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ2Rlc2NyaXB0aXZlJyxcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAnbGlua1R5cGUnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIF0pXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgaWYoc2VjdGlvbkxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IC0xO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY2NvcmRpYW4oc2VjdGlvbkxlbmd0aCk7XHJcbiAgICB0aGlzLnN3YWxUb2FzdCgnTmV3IHNlY3Rpb24gYWRkZWQhJyk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWN0aW9uKHNlY3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLnJlbW92ZUF0KHNlY3Rpb25JbmRleCk7XHJcbiAgfVxyXG5cclxuICBkcmFnRHJvcChzZWN0aW9uSW5kZXg6IGFueSwgZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcclxuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgICAvLyB0aGlzLnVwZGF0ZWxpbmtlZFF1ZXN0aW9uTm8oc2VjdGlvbkluZGV4LGV2ZW50LnByZXZpb3VzSW5kZXgsZXZlbnQuY3VycmVudEluZGV4KVxyXG4gICAgICB0aGlzLnVwZGF0ZVF1ZXN0aW9uUW5vcyhzZWN0aW9uSW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXHJcbiAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcclxuICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcclxuICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxyXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlbGlua2VkUXVlc3Rpb25ObyhzZWNJZHg6bnVtYmVyLHByZXZJZHg6bnVtYmVyLHFuSWR4Om51bWJlcikge1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGZvcihsZXQgaT0wO2k8cXVlc3Rpb25zLmxlbmd0aC0xO2krKykge1xyXG4gICAgICBsZXQgYW5zd2VycyA9ICgocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgZm9yKGxldCBqPTA7ajxhbnN3ZXJzPy5sZW5ndGggLTE7aisrKSB7XHJcbiAgICAgICAgbGV0IGxpbmtlZCA9IChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdzaG93TGlua2VkJyk/LnZhbHVlO1xyXG4gICAgICAgIGlmKGxpbmtlZCkge1xyXG4gICAgICAgICAgbGV0IGxpbmtlZE5vID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlO1xyXG4gICAgICAgICAgaWYobGlua2VkTm8gPT0gcHJldklkeCArIDEpIHtcclxuICAgICAgICAgICAgKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKHFuSWR4ICsgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmKGxpbmtlZE5vIDw9IHFuSWR4ICsgMSkge1xyXG4gICAgICAgICAgICAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUobGlua2VkTm8gLSAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFuc3dlclR5cGVTZWxlY3Rpb24oc2VjdGlvbkluZGV4OiBhbnksIHF1ZXN0aW9uSW5kZXg6IGFueSwgZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IHNlbGVjdHZhbHVlOiBzdHJpbmcgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8uc2V0VmFsdWUoJycpO1xyXG4gICAgaWYoIVsnZGVzY3JpcHRpdmUnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoc2VsZWN0dmFsdWUpKSB7XHJcbiAgICAgICAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Rlc2NyaXB0aXZldHlwZScpPy5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdkZXNjcmlwdGl2ZXR5cGUnKT8uc2V0VmFsdWUoJ3RleHQnKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVtb3ZlUXVlc3Rpb25MaW5rZWQoc2VjdGlvbkluZGV4LHF1ZXN0aW9uSW5kZXgpO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAneWVzL25vJyB8fCBldmVudC50YXJnZXQudmFsdWUgPT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzRm9ybUFycmF5KHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCxzZWxlY3R2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnZGVzY3JpcHRpdmUnKSB7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnZGVzY3JpcHRpdmVJbWFnZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1Hcm91cChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsIHNlbGVjdHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdtdWx0aXBsZWNob2ljZW11bHRpcGxlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzRm9ybUFycmF5KHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCxzZWxlY3R2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnaW1hZ2UnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAnaW1hZ2UnKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICd2aWRlbycpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1Hcm91cChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICd2aWRlbycpO1xyXG4gICAgfWVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnbXVsdGlwbGVJbWFnZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1Hcm91cChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdtdWx0aXBsZUltYWdlJyk7XHJcbiAgICB9ZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdkYXRlJykge31cclxuICAgIGVsc2UgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICd0aW1lJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzVGltZShzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICd0aW1lJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnbGluZWFyc2NhbGUnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNUaW1lKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ2xpbmVhcnNjYWxlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBbnN3ZXJBc1RpbWUoc2VjSWR4Om51bWJlcixxbklkeDpudW1iZXIsdHlwZTpzdHJpbmcpIHtcclxuICAgIGxldCBxdWVzdGlvbiA9ICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY0lkeCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxbklkeCkgYXMgRm9ybUdyb3VwKTtcclxuXHJcbiAgICAgIGlmKHR5cGUgPT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgcXVlc3Rpb24uc2V0Q29udHJvbCgnYW5zd2VycycsXHJcbiAgICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ2xpbmtlZFF1ZXN0aW9uJzp0aGlzLmZiLmNvbnRyb2woMCksXHJcbiAgICAgICAgICAgICAnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCcnKVxyXG4gICAgICAgICAgIH0pLFxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLFxyXG4gICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdsaW5rZWRRdWVzdGlvbic6dGhpcy5mYi5jb250cm9sKDApLFxyXG4gICAgICAgICAgICAgJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnbnVtYmVyJyksXHJcbiAgICAgICAgICAgICAncmFuZ2VTdGFydCc6dGhpcy5mYi5jb250cm9sKDApLFxyXG4gICAgICAgICAgICAgJ3JhbmdlRW5kJzp0aGlzLmZiLmNvbnRyb2woMTAwLClcclxuICAgICAgICAgICB9KSxcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgXHJcblxyXG4gICAgY29uc29sZS5sb2cocXVlc3Rpb24pO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICByZW1vdmVRdWVzdGlvbkxpbmtlZChzZWNJZHg6YW55LHFuSWR4OmFueSkge1xyXG4gICAgbGV0IGFuc3dlcnMgPSAoKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgaWYoYW5zd2Vycykge1xyXG4gICAgICBmb3IobGV0IGk9MDtpPGFuc3dlcnMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgbGV0IHFuID0gKGFuc3dlcnMuYXQoaSkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlO1xyXG4gICAgICAgIGlmKHFuKSB7XHJcbiAgICAgICAgICAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuIC0gMSkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtUeXBlJyk/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVZhbGlkYXRpb25UeXBlKGV2ZW50OmFueSxzZWN0aW9uOm51bWJlcixxdWVzdGlvbjpudW1iZXIsYW5zd2VyOm51bWJlcikge1xyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdEZXNjcmlwdGl2ZSBBbnN3ZXInKSB7XHJcbiAgICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbikgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbikgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc3dlcikgYXMgRm9ybUdyb3VwKS5nZXQoJ2Rlc2NyaXB0aXZldHlwZScpPy5zZXRWYWx1ZSgndGV4dCcpO1xyXG4gICAgfVxyXG4gICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uKSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uKSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zd2VyKSBhcyBGb3JtR3JvdXApLmdldCgnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeScpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZXRBbnN3ZXJBc0Zvcm1BcnJheShzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLHNlbGVjdHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGxldCBxdWVzdGlvbiA9ICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgXHJcbiAgICBpZiAoc2VsZWN0dmFsdWUgPT0gJ3llcy9ubycpIHtcclxuICAgICAgcXVlc3Rpb24uc2V0Q29udHJvbCgnYW5zd2VycycsXHJcbiAgICAgICAgdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnWWVzJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgIC8vICdsaW5rUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbChmYWxzZSxbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAvLyAnYW5zd2VySW5wdXRTdHlsZSc6IHRoaXMuZmIuY29udHJvbCgncmFkaW8nLFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ0NhcHR1cmUgSW1hZ2UnLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLFwiQ2FwdHVyZSBWaWRlb1wiXSkpLFxyXG4gICAgICAgICAgICAnbGlua2VkUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJ05vJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgyKSxcclxuICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ0NhcHR1cmUgSW1hZ2UnLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLFwiQ2FwdHVyZSBWaWRlb1wiXSkpLFxyXG4gICAgICAgICAgICAnbGlua2VkUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSx1bmlxdWVTdHJpbmdWYWxpZGF0b3IoKSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLFxyXG4gICAgICAgIHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCdDYXB0dXJlIEltYWdlJywgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIixcIkNhcHR1cmUgVmlkZW9cIl0pKSxcclxuICAgICAgICAgICAgLi4uKHNlbGVjdHZhbHVlID09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScgPyB7XCJsaW5rZWRRdWVzdGlvblwiOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLCdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSl9IDoge30pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCdDYXB0dXJlIEltYWdlJywgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIixcIkNhcHR1cmUgVmlkZW9cIl0pKSxcclxuICAgICAgICAgICAgLi4uKHNlbGVjdHZhbHVlID09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScgPyB7XCJsaW5rZWRRdWVzdGlvblwiOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLCdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSl9IDoge30pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSx1bmlxdWVTdHJpbmdWYWxpZGF0b3IoKSksXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYW5zd2VyVHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGFuc3dlclR5cGUpKSB7XHJcbiAgICAgICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250cm9sKCdhbnN3ZXJzJywgXHJcbiAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgIC4uLihhbnN3ZXJUeXBlID09ICdtdWx0aXBsZUltYWdlJyA/IHsnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKX06e30pXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHF1ZXN0aW9uID0gKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuXHJcbiAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLCB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBsb2FkSW1hZ2VGcm9tRGV2aWNlKHNlY0lkeDogbnVtYmVyLHFJZHg6IG51bWJlcixldmVudDogYW55LGFuc0lkeDpudW1iZXI9LTEsY3RybE5hbWU6c3RyaW5nID0gJycpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMgIT0gdW5kZWZpbmVkICYmIGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGgpIHtcclxuICAgIH1cclxuICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgbGV0IGZpbGU6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdjbGllbnRJZCcsdGhpcy5jbGllbnRJZClcclxuICAgIHRoaXMuc29wU2VydmljZS5pbWFnZXVwbG9hZChmb3JtRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKGN0cmxOYW1lKVxyXG4gICAgICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY0lkeCxxSWR4LCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnNldFZhbHVlKHJlcy5kYXRhLmltZ1VybCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWNJZHgscUlkeCwncmVmZXJlbmNlSW1hZ2UnLGFuc0lkeCk/LnNldFZhbHVlKHJlcy5kYXRhLmltZ1VybCk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTsgICAgICBcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjbGVhclJlZmVyZW5jZUltYWdlKHNlY0lkeDogbnVtYmVyLHFJZHg6IG51bWJlcixhbnNJZHg6bnVtYmVyPS0xKSB7XHJcbiAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWNJZHgscUlkeCwncmVmZXJlbmNlSW1hZ2UnLGFuc0lkeCk/LnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY0lkeCxxSWR4LCdydW5BSScsYW5zSWR4KT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjSWR4LHFJZHgsJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8uc2V0VmFsdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgZ2V0dmFsaWRhdGlvbihzZWN0aW9uSW5kZXg6IGFueSwgcXVlc3Rpb25JbmRleDogYW55LCBhZGRtb3JlcW5JbmRleDogYW55LCBldmVudDogYW55KSB7XHJcbiAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYWRkbW9yZXFuSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCd2YWxpZGF0aW9uJyk/LnNldFZhbHVlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcclxuICB9XHJcblxyXG4gIGFkZE5ld1F1ZXN0aW9uKHNlY3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5zZWN0aW9uSW5kZXggPiAtMSkge1xyXG4gICAgICBpZiAoISgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSkpIHtcclxuICAgICAgICAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuc2V0Q29udHJvbCgncXVlc3Rpb25zJywgdGhpcy5mYi5hcnJheShbXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBxdWVzdGlvbnMgPSAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgbGV0IHF1ZXN0aW9uc0xlbmd0aCA9IHF1ZXN0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHF1ZXN0aW9ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbChxdWVzdGlvbnNMZW5ndGggKyAxLCksXHJcbiAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICdsaW5rVHlwZSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgfSkpOyAgICAgIFxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoJ05ldyBxdWVzdGlvbiBhZGRlZCEnKTtcclxuICAgICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvUXVlc3Rpb24oc2VjdGlvbkluZGV4LHF1ZXN0aW9uc0xlbmd0aCk7XHJcbiAgICAgIH0sMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZVF1ZXN0aW9uKHNlY3Rpb25JbmRleDogYW55LCBxdWVzdGlvbkluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuZGVsZXRlZExpc3QgPSBbXTtcclxuICAgIGxldCBxdWVzdGlvbiA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdxbmFtZScpPy52YWx1ZSB8fCAnJztcclxuICAgIGxldCBxbm8gPSB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAncW5vJyk/LnZhbHVlO1xyXG4gICAgcXVlc3Rpb24gPSBxdWVzdGlvbiA/IHF1ZXN0aW9uIDogYFF1ZXN0aW9uICR7dGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ3FubycpPy52YWx1ZSB8fCAnJ31gO1xyXG4gICAgcXVlc3Rpb24gPSBxdWVzdGlvbi5sZW5ndGggPiAyMCA/IHF1ZXN0aW9uLnNsaWNlKDAsMjApICsgJy4uLicgOiBxdWVzdGlvbjtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LHtjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJ30pO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgIGltYWdlc3JjOiBgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRTRFMlwiLz48cGF0aCBkPVwiTTI4IDI0VjI4TTI4IDMySDI4LjAxTTM4IDI4QzM4IDMzLjUyMjggMzMuNTIyOCAzOCAyOCAzOEMyMi40NzcyIDM4IDE4IDMzLjUyMjggMTggMjhDMTggMjIuNDc3MiAyMi40NzcyIDE4IDI4IDE4QzMzLjUyMjggMTggMzggMjIuNDc3MiAzOCAyOFpcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRUYzRjJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPjwvc3Bhbj5gLFxyXG4gICAgICB0aXRsZTogYERlbGV0ZSAnJHtxdWVzdGlvbn0nP2AsXHJcbiAgICAgIGNvbnRlbnQ6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiPicke3F1ZXN0aW9ufSc8L2I+PyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAsXHJcbiAgICAgIGJ1dHRvbnR5cGU6ICdkZWxldGUnXHJcbiAgICB9XHJcbiAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzID09ICdkZWxldGUnKSB7XHJcbiAgICAgICAgbGV0IGxpbmtlZFF1ZXN0aW9uOmFueSA9ICgoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgICBsZXQgdHlwZTphbnkgPSAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlO1xyXG4gICAgICAgIGlmKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCd2aWRlbycsJ2xpbmVhcnNjYWxlJywndGltZScsJ2RhdGUnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgICAgZm9yKGxldCBpPTA7aTxsaW5rZWRRdWVzdGlvbj8ubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICBsZXQgbGlua2VkUW4gPSAoKGxpbmtlZFF1ZXN0aW9uLmF0KGkpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmKGxpbmtlZFFuKSB7XHJcbiAgICAgICAgICAgICAgbGV0IG5vID0gbGlua2VkUW4gLTE7XHJcbiAgICAgICAgICAgICAgKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChubykgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtUeXBlJyk/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICAgICAgICBpZihsaW5rZWRRbiAmJiBwYXJzZUludChsaW5rZWRRbikgPiBxdWVzdGlvbkluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnRyYWN0UXVlc3Rpb25ubyhzZWN0aW9uSW5kZXgsbGlua2VkUW4tMSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgKHRoaXMuZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleCwgJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQocXVlc3Rpb25JbmRleCk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVkTmVzdGVkUXVlc3Rpb24oc2VjdGlvbkluZGV4LHFubyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVRdWVzdGlvblFub3Moc2VjdGlvbkluZGV4KTtcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtxdWVzdGlvbn0gaGFzIGJlZW4gZGVsZXRlZCFgKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgc3VidHJhY3RRdWVzdGlvbm5vKHNlY3Rpb25JbmRleDpudW1iZXIscXVlc3Rpb25JbmRleDphbnkpIHtcclxuICAgIGxldCBsaW5rZWRRdWVzdGlvbkFuc3dlcnMgPSAoKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBsZXQgbm8gPSAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxbm8nKT8udmFsdWU7XHJcbiAgICB0aGlzLmRlbGV0ZWRMaXN0LnB1c2gobm8pO1xyXG4gICAgZm9yKGxldCBqPTA7ajxsaW5rZWRRdWVzdGlvbkFuc3dlcnM/Lmxlbmd0aDtqKyspIHtcclxuICAgICAgbGV0IGxpbmtlZFFuID0gKChsaW5rZWRRdWVzdGlvbkFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlKTtcclxuICAgICAgaWYobGlua2VkUW4gJiYgcGFyc2VJbnQobGlua2VkUW4pID4gcXVlc3Rpb25JbmRleCkge1xyXG4gICAgICAgICgobGlua2VkUXVlc3Rpb25BbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpKT8uc2V0VmFsdWUobGlua2VkUW4gLSAxKTtcclxuICAgICAgICB0aGlzLnN1YnRyYWN0UXVlc3Rpb25ubyhzZWN0aW9uSW5kZXgsbGlua2VkUW4tMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJhaXNlZmxhZyhzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBhbnNJZHg6IG51bWJlcix2YWx1ZTogYm9vbGVhbixsaW5rSW5kZXg6bnVtYmVyID0gLTEsbGlua0Fuc0luZGV4Om51bWJlciA9IC0xKSB7XHJcbiAgICBsZXQgcXVlc3Rpb24gPSAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpPy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBpZih2YWx1ZSA9PSB0cnVlKSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkudmFsdWU7XHJcbiAgICAgIGlmKGxpbmtJbmRleCA9PSAtMSkge1xyXG4gICAgICAgIGlmKGFuc3dlcnMuZmlsdGVyKCh4OmFueSk9PiB4LnNvcEZsYWcgPT0gdHJ1ZSkubGVuZ3RoID09IChhbnN3ZXJzLmxlbmd0aCAtMSkpIHtcclxuICAgICAgICAgICgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicsdGhpcy5mYi5jb250cm9sKHRydWUpKTtcclxuICAgICAgICAgIHRpbWVyKDUwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBhbnN3ZXJzID0gKChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICBsZXQgbGlua1F1ZXN0aW9uID0gKChhbnN3ZXJzLmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQobGlua0luZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgIGxldCBsaW5rQW5zd2VycyA9IChsaW5rUXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS52YWx1ZVxyXG4gICAgICAgIGlmKGxpbmtBbnN3ZXJzLmZpbHRlcigoeDphbnkpPT4geC5zb3BGbGFnID09IHRydWUpLmxlbmd0aCA9PSAobGlua0Fuc3dlcnMubGVuZ3RoIC0xKSkge1xyXG4gICAgICAgICAgKChsaW5rUXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChsaW5rQW5zSW5kZXgpIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicsdGhpcy5mYi5jb250cm9sKHRydWUpKTtcclxuICAgICAgICAgIHRpbWVyKDUwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgKChsaW5rUXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChsaW5rQW5zSW5kZXgpIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgIGlmKGxpbmtJbmRleCA9PSAtMSlcclxuICAgICAgICAoKCgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KT8uYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApPy5nZXQoJ3NvcEZsYWcnKSBhcyBGb3JtQ29udHJvbCkpPy5zZXRWYWx1ZSh2YWx1ZSk7IFxyXG4gICAgZWxzZSAgIHtcclxuICAgICAgIGxldCBhbnN3ZXJzID0gKChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICBsZXQgbGlua1F1ZXN0aW9uID0gKChhbnN3ZXJzLmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQobGlua0luZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAoKCgobGlua1F1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk/LmF0KGxpbmtBbnNJbmRleCkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdzb3BGbGFnJykgYXMgRm9ybUNvbnRyb2wpKT8uc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkTmVzdGVkUXVlc3Rpb24oc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYW5zSWR4OiBudW1iZXIsdmFsdWU6IGJvb2xlYW4sbGlua2VkUXVlc3Rpb25JbmRleDpudW1iZXI9LTEsbGlua2VkQW5zd2VyOm51bWJlciA9IC0xKSB7XHJcbiAgICAgbGV0IGFuc3dlciA9ICgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXBcclxuXHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgIGlmKCFhbnN3ZXI/LmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpPy52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgYW5zd2VyLnNldENvbnRyb2woJ2xpbmtRdWVzdGlvbkFuc3dlcnMnLFxyXG4gICAgICAgIHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnZGVzY3JpcHRpdmUnLFxyXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJkZXNjcmlwdGl2ZVwiLCBcInllcy9ub1wiLCBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLCBcImltYWdlXCIsIFwidmlkZW9cIiwnbXVsdGlwbGVJbWFnZScsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSlcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBuZXN0ZWRRdWVzdGlvbiA9IGFuc3dlci5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKSBhcyBGb3JtQXJyYXlcclxuICAgICAgbmVzdGVkUXVlc3Rpb24ucHVzaCh0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpLFxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuIFxyXG4gIGFjY29yZGlhbihpbmRleDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93ID09IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IC0xO1xyXG4gICAgICB0aGlzLnNlY3Rpb25JbmRleCA9IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93ID0gaW5kZXg7XHJcbiAgICAgIHRoaXMuc2VjdGlvbkluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGVTZWN0aW9uKHNlY3Rpb25JbmRleDogYW55KSB7XHJcbiAgICBsZXQgc2VjdGlvbiA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGxldCBzZWN0aW9uTGVuZ3RoOmFueSA9IFwiIFwiICsgKHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmxlbmd0aDtcclxuICAgIGxldCBzZWN0aW9uTmFtZTpzdHJpbmcgPSBzZWN0aW9uLmdldCgnbmFtZScpPy52YWx1ZTtcclxuICAgIHNlY3Rpb25OYW1lID0gc2VjdGlvbk5hbWUubGVuZ3RoID4gMjAgPyAoc2VjdGlvbk5hbWUuc2xpY2UoMCwgMjApICsgXCIuLi5cIikgOiBzZWN0aW9uTmFtZTtcclxuICAgIGxldCBxdWVzdGlvbl90ZXh0ID0gJydcclxuICAgIGlmIChzZWN0aW9uTGVuZ3RoID09IDEpXHJcbiAgICAgIHF1ZXN0aW9uX3RleHQgPSAnUXVlc3Rpb24nXHJcbiAgICBlbHNlXHJcbiAgICAgcXVlc3Rpb25fdGV4dCA9ICdRdWVzdGlvbnMnXHJcbiAgICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVFNEUyXCIvPjxwYXRoIGQ9XCJNMjggMjRWMjhNMjggMzJIMjguMDFNMzggMjhDMzggMzMuNTIyOCAzMy41MjI4IDM4IDI4IDM4QzIyLjQ3NzIgMzggMTggMzMuNTIyOCAxOCAyOEMxOCAyMi40NzcyIDIyLjQ3NzIgMTggMjggMThDMzMuNTIyOCAxOCAzOCAyMi40NzcyIDM4IDI4WlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZFRjNGMlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgdGl0bGU6IGBEZWxldGUgJyR7c2VjdGlvbk5hbWV9IFNlY3Rpb24nP2AsXHJcbiAgICAgIGNvbnRlbnQ6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlJyA8Yj4nJHtzZWN0aW9uTmFtZX0nPC9iPj8gd2l0aCA8Yj4ke3NlY3Rpb25MZW5ndGh9ICR7cXVlc3Rpb25fdGV4dH08L2I+IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuYCxcclxuICAgICAgYnV0dG9udHlwZTogJ2RlbGV0ZSdcclxuICAgIH1cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LHtjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJ30pO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBwb3B1cGNvbnRlbnRcclxuICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLnJlbW92ZUF0KHNlY3Rpb25JbmRleClcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBBZGRNb3JlQW5zKHNlY3Rpb25pbmRleDogYW55LCBxdWVzdGlvbkluZGV4OiBhbnksdHlwZTpzdHJpbmcpIHtcclxuICAgIGxldCBhbnNvcHRpb24gPVxyXG4gICAgICAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHNlY3Rpb25pbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgICAuYXQocXVlc3Rpb25JbmRleClcclxuICAgICAgICAuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGxldCBhbnNvcHRpb25MZW5ndGggPSBhbnNvcHRpb24ubGVuZ3RoO1xyXG4gICAgaWYgKGFuc29wdGlvbkxlbmd0aCA8PSAyOSkge1xyXG4gICAgICBhbnNvcHRpb24ucHVzaChcclxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woYGAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKGFuc29wdGlvbkxlbmd0aCArIDEpLFxyXG4gICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnQ2FwdHVyZSBJbWFnZScsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsXCJDYXB0dXJlIFZpZGVvXCJdKSksXHJcbiAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgLi4uKHR5cGUgPT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJyA/IHtcImxpbmtlZFF1ZXN0aW9uXCI6dGhpcy5mYi5jb250cm9sKDAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKX0gOiB7fSksXHJcbiAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgIC4uLih0eXBlID09ICdtdWx0aXBsZUltYWdlJyA/IHsnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKX06e30pXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZUFuc3dlcihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBhZGRtb3JlcW5JbmRleDogbnVtYmVyLGFuc0luZGV4Om51bWJlciA9IC0xKSB7XHJcbiAgICBpZihhbnNJbmRleCAhPSAtMSkge1xyXG4gICAgICB0aGlzLmdldEZvcm1BcnJheVF1ZXN0aW9uc0Fuc3dlcihzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdhbnN3ZXJzJyxhbnNJbmRleCkucmVtb3ZlQXQoYWRkbW9yZXFuSW5kZXgpOyAgICBcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdldEZvcm1BcnJheVF1ZXN0aW9uc0Fuc3dlcihzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdhbnN3ZXJzJyxhbnNJbmRleCkucmVtb3ZlQXQoYWRkbW9yZXFuSW5kZXgpOyAgICBcclxuICAgIH1cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBjbG9uZVF1ZXN0aW9uKHNlY3Rpb25pbmRleDogYW55LCBxdWVzdGlvbmluZGV4OiBhbnkpIHtcclxuICAgIGxldCBjbG9uZVF1ZXN0aW9uID0gKCh0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uaW5kZXgsICdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uaW5kZXgpIGFzIEZvcm1Hcm91cCkudmFsdWU7XHJcbiAgICBsZXQgcXVlc3Rpb25MZW5ndGggPSAgKHRoaXMuZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25pbmRleCwgJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkudmFsdWU7XHJcbiAgICBsZXQgcXVlc3Rpb246IGFueTtcclxuICAgIGxldCBhbnN3ZXI6IGFueTtcclxuICAgIGlmIChjbG9uZVF1ZXN0aW9uLmFuc3dlcnMpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xvbmVRdWVzdGlvbi5hbnN3ZXJzKSAmJiBjbG9uZVF1ZXN0aW9uLmFuc3dlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgYW5zd2VyID0gW107XHJcbiAgICAgICAgY2xvbmVRdWVzdGlvbi5hbnN3ZXJzLmZvckVhY2goKGs6IGFueSkgPT4ge1xyXG4gICAgICAgICAgYW5zd2VyLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpICYmIGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJyA/IHsgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbChrPy5hbnN3ZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woaz8uYW5zd2Vyb3B0aW9uTnVtYmVyICsgMSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGs/LnNvcEZsYWcgPyBrPy5zb3BGbGFnIDogZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGs/LnZhbGlkYXRpb24sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbChrPy52YWxpZGF0aW9uVHlwZSwgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIiwgXCJDYXB0dXJlIFZpZGVvXCJdKSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKGs/LnJlZmVyZW5jZUltYWdlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLigoIVsnZGVzY3JpcHRpdmUnLCdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSkgPyB7ICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGs/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGs/LnJ1bkFJID8gaz8ucnVuQUkgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAnc2hvd0xpbmtlZCc6IGZhbHNlIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbXVsdGlwbGVjaG9pY2VzaW5nbGUnLCd5ZXMvbm8nXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ2xpbmtlZFF1ZXN0aW9uJzogMCB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ211bHRpcGxlY2hvaWNlc2luZ2xlJywneWVzL25vJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdsaW5rZWRRdWVzdGlvbic6IDAgfSA6IHt9KSxcclxuICAgICAgICAgICAgICBkZXNjcmlwdGl2ZXR5cGU6dGhpcy5mYi5jb250cm9sKGs/LmRlc2NyaXB0aXZldHlwZSlcclxuXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmKHR5cGVvZiBjbG9uZVF1ZXN0aW9uLmFuc3dlcnMgPT09ICdvYmplY3QnICYmIGNsb25lUXVlc3Rpb24uYW5zd2VycyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGFuc3dlciA9IHRoaXMuZmIuZ3JvdXAoeyAgICAgICAgICBcclxuICAgICAgICAgIC4uLihbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSkgfSA6IHt9KSxcclxuICAgICAgICAgIC4uLigoWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpIHx8IGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgPT0gJ3ZpZGVvJykgPyB7ICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgIC4uLihbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzPy5ydW5BSSA/IGNsb25lUXVlc3Rpb24/LmFuc3dlcnM/LnJ1bkFJIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAuLi4oWydtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7IGRlc2NyaXB0aXZldHlwZTp0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2Vycz8uZGVzY3JpcHRpdmV0eXBlKSB9IDoge30pLFxyXG4gICAgICAgICAgLi4uKFsnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3JhbmdlU3RhcnQnOnRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzLnJhbmdlU3RhcnQpLCdyYW5nZUVuZCc6dGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnMucmFuZ2VFbmQpIH0gOiB7fSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHF1ZXN0aW9uID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbChxdWVzdGlvbkxlbmd0aC5sZW5ndGggKyAxKSxcclxuICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LnFuYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnZGF0ZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAnYW5zd2Vycyc6IChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsICd2aWRlbycsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSkgPyBhbnN3ZXIgOiB0aGlzLmZiLmFycmF5KGFuc3dlcixbdW5pcXVlU3RyaW5nVmFsaWRhdG9yKCldKSB9IDoge30pLFxyXG4gICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8ucnVuQUksIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LnJ1bkFJRGVzY3JpcHRpb24pLFxyXG4gICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5KSxcclxuICAgICAgJ2xpbmtUeXBlJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmRlc2NyaXB0aXZldHlwZSksXHJcbiAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSlcclxuXHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMudXBkYXRlQ2xvbmVkbGlua2VkUXVlc3Rpb25ObyhzZWN0aW9uaW5kZXgsIGNsb25lUXVlc3Rpb24/LnFubyk7XHJcbiAgICAodGhpcy5nZXRTZWN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbmluZGV4LCAncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5pbnNlcnQoY2xvbmVRdWVzdGlvbj8ucW5vLHF1ZXN0aW9uKTtcclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnVwZGF0ZVF1ZXN0aW9uUW5vcyhzZWN0aW9uaW5kZXgpO1xyXG4gICAgdGhpcy5zd2FsVG9hc3QoYFF1ZXN0aW9uICR7Y2xvbmVRdWVzdGlvbj8ucW5vfSBoYXMgYmVlbiBkdXBsaWNhdGVkIWApO1xyXG4gICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDbG9uZWRsaW5rZWRRdWVzdGlvbk5vKHNlY0lkeDpudW1iZXIscWlkeDpudW1iZXIpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYW5zd2VycyA9IChxdWVzdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICBpZihhbnN3ZXJzKSB7XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajxhbnN3ZXJzLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgIGxldCBsaW5rZWQgPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWU7XHJcbiAgICAgICAgICBpZihsaW5rZWQpIHtcclxuICAgICAgICAgICAgbGV0IHF1ZXN0aW9uTm8gPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlO1xyXG4gICAgICAgICAgICBpZihxdWVzdGlvbk5vID4gcWlkeCkge1xyXG4gICAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUocXVlc3Rpb25ObyArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlQ2hlY2tsaXN0UXVlc3Rpb25zKHR5cGU6IHN0cmluZykge1xyXG4gICAgICBsZXQgY2hlY2tsaXN0ID0gdGhpcy5DaGVja2xpc3RGb3JtLnZhbHVlO1xyXG4gICAgICBpZighdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWxpZCkge1xyXG4gICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBpZiAoIXRoaXMuQ2hlY2tsaXN0Rm9ybS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMubWFya0Zvcm1Db250cm9sc0FzVG91Y2hlZCh0aGlzLkNoZWNrbGlzdEZvcm0sMCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb0Vycm9ycyh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzZWN0aW9ucyA9IGNoZWNrbGlzdC5zZWN0aW9ucztcclxuICAgICAgaWYodHlwZSA9PSAnc2F2ZUFzRHJhZnQnKSB7XHJcbiAgICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnY29uZmlndXJlJztcclxuICAgICAgfVxyXG4gICAgICBpZighc2VjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IGVycjogc3RyaW5nID0gJ1BsZWFzZSBhZGQgYXRsZWFzdCBvbmUgc2VjdGlvbiEnO1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmKHR5cGUgPT0gJ2NvbmZpZ3VyZScgJiYgIXNlY3Rpb25zW2ldLnF1ZXN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgYWRkIGF0bGVhc3Qgb25lIHF1ZXN0aW9uIGluIHNlY3Rpb24hJztcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbmRFeGlzdHMgPSBzZWN0aW9ucy5maWx0ZXIoKGVsZTphbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgICBpZihpbmRleCAhPSBpICYmIHNlY3Rpb25zW2ldLm5hbWUudHJpbSgpID09IGVsZS5uYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmKGZpbmRFeGlzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtzZWN0aW9uc1tpXS5uYW1lfSBzZWN0aW9uIG5hbWUgaXMgRHVwbGljYXRlZGAgLCdlcnJvcicpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlY3Rpb25zW2ldLnF1ZXN0aW9ucy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IGFuc1R5cGUgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZTtcclxuICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkucmVwbGFjZUFsbCgvXFxuL2csICcnKVxyXG4gICAgICAgICAgbGV0IGZpbmRFeGlzdHMgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnMuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZihpbmRleCAhPSBqICYmIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkgPT0gZWxlLnFuYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgICByZXR1cm4gZWxlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGlmKGZpbmRFeGlzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGAke3NlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZX0gcXVlc3Rpb24gbmFtZSBpcyBEdXBsaWNhdGVkYCAsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKGFuc1R5cGUgPT0gJ2xpbmVhcnNjYWxlJykge1xyXG4gICAgICAgICAgICBpZihzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZVN0YXJ0ID4gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucmFuZ2VFbmQpe1xyXG4gICAgICAgICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdSYW5nZSBzdGFydCBpcyBncmVhdGVyIHRoYW4gcmFuZ2UgRW5kLic7XHJcbiAgICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYoYW5zVHlwZSAhPSAnZGVzY3JpcHRpdmUnKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uZGVzY3JpcHRpdmV0eXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFtcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIl0uaW5jbHVkZXMoYW5zVHlwZSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gPSBmYWxzZTtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10gPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10udHJpbSgpO1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFtcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJ5ZXMvbm9cIl0uaW5jbHVkZXMoYW5zVHlwZSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXS50cmltKCk7XHJcbiAgICAgICAgICAgICAgaWYoc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3Nob3dMaW5rZWQnXSAmJiBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnc2hvd0xpbmtlZCddID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gJiYgdHlwZW9mIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID09IFwic3RyaW5nXCIpe1xyXG4gICAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2xpbmtlZFF1ZXN0aW9uJ10gPSBwYXJzZUludChzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMpIHx8IFsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoYW5zVHlwZSkpIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJcIjogJycsXHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJvcHRpb25OdW1iZXJcIjogMSxcclxuICAgICAgICAgICAgICBcInNvcEZsYWdcIjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvblR5cGVcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25BbnN3ZXJcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInJlZmVyZW5jZUltYWdlXCI6IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA/IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJzaG93TGlua2VkXCI6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJsaW5rZWRRdWVzdGlvblwiOjAsXHJcbiAgICAgICAgICAgICAgLi4uKGFuc1R5cGUgPT0gJ211bHRpcGxlSW1hZ2UnID8geydkZXNjcmlwdGl2ZXR5cGUnOnNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGV9Ont9KSxcclxuICAgICAgICAgICAgICAuLi4oYW5zVHlwZSA9PSAnbGluZWFyc2NhbGUnID8geydyYW5nZVN0YXJ0JzpzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VTdGFydH06e30pLFxyXG4gICAgICAgICAgICAgIC4uLihhbnNUeXBlID09ICdsaW5lYXJzY2FsZScgPyB7J3JhbmdlRW5kJzpzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VFbmR9Ont9KVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYoYW5zVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScpIHtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uZGVzY3JpcHRpdmV0eXBlID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA/IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGUgOiAndGV4dCc7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgPyBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgOiAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9IFtpdGVtXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2hlY2tsaXN0LnNlY3Rpb25zID0gc2VjdGlvbnM7XHJcbiAgICAgIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lID0gY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLnNsaWNlKDEpO1xyXG4gICAgICBjaGVja2xpc3QuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgICBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZSA9IGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lLnRyaW0oKTtcclxuICAgICAgY2hlY2tsaXN0LmNoZWNrbGlzdERlc2NyaXB0aW9uID0gY2hlY2tsaXN0Py5jaGVja2xpc3REZXNjcmlwdGlvbiA/IGNoZWNrbGlzdD8uY2hlY2tsaXN0RGVzY3JpcHRpb24/LnRyaW0oKSA6ICcnO1xyXG4gICAgICB0aGlzLnNvcFNlcnZpY2UuY3JlYXRlY2hlY2tsaXN0KGNoZWNrbGlzdCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICBpZih0eXBlPT0nY29uZmlndXJlJykge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9tYW5hZ2UvdHJheC9jb25maWd1cmU/Y2hlY2tMaXN0SWQ9JHtyZXMuZGF0YS5jaGVja2xpc3RJZH1gKTsgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9tYW5hZ2UvdHJheC9jaGVja2xpc3QnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoJ1VuYWJsZSB0byBjcmVhdGUgY2hlY2tsaXN0IScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KCdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCEnLCdlcnJvcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBlcnIgPSBlcnJvcj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCFTZXJ2ZXIgRXJyb3IhJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIHNhdmVBc0RyYWZ0UG9wKHR5cGU6IHN0cmluZykge1xyXG4gICAgICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCx7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgICAgaW1hZ2VzcmM6ICBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICB0aXRsZTpgVW5zYXZlZCBjaGFuZ2VzYCxcclxuICAgICAgICBjb250ZW50OmBEbyB5b3Ugd2FudCB0byBzYXZlIGFzIGRyYWZ0P2AsXHJcbiAgICAgICAgYnV0dG9udHlwZTonZHJhZnQnXHJcbiAgICAgIH1cclxuICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpPT57XHJcbiAgICAgICAgaWYoIXJlcykge1xyXG4gICAgICAgICAgdGhpcy5wb3B1cENvdW50ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgICBpZih0eXBlID09ICdjcmVhdGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNoZWNrbGlzdFF1ZXN0aW9ucygnc2F2ZUFzRHJhZnQnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2tsaXN0UXVlc3Rpb25zKCdzYXZlQXNEcmFmdCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja2xpc3RRdWVzdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgc2VjdGlvbnNhcnJheTogYW55ID0gW107XHJcbiAgICBsZXQgY2hlY2tsaXN0OiBhbnk7XHJcbiAgICBcclxuICAgIGlmKCF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbGlkKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ICAgICAgXHJcbiAgICBcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuQ2hlY2tsaXN0Rm9ybSk7XHJcbiAgICAvLyByZXR1cm47XHJcbiAgICBjaGVja2xpc3QgPSB0aGlzLkNoZWNrbGlzdEZvcm0udmFsdWU7XHJcbiAgICBpZiAoIXRoaXMuQ2hlY2tsaXN0Rm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLm1hcmtGb3JtQ29udHJvbHNBc1RvdWNoZWQodGhpcy5DaGVja2xpc3RGb3JtLDApO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvRXJyb3JzKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc2VjdGlvbnNhcnJheSA9IGNoZWNrbGlzdC5zZWN0aW9ucztcclxuICAgIGlmKCF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbGlkKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZih0eXBlID09ICdzYXZlQXNEcmFmdCcpIHtcclxuICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja2xpc3Quc3VibWl0VHlwZSA9ICdjb25maWd1cmUnO1xyXG4gICAgfVxyXG4gICAgaWYoIXNlY3Rpb25zYXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgYWRkIGF0bGVhc3Qgb25lIHNlY3Rpb24hJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlY3Rpb25zYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHNlY3Rpb25OYW1lID0gc2VjdGlvbnNhcnJheVtpXS5uYW1lO1xyXG4gICAgICBsZXQgZmluZEV4aXN0cyA9IHNlY3Rpb25zYXJyYXkuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoaW5kZXggIT0gaSAmJiBzZWN0aW9uTmFtZS50cmltKCkgPT0gZWxlLm5hbWUudHJpbSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gZWxlO1xyXG4gICAgICB9KVxyXG4gICAgICBpZihmaW5kRXhpc3RzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGAke3NlY3Rpb25OYW1lfSBzZWN0aW9uIG5hbWUgaXMgRHVwbGljYXRlZGAgLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZih0eXBlID09ICdjb25maWd1cmUnICYmICFzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGFkZCBhdGxlYXN0IG9uZSBxdWVzdGlvbiBpbiBzZWN0aW9uISc7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0ucW5hbWUgPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkucmVwbGFjZUFsbCgvXFxuL2csICcnKVxyXG4gICAgICAgIGxldCBmaW5kRXhpc3RzID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnMuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoaW5kZXggIT0gaiAmJiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkgPT0gZWxlLnFuYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmKGZpbmRFeGlzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZX0gcXVlc3Rpb24gbmFtZSBpcyBEdXBsaWNhdGVkYCAsJ2Vycm9yJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ2xpbmVhcnNjYWxlJykge1xyXG4gICAgICAgICAgaWYoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZVN0YXJ0ID4gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZUVuZCl7XHJcbiAgICAgICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdSYW5nZSBzdGFydCBpcyBncmVhdGVyIHRoYW4gcmFuZ2UgRW5kLic7XHJcbiAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlICE9ICdkZXNjcmlwdGl2ZScpIHtcclxuICAgICAgICAgIGRlbGV0ZSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5kZXNjcmlwdGl2ZXR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCJdLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VySW5wdXRTdHlsZSddID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZTtcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsncmVmZXJlbmNlSW1hZ2UnXSA9IFwiXCI7XHJcbiAgICAgICAgICAgIC8vIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWyd2YWxpZGF0aW9uQW5zd2VyJ10gPSBcIlwiOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydydW5BSSddID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10udHJpbSgpO1xyXG4gICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gPSBmYWxzZTtcclxuICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwieWVzL25vXCJdLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgIGlmKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3Nob3dMaW5rZWQnXSAmJiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID09IDApIHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3Nob3dMaW5rZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gJiYgdHlwZW9mIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2xpbmtlZFF1ZXN0aW9uJ10gPT0gXCJzdHJpbmdcIil7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID0gcGFyc2VJbnQoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10gPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzICE9PSBudWxsICYmXHJcbiAgICAgICAgICAhQXJyYXkuaXNBcnJheShzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzKSB8fCBbJ2Rlc2NyaXB0aXZlJywnZGF0ZSddLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICAgIFwiYW5zd2VyXCI6ICcnLFxyXG4gICAgICAgICAgICAgIFwiYW5zd2Vyb3B0aW9uTnVtYmVyXCI6IDEsXHJcbiAgICAgICAgICAgICAgXCJzb3BGbGFnXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvblwiOiBmYWxzZSxcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25BbnN3ZXJcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25UeXBlXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJyZWZlcmVuY2VJbWFnZVwiOiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LnJlZmVyZW5jZUltYWdlIDogXCJcIixcclxuICAgICAgICAgICAgICBcInNob3dMaW5rZWRcIjpmYWxzZSxcclxuICAgICAgICAgICAgICBcImxpbmtlZFF1ZXN0aW9uXCI6MCxcclxuICAgICAgICAgICAgICAuLi4oc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScgPyB7J2Rlc2NyaXB0aXZldHlwZSc6c2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uZGVzY3JpcHRpdmV0eXBlfTp7fSksXHJcbiAgICAgICAgICAgICAgLi4uKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ2xpbmVhcnNjYWxlJyA/IHsncmFuZ2VTdGFydCc6c2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VTdGFydH06e30pLFxyXG4gICAgICAgICAgICAgIC4uLihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlID09ICdsaW5lYXJzY2FsZScgPyB7J3JhbmdlRW5kJzpzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yYW5nZUVuZH06e30pXHJcbiAgICAgICAgICAgICAgLy8gXCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI6IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5IDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgLy8gXCJhbnN3ZXJJbnB1dFN0eWxlXCI6IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFuc3dlcklucHV0U3R5bGUgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbnN3ZXJJbnB1dFN0eWxlIDogXCJcIixcclxuICAgICAgICAgICAgICAvLyBcInJ1bkFJXCI6IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucnVuQUkgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLnJ1bkFJIDogZmFsc2UsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA6IGZhbHNlO1xyXG4gICAgICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlID09ICdtdWx0aXBsZUltYWdlJykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmRlc2NyaXB0aXZldHlwZSA9IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA6ICd0ZXh0JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzID0gW2l0ZW1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2hlY2tsaXN0LnNlY3Rpb25zID0gc2VjdGlvbnNhcnJheTtcclxuICAgIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lID0gY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLnNsaWNlKDEpO1xyXG4gICAgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUgPSBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZS50cmltKCk7XHJcbiAgICBjaGVja2xpc3QuY2hlY2tsaXN0RGVzY3JpcHRpb24gPSBjaGVja2xpc3Q/LmNoZWNrbGlzdERlc2NyaXB0aW9uID8gY2hlY2tsaXN0Py5jaGVja2xpc3REZXNjcmlwdGlvbj8udHJpbSgpIDogJyc7XHJcbiAgICBjaGVja2xpc3QuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgdGhpcy5zb3BTZXJ2aWNlLmdldHVwZGF0ZWNoZWNrbGlzdCh0aGlzLmVkaXR2YWx1ZSwgY2hlY2tsaXN0KS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgaWYgKHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIGlmKHR5cGU9PSdjb25maWd1cmUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9tYW5hZ2UvdHJheC9jb25maWd1cmU/Y2hlY2tMaXN0SWQ9JHtyZXMuZGF0YS5jaGVja2xpc3RJZH0mc2hvd0VkaXQ9dHJ1ZWApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL21hbmFnZS90cmF4L2NoZWNrbGlzdCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN3YWxUb2FzdCgnVW5hYmxlIHRvIHVwZGF0ZSBjaGVja2xpc3QhJywnZXJyb3InKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoJ1VuYWJsZSB0byB1cGRhdGUgY2hlY2tsaXN0IScsJ2Vycm9yJyk7XHJcbiAgICAgIH1cclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICBsZXQgZXJyID0gZXJyb3I/LmVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCAnVW5hYmxlIHRvIGNyZWF0ZSBjaGVja2xpc3QhU2VydmVyIEVycm9yISc7XHJcbiAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbWFya0Zvcm1Db250cm9sc0FzVG91Y2hlZChjb250cm9sOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksc2VjdGlvbkluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuXHJcbiAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbnRyb2xOYW1lIGluIGNvbnRyb2wuY29udHJvbHMpIHtcclxuICAgICAgICB0aGlzLm1hcmtGb3JtQ29udHJvbHNBc1RvdWNoZWQoY29udHJvbC5nZXQoY29udHJvbE5hbWUpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goZm9ybUNvbnRyb2wgPT4ge1xyXG4gICAgICAgIHRoaXMubWFya0Zvcm1Db250cm9sc0FzVG91Y2hlZChmb3JtQ29udHJvbCBhcyBGb3JtR3JvdXApO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNjcm9sbFRvRXJyb3JzKHNlY3Rpb25zOiBGb3JtQXJyYXkpIHtcclxuICAgIGZvcihsZXQgaT0wO2k8c2VjdGlvbnMubGVuZ3RoO2krKykge1xyXG4gICAgICBsZXQgc2VjdGlvbiA9IHNlY3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cDtcclxuICAgICAgaWYgKHNlY3Rpb24uaW52YWxpZCkge1xyXG4gICAgICAgIGxldCBxdWVzdGlvbnMgPSBzZWN0aW9uLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIGZvcihsZXQgaj0wO2o8cXVlc3Rpb25zLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgIGxldCBxdWVzdGlvbiA9IHF1ZXN0aW9ucy5hdChqKSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhxdWVzdGlvbiwncXVlc3Rpb24nKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChxdWVzdGlvbi5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93ID0gaTtcclxuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvUXVlc3Rpb24oaSwgaik7XHJcbiAgICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoJ1BsZWFzZSBmaWxsIG91dCBhbGwgdGhlIGZpZWxkcyEnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN3YWxUb2FzdChlcnI6IHN0cmluZyx0eXBlPzpzdHJpbmcsaWNvbj86IHN0cmluZykge1xyXG4gICAgaWYodHlwZSA9PSAnZXJyb3InKSB7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGVycik7XHJcbiAgICB9XHJcbiAgICAvLyBTd2FsLmZpcmUoe1xyXG4gICAgLy8gICB0b2FzdDogdHJ1ZSxcclxuICAgIC8vICAgLi4uKCBpY29uID8geyBpY29uSHRtbDogaWNvbiB9IDoge30pLFxyXG4gICAgLy8gICAvLyB0aXRsZVRleHQ6IGBDaGVja2xpc3QgRm9ybSBFcnJvcmAsXHJcbiAgICAvLyAgIGh0bWw6IGA8ZGl2IGNsYXNzPVwicm93IFwiPlxyXG4gICAgLy8gICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuICAgIC8vICAgPGRpdiBjbGFzcz1cInRvYXN0dGl0aWxlXCI+JHtlcnJ9PC9kaXY+XHJcbiAgICAvLyAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgLy8gICA8L2Rpdj5gLFxyXG4gICAgLy8gICBwb3NpdGlvbjogJ2JvdHRvbScsXHJcbiAgICAvLyAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcclxuICAgIC8vICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgLy8gICB0aW1lcjogNjAwMCxcclxuICAgIC8vICAgdGltZXJQcm9ncmVzc0JhcjogdHJ1ZSxcclxuICAgIC8vICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgICAvLyAgICAgdG9hc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIFN3YWwuc3RvcFRpbWVyKVxyXG4gICAgLy8gICAgIHRvYXN0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBTd2FsLnJlc3VtZVRpbWVyKVxyXG4gICAgLy8gICAgICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIik/LnZhbCgnJyk7XHJcbiAgICAvLyAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgUnVuQUkoc0lkeDpudW1iZXIscUlkeDogbnVtYmVyLGFuc0lkeDpudW1iZXI9LTEpIHtcclxuICAgIGxldCBkaWFsb2dSZWY6IGFueTtcclxuICAgIGxldCBxdWVzdGlvbjogYW55ID0gdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNJZHgscUlkeCwncW5hbWUnKT8udmFsdWU7XHJcbiAgICBpZih0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzSWR4LHFJZHgsJ3J1bkFJJyxhbnNJZHgpPy52YWx1ZSA9PSBmYWxzZSkge1xyXG4gICAgICBpZighcXVlc3Rpb24gfHwgIXRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8udmFsdWUpIHtcclxuICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAhcXVlc3Rpb24gPyAnUGxlYXNlIGVudGVyIHF1ZXN0aW9uIHRvIGNvbnRpbnVlIScgOiAnUGxlYXNlIGVudGVyIENoZWNrbGlzdCBOYW1lIHRvIGNvbnRpbnVlISc7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpOyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5ydW5BSU9mZihzSWR4LCBxSWR4LGZhbHNlLGFuc0lkeCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LHtjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJ30pO1xyXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xyXG4gICAgICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRDFGQURGXCIvPjxwYXRoIGQ9XCJNMjMuMzU2NCAxOS4zNTI1QzI0LjE3NDggMTguNzMyNyAyNS4xNzM4IDE4LjM5ODUgMjYuMjAwNCAxOC40MDA5QzI2LjU1NDkgMTguMzkzIDI2LjkwNTcgMTguNDc0NiAyNy4yMjA0IDE4LjYzODJDMjcuNTM1IDE4LjgwMTggMjcuODAzMyAxOS4wNDIxIDI4LjAwMDQgMTkuMzM2OUMyOC4xOTc1IDE5LjA0MjEgMjguNDY1OCAxOC44MDE4IDI4Ljc4MDQgMTguNjM4MkMyOS4wOTUgMTguNDc0NiAyOS40NDU5IDE4LjM5MyAyOS44MDA0IDE4LjQwMDlDMzAuODI3IDE4LjM5ODUgMzEuODI2IDE4LjczMjcgMzIuNjQ0NCAxOS4zNTI1QzMzLjI3NDQgMTkuODQyMSAzMy43NjA0IDIwLjUyMDEgMzMuOTMyIDIxLjMzOTdDMzQuMzI1NiAyMS4zNjk3IDM0LjY4NTYgMjEuNTMyOSAzNC45ODggMjEuNzc4OUMzNS40NDY0IDIyLjE1MDkgMzUuNzggMjIuNzA4OSAzNS45OSAyMy4yOTkzQzM2LjMxODggMjQuMjE3MyAzNi40MDc2IDI1LjM4NzMgMzYuMDY2OCAyNi4zODMzQzM2LjE1MzIgMjYuNDI0MSAzNi4yMzg0IDI2LjQ3MjEgMzYuMzIxMiAyNi41MjczQzM2LjY1MTIgMjYuNzQ2OSAzNi45MDIgMjcuMDYxMyAzNy4wODY4IDI3LjQzMjFDMzcuNDUwNCAyOC4xNTgxIDM3LjYwMDQgMjkuMTcwOSAzNy42MDA0IDMwLjQwMDlDMzcuNjAwNCAzMS43NzAxIDM3LjA3ODQgMzIuNjg5MyAzNi40MTYgMzMuMjU2OUMzNi4wNDk3IDMzLjU3MSAzNS42MTc0IDMzLjc5ODYgMzUuMTUxMiAzMy45MjI5QzM1LjAzMTIgMzQuNTkyNSAzNC42OTUyIDM1LjM2NzcgMzQuMTY4NCAzNi4wMjUzQzMzLjQ4NDQgMzYuODgzMyAzMi40MjM2IDM3LjYwMDkgMzEuMDAwNCAzNy42MDA5QzI5Ljg3MjQgMzcuNjAwOSAyOC45NzQ4IDM2Ljk3NjkgMjguMzkxNiAzNi4zNjQ5QzI4LjI1MjIgMzYuMjE4OCAyOC4xMjE1IDM2LjA2NDUgMjguMDAwNCAzNS45MDI5QzI3Ljg3OTMgMzYuMDY0NSAyNy43NDg2IDM2LjIxODggMjcuNjA5MiAzNi4zNjQ5QzI3LjAyNiAzNi45NzY5IDI2LjEyOTYgMzcuNjAwOSAyNS4wMDA0IDM3LjYwMDlDMjMuNTc3MiAzNy42MDA5IDIyLjUxNzYgMzYuODgzMyAyMS44MzI0IDM2LjAyNTNDMjEuMzQwMSAzNS40MTQgMjEuMDAyOSAzNC42OTI3IDIwLjg0OTYgMzMuOTIyOUMyMC4zODM0IDMzLjc5ODYgMTkuOTUxMSAzMy41NzEgMTkuNTg0OCAzMy4yNTY5QzE4LjkyMjQgMzIuNjg5MyAxOC40MDA0IDMxLjc2ODkgMTguNDAwNCAzMC40MDA5QzE4LjQwMDQgMjkuMTcwOSAxOC41NTE2IDI4LjE1NjkgMTguOTE0IDI3LjQzMjFDMTkuMDg1NyAyNy4wNjg1IDE5LjM0OTcgMjYuNzU2MSAxOS42Nzk2IDI2LjUyNjFDMTkuNzYwNiAyNi40NzI1IDE5Ljg0NTcgMjYuNDI1MSAxOS45MzQgMjYuMzg0NUMxOS41OTMyIDI1LjM4NjEgMTkuNjgyIDI0LjIxNzMgMjAuMDEwOCAyMy4yOTkzQzIwLjIyMDggMjIuNzA4OSAyMC41NTQ0IDIyLjE1MDkgMjEuMDEyOCAyMS43Nzg5QzIxLjMxNTIgMjEuNTMyOSAyMS42NzUyIDIxLjM3MDkgMjIuMDY4OCAyMS4zMzk3QzIyLjI0MTYgMjAuNTIwMSAyMi43MjY0IDE5Ljg0MjEgMjMuMzU2NCAxOS4zNTI1Wk0yNy40MDA0IDIxLjQwMDlWMjEuMzg4OUwyNy4zOTggMjEuMzI4OUMyNy4zODAzIDIxLjAxNjEgMjcuMzE4MSAyMC43MDc0IDI3LjIxMzIgMjAuNDEyMUMyNy4xMzg1IDIwLjE4OTIgMjcuMDExMyAxOS45ODc2IDI2Ljg0MjQgMTkuODI0MUMyNi42NjUxIDE5LjY2OTggMjYuNDM1MiAxOS41ODk4IDI2LjIwMDQgMTkuNjAwOUMyNS40NDA3IDE5LjU5ODMgMjQuNzAwOSAxOS44NDM1IDI0LjA5MzIgMjAuMjk5M0MyMy41MzY0IDIwLjczMjUgMjMuMjAwNCAyMS4zMTkzIDIzLjIwMDQgMjIuMDAwOUMyMy4yMDAzIDIyLjA5NTkgMjMuMTc3NyAyMi4xODk2IDIzLjEzNDMgMjIuMjc0MUMyMy4wOTEgMjIuMzU4NyAyMy4wMjgyIDIyLjQzMTggMjIuOTUxMSAyMi40ODczQzIyLjg3NCAyMi41NDI4IDIyLjc4NDggMjIuNTc5MyAyMi42OTA5IDIyLjU5MzZDMjIuNTk2OSAyMi42MDc5IDIyLjUwMDkgMjIuNTk5NyAyMi40MTA4IDIyLjU2OTdDMjIuMTg1MiAyMi40OTUzIDIxLjk4MzYgMjIuNTM3MyAyMS43Njg4IDIyLjcxMDFDMjEuNTMzNiAyMi45MDIxIDIxLjMwNDQgMjMuMjQyOSAyMS4xNCAyMy43MDI1QzIwLjgwNTIgMjQuNjQwOSAyMC44NCAyNS43NzczIDIxLjI5OTYgMjYuNDY4NUMyMS4zNjUyIDI2LjU2NyAyMS40MDAzIDI2LjY4MjYgMjEuNDAwNCAyNi44MDA5SDIyLjMwMDRDMjMuMDE2NSAyNi44MDA5IDIzLjcwMzIgMjcuMDg1NCAyNC4yMDk2IDI3LjU5MTdDMjQuNzE1OSAyOC4wOTgxIDI1LjAwMDQgMjguNzg0OCAyNS4wMDA0IDI5LjUwMDlWMjkuOTAyOUMyNS40MDA3IDMwLjA0NDUgMjUuNzM4MSAzMC4zMjMgMjUuOTUzIDMwLjY4OTJDMjYuMTY3OCAzMS4wNTU1IDI2LjI0NjMgMzEuNDg1OSAyNi4xNzQ1IDMxLjkwNDRDMjYuMTAyNyAzMi4zMjI5IDI1Ljg4NTIgMzIuNzAyNSAyNS41NjA2IDMyLjk3NjJDMjUuMjM1OSAzMy4yNDk5IDI0LjgyNSAzMy40IDI0LjQwMDQgMzMuNEMyMy45NzU4IDMzLjQgMjMuNTY0OCAzMy4yNDk5IDIzLjI0MDIgMzIuOTc2MkMyMi45MTU2IDMyLjcwMjUgMjIuNjk4MSAzMi4zMjI5IDIyLjYyNjMgMzEuOTA0NEMyMi41NTQ1IDMxLjQ4NTkgMjIuNjMzIDMxLjA1NTUgMjIuODQ3OCAzMC42ODkyQzIzLjA2MjcgMzAuMzIzIDIzLjQwMDEgMzAuMDQ0NSAyMy44MDA0IDI5LjkwMjlWMjkuNTAwOUMyMy44MDA0IDI4LjY3MjkgMjMuMTI4NCAyOC4wMDA5IDIyLjMwMDQgMjguMDAwOUgyMC4yMDA0QzIwLjEyODcgMjguMDAwOCAyMC4wNTc1IDI3Ljk4NzggMTkuOTkwNCAyNy45NjI1TDE5Ljk4NjggMjcuOTY5N0MxOS43NDkyIDI4LjQ0MzcgMTkuNjAwNCAyOS4yMzA5IDE5LjYwMDQgMzAuNDAwOUMxOS42MDA0IDMxLjQzMTcgMTkuOTc4NCAzMi4wMTI1IDIwLjM2NiAzMi4zNDQ5QzIwLjc4MjQgMzIuNzAyNSAyMS4yNDQ0IDMyLjgwMDkgMjEuNDAwNCAzMi44MDA5QzIxLjU1OTUgMzIuODAwOSAyMS43MTIxIDMyLjg2NDEgMjEuODI0NyAzMi45NzY3QzIxLjkzNzIgMzMuMDg5MiAyMi4wMDA0IDMzLjI0MTggMjIuMDAwNCAzMy40MDA5QzIyLjAwMDQgMzMuODQyNSAyMi4yNDA0IDM0LjYxNDEgMjIuNzY4NCAzNS4yNzY1QzIzLjI4MzIgMzUuOTE4NSAyNC4wMjM2IDM2LjQwMDkgMjUuMDAwNCAzNi40MDA5QzI1LjY3MjQgMzYuNDAwOSAyNi4yNzQ4IDM2LjAyNTMgMjYuNzQwNCAzNS41MzY5QzI2Ljk2OTYgMzUuMjk2OSAyNy4xNDg0IDM1LjA0ODUgMjcuMjY0OCAzNC44NDQ1QzI3LjMxNzggMzQuNzU0MSAyNy4zNjMxIDM0LjY1OTMgMjcuNDAwNCAzNC41NjEzVjI1LjAwMDlIMjYuMDk4NEMyNS45NTY5IDI1LjQwMTIgMjUuNjc4MyAyNS43Mzg3IDI1LjMxMjEgMjUuOTUzNUMyNC45NDU5IDI2LjE2ODMgMjQuNTE1NCAyNi4yNDY4IDI0LjA5NyAyNi4xNzVDMjMuNjc4NSAyNi4xMDMyIDIzLjI5ODggMjUuODg1OCAyMy4wMjUxIDI1LjU2MTFDMjIuNzUxNCAyNS4yMzY1IDIyLjYwMTMgMjQuODI1NSAyMi42MDEzIDI0LjQwMDlDMjIuNjAxMyAyMy45NzYzIDIyLjc1MTQgMjMuNTY1NCAyMy4wMjUxIDIzLjI0MDdDMjMuMjk4OCAyMi45MTYxIDIzLjY3ODUgMjIuNjk4NiAyNC4wOTcgMjIuNjI2OEMyNC41MTU0IDIyLjU1NSAyNC45NDU5IDIyLjYzMzUgMjUuMzEyMSAyMi44NDgzQzI1LjY3ODMgMjMuMDYzMiAyNS45NTY5IDIzLjQwMDYgMjYuMDk4NCAyMy44MDA5SDI3LjQwMDRWMjEuNDAwOVpNMjguNjAwNCAzMy4zOTk3VjM0LjU2MDFDMjguNjM3NyAzNC42NTgxIDI4LjY4MyAzNC43NTI4IDI4LjczNiAzNC44NDMzQzI4Ljg1MzYgMzUuMDQ3MyAyOS4wMzEyIDM1LjI5NTcgMjkuMjU5MiAzNS41MzU3QzI5LjcyNiAzNi4wMjQxIDMwLjMyOTYgMzYuMzk5NyAzMS4wMDA0IDM2LjM5OTdDMzEuOTc3MiAzNi4zOTk3IDMyLjcxNzYgMzUuOTE3MyAzMy4yMzI0IDM1LjI3NTNDMzMuNzYwNCAzNC42MTI5IDM0LjAwMDQgMzMuODQxMyAzNC4wMDA0IDMzLjM5OTdDMzQuMDAwNCAzMy4yNDA2IDM0LjA2MzYgMzMuMDg4IDM0LjE3NjEgMzIuOTc1NUMzNC4yODg2IDMyLjg2MjkgMzQuNDQxMyAzMi43OTk3IDM0LjYwMDQgMzIuNzk5N0MzNC43NTY0IDMyLjc5OTcgMzUuMjE4NCAzMi43MDEzIDM1LjYzNDggMzIuMzQzN0MzNi4wMjI0IDMyLjAxMTMgMzYuNDAwNCAzMS40MzA1IDM2LjQwMDQgMzAuMzk5N0MzNi40MDA0IDI5LjIyOTcgMzYuMjUwNCAyOC40NDM3IDM2LjAxNCAyNy45Njg1QzM1LjkzNDkgMjcuNzkxNiAzNS44MTA4IDI3LjYzODUgMzUuNjU0IDI3LjUyNDVDMzUuNTE4OSAyNy40MzgxIDM1LjM2MDYgMjcuMzk1IDM1LjIwMDQgMjcuNDAwOUMzNS4wOTE5IDI3LjQwMDkgMzQuOTg1NCAyNy4zNzE0IDM0Ljg5MjMgMjcuMzE1NkMzNC43OTkyIDI3LjI1OTggMzQuNzIzIDI3LjE3OTggMzQuNjcxNyAyNy4wODQxQzM0LjYyMDUgMjYuOTg4NCAzNC41OTYyIDI2Ljg4MDcgMzQuNjAxNCAyNi43NzIzQzM0LjYwNjYgMjYuNjYzOCAzNC42NDExIDI2LjU1ODkgMzQuNzAxMiAyNi40Njg1QzM1LjE2MiAyNS43NzczIDM1LjE5NTYgMjQuNjQwOSAzNC44NjA4IDIzLjcwMjVDMzQuNjk2NCAyMy4yNDI5IDM0LjQ2NzIgMjIuOTAwOSAzNC4yMzIgMjIuNzEwMUMzNC4wMTcyIDIyLjUzNzMgMzMuODE1NiAyMi40OTQxIDMzLjU5IDIyLjU2OTdDMzMuNDk5OCAyMi41OTk3IDMzLjQwMzggMjIuNjA3OSAzMy4zMDk5IDIyLjU5MzZDMzMuMjE2IDIyLjU3OTMgMzMuMTI2OCAyMi41NDI4IDMzLjA0OTcgMjIuNDg3M0MzMi45NzI2IDIyLjQzMTggMzIuOTA5OCAyMi4zNTg3IDMyLjg2NjQgMjIuMjc0MUMzMi44MjMxIDIyLjE4OTYgMzIuODAwNSAyMi4wOTU5IDMyLjgwMDQgMjIuMDAwOUMzMi44MDA0IDIxLjMxOTMgMzIuNDY0NCAyMC43MzI1IDMxLjkwNjQgMjAuMjk5M0MzMS4yOTkgMTkuODQzOCAzMC41NTk2IDE5LjU5ODYgMjkuODAwNCAxOS42MDA5QzI5LjU2NTYgMTkuNTg5OCAyOS4zMzU2IDE5LjY2OTggMjkuMTU4NCAxOS44MjQxQzI4Ljk4ODkgMTkuOTg3NCAyOC44NjEzIDIwLjE4OTEgMjguNzg2NCAyMC40MTIxQzI4LjY3MjEgMjAuNzI1NiAyOC42MDkzIDIxLjA1NTQgMjguNjAwNCAyMS4zODg5VjMyLjIwMDlIMjkuNTAwNEMzMC4zMjg0IDMyLjIwMDkgMzEuMDAwNCAzMS41Mjg5IDMxLjAwMDQgMzAuNzAwOVYyOC40OTg5QzMwLjYwMDEgMjguMzU3NCAzMC4yNjI3IDI4LjA3ODkgMzAuMDQ3OCAyNy43MTI2QzI5LjgzMyAyNy4zNDY0IDI5Ljc1NDUgMjYuOTE2IDI5LjgyNjMgMjYuNDk3NUMyOS44OTgxIDI2LjA3OSAzMC4xMTU2IDI1LjY5OTMgMzAuNDQwMiAyNS40MjU3QzMwLjc2NDggMjUuMTUyIDMxLjE3NTggMjUuMDAxOSAzMS42MDA0IDI1LjAwMTlDMzIuMDI1IDI1LjAwMTkgMzIuNDM1OSAyNS4xNTIgMzIuNzYwNiAyNS40MjU3QzMzLjA4NTIgMjUuNjk5MyAzMy4zMDI3IDI2LjA3OSAzMy4zNzQ1IDI2LjQ5NzVDMzMuNDQ2MyAyNi45MTYgMzMuMzY3OCAyNy4zNDY0IDMzLjE1MyAyNy43MTI2QzMyLjkzODEgMjguMDc4OSAzMi42MDA3IDI4LjM1NzQgMzIuMjAwNCAyOC40OTg5VjMwLjcwMDlDMzIuMjAwNCAzMS40MTcgMzEuOTE1OSAzMi4xMDM4IDMxLjQwOTYgMzIuNjEwMUMzMC45MDMyIDMzLjExNjUgMzAuMjE2NSAzMy40MDA5IDI5LjUwMDQgMzMuNDAwOUgyOC42MDA0VjMzLjM5OTdaTTIzLjgwMDQgMjQuNDAwOUMyMy44MDA0IDI0LjU2MDEgMjMuODYzNiAyNC43MTI3IDIzLjk3NjEgMjQuODI1MkMyNC4wODg2IDI0LjkzNzcgMjQuMjQxMyAyNS4wMDA5IDI0LjQwMDQgMjUuMDAwOUMyNC41NTk1IDI1LjAwMDkgMjQuNzEyMSAyNC45Mzc3IDI0LjgyNDcgMjQuODI1MkMyNC45MzcyIDI0LjcxMjcgMjUuMDAwNCAyNC41NjAxIDI1LjAwMDQgMjQuNDAwOUMyNS4wMDA0IDI0LjI0MTggMjQuOTM3MiAyNC4wODkyIDI0LjgyNDcgMjMuOTc2N0MyNC43MTIxIDIzLjg2NDEgMjQuNTU5NSAyMy44MDA5IDI0LjQwMDQgMjMuODAwOUMyNC4yNDEzIDIzLjgwMDkgMjQuMDg4NiAyMy44NjQxIDIzLjk3NjEgMjMuOTc2N0MyMy44NjM2IDI0LjA4OTIgMjMuODAwNCAyNC4yNDE4IDIzLjgwMDQgMjQuNDAwOVpNMzEuNjAwNCAyNy40MDA5QzMxLjc1OTUgMjcuNDAwOSAzMS45MTIxIDI3LjMzNzcgMzIuMDI0NyAyNy4yMjUyQzMyLjEzNzIgMjcuMTEyNyAzMi4yMDA0IDI2Ljk2MDEgMzIuMjAwNCAyNi44MDA5QzMyLjIwMDQgMjYuNjQxOCAzMi4xMzcyIDI2LjQ4OTIgMzIuMDI0NyAyNi4zNzY3QzMxLjkxMjEgMjYuMjY0MSAzMS43NTk1IDI2LjIwMDkgMzEuNjAwNCAyNi4yMDA5QzMxLjQ0MTMgMjYuMjAwOSAzMS4yODg2IDI2LjI2NDEgMzEuMTc2MSAyNi4zNzY3QzMxLjA2MzYgMjYuNDg5MiAzMS4wMDA0IDI2LjY0MTggMzEuMDAwNCAyNi44MDA5QzMxLjAwMDQgMjYuOTYwMSAzMS4wNjM2IDI3LjExMjcgMzEuMTc2MSAyNy4yMjUyQzMxLjI4ODYgMjcuMzM3NyAzMS40NDEzIDI3LjQwMDkgMzEuNjAwNCAyNy40MDA5Wk0yNC40MDA0IDMxLjAwMDlDMjQuMjQxMyAzMS4wMDA5IDI0LjA4ODYgMzEuMDY0MSAyMy45NzYxIDMxLjE3NjdDMjMuODYzNiAzMS4yODkyIDIzLjgwMDQgMzEuNDQxOCAyMy44MDA0IDMxLjYwMDlDMjMuODAwNCAzMS43NjAxIDIzLjg2MzYgMzEuOTEyNyAyMy45NzYxIDMyLjAyNTJDMjQuMDg4NiAzMi4xMzc3IDI0LjI0MTMgMzIuMjAwOSAyNC40MDA0IDMyLjIwMDlDMjQuNTU5NSAzMi4yMDA5IDI0LjcxMjEgMzIuMTM3NyAyNC44MjQ3IDMyLjAyNTJDMjQuOTM3MiAzMS45MTI3IDI1LjAwMDQgMzEuNzYwMSAyNS4wMDA0IDMxLjYwMDlDMjUuMDAwNCAzMS40NDE4IDI0LjkzNzIgMzEuMjg5MiAyNC44MjQ3IDMxLjE3NjdDMjQuNzEyMSAzMS4wNjQxIDI0LjU1OTUgMzEuMDAwOSAyNC40MDA0IDMxLjAwMDlaXCIgZmlsbD1cIiMwMzk4NTVcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUNGREYzXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gICAgICAgICAgdGl0bGU6IGBSdW4gQUkgb24gaW1hZ2UgdXBsb2FkZWRgLFxyXG4gICAgICAgICAgY29udGVudDogYFVzZSB0aGUgcG93ZXIgb2YgQUkgdG8gY29tcGFyZSBhbmQgZGV0ZWN0IGFub21hbGllcyBiZXR3ZWVuIHVwbG9hZGVkIGFuZCByZWZlcmVuY2UgaW1hZ2UuYCxcclxuICAgICAgICAgIGlucHV0bGFiZWwxOiAnUXVlc3Rpb24nLFxyXG4gICAgICAgICAgaW5wdXR0eXBlMTogJ3RleHQnLFxyXG4gICAgICAgICAgaW5wdXQxOiAndHJ1ZScsXHJcbiAgICAgICAgICBpbnB1dGxhYmVsMjogJ1NwZWNpZnkgeW91ciByZXF1ZXN0JyxcclxuICAgICAgICAgIGlucHV0dHlwZTI6ICd0ZXh0JyxcclxuICAgICAgICAgIHJlc1R5cGU6ICdjdXN0b20nLFxyXG4gICAgICAgICAgaW5wdXQyOiAndHJ1ZScsXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjE6IHF1ZXN0aW9uLFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXIyOiAnUGxlYXNlIGNvbXBhcmUgdGhlIHVwbG9hZGVkIGltYWdlcyBhLi4nLFxyXG4gICAgICAgICAgYnV0dG9udHlwZTogJ1JlcXVlc3QnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnN0YXR1cyA9PSAnY29uZmlybScpIHtcclxuICAgICAgICAgICAgbGV0IHJlcTogYW55ID0ge1xyXG4gICAgICAgICAgICAgIGNoZWNrbGlzdE5hbWU6IHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8udmFsdWUsXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25OYW1lOiBxdWVzdGlvbixcclxuICAgICAgICAgICAgICBydW5BSURlc2NyaXB0aW9uOiByZXMuZGF0YS5yZXF1ZXN0VGV4dCxcclxuICAgICAgICAgICAgICBhbnN3ZXJUeXBlOiBcImltYWdlXCIsXHJcbiAgICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNJZHgsIHFJZHgsICdyZWZlcmVuY2VJbWFnZScsYW5zSWR4KT8udmFsdWUgfHwgJycsXHJcbiAgICAgICAgICAgICAgY2xpZW50SWQ6dGhpcy5jbGllbnRJZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc29wU2VydmljZS5ydW5BSUluc2VydChyZXEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChhcGlyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhcGlyZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcGlyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJJyxhbnNJZHgpPy5wYXRjaFZhbHVlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJJyxhbnNJZHgpPy5wYXRjaFZhbHVlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJRGVzY3JpcHRpb24nLGFuc0lkeCk/LnBhdGNoVmFsdWUocmVzLmRhdGEucmVxdWVzdFRleHQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN3YWxUb2FzdChcclxuICAgICAgICAgICAgICAgICAgICBgPHNwYW4gc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAzNnB4O1wiPiR7YXBpcmVzLmRhdGEubWVzc2FnZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxhIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiL3N1cHBvcnQvdmlldy10aWNrZXRzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCwgIzAwOUJGMyk7Zm9udC1mYW1pbHk6IFJvYm90bztmb250LXNpemU6IDE1cHg7Zm9udC13ZWlnaHQ6IDcwMDt0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBUaWNrZXRcclxuICAgICAgICAgICAgICAgICAgICA8L2E+YCxcclxuICAgICAgICAgICAgICAgICAgICBgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvSWNvbnMvc29wLXJ1bmFpLXRvc3RpY29uLnN2Z1wiIC8+YFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ydW5BSU9mZihzSWR4LCBxSWR4LHRydWUsYW5zSWR4KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ydW5BSU9mZihzSWR4LCBxSWR4LHRydWUsYW5zSWR4KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucnVuQUlPZmYoc0lkeCwgcUlkeCx0cnVlLGFuc0lkeCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ydW5BSU9mZihzSWR4LCBxSWR4LGZhbHNlLGFuc0lkeCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LHtjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJ30pO1xyXG4gICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHtcclxuICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEMUZBREZcIi8+PHBhdGggZD1cIk0yMy4zNTY0IDE5LjM1MjVDMjQuMTc0OCAxOC43MzI3IDI1LjE3MzggMTguMzk4NSAyNi4yMDA0IDE4LjQwMDlDMjYuNTU0OSAxOC4zOTMgMjYuOTA1NyAxOC40NzQ2IDI3LjIyMDQgMTguNjM4MkMyNy41MzUgMTguODAxOCAyNy44MDMzIDE5LjA0MjEgMjguMDAwNCAxOS4zMzY5QzI4LjE5NzUgMTkuMDQyMSAyOC40NjU4IDE4LjgwMTggMjguNzgwNCAxOC42MzgyQzI5LjA5NSAxOC40NzQ2IDI5LjQ0NTkgMTguMzkzIDI5LjgwMDQgMTguNDAwOUMzMC44MjcgMTguMzk4NSAzMS44MjYgMTguNzMyNyAzMi42NDQ0IDE5LjM1MjVDMzMuMjc0NCAxOS44NDIxIDMzLjc2MDQgMjAuNTIwMSAzMy45MzIgMjEuMzM5N0MzNC4zMjU2IDIxLjM2OTcgMzQuNjg1NiAyMS41MzI5IDM0Ljk4OCAyMS43Nzg5QzM1LjQ0NjQgMjIuMTUwOSAzNS43OCAyMi43MDg5IDM1Ljk5IDIzLjI5OTNDMzYuMzE4OCAyNC4yMTczIDM2LjQwNzYgMjUuMzg3MyAzNi4wNjY4IDI2LjM4MzNDMzYuMTUzMiAyNi40MjQxIDM2LjIzODQgMjYuNDcyMSAzNi4zMjEyIDI2LjUyNzNDMzYuNjUxMiAyNi43NDY5IDM2LjkwMiAyNy4wNjEzIDM3LjA4NjggMjcuNDMyMUMzNy40NTA0IDI4LjE1ODEgMzcuNjAwNCAyOS4xNzA5IDM3LjYwMDQgMzAuNDAwOUMzNy42MDA0IDMxLjc3MDEgMzcuMDc4NCAzMi42ODkzIDM2LjQxNiAzMy4yNTY5QzM2LjA0OTcgMzMuNTcxIDM1LjYxNzQgMzMuNzk4NiAzNS4xNTEyIDMzLjkyMjlDMzUuMDMxMiAzNC41OTI1IDM0LjY5NTIgMzUuMzY3NyAzNC4xNjg0IDM2LjAyNTNDMzMuNDg0NCAzNi44ODMzIDMyLjQyMzYgMzcuNjAwOSAzMS4wMDA0IDM3LjYwMDlDMjkuODcyNCAzNy42MDA5IDI4Ljk3NDggMzYuOTc2OSAyOC4zOTE2IDM2LjM2NDlDMjguMjUyMiAzNi4yMTg4IDI4LjEyMTUgMzYuMDY0NSAyOC4wMDA0IDM1LjkwMjlDMjcuODc5MyAzNi4wNjQ1IDI3Ljc0ODYgMzYuMjE4OCAyNy42MDkyIDM2LjM2NDlDMjcuMDI2IDM2Ljk3NjkgMjYuMTI5NiAzNy42MDA5IDI1LjAwMDQgMzcuNjAwOUMyMy41NzcyIDM3LjYwMDkgMjIuNTE3NiAzNi44ODMzIDIxLjgzMjQgMzYuMDI1M0MyMS4zNDAxIDM1LjQxNCAyMS4wMDI5IDM0LjY5MjcgMjAuODQ5NiAzMy45MjI5QzIwLjM4MzQgMzMuNzk4NiAxOS45NTExIDMzLjU3MSAxOS41ODQ4IDMzLjI1NjlDMTguOTIyNCAzMi42ODkzIDE4LjQwMDQgMzEuNzY4OSAxOC40MDA0IDMwLjQwMDlDMTguNDAwNCAyOS4xNzA5IDE4LjU1MTYgMjguMTU2OSAxOC45MTQgMjcuNDMyMUMxOS4wODU3IDI3LjA2ODUgMTkuMzQ5NyAyNi43NTYxIDE5LjY3OTYgMjYuNTI2MUMxOS43NjA2IDI2LjQ3MjUgMTkuODQ1NyAyNi40MjUxIDE5LjkzNCAyNi4zODQ1QzE5LjU5MzIgMjUuMzg2MSAxOS42ODIgMjQuMjE3MyAyMC4wMTA4IDIzLjI5OTNDMjAuMjIwOCAyMi43MDg5IDIwLjU1NDQgMjIuMTUwOSAyMS4wMTI4IDIxLjc3ODlDMjEuMzE1MiAyMS41MzI5IDIxLjY3NTIgMjEuMzcwOSAyMi4wNjg4IDIxLjMzOTdDMjIuMjQxNiAyMC41MjAxIDIyLjcyNjQgMTkuODQyMSAyMy4zNTY0IDE5LjM1MjVaTTI3LjQwMDQgMjEuNDAwOVYyMS4zODg5TDI3LjM5OCAyMS4zMjg5QzI3LjM4MDMgMjEuMDE2MSAyNy4zMTgxIDIwLjcwNzQgMjcuMjEzMiAyMC40MTIxQzI3LjEzODUgMjAuMTg5MiAyNy4wMTEzIDE5Ljk4NzYgMjYuODQyNCAxOS44MjQxQzI2LjY2NTEgMTkuNjY5OCAyNi40MzUyIDE5LjU4OTggMjYuMjAwNCAxOS42MDA5QzI1LjQ0MDcgMTkuNTk4MyAyNC43MDA5IDE5Ljg0MzUgMjQuMDkzMiAyMC4yOTkzQzIzLjUzNjQgMjAuNzMyNSAyMy4yMDA0IDIxLjMxOTMgMjMuMjAwNCAyMi4wMDA5QzIzLjIwMDMgMjIuMDk1OSAyMy4xNzc3IDIyLjE4OTYgMjMuMTM0MyAyMi4yNzQxQzIzLjA5MSAyMi4zNTg3IDIzLjAyODIgMjIuNDMxOCAyMi45NTExIDIyLjQ4NzNDMjIuODc0IDIyLjU0MjggMjIuNzg0OCAyMi41NzkzIDIyLjY5MDkgMjIuNTkzNkMyMi41OTY5IDIyLjYwNzkgMjIuNTAwOSAyMi41OTk3IDIyLjQxMDggMjIuNTY5N0MyMi4xODUyIDIyLjQ5NTMgMjEuOTgzNiAyMi41MzczIDIxLjc2ODggMjIuNzEwMUMyMS41MzM2IDIyLjkwMjEgMjEuMzA0NCAyMy4yNDI5IDIxLjE0IDIzLjcwMjVDMjAuODA1MiAyNC42NDA5IDIwLjg0IDI1Ljc3NzMgMjEuMjk5NiAyNi40Njg1QzIxLjM2NTIgMjYuNTY3IDIxLjQwMDMgMjYuNjgyNiAyMS40MDA0IDI2LjgwMDlIMjIuMzAwNEMyMy4wMTY1IDI2LjgwMDkgMjMuNzAzMiAyNy4wODU0IDI0LjIwOTYgMjcuNTkxN0MyNC43MTU5IDI4LjA5ODEgMjUuMDAwNCAyOC43ODQ4IDI1LjAwMDQgMjkuNTAwOVYyOS45MDI5QzI1LjQwMDcgMzAuMDQ0NSAyNS43MzgxIDMwLjMyMyAyNS45NTMgMzAuNjg5MkMyNi4xNjc4IDMxLjA1NTUgMjYuMjQ2MyAzMS40ODU5IDI2LjE3NDUgMzEuOTA0NEMyNi4xMDI3IDMyLjMyMjkgMjUuODg1MiAzMi43MDI1IDI1LjU2MDYgMzIuOTc2MkMyNS4yMzU5IDMzLjI0OTkgMjQuODI1IDMzLjQgMjQuNDAwNCAzMy40QzIzLjk3NTggMzMuNCAyMy41NjQ4IDMzLjI0OTkgMjMuMjQwMiAzMi45NzYyQzIyLjkxNTYgMzIuNzAyNSAyMi42OTgxIDMyLjMyMjkgMjIuNjI2MyAzMS45MDQ0QzIyLjU1NDUgMzEuNDg1OSAyMi42MzMgMzEuMDU1NSAyMi44NDc4IDMwLjY4OTJDMjMuMDYyNyAzMC4zMjMgMjMuNDAwMSAzMC4wNDQ1IDIzLjgwMDQgMjkuOTAyOVYyOS41MDA5QzIzLjgwMDQgMjguNjcyOSAyMy4xMjg0IDI4LjAwMDkgMjIuMzAwNCAyOC4wMDA5SDIwLjIwMDRDMjAuMTI4NyAyOC4wMDA4IDIwLjA1NzUgMjcuOTg3OCAxOS45OTA0IDI3Ljk2MjVMMTkuOTg2OCAyNy45Njk3QzE5Ljc0OTIgMjguNDQzNyAxOS42MDA0IDI5LjIzMDkgMTkuNjAwNCAzMC40MDA5QzE5LjYwMDQgMzEuNDMxNyAxOS45Nzg0IDMyLjAxMjUgMjAuMzY2IDMyLjM0NDlDMjAuNzgyNCAzMi43MDI1IDIxLjI0NDQgMzIuODAwOSAyMS40MDA0IDMyLjgwMDlDMjEuNTU5NSAzMi44MDA5IDIxLjcxMjEgMzIuODY0MSAyMS44MjQ3IDMyLjk3NjdDMjEuOTM3MiAzMy4wODkyIDIyLjAwMDQgMzMuMjQxOCAyMi4wMDA0IDMzLjQwMDlDMjIuMDAwNCAzMy44NDI1IDIyLjI0MDQgMzQuNjE0MSAyMi43Njg0IDM1LjI3NjVDMjMuMjgzMiAzNS45MTg1IDI0LjAyMzYgMzYuNDAwOSAyNS4wMDA0IDM2LjQwMDlDMjUuNjcyNCAzNi40MDA5IDI2LjI3NDggMzYuMDI1MyAyNi43NDA0IDM1LjUzNjlDMjYuOTY5NiAzNS4yOTY5IDI3LjE0ODQgMzUuMDQ4NSAyNy4yNjQ4IDM0Ljg0NDVDMjcuMzE3OCAzNC43NTQxIDI3LjM2MzEgMzQuNjU5MyAyNy40MDA0IDM0LjU2MTNWMjUuMDAwOUgyNi4wOTg0QzI1Ljk1NjkgMjUuNDAxMiAyNS42NzgzIDI1LjczODcgMjUuMzEyMSAyNS45NTM1QzI0Ljk0NTkgMjYuMTY4MyAyNC41MTU0IDI2LjI0NjggMjQuMDk3IDI2LjE3NUMyMy42Nzg1IDI2LjEwMzIgMjMuMjk4OCAyNS44ODU4IDIzLjAyNTEgMjUuNTYxMUMyMi43NTE0IDI1LjIzNjUgMjIuNjAxMyAyNC44MjU1IDIyLjYwMTMgMjQuNDAwOUMyMi42MDEzIDIzLjk3NjMgMjIuNzUxNCAyMy41NjU0IDIzLjAyNTEgMjMuMjQwN0MyMy4yOTg4IDIyLjkxNjEgMjMuNjc4NSAyMi42OTg2IDI0LjA5NyAyMi42MjY4QzI0LjUxNTQgMjIuNTU1IDI0Ljk0NTkgMjIuNjMzNSAyNS4zMTIxIDIyLjg0ODNDMjUuNjc4MyAyMy4wNjMyIDI1Ljk1NjkgMjMuNDAwNiAyNi4wOTg0IDIzLjgwMDlIMjcuNDAwNFYyMS40MDA5Wk0yOC42MDA0IDMzLjM5OTdWMzQuNTYwMUMyOC42Mzc3IDM0LjY1ODEgMjguNjgzIDM0Ljc1MjggMjguNzM2IDM0Ljg0MzNDMjguODUzNiAzNS4wNDczIDI5LjAzMTIgMzUuMjk1NyAyOS4yNTkyIDM1LjUzNTdDMjkuNzI2IDM2LjAyNDEgMzAuMzI5NiAzNi4zOTk3IDMxLjAwMDQgMzYuMzk5N0MzMS45NzcyIDM2LjM5OTcgMzIuNzE3NiAzNS45MTczIDMzLjIzMjQgMzUuMjc1M0MzMy43NjA0IDM0LjYxMjkgMzQuMDAwNCAzMy44NDEzIDM0LjAwMDQgMzMuMzk5N0MzNC4wMDA0IDMzLjI0MDYgMzQuMDYzNiAzMy4wODggMzQuMTc2MSAzMi45NzU1QzM0LjI4ODYgMzIuODYyOSAzNC40NDEzIDMyLjc5OTcgMzQuNjAwNCAzMi43OTk3QzM0Ljc1NjQgMzIuNzk5NyAzNS4yMTg0IDMyLjcwMTMgMzUuNjM0OCAzMi4zNDM3QzM2LjAyMjQgMzIuMDExMyAzNi40MDA0IDMxLjQzMDUgMzYuNDAwNCAzMC4zOTk3QzM2LjQwMDQgMjkuMjI5NyAzNi4yNTA0IDI4LjQ0MzcgMzYuMDE0IDI3Ljk2ODVDMzUuOTM0OSAyNy43OTE2IDM1LjgxMDggMjcuNjM4NSAzNS42NTQgMjcuNTI0NUMzNS41MTg5IDI3LjQzODEgMzUuMzYwNiAyNy4zOTUgMzUuMjAwNCAyNy40MDA5QzM1LjA5MTkgMjcuNDAwOSAzNC45ODU0IDI3LjM3MTQgMzQuODkyMyAyNy4zMTU2QzM0Ljc5OTIgMjcuMjU5OCAzNC43MjMgMjcuMTc5OCAzNC42NzE3IDI3LjA4NDFDMzQuNjIwNSAyNi45ODg0IDM0LjU5NjIgMjYuODgwNyAzNC42MDE0IDI2Ljc3MjNDMzQuNjA2NiAyNi42NjM4IDM0LjY0MTEgMjYuNTU4OSAzNC43MDEyIDI2LjQ2ODVDMzUuMTYyIDI1Ljc3NzMgMzUuMTk1NiAyNC42NDA5IDM0Ljg2MDggMjMuNzAyNUMzNC42OTY0IDIzLjI0MjkgMzQuNDY3MiAyMi45MDA5IDM0LjIzMiAyMi43MTAxQzM0LjAxNzIgMjIuNTM3MyAzMy44MTU2IDIyLjQ5NDEgMzMuNTkgMjIuNTY5N0MzMy40OTk4IDIyLjU5OTcgMzMuNDAzOCAyMi42MDc5IDMzLjMwOTkgMjIuNTkzNkMzMy4yMTYgMjIuNTc5MyAzMy4xMjY4IDIyLjU0MjggMzMuMDQ5NyAyMi40ODczQzMyLjk3MjYgMjIuNDMxOCAzMi45MDk4IDIyLjM1ODcgMzIuODY2NCAyMi4yNzQxQzMyLjgyMzEgMjIuMTg5NiAzMi44MDA1IDIyLjA5NTkgMzIuODAwNCAyMi4wMDA5QzMyLjgwMDQgMjEuMzE5MyAzMi40NjQ0IDIwLjczMjUgMzEuOTA2NCAyMC4yOTkzQzMxLjI5OSAxOS44NDM4IDMwLjU1OTYgMTkuNTk4NiAyOS44MDA0IDE5LjYwMDlDMjkuNTY1NiAxOS41ODk4IDI5LjMzNTYgMTkuNjY5OCAyOS4xNTg0IDE5LjgyNDFDMjguOTg4OSAxOS45ODc0IDI4Ljg2MTMgMjAuMTg5MSAyOC43ODY0IDIwLjQxMjFDMjguNjcyMSAyMC43MjU2IDI4LjYwOTMgMjEuMDU1NCAyOC42MDA0IDIxLjM4ODlWMzIuMjAwOUgyOS41MDA0QzMwLjMyODQgMzIuMjAwOSAzMS4wMDA0IDMxLjUyODkgMzEuMDAwNCAzMC43MDA5VjI4LjQ5ODlDMzAuNjAwMSAyOC4zNTc0IDMwLjI2MjcgMjguMDc4OSAzMC4wNDc4IDI3LjcxMjZDMjkuODMzIDI3LjM0NjQgMjkuNzU0NSAyNi45MTYgMjkuODI2MyAyNi40OTc1QzI5Ljg5ODEgMjYuMDc5IDMwLjExNTYgMjUuNjk5MyAzMC40NDAyIDI1LjQyNTdDMzAuNzY0OCAyNS4xNTIgMzEuMTc1OCAyNS4wMDE5IDMxLjYwMDQgMjUuMDAxOUMzMi4wMjUgMjUuMDAxOSAzMi40MzU5IDI1LjE1MiAzMi43NjA2IDI1LjQyNTdDMzMuMDg1MiAyNS42OTkzIDMzLjMwMjcgMjYuMDc5IDMzLjM3NDUgMjYuNDk3NUMzMy40NDYzIDI2LjkxNiAzMy4zNjc4IDI3LjM0NjQgMzMuMTUzIDI3LjcxMjZDMzIuOTM4MSAyOC4wNzg5IDMyLjYwMDcgMjguMzU3NCAzMi4yMDA0IDI4LjQ5ODlWMzAuNzAwOUMzMi4yMDA0IDMxLjQxNyAzMS45MTU5IDMyLjEwMzggMzEuNDA5NiAzMi42MTAxQzMwLjkwMzIgMzMuMTE2NSAzMC4yMTY1IDMzLjQwMDkgMjkuNTAwNCAzMy40MDA5SDI4LjYwMDRWMzMuMzk5N1pNMjMuODAwNCAyNC40MDA5QzIzLjgwMDQgMjQuNTYwMSAyMy44NjM2IDI0LjcxMjcgMjMuOTc2MSAyNC44MjUyQzI0LjA4ODYgMjQuOTM3NyAyNC4yNDEzIDI1LjAwMDkgMjQuNDAwNCAyNS4wMDA5QzI0LjU1OTUgMjUuMDAwOSAyNC43MTIxIDI0LjkzNzcgMjQuODI0NyAyNC44MjUyQzI0LjkzNzIgMjQuNzEyNyAyNS4wMDA0IDI0LjU2MDEgMjUuMDAwNCAyNC40MDA5QzI1LjAwMDQgMjQuMjQxOCAyNC45MzcyIDI0LjA4OTIgMjQuODI0NyAyMy45NzY3QzI0LjcxMjEgMjMuODY0MSAyNC41NTk1IDIzLjgwMDkgMjQuNDAwNCAyMy44MDA5QzI0LjI0MTMgMjMuODAwOSAyNC4wODg2IDIzLjg2NDEgMjMuOTc2MSAyMy45NzY3QzIzLjg2MzYgMjQuMDg5MiAyMy44MDA0IDI0LjI0MTggMjMuODAwNCAyNC40MDA5Wk0zMS42MDA0IDI3LjQwMDlDMzEuNzU5NSAyNy40MDA5IDMxLjkxMjEgMjcuMzM3NyAzMi4wMjQ3IDI3LjIyNTJDMzIuMTM3MiAyNy4xMTI3IDMyLjIwMDQgMjYuOTYwMSAzMi4yMDA0IDI2LjgwMDlDMzIuMjAwNCAyNi42NDE4IDMyLjEzNzIgMjYuNDg5MiAzMi4wMjQ3IDI2LjM3NjdDMzEuOTEyMSAyNi4yNjQxIDMxLjc1OTUgMjYuMjAwOSAzMS42MDA0IDI2LjIwMDlDMzEuNDQxMyAyNi4yMDA5IDMxLjI4ODYgMjYuMjY0MSAzMS4xNzYxIDI2LjM3NjdDMzEuMDYzNiAyNi40ODkyIDMxLjAwMDQgMjYuNjQxOCAzMS4wMDA0IDI2LjgwMDlDMzEuMDAwNCAyNi45NjAxIDMxLjA2MzYgMjcuMTEyNyAzMS4xNzYxIDI3LjIyNTJDMzEuMjg4NiAyNy4zMzc3IDMxLjQ0MTMgMjcuNDAwOSAzMS42MDA0IDI3LjQwMDlaTTI0LjQwMDQgMzEuMDAwOUMyNC4yNDEzIDMxLjAwMDkgMjQuMDg4NiAzMS4wNjQxIDIzLjk3NjEgMzEuMTc2N0MyMy44NjM2IDMxLjI4OTIgMjMuODAwNCAzMS40NDE4IDIzLjgwMDQgMzEuNjAwOUMyMy44MDA0IDMxLjc2MDEgMjMuODYzNiAzMS45MTI3IDIzLjk3NjEgMzIuMDI1MkMyNC4wODg2IDMyLjEzNzcgMjQuMjQxMyAzMi4yMDA5IDI0LjQwMDQgMzIuMjAwOUMyNC41NTk1IDMyLjIwMDkgMjQuNzEyMSAzMi4xMzc3IDI0LjgyNDcgMzIuMDI1MkMyNC45MzcyIDMxLjkxMjcgMjUuMDAwNCAzMS43NjAxIDI1LjAwMDQgMzEuNjAwOUMyNS4wMDA0IDMxLjQ0MTggMjQuOTM3MiAzMS4yODkyIDI0LjgyNDcgMzEuMTc2N0MyNC43MTIxIDMxLjA2NDEgMjQuNTU5NSAzMS4wMDA5IDI0LjQwMDQgMzEuMDAwOVpcIiBmaWxsPVwiIzAzOTg1NVwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQ0ZERjNcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgdGl0bGU6IGBEb24ndCBydW4gQUkgb24gaW1hZ2UgdXBsb2FkZWRgLFxyXG4gICAgICAgIGNvbnRlbnQ6IGBEbyB5b3Ugd2lzaCB0byBub3QgcnVuIEFJIGluIHRoZSBpbWFnZT9gLFxyXG4gICAgICAgIGJ1dHRvbnR5cGU6ICdjb25maXJtJ1xyXG4gICAgICB9XHJcbiAgICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgscUlkeCxmYWxzZSxhbnNJZHgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknKT8ucGF0Y2hWYWx1ZSh0cnVlKTtcclxuICAgICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknKT8ucGF0Y2hWYWx1ZSh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnVuQUlPZmYoc0lkeDogbnVtYmVyLCBxSWR4OiBudW1iZXIsIHNob3dFcnJvcj86IGJvb2xlYW4sYW5zSWR4Om51bWJlcj0tMSkge1xyXG4gICAgY29uc3QgYW5zd2VyRm9ybUdyb3VwID0gdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJJyxhbnNJZHgpO1xyXG4gICAgaWYgKGFuc3dlckZvcm1Hcm91cCkge1xyXG4gICAgICBhbnN3ZXJGb3JtR3JvdXAucGF0Y2hWYWx1ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBxdWVzdGlvbkNvbnRyb2wgPSB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJJyxhbnNJZHgpO1xyXG4gICAgaWYgKHF1ZXN0aW9uQ29udHJvbCkge1xyXG4gICAgICBxdWVzdGlvbkNvbnRyb2wucGF0Y2hWYWx1ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyBjb25zb2xlLmxvZyhxdWVzdGlvbkNvbnRyb2wpO1xyXG4gICAgXHJcbiAgICBjb25zdCBkZXNjcmlwdGlvbkNvbnRyb2wgPSB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJRGVzY3JpcHRpb24nLGFuc0lkeCk7XHJcbiAgICBpZiAoZGVzY3JpcHRpb25Db250cm9sKSB7XHJcbiAgICAgIGRlc2NyaXB0aW9uQ29udHJvbC5wYXRjaFZhbHVlKCcnKTtcclxuICAgIH1cclxuICBcclxuICAgIGlmIChzaG93RXJyb3IpIHtcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoJ1VuYWJsZSB0byBwcm9jZXNzIHJ1bkFJIHJlcXVlc3QhIFRyeSBhZ2FpbiBhZnRlciBzb21lIHRpbWUhJywnZXJyb3InKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcblxyXG4gIGdldFNlY3Rpb25Gb3JtQXJyYXkoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1Db250cm9sKGZvcm1Db250cm9sOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiAodGhpcy5DaGVja2xpc3RGb3JtLmdldChmb3JtQ29udHJvbCkgYXMgRm9ybUNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleDogbnVtYmVyLCBmb3JtQ29udHJvbE5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldChmb3JtQ29udHJvbE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBmb3JtQ29udHJvbE5hbWU6IHN0cmluZyxhbnNJZHg6bnVtYmVyID0gLTEpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgaWYgKCFzZWN0aW9ucykgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbnMuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGNvbnN0IHF1ZXN0aW9ucyA9IHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgaWYgKCFxdWVzdGlvbnMpIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgbGV0IHF1ZXN0aW9uID0gcXVlc3Rpb25zLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICBpZiAoIXF1ZXN0aW9uKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZihhbnNJZHggIT0gLTEpIHtcclxuICAgICAgbGV0IGFuc3dlckxpc3QgPSBxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgICBpZighYW5zd2VyTGlzdCkgcmV0dXJuIG51bGw7XHJcbiAgICAgIHF1ZXN0aW9uID0gYW5zd2VyTGlzdC5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICAgIGlmKCFxdWVzdGlvbikgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBjb250cm9sID0gcXVlc3Rpb24uZ2V0KGZvcm1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2wgfCBudWxsO1xyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBnZXRGb3JtQXJyYXlRdWVzdGlvbnMoc2VjdGlvbkluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICB9XHJcblxyXG4gIC8vIGluZGl2aWR1YWwgcXVlc3Rpb25cclxuICBnZXRRdWVzdGlvbnNGb3JtR3JvdXAoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zQW5zd2VyKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGZvcm1BcnJheU5hbWU6IHN0cmluZyxhbnNJbmRleDpudW1iZXIgPSAtMSxsaW5rcXVlc3Rpb25JbmRleDpudW1iZXIgPSAtMSkge1xyXG4gICAgbGV0IHNlY3Rpb24gPSAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KT8uYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICgoc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk/LmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBpZihhbnNJbmRleCA9PSAtMSkge1xyXG4gICAgICByZXR1cm4gKHF1ZXN0aW9ucy5nZXQoZm9ybUFycmF5TmFtZSkgYXMgRm9ybUFycmF5KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgYW5zd2VycyA9ICgocXVlc3Rpb25zLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk/LmF0KGFuc0luZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICBsZXQgbGlua2VkSW5kZXggPSAoKGFuc3dlcnMuZ2V0KCdsaW5rUXVlc3Rpb25BbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChsaW5rcXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgcmV0dXJuIChsaW5rZWRJbmRleC5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtQXJyYXlMaW5rZWRRdWVzdGlvbnMoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlcixhbnN3ZXJJbmRleDpudW1iZXIpIHtcclxuICAgIGxldCBzZWN0aW9uID0gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSk/LmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAoKHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpPy5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgbGV0IGFuc3dlciA9IChxdWVzdGlvbnMuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KT8uYXQoYW5zd2VySW5kZXgpIGFzIEZvcm1Hcm91cDtcclxuICAgIHJldHVybiAoYW5zd2VyLmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpIGFzIEZvcm1BcnJheSlcclxuICB9XHJcblxyXG4gIGdldFF1ZXN0aW9uc0Zvcm1BcnJheVZhbHVlcyhzZWN0aW9uSW5kZXg6IG51bWJlcik6IGFueVtdIHtcclxuICAgIHJldHVybiAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5nZXRSYXdWYWx1ZSgpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGZvcm1Db250cm9sTmFtZTogc3RyaW5nLGFuc0lkeDpudW1iZXI9IC0xKSB7XHJcbiAgICBjb25zdCBzZWN0aW9ucyA9IHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5IHwgbnVsbDtcclxuICAgIGlmICghc2VjdGlvbnMpIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25zLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIGlmICghc2VjdGlvbikgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBjb25zdCBxdWVzdGlvbnMgPSBzZWN0aW9uLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5IHwgbnVsbDtcclxuICAgIGlmICghcXVlc3Rpb25zKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gcXVlc3Rpb25zLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICBpZiAoIXF1ZXN0aW9uKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZihmb3JtQ29udHJvbE5hbWUgPT0gJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBxdWVzdGlvbi5nZXQoZm9ybUNvbnRyb2xOYW1lKSBhcyBGb3JtQ29udHJvbCB8IG51bGw7XHJcbiAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gcXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgICAgaWYgKCFhbnN3ZXJzKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgICAgaWYoYW5zSWR4ICE9IC0xKSB7XHJcbiAgXHJcbiAgICAgICAgbGV0IGFuc3dlckxpc3QgPSBxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgICAgIGlmKCFhbnN3ZXJMaXN0KSByZXR1cm4gbnVsbDtcclxuICAgICAgICBhbnN3ZXJzID0gYW5zd2VyTGlzdC5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICAgICAgaWYgKCFhbnN3ZXJzKSByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgY29uc3QgY29udHJvbCA9IGFuc3dlcnMuZ2V0KGZvcm1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2wgfCBudWxsO1xyXG4gICAgICBcclxuICAgICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcbiAgXHJcbiAgfVxyXG5cclxuICByZW1vdmVkTmVzdGVkUXVlc3Rpb24oc2VjdGlvbmluZGV4OiBudW1iZXIscW5vOmFueSkge1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uaW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlc3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gKHF1ZXN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgIGlmKGFuc3dlcnMpIHtcclxuICAgICAgICBmb3IobGV0IGo9MDtqPGFuc3dlcnMubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgbGV0IGxpbmtlZCA9IChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZTtcclxuICAgICAgICAgIGlmKGxpbmtlZCkge1xyXG4gICAgICAgICAgICBsZXQgcXVlc3Rpb25ObyA9IChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGlmKHF1ZXN0aW9uTm8gPT0gcW5vKSB7XHJcbiAgICAgICAgICAgICAgKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZSgwKTtcclxuICAgICAgICAgICAgICAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ3Nob3dMaW5rZWQnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVRdWVzdGlvblFub3Moc2VjdGlvbmluZGV4OiBudW1iZXIpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbmluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBsZXQgcXVlc3Rpb25BcnJheSA9IHF1ZXN0aW9ucz8udmFsdWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcW5vID0gKHF1ZXN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXApPy5nZXQoJ3FubycpPy52YWx1ZTtcclxuICAgICAgaWYoIXRoaXMuZGVsZXRlZExpc3QuaW5jbHVkZXMocW5vKSkge1xyXG4gICAgICAgIGZvcihsZXQgcW4gPSAwOyBxbiA8IHF1ZXN0aW9uQXJyYXkubGVuZ3RoIDtxbisrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHF1ZXN0aW9uQXJyYXlbcW5dO1xyXG4gICAgICAgICAgaWYgKCFbJ2Rlc2NyaXB0aXZlJywgJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCAnbXVsdGlwbGVJbWFnZScsICd2aWRlbycsJ2xpbmVhcnNjYWxlJywndGltZScsJ2RhdGUnXS5pbmNsdWRlcyhpdGVtLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIGxldCBmaW5kSW5kZXggPSBpdGVtLmFuc3dlcnMubWFwKChpdGVtOmFueSwgaW5kZXg6YW55KSA9PiAoaXRlbS5saW5rZWRRdWVzdGlvbiA9PSBxbm8gPyBpbmRleCA6IC0xKSkuZmlsdGVyKChpbmRleDphbnkpID0+IGluZGV4ICE9PSAtMSk7XHJcbiAgICAgICAgICAgIGlmKGZpbmRJbmRleC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBmaW5kSW5kZXguZm9yRWFjaCgoaWR4Om51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5hbnN3ZXJzW2lkeF0uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAoKChxdWVzdGlvbnMuYXQocW4pIGFzIEZvcm1Hcm91cCk/LmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoaWR4KSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUoaSsxKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGxldCBmaW5kQW5zSWR4ID0gaXRlbS5hbnN3ZXJzLmZpbmRJbmRleCgoZWxlOmFueSkgPT4gZWxlLmxpbmtlZFF1ZXN0aW9uID09IHFubyAmJiAhaXRlbS5jaGVja2VkKTtcclxuICAgICAgICAgICAgLy8gaWYoZmluZEFuc0lkeCAhPSAtMSkge1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIChxdWVzdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdxbm8nKT8uc2V0VmFsdWUoaSsxKTtcclxuICAgIH1cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbnNBbnN3ZXJGb3JtR3JvdXAoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlcixhbnNJbmRleDpudW1iZXIpIHtcclxuICAgIHJldHVybiAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmVRdWVzdGlvbihzZWNJZHg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBhY3RpdmVzdGF0dXM6IG51bWJlcixhbnN3ZXJJbmRleDpudW1iZXIgPSAtMSkge1xyXG4gICAgaWYoYWN0aXZlc3RhdHVzID09IDEpIHtcclxuICAgICAgaWYoYW5zd2VySW5kZXggIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmdldFF1ZXN0aW9uc0Fuc3dlckZvcm1Hcm91cChzZWNJZHgscXVlc3Rpb25JbmRleCxhbnN3ZXJJbmRleCkuYWRkQ29udHJvbCgnYWN0aXZlJyx0aGlzLmZiLmNvbnRyb2wodHJ1ZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0UXVlc3Rpb25zRm9ybUdyb3VwKHNlY0lkeCxxdWVzdGlvbkluZGV4KS5hZGRDb250cm9sKCdhY3RpdmUnLHRoaXMuZmIuY29udHJvbCh0cnVlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZihhbnN3ZXJJbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25zQW5zd2VyRm9ybUdyb3VwKHNlY0lkeCxxdWVzdGlvbkluZGV4LGFuc3dlckluZGV4KS5yZW1vdmVDb250cm9sKCdhY3RpdmUnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldFF1ZXN0aW9uc0Zvcm1Hcm91cChzZWNJZHgscXVlc3Rpb25JbmRleCkucmVtb3ZlQ29udHJvbCgnYWN0aXZlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd0FkZEFuc3dlcihhbnN3ZXJzOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIGFuc3dlcnMubGVuZ3RoIDwgMzA7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbkxpc3Qoc2VjSWR4Om51bWJlcixxbnRJZHg6bnVtYmVyLGFuc0lkeDpudW1iZXIpIHtcclxuICAgIC8vIGZvcihsZXQgYW5zd2VyIG9mIHF1ZXN0aW9uPy5hbnN3ZXJzKSB7XHJcbiAgICAvLyAgICAgICAgIGlmKChhbnN3ZXIubGlua2VkUXVlc3Rpb24gJiYgYW5zd2VyLmxpbmtlZFF1ZXN0aW9uID09IGAke3F1ZXN0aW9uLnFub31gICYmIHF1ZXN0aW9uLnFubyA9PSAocW50SWR4KzEpKSB8fCAoIWFuc3dlci5saW5rZWRRdWVzdGlvbi5sZW5ndGggJiYgcXVlc3Rpb24ucW5vICE9IChxbnRJZHgrMSkpKSB7XHJcbiAgICAvLyAgICAgICAgICAgICBxdWVzdGlvbkxpc3QucHVzaChxdWVzdGlvbi5xbm8pXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIGxldCBxdWVzdGlvbkRldGFpbHMgPSAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5nZXRSYXdWYWx1ZSgpIHx8IFtdO1xyXG5cclxuICAgIGxldCBnZXRRdWVzdGlvbiA9KCAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbnRJZHgpIGFzIEZvcm1Hcm91cCkudmFsdWU7XHJcblxyXG4gICAgbGV0IHF1ZXN0aW9uTGlzdDphbnkgPSBbXTtcclxuICAgIGxldCBwYXJlbnRMaW5rZWRRdWVzdGlvbjphbnkgPSBbXTtcclxuICAgIC8vIGxldCBsaW5rZWRRdWVzdGlvbnM6YW55ID0gW107XHJcbiAgICBpZihxdWVzdGlvbkRldGFpbHMubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGZvcihsZXQgcXVlc3Rpb24gb2YgcXVlc3Rpb25EZXRhaWxzKSB7XHJcbiAgICAgIC8vICAgaWYocXVlc3Rpb24uYW5zd2Vycykge1xyXG4gICAgICAvLyAgICAgaWYoWyd2aWRlbycsJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZScsJ3RpbWUnLCdkYXRlJ10uaW5jbHVkZXMocXVlc3Rpb24uYW5zd2VyVHlwZSkpIHtcclxuICAgICAgLy8gICAgICAgcXVlc3Rpb24uYW5zd2VycyA9IFtxdWVzdGlvbi5hbnN3ZXJzXTtcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICAgICBmb3IobGV0IFtpbmRleCxhbnN3ZXJdIG9mIHF1ZXN0aW9uLmFuc3dlcnMuZW50cmllcygpKSB7XHJcbiAgICAgIC8vICAgICAgIGlmKGFuc3dlcj8ubGlua2VkUXVlc3Rpb24pIHtcclxuICAgICAgLy8gICAgICAgICBsaW5rZWRRdWVzdGlvbnMucHVzaCh7XHJcbiAgICAgIC8vICAgICAgICAgICBxbm86cXVlc3Rpb24ucW5vLFxyXG4gICAgICAvLyAgICAgICAgICAgYW5zSWR4OmluZGV4LFxyXG4gICAgICAvLyAgICAgICAgICAgbGlua2VkUXVlc3Rpb246cGFyc2VJbnQoYW5zd2VyLmxpbmtlZFF1ZXN0aW9uKVxyXG4gICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgIC8vICAgICAgIH1cclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gcXVlc3Rpb25EZXRhaWxzID0gcXVlc3Rpb25EZXRhaWxzLmZpbHRlcigoaXRlbTphbnkpID0+IGl0ZW0ucW5vICE9IChxbnRJZHgrMSkpO1xyXG5cclxuICAgICAgZnVuY3Rpb24gZmluZG5lc3RlZFBhcmVudExpbmsocW5vOmFueSkge1xyXG4gICAgICAgIGZvcihsZXQgcXVlc3Rpb24gb2YgcXVlc3Rpb25EZXRhaWxzKSB7XHJcbiAgICAgICAgICBpZihxdWVzdGlvbj8uYW5zd2VycyAmJiBBcnJheS5pc0FycmF5KHF1ZXN0aW9uPy5hbnN3ZXJzKSkge1xyXG4gICAgICAgICAgICBsZXQgbGlua2VkUW4gPSBxdWVzdGlvbj8uYW5zd2Vycz8uZmlsdGVyKChpdGVtOmFueSkgPT4gcW5vID09IGl0ZW0ubGlua2VkUXVlc3Rpb24pO1xyXG4gICAgICAgICAgICBpZihsaW5rZWRRbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBwYXJlbnRMaW5rZWRRdWVzdGlvbi5wdXNoKHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICAgICAgaWYocXVlc3Rpb24ubGlua1R5cGUpIHtcclxuICAgICAgICAgICAgICAgIGZpbmRuZXN0ZWRQYXJlbnRMaW5rKHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IobGV0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9uRGV0YWlscykge1xyXG4gICAgICAgIGlmKHF1ZXN0aW9uPy5hbnN3ZXJzICYmIEFycmF5LmlzQXJyYXkocXVlc3Rpb24/LmFuc3dlcnMpKSB7XHJcbiAgICAgICAgICBpZihnZXRRdWVzdGlvbi5xbm8gIT0gcXVlc3Rpb24ucW5vKXtcclxuICAgICAgICAgICAgbGV0IGxpbmtlZFFucyA9IHF1ZXN0aW9uPy5hbnN3ZXJzPy5maWx0ZXIoKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYoaXRlbT8ubGlua2VkUXVlc3Rpb24gJiYgaXRlbT8ubGlua2VkUXVlc3Rpb24gPT0gZ2V0UXVlc3Rpb24/LnFubykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBpZihsaW5rZWRRbnMubGVuZ3RoICkge1xyXG4gICAgICAgICAgICAgIHBhcmVudExpbmtlZFF1ZXN0aW9uLnB1c2gocXVlc3Rpb24ucW5vKTtcclxuICAgICAgICAgICAgICBmaW5kbmVzdGVkUGFyZW50TGluayhxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gbGV0IGZpbmRFeGlzdHMgPSBsaW5rZWRRdWVzdGlvbnMuZmluZCgoaXRlbTphbnkpID0+ICBpdGVtLnFubyA9PSBxdWVzdGlvbi5xbm8gJiYgaXRlbS5hbnNJZHggPT0gYW5zSWR4ICYmIGl0ZW0ucW5vID09IChxbnRJZHgrMSkpO1xyXG4gICAgICAgICAgLy8gbGV0IGNoZWNrTGlua2VkID0gbGlua2VkUXVlc3Rpb25zLmZpbmQoKGl0ZW06YW55KSA9PiBpdGVtLmxpbmtlZFF1ZXN0aW9uID09IHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICAgIC8vIGlmKCFjaGVja0xpbmtlZCAmJiBxdWVzdGlvbi5xbm8gIT0gKHFudElkeCsxKSAmJiAhcXVlc3Rpb25MaXN0LmluY2x1ZGVzKHF1ZXN0aW9uLnFubykpIHtcclxuICAgICAgICAgIGlmKHF1ZXN0aW9uLnFubyAhPSAocW50SWR4KzEpICYmICFxdWVzdGlvbkxpc3QuaW5jbHVkZXMocXVlc3Rpb24ucW5vKSkge1xyXG4gICAgICAgICAgICBxdWVzdGlvbkxpc3QucHVzaChxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIC8vIGxldCBmaW5kRXhpc3RzID0gbGlua2VkUXVlc3Rpb25zLmZpbmQoKGl0ZW06YW55KSA9PiAgaXRlbS5saW5rZWRRdWVzdGlvbiA9PSBxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgLy8gaWYoIWZpbmRFeGlzdHMgJiYgcXVlc3Rpb24ucW5vICE9IChxbnRJZHgrMSkgJiYgIXF1ZXN0aW9uTGlzdC5pbmNsdWRlcyhxdWVzdGlvbi5xbm8pKSB7XHJcbiAgICAgICAgICBpZihxdWVzdGlvbi5xbm8gIT0gKHFudElkeCsxKSAmJiAhcXVlc3Rpb25MaXN0LmluY2x1ZGVzKHF1ZXN0aW9uLnFubykpIHtcclxuICAgICAgICAgICAgcXVlc3Rpb25MaXN0LnB1c2gocXVlc3Rpb24ucW5vKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBxdWVzdGlvbkxpc3QuZmlsdGVyKChlbGU6YW55KSA9PiAhcGFyZW50TGlua2VkUXVlc3Rpb24uaW5jbHVkZXMoZWxlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMaW5rZWQoc2VjSWR4Om51bWJlcixxbklkeDpudW1iZXIsYW5zSWR4Om51bWJlcikge1xyXG4gICAgbGV0IGxpbmtWYWx1ZSA9ICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZTtcclxuICAgIGlmKGxpbmtWYWx1ZSkge1xyXG4gICAgICBsZXQgbGlua2VkUXVlc3Rpb24gPSAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlO1xyXG4gICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICBsZXQgcXVlc3Rpb25zID0gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgIHF1ZXN0aW9ucy52YWx1ZS5mb3JFYWNoKChxbjphbnkpID0+IHtcclxuICAgICAgICBpZihBcnJheS5pc0FycmF5KHFuLmFuc3dlcnMpKSB7XHJcbiAgICAgICAgICBxbi5hbnN3ZXJzLmZvckVhY2goKGFuczphbnkpID0+IHtcclxuICAgICAgICAgICAgaWYoYW5zLnNob3dMaW5rZWQgJiYgYW5zLmxpbmtlZFF1ZXN0aW9uID09IGxpbmtlZFF1ZXN0aW9uICYmIHFuLnFuby0xICE9IHFuSWR4KSB7XHJcbiAgICAgICAgICAgICAgY291bnQrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmKGxpbmtlZFF1ZXN0aW9uICYmICFjb3VudCkge1xyXG4gICAgICAgICgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChsaW5rZWRRdWVzdGlvbiAtIDEpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZSgwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZighbGlua1ZhbHVlKSB7XHJcbiAgICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgndmFsaWRhdGlvbicpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2xlYXJSZWZlcmVuY2VJbWFnZShzZWNJZHgscW5JZHgsYW5zSWR4KTtcclxuICAgIH1cclxuXHJcbiAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3Nob3dMaW5rZWQnKT8uc2V0VmFsdWUoIWxpbmtWYWx1ZSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVF1ZXN0aW9uVHlwZShzZWNJZHg6bnVtYmVyLHFuSWR4Om51bWJlcixhbnNJZHg6bnVtYmVyLGV2ZW50OmFueSkge1xyXG4gICAgbGV0IGxpbmtlZFF1ZXN0aW9uID0gKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBxdWVzdGlvbnMudmFsdWUuZm9yRWFjaCgocW46YW55KSA9PiB7XHJcbiAgICAgIGlmKEFycmF5LmlzQXJyYXkocW4uYW5zd2VycykpIHtcclxuICAgICAgICBxbi5hbnN3ZXJzLmZvckVhY2goKGFuczphbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGFucy5zaG93TGlua2VkICYmIGFucy5saW5rZWRRdWVzdGlvbiA9PSBsaW5rZWRRdWVzdGlvbiAscW5JZHgscW4ucW5vKVxyXG4gICAgICAgICAgaWYoYW5zLnNob3dMaW5rZWQgJiYgYW5zLmxpbmtlZFF1ZXN0aW9uID09IGxpbmtlZFF1ZXN0aW9uICYmIHFuLnFuby0xICE9IHFuSWR4KSB7XHJcbiAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmKGxpbmtlZFF1ZXN0aW9uICYmICFjb3VudCkge1xyXG4gICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQobGlua2VkUXVlc3Rpb24gLSAxKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSkgLSAxO1xyXG4gICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShwYXJzZUludChldmVudC50YXJnZXQudmFsdWUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKDApO1xyXG4gICAgICAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3Nob3dMaW5rZWQnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3B0aW9uKHFubzphbnksYW5zTGlua2VkOmFueSkge1xyXG4gICAgcmV0dXJuIHFubyA9PSBhbnNMaW5rZWQgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbk5hbWUoc2VjSWR4Om51bWJlcixxSWR4Om51bWJlcikge1xyXG4gICAgcmV0dXJuICgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocUlkeC0xKSBhcyBGb3JtR3JvdXApLmdldCgncW5hbWUnKT8udmFsdWU7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nSWY9XCJjaGVja2xpc3RMb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCIhY2hlY2tsaXN0TG9hZGluZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiQ2hlY2tsaXN0Rm9ybVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtMyBwYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtY2VudGVyIG10LTMgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2NoZWNrbGlzdFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZSBtZS01IHBzLTIgcHgtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuODMzMiAxMC4wMDAzSDQuMTY2NU00LjE2NjUgMTAuMDAwM0w5Ljk5OTg0IDE1LjgzMzdNNC4xNjY1IDEwLjAwMDNMOS45OTk4NCA0LjE2Njk5XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW4gdy04MDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0YWJsZWNvbnRlbnQgbWItNCB3LTEwMFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiY2hlY2tsaXN0IHBsYWluLWlucHV0XCIgI2NoZWNrbGlzdE5hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciBDaGVja2xpc3QgTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cImNoZWNrbGlzdE5hbWVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdGFibGVjb250ZW50IHctMTAwXCI+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJjaGVja2xpc3REZXNjcmlwdGlvbiBwbGFpbi1pbnB1dFwiICNjaGVja2xpc3REZXNjcmlwdGlvbiBwbGFjZWhvbGRlcj1cIkVudGVyIENoZWNrbGlzdCBEZXNjcmlwdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImNoZWNrbGlzdERlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteS02IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3d2YWx1ZSA9PT0gJ2FkZCdcIiAoY2xpY2spPVwic2F2ZUNoZWNrbGlzdFF1ZXN0aW9ucygnY29uZmlndXJlJylcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5Db25maWd1cmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3d2YWx1ZSA9PT0gJ2FkZCdcIiAoY2xpY2spPVwic2F2ZUFzRHJhZnRQb3AoJ2NyZWF0ZScpXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+U2F2ZSBhcyBEcmFmdDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3d2YWx1ZSA9PT0gJ2VkaXQnXCIgKGNsaWNrKT1cInVwZGF0ZUNoZWNrbGlzdFF1ZXN0aW9ucygnY29uZmlndXJlJylcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5Db25maWd1cmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93dmFsdWUgPT09ICdlZGl0J1wiIChjbGljayk9XCJzYXZlQXNEcmFmdFBvcCgndXBkYXRlJylcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5TYXZlIGFzIERyYWZ0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiQ2hlY2tsaXN0Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tbGVmdCBjYXJkIHB4LTcgcHktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xOHB4IGZ3LTYwMCB0ZXh0LWxlZnQgbWItMyBjb25jaXNlLWNoZWNrbGlzdG5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRGb3JtQ29udHJvbCgnY2hlY2tsaXN0TmFtZScpLnZhbHVlID8gZ2V0Rm9ybUNvbnRyb2woJ2NoZWNrbGlzdE5hbWUnKS52YWx1ZSA6ICdDaGVja2xpc3ROYW1lJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcGFuZWwtY29udGFpbmVyXCIgZm9ybUFycmF5TmFtZT1cInNlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmNvbnRyb2xzO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBzZWN0aW9uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMThweCBmdy1ib2xkIGVkaXRhYmxlY29udGVudC1sZWZ0XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlY3Rpb25Gb3JtQ29udHJvbChpLCduYW1lJyk/LnZhbHVlID09PSAnJyA/IFwiU2VjdGlvbiBcIiA6ICcnfX17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2VjdGlvbkZvcm1Db250cm9sKGksJ25hbWUnKT8udmFsdWUgPyBnZXRTZWN0aW9uRm9ybUNvbnRyb2woaSwnbmFtZScpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRTZWN0aW9uRm9ybUNvbnRyb2woaSwnc2VjdGlvbk51bWJlcicpPy52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiZGVsZXRlU2VjdGlvbihpKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjM1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM1XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIG1hdFRvb2x0aXA9XCJEZWxldGUgc2VjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjI1IDQuNUgzLjc1TTMuNzUgNC41SDE1Ljc1TTMuNzUgNC41VjE1QzMuNzUgMTUuMzk3OCAzLjkwODA0IDE1Ljc3OTQgNC4xODkzNCAxNi4wNjA3QzQuNDcwNjQgMTYuMzQyIDQuODUyMTggMTYuNSA1LjI1IDE2LjVIMTIuNzVDMTMuMTQ3OCAxNi41IDEzLjUyOTQgMTYuMzQyIDEzLjgxMDcgMTYuMDYwN0MxNC4wOTIgMTUuNzc5NCAxNC4yNSAxNS4zOTc4IDE0LjI1IDE1VjQuNUgzLjc1Wk02IDQuNVYzQzYgMi42MDIxOCA2LjE1ODA0IDIuMjIwNjQgNi40MzkzNCAxLjkzOTM0QzYuNzIwNjQgMS42NTgwNCA3LjEwMjE4IDEuNSA3LjUgMS41SDEwLjVDMTAuODk3OCAxLjUgMTEuMjc5NCAxLjY1ODA0IDExLjU2MDcgMS45MzkzNEMxMS44NDIgMi4yMjA2NCAxMiAyLjYwMjE4IDEyIDNWNC41TTcuNSA4LjI1VjEyLjc1TTEwLjUgOC4yNVYxMi43NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImFjY29yZGlhbihpKVwiIFtuZ0NsYXNzXT1cInsncm90YXRlJyA6IHNob3cgIT09IGl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgNy41TDEwIDEyLjVMMTUgNy41XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93PT09aVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJhZ0Ryb3AoaSwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZ2V0Rm9ybUFycmF5UXVlc3Rpb25zKGkpLmNvbnRyb2xzXCIgY2xhc3M9XCJxdWVzdGlvbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJxdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBnZXRGb3JtQXJyYXlRdWVzdGlvbnMoaSkuY29udHJvbHM7bGV0IGo9aW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0yIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicXVlc3Rpb24uZ2V0KCdhY3RpdmUnKT8udmFsdWUgPT09IHRydWUgPyAnYWN0aXZlLXF1ZXN0aW9uJyA6ICdxLWJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnIChtb3VzZWVudGVyKT1cInNldEFjdGl2ZVF1ZXN0aW9uKGksaiwxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb1F1ZXN0aW9uKGksaik7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwic2V0QWN0aXZlUXVlc3Rpb24oaSxqLC0xKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBOYW1lXT1cImpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25jaXNlLXF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRRdWVzdGlvbkZvcm1Db250cm9sKGksaiwncW5hbWUnKT8udmFsdWUgPyAnJyA6IFwiUXVlc3Rpb25cIn19e3sgZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChpLGosJ3FuYW1lJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRRdWVzdGlvbkZvcm1Db250cm9sKGksaiwncW5hbWUnKT8udmFsdWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFF1ZXN0aW9uRm9ybUNvbnRyb2woaSxqLCdxbm8nKT8udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBtdC0yXCI+XHJcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiQ2hlY2tsaXN0Rm9ybVwiICNmb3JtUmVmPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcHgtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdC0yXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBjaGVja2xpc3QgbmFtZSBoZXJlXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2hlY2tsaXN0TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm10LTRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGNoZWNrbGlzdCBkZXNjcmlwdGlvbiBoZXJlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNoZWNrbGlzdERlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInNlY3Rpb25zXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbkFyZWEgbXQtNVwiICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGdldFNlY3Rpb25Gb3JtQXJyYXkoKS5jb250cm9scztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMThweCBmdy1ib2xkIGVkaXRhYmxlY29udGVudFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwicGxhaW4taW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWN0aW9uTmFtZSAoY2hhbmdlKT1cInVwZGF0ZUlucHV0VmFsdWUoaSxzZWN0aW9uTmFtZS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibWwtNVwiIChjbGljayk9XCJkZWxldGVTZWN0aW9uKGkpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBtYXRUb29sdGlwPVwiRGVsZXRlIHNlY3Rpb25cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMjUgNC41SDMuNzVNMy43NSA0LjVIMTUuNzVNMy43NSA0LjVWMTVDMy43NSAxNS4zOTc4IDMuOTA4MDQgMTUuNzc5NCA0LjE4OTM0IDE2LjA2MDdDNC40NzA2NCAxNi4zNDIgNC44NTIxOCAxNi41IDUuMjUgMTYuNUgxMi43NUMxMy4xNDc4IDE2LjUgMTMuNTI5NCAxNi4zNDIgMTMuODEwNyAxNi4wNjA3QzE0LjA5MiAxNS43Nzk0IDE0LjI1IDE1LjM5NzggMTQuMjUgMTVWNC41SDMuNzVaTTYgNC41VjNDNiAyLjYwMjE4IDYuMTU4MDQgMi4yMjA2NCA2LjQzOTM0IDEuOTM5MzRDNi43MjA2NCAxLjY1ODA0IDcuMTAyMTggMS41IDcuNSAxLjVIMTAuNUMxMC44OTc4IDEuNSAxMS4yNzk0IDEuNjU4MDQgMTEuNTYwNyAxLjkzOTM0QzExLjg0MiAyLjIyMDY0IDEyIDIuNjAyMTggMTIgM1Y0LjVNNy41IDguMjVWMTIuNzVNMTAuNSA4LjI1VjEyLjc1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiYWNjb3JkaWFuKGkpXCIgW25nQ2xhc3NdPVwieydyb3RhdGUnIDogc2hvdyAhPT0gaX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA3LjVMMTAgMTIuNUwxNSA3LjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uc0FyZWFcIiAqbmdJZj1cInNob3cgPT09IGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwicXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUXVlc3Rpb24tc2VjIG10LTEwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zKGkpLmNvbnRyb2xzO2xldCBqID0gaW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzZXRBY3RpdmVRdWVzdGlvbihpLGosMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInNldEFjdGl2ZVF1ZXN0aW9uKGksaiwtMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBOYW1lXT1cImpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xOHB4IHB4LTMgZWRpdGFibGVjb250ZW50IHF1ZXN0aW9udGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IGRlZmF1bHQ7XCI+IFF1ZXN0aW9uIHt7aisxfX08L3NwYW4+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHBiLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWRcIiByb3dzPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBjbGFzcz1cIm10LTBcIiBbaWRdPVwiJ3EtJyArIGkgKyAnLScgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHF1ZXN0aW9uIGhlcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInFuYW1lXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmdldCgncW5hbWUnKT8uaW52YWxpZCAmJiBxdWVzdGlvbi5nZXQoJ3FuYW1lJyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImNvbG9yOiByZWQ7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ3FuYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+KlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBpcyByZXF1aXJlZC48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFbJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdpbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWZfaW1nX2NvbnQgbWItNCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIzMDBweFwiIGNsYXNzPVwiYXV0by1hZGp1c3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJUYW5nbyBFeWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZfZGVsX2ljb25cIiAoY2xpY2spPVwiY2xlYXJSZWZlcmVuY2VJbWFnZShpLGopO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDUuMDAxM0g0LjE2NjY3TTQuMTY2NjcgNS4wMDEzSDE3LjVNNC4xNjY2NyA1LjAwMTNWMTYuNjY4QzQuMTY2NjcgMTcuMTEgNC4zNDIyNiAxNy41MzM5IDQuNjU0ODIgMTcuODQ2NUM0Ljk2NzM4IDE4LjE1OSA1LjM5MTMxIDE4LjMzNDYgNS44MzMzMyAxOC4zMzQ2SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzQ2IDE1LjAzMjYgMTguMTU5IDE1LjM0NTIgMTcuODQ2NUMxNS42NTc3IDE3LjUzMzkgMTUuODMzMyAxNy4xMSAxNS44MzMzIDE2LjY2OFY1LjAwMTNINC4xNjY2N1pNNi42NjY2NyA1LjAwMTNWMy4zMzQ2NEM2LjY2NjY3IDIuODkyNjEgNi44NDIyNiAyLjQ2ODY4IDcuMTU0ODIgMi4xNTYxMkM3LjQ2NzM4IDEuODQzNTYgNy44OTEzMSAxLjY2Nzk3IDguMzMzMzMgMS42Njc5N0gxMS42NjY3QzEyLjEwODcgMS42Njc5NyAxMi41MzI2IDEuODQzNTYgMTIuODQ1MiAyLjE1NjEyQzEzLjE1NzcgMi40Njg2OCAxMy4zMzMzIDIuODkyNjEgMTMuMzMzMyAzLjMzNDY0VjUuMDAxM004LjMzMzMzIDkuMTY3OTdWMTQuMTY4TTExLjY2NjcgOS4xNjc5N1YxNC4xNjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNCNDIzMThcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBidG4tbGlnaHQtcHJpbWFyeSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIFtpZF09XCInZmlsZXVwbG9hZF8nK2kralwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhbnN3ZXJGaWxlXCIgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50LC0xLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2ZpbGV1cGxvYWRfJytpK2pcIiAoY2xpY2spPVwicmVmSW1nUUlkeD1qO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDA4Ml8zMTIyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOS42NjY3IDMuMzM1MjdWOC4zMzUyN00xOS42NjY3IDguMzM1MjdIMTQuNjY2N00xOS42NjY3IDguMzM1MjdMMTUuOCA0LjcwMTkzQzE0LjkwNDQgMy44MDU4NiAxMy43OTY0IDMuMTUxMjcgMTIuNTc5MyAyLjc5OTI1QzExLjM2MjMgMi40NDcyMiAxMC4wNzU5IDIuNDA5MjMgOC44NDAyNSAyLjY4ODgyQzcuNjA0NTYgMi45Njg0MSA2LjQ1OTg0IDMuNTU2NDYgNS41MTI5IDQuMzk4MTJDNC41NjU5NSA1LjIzOTc3IDMuODQ3NjUgNi4zMDc1OSAzLjQyNTAxIDcuNTAxOTNNMS4zMzMzNCAxNi42Njg2VjExLjY2ODZNMS4zMzMzNCAxMS42Njg2SDYuMzMzMzRNMS4zMzMzNCAxMS42Njg2TDUuMjAwMDEgMTUuMzAxOUM2LjA5NTYzIDE2LjE5OCA3LjIwMzY1IDE2Ljg1MjYgOC40MjA2OCAxNy4yMDQ2QzkuNjM3NzEgMTcuNTU2NyAxMC45MjQxIDE3LjU5NDYgMTIuMTU5OCAxNy4zMTUxQzEzLjM5NTUgMTcuMDM1NSAxNC41NDAyIDE2LjQ0NzQgMTUuNDg3MSAxNS42MDU4QzE2LjQzNDEgMTQuNzY0MSAxNy4xNTI0IDEzLjY5NjMgMTcuNTc1IDEyLjUwMTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDgyXzMxMjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlJldXBsb2FkIEltYWdlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBhZGQtcmVmLWJ0biBidG4tbGlnaHQtcHJpbWFyeSBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIFtpZF09XCInZmlsZXVwbG9hZF8nK2kralwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmaWxlXCIgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50LC0xLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicG9pbnRlclwiIFtmb3JdPVwiJ2ZpbGV1cGxvYWRfJytpK2pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj4gPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgNC4xNjc5N1YxNS44MzQ2TTQuMTY2NjkgMTAuMDAxM0gxNS44MzM0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+QWRkIFJlZmVyZW5jZSBJbWFnZSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcGItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cIm10LTVcIiBuYW1lPVwic2VsZWN0b3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFuc3dlclR5cGVTZWxlY3Rpb24oaSxqLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJkZXNjcmlwdGl2ZVwiIHZhbHVlPVwiZGVzY3JpcHRpdmVcIj5EZXNjcmlwdGl2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJ5ZXMvbm9cIiB2YWx1ZT1cInllcy9ub1wiPkEvQiBRdWVzdGlvbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cIm11bHRpcGxlY2hvaWNlc2luZ2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiPk11bHRpcGxlIENob2ljZSBRdWVzdGlvbiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZSBBbnN3ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCI+TXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlwbGUgQW5zd2VyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwiZGVzY3JpcHRpdmVJbWFnZVwiIHZhbHVlPVwiZGVzY3JpcHRpdmVJbWFnZVwiPkNhcHR1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2Ugd2l0aCBEZXNjcmlwdGlvbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImltYWdlXCIgdmFsdWU9XCJpbWFnZVwiPkNhcHR1cmUgSW1hZ2UgYXMgYW5zd2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwidmlkZW9cIiB2YWx1ZT1cInZpZGVvXCI+Q2FwdHVyZSB2aWRlbyBhcyBhbnN3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJtdWx0aXBsZUltYWdlXCIgdmFsdWU9XCJtdWx0aXBsZUltYWdlXCI+Q2FwdHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSBJbWFnZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImRhdGVcIiB2YWx1ZT1cImRhdGVcIj5EYXRlIC0gREQvTU0vWVlZWTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImxpbmVhcnNjYWxlXCIgdmFsdWU9XCJsaW5lYXJzY2FsZVwiPkxpbmVhciBTY2FsZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cInRpbWVcIiB2YWx1ZT1cInRpbWVcIj5UaW1lPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIG14LTQgZC1mbGV4IG10LTNcIiAqbmdJZj1cIlsnZGVzY3JpcHRpdmUnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJ0ZXh0XCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIiBbaWRdPVwiJ2lubGluZVJhZGlvMCcrIGkgKyBqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzAnKyBpICsgalwiPlRleHQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwibnVtYmVyXCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIiBbaWRdPVwiJ2lubGluZVJhZGlvMScrIGkgKyBqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiAgW2Zvcl09XCInaW5saW5lUmFkaW8xJytpICsgalwiPk51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAneWVzL25vJyB8fCBxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScgfHwgcXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VtdWx0aXBsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xOHB4IGZ3LWJvbGRlclwiIHN0eWxlPVwiY3Vyc29yOiBkZWZhdWx0O1wiPkFuc3dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImFuc3dlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zQW5zd2VyKGksaiwnYW5zd2VycycpPy5jb250cm9scztsZXQgayA9IGluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2Zvcm1Hcm91cE5hbWVdPVwia1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhbnN3ZXIuZ2V0KCdpc2RlbGV0ZWQnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgQW5zd2VyMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcGItMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm10LTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgYW5zd2VyIGhlcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2bFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ3llcy9ubycgfHwgcXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmwyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJpbWdBZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUxpbmtlZChpLGosaylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk5OSA0LjE2NjAyVjE1LjgzMjdNNC4xNjY2NiA5Ljk5OTM1SDE1LjgzMzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdhbnN3ZXInKT8uaW52YWxpZCAmJiBhbnN3ZXIuZ2V0KCdhbnN3ZXInKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ2Fuc3dlcicpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEFuc3dlciBpcyByZXF1aXJlZC48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnc2hvd1NPUEZsYWdFcnJvcicpPy52YWx1ZSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZXJ5IGFuc3dlciBjYW7igJl0IGJlIGEgZmxhZy48L3A+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUNvbnRyb2xOYW1lPVwic29wRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cInJhaXNlZmxhZyhpLGosayx0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJSYWlzZSBhIGZsYWcgaWYgdGhpcyBhbnN3ZXIgaXMgc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdzb3BGbGFnJyk/LnZhbHVlID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2l3aVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNjY2NjkgMTAuMDAwN0MyLjY2NjY5IDEwLjAwMDcgMy4zMzMzNSA5LjMzMzk4IDUuMzMzMzUgOS4zMzM5OEM3LjMzMzM1IDkuMzMzOTggOC42NjY2OSAxMC42NjczIDEwLjY2NjcgMTAuNjY3M0MxMi42NjY3IDEwLjY2NzMgMTMuMzMzNCAxMC4wMDA3IDEzLjMzMzQgMTAuMDAwN1YyLjAwMDY1QzEzLjMzMzQgMi4wMDA2NSAxMi42NjY3IDIuNjY3MzIgMTAuNjY2NyAyLjY2NzMyQzguNjY2NjkgMi42NjczMiA3LjMzMzM1IDEuMzMzOTggNS4zMzMzNSAxLjMzMzk4QzMuMzMzMzUgMS4zMzM5OCAyLjY2NjY5IDIuMDAwNjUgMi42NjY2OSAyLjAwMDY1VjEwLjAwMDdaTTIuNjY2NjkgMTAuMDAwN1YxNC42NjczXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cInJhaXNlZmxhZyhpLGosayxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUmFpc2UgYSBmbGFnIGlmIHRoaXMgYW5zd2VyIGlzIHNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnc29wRmxhZycpPy52YWx1ZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlLWZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjY2NjY5IDEwLjAwMDdDMi42NjY2OSAxMC4wMDA3IDMuMzMzMzUgOS4zMzM5OCA1LjMzMzM1IDkuMzMzOThDNy4zMzMzNSA5LjMzMzk4IDguNjY2NjkgMTAuNjY3MyAxMC42NjY3IDEwLjY2NzNDMTIuNjY2NyAxMC42NjczIDEzLjMzMzQgMTAuMDAwNyAxMy4zMzM0IDEwLjAwMDdWMi4wMDA2NUMxMy4zMzM0IDIuMDAwNjUgMTIuNjY2NyAyLjY2NzMyIDEwLjY2NjcgMi42NjczMkM4LjY2NjY5IDIuNjY3MzIgNy4zMzMzNSAxLjMzMzk4IDUuMzMzMzUgMS4zMzM5OEMzLjMzMzM1IDEuMzMzOTggMi42NjY2OSAyLjAwMDY1IDIuNjY2NjkgMi4wMDA2NVYxMC4wMDA3Wk0yLjY2NjY5IDEwLjAwMDdWMTQuNjY3M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYW5zd2VyLmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFuc3dlcnZhbGlkYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtdC03XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2N1cnNvcjogcG9pbnRlcjtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImdldHZhbGlkYXRpb24oaSxqLGssJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbGlkYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhY2tib3ggcHQtNCBtdC0yIG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlZhbGlkYXRlIHJlc3BvbnNlPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+VHJpZ2dlciBhbiBhY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlc3BvbnNlIHRvIHZhbGlkYXRlIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSAhPT0gJ3llcy9ubycgJiYgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zQW5zd2VyKGksaiwnYW5zd2VycycpLnZhbHVlLmxlbmd0aCA+IDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbnN3ZXIoaSxqLGspXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgYW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA1TDUgMTVNNSA1TDE1IDE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIm1vcmVxbi52YWxpZGF0aW9uXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFuc3dlci5nZXQoJ3ZhbGlkYXRpb24nKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgcHQtNyBmcy00IGZ3LTQwMCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgcmVzcG9uc2UgaXMgdGhpcywgdGhlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwibXQtNSBteC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWxpZGF0aW9uVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVWYWxpZGF0aW9uVHlwZSgkZXZlbnQsaSxqLGspXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5EZXNjcmlwdGl2ZSBBbnN3ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPkNhcHR1cmUgSW1hZ2U8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPkNhcHR1cmUgVmlkZW88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIG14LTQgZC1mbGV4IHB0LThcIiAqbmdJZj1cImFuc3dlci5nZXQoJ3ZhbGlkYXRpb25UeXBlJyk/LnZhbHVlID09PSAnRGVzY3JpcHRpdmUgQW5zd2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzInICsgaSArIGogKyBrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0ZXh0XCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvMicgKyBpICsgaiArIGtcIj5UZXh0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBbaWRdPVwiJ2lubGluZVJhZGlvMycrIGkgKyBqICsga1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibnVtYmVyXCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvMycgKyBpICsgaiArIGtcIj5OdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIHB0LTcgZnMtNCBmdy00MDAgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua2VkIFF1ZXN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgW2lkXT1cImkrJy0nK2tcIiBbbmFtZV09XCJpKyctJytrXCIgY2xhc3M9XCJtdC01XCIgKGNoYW5nZSk9XCJ1cGRhdGVRdWVzdGlvblR5cGUoaSxqLGssJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgUXVlc3Rpb248L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0UXVlc3Rpb25MaXN0KGksaixrKVwiIFt2YWx1ZV09XCJvcHRpb25cIiBbc2VsZWN0ZWRdPVwic2VsZWN0T3B0aW9uKG9wdGlvbixhbnN3ZXIuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb259fS57e2dldFF1ZXN0aW9uTmFtZShpLG9wdGlvbik/LnRyaW0oKT8uc3Vic3RyaW5nKDAsNzApfX08c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRRdWVzdGlvbk5hbWUoaSxvcHRpb24pPy50cmltKCkubGVuZ3RoID4gNzBcIj4uLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgndmFsaWRhdGlvbicpPy52YWx1ZSAmJiBhbnN3ZXIuZ2V0KCd2YWxpZGF0aW9uVHlwZScpPy52YWx1ZSA9PT0gJ0NhcHR1cmUgSW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScsayk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVmX2ltZ19jb250IG1iLTQgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyxrKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjMwMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG8tYWRqdXN0XCIgYWx0PVwiVGFuZ28gRXllXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZfZGVsX2ljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclJlZmVyZW5jZUltYWdlKGksaixrKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDUuMDAxM0g0LjE2NjY3TTQuMTY2NjcgNS4wMDEzSDE3LjVNNC4xNjY2NyA1LjAwMTNWMTYuNjY4QzQuMTY2NjcgMTcuMTEgNC4zNDIyNiAxNy41MzM5IDQuNjU0ODIgMTcuODQ2NUM0Ljk2NzM4IDE4LjE1OSA1LjM5MTMxIDE4LjMzNDYgNS44MzMzMyAxOC4zMzQ2SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzQ2IDE1LjAzMjYgMTguMTU5IDE1LjM0NTIgMTcuODQ2NUMxNS42NTc3IDE3LjUzMzkgMTUuODMzMyAxNy4xMSAxNS44MzMzIDE2LjY2OFY1LjAwMTNINC4xNjY2N1pNNi42NjY2NyA1LjAwMTNWMy4zMzQ2NEM2LjY2NjY3IDIuODkyNjEgNi44NDIyNiAyLjQ2ODY4IDcuMTU0ODIgMi4xNTYxMkM3LjQ2NzM4IDEuODQzNTYgNy44OTEzMSAxLjY2Nzk3IDguMzMzMzMgMS42Njc5N0gxMS42NjY3QzEyLjEwODcgMS42Njc5NyAxMi41MzI2IDEuODQzNTYgMTIuODQ1MiAyLjE1NjEyQzEzLjE1NzcgMi40Njg2OCAxMy4zMzMzIDIuODkyNjEgMTMuMzMzMyAzLjMzNDY0VjUuMDAxM004LjMzMzMzIDkuMTY3OTdWMTQuMTY4TTExLjY2NjcgOS4xNjc5N1YxNC4xNjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0I0MjMxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScsayk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBidG4tbGlnaHQtcHJpbWFyeSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZC1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmaWxldXBsb2FkXycraStqK2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiIG5hbWU9XCJhbnN3ZXJGaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQsaylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZmlsZXVwbG9hZF8nK2kraitrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiIHdpZHRoPVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDA4Ml8zMTIyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuNjY2NyAzLjMzNTI3VjguMzM1MjdNMTkuNjY2NyA4LjMzNTI3SDE0LjY2NjdNMTkuNjY2NyA4LjMzNTI3TDE1LjggNC43MDE5M0MxNC45MDQ0IDMuODA1ODYgMTMuNzk2NCAzLjE1MTI3IDEyLjU3OTMgMi43OTkyNUMxMS4zNjIzIDIuNDQ3MjIgMTAuMDc1OSAyLjQwOTIzIDguODQwMjUgMi42ODg4MkM3LjYwNDU2IDIuOTY4NDEgNi40NTk4NCAzLjU1NjQ2IDUuNTEyOSA0LjM5ODEyQzQuNTY1OTUgNS4yMzk3NyAzLjg0NzY1IDYuMzA3NTkgMy40MjUwMSA3LjUwMTkzTTEuMzMzMzQgMTYuNjY4NlYxMS42Njg2TTEuMzMzMzQgMTEuNjY4Nkg2LjMzMzM0TTEuMzMzMzQgMTEuNjY4Nkw1LjIwMDAxIDE1LjMwMTlDNi4wOTU2MyAxNi4xOTggNy4yMDM2NSAxNi44NTI2IDguNDIwNjggMTcuMjA0NkM5LjYzNzcxIDE3LjU1NjcgMTAuOTI0MSAxNy41OTQ2IDEyLjE1OTggMTcuMzE1MUMxMy4zOTU1IDE3LjAzNTUgMTQuNTQwMiAxNi40NDc0IDE1LjQ4NzEgMTUuNjA1OEMxNi40MzQxIDE0Ljc2NDEgMTcuMTUyNCAxMy42OTYzIDE3LjU3NSAxMi41MDE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY2xpcDBfNDA4Ml8zMTIyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5SZXVwbG9hZCBJbWFnZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnLGspPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBidG4gYWRkLXJlZi1idG4gYnRuLWxpZ2h0LXByaW1hcnkgbXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZXVwbG9hZF8nK2kraitrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIiBuYW1lPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50LGspXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ2ZpbGV1cGxvYWRfJytpK2ora1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDQuMTY3OTdWMTUuODM0Nk00LjE2NjY5IDEwLjAwMTNIMTUuODMzNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5BZGQgUmVmZXJlbmNlIEltYWdlIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy00IGZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXgtMiBidG4tc2VjIG10LTYgdGV4dC1sZWZ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXgtMCBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInRvY1wiIHZhbHVlPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dVcGxvYWRmcm9tR2FsbGVyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93IHVwbG9hZCBmcm9tIGdhbGxlcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKT8uaGFzRXJyb3IoJ2R1cGxpY2F0ZVN0cmluZycpXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+KiBTYW1lIGFuc3dlciBjYW5ub3QgYmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VtdWx0aXBsZScgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJykgJiYgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0FkZEFuc3dlcihxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKT8udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIkFkZE1vcmVBbnMoaSxqLHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gY29sLWxnLTEyIGJ0bi1saWdodC1wcmltYXJ5IG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBNb3JlIEFuc3dlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJbWFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWZfaW1nX2NvbnQgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMzAwcHhcIiBjbGFzcz1cImF1dG8tYWRqdXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlRhbmdvIEV5ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZfZGVsX2ljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyUmVmZXJlbmNlSW1hZ2UoaSxqKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNS4wMDEzSDQuMTY2NjdNNC4xNjY2NyA1LjAwMTNIMTcuNU00LjE2NjY3IDUuMDAxM1YxNi42NjhDNC4xNjY2NyAxNy4xMSA0LjM0MjI2IDE3LjUzMzkgNC42NTQ4MiAxNy44NDY1QzQuOTY3MzggMTguMTU5IDUuMzkxMzEgMTguMzM0NiA1LjgzMzMzIDE4LjMzNDZIMTQuMTY2N0MxNC42MDg3IDE4LjMzNDYgMTUuMDMyNiAxOC4xNTkgMTUuMzQ1MiAxNy44NDY1QzE1LjY1NzcgMTcuNTMzOSAxNS44MzMzIDE3LjExIDE1LjgzMzMgMTYuNjY4VjUuMDAxM0g0LjE2NjY3Wk02LjY2NjY3IDUuMDAxM1YzLjMzNDY0QzYuNjY2NjcgMi44OTI2MSA2Ljg0MjI2IDIuNDY4NjggNy4xNTQ4MiAyLjE1NjEyQzcuNDY3MzggMS44NDM1NiA3Ljg5MTMxIDEuNjY3OTcgOC4zMzMzMyAxLjY2Nzk3SDExLjY2NjdDMTIuMTA4NyAxLjY2Nzk3IDEyLjUzMjYgMS44NDM1NiAxMi44NDUyIDIuMTU2MTJDMTMuMTU3NyAyLjQ2ODY4IDEzLjMzMzMgMi44OTI2MSAxMy4zMzMzIDMuMzM0NjRWNS4wMDEzTTguMzMzMzMgOS4xNjc5N1YxNC4xNjhNMTEuNjY2NyA5LjE2Nzk3VjE0LjE2OFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNCNDIzMThcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGJ0bi1saWdodC1wcmltYXJ5IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIGlkPVwiZmlsZXVwbG9hZFwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmlsZXVwbG9hZFwiIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDA4Ml8zMTIyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjY2NjcgMy4zMzUyN1Y4LjMzNTI3TTE5LjY2NjcgOC4zMzUyN0gxNC42NjY3TTE5LjY2NjcgOC4zMzUyN0wxNS44IDQuNzAxOTNDMTQuOTA0NCAzLjgwNTg2IDEzLjc5NjQgMy4xNTEyNyAxMi41NzkzIDIuNzk5MjVDMTEuMzYyMyAyLjQ0NzIyIDEwLjA3NTkgMi40MDkyMyA4Ljg0MDI1IDIuNjg4ODJDNy42MDQ1NiAyLjk2ODQxIDYuNDU5ODQgMy41NTY0NiA1LjUxMjkgNC4zOTgxMkM0LjU2NTk1IDUuMjM5NzcgMy44NDc2NSA2LjMwNzU5IDMuNDI1MDEgNy41MDE5M00xLjMzMzM0IDE2LjY2ODZWMTEuNjY4Nk0xLjMzMzM0IDExLjY2ODZINi4zMzMzNE0xLjMzMzM0IDExLjY2ODZMNS4yMDAwMSAxNS4zMDE5QzYuMDk1NjMgMTYuMTk4IDcuMjAzNjUgMTYuODUyNiA4LjQyMDY4IDE3LjIwNDZDOS42Mzc3MSAxNy41NTY3IDEwLjkyNDEgMTcuNTk0NiAxMi4xNTk4IDE3LjMxNTFDMTMuMzk1NSAxNy4wMzU1IDE0LjU0MDIgMTYuNDQ3NCAxNS40ODcxIDE1LjYwNThDMTYuNDM0MSAxNC43NjQxIDE3LjE1MjQgMTMuNjk2MyAxNy41NzUgMTIuNTAxOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzQwODJfMzEyMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5SZXVwbG9hZCBJbWFnZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGFkZC1yZWYtYnRuIGJ0bi1saWdodC1wcmltYXJ5IG15LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIGlkPVwiZmlsZXVwbG9hZFwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJwb2ludGVyXCIgZm9yPVwiZmlsZXVwbG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj4gPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDQuMTY3OTdWMTUuODM0Nk00LjE2NjY5IDEwLjAwMTNIMTUuODMzNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5BZGQgUmVmZXJlbmNlIEltYWdlIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy00IGZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXgtMiBidG4tc2VjIG10LTYgdGV4dC1sZWZ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBteC0wIHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3cgdXBsb2FkIGZyb20gZ2FsbGVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKFsnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSkgJiYgZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWUgPT09ICcnKSA/ICdjb2wtbGctNCBtdC02JyA6IFsnaW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpID8gJ2NvbC1sZy0yJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCIoWydtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKSAmJiBnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZSA9PT0gJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW80JyArIGkgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidGV4dFwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW80JyArIGkgKyBqXCI+VGV4dDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzUnICsgaSArIGpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJudW1iZXJcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvNScgKyBpICsgalwiPk51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZSAmJiBbJ2ltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVJbWFnZScgPyAnY29sLWxnLTUgZC1mbGV4IG10LTYnIDogJ2NvbC1sZy0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVJbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzYnICsgaSArIGpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0ZXh0XCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzYnICsgaSArIGpcIj5UZXh0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBbaWRdPVwiJ2lubGluZVJhZGlvNicgKyBpICsgalwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm51bWJlclwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW82JyArIGkgKyBqXCI+TnVtYmVyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiZnMxNi02MDAgcHgtMTJcIj4gUnVuIEFJIOKcqDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBhbGlnbi1pdGVtcy1jZW50ZXIgYnRuLXNlYyBtbC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUnVuQUkoaSxqKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJydW5BSVwiIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVJbWFnZScgPyAnbXQtMScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRW5hYmxlIEFJIHdoZXJlIHlvdSB3YW50IHRhbmdvIHRvIGlkZW50aWZ5LCB0cmFjayBhbmQgYWxlcnQgaW5zdGFuY2VzLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzAxXzEwMDAzOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy45OTk2NyAxMC42NjU0VjcuOTk4N003Ljk5OTY3IDUuMzMyMDNIOC4wMDYzNE0xNC42NjYzIDcuOTk4N0MxNC42NjYzIDExLjY4MDYgMTEuNjgxNiAxNC42NjU0IDcuOTk5NjcgMTQuNjY1NEM0LjMxNzc4IDE0LjY2NTQgMS4zMzMwMSAxMS42ODA2IDEuMzMzMDEgNy45OTg3QzEuMzMzMDEgNC4zMTY4IDQuMzE3NzggMS4zMzIwMyA3Ljk5OTY3IDEuMzMyMDNDMTEuNjgxNiAxLjMzMjAzIDE0LjY2NjMgNC4zMTY4IDE0LjY2NjMgNy45OTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMDFfMTAwMDM4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZpZGVvIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAndmlkZW8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBjb2wtbGctNCBmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIHRleHQtbGVmdCBhbGlnbi1pdGVtcy1jZW50ZXIgYnRuLXNlYyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXgtMCBwb2ludGVyXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIiBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4U3dpdGNoQ2hlY2tEZWZhdWx0XCI+QWxsb3cgdXBsb2FkIGZyb20gZ2FsbGVyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAndGltZSdcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwiYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgY29sLWxnLTQgYnRuLXNlYyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgZmxhdHBpY2tyLWlucHV0IHctMjAwcHhcIiB0eXBlPVwidGltZVwiIG5hbWU9XCJ0aW1lXCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbGluZWFyc2NhbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXNlYyBtdC0yIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgZmxhdHBpY2tyLWlucHV0IHctMTAwcHhcIiB0eXBlPVwibnVtYmVyXCIgbmFtZT1cInN0YXJ0XCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJyYW5nZVN0YXJ0XCI+ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tc2VjIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTZweFwiPnRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBidG4tc2VjIG10LTIgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0xMDBweFwiIHR5cGU9XCJudW1iZXJcIiBuYW1lPVwic3RhcnRcIiBuZ0RlZmF1bHRDb250cm9sIGZvcm1Db250cm9sTmFtZT1cInJhbmdlRW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImNsb25lUXVlc3Rpb24oaSxqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRHVwbGljYXRlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMzODVfMTA1NzgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjY2MyAxMi40OTkzSDMuMzMzMjlDMi44OTEyNyAxMi40OTkzIDIuNDY3MzQgMTIuMzIzOCAyLjE1NDc4IDEyLjAxMTJDMS44NDIyMiAxMS42OTg2IDEuNjY2NjMgMTEuMjc0NyAxLjY2NjYzIDEwLjgzMjdWMy4zMzI2OEMxLjY2NjYzIDIuODkwNjUgMS44NDIyMiAyLjQ2NjczIDIuMTU0NzggMi4xNTQxN0MyLjQ2NzM0IDEuODQxNjEgMi44OTEyNyAxLjY2NjAyIDMuMzMzMjkgMS42NjYwMkgxMC44MzMzQzExLjI3NTMgMS42NjYwMiAxMS42OTkyIDEuODQxNjEgMTIuMDExOCAyLjE1NDE3QzEyLjMyNDQgMi40NjY3MyAxMi41IDIuODkwNjUgMTIuNSAzLjMzMjY4VjQuMTY2MDJNOS4xNjY2MyA3LjQ5OTM1SDE2LjY2NjZDMTcuNTg3MSA3LjQ5OTM1IDE4LjMzMzMgOC4yNDU1NCAxOC4zMzMzIDkuMTY2MDJWMTYuNjY2QzE4LjMzMzMgMTcuNTg2NSAxNy41ODcxIDE4LjMzMjcgMTYuNjY2NiAxOC4zMzI3SDkuMTY2NjNDOC4yNDYxNSAxOC4zMzI3IDcuNDk5OTYgMTcuNTg2NSA3LjQ5OTk2IDE2LjY2NlY5LjE2NjAyQzcuNDk5OTYgOC4yNDU1NCA4LjI0NjE1IDcuNDk5MzUgOS4xNjY2MyA3LjQ5OTM1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMzg1XzEwNTc4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJkZWxldGVRdWVzdGlvbihpLGopXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMjRweCAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHF1ZXN0aW9uXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNC45OTkzNUg0LjE2NjY3TTQuMTY2NjcgNC45OTkzNUgxNy41TTQuMTY2NjcgNC45OTkzNVYxNi42NjZDNC4xNjY2NyAxNy4xMDggNC4zNDIyNiAxNy41MzIgNC42NTQ4MiAxNy44NDQ1QzQuOTY3MzggMTguMTU3MSA1LjM5MTMxIDE4LjMzMjcgNS44MzMzMyAxOC4zMzI3SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzI3IDE1LjAzMjYgMTguMTU3MSAxNS4zNDUyIDE3Ljg0NDVDMTUuNjU3NyAxNy41MzIgMTUuODMzMyAxNy4xMDggMTUuODMzMyAxNi42NjZWNC45OTkzNUg0LjE2NjY3Wk02LjY2NjY3IDQuOTk5MzVWMy4zMzI2OEM2LjY2NjY3IDIuODkwNjUgNi44NDIyNiAyLjQ2NjczIDcuMTU0ODIgMi4xNTQxN0M3LjQ2NzM4IDEuODQxNjEgNy44OTEzMSAxLjY2NjAyIDguMzMzMzMgMS42NjYwMkgxMS42NjY3QzEyLjEwODcgMS42NjYwMiAxMi41MzI2IDEuODQxNjEgMTIuODQ1MiAyLjE1NDE3QzEzLjE1NzcgMi40NjY3MyAxMy4zMzMzIDIuODkwNjUgMTMuMzMzMyAzLjMzMjY4VjQuOTk5MzVNOC4zMzMzMyA5LjE2NjAyVjE0LjE2Nk0xMS42NjY3IDkuMTY2MDJWMTQuMTY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgcHgtMFwiICpuZ0lmPVwiQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcHktNyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJhZGROZXdRdWVzdGlvbihzZWN0aW9uSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiIGNsYXNzPVwibXQtMiBidG4tc2VjIHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTk5IDQuMTY2MDJWMTUuODMyN000LjE2NjY2IDkuOTk5MzVIMTUuODMzM1wiIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBBZGQgTmV3IFF1ZXN0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBwbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHB5LTcgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiYWRkTmV3U2VjdGlvbigpXCIgY2xhc3M9XCJtdC0yIHB4LTAgYnRuLXNlYyBwb2ludGVyXCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTk5OTkgNC4xNjYwMlYxNS44MzI3TTQuMTY2NjYgOS45OTkzNUgxNS44MzMzXCIgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEFkZCBOZXcgU2VjdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
1585
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBaUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLFNBQVMsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7Ozs7O0FBTzFGLE1BQU0sT0FBTyxxQkFBcUI7SUFpQlo7SUFBaUM7SUFBd0I7SUFBeUM7SUFBd0I7SUFBNkI7SUFBMkI7SUFBc0I7SUFBK0I7SUFoQnJPLE9BQU8sQ0FBYTtJQUUxQyxhQUFhLENBQWE7SUFDMUIsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUNqQixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsQ0FBTTtJQUNmLFNBQVMsQ0FBTTtJQUNmLFVBQVUsR0FB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QUM1TSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQWUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBZSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFlLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBZSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbE47SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQU8sRUFBQyxTQUFhO1FBQ2hDLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFhLEVBQUMsSUFBVztRQUN2QyxPQUFTLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFlLENBQUMsRUFBRSxDQUFDLElBQUksR0FBQyxDQUFDLENBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzdILENBQUM7d0dBaG5EVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiw2SkNsQmxDLDJwa0ZBMndCTTs7NEZEenZCTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzZTQUtQLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgdGltZXIsdGFrZVVudGlsLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmF4cG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi90cmF4cG9wdXAvdHJheHBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IG5vV2hpdGVzcGFjZVZhbGlkYXRvciB9IGZyb20gJy4uL2NyZWF0ZS10YXNrL3ZhbGlkYXRvcnMvd2hpdGVzcGFjZS12YWxpZGF0b3InO1xyXG5pbXBvcnQgeyB1bmlxdWVTdHJpbmdWYWxpZGF0b3IgfSBmcm9tICcuLi9jcmVhdGUtdGFzay92YWxpZGF0b3JzL3VuaXF1ZS1zdHJpbmctdmFsaWRhdG9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC1jaGVja2xpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZENoZWNrbGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICBDaGVja2xpc3RGb3JtITogRm9ybUdyb3VwO1xyXG4gIHNob3c6IG51bWJlciA9IDA7XHJcbiAgc2VjdGlvbkluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGdldG9iamVjdDogYW55O1xyXG4gIGVkaXR2YWx1ZTogYW55O1xyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vc2VjdGlvbjpib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd3ZhbHVlOiBzdHJpbmc7XHJcbiAgcmVmSW1nUUlkeDogbnVtYmVyID0gMDtcclxuICBjaGVja2xpc3RMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcG9wdXBDb3VudDpudW1iZXIgPSAwO1xyXG4gIGNsaWVudElkOmFueTtcclxuICBkZWxldGVkTGlzdDphbnkgPSBbXTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mbzpQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIscHJpdmF0ZSBjaGFuZ2VkZXRlY3RvcjpDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIGRpYWxvZzpOZ2JNb2RhbCxwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlLHByaXZhdGUgdG9hc3Q6VG9hc3RTZXJ2aWNlLHByaXZhdGUgcm91dGVyOlJvdXRlcixwcml2YXRlIHNvcFNlcnZpY2U6VHJheFNlcnZpY2UscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UpIHtcclxuICB9XHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRDaGVja2xpc3QoKTtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIGxldCBzdG9yYWdlRGV0YWlscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJ3t9Jyk7XHJcbiAgICBpZighc3RvcmFnZURldGFpbHM/LmNsaWVudCkge1xyXG4gICAgICBzdG9yYWdlRGV0YWlscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NsaWVudC1kZXRhaWxzJykgfHwgJ3t9Jyk7XHJcbiAgICAgIHN0b3JhZ2VEZXRhaWxzLmNsaWVudCA9IHN0b3JhZ2VEZXRhaWxzLmNsaWVudElkO1xyXG4gICAgfVxyXG4gICAgaWYoc3RvcmFnZURldGFpbHM/LmNsaWVudCkge1xyXG4gICAgICB0aGlzLmNsaWVudElkID0gc3RvcmFnZURldGFpbHMuY2xpZW50O1xyXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmVkaXR2YWx1ZSA9IHBhcmFtcy5jaGVja2xpc3RJZDtcclxuICAgICAgICBpZiAocGFyYW1zLmNoZWNrbGlzdElkKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3d2YWx1ZSA9ICdlZGl0JztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93dmFsdWUgPSAnYWRkJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zaG93dmFsdWUgPT0gJ2VkaXQnIHx8IHBhcmFtcy50eXBlKSB7XHJcbiAgICAgICAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGlmIChwYXJhbXMuY2hlY2tsaXN0SWQpIHtcclxuICAgICAgICAgICAgb2JqLmNoZWNrTGlzdElkID0gcGFyYW1zLmNoZWNrbGlzdElkXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYmoudHlwZSA9IHBhcmFtcy50eXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb2JqLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNvcFNlcnZpY2UuZ2V0Y29uZmlnKG9iaikucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKHJlcykge1xyXG4gICAgICAgICAgICAgICAgaWYocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0b2JqZWN0ID0gcmVzLmRhdGEuY2hlY2tMaXN0RGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2hlY2tsaXN0UXVlc3Rpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbml0Q2hlY2tsaXN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXRhY2gubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGV0YWNoLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJNYW5hZ2UgQ2hlY2tsaXN0XCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIkF1dG9tYXRlIG9yIGNyZWF0ZSBjaGVja2xpc3RzIHRvIGltcHJvdmUgb3BlcmF0aW9uYWwgZWZmaWNpZW5jeVwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9XHJcbiAgICBdKTtcclxuICB9XHJcbiAgXHJcbiAgdXBkYXRlSW5wdXRWYWx1ZShzZWN0aW9uSW5kZXg6IG51bWJlcixzZWN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VjdGlvbk5hbWUudHJpbSgpID09PSAnJykge1xyXG4gICAgICB0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsJ25hbWUnKT8uc2V0VmFsdWUoYFNlY3Rpb24gJHtzZWN0aW9uSW5kZXgrMX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2Nyb2xsVG9RdWVzdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBxdWVzdGlvbklkID0gYHEtJHtzZWN0aW9uSW5kZXh9LSR7cXVlc3Rpb25JbmRleH1gO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHF1ZXN0aW9uRWxlbWVudCA9IHRoaXMuZm9ybVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3F1ZXN0aW9uSWR9YCk7XHJcbiAgXHJcbiAgICAgIGlmIChxdWVzdGlvbkVsZW1lbnQpIHtcclxuICAgICAgICBxdWVzdGlvbkVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGZvcm1DaGVja2xpc3RRdWVzdGlvbnMoKSB7IFxyXG4gICAgbGV0IHNlY3Rpb25zYXJyYXk6IGFueSA9IFtdO1xyXG4gICAgbGV0IHNlY3Rpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgc2VjdGlvbnNhcnJheSA9IHRoaXMuZ2V0b2JqZWN0LnNlY3Rpb25zXHJcbiAgICBcclxuICAgIHNlY3Rpb25zYXJyYXkuZm9yRWFjaCgoaTogYW55LHNlY3Rpb25JbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCBxdWVzdGlvbnM6IGFueVtdID0gW107XHJcbiAgICAgIGkucXVlc3Rpb25zLmZvckVhY2goKGo6IGFueSxxdWVzdGlvbkluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBsZXQgYW5zd2VyOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGouYW5zd2Vycz8uZm9yRWFjaCgoazogYW55LGFuc3dlckluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGFuc3dlci5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ2xpbmVhcnNjYWxlJywndGltZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKGs/LmFuc3dlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woYW5zd2VySW5kZXgpLFxyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSAmJiBqPy5hbnN3ZXJUeXBlICE9ICd2aWRlbyc/IHsgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woaz8uc29wRmxhZyA/IGs/LnNvcEZsYWcgOiBmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSAmJiBqPy5hbnN3ZXJUeXBlICE9ICd2aWRlbyc/IHsgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woaz8udmFsaWRhdGlvbiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSAmJiBqPy5hbnN3ZXJUeXBlICE9ICd2aWRlbyc/IHsgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKGs/LnZhbGlkYXRpb25UeXBlLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLCBcIkNhcHR1cmUgVmlkZW9cIl0pKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKGs/LnJlZmVyZW5jZUltYWdlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLigoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgfHwgaj8uYW5zd2VyVHlwZSA9PSAndmlkZW8nKSA/IHsgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woaj8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA/IHRydWUgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdydW5BSSc6IHRoaXMuZmIuY29udHJvbCgoaj8ucnVuQUkpID8gaj8ucnVuQUkgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAnc2hvd0xpbmtlZCc6IHRoaXMuZmIuY29udHJvbCgoaz8uc2hvd0xpbmtlZCkgPyBrPy5zaG93TGlua2VkIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbXVsdGlwbGVjaG9pY2VzaW5nbGUnLCd5ZXMvbm8nXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ2xpbmtlZFF1ZXN0aW9uJzogdGhpcy5mYi5jb250cm9sKChrPy5saW5rZWRRdWVzdGlvbikgPyBrPy5saW5rZWRRdWVzdGlvbiA6IDApIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgIC4uLighWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnZGF0ZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woaz8ucmVmZXJlbmNlSW1hZ2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCghWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCd2aWRlbycsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8geyAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChrPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gdHJ1ZSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnZGF0ZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woKGs/LnJ1bkFJKSA/IGs/LnJ1bkFJIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKGsuZGVzY3JpcHRpdmV0eXBlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ2xpbmVhcnNjYWxlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdyYW5nZVN0YXJ0Jzp0aGlzLmZiLmNvbnRyb2woay5yYW5nZVN0YXJ0KSwncmFuZ2VFbmQnOnRoaXMuZmIuY29udHJvbChrLnJhbmdlRW5kKSB9IDoge30pLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcXVlc3Rpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKHF1ZXN0aW9uSW5kZXgrMSksXHJcbiAgICAgICAgICAgICdxbmFtZSc6IHRoaXMuZmIuY29udHJvbChqPy5xbmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgXCJvbGRRbmFtZVwiOnRoaXMuZmIuY29udHJvbChqPy5xbmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woaj8uYW5zd2VyVHlwZSwgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLFwibXVsdGlwbGVJbWFnZVwiLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnZGF0ZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpKSA/IHsgJ2Fuc3dlcnMnOiAoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCAndmlkZW8nLCdtdWx0aXBsZUltYWdlJywndGltZScsJ2xpbmVhcnNjYWxlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8gYW5zd2VyWzBdIDogdGhpcy5mYi5hcnJheShhbnN3ZXIsW3VuaXF1ZVN0cmluZ1ZhbGlkYXRvcigpXSkgfSA6IHt9LFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJyxcIm11bHRpcGxlSW1hZ2VcIl0uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8gKGo/LnJ1bkFJKSA/IHRydWUgOiBmYWxzZSA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbCgoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCd2aWRlbycsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyAoaj8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSkgPyB0cnVlIDogZmFsc2UgOiBmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpKSA/IChqPy5ydW5BSURlc2NyaXB0aW9uKSA6ICcnKSxcclxuICAgICAgICAgICAgJ2xpbmtUeXBlJzogdGhpcy5mYi5jb250cm9sKGo/LmxpbmtUeXBlKSxcclxuICAgICAgICAgICAgJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnOnRoaXMuZmIuY29udHJvbChqLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woai5kZXNjcmlwdGl2ZXR5cGUpLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICAgIGFuc3dlciA9IFtdO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHNlY3Rpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICBcIm5hbWVcIjogdGhpcy5mYi5jb250cm9sKGk/Lm5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgXCJvbGROYW1lXCI6dGhpcy5mYi5jb250cm9sKGk/Lm5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgXCJzZWN0aW9uTnVtYmVyXCI6IHRoaXMuZmIuY29udHJvbChzZWN0aW9uSW5kZXgrMSksXHJcbiAgICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLmZiLmFycmF5KHF1ZXN0aW9ucylcclxuICAgICAgfSkpO1xyXG4gICAgICBxdWVzdGlvbnMgPSBbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAnY2hlY2tsaXN0TmFtZSc6IHRoaXMuZmIuY29udHJvbCh0aGlzLmdldG9iamVjdC5jaGVja0xpc3ROYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAnY2hlY2tsaXN0RGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2wodGhpcy5nZXRvYmplY3QuY2hlY2tMaXN0RGVzY3JpcHRpb24pLFxyXG4gICAgICAnc2VjdGlvbnMnOiB0aGlzLmZiLmFycmF5KHNlY3Rpb25zKVxyXG4gICAgfSk7ICAgXHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5jaGVja2xpc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpbml0Q2hlY2tsaXN0KCkge1xyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdjaGVja2xpc3ROYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAnY2hlY2tsaXN0RGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAnc2VjdGlvbnMnOiB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIFwibmFtZVwiOiB0aGlzLmZiLmNvbnRyb2woJ1NlY3Rpb24gMScsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICBcInNlY3Rpb25OdW1iZXJcIjogdGhpcy5mYi5jb250cm9sKDEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKDEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAgICdsaW5rVHlwZSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfSlcclxuICAgICAgXSlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja2xpc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhbGxvd2VkVmFsdWVzVmFsaWRhdG9yKGFsbG93ZWRWYWx1ZXM6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiBhbGxvd2VkVmFsdWVzLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybiB7IGludmFsaWRWYWx1ZTogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGFkZE5ld1NlY3Rpb24oKSB7XHJcbiAgICBsZXQgc2VjdGlvbnMgPSB0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheTtcclxuICAgIGxldCBzZWN0aW9uTGVuZ3RoID0gc2VjdGlvbnMubGVuZ3RoO1xyXG4gICAgKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5wdXNoKFxyXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICBcIm5hbWVcIjogdGhpcy5mYi5jb250cm9sKGBTZWN0aW9uICR7c2VjdGlvbkxlbmd0aCArIDF9YCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICBcInNlY3Rpb25OdW1iZXJcIjogdGhpcy5mYi5jb250cm9sKHNlY3Rpb25MZW5ndGggKyAxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbCgxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICAgICAgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLCdtdWx0aXBsZUltYWdlJywnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddKSksXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ2xpbmtUeXBlJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0JyksXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICBdKVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGlmKHNlY3Rpb25MZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLnNob3cgPSAtMTtcclxuICAgIH1cclxuICAgIHRoaXMuYWNjb3JkaWFuKHNlY3Rpb25MZW5ndGgpO1xyXG4gICAgdGhpcy5zd2FsVG9hc3QoJ05ldyBzZWN0aW9uIGFkZGVkIScpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VjdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5yZW1vdmVBdChzZWN0aW9uSW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZHJhZ0Ryb3Aoc2VjdGlvbkluZGV4OiBhbnksIGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XHJcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgICAgLy8gdGhpcy51cGRhdGVsaW5rZWRRdWVzdGlvbk5vKHNlY3Rpb25JbmRleCxldmVudC5wcmV2aW91c0luZGV4LGV2ZW50LmN1cnJlbnRJbmRleClcclxuICAgICAgdGhpcy51cGRhdGVRdWVzdGlvblFub3Moc2VjdGlvbkluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKFxyXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXHJcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXHJcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcclxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZWxpbmtlZFF1ZXN0aW9uTm8oc2VjSWR4Om51bWJlcixwcmV2SWR4Om51bWJlcixxbklkeDpudW1iZXIpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBmb3IobGV0IGk9MDtpPHF1ZXN0aW9ucy5sZW5ndGgtMTtpKyspIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSAoKHF1ZXN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgIGZvcihsZXQgaj0wO2o8YW5zd2Vycz8ubGVuZ3RoIC0xO2orKykge1xyXG4gICAgICAgIGxldCBsaW5rZWQgPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApLmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZTtcclxuICAgICAgICBpZihsaW5rZWQpIHtcclxuICAgICAgICAgIGxldCBsaW5rZWRObyA9IChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgICAgIGlmKGxpbmtlZE5vID09IHByZXZJZHggKyAxKSB7XHJcbiAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShxbklkeCArIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZihsaW5rZWRObyA8PSBxbklkeCArIDEpIHtcclxuICAgICAgICAgICAgKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKGxpbmtlZE5vIC0gMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBhbnN3ZXJUeXBlU2VsZWN0aW9uKHNlY3Rpb25JbmRleDogYW55LCBxdWVzdGlvbkluZGV4OiBhbnksIGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBzZWxlY3R2YWx1ZTogc3RyaW5nID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnNldFZhbHVlKCcnKTtcclxuICAgIGlmKCFbJ2Rlc2NyaXB0aXZlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHNlbGVjdHZhbHVlKSkge1xyXG4gICAgICAgKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdkZXNjcmlwdGl2ZXR5cGUnKT8uc2V0VmFsdWUoJycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnZGVzY3JpcHRpdmV0eXBlJyk/LnNldFZhbHVlKCd0ZXh0Jyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbW92ZVF1ZXN0aW9uTGlua2VkKHNlY3Rpb25JbmRleCxxdWVzdGlvbkluZGV4KTtcclxuICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ3llcy9ubycgfHwgZXZlbnQudGFyZ2V0LnZhbHVlID09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1BcnJheShzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsc2VsZWN0dmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ2Rlc2NyaXB0aXZlJykge1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ2Rlc2NyaXB0aXZlSW1hZ2UnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCBzZWxlY3R2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnbXVsdGlwbGVjaG9pY2VtdWx0aXBsZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1BcnJheShzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsc2VsZWN0dmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ2ltYWdlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzRm9ybUdyb3VwKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ2ltYWdlJyk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAndmlkZW8nKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAndmlkZW8nKTtcclxuICAgIH1lbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ211bHRpcGxlSW1hZ2UnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAnbXVsdGlwbGVJbWFnZScpO1xyXG4gICAgfWVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnZGF0ZScpIHt9XHJcbiAgICBlbHNlIGlmKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAndGltZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc1RpbWUoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAndGltZScpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihldmVudC50YXJnZXQudmFsdWUgPT0gJ2xpbmVhcnNjYWxlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzVGltZShzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdsaW5lYXJzY2FsZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QW5zd2VyQXNUaW1lKHNlY0lkeDpudW1iZXIscW5JZHg6bnVtYmVyLHR5cGU6c3RyaW5nKSB7XHJcbiAgICBsZXQgcXVlc3Rpb24gPSAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCk7XHJcblxyXG4gICAgICBpZih0eXBlID09ICd0aW1lJykge1xyXG4gICAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLFxyXG4gICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdsaW5rZWRRdWVzdGlvbic6dGhpcy5mYi5jb250cm9sKDApLFxyXG4gICAgICAgICAgICAgJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgICB9KSxcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBxdWVzdGlvbi5zZXRDb250cm9sKCdhbnN3ZXJzJyxcclxuICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAnbGlua2VkUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbCgwKSxcclxuICAgICAgICAgICAgICdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ251bWJlcicpLFxyXG4gICAgICAgICAgICAgJ3JhbmdlU3RhcnQnOnRoaXMuZmIuY29udHJvbCgwKSxcclxuICAgICAgICAgICAgICdyYW5nZUVuZCc6dGhpcy5mYi5jb250cm9sKDEwMCwpXHJcbiAgICAgICAgICAgfSksXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIFxyXG5cclxuICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUXVlc3Rpb25MaW5rZWQoc2VjSWR4OmFueSxxbklkeDphbnkpIHtcclxuICAgIGxldCBhbnN3ZXJzID0gKCgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGlmKGFuc3dlcnMpIHtcclxuICAgICAgZm9yKGxldCBpPTA7aTxhbnN3ZXJzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgIGxldCBxbiA9IChhbnN3ZXJzLmF0KGkpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICAgIGxldCBxdWVzdGlvbnMgPSAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgICBxdWVzdGlvbnMudmFsdWUuZm9yRWFjaCgocXRuOmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShxdG4uYW5zd2VycykpIHtcclxuICAgICAgICAgICAgcXRuLmFuc3dlcnMuZm9yRWFjaCgoYW5zOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKGFucy5zaG93TGlua2VkICYmIGFucy5saW5rZWRRdWVzdGlvbiA9PSBxbiAmJiBxdG4ucW5vLTEgIT0gcW5JZHgpIHtcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYocW4gJiYgIWNvdW50KSB7XHJcbiAgICAgICAgICAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuIC0gMSkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtUeXBlJyk/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVZhbGlkYXRpb25UeXBlKGV2ZW50OmFueSxzZWN0aW9uOm51bWJlcixxdWVzdGlvbjpudW1iZXIsYW5zd2VyOm51bWJlcikge1xyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdEZXNjcmlwdGl2ZSBBbnN3ZXInKSB7XHJcbiAgICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbikgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbikgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc3dlcikgYXMgRm9ybUdyb3VwKS5nZXQoJ2Rlc2NyaXB0aXZldHlwZScpPy5zZXRWYWx1ZSgndGV4dCcpO1xyXG4gICAgfVxyXG4gICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uKSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uKSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zd2VyKSBhcyBGb3JtR3JvdXApLmdldCgnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeScpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZXRBbnN3ZXJBc0Zvcm1BcnJheShzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLHNlbGVjdHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGxldCBxdWVzdGlvbiA9ICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgXHJcbiAgICBpZiAoc2VsZWN0dmFsdWUgPT0gJ3llcy9ubycpIHtcclxuICAgICAgcXVlc3Rpb24uc2V0Q29udHJvbCgnYW5zd2VycycsXHJcbiAgICAgICAgdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnWWVzJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgIC8vICdsaW5rUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbChmYWxzZSxbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAvLyAnYW5zd2VySW5wdXRTdHlsZSc6IHRoaXMuZmIuY29udHJvbCgncmFkaW8nLFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ0NhcHR1cmUgSW1hZ2UnLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLFwiQ2FwdHVyZSBWaWRlb1wiXSkpLFxyXG4gICAgICAgICAgICAnbGlua2VkUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJ05vJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgyKSxcclxuICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ0NhcHR1cmUgSW1hZ2UnLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLFwiQ2FwdHVyZSBWaWRlb1wiXSkpLFxyXG4gICAgICAgICAgICAnbGlua2VkUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSx1bmlxdWVTdHJpbmdWYWxpZGF0b3IoKSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLFxyXG4gICAgICAgIHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCdDYXB0dXJlIEltYWdlJywgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIixcIkNhcHR1cmUgVmlkZW9cIl0pKSxcclxuICAgICAgICAgICAgLi4uKHNlbGVjdHZhbHVlID09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScgPyB7XCJsaW5rZWRRdWVzdGlvblwiOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLCdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSl9IDoge30pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCdDYXB0dXJlIEltYWdlJywgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIixcIkNhcHR1cmUgVmlkZW9cIl0pKSxcclxuICAgICAgICAgICAgLi4uKHNlbGVjdHZhbHVlID09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScgPyB7XCJsaW5rZWRRdWVzdGlvblwiOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLCdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSl9IDoge30pLFxyXG4gICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSx1bmlxdWVTdHJpbmdWYWxpZGF0b3IoKSksXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYW5zd2VyVHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGFuc3dlclR5cGUpKSB7XHJcbiAgICAgICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250cm9sKCdhbnN3ZXJzJywgXHJcbiAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgIC4uLihhbnN3ZXJUeXBlID09ICdtdWx0aXBsZUltYWdlJyA/IHsnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKX06e30pXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHF1ZXN0aW9uID0gKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuXHJcbiAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLCB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBsb2FkSW1hZ2VGcm9tRGV2aWNlKHNlY0lkeDogbnVtYmVyLHFJZHg6IG51bWJlcixldmVudDogYW55LGFuc0lkeDpudW1iZXI9LTEsY3RybE5hbWU6c3RyaW5nID0gJycpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMgIT0gdW5kZWZpbmVkICYmIGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGgpIHtcclxuICAgIH1cclxuICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgbGV0IGZpbGU6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdjbGllbnRJZCcsdGhpcy5jbGllbnRJZClcclxuICAgIHRoaXMuc29wU2VydmljZS5pbWFnZXVwbG9hZChmb3JtRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKGN0cmxOYW1lKVxyXG4gICAgICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY0lkeCxxSWR4LCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnNldFZhbHVlKHJlcy5kYXRhLmltZ1VybCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWNJZHgscUlkeCwncmVmZXJlbmNlSW1hZ2UnLGFuc0lkeCk/LnNldFZhbHVlKHJlcy5kYXRhLmltZ1VybCk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTsgICAgICBcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjbGVhclJlZmVyZW5jZUltYWdlKHNlY0lkeDogbnVtYmVyLHFJZHg6IG51bWJlcixhbnNJZHg6bnVtYmVyPS0xKSB7XHJcbiAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWNJZHgscUlkeCwncmVmZXJlbmNlSW1hZ2UnLGFuc0lkeCk/LnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY0lkeCxxSWR4LCdydW5BSScsYW5zSWR4KT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjSWR4LHFJZHgsJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8uc2V0VmFsdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgZ2V0dmFsaWRhdGlvbihzZWN0aW9uSW5kZXg6IGFueSwgcXVlc3Rpb25JbmRleDogYW55LCBhZGRtb3JlcW5JbmRleDogYW55LCBldmVudDogYW55KSB7XHJcbiAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYWRkbW9yZXFuSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCd2YWxpZGF0aW9uJyk/LnNldFZhbHVlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcclxuICB9XHJcblxyXG4gIGFkZE5ld1F1ZXN0aW9uKHNlY3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5zZWN0aW9uSW5kZXggPiAtMSkge1xyXG4gICAgICBpZiAoISgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSkpIHtcclxuICAgICAgICAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuc2V0Q29udHJvbCgncXVlc3Rpb25zJywgdGhpcy5mYi5hcnJheShbXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBxdWVzdGlvbnMgPSAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgbGV0IHF1ZXN0aW9uc0xlbmd0aCA9IHF1ZXN0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHF1ZXN0aW9ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbChxdWVzdGlvbnNMZW5ndGggKyAxLCksXHJcbiAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICdsaW5rVHlwZSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgfSkpOyAgICAgIFxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoJ05ldyBxdWVzdGlvbiBhZGRlZCEnKTtcclxuICAgICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvUXVlc3Rpb24oc2VjdGlvbkluZGV4LHF1ZXN0aW9uc0xlbmd0aCk7XHJcbiAgICAgIH0sMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZVF1ZXN0aW9uKHNlY3Rpb25JbmRleDogYW55LCBxdWVzdGlvbkluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuZGVsZXRlZExpc3QgPSBbXTtcclxuICAgIGxldCBxdWVzdGlvbiA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdxbmFtZScpPy52YWx1ZSB8fCAnJztcclxuICAgIGxldCBxbm8gPSB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAncW5vJyk/LnZhbHVlO1xyXG4gICAgcXVlc3Rpb24gPSBxdWVzdGlvbiA/IHF1ZXN0aW9uIDogYFF1ZXN0aW9uICR7dGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ3FubycpPy52YWx1ZSB8fCAnJ31gO1xyXG4gICAgcXVlc3Rpb24gPSBxdWVzdGlvbi5sZW5ndGggPiAyMCA/IHF1ZXN0aW9uLnNsaWNlKDAsMjApICsgJy4uLicgOiBxdWVzdGlvbjtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LHtjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJ30pO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgIGltYWdlc3JjOiBgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRTRFMlwiLz48cGF0aCBkPVwiTTI4IDI0VjI4TTI4IDMySDI4LjAxTTM4IDI4QzM4IDMzLjUyMjggMzMuNTIyOCAzOCAyOCAzOEMyMi40NzcyIDM4IDE4IDMzLjUyMjggMTggMjhDMTggMjIuNDc3MiAyMi40NzcyIDE4IDI4IDE4QzMzLjUyMjggMTggMzggMjIuNDc3MiAzOCAyOFpcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRUYzRjJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPjwvc3Bhbj5gLFxyXG4gICAgICB0aXRsZTogYERlbGV0ZSAnJHtxdWVzdGlvbn0nP2AsXHJcbiAgICAgIGNvbnRlbnQ6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiPicke3F1ZXN0aW9ufSc8L2I+PyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAsXHJcbiAgICAgIGJ1dHRvbnR5cGU6ICdkZWxldGUnXHJcbiAgICB9XHJcbiAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzID09ICdkZWxldGUnKSB7XHJcbiAgICAgICAgbGV0IGxpbmtlZFF1ZXN0aW9uOmFueSA9ICgoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgICBsZXQgdHlwZTphbnkgPSAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlO1xyXG4gICAgICAgIGlmKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCd2aWRlbycsJ2xpbmVhcnNjYWxlJywndGltZScsJ2RhdGUnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgICAgZm9yKGxldCBpPTA7aTxsaW5rZWRRdWVzdGlvbj8ubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICBsZXQgbGlua2VkUW4gPSAoKGxpbmtlZFF1ZXN0aW9uLmF0KGkpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZSk7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIGxldCBxdWVzdGlvbnMgPSAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgICAgICAgcXVlc3Rpb25zLnZhbHVlLmZvckVhY2goKHFuOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocW4uYW5zd2VycykpIHtcclxuICAgICAgICAgICAgICAgIHFuLmFuc3dlcnMuZm9yRWFjaCgoYW5zOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZihhbnMuc2hvd0xpbmtlZCAmJiBhbnMubGlua2VkUXVlc3Rpb24gPT0gbGlua2VkUW4gJiYgcW4ucW5vLTEgIT0gcXVlc3Rpb25JbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBpZihsaW5rZWRRbikge1xyXG4gICAgICAgICAgICAgIGlmKCFjb3VudCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5vID0gbGlua2VkUW4gLTE7XHJcbiAgICAgICAgICAgICAgICAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KG5vKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZihsaW5rZWRRbiAmJiBwYXJzZUludChsaW5rZWRRbikgPiBxdWVzdGlvbkluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnRyYWN0UXVlc3Rpb25ubyhzZWN0aW9uSW5kZXgsbGlua2VkUW4tMSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgKHRoaXMuZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleCwgJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQocXVlc3Rpb25JbmRleCk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVkTmVzdGVkUXVlc3Rpb24oc2VjdGlvbkluZGV4LHFubyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVRdWVzdGlvblFub3Moc2VjdGlvbkluZGV4KTtcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtxdWVzdGlvbn0gaGFzIGJlZW4gZGVsZXRlZCFgKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgc3VidHJhY3RRdWVzdGlvbm5vKHNlY3Rpb25JbmRleDpudW1iZXIscXVlc3Rpb25JbmRleDphbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHNlY3Rpb25JbmRleCxxdWVzdGlvbkluZGV4KVxyXG4gICAgbGV0IGxpbmtlZFF1ZXN0aW9uQW5zd2VycyA9ICgoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGxldCBubyA9ICgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3FubycpPy52YWx1ZTtcclxuICAgIGNvbnNvbGUubG9nKG5vLCdubycpXHJcbiAgICAvLyB0aGlzLmRlbGV0ZWRMaXN0LnB1c2gobm8pO1xyXG4gICAgZm9yKGxldCBqPTA7ajxsaW5rZWRRdWVzdGlvbkFuc3dlcnM/Lmxlbmd0aDtqKyspIHtcclxuICAgICAgbGV0IGxpbmtlZFFuID0gKChsaW5rZWRRdWVzdGlvbkFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlKTtcclxuICAgICAgY29uc29sZS5sb2cobGlua2VkUW4sJ2xpbmtlZFFuJylcclxuICAgICAgaWYobGlua2VkUW4gJiYgcGFyc2VJbnQobGlua2VkUW4pID4gcXVlc3Rpb25JbmRleCkge1xyXG4gICAgICAgICgobGlua2VkUXVlc3Rpb25BbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpKT8uc2V0VmFsdWUobGlua2VkUW4gLSAxKTtcclxuICAgICAgICB0aGlzLnN1YnRyYWN0UXVlc3Rpb25ubyhzZWN0aW9uSW5kZXgsbGlua2VkUW4tMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJhaXNlZmxhZyhzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBhbnNJZHg6IG51bWJlcix2YWx1ZTogYm9vbGVhbixsaW5rSW5kZXg6bnVtYmVyID0gLTEsbGlua0Fuc0luZGV4Om51bWJlciA9IC0xKSB7XHJcbiAgICBsZXQgcXVlc3Rpb24gPSAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpPy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBpZih2YWx1ZSA9PSB0cnVlKSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkudmFsdWU7XHJcbiAgICAgIGlmKGxpbmtJbmRleCA9PSAtMSkge1xyXG4gICAgICAgIGlmKGFuc3dlcnMuZmlsdGVyKCh4OmFueSk9PiB4LnNvcEZsYWcgPT0gdHJ1ZSkubGVuZ3RoID09IChhbnN3ZXJzLmxlbmd0aCAtMSkpIHtcclxuICAgICAgICAgICgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicsdGhpcy5mYi5jb250cm9sKHRydWUpKTtcclxuICAgICAgICAgIHRpbWVyKDUwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBhbnN3ZXJzID0gKChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICBsZXQgbGlua1F1ZXN0aW9uID0gKChhbnN3ZXJzLmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQobGlua0luZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgIGxldCBsaW5rQW5zd2VycyA9IChsaW5rUXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS52YWx1ZVxyXG4gICAgICAgIGlmKGxpbmtBbnN3ZXJzLmZpbHRlcigoeDphbnkpPT4geC5zb3BGbGFnID09IHRydWUpLmxlbmd0aCA9PSAobGlua0Fuc3dlcnMubGVuZ3RoIC0xKSkge1xyXG4gICAgICAgICAgKChsaW5rUXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChsaW5rQW5zSW5kZXgpIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicsdGhpcy5mYi5jb250cm9sKHRydWUpKTtcclxuICAgICAgICAgIHRpbWVyKDUwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgKChsaW5rUXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChsaW5rQW5zSW5kZXgpIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbCgnc2hvd1NPUEZsYWdFcnJvcicpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgIGlmKGxpbmtJbmRleCA9PSAtMSlcclxuICAgICAgICAoKCgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KT8uYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApPy5nZXQoJ3NvcEZsYWcnKSBhcyBGb3JtQ29udHJvbCkpPy5zZXRWYWx1ZSh2YWx1ZSk7IFxyXG4gICAgZWxzZSAgIHtcclxuICAgICAgIGxldCBhbnN3ZXJzID0gKChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICBsZXQgbGlua1F1ZXN0aW9uID0gKChhbnN3ZXJzLmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQobGlua0luZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAoKCgobGlua1F1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk/LmF0KGxpbmtBbnNJbmRleCkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdzb3BGbGFnJykgYXMgRm9ybUNvbnRyb2wpKT8uc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkTmVzdGVkUXVlc3Rpb24oc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYW5zSWR4OiBudW1iZXIsdmFsdWU6IGJvb2xlYW4sbGlua2VkUXVlc3Rpb25JbmRleDpudW1iZXI9LTEsbGlua2VkQW5zd2VyOm51bWJlciA9IC0xKSB7XHJcbiAgICAgbGV0IGFuc3dlciA9ICgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXBcclxuXHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgIGlmKCFhbnN3ZXI/LmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpPy52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgYW5zd2VyLnNldENvbnRyb2woJ2xpbmtRdWVzdGlvbkFuc3dlcnMnLFxyXG4gICAgICAgIHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnZGVzY3JpcHRpdmUnLFxyXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJkZXNjcmlwdGl2ZVwiLCBcInllcy9ub1wiLCBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLCBcImltYWdlXCIsIFwidmlkZW9cIiwnbXVsdGlwbGVJbWFnZScsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSlcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBuZXN0ZWRRdWVzdGlvbiA9IGFuc3dlci5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKSBhcyBGb3JtQXJyYXlcclxuICAgICAgbmVzdGVkUXVlc3Rpb24ucHVzaCh0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpLFxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuIFxyXG4gIGFjY29yZGlhbihpbmRleDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93ID09IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IC0xO1xyXG4gICAgICB0aGlzLnNlY3Rpb25JbmRleCA9IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93ID0gaW5kZXg7XHJcbiAgICAgIHRoaXMuc2VjdGlvbkluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGVTZWN0aW9uKHNlY3Rpb25JbmRleDogYW55KSB7XHJcbiAgICBsZXQgc2VjdGlvbiA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGxldCBzZWN0aW9uTGVuZ3RoOmFueSA9IFwiIFwiICsgKHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmxlbmd0aDtcclxuICAgIGxldCBzZWN0aW9uTmFtZTpzdHJpbmcgPSBzZWN0aW9uLmdldCgnbmFtZScpPy52YWx1ZTtcclxuICAgIHNlY3Rpb25OYW1lID0gc2VjdGlvbk5hbWUubGVuZ3RoID4gMjAgPyAoc2VjdGlvbk5hbWUuc2xpY2UoMCwgMjApICsgXCIuLi5cIikgOiBzZWN0aW9uTmFtZTtcclxuICAgIGxldCBxdWVzdGlvbl90ZXh0ID0gJydcclxuICAgIGlmIChzZWN0aW9uTGVuZ3RoID09IDEpXHJcbiAgICAgIHF1ZXN0aW9uX3RleHQgPSAnUXVlc3Rpb24nXHJcbiAgICBlbHNlXHJcbiAgICAgcXVlc3Rpb25fdGV4dCA9ICdRdWVzdGlvbnMnXHJcbiAgICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVFNEUyXCIvPjxwYXRoIGQ9XCJNMjggMjRWMjhNMjggMzJIMjguMDFNMzggMjhDMzggMzMuNTIyOCAzMy41MjI4IDM4IDI4IDM4QzIyLjQ3NzIgMzggMTggMzMuNTIyOCAxOCAyOEMxOCAyMi40NzcyIDIyLjQ3NzIgMTggMjggMThDMzMuNTIyOCAxOCAzOCAyMi40NzcyIDM4IDI4WlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZFRjNGMlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgdGl0bGU6IGBEZWxldGUgJyR7c2VjdGlvbk5hbWV9IFNlY3Rpb24nP2AsXHJcbiAgICAgIGNvbnRlbnQ6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlJyA8Yj4nJHtzZWN0aW9uTmFtZX0nPC9iPj8gd2l0aCA8Yj4ke3NlY3Rpb25MZW5ndGh9ICR7cXVlc3Rpb25fdGV4dH08L2I+IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuYCxcclxuICAgICAgYnV0dG9udHlwZTogJ2RlbGV0ZSdcclxuICAgIH1cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LHtjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJ30pO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBwb3B1cGNvbnRlbnRcclxuICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLnJlbW92ZUF0KHNlY3Rpb25JbmRleClcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBBZGRNb3JlQW5zKHNlY3Rpb25pbmRleDogYW55LCBxdWVzdGlvbkluZGV4OiBhbnksdHlwZTpzdHJpbmcpIHtcclxuICAgIGxldCBhbnNvcHRpb24gPVxyXG4gICAgICAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHNlY3Rpb25pbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgICAuYXQocXVlc3Rpb25JbmRleClcclxuICAgICAgICAuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGxldCBhbnNvcHRpb25MZW5ndGggPSBhbnNvcHRpb24ubGVuZ3RoO1xyXG4gICAgaWYgKGFuc29wdGlvbkxlbmd0aCA8PSAyOSkge1xyXG4gICAgICBhbnNvcHRpb24ucHVzaChcclxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woYGAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKGFuc29wdGlvbkxlbmd0aCArIDEpLFxyXG4gICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnQ2FwdHVyZSBJbWFnZScsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsXCJDYXB0dXJlIFZpZGVvXCJdKSksXHJcbiAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgLi4uKHR5cGUgPT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJyA/IHtcImxpbmtlZFF1ZXN0aW9uXCI6dGhpcy5mYi5jb250cm9sKDAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKX0gOiB7fSksXHJcbiAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgIC4uLih0eXBlID09ICdtdWx0aXBsZUltYWdlJyA/IHsnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKX06e30pXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZUFuc3dlcihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBhZGRtb3JlcW5JbmRleDogbnVtYmVyLGFuc0luZGV4Om51bWJlciA9IC0xKSB7XHJcbiAgICBpZihhbnNJbmRleCAhPSAtMSkge1xyXG4gICAgICB0aGlzLmdldEZvcm1BcnJheVF1ZXN0aW9uc0Fuc3dlcihzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdhbnN3ZXJzJyxhbnNJbmRleCkucmVtb3ZlQXQoYWRkbW9yZXFuSW5kZXgpOyAgICBcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdldEZvcm1BcnJheVF1ZXN0aW9uc0Fuc3dlcihzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdhbnN3ZXJzJyxhbnNJbmRleCkucmVtb3ZlQXQoYWRkbW9yZXFuSW5kZXgpOyAgICBcclxuICAgIH1cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBjbG9uZVF1ZXN0aW9uKHNlY3Rpb25pbmRleDogYW55LCBxdWVzdGlvbmluZGV4OiBhbnkpIHtcclxuICAgIGxldCBjbG9uZVF1ZXN0aW9uID0gKCh0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uaW5kZXgsICdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uaW5kZXgpIGFzIEZvcm1Hcm91cCkudmFsdWU7XHJcbiAgICBsZXQgcXVlc3Rpb25MZW5ndGggPSAgKHRoaXMuZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25pbmRleCwgJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkudmFsdWU7XHJcbiAgICBsZXQgcXVlc3Rpb246IGFueTtcclxuICAgIGxldCBhbnN3ZXI6IGFueTtcclxuICAgIGlmIChjbG9uZVF1ZXN0aW9uLmFuc3dlcnMpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xvbmVRdWVzdGlvbi5hbnN3ZXJzKSAmJiBjbG9uZVF1ZXN0aW9uLmFuc3dlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgYW5zd2VyID0gW107XHJcbiAgICAgICAgY2xvbmVRdWVzdGlvbi5hbnN3ZXJzLmZvckVhY2goKGs6IGFueSkgPT4ge1xyXG4gICAgICAgICAgYW5zd2VyLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpICYmIGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJyA/IHsgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbChrPy5hbnN3ZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woaz8uYW5zd2Vyb3B0aW9uTnVtYmVyICsgMSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGs/LnNvcEZsYWcgPyBrPy5zb3BGbGFnIDogZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGs/LnZhbGlkYXRpb24sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbChrPy52YWxpZGF0aW9uVHlwZSwgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIiwgXCJDYXB0dXJlIFZpZGVvXCJdKSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKGs/LnJlZmVyZW5jZUltYWdlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLigoIVsnZGVzY3JpcHRpdmUnLCdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSkgPyB7ICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGs/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGs/LnJ1bkFJID8gaz8ucnVuQUkgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAnc2hvd0xpbmtlZCc6IGZhbHNlIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbXVsdGlwbGVjaG9pY2VzaW5nbGUnLCd5ZXMvbm8nXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ2xpbmtlZFF1ZXN0aW9uJzogMCB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ211bHRpcGxlY2hvaWNlc2luZ2xlJywneWVzL25vJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdsaW5rZWRRdWVzdGlvbic6IDAgfSA6IHt9KSxcclxuICAgICAgICAgICAgICBkZXNjcmlwdGl2ZXR5cGU6dGhpcy5mYi5jb250cm9sKGs/LmRlc2NyaXB0aXZldHlwZSlcclxuXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmKHR5cGVvZiBjbG9uZVF1ZXN0aW9uLmFuc3dlcnMgPT09ICdvYmplY3QnICYmIGNsb25lUXVlc3Rpb24uYW5zd2VycyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGFuc3dlciA9IHRoaXMuZmIuZ3JvdXAoeyAgICAgICAgICBcclxuICAgICAgICAgIC4uLihbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSkgfSA6IHt9KSxcclxuICAgICAgICAgIC4uLigoWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpIHx8IGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgPT0gJ3ZpZGVvJykgPyB7ICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgIC4uLihbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzPy5ydW5BSSA/IGNsb25lUXVlc3Rpb24/LmFuc3dlcnM/LnJ1bkFJIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAuLi4oWydtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7IGRlc2NyaXB0aXZldHlwZTp0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2Vycz8uZGVzY3JpcHRpdmV0eXBlKSB9IDoge30pLFxyXG4gICAgICAgICAgLi4uKFsnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3JhbmdlU3RhcnQnOnRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzLnJhbmdlU3RhcnQpLCdyYW5nZUVuZCc6dGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnMucmFuZ2VFbmQpIH0gOiB7fSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHF1ZXN0aW9uID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbChxdWVzdGlvbkxlbmd0aC5sZW5ndGggKyAxKSxcclxuICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LnFuYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnZGF0ZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAnYW5zd2Vycyc6IChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsICd2aWRlbycsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSkgPyBhbnN3ZXIgOiB0aGlzLmZiLmFycmF5KGFuc3dlcixbdW5pcXVlU3RyaW5nVmFsaWRhdG9yKCldKSB9IDoge30pLFxyXG4gICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8ucnVuQUksIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LnJ1bkFJRGVzY3JpcHRpb24pLFxyXG4gICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5KSxcclxuICAgICAgJ2xpbmtUeXBlJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmRlc2NyaXB0aXZldHlwZSksXHJcbiAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSlcclxuXHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMudXBkYXRlQ2xvbmVkbGlua2VkUXVlc3Rpb25ObyhzZWN0aW9uaW5kZXgsIGNsb25lUXVlc3Rpb24/LnFubyk7XHJcbiAgICAodGhpcy5nZXRTZWN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbmluZGV4LCAncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5pbnNlcnQoY2xvbmVRdWVzdGlvbj8ucW5vLHF1ZXN0aW9uKTtcclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnVwZGF0ZVF1ZXN0aW9uUW5vcyhzZWN0aW9uaW5kZXgpO1xyXG4gICAgdGhpcy5zd2FsVG9hc3QoYFF1ZXN0aW9uICR7Y2xvbmVRdWVzdGlvbj8ucW5vfSBoYXMgYmVlbiBkdXBsaWNhdGVkIWApO1xyXG4gICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDbG9uZWRsaW5rZWRRdWVzdGlvbk5vKHNlY0lkeDpudW1iZXIscWlkeDpudW1iZXIpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYW5zd2VycyA9IChxdWVzdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICBpZihhbnN3ZXJzKSB7XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajxhbnN3ZXJzLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgIGxldCBsaW5rZWQgPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWU7XHJcbiAgICAgICAgICBpZihsaW5rZWQpIHtcclxuICAgICAgICAgICAgbGV0IHF1ZXN0aW9uTm8gPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlO1xyXG4gICAgICAgICAgICBpZihxdWVzdGlvbk5vID4gcWlkeCkge1xyXG4gICAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUocXVlc3Rpb25ObyArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlQ2hlY2tsaXN0UXVlc3Rpb25zKHR5cGU6IHN0cmluZykge1xyXG4gICAgICBsZXQgY2hlY2tsaXN0ID0gdGhpcy5DaGVja2xpc3RGb3JtLnZhbHVlO1xyXG4gICAgICBpZighdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWxpZCkge1xyXG4gICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBpZiAoIXRoaXMuQ2hlY2tsaXN0Rm9ybS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMubWFya0Zvcm1Db250cm9sc0FzVG91Y2hlZCh0aGlzLkNoZWNrbGlzdEZvcm0sMCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb0Vycm9ycyh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzZWN0aW9ucyA9IGNoZWNrbGlzdC5zZWN0aW9ucztcclxuICAgICAgaWYodHlwZSA9PSAnc2F2ZUFzRHJhZnQnKSB7XHJcbiAgICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnY29uZmlndXJlJztcclxuICAgICAgfVxyXG4gICAgICBpZighc2VjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IGVycjogc3RyaW5nID0gJ1BsZWFzZSBhZGQgYXRsZWFzdCBvbmUgc2VjdGlvbiEnO1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmKHR5cGUgPT0gJ2NvbmZpZ3VyZScgJiYgIXNlY3Rpb25zW2ldLnF1ZXN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgYWRkIGF0bGVhc3Qgb25lIHF1ZXN0aW9uIGluIHNlY3Rpb24hJztcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbmRFeGlzdHMgPSBzZWN0aW9ucy5maWx0ZXIoKGVsZTphbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgICBpZihpbmRleCAhPSBpICYmIHNlY3Rpb25zW2ldLm5hbWUudHJpbSgpID09IGVsZS5uYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmKGZpbmRFeGlzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtzZWN0aW9uc1tpXS5uYW1lfSBzZWN0aW9uIG5hbWUgaXMgRHVwbGljYXRlZGAgLCdlcnJvcicpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlY3Rpb25zW2ldLnF1ZXN0aW9ucy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IGFuc1R5cGUgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZTtcclxuICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkucmVwbGFjZUFsbCgvXFxuL2csICcnKVxyXG4gICAgICAgICAgbGV0IGZpbmRFeGlzdHMgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnMuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZihpbmRleCAhPSBqICYmIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkgPT0gZWxlLnFuYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgICByZXR1cm4gZWxlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGlmKGZpbmRFeGlzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGAke3NlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5xbmFtZX0gcXVlc3Rpb24gbmFtZSBpcyBEdXBsaWNhdGVkYCAsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKGFuc1R5cGUgPT0gJ2xpbmVhcnNjYWxlJykge1xyXG4gICAgICAgICAgICBpZihzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZVN0YXJ0ID4gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucmFuZ2VFbmQpe1xyXG4gICAgICAgICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdSYW5nZSBzdGFydCBpcyBncmVhdGVyIHRoYW4gcmFuZ2UgRW5kLic7XHJcbiAgICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYoYW5zVHlwZSAhPSAnZGVzY3JpcHRpdmUnKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uZGVzY3JpcHRpdmV0eXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFtcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIl0uaW5jbHVkZXMoYW5zVHlwZSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gPSBmYWxzZTtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10gPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10udHJpbSgpO1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFtcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsXCJ5ZXMvbm9cIl0uaW5jbHVkZXMoYW5zVHlwZSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXS50cmltKCk7XHJcbiAgICAgICAgICAgICAgaWYoc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3Nob3dMaW5rZWQnXSAmJiBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnc2hvd0xpbmtlZCddID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gJiYgdHlwZW9mIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID09IFwic3RyaW5nXCIpe1xyXG4gICAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2xpbmtlZFF1ZXN0aW9uJ10gPSBwYXJzZUludChzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMpIHx8IFsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoYW5zVHlwZSkpIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJcIjogJycsXHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJvcHRpb25OdW1iZXJcIjogMSxcclxuICAgICAgICAgICAgICBcInNvcEZsYWdcIjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvblR5cGVcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25BbnN3ZXJcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInJlZmVyZW5jZUltYWdlXCI6IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA/IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJzaG93TGlua2VkXCI6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJsaW5rZWRRdWVzdGlvblwiOjAsXHJcbiAgICAgICAgICAgICAgLi4uKGFuc1R5cGUgPT0gJ211bHRpcGxlSW1hZ2UnID8geydkZXNjcmlwdGl2ZXR5cGUnOnNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGV9Ont9KSxcclxuICAgICAgICAgICAgICAuLi4oYW5zVHlwZSA9PSAnbGluZWFyc2NhbGUnID8geydyYW5nZVN0YXJ0JzpzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VTdGFydH06e30pLFxyXG4gICAgICAgICAgICAgIC4uLihhbnNUeXBlID09ICdsaW5lYXJzY2FsZScgPyB7J3JhbmdlRW5kJzpzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VFbmR9Ont9KVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYoYW5zVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScpIHtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uZGVzY3JpcHRpdmV0eXBlID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA/IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGUgOiAndGV4dCc7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgPyBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgOiAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9IFtpdGVtXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2hlY2tsaXN0LnNlY3Rpb25zID0gc2VjdGlvbnM7XHJcbiAgICAgIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lID0gY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLnNsaWNlKDEpO1xyXG4gICAgICBjaGVja2xpc3QuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgICBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZSA9IGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lLnRyaW0oKTtcclxuICAgICAgY2hlY2tsaXN0LmNoZWNrbGlzdERlc2NyaXB0aW9uID0gY2hlY2tsaXN0Py5jaGVja2xpc3REZXNjcmlwdGlvbiA/IGNoZWNrbGlzdD8uY2hlY2tsaXN0RGVzY3JpcHRpb24/LnRyaW0oKSA6ICcnO1xyXG4gICAgICB0aGlzLnNvcFNlcnZpY2UuY3JlYXRlY2hlY2tsaXN0KGNoZWNrbGlzdCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICBpZih0eXBlPT0nY29uZmlndXJlJykge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9tYW5hZ2UvdHJheC9jb25maWd1cmU/Y2hlY2tMaXN0SWQ9JHtyZXMuZGF0YS5jaGVja2xpc3RJZH1gKTsgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9tYW5hZ2UvdHJheC9jaGVja2xpc3QnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoJ1VuYWJsZSB0byBjcmVhdGUgY2hlY2tsaXN0IScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KCdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCEnLCdlcnJvcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBlcnIgPSBlcnJvcj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCFTZXJ2ZXIgRXJyb3IhJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIHNhdmVBc0RyYWZ0UG9wKHR5cGU6IHN0cmluZykge1xyXG4gICAgICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCx7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgICAgaW1hZ2VzcmM6ICBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICB0aXRsZTpgVW5zYXZlZCBjaGFuZ2VzYCxcclxuICAgICAgICBjb250ZW50OmBEbyB5b3Ugd2FudCB0byBzYXZlIGFzIGRyYWZ0P2AsXHJcbiAgICAgICAgYnV0dG9udHlwZTonZHJhZnQnXHJcbiAgICAgIH1cclxuICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpPT57XHJcbiAgICAgICAgaWYoIXJlcykge1xyXG4gICAgICAgICAgdGhpcy5wb3B1cENvdW50ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgICBpZih0eXBlID09ICdjcmVhdGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNoZWNrbGlzdFF1ZXN0aW9ucygnc2F2ZUFzRHJhZnQnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2tsaXN0UXVlc3Rpb25zKCdzYXZlQXNEcmFmdCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja2xpc3RRdWVzdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgc2VjdGlvbnNhcnJheTogYW55ID0gW107XHJcbiAgICBsZXQgY2hlY2tsaXN0OiBhbnk7XHJcbiAgICBcclxuICAgIGlmKCF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbGlkKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ICAgICAgXHJcbiAgICBcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuQ2hlY2tsaXN0Rm9ybSk7XHJcbiAgICAvLyByZXR1cm47XHJcbiAgICBjaGVja2xpc3QgPSB0aGlzLkNoZWNrbGlzdEZvcm0udmFsdWU7XHJcbiAgICBpZiAoIXRoaXMuQ2hlY2tsaXN0Rm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLm1hcmtGb3JtQ29udHJvbHNBc1RvdWNoZWQodGhpcy5DaGVja2xpc3RGb3JtLDApO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvRXJyb3JzKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc2VjdGlvbnNhcnJheSA9IGNoZWNrbGlzdC5zZWN0aW9ucztcclxuICAgIGlmKCF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbGlkKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZih0eXBlID09ICdzYXZlQXNEcmFmdCcpIHtcclxuICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja2xpc3Quc3VibWl0VHlwZSA9ICdjb25maWd1cmUnO1xyXG4gICAgfVxyXG4gICAgaWYoIXNlY3Rpb25zYXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgYWRkIGF0bGVhc3Qgb25lIHNlY3Rpb24hJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlY3Rpb25zYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHNlY3Rpb25OYW1lID0gc2VjdGlvbnNhcnJheVtpXS5uYW1lO1xyXG4gICAgICBsZXQgZmluZEV4aXN0cyA9IHNlY3Rpb25zYXJyYXkuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoaW5kZXggIT0gaSAmJiBzZWN0aW9uTmFtZS50cmltKCkgPT0gZWxlLm5hbWUudHJpbSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gZWxlO1xyXG4gICAgICB9KVxyXG4gICAgICBpZihmaW5kRXhpc3RzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGAke3NlY3Rpb25OYW1lfSBzZWN0aW9uIG5hbWUgaXMgRHVwbGljYXRlZGAgLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZih0eXBlID09ICdjb25maWd1cmUnICYmICFzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGFkZCBhdGxlYXN0IG9uZSBxdWVzdGlvbiBpbiBzZWN0aW9uISc7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0ucW5hbWUgPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkucmVwbGFjZUFsbCgvXFxuL2csICcnKVxyXG4gICAgICAgIGxldCBmaW5kRXhpc3RzID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnMuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoaW5kZXggIT0gaiAmJiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkgPT0gZWxlLnFuYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmKGZpbmRFeGlzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZX0gcXVlc3Rpb24gbmFtZSBpcyBEdXBsaWNhdGVkYCAsJ2Vycm9yJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ2xpbmVhcnNjYWxlJykge1xyXG4gICAgICAgICAgaWYoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZVN0YXJ0ID4gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZUVuZCl7XHJcbiAgICAgICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdSYW5nZSBzdGFydCBpcyBncmVhdGVyIHRoYW4gcmFuZ2UgRW5kLic7XHJcbiAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlICE9ICdkZXNjcmlwdGl2ZScpIHtcclxuICAgICAgICAgIGRlbGV0ZSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5kZXNjcmlwdGl2ZXR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCJdLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VySW5wdXRTdHlsZSddID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZTtcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsncmVmZXJlbmNlSW1hZ2UnXSA9IFwiXCI7XHJcbiAgICAgICAgICAgIC8vIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWyd2YWxpZGF0aW9uQW5zd2VyJ10gPSBcIlwiOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydydW5BSSddID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10udHJpbSgpO1xyXG4gICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gPSBmYWxzZTtcclxuICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwieWVzL25vXCJdLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgIGlmKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3Nob3dMaW5rZWQnXSAmJiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID09IDApIHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3Nob3dMaW5rZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gJiYgdHlwZW9mIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2xpbmtlZFF1ZXN0aW9uJ10gPT0gXCJzdHJpbmdcIil7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydsaW5rZWRRdWVzdGlvbiddID0gcGFyc2VJbnQoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10gPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzICE9PSBudWxsICYmXHJcbiAgICAgICAgICAhQXJyYXkuaXNBcnJheShzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzKSB8fCBbJ2Rlc2NyaXB0aXZlJywnZGF0ZSddLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICAgIFwiYW5zd2VyXCI6ICcnLFxyXG4gICAgICAgICAgICAgIFwiYW5zd2Vyb3B0aW9uTnVtYmVyXCI6IDEsXHJcbiAgICAgICAgICAgICAgXCJzb3BGbGFnXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvblwiOiBmYWxzZSxcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25BbnN3ZXJcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25UeXBlXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJyZWZlcmVuY2VJbWFnZVwiOiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LnJlZmVyZW5jZUltYWdlIDogXCJcIixcclxuICAgICAgICAgICAgICBcInNob3dMaW5rZWRcIjpmYWxzZSxcclxuICAgICAgICAgICAgICBcImxpbmtlZFF1ZXN0aW9uXCI6MCxcclxuICAgICAgICAgICAgICAuLi4oc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScgPyB7J2Rlc2NyaXB0aXZldHlwZSc6c2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uZGVzY3JpcHRpdmV0eXBlfTp7fSksXHJcbiAgICAgICAgICAgICAgLi4uKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ2xpbmVhcnNjYWxlJyA/IHsncmFuZ2VTdGFydCc6c2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VTdGFydH06e30pLFxyXG4gICAgICAgICAgICAgIC4uLihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlID09ICdsaW5lYXJzY2FsZScgPyB7J3JhbmdlRW5kJzpzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yYW5nZUVuZH06e30pXHJcbiAgICAgICAgICAgICAgLy8gXCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI6IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5IDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgLy8gXCJhbnN3ZXJJbnB1dFN0eWxlXCI6IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFuc3dlcklucHV0U3R5bGUgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbnN3ZXJJbnB1dFN0eWxlIDogXCJcIixcclxuICAgICAgICAgICAgICAvLyBcInJ1bkFJXCI6IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucnVuQUkgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLnJ1bkFJIDogZmFsc2UsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA6IGZhbHNlO1xyXG4gICAgICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlID09ICdtdWx0aXBsZUltYWdlJykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmRlc2NyaXB0aXZldHlwZSA9IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA6ICd0ZXh0JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzID0gW2l0ZW1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2hlY2tsaXN0LnNlY3Rpb25zID0gc2VjdGlvbnNhcnJheTtcclxuICAgIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lID0gY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLnNsaWNlKDEpO1xyXG4gICAgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUgPSBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZS50cmltKCk7XHJcbiAgICBjaGVja2xpc3QuY2hlY2tsaXN0RGVzY3JpcHRpb24gPSBjaGVja2xpc3Q/LmNoZWNrbGlzdERlc2NyaXB0aW9uID8gY2hlY2tsaXN0Py5jaGVja2xpc3REZXNjcmlwdGlvbj8udHJpbSgpIDogJyc7XHJcbiAgICBjaGVja2xpc3QuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgY29uc29sZS5sb2coY2hlY2tsaXN0LCdjZWhja2xpcycpXHJcbiAgICAvLyB0aGlzLnNvcFNlcnZpY2UuZ2V0dXBkYXRlY2hlY2tsaXN0KHRoaXMuZWRpdHZhbHVlLCBjaGVja2xpc3QpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgLy8gICBpZihyZXMpIHtcclxuICAgIC8vICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgLy8gICAgICAgaWYodHlwZT09J2NvbmZpZ3VyZScpIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL21hbmFnZS90cmF4L2NvbmZpZ3VyZT9jaGVja0xpc3RJZD0ke3Jlcy5kYXRhLmNoZWNrbGlzdElkfSZzaG93RWRpdD10cnVlYCk7XHJcbiAgICAvLyAgICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbWFuYWdlL3RyYXgvY2hlY2tsaXN0Jyk7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIHRoaXMuc3dhbFRvYXN0KCdVbmFibGUgdG8gdXBkYXRlIGNoZWNrbGlzdCEnLCdlcnJvcicpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSBlbHNlIHtcclxuICAgIC8vICAgICB0aGlzLnN3YWxUb2FzdCgnVW5hYmxlIHRvIHVwZGF0ZSBjaGVja2xpc3QhJywnZXJyb3InKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSwgKGVycm9yKSA9PiB7XHJcbiAgICAvLyAgIGxldCBlcnIgPSBlcnJvcj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCFTZXJ2ZXIgRXJyb3IhJztcclxuICAgIC8vICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBtYXJrRm9ybUNvbnRyb2xzQXNUb3VjaGVkKGNvbnRyb2w6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSxzZWN0aW9uSW5kZXg/OiBudW1iZXIpIHtcclxuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG5cclxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29udHJvbE5hbWUgaW4gY29udHJvbC5jb250cm9scykge1xyXG4gICAgICAgIHRoaXMubWFya0Zvcm1Db250cm9sc0FzVG91Y2hlZChjb250cm9sLmdldChjb250cm9sTmFtZSkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnRyb2wuY29udHJvbHMuZm9yRWFjaChmb3JtQ29udHJvbCA9PiB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9ybUNvbnRyb2xzQXNUb3VjaGVkKGZvcm1Db250cm9sIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9FcnJvcnMoc2VjdGlvbnM6IEZvcm1BcnJheSkge1xyXG4gICAgZm9yKGxldCBpPTA7aTxzZWN0aW9ucy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgIGxldCBzZWN0aW9uID0gc2VjdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwO1xyXG4gICAgICBpZiAoc2VjdGlvbi5pbnZhbGlkKSB7XHJcbiAgICAgICAgbGV0IHF1ZXN0aW9ucyA9IHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajxxdWVzdGlvbnMubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgbGV0IHF1ZXN0aW9uID0gcXVlc3Rpb25zLmF0KGopIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uLCdxdWVzdGlvbicpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHF1ZXN0aW9uLmludmFsaWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNob3cgPSBpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9RdWVzdGlvbihpLCBqKTtcclxuICAgICAgICAgICAgICB0aGlzLnN3YWxUb2FzdCgnUGxlYXNlIGZpbGwgb3V0IGFsbCB0aGUgZmllbGRzIScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3dhbFRvYXN0KGVycjogc3RyaW5nLHR5cGU/OnN0cmluZyxpY29uPzogc3RyaW5nKSB7XHJcbiAgICBpZih0eXBlID09ICdlcnJvcicpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGVycik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoZXJyKTtcclxuICAgIH1cclxuICAgIC8vIFN3YWwuZmlyZSh7XHJcbiAgICAvLyAgIHRvYXN0OiB0cnVlLFxyXG4gICAgLy8gICAuLi4oIGljb24gPyB7IGljb25IdG1sOiBpY29uIH0gOiB7fSksXHJcbiAgICAvLyAgIC8vIHRpdGxlVGV4dDogYENoZWNrbGlzdCBGb3JtIEVycm9yYCxcclxuICAgIC8vICAgaHRtbDogYDxkaXYgY2xhc3M9XCJyb3cgXCI+XHJcbiAgICAvLyAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gICAgLy8gICA8ZGl2IGNsYXNzPVwidG9hc3R0aXRpbGVcIj4ke2Vycn08L2Rpdj5cclxuICAgIC8vICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAvLyAgIDwvZGl2PmAsXHJcbiAgICAvLyAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgIC8vICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgLy8gICBzaG93Q2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAvLyAgIHRpbWVyOiA2MDAwLFxyXG4gICAgLy8gICB0aW1lclByb2dyZXNzQmFyOiB0cnVlLFxyXG4gICAgLy8gICBkaWRPcGVuOiAodG9hc3QpID0+IHtcclxuICAgIC8vICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgICAvLyAgICAgdG9hc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIFN3YWwucmVzdW1lVGltZXIpXHJcbiAgICAvLyAgICAgJChcIiNrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiKT8udmFsKCcnKTtcclxuICAgIC8vICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBSdW5BSShzSWR4Om51bWJlcixxSWR4OiBudW1iZXIsYW5zSWR4Om51bWJlcj0tMSkge1xyXG4gICAgbGV0IGRpYWxvZ1JlZjogYW55O1xyXG4gICAgbGV0IHF1ZXN0aW9uOiBhbnkgPSB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc0lkeCxxSWR4LCdxbmFtZScpPy52YWx1ZTtcclxuICAgIGlmKHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNJZHgscUlkeCwncnVuQUknLGFuc0lkeCk/LnZhbHVlID09IGZhbHNlKSB7XHJcbiAgICAgIGlmKCFxdWVzdGlvbiB8fCAhdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWx1ZSkge1xyXG4gICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICFxdWVzdGlvbiA/ICdQbGVhc2UgZW50ZXIgcXVlc3Rpb24gdG8gY29udGludWUhJyA6ICdQbGVhc2UgZW50ZXIgQ2hlY2tsaXN0IE5hbWUgdG8gY29udGludWUhJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7ICAgICAgICBcclxuICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsZmFsc2UsYW5zSWR4KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQse2NlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnfSk7XHJcbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEMUZBREZcIi8+PHBhdGggZD1cIk0yMy4zNTY0IDE5LjM1MjVDMjQuMTc0OCAxOC43MzI3IDI1LjE3MzggMTguMzk4NSAyNi4yMDA0IDE4LjQwMDlDMjYuNTU0OSAxOC4zOTMgMjYuOTA1NyAxOC40NzQ2IDI3LjIyMDQgMTguNjM4MkMyNy41MzUgMTguODAxOCAyNy44MDMzIDE5LjA0MjEgMjguMDAwNCAxOS4zMzY5QzI4LjE5NzUgMTkuMDQyMSAyOC40NjU4IDE4LjgwMTggMjguNzgwNCAxOC42MzgyQzI5LjA5NSAxOC40NzQ2IDI5LjQ0NTkgMTguMzkzIDI5LjgwMDQgMTguNDAwOUMzMC44MjcgMTguMzk4NSAzMS44MjYgMTguNzMyNyAzMi42NDQ0IDE5LjM1MjVDMzMuMjc0NCAxOS44NDIxIDMzLjc2MDQgMjAuNTIwMSAzMy45MzIgMjEuMzM5N0MzNC4zMjU2IDIxLjM2OTcgMzQuNjg1NiAyMS41MzI5IDM0Ljk4OCAyMS43Nzg5QzM1LjQ0NjQgMjIuMTUwOSAzNS43OCAyMi43MDg5IDM1Ljk5IDIzLjI5OTNDMzYuMzE4OCAyNC4yMTczIDM2LjQwNzYgMjUuMzg3MyAzNi4wNjY4IDI2LjM4MzNDMzYuMTUzMiAyNi40MjQxIDM2LjIzODQgMjYuNDcyMSAzNi4zMjEyIDI2LjUyNzNDMzYuNjUxMiAyNi43NDY5IDM2LjkwMiAyNy4wNjEzIDM3LjA4NjggMjcuNDMyMUMzNy40NTA0IDI4LjE1ODEgMzcuNjAwNCAyOS4xNzA5IDM3LjYwMDQgMzAuNDAwOUMzNy42MDA0IDMxLjc3MDEgMzcuMDc4NCAzMi42ODkzIDM2LjQxNiAzMy4yNTY5QzM2LjA0OTcgMzMuNTcxIDM1LjYxNzQgMzMuNzk4NiAzNS4xNTEyIDMzLjkyMjlDMzUuMDMxMiAzNC41OTI1IDM0LjY5NTIgMzUuMzY3NyAzNC4xNjg0IDM2LjAyNTNDMzMuNDg0NCAzNi44ODMzIDMyLjQyMzYgMzcuNjAwOSAzMS4wMDA0IDM3LjYwMDlDMjkuODcyNCAzNy42MDA5IDI4Ljk3NDggMzYuOTc2OSAyOC4zOTE2IDM2LjM2NDlDMjguMjUyMiAzNi4yMTg4IDI4LjEyMTUgMzYuMDY0NSAyOC4wMDA0IDM1LjkwMjlDMjcuODc5MyAzNi4wNjQ1IDI3Ljc0ODYgMzYuMjE4OCAyNy42MDkyIDM2LjM2NDlDMjcuMDI2IDM2Ljk3NjkgMjYuMTI5NiAzNy42MDA5IDI1LjAwMDQgMzcuNjAwOUMyMy41NzcyIDM3LjYwMDkgMjIuNTE3NiAzNi44ODMzIDIxLjgzMjQgMzYuMDI1M0MyMS4zNDAxIDM1LjQxNCAyMS4wMDI5IDM0LjY5MjcgMjAuODQ5NiAzMy45MjI5QzIwLjM4MzQgMzMuNzk4NiAxOS45NTExIDMzLjU3MSAxOS41ODQ4IDMzLjI1NjlDMTguOTIyNCAzMi42ODkzIDE4LjQwMDQgMzEuNzY4OSAxOC40MDA0IDMwLjQwMDlDMTguNDAwNCAyOS4xNzA5IDE4LjU1MTYgMjguMTU2OSAxOC45MTQgMjcuNDMyMUMxOS4wODU3IDI3LjA2ODUgMTkuMzQ5NyAyNi43NTYxIDE5LjY3OTYgMjYuNTI2MUMxOS43NjA2IDI2LjQ3MjUgMTkuODQ1NyAyNi40MjUxIDE5LjkzNCAyNi4zODQ1QzE5LjU5MzIgMjUuMzg2MSAxOS42ODIgMjQuMjE3MyAyMC4wMTA4IDIzLjI5OTNDMjAuMjIwOCAyMi43MDg5IDIwLjU1NDQgMjIuMTUwOSAyMS4wMTI4IDIxLjc3ODlDMjEuMzE1MiAyMS41MzI5IDIxLjY3NTIgMjEuMzcwOSAyMi4wNjg4IDIxLjMzOTdDMjIuMjQxNiAyMC41MjAxIDIyLjcyNjQgMTkuODQyMSAyMy4zNTY0IDE5LjM1MjVaTTI3LjQwMDQgMjEuNDAwOVYyMS4zODg5TDI3LjM5OCAyMS4zMjg5QzI3LjM4MDMgMjEuMDE2MSAyNy4zMTgxIDIwLjcwNzQgMjcuMjEzMiAyMC40MTIxQzI3LjEzODUgMjAuMTg5MiAyNy4wMTEzIDE5Ljk4NzYgMjYuODQyNCAxOS44MjQxQzI2LjY2NTEgMTkuNjY5OCAyNi40MzUyIDE5LjU4OTggMjYuMjAwNCAxOS42MDA5QzI1LjQ0MDcgMTkuNTk4MyAyNC43MDA5IDE5Ljg0MzUgMjQuMDkzMiAyMC4yOTkzQzIzLjUzNjQgMjAuNzMyNSAyMy4yMDA0IDIxLjMxOTMgMjMuMjAwNCAyMi4wMDA5QzIzLjIwMDMgMjIuMDk1OSAyMy4xNzc3IDIyLjE4OTYgMjMuMTM0MyAyMi4yNzQxQzIzLjA5MSAyMi4zNTg3IDIzLjAyODIgMjIuNDMxOCAyMi45NTExIDIyLjQ4NzNDMjIuODc0IDIyLjU0MjggMjIuNzg0OCAyMi41NzkzIDIyLjY5MDkgMjIuNTkzNkMyMi41OTY5IDIyLjYwNzkgMjIuNTAwOSAyMi41OTk3IDIyLjQxMDggMjIuNTY5N0MyMi4xODUyIDIyLjQ5NTMgMjEuOTgzNiAyMi41MzczIDIxLjc2ODggMjIuNzEwMUMyMS41MzM2IDIyLjkwMjEgMjEuMzA0NCAyMy4yNDI5IDIxLjE0IDIzLjcwMjVDMjAuODA1MiAyNC42NDA5IDIwLjg0IDI1Ljc3NzMgMjEuMjk5NiAyNi40Njg1QzIxLjM2NTIgMjYuNTY3IDIxLjQwMDMgMjYuNjgyNiAyMS40MDA0IDI2LjgwMDlIMjIuMzAwNEMyMy4wMTY1IDI2LjgwMDkgMjMuNzAzMiAyNy4wODU0IDI0LjIwOTYgMjcuNTkxN0MyNC43MTU5IDI4LjA5ODEgMjUuMDAwNCAyOC43ODQ4IDI1LjAwMDQgMjkuNTAwOVYyOS45MDI5QzI1LjQwMDcgMzAuMDQ0NSAyNS43MzgxIDMwLjMyMyAyNS45NTMgMzAuNjg5MkMyNi4xNjc4IDMxLjA1NTUgMjYuMjQ2MyAzMS40ODU5IDI2LjE3NDUgMzEuOTA0NEMyNi4xMDI3IDMyLjMyMjkgMjUuODg1MiAzMi43MDI1IDI1LjU2MDYgMzIuOTc2MkMyNS4yMzU5IDMzLjI0OTkgMjQuODI1IDMzLjQgMjQuNDAwNCAzMy40QzIzLjk3NTggMzMuNCAyMy41NjQ4IDMzLjI0OTkgMjMuMjQwMiAzMi45NzYyQzIyLjkxNTYgMzIuNzAyNSAyMi42OTgxIDMyLjMyMjkgMjIuNjI2MyAzMS45MDQ0QzIyLjU1NDUgMzEuNDg1OSAyMi42MzMgMzEuMDU1NSAyMi44NDc4IDMwLjY4OTJDMjMuMDYyNyAzMC4zMjMgMjMuNDAwMSAzMC4wNDQ1IDIzLjgwMDQgMjkuOTAyOVYyOS41MDA5QzIzLjgwMDQgMjguNjcyOSAyMy4xMjg0IDI4LjAwMDkgMjIuMzAwNCAyOC4wMDA5SDIwLjIwMDRDMjAuMTI4NyAyOC4wMDA4IDIwLjA1NzUgMjcuOTg3OCAxOS45OTA0IDI3Ljk2MjVMMTkuOTg2OCAyNy45Njk3QzE5Ljc0OTIgMjguNDQzNyAxOS42MDA0IDI5LjIzMDkgMTkuNjAwNCAzMC40MDA5QzE5LjYwMDQgMzEuNDMxNyAxOS45Nzg0IDMyLjAxMjUgMjAuMzY2IDMyLjM0NDlDMjAuNzgyNCAzMi43MDI1IDIxLjI0NDQgMzIuODAwOSAyMS40MDA0IDMyLjgwMDlDMjEuNTU5NSAzMi44MDA5IDIxLjcxMjEgMzIuODY0MSAyMS44MjQ3IDMyLjk3NjdDMjEuOTM3MiAzMy4wODkyIDIyLjAwMDQgMzMuMjQxOCAyMi4wMDA0IDMzLjQwMDlDMjIuMDAwNCAzMy44NDI1IDIyLjI0MDQgMzQuNjE0MSAyMi43Njg0IDM1LjI3NjVDMjMuMjgzMiAzNS45MTg1IDI0LjAyMzYgMzYuNDAwOSAyNS4wMDA0IDM2LjQwMDlDMjUuNjcyNCAzNi40MDA5IDI2LjI3NDggMzYuMDI1MyAyNi43NDA0IDM1LjUzNjlDMjYuOTY5NiAzNS4yOTY5IDI3LjE0ODQgMzUuMDQ4NSAyNy4yNjQ4IDM0Ljg0NDVDMjcuMzE3OCAzNC43NTQxIDI3LjM2MzEgMzQuNjU5MyAyNy40MDA0IDM0LjU2MTNWMjUuMDAwOUgyNi4wOTg0QzI1Ljk1NjkgMjUuNDAxMiAyNS42NzgzIDI1LjczODcgMjUuMzEyMSAyNS45NTM1QzI0Ljk0NTkgMjYuMTY4MyAyNC41MTU0IDI2LjI0NjggMjQuMDk3IDI2LjE3NUMyMy42Nzg1IDI2LjEwMzIgMjMuMjk4OCAyNS44ODU4IDIzLjAyNTEgMjUuNTYxMUMyMi43NTE0IDI1LjIzNjUgMjIuNjAxMyAyNC44MjU1IDIyLjYwMTMgMjQuNDAwOUMyMi42MDEzIDIzLjk3NjMgMjIuNzUxNCAyMy41NjU0IDIzLjAyNTEgMjMuMjQwN0MyMy4yOTg4IDIyLjkxNjEgMjMuNjc4NSAyMi42OTg2IDI0LjA5NyAyMi42MjY4QzI0LjUxNTQgMjIuNTU1IDI0Ljk0NTkgMjIuNjMzNSAyNS4zMTIxIDIyLjg0ODNDMjUuNjc4MyAyMy4wNjMyIDI1Ljk1NjkgMjMuNDAwNiAyNi4wOTg0IDIzLjgwMDlIMjcuNDAwNFYyMS40MDA5Wk0yOC42MDA0IDMzLjM5OTdWMzQuNTYwMUMyOC42Mzc3IDM0LjY1ODEgMjguNjgzIDM0Ljc1MjggMjguNzM2IDM0Ljg0MzNDMjguODUzNiAzNS4wNDczIDI5LjAzMTIgMzUuMjk1NyAyOS4yNTkyIDM1LjUzNTdDMjkuNzI2IDM2LjAyNDEgMzAuMzI5NiAzNi4zOTk3IDMxLjAwMDQgMzYuMzk5N0MzMS45NzcyIDM2LjM5OTcgMzIuNzE3NiAzNS45MTczIDMzLjIzMjQgMzUuMjc1M0MzMy43NjA0IDM0LjYxMjkgMzQuMDAwNCAzMy44NDEzIDM0LjAwMDQgMzMuMzk5N0MzNC4wMDA0IDMzLjI0MDYgMzQuMDYzNiAzMy4wODggMzQuMTc2MSAzMi45NzU1QzM0LjI4ODYgMzIuODYyOSAzNC40NDEzIDMyLjc5OTcgMzQuNjAwNCAzMi43OTk3QzM0Ljc1NjQgMzIuNzk5NyAzNS4yMTg0IDMyLjcwMTMgMzUuNjM0OCAzMi4zNDM3QzM2LjAyMjQgMzIuMDExMyAzNi40MDA0IDMxLjQzMDUgMzYuNDAwNCAzMC4zOTk3QzM2LjQwMDQgMjkuMjI5NyAzNi4yNTA0IDI4LjQ0MzcgMzYuMDE0IDI3Ljk2ODVDMzUuOTM0OSAyNy43OTE2IDM1LjgxMDggMjcuNjM4NSAzNS42NTQgMjcuNTI0NUMzNS41MTg5IDI3LjQzODEgMzUuMzYwNiAyNy4zOTUgMzUuMjAwNCAyNy40MDA5QzM1LjA5MTkgMjcuNDAwOSAzNC45ODU0IDI3LjM3MTQgMzQuODkyMyAyNy4zMTU2QzM0Ljc5OTIgMjcuMjU5OCAzNC43MjMgMjcuMTc5OCAzNC42NzE3IDI3LjA4NDFDMzQuNjIwNSAyNi45ODg0IDM0LjU5NjIgMjYuODgwNyAzNC42MDE0IDI2Ljc3MjNDMzQuNjA2NiAyNi42NjM4IDM0LjY0MTEgMjYuNTU4OSAzNC43MDEyIDI2LjQ2ODVDMzUuMTYyIDI1Ljc3NzMgMzUuMTk1NiAyNC42NDA5IDM0Ljg2MDggMjMuNzAyNUMzNC42OTY0IDIzLjI0MjkgMzQuNDY3MiAyMi45MDA5IDM0LjIzMiAyMi43MTAxQzM0LjAxNzIgMjIuNTM3MyAzMy44MTU2IDIyLjQ5NDEgMzMuNTkgMjIuNTY5N0MzMy40OTk4IDIyLjU5OTcgMzMuNDAzOCAyMi42MDc5IDMzLjMwOTkgMjIuNTkzNkMzMy4yMTYgMjIuNTc5MyAzMy4xMjY4IDIyLjU0MjggMzMuMDQ5NyAyMi40ODczQzMyLjk3MjYgMjIuNDMxOCAzMi45MDk4IDIyLjM1ODcgMzIuODY2NCAyMi4yNzQxQzMyLjgyMzEgMjIuMTg5NiAzMi44MDA1IDIyLjA5NTkgMzIuODAwNCAyMi4wMDA5QzMyLjgwMDQgMjEuMzE5MyAzMi40NjQ0IDIwLjczMjUgMzEuOTA2NCAyMC4yOTkzQzMxLjI5OSAxOS44NDM4IDMwLjU1OTYgMTkuNTk4NiAyOS44MDA0IDE5LjYwMDlDMjkuNTY1NiAxOS41ODk4IDI5LjMzNTYgMTkuNjY5OCAyOS4xNTg0IDE5LjgyNDFDMjguOTg4OSAxOS45ODc0IDI4Ljg2MTMgMjAuMTg5MSAyOC43ODY0IDIwLjQxMjFDMjguNjcyMSAyMC43MjU2IDI4LjYwOTMgMjEuMDU1NCAyOC42MDA0IDIxLjM4ODlWMzIuMjAwOUgyOS41MDA0QzMwLjMyODQgMzIuMjAwOSAzMS4wMDA0IDMxLjUyODkgMzEuMDAwNCAzMC43MDA5VjI4LjQ5ODlDMzAuNjAwMSAyOC4zNTc0IDMwLjI2MjcgMjguMDc4OSAzMC4wNDc4IDI3LjcxMjZDMjkuODMzIDI3LjM0NjQgMjkuNzU0NSAyNi45MTYgMjkuODI2MyAyNi40OTc1QzI5Ljg5ODEgMjYuMDc5IDMwLjExNTYgMjUuNjk5MyAzMC40NDAyIDI1LjQyNTdDMzAuNzY0OCAyNS4xNTIgMzEuMTc1OCAyNS4wMDE5IDMxLjYwMDQgMjUuMDAxOUMzMi4wMjUgMjUuMDAxOSAzMi40MzU5IDI1LjE1MiAzMi43NjA2IDI1LjQyNTdDMzMuMDg1MiAyNS42OTkzIDMzLjMwMjcgMjYuMDc5IDMzLjM3NDUgMjYuNDk3NUMzMy40NDYzIDI2LjkxNiAzMy4zNjc4IDI3LjM0NjQgMzMuMTUzIDI3LjcxMjZDMzIuOTM4MSAyOC4wNzg5IDMyLjYwMDcgMjguMzU3NCAzMi4yMDA0IDI4LjQ5ODlWMzAuNzAwOUMzMi4yMDA0IDMxLjQxNyAzMS45MTU5IDMyLjEwMzggMzEuNDA5NiAzMi42MTAxQzMwLjkwMzIgMzMuMTE2NSAzMC4yMTY1IDMzLjQwMDkgMjkuNTAwNCAzMy40MDA5SDI4LjYwMDRWMzMuMzk5N1pNMjMuODAwNCAyNC40MDA5QzIzLjgwMDQgMjQuNTYwMSAyMy44NjM2IDI0LjcxMjcgMjMuOTc2MSAyNC44MjUyQzI0LjA4ODYgMjQuOTM3NyAyNC4yNDEzIDI1LjAwMDkgMjQuNDAwNCAyNS4wMDA5QzI0LjU1OTUgMjUuMDAwOSAyNC43MTIxIDI0LjkzNzcgMjQuODI0NyAyNC44MjUyQzI0LjkzNzIgMjQuNzEyNyAyNS4wMDA0IDI0LjU2MDEgMjUuMDAwNCAyNC40MDA5QzI1LjAwMDQgMjQuMjQxOCAyNC45MzcyIDI0LjA4OTIgMjQuODI0NyAyMy45NzY3QzI0LjcxMjEgMjMuODY0MSAyNC41NTk1IDIzLjgwMDkgMjQuNDAwNCAyMy44MDA5QzI0LjI0MTMgMjMuODAwOSAyNC4wODg2IDIzLjg2NDEgMjMuOTc2MSAyMy45NzY3QzIzLjg2MzYgMjQuMDg5MiAyMy44MDA0IDI0LjI0MTggMjMuODAwNCAyNC40MDA5Wk0zMS42MDA0IDI3LjQwMDlDMzEuNzU5NSAyNy40MDA5IDMxLjkxMjEgMjcuMzM3NyAzMi4wMjQ3IDI3LjIyNTJDMzIuMTM3MiAyNy4xMTI3IDMyLjIwMDQgMjYuOTYwMSAzMi4yMDA0IDI2LjgwMDlDMzIuMjAwNCAyNi42NDE4IDMyLjEzNzIgMjYuNDg5MiAzMi4wMjQ3IDI2LjM3NjdDMzEuOTEyMSAyNi4yNjQxIDMxLjc1OTUgMjYuMjAwOSAzMS42MDA0IDI2LjIwMDlDMzEuNDQxMyAyNi4yMDA5IDMxLjI4ODYgMjYuMjY0MSAzMS4xNzYxIDI2LjM3NjdDMzEuMDYzNiAyNi40ODkyIDMxLjAwMDQgMjYuNjQxOCAzMS4wMDA0IDI2LjgwMDlDMzEuMDAwNCAyNi45NjAxIDMxLjA2MzYgMjcuMTEyNyAzMS4xNzYxIDI3LjIyNTJDMzEuMjg4NiAyNy4zMzc3IDMxLjQ0MTMgMjcuNDAwOSAzMS42MDA0IDI3LjQwMDlaTTI0LjQwMDQgMzEuMDAwOUMyNC4yNDEzIDMxLjAwMDkgMjQuMDg4NiAzMS4wNjQxIDIzLjk3NjEgMzEuMTc2N0MyMy44NjM2IDMxLjI4OTIgMjMuODAwNCAzMS40NDE4IDIzLjgwMDQgMzEuNjAwOUMyMy44MDA0IDMxLjc2MDEgMjMuODYzNiAzMS45MTI3IDIzLjk3NjEgMzIuMDI1MkMyNC4wODg2IDMyLjEzNzcgMjQuMjQxMyAzMi4yMDA5IDI0LjQwMDQgMzIuMjAwOUMyNC41NTk1IDMyLjIwMDkgMjQuNzEyMSAzMi4xMzc3IDI0LjgyNDcgMzIuMDI1MkMyNC45MzcyIDMxLjkxMjcgMjUuMDAwNCAzMS43NjAxIDI1LjAwMDQgMzEuNjAwOUMyNS4wMDA0IDMxLjQ0MTggMjQuOTM3MiAzMS4yODkyIDI0LjgyNDcgMzEuMTc2N0MyNC43MTIxIDMxLjA2NDEgMjQuNTU5NSAzMS4wMDA5IDI0LjQwMDQgMzEuMDAwOVpcIiBmaWxsPVwiIzAzOTg1NVwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQ0ZERjNcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICB0aXRsZTogYFJ1biBBSSBvbiBpbWFnZSB1cGxvYWRlZGAsXHJcbiAgICAgICAgICBjb250ZW50OiBgVXNlIHRoZSBwb3dlciBvZiBBSSB0byBjb21wYXJlIGFuZCBkZXRlY3QgYW5vbWFsaWVzIGJldHdlZW4gdXBsb2FkZWQgYW5kIHJlZmVyZW5jZSBpbWFnZS5gLFxyXG4gICAgICAgICAgaW5wdXRsYWJlbDE6ICdRdWVzdGlvbicsXHJcbiAgICAgICAgICBpbnB1dHR5cGUxOiAndGV4dCcsXHJcbiAgICAgICAgICBpbnB1dDE6ICd0cnVlJyxcclxuICAgICAgICAgIGlucHV0bGFiZWwyOiAnU3BlY2lmeSB5b3VyIHJlcXVlc3QnLFxyXG4gICAgICAgICAgaW5wdXR0eXBlMjogJ3RleHQnLFxyXG4gICAgICAgICAgcmVzVHlwZTogJ2N1c3RvbScsXHJcbiAgICAgICAgICBpbnB1dDI6ICd0cnVlJyxcclxuICAgICAgICAgIHBsYWNlaG9sZGVyMTogcXVlc3Rpb24sXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjI6ICdQbGVhc2UgY29tcGFyZSB0aGUgdXBsb2FkZWQgaW1hZ2VzIGEuLicsXHJcbiAgICAgICAgICBidXR0b250eXBlOiAnUmVxdWVzdCdcclxuICAgICAgICB9XHJcbiAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuc3RhdHVzID09ICdjb25maXJtJykge1xyXG4gICAgICAgICAgICBsZXQgcmVxOiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgY2hlY2tsaXN0TmFtZTogdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWx1ZSxcclxuICAgICAgICAgICAgICBxdWVzdGlvbk5hbWU6IHF1ZXN0aW9uLFxyXG4gICAgICAgICAgICAgIHJ1bkFJRGVzY3JpcHRpb246IHJlcy5kYXRhLnJlcXVlc3RUZXh0LFxyXG4gICAgICAgICAgICAgIGFuc3dlclR5cGU6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3JlZmVyZW5jZUltYWdlJyxhbnNJZHgpPy52YWx1ZSB8fCAnJyxcclxuICAgICAgICAgICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zb3BTZXJ2aWNlLnJ1bkFJSW5zZXJ0KHJlcSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKGFwaXJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGFwaXJlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFwaXJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk/LnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk/LnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUlEZXNjcmlwdGlvbicsYW5zSWR4KT8ucGF0Y2hWYWx1ZShyZXMuZGF0YS5yZXF1ZXN0VGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIGA8c3BhbiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDM2cHg7XCI+JHthcGlyZXMuZGF0YS5tZXNzYWdlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPGEgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvc3VwcG9ydC92aWV3LXRpY2tldHNcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IHZhcigtLXByaW1hcnktNzAwLCAjMDA5QkYzKTtmb250LWZhbWlseTogUm9ib3RvO2ZvbnQtc2l6ZTogMTVweDtmb250LXdlaWdodDogNzAwO3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO2N1cnNvcjogcG9pbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3IFRpY2tldFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5gLFxyXG4gICAgICAgICAgICAgICAgICAgIGA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9JY29ucy9zb3AtcnVuYWktdG9zdGljb24uc3ZnXCIgLz5gXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsdHJ1ZSxhbnNJZHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsdHJ1ZSxhbnNJZHgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ydW5BSU9mZihzSWR4LCBxSWR4LHRydWUsYW5zSWR4KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsZmFsc2UsYW5zSWR4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQse2NlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnfSk7XHJcbiAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xyXG4gICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0QxRkFERlwiLz48cGF0aCBkPVwiTTIzLjM1NjQgMTkuMzUyNUMyNC4xNzQ4IDE4LjczMjcgMjUuMTczOCAxOC4zOTg1IDI2LjIwMDQgMTguNDAwOUMyNi41NTQ5IDE4LjM5MyAyNi45MDU3IDE4LjQ3NDYgMjcuMjIwNCAxOC42MzgyQzI3LjUzNSAxOC44MDE4IDI3LjgwMzMgMTkuMDQyMSAyOC4wMDA0IDE5LjMzNjlDMjguMTk3NSAxOS4wNDIxIDI4LjQ2NTggMTguODAxOCAyOC43ODA0IDE4LjYzODJDMjkuMDk1IDE4LjQ3NDYgMjkuNDQ1OSAxOC4zOTMgMjkuODAwNCAxOC40MDA5QzMwLjgyNyAxOC4zOTg1IDMxLjgyNiAxOC43MzI3IDMyLjY0NDQgMTkuMzUyNUMzMy4yNzQ0IDE5Ljg0MjEgMzMuNzYwNCAyMC41MjAxIDMzLjkzMiAyMS4zMzk3QzM0LjMyNTYgMjEuMzY5NyAzNC42ODU2IDIxLjUzMjkgMzQuOTg4IDIxLjc3ODlDMzUuNDQ2NCAyMi4xNTA5IDM1Ljc4IDIyLjcwODkgMzUuOTkgMjMuMjk5M0MzNi4zMTg4IDI0LjIxNzMgMzYuNDA3NiAyNS4zODczIDM2LjA2NjggMjYuMzgzM0MzNi4xNTMyIDI2LjQyNDEgMzYuMjM4NCAyNi40NzIxIDM2LjMyMTIgMjYuNTI3M0MzNi42NTEyIDI2Ljc0NjkgMzYuOTAyIDI3LjA2MTMgMzcuMDg2OCAyNy40MzIxQzM3LjQ1MDQgMjguMTU4MSAzNy42MDA0IDI5LjE3MDkgMzcuNjAwNCAzMC40MDA5QzM3LjYwMDQgMzEuNzcwMSAzNy4wNzg0IDMyLjY4OTMgMzYuNDE2IDMzLjI1NjlDMzYuMDQ5NyAzMy41NzEgMzUuNjE3NCAzMy43OTg2IDM1LjE1MTIgMzMuOTIyOUMzNS4wMzEyIDM0LjU5MjUgMzQuNjk1MiAzNS4zNjc3IDM0LjE2ODQgMzYuMDI1M0MzMy40ODQ0IDM2Ljg4MzMgMzIuNDIzNiAzNy42MDA5IDMxLjAwMDQgMzcuNjAwOUMyOS44NzI0IDM3LjYwMDkgMjguOTc0OCAzNi45NzY5IDI4LjM5MTYgMzYuMzY0OUMyOC4yNTIyIDM2LjIxODggMjguMTIxNSAzNi4wNjQ1IDI4LjAwMDQgMzUuOTAyOUMyNy44NzkzIDM2LjA2NDUgMjcuNzQ4NiAzNi4yMTg4IDI3LjYwOTIgMzYuMzY0OUMyNy4wMjYgMzYuOTc2OSAyNi4xMjk2IDM3LjYwMDkgMjUuMDAwNCAzNy42MDA5QzIzLjU3NzIgMzcuNjAwOSAyMi41MTc2IDM2Ljg4MzMgMjEuODMyNCAzNi4wMjUzQzIxLjM0MDEgMzUuNDE0IDIxLjAwMjkgMzQuNjkyNyAyMC44NDk2IDMzLjkyMjlDMjAuMzgzNCAzMy43OTg2IDE5Ljk1MTEgMzMuNTcxIDE5LjU4NDggMzMuMjU2OUMxOC45MjI0IDMyLjY4OTMgMTguNDAwNCAzMS43Njg5IDE4LjQwMDQgMzAuNDAwOUMxOC40MDA0IDI5LjE3MDkgMTguNTUxNiAyOC4xNTY5IDE4LjkxNCAyNy40MzIxQzE5LjA4NTcgMjcuMDY4NSAxOS4zNDk3IDI2Ljc1NjEgMTkuNjc5NiAyNi41MjYxQzE5Ljc2MDYgMjYuNDcyNSAxOS44NDU3IDI2LjQyNTEgMTkuOTM0IDI2LjM4NDVDMTkuNTkzMiAyNS4zODYxIDE5LjY4MiAyNC4yMTczIDIwLjAxMDggMjMuMjk5M0MyMC4yMjA4IDIyLjcwODkgMjAuNTU0NCAyMi4xNTA5IDIxLjAxMjggMjEuNzc4OUMyMS4zMTUyIDIxLjUzMjkgMjEuNjc1MiAyMS4zNzA5IDIyLjA2ODggMjEuMzM5N0MyMi4yNDE2IDIwLjUyMDEgMjIuNzI2NCAxOS44NDIxIDIzLjM1NjQgMTkuMzUyNVpNMjcuNDAwNCAyMS40MDA5VjIxLjM4ODlMMjcuMzk4IDIxLjMyODlDMjcuMzgwMyAyMS4wMTYxIDI3LjMxODEgMjAuNzA3NCAyNy4yMTMyIDIwLjQxMjFDMjcuMTM4NSAyMC4xODkyIDI3LjAxMTMgMTkuOTg3NiAyNi44NDI0IDE5LjgyNDFDMjYuNjY1MSAxOS42Njk4IDI2LjQzNTIgMTkuNTg5OCAyNi4yMDA0IDE5LjYwMDlDMjUuNDQwNyAxOS41OTgzIDI0LjcwMDkgMTkuODQzNSAyNC4wOTMyIDIwLjI5OTNDMjMuNTM2NCAyMC43MzI1IDIzLjIwMDQgMjEuMzE5MyAyMy4yMDA0IDIyLjAwMDlDMjMuMjAwMyAyMi4wOTU5IDIzLjE3NzcgMjIuMTg5NiAyMy4xMzQzIDIyLjI3NDFDMjMuMDkxIDIyLjM1ODcgMjMuMDI4MiAyMi40MzE4IDIyLjk1MTEgMjIuNDg3M0MyMi44NzQgMjIuNTQyOCAyMi43ODQ4IDIyLjU3OTMgMjIuNjkwOSAyMi41OTM2QzIyLjU5NjkgMjIuNjA3OSAyMi41MDA5IDIyLjU5OTcgMjIuNDEwOCAyMi41Njk3QzIyLjE4NTIgMjIuNDk1MyAyMS45ODM2IDIyLjUzNzMgMjEuNzY4OCAyMi43MTAxQzIxLjUzMzYgMjIuOTAyMSAyMS4zMDQ0IDIzLjI0MjkgMjEuMTQgMjMuNzAyNUMyMC44MDUyIDI0LjY0MDkgMjAuODQgMjUuNzc3MyAyMS4yOTk2IDI2LjQ2ODVDMjEuMzY1MiAyNi41NjcgMjEuNDAwMyAyNi42ODI2IDIxLjQwMDQgMjYuODAwOUgyMi4zMDA0QzIzLjAxNjUgMjYuODAwOSAyMy43MDMyIDI3LjA4NTQgMjQuMjA5NiAyNy41OTE3QzI0LjcxNTkgMjguMDk4MSAyNS4wMDA0IDI4Ljc4NDggMjUuMDAwNCAyOS41MDA5VjI5LjkwMjlDMjUuNDAwNyAzMC4wNDQ1IDI1LjczODEgMzAuMzIzIDI1Ljk1MyAzMC42ODkyQzI2LjE2NzggMzEuMDU1NSAyNi4yNDYzIDMxLjQ4NTkgMjYuMTc0NSAzMS45MDQ0QzI2LjEwMjcgMzIuMzIyOSAyNS44ODUyIDMyLjcwMjUgMjUuNTYwNiAzMi45NzYyQzI1LjIzNTkgMzMuMjQ5OSAyNC44MjUgMzMuNCAyNC40MDA0IDMzLjRDMjMuOTc1OCAzMy40IDIzLjU2NDggMzMuMjQ5OSAyMy4yNDAyIDMyLjk3NjJDMjIuOTE1NiAzMi43MDI1IDIyLjY5ODEgMzIuMzIyOSAyMi42MjYzIDMxLjkwNDRDMjIuNTU0NSAzMS40ODU5IDIyLjYzMyAzMS4wNTU1IDIyLjg0NzggMzAuNjg5MkMyMy4wNjI3IDMwLjMyMyAyMy40MDAxIDMwLjA0NDUgMjMuODAwNCAyOS45MDI5VjI5LjUwMDlDMjMuODAwNCAyOC42NzI5IDIzLjEyODQgMjguMDAwOSAyMi4zMDA0IDI4LjAwMDlIMjAuMjAwNEMyMC4xMjg3IDI4LjAwMDggMjAuMDU3NSAyNy45ODc4IDE5Ljk5MDQgMjcuOTYyNUwxOS45ODY4IDI3Ljk2OTdDMTkuNzQ5MiAyOC40NDM3IDE5LjYwMDQgMjkuMjMwOSAxOS42MDA0IDMwLjQwMDlDMTkuNjAwNCAzMS40MzE3IDE5Ljk3ODQgMzIuMDEyNSAyMC4zNjYgMzIuMzQ0OUMyMC43ODI0IDMyLjcwMjUgMjEuMjQ0NCAzMi44MDA5IDIxLjQwMDQgMzIuODAwOUMyMS41NTk1IDMyLjgwMDkgMjEuNzEyMSAzMi44NjQxIDIxLjgyNDcgMzIuOTc2N0MyMS45MzcyIDMzLjA4OTIgMjIuMDAwNCAzMy4yNDE4IDIyLjAwMDQgMzMuNDAwOUMyMi4wMDA0IDMzLjg0MjUgMjIuMjQwNCAzNC42MTQxIDIyLjc2ODQgMzUuMjc2NUMyMy4yODMyIDM1LjkxODUgMjQuMDIzNiAzNi40MDA5IDI1LjAwMDQgMzYuNDAwOUMyNS42NzI0IDM2LjQwMDkgMjYuMjc0OCAzNi4wMjUzIDI2Ljc0MDQgMzUuNTM2OUMyNi45Njk2IDM1LjI5NjkgMjcuMTQ4NCAzNS4wNDg1IDI3LjI2NDggMzQuODQ0NUMyNy4zMTc4IDM0Ljc1NDEgMjcuMzYzMSAzNC42NTkzIDI3LjQwMDQgMzQuNTYxM1YyNS4wMDA5SDI2LjA5ODRDMjUuOTU2OSAyNS40MDEyIDI1LjY3ODMgMjUuNzM4NyAyNS4zMTIxIDI1Ljk1MzVDMjQuOTQ1OSAyNi4xNjgzIDI0LjUxNTQgMjYuMjQ2OCAyNC4wOTcgMjYuMTc1QzIzLjY3ODUgMjYuMTAzMiAyMy4yOTg4IDI1Ljg4NTggMjMuMDI1MSAyNS41NjExQzIyLjc1MTQgMjUuMjM2NSAyMi42MDEzIDI0LjgyNTUgMjIuNjAxMyAyNC40MDA5QzIyLjYwMTMgMjMuOTc2MyAyMi43NTE0IDIzLjU2NTQgMjMuMDI1MSAyMy4yNDA3QzIzLjI5ODggMjIuOTE2MSAyMy42Nzg1IDIyLjY5ODYgMjQuMDk3IDIyLjYyNjhDMjQuNTE1NCAyMi41NTUgMjQuOTQ1OSAyMi42MzM1IDI1LjMxMjEgMjIuODQ4M0MyNS42NzgzIDIzLjA2MzIgMjUuOTU2OSAyMy40MDA2IDI2LjA5ODQgMjMuODAwOUgyNy40MDA0VjIxLjQwMDlaTTI4LjYwMDQgMzMuMzk5N1YzNC41NjAxQzI4LjYzNzcgMzQuNjU4MSAyOC42ODMgMzQuNzUyOCAyOC43MzYgMzQuODQzM0MyOC44NTM2IDM1LjA0NzMgMjkuMDMxMiAzNS4yOTU3IDI5LjI1OTIgMzUuNTM1N0MyOS43MjYgMzYuMDI0MSAzMC4zMjk2IDM2LjM5OTcgMzEuMDAwNCAzNi4zOTk3QzMxLjk3NzIgMzYuMzk5NyAzMi43MTc2IDM1LjkxNzMgMzMuMjMyNCAzNS4yNzUzQzMzLjc2MDQgMzQuNjEyOSAzNC4wMDA0IDMzLjg0MTMgMzQuMDAwNCAzMy4zOTk3QzM0LjAwMDQgMzMuMjQwNiAzNC4wNjM2IDMzLjA4OCAzNC4xNzYxIDMyLjk3NTVDMzQuMjg4NiAzMi44NjI5IDM0LjQ0MTMgMzIuNzk5NyAzNC42MDA0IDMyLjc5OTdDMzQuNzU2NCAzMi43OTk3IDM1LjIxODQgMzIuNzAxMyAzNS42MzQ4IDMyLjM0MzdDMzYuMDIyNCAzMi4wMTEzIDM2LjQwMDQgMzEuNDMwNSAzNi40MDA0IDMwLjM5OTdDMzYuNDAwNCAyOS4yMjk3IDM2LjI1MDQgMjguNDQzNyAzNi4wMTQgMjcuOTY4NUMzNS45MzQ5IDI3Ljc5MTYgMzUuODEwOCAyNy42Mzg1IDM1LjY1NCAyNy41MjQ1QzM1LjUxODkgMjcuNDM4MSAzNS4zNjA2IDI3LjM5NSAzNS4yMDA0IDI3LjQwMDlDMzUuMDkxOSAyNy40MDA5IDM0Ljk4NTQgMjcuMzcxNCAzNC44OTIzIDI3LjMxNTZDMzQuNzk5MiAyNy4yNTk4IDM0LjcyMyAyNy4xNzk4IDM0LjY3MTcgMjcuMDg0MUMzNC42MjA1IDI2Ljk4ODQgMzQuNTk2MiAyNi44ODA3IDM0LjYwMTQgMjYuNzcyM0MzNC42MDY2IDI2LjY2MzggMzQuNjQxMSAyNi41NTg5IDM0LjcwMTIgMjYuNDY4NUMzNS4xNjIgMjUuNzc3MyAzNS4xOTU2IDI0LjY0MDkgMzQuODYwOCAyMy43MDI1QzM0LjY5NjQgMjMuMjQyOSAzNC40NjcyIDIyLjkwMDkgMzQuMjMyIDIyLjcxMDFDMzQuMDE3MiAyMi41MzczIDMzLjgxNTYgMjIuNDk0MSAzMy41OSAyMi41Njk3QzMzLjQ5OTggMjIuNTk5NyAzMy40MDM4IDIyLjYwNzkgMzMuMzA5OSAyMi41OTM2QzMzLjIxNiAyMi41NzkzIDMzLjEyNjggMjIuNTQyOCAzMy4wNDk3IDIyLjQ4NzNDMzIuOTcyNiAyMi40MzE4IDMyLjkwOTggMjIuMzU4NyAzMi44NjY0IDIyLjI3NDFDMzIuODIzMSAyMi4xODk2IDMyLjgwMDUgMjIuMDk1OSAzMi44MDA0IDIyLjAwMDlDMzIuODAwNCAyMS4zMTkzIDMyLjQ2NDQgMjAuNzMyNSAzMS45MDY0IDIwLjI5OTNDMzEuMjk5IDE5Ljg0MzggMzAuNTU5NiAxOS41OTg2IDI5LjgwMDQgMTkuNjAwOUMyOS41NjU2IDE5LjU4OTggMjkuMzM1NiAxOS42Njk4IDI5LjE1ODQgMTkuODI0MUMyOC45ODg5IDE5Ljk4NzQgMjguODYxMyAyMC4xODkxIDI4Ljc4NjQgMjAuNDEyMUMyOC42NzIxIDIwLjcyNTYgMjguNjA5MyAyMS4wNTU0IDI4LjYwMDQgMjEuMzg4OVYzMi4yMDA5SDI5LjUwMDRDMzAuMzI4NCAzMi4yMDA5IDMxLjAwMDQgMzEuNTI4OSAzMS4wMDA0IDMwLjcwMDlWMjguNDk4OUMzMC42MDAxIDI4LjM1NzQgMzAuMjYyNyAyOC4wNzg5IDMwLjA0NzggMjcuNzEyNkMyOS44MzMgMjcuMzQ2NCAyOS43NTQ1IDI2LjkxNiAyOS44MjYzIDI2LjQ5NzVDMjkuODk4MSAyNi4wNzkgMzAuMTE1NiAyNS42OTkzIDMwLjQ0MDIgMjUuNDI1N0MzMC43NjQ4IDI1LjE1MiAzMS4xNzU4IDI1LjAwMTkgMzEuNjAwNCAyNS4wMDE5QzMyLjAyNSAyNS4wMDE5IDMyLjQzNTkgMjUuMTUyIDMyLjc2MDYgMjUuNDI1N0MzMy4wODUyIDI1LjY5OTMgMzMuMzAyNyAyNi4wNzkgMzMuMzc0NSAyNi40OTc1QzMzLjQ0NjMgMjYuOTE2IDMzLjM2NzggMjcuMzQ2NCAzMy4xNTMgMjcuNzEyNkMzMi45MzgxIDI4LjA3ODkgMzIuNjAwNyAyOC4zNTc0IDMyLjIwMDQgMjguNDk4OVYzMC43MDA5QzMyLjIwMDQgMzEuNDE3IDMxLjkxNTkgMzIuMTAzOCAzMS40MDk2IDMyLjYxMDFDMzAuOTAzMiAzMy4xMTY1IDMwLjIxNjUgMzMuNDAwOSAyOS41MDA0IDMzLjQwMDlIMjguNjAwNFYzMy4zOTk3Wk0yMy44MDA0IDI0LjQwMDlDMjMuODAwNCAyNC41NjAxIDIzLjg2MzYgMjQuNzEyNyAyMy45NzYxIDI0LjgyNTJDMjQuMDg4NiAyNC45Mzc3IDI0LjI0MTMgMjUuMDAwOSAyNC40MDA0IDI1LjAwMDlDMjQuNTU5NSAyNS4wMDA5IDI0LjcxMjEgMjQuOTM3NyAyNC44MjQ3IDI0LjgyNTJDMjQuOTM3MiAyNC43MTI3IDI1LjAwMDQgMjQuNTYwMSAyNS4wMDA0IDI0LjQwMDlDMjUuMDAwNCAyNC4yNDE4IDI0LjkzNzIgMjQuMDg5MiAyNC44MjQ3IDIzLjk3NjdDMjQuNzEyMSAyMy44NjQxIDI0LjU1OTUgMjMuODAwOSAyNC40MDA0IDIzLjgwMDlDMjQuMjQxMyAyMy44MDA5IDI0LjA4ODYgMjMuODY0MSAyMy45NzYxIDIzLjk3NjdDMjMuODYzNiAyNC4wODkyIDIzLjgwMDQgMjQuMjQxOCAyMy44MDA0IDI0LjQwMDlaTTMxLjYwMDQgMjcuNDAwOUMzMS43NTk1IDI3LjQwMDkgMzEuOTEyMSAyNy4zMzc3IDMyLjAyNDcgMjcuMjI1MkMzMi4xMzcyIDI3LjExMjcgMzIuMjAwNCAyNi45NjAxIDMyLjIwMDQgMjYuODAwOUMzMi4yMDA0IDI2LjY0MTggMzIuMTM3MiAyNi40ODkyIDMyLjAyNDcgMjYuMzc2N0MzMS45MTIxIDI2LjI2NDEgMzEuNzU5NSAyNi4yMDA5IDMxLjYwMDQgMjYuMjAwOUMzMS40NDEzIDI2LjIwMDkgMzEuMjg4NiAyNi4yNjQxIDMxLjE3NjEgMjYuMzc2N0MzMS4wNjM2IDI2LjQ4OTIgMzEuMDAwNCAyNi42NDE4IDMxLjAwMDQgMjYuODAwOUMzMS4wMDA0IDI2Ljk2MDEgMzEuMDYzNiAyNy4xMTI3IDMxLjE3NjEgMjcuMjI1MkMzMS4yODg2IDI3LjMzNzcgMzEuNDQxMyAyNy40MDA5IDMxLjYwMDQgMjcuNDAwOVpNMjQuNDAwNCAzMS4wMDA5QzI0LjI0MTMgMzEuMDAwOSAyNC4wODg2IDMxLjA2NDEgMjMuOTc2MSAzMS4xNzY3QzIzLjg2MzYgMzEuMjg5MiAyMy44MDA0IDMxLjQ0MTggMjMuODAwNCAzMS42MDA5QzIzLjgwMDQgMzEuNzYwMSAyMy44NjM2IDMxLjkxMjcgMjMuOTc2MSAzMi4wMjUyQzI0LjA4ODYgMzIuMTM3NyAyNC4yNDEzIDMyLjIwMDkgMjQuNDAwNCAzMi4yMDA5QzI0LjU1OTUgMzIuMjAwOSAyNC43MTIxIDMyLjEzNzcgMjQuODI0NyAzMi4wMjUyQzI0LjkzNzIgMzEuOTEyNyAyNS4wMDA0IDMxLjc2MDEgMjUuMDAwNCAzMS42MDA5QzI1LjAwMDQgMzEuNDQxOCAyNC45MzcyIDMxLjI4OTIgMjQuODI0NyAzMS4xNzY3QzI0LjcxMjEgMzEuMDY0MSAyNC41NTk1IDMxLjAwMDkgMjQuNDAwNCAzMS4wMDA5WlwiIGZpbGw9XCIjMDM5ODU1XCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VDRkRGM1wiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICB0aXRsZTogYERvbid0IHJ1biBBSSBvbiBpbWFnZSB1cGxvYWRlZGAsXHJcbiAgICAgICAgY29udGVudDogYERvIHlvdSB3aXNoIHRvIG5vdCBydW4gQUkgaW4gdGhlIGltYWdlP2AsXHJcbiAgICAgICAgYnV0dG9udHlwZTogJ2NvbmZpcm0nXHJcbiAgICAgIH1cclxuICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMucnVuQUlPZmYoc0lkeCxxSWR4LGZhbHNlLGFuc0lkeCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScpPy5wYXRjaFZhbHVlKHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScpPy5wYXRjaFZhbHVlKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBydW5BSU9mZihzSWR4OiBudW1iZXIsIHFJZHg6IG51bWJlciwgc2hvd0Vycm9yPzogYm9vbGVhbixhbnNJZHg6bnVtYmVyPS0xKSB7XHJcbiAgICBjb25zdCBhbnN3ZXJGb3JtR3JvdXAgPSB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk7XHJcbiAgICBpZiAoYW5zd2VyRm9ybUdyb3VwKSB7XHJcbiAgICAgIGFuc3dlckZvcm1Hcm91cC5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IHF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk7XHJcbiAgICBpZiAocXVlc3Rpb25Db250cm9sKSB7XHJcbiAgICAgIHF1ZXN0aW9uQ29udHJvbC5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuICBcclxuICAgIC8vIGNvbnNvbGUubG9nKHF1ZXN0aW9uQ29udHJvbCk7XHJcbiAgICBcclxuICAgIGNvbnN0IGRlc2NyaXB0aW9uQ29udHJvbCA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUlEZXNjcmlwdGlvbicsYW5zSWR4KTtcclxuICAgIGlmIChkZXNjcmlwdGlvbkNvbnRyb2wpIHtcclxuICAgICAgZGVzY3JpcHRpb25Db250cm9sLnBhdGNoVmFsdWUoJycpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgaWYgKHNob3dFcnJvcikge1xyXG4gICAgICB0aGlzLnN3YWxUb2FzdCgnVW5hYmxlIHRvIHByb2Nlc3MgcnVuQUkgcmVxdWVzdCEgVHJ5IGFnYWluIGFmdGVyIHNvbWUgdGltZSEnLCdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcbiAgZ2V0U2VjdGlvbkZvcm1BcnJheSgpIHtcclxuICAgIHJldHVybiAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUNvbnRyb2woZm9ybUNvbnRyb2w6IHN0cmluZykge1xyXG4gICAgcmV0dXJuICh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KGZvcm1Db250cm9sKSBhcyBGb3JtQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4OiBudW1iZXIsIGZvcm1Db250cm9sTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KGZvcm1Db250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGZvcm1Db250cm9sTmFtZTogc3RyaW5nLGFuc0lkeDpudW1iZXIgPSAtMSkge1xyXG4gICAgY29uc3Qgc2VjdGlvbnMgPSB0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICBpZiAoIXNlY3Rpb25zKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBzZWN0aW9ucy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICBpZiAoIXNlY3Rpb24pIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgY29uc3QgcXVlc3Rpb25zID0gc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICBpZiAoIXF1ZXN0aW9ucykgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBsZXQgcXVlc3Rpb24gPSBxdWVzdGlvbnMuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIGlmICghcXVlc3Rpb24pIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmKGFuc0lkeCAhPSAtMSkge1xyXG4gICAgICBsZXQgYW5zd2VyTGlzdCA9IHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICAgIGlmKCFhbnN3ZXJMaXN0KSByZXR1cm4gbnVsbDtcclxuICAgICAgcXVlc3Rpb24gPSBhbnN3ZXJMaXN0LmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgICAgaWYoIXF1ZXN0aW9uKSByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBxdWVzdGlvbi5nZXQoZm9ybUNvbnRyb2xOYW1lKSBhcyBGb3JtQ29udHJvbCB8IG51bGw7XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxuICB9XHJcbiAgXHJcblxyXG4gIGdldEZvcm1BcnJheVF1ZXN0aW9ucyhzZWN0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgLy8gaW5kaXZpZHVhbCBxdWVzdGlvblxyXG4gIGdldFF1ZXN0aW9uc0Zvcm1Hcm91cChzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtQXJyYXlRdWVzdGlvbnNBbnN3ZXIoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgZm9ybUFycmF5TmFtZTogc3RyaW5nLGFuc0luZGV4Om51bWJlciA9IC0xLGxpbmtxdWVzdGlvbkluZGV4Om51bWJlciA9IC0xKSB7XHJcbiAgICBsZXQgc2VjdGlvbiA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpPy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKChzZWN0aW9uLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KT8uYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGlmKGFuc0luZGV4ID09IC0xKSB7XHJcbiAgICAgIHJldHVybiAocXVlc3Rpb25zLmdldChmb3JtQXJyYXlOYW1lKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gKChxdWVzdGlvbnMuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KT8uYXQoYW5zSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgIGxldCBsaW5rZWRJbmRleCA9ICgoYW5zd2Vycy5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGxpbmtxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICByZXR1cm4gKGxpbmtlZEluZGV4LmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZvcm1BcnJheUxpbmtlZFF1ZXN0aW9ucyhzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLGFuc3dlckluZGV4Om51bWJlcikge1xyXG4gICAgbGV0IHNlY3Rpb24gPSAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KT8uYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICgoc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk/LmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBsZXQgYW5zd2VyID0gKHF1ZXN0aW9ucy5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpPy5hdChhbnN3ZXJJbmRleCkgYXMgRm9ybUdyb3VwO1xyXG4gICAgcmV0dXJuIChhbnN3ZXIuZ2V0KCdsaW5rUXVlc3Rpb25BbnN3ZXJzJykgYXMgRm9ybUFycmF5KVxyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25zRm9ybUFycmF5VmFsdWVzKHNlY3Rpb25JbmRleDogbnVtYmVyKTogYW55W10ge1xyXG4gICAgcmV0dXJuICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmdldFJhd1ZhbHVlKCkgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsYW5zSWR4Om51bWJlcj0gLTEpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgaWYgKCFzZWN0aW9ucykgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbnMuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGNvbnN0IHF1ZXN0aW9ucyA9IHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgaWYgKCFxdWVzdGlvbnMpIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgY29uc3QgcXVlc3Rpb24gPSBxdWVzdGlvbnMuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIGlmICghcXVlc3Rpb24pIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmKGZvcm1Db250cm9sTmFtZSA9PSAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpIHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHF1ZXN0aW9uLmdldChmb3JtQ29udHJvbE5hbWUpIGFzIEZvcm1Db250cm9sIHwgbnVsbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSBxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgICBpZiAoIWFuc3dlcnMpIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgICBpZihhbnNJZHggIT0gLTEpIHtcclxuICBcclxuICAgICAgICBsZXQgYW5zd2VyTGlzdCA9IHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICAgICAgaWYoIWFuc3dlckxpc3QpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGFuc3dlcnMgPSBhbnN3ZXJMaXN0LmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgICAgICBpZiAoIWFuc3dlcnMpIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBjb250cm9sID0gYW5zd2Vycy5nZXQoZm9ybUNvbnRyb2xOYW1lKSBhcyBGb3JtQ29udHJvbCB8IG51bGw7XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuICBcclxuICB9XHJcblxyXG4gIHJlbW92ZWROZXN0ZWRRdWVzdGlvbihzZWN0aW9uaW5kZXg6IG51bWJlcixxbm86YW55KSB7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25pbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVzdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheTtcclxuICAgICAgaWYoYW5zd2Vycykge1xyXG4gICAgICAgIGZvcihsZXQgaj0wO2o8YW5zd2Vycy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICBsZXQgbGlua2VkID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdzaG93TGlua2VkJyk/LnZhbHVlO1xyXG4gICAgICAgICAgaWYobGlua2VkKSB7XHJcbiAgICAgICAgICAgIGxldCBxdWVzdGlvbk5vID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgICAgICAgaWYocXVlc3Rpb25ObyA9PSBxbm8pIHtcclxuICAgICAgICAgICAgICAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKDApO1xyXG4gICAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnc2hvd0xpbmtlZCcpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVF1ZXN0aW9uUW5vcyhzZWN0aW9uaW5kZXg6IG51bWJlcikge1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uaW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGxldCBxdWVzdGlvbkFycmF5ID0gcXVlc3Rpb25zPy52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlc3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBxbm8gPSAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgncW5vJyk/LnZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmRlbGV0ZWRMaXN0LHFubylcclxuICAgICAgaWYoIXRoaXMuZGVsZXRlZExpc3QuaW5jbHVkZXMocW5vKSkge1xyXG4gICAgICAgIGZvcihsZXQgcW4gPSAwOyBxbiA8IHF1ZXN0aW9uQXJyYXkubGVuZ3RoIDtxbisrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHF1ZXN0aW9uQXJyYXlbcW5dO1xyXG4gICAgICAgICAgaWYgKCFbJ2Rlc2NyaXB0aXZlJywgJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCAnbXVsdGlwbGVJbWFnZScsICd2aWRlbycsJ2xpbmVhcnNjYWxlJywndGltZScsJ2RhdGUnXS5pbmNsdWRlcyhpdGVtLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIGxldCBmaW5kSW5kZXggPSBpdGVtLmFuc3dlcnMubWFwKChpdGVtOmFueSwgaW5kZXg6YW55KSA9PiAoaXRlbS5saW5rZWRRdWVzdGlvbiA9PSBxbm8gPyBpbmRleCA6IC0xKSkuZmlsdGVyKChpbmRleDphbnkpID0+IGluZGV4ICE9PSAtMSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbmRJbmRleCwnaW5kZXgnKVxyXG4gICAgICAgICAgICBpZihmaW5kSW5kZXgubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgZmluZEluZGV4LmZvckVhY2goKGlkeDpudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGlkeCxpLCdpJylcclxuICAgICAgICAgICAgICAgIGl0ZW0uYW5zd2Vyc1tpZHhdLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgKCgocXVlc3Rpb25zLmF0KHFuKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGlkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKGkrMSk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBsZXQgZmluZEFuc0lkeCA9IGl0ZW0uYW5zd2Vycy5maW5kSW5kZXgoKGVsZTphbnkpID0+IGVsZS5saW5rZWRRdWVzdGlvbiA9PSBxbm8gJiYgIWl0ZW0uY2hlY2tlZCk7XHJcbiAgICAgICAgICAgIC8vIGlmKGZpbmRBbnNJZHggIT0gLTEpIHtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgncW5vJyk/LnNldFZhbHVlKGkrMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25zQW5zd2VyRm9ybUdyb3VwKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsYW5zSW5kZXg6bnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0luZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZlUXVlc3Rpb24oc2VjSWR4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYWN0aXZlc3RhdHVzOiBudW1iZXIsYW5zd2VySW5kZXg6bnVtYmVyID0gLTEpIHtcclxuICAgIGlmKGFjdGl2ZXN0YXR1cyA9PSAxKSB7XHJcbiAgICAgIGlmKGFuc3dlckluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5nZXRRdWVzdGlvbnNBbnN3ZXJGb3JtR3JvdXAoc2VjSWR4LHF1ZXN0aW9uSW5kZXgsYW5zd2VySW5kZXgpLmFkZENvbnRyb2woJ2FjdGl2ZScsdGhpcy5mYi5jb250cm9sKHRydWUpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldFF1ZXN0aW9uc0Zvcm1Hcm91cChzZWNJZHgscXVlc3Rpb25JbmRleCkuYWRkQ29udHJvbCgnYWN0aXZlJyx0aGlzLmZiLmNvbnRyb2wodHJ1ZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYoYW5zd2VySW5kZXggIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmdldFF1ZXN0aW9uc0Fuc3dlckZvcm1Hcm91cChzZWNJZHgscXVlc3Rpb25JbmRleCxhbnN3ZXJJbmRleCkucmVtb3ZlQ29udHJvbCgnYWN0aXZlJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRRdWVzdGlvbnNGb3JtR3JvdXAoc2VjSWR4LHF1ZXN0aW9uSW5kZXgpLnJlbW92ZUNvbnRyb2woJ2FjdGl2ZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWxsb3dBZGRBbnN3ZXIoYW5zd2VyczogYW55W10pIHtcclxuICAgIHJldHVybiBhbnN3ZXJzLmxlbmd0aCA8IDMwO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25MaXN0KHNlY0lkeDpudW1iZXIscW50SWR4Om51bWJlcixhbnNJZHg6bnVtYmVyKSB7XHJcbiAgICAvLyBmb3IobGV0IGFuc3dlciBvZiBxdWVzdGlvbj8uYW5zd2Vycykge1xyXG4gICAgLy8gICAgICAgICBpZigoYW5zd2VyLmxpbmtlZFF1ZXN0aW9uICYmIGFuc3dlci5saW5rZWRRdWVzdGlvbiA9PSBgJHtxdWVzdGlvbi5xbm99YCAmJiBxdWVzdGlvbi5xbm8gPT0gKHFudElkeCsxKSkgfHwgKCFhbnN3ZXIubGlua2VkUXVlc3Rpb24ubGVuZ3RoICYmIHF1ZXN0aW9uLnFubyAhPSAocW50SWR4KzEpKSkge1xyXG4gICAgLy8gICAgICAgICAgICAgcXVlc3Rpb25MaXN0LnB1c2gocXVlc3Rpb24ucW5vKVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICBsZXQgcXVlc3Rpb25EZXRhaWxzID0gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuZ2V0UmF3VmFsdWUoKSB8fCBbXTtcclxuXHJcbiAgICBsZXQgZ2V0UXVlc3Rpb24gPSggKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW50SWR4KSBhcyBGb3JtR3JvdXApLnZhbHVlO1xyXG5cclxuICAgIGxldCBxdWVzdGlvbkxpc3Q6YW55ID0gW107XHJcbiAgICBsZXQgcGFyZW50TGlua2VkUXVlc3Rpb246YW55ID0gW107XHJcbiAgICAvLyBsZXQgbGlua2VkUXVlc3Rpb25zOmFueSA9IFtdO1xyXG4gICAgaWYocXVlc3Rpb25EZXRhaWxzLmxlbmd0aCkge1xyXG4gICAgICAvLyBmb3IobGV0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9uRGV0YWlscykge1xyXG4gICAgICAvLyAgIGlmKHF1ZXN0aW9uLmFuc3dlcnMpIHtcclxuICAgICAgLy8gICAgIGlmKFsndmlkZW8nLCdpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnLCd0aW1lJywnZGF0ZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgIC8vICAgICAgIHF1ZXN0aW9uLmFuc3dlcnMgPSBbcXVlc3Rpb24uYW5zd2Vyc107XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgICAgZm9yKGxldCBbaW5kZXgsYW5zd2VyXSBvZiBxdWVzdGlvbi5hbnN3ZXJzLmVudHJpZXMoKSkge1xyXG4gICAgICAvLyAgICAgICBpZihhbnN3ZXI/LmxpbmtlZFF1ZXN0aW9uKSB7XHJcbiAgICAgIC8vICAgICAgICAgbGlua2VkUXVlc3Rpb25zLnB1c2goe1xyXG4gICAgICAvLyAgICAgICAgICAgcW5vOnF1ZXN0aW9uLnFubyxcclxuICAgICAgLy8gICAgICAgICAgIGFuc0lkeDppbmRleCxcclxuICAgICAgLy8gICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOnBhcnNlSW50KGFuc3dlci5saW5rZWRRdWVzdGlvbilcclxuICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAvLyAgICAgICB9XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIHF1ZXN0aW9uRGV0YWlscyA9IHF1ZXN0aW9uRGV0YWlscy5maWx0ZXIoKGl0ZW06YW55KSA9PiBpdGVtLnFubyAhPSAocW50SWR4KzEpKTtcclxuXHJcbiAgICAgIGZ1bmN0aW9uIGZpbmRuZXN0ZWRQYXJlbnRMaW5rKHFubzphbnkpIHtcclxuICAgICAgICBmb3IobGV0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9uRGV0YWlscykge1xyXG4gICAgICAgICAgaWYocXVlc3Rpb24/LmFuc3dlcnMgJiYgQXJyYXkuaXNBcnJheShxdWVzdGlvbj8uYW5zd2VycykpIHtcclxuICAgICAgICAgICAgbGV0IGxpbmtlZFFuID0gcXVlc3Rpb24/LmFuc3dlcnM/LmZpbHRlcigoaXRlbTphbnkpID0+IHFubyA9PSBpdGVtLmxpbmtlZFF1ZXN0aW9uKTtcclxuICAgICAgICAgICAgaWYobGlua2VkUW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgcGFyZW50TGlua2VkUXVlc3Rpb24ucHVzaChxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgICAgIGlmKHF1ZXN0aW9uLmxpbmtUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBmaW5kbmVzdGVkUGFyZW50TGluayhxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yKGxldCBxdWVzdGlvbiBvZiBxdWVzdGlvbkRldGFpbHMpIHtcclxuICAgICAgICBpZihxdWVzdGlvbj8uYW5zd2VycyAmJiBBcnJheS5pc0FycmF5KHF1ZXN0aW9uPy5hbnN3ZXJzKSkge1xyXG4gICAgICAgICAgaWYoZ2V0UXVlc3Rpb24ucW5vICE9IHF1ZXN0aW9uLnFubyl7XHJcbiAgICAgICAgICAgIGxldCBsaW5rZWRRbnMgPSBxdWVzdGlvbj8uYW5zd2Vycz8uZmlsdGVyKChpdGVtOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKGl0ZW0/LmxpbmtlZFF1ZXN0aW9uICYmIGl0ZW0/LmxpbmtlZFF1ZXN0aW9uID09IGdldFF1ZXN0aW9uPy5xbm8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgaWYobGlua2VkUW5zLmxlbmd0aCApIHtcclxuICAgICAgICAgICAgICBwYXJlbnRMaW5rZWRRdWVzdGlvbi5wdXNoKHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICAgICAgZmluZG5lc3RlZFBhcmVudExpbmsocXVlc3Rpb24ucW5vKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGxldCBmaW5kRXhpc3RzID0gbGlua2VkUXVlc3Rpb25zLmZpbmQoKGl0ZW06YW55KSA9PiAgaXRlbS5xbm8gPT0gcXVlc3Rpb24ucW5vICYmIGl0ZW0uYW5zSWR4ID09IGFuc0lkeCAmJiBpdGVtLnFubyA9PSAocW50SWR4KzEpKTtcclxuICAgICAgICAgIC8vIGxldCBjaGVja0xpbmtlZCA9IGxpbmtlZFF1ZXN0aW9ucy5maW5kKChpdGVtOmFueSkgPT4gaXRlbS5saW5rZWRRdWVzdGlvbiA9PSBxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgICAvLyBpZighY2hlY2tMaW5rZWQgJiYgcXVlc3Rpb24ucW5vICE9IChxbnRJZHgrMSkgJiYgIXF1ZXN0aW9uTGlzdC5pbmNsdWRlcyhxdWVzdGlvbi5xbm8pKSB7XHJcbiAgICAgICAgICBpZihxdWVzdGlvbi5xbm8gIT0gKHFudElkeCsxKSAmJiAhcXVlc3Rpb25MaXN0LmluY2x1ZGVzKHF1ZXN0aW9uLnFubykpIHtcclxuICAgICAgICAgICAgcXVlc3Rpb25MaXN0LnB1c2gocXVlc3Rpb24ucW5vKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAvLyBsZXQgZmluZEV4aXN0cyA9IGxpbmtlZFF1ZXN0aW9ucy5maW5kKChpdGVtOmFueSkgPT4gIGl0ZW0ubGlua2VkUXVlc3Rpb24gPT0gcXVlc3Rpb24ucW5vKTtcclxuICAgICAgICAgIC8vIGlmKCFmaW5kRXhpc3RzICYmIHF1ZXN0aW9uLnFubyAhPSAocW50SWR4KzEpICYmICFxdWVzdGlvbkxpc3QuaW5jbHVkZXMocXVlc3Rpb24ucW5vKSkge1xyXG4gICAgICAgICAgaWYocXVlc3Rpb24ucW5vICE9IChxbnRJZHgrMSkgJiYgIXF1ZXN0aW9uTGlzdC5pbmNsdWRlcyhxdWVzdGlvbi5xbm8pKSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uTGlzdC5wdXNoKHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcXVlc3Rpb25MaXN0LmZpbHRlcigoZWxlOmFueSkgPT4gIXBhcmVudExpbmtlZFF1ZXN0aW9uLmluY2x1ZGVzKGVsZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlua2VkKHNlY0lkeDpudW1iZXIscW5JZHg6bnVtYmVyLGFuc0lkeDpudW1iZXIpIHtcclxuICAgIGxldCBsaW5rVmFsdWUgPSAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWU7XHJcbiAgICBpZihsaW5rVmFsdWUpIHtcclxuICAgICAgbGV0IGxpbmtlZFF1ZXN0aW9uID0gKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgbGV0IGNvdW50ID0gMDtcclxuICAgICAgbGV0IHF1ZXN0aW9ucyA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgICBxdWVzdGlvbnMudmFsdWUuZm9yRWFjaCgocW46YW55KSA9PiB7XHJcbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShxbi5hbnN3ZXJzKSkge1xyXG4gICAgICAgICAgcW4uYW5zd2Vycy5mb3JFYWNoKChhbnM6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaW5kTGlua2VkUXVlc3Rpb24gPSBxbi5hbnN3ZXJzLm1hcCgoZWxlOmFueSkgPT4gZWxlLmxpbmtlZFF1ZXN0aW9uKTtcclxuICAgICAgICAgICAgaWYoYW5zLnNob3dMaW5rZWQgJiYgYW5zLmxpbmtlZFF1ZXN0aW9uID09IGxpbmtlZFF1ZXN0aW9uICYmIChxbi5xbm8tMSAhPSBxbklkeCB8fCAocW4ucW5vLTEgPT0gcW5JZHggfHwgZmluZExpbmtlZFF1ZXN0aW9uLmluY2x1ZGVzKHFuLnFubykpKSkge1xyXG4gICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBpZihsaW5rZWRRdWVzdGlvbiAmJiAhY291bnQpIHtcclxuICAgICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQobGlua2VkUXVlc3Rpb24gLSAxKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIWxpbmtWYWx1ZSkge1xyXG4gICAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3ZhbGlkYXRpb24nKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNsZWFyUmVmZXJlbmNlSW1hZ2Uoc2VjSWR4LHFuSWR4LGFuc0lkeCk7XHJcbiAgICB9XHJcblxyXG4gICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdzaG93TGlua2VkJyk/LnNldFZhbHVlKCFsaW5rVmFsdWUpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVRdWVzdGlvblR5cGUoc2VjSWR4Om51bWJlcixxbklkeDpudW1iZXIsYW5zSWR4Om51bWJlcixldmVudDphbnkpIHtcclxuICAgIGxldCBsaW5rZWRRdWVzdGlvbiA9ICgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWU7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgcXVlc3Rpb25zLnZhbHVlLmZvckVhY2goKHFuOmFueSkgPT4ge1xyXG4gICAgICBpZihBcnJheS5pc0FycmF5KHFuLmFuc3dlcnMpKSB7XHJcbiAgICAgICAgcW4uYW5zd2Vycy5mb3JFYWNoKChhbnM6YW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgZmluZExpbmtlZFF1ZXN0aW9uID0gcW4uYW5zd2Vycy5tYXAoKGVsZTphbnkpID0+IGVsZS5saW5rZWRRdWVzdGlvbik7XHJcbiAgICAgICAgICBpZihhbnMuc2hvd0xpbmtlZCAmJiBhbnMubGlua2VkUXVlc3Rpb24gPT0gbGlua2VkUXVlc3Rpb24gJiYgKHFuLnFuby0xICE9IHFuSWR4IHx8IChxbi5xbm8tMSA9PSBxbklkeCB8fCBmaW5kTGlua2VkUXVlc3Rpb24uaW5jbHVkZXMocW4ucW5vKSkpKSB7XHJcbiAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmKGxpbmtlZFF1ZXN0aW9uICYmICFjb3VudCkge1xyXG4gICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQobGlua2VkUXVlc3Rpb24gLSAxKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSkgLSAxO1xyXG4gICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShwYXJzZUludChldmVudC50YXJnZXQudmFsdWUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKDApO1xyXG4gICAgICAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3Nob3dMaW5rZWQnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3B0aW9uKHFubzphbnksYW5zTGlua2VkOmFueSkge1xyXG4gICAgcmV0dXJuIHFubyA9PSBhbnNMaW5rZWQgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbk5hbWUoc2VjSWR4Om51bWJlcixxSWR4Om51bWJlcikge1xyXG4gICAgcmV0dXJuICgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocUlkeC0xKSBhcyBGb3JtR3JvdXApLmdldCgncW5hbWUnKT8udmFsdWU7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nSWY9XCJjaGVja2xpc3RMb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCIhY2hlY2tsaXN0TG9hZGluZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiQ2hlY2tsaXN0Rm9ybVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtMyBwYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtY2VudGVyIG10LTMgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2NoZWNrbGlzdFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZSBtZS01IHBzLTIgcHgtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuODMzMiAxMC4wMDAzSDQuMTY2NU00LjE2NjUgMTAuMDAwM0w5Ljk5OTg0IDE1LjgzMzdNNC4xNjY1IDEwLjAwMDNMOS45OTk4NCA0LjE2Njk5XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW4gdy04MDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0YWJsZWNvbnRlbnQgbWItNCB3LTEwMFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiY2hlY2tsaXN0IHBsYWluLWlucHV0XCIgI2NoZWNrbGlzdE5hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciBDaGVja2xpc3QgTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cImNoZWNrbGlzdE5hbWVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdGFibGVjb250ZW50IHctMTAwXCI+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJjaGVja2xpc3REZXNjcmlwdGlvbiBwbGFpbi1pbnB1dFwiICNjaGVja2xpc3REZXNjcmlwdGlvbiBwbGFjZWhvbGRlcj1cIkVudGVyIENoZWNrbGlzdCBEZXNjcmlwdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImNoZWNrbGlzdERlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteS02IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3d2YWx1ZSA9PT0gJ2FkZCdcIiAoY2xpY2spPVwic2F2ZUNoZWNrbGlzdFF1ZXN0aW9ucygnY29uZmlndXJlJylcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5Db25maWd1cmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3d2YWx1ZSA9PT0gJ2FkZCdcIiAoY2xpY2spPVwic2F2ZUFzRHJhZnRQb3AoJ2NyZWF0ZScpXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+U2F2ZSBhcyBEcmFmdDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3d2YWx1ZSA9PT0gJ2VkaXQnXCIgKGNsaWNrKT1cInVwZGF0ZUNoZWNrbGlzdFF1ZXN0aW9ucygnY29uZmlndXJlJylcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5Db25maWd1cmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93dmFsdWUgPT09ICdlZGl0J1wiIChjbGljayk9XCJzYXZlQXNEcmFmdFBvcCgndXBkYXRlJylcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5TYXZlIGFzIERyYWZ0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiQ2hlY2tsaXN0Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tbGVmdCBjYXJkIHB4LTcgcHktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xOHB4IGZ3LTYwMCB0ZXh0LWxlZnQgbWItMyBjb25jaXNlLWNoZWNrbGlzdG5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRGb3JtQ29udHJvbCgnY2hlY2tsaXN0TmFtZScpLnZhbHVlID8gZ2V0Rm9ybUNvbnRyb2woJ2NoZWNrbGlzdE5hbWUnKS52YWx1ZSA6ICdDaGVja2xpc3ROYW1lJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcGFuZWwtY29udGFpbmVyXCIgZm9ybUFycmF5TmFtZT1cInNlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmNvbnRyb2xzO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBzZWN0aW9uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMThweCBmdy1ib2xkIGVkaXRhYmxlY29udGVudC1sZWZ0XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlY3Rpb25Gb3JtQ29udHJvbChpLCduYW1lJyk/LnZhbHVlID09PSAnJyA/IFwiU2VjdGlvbiBcIiA6ICcnfX17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2VjdGlvbkZvcm1Db250cm9sKGksJ25hbWUnKT8udmFsdWUgPyBnZXRTZWN0aW9uRm9ybUNvbnRyb2woaSwnbmFtZScpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRTZWN0aW9uRm9ybUNvbnRyb2woaSwnc2VjdGlvbk51bWJlcicpPy52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiZGVsZXRlU2VjdGlvbihpKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjM1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM1XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIG1hdFRvb2x0aXA9XCJEZWxldGUgc2VjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjI1IDQuNUgzLjc1TTMuNzUgNC41SDE1Ljc1TTMuNzUgNC41VjE1QzMuNzUgMTUuMzk3OCAzLjkwODA0IDE1Ljc3OTQgNC4xODkzNCAxNi4wNjA3QzQuNDcwNjQgMTYuMzQyIDQuODUyMTggMTYuNSA1LjI1IDE2LjVIMTIuNzVDMTMuMTQ3OCAxNi41IDEzLjUyOTQgMTYuMzQyIDEzLjgxMDcgMTYuMDYwN0MxNC4wOTIgMTUuNzc5NCAxNC4yNSAxNS4zOTc4IDE0LjI1IDE1VjQuNUgzLjc1Wk02IDQuNVYzQzYgMi42MDIxOCA2LjE1ODA0IDIuMjIwNjQgNi40MzkzNCAxLjkzOTM0QzYuNzIwNjQgMS42NTgwNCA3LjEwMjE4IDEuNSA3LjUgMS41SDEwLjVDMTAuODk3OCAxLjUgMTEuMjc5NCAxLjY1ODA0IDExLjU2MDcgMS45MzkzNEMxMS44NDIgMi4yMjA2NCAxMiAyLjYwMjE4IDEyIDNWNC41TTcuNSA4LjI1VjEyLjc1TTEwLjUgOC4yNVYxMi43NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImFjY29yZGlhbihpKVwiIFtuZ0NsYXNzXT1cInsncm90YXRlJyA6IHNob3cgIT09IGl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgNy41TDEwIDEyLjVMMTUgNy41XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93PT09aVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJhZ0Ryb3AoaSwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZ2V0Rm9ybUFycmF5UXVlc3Rpb25zKGkpLmNvbnRyb2xzXCIgY2xhc3M9XCJxdWVzdGlvbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJxdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBnZXRGb3JtQXJyYXlRdWVzdGlvbnMoaSkuY29udHJvbHM7bGV0IGo9aW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0yIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicXVlc3Rpb24uZ2V0KCdhY3RpdmUnKT8udmFsdWUgPT09IHRydWUgPyAnYWN0aXZlLXF1ZXN0aW9uJyA6ICdxLWJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnIChtb3VzZWVudGVyKT1cInNldEFjdGl2ZVF1ZXN0aW9uKGksaiwxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb1F1ZXN0aW9uKGksaik7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwic2V0QWN0aXZlUXVlc3Rpb24oaSxqLC0xKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBOYW1lXT1cImpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25jaXNlLXF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRRdWVzdGlvbkZvcm1Db250cm9sKGksaiwncW5hbWUnKT8udmFsdWUgPyAnJyA6IFwiUXVlc3Rpb25cIn19e3sgZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChpLGosJ3FuYW1lJyk/LnZhbHVlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRRdWVzdGlvbkZvcm1Db250cm9sKGksaiwncW5hbWUnKT8udmFsdWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFF1ZXN0aW9uRm9ybUNvbnRyb2woaSxqLCdxbm8nKT8udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBtdC0yXCI+XHJcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiQ2hlY2tsaXN0Rm9ybVwiICNmb3JtUmVmPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcHgtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdC0yXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBjaGVja2xpc3QgbmFtZSBoZXJlXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2hlY2tsaXN0TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm10LTRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGNoZWNrbGlzdCBkZXNjcmlwdGlvbiBoZXJlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNoZWNrbGlzdERlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInNlY3Rpb25zXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbkFyZWEgbXQtNVwiICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGdldFNlY3Rpb25Gb3JtQXJyYXkoKS5jb250cm9scztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMThweCBmdy1ib2xkIGVkaXRhYmxlY29udGVudFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwicGxhaW4taW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWN0aW9uTmFtZSAoY2hhbmdlKT1cInVwZGF0ZUlucHV0VmFsdWUoaSxzZWN0aW9uTmFtZS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibWwtNVwiIChjbGljayk9XCJkZWxldGVTZWN0aW9uKGkpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBtYXRUb29sdGlwPVwiRGVsZXRlIHNlY3Rpb25cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMjUgNC41SDMuNzVNMy43NSA0LjVIMTUuNzVNMy43NSA0LjVWMTVDMy43NSAxNS4zOTc4IDMuOTA4MDQgMTUuNzc5NCA0LjE4OTM0IDE2LjA2MDdDNC40NzA2NCAxNi4zNDIgNC44NTIxOCAxNi41IDUuMjUgMTYuNUgxMi43NUMxMy4xNDc4IDE2LjUgMTMuNTI5NCAxNi4zNDIgMTMuODEwNyAxNi4wNjA3QzE0LjA5MiAxNS43Nzk0IDE0LjI1IDE1LjM5NzggMTQuMjUgMTVWNC41SDMuNzVaTTYgNC41VjNDNiAyLjYwMjE4IDYuMTU4MDQgMi4yMjA2NCA2LjQzOTM0IDEuOTM5MzRDNi43MjA2NCAxLjY1ODA0IDcuMTAyMTggMS41IDcuNSAxLjVIMTAuNUMxMC44OTc4IDEuNSAxMS4yNzk0IDEuNjU4MDQgMTEuNTYwNyAxLjkzOTM0QzExLjg0MiAyLjIyMDY0IDEyIDIuNjAyMTggMTIgM1Y0LjVNNy41IDguMjVWMTIuNzVNMTAuNSA4LjI1VjEyLjc1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiYWNjb3JkaWFuKGkpXCIgW25nQ2xhc3NdPVwieydyb3RhdGUnIDogc2hvdyAhPT0gaX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA3LjVMMTAgMTIuNUwxNSA3LjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uc0FyZWFcIiAqbmdJZj1cInNob3cgPT09IGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwicXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUXVlc3Rpb24tc2VjIG10LTEwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zKGkpLmNvbnRyb2xzO2xldCBqID0gaW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzZXRBY3RpdmVRdWVzdGlvbihpLGosMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInNldEFjdGl2ZVF1ZXN0aW9uKGksaiwtMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBOYW1lXT1cImpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xOHB4IHB4LTMgZWRpdGFibGVjb250ZW50IHF1ZXN0aW9udGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IGRlZmF1bHQ7XCI+IFF1ZXN0aW9uIHt7aisxfX08L3NwYW4+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHBiLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWRcIiByb3dzPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBjbGFzcz1cIm10LTBcIiBbaWRdPVwiJ3EtJyArIGkgKyAnLScgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHF1ZXN0aW9uIGhlcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInFuYW1lXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmdldCgncW5hbWUnKT8uaW52YWxpZCAmJiBxdWVzdGlvbi5nZXQoJ3FuYW1lJyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImNvbG9yOiByZWQ7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ3FuYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+KlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBpcyByZXF1aXJlZC48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFbJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdpbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWZfaW1nX2NvbnQgbWItNCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIzMDBweFwiIGNsYXNzPVwiYXV0by1hZGp1c3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJUYW5nbyBFeWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZfZGVsX2ljb25cIiAoY2xpY2spPVwiY2xlYXJSZWZlcmVuY2VJbWFnZShpLGopO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDUuMDAxM0g0LjE2NjY3TTQuMTY2NjcgNS4wMDEzSDE3LjVNNC4xNjY2NyA1LjAwMTNWMTYuNjY4QzQuMTY2NjcgMTcuMTEgNC4zNDIyNiAxNy41MzM5IDQuNjU0ODIgMTcuODQ2NUM0Ljk2NzM4IDE4LjE1OSA1LjM5MTMxIDE4LjMzNDYgNS44MzMzMyAxOC4zMzQ2SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzQ2IDE1LjAzMjYgMTguMTU5IDE1LjM0NTIgMTcuODQ2NUMxNS42NTc3IDE3LjUzMzkgMTUuODMzMyAxNy4xMSAxNS44MzMzIDE2LjY2OFY1LjAwMTNINC4xNjY2N1pNNi42NjY2NyA1LjAwMTNWMy4zMzQ2NEM2LjY2NjY3IDIuODkyNjEgNi44NDIyNiAyLjQ2ODY4IDcuMTU0ODIgMi4xNTYxMkM3LjQ2NzM4IDEuODQzNTYgNy44OTEzMSAxLjY2Nzk3IDguMzMzMzMgMS42Njc5N0gxMS42NjY3QzEyLjEwODcgMS42Njc5NyAxMi41MzI2IDEuODQzNTYgMTIuODQ1MiAyLjE1NjEyQzEzLjE1NzcgMi40Njg2OCAxMy4zMzMzIDIuODkyNjEgMTMuMzMzMyAzLjMzNDY0VjUuMDAxM004LjMzMzMzIDkuMTY3OTdWMTQuMTY4TTExLjY2NjcgOS4xNjc5N1YxNC4xNjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNCNDIzMThcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBidG4tbGlnaHQtcHJpbWFyeSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIFtpZF09XCInZmlsZXVwbG9hZF8nK2kralwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhbnN3ZXJGaWxlXCIgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50LC0xLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2ZpbGV1cGxvYWRfJytpK2pcIiAoY2xpY2spPVwicmVmSW1nUUlkeD1qO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDA4Ml8zMTIyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOS42NjY3IDMuMzM1MjdWOC4zMzUyN00xOS42NjY3IDguMzM1MjdIMTQuNjY2N00xOS42NjY3IDguMzM1MjdMMTUuOCA0LjcwMTkzQzE0LjkwNDQgMy44MDU4NiAxMy43OTY0IDMuMTUxMjcgMTIuNTc5MyAyLjc5OTI1QzExLjM2MjMgMi40NDcyMiAxMC4wNzU5IDIuNDA5MjMgOC44NDAyNSAyLjY4ODgyQzcuNjA0NTYgMi45Njg0MSA2LjQ1OTg0IDMuNTU2NDYgNS41MTI5IDQuMzk4MTJDNC41NjU5NSA1LjIzOTc3IDMuODQ3NjUgNi4zMDc1OSAzLjQyNTAxIDcuNTAxOTNNMS4zMzMzNCAxNi42Njg2VjExLjY2ODZNMS4zMzMzNCAxMS42Njg2SDYuMzMzMzRNMS4zMzMzNCAxMS42Njg2TDUuMjAwMDEgMTUuMzAxOUM2LjA5NTYzIDE2LjE5OCA3LjIwMzY1IDE2Ljg1MjYgOC40MjA2OCAxNy4yMDQ2QzkuNjM3NzEgMTcuNTU2NyAxMC45MjQxIDE3LjU5NDYgMTIuMTU5OCAxNy4zMTUxQzEzLjM5NTUgMTcuMDM1NSAxNC41NDAyIDE2LjQ0NzQgMTUuNDg3MSAxNS42MDU4QzE2LjQzNDEgMTQuNzY0MSAxNy4xNTI0IDEzLjY5NjMgMTcuNTc1IDEyLjUwMTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDgyXzMxMjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlJldXBsb2FkIEltYWdlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBhZGQtcmVmLWJ0biBidG4tbGlnaHQtcHJpbWFyeSBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIFtpZF09XCInZmlsZXVwbG9hZF8nK2kralwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmaWxlXCIgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50LC0xLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicG9pbnRlclwiIFtmb3JdPVwiJ2ZpbGV1cGxvYWRfJytpK2pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj4gPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgNC4xNjc5N1YxNS44MzQ2TTQuMTY2NjkgMTAuMDAxM0gxNS44MzM0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+QWRkIFJlZmVyZW5jZSBJbWFnZSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcGItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cIm10LTVcIiBuYW1lPVwic2VsZWN0b3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFuc3dlclR5cGVTZWxlY3Rpb24oaSxqLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJkZXNjcmlwdGl2ZVwiIHZhbHVlPVwiZGVzY3JpcHRpdmVcIj5EZXNjcmlwdGl2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJ5ZXMvbm9cIiB2YWx1ZT1cInllcy9ub1wiPkEvQiBRdWVzdGlvbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cIm11bHRpcGxlY2hvaWNlc2luZ2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiPk11bHRpcGxlIENob2ljZSBRdWVzdGlvbiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZSBBbnN3ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCI+TXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlwbGUgQW5zd2VyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwiZGVzY3JpcHRpdmVJbWFnZVwiIHZhbHVlPVwiZGVzY3JpcHRpdmVJbWFnZVwiPkNhcHR1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2Ugd2l0aCBEZXNjcmlwdGlvbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImltYWdlXCIgdmFsdWU9XCJpbWFnZVwiPkNhcHR1cmUgSW1hZ2UgYXMgYW5zd2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwidmlkZW9cIiB2YWx1ZT1cInZpZGVvXCI+Q2FwdHVyZSB2aWRlbyBhcyBhbnN3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJtdWx0aXBsZUltYWdlXCIgdmFsdWU9XCJtdWx0aXBsZUltYWdlXCI+Q2FwdHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSBJbWFnZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImRhdGVcIiB2YWx1ZT1cImRhdGVcIj5EYXRlIC0gREQvTU0vWVlZWTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImxpbmVhcnNjYWxlXCIgdmFsdWU9XCJsaW5lYXJzY2FsZVwiPkxpbmVhciBTY2FsZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cInRpbWVcIiB2YWx1ZT1cInRpbWVcIj5UaW1lPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIG14LTQgZC1mbGV4IG10LTNcIiAqbmdJZj1cIlsnZGVzY3JpcHRpdmUnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJ0ZXh0XCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIiBbaWRdPVwiJ2lubGluZVJhZGlvMCcrIGkgKyBqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzAnKyBpICsgalwiPlRleHQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwibnVtYmVyXCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIiBbaWRdPVwiJ2lubGluZVJhZGlvMScrIGkgKyBqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiAgW2Zvcl09XCInaW5saW5lUmFkaW8xJytpICsgalwiPk51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAneWVzL25vJyB8fCBxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScgfHwgcXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VtdWx0aXBsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xOHB4IGZ3LWJvbGRlclwiIHN0eWxlPVwiY3Vyc29yOiBkZWZhdWx0O1wiPkFuc3dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImFuc3dlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zQW5zd2VyKGksaiwnYW5zd2VycycpPy5jb250cm9scztsZXQgayA9IGluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2Zvcm1Hcm91cE5hbWVdPVwia1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhbnN3ZXIuZ2V0KCdpc2RlbGV0ZWQnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgQW5zd2VyMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcGItMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm10LTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgYW5zd2VyIGhlcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2bFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ3llcy9ubycgfHwgcXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmwyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJpbWdBZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUxpbmtlZChpLGosaylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk5OSA0LjE2NjAyVjE1LjgzMjdNNC4xNjY2NiA5Ljk5OTM1SDE1LjgzMzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdhbnN3ZXInKT8uaW52YWxpZCAmJiBhbnN3ZXIuZ2V0KCdhbnN3ZXInKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ2Fuc3dlcicpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEFuc3dlciBpcyByZXF1aXJlZC48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnc2hvd1NPUEZsYWdFcnJvcicpPy52YWx1ZSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZXJ5IGFuc3dlciBjYW7igJl0IGJlIGEgZmxhZy48L3A+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUNvbnRyb2xOYW1lPVwic29wRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cInJhaXNlZmxhZyhpLGosayx0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJSYWlzZSBhIGZsYWcgaWYgdGhpcyBhbnN3ZXIgaXMgc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdzb3BGbGFnJyk/LnZhbHVlID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2l3aVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNjY2NjkgMTAuMDAwN0MyLjY2NjY5IDEwLjAwMDcgMy4zMzMzNSA5LjMzMzk4IDUuMzMzMzUgOS4zMzM5OEM3LjMzMzM1IDkuMzMzOTggOC42NjY2OSAxMC42NjczIDEwLjY2NjcgMTAuNjY3M0MxMi42NjY3IDEwLjY2NzMgMTMuMzMzNCAxMC4wMDA3IDEzLjMzMzQgMTAuMDAwN1YyLjAwMDY1QzEzLjMzMzQgMi4wMDA2NSAxMi42NjY3IDIuNjY3MzIgMTAuNjY2NyAyLjY2NzMyQzguNjY2NjkgMi42NjczMiA3LjMzMzM1IDEuMzMzOTggNS4zMzMzNSAxLjMzMzk4QzMuMzMzMzUgMS4zMzM5OCAyLjY2NjY5IDIuMDAwNjUgMi42NjY2OSAyLjAwMDY1VjEwLjAwMDdaTTIuNjY2NjkgMTAuMDAwN1YxNC42NjczXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cInJhaXNlZmxhZyhpLGosayxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUmFpc2UgYSBmbGFnIGlmIHRoaXMgYW5zd2VyIGlzIHNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnc29wRmxhZycpPy52YWx1ZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlLWZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjY2NjY5IDEwLjAwMDdDMi42NjY2OSAxMC4wMDA3IDMuMzMzMzUgOS4zMzM5OCA1LjMzMzM1IDkuMzMzOThDNy4zMzMzNSA5LjMzMzk4IDguNjY2NjkgMTAuNjY3MyAxMC42NjY3IDEwLjY2NzNDMTIuNjY2NyAxMC42NjczIDEzLjMzMzQgMTAuMDAwNyAxMy4zMzM0IDEwLjAwMDdWMi4wMDA2NUMxMy4zMzM0IDIuMDAwNjUgMTIuNjY2NyAyLjY2NzMyIDEwLjY2NjcgMi42NjczMkM4LjY2NjY5IDIuNjY3MzIgNy4zMzMzNSAxLjMzMzk4IDUuMzMzMzUgMS4zMzM5OEMzLjMzMzM1IDEuMzMzOTggMi42NjY2OSAyLjAwMDY1IDIuNjY2NjkgMi4wMDA2NVYxMC4wMDA3Wk0yLjY2NjY5IDEwLjAwMDdWMTQuNjY3M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYW5zd2VyLmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFuc3dlcnZhbGlkYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtdC03XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2N1cnNvcjogcG9pbnRlcjtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImdldHZhbGlkYXRpb24oaSxqLGssJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbGlkYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhY2tib3ggcHQtNCBtdC0yIG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlZhbGlkYXRlIHJlc3BvbnNlPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+VHJpZ2dlciBhbiBhY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlc3BvbnNlIHRvIHZhbGlkYXRlIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSAhPT0gJ3llcy9ubycgJiYgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zQW5zd2VyKGksaiwnYW5zd2VycycpLnZhbHVlLmxlbmd0aCA+IDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbnN3ZXIoaSxqLGspXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgYW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA1TDUgMTVNNSA1TDE1IDE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIm1vcmVxbi52YWxpZGF0aW9uXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFuc3dlci5nZXQoJ3ZhbGlkYXRpb24nKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgcHQtNyBmcy00IGZ3LTQwMCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgcmVzcG9uc2UgaXMgdGhpcywgdGhlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwibXQtNSBteC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWxpZGF0aW9uVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVWYWxpZGF0aW9uVHlwZSgkZXZlbnQsaSxqLGspXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5EZXNjcmlwdGl2ZSBBbnN3ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPkNhcHR1cmUgSW1hZ2U8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPkNhcHR1cmUgVmlkZW88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIG14LTQgZC1mbGV4IHB0LThcIiAqbmdJZj1cImFuc3dlci5nZXQoJ3ZhbGlkYXRpb25UeXBlJyk/LnZhbHVlID09PSAnRGVzY3JpcHRpdmUgQW5zd2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzInICsgaSArIGogKyBrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0ZXh0XCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvMicgKyBpICsgaiArIGtcIj5UZXh0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBbaWRdPVwiJ2lubGluZVJhZGlvMycrIGkgKyBqICsga1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibnVtYmVyXCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvMycgKyBpICsgaiArIGtcIj5OdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIHB0LTcgZnMtNCBmdy00MDAgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua2VkIFF1ZXN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgW2lkXT1cImkrJy0nK2tcIiBbbmFtZV09XCJpKyctJytrXCIgY2xhc3M9XCJtdC01XCIgKGNoYW5nZSk9XCJ1cGRhdGVRdWVzdGlvblR5cGUoaSxqLGssJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgUXVlc3Rpb248L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0UXVlc3Rpb25MaXN0KGksaixrKVwiIFt2YWx1ZV09XCJvcHRpb25cIiBbc2VsZWN0ZWRdPVwic2VsZWN0T3B0aW9uKG9wdGlvbixhbnN3ZXIuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb259fS57e2dldFF1ZXN0aW9uTmFtZShpLG9wdGlvbik/LnRyaW0oKT8uc3Vic3RyaW5nKDAsNzApfX08c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRRdWVzdGlvbk5hbWUoaSxvcHRpb24pPy50cmltKCkubGVuZ3RoID4gNzBcIj4uLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgndmFsaWRhdGlvbicpPy52YWx1ZSAmJiBhbnN3ZXIuZ2V0KCd2YWxpZGF0aW9uVHlwZScpPy52YWx1ZSA9PT0gJ0NhcHR1cmUgSW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScsayk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVmX2ltZ19jb250IG1iLTQgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyxrKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjMwMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG8tYWRqdXN0XCIgYWx0PVwiVGFuZ28gRXllXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZfZGVsX2ljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclJlZmVyZW5jZUltYWdlKGksaixrKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDUuMDAxM0g0LjE2NjY3TTQuMTY2NjcgNS4wMDEzSDE3LjVNNC4xNjY2NyA1LjAwMTNWMTYuNjY4QzQuMTY2NjcgMTcuMTEgNC4zNDIyNiAxNy41MzM5IDQuNjU0ODIgMTcuODQ2NUM0Ljk2NzM4IDE4LjE1OSA1LjM5MTMxIDE4LjMzNDYgNS44MzMzMyAxOC4zMzQ2SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzQ2IDE1LjAzMjYgMTguMTU5IDE1LjM0NTIgMTcuODQ2NUMxNS42NTc3IDE3LjUzMzkgMTUuODMzMyAxNy4xMSAxNS44MzMzIDE2LjY2OFY1LjAwMTNINC4xNjY2N1pNNi42NjY2NyA1LjAwMTNWMy4zMzQ2NEM2LjY2NjY3IDIuODkyNjEgNi44NDIyNiAyLjQ2ODY4IDcuMTU0ODIgMi4xNTYxMkM3LjQ2NzM4IDEuODQzNTYgNy44OTEzMSAxLjY2Nzk3IDguMzMzMzMgMS42Njc5N0gxMS42NjY3QzEyLjEwODcgMS42Njc5NyAxMi41MzI2IDEuODQzNTYgMTIuODQ1MiAyLjE1NjEyQzEzLjE1NzcgMi40Njg2OCAxMy4zMzMzIDIuODkyNjEgMTMuMzMzMyAzLjMzNDY0VjUuMDAxM004LjMzMzMzIDkuMTY3OTdWMTQuMTY4TTExLjY2NjcgOS4xNjc5N1YxNC4xNjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0I0MjMxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScsayk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBidG4tbGlnaHQtcHJpbWFyeSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZC1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmaWxldXBsb2FkXycraStqK2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiIG5hbWU9XCJhbnN3ZXJGaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQsaylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZmlsZXVwbG9hZF8nK2kraitrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiIHdpZHRoPVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDA4Ml8zMTIyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuNjY2NyAzLjMzNTI3VjguMzM1MjdNMTkuNjY2NyA4LjMzNTI3SDE0LjY2NjdNMTkuNjY2NyA4LjMzNTI3TDE1LjggNC43MDE5M0MxNC45MDQ0IDMuODA1ODYgMTMuNzk2NCAzLjE1MTI3IDEyLjU3OTMgMi43OTkyNUMxMS4zNjIzIDIuNDQ3MjIgMTAuMDc1OSAyLjQwOTIzIDguODQwMjUgMi42ODg4MkM3LjYwNDU2IDIuOTY4NDEgNi40NTk4NCAzLjU1NjQ2IDUuNTEyOSA0LjM5ODEyQzQuNTY1OTUgNS4yMzk3NyAzLjg0NzY1IDYuMzA3NTkgMy40MjUwMSA3LjUwMTkzTTEuMzMzMzQgMTYuNjY4NlYxMS42Njg2TTEuMzMzMzQgMTEuNjY4Nkg2LjMzMzM0TTEuMzMzMzQgMTEuNjY4Nkw1LjIwMDAxIDE1LjMwMTlDNi4wOTU2MyAxNi4xOTggNy4yMDM2NSAxNi44NTI2IDguNDIwNjggMTcuMjA0NkM5LjYzNzcxIDE3LjU1NjcgMTAuOTI0MSAxNy41OTQ2IDEyLjE1OTggMTcuMzE1MUMxMy4zOTU1IDE3LjAzNTUgMTQuNTQwMiAxNi40NDc0IDE1LjQ4NzEgMTUuNjA1OEMxNi40MzQxIDE0Ljc2NDEgMTcuMTUyNCAxMy42OTYzIDE3LjU3NSAxMi41MDE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY2xpcDBfNDA4Ml8zMTIyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5SZXVwbG9hZCBJbWFnZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnLGspPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBidG4gYWRkLXJlZi1idG4gYnRuLWxpZ2h0LXByaW1hcnkgbXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZXVwbG9hZF8nK2kraitrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIiBuYW1lPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50LGspXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ2ZpbGV1cGxvYWRfJytpK2ora1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDQuMTY3OTdWMTUuODM0Nk00LjE2NjY5IDEwLjAwMTNIMTUuODMzNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5BZGQgUmVmZXJlbmNlIEltYWdlIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy00IGZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXgtMiBidG4tc2VjIG10LTYgdGV4dC1sZWZ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXgtMCBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInRvY1wiIHZhbHVlPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dVcGxvYWRmcm9tR2FsbGVyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93IHVwbG9hZCBmcm9tIGdhbGxlcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKT8uaGFzRXJyb3IoJ2R1cGxpY2F0ZVN0cmluZycpXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+KiBTYW1lIGFuc3dlciBjYW5ub3QgYmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VtdWx0aXBsZScgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJykgJiYgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0FkZEFuc3dlcihxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKT8udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIkFkZE1vcmVBbnMoaSxqLHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gY29sLWxnLTEyIGJ0bi1saWdodC1wcmltYXJ5IG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBNb3JlIEFuc3dlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJbWFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWZfaW1nX2NvbnQgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMzAwcHhcIiBjbGFzcz1cImF1dG8tYWRqdXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlRhbmdvIEV5ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZfZGVsX2ljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyUmVmZXJlbmNlSW1hZ2UoaSxqKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNS4wMDEzSDQuMTY2NjdNNC4xNjY2NyA1LjAwMTNIMTcuNU00LjE2NjY3IDUuMDAxM1YxNi42NjhDNC4xNjY2NyAxNy4xMSA0LjM0MjI2IDE3LjUzMzkgNC42NTQ4MiAxNy44NDY1QzQuOTY3MzggMTguMTU5IDUuMzkxMzEgMTguMzM0NiA1LjgzMzMzIDE4LjMzNDZIMTQuMTY2N0MxNC42MDg3IDE4LjMzNDYgMTUuMDMyNiAxOC4xNTkgMTUuMzQ1MiAxNy44NDY1QzE1LjY1NzcgMTcuNTMzOSAxNS44MzMzIDE3LjExIDE1LjgzMzMgMTYuNjY4VjUuMDAxM0g0LjE2NjY3Wk02LjY2NjY3IDUuMDAxM1YzLjMzNDY0QzYuNjY2NjcgMi44OTI2MSA2Ljg0MjI2IDIuNDY4NjggNy4xNTQ4MiAyLjE1NjEyQzcuNDY3MzggMS44NDM1NiA3Ljg5MTMxIDEuNjY3OTcgOC4zMzMzMyAxLjY2Nzk3SDExLjY2NjdDMTIuMTA4NyAxLjY2Nzk3IDEyLjUzMjYgMS44NDM1NiAxMi44NDUyIDIuMTU2MTJDMTMuMTU3NyAyLjQ2ODY4IDEzLjMzMzMgMi44OTI2MSAxMy4zMzMzIDMuMzM0NjRWNS4wMDEzTTguMzMzMzMgOS4xNjc5N1YxNC4xNjhNMTEuNjY2NyA5LjE2Nzk3VjE0LjE2OFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNCNDIzMThcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGJ0bi1saWdodC1wcmltYXJ5IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIGlkPVwiZmlsZXVwbG9hZFwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmlsZXVwbG9hZFwiIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDA4Ml8zMTIyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjY2NjcgMy4zMzUyN1Y4LjMzNTI3TTE5LjY2NjcgOC4zMzUyN0gxNC42NjY3TTE5LjY2NjcgOC4zMzUyN0wxNS44IDQuNzAxOTNDMTQuOTA0NCAzLjgwNTg2IDEzLjc5NjQgMy4xNTEyNyAxMi41NzkzIDIuNzk5MjVDMTEuMzYyMyAyLjQ0NzIyIDEwLjA3NTkgMi40MDkyMyA4Ljg0MDI1IDIuNjg4ODJDNy42MDQ1NiAyLjk2ODQxIDYuNDU5ODQgMy41NTY0NiA1LjUxMjkgNC4zOTgxMkM0LjU2NTk1IDUuMjM5NzcgMy44NDc2NSA2LjMwNzU5IDMuNDI1MDEgNy41MDE5M00xLjMzMzM0IDE2LjY2ODZWMTEuNjY4Nk0xLjMzMzM0IDExLjY2ODZINi4zMzMzNE0xLjMzMzM0IDExLjY2ODZMNS4yMDAwMSAxNS4zMDE5QzYuMDk1NjMgMTYuMTk4IDcuMjAzNjUgMTYuODUyNiA4LjQyMDY4IDE3LjIwNDZDOS42Mzc3MSAxNy41NTY3IDEwLjkyNDEgMTcuNTk0NiAxMi4xNTk4IDE3LjMxNTFDMTMuMzk1NSAxNy4wMzU1IDE0LjU0MDIgMTYuNDQ3NCAxNS40ODcxIDE1LjYwNThDMTYuNDM0MSAxNC43NjQxIDE3LjE1MjQgMTMuNjk2MyAxNy41NzUgMTIuNTAxOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzQwODJfMzEyMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5SZXVwbG9hZCBJbWFnZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGFkZC1yZWYtYnRuIGJ0bi1saWdodC1wcmltYXJ5IG15LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIGlkPVwiZmlsZXVwbG9hZFwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJwb2ludGVyXCIgZm9yPVwiZmlsZXVwbG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj4gPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDQuMTY3OTdWMTUuODM0Nk00LjE2NjY5IDEwLjAwMTNIMTUuODMzNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5BZGQgUmVmZXJlbmNlIEltYWdlIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy00IGZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXgtMiBidG4tc2VjIG10LTYgdGV4dC1sZWZ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBteC0wIHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3cgdXBsb2FkIGZyb20gZ2FsbGVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKFsnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSkgJiYgZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWUgPT09ICcnKSA/ICdjb2wtbGctNCBtdC02JyA6IFsnaW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpID8gJ2NvbC1sZy0yJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCIoWydtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKSAmJiBnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZSA9PT0gJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW80JyArIGkgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidGV4dFwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW80JyArIGkgKyBqXCI+VGV4dDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzUnICsgaSArIGpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJudW1iZXJcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvNScgKyBpICsgalwiPk51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZSAmJiBbJ2ltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVJbWFnZScgPyAnY29sLWxnLTUgZC1mbGV4IG10LTYnIDogJ2NvbC1sZy0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVJbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzYnICsgaSArIGpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0ZXh0XCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzYnICsgaSArIGpcIj5UZXh0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBbaWRdPVwiJ2lubGluZVJhZGlvNicgKyBpICsgalwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm51bWJlclwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW82JyArIGkgKyBqXCI+TnVtYmVyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiZnMxNi02MDAgcHgtMTJcIj4gUnVuIEFJIOKcqDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBhbGlnbi1pdGVtcy1jZW50ZXIgYnRuLXNlYyBtbC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUnVuQUkoaSxqKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJydW5BSVwiIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVJbWFnZScgPyAnbXQtMScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRW5hYmxlIEFJIHdoZXJlIHlvdSB3YW50IHRhbmdvIHRvIGlkZW50aWZ5LCB0cmFjayBhbmQgYWxlcnQgaW5zdGFuY2VzLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzAxXzEwMDAzOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy45OTk2NyAxMC42NjU0VjcuOTk4N003Ljk5OTY3IDUuMzMyMDNIOC4wMDYzNE0xNC42NjYzIDcuOTk4N0MxNC42NjYzIDExLjY4MDYgMTEuNjgxNiAxNC42NjU0IDcuOTk5NjcgMTQuNjY1NEM0LjMxNzc4IDE0LjY2NTQgMS4zMzMwMSAxMS42ODA2IDEuMzMzMDEgNy45OTg3QzEuMzMzMDEgNC4zMTY4IDQuMzE3NzggMS4zMzIwMyA3Ljk5OTY3IDEuMzMyMDNDMTEuNjgxNiAxLjMzMjAzIDE0LjY2NjMgNC4zMTY4IDE0LjY2NjMgNy45OTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMDFfMTAwMDM4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZpZGVvIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAndmlkZW8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBjb2wtbGctNCBmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIHRleHQtbGVmdCBhbGlnbi1pdGVtcy1jZW50ZXIgYnRuLXNlYyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXgtMCBwb2ludGVyXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIiBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4U3dpdGNoQ2hlY2tEZWZhdWx0XCI+QWxsb3cgdXBsb2FkIGZyb20gZ2FsbGVyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAndGltZSdcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwiYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgY29sLWxnLTQgYnRuLXNlYyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgZmxhdHBpY2tyLWlucHV0IHctMjAwcHhcIiB0eXBlPVwidGltZVwiIG5hbWU9XCJ0aW1lXCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbGluZWFyc2NhbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXNlYyBtdC0yIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgZmxhdHBpY2tyLWlucHV0IHctMTAwcHhcIiB0eXBlPVwibnVtYmVyXCIgbmFtZT1cInN0YXJ0XCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJyYW5nZVN0YXJ0XCI+ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tc2VjIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTZweFwiPnRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBidG4tc2VjIG10LTIgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0xMDBweFwiIHR5cGU9XCJudW1iZXJcIiBuYW1lPVwic3RhcnRcIiBuZ0RlZmF1bHRDb250cm9sIGZvcm1Db250cm9sTmFtZT1cInJhbmdlRW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImNsb25lUXVlc3Rpb24oaSxqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRHVwbGljYXRlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMzODVfMTA1NzgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjY2MyAxMi40OTkzSDMuMzMzMjlDMi44OTEyNyAxMi40OTkzIDIuNDY3MzQgMTIuMzIzOCAyLjE1NDc4IDEyLjAxMTJDMS44NDIyMiAxMS42OTg2IDEuNjY2NjMgMTEuMjc0NyAxLjY2NjYzIDEwLjgzMjdWMy4zMzI2OEMxLjY2NjYzIDIuODkwNjUgMS44NDIyMiAyLjQ2NjczIDIuMTU0NzggMi4xNTQxN0MyLjQ2NzM0IDEuODQxNjEgMi44OTEyNyAxLjY2NjAyIDMuMzMzMjkgMS42NjYwMkgxMC44MzMzQzExLjI3NTMgMS42NjYwMiAxMS42OTkyIDEuODQxNjEgMTIuMDExOCAyLjE1NDE3QzEyLjMyNDQgMi40NjY3MyAxMi41IDIuODkwNjUgMTIuNSAzLjMzMjY4VjQuMTY2MDJNOS4xNjY2MyA3LjQ5OTM1SDE2LjY2NjZDMTcuNTg3MSA3LjQ5OTM1IDE4LjMzMzMgOC4yNDU1NCAxOC4zMzMzIDkuMTY2MDJWMTYuNjY2QzE4LjMzMzMgMTcuNTg2NSAxNy41ODcxIDE4LjMzMjcgMTYuNjY2NiAxOC4zMzI3SDkuMTY2NjNDOC4yNDYxNSAxOC4zMzI3IDcuNDk5OTYgMTcuNTg2NSA3LjQ5OTk2IDE2LjY2NlY5LjE2NjAyQzcuNDk5OTYgOC4yNDU1NCA4LjI0NjE1IDcuNDk5MzUgOS4xNjY2MyA3LjQ5OTM1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMzg1XzEwNTc4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJkZWxldGVRdWVzdGlvbihpLGopXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMjRweCAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHF1ZXN0aW9uXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNC45OTkzNUg0LjE2NjY3TTQuMTY2NjcgNC45OTkzNUgxNy41TTQuMTY2NjcgNC45OTkzNVYxNi42NjZDNC4xNjY2NyAxNy4xMDggNC4zNDIyNiAxNy41MzIgNC42NTQ4MiAxNy44NDQ1QzQuOTY3MzggMTguMTU3MSA1LjM5MTMxIDE4LjMzMjcgNS44MzMzMyAxOC4zMzI3SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzI3IDE1LjAzMjYgMTguMTU3MSAxNS4zNDUyIDE3Ljg0NDVDMTUuNjU3NyAxNy41MzIgMTUuODMzMyAxNy4xMDggMTUuODMzMyAxNi42NjZWNC45OTkzNUg0LjE2NjY3Wk02LjY2NjY3IDQuOTk5MzVWMy4zMzI2OEM2LjY2NjY3IDIuODkwNjUgNi44NDIyNiAyLjQ2NjczIDcuMTU0ODIgMi4xNTQxN0M3LjQ2NzM4IDEuODQxNjEgNy44OTEzMSAxLjY2NjAyIDguMzMzMzMgMS42NjYwMkgxMS42NjY3QzEyLjEwODcgMS42NjYwMiAxMi41MzI2IDEuODQxNjEgMTIuODQ1MiAyLjE1NDE3QzEzLjE1NzcgMi40NjY3MyAxMy4zMzMzIDIuODkwNjUgMTMuMzMzMyAzLjMzMjY4VjQuOTk5MzVNOC4zMzMzMyA5LjE2NjAyVjE0LjE2Nk0xMS42NjY3IDkuMTY2MDJWMTQuMTY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgcHgtMFwiICpuZ0lmPVwiQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcHktNyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJhZGROZXdRdWVzdGlvbihzZWN0aW9uSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiIGNsYXNzPVwibXQtMiBidG4tc2VjIHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTk5IDQuMTY2MDJWMTUuODMyN000LjE2NjY2IDkuOTk5MzVIMTUuODMzM1wiIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBBZGQgTmV3IFF1ZXN0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBwbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHB5LTcgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiYWRkTmV3U2VjdGlvbigpXCIgY2xhc3M9XCJtdC0yIHB4LTAgYnRuLXNlYyBwb2ludGVyXCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTk5OTkgNC4xNjYwMlYxNS44MzI3TTQuMTY2NjYgOS45OTkzNUgxNS44MzMzXCIgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEFkZCBOZXcgU2VjdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=