@bnsights/bbsf-admin-portal 1.1.4 → 1.1.6

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.
Files changed (120) hide show
  1. package/README.md +6 -2
  2. package/bnsights-bbsf-admin-portal-1.1.6.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +1 -1
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +146 -146
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +152 -152
  6. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +1 -1
  7. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +1 -1
  8. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +15 -15
  9. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +1 -1
  10. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +1 -1
  11. package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +7 -7
  12. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +12 -12
  13. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +19 -19
  14. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +15 -15
  15. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +12 -12
  16. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +102 -102
  17. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +7 -7
  18. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +271 -271
  19. package/esm2022/lib/Pages/core/auth.module.mjs +1 -1
  20. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +1 -1
  21. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +3 -3
  22. package/esm2022/lib/Pages/departments/department/department.component.mjs +48 -48
  23. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +32 -32
  24. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +52 -52
  25. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +20 -20
  26. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +100 -100
  27. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +151 -151
  28. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +72 -72
  29. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +27 -27
  30. package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +1 -1
  31. package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +1 -1
  32. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +84 -84
  33. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +1 -1
  34. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +56 -56
  35. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +58 -58
  36. package/esm2022/lib/Pages/home/home.component.mjs +7 -7
  37. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +129 -129
  38. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +14 -14
  39. package/esm2022/lib/Pages/license/license/license.component.mjs +11 -11
  40. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +41 -41
  41. package/esm2022/lib/Pages/localizations/localizations.component.mjs +125 -125
  42. package/esm2022/lib/Pages/logs/log/log.component.mjs +11 -11
  43. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +120 -120
  44. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +34 -34
  45. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +83 -83
  46. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +35 -35
  47. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +53 -53
  48. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +50 -50
  49. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +16 -16
  50. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +20 -20
  51. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +135 -135
  52. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +186 -186
  53. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +122 -122
  54. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +120 -120
  55. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +29 -29
  56. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +57 -57
  57. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +79 -79
  58. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +35 -35
  59. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +27 -27
  60. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +27 -27
  61. package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +1 -1
  62. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +1 -1
  63. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +1 -1
  64. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +1 -1
  65. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +1 -1
  66. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +1 -1
  67. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +1 -1
  68. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +1 -1
  69. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +1 -1
  70. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +1 -1
  71. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +1 -1
  72. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +1 -1
  73. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +1 -1
  74. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +1 -1
  75. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +1 -1
  76. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +1 -1
  77. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +1 -1
  78. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +1 -1
  79. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +1 -1
  80. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +1 -1
  81. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +1 -1
  82. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +1 -1
  83. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +1 -1
  84. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +1 -1
  85. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +36 -36
  86. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +74 -74
  87. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +8 -8
  88. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +10 -10
  89. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +89 -89
  90. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +7 -7
  91. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +9 -9
  92. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +10 -10
  93. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +222 -222
  94. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +7 -7
  95. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +257 -257
  96. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +25 -25
  97. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +24 -24
  98. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +6 -6
  99. package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +52 -52
  100. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +16 -16
  101. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +20 -20
  102. package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +69 -69
  103. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +180 -180
  104. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +3 -3
  105. package/esm2022/lib/Pages/users/users.component.mjs +190 -190
  106. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +176 -176
  107. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +364 -364
  108. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +67 -67
  109. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +227 -227
  110. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +31 -31
  111. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +56 -56
  112. package/fesm2022/bnsights-bbsf-admin-portal.mjs +5187 -5187
  113. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  114. package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +0 -1
  115. package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +2 -2
  116. package/lib/Pages/workflows/tabs/tabs.component.d.ts +1 -1
  117. package/package.json +3 -3
  118. package/esm2022/bnsights-test-test-admin-portal.mjs +0 -5
  119. package/fesm2022/bnsights-test-test-admin-portal.mjs +0 -27181
  120. package/fesm2022/bnsights-test-test-admin-portal.mjs.map +0 -1
@@ -57,150 +57,150 @@ export class AddQuestionComponent extends AppBaseComponent {
57
57
  this.addModelForm = new FormGroup({});
58
58
  this.addOptionForm = new FormGroup({});
59
59
  this.addSurveyQuestionFormOptions = new FormOptions();
60
- this.addSurveyQuestionFormOptions.FormGroup = this.addModelForm;
61
- this.addSurveyQuestionFormOptions.GetModelFunction = this.getAddModel;
62
- this.addSurveyQuestionFormOptions.ServiceSubmitFunction =
60
+ this.addSurveyQuestionFormOptions.formGroup = this.addModelForm;
61
+ this.addSurveyQuestionFormOptions.getModelFunction = this.getAddModel;
62
+ this.addSurveyQuestionFormOptions.serviceSubmitFunction =
63
63
  this.getAddFunction;
64
- this.addSurveyQuestionFormOptions.PagingReference = this.pagingElement;
65
- this.addSurveyQuestionFormOptions.OnSuccessHandler =
64
+ this.addSurveyQuestionFormOptions.pagingReference = this.pagingElement;
65
+ this.addSurveyQuestionFormOptions.onSuccessHandler =
66
66
  this.onSuccessAddHandler;
67
- this.addSurveyQuestionFormOptions.DisableSuccessNotification = true;
67
+ this.addSurveyQuestionFormOptions.disableSuccessNotification = true;
68
68
  this.addQuestion = new MultiLingualTextBoxOptions();
69
- this.addQuestion.Name = 'Text';
70
- this.addQuestion.ArabicLabelKey = 'QuestionInArabic';
71
- this.addQuestion.EnglishLabelKey = 'QuestionInEnglish';
72
- this.addQuestion.IsRequired = true;
73
- this.addQuestion.MaxLength = 4000;
74
- this.addQuestion.LanguageMode = this.getLanguageModeValue();
69
+ this.addQuestion.name = 'Text';
70
+ this.addQuestion.arabicLabelKey = 'QuestionInArabic';
71
+ this.addQuestion.englishLabelKey = 'QuestionInEnglish';
72
+ this.addQuestion.isRequired = true;
73
+ this.addQuestion.maxLength = 4000;
74
+ this.addQuestion.languageMode = this.getLanguageModeValue();
75
75
  this.addDescription = new MultiLingualTextAreaOptions();
76
- this.addDescription.Name = 'Description';
77
- this.addDescription.ArabicLabelKey = 'DescriptionInArabic';
78
- this.addDescription.EnglishLabelKey = 'DescriptionInEnglish';
79
- this.addDescription.IsRequired = false;
80
- this.addDescription.MaxLength = 250;
81
- this.addDescription.Rows = 2;
82
- this.addDescription.LanguageMode = this.getLanguageModeValue();
83
- this.addDescription.ArabicLabelDescription = this.l('QuestionDescriptionHintArabic');
84
- this.addDescription.EnglishLabelDescription = this.l('QuestionDescriptionHintEnglish');
76
+ this.addDescription.name = 'Description';
77
+ this.addDescription.arabicLabelKey = 'DescriptionInArabic';
78
+ this.addDescription.englishLabelKey = 'DescriptionInEnglish';
79
+ this.addDescription.isRequired = false;
80
+ this.addDescription.maxLength = 250;
81
+ this.addDescription.rows = 2;
82
+ this.addDescription.languageMode = this.getLanguageModeValue();
83
+ this.addDescription.arabicLabelDescription = this.l('QuestionDescriptionHintArabic');
84
+ this.addDescription.englishLabelDescription = this.l('QuestionDescriptionHintEnglish');
85
85
  this.addQuestionType = new DropdownOptions();
86
- this.addQuestionType.Name = 'QuestionTypeItemID';
87
- this.addQuestionType.LabelKey = 'Type';
88
- this.addQuestionType.IsRequired = true;
89
- this.addQuestionType.AllowSearchFilter = true;
90
- this.addQuestionType.DataSource = result.optionTypes;
91
- this.addQuestionType.SingleSelection = true;
92
- this.addQuestionType.NotFoundText = this.l('NoResultFound');
86
+ this.addQuestionType.name = 'QuestionTypeItemID';
87
+ this.addQuestionType.labelKey = 'Type';
88
+ this.addQuestionType.isRequired = true;
89
+ this.addQuestionType.allowSearchFilter = true;
90
+ this.addQuestionType.dataSource = result.optionTypes;
91
+ this.addQuestionType.singleSelection = true;
92
+ this.addQuestionType.notFoundText = this.l('NoResultFound');
93
93
  this.audience = new DropdownOptions();
94
- this.audience.Name = 'AudienceItemID';
95
- this.audience.LabelKey = 'Audience';
96
- this.audience.IsRequired = true;
97
- this.audience.ViewType = ControlLayout.Vertical;
98
- this.audience.SingleSelection = true;
99
- this.audience.ShowCheckbox = false;
100
- this.audience.DataSource = result.audiences;
101
- this.audience.SelectedItems = audienceType;
102
- this.audience.LabelDescription = this.l('AudienceDescriptionHint');
94
+ this.audience.name = 'AudienceItemID';
95
+ this.audience.labelKey = 'Audience';
96
+ this.audience.isRequired = true;
97
+ this.audience.viewType = ControlLayout.Vertical;
98
+ this.audience.singleSelection = true;
99
+ this.audience.showCheckbox = false;
100
+ this.audience.dataSource = result.audiences;
101
+ this.audience.selectedItems = audienceType;
102
+ this.audience.labelDescription = this.l('AudienceDescriptionHint');
103
103
  this.addSize = new DropdownOptions();
104
- this.addSize.Name = 'Size';
105
- this.addSize.LabelKey = 'Size';
106
- this.addSize.IsRequired = true;
107
- this.addSize.AllowSearchFilter = true;
108
- this.addSize.DataSource = this.SizeList;
109
- this.addSize.SingleSelection = true;
110
- this.addSize.SelectedItems = 12;
111
- this.addSize.NotFoundText = this.l('NoResultFound');
104
+ this.addSize.name = 'Size';
105
+ this.addSize.labelKey = 'Size';
106
+ this.addSize.isRequired = true;
107
+ this.addSize.allowSearchFilter = true;
108
+ this.addSize.dataSource = this.SizeList;
109
+ this.addSize.singleSelection = true;
110
+ this.addSize.selectedItems = 12;
111
+ this.addSize.notFoundText = this.l('NoResultFound');
112
112
  this.addRequired = new ToggleSlideOptions();
113
- this.addRequired.Name = 'IsRequired';
114
- this.addRequired.LabelKey = 'IsRequired';
115
- this.addRequired.LabelDescription = this.l('RequiredDescriptionHint');
113
+ this.addRequired.name = 'IsRequired';
114
+ this.addRequired.labelKey = 'IsRequired';
115
+ this.addRequired.labelDescription = this.l('RequiredDescriptionHint');
116
116
  this.addAllowScore = new ToggleSlideOptions();
117
- this.addAllowScore.Name = 'IsAllowScoring';
118
- this.addAllowScore.LabelKey = 'AllowScore';
119
- this.addAllowScore.LabelDescription = this.l('AllowScoreDescription');
117
+ this.addAllowScore.name = 'IsAllowScoring';
118
+ this.addAllowScore.labelKey = 'AllowScore';
119
+ this.addAllowScore.labelDescription = this.l('AllowScoreDescription');
120
120
  this.addHasSearch = new ToggleSlideOptions();
121
- this.addHasSearch.Name = 'HasSearch';
122
- this.addHasSearch.LabelKey = 'HasSearch';
121
+ this.addHasSearch.name = 'HasSearch';
122
+ this.addHasSearch.labelKey = 'HasSearch';
123
123
  this.addIsActive = new ToggleSlideOptions();
124
- this.addIsActive.Name = 'IsVisible';
125
- this.addIsActive.LabelKey = 'Visible';
126
- this.addIsActive.Value = true;
127
- this.addIsActive.LabelDescription = this.l('GenericVisibleHint');
124
+ this.addIsActive.name = 'IsVisible';
125
+ this.addIsActive.labelKey = 'Visible';
126
+ this.addIsActive.value = true;
127
+ this.addIsActive.labelDescription = this.l('GenericVisibleHint');
128
128
  this.addMaxLength = new TextBoxOptions();
129
- this.addMaxLength.Name = 'MaxLength';
130
- this.addMaxLength.LabelKey = 'MaxLength';
131
- this.addMaxLength.IsRequired = true;
132
- this.addMaxLength.NumberRange = new RangeNumber();
133
- this.addMaxLength.Type = InputType.Number;
134
- this.addMaxLength.LabelDescription = this.l('MaxHint');
129
+ this.addMaxLength.name = 'MaxLength';
130
+ this.addMaxLength.labelKey = 'MaxLength';
131
+ this.addMaxLength.isRequired = true;
132
+ this.addMaxLength.numberRange = new RangeNumber();
133
+ this.addMaxLength.type = InputType.Number;
134
+ this.addMaxLength.labelDescription = this.l('MaxHint');
135
135
  this.addMinLength = new TextBoxOptions();
136
- this.addMinLength.Name = 'MinLength';
137
- this.addMinLength.LabelKey = 'MinLength';
138
- this.addMinLength.IsRequired = true;
139
- this.addMinLength.NumberRange = new RangeNumber();
140
- this.addMinLength.Type = InputType.Number;
141
- this.addMinLength.LabelDescription = this.l('MinHint');
136
+ this.addMinLength.name = 'MinLength';
137
+ this.addMinLength.labelKey = 'MinLength';
138
+ this.addMinLength.isRequired = true;
139
+ this.addMinLength.numberRange = new RangeNumber();
140
+ this.addMinLength.type = InputType.Number;
141
+ this.addMinLength.labelDescription = this.l('MinHint');
142
142
  this.addRowsNumber = new TextBoxOptions();
143
- this.addRowsNumber.Name = 'Rows';
144
- this.addRowsNumber.LabelKey = 'Rows';
145
- this.addRowsNumber.IsRequired = true;
146
- this.addRowsNumber.NumberRange = new RangeNumber();
147
- this.addRowsNumber.NumberRange.From = 1;
148
- this.addRowsNumber.NumberRange.To = 20;
149
- this.addRowsNumber.Type = InputType.Number;
143
+ this.addRowsNumber.name = 'Rows';
144
+ this.addRowsNumber.labelKey = 'Rows';
145
+ this.addRowsNumber.isRequired = true;
146
+ this.addRowsNumber.numberRange = new RangeNumber();
147
+ this.addRowsNumber.numberRange.from = 1;
148
+ this.addRowsNumber.numberRange.to = 20;
149
+ this.addRowsNumber.type = InputType.Number;
150
150
  this.addMaxFileSize = new TextBoxOptions();
151
- this.addMaxFileSize.Name = 'MaxFileSizeInMB';
152
- this.addMaxFileSize.LabelKey = 'MaxFileSizeInMB';
153
- this.addMaxFileSize.IsRequired = true;
154
- this.addMaxFileSize.NumberRange = new RangeNumber();
155
- this.addMaxFileSize.NumberRange.From = 1;
156
- this.addMaxFileSize.NumberRange.To = 100;
157
- this.addMaxFileSize.Type = InputType.Number;
151
+ this.addMaxFileSize.name = 'MaxFileSizeInMB';
152
+ this.addMaxFileSize.labelKey = 'MaxFileSizeInMB';
153
+ this.addMaxFileSize.isRequired = true;
154
+ this.addMaxFileSize.numberRange = new RangeNumber();
155
+ this.addMaxFileSize.numberRange.from = 1;
156
+ this.addMaxFileSize.numberRange.to = 100;
157
+ this.addMaxFileSize.type = InputType.Number;
158
158
  this.addMaxFileCount = new TextBoxOptions();
159
- this.addMaxFileCount.Name = 'MaxFileCount';
160
- this.addMaxFileCount.LabelKey = 'MaxFilesCount';
161
- this.addMaxFileCount.IsRequired = true;
162
- this.addMaxFileCount.NumberRange = new RangeNumber();
163
- this.addMaxFileCount.NumberRange.From = 1;
164
- this.addMaxFileCount.NumberRange.To = 50;
165
- this.addMaxFileCount.Type = InputType.Number;
166
- this.addMaxFileCount.LabelDescription = this.l('MaxFileCountHint');
167
- this.addMaxFileCount.CustomValidation = [this.numberValidation];
159
+ this.addMaxFileCount.name = 'MaxFileCount';
160
+ this.addMaxFileCount.labelKey = 'MaxFilesCount';
161
+ this.addMaxFileCount.isRequired = true;
162
+ this.addMaxFileCount.numberRange = new RangeNumber();
163
+ this.addMaxFileCount.numberRange.from = 1;
164
+ this.addMaxFileCount.numberRange.to = 50;
165
+ this.addMaxFileCount.type = InputType.Number;
166
+ this.addMaxFileCount.labelDescription = this.l('MaxFileCountHint');
167
+ this.addMaxFileCount.customValidation = [this.numberValidation];
168
168
  this.addFilesExtensions = new DropdownOptions();
169
- this.addFilesExtensions.Name = 'AllowedExtensions';
170
- this.addFilesExtensions.LabelKey = 'Extensions';
171
- this.addFilesExtensions.IsRequired = true;
172
- this.addFilesExtensions.AllowSearchFilter = true;
173
- this.addFilesExtensions.DataSource = result.extensions;
174
- this.addFilesExtensions.SingleSelection = false;
175
- this.addFilesExtensions.LabelDescription = this.l('ExtensionHint');
176
- this.addFilesExtensions.NotFoundText = this.l('NoResultFound');
169
+ this.addFilesExtensions.name = 'AllowedExtensions';
170
+ this.addFilesExtensions.labelKey = 'Extensions';
171
+ this.addFilesExtensions.isRequired = true;
172
+ this.addFilesExtensions.allowSearchFilter = true;
173
+ this.addFilesExtensions.dataSource = result.extensions;
174
+ this.addFilesExtensions.singleSelection = false;
175
+ this.addFilesExtensions.labelDescription = this.l('ExtensionHint');
176
+ this.addFilesExtensions.notFoundText = this.l('NoResultFound');
177
177
  this.addModelForm.addValidators(this.fromTo('MinLength', 'MaxLength'));
178
178
  this.addNameOption = new MultiLingualTextBoxOptions();
179
- this.addNameOption.Name = 'NameOption';
180
- this.addNameOption.ArabicLabelKey = 'NameInArabic';
181
- this.addNameOption.EnglishLabelKey = 'NameInEnglish';
182
- this.addNameOption.IsRequired = true;
183
- this.addNameOption.MaxLength = 225;
184
- this.addNameOption.LanguageMode = this.getLanguageModeValue();
179
+ this.addNameOption.name = 'NameOption';
180
+ this.addNameOption.arabicLabelKey = 'NameInArabic';
181
+ this.addNameOption.englishLabelKey = 'NameInEnglish';
182
+ this.addNameOption.isRequired = true;
183
+ this.addNameOption.maxLength = 225;
184
+ this.addNameOption.languageMode = this.getLanguageModeValue();
185
185
  this.displayOrderOption = new TextBoxOptions();
186
- this.displayOrderOption.Name = 'DisplayOrder';
186
+ this.displayOrderOption.name = 'DisplayOrder';
187
187
  this.scoreNumber = new TextBoxOptions();
188
- this.scoreNumber.Name = 'Score';
189
- this.scoreNumber.LabelKey = 'Score';
190
- this.scoreNumber.IsRequired = true;
191
- this.scoreNumber.Type = InputType.Number;
188
+ this.scoreNumber.name = 'Score';
189
+ this.scoreNumber.labelKey = 'Score';
190
+ this.scoreNumber.isRequired = true;
191
+ this.scoreNumber.type = InputType.Number;
192
192
  let rangeNumber = new RangeNumber();
193
- rangeNumber.To = 1000000;
194
- rangeNumber.From = 1;
195
- this.scoreNumber.NumberRange = rangeNumber;
193
+ rangeNumber.to = 1000000;
194
+ rangeNumber.from = 1;
195
+ this.scoreNumber.numberRange = rangeNumber;
196
196
  this.addOptionLinkedQuestions = new DropdownOptions();
197
- this.addOptionLinkedQuestions.Name = 'LinkedQuestions';
198
- this.addOptionLinkedQuestions.LabelKey = 'LinkedQuestions';
199
- this.addOptionLinkedQuestions.AllowSearchFilter = true;
200
- this.addOptionLinkedQuestions.DataSource = result.questions;
201
- this.addOptionLinkedQuestions.SingleSelection = false;
202
- this.addOptionLinkedQuestions.NotFoundText = this.l('NoResultFound');
203
- this.addOptionLinkedQuestions.LabelDescription = this.l('LinkedQuestionDescriptionHint');
197
+ this.addOptionLinkedQuestions.name = 'LinkedQuestions';
198
+ this.addOptionLinkedQuestions.labelKey = 'LinkedQuestions';
199
+ this.addOptionLinkedQuestions.allowSearchFilter = true;
200
+ this.addOptionLinkedQuestions.dataSource = result.questions;
201
+ this.addOptionLinkedQuestions.singleSelection = false;
202
+ this.addOptionLinkedQuestions.notFoundText = this.l('NoResultFound');
203
+ this.addOptionLinkedQuestions.labelDescription = this.l('LinkedQuestionDescriptionHint');
204
204
  this.openModal(this.AddModal, 'xl');
205
205
  this.stopBlockUI();
206
206
  });
@@ -226,12 +226,12 @@ export class AddQuestionComponent extends AppBaseComponent {
226
226
  this.errorMessage = null;
227
227
  let addModel = new SurveyQuestionDTO();
228
228
  addModel.SurveyID = this.surveyID;
229
- addModel.Text.Arabic = resultModel.Text.Arabic;
230
- addModel.Text.English = resultModel.Text.English;
231
- addModel.Description.Arabic = resultModel.Description.Arabic;
232
- addModel.Description.English = resultModel.Description.English;
233
- addModel.Options.Description.Arabic = resultModel.Description.Arabic;
234
- addModel.Options.Description.English = resultModel.Description.English;
229
+ addModel.Text.arabic = resultModel.Text.Arabic;
230
+ addModel.Text.english = resultModel.Text.English;
231
+ addModel.Description.arabic = resultModel.Description.Arabic;
232
+ addModel.Description.english = resultModel.Description.English;
233
+ addModel.Options.Description.arabic = resultModel.Description.Arabic;
234
+ addModel.Options.Description.english = resultModel.Description.English;
235
235
  if (this.audienceTypeID == AudienceType.Both)
236
236
  addModel.AudienceItemID = resultModel.AudienceItemID;
237
237
  else
@@ -315,12 +315,12 @@ export class AddQuestionComponent extends AppBaseComponent {
315
315
  this.updateFormStatus(key);
316
316
  switch (key) {
317
317
  case SurveyOptionType.Text:
318
- this.updateLengthValidator(this.addMaxLength.Name, 255, 1);
319
- this.updateLengthValidator(this.addMinLength.Name, 255, 1);
320
- this.addMaxLength.NumberRange.From = 1;
321
- this.addMaxLength.NumberRange.To = 255;
322
- this.addMinLength.NumberRange.From = 1;
323
- this.addMinLength.NumberRange.To = 255;
318
+ this.updateLengthValidator(this.addMaxLength.name, 255, 1);
319
+ this.updateLengthValidator(this.addMinLength.name, 255, 1);
320
+ this.addMaxLength.numberRange.from = 1;
321
+ this.addMaxLength.numberRange.to = 255;
322
+ this.addMinLength.numberRange.from = 1;
323
+ this.addMinLength.numberRange.to = 255;
324
324
  this.isText = true;
325
325
  this.isNumber = false;
326
326
  this.isFile = false;
@@ -329,12 +329,12 @@ export class AddQuestionComponent extends AppBaseComponent {
329
329
  this.isSelect = false;
330
330
  break;
331
331
  case SurveyOptionType.MultilineText:
332
- this.updateLengthValidator(this.addMaxLength.Name, 4000, 1);
333
- this.updateLengthValidator(this.addMinLength.Name, 4000, 1);
334
- this.addMaxLength.NumberRange.From = 1;
335
- this.addMaxLength.NumberRange.To = 4000;
336
- this.addMinLength.NumberRange.From = 1;
337
- this.addMinLength.NumberRange.To = 4000;
332
+ this.updateLengthValidator(this.addMaxLength.name, 4000, 1);
333
+ this.updateLengthValidator(this.addMinLength.name, 4000, 1);
334
+ this.addMaxLength.numberRange.from = 1;
335
+ this.addMaxLength.numberRange.to = 4000;
336
+ this.addMinLength.numberRange.from = 1;
337
+ this.addMinLength.numberRange.to = 4000;
338
338
  this.isText = true;
339
339
  this.isNumber = false;
340
340
  this.isFile = false;
@@ -343,12 +343,12 @@ export class AddQuestionComponent extends AppBaseComponent {
343
343
  this.isSelect = false;
344
344
  break;
345
345
  case SurveyOptionType.Number:
346
- this.updateLengthValidator(this.addMaxLength.Name, 100, 1);
347
- this.updateLengthValidator(this.addMinLength.Name, 100, 1);
348
- this.addMaxLength.NumberRange.From = 1;
349
- this.addMaxLength.NumberRange.To = 100;
350
- this.addMinLength.NumberRange.From = 1;
351
- this.addMinLength.NumberRange.To = 100;
346
+ this.updateLengthValidator(this.addMaxLength.name, 100, 1);
347
+ this.updateLengthValidator(this.addMinLength.name, 100, 1);
348
+ this.addMaxLength.numberRange.from = 1;
349
+ this.addMaxLength.numberRange.to = 100;
350
+ this.addMinLength.numberRange.from = 1;
351
+ this.addMinLength.numberRange.to = 100;
352
352
  this.isNumber = true;
353
353
  this.isText = false;
354
354
  this.isFile = false;
@@ -427,8 +427,8 @@ export class AddQuestionComponent extends AppBaseComponent {
427
427
  this.showOptionList = false;
428
428
  this.errorMessage = null;
429
429
  let option = new SurveyQuestionOptionDTO();
430
- option.Name.Arabic = resultModel.NameOption.Arabic;
431
- option.Name.English = resultModel.NameOption.English;
430
+ option.Name.arabic = resultModel.NameOption.Arabic;
431
+ option.Name.english = resultModel.NameOption.English;
432
432
  debugger;
433
433
  if (resultModel.DisplayOrder)
434
434
  option.DisplayOrder = resultModel.DisplayOrder;
@@ -463,8 +463,8 @@ export class AddQuestionComponent extends AppBaseComponent {
463
463
  return;
464
464
  }
465
465
  let name = new EnglishArabicDTO();
466
- name.Arabic = option.Name.Arabic ?? null;
467
- name.English = option.Name.English ?? null;
466
+ name.arabic = option.Name.arabic ?? null;
467
+ name.english = option.Name.english ?? null;
468
468
  this.addOptionForm.controls['NameOption'].setValue(name);
469
469
  this.addOptionForm.controls['DisplayOrder'].setValue(option.DisplayOrder);
470
470
  this.addOptionForm.controls['LinkedQuestions'].setValue(option.LinkedQuestions);
@@ -502,96 +502,96 @@ export class AddQuestionComponent extends AppBaseComponent {
502
502
  switch (key) {
503
503
  case SurveyOptionType.Text:
504
504
  case SurveyOptionType.MultilineText:
505
- if (this.addModelForm.get(this.addMaxLength.Name))
506
- this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
507
- if (this.addModelForm.get(this.addMinLength.Name))
508
- this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
509
- if (this.addModelForm.get(this.addMaxFileSize.Name))
510
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
511
- if (this.addModelForm.get(this.addMaxFileCount.Name))
512
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
513
- if (this.addModelForm.get(this.addFilesExtensions.Name))
514
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
505
+ if (this.addModelForm.get(this.addMaxLength.name))
506
+ this.addRequiredRule(this.addModelForm.get(this.addMaxLength.name), this.addMaxLength);
507
+ if (this.addModelForm.get(this.addMinLength.name))
508
+ this.addRequiredRule(this.addModelForm.get(this.addMinLength.name), this.addMinLength);
509
+ if (this.addModelForm.get(this.addMaxFileSize.name))
510
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.name), this.addMaxFileSize);
511
+ if (this.addModelForm.get(this.addMaxFileCount.name))
512
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.name), this.addMaxFileCount);
513
+ if (this.addModelForm.get(this.addFilesExtensions.name))
514
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.name), this.addFilesExtensions);
515
515
  break;
516
516
  case SurveyOptionType.Number:
517
- if (this.addModelForm.get(this.addMaxLength.Name))
518
- this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
519
- if (this.addModelForm.get(this.addMinLength.Name))
520
- this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
521
- if (this.addModelForm.get(this.addMaxFileSize.Name))
522
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
523
- if (this.addModelForm.get(this.addMaxFileCount.Name))
524
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
525
- if (this.addModelForm.get(this.addFilesExtensions.Name))
526
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
517
+ if (this.addModelForm.get(this.addMaxLength.name))
518
+ this.addRequiredRule(this.addModelForm.get(this.addMaxLength.name), this.addMaxLength);
519
+ if (this.addModelForm.get(this.addMinLength.name))
520
+ this.addRequiredRule(this.addModelForm.get(this.addMinLength.name), this.addMinLength);
521
+ if (this.addModelForm.get(this.addMaxFileSize.name))
522
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.name), this.addMaxFileSize);
523
+ if (this.addModelForm.get(this.addMaxFileCount.name))
524
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.name), this.addMaxFileCount);
525
+ if (this.addModelForm.get(this.addFilesExtensions.name))
526
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.name), this.addFilesExtensions);
527
527
  break;
528
528
  case SurveyOptionType.File:
529
- if (this.addModelForm.get(this.addMaxLength.Name))
530
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
531
- if (this.addModelForm.get(this.addMinLength.Name))
532
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
533
- if (this.addModelForm.get(this.addMaxFileSize.Name))
534
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
535
- if (this.addModelForm.get(this.addMaxFileCount.Name))
536
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
537
- if (this.addModelForm.get(this.addFilesExtensions.Name))
538
- this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
529
+ if (this.addModelForm.get(this.addMaxLength.name))
530
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.name), this.addMaxLength);
531
+ if (this.addModelForm.get(this.addMinLength.name))
532
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.name), this.addMinLength);
533
+ if (this.addModelForm.get(this.addMaxFileSize.name))
534
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.name), this.addMaxFileSize);
535
+ if (this.addModelForm.get(this.addMaxFileCount.name))
536
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.name), this.addMaxFileCount);
537
+ if (this.addModelForm.get(this.addFilesExtensions.name))
538
+ this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.name), this.addFilesExtensions);
539
539
  break;
540
540
  case SurveyOptionType.MultiFile:
541
- if (this.addModelForm.get(this.addMaxLength.Name))
542
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
543
- if (this.addModelForm.get(this.addMinLength.Name))
544
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
545
- if (this.addModelForm.get(this.addMaxFileSize.Name))
546
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
547
- if (this.addModelForm.get(this.addMaxFileCount.Name))
548
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
549
- if (this.addModelForm.get(this.addFilesExtensions.Name))
550
- this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
541
+ if (this.addModelForm.get(this.addMaxLength.name))
542
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.name), this.addMaxLength);
543
+ if (this.addModelForm.get(this.addMinLength.name))
544
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.name), this.addMinLength);
545
+ if (this.addModelForm.get(this.addMaxFileSize.name))
546
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.name), this.addMaxFileSize);
547
+ if (this.addModelForm.get(this.addMaxFileCount.name))
548
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileCount.name), this.addMaxFileCount);
549
+ if (this.addModelForm.get(this.addFilesExtensions.name))
550
+ this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.name), this.addFilesExtensions);
551
551
  break;
552
552
  case SurveyOptionType.Image:
553
- if (this.addModelForm.get(this.addMaxLength.Name))
554
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
555
- if (this.addModelForm.get(this.addMinLength.Name))
556
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
557
- if (this.addModelForm.get(this.addMaxFileSize.Name))
558
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
559
- if (this.addModelForm.get(this.addMaxFileCount.Name))
560
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
561
- if (this.addModelForm.get(this.addFilesExtensions.Name))
562
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
553
+ if (this.addModelForm.get(this.addMaxLength.name))
554
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.name), this.addMaxLength);
555
+ if (this.addModelForm.get(this.addMinLength.name))
556
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.name), this.addMinLength);
557
+ if (this.addModelForm.get(this.addMaxFileSize.name))
558
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.name), this.addMaxFileSize);
559
+ if (this.addModelForm.get(this.addMaxFileCount.name))
560
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.name), this.addMaxFileCount);
561
+ if (this.addModelForm.get(this.addFilesExtensions.name))
562
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.name), this.addFilesExtensions);
563
563
  break;
564
564
  case SurveyOptionType.MultipleSelect:
565
565
  case SurveyOptionType.SingleSelect:
566
- if (this.addModelForm.get(this.addMaxLength.Name))
567
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
568
- if (this.addModelForm.get(this.addMinLength.Name))
569
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
570
- if (this.addModelForm.get(this.addMaxFileSize.Name))
571
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
572
- if (this.addModelForm.get(this.addMaxFileCount.Name))
573
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
574
- if (this.addModelForm.get(this.addFilesExtensions.Name))
575
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
566
+ if (this.addModelForm.get(this.addMaxLength.name))
567
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.name), this.addMaxLength);
568
+ if (this.addModelForm.get(this.addMinLength.name))
569
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.name), this.addMinLength);
570
+ if (this.addModelForm.get(this.addMaxFileSize.name))
571
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.name), this.addMaxFileSize);
572
+ if (this.addModelForm.get(this.addMaxFileCount.name))
573
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.name), this.addMaxFileCount);
574
+ if (this.addModelForm.get(this.addFilesExtensions.name))
575
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.name), this.addFilesExtensions);
576
576
  break;
577
577
  default:
578
- if (this.addModelForm.get(this.addMaxLength.Name))
579
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
580
- if (this.addModelForm.get(this.addMinLength.Name))
581
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
582
- if (this.addModelForm.get(this.addMaxFileSize.Name))
583
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
584
- if (this.addModelForm.get(this.addMaxFileCount.Name))
585
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
586
- if (this.addModelForm.get(this.addFilesExtensions.Name))
587
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
578
+ if (this.addModelForm.get(this.addMaxLength.name))
579
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.name), this.addMaxLength);
580
+ if (this.addModelForm.get(this.addMinLength.name))
581
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.name), this.addMinLength);
582
+ if (this.addModelForm.get(this.addMaxFileSize.name))
583
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.name), this.addMaxFileSize);
584
+ if (this.addModelForm.get(this.addMaxFileCount.name))
585
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.name), this.addMaxFileCount);
586
+ if (this.addModelForm.get(this.addFilesExtensions.name))
587
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.name), this.addFilesExtensions);
588
588
  break;
589
589
  }
590
590
  }
591
591
  isValidFunctionReturnsBoolean(args) {
592
592
  let returnValue = true;
593
593
  this.mainFormControls = [];
594
- this.mainFormControls.push(this.addModelForm.get(this.addQuestion.Name), this.addModelForm.get(this.addDescription.Name), this.addModelForm.get(this.addQuestionType.Name), this.addModelForm.get(this.audience.Name));
594
+ this.mainFormControls.push(this.addModelForm.get(this.addQuestion.name), this.addModelForm.get(this.addDescription.name), this.addModelForm.get(this.addQuestionType.name), this.addModelForm.get(this.audience.name));
595
595
  if (args.fromStep.index == 0)
596
596
  for (var i = 0; i < this.mainFormControls.length; i++) {
597
597
  this.mainFormControls[i].markAllAsTouched();
@@ -608,7 +608,7 @@ export class AddQuestionComponent extends AppBaseComponent {
608
608
  moveItemInArray(this.optionList, event.previousIndex, event.currentIndex);
609
609
  }
610
610
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddQuestionComponent, deps: [{ token: i0.Injector }, { token: i1.SurveyQuestionService }, { token: i2.NgWizardService }], target: i0.ɵɵFactoryTarget.Component }); }
611
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AddQuestionComponent, selector: "app-add-question", inputs: { pagingElement: "pagingElement", onSuccessAddHandler: "onSuccessAddHandler" }, viewQueries: [{ propertyName: "AddModal", first: true, predicate: ["AddModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i4.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i4.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
611
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AddQuestionComponent, selector: "app-add-question", inputs: { pagingElement: "pagingElement", onSuccessAddHandler: "onSuccessAddHandler" }, viewQueries: [{ propertyName: "AddModal", first: true, predicate: ["AddModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i4.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i4.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i4.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i4.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i4.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
612
612
  }
613
613
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddQuestionComponent, decorators: [{
614
614
  type: Component,
@@ -621,4 +621,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
621
621
  }], onSuccessAddHandler: [{
622
622
  type: Input
623
623
  }] } });
624
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvc2hhcmVkL2NvbXBvbmVudHMvc3VydmV5L3N1cnZleS1pbmZvL2FkZC1xdWVzdGlvbi9hZGQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vYWRkLXF1ZXN0aW9uL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBU2pDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7Ozs7QUFPakcsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUFnQjtJQWdEeEQsWUFDVSxRQUFrQixFQUNsQixxQkFBNEMsRUFDNUMsZUFBZ0M7UUFFeEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSlIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQWpEbkMsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDbkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFFckIsaUJBQVksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxpQ0FBNEIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBZ0JqRCxxQkFBZ0IsR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBRzVELGtCQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHbEMsZUFBVSxHQUE4QixFQUFFLENBQUM7UUFFM0Msb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUt2QixtQkFBYyxHQUFZLElBQUksQ0FBQztRQTRKL0IsYUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxxQkFBcUI7aUJBQ3ZCLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2lCQUM5QixTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxNQUFNLEdBQUcsR0FBVSxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXZDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsNEJBQTRCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsNEJBQTRCLENBQUMscUJBQXFCO29CQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUN0QixJQUFJLENBQUMsNEJBQTRCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0I7b0JBQ2hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLDRCQUE0QixDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztnQkFFcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLG1CQUFtQixDQUFDO2dCQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBRTVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSwyQkFBMkIsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDO2dCQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDakQsK0JBQStCLENBQ2hDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUNsRCxnQ0FBZ0MsQ0FDakMsQ0FBQztnQkFFRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO2dCQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUVuRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO2dCQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztnQkFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztnQkFFdEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO2dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUV0RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7Z0JBRXpDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFFakUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRXZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUV2RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBRTNDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDO2dCQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBRTVDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFFaEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFFdkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFFOUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO2dCQUU5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3pDLElBQUksV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ3BDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUN6QixXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDdkQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFDdEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDckQsK0JBQStCLENBQ2hDLENBQUM7Z0JBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFDRixnQkFBVyxHQUFHLEdBQUcsRUFBRTtZQUNqQixJQUFJLFVBQVUsR0FBVSxFQUFFLENBQUM7WUFDM0IsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQVksQ0FBQztZQUN4RCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQVksQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLFNBQVM7b0JBQy9DLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO29CQUM1QyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksU0FBUzt3QkFDaEQsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQzdDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxJQUFJLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQ3JFO29CQUNBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO29CQUM1RCxPQUFPO2lCQUNSO2dCQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUNqRCxPQUFPO2lCQUNSO2FBQ0Y7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLFFBQVEsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQzFELFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMvQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNqRCxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUM3RCxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUMvRCxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDckUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO1lBQ3ZFLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLENBQUMsSUFBSTtnQkFDMUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDOztnQkFDbEQsUUFBUSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUM7WUFDN0QsUUFBUSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDekMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUNyRCxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDN0MsUUFBUSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQzNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFFbkQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2hDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7Z0JBQ25ELFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7YUFDcEQ7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFDakQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQztZQUVqRSxJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUNsQixRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1lBRTNELElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFDakMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUM7WUFFckUsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDZixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDOUIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO3dCQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO3FCQUNqRDtvQkFDRCxRQUFRLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQzVDO1lBRUgsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFDRixtQkFBYyxHQUFHLENBQUMsUUFBUSxFQUFtQixFQUFFO1lBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDO1FBNFRGLHVCQUFrQixHQUFZLElBQUksQ0FBQztJQXJ0Qm5DLENBQUM7SUFJRCxRQUFRO1FBQ04sS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2QyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxDQUNuQyxPQUF3QixFQUNBLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ2hDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ2hDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQUs7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRztRQUNsQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUN6QixlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxPQUFPLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUNELGNBQWMsQ0FBQyxHQUFHO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixRQUFRLEdBQUcsRUFBRTtZQUNYLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFFdEIsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsYUFBYTtnQkFDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFFdEIsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsTUFBTTtnQkFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFFdEIsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsS0FBSztnQkFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1lBQ3JDLEtBQUssZ0JBQWdCLENBQUMsWUFBWSxDQUFDO1lBQ25DLEtBQUssZ0JBQWdCLENBQUMsV0FBVztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLE1BQU07U0FDVDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQTJRRCxrQkFBa0IsQ0FBQyxNQUErQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUMxQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDOUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFZLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzNELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUMzQyxJQUFJLE9BQU8sR0FBRyxPQUFPLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO29CQUN6RCxPQUFPO2lCQUNSO2dCQUNELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtvQkFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQztvQkFDekQsT0FBTztpQkFDUjthQUNGO1NBQ0Y7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLE1BQU0sR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDckQsUUFBUSxDQUFDO1FBQ1QsSUFBSSxXQUFXLENBQUMsWUFBWTtZQUMxQixNQUFNLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7O1lBQzVDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRXRELE1BQU0sQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQ3RCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLE1BQVc7UUFDekMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFDRCxZQUFZLENBQUMsTUFBTTtRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUErQjtRQUN4QyxRQUFRLENBQUM7UUFDVCxJQUNFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLEtBQUs7WUFFbkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2Q7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUNyRCxNQUFNLENBQUMsZUFBZSxDQUN2QixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBaUIsRUFBRSxPQUFlO1FBQ3ZDLE9BQU8sQ0FBQyxTQUEwQixFQUFxQyxFQUFFO1lBQ3ZFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtnQkFDeEMsSUFDRSxRQUFRLENBQUMsS0FBSyxLQUFLLElBQUk7b0JBQ3ZCLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSTtvQkFDckIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUNqRDtvQkFDQSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxDQUFDLFNBQVMsQ0FBQzt3QkFDZixZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztxQkFDN0MsQ0FBQyxDQUFDO29CQUNILE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUNELElBQ0UsUUFBUSxDQUFDLEtBQUssS0FBSyxJQUFJO29CQUN2QixNQUFNLENBQUMsS0FBSyxLQUFLLElBQUk7b0JBQ3JCLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ2pELFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRztvQkFDNUIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHO29CQUU5QixNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBUTtRQUN2QixRQUFRLEdBQUcsRUFBRTtZQUNYLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssZ0JBQWdCLENBQUMsYUFBYTtnQkFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUMvQyxJQUFJLENBQUMsZUFBZSxDQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUM3QyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO29CQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQ2hELElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO29CQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUFDO2dCQUNKLE1BQU07WUFFUixLQUFLLGdCQUFnQixDQUFDLE1BQU07Z0JBQzFCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQy9DLElBQUksQ0FBQyxlQUFlLENBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQzdDLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO29CQUNqRCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQy9DLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUNoRCxJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztvQkFDckQsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztnQkFDSixNQUFNO1lBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUN4QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQzdDLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUM3QyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ2pELElBQUksQ0FBQyxlQUFlLENBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQy9DLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUNoRCxJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztvQkFDckQsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLENBQUM7Z0JBQ0osTUFBTTtZQUVSLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUM3QyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO29CQUNqRCxJQUFJLENBQUMsZUFBZSxDQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUMvQyxJQUFJLENBQUMsY0FBYyxDQUNwQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBQ2xELElBQUksQ0FBQyxlQUFlLENBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQ2hELElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO29CQUNyRCxJQUFJLENBQUMsZUFBZSxDQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztnQkFDSixNQUFNO1lBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQzdDLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUM3QyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ2pELElBQUksQ0FBQyxlQUFlLENBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQy9DLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUNoRCxJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztvQkFDckQsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztnQkFDSixNQUFNO1lBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7WUFDckMsS0FBSyxnQkFBZ0IsQ0FBQyxZQUFZO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQzdDLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUM3QyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO29CQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQ2hELElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO29CQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUFDO2dCQUNKLE1BQU07WUFFUjtnQkFDRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQzdDLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUM3QyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO29CQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQ2hELElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO29CQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUFDO2dCQUNKLE1BQU07U0FDVDtJQUNILENBQUM7SUFJRCw2QkFBNkIsQ0FBQyxJQUF3QjtRQUNwRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUMxQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDO1lBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUQ7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBd0I7UUFDdkQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLENBQUMsS0FBNEI7UUFDL0IsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0FyeUJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDZRQzNDakMsK21PQW1JQTs7MkZEeEZhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7K0lBZ0NjLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEwQi9CLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBcHBCYXNlQ29tcG9uZW50LFxyXG4gIENvbnRyb2xMYXlvdXQsXHJcbiAgQ3VzdG9tVmFsaWRhdGlvbixcclxuICBEcm9wZG93bk9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTyxcclxuICBGb3JjZURpcmVjdGlvbixcclxuICBGb3JtT3B0aW9ucyxcclxuICBJbnB1dFR5cGUsXHJcbiAgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLFxyXG4gIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLFxyXG4gIFJhbmdlTnVtYmVyLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG4gIFRvZ2dsZVNsaWRlT3B0aW9ucyxcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7XHJcbiAgTmdXaXphcmRDb25maWcsXHJcbiAgTmdXaXphcmRTZXJ2aWNlLFxyXG4gIFN0ZXBDaGFuZ2VkQXJncyxcclxuICBTdGVwVmFsaWRhdGlvbkFyZ3MsXHJcbiAgU1RFUF9TVEFURSxcclxuICBUSEVNRSxcclxufSBmcm9tICdAa3JvbnNjaHQvbmctd2l6YXJkJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXVkaWVuY2VUeXBlLCBTdXJ2ZXlPcHRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbi1vcHRpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hZGQtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkUXVlc3Rpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBxdWVzdGlvblR5cGU6IFN1cnZleU9wdGlvblR5cGU7XHJcbiAgcHVibGljIGF1ZGllbmNlVHlwZSA9IEF1ZGllbmNlVHlwZTtcclxuICBpc051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTXVsdGlGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2l6ZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFkZE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICBhZGRRdWVzdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBhZGRRdWVzdGlvblR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBhdWRpZW5jZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFJlcXVpcmVkOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkQWxsb3dTY29yZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZEhhc1NlYXJjaDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZElzQWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkTWluTGVuZ3RoOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhMZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFJvd3NOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heEZpbGVTaXplOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhGaWxlQ291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZEZpbGVzRXh0ZW5zaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFNpemU6IERyb3Bkb3duT3B0aW9ucztcclxuICBudW1iZXJWYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICBAVmlld0NoaWxkKCdBZGRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBZGRNb2RhbDogRWxlbWVudFJlZjtcclxuXHJcbiAgYWRkT3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZE5hbWVPcHRpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHNjb3JlTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBvcHRpb25MaXN0OiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUT1tdID0gW107XHJcbiAgYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc2hvd1Njb3JlT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcbiAgdG90YWxTY29yZTogbnVtYmVyID0gMDtcclxuICBtYWluRm9ybUNvbnRyb2xzOiBhbnlbXTtcclxuICBzdXJ2ZXlJRDogc3RyaW5nO1xyXG4gIGF1ZGllbmNlVHlwZUlEOiBhbnk7XHJcbiAgZGlzcGxheU9yZGVyT3B0aW9uOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93T3B0aW9uTGlzdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgb3JkZXJDaGFuZ2U6IGJvb2xlYW47XHJcbiAgaXNPcHRpb25JbkVkaXRNb2RlOiBib29sZWFuO1xyXG4gIFF1ZXN0aW9uczogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1dpemFyZFNlcnZpY2U6IE5nV2l6YXJkU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gIH1cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEyOyBpbmRleCsrKSB7XHJcbiAgICAgIHZhciBpdGVtID0geyBrZXk6IGluZGV4ICsgMSwgdmFsdWU6IGAke2luZGV4ICsgMX1gIH07XHJcbiAgICAgIHRoaXMuU2l6ZUxpc3QucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkgPSAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0qJC8pKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLmwoJ0ludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWytdPyhbLl1cXGQrfFxcZCtbLl0/XFxkKikkLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubCgnUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTY29yaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNob3dTY29yZU9wdGlvbiA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10pIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUxlbmd0aFZhbGlkYXRvcihuYW1lLCBtYXgsIG1pbikge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbbmFtZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGxldCB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICAgICAgdmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW4obWluKSk7XHJcbiAgICAgIHZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4KG1heCkpO1xyXG4gICAgICB2YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VEYXRhVHlwZShrZXkpIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybVN0YXR1cyhrZXkpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgMjU1LCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCAyNTUsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNaW5MZW5ndGguTmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gNDAwMDtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgMTAwLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCAxMDAsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuRmlsZTpcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5JbWFnZTpcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuUmFkaW9CdXR0b246XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmdXaXphcmRTZXJ2aWNlLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRNb2RhbCA9IChzdXJ2ZXlJZCwgYXVkaWVuY2VUeXBlKSA9PiB7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gc3VydmV5SWQ7XHJcbiAgICB0aGlzLmF1ZGllbmNlVHlwZUlEID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2VcclxuICAgICAgLmxvYWRBZGREcm9wZG93bih0aGlzLnN1cnZleUlEKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzIGFzIGFueTtcclxuICAgICAgICB0aGlzLlF1ZXN0aW9ucyA9IHJlc3VsdC5xdWVzdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuYWRkTW9kZWxGb3JtO1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID1cclxuICAgICAgICAgIHRoaXMuZ2V0QWRkRnVuY3Rpb247XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9XHJcbiAgICAgICAgICB0aGlzLm9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTmFtZSA9ICdUZXh0JztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLkFyYWJpY0xhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5BcmFiaWMnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uRW5nbGlzaExhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5FbmdsaXNoJztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTWF4TGVuZ3RoID0gNDAwMDtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLk5hbWUgPSAnRGVzY3JpcHRpb24nO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uTWF4TGVuZ3RoID0gMjUwO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uUm93cyA9IDI7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ1F1ZXN0aW9uRGVzY3JpcHRpb25IaW50QXJhYmljJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcclxuICAgICAgICAgICdRdWVzdGlvbkRlc2NyaXB0aW9uSGludEVuZ2xpc2gnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTmFtZSA9ICdRdWVzdGlvblR5cGVJdGVtSUQnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkxhYmVsS2V5ID0gJ1R5cGUnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5EYXRhU291cmNlID0gcmVzdWx0Lm9wdGlvblR5cGVzO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5OYW1lID0gJ0F1ZGllbmNlSXRlbUlEJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLkxhYmVsS2V5ID0gJ0F1ZGllbmNlJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLlNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuRGF0YVNvdXJjZSA9IHJlc3VsdC5hdWRpZW5jZXM7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5TZWxlY3RlZEl0ZW1zID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQXVkaWVuY2VEZXNjcmlwdGlvbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTaXplID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5OYW1lID0gJ1NpemUnO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5MYWJlbEtleSA9ICdTaXplJztcclxuICAgICAgICB0aGlzLmFkZFNpemUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuRGF0YVNvdXJjZSA9IHRoaXMuU2l6ZUxpc3Q7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLlNlbGVjdGVkSXRlbXMgPSAxMjtcclxuICAgICAgICB0aGlzLmFkZFNpemUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5OYW1lID0gJ0lzUmVxdWlyZWQnO1xyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQuTGFiZWxLZXkgPSAnSXNSZXF1aXJlZCc7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdSZXF1aXJlZERlc2NyaXB0aW9uSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRBbGxvd1Njb3JlLk5hbWUgPSAnSXNBbGxvd1Njb3JpbmcnO1xyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZS5MYWJlbEtleSA9ICdBbGxvd1Njb3JlJztcclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQWxsb3dTY29yZURlc2NyaXB0aW9uJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoLk5hbWUgPSAnSGFzU2VhcmNoJztcclxuICAgICAgICB0aGlzLmFkZEhhc1NlYXJjaC5MYWJlbEtleSA9ICdIYXNTZWFyY2gnO1xyXG5cclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUuTmFtZSA9ICdJc1Zpc2libGUnO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUuTGFiZWxLZXkgPSAnVmlzaWJsZSc7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdHZW5lcmljVmlzaWJsZUhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OYW1lID0gJ01heExlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTGFiZWxLZXkgPSAnTWF4TGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ01heEhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5OYW1lID0gJ01pbkxlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTGFiZWxLZXkgPSAnTWluTGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ01pbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk5hbWUgPSAnUm93cyc7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLkxhYmVsS2V5ID0gJ1Jvd3MnO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk51bWJlclJhbmdlLlRvID0gMjA7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lID0gJ01heEZpbGVTaXplSW5NQic7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5MYWJlbEtleSA9ICdNYXhGaWxlU2l6ZUluTUInO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZS5UbyA9IDEwMDtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUgPSAnTWF4RmlsZUNvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5MYWJlbEtleSA9ICdNYXhGaWxlc0NvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk51bWJlclJhbmdlLlRvID0gNTA7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnTWF4RmlsZUNvdW50SGludCcpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSA9ICdBbGxvd2VkRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTGFiZWxLZXkgPSAnRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQuZXh0ZW5zaW9ucztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdFeHRlbnNpb25IaW50Jyk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmFkZFZhbGlkYXRvcnModGhpcy5mcm9tVG8oJ01pbkxlbmd0aCcsICdNYXhMZW5ndGgnKSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5OYW1lID0gJ05hbWVPcHRpb24nO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5BcmFiaWNMYWJlbEtleSA9ICdOYW1lSW5BcmFiaWMnO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSAnTmFtZUluRW5nbGlzaCc7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5NYXhMZW5ndGggPSAyMjU7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5T3JkZXJPcHRpb24gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlPcmRlck9wdGlvbi5OYW1lID0gJ0Rpc3BsYXlPcmRlcic7XHJcblxyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLk5hbWUgPSAnU2NvcmUnO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTGFiZWxLZXkgPSAnU2NvcmUnO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgICBsZXQgcmFuZ2VOdW1iZXIgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICByYW5nZU51bWJlci5UbyA9IDEwMDAwMDA7XHJcbiAgICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5OYW1lID0gJ0xpbmtlZFF1ZXN0aW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTGFiZWxLZXkgPSAnTGlua2VkUXVlc3Rpb25zJztcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuRGF0YVNvdXJjZSA9IHJlc3VsdC5xdWVzdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcclxuICAgICAgICAgICdMaW5rZWRRdWVzdGlvbkRlc2NyaXB0aW9uSGludCdcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLm9wZW5Nb2RhbCh0aGlzLkFkZE1vZGFsLCAneGwnKTtcclxuICAgICAgICB0aGlzLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0pO1xyXG4gIH07XHJcbiAgZ2V0QWRkTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCByZXN1bHRPcHRpb25Nb2RlbCA9IHRoaXMuYWRkT3B0aW9uRm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmFkZE1vZGVsRm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgKHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgcmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5BcmFiaWMgIT0gJycpIHx8XHJcbiAgICAgICAgKHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaCAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaCAhPSAnJykgfHxcclxuICAgICAgICAocmVzdWx0T3B0aW9uTW9kZWwuU2NvcmUgIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlID4gMClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ09wdGlvblBlbmRpbmdEYXRhRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5vcHRpb25MaXN0Lmxlbmd0aCA9PSAwICYmIHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnT3B0aW9uRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICBsZXQgYWRkTW9kZWw6IFN1cnZleVF1ZXN0aW9uRFRPID0gbmV3IFN1cnZleVF1ZXN0aW9uRFRPKCk7XHJcbiAgICBhZGRNb2RlbC5TdXJ2ZXlJRCA9IHRoaXMuc3VydmV5SUQ7XHJcbiAgICBhZGRNb2RlbC5UZXh0LkFyYWJpYyA9IHJlc3VsdE1vZGVsLlRleHQuQXJhYmljO1xyXG4gICAgYWRkTW9kZWwuVGV4dC5FbmdsaXNoID0gcmVzdWx0TW9kZWwuVGV4dC5FbmdsaXNoO1xyXG4gICAgYWRkTW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgYWRkTW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaCA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLkRlc2NyaXB0aW9uLkFyYWJpYyA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uRW5nbGlzaCA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBpZiAodGhpcy5hdWRpZW5jZVR5cGVJRCA9PSBBdWRpZW5jZVR5cGUuQm90aClcclxuICAgICAgYWRkTW9kZWwuQXVkaWVuY2VJdGVtSUQgPSByZXN1bHRNb2RlbC5BdWRpZW5jZUl0ZW1JRDtcclxuICAgIGVsc2UgYWRkTW9kZWwuQXVkaWVuY2VJdGVtSUQgPSB0aGlzLmF1ZGllbmNlVHlwZUlEO1xyXG4gICAgYWRkTW9kZWwuUXVlc3Rpb25UeXBlSXRlbUlEID0gcmVzdWx0TW9kZWwuUXVlc3Rpb25UeXBlSXRlbUlEO1xyXG4gICAgYWRkTW9kZWwuSXNBbGxvd1Njb3JpbmcgPSByZXN1bHRNb2RlbC5Jc0FsbG93U2NvcmluZztcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuU2l6ZSA9IHJlc3VsdE1vZGVsLlNpemU7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLklzUmVxdWlyZWQgPSByZXN1bHRNb2RlbC5Jc1JlcXVpcmVkO1xyXG4gICAgYWRkTW9kZWwuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBhZGRNb2RlbC5Jc1Zpc2libGUgPSByZXN1bHRNb2RlbC5Jc1Zpc2libGU7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLkhhc1NlYXJjaCA9IHJlc3VsdE1vZGVsLkhhc1NlYXJjaDtcclxuXHJcbiAgICBpZiAodGhpcy5pc1RleHQgfHwgdGhpcy5pc051bWJlcikge1xyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1pbkxlbmd0aCA9IHJlc3VsdE1vZGVsLk1pbkxlbmd0aDtcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NYXhMZW5ndGggPSByZXN1bHRNb2RlbC5NYXhMZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNGaWxlIHx8IHRoaXMuaXNNdWx0aUZpbGUgfHwgdGhpcy5pc0ltYWdlKVxyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1heEZpbGVTaXplSW5NQiA9IHJlc3VsdE1vZGVsLk1heEZpbGVTaXplSW5NQjtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZSlcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NYXhGaWxlQ291bnQgPSByZXN1bHRNb2RlbC5NYXhGaWxlQ291bnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGUgfHwgdGhpcy5pc0ZpbGUpXHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuQWxsb3dlZEV4dGVuc2lvbnMgPSByZXN1bHRNb2RlbC5BbGxvd2VkRXh0ZW5zaW9ucztcclxuXHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdClcclxuICAgICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9uTGlzdFtpbmRleF0uRGlzcGxheU9yZGVyID0gaW5kZXggKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZGRNb2RlbC5RdWVzdGlvbk9wdGlvbnMgPSB0aGlzLm9wdGlvbkxpc3Q7XHJcbiAgICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goYWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfTtcclxuICBnZXRBZGRGdW5jdGlvbiA9IChhZGRNb2RhbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZXJyb3JNZXNzYWdlKSByZXR1cm4gdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2UuYWRkKGFkZE1vZGFsKTtcclxuICB9O1xyXG5cclxuICBnZXRMaW5rZWRRdWVzdGlvbnMob3B0aW9uOiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTykge1xyXG4gICAgcmV0dXJuIHRoaXMuUXVlc3Rpb25zLmZpbHRlcigoaXRlbSkgPT5cclxuICAgICAgb3B0aW9uLkxpbmtlZFF1ZXN0aW9ucy5pbmNsdWRlcyhpdGVtLmtleSlcclxuICAgICkubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIEFkZE9wdGlvbigpIHtcclxuICAgIHRoaXMudG90YWxTY29yZSA9IDA7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKHRoaXMuYWRkT3B0aW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuYWRkT3B0aW9uRm9ybS52YWx1ZSBhcyBhbnk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPj0gMSAmJiB0aGlzLnNob3dTY29yZU9wdGlvbikge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25MaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5vcHRpb25MaXN0W2luZGV4XS5TY29yZTtcclxuICAgICAgICBpZiAoZWxlbWVudCA+IDEwMDAwMDApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdNYXhPcHRpb25TY29yZUVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudCA8IDEpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdNaW5PcHRpb25TY29yZUVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93T3B0aW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgbGV0IG9wdGlvbiA9IG5ldyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTygpO1xyXG4gICAgb3B0aW9uLk5hbWUuQXJhYmljID0gcmVzdWx0TW9kZWwuTmFtZU9wdGlvbi5BcmFiaWM7XHJcbiAgICBvcHRpb24uTmFtZS5FbmdsaXNoID0gcmVzdWx0TW9kZWwuTmFtZU9wdGlvbi5FbmdsaXNoO1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAocmVzdWx0TW9kZWwuRGlzcGxheU9yZGVyKVxyXG4gICAgICBvcHRpb24uRGlzcGxheU9yZGVyID0gcmVzdWx0TW9kZWwuRGlzcGxheU9yZGVyO1xyXG4gICAgZWxzZSBvcHRpb24uRGlzcGxheU9yZGVyID0gdGhpcy5vcHRpb25MaXN0Lmxlbmd0aCArIDE7XHJcblxyXG4gICAgb3B0aW9uLkxpbmtlZFF1ZXN0aW9ucyA9IHJlc3VsdE1vZGVsLkxpbmtlZFF1ZXN0aW9ucztcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbilcclxuICAgICAgb3B0aW9uLlNjb3JlID0gTnVtYmVyLnBhcnNlRmxvYXQocmVzdWx0TW9kZWwuU2NvcmUpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ05hbWVPcHRpb24nXS5yZXNldCgpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydEaXNwbGF5T3JkZXInXS5yZXNldCgpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydMaW5rZWRRdWVzdGlvbnMnXS5yZXNldCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKSB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10ucmVzZXQoKTtcclxuICAgIHRoaXMub3B0aW9uTGlzdC5zcGxpY2Uob3B0aW9uLkRpc3BsYXlPcmRlciAtIDEsIDAsIG9wdGlvbik7XHJcbiAgICB0aGlzLnNob3dPcHRpb25MaXN0ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlID0gZmFsc2U7XHJcbiAgfVxyXG4gIGdldE9wdGlvbkJ5T3JkZXIoaW5kZXg6IG51bWJlciwgb3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiBvcHRpb24uRGlzcGxheU9yZGVyO1xyXG4gIH1cclxuICBkZWxldGVPcHRpb24ob3B0aW9uKSB7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICBlZGl0T3B0aW9uKG9wdGlvbjogU3VydmV5UXVlc3Rpb25PcHRpb25EVE8pIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5hZGRPcHRpb25Gb3JtLnRvdWNoZWQgPT0gdHJ1ZSAmJiB0aGlzLmFkZE9wdGlvbkZvcm0udmFsaWQpIHx8XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS50b3VjaGVkID09IGZhbHNlXHJcbiAgICApXHJcbiAgICAgIHRoaXMuQWRkT3B0aW9uKCk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgbmFtZS5BcmFiaWMgPSBvcHRpb24uTmFtZS5BcmFiaWMgPz8gbnVsbDtcclxuICAgIG5hbWUuRW5nbGlzaCA9IG9wdGlvbi5OYW1lLkVuZ2xpc2ggPz8gbnVsbDtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTmFtZU9wdGlvbiddLnNldFZhbHVlKG5hbWUpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydEaXNwbGF5T3JkZXInXS5zZXRWYWx1ZShvcHRpb24uRGlzcGxheU9yZGVyKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTGlua2VkUXVlc3Rpb25zJ10uc2V0VmFsdWUoXHJcbiAgICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnNcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5zZXRWYWx1ZShvcHRpb24uU2NvcmUpO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gdGhpcy5vcHRpb25MaXN0LmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSBvcHRpb24pO1xyXG4gICAgdGhpcy5pc09wdGlvbkluRWRpdE1vZGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZnJvbVRvKGZyb21GaWVsZDogc3RyaW5nLCB0b0ZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgZnJvbURhdGUgPSBmb3JtR3JvdXAuZ2V0KGZyb21GaWVsZCk7XHJcbiAgICAgIGNvbnN0IHRvRGF0ZSA9IGZvcm1Hcm91cC5nZXQodG9GaWVsZCk7XHJcbiAgICAgIGlmIChmcm9tRGF0ZSAhPT0gbnVsbCAmJiB0b0RhdGUgIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmcm9tRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgdG9EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPiBwYXJzZUludCh0b0RhdGUudmFsdWUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBmcm9tRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdG9EYXRlLnNldEVycm9ycyh7XHJcbiAgICAgICAgICAgIGVycm9yTWFzc2FnZTogdGhpcy5sKCdHcmVhdGVyVGhhbk9yRXF1YWxUbycpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJvbURhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHRvRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpIDwgcGFyc2VJbnQodG9EYXRlLnZhbHVlKSAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQodG9EYXRlLnZhbHVlKSA8IDI1NSAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpIDwgMjU1XHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgdG9EYXRlLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybVN0YXR1cyhrZXk6IGFueSkge1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTnVtYmVyOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuRmlsZTpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkltYWdlOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVmFsaWRUeXBlQm9vbGVhbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGlzVmFsaWRGdW5jdGlvblJldHVybnNCb29sZWFuKGFyZ3M6IFN0ZXBWYWxpZGF0aW9uQXJncykge1xyXG4gICAgbGV0IHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgIHRoaXMubWFpbkZvcm1Db250cm9scyA9IFtdO1xyXG4gICAgdGhpcy5tYWluRm9ybUNvbnRyb2xzLnB1c2goXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZFF1ZXN0aW9uLk5hbWUpLFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGREZXNjcmlwdGlvbi5OYW1lKSxcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkUXVlc3Rpb25UeXBlLk5hbWUpLFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hdWRpZW5jZS5OYW1lKVxyXG4gICAgKTtcclxuICAgIGlmIChhcmdzLmZyb21TdGVwLmluZGV4ID09IDApXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tYWluRm9ybUNvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5tYWluRm9ybUNvbnRyb2xzW2ldLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICBpZiAoIXRoaXMubWFpbkZvcm1Db250cm9sc1tpXS52YWxpZCkgcmV0dXJuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gIH1cclxuXHJcbiAgaXNWYWxpZEZ1bmN0aW9uUmV0dXJuc09ic2VydmFibGUoYXJnczogU3RlcFZhbGlkYXRpb25BcmdzKSB7XHJcbiAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvL2RyYWcgYW5kIGRyb3BcclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm9wdGlvbkxpc3QsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjQWRkTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XHJcbiAgICAgIHt7bChcIkFkZF9RdWVzdGlvblwiKX19XHJcbiAgICA8L2g0PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHN2Zy1pY29uLWhvdmVyLWJyYW5kXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvbW9kYWxjbG9zZS5zdmcnXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJhZGRRdWVzdGlvblwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cImFkZERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJhdWRpZW5jZVR5cGVJRD09YXVkaWVuY2VUeXBlLkJvdGhcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYXVkaWVuY2VcIiAgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkUXVlc3Rpb25UeXBlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VEYXRhVHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRTaXplXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzU2VsZWN0XCIgPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZEFsbG93U2NvcmVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZVNjb3JpbmcoJGV2ZW50KVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJhZGRJc0FjdGl2ZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJhZGRSZXF1aXJlZFwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWluTGVuZ3RoXCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNYXhMZW5ndGhcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWF4RmlsZVNpemVcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGV8fGlzSW1hZ2VcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNYXhGaWxlQ291bnRcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZEZpbGVzRXh0ZW5zaW9uc1wiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1NlbGVjdFwiIGNsYXNzPVwicXVlc3Rpb24tdHlwZS1vcHRpb25cIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibWItNFwiPnt7bCgnT3B0aW9ucycpfX08L2g1PlxyXG4gICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCIgKm5nSWY9XCJzaG93T3B0aW9uTGlzdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtbGlzdGluZ1wiICpuZ0Zvcj1cImxldCBPcHRpb24gb2Ygb3B0aW9uTGlzdDtcIiBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGZzLTYgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tnZXRDdXJyZW50RmFpbE92ZXIoT3B0aW9uLk5hbWUpfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1kYXJrIG1lLTRcIiAqbmdJZj1cInNob3dTY29yZU9wdGlvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ1Njb3JlJyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tPcHRpb24uU2NvcmV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1icmFuZCBjdXJzb3ItcG9pbnRlciBtZS00XCIgKm5nSWY9XCJPcHRpb24uTGlua2VkUXVlc3Rpb25zPy5sZW5ndGg+MFwiIG5nYlRvb2x0aXA9XCJ7e2dldExpbmtlZFF1ZXN0aW9ucyhPcHRpb24pfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWJyYW5kIGN1cnNvci1wb2ludGVyIG1lLTRcIiAoY2xpY2spPVwiZWRpdE9wdGlvbihPcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdFZGl0Jyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL0VkaXQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdEZWxldGUnKX19XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlT3B0aW9uKE9wdGlvbilcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZleS1hbGVydC1kYW5nZXIgYWxlcnQtZGFuZ2VyXCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi1kYW5nZXIgbWUtNFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPjxkaXYgY2xhc3M9XCJmcy03IHRleHQtZGFuZ2VyXCI+e3tlcnJvck1lc3NhZ2V9fTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGVhdGVyLWJnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImFkZE5hbWVPcHRpb25cIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRPcHRpb25MaW5rZWRRdWVzdGlvbnNcIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImRpc3BsYXlPcmRlck9wdGlvblwiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJzaG93U2NvcmVPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzY29yZU51bWJlclwiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkFkZE9wdGlvbigpXCIgKm5nSWY9XCIhaXNPcHRpb25JbkVkaXRNb2RlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZCB3LTEwMFwiPnt7bChcIkFkZFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkFkZE9wdGlvbigpXCIgKm5nSWY9XCJpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiRWRpdFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgcGItMCBtLTBcIiA+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIiAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7bChcIkNhbmNlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGFwcFByZXZlbnREb3VibGVDbGljayB0eXBlPVwic3VibWl0XCIgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kXCI+e3tsKFwiU2F2ZVwiKX19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
624
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvc2hhcmVkL2NvbXBvbmVudHMvc3VydmV5L3N1cnZleS1pbmZvL2FkZC1xdWVzdGlvbi9hZGQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vYWRkLXF1ZXN0aW9uL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBU2pDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFN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QUMsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUQ7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBd0I7UUFDdkQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLENBQUMsS0FBNEI7UUFDL0IsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0FyeUJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDZRQzNDakMsK21PQW1JQTs7MkZEeEZhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7K0lBZ0NjLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEwQi9CLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBcHBCYXNlQ29tcG9uZW50LFxyXG4gIENvbnRyb2xMYXlvdXQsXHJcbiAgQ3VzdG9tVmFsaWRhdGlvbixcclxuICBEcm9wZG93bk9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTyxcclxuICBGb3JjZURpcmVjdGlvbixcclxuICBGb3JtT3B0aW9ucyxcclxuICBJbnB1dFR5cGUsXHJcbiAgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLFxyXG4gIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLFxyXG4gIFJhbmdlTnVtYmVyLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG4gIFRvZ2dsZVNsaWRlT3B0aW9ucyxcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7XHJcbiAgTmdXaXphcmRDb25maWcsXHJcbiAgTmdXaXphcmRTZXJ2aWNlLFxyXG4gIFN0ZXBDaGFuZ2VkQXJncyxcclxuICBTdGVwVmFsaWRhdGlvbkFyZ3MsXHJcbiAgU1RFUF9TVEFURSxcclxuICBUSEVNRSxcclxufSBmcm9tICdAa3JvbnNjaHQvbmctd2l6YXJkJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXVkaWVuY2VUeXBlLCBTdXJ2ZXlPcHRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbi1vcHRpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hZGQtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkUXVlc3Rpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBxdWVzdGlvblR5cGU6IFN1cnZleU9wdGlvblR5cGU7XHJcbiAgcHVibGljIGF1ZGllbmNlVHlwZSA9IEF1ZGllbmNlVHlwZTtcclxuICBpc051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTXVsdGlGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2l6ZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFkZE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICBhZGRRdWVzdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBhZGRRdWVzdGlvblR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBhdWRpZW5jZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFJlcXVpcmVkOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkQWxsb3dTY29yZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZEhhc1NlYXJjaDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZElzQWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkTWluTGVuZ3RoOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhMZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFJvd3NOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heEZpbGVTaXplOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhGaWxlQ291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZEZpbGVzRXh0ZW5zaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFNpemU6IERyb3Bkb3duT3B0aW9ucztcclxuICBudW1iZXJWYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICBAVmlld0NoaWxkKCdBZGRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBZGRNb2RhbDogRWxlbWVudFJlZjtcclxuXHJcbiAgYWRkT3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZE5hbWVPcHRpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHNjb3JlTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBvcHRpb25MaXN0OiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUT1tdID0gW107XHJcbiAgYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc2hvd1Njb3JlT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcbiAgdG90YWxTY29yZTogbnVtYmVyID0gMDtcclxuICBtYWluRm9ybUNvbnRyb2xzOiBhbnlbXTtcclxuICBzdXJ2ZXlJRDogc3RyaW5nO1xyXG4gIGF1ZGllbmNlVHlwZUlEOiBhbnk7XHJcbiAgZGlzcGxheU9yZGVyT3B0aW9uOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93T3B0aW9uTGlzdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgb3JkZXJDaGFuZ2U6IGJvb2xlYW47XHJcbiAgaXNPcHRpb25JbkVkaXRNb2RlOiBib29sZWFuO1xyXG4gIFF1ZXN0aW9uczogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1dpemFyZFNlcnZpY2U6IE5nV2l6YXJkU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gIH1cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEyOyBpbmRleCsrKSB7XHJcbiAgICAgIHZhciBpdGVtID0geyBrZXk6IGluZGV4ICsgMSwgdmFsdWU6IGAke2luZGV4ICsgMX1gIH07XHJcbiAgICAgIHRoaXMuU2l6ZUxpc3QucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkgPSAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0qJC8pKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLmwoJ0ludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWytdPyhbLl1cXGQrfFxcZCtbLl0/XFxkKikkLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubCgnUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTY29yaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNob3dTY29yZU9wdGlvbiA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10pIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUxlbmd0aFZhbGlkYXRvcihuYW1lLCBtYXgsIG1pbikge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbbmFtZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGxldCB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICAgICAgdmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW4obWluKSk7XHJcbiAgICAgIHZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4KG1heCkpO1xyXG4gICAgICB2YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VEYXRhVHlwZShrZXkpIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybVN0YXR1cyhrZXkpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGgubmFtZSwgMjU1LCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5uYW1lLCAyNTUsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLm51bWJlclJhbmdlLmZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLm51bWJlclJhbmdlLnRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLm51bWJlclJhbmdlLmZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLm51bWJlclJhbmdlLnRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGgubmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNaW5MZW5ndGgubmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGgubnVtYmVyUmFuZ2UuZnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGgubnVtYmVyUmFuZ2UudG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLm51bWJlclJhbmdlLmZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLm51bWJlclJhbmdlLnRvID0gNDAwMDtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGgubmFtZSwgMTAwLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5uYW1lLCAxMDAsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLm51bWJlclJhbmdlLmZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLm51bWJlclJhbmdlLnRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLm51bWJlclJhbmdlLmZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLm51bWJlclJhbmdlLnRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuRmlsZTpcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5JbWFnZTpcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuUmFkaW9CdXR0b246XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmdXaXphcmRTZXJ2aWNlLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRNb2RhbCA9IChzdXJ2ZXlJZCwgYXVkaWVuY2VUeXBlKSA9PiB7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gc3VydmV5SWQ7XHJcbiAgICB0aGlzLmF1ZGllbmNlVHlwZUlEID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2VcclxuICAgICAgLmxvYWRBZGREcm9wZG93bih0aGlzLnN1cnZleUlEKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzIGFzIGFueTtcclxuICAgICAgICB0aGlzLlF1ZXN0aW9ucyA9IHJlc3VsdC5xdWVzdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuYWRkTW9kZWxGb3JtO1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID1cclxuICAgICAgICAgIHRoaXMuZ2V0QWRkRnVuY3Rpb247XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMub25TdWNjZXNzSGFuZGxlciA9XHJcbiAgICAgICAgICB0aGlzLm9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24ubmFtZSA9ICdUZXh0JztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLmFyYWJpY0xhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5BcmFiaWMnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uZW5nbGlzaExhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5FbmdsaXNoJztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24ubWF4TGVuZ3RoID0gNDAwMDtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLmxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLm5hbWUgPSAnRGVzY3JpcHRpb24nO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uYXJhYmljTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5lbmdsaXNoTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24ubWF4TGVuZ3RoID0gMjUwO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24ucm93cyA9IDI7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5sYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5hcmFiaWNMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ1F1ZXN0aW9uRGVzY3JpcHRpb25IaW50QXJhYmljJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5lbmdsaXNoTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcclxuICAgICAgICAgICdRdWVzdGlvbkRlc2NyaXB0aW9uSGludEVuZ2xpc2gnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUubmFtZSA9ICdRdWVzdGlvblR5cGVJdGVtSUQnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLmxhYmVsS2V5ID0gJ1R5cGUnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5kYXRhU291cmNlID0gcmVzdWx0Lm9wdGlvblR5cGVzO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUubm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5uYW1lID0gJ0F1ZGllbmNlSXRlbUlEJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLmxhYmVsS2V5ID0gJ0F1ZGllbmNlJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2Uudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2Uuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLnNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuZGF0YVNvdXJjZSA9IHJlc3VsdC5hdWRpZW5jZXM7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5zZWxlY3RlZEl0ZW1zID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQXVkaWVuY2VEZXNjcmlwdGlvbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTaXplID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5uYW1lID0gJ1NpemUnO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5sYWJlbEtleSA9ICdTaXplJztcclxuICAgICAgICB0aGlzLmFkZFNpemUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuZGF0YVNvdXJjZSA9IHRoaXMuU2l6ZUxpc3Q7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLnNlbGVjdGVkSXRlbXMgPSAxMjtcclxuICAgICAgICB0aGlzLmFkZFNpemUubm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5uYW1lID0gJ0lzUmVxdWlyZWQnO1xyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQubGFiZWxLZXkgPSAnSXNSZXF1aXJlZCc7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdSZXF1aXJlZERlc2NyaXB0aW9uSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRBbGxvd1Njb3JlLm5hbWUgPSAnSXNBbGxvd1Njb3JpbmcnO1xyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZS5sYWJlbEtleSA9ICdBbGxvd1Njb3JlJztcclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQWxsb3dTY29yZURlc2NyaXB0aW9uJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoLm5hbWUgPSAnSGFzU2VhcmNoJztcclxuICAgICAgICB0aGlzLmFkZEhhc1NlYXJjaC5sYWJlbEtleSA9ICdIYXNTZWFyY2gnO1xyXG5cclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUubmFtZSA9ICdJc1Zpc2libGUnO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUubGFiZWxLZXkgPSAnVmlzaWJsZSc7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdHZW5lcmljVmlzaWJsZUhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5uYW1lID0gJ01heExlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGgubGFiZWxLZXkgPSAnTWF4TGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5udW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLnR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ01heEhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5uYW1lID0gJ01pbkxlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGgubGFiZWxLZXkgPSAnTWluTGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5udW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLnR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ01pbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLm5hbWUgPSAnUm93cyc7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLmxhYmVsS2V5ID0gJ1Jvd3MnO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIubnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIubnVtYmVyUmFuZ2UuZnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLm51bWJlclJhbmdlLnRvID0gMjA7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLnR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5uYW1lID0gJ01heEZpbGVTaXplSW5NQic7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5sYWJlbEtleSA9ICdNYXhGaWxlU2l6ZUluTUInO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5udW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUubnVtYmVyUmFuZ2UuZnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5udW1iZXJSYW5nZS50byA9IDEwMDtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLnR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lm5hbWUgPSAnTWF4RmlsZUNvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5sYWJlbEtleSA9ICdNYXhGaWxlc0NvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5udW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lm51bWJlclJhbmdlLmZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lm51bWJlclJhbmdlLnRvID0gNTA7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQudHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnTWF4RmlsZUNvdW50SGludCcpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LmN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMubmFtZSA9ICdBbGxvd2VkRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMubGFiZWxLZXkgPSAnRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLmRhdGFTb3VyY2UgPSByZXN1bHQuZXh0ZW5zaW9ucztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdFeHRlbnNpb25IaW50Jyk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMubm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmFkZFZhbGlkYXRvcnModGhpcy5mcm9tVG8oJ01pbkxlbmd0aCcsICdNYXhMZW5ndGgnKSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5uYW1lID0gJ05hbWVPcHRpb24nO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5hcmFiaWNMYWJlbEtleSA9ICdOYW1lSW5BcmFiaWMnO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5lbmdsaXNoTGFiZWxLZXkgPSAnTmFtZUluRW5nbGlzaCc7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5tYXhMZW5ndGggPSAyMjU7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLmxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5T3JkZXJPcHRpb24gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlPcmRlck9wdGlvbi5uYW1lID0gJ0Rpc3BsYXlPcmRlcic7XHJcblxyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLm5hbWUgPSAnU2NvcmUnO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIubGFiZWxLZXkgPSAnU2NvcmUnO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci50eXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgICBsZXQgcmFuZ2VOdW1iZXIgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICByYW5nZU51bWJlci50byA9IDEwMDAwMDA7XHJcbiAgICAgICAgcmFuZ2VOdW1iZXIuZnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5udW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5uYW1lID0gJ0xpbmtlZFF1ZXN0aW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMubGFiZWxLZXkgPSAnTGlua2VkUXVlc3Rpb25zJztcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuZGF0YVNvdXJjZSA9IHJlc3VsdC5xdWVzdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMubm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcclxuICAgICAgICAgICdMaW5rZWRRdWVzdGlvbkRlc2NyaXB0aW9uSGludCdcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLm9wZW5Nb2RhbCh0aGlzLkFkZE1vZGFsLCAneGwnKTtcclxuICAgICAgICB0aGlzLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0pO1xyXG4gIH07XHJcbiAgZ2V0QWRkTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCByZXN1bHRPcHRpb25Nb2RlbCA9IHRoaXMuYWRkT3B0aW9uRm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmFkZE1vZGVsRm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgKHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgcmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5BcmFiaWMgIT0gJycpIHx8XHJcbiAgICAgICAgKHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaCAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaCAhPSAnJykgfHxcclxuICAgICAgICAocmVzdWx0T3B0aW9uTW9kZWwuU2NvcmUgIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlID4gMClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ09wdGlvblBlbmRpbmdEYXRhRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5vcHRpb25MaXN0Lmxlbmd0aCA9PSAwICYmIHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnT3B0aW9uRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICBsZXQgYWRkTW9kZWw6IFN1cnZleVF1ZXN0aW9uRFRPID0gbmV3IFN1cnZleVF1ZXN0aW9uRFRPKCk7XHJcbiAgICBhZGRNb2RlbC5TdXJ2ZXlJRCA9IHRoaXMuc3VydmV5SUQ7XHJcbiAgICBhZGRNb2RlbC5UZXh0LmFyYWJpYyA9IHJlc3VsdE1vZGVsLlRleHQuQXJhYmljO1xyXG4gICAgYWRkTW9kZWwuVGV4dC5lbmdsaXNoID0gcmVzdWx0TW9kZWwuVGV4dC5FbmdsaXNoO1xyXG4gICAgYWRkTW9kZWwuRGVzY3JpcHRpb24uYXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgYWRkTW9kZWwuRGVzY3JpcHRpb24uZW5nbGlzaCA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLkRlc2NyaXB0aW9uLmFyYWJpYyA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uZW5nbGlzaCA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBpZiAodGhpcy5hdWRpZW5jZVR5cGVJRCA9PSBBdWRpZW5jZVR5cGUuQm90aClcclxuICAgICAgYWRkTW9kZWwuQXVkaWVuY2VJdGVtSUQgPSByZXN1bHRNb2RlbC5BdWRpZW5jZUl0ZW1JRDtcclxuICAgIGVsc2UgYWRkTW9kZWwuQXVkaWVuY2VJdGVtSUQgPSB0aGlzLmF1ZGllbmNlVHlwZUlEO1xyXG4gICAgYWRkTW9kZWwuUXVlc3Rpb25UeXBlSXRlbUlEID0gcmVzdWx0TW9kZWwuUXVlc3Rpb25UeXBlSXRlbUlEO1xyXG4gICAgYWRkTW9kZWwuSXNBbGxvd1Njb3JpbmcgPSByZXN1bHRNb2RlbC5Jc0FsbG93U2NvcmluZztcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuU2l6ZSA9IHJlc3VsdE1vZGVsLlNpemU7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLklzUmVxdWlyZWQgPSByZXN1bHRNb2RlbC5Jc1JlcXVpcmVkO1xyXG4gICAgYWRkTW9kZWwuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBhZGRNb2RlbC5Jc1Zpc2libGUgPSByZXN1bHRNb2RlbC5Jc1Zpc2libGU7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLkhhc1NlYXJjaCA9IHJlc3VsdE1vZGVsLkhhc1NlYXJjaDtcclxuXHJcbiAgICBpZiAodGhpcy5pc1RleHQgfHwgdGhpcy5pc051bWJlcikge1xyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1pbkxlbmd0aCA9IHJlc3VsdE1vZGVsLk1pbkxlbmd0aDtcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NYXhMZW5ndGggPSByZXN1bHRNb2RlbC5NYXhMZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNGaWxlIHx8IHRoaXMuaXNNdWx0aUZpbGUgfHwgdGhpcy5pc0ltYWdlKVxyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1heEZpbGVTaXplSW5NQiA9IHJlc3VsdE1vZGVsLk1heEZpbGVTaXplSW5NQjtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZSlcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NYXhGaWxlQ291bnQgPSByZXN1bHRNb2RlbC5NYXhGaWxlQ291bnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGUgfHwgdGhpcy5pc0ZpbGUpXHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuQWxsb3dlZEV4dGVuc2lvbnMgPSByZXN1bHRNb2RlbC5BbGxvd2VkRXh0ZW5zaW9ucztcclxuXHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdClcclxuICAgICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9uTGlzdFtpbmRleF0uRGlzcGxheU9yZGVyID0gaW5kZXggKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZGRNb2RlbC5RdWVzdGlvbk9wdGlvbnMgPSB0aGlzLm9wdGlvbkxpc3Q7XHJcbiAgICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goYWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfTtcclxuICBnZXRBZGRGdW5jdGlvbiA9IChhZGRNb2RhbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZXJyb3JNZXNzYWdlKSByZXR1cm4gdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2UuYWRkKGFkZE1vZGFsKTtcclxuICB9O1xyXG5cclxuICBnZXRMaW5rZWRRdWVzdGlvbnMob3B0aW9uOiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTykge1xyXG4gICAgcmV0dXJuIHRoaXMuUXVlc3Rpb25zLmZpbHRlcigoaXRlbSkgPT5cclxuICAgICAgb3B0aW9uLkxpbmtlZFF1ZXN0aW9ucy5pbmNsdWRlcyhpdGVtLmtleSlcclxuICAgICkubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIEFkZE9wdGlvbigpIHtcclxuICAgIHRoaXMudG90YWxTY29yZSA9IDA7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKHRoaXMuYWRkT3B0aW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuYWRkT3B0aW9uRm9ybS52YWx1ZSBhcyBhbnk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPj0gMSAmJiB0aGlzLnNob3dTY29yZU9wdGlvbikge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25MaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5vcHRpb25MaXN0W2luZGV4XS5TY29yZTtcclxuICAgICAgICBpZiAoZWxlbWVudCA+IDEwMDAwMDApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdNYXhPcHRpb25TY29yZUVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudCA8IDEpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdNaW5PcHRpb25TY29yZUVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93T3B0aW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgbGV0IG9wdGlvbiA9IG5ldyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTygpO1xyXG4gICAgb3B0aW9uLk5hbWUuYXJhYmljID0gcmVzdWx0TW9kZWwuTmFtZU9wdGlvbi5BcmFiaWM7XHJcbiAgICBvcHRpb24uTmFtZS5lbmdsaXNoID0gcmVzdWx0TW9kZWwuTmFtZU9wdGlvbi5FbmdsaXNoO1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAocmVzdWx0TW9kZWwuRGlzcGxheU9yZGVyKVxyXG4gICAgICBvcHRpb24uRGlzcGxheU9yZGVyID0gcmVzdWx0TW9kZWwuRGlzcGxheU9yZGVyO1xyXG4gICAgZWxzZSBvcHRpb24uRGlzcGxheU9yZGVyID0gdGhpcy5vcHRpb25MaXN0Lmxlbmd0aCArIDE7XHJcblxyXG4gICAgb3B0aW9uLkxpbmtlZFF1ZXN0aW9ucyA9IHJlc3VsdE1vZGVsLkxpbmtlZFF1ZXN0aW9ucztcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbilcclxuICAgICAgb3B0aW9uLlNjb3JlID0gTnVtYmVyLnBhcnNlRmxvYXQocmVzdWx0TW9kZWwuU2NvcmUpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ05hbWVPcHRpb24nXS5yZXNldCgpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydEaXNwbGF5T3JkZXInXS5yZXNldCgpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydMaW5rZWRRdWVzdGlvbnMnXS5yZXNldCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKSB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10ucmVzZXQoKTtcclxuICAgIHRoaXMub3B0aW9uTGlzdC5zcGxpY2Uob3B0aW9uLkRpc3BsYXlPcmRlciAtIDEsIDAsIG9wdGlvbik7XHJcbiAgICB0aGlzLnNob3dPcHRpb25MaXN0ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlID0gZmFsc2U7XHJcbiAgfVxyXG4gIGdldE9wdGlvbkJ5T3JkZXIoaW5kZXg6IG51bWJlciwgb3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiBvcHRpb24uRGlzcGxheU9yZGVyO1xyXG4gIH1cclxuICBkZWxldGVPcHRpb24ob3B0aW9uKSB7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICBlZGl0T3B0aW9uKG9wdGlvbjogU3VydmV5UXVlc3Rpb25PcHRpb25EVE8pIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5hZGRPcHRpb25Gb3JtLnRvdWNoZWQgPT0gdHJ1ZSAmJiB0aGlzLmFkZE9wdGlvbkZvcm0udmFsaWQpIHx8XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS50b3VjaGVkID09IGZhbHNlXHJcbiAgICApXHJcbiAgICAgIHRoaXMuQWRkT3B0aW9uKCk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgbmFtZS5hcmFiaWMgPSBvcHRpb24uTmFtZS5hcmFiaWMgPz8gbnVsbDtcclxuICAgIG5hbWUuZW5nbGlzaCA9IG9wdGlvbi5OYW1lLmVuZ2xpc2ggPz8gbnVsbDtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTmFtZU9wdGlvbiddLnNldFZhbHVlKG5hbWUpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydEaXNwbGF5T3JkZXInXS5zZXRWYWx1ZShvcHRpb24uRGlzcGxheU9yZGVyKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTGlua2VkUXVlc3Rpb25zJ10uc2V0VmFsdWUoXHJcbiAgICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnNcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5zZXRWYWx1ZShvcHRpb24uU2NvcmUpO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gdGhpcy5vcHRpb25MaXN0LmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSBvcHRpb24pO1xyXG4gICAgdGhpcy5pc09wdGlvbkluRWRpdE1vZGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZnJvbVRvKGZyb21GaWVsZDogc3RyaW5nLCB0b0ZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgZnJvbURhdGUgPSBmb3JtR3JvdXAuZ2V0KGZyb21GaWVsZCk7XHJcbiAgICAgIGNvbnN0IHRvRGF0ZSA9IGZvcm1Hcm91cC5nZXQodG9GaWVsZCk7XHJcbiAgICAgIGlmIChmcm9tRGF0ZSAhPT0gbnVsbCAmJiB0b0RhdGUgIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmcm9tRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgdG9EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPiBwYXJzZUludCh0b0RhdGUudmFsdWUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBmcm9tRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdG9EYXRlLnNldEVycm9ycyh7XHJcbiAgICAgICAgICAgIGVycm9yTWFzc2FnZTogdGhpcy5sKCdHcmVhdGVyVGhhbk9yRXF1YWxUbycpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJvbURhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHRvRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpIDwgcGFyc2VJbnQodG9EYXRlLnZhbHVlKSAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQodG9EYXRlLnZhbHVlKSA8IDI1NSAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpIDwgMjU1XHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgdG9EYXRlLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybVN0YXR1cyhrZXk6IGFueSkge1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGgubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTnVtYmVyOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGgubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuRmlsZTpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5uYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGgubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5uYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5uYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5uYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGgubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5uYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5uYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkltYWdlOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGgubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLm5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5uYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5uYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGgubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGgubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5uYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5uYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGgubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGgubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5uYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQubmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMubmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLm5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVmFsaWRUeXBlQm9vbGVhbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGlzVmFsaWRGdW5jdGlvblJldHVybnNCb29sZWFuKGFyZ3M6IFN0ZXBWYWxpZGF0aW9uQXJncykge1xyXG4gICAgbGV0IHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgIHRoaXMubWFpbkZvcm1Db250cm9scyA9IFtdO1xyXG4gICAgdGhpcy5tYWluRm9ybUNvbnRyb2xzLnB1c2goXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZFF1ZXN0aW9uLm5hbWUpLFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGREZXNjcmlwdGlvbi5uYW1lKSxcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkUXVlc3Rpb25UeXBlLm5hbWUpLFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hdWRpZW5jZS5uYW1lKVxyXG4gICAgKTtcclxuICAgIGlmIChhcmdzLmZyb21TdGVwLmluZGV4ID09IDApXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tYWluRm9ybUNvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5tYWluRm9ybUNvbnRyb2xzW2ldLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICBpZiAoIXRoaXMubWFpbkZvcm1Db250cm9sc1tpXS52YWxpZCkgcmV0dXJuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gIH1cclxuXHJcbiAgaXNWYWxpZEZ1bmN0aW9uUmV0dXJuc09ic2VydmFibGUoYXJnczogU3RlcFZhbGlkYXRpb25BcmdzKSB7XHJcbiAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvL2RyYWcgYW5kIGRyb3BcclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm9wdGlvbkxpc3QsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjQWRkTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XHJcbiAgICAgIHt7bChcIkFkZF9RdWVzdGlvblwiKX19XHJcbiAgICA8L2g0PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHN2Zy1pY29uLWhvdmVyLWJyYW5kXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvbW9kYWxjbG9zZS5zdmcnXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJhZGRRdWVzdGlvblwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cImFkZERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJhdWRpZW5jZVR5cGVJRD09YXVkaWVuY2VUeXBlLkJvdGhcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYXVkaWVuY2VcIiAgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkUXVlc3Rpb25UeXBlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VEYXRhVHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRTaXplXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzU2VsZWN0XCIgPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZEFsbG93U2NvcmVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZVNjb3JpbmcoJGV2ZW50KVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJhZGRJc0FjdGl2ZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJhZGRSZXF1aXJlZFwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWluTGVuZ3RoXCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNYXhMZW5ndGhcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWF4RmlsZVNpemVcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGV8fGlzSW1hZ2VcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNYXhGaWxlQ291bnRcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZEZpbGVzRXh0ZW5zaW9uc1wiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1NlbGVjdFwiIGNsYXNzPVwicXVlc3Rpb24tdHlwZS1vcHRpb25cIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibWItNFwiPnt7bCgnT3B0aW9ucycpfX08L2g1PlxyXG4gICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCIgKm5nSWY9XCJzaG93T3B0aW9uTGlzdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtbGlzdGluZ1wiICpuZ0Zvcj1cImxldCBPcHRpb24gb2Ygb3B0aW9uTGlzdDtcIiBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGZzLTYgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tnZXRDdXJyZW50RmFpbE92ZXIoT3B0aW9uLk5hbWUpfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1kYXJrIG1lLTRcIiAqbmdJZj1cInNob3dTY29yZU9wdGlvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ1Njb3JlJyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tPcHRpb24uU2NvcmV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1icmFuZCBjdXJzb3ItcG9pbnRlciBtZS00XCIgKm5nSWY9XCJPcHRpb24uTGlua2VkUXVlc3Rpb25zPy5sZW5ndGg+MFwiIG5nYlRvb2x0aXA9XCJ7e2dldExpbmtlZFF1ZXN0aW9ucyhPcHRpb24pfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWJyYW5kIGN1cnNvci1wb2ludGVyIG1lLTRcIiAoY2xpY2spPVwiZWRpdE9wdGlvbihPcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdFZGl0Jyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL0VkaXQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdEZWxldGUnKX19XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlT3B0aW9uKE9wdGlvbilcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZleS1hbGVydC1kYW5nZXIgYWxlcnQtZGFuZ2VyXCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi1kYW5nZXIgbWUtNFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPjxkaXYgY2xhc3M9XCJmcy03IHRleHQtZGFuZ2VyXCI+e3tlcnJvck1lc3NhZ2V9fTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGVhdGVyLWJnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImFkZE5hbWVPcHRpb25cIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRPcHRpb25MaW5rZWRRdWVzdGlvbnNcIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImRpc3BsYXlPcmRlck9wdGlvblwiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJzaG93U2NvcmVPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzY29yZU51bWJlclwiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkFkZE9wdGlvbigpXCIgKm5nSWY9XCIhaXNPcHRpb25JbkVkaXRNb2RlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZCB3LTEwMFwiPnt7bChcIkFkZFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkFkZE9wdGlvbigpXCIgKm5nSWY9XCJpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiRWRpdFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgcGItMCBtLTBcIiA+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIiAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7bChcIkNhbmNlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGFwcFByZXZlbnREb3VibGVDbGljayB0eXBlPVwic3VibWl0XCIgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kXCI+e3tsKFwiU2F2ZVwiKX19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19